开发者经常需要对其 表进行批量更新。进行批量更新的原因可能包括:
需要注意的是,DynamoDB 不提供原生支持批量更新的功能,因此开发者必须构建和管理自己的解决方案。可考虑的多种方法包括使用 或 。
在本文中,我们将介绍如何利用 高效进行 DynamoDB 表的批量更新。该无服务器编排服务使您能够与 Lambda 函数及其他 AWS服务进行集成。您可以根据需要修改、部署并测试该解决方案,以满足自己的批量更新需求。
选择 Step Functions 作为解决方案的原因有以下几点:
一个高效的批量更新应该在 DynamoDB
之间分配工作。通过 ,您可以将表逻辑上划分为指定数量的分段。在此方案中,会随机处理这些分段,以提高工作效率。StepFunctions 将分段分配给并发的 Lambda 函数调用。每个 Lambda 函数调用逐一迭代并更新其分配的分段中的项目。
以下是三个 Lambda 函数的示意图,每个函数处理一个随机选定的分段,共有十个分段覆盖一个由四个分区组成的 DynamoDB 表。

AWS 控制台提供一页显示正在运行的 Step Function 的概述,您可以选择 Map Run 链接以开启页面,查看批量更新的进度。

每个分段的处理状态将被显示。您可以随时通过更新此页面上的 最大并发性 值来调整批量更新的速度及其对 DynamoDB 表的影响。
删除)
您可以使用 AWS CLI 监控和更新 Step Function,使用 、、 和 命令。
删除 S3 配置存储桶中的所有对象,并使用 命令删除此解决方案创建的所有资源。
在本文中,我们提供了一种利用 Step Functions 高效执行 DynamoDB表批量更新的方案。您可以部署该解决方案并根据自己的批量更新需求进行修改。请务必在对生产表进行操作之前测试任何修改,并确保适当的表备份。
提供的解决方案将批量更新处理分散在表上,以提高性能并最小化对其他工作负载的影响。在更新过程中,您可以随时控制批量更新的速度及其对表的负担。
该解决方案的估计上限为包含 1800 亿条,平均大小为 4KB 的 DynamoDB 表。如果您的表超过此限制,或者表中项目的平均大小超过 4KB,请查阅本帖的限制部分 — EMR 或 Glue 方法可能更适合您。
如需开始使用该解决方案,请遵循本文中提供的步骤或访问 。
要了解更多关于 DynamoDB 的信息,请查看 。
 Chris Gillespie 是一名总部位于英国的高级解决方案架构师。他大部分时间与快速发展的“云原生”客户合作。在工作之外,他过着家庭生活,并努力保持健康。
Leave a Reply