MongoDB 简介


MongoDB是一个文档数据库,旨在简化开发和扩展。

本教程介绍了MongoDB中的相关概念、介绍了查询语言,并提供了操作和管理注意事项和过程以及全面的参考部分。

本教程翻译自MongDB官方文档,并集合了网上权威实战教程,是一份集大成的教学指南,建议收藏!

MongoDB提供本地和云托管的部署选项:

  • 对于本地托管的部署,MongoDB提供了两者社区和一个企业数据库的版本:
    • MongoDB社区是源可用且免费使用MongoDB的版本。
    • MongoDB Enterprise作为MongoDB Enterprise Advanced订阅的一部分提供,包括对MongoDB部署的全面支持。MongoDB Enterprise还添加了以企业为中心的功能,例如LDAP和Kerberos支持,磁盘加密和审计。
  • MongoDB Atlas是云中托管的MongoDB企业服务选项,不需要安装开销,并提供免费套餐即可开始使用。

1 什么是文档数据库

MongoDB中的记录是一个文档,它是一个由字段和值对组成的数据结构。MongoDB文档类似于JSON对象。字段的值可能包括其他文档、数组和文档数组。

使用文档的优点是:

  • 文档(即对象)对应于许多编程语言中的本机数据类型。
  • 嵌入式文档和数组减少了对昂贵联接的需求。
  • 动态架构支持流畅的多态性。
集合/视图/按需实例化视图

MongoDB将文档存储在集合中。集合类似于关系数据库中的表。

除了集合之外,MongoDB还支持:

  • 只读视图(从MongoDB 3.4开始)
  • 按需实例化视图(从MongoDB 4.2开始)。

2 MongoDB的主要特点

1)高性能

MongoDB提供高性能的数据持久性。特别

  • 对嵌入式数据模型的支持减少了数据库系统上的 I/O 活动。
  • 索引支持更快的查询,并且可以包含来自嵌入式文档和数组的键。
2)丰富的查询语言

MongoDB支持丰富的查询语言来支持读取和写入操作 (CRUD)以及:

  • 数据聚合
  • 文本搜索和地理空间查询
3)高可用性

MongoDB的复制工具,称为副本集,提供:

  • 自动故障转移
  • 数据冗余

副本集是一组MongoDB服务器,它们维护相同的数据集,提供冗余并提高数据可用性。

4)水平可扩展性

MongoDB提供水平可扩展性作为其核心功能的一部分:

  • 分片在计算机集群之间分配数据
  • 从3.4开始,MongoDB支持基于分片键创建数据区域。在平衡集群中,MongoDB仅将区域覆盖的读取和写入定向到区域内的那些分片。有关详细信息,请参阅区域手册页
5)支持多个存储引擎

MongoDB支持多种存储引擎:

  • WiredTiger 存储引擎包括对静态加密的支持)
  • 内存中存储引擎

此外,MongoDB还提供可插拔存储引擎API,允许第三方为MongoDB开发存储引擎。

3 你可以在本教程中学到什么?

1)存储和查询数据
  • 对数据进行建模:设计数据架构以支持频繁访问模式。您可以随时更新或强制实施架构。
  • 连接到 MongoDB:将数据从CSV或JSON文件导入MongoDB数据库。
  • 插入、查询、更新或删除文档:使用MongoDB查询API对数据执行CRUD操作 – 有或没有事务。
2)使用聚合转换数据
  • 导入数据:使用 mongoimport 从 CSV 或 JSON 文件导入数据。
  • 汇总您的数据:使用聚合管道在多个阶段处理数据并返回计算结果。
3)安全访问您的数据
  • 对客户端进行身份验证:使用身份验证验证用户、副本集成员或分片集群成员的身份。
  • 控制对数据库的访问:启用基于角色的访问控制以管理整个数据库集群或单个集合上的用户权限。
  • 加密您最隐私的数据:客户端字段级加密可在数据库使用数据时保护数据。字段在离开应用程序之前会进行加密,从而通过网络、内存和静态保护它们。
4)部署和扩展数据库
  • 部署副本集:通过部署副本集为数据库提供冗余和弹性。
  • 横向扩展数据库:使用分片可以水平缩放数据库或确保基于位置的数据分离。

本教程翻译自MongDB官方文档,并集合了网上权威实战教程,是一份集大成的教学指南,建议收藏!