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 是什么,我们再来看看它在整个实时数仓架构里,到底扮演什么角色。

一个典型的实时数仓架构,通常分为四层:

  1. 数据接入层:Kafka、Canal、Flume 等,负责实时采集
  2. 实时计算层:Flink、Spark Streaming,负责流式 ETL
  3. 实时存储层:Doris、ClickHouse,负责存储和查询
  4. 数据应用层:大屏、报表、API 接口

Doris 的位置,就在实时存储层。它既要承接 Flink 清洗后的实时数据,又要对外提供秒级查询服务。

下面这张图,是我自己项目里常用的架构,你可以参考:

Doris 实时数仓架构定位图 数据源层 业务数据库(MySQL/PostgreSQL) | 日志文件 | 埋点数据 数据采集层 Canal(Binlog) | Kafka | Flume 实时计算层 Flink(流式 ETL、维表关联、窗口聚合) 实时存储层(Doris) 明细表 | 聚合表 | 物化视图 | 实时查询 数据应用层 实时大屏 | 自助分析 | 数据 API | 告警服务 Doris 核心定位 实时写入 + 秒级查询

你看,Doris 处在整个链路的中枢位置。它向下承接 Flink 的实时写入,向上支撑各种实时应用。我个人的经验是——Doris 的强项不在于"算",而在于"存"和"查"。复杂的业务逻辑交给 Flink,Doris 只做两件事:把数据存好,让查询变快。

总结一下:Doris 在实时数仓中的定位,就是一个高性能的实时 OLAP 引擎。它不抢 Flink 的活,也不替代 Hive 的冷存储。它只负责一件事——让实时数据"存得下、查得快"。

嗯,这一章的内容就到这里。你理解了 Doris 的定位和核心特性,后面我们搭建实时数仓的时候,就知道每一步该做什么了。