我看到有大量的示例和文档可以将数据从DynamoDB复制到Redshift,但我们正在研究增量复制过程,其中只有新行从DynamoDB复制到Redshift。我们将每天运行此复制过程,因此不需要每天都杀死整个redshift表。有没有人对这个话题有任何经验或想法?
答案 0 :(得分:4)
Dynamo DB有一个名为Streams的功能(当前处于预览状态):
Amazon DynamoDB Streams维护按时间排序的项目序列 日志中任何DynamoDB表的级别更改,持续时间为24 小时。使用Streams API,开发人员可以查询更新, 在更改之前和之后接收项目级别数据,并使用它 为他们构建的应用程序构建创意扩展 DynamoDB。
此功能允许您处理新更新,并根据需要执行所需操作,而不是在DynamoDB上设计导出系统。
您可以在Reading and Processing DynamoDB Streams文档中查看有关处理工作方式的更多信息。
答案 1 :(得分:1)
redshift中的副本只能复制整个表格。有几种方法可以实现这个目标
使用AWS EMR集群和Hive - 如果设置了EMR集群,则可以使用Hive表对dynamodb数据执行查询并移至S3。然后,该数据可以轻松转移到红移。
您可以根据访问模式存储您的dynamodb数据(请参阅http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForTables.html#GuidelinesForTables.TimeSeriesDataAccessPatterns)。如果我们以这种方式存储数据,那么可以在将dynamodb表复制到redshift后删除它们
答案 2 :(得分:0)
这可以通过辅助DynamoDB表来解决,该表仅跟踪自上次备份以来更改的密钥。必须在更新初始DynamoDB表(添加,更新,删除)的任何位置更新此表。在备份过程结束时,您将删除它们或在备份行(逐个)之后删除它们。
答案 3 :(得分:0)
如果您的DynamoDB表可以有
时间戳作为属性或
二进制标志,将数据新鲜度作为属性
传达
然后您可以编写一个配置单元查询,只将当前日期的数据或新数据导出到s3,然后'KEEP_EXISTING'将此增量s3数据复制到Redshift。