EmbeddedRocksDB テーブルエンジン
このエンジンを使用すると、ClickHouse を RocksDB と統合できます。
テーブルの作成
エンジンパラメータ:
ttl- 値の有効期間(time to live)。TTL は秒単位で指定します。TTL が 0 の場合は、通常の RocksDB インスタンスが使用されます(TTL なし)。rocksdb_dir- 既存の RocksDB のディレクトリパス、または作成される RocksDB の出力先ディレクトリパスを指定します。指定されたrocksdb_dirを用いてテーブルを開きます。read_only-read_onlyが true に設定されている場合、読み取り専用モードが使用されます。TTL 付きのストレージでは、コンパクション(手動・自動ともに)はトリガーされず、期限切れのエントリは削除されません。primary_key_name– カラムリスト内の任意のカラム名。primary keyは必ず指定する必要があり、プライマリキーには 1 つのカラムのみを指定できます。プライマリキーはバイナリ形式でrocksdb keyとしてシリアライズされます。- プライマリキー以外のカラムは、対応する順序でバイナリ形式の
rocksdbvalue としてシリアライズされます。 - キーに対する
equalsまたはinフィルタリングを用いたクエリは、rocksdbからの複数キーのルックアップに最適化されます。
エンジン設定:
optimize_for_bulk_insert– テーブルをバルクインサート向けに最適化します(INSERT パイプラインは memtable への書き込みではなく SST ファイルを作成して RocksDB データベースにインポートします);デフォルト値:1。bulk_insert_block_size- バルクインサートで作成される SST ファイルの最小サイズ(行数ベース);デフォルト値:1048449。
例:
メトリクス
RocksDB の統計情報を提供する system.rocksdb というテーブルもあります。
設定
config を使用して、rocksdb の任意のオプション を変更することもできます。
デフォルトでは、簡易近似カウント最適化は無効になっており、count() クエリのパフォーマンスに影響する可能性があります。この最適化を有効にするには、
optimize_trivial_approximate_count_query = 1 を設定します。また、この設定は EmbeddedRocksDB エンジンにおける system.tables にも影響し、
total_rows および total_bytes の近似値を表示するには、この設定を有効にしておく必要があります。
サポートされている操作
挿入
新しい行が EmbeddedRocksDB に挿入されると、キーがすでに存在している場合は値が更新され、存在しない場合は新しいキーが作成されます。
例:
削除
行は DELETE クエリまたは TRUNCATE クエリを使用して削除できます。
更新
値は ALTER TABLE クエリを使用して更新できます。主キーは変更できません。
結合
EmbeddedRocksDB テーブルでは、特殊な direct 結合がサポートされています。
この direct 結合ではメモリ内にハッシュテーブルを構築せず、
EmbeddedRocksDB からデータへ直接アクセスします。
大規模な結合では、ハッシュテーブルが作成されないため、
direct 結合を使用することでメモリ使用量が大幅に少なくなる場合があります。
direct 結合を有効にするには、次のようにします。
join_algorithm が direct, hash に設定されている場合、可能なときは direct join が使用され、それ以外の場合は hash join が使用されます。