概要
S3BackedMergeTree を使用して、MergeTree engine のストレージとして S3 を利用する機能をサポートしています。このテーブルエンジンにより、MergeTree engine の insert とクエリ性能を維持しながら、S3 のスケーラビリティとコスト面での利点を活用できます。
ストレージとコンピュートを分離したアーキテクチャの実装と運用は、標準的な ClickHouse デプロイメントに比べて複雑になる点に注意してください。このガイドで説明するように、セルフマネージドの ClickHouse でもストレージとコンピュートの分離は可能ですが、設定不要でこのアーキテクチャで ClickHouse を利用できる SharedMergeTree テーブルエンジン を備えた ClickHouse Cloud の利用を推奨します。
このガイドは、ClickHouse バージョン 22.8 以降を使用していることを前提としています。
1
S3 を ClickHouse のディスクとして使用する
ディスクの作成
ストレージ構成を保存するため、ClickHouse のconfig.d ディレクトリに新しいファイルを作成します。BUCKET、ACCESS_KEY_ID、SECRET_ACCESS_KEY を、データの保存先となる AWS バケット の詳細に置き換えます。region を指定したり、カスタム HTTP header を送信したりできます。関連する設定の一覧はこちらを参照してください。また、access_key_id と secret_access_key は以下のものに置き換えることもできます。これにより、環境変数と Amazon EC2 メタデータから認証情報の取得が試行されます。clickhouse ユーザーおよびグループに変更する必要があります:2
S3 をバックエンドにするテーブルを作成する
S3 ディスクが正しく設定されていることを確認するため、テーブルを作成してクエリできるか試します。新しい S3 ストレージポリシーを指定して、テーブルを作成します。エンジンを 以下の結果が表示されるはずです:それでは、新しいテーブルにいくつかの行を挿入してみましょう:行が挿入されていることを確認しましょう:AWS コンソールで、データが正常に S3 に挿入されていれば、指定したバケット内に ClickHouse が新しいファイルを作成していることを確認できます。すべて正常に動作していれば、これでストレージとコンピュートを分離した ClickHouse を利用できています!
S3BackedMergeTree として指定する必要がなかったことに注意してください。テーブルがストレージに S3 を使用していることを検出すると、ClickHouse は内部的にエンジンタイプを自動的に変換します。テーブルが正しいポリシーで作成されたことを確認します:3
フォールトトレランスのためにレプリケーションを実装する(任意)
耐障害性を確保するには、複数の AWS リージョンに分散配置した複数の ClickHouse server ノードと、各ノードに対応する S3 バケットを使用できます。S3 ディスクでのレプリケーションは、
ReplicatedMergeTree テーブルエンジンを使用することで実現できます。詳細は次のガイドを参照してください。