You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询DynamoDB到Redshift每日增量数据同步的最优实现方案

解决DynamoDB增量同步到Redshift临时表的方案

针对你的需求,核心是利用DynamoDB本身的系统级变更时间记录,结合合适的工具实现增量导出,以下是具体可行的方案:

方案一:基于DynamoDB增量导出+Glue ETL

DynamoDB的增量导出功能确实可以利用系统维护的项目最后修改时间(即使你的表没定义last_update_date字段,DynamoDB内部会自动跟踪这个时间),步骤如下:

  • 首先确保你的DynamoDB表开启了时间点恢复(PITR),这是增量导出的前提条件。
  • 每日夜间触发一个DynamoDB导出任务,指定时间范围为「上次同步完成的时间」到「当前任务触发时间」。导出的增量数据会以JSON/ION格式存储到你指定的S3桶中。
  • 用Glue Crawler扫描S3中的增量导出文件,自动生成对应的Schema表。
  • 编写Glue ETL脚本,读取这些增量数据,做必要的格式转换后,写入Redshift的临时表。同时要维护一个同步元数据记录(比如在Redshift里建一个小表sync_metadata,或者在S3存一个JSON文件),每次同步完成后更新记录里的「最后同步结束时间」,作为下一次导出的时间起点。

方案二:DynamoDB Streams + Lambda + Redshift COPY

如果需要更灵活的增量捕获,可以用DynamoDB Streams:

  • 开启目标DynamoDB表的Streams功能,选择捕获「新图像+旧图像」或者仅「新图像」,根据你的需求而定。
  • 配置Lambda函数监听Streams,将捕获到的增/改数据批量写入S3的指定前缀下(比如按日期分区)。
  • 每日夜间触发一个Lambda或者Glue任务,调用Redshift的COPY命令,将S3中当日积累的增量数据加载到Redshift临时表。同样需要维护同步的时间戳,避免重复加载。

方案三:复用现有Fivetran PostgreSQL同步链路

既然你已经用Fivetran将DynamoDB同步到PostgreSQL,完全可以复用这条链路:

  • Fivetran本身会自动维护增量同步的元数据(跟踪每个表的最后同步时间),你可以直接在Fivetran中新增Redshift作为目标端,配置从PostgreSQL到Redshift的增量同步。
  • 这种方式无需额外开发,直接利用Fivetran的现有能力,将PostgreSQL中的增量数据同步到Redshift临时表,省去了处理DynamoDB导出的复杂度。

需要注意的点:

  • 无论用哪种方案,都要确保同步元数据的可靠性,避免漏同步或者重复同步数据。
  • 写入Redshift临时表时,可以先清空临时表再加载增量数据,或者用MERGE语句处理更新(如果需要保留历史的话)。

内容的提问来源于stack exchange,提问作者dmurray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 05:59:51