【发布时间】:2014-01-25 15:12:55
【问题描述】:
我看到有大量示例和文档可以将数据从 DynamoDB 复制到 Redshift,但我们正在研究一个增量复制过程,其中仅将新行从 DynamoDB 复制到 Redshift。我们将每天运行此复制过程,因此无需每天杀死整个 redshift 表。有人对此主题有任何经验或想法吗?
【问题讨论】:
标签: amazon-web-services amazon-dynamodb amazon-redshift
我看到有大量示例和文档可以将数据从 DynamoDB 复制到 Redshift,但我们正在研究一个增量复制过程,其中仅将新行从 DynamoDB 复制到 Redshift。我们将每天运行此复制过程,因此无需每天杀死整个 redshift 表。有人对此主题有任何经验或想法吗?
【问题讨论】:
标签: amazon-web-services amazon-dynamodb amazon-redshift
如果您的 DynamoDB 表可以有
时间戳作为属性或
将数据新鲜度作为属性传递的二进制标志
然后您可以编写一个配置单元查询以仅将当天的数据或新数据导出到 s3,然后“KEEP_EXISTING”将此增量 s3 数据复制到 Redshift。
【讨论】:
Dynamo DB 有一个名为 Streams 的功能(目前处于预览阶段):
Amazon DynamoDB Streams 维护按时间排序的项目序列 日志中任何 DynamoDB 表中的级别更改持续时间为 24 小时。使用 Streams API,开发人员可以查询更新, 接收变更前后的项目级数据,并使用 为他们构建的应用程序构建创造性的扩展 DynamoDB。
此功能将允许您在新更新进入时对其进行处理并按照您的意愿使用它们,而不是在 DynamoDB 之上设计一个导出系统。
您可以在Reading and Processing DynamoDB Streams 文档中查看有关处理工作原理的更多信息。
【讨论】:
redshift 的拷贝只能拷贝整个表。有几种方法可以实现这一目标
使用 AWS EMR 集群和 Hive - 如果您设置 EMR 集群,则可以使用 Hive 表对 dynamodb 数据执行查询并移动到 S3。然后可以轻松地将这些数据移至 redshift。
您可以根据访问模式存储 dynamodb 数据(请参阅http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForTables.html#GuidelinesForTables.TimeSeriesDataAccessPatterns)。如果我们这样存储数据,那么dynamodb表复制到redshift后就可以删除了
【讨论】:
这可以通过仅跟踪自上次备份以来更改的键的辅助 DynamoDB 表来解决。无论初始 DynamoDB 表何时更新(添加、更新、删除),都必须更新此表。在备份过程结束时,您将删除它们或在备份一行后(一个接一个)。
【讨论】: