SuperAPI AI 工具集

cdc-streaming-pipeline

数据与分析

查看项目

更新于 10-15 23:46

技能介绍

用途:构建从 Aurora DSQL、Aurora Postgres、RDS 等事务型源库到 Kinesis Data Streams(或 MSK)的实时 CDC 管道,由 Lambda 消费者将变更写入 Redshift Serverless(通过 Redshift Data API),或经 Firehose 写入 S3/Iceberg。适用于需要设计消费者 Lambda、决定下游事件建模(追加 vs 原地 upsert)、处理 schema 漂移,以及提前了解运维坑(参数上限、异步轮询、重试、毒记录)的场景。不适用于仅需湖仓冷路径、与 CDC 无关的 Redshift Serverless 通用配置、批量 ETL/DMS 全量加载,或在流内使用 EMR/Glue/Spark 转换。

主要能力与设计:核心是“追加型事件日志 + 读时重建”。CDC 投递可能乱序且重复,因此每个事件写为新行,当前状态由 *_current 视图用 ROW_NUMBER() OVER (PARTITION BY record_id ORDER BY commit_timestamp DESC) 取每主键最新提交时间重建,删除以 operation <> 'd' 隐藏。cdc_events 表使用 SUPER 列 event_data 吸收任意源 schema,DISTKEY(record_id) 使窗口本地执行,SORTKEY(source_table, commit_timestamp) 便于按表和时间剪枝。schema 漂移时新增源表或列无需改 Redshift DDL,只需按需新增视图或列。

生产端要点:Aurora DSQL 公开预览暂无 CloudFormation 资源类型,需在集群、Kinesis 流和 IAM 角色就绪后通过 AWS CLI 创建流(aws dsql create-stream,--ordering UNORDERED),脚本应幂等并轮询 get-stream 直到 ACTIVE。DSQL 到 Kinesis 的角色需信任 dsql.amazonaws.com,条件键使用流 ARN 的 ArnLike 后缀 /stream/*。DSQL 预览中 op 只有 c 和 d,没有 u,不要特判 op == 'u'。

消费者正确性:使用 Redshift Data API 命名参数,禁止字符串拼接;每行 5 个参数,单次 execute_statement 上限 200,因此每块最多 40 行,需按 ROWS_PER_CHUNK 分块。execute_statement 为异步,必须轮询 describe_statement 直至 FINISHED,失败或超时抛错。分块失败要重新抛出,让 Kinesis 重试;重试会造成重复插入,但追加模式可安全吸收。日志需记录已提交的 statement_id。事件源映射可配置 BisectBatchOnFunctionError、有界重试、BatchSize 100、MaximumBatchingWindowInSeconds 5。资料在此处截断,后续重试与死信配置暂未提供。