Doris实时数仓实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 Doris应用场景

我们从图1-19中可以大致了解Doris在整个大数据处理流程中的定位。上游各类数据如事务型数据库中的埋点数据、日志等,通过一些离线系统、消息系统等处理后,再导入Doris进行存储,而Doris可以直接对外提供在线报表、多维分析结果等查询和展示服务。同时,Doris也可以作为数据源,被Spark、Flink等系统访问,以实现联邦查询或多源数据处理。Doris本身的分布式查询框架也可以为一些外部系统如MySQL、ElasticSearch等提供SQL查询服务。

图1-19 Doris在大数据处理流程中的定位

Doris在企业大数据处理体系中有多种应用场景。

1.实时大屏

实时大屏一般通过简单直观的结果展示最关键的指标,汇总的数据量比较大,并且要求查询低时延。实时大屏最难的是数据高频写入和实时查询,而Doris对接Kafka和Flink,可以实现实时数据查询,完美满足海量数据秒级查询需求。例如,百度统计为网站站长提供流量分析、网站分析、受众分析等多种分析服务,服务网站数量超过450万,每天查询量达到1500万,QPS(Queries Per Second,每秒查询率)峰值超过1400,每日新增数据量超过2TB,数据导入频次为5min,平均查询时延30ms。

2.固定报表

一般的报表类数据分析的查询模式比较固定,而且后台执行的SQL语句往往都是确定的。针对此类应用场景,以前的方案是使用MySQL数据库存储结果数据,用户需要将数据仓库中的数据高度汇总并写入MySQL。而Doris可以基于明细数据或者轻度汇总数据直接进行查询,可以大大减轻数据开发压力。Doris固定报表查询的时延一般在秒级以下,并且Doris通过MySQL交互协议支持各种报表工具,可以极大地提高报表开发效率。同时,Doris对多表关联的支持,也可以满足基于星型模型或星座模型的多维报表查询需求。

以百度为例,百度广告的用户后台管理系统支持一系列统计分析,例如流量分析、来源分析、访问分析、转化分析、访客分析、优化分析等,不仅包括区间统计,还包括各类筛选、同/环比、趋势分析,如图1-20所示。

图1-20 Doris固定报表案例

3.自助分析

自助分析也叫多维分析,是指IT人员根据业务需求预先加工好维度数据和事实数据,供业务人员按照自由组合维度进行数据分析的一种新型数据分析方式。相较于传统的固定报表,自助分析使用更为灵活,支持任意粒度的组合查询数据,以便查找异常数据和分析变动原因。

针对自助分析需求,我们一般基于轻度汇总数据或者明细数据构建星座模型,Doris支持丰富的Join操作和高效的Join查询,非常适合用于多维分析中的多表关联场景。Doris基于行列混合存储数据,针对多维分析场景只需要读取部分列进行计算,可以极大地减少磁盘的I/O操作。Doris支持丰富的索引来对数据进行预过滤,减少参与计算的数据量,也可以带来查询性能的大幅提升。在自助分析场景中,Doris是目前最契合用户需求的数据库产品。图1-21是百度分析基于Doris提供的自助分析案例截图。

图1-21 Doris自助分析案例

4.用户画像

用户画像在精准用户推荐、对客营销、运营分析等方面有着非常重要的作用,已经成为互联网企业的标配。Doris支持Bitmap去重,在用户圈选方面有巨大优势,可以更优雅、快速地筛选用户。Doris在用户画像构建方面提供了非常丰富的函数,支持对非Bitmap表和Bitmap表做交集、并集、补集运算。

5.多源联邦查询

Doris支持无缝对接多种数据来源,包括JDBC、Hive、对象存储S3/OSS和数据湖Iceberg Hudi等。大型企业需要构建统一的查询入口,实现实时数据和离线数据的联邦分析,满足数据分析人员多元化的查询需求。Doris已经成为这方面的最优选择之一。

通过Multi-Catalog功能,Doris提供了快速接入外部数据源进行访问的能力。用户可以通过CREATE CATALOG命令连接到外部数据源,Doris会自动映射外部数据源的库、表信息。之后,用户可以像访问普通表一样,对这些外部数据源中的数据进行访问,避免了对每张表手动建立外表映射的复杂操作。

同时,结合自身的高性能执行引擎和查询优化器,Doris实现了在数据湖上极速、易用的分析体验,较Presto、Trino有3~5倍的性能提升。

6.实时数据仓库

将Doris作为实时数据仓库的底座,是目前最常见的应用场景。业界主要利用Canal解析MySQL的binlog日志,利用Flume采集Web日志,最终写入Kafka并进行削峰填谷,提供稳定的流数据。Kafka数据可以直接通过Routine Load进入Doris,也可以经由Flink加工处理后写入Doris,然后通过视图或者物化视图进行数据处理,由前端应用直接查询实时数据。

这种方案的数据链路短、实时性更高,同时开发和运维成本低。

7.流批一体数据仓库

Doris不仅支持秒级查询,对库内ETL场景的支持也非常好。不少企业直接基于Doris构建企业级离线数据仓库。例如特步基于Doris打造了流批一体的数据仓库,既配有零售模型,又配有库存模型。系统架构如图1-22所示。

图1-22 特步基于Doris的流批一体数据仓库系统架构

Doris在架构中的工作任务如下。

❑基于DataX的全量或者增量数据加载入库;

❑基于Kafka的实时流式数据加载入库;

❑基于视图的数据增量和全量加工;

❑基于DELETE、INSERT INTO语句的批处理、微批处理;

❑针对不同业务场景实现差异化的实时性要求。

这样做的好处是:

❑开发简单,运维简单;

❑一套代码实现全量和增量逻辑,简化工作流;

❑在确保数据准确性的前提下满足数据实时性要求;

❑避免了数据跨库移动和多份存储,节省了硬件开销。