Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

StripeLog テーブルエンジン

ClickHouse Cloud ではサポートされていません

このエンジンは、ログエンジンファミリーに属します。ログエンジンの共通の特性と違いについては、Log Engine Family の記事を参照してください。

このエンジンは、少量のデータ (100万行未満) を含む多数のテーブルに書き込む必要がある場合に使用します。たとえば、アトミックな処理が必要な、変換用の受信データバッチを保存するテーブルとして使用できます。ClickHouse server では、この種類のテーブルを 10 万個程度まで実用的に運用できます。多数のテーブルが必要な場合は、Log よりこのテーブルエンジンを優先して使用してください。ただし、そのぶん読み取り効率は低下します。

テーブルの作成

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    column1_name [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
    column2_name [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
    ...
) ENGINE = StripeLog

CREATE TABLEクエリの詳しい説明については、こちらを参照してください。

データの書き込み

StripeLog エンジンは、すべてのカラムを1つのファイルに格納します。INSERT クエリごとに、ClickHouse はテーブルファイルの末尾にデータブロックを追記し、カラムを1つずつ書き込みます。

各テーブルに対して、ClickHouse は次のファイルを書き込みます。

  • data.bin — データファイル。
  • index.mrk — マークを格納するファイル。マークには、挿入された各データブロック内の各カラムのオフセットが含まれます。

StripeLog エンジンは、ALTER UPDATE および ALTER DELETE 操作をサポートしていません。

データの読み取り

マークファイルにより、ClickHouse はデータの読み取りを並列化できます。そのため、SELECT クエリが返す行の順序は一定ではありません。行をソートするには、ORDER BY 句を使用します。

使用例

テーブルの作成:

CREATE TABLE stripe_log_table
(
    timestamp DateTime,
    message_type String,
    message String
)
ENGINE = StripeLog

データの挿入:

INSERT INTO stripe_log_table VALUES (now(),'REGULAR','The first regular message')
INSERT INTO stripe_log_table VALUES (now(),'REGULAR','The second regular message'),(now(),'WARNING','The first warning message')

2つのINSERTクエリを使用して、data.binファイル内に2つのデータブロックを作成しました。

ClickHouseは、データを選択するときに複数のスレッドを使用します。各スレッドは別々のデータブロックを読み取り、処理が完了した時点で結果の行を個別に返します。そのため、ほとんどの場合、出力内の行ブロックの順序は、入力内の同じブロックの順序と一致しません。たとえば、次のようになります。

SELECT * FROM stripe_log_table
┌───────────timestamp─┬─message_type─┬─message────────────────────┐
│ 2019-01-18 14:27:32 │ REGULAR      │ The second regular message │
│ 2019-01-18 14:34:53 │ WARNING      │ The first warning message  │
└─────────────────────┴──────────────┴────────────────────────────┘
┌───────────timestamp─┬─message_type─┬─message───────────────────┐
│ 2019-01-18 14:23:43 │ REGULAR      │ The first regular message │
└─────────────────────┴──────────────┴───────────────────────────┘

結果をソートする (デフォルトでは昇順) :

SELECT * FROM stripe_log_table ORDER BY timestamp
┌───────────timestamp─┬─message_type─┬─message────────────────────┐
│ 2019-01-18 14:23:43 │ REGULAR      │ The first regular message  │
│ 2019-01-18 14:27:32 │ REGULAR      │ The second regular message │
│ 2019-01-18 14:34:53 │ WARNING      │ The first warning message  │
└─────────────────────┴──────────────┴────────────────────────────┘
Navigation