【问题标题】:AWS: Sync data from DyanmoDB to Redshift on hourly basisAWS:每小时将数据从 DynamoDB 同步到 Redshift
【发布时间】:2020-07-13 09:14:53
【问题描述】:
【问题讨论】:
标签:
amazon-web-services
aws-lambda
amazon-dynamodb
amazon-redshift
aws-glue
【解决方案1】:
您正在寻找的是 DynamoDB 流 (official docs)。正如您正确指出的那样,这可以无缝地流入 Kinesis firehose。
这是最优化的方式,可在成本、运营开销和功能本身之间实现最佳平衡。请允许我解释一下:
-
DynamoDB 流:当数据库上发生任何活动时触发流。这意味着,与定期扫描数据并消耗读取容量(即使没有更新)的进程不同,您会收到新数据的通知。
-
Kinesis Firehose:您可以将 Firehose 配置为按数据大小或时间对数据进行批处理。这意味着如果您有良好的流入,您可以将流设置为对每 2 分钟间隔内收到的记录进行批处理,然后只发出一个
COPY 命令到 redshift。流缓冲区中数据的大小也是如此。阅读更多关于它的信息here。
将数据加载到 Redshift 的理想方法是通过 COPY 命令,而 Kinesis Firehose 就是这样做的。您还可以将其配置为自动将数据备份到 S3。
请记住,反应式或基于推送的系统几乎总是比反应式或基于推送的系统性能更高且成本更低。您节省了运行 cron 进程所需的计算容量,还可以持续扫描更新。