一、OLAP 选型概述:为什么需要实时 OLAP?

大家好,我是这次课程的主讲。做了十几年大数据架构,我见过太多团队在 OLAP 选型上栽跟头。有的选了个查询飞快的引擎,结果数据写不进去;有的吞吐量上去了,查个东西要等半天。说白了,选型就是个权衡的艺术。

今天咱们先聊聊最核心的问题:为什么实时 OLAP 突然成了刚需?

1.1 从 T+1 到实时:数据价值的窗口在缩短

我记得 2015 年那会儿,大部分公司的数据分析还是 T+1 模式。凌晨跑批,早上看报表。那时候大家觉得「今天看昨天的数据」很正常。

但现在不一样了。你想想看,电商大促期间,每延迟一分钟看到销售数据,可能就错过一次调价机会;金融风控场景里,数据晚到 10 秒,一笔欺诈交易就过去了。数据价值的窗口期,已经从「天」缩短到了「秒」。

核心观点:实时 OLAP 不是炫技,而是业务对数据时效性的硬性要求。当你的业务决策需要依赖「当前时刻」的数据时,传统离线数仓就撑不住了。

1.2 实时 OLAP 到底解决了什么问题?

我习惯把实时 OLAP 的能力拆成三个层面来看:

  • 秒级写入:数据产生后,几秒内就能进入分析系统。不是分钟级,更不是小时级。
  • 秒级查询:在实时写入的同时,还能对海量数据做交互式查询。不能因为数据在写,查询就卡住。
  • 实时与历史统一:既能查刚刚产生的数据,也能查几个月甚至几年前的历史数据。不需要在两个系统之间来回切换。

嗯,这里要注意:很多号称「实时」的系统,其实只是做到了写入实时,查询性能一塌糊涂。或者查询快了,写入就慢了。真正好的实时 OLAP,这两者必须同时在线。

1.3 OLAP 选型的核心维度

做了这么多年的选型,我总结出四个必须考察的维度。少一个,后面都可能踩坑。

维度 说明 我踩过的坑
查询性能 对海量数据的聚合查询、明细查询、点查的响应速度 曾经选了个引擎,单表查询很快,但一 Join 就慢到无法接受
写入吞吐 系统能承受的每秒写入行数或数据量 有次压测发现写入一上去,查询延迟直接飙升 10 倍
数据一致性 写入后多久能被读到?会不会读到中间状态? 金融场景里,读到不一致的数据差点引发生产事故
生态兼容性 能否对接现有的 Kafka、Flink、Spark、BI 工具 选了个冷门引擎,最后发现连 JDBC 驱动都不完善

避坑指南:我曾经在一个项目中,只盯着查询性能看,忽略了写入吞吐。结果上线后,数据源一爆发,写入队列直接打满,查询也挂了。选型一定要做全链路压测,别只看单点指标。

1.4 实时 OLAP 的技术演进脉络

为了让大家有个全局视角,我画了一张图,梳理了实时 OLAP 的技术演进路径和当前的主流方案。

实时 OLAP 技术演进与选型全景图 离线数仓 Hive / Spark SQL T+1 时代 MPP 数据库 Greenplum / ClickHouse 准实时时代 实时 OLAP Doris / StarRocks 实时时代 选型核心维度 查询性能 秒级响应 高并发 写入吞吐 百万行/秒 实时写入 数据一致性 最终一致性 事务支持 生态兼容性 Kafka/Flink BI 工具 选型决策建议 • 查询优先:选 ClickHouse / StarRocks(列存 + 向量化) • 写入优先:选 Doris / StarRocks(支持微批 + 实时导入) • 一致性优先:选 Doris(支持两阶段提交) • 生态优先:选 StarRocks / ClickHouse(社区活跃,生态完善)

1.5 四个维度的权衡之道

你可能会问:这四个维度能不能全都要?我的答案是:理论上可以,但现实中必须取舍。

举个例子:

  • 如果你追求极致的查询性能,可能会牺牲一部分写入吞吐。ClickHouse 就是典型,查询快得离谱,但写入需要攒批,不适合单条实时写入。
  • 如果你追求强一致性,那写入延迟可能会增加。Doris 的两阶段提交保证了数据一致性,但写入链路比最终一致性的系统要重一些。
  • 如果你追求生态兼容性,那可能得选一个「中庸」的方案。StarRocks 在查询、写入、一致性上做得比较均衡,生态也丰富。

我的建议:选型前先列清楚你的业务场景优先级。是电商大促看实时 GMV?还是金融风控做实时预警?场景不同,维度的权重完全不同。我习惯画一个四维雷达图,把每个候选引擎的得分标上去,一眼就能看出谁最匹配。

1.6 本章小结

好了,这一章我们聊了实时 OLAP 为什么重要,以及选型时必须关注的四个核心维度。说白了,没有最好的引擎,只有最合适的引擎。后面的章节,我会逐一深入每个维度,带大家看看主流引擎在这些维度上的真实表现。

嗯,记住一句话:选型不是比参数,而是比匹配度。