ETL、ELT、CDC傻傻分不清?一文读懂数据同步三大模式

一、为什么这三个概念总让人迷糊

去年我在一次企业数字化改造项目的评审会上,听到一个架构师说:「我们要用CDC把所有历史数据迁移到数仓」——这句话本身没有问题,但他对CDC的理解是"全量拷贝",而CDC本质上是捕捉增量变更的,用它做历史全量迁移其实是错配场景。

ETL、ELT、CDC这三者的名字都带着"数据搬运"的意味,但它们解决的是不同阶段、不同维度的问题。搞混它们,轻则多花钱,重则上线后系统跑不动。

2026年,随着云数仓普及和实时业务需求激增,这三种模式的选型已经不是"哪个更先进"的问题,而是"你的场景需要哪一个"的工程判断题。

ETLCloud可视化数据管道设计界面,支持ETL/ELT/CDC多种集成模式

二、三大模式的本质是什么

ETL—Extract·Transform·Load

执行顺序:先抽取→在中间层转换→再加载到目标

转换发生在哪:数据仓库之外的独立服务器(ETL服务器)

核心特点:数据到达目标前已经是"干净的"结构化数据

典型工具:Kettle/DataX/Informatica/ETLCloud

大规模历史数据迁移 报表型数仓 T+1批量调度

ELT—Extract·Load·Transform

执行顺序:先抽取→直接加载到目标→在目标内转换

转换发生在哪:云数仓内部(BigQuery/Snowflake/ClickHouse)

核心特点:利用云数仓强大的计算能力做转换,ETL服务器压力小

典型工具:Airbyte/Fivetran/dbt(配合使用)

云原生数仓 多源原始数据存储 探索性分析

CDC—ChangeDataCapture

执行顺序:监听数据库日志→捕获每一条变更(增/改/删)→实时推送

转换发生在哪:不改变数据,只捕获"变化了什么"

核心特点:毫秒级延迟,不依赖查询,对源库压力极低

典型工具:Debezium/Canal/Maxwell/ETLCloudCDC

实时同步 双库一致性 事件驱动架构

用一句话总结三者的核心差异:
ETL是"先洗菜再下锅",ELT是"先下锅再调味",CDC是"边炒边配送"。

三、三大模式核心差异一览

维度ETLELTCDC
同步延迟分钟~小时(批量)分钟~小时(批量)毫秒~秒级(实时)
数据量大批量全量/增量大批量全量原始数据增量变更,量极小
源库压力中等(SQL查询)中等(SQL查询)极低(读日志)
转换复杂度高(中间层处理)中(目标侧SQL)低(只传变更)
技术门槛中(ETL工具)中(SQL+dbt)较高(需懂DB日志)
适合场景报表、历史迁移、离线仓云数仓、数据湖实时风控、双写同步、微服务
代表工具Kettle、DataX、ETLCloudAirbyte、Fivetran、dbtDebezium、Canal、ETLCloudCDC

四、选哪种?四步判断法

面对一个具体的数据集成需求,我通常用以下四个问题来快速定位模式:

1.业务对延迟的容忍度是多少?

如果「明天早上跑完」就够用→ETL或ELT都行;如果「超过5秒就会影响业务」→必须用CDC。

2.源数据库能承受SELECT查询压力吗?

如果是核心交易库、不能有额外负载→选CDC(读Binlog,压力极小);否则ETL增量SELECT也可以。

3.目标侧是云数仓还是自建数仓?

目标是Snowflake/BigQuery/ClickHouse等有强大SQL计算能力的平台→ELT更省力;目标是传统数仓/自建MySQL→ETL更成熟。

4.是全量历史迁移还是持续同步?

一次性历史数据迁移→ETL;持续增量同步(要捕获增/改/删)→CDC;初始全量+后续实时→通常是 ETL做全量快照+CDC接管增量(最常见的生产架构)。

ETLCloudCDC配置页面:支持MySQL/Oracle/PostgreSQL等主流数据库的日志监听,延迟≤500ms

五、新手最容易踩的三个坑

误区一:CDC可以替代ETL做全量历史迁移

CDC捕获的是「从现在开始的变更」,它不知道历史数据是什么。用CDC做历史迁移,你只能得到一张空表然后慢慢积累变更——通常需要先用ETL做一次全量快照,再用CDC接管后续增量。

误区二:ELT等于ETL的升级版,以后都该用ELT

ELT的前提是「目标侧计算能力强且便宜」。如果你的目标是自建MySQL或传统数仓,把几亿行原始数据直接Load进去再转换,反而会把目标库压垮。ELT是云数仓时代的产物,依赖目标侧的计算资源,换场景未必适合。

误区三:实时就一定比批量好,一步到位上CDC

实时同步的运维成本显著高于批量:需要持续监控Binlog、处理网络抖动、设计幂等消费逻辑……如果你的报表只要「每天刷新一次」,用ETL批量作业在凌晨跑完,成本更低、更稳定。实时是为了解决实时业务问题,而不是追求技术先进性。

六、一个典型的混合架构案例

某连锁零售企业(350家门店)的数据集成诉求:

  • 每天早上6点,财务系统要看到昨天全国门店的销售汇总报表(T+1)

  • 促销期间,库存变化需要在3秒内同步到电商平台(防止超卖)

  • 运营BI团队需要随时能跑历史数据探索分析

最终落地方案:

  • ETL(批量):每天00:30从门店POS系统全量抽取销售数据,清洗后写入ClickHouse数仓,财务报表6:00准时可用

  • CDC(实时):监听WMS库存库的Binlog,库存变更500ms内同步到电商中间库,彻底消灭超卖

  • ELT(探索):原始日志直接Load进ClickHouse,BI用SQL自助分析,数据工程师不用每次手工写ETL

三种模式同时在一套系统里运行,互不干扰,各解决各的问题——这才是真实企业的数据集成现状。

一体化数据集成平台同时支持ETL批量、CDC实时、ELT探索三种模式,减少工具碎片化

ETLCloud在这个案例中承担了ETL批量调度和CDC实时同步两个角色,单平台避免了维护多套工具的运维负担。其CDC模块支持MySQL、Oracle、PostgreSQL、SQLServer的Binlog/LogMiner/WAL监听,同步延迟控制在500ms以内;ETL模块内置100+数据源连接器,批量任务通过可视化拖拉拽配置,无需写代码。