基于日期/天的归档Dynamodb

2024-09-28 19:31:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想归档dynamodb表,数据只保存90天。我在表中有一个名为recorded_on的字段,可以用来跟踪90天。看看数据管道,我们不需要EMR,它似乎有点过头了。有更好的方法吗?在

1. Cronjob that will continue to run everyday and match recorded_on + 90days > today's date and put those rows in s3 and delete those rows.

2. Separate cronjob to put data from s3 to redshift everyday.

Tags: andto数据方法管道s3puton
3条回答

我知道这是一个老问题,但为了任何人的缘故,这个问题:

现在可以使用DynamoDB TTL(Time To Live)功能自动删除旧数据。然后,可以使用由该表上的流事件触发的lambda函数将已删除的记录归档到S3或您希望的任何位置。在

在AWS博客上有一篇关于如何实现这一点的详细文章:https://aws.amazon.com/blogs/database/automatically-archive-items-to-s3-using-dynamodb-time-to-live-with-aws-lambda-and-amazon-kinesis-firehose/

您可以创建一个计划的Lambda函数,该函数每天(或以您希望的任何间隔)运行,以执行查询并存档项目。在

或者,如果您希望它能够扩展和更好地执行,您可以让Lambda函数执行查询,然后为每个需要归档的项目向SNS主题写入一条消息,并在该SNS主题上使用另一个Lambda函数触发器并执行归档操作。在

为什么你认为使用AWS数据管道是过度的?您可以使用自定义作业,但它将需要额外的工作由管道自动为您完成。在

事实上,它在幕后使用EMR集群不应该是一个问题,因为它的细节无论如何都是抽象的。设置将dynamoDb归档到s3的管道非常简单。对于删除超过90天的数据,可以编写自定义脚本,并使用数据管道ShellCommandActivity(http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-shellcommandactivity.html)执行该脚本。在

以下是数据管道相对于CRON的一些好处:

  1. 失败时重试。在
  2. 监控/警报。在
  3. 不需要提供EC2,AWS负责幕后的一切。在
  4. 控制输出可以使用多少dynamoDb容量,这对于防止导出作业影响其他系统非常重要。在

它也很便宜,https://aws.amazon.com/datapipeline/pricing/。在

问候 迪内什·索兰基

相关问题 更多 >