Doris 仓库核心知识点

Doris(原 Apache Doris)是一个基于 MPP(大规模并行处理)架构的高性能、实分析型数据仓库,适用于实时数据分析、报表生成和在线分析处理(OLAP)场景。以下是其核心知识点:


架构设计

FE(Frontend)
负责元数据管理、查询解析与调度、集群管理。FE 分为 Leader 和 Follower 节点,通过 Berkeley DB Java Edition(BDB-JE)实现元数据高可用。
BE(Backend)
负责数据存储与计算,采用列式存储(Columnar Storage)和向量化执行引擎(Vectorized Execution),支持水平扩展。


数据模型

聚合模型(Aggregate Key)
适合预聚合场景,如 SUM、COUNT 等。建表时指定聚合键(AGGREGATE KEY),查询时自动合并相同键的数据。
唯一键模型(Unique Key)
支持主键唯一性约束,适用于数据更新(如订单状态变更)。通过 Merge-on-Read 实现高效更新。
明细模型(Duplicate Key)
存储原始数据,无聚合或主键约束,适合日志类数据分析。


分区与分桶

分区(Partition)
按时间或业务维度划分数据(如按天分区),加速查询并简化数据管理。支持动态分区(Dynamic Partition)。
分桶(Bucket)
通过哈希分桶实现数据水平切分,提升并行查询能力。分桶数建议为 BE 节点数的整数倍。


查询优化

物化视图(Materialized View)
预计算常用查询结果,显著加速聚合查询。支持自动路由查询到最优物化视图。
CBO(Cost-Based Optimizer)
基于统计信息的代价优化器,自动选择最优执行计划。需定期执行 ANALYZE TABLE 收集统计信息。
向量化引擎
利用 SIMD 指令并行处理数据,减少函数调用开销,提升扫描和聚合性能。


数据导入

Stream Load
HTTP 协议导入,适合实时小批量数据。
Broker Load
通过 Broker 访问 HDFS 或 S3,支持大批量离线导入。
Routine Load
持续消费 Kafka 消息,实现实时数据接入。
Insert Into
标准 SQL 语法插入数据,适合低频小数据量场景。


高可用与扩展

FE 高可用
依赖 BDB-JE 的多数派选举,建议部署 3 个 Follower(含 1 个 Leader)。
BE 扩展
动态增加 BE 节点后,系统自动均衡数据。可通过 ALTER SYSTEM ADD BACKEND 添加节点。
故障恢复
BE 宕机时,副本自动修复;FE 宕机时,Follower 自动选举新 Leader。


典型应用场景

  • 实时数仓:结合 Kafka 和 Routine Load 实现实时数据接入与分析。
  • 交互式报表:亚秒级响应复杂查询,支持高并发。
  • 日志分析:明细模型存储原始日志,快速检索与聚合。
  • 联邦查询:通过 External Table 查询 Hive、MySQL 等外部数据源。

性能调优

  • 资源配置:增大 query_mem_limit 和 parallel_fragment_exec_instance_num 提升并行度。
  • 索引优化:合理使用 Bloom Filter 索引加速等值查询,Short Key 索引优化前缀过滤。
  • 冷热分离:通过 Storage Policy 将冷数据存储到成本更低的介质(如 S3)。

通过理解这些核心知识点,可以高效设计 Doris 数据仓库并解决实际业务问题。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐