T-SqlBig Data架构

Apache Doris——数据分布

2023-01-03  本文已影响0人  小波同学

在 Doris 中,数据都以表(Table)的形式进行逻辑上的描述。

名词解释

数据分布概览

常见的四种数据分布方式有:(a) Round-Robin、(b) Range、(c) List和(d) Hash (DeWitt and Gray, 1992)。如下图所示:


其中:

为了更灵活地划分数据,现代分布式数据库除了单独采用上述四种数据分布方式之外,也会视情况采用组合数据分布。常见的组合方式有Hash-Hash、Range-Hash、Hash-List。

分区(Partition)与分桶(Bucket)

在 Doris 的存储引擎规则:

DorisDB数据分布

DorisDB使用先分区后分桶的方式,可灵活地支持支持二种分布方式:

DorisDB中Range分布,被称之为分区,用于分布的列也被称之为分区列,上图中的event_day就是分区列。Hash分布,则被称之为分桶,用于分布的列也被称之为分桶列,如上图中分桶列都是site_id。

Range分区可动态添加和删减,上图中如果新来了隶属于新月份的数据,就可以添加新分区。Hash分桶一旦确定,分桶数也就随之固定,不能再进行调整。

分区列如何选择

分区的主要作用是将整个分区作为管理单位, 选择存储策略, 比如副本数, 冷热策略和存储介质等等。

分桶列如何选择

DorisDB采用Hash算法作为分桶算法:

上图中,site_access采用site_id作为分桶键, 这里选用site_id字段作为分桶键的原因在于,针对site_access表的查询请求,基本上都以站点作为查询过滤条件。采用site_id作为分桶键,可以在查询时裁剪掉大量无关分桶。

如下图中的查询,可以裁剪掉10个bucket中的9个,只需要扫描site_access表的1/10的数据。


但是存在这样一种情况,假设site_id分布十分不均匀,大量的访问数据是关于少数网站的(幂律分布, 二八规则)。如果用户依然采用上述分桶方式,数据分布会出现严重的数据倾斜, 导致系统局部的性能瓶颈。这个时候,用户需要适当调整分桶的字段,以将数据打散,避免性能问题。如下图5中,可以采用site_id、city_code组合作为分桶键,将数据划分得更加均匀。


上面两种模式的选取是建表过程中经常需要面对的问题,采用site_id的分桶方式对于短查询十分有利,能够减少节点之间的数据交换,提供集群整体性能;采用site_id、city_code组合做分桶键的模式对于长查询有利,能够利用分布式集群的整体并发性能,提高吞吐。用户在实际使用中,可以依据自身的业务特点进行相应模式的选择。

分桶数如何确定

在DorisDB系统中,分桶是实际物理文件组织的单元。数据在写入磁盘后,就会涉及磁盘文件的管理。一般而言,我们不建议分桶数据过大或过小,尽量适中会比较妥当。

最佳实践

对于DorisDB而言,分区和分桶的选择是非常关键的。在建表时选择好的分区分桶列,可以有效提高集群整体性能。当然,在使用过程中,也需考虑业务情况,根据业务情况进行调整。以下是针对特殊应用场景下,对分区和分桶选择的一些建议:

动态分区管理

在很多实际应用场景中,数据的时效性很重要,需要为新达到数据创建新分区, 删除过期. DorisDB的动态分区机制可以实现分区rollover: 对分区实现进行生命周期管理(TTL),自动增删分区,减少用户的使用心智负担。

创建支持动态分区的表


图中建表语句中通过指定PEROPERTIES来完成动态分区策略的配置。配置项可以描述如下:

上图中创建了一张表,并同步开启动态分区特性。图中分区的区间为当前时间的前后3天,总共6天。假设当前时间为2020-03-25为例,在每次调度时,会删除分区上界小于 2020-03-22 的分区,同时在调度时会创建今后3天的分区。调度完成之后,新的分区会是下列列表


调度的时机依赖于FE的配置,FE的常驻线程会根据 dynamic_partition_enable 和 dynamic_partition_check_interval_seconds 两个参数来控制。每次调度时,读取动态分区表的属性,以此判断是否增加/删除分区。

语法:

SHOW PARTITIONS FROM site_access;
ALTER TABLE site_access SET("dynamic_partition.enable"="false");

注意:依照相同语句,也可以相应的修改其他属性。

批量创建和修改分区

该功能在1.16版本中添加

当分区键为整数类型时直接使用数字进行分区,注意分区值需要使用引号引用,而EVERY则不用引号,如下


小结:

参考:
https://www.cnblogs.com/tgzhu/p/14751013.html

http://t.zoukankan.com/tgzhu-p-14751013.html

上一篇 下一篇

猜你喜欢

热点阅读