Doris数据库-常用功能
我们来详细梳理一下 Apache Doris 的常用功能。这些功能可以大致分为三类:数据导入、数据查询与分析、数据管理。
一、 数据导入功能
这是使用 Doris 的第一步,也是其核心优势之一。Doris 提供了多种灵活、高效的实时和批量数据导入方式。
功能名称 | 方式 | 主要用途 | 特点 |
---|---|---|---|
Broker Load | 批量 | 从 HDFS、S3 等外部存储系统导入大量数据(如 TB 级)。 | 异步执行,适合大规模数据迁移和批量 ETL。 |
Routine Load | 实时流式 | 持续消费 Kafka 中的消息并导入到 Doris。 | 最常用的实时导入方式,自动管理消费位点,保证 Exactly-Once 语义。 |
Stream Load | HTTP 协议推送 | 通过 HTTP 流方式批量导入数据。常用于导入本地文件或程序生成的数据流。 | 同步返回结果,非常灵活。Flink、Spark 等框架常通过此方式写入 Doris。也常用 |
Insert Into | SQL | 使用标准的 | 适合小批量、低频次的导入,或用于在 Doris 内部表之间进行数据转换和搬运。 |
S3 Load | 批量 | 直接从 Amazon S3 或兼容 S3 协议的对象存储导入数据。 | 类似于 Broker Load,但专为云原生环境优化。 |
Spark Load | 批量(ETL) | 通过外部 Spark 资源对导入前的数据进行预处理(如转换、聚合)。 | 适合在导入阶段需要复杂 ETL 操作的场景。 |
Multi-Load | 批量 | 一次性批量导入多个数据文件到一个表。 | 已逐渐被功能更强的 Broker Load 等替代。 |
小结: 最常用的是 Routine Load(用于 Kafka 实时流)和 Stream Load(用于通用程序写入和测试)。
二、 数据查询与分析功能
这是 Doris 作为分析型数据库的核心。
功能类别 | 功能点 | 说明 |
---|---|---|
标准 SQL 支持 | ANSI SQL, MySQL 协议 | 支持绝大多数标准 SQL 语法(SELECT, JOIN, WHERE, GROUP BY, ORDER BY 等),兼容 MySQL 协议,用户几乎无学习成本。 |
复杂查询 | 多表关联(JOIN) | 支持各种类型的 JOIN(INNER, LEFT/RIGHT OUTER, SEMI 等),优化器能自动选择最优的 Join 顺序和执行方式。 |
聚合分析 | 高性能聚合 | 对 |
窗口函数 | 窗口函数 | 完整支持标准窗口函数(如 |
物化视图 | 物化视图(Rollup) | 核心特性! 可以预先定义好不同维度的聚合表。查询时,优化器会自动路由到已预聚合的物化视图,极大提升查询性能。例如,从亿级明细数据中快速求和。 |
表函数 | Table Function | 支持将数组、JSON 等复杂结构展开成表进行连接查询,非常实用。 |
外部表 | Elasticsearch外表 | 可以直接将 ES 索引映射为 Doris 中的一张只读表,无需导入数据即可用 SQL 高效查询和分析 ES 中的数据。 |
MySQL外表 / Hive外表 | 类似 ES 外表,可以直接查询并 JOIN 外部数据源(如 MySQL, Hive, Iceberg 等),实现数据湖分析。 |
三、 数据模型与表管理功能
这部分决定了数据在 Doris 中如何存储和组织,直接影响查询性能。
功能名称 | 说明 | 适用场景 |
---|---|---|
数据模型 | Duplicate Key 模型 | 纯粹的明细模型,所有列都是排序键。适合存储无需聚合的原始日志、行为流水数据。 |
Aggregate Key 模型 | 定义维度和指标列,导入时相同维度的数据会自动聚合。适合需要预聚合的报表场景。 | |
Unique Key 模型 | 针对需要实时更新的场景,可以定义主键,新数据会覆盖旧数据。类似 MySQL 的 OLTP 表,实现“读时更新”。 | |
Primary Key 模型 | 在 Unique 模型上进一步优化,采用 delete+insert 的更新方式,性能更好,是官方推荐的主键模型。 | |
分区与分桶 | 分区(Partitioning) | 按时间(如天)对数据分区,便于数据生命周期管理(滚动删除),并能利用分区剪枝提升查询速度。 |
分桶(Bucketing) | 在分区内,将数据划分为更小的桶(Tablet),是数据并行处理的最小单元。合理的分桶能极大优化查询和 Join 性能。 | |
数据生命周期 | 动态分区 | 可以自动管理分区,例如自动创建新分区(如明天的分区)和删除旧分区,无需人工干预。 |
数据过期删除 | 可以方便地通过 |
四、 其他重要功能
功能名称 | 说明 |
---|---|
Bitmap 索引 | 对于低基数的列(如性别、状态),可以创建 Bitmap 索引,极大加速等值查询和计数。 |
Colocation | 将相关表的分桶数据存储在相同的 BE 节点上,使 Join 计算本地化,减少网络传输,显著提升 Join 性能。 |
Backup & Restore | 提供将数据和元数据快照备份到对象存储(如 S3/HDFS)以及恢复的能力,保证数据安全。 |
资源隔离 | 支持设置资源组,对不同查询进行资源(CPU、内存)隔离,避免慢查询影响高优先级任务。 |
审计与权限 | 支持基于角色的权限管理(RBAC),可以记录查询审计日志,满足企业级安全需求。 |
总结
Doris 的常用功能覆盖了现代数据栈的完整链路:
数据接入: 通过丰富的导入方式,轻松实现实时和批量数据入仓。
数据存储与管理: 通过灵活的数据模型和分区分桶策略,高效组织数据。
数据分析与查询: 凭借强大的 MPP 引擎和优化器,以及对标准 SQL 的完善支持,提供极速的查询体验。
性能加速: 通过物化视图、索引、Colocation 等高级功能,应对各种复杂和高并发的分析场景。
这些功能的组合使得 Doris 成为一个功能全面、性能强大且易于使用的实时分析数据库。