メインコンテンツまでスキップ
メインコンテンツまでスキップ

TinyLog

このエンジンはログエンジンファミリーに属します。ログエンジンやその違いの共通プロパティについては、Log Engine Familyを参照してください。

このテーブルエンジンは通常、書き込み一回の方法で使用されます:データを一度書き込んだ後、必要なだけ何度も読み取ります。たとえば、TinyLogタイプのテーブルを中間データのために使用し、小さなバッチで処理することができます。ただし、多数の小さなテーブルにデータを保存することは非効率です。

クエリは単一のストリームで実行されます。言い換えれば、このエンジンは比較的小さなテーブル(約1,000,000行まで)を対象としています。多くの小さなテーブルがある場合、このテーブルエンジンを使用することは理にかなっています。なぜなら、Logエンジンよりも単純であり(オープンする必要のあるファイルが少ないため)、効率的だからです。

Characteristics

  • 単純な構造: Logエンジンとは異なり、TinyLogはマークファイルを使用しません。これにより複雑さは減少しますが、大規模データセットに対するパフォーマンスの最適化が制限されます。
  • 単一ストリームクエリ: TinyLogテーブル上のクエリは単一ストリームで実行されるため、通常1,000,000行までの比較的小さなテーブルに適しています。
  • 小さなテーブルに対して効率的: TinyLogエンジンのシンプルさは、多くの小さなテーブルを管理する際に有利であり、Logエンジンと比較して必要なファイル操作が少なくて済みます。

Logエンジンとは異なり、TinyLogはマークファイルを使用しません。これにより複雑さは減少しますが、大規模データセットに対するパフォーマンスの最適化が制限されます。

テーブルの作成

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 = TinyLog

CREATE TABLEクエリの詳細な説明を参照してください。

データの書き込み

TinyLogエンジンはすべてのカラムを1つのファイルに保存します。各INSERTクエリについて、ClickHouseはテーブルファイルの最後にデータブロックを追加し、カラムを1つずつ書き込みます。

各テーブルに対してClickHouseは以下のファイルを記述します:

  • <column>.bin: 各カラムのデータファイル。シリアライズされ圧縮されたデータが含まれます。

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

使用例

テーブルの作成:

CREATE TABLE tiny_log_table
(
    timestamp DateTime,
    message_type String,
    message String
)
ENGINE = TinyLog

データの挿入:

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

私たちは二つのINSERTクエリを使用して、<column>.binファイル内に二つのデータブロックを作成しました。

ClickHouseは単一のストリームを使用してデータを選択します。その結果、出力内の行ブロックの順序は、入力内の同じブロックの順序と一致します。たとえば:

SELECT * FROM tiny_log_table
┌───────────timestamp─┬─message_type─┬─message────────────────────┐
│ 2024-12-10 13:11:58 │ REGULAR      │ The first regular message  │
│ 2024-12-10 13:12:12 │ REGULAR      │ The second regular message │
│ 2024-12-10 13:12:12 │ WARNING      │ The first warning message  │
└─────────────────────┴──────────────┴────────────────────────────┘