为了解决越来越多客户在扩展 MongoDB 部署时遇到的难题,亚马逊推出了 DocumentDB 解决方案。
借助 DocumentDB 提供的自动数据扩展功能,您可以轻松将数据库规模从 10GB 扩展至 64TB。 下面我们来详细了解一下如何实现这一目标。
什么是文档数据库?
AWS DocumentDB 是基于早期 MongoDB 3.6 版本扩展而来的。亚马逊认为有必要为处理海量数据和关键业务负载设计专门的解决方案。值得注意的是,DocumentDB 并非直接采用任何 MongoDB 源代码,而是亚马逊自行开发的专有实现。
与 MongoDB 类似,DocumentDB 也是一种文档存储引擎。 作为 NoSQL 数据库,AWS DocumentDB 通常采用 JSON 格式存储数据,这意味着它主要对 JSON 数据结构进行索引。 简单来说,Amazon DocumentDB 是亚马逊提供的替代 MongoDB 的方案,但其内部实现有所不同。
在深入探讨 Amazon DocumentDB 之前,我们先来了解一下 NoSQL 数据库,以及为什么它在当今如此重要。
什么是 NoSQL 数据库?
NoSQL 数据库,也称为“不仅仅是 SQL”,不使用传统的关系表结构。 文档和图是 NoSQL 中最常用的两种主要数据存储类型。 NoSQL 数据库旨在处理海量数据和高用户负载。
开发人员通常选择 NoSQL 数据库,主要看重的是其性能而非存储能力。 NoSQL 数据具有半结构化和多态性,能够轻松容纳大量的非结构化信息。
相较于关系数据库,NoSQL 数据库具有更强的一致性,更容易扩展,且对资源的需求更少。 与 SQL 数据库不同,NoSQL 数据库可以进行水平扩展。 此外,无模式的 NoSQL 数据库允许数据项结构的多样性。
越来越多的开发人员倾向于将应用程序和数据托管在公有云上。 弹性扩展和智能地理数据定位成为关键需求,而这些正是 MongoDB 的优势所在。
全球众多公司都在使用 NoSQL 数据库,例如金融和医疗保健领域的数据存储(如来自智能猫砂盆的物联网数据)。
DocumentDB 的诞生背景
亚马逊推出 DocumentDB 的初衷是为解决许多用户在 MongoDB 大规模部署时遇到的难题。亚马逊认为,包括 MongoDB Atlas 在内的现有方案均无法完全满足客户需求,因此决定开发自己的解决方案。
例如,DocumentDB 允许用户将数据库从 10GB 自动扩展到 64TB,整个过程无需人工干预。 在 DocumentDB 出现之前,实现这种程度的数据扩展是非常困难的。
亚马逊的解决方案还具有内置的容错机制。它会自动将存储空间划分为 10GB 的数据块,并分布在多个磁盘上。每个 10GB 的存储块会在三个可用区中复制六份进行备份。
在不影响写入操作可用性的前提下,DocumentDB 最多允许丢失两个数据副本;在不影响读取操作可用性的前提下,最多允许丢失三个数据副本。此外,DocumentDB 还具备自我修复存储的能力,能够检查数据块和磁盘错误,并自动进行修复。
由于该服务由亚马逊托管,因此大多数合规性要求均得到满足。它符合包括 PCI DSS 和 ISO 9001 在内的多项标准,以及 SOC 1、SOC 2、SOC 3 和 HIPAA。
DocumentDB 的优势
#1. MongoDB 兼容
Amazon DocumentDB 与 MongoDB 3.6 和 4.0 的驱动程序兼容。 用户可以使用许多相同的应用程序、驱动程序和工具来操作 Amazon DocumentDB。
Amazon DocumentDB 使用 Apache 2.0 开源的 MongoDB 3.6 和 4.0 API 来模拟 MongoDB 服务器。 这使得关键业务 MongoDB 应用程序所需的性能、可扩展性和可用性得以实现。
#2. 监控
Amazon DocumentDB 通过 Amazon CloudWatch 提供云数据库服务器的监控分析。 您可以使用 AWS 管理控制台来监控集群在计算和内存等方面的性能,包括查询吞吐量、MongoDB 操作计数和活动连接数。
#3. 低延迟
Amazon DocumentDB 支持 JSON 文档、多种数据类型和快速索引。 其内存架构使得该服务能够快速评估大型文档的查询。
#4. 访问控制
Amazon DocumentDB 支持具有内置和自定义角色的 RBAC(基于角色的访问控制)。 RBAC 允许通过限制用户可以执行的操作来实现最小权限原则。
作为 AWS Identity and Access Management (IAM) 的一部分,您可以管理 AWS IAM 用户和组对 Amazon DocumentDB 资源(包括集群、实例、快照和参数组)的操作权限。 您还可以对 Amazon DocumentDB 资源进行标记,并管理 IAM 用户和组。
#5. 加密
您可以使用 AWS Key Management Service (KMS) 对 Amazon DocumentDB 数据库进行加密。
底层存储中的数据以及使用 Amazon DocumentDB 加密的集群中的自动备份、快照和副本都受到保护。 客户端到 Amazon DocumentDB 的连接会自动使用 TLS 加密。
#6. 合规认证
Amazon DocumentDB 按照最高安全标准构建,以帮助您满足自身的监管和合规要求。Amazon DocumentDB 符合 PCI DSS、ISO 9001、27001、27017 和 27018 标准,以及 SOC 1、2 和 3 以及 HIPAA 标准。
#7. 具有高可用性的全局集群
Amazon DocumentDB 全局集群支持全球读取和灾难恢复。 它可以在最多五个 AWS 站点上复制您的数据,且对性能的影响极小。
#8. 具有副本的多可用区部署
Amazon DocumentDB 在三个可用区中拥有多达 15 个副本。当一个实例发生故障时,它会自动切换到另一个实例。 如果发生故障,Amazon DocumentDB 将会尝试创建一个新的实例。
#9. 容错和自愈存储
存储卷在三个可用区 (AZ) 之间复制六次。Amazon DocumentDB 提供容错存储,可以管理最多两个副本的数据丢失,而不会影响写入操作的可用性。Amazon DocumentDB 的存储还具有自我修复功能,可以替换失败的数据块和磁盘。
AWS DocumentDB 常见问题解答
AWS DocumentDB 和 MongoDB 相同吗?
Amazon DocumentDB 是一种完全托管的文档数据库服务,与 MongoDB 兼容,且具有快速、可扩展和完全托管的特点,适用于 MongoDB 工作负载。
JSON 数据可以作为文档数据库存储在 Amazon DocumentDB 中。您可以轻松地存储、搜索和索引数据。
客户可以免费使用 AWS Database Migration Service (DMS) 六个月,以便快速轻松地将其本地或 Amazon Elastic Cloud (EC2) 上的 MongoDB 非关系数据库迁移到 AWS Database Migration Service (DMS),并且几乎无需停机。
Amazon DocumentDB 的工作原理是什么?
Amazon DocumentDB 作为文档数据库,与 Apache 2.0 开源的 MongoDB 3.6 和 4.0 API 进行交互。 因此,您可以使用相同的 MongoDB 驱动程序、应用程序和工具操作 Amazon DocumentDB,而只需少量甚至无需更改。
Amazon DocumentDB 如何进行扩展?
Amazon DocumentDB 是一种 Web 级数据库,可以按 10 GB 的增量从 10 GB 扩展到 64 TB。 通过向集群添加额外的副本实例(最多 15 个),可以垂直和水平扩展 Amazon DocumentDB 的存储和计算能力,从而获得更高的读取吞吐量。
从设计角度来看,Amazon DocumentDB 的主要特点是什么?
Amazon DocumentDB 从一开始就采用了云原生架构进行构建。 这意味着 JSON 工作负载可以轻松扩展。
DocumentDB 设计的一个重要组成部分是将存储和计算分离,以便两者可以按各自的速度进行扩展。 DocumentDB 具有分布式、容错和自愈的存储系统。 每个数据库集群可以存储高达 64 TB 的数据,而无需进行分片。
结论
DocumentDB 是亚马逊独有的托管 MongoDB 兼容服务。亚马逊声称,DocumentDB 的吞吐量是目前现有 MongoDB 解决方案的两倍。另一种方法是在 EC2/EBS 上管理数据库,但这具有一定的挑战性。
如果您需要这些方面的保证,那么可以选择 DocumentDB,否则可以继续使用 MongoDB。 选择 DocumentDB 的另一个理由是,将所有组件都保持在 AWS 环境中。