注意
For the duration of public preview, Atlas Infinite clusters run the latest MongoDB 9.x version, using the Latest Version With Auto Upgrades release option in the Atlas UI. To learn more, see MongoDB Versions in Atlas.
MongoDB是一个文档数据库,旨在帮助开发者更快地构建现代应用程序。它将数据存储在类似JSON 的灵活文档中,从而可以像应用程序代码使用数据一样轻松地对数据进行建模。灵活的模式可让您在不停机的情况下发展数据模型,快速迭代并轻松处理非统一数据。
MongoDB提供强大的查询引擎、水平扩展和内置高可用性,因此您可以支持从快速原型设计到大型关键任务工作负载的所有工作负载。
MongoDB是一个完全事务性的操作数据库,支持范围工作负载类型,包括:
核心架构
MongoDB基于多个核心架构组件构建,这些组件使其有别于关系数据库:
文档数据库:灵活的文档数据模型可让您将数据映射到应用程序的需求。
事务:多文档ACID事务允许需要数据一致性的复杂操作。
高可用性:复制和自动故障转移可确保数据始终可用。
Horizontal Scaling: Sharding enables horizontal scaling to handle large datasets and high throughput.
文档数据库
MongoDB 中的记录是一个文档,它是由字段和值对组成的数据结构。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档、数组和文档数组。
MongoDB 灵活的面向对象数据模型可让您以反映代码库中对象模型的方式构建数据。这样就无需在使用关系数据库时进行复杂的对象关系映射。
以下是MongoDB文档示例,展示文档如何以反映应用程序对象模型的格式表达复杂的分层数据:
{ _id: ObjectId("507f1f77bcf86cd799439011"), name: "Alice", birthdate: ISODate("1990-01-01T00:00:00Z"), address: { street: "123 Main St", city: "Springfield", state: "IL" }, hobbies: ["reading", "hiking", "coding"] }
文档数据模型的其他优点包括:
文档对应于许多编程语言中的原生数据类型。
嵌入式文档和数组减少了对昂贵连接的需求,这些连接可能会降低性能。
动态模式支持多态性,允许同一集合中的文档具有不同的结构。
MongoDB将文档存储在集合中。集合与关系表类似,但不实施严格的预定义模式。
除集合外, MongoDB还支持只读视图。
事务
MongoDB支持多文档事务,允许您将多个读取和写入操作作为单个全有或全无事件运行。
主要ACID 事务功能包括:
ACID 一致性保证:事务可跨多个操作提供原子性、一致性、隔离性和持久性。
多文档操作:您可以运行跨多个文档的复杂操作,同时保持数据一致性。
分布式事务:您可以在具有相同 ACID 一致性保证的情况下分片集群协调事务。
要学习;了解更多信息,请参阅事务。
高可用性
MongoDB 的内置复制机制提供自动故障转移、数据冗余和更高的读取容量。通过自动故障转移,如果主节点 (primary node in the replica set)服务器不可用,集群会自动选择新的主节点 (primary node in the replica set),从而确保写入操作保持可用。此外,数据的多个副本存储在不同的服务器上,以提高数据的持久性。
水平缩放
MongoDB通过一种称为分片的技术本身支持水平扩展。
主要分片功能包括:
自动数据分发: MongoDB会根据分片键自动对数据进行分区,并将其分发到机器集群中。
区域分片:您可以定义地理区域,根据分片键范围控制文档的放置。
分片键优化:随着应用程序的发展,您可以优化分片键以提高性能。