2017-07-20 64 views
0

如何将DynamoDB table1写入table2?如何将DynamoDB table1每天写入table2?

Table1: id,name,mobile,address,createdDate. 

Table2: id,name,mobile,address,createdDate. 

Condition: only Yesterday added records are write to "table2". And also remove that Yesterday data from "table1". 

如何每天做这个过程。

+0

您能否编辑您的问题并添加详细信息*为什么*您希望这样做?根据你的理由,适当的答案可能会有所不同。另外,我们可以假设,当你说*昨天*时,你指的是'createdDate'字段中的日期?如果情况并非如此,昨天的数据如何确定? –

回答

0

您需要编写自己的代码才能执行此操作,但是您可以将其作为AWS Lambda函数实施,由Amazon CloudWatch Events日程表触发

参见:Tutorial: Schedule Lambda Functions Using CloudWatch Events

或者,而不是复制每天一次的数据,你可以创建一个DynamoDB流触发一个AWS lambda函数,可以立即插入数据。如果你的目标是每天有一张桌子,你可以在当天填充当天的桌子,并在一天结束时简单地切换到它,而不必复制任何数据 - 因为它已经在那里了!

参见:DynamoDB Streams and AWS Lambda Triggers

+0

我需要今天的常规活动过程的数据。其余的数据不需要。但一些历史分析需要过去的数据。那么如何将所有其他dynamodb数据导出到s3。以及如何恢复基于特定日期的文件。 – samson

+0

您是否在问如何将数据移动到Amazon S3?如果是这样,请开始一个新的问题。 –

+0

当然是个新问题,但我需要一些解释,lambda触发器开始执行一个读取所有昨天数据并写入table2的函数。昨天的数据计算如2百万+那么如何处理这个过程。 – samson

0

这是一个可行的方法:

1)开启表1 TTL,确保项目的第二天删除(你可以把第二天的日期转换成TTL日期字段上创建)。

2)在表1上启用DynamoDB流并确保它包含旧映像。

3)使用AWS拉姆达该处理TTL事件(检查dynamodb TTL文档,看看TTL事件如何被识别)和旧的图像数据写入表2

这个解决方案应该是容错和可扩展性,如lambda将在任何失败的操作中重试。此解决方案的一个缺点是ttl不保证立即执行。在一些极少数情况下,可能需要48小时才能删除项目,但通常速度要快得多。

相关问题