设计并高效使用分区键的最佳实践 - Amazon DynamoDB

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设计并高效使用分区键的最佳实践

唯一标识 Amazon DynamODB 表中每个项目的主键可以是简单的(仅分区键)或复合(分区键与排序键组合的分区键)。

一般而言,您应针对跨表中所有逻辑分区键及表的二级索引的统一活动来设计应用程序。您可以确定应用程序所需的访问模式,并估计每个表和二级索引所需的读取容量单位 (RCU) 和写入容量单位 (WCU) 总计。

DynamODB 使用您预配置的吞吐量支持访问模式,前提是针对给定分区的流量不超过 3000 RCU 或 1000 WCU。

高效使用突增容量

DynamoDB 为您的每个分区吞吐量配置提供了一些灵活性,方法是突增容量。当您未完全使用分区的吞吐量时,DynamoDB 会保留一部分未使用的容量以供稍后使用突增的吞吐量来处理使用率峰值。

DynamODB 当前保留最多五分钟(300 秒)未使用的读取和写入容量。 在读取或写入活动偶尔突增期间,这些额外的容量单元会被快速消耗甚至比您为表定义的每秒预置的吞吐容量还快。

DynamODB 还可能在不事先通知的情况下,将突增容量用于后台维护和其他任务。

请注意,这些突增容量详细信息未来可能发生变化。

了解 DynamODB 适应性容量

适应性容量是一项允许 DynamoDB 无限期地运行不平衡工作负载的功能。它最大程度地减少由于吞吐量异常引起的限制。通过让您可以仅预配置所需的吞吐容量,它还可以帮助您降低成本。

适应性容量自动针对每个 DynamODB 表免费启用。您不需要明确地启用或禁用它。

将吞吐容量提高到高流量分区

不可能总是均匀地分布读活动和写活动。当数据访问不平衡时,与其他分区相比,“热”分区可以接收更高的读取和写入流量。在极端情况下,如果单个分区接收的流量超出 3000 RCU 或 1000 WCU,就会出现限制。

为了更好地适应不均匀的访问模式,DynamODB 适应性容量允许您的应用程序继续不受限地对热分区进行读写操作,前提是流量未超出表的预配置的总容量或分区最大容量。自适应容量的工作原理是,自动实时增加分区的吞吐量容量来接收更多流量。

下图说明了适应性容量的工作方式。示例表配置了 400 个 WCU,这些容量单位均匀分布在 4 个分区中,每个分区每秒可以承受最多 100 个 WCU。分区 1、2 和 3 每个分区接收 50 WCU/秒的写入流量。分区 4 接收 150 个 WCU/秒。此热分区可以在接受写入流量的同时仍具有未利用的突增容量,但是,它最终将会限制每秒超过 100 个 WCU 的流量。

DynamODB 适应性容量通过增加分区 4 的容量来做出响应,因此分区 4 可以接收 150 WCU 的更高工作负载,而不会受到限制。

隔离频繁访问的项目

如果您的应用程序发送到一个或多个项目的流量特别失衡,适应性容量将会重新调整您的分区,从而确保频繁访问的项目不会驻留在同一分区中。这种隔离频繁访问的项目的做法,可以降低因工作负荷超出单个分区上的吞吐量配额而造成请求限制的可能性。

如果您的应用程序始终对单个项目带来较高的流量,则自适应容量可能会重新平衡您的数据,从而使分区仅包含单个频繁访问的项目。在此情况下,DynamoDB 可以为该单个项目的主键提供达到分区最大 3000 个 RCU 或 1000 个 WCU 的吞吐量。

注意

此隔离功能不适用于