MongoDB 是一种通用 文档型数据库,专为现代应用程序开发和云而设计。其横向扩展架构让您可以通过增加节点来分担负载,满足系统日益增长的需求。
以下是您在学习 MongoDB 时会遇到的一些关键概念和术语。
MongoDB 将数据存储为 JSON 文档。
文档数据模型可以自然地映射到应用程序代码中的对象,使开发者易于学习和使用。
JSON 文档中的字段可能会因文档而异。与传统的关系数据库表相比,添加字段相当于在数据库表中增加一列,因此在数据库中的每条记录中也会新增一列。
文档可以嵌套,以表示层次关系并存储数组之类的结构。
文档模型可灵活处理来自多个来源的复杂、快速变化、杂乱无章的数据。它使开发者能够快速交付新的应用程序功能。
为了加快内部访问速度并支持更多数据类型,MongoDB 将文档转换为一种称为二进制 JSON 或 BSON 的格式。但从开发者角度来看,MongoDB 是一个 JSON 数据库。
在 MongoDB 中,集合是文档的分组。
如果您熟悉关系数据库,您可以将集合视为表。但是,MongoDB 中的集合更加灵活。除非您将集合配置为强制执行模式,否则集合不会强制执行模式,并且同一集合中的文档可以拥有不同的字段。
每个集合都与一个 MongoDB 数据库相关联。要显示特定数据库中有哪些集合,请使用命令 listCollections。
确保高可用性的一个重要方法是保留多份数据副本。在 MongoDB 中,高可用性是内置于其设计之中的。
当您在 MongoDB 中创建数据库时,系统会自动创建至少两个数据副本,称为副本集。副本集是由至少三个 MongoDB 实例组成的一个集合,它们之间不断地进行数据复制,以在系统发生故障或计划性维护时提供冗余和防止停机。
现代数据平台需要能够利用日益庞大的小型机集群来快速处理查询和处理海量数据集。分片是指在多台机器上智能分发数据的术语。
分片是如何在 MongoDB 中工作的?MongoDB 在集合级别对数据进行分片,将集合中的文档分布到集群中的分片上。其结果是一个横向扩展的架构,甚至可以支持最大的应用程序。
索引支持高效执行查询。MongoDB 提供多种不同的 索引策略,包括多个字段的复合索引。如果选择得当,索引可以加快查询速度,因为查询会扫描 索引 ,而不是读取集合中的每个文档。
要分析哪些查询可以从添加索引中受益,还有一些工作要做。Performance Advisor 是为您执行此分析的工具之一,它可以分析查询,并提出可以提高查询性能的索引建议。
MongoDB 提供了一个灵活的框架,用于创建称为聚合管道的数据处理管道。它具有 数十个阶段和超过 150 个操作符和表达式,使您能够大规模处理、转换和分析任何结构的数据。最近新增的功能是 联合阶段,它可以灵活地汇总来自多个集合的结果。
MongoDB 可以使用哪些语言?支持语言列表 包括 Node.js、C、C++、C#、Go、Java、Perl、PHP、Python、Ruby、Rust、Scala、Swift 等等。每种语言的程序库都会得到持续的积极维护,这意味着会不断地加入新功能、修复错误、更新安全补丁以及提升性能。
您可以通过检查实例状态、集群操作和连接指标、硬件指标等,使用几个实用程序和命令 来监控集群的运行状况和性能。监控可以帮助您在问题变得严重之前及时发现并响应实时问题。
MongoDB 最初是一个开源数据库,现在仍然可以通过 MongoDB Community Edition 以这种方式使用。
在 MongoDB Enterprise Edition 中,可通过商业许可获得高级功能。
MongoDB Atlas 是 MongoDB Enterprise Edition 的数据库即服务 (DBaaS) 版本,可在所有公有云上使用。
MongoDB Atlas 已通过多种方式进行了扩展,内置紧密集成的功能,如 Atlas Search、Atlas Vector Search 以及其他用于数据地理定位和备份的高级功能。
既然您已经熟悉了学习 MongoDB 时会遇到的一些术语,为什么不立即开始使用 MongoDB Atlas 呢?同时,加入 MongoDB Community,该社区提供从论坛、网络研讨会到 MongoDB 大学 的免费课程等各种服务。入门课程 MongoDB 基础 就是一个很好的开始。
MongoDB 是一种通用数据库,有各种各样的用例。如果您还在纠结 MongoDB 是否适合您的应用程序,请查看 为什么要使用 MongoDB? 一文。
在 MongoDB 基础系列中了解更多信息。