MergeTree
MergeTree作为家族最基础的表引擎,提供了数据分区、一级索引和二级索引等功能。对于基础原理,在上一篇文章中已经介绍过了。本节进一步介绍MergeTree家族独有的另外两项能力----数据TTL与存储侧罗
TTL
MergeTree中可以设置整个列字段或者整张表的TTL.如果到达ttl会将对应列/表删除。
ttl的运行原理:如果一张MergeTree表设置了TTL表达式,那么在写入数据时,会以数据分区为单位,在每个分区目录内生成一个名为ttl.txt文件,里面存储ttl相关信息。columns用于保存列级别的ttl信息,tables用于保存表级别的ttl信息。min和max分别表示ttl制定日期字段的最小值、最大值与interval表达式计算后的时间戳。
多路径的存储策略
19.15版本开始,MergeTree实现了自定义存储策略的功能,支持以数据分区为最小移动单元,将分区目录写入多块磁盘目录。
3类存储策略:
- 默认策略:MergeTree原本的存储策略,无须任何配置,所有分区会自动保存到config.xml配置的path目录下
- JBOD策略:JUST A BUNCH OF DISKS。适合服务器挂栽了多块磁盘,但没有做raid场景。每一次执行insert或者merge时候,所产生的新分区会轮询写入各个磁盘。这种策略的效果类似RAID 0。可以降低单块磁盘的负载。单磁盘故障会丢失部分数据
- HOT/COLD策略:适合服务器挂栽了不同类似磁盘的场景。将存储磁盘分为HOT与COLD两类区域。写入hot,数据累积到阈值时候,自行移动到cold区域。每个区域内部可以用JBOD策略。</