StripeLog
このエンジンはログエンジンのファミリーに属します。ログエンジンの一般的な特性およびその違いについては、Log Engine Familyの記事を参照してください。
このエンジンは、少量のデータ(100万行未満)を持つ多くのテーブルを書き込む必要があるシナリオで使用してください。たとえば、このテーブルは、原子的な処理が必要な変換のための受信データバッチを保存するために使用できます。このテーブルタイプの100kインスタンスは、ClickHouseサーバーで使用可能です。多数のテーブルが必要な場合は、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はデータを選択する際に複数のスレッドを使用します。各スレッドは別々のデータブロックを読み取り、完了次第結果の行を独立して返します。その結果、出力の行のブロックの順序は、ほとんどの場合、入力の同じブロックの順序とは一致しません。たとえば:
結果をソートする(デフォルトで昇順):