Doris 是一款高性能的分布式分析型数据库,支持海量数据的快速查询和分析。它的存储和查询能力由表引擎决定,Doris 提供了以下三种表引擎:
1. Duplicate Key (重复键表)
- 特点:
- 按照用户定义的主键进行数据存储,但不对键进行去重,即允许多条记录具有相同的主键。
- 数据以原始形式存储,没有聚合或更新操作。
- 适用场景:
- 数据不需要聚合,也不需要去重,比如日志类数据(如用户行为日志、事件跟踪日志)。
- 写入性能高,因为数据不需要合并或去重。
- 优缺点:
- 优点:简单直接,适合高吞吐写入。
- 缺点:存储冗余大,查询时需要更多的过滤操作。
2. Aggregate Key (聚合键表)
- 特点:
- 基于用户定义的主键对数据进行聚合存储。
- 在数据写入时,对具有相同主键的数据按照指定的聚合函数(如 SUM、MIN、MAX 等)进行聚合处理。
- 适用场景:
- 聚合类分析场景,比如统计总和、平均值等。
- 适合不频繁更新的场景,因为数据写入后直接被聚合,原始数据不可恢复。
- 优缺点:
- 优点:存储空间占用少,查询性能高。
- 缺点:实时性差,不适用于需要原始数据的场景。
3. Unique Key (唯一键表)
- 特点:
- 基于主键的唯一性存储,如果插入具有相同主键的新数据,旧数据会被替换。
- 支持更新操作,相当于主键唯一约束的表。
- 适用场景:
- 需要保持数据最新状态的场景,比如用户最新信息、物品库存等。
- 在一定程度上可以支持更新和删除操作。
- 优缺点:
- 优点:能保持数据的最新性,支持一定的更新逻辑。
- 缺点:写入性能比 Duplicate Key 低,更新需要额外的处理。
三者区别总结
表引擎 | 存储特点 | 支持场景 | 聚合方式 | 是否支持更新 |
---|---|---|---|---|
Duplicate Key | 数据原始存储,不去重 | 日志、明细数据 | 无聚合 | 否 |
Aggregate Key | 数据按聚合函数存储,减少存储空间 | 统计、报表分析类数据 | 写入时聚合 | 否 |
Unique Key | 主键唯一存储,允许更新,旧数据被新数据替换 | 状态性数据(如用户状态) | 无聚合 | 是 |
选择依据
- Duplicate Key:如果数据是日志型、不需要去重或更新,可以使用。
- Aggregate Key:如果需要聚合计算并且只关心结果,适合使用。
- Unique Key:如果需要频繁更新,确保数据唯一性,适合使用。