GraphiteMergeTree

该引擎用来对 Graphite数据进行瘦身及汇总。对于想使用CH来存储Graphite数据的开发者来说可能有用。

如果不需要对Graphite数据做汇总,那么可以使用任意的CH表引擎;但若需要,那就采用 GraphiteMergeTree 引擎。它能减少存储空间,同时能提高Graphite数据的查询效率。

该引擎继承自 MergeTree.

创建表

  1. CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
  2. (
  3. Path String,
  4. Time DateTime,
  5. Value <Numeric_type>,
  6. Version <Numeric_type>
  7. ...
  8. ) ENGINE = GraphiteMergeTree(config_section)
  9. [PARTITION BY expr]
  10. [ORDER BY expr]
  11. [SAMPLE BY expr]
  12. [SETTINGS name=value, ...]

建表语句的详细说明请参见 创建表

含有Graphite数据集的表应该包含以下的数据列:
- 指标名称(Graphite sensor),数据类型:String
- 指标的时间度量,数据类型: DateTime
- 指标的值,数据类型:任意数值类型
- 指标的版本号,数据类型: 任意数值类型

  1. CH以最大的版本号保存行记录,若版本号相同,保留最后写入的数据。

以上列必须设置在汇总参数配置中。

GraphiteMergeTree 参数
- config_section - 配置文件中标识汇总规则的节点名称

建表语句

在创建 GraphiteMergeTree 表时,需要采用和 clauses 相同的语句,就像创建 MergeTree 一样。

已废弃的建表语句

Attention

请不要在新项目中使用;如有可能,请将旧的项目按上述的方法进行替换。

  1. CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
  2. (
  3. EventDate Date,
  4. Path String,
  5. Time DateTime,
  6. Value <Numeric_type>,
  7. Version <Numeric_type>
  8. ...
  9. ) ENGINE [=] GraphiteMergeTree(date-column [, sampling_expression], (primary, key), index_granularity, config_section)

除了config_section,其它所有参数和MergeTree的相应参数一样.

  • config_section —配置文件中设置汇总规则的节点

汇总配置的参数

汇总的配置参数由服务器配置的 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 的结构:

  1. pattern
  2. regexp
  3. function
  4. pattern
  5. regexp
  6. age + precision
  7. ...
  8. pattern
  9. regexp
  10. function
  11. age + precision
  12. ...
  13. pattern
  14. ...
  15. default
  16. function
  17. age + precision
  18. ...

Attention

模式必须严格按顺序配置:
1. 不含function or retention的Patterns
1. 同时含有function and retention的Patterns
1. default的Patterns.

CH在处理行记录时,会检查 pattern节点的规则。每个 pattern(含default)节点可以包含 function 用于聚合操作,或retention参数,或者两者都有。如果指标名称和 regexp相匹配,相应 pattern的规则会生效;否则,使用 default 节点的规则。

patterndefault 节点的字段设置:

  • regexp– 指标名的pattern.
  • age – 数据的最小存活时间(按秒算).
  • precision– 按秒来衡量数据存活时间时的精确程度. 必须能被86400整除 (一天的秒数).
  • function – 对于存活时间在 [age, age + precision]之内的数据,需要使用的聚合函数

配置示例

  1. <graphite_rollup>
  2. <version_column_name>Version</version_column_name>
  3. <pattern>
  4. <regexp>click_cost</regexp>
  5. <function>any</function>
  6. <retention>
  7. <age>0</age>
  8. <precision>5</precision>
  9. </retention>
  10. <retention>
  11. <age>86400</age>
  12. <precision>60</precision>
  13. </retention>
  14. </pattern>
  15. <default>
  16. <function>max</function>
  17. <retention>
  18. <age>0</age>
  19. <precision>60</precision>
  20. </retention>
  21. <retention>
  22. <age>3600</age>
  23. <precision>300</precision>
  24. </retention>
  25. <retention>
  26. <age>86400</age>
  27. <precision>3600</precision>
  28. </retention>
  29. </default>
  30. </graphite_rollup>