数据分片
Doris 表按两层结构进行数据划分,分别是分区和分桶。示意如下:
每个分桶文件
就是一个数据分片(Tablet
),Tablet
是数据划分的最小逻辑单元。每个 Tablet
包含若干数据行。各个 Tablet
之间的数据没有交集,并且在物理上是独立存储的。
一个 Tablet
只属于一个 Partition
,相应的多个 Tablet
在逻辑上归属于不同的分区(Partition
)。而一个 Partition
包含若干个 Tablet
。因为 Tablet
在物理上是独立存储的,所以可以视为 Partition
在物理上也是独立。Tablet
是数据移动、复制等操作的最小物理存储单元。
副本
为了提高保存数据的可靠性和计算时的性能,Doris 对每个表复制多份进行存储。数据的每份复制就叫做一个副本。Doris 按 Tablet 为基本单元对数据进行副本存储,默认一个分片有3个副本。建表时可在 PROPERTIES 中设置副本的数量:
PROPERTIES
(
"replication_num" = "3"
);
下图示例,有两个表分别导入 Doris,表1 导入后按3副本存储,表2 导入后按2副本存储。
关于副本
每个分片的副本数量默认为3,建议保持默认即可。在建表语句中,所有 Partition 中的 Tablet 副本数量统一指定。而在增加新分区时,可以单独指定新分区中分片的副本数量。
最大副本数量取决于集群中部署 BE 服务的独立 IP 的数量(注意不是 BE 数量)。Doris 中副本分布的原则是:不允许同一个 Tablet
的副本分布在同一台物理机上,而识别物理机即通过 IP。所以,即使在同一台物理机上部署了 3 个或更多。
- BE 实例,如果这些 BE 的 IP 相同,则依然只能设置副本数为 1。
- 副本数量可以在运行时修改。
- 副本数量强烈建议保持为奇数