文章目录

  • 数据分片
  • 副本
  • 关于副本


数据分片

Doris 表按两层结构进行数据划分,分别是分区和分桶。示意如下:

DORIS数据库 Access denied for user Doris数据库分页_olap


每个分桶文件就是一个数据分片(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副本存储。

DORIS数据库 Access denied for user Doris数据库分页_数据库_02

关于副本

  • 每个分片的副本数量默认为3,建议保持默认即可。在建表语句中,所有 Partition 中的 Tablet 副本数量统一指定。而在增加新分区时,可以单独指定新分区中分片的副本数量。
  • 最大副本数量取决于集群中部署BE服务的独立 IP 的数量(注意不是 BE 数量)。Doris 中副本分布的原则是:不允许同一个 Tablet 的副本分布在同一台物理机上,而识别物理机即通过 IP。所以,即使在同一台物理机上部署了 3 个或更多 BE 实例,如果这些 BE 的 IP 相同,则依然只能设置副本数为 1。
  • 副本数量可以在运行时修改。
  • 副本数量强烈建议保持为奇数