GraphiteMergeTree该引擎用来对Graphite数据(图数据)进行瘦身及汇总。对于想使用ClickHouse来存储Graphite数据的开发者来说可能有用。
如果不需要对Graphite数据做汇总,那么可以使用任意的ClickHouse表引擎;但若需要,那就采用GraphiteMergeTree引擎。它能减少存储空间,同时能提高Graphite数据的查询效率。
该引擎继承自MergeTree.
创建表
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster] ( Path String, Time DateTime, Value <Numeric_type>, Version <Numeric_type> ... ) ENGINE = GraphiteMergeTree(config_section) [PARTITION BY expr] [ORDER BY expr] [SAMPLE BY expr] [SETTINGS name=value, ...]
含有Graphite数据集的表应该包含以下的数据列:
- 指标名称(Graphite sensor),数据类型:String
- 指标的时间度量,数据类型:DateTime
- 指标的值,数据类型:任意数值类型
- 指标的版本号,数据类型:任意数值类型
ClickHouse以最大的版本号保存行记录,若版本号相同,保留最后写入的数据。
以上列必须设置在汇总参数配置中。
GraphiteMergeTree参数
- config_section - 配置文件中标识汇总规则的节点名称
建表语句
在创建GraphiteMergeTree表时,需要采用和clauses相同的语句,就像创建MergeTree一样。
汇总配置的参数
汇总的配置参数由服务器配置的graphite_rollup参数定义。参数名称可以是任意的。允许为多个不同表创建多组配置并使用。
汇总配置的结构如下: 所需的列模式Patterns
所需的列
- path_column_name — 保存指标名称的列名 (Graphite sensor). 默认值: Path.
- time_column_name — 保存指标时间度量的列名. Default value: Time.
- value_column_name — The name of the column storing the value of the metric at the time set * in time_column_name.默认值: Value.
- version_column_name - 保存指标的版本号列. 默认值: Timestamp.
模式Patterns
patterns 的结构:
pattern regexp function pattern regexp age + precision ... pattern regexp function age + precision ... pattern ... default function age + precision ...
!!! 注意 "Attention" 模式必须严格按顺序配置:
- 不含'function' or 'retention'的Patterns
- 同时含有'function' and 'retention'的Patterns
- 'default'的Patterns.
ClickHouse在处理行记录时,会检查pattern节点的规则。每个pattern(含default)节点可以包含function用于聚合操作,或retention参数,或者两者都有。如果指标名称和regexp相匹配,相应pattern的规则会生效;否则,使用default节点的规则。
pattern和default节点的字段设置:
- regexp– 指标名的pattern.
- age – 数据的最小存活时间(按秒算).
- precision– 按秒来衡量数据存活时间时的精确程度. 必须能被86400整除 (一天的秒数).
- function – 对于存活时间在 [age, age + precision]之内的数据,需要使用的聚合函数
配置示例
<graphite_rollup> <version_column_name>Version</version_column_name> <pattern> <regexp>click_cost</regexp> <function>any</function> <retention> <age>0</age> <precision>5</precision> </retention> <retention> <age>86400</age> <precision>60</precision> </retention> </pattern> <default> <function>max</function> <retention> <age>0</age> <precision>60</precision> </retention> <retention> <age>3600</age> <precision>300</precision> </retention> <retention> <age>86400</age> <precision>3600</precision> </retention> </default> </graphite_rollup>
资料分享
参考文章
- ClickHouse(01)什么是ClickHouse,ClickHouse适用于什么场景
- ClickHouse(02)ClickHouse架构设计介绍概述与ClickHouse数据分片设计
- ClickHouse(03)ClickHouse怎么安装和部署
- ClickHouse(04)如何搭建ClickHouse集群
- ClickHouse(05)ClickHouse数据类型详解
- ClickHouse(06)ClickHouse建表语句DDL详细解析
- ClickHouse(07)ClickHouse数据库引擎解析
- ClickHouse(08)ClickHouse表引擎概况
- ClickHouse(09)ClickHouse合并树MergeTree家族表引擎之MergeTree详细解析
- ClickHouse(10)ClickHouse合并树MergeTree家族表引擎之ReplacingMergeTree详细解析
- ClickHouse(11)ClickHouse合并树MergeTree家族表引擎之SummingMergeTree详细解析
- ClickHouse(12)ClickHouse合并树MergeTree家族表引擎之AggregatingMergeTree详细解析
- ClickHouse(13)ClickHouse合并树MergeTree家族表引擎之CollapsingMergeTree详细解析
- ClickHouse(14)ClickHouse合并树MergeTree家族表引擎之VersionedCollapsingMergeTree详细解析