在数据上传期间高效分发写入活动 - Amazon DynamoDB
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

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

通常,当您从其他数据源加载数据时,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 服务器繁忙并提高吞吐量性能。