Redis テーブルエンジン
このエンジンにより、ClickHouse を Redis と連携させることができます。Redis はキー・バリュー(KV)モデルを採用しているため、where k=xx や where k in (xx, xx) のようなポイントアクセスのクエリに限定して利用することを強く推奨します。
テーブルを作成する
エンジンパラメータ
host:port— Redis サーバーのアドレス。portを省略した場合は、Redis のデフォルトポート 6379 が使用されます。db_index— Redis の DB インデックス。範囲は 0〜15 で、デフォルトは 0 です。password— ユーザーのパスワード。デフォルトは空文字列です。pool_size— Redis の最大接続プールサイズ。デフォルトは 16 です。primary_key_name- カラムリスト内の任意のカラム名。
PRIMARY KEY は 1 つのカラムのみをサポートします。プライマリキーは Redis のキーとしてバイナリ形式でシリアライズされます。
プライマリキー以外のカラムは、対応する順序で Redis の値としてバイナリ形式でシリアライズされます。
引数は named collections を使って渡すこともできます。この場合、host と port は個別に指定する必要があります。この方法は本番環境での利用に推奨されます。現時点では、named collections を使って Redis に渡されるすべてのパラメータは必須です。
key equals または in filtering を含むクエリは、Redis からの複数キーのルックアップに最適化されます。フィルタリング用のキーを指定しないクエリではテーブル全体スキャンが発生し、高コストな処理になります。
使用例
単純な引数を用いて、Redis エンジンを使用する ClickHouse のテーブルを作成します:
または、named collections を使用します:
挿入:
クエリ:
更新:
なお、主キーは更新できません。
削除:
Truncate:
Redis のデータベースを非同期でフラッシュします。Truncate は同期(SYNC)モードにも対応しています。
Join:
他のテーブルと結合します。
制約事項
Redis エンジンは where k > xx のようなスキャンクエリもサポートしますが、いくつかの制約事項があります。
- リハッシュ処理中のごくまれなケースでは、スキャンクエリによって重複したキーが返される場合があります。詳細は Redis Scan を参照してください。
- スキャンの最中にキーが作成・削除される可能性があるため、得られるデータセットは特定時点の一貫した状態を表しているとは限りません。