DataX / dbswitch / DBSyncer / Canal / Debezium / PeerDB / pgstream / Benthos 全线体检 → 空白点 → 架构 → MVP
市场不缺「批量搬数据」,也不缺「CDC 吐 Kafka」,缺的是一次配置、迁移与增量同一套语义、无 JVM 无 Kafka 依赖、且能吃国产库的单二进制工具。
| 工具 | 本质 | 强项 | 死角 |
|---|---|---|---|
| DataX 阿里·Java | 离线批量,单机多线程 Reader→Channel→Writer | 稳、插件多、流控精准、无外部依赖 | 只做 T+1;大表 1 任务吃 10G 内存;无自动集群(实测 15 台机手配);无 Web |
| dbswitch dromara·Java | 结构迁移 + 批量同步 JDBC 分批 + copy | 方言覆盖最广:达梦/金仓/highgo/oscar/gbase/openGauss/uxdb 全有 | 靠 JDBC 拉,压源库;没有日志 CDC;变化量同步「千万级性能未验证」 |
| DBSyncer 86dbs·Java | Web 控制台式同步中间件 | 24 种连接器(Kafka/RocketMQ/Redis/Mongo/ES/DuckDB…)+ 可视化 + 插件 | JVM、Web 重、按月级运维;DDL 不同步 |
| DBSync 商业·Windows | 「扫描比对找差异」定时同步 | 绿色免安装、双向、免费版能用 | 不读日志,靠全表扫比对 → 大数据量不可行;闭源 |
| dbdatasync | 没找到有影响力的同名项目(多为个人脚本/私有交付物)。按「离线批量+定时」归到上面第一类即可,不构成竞品。 | ||
| 项目 | 语言 | 形态 | 关键事实 |
|---|---|---|---|
| Canal 阿里 | Java | 伪装 slave 读 binlog | 只 MySQL;没有全量快照;出 Kafka/RocketMQ |
| Debezium Red Hat | Java | Kafka Connect 源 | 连接器最全、事实标准;必须拖 Kafka;基准里吃 8–10 GB、默认 15k ops/s |
| Flink CDC | Java | Flink connector | 无锁并行快照 + checkpoint;要一整套 Flink |
| SeaTunnel Apache 顶级 | Java | Zeta/Flink/Spark 引擎 | 批流一体、100+ 连接器、自带无锁快照 + schema evolution + 动态加表;重 |
| PeerDB 已被 ClickHouse 收购 | Go | 单二进制,PG→CH | 无 Kafka 依赖、slot 增长监控、resync、schema 演进;只强在 PG→ClickHouse |
| pgstream Xata | Go | CLI + 库 | 唯一把 DDL 变更当一等公民;出 PG/Kafka/OpenSearch/Webhook |
| go-pq-cdc Trendyol | Go | 库 + 连接器 | 生产验证;1000 万行 2.5 分钟、130 MB —— Go 能打赢 JVM 的硬证据 |
| Benthos / Redpanda Connect | Go | 单二进制 30 MB | 300+ 连接器、YAML 即管道、冷启 <1s;但数据库源是拉取式,不读日志 |
| Supermetal 新,非 JVM | — | CDC 服务 | 快照 2× 吞吐 / 一半 CPU;live 默认配置 35k ops/s,slot lag <100 MB |
| Rust 侧 | Rust | 库/碎片 | pgwire-replication、rustcdc、EasyPost binlog(只有 parser,没有网络复制流)、mysql-binlog-connector-rust;Supabase ETL 仍是 git-only |
CloudCanal / TapData / BladePipe / DataPipeline 卖的就是「端到端、无 Kafka、含国产库」这件事——说明需求成立,但开源这一层是空的。
| 厂商 | 卖点 | 参考价格/门槛 |
|---|---|---|
| CloudCanal | 60+ 数据源、<3s 延迟、达梦走 DBMS_LOGMNR、表级位点并行 | 自托管约 ¥483/月起(BYOC) |
| TapData | 100+ 连接器、国产库裸日志解析、拖拉拽 | 企业版闭源,社区版功能受限 |
| BladePipe / DataPipeline | Kafka-less CDC、批流一体 | 商业授权 |
| Fivetran / Airbyte / Estuary | 全托管,SaaS 长尾源 | $3600/月起量级 |
机会他们闭源他们贵且绑定
这条产品的壁垒是协议覆盖 + 事务语义正确 + 运维体验,不是运行时。而恰恰在「异构协议」这条最难的路上,Rust 的弹药最少。
| 维度 | Go | Rust |
|---|---|---|
| PG 逻辑复制 | jackc/pglogrepl,十年生产验证 | pgwire-replication(单人维护)/ pg-walstream |
| MySQL binlog | go-mysql(canal):解析 + 网络复制流全有 | 只有 parser;网络复制流要自己写 |
| Oracle / 达梦 / 金仓 | 纯协议实现或 C 库 cgo,路清楚 | 无 crate,只能 FFI 或重写 |
| 并发模型 | goroutine:一表/一分片一协程,天然 | tokio 更精细,但状态机复杂度高 |
| 内存 / p99 | 130 MB 级(实测),GC 可调 | <20 MB,无抖动 |
| 交付 | 单静态二进制、交叉编译极简 | 单二进制、但 TLS/DB 依赖交叉编译麻烦 |
| 开发速度 | 基准 | 约 2–3× |
难点提醒:这三步(一致性快照、位点对齐、断点续传)比性能难得多,也正是竞品的护城河。
| 目标 | 怎么做到 | 验收数字 |
|---|---|---|
| 低开销 | 零 GC 依赖、对象池复用解析缓冲、批量编码;不拖 Kafka | 常驻 <80 MB,空转 CPU <2% |
| 低延迟 | group commit 窗口 1ms;不做中间落盘;单跳直连目标 | 同机房 p99 <100 ms |
| 高吞吐 | 表/分片级并行 + 批量 COPY/多值 INSERT + 自适应批量 | 单核 ≥2 万行/s,8 核打满万兆 |
| 快启动 | 静态二进制、无 JVM、无外部注册中心;配置即代码 | 冷启 <200 ms,二进制 <25 MB |
| 易上手 | 一条 yaml → dbsync run;plan 预演不写目标;verify 一句话校验 | 30 秒内跑通第一个同步 |
dbsync plan sync.yaml # 只读预演:算什么、写哪里、预计多久 dbsync run sync.yaml # 全量+增量一体,Ctrl-C 即停,重启续跑 dbsync verify sync.yaml # 分块校验,输出订正 SQL dbsync status # 一屏:延迟/吞吐/位点/队列/重试
| 阶段 | 范围 | 周期估计 |
|---|---|---|
| v0.1 | PG→PG(含 DDL)、MySQL→PG;run/plan/verify/status;_ds_meta 幂等;内建 bench | 4–6 周 |
| v0.2 | Kafka / NATS / Redis Streams / ClickHouse / ES 五种 sink + 映射 DSL | 3–4 周 |
| v0.3 | Oracle LogMiner(只读)、达梦 DM8、金仓(走 PG 协议可复用通道) | 6–8 周,最硬 |
| v0.4 | 双向/冲突策略、分片并行消费、Prometheus + TUI | 看需求 |
| 不做 | 可视化调度平台、流计算/聚合、SaaS 控制面、跨云托管。这些是 SeaTunnel 和商业产品的战场。 | |
建议 自用起步 · Go · 先 PG→PG + MySQL→PG 打通接缝,金仓复用 PG 通道当 v0.1 的惊喜项。