Amazon DynamoDB 全局表

为什么选择 Amazon DynamoDB 全局表?

Amazon DynamoDB 全局表是一个完全托管、无服务器、多区域和多活动的数据库。全局表为您提供 99.999% 的可用性、更高的应用程序弹性和经过改进的业务连续性。由于全局表会在您选择的 AWS 区域中自动复制您的 Amazon DynamoDB 表,使您可以实现快速的本地读写性能。

在极少数发生单个区域故障的情况下,无需进行数据库失效转移,因为全局表的多活动架构允许客户读取和写入任何副本表。全局表还消除了在区域之间复制数据和解决多活动工作负载的更新冲突的困难工作。此外,全局表使您的应用程序能够保持高度可用,即使在整个区域被隔离或降级的罕见情况下也是如此。

您可以使用 AWS 命令行界面(AWS CLI)或 AWS CloudFormationAWS 管理控制台中配置全局表。读取或写入全局表时不需要更改应用程序,因为全局表使用与单区域表相同的 DynamoDB API。

使用全局表不涉及预付费用,也无需签订合同,您仅需为使用的资源付费。有关如何配置全局表的更多信息,请参阅《Amazon DynamoDB 开发人员指南》。有关全局表定价的更多信息,请参阅按需预置的 Amazon DynamoDB 定价选项。

工作原理

DynamoDB 全局表由多个副本表组成。每个副本表存在于不同的区域中,但所有副本都具有相同的名称和主键。当数据写入任何副本表时,DynamoDB 会自动将该数据复制到全局表中的所有其他副本表。

例如,假设您的应用程序为分布在三个地理区域(美国东海岸、加拿大和西欧)的庞大客户群提供服务。如果没有全局表,则必须在每个 AWS 区域中创建一个表并编写代码,以在每个区域的每个表中复制数据更改。

使用全局表,您可以在离每个地理区域最近的三个区域创建一个包含副本表的全局表。DynamoDB 会自动将任何副本的更改复制到其他区域的副本。

全局表使应用程序的用户无论身在何处都能以低延迟访问数据。虽然发生的可能性很小,但如果某个 AWS 区域暂时不可用,您的客户仍然可以访问其他区域中的副本表。

工作原理

Amazon DynamoDB 全局表的优势

全局表消除了在 Amazon DynamoDB 中部署和管理多活动、多区域复制的复杂性和操作负担。您可以选择需要复制数据的区域,DynamoDB 将处理余下的工作。应用程序通过使用现有的 DynamoDB API 和端点来访问全局表。

对任何副本表中的任何项目进行的更改都将复制到相同全局表内的所有其他副本中。在全局表中,新写入的项目通常会在一秒钟内传播到所有副本表中。  使用全局表,每个副本表可以存储同一组数据项目。Amazon DynamoDB 不支持仅对某些项目进行部分复制。 如果应用程序几乎同时在不同区域中更新相同项目,可能会引起冲突。

为了解决冲突,Amazon DynamoDB 全局表在并发更新之间采用保留最后写入协调功能,Amazon DynamoDB 在其中尽最大努力确定最后的写入。使用此冲突解决机制,所有副本都同意最后的更新,并汇聚到拥有相同数据的状态。

全局表专为 99.999% 的可用性而设计。如果一个区域被隔离或降级,您的应用程序可以重定向到另一个区域,并对另一个副本表执行读写操作。您可以应用自定义业务逻辑,以确定何时将请求重定向到其他区域。 

此外,Amazon DynamoDB 会跟踪已经执行但尚未传播到所有副本表的任何写入操作。当区域恢复上线时,Amazon DynamoDB 会继续将任何待处理的写入操作从该区域传播到其他区域的副本表中,反之亦然。

多活动、多区域复制可确保在一个区域中对副本表执行的更新复制到其他区域的副本表。跨区域的表副本之间的复制最终是一致的。这意味着对应用程序所在区域内的副本表进行本地读取和写入可以实现强一致性。但是,对区域内其他副本表中项目的读取最终是一致的。

全局表使您能够在本地读取和写入数据,从而使任何规模的全局分布式应用程序都只有个位数的毫秒延迟。这可以提高大规模扩展的全球应用程序的性能。

页面主题

一般性问题

一般性问题

全局表是一个或多个副本表的集合,全部由单个 AWS 账户所有。单个 Amazon DynamoDB 全局表在每个 AWS 区域只能有一个副本表。

副本表是单个 DynamoDB 表。每个副本表存储相同的数据项集,具有相同的表名和相同的主键架构。当应用程序将数据写入一个区域中的副本表时,Amazon DynamoDB 会将写入操作自动复制到其他 AWS 区域中的其他副本表。

是的,Amazon Dynamo 全球表可增强业务连续性,因为它提高了应用程序的弹性并为单个区域提供强一致性。借助多区域高度一致性,您可以构建具备零 RPO 和最高灵活性等级的应用程序。

您可以按照这份分步指南,使用 Amazon DynamoDB 控制台、AWS CLI 或 AWS CloudFormation 创建全局表。

在向 Amazon DynamoDB 全局表添加其他区域的副本之前,该表必须满足以下条件:已启用 DynamoDB Streams;与所有其他副本同名;具有与所有其他副本相同的分区键;并且具有相同的写入容量设置。

Amazon DynamoDB 全局表中的所有副本表必须具有相同的名称。

与其他数据库类似,Amazon DynamoDB 也将数据存储在表中。表是项目的集合,每个项目都是属性的集合。Amazon DynamoDB 使用主键来唯一标识表中的每个项目,并具有二级索引,可提供更大的查询灵活性。

相比之下,Amazon DynamoDB 全局表是单个 AWS 账户拥有的一个或多个副本表的集合。每个副本表在结构上都与常规 Amazon DynamoDB 表相同。

是的,您可以在全局表的每个副本上启用时间点恢复。

  • Zoom

    当新冠大流行开始时,我们的语音和视频服务出现了巨量需求。在 2020 年初,我们看到来自需要虚拟连接的新老客户的每日会议参与者的使用量前所未有地从 10M 增加到 300M。在后端,我们能够使用 Amazon DynamoDB for Zoom Meetings 管理这种激增。将 DynamoDB 全局表与按需模式结合使用,使我们能够几乎无限地扩展而不会出现性能问题,即使我们的使用量突然激增。

    Zoom Video Communications, Inc. 云运维工程经理 Yasin Mohammed
  • Disney

    Disney+ 使用 Amazon DynamoDB 每天提取内容、元数据和数十亿次用户行为,使得观看者可以将内容添加到自己的观看列表中,开始观看一段视频并用不同的设备接收,以及获取接下来要观看内容的建议。

    每天通过 Amazon Kinesis 向 Amazon DynamoDB 注入数十亿个书签。

    Attilio Giue,Disney+ 内容发现总监
    阅读新闻稿 »
  • Snap Inc.

    通过使用 Amazon DynamoDB,Snap Inc. 显著节省了年度基础设施成本,并且针对多媒体消息应用程序 Snapchat 支持快速、可靠的基础设施。

    Amazon DynamoDB 提供的功能及其内部的持续创新让我们有信心继续依赖该工具并在此基础上进行创新。

    Saral Jain,Snap Inc 工程总监兼基础设施负责人
    查看案例分析 »