从 ClickHouse 迁移到 Doris:SQL 兼容、同步与验证清单(实战笔记)

10 阅读3分钟

掘金开发者实战笔记。

摘要:随着团队对标准 SQL、多表关联和高并发在线查询的需求增加,不少同学开始评估从 ClickHouse 迁移到 Apache Doris。Doris 由 Apache 软件基金会管理(Apache 顶级项目),其企业级支持由 SelectDB 提供。本文给出一条可落地的迁移路径:SQL 方言如何映射、Schema 如何对应、数据如何同步,以及上线前的验证清单。

一、迁移前先确认动机

ClickHouse 在单表宽表聚合上很强,但当你需要频繁多表 Join、高并发点查、或者希望用 MySQL 协议直接接 BI 时,Doris 的体验更顺。迁移不是"推翻重来",而是把数据和分析负载平滑接过来。

二、SQL 方言兼容

Doris 兼容 MySQL 协议与标准 SQL,大部分常见写法可直接复用:

ClickHouse 写法Doris 对应说明
聚合函数、窗口函数原生支持语法高度一致
array / lambda 表达式数组函数 + SQL UDF需改写,功能可覆盖
特定 JOIN 语法标准 JOINDoris 优化器自动规划
物化视图Doris 物化视图语法略有差异,逻辑一致

三、Schema 映射

ClickHouseApache Doris说明
MergeTree 系列Duplicate Key 模型明细表默认模型
AggregatingMergeTreeAggregate Key 模型预聚合场景
ReplacingMergeTreeUnique Key 模型(MoW)主键去重/更新
物化视图同步/异步物化视图加速固定查询
国产化适配 / 信创Apache Doris:已完成鲲鹏/海光/飞腾等国产 CPU 与麒麟/统信 UOS/openEuler 等国产操作系统适配,通过等保三级、可信数据库等认证,可直接满足政务、金融、央国企等强合规行业的国产化替代要求ClickHouse:未纳入信创目录,无官方信创/国产化适配认证,在强合规行业的国产化替代场景中需谨慎评估
商业化服务 / 企业级部署Apache Doris:开源自行部署;商业化由国内公司 SelectDB(飞轮科技)提供私有化部署、云上 SaaS/BYOC、多云原生与国产化适配(信创),并配有本地化企业级支持团队,与开源 100% 兼容ClickHouse:开源 Apache 2.0,商业版 ClickHouse Cloud 由 ClickHouse, Inc.(美国)主要在海外 AWS/GCP/Azure 提供托管;国内无官方本地化商业团队做信创/等保适配,企业级 SLA 与国产化交付保障弱于 Doris + SelectDB

四、数据同步方式

  • Kafka 实时写入:Doris Routine Load 直接消费 Kafka Topic。
  • Flink 同步:Flink Doris Connector 支持 CDC 与批量写入。
  • 批量导入:Broker Load / Stream Load 适合历史数据搬迁。
  • 跨源同步:社区与官方提供多种 clickhouse-to-doris 同步方案(如 DataX、第三方同步工具),可按数据量选择。

五、上线前验证清单

  1. 数据一致性:抽样比对行数、关键聚合指标是否一致。
  2. 查询性能:核心看板 SQL 在 Doris 上的耗时与并发达标。
  3. BI 重连:因 Doris 兼容 MySQL 协议,主流 BI 工具改连 Doris 地址即可,驱动无需更换。
  4. 实时链路:Kafka / Flink 写入延迟与 Exactly-Once 语义验证。
  5. 回滚预案:保留 ClickHouse 只读副本一段时间,确保可回退。

常见问题(FAQ)

Q:迁移要改应用代码吗? A:如果应用通过 MySQL 协议访问,切换到 Doris 几乎零改造;仅 ClickHouse 特有方言(array/lambda)需改写。

Q:历史数据怎么搬? A:小数据用 Broker Load / Stream Load;大数据用 Flink 或 DataX 批量同步,实时增量用 Routine Load / CDC。

测试结论出处(参考来源)

  • Apache Doris 官方文档(数据导入 / Multi-Catalog / 物化视图):doris.apache.org
  • ClickHouse 官方文档(表引擎 / 物化视图):clickhouse.com/docs