Clickhouse从入门到入坑(15)

298 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 16 天,点击查看活动详情

生命不息,学习不止

题外话

周五了,昨天的中证上午坐飞机直接上天,下午直接从天上掉到东非大裂谷里面,直接没爬出来,我们在地下看着其他指数满天飞,中证加点油

废话不多说,上货

在这里插入图片描述

表引擎

继续表引擎的介绍

  • GraphiteMergeTree

今天来演示一下GraphiteMergeTree的工作原理

当使用 GraphiteMergeTree 表引擎时,数据会被组织成一棵树状结构,如下所示

root
├── 2020
│   ├── 01
│   │   ├── 01
│   │   │   ├── 00
│   │   │   │   ├── data_block_1
│   │   │   │   └── data_block_2
│   │   │   ├── 01
│   │   │   │   ├── data_block_3
│   │   │   │   └── data_block_4
│   │   │   └── ...
│   │   ├── 02
│   │   └── ...
│   ├── 02
│   └── ...
├── 2021
└── ...

树的根节点是一个虚拟的节点,表示整个数据集。每个节点都代表一段时间范围的数据,节点包含时间戳和值两个属性。在这个例子中,节点的时间戳表示对应的时间段,如年份、月份、日等。

在每个节点下面会有若干个数据块,每个数据块包含一段时间范围内的原始数据或已经合并过的数据。在每个数据块中,数据按照时间戳进行排序,并且可以按照不同的粒度进行聚合,以便于查询时的高效定位。

当数据块的数量达到一定阈值时,GraphiteMergeTree 表引擎会对相邻的数据块进行合并,生成新的数据块,从而减少数据块的数量和大小。同时,可以设置数据保留策略,自动删除过期的数据,保证数据的时效性。

在查询数据时,GraphiteMergeTree 表引擎会使用树状结构来快速定位需要的数据块。例如,如果查询某个时间范围内的数据,就可以在树状结构中找到相应的节点,然后按照时间戳的顺序查找相应的数据块,最终返回查询结果。

上面的图不好理解也可以参考下面这个

                                  root
                                    |
         _______________________________________________________
        |          |          |        |          |          |
     2020       2021       2022    2023       2024       2025
        |          |          |        |          |          |
   __________  __________  ________  ________  ________  ________
  |          ||          ||        ||        ||        ||        |
 01         02 03         04  ...    11        12        01
  |          |  |          |          |         |        |
_______  _______  _______  _______  _______  _______  _______
|     |  |     |  |     |  |     |  |     |  |     |  |     |
00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00
|     |  |     |  |     |  |     |  |     |  |     |  |     |
data data data data data data data data data data data data data data ...

你以为结束了

下一篇我们继续挖坑

在这里插入图片描述

大家看完发现有什么错误,写在下面吧!跟我黑虎阿福比划比划! 在这里插入图片描述