批量添加ttl列到dynamodb表

时间:2018-02-19 22:15:40

标签: amazon-dynamodb emr amazon-emr amazon-data-pipeline data-pipeline

我有一个用例,我需要将ttl列添加到现有表中。目前,该表有超过20亿条记录。

是否有相同的现有解决方案?或者,emr应该是前进的道路吗?

2 个答案:

答案 0 :(得分:4)

DynamoDB不支持跨主键边界的更新操作。而对于读取数据,跨越分区边界的唯一操作是扫描。

因此,遗憾的是,向表中的所有项添加属性(DynamoDB是文档数据库,因此没有列的概念)的唯一方法是为每个项实际执行Put。

如果您的表中有大约20亿个项目,则将有20亿次写入。

当然,您可以将EMR与Hive一起使用来连接到表并执行SQL样式的更新以添加TTL属性,但它仍会转换为20亿个单独的PutItem请求,因此它需要花费一些时间或者相当运行成本高昂。

如果您想要添加TTL的原因是因为您试图删除表中的大量项目,那么创建新表可能更好的方法是,使用TTl复制您需要的记录和所有,然后删除旧表。

答案 1 :(得分:0)

它不受直接支持,但是很幸运,最近发布了this AWS blog post,其中涵盖了整个过程。