ClickHouse(15)ClickHouse合併樹MergeTree家族表引擎之GraphiteMergeTree詳細解析

張飛的豬發表於2023-09-21

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" 模式必須嚴格按順序配置:

  1. 不含'function' or 'retention'的Patterns
  2. 同時含有'function' and 'retention'的Patterns
  3. '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經典中文文件分享

參考文章

相關文章