在数据上传期间高效分配写入活动 - Amazon DynamoDB

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

在数据上传期间高效分配写入活动

通常,当您从其他数据源加载数据时,Amazon DynamoDB 会在多个服务器上对您的表数据进行分区。如果同时将数据上传到所有已分配的服务器,则可获得更好的性能。

例如,假设您要上传用户消息到 DynamODB 表中,该表使用复合主键和UserID作为分区键,MessageID作为排序键。

当您上传数据时,您可以采取的一种方法是上传每个用户的所有消息项目,一个接一个用户:

UserID MessageID

U1

1

U1 2
U1 ...
U1 ... 最多可达 100

U2

1

U2 2
U2 ...
U2 ... 最多 200 个

在这种情况下,问题是您没有跨分区键值分发写入请求到 DynamoDB。在转到下一个分区键值并执行相同操作之前,您一次获取一个分区键值并上传其所有项目。

在幕后,DynamoDB 正在跨多个服务器对表中的数据进行分区。要充分利用为表预配置的所有吞吐量容量,必须在分区键值之间分配工作负载。通过将数量不均匀的上载工作定向到所有具有相同分区键值的项目,您不能完全使用 DynamoDB 为您的表预配置的所有资源。

通过使用排序键从每个分区键值中加载一个项目,然后从每个分区键值加载另一个项目,您可以分配上载工作,依此类推:

UserID MessageID

U1

1

U2 1
U3 1
... ...

U1

2

U2 2
U3 2
... ...

此序列中的每个上传都使用不同的分区键值,使更多 DynamoDB 服务器同时处于繁忙状态,并提高吞吐量性能。