【发布时间】:2015-07-24 18:22:53
【问题描述】:
我们有一个生产中的 DynamoDB 表正在持续更新,我们希望将所有记录从 dynamoDB 加载到 redshift。
我们尝试使用复制命令,但由于新记录不断插入到表中,复制命令将永远运行。
我们想知道将数据从 live dynamodb 加载到 redshift 的最佳方式是什么。
【问题讨论】:
标签: amazon-dynamodb amazon-redshift
我们有一个生产中的 DynamoDB 表正在持续更新,我们希望将所有记录从 dynamoDB 加载到 redshift。
我们尝试使用复制命令,但由于新记录不断插入到表中,复制命令将永远运行。
我们想知道将数据从 live dynamodb 加载到 redshift 的最佳方式是什么。
【问题讨论】:
标签: amazon-dynamodb amazon-redshift
考虑研究基于DynamoDB Streams 的解决方案。 Streams 提供了在每个 DynamoDB 分区上发生的数据平面事件的有序日志(因此每个主键的事件都是绝对有序的)。您可以使用 Kinesis Client Library 和 DynamoDB Streams Kinesis Adapter 来处理 Stream to Redshift。
DynamoDB Streams 目前处于预览阶段,但应该很快就会普遍可用。
【讨论】:
您可以使用以下模式:
DynamoDB 流 --> AWS Lambda --> Amazon Kinesis Firehose --> Amazon Redshift。
图表来自 AWS 文章 DynamoDB Streams Use Cases and Design Patterns。
请在此处查看答案,AWS DynamoDB Stream into Redshift。
DynamoDB 流实际上与 Kinesis Data Stream 相同,但它是由 DynamoDB 中的新数据/更改数据自动生成的。这允许在将新数据添加到 DynamoDB 表或更改数据时通知应用程序。
Kinesis Data Firehose 可以自动将流输出到 Redshift(以及其他目的地)。
AWS Lambda 无需预置或管理服务器即可运行代码。您只需为您消耗的计算时间付费——当您的代码未运行时,您无需支付任何费用。您几乎可以为任何类型的应用程序或后端服务运行代码 — 全部实现零管理。
Lambda 对于检查来自流的数据很有用。例如,它可用于操作数据格式或跳过不需要的数据。
综合起来,您可以在 DynamoDB 中添加/修改数据。这将导致发送包含有关更改的信息的 DynamoDB 流。 AWS Lambda 函数可以检查数据并操作/删除消息。然后它可以将数据转发到 Kinesis Data Firehose 以自动将数据插入到 Amazon Redshift。
【讨论】: