【问题标题】:Bulk add ttl column to dynamodb table将 ttl 列批量添加到 dynamodb 表
【发布时间】:2018-02-19 22:15:40
【问题描述】:

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

是否有任何现有的解决方案围绕相同的构建?或者应该是 emr 是前进的道路?

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

      它不受直接支持,但您很幸运,最近发布的 this AWS blog post 深入介绍了该过程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-17
        • 1970-01-01
        • 2022-01-14
        • 2020-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多