Cus*_*Bun 2 amazon-web-services amazon-dynamodb
我的团队正在将多个不同的 DynamoDB 表迁移到一组两个 DynamoDB 表中。本质上,我们正在更改模型并将大量数据合并到两个表中(现在分布在 6 个表中)。
我们正在考虑使用 DynamoDB 流,并让它们触发 Lambda,该 Lambda 处理触发某些写入新表的 API 的逻辑。但是,我也试图弄清楚如何处理旧数据,因为我们还必须将表中已有的所有内容迁移到新表中。
我猜测一个选择是运行一些程序来扫描 DynamoDB 表中的每个项目(有些项目大约有 1 亿个),并且对于每个项目,调用 Lambda 调用的相同 API 以写入新表。但是,我不确定当我们在迁移过程中也经常将新记录写入旧表时,对旧表的扫描如何处理。
有人对进行此类迁移并保持同步有一些建议吗?
谢谢!
Streams 和 lambda 是一个很好的解决方案(作者 Abhaya Chauhan) ...
\n(也是pluralsight 上的视频)
\n\n在这种情况下,请尝试利用 DynamoDB Streams 和 AWS Lambda 根据需要重新建模数据。
\n\n重构表定义的一个好方法是利用 DynamoDB 触发器,按照以下步骤操作:
\n\n\n
\n\n- \n
创建一个新表(我们称之为 NewTable),其中包含所需的键结构、LSI、GSI。
- \n
在原始表上启用 DynamoDB Streams
- 将 Lambda 关联到 Stream,将记录推送到 NewTable 中。(此 Lambda 应在步骤 5 中删除迁移标志)
\n- [选修的]在原始表上创建GSI以加快扫描项目的速度。确保此 GSI 仅具有属性:主键和已迁移(请参阅步骤 5)。
\n- 扫描在上一步中创建的 GSI(或整个表)并使用以下过滤器:\n FilterExpression = "attribute_not_exists(Migerated)"\n 使用迁移标志更新表中的每个项目(即:\xe2\x80\x9cMigerated \xe2\x80\x9d: { \xe2\x80\x9cS\xe2\x80\x9d: \xe2\x80\x9c0\xe2\x80\x9d },将其发送到 DynamoDB Streams(使用 UpdateItem API,以确保不会发生数据丢失)。
\n注意您可能希望在更新期间增加表上的写入容量单位。
\n\n\n
\n- Lambda 将拾取所有项目,删除 Migerated 标志并将其推送到 NewTable 中。
\n- 迁移所有项目后,将代码重新指向新表
\n- 删除原始表,Lambda 函数一旦满意就一切顺利。
\n
| 归档时间: |
|
| 查看次数: |
3490 次 |
| 最近记录: |