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

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はデータを選択する際に複数のスレッドを使用します。各スレッドは別々のデータブロックを読み取り、完了次第結果の行を独立して返します。その結果、出力の行のブロックの順序は、ほとんどの場合、入力の同じブロックの順序とは一致しません。たとえば:

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