我有一个用例,我需要将ttl列添加到现有表中。目前,该表有超过20亿条记录。
是否有相同的现有解决方案?或者,emr应该是前进的道路吗?
答案 0 :(得分:4)
DynamoDB不支持跨主键边界的更新操作。而对于读取数据,跨越分区边界的唯一操作是扫描。
因此,遗憾的是,向表中的所有项添加属性(DynamoDB是文档数据库,因此没有列的概念)的唯一方法是为每个项实际执行Put。
如果您的表中有大约20亿个项目,则将有20亿次写入。
当然,您可以将EMR与Hive一起使用来连接到表并执行SQL样式的更新以添加TTL属性,但它仍会转换为20亿个单独的PutItem请求,因此它需要花费一些时间或者相当运行成本高昂。
如果您想要添加TTL的原因是因为您试图删除表中的大量项目,那么创建新表可能更好的方法是,使用TTl复制您需要的记录和所有,然后删除旧表。
答案 1 :(得分:0)
它不受直接支持,但是很幸运,最近发布了this AWS blog post,其中涵盖了整个过程。