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

ストレージとコンピュートの分離

概要

このガイドでは、ClickHouseとS3を使用して、ストレージとコンピュートを分離したアーキテクチャを実装する方法を探ります。

ストレージとコンピュートの分離とは、計算リソースとストレージリソースを独立して管理することを意味します。ClickHouseでは、これによりスケーラビリティ、コスト効率、柔軟性が向上します。ストレージとコンピュートリソースを必要に応じて個別にスケールさせ、パフォーマンスとコストの最適化を図ることができます。

ClickHouseをS3でバックアップすることは、「コールド」データに対するクエリパフォーマンスがそれほど重要でないユースケースに特に有用です。ClickHouseは、MergeTreeエンジン用のストレージとしてS3を使用するためのS3BackedMergeTreeをサポートしています。このテーブルエンジンにより、ユーザーはS3のスケーラビリティとコストの利点を享受しながら、MergeTreeエンジンの挿入およびクエリパフォーマンスを維持できます。

ストレージとコンピュートの分離アーキテクチャを実装および管理することは、標準的なClickHouseデプロイよりも複雑であることに注意してください。セルフマネージドのClickHouseでは、本ガイドで説明されているストレージとコンピュートの分離が可能ですが、設定なしでこのアーキテクチャでClickHouseを使用できるClickHouse Cloudの使用をお勧めします。これにより、SharedMergeTreeテーブルエンジンを使用することができます。

このガイドでは、ClickHouseのバージョン22.8以上を使用していることを前提としています。

危険

AWS/GCSライフサイクルポリシーを設定しないでください。これはサポートされておらず、テーブルが壊れる可能性があります。

1. S3をClickHouseディスクとして使用する

ディスクの作成

ストレージ設定を保存するために、ClickHouseのconfig.dディレクトリに新しいファイルを作成します:

新しく作成したファイルに以下のXMLをコピーし、データを保存したいAWSバケットの詳細情報でBUCKETACCESS_KEY_IDSECRET_ACCESS_KEYを置き換えます:

S3ディスクに関してさらなる設定(例えばregionを指定したり、カスタムHTTPheaderを送信するための設定)が必要な場合、関連する設定のリストはこちらで確認できます。

また、access_key_idsecret_access_keyを以下のように置き換えることもでき、これにより環境変数とAmazon EC2メタデータから資格情報を取得しようとします:

設定ファイルを作成したら、ファイルのオーナーをclickhouseユーザーとグループに更新する必要があります:

変更を有効にするために、ClickHouseサーバーを再起動できます:

2. S3バックアップのテーブルを作成する

S3ディスクが正しく設定されたかどうかを確認するために、テーブルを作成してクエリを試してみましょう。

新しいS3ストレージポリシーを指定してテーブルを作成します:

エンジンをS3BackedMergeTreeとして指定する必要はありません。ClickHouseは、テーブルがS3をストレージとして使用していると検出すると、エンジンタイプを内部的に自動変換します。

正しいポリシーでテーブルが作成されたことを確認します:

次のような結果が表示されるはずです:

次に、新しいテーブルにいくつかの行を挿入しましょう:

行が挿入されたことを確認しましょう:

AWSコンソールで、データがS3に正常に挿入されていれば、ClickHouseが指定したバケットに新しいファイルを作成しているのが見えるはずです。

すべてが成功した場合、あなたは今、ストレージとコンピュートを分離したClickHouseを使用しています!

ストレージとコンピュートの分離を使用したS3バケットの例

3. 障害耐性のためのレプリケーションの実装 (オプション)

危険

AWS/GCSライフサイクルポリシーを設定しないでください。これはサポートされておらず、テーブルが壊れる可能性があります。

障害耐性のために、複数のAWSリージョンに分散された複数のClickHouseサーバーノードを使用し、各ノードにS3バケットを持つことができます。

S3ディスクによるレプリケーションは、ReplicatedMergeTreeテーブルエンジンを使用することで実現できます。詳細については、以下のガイドを参照してください:

さらなる読み物