doris仓库核心知识点
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 数据仓库并解决实际业务问题。
更多推荐
所有评论(0)