设计分区键并有效使用的最佳实践 - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

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

通常应设计应用程序,在表的所有逻辑分区键及二级索引中实现统一操作。可以确定应用程序所需的访问模式,估计每个表和二级索引所需的总读取容量单位 (RCU) 与写入容量单位 (WCU)。

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

有效使用容量爆增

DynamoDB提供容量爆增,为每个分区吞吐量调配提供一定的灵活性。如果未完全使用分区的吞吐量,DynamoDB 将为稍后的吞吐量暴增保留一部分未使用的容量以应对用量峰值。

DynamoDB 目前保留最多 5 分钟(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 的容量来应对,这样可以承受接收 150 WCU/秒的更高工作负载,而不会节流。

隔离频繁访问的项目

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

如果应用程序带来的高流量始终针对单个项目,自适应容量可能重新平衡数据,以使分区仅包含单个频繁访问的项目。在此情况下,DynamoDB 可以为这个项目的主键提供达到分区最大 3000 RCU 或 1000 WCU 的吞吐量。当表上有本地二级索引时,自适应容量不会跨表的多个分区拆分项目集合。

注意

对于使用已启用 DynamoDB Streams已预置读/写容量模式的表,此隔离功能不可用。