Amazon DocumentDB vs DynamoDB2025 年 1 月 29 日 | 阅读 8 分钟 DocumentDB 和 DynamoDB 的区别本文讨论了 DocumentDB 和 DynamoDB 这两个主要用于存储半结构化或文档型数据的 Amazon 数据库之间的区别。DocumentDB 是一种面向文档的数据库,通过方便地存储、处理和检索文档型数据,简化了与信息相关的任务。此外,DocumentDB 和 NoSQL 数据库是同义词。AWS 提供的一种无服务器 NoSQL 数据库是 DynamoDB,它可以处理任意流量并内部检索文档数据。该数据库可以根据用户的需求轻松扩展,因为它由 Amazon Lambda 管理。 Amazon DynamoDB 和 Amazon DocumentDB 是 Amazon 最受欢迎的两种基于云的 NoSQL 数据库选项。要为您的应用程序选择最佳的 NoSQL 数据库提供商,您必须权衡这两种服务的优缺点,因为每种服务都有其独特的特性。 因此,为了理解每个服务及其差异,本文将对 Amazon DynamoDB 和 Amazon DocumentDB 进行全面分析。 DocumentDB 和 DynamoDB 概述DocumentDBAmazon DocumentDB 是一种完全托管的 NoSQL 数据库,可维护 JSON 数据模型。它为处理关键的 MongoDB 工作负载提供了低延迟、完全可扩展的解决方案。为了提供 99.99% 的可用性,它会在三个可用区之间自动复制数据的六份副本。它每秒还可以处理数百万个请求,从而使开发人员能够创建高可用性、低延迟的应用程序。 DynamoDBAmazon DynamoDB 是一种无服务器、完全托管的 NoSQL 数据库,支持键值和文档数据模型。它可以扩展以处理超过 2000 万个请求/秒,具有个位数毫秒延迟。此外,它支持高达 1 PB 的数据大小和 1 GB 的项目大小,使开发人员能够构建要求苛刻、可靠且可扩展的应用程序。 DocumentDB 和 DynamoDB 之间的共同特性除了这两个数据库都是 NoSQL 之外,这些服务还可以按需扩展,以在几毫秒内查询大量数据集。此外,AWS 完全控制着这两个服务。因此,开发人员无需费力地配置和维护 SSD 和存储集群。 尽管如此,这些服务在数据存储架构方面存在差异。例如,DynamoDB 支持键值数据模型,而 DocumentDB 不支持。由于其水平扩展能力,DynamoDB 是比 DocumentDB 更具可扩展性的服务。 此外,一个项目大小限制为 400KB 的 DynamoDB 表可以存储 PB 级数据。但是,DocumentDB 的最大存储限制为 64 TiB(艾字节)。 DocumentDB 与 DynamoDB 对比比较索引 | DocumentDB | DynamoDB | 数据模型 | DocumentDB 是一种使用 MongoDB 查询语言检索数据的 NoSQL 数据库。它以类似 JSON 的文档形式存储无模式数据。DocumentDB 允许文档集合在没有预定结构的情况下存在,并允许单个文档拥有不同的列。 | NoSQL DynamoDB 使用类似 SQL 的查询语言,该语言由一组 API 活动组成,用于与数据库通信。在 DynamoDB 中,您主要处理表、项和属性。表中的每个项都是属性的集合,表是项的集合。DynamoDB 使用主键唯一标识表中的每个项,而二级索引提供进一步的查询灵活性。 虽然它们使用不同的查询语言,但 DocumentDB 和 DynamoDB 都是 NoSQL 数据库。DynamoDB 使用其独特的、完全文档化的类似 SQL 的查询语言,而 DocumenDb 使用开发人员和数据工程师熟悉的 MongoDB 查询语言。 如果您的数据没有定义好的结构,则应选择 DocumentDB 而不是 DynamoDB,因为它提供了适合无结构文档的 JSON 文档数据库。 | 性能和延迟 | 由于其可扩展的、内存优化的架构,DocumentDB 可以更快地处理大型数据集的查询。此外,DocumentDB 通过使用 15 个只读副本增加读取吞吐量,每秒处理数百万个查询而不会出现节流。 最后,源实例及其副本共享相同的底层存储。当数据被修改时,它不会在副本节点上执行额外的写入。因此,这使得 DocumentDB 能够将副本延迟降低到几毫秒,并释放额外的处理能力来处理更多读取请求。 | DynamoDB 通过将 SSD 数组分布在多个分区上来将数据存储在表中。它还使用哈希算法定位包含所需数据的分区。因此,DynamoDB 以个位数毫秒的延迟响应查询,并根据需求进行扩展,以处理超过 2000 万个请求/秒而不会牺牲速度。 此外,开发人员可以集成 DynamoDB Accelerator (DAX) 以实现微秒级延迟并提高读取性能。 | 持久性和可用性 | 开发人员可以使用 DocumentDB 在多个可用区设置多达 15 个只读副本。此外,它提高了可用性,因为在实例发生故障时,DocumentDB 会自动故障转移到只读副本。最终,这有助于用户在实例发生故障时访问数据。 | DynamoDB 是一种高度持久的数据库,因为它将入站流量分布到多个服务中,以确保每个服务器都以峰值效率运行,并且能够处理负载而不会出现节流。高可用性得到了保证,因为服务器不会因为流量过大而突然崩溃。 DynamoDB 通过将数据复制到多个可用区 (AZ) 来实现高可用性。即使在服务器发生故障的情况下,用户仍然可以访问在可用区中复制的数据。 | 安全性 | DynamoDB 通过使用存储在 AWS Key Management Service 中的加密密钥,在数据静态时提供加密。开发人员在配置加密时有三种 KMS 密钥类型可供选择。- AWS 拥有密钥:DynamoDB 和 AWS 共同控制标准、免费加密类型的加密密钥。
- AWS 管理密钥:密钥可以保存在您的 AWS 账户中,并由 AWS KMS 管理。
- 客户管理密钥:KMS 密钥可以由开发人员生成和管理。
- 请注意,加密方法 2 和 3 可能会产生 KMS 费用。
- 此外,DynamoDB 还允许开发人员使用 IAM 服务指定对 DynamoDB 资源的精细访问。
| DocumentDB 在 VPC 中运行。因此,它允许开发人员提供防火墙参数,以帮助管理到集群(EC2 实例加上存储卷)的网络访问。 DocumentDB 使用存储在 AWS KMS 中的对称加密密钥,提供使用 256 位高级加密标准 (AES-256) 的静态加密。但是,它默认未启用。 此外,默认情况下,静态加密仅对通过 AWS Console 创建的集群启用。 但是请注意- 静态加密只能在集群创建时配置。
- 启用静态加密后,您无法将其禁用。
为了确保只有使用 TLS 的安全连接才能连接到集群,DocumentDB 默认支持使用 TLS 的传输中加密。因此,它通过确保数据在从集群存储到客户端的传输过程中被加密来防止中间人攻击。 | 可扩展性 | 如前所述,DynamoDB 的吞吐量超过每秒 2000 万个请求,而性能没有下降。为此,它使用了两种容量模式。 预置:在创建表时,会指示所需的最小和最大 WCU 和 RCU 单位。如果您的应用程序流量恒定,则可以使用此模式。 按需:DynamoDB 根据应用程序流量和工作负载的变化调整容量单位的大小。如果您的应用程序流量不可预测,则可以使用此模式。 | DocumentDB 也是一项高度可扩展的数据库服务。随着数据和流量的增长,它允许开发人员增加集群的计算和存储容量以帮助扩展数据库。因此,DocumentDB 提供了四种不同的可扩展性选项。- 存储扩展:当数据量增加时,DocumentDB 会自动处理。DocumentDB 最多支持 64 TB 的存储。
- 实例扩展:这使得提高实例性能成为可能。这通常通过更改集群的实例类别来手动完成。
通过读取扩展,开发人员可以通过向集群添加更多副本来提高读取性能。 - 写入扩展:这允许开发人员通过修改集群主实例的大小来提高跨多个可用区的写入性能。
| 备份 | DocumentDB 的备份有两种类型- S3 备份:DocumentDB 会自动将过去 35 天内收集的数据备份到 Amazon S3。
- AWS Backup:DocumentDB 现在支持 AWS Backup。因此,开发人员可以使用 AWS Backup 对其表数据进行快照,并直接从备份中执行还原。
| DynamoDB 提供两种备份方法- 按需点恢复:在发生意外删除或更新的情况下,开发人员可以在 35 天内轻松恢复数据,这得益于 DynamoDB 对过去 35 天表数据的连续备份。它还将恢复 GSI 中包含的数据。但是,默认情况下,此选项处于关闭状态。
- 按需备份:这消除了性能开销,并允许开发人员创建完整的表备份。
| 社区和支持 | DocumentDB 受益于 MongoDB 成熟的社区;然而,与 DynamoDB 相比,AWS 特定的社区可能较小。本身就强大而活跃的 MongoDB 社区有助于提供更广泛的支持。 | 由于 DynamoDB 是 Amazon Web Services (AWS) 的产品,它拥有庞大而活跃的社区。AWS 提供丰富的论坛、支持资源和文档。AWS 社区以其响应迅速和知识渊博而闻名。 通过在线资源和我自己对这两个系统的实践经验,我发现 DynamoDB 提供了更全面的文档和活跃的社区论坛。虽然可以使用 MongoDB 的讨论来支持 DocumentDB,但这涉及一些步骤。 | 用例 | 反之,DocumentDB 是一种管理 JSON 数据模型的 NoSQL 数据库。因此,DocumentDB 为其客户提供了灵活的模式管理。 因此,DocumentDB 是开发模式动态变化的应用程序的明智选择。 例如,DocumentDB 可用于以下场景 | 与大多数其他 NoSQL 数据库相比,DynamoDB 是一种闪电般的快速数据库,可在任何规模下为每个请求提供个位数毫秒的延迟。 因此,当开发处理每秒数百万个并行请求并需要在不牺牲性能的情况下快速响应每个请求的应用程序时,DynamoDB 是一个绝佳的选择。 例如,DynamoDB 可用于以下场景- 构建快速、可扩展的应用程序。
- 构建近实时程序,例如传感器程序。
|
结论本文全面概述了 Amazon 的 DocumentDB 和 DynamoDB 服务,重点介绍了它们的区别和相似之处。没有一个“最佳”数据库。或者,您可以根据您的用例来决定在您的应用程序中使用哪个数据库提供商。
|