1. Doris 实时数仓概述
大家好,我是这次课程的主讲。做了这么多年大数据架构,我见过太多数仓项目从兴起到烂尾。说实话,实时数仓这个概念,前几年还只是个噱头,但到了今天,它已经成了企业数字化转型的刚需。
这一章,我们先不急着搭环境、写代码。我想先跟你聊聊——到底什么是实时数仓?Doris 凭什么能在这个领域站稳脚跟?以及,它跟传统数仓比,到底强在哪?
1.1 什么是实时数仓
传统数仓,大家都很熟悉。T+1 跑批,凌晨算昨天的数据,早上出报表。但现在的业务场景变了——你想想看,电商大促的实时大屏、金融风控的秒级预警、直播间的实时流量调度……这些场景等不了第二天。
实时数仓,说白了就是让数据从产生到可分析的时间窗口,从小时级、天级,压缩到分钟级甚至秒级。
它不是一个单一的工具,而是一套技术栈的组合。核心要解决三个问题:
- 实时采集:从业务数据库、日志、消息队列里把数据捞出来,延迟控制在秒级
- 实时计算:对流入的数据做清洗、关联、聚合,不能等批处理
- 实时查询:计算完的结果要能秒级响应,支持高并发查询
我个人的理解:实时数仓不是要干掉传统数仓,而是在传统数仓的基础上,增加了一条"快车道"。两条路并行,各司其职。
1.2 Doris 的核心特性
我第一次接触 Doris 是在 2020 年。当时团队在做实时大屏项目,用 ClickHouse 做存储,但多表 Join 的性能实在让人头疼。后来调研到 Doris,试了一把,嗯,真香。
Doris 的核心特性,我总结为以下五点:
| 特性 | 说明 | 我的实战感受 |
|---|---|---|
| MPP 架构 | 大规模并行处理,查询自动分发到多节点执行 | 单表查询 10 亿级数据,秒级出结果 |
| 向量化执行引擎 | 按列批量处理数据,CPU 缓存命中率高 | 比普通行式存储快 5-10 倍 |
| 支持实时与批量导入 | Stream Load、Broker Load、Routine Load 多种方式 | 我曾经用 Routine Load 直接消费 Kafka,延迟不到 10 秒 |
| 标准 SQL 兼容 | MySQL 协议兼容,支持 Join、子查询、窗口函数 | 数据分析师直接用 MySQL 客户端就能连,学习成本极低 |
| 物化视图 | 预计算聚合结果,查询时自动命中 | 大屏场景下,查询响应时间从 3 秒降到 200 毫秒 |
一个小技巧:Doris 的物化视图不是手动刷新的,而是基表数据变更时自动增量更新。这一点比很多传统数仓要智能得多。
1.3 Doris 与传统数仓的对比
很多人问我:Doris 能不能替代 Hive?能不能替代 ClickHouse?我的回答是——它们不是替代关系,而是定位不同。
我整理了一张对比表,你看完就明白了:
| 维度 | 传统数仓(Hive) | Doris |
|---|---|---|
| 数据延迟 | T+1,小时级 | 秒级、分钟级 |
| 查询速度 | 分钟级(依赖 MapReduce) | 秒级(MPP + 向量化) |
| 数据更新 | 不支持高频更新 | 支持 Upsert、Delete |
| 并发能力 | 低,适合离线分析 | 高,支持数百并发查询 |
| 存储成本 | 低(HDFS 冷存储) | 中等(SSD + 列式压缩) |
| 适用场景 | 离线报表、历史数据归档 | 实时大屏、Ad-hoc 查询、数据服务 |
避坑提醒:我曾经在一个项目中,试图用 Doris 完全替代 Hive 做离线批处理。结果发现 Doris 的存储成本比 HDFS 高不少,而且大批量历史数据导入时,对集群压力很大。后来我调整了方案——热数据放 Doris,冷数据放 Hive,这才稳定下来。
1.4 Doris 在实时数仓中的定位
搞清楚了 Doris 是什么,我们再来看看它在整个实时数仓架构里,到底扮演什么角色。
一个典型的实时数仓架构,通常分为四层:
- 数据接入层:Kafka、Canal、Flume 等,负责实时采集
- 实时计算层:Flink、Spark Streaming,负责流式 ETL
- 实时存储层:Doris、ClickHouse,负责存储和查询
- 数据应用层:大屏、报表、API 接口
Doris 的位置,就在实时存储层。它既要承接 Flink 清洗后的实时数据,又要对外提供秒级查询服务。
下面这张图,是我自己项目里常用的架构,你可以参考:
你看,Doris 处在整个链路的中枢位置。它向下承接 Flink 的实时写入,向上支撑各种实时应用。我个人的经验是——Doris 的强项不在于"算",而在于"存"和"查"。复杂的业务逻辑交给 Flink,Doris 只做两件事:把数据存好,让查询变快。
总结一下:Doris 在实时数仓中的定位,就是一个高性能的实时 OLAP 引擎。它不抢 Flink 的活,也不替代 Hive 的冷存储。它只负责一件事——让实时数据"存得下、查得快"。
嗯,这一章的内容就到这里。你理解了 Doris 的定位和核心特性,后面我们搭建实时数仓的时候,就知道每一步该做什么了。