
# 实时OLAP场景介绍
传统数据集市场景实时数据和离线数据分离，集市层指标通过预聚合进行定制化开发，时效性低，复杂性高，灵活性差。
基于Doris的实时OLAP场景离线和实时数据归一，无需离线预加工，基于海量明细数据直接进行多维秒级聚合/关联查询分析，具备实时、高效、灵活的特点。
Doris全面综合的性能表现也能在轻量化大数据场景中独立承担数据从加工到查询的全链路数据处理需求。
#### 实时OLAP场景介绍
实时OLAP场景化方案如[图1]所示。
图1实时OLAP场景   
![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002412213433.png "点击放大")
- 数据源：业务系统产生的数据，可以是离线的文件数据，关系型数据库数据，或者实时采集的流式数据等。
- 大数据平台：实时OLAP的核心数据处理平台，包含离线数据加工、实时数据加工、实时OLAP等模块。
  - 实时消息管道：用于接收实时流式数据，作为实时数据接入的统一管道。
  
  - 实时流处理引擎：从Kafka实时读取数据并进行复杂的实时计算，将结果送到下游，可以实现毫秒级的实时流式处理。
  
  - 离线数据湖：针对业务系统的离线数据进行统一归集和处理，进行贴源数据加工。
  
  - OLAP实时分析：Doris是实时OLAP场景的核心组件，用于实时OLAP集市数据存储和查询，提供大数据量的高效关联/聚合分析能力。
  
  - 数据服务：提供数据服务API开发和开放能力，将数据集市的查询定义为数据服务接口，对上层应用提供接口化的数据服务能力，数据服务能力由DataArts Studio的DLM组件提供。
  
  - JDBC直连：Doris提供标准的JDBC接口，在BI工具对接等场景中，也可以直接使用JDBC接口连接Doris进行数据查询。
  
  - 离线数据集成：离线数据集成可以从数据湖中集成离线数据，或者直接集成本地文件到Doris中。离线数据湖中的数据可以通过CDM或者加载外表的方式进行数据集成，本地文件则通过Doris自带的StreamLoad工具进行本地文件加载。
   
 
#### 离线数据加载
离线数据可以从数据湖加载，也可以直接加载本地文件。从数据湖加载可以使用工具CDM，在没有CDM工具时，可以直接使用外表加载、BrokerLoad的方式。
本地文件加载则使用Doris自带的StreamLoad工具。
图2离线数据加载   
![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002412100065.png "点击放大")
- 场景特点： 业务特点为离线数据，端到端时延无要求，仅对数据集市中的数据查询时延有要求，如离线报表场景、实时报表的数据初始化场景。
  
- 数据加载方式：
  - 在存在DataArts Studio工具的场景下，数据加载统一使用CDM进行（DataArts Studio需要2.10及以上版本）。
  
  - 在不存在DataArts Studio工具的场景下，可以使用Spark或者外表方式加载。由数据加工方进行数据推送加载时，推荐使用BrokerLoad加载方式，方便数据加工方统一调度；如果有数据应用方负责数据加载，则使用外表方式进行数据加载较为方便应用层另外配置加载数据。
  
  - 在没有数据湖的场景下，轻量化数仓场景中，数据直接由源端文件加载到Doris中，可以使用Streamload方式加载本地文件。
   
- 注意事项： Hive外表通过整体添加Hive的MetaStore的方式，将全量元数据在Doris中呈现。
  
 
#### 实时数据加载
对实时性要求较高的场景，可直接将实时流式数据通过FlinkSQL传入Doris中，在Doris中进行实时查询。
如果数据在加载到Doris之前需要处理，可直接在FlinkSQL中进行数据加工，将加工后的数据实时写入Doris中。
图3实时数据加载   
![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002378760170.png "点击放大")
- 场景特点：
  - 业务特点为实时流式数据，需要针对实时流式数据进行快速的统计查询。
  
  - 前端业务库系统实时同步到后端分析系统，在后端分析系统进行实时OLAP分析。
   
- 数据加载方式：
  - 前端数据统一接入Kafka中，Kafka作为实时数据加工的唯一数据源。
  
  - 针对仅追加的数据，按正常的数据插入逻辑，进行数据插入。
  
  - 针对实时数据同步方式，数据格式指定为Debezium方式，利用Flink的数据同步能力将数据同步到Flink。
   
- 注意事项：
  - 实时流式数据写入Doris时，需要使用微批模式，一批数据写入一次，提高写入效率。
  
  - 使用DataArts Studio DLF进行流任务调度开发时，需要使用2.10.1及以上的版本。
   
 
#### 实时OLAP数据查询
Doris支持海量数据的亚秒级查询，支持单表数据的聚合查询和多表关联查询。
Doris不同的表引擎，适合不同的业务场景，可以根据业务特点选择不同的表格式。
图4实时OLAP数据查询   
![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002378930378.png "点击放大")
- 表模型选择：
  - Aggregate模型可以通过预聚合，极大地降低聚合查询时所需扫描的数据量和查询的计算量，适合有固定模式的报表类查询场景，但是该模型不适用于count(\*)查询。同时因为固定了Value列上的聚合方式，在进行其他类型的聚合查询时，需要考虑语意正确性。
  
  - Unique模型针对需要唯一主键约束的场景，可以保证主键唯一性约束。但是无法利用ROLLUP等预聚合带来的查询优势。适合数据有大量更新的场景。对于聚合查询有较高性能需求的用户，推荐使用写时合并实现。
  
  - Duplicate适合任意维度的Ad-hoc查询。虽然无法利用预聚合的特性，但是不受聚合模型的约束，可以发挥列存模型的优势。适合不要求数据更新的通用查询场景。
   
- 查询模式：
  - 单表检索查询，按索引进行单表检索查询，可进行高并发，低延迟的数据查询访问。
  
  - 单表聚合查询，不同维度进行聚合查询，可提供低延迟的数据聚合查询能力。
  
  - 多表关联查询，通常用于事实表和维度表的多表关联查询场景。
   
 
