在云中部署 MongoDB 似乎有多种选择。例如,Amazon DocumentDB自称是完全支持 MongoDB API 的 AWS 原生数据库。虽然它支持一些 MongoDB 功能,但需要注意的是 DocumentDB 并不完全兼容 MongoDB。要在 AWS 上访问功能齐全的“MongoDB 即服务”,唯一入口是 MongoDB Atlas。
在本次对比中,我们将围绕以下关键领域说明 Amazon DocumentDB和MongoDB Atlas 之间的差异:
兼容性
Amazon 声称将应用程序从 MongoDB 迁移到 DocumentDB“非常简单,只需要将数据库端点切换为新的 Amazon DocumentDB 集群”——我们通过运行一组兼容性测试揭穿了真相:测试表明 DocumentDB 仅可兼容约 35% 的 MongoDB Atlas 特性和功能。
架构
Amazon DocumentDB 构建在 AWS 的 Aurora 平台之上,该平台一直都用于托管关系数据库。这会影响可扩展性以及未来添加更多原生 MongoDB 功能的潜力。DocumentDB 可以使用弹性集群进行部署,这会进一步限制操作。
部署
Amazon 的 DocumentDB 依赖于 AWS 专有技术,无法在 AWS 之外运行。
开发人员生产力
DocumentDB 没有原生集成相关功能和工具,无法支持移动、时间序列、搜索和分析用例。要使用支持这些工作负载的功能,用户必须承担将数据从 DocumentDB 移至其他服务的操作负担。
操作成熟度
DocumentDB 中的数据库管理和维护会受到一些因素的限制,包括工具有限、升级过程复杂、备份选项少以及安全功能缺陷。
DocumentDB 是什么?
Amazon DocumentDB 是一种 NoSQL JSON 文档数据库服务,与 MongoDB 有一定程度的兼容性。
DocumentDB 不基于 MongoDB 服务器。它效仿的是 MongoDB API,并在 Amazon 的 Aurora 后端平台上运行。这造成了严重的架构和功能限制,并极大地破坏了兼容性。
DocumentDB 声称支持 MongoDB 4.0 API,这意味其功能与 2018 年 6 月发布的 MongoDB v4.0 相当。实际上,DocumentDB 4.0 功能集更接近于 2015 年发布的 MongoDB 3.0 和 3.2。
此外,兼容性测试表明,DocumentDB 未能通过 64% 以上的 MongoDB API 正确性测试。针对 MongoDB 开发的应用程序需要重新编写才能与 Amazon DocumentDB 配合使用。
DocumentDB 与 MongoDB 完全托管的按需、弹性 Atlas 服务之间的主要区别总结如下:
MongoDB Atlas 是什么?
MongoDB 在公有云中提供完全托管、按需和全局 MongoDB Atlas 服务。Atlas 让客户能够在 AWS、Azure 或 Google Cloud 上部署、操作和扩展 MongoDB 数据库。MongoDB Atlas 通过即买即用模式按小时计费。入门非常简单:只需利用一个简单的图形用户界面 (GUI) 或编程 API 调用即可选择公有云提供商、区域、实例大小和所需的功能。
MongoDB Atlas 提供:
自动化的数据库和基础设施预配以及自动伸缩功能,让团队能够在需要时获得所需的数据库资源,并能够根据应用程序需求进行弹性扩展。
通过网络隔离、细粒度访问控制、审计和细化到字段级的端到端加密保护数据的安全功能,让您能够符合 HIPAA 等行业法规。区域内和区域间的内置复制可提供始终在线的可用性。
您可以通过全局集群部署一个完全托管、全局分布的数据库,为任何地方的用户提供低延迟、高响应度的读写操作,其强大的数据放置控制功能,可实现合规性。
将事务和分析功能与 Atlas Analytics Nodes 相结合,在实现分析查询与操作工作负载隔离的同时,提供实时数据洞察。本地 MongoDB 分析工具,如MongoDB Charts 和MongoDB Connectors(用于 SQL、Tableau 和 Spark)默认配置为使用 Analytics Nodes。MongoDB 丰富的聚合管道引擎允许用户对其数据运行富有表现力的查询。
完全集成的原生 MongoDB 数据可视化工具 MongoDB Charts,支持丰富的文档模型,包括嵌套式、分层和地理空间数据,并提供嵌入和分片功能。快速构建数据可视化,无需部署或管理任何软件或基础设施。
完全集成的 MongoDB Atlas Data Lake,让用户使用 MongoDB 查询语言 (MQL) 和工具在 Amazon S3 上快速、轻松地查询任何格式的数据,并更快地挖掘数据的价值。
具有时间点恢复功能的完全托管备份可防止数据损坏,能够在不执行全面恢复的情况下就地查询备份数据。
自动数据分层通过将数据移动到成本较低的存储(例如 Amazon S3)来帮助降低成本。
细粒度的监控和可定制的警报,可以全面了解性能。数据库主要新版本的自动补丁和一键升级,让您能够利用最新的 MongoDB 功能。
通过访问 Atlas 应用程序服务,可以在完全无服务器的模型中提供数据访问控制、函数和触发器。
原生时间序列支持针对高性能数据摄入和查询进行了优化,同时减少了 I/O 和存储开销。
全文 Atlas Search 服务,针对完全托管的数据库提供丰富的搜索功能,无需预配、管理或扩展其他基础设施或系统。
实时迁移,将自我托管的 MongoDB 集群迁移到 Atlas 服务中,或在云提供商之间迁移 Atlas 集群。
稳定的 API 消除了升级风险,让您的开发可以满足未来需求。
广泛覆盖主要云平台,可用于 Amazon Web Services、Microsoft Azure 和 Google Cloud 上的约 100 个云区域。MongoDB Atlas 在每个云平台上都提供一致的体验,确保开发人员可以在任何需要的地方进行部署,而不会影响关键功能或带来云供应商锁定风险。
MongoDB Atlas 为初创企业、财富500强企业和政府机构提供广泛的工作负载,包括帮助受监管行业处理高度敏感数据的任务关键型应用程序。
MongoDB Atlas 和自我托管的 MongoDB 开发人员体验是一致的,确保您可以根据需要轻松地从本地移动到公有云,以及在提供商之间移动。
除了数据库,MongoDB Atlas Data Lake 还允许您使用 MongoDB 查询语言和工具在 Amazon S3 上快速、轻松地查询任何格式的数据。您可以通过统一用户界面,在 Atlas OLTP 集群旁边启动数据湖。借助 Atlas Data Lake,您可以更快地实现数据湖的价值,例如无需将数据移动到任何地方,可以直接以原生形式处理复杂数据,以及使用其完全托管的无服务器架构来控制成本并消除操作负担。而DocumentDB并不提供同等功能,因此用户必须使用其他查询语言启动完全独立的服务来访问 S3 数据。
MongoDB Atlas 由开发 MongoDB 数据平台的同一团队构建和运行,是运行 MongoDB 应用程序的最佳方式。
DocumentDB 与 MongoDB 兼容吗?
Amazon DocumentDB 声称支持 MongoDB 4.0 API,这意味其功能与 2018 年 6 月发布的 MongoDB v4.0 相当。实际上,DocumentDB 4.0 功能集仍然与 2015 年发布的 MongoDB 3.0 和 3.2 早期版本高度相似,兼容性测试表明 DocumentDB 未能通过 64% 的 MongoDB API 正确性测试。
截至2023-11-02的兼容性测试结果
针对 MongoDB 开发的应用程序需要重新编写才能与 Amazon DocumentDB配合使用。但由于 DocumentDB 效仿了 MongoDB API,因此针对 DocumentDB 编写的应用程序可以轻松迁移到 MongoDB Atlas。
想要了解详情?
想要从 DocumentDB 迁移到 MongoDB Atlas?请参阅我们的迁移指南。
想知道 DocumentDB 与 MongoDB API 的最新兼容情况?请查阅“DocumentDB 真的与 MongoDB 高度兼容吗?”
欢迎访问MongoDB官网免费试用 MongoDB Atlas,享受真正的 MongoDB 体验。
常见问题解答
何时使用文档数据库?
文档数据库将数据存储在类似 JSON 的文档中,拥有与生俱来的易用性,非常便于开发人员使用。MongoDB 是一种现代文档数据库,可提供热门关系数据库中的许多强大功能,包括兼容 ACID 事务、模式管理、企业级安全性等等。
MongoDB 可以从 Amazon S3 读取数据吗?
MongoDB 提供 Atlas Data Federation 引擎,允许用户使用 MongoDB 查询 API 快速轻松地在 Amazon S3 上查询任何格式的数据。
MongoDB 与 DocumentDB 之间的主要区别是什么?
DocumentDB 不包含任何 MongoDB 代码,支持的 MongoDB 功能子集数量有限,而且成本更高,管理起来也比较困难。
MongoDB 适合移动和 Web 应用程序吗?
作为开发人员数据平台的一部分,MongoDB Atlas 应用程序服务提供了一套用于构建移动和 Web 应用程序的工具,包括 Realm 数据库。