StripeLog
このエンジンはログエンジンのファミリーに属します。ログエンジンの一般的な特性とその違いについては、Log Engine Familyの記事を参照してください。
このエンジンは、少量のデータ(1百万行未満)で多くのテーブルを書き込む必要があるシナリオで使用します。たとえば、このテーブルは原子的な処理が必要な変換のために、着信データバッチを保存するのに使用できます。ClickHouseサーバーには100kインスタンスのこのテーブルタイプが適しており、高数のテーブルが必要な場合にはLogよりもこのテーブルエンジンを選択するべきです。これは読み込み効率を犠牲にします。
テーブルの作成
CREATE TABLE クエリの詳細な説明を参照してください。
データの書き込み
StripeLog
エンジンは、すべてのカラムを1つのファイルに格納します。各INSERT
クエリに対して、ClickHouseはテーブルファイルの末尾にデータブロックを追加し、カラムを1つずつ書き込みます。
各テーブルに対してClickHouseは次のファイルを作成します:
data.bin
— データファイル。index.mrk
— マークファイル。マークには、挿入された各データブロックの各カラムのオフセットが含まれています。
StripeLog
エンジンはALTER UPDATE
およびALTER DELETE
操作をサポートしていません。
データの読み込み
マークファイルにより、ClickHouseはデータの読み込みを並列化できます。これにより、SELECT
クエリは予測不可能な順序で行を返します。行をソートするには、ORDER BY
句を使用します。
使用例
テーブルの作成:
データの挿入:
私たちは2つのINSERT
クエリを使用して、data.bin
ファイル内に2つのデータブロックを作成しました。
ClickHouseはデータ選択時に複数のスレッドを使用します。各スレッドは別々のデータブロックを読み込み、終了するたびに結果の行を独立して返します。そのため、出力の行のブロックの順序は、通常、入力の同じブロックの順序と一致しません。たとえば:
結果のソート(デフォルトでは昇順):