在 OLAP 引擎的演进图谱上,没有“淘汰”,只有“适配”。
ClickHouse 25.12 正在将列存性能推向极致,而 StarRocks 4.0 则勇敢踏入半结构化数据的新大陆——两者并非对手,而是为不同业务战场提供最优解的“双子星”。
一、现实之痛:为什么传统 OLAP 遇到非结构化数据就“卡壳”?
企业数据早已不是整齐划一的宽表。真实场景中:
- 用户行为埋点:
{ “event“: “click“, “params“: { “button_id“: “buy“, “user_tags“: [“new“, “vip“] } }
- IoT 设备上报:不同型号设备字段动态变化
- SaaS 多租户事件:租户 A 有 feature_x,租户 B 有 module_y
传统方案是Flink解析 -> 打平 -> 写入OLAP,而Flink正是大数据处理中常见的流计算框架。
结果如何?
- 开发成本高:每新增字段需改 ETL 管道
- 存储浪费:大量 NULL 值撑大表体积
- 语义丢失:嵌套关系被拍平,无法表达“用户标签列表”
真正的破局点,在于让 OLAP 引擎直接理解 JSON——这正是 StarRocks 4.0 的战略跃迁。但与此同时,ClickHouse 也在其擅长的领域持续进化。
二、ClickHouse 25.12:在“高性能批流分析”赛道持续领跑
ClickHouse 从未试图成为“全能选手”,它的使命始终清晰:为超大规模、高吞吐、低延迟的规整数据分析提供极致性能。

25.12 版本关键升级(2025年12月)
- Projection 2.0:支持更复杂的物化视图自动重写,覆盖多表 JOIN 场景;
- Lazy Materialized Columns:对高频过滤字段按需物化,降低写入开销;
- 内置 RAFT 替代 ZooKeeper:彻底解决 ZK 单点故障与运维复杂度,这也是提升运维/DevOps效率的重要改进;
- Query Cache 分区级支持:重复查询命中率提升 30%+,尤其适合 BI 固定报表。
它依然是这些场景的首选甚至唯一选择:
| 场景 |
为什么 ClickHouse 更优? |
| CDN/日志分析(TB/天级) |
写入吞吐 > 500万行/秒,压缩比达 1:10 |
| 时序监控(Metrics) |
sum(rate) 类查询在百亿数据下 <500ms |
| 固定 Schema 聚合 |
如 DAU、GMV 等核心指标,性能碾压通用引擎 |
| 成本敏感型部署 |
存储成本比同类方案低 30%~50% |
关键认知:ClickHouse 不是“不支持 JSON”,而是认为“JSON 应在写入前解析”——这是其“写入优化、读取极致”的哲学体现。
三、StarRocks 4.0:原生 JSON 支持,打开“敏捷分析”新大门
StarRocks 的目标不同:让业务人员能像操作数据库一样,直接探索原始半结构化数据,无需等待数仓团队建模。

革命性能力:Native JSON Type + 谓词下推

技术优势深度解析:
| 能力 |
StarRocks 4.0 |
ClickHouse 25.12 |
| JSON 原生类型 |
自动解析、类型推断 |
仅字符串,需函数提取 |
| 谓词下推 |
支持路径过滤下推 |
全表扫描后过滤 |
| 动态 Schema |
新字段自动识别 |
需 ALTER TABLE |
| 实时更新 |
Primary Key 模型 upsert |
ReplacingMergeTree 有延迟 |
| 索引支持 |
JSON 字段可建倒排索引 |
无 |
典型受益场景:
- SaaS 多租户平台:各租户事件 schema 不同,无需为每个租户建表;
- 用户画像系统:标签动态增减,直接
payload->’$.tags’ 查询;
- 实验平台(A/B Test):实验参数嵌套在 JSON 中,快速验证效果。
四、深度对比:不是谁更好,而是谁更适合
| 维度 |
ClickHouse |
StarRocks |
| 核心哲学 |
“写入简单,读取极致” |
“写入灵活,读取智能” |
| 最佳数据特征 |
规整、追加为主、schema 稳定 |
异构、动态 schema、需更新 |
| 典型延迟 |
秒级(微批) |
毫秒~秒级(实时 upsert) |
| 运维复杂度 |
中高(需管理 replica/ZK) |
低(自包含 FE/BE) |
| 生态集成 |
Grafana/Prometheus 原生 |
MySQL 协议兼容,BI 工具零改造 |
性能实测(10亿行嵌套事件数据):
- 等值过滤(
payload->’$.country’ = ‘CN’)
- StarRocks 4.0(带索引):1.2s
- ClickHouse(JSONExtractString):8.7s(全表扫描)
- 简单聚合(
COUNT(*) WHERE dt=‘2025-12-23’)
- ClickHouse:0.3s
- StarRocks:0.5s
结论:
- 规整数据查聚合?ClickHouse 更快
- 嵌套 JSON 查过滤?StarRocks 更省事

五、避坑指南:用对工具,避开陷阱
ClickHouse 使用 JSON 的正确姿势
- 不要直接存原始 JSON 字符串!应在 Flink/Spark 中解析为列;
- 若必须存 JSON,用
JSONAsString + MATERIALIZED COLUMN 提取高频字段;
- 避免在 WHERE 中使用 JSONExtract,会导致全表扫描。
StarRocks JSON 使用禁忌
- 勿滥用 JSON:
user_id、event_time 等高频字段仍应独立建列;
- 必建索引:对常用查询路径创建倒排索引;

- 控制文档大小:单 JSON ≤ 100KB,超大内容拆分为 TEXT 字段。
六、未来展望:双轨并行,协同进化
- ClickHouse:继续优化云原生架构(如对象存储集成)、增强向量化 JOIN;
- StarRocks:推进 ARRAY/MAP 原生支持、集成向量检索、深化湖仓一体;
- 混合架构兴起:
- ClickHouse 存原始日志(低成本、高吞吐)
- StarRocks 存业务宽表(高敏捷、强交互)
- 通过统一 Catalog(如 Apache Atlas)实现跨引擎查询,这类大数据架构中的元数据管理工具正变得越来越重要。
行业共识:没有“最好的 OLAP”,只有“最合适的 OLAP”。成熟的数据平台,往往同时运行多个引擎,各司其职。
七、结语:选择你的战场,而非站队
- 如果你处理的是 海量、规整、追加为主的日志或指标,ClickHouse 25.12 仍是无可争议的王者;
- 如果你面对的是 动态 schema、嵌套结构、需实时更新的业务事件,StarRocks 4.0 的 JSON 革命将极大提升敏捷性。
真正的工程智慧,不在于追逐“最新”,而在于理解“最适合”。
|