1.Doris 概述
Apache Doris由百度大数据部研发(之前叫百度 Palo,2018年贡献到 Apache 社区后,更名为 Doris),在百度内部,有超过200个产品线在使用,部署机器超过1000台,单一业务最大可达到上百 TB。
Apache Doris是一个现代化的MPP (Massively Parallel Processing,即大规模并行处理)分析型数据库产品。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。Apache Doris的分布式架构非常简洁,易于运维,并且可以支持10PB以上的超大数据集。
Apache Doris可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等。
2.Doris数据表设计
2.1基本概念
在Doris中,数据都以关系表(Table)的形式进行逻辑上的描述。
2.2Row & Column
一张表包括行(Row)和列(Column):Row,即用户的一行数据;Column,用于描述一行数据中不同的字段。
Column 可以分为两大类:Key 和 Value。从业务角度看,Key 和 Value 可以分别对应维度列和指标列。
2.3Tablet & Partition
在Doris的存储引擎中,用户数据首先被划分成若干个分区(Partition),划分的规则通常是按照用户指定的分区列进行范围划分,比如按时间划分。而在每个分区内,数据被进一步的按照Hash的方式分桶,分桶的规则是要找用户指定的分桶列的值进行Hash后分桶。每个分桶就是一个数据分片(Tablet),也是数据划分的最小逻辑单元。
Tablet之间的数据是没有交集的,独立存储的。Tablet也是数据移动、复制等操作的最小物理存储单元。
Partition可以视为是逻辑上最小的管理单元。数据的导入与删除,都可以或仅能针对一个 Partition 进行。
2.4字段类型
TINYINT |
1字节 |
范围:-2^7 + 1 ~ 2^7 - 1 |
SMALLINT |
2字节 |
范围:-2^15 + 1 ~ 2^15 - 1 |
INT |
4字节 |
范围:-2^31 + 1 ~ 2^31 - 1 |
BIGINT |
8字节 |
范围:-2^63 + 1 ~ 2^63 - 1 |
LARGEINT |
16字节 |
范围:-2^127 + 1 ~ 2^127 - 1 |
FLOAT |
4字节 |
支持科学计数法 |
DOUBLE |
12字节 |
支持科学计数法 |
DECIMAL[(precision, scale)] |
16字节 |
保证精度的小数类型。默认是 DECIMAL(10, 0) precision: 1 ~ 27 scale: 0 ~ 9 其中整数部分为 1 ~ 18 不支持科学计数法 |
DATE |
3字节 |
范围:0000-01-01 ~ 9999-12-31 |
DATETIME |
8字节 |
范围:0000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
CHAR[(length)] |
定长字符串。长度范围:1 ~ 255。默认为1 |
|
VARCHAR[(length)] |
变长字符串。长度范围:1 ~ 65533 |
|
BOOLEAN |
与TINYINT一样,0代表false,1代表true |
|
HLL |
1~16385个字节 |
hll列类型,不需要指定长度和默认值、长度根据数据的聚合 程度系统内控制,并且HLL列只能通过配套的hll_union_agg、Hll_cardinality、hll_hash进行查询或使用 |
BITMAP |
bitmap列类型,不需要指定长度和默认值。表示整型的集合,元素最大支持到2^64 - 1 |
|
STRING |
变长字符串,0.15版本支持,最大支持2147483643 字节(2GB-4),长度还受be 配置`string_type_soft_limit`, 实际能存储的最大长度取两者最小值。只能用在value 列,不能用在 key 列和分区、分桶列 |
2.5数据模型
Doris 的数据模型主要分为3类
- Aggregate
- Unique
- Duplicate