Skip to main content
このページは ClickHouse Cloud には適用されません。ここで説明している機能は ClickHouse Cloud サービスではご利用いただけません。 詳しくは、ClickHouse の Cloud Compatibility ガイドを参照してください。
ClickHouse の s3 テーブル関数と S3 ディスクタイプは、S3 互換ゲートウェイを備えたオープンソースの分散オブジェクトストアである SeaweedFS に対応しています。SeaweedFS は path-style リクエストをネイティブに処理するため、セルフホストのストアでもワイルドカード DNS は不要です。SeaweedFS は Iceberg テーブルもサポートしています。テーブルバケットにはテーブルデータが Parquet ファイルとして保存され、組み込みの Iceberg REST カタログがテーブルメタデータを提供します。同じエンドポイント経由でこれらをクエリする方法については、SeaweedFS カタログガイドを参照してください。 SeaweedFS 4.42 以降を使用してください。以前のバージョンでは、空であるため親フォルダが削除されている間に書き込みがコミットされたオブジェクトが削除されることがあり、書き込みが成功した直後に Object ... suddenly disappeared と表示されます。

SeaweedFS をローカルで実行する

ローカルでテストするには、S3 認証情報を含む s3config.json ファイルを作成します。
次に、SeaweedFS スタック全体を単一のコンテナーで起動します。-bucket フラグを指定すると、起動時にバケットが作成されます。
S3 エンドポイントはポート 8333 で待ち受けます。応答するまで待ってから続行してください。
echo "s3.bucket.create -name mybucket" | docker exec -i seaweedfs weed shell を使用して、いつでもバケットを追加で作成できます。 デフォルトでは、書き込みはオペレーティングシステムに渡された時点で確認応答されます。確認応答前にすべての書き込みをディスクに fsync するには、バケットで fsync を有効にします。

S3 バックエンドの MergeTree

S3 バックエンドの MergeTree 構成は、軽微な変更を加えることで互換性があります。
エンドポイントには、バケット名 (clickhouse) と、それに続くテーブルデータ用のパスプレフィックス (tables/) が含まれます。SeaweedFS ではリージョンは不要なため、タグは空のままで構いません。seaweedfs は、S3 ゲートウェイを実行しているホストに置き換えてください。
テーブルは、ストレージポリシーを通じてデータを SeaweedFS に配置します。
頻繁に読み取るデータのローカルキャッシュを保持するには、代わりに SETTINGS disk = 's3_cache' を指定してテーブルを作成します。上で定義したキャッシュディスクは、S3 ディスクをラップしています。

s3 テーブル関数

s3 テーブル関数は、同じエンドポイントに対してオブジェクトの読み取りと書き込みを行います。
glob パターンを使用すると、複数のオブジェクトを読み取ることができます。

バックアップと復元

BACKUPRESTORE では、S3 宛先として SeaweedFS エンドポイントを指定できます。
最終更新日 2026年8月18日