AWS:每小时将数据从 DynamoDB 同步到 Redshift
Posted
技术标签:
【中文标题】AWS:每小时将数据从 DynamoDB 同步到 Redshift【英文标题】:AWS: Sync data from DyanmoDB to Redshift on hourly basis 【发布时间】:2020-07-13 09:14:53 【问题描述】:我将一些事件存储到 DynamoDB 中。我必须与 Redshift 同步(即增量复制)数据。最终,我希望能够通过 AWS Quicksight 分析数据。
我遇到过多种解决方案,但它们要么是一次性的(使用一次性的COPY command),要么是实时的(streaming data pipeline using Kinesis Firehose)。
实时解决方案似乎优于每小时同步,但我担心性能和复杂性。我想知道是否有更简单的方法可以每小时批量更新。
【问题讨论】:
【参考方案1】:您正在寻找的是 DynamoDB 流 (official docs)。正如您正确指出的那样,这可以无缝地流入 Kinesis firehose。
这是最优化的方式,可在成本、运营开销和功能本身之间实现最佳平衡。请允许我解释一下:
-
DynamoDB 流:当数据库上发生任何活动时触发流。这意味着,与定期扫描数据并消耗读取容量(即使没有更新)的进程不同,您会收到新数据的通知。
Kinesis Firehose:您可以将 Firehose 配置为按数据大小或时间对数据进行批处理。这意味着如果您有良好的流入,您可以将流设置为对每 2 分钟间隔内收到的记录进行批处理,然后只发出一个
COPY
命令到 redshift。流缓冲区中数据的大小也是如此。阅读更多关于它的信息here。
将数据加载到 Redshift 的理想方法是通过 COPY
命令,而 Kinesis Firehose 就是这样做的。您还可以将其配置为自动将数据备份到 S3。
请记住,反应式或基于推送的系统几乎总是比反应式或基于推送的系统性能更高且成本更低。您节省了运行 cron 进程所需的计算容量,还可以持续扫描更新。
【讨论】:
以上是关于AWS:每小时将数据从 DynamoDB 同步到 Redshift的主要内容,如果未能解决你的问题,请参考以下文章
AWS:从 dynamodb 到 redshift 的数据转换 [关闭]