仅将新的记录从AWS DynamoDB复制到AWS Redshift

时间:2014-01-07 19:25:29

标签: amazon-web-services amazon-dynamodb amazon-redshift

我看到有大量的示例和文档可以将数据从DynamoDB复制到Redshift,但我们正在研究增量复制过程,其中只有新行从DynamoDB复制到Redshift。我们将每天运行此复制过程,因此不需要每天都杀死整个redshift表。有没有人对这个话题有任何经验或想法?

4 个答案:

答案 0 :(得分:4)

Dynamo DB有一个名为Streams的功能(当前处于预览状态):

  

Amazon DynamoDB Streams维护按时间排序的项目序列   日志中任何DynamoDB表的级别更改,持续时间为24   小时。使用Streams API,开发人员可以查询更新,   在更改之前和之后接收项目级别数据,并使用它   为他们构建的应用程序构建创意扩展   DynamoDB。

此功能允许您处理新更新,并根据需要执行所需操作,而不是在DynamoDB上设计导出系统。

您可以在Reading and Processing DynamoDB Streams文档中查看有关处理工作方式的更多信息。

答案 1 :(得分:1)

redshift中的副本只能复制整个表格。有几种方法可以实现这个目标

  1. 使用AWS EMR集群和Hive - 如果设置了EMR集群,则可以使用Hive表对dynamodb数据执行查询并移至S3。然后,该数据可以轻松转移到红移。

  2. 您可以根据访问模式存储您的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。