【发布时间】:2019-04-02 05:04:55
【问题描述】:
我们正在使用脚本将大量具有不同属性的不同表迁移到另一个表,以转换为新的 DynamoDB 表格式。
抛开细节不谈,我们需要为旧表中的每个项目添加“已迁移”属性。为了做到这一点,我们知道我们需要使用新属性进行扫描并更新表中的每个项目。但是,如果我们正在运行的添加此属性的脚本在中途死亡,我们将需要重新启动脚本并过滤掉任何没有此新属性的内容(并且只将新属性添加到缺少它的项目中)。
出现的一个想法是,我们可以使用 primaryKey + migrated 标志将全局二级索引添加到表中,以便我们可以使用它来确定需要更快迁移的内容。
但是,对于一次性迁移工作(在失败的情况下可能会运行几次),我不确定它是否值得创建索引的成本?该表中有数亿个项目,我很难证明创建一个巨大的索引只是为了加快扫描速度。想法?
【问题讨论】:
-
您是否考虑过使用 AWS Database Migration Service 来完成这项任务?它会自动管理迁移工作人员,并会处理任何失败/重试,因此您无需担心。
-
@MatthewPope 是的 - 不幸的是,我们不能在我们的用例中使用迁移服务,因为我们不能从一个表直接写入另一个表,而是必须通过我们的服务用于摄取的一些 API 和审计。
-
您可以通过使用 DMS 将所有内容提取到 S3 中的
tmp存储桶来避免需要索引,然后应用自定义解决方案将其从 S3 发送到您的摄取 API。将 S3 文件成功加载到新表后,将其从 S3 中删除,以免再次处理。您可以添加一些其他内容以使其更具容错性,但它太适合放在评论中了。
标签: amazon-dynamodb