このガイドでは、ClickHouse Cloud の機能面および運用面で想定される違いの概要を説明します。ClickHouse Cloud はオープンソース版の ClickHouse をベースにしていますが、アーキテクチャや実装にはいくつか違いがある場合があります。背景情報として、ClickHouse Cloud をどのように構築したかを紹介するこちらのブログも、興味深く参考になるでしょう。
ClickHouse Cloud アーキテクチャ
ClickHouse Cloud は、運用負荷を大幅に軽減し、大規模な ClickHouse 運用にかかるコストを削減します。デプロイメントのサイジングを事前に行ったり、高可用性のためにレプリケーションを設定したり、データを手動で分片化したり、ワークロードの増加に応じてサーバーをスケールアップしたり、使用していないときにスケールダウンしたりする必要はありません。これらは ClickHouse Cloud が対応します。
こうした利点は、ClickHouse Cloud を支えるアーキテクチャ上の設計によって実現されています。
- コンピュートとストレージは分離されているため、それぞれを独立した軸で自動的にスケールできます。そのため、固定的なインスタンス構成でストレージやコンピュートを過剰にプロビジョニングする必要がありません。
- オブジェクトストア上の階層型ストレージと多段のキャッシュにより、実質的に無制限のスケーリングと優れたコストパフォーマンスを実現できます。そのため、ストレージ容量を事前に見積もったり、高額なストレージコストを心配したりする必要がありません。
- 高可用性はデフォルトで有効になっており、レプリケーションも透過的に管理されるため、アプリケーションの構築やデータ分析に集中できます。
- 変動のある継続的なワークロード向けの自動スケーリングはデフォルトで有効になっているため、サービスのサイジングを事前に行ったり、ワークロードの増加時にサーバーをスケールアップしたり、アクティビティが減ったときに手動でサーバーをスケールダウンしたりする必要がありません
- 断続的なワークロード向けのシームレスな休止機能もデフォルトで有効になっています。一定期間アクティビティがない場合、コンピュートリソースは自動的に一時停止され、新しいクエリが到着すると透過的に再開されるため、アイドル状態のリソースに料金を支払う必要がありません。
- 高度なスケーリング制御により、追加コストを抑えるために自動スケーリングの上限を設定したり、特別なパフォーマンス要件を持つアプリケーション向けにコンピュートリソースを確保するため自動スケーリングの下限を設定したりできます。
機能
ClickHouse Cloud では、オープンソース版の ClickHouse で提供されている機能のうち、厳選された一部の機能を利用できます。以下の表では、現時点で ClickHouse Cloud で無効になっている機能の一部を示します。
データベースおよびテーブルエンジン
ClickHouse Cloud は、SharedMergeTree テーブルエンジンファミリーを基盤とする、高可用かつデフォルトでレプリケーション構成のサービスです。標準的な MergeTree ファミリーのエンジンでテーブルを作成すると、Cloud は対応する Shared* エンジンに自動的に置き換えます。Shared または Replicated のプレフィックスを自分で付ける必要はありません。
| 指定するもの | Cloud が使用するもの |
|---|---|
MergeTree (またはエンジン指定なし) |
SharedMergeTree |
ReplacingMergeTree |
SharedReplacingMergeTree |
SummingMergeTree |
SharedSummingMergeTree |
AggregatingMergeTree |
SharedAggregatingMergeTree |
CollapsingMergeTree |
SharedCollapsingMergeTree |
VersionedCollapsingMergeTree |
SharedVersionedCollapsingMergeTree |
GraphiteMergeTree |
SharedGraphiteMergeTree |
Replicated* エンジンも、同じ対応先の Shared* エンジンに変換されます。この置き換えは SHOW CREATE TABLE で確認でき、ステートメントで通常のバリアントを指定していても、Shared* エンジンとして表示されます。
以下のテーブルエンジンもサポートされており、そのまま使用されます。サポートされている MySQL テーブルエンジンは、サポートされていない MySQL データベースエンジンとは異なります。
- URL
- View
- MaterializedView
- GenerateRandom
- Null
- Buffer
- Memory
IcebergS3およびIcebergAzure- Deltalake
- Hudi
- MySQL
- MongoDB
- NATS
- RabbitMQ
- PostgreSQL
- S3
- Kafka
実験的な PaimonS3 および PaimonAzure テーブルエンジンは、一部の ClickHouse Cloud サービスで有効にできます。利用可否についてはサポートにお問い合わせください。
インターフェイス
ClickHouse Cloud は、HTTPS、ネイティブインターフェイス、MySQL wire protocol をサポートしています。Postgres など、さらに多くのインターフェイスにも近日対応予定です。
Dictionaries
Dictionaries は、ClickHouse におけるルックアップを高速化する一般的な方法です。ClickHouse Cloud は現在、PostgreSQL、MySQL、リモートおよびローカルの ClickHouse サーバー、Redis、MongoDB、HTTP ソースの Dictionaries をサポートしています。
フェデレーテッドクエリ
クラウド内でのクラスター間通信、および外部のセルフマネージド ClickHouse クラスターとの通信向けに、フェデレーテッド ClickHouse クエリをサポートしています。現在、ClickHouse Cloud では、以下のインテグレーションエンジンを使用したフェデレーテッドクエリをサポートしています。
IcebergS3およびIcebergAzurePaimonS3およびPaimonAzure(実験的。利用可否についてはサポートにお問い合わせください)- Deltalake
- Hudi
- MySQL
- MongoDB
- NATS
- RabbitMQ
- PostgreSQL
- S3
SQLite、ODBC、JDBC、Redis、HDFS、Hive など、一部の外部データベースエンジンおよびテーブルエンジンを使用するフェデレーテッドクエリは、まだサポートされていません。
ユーザー定義関数
ClickHouse Cloud のユーザー定義関数は、パブリックベータです。
Settings の挙動
つまり、次のことを意味します。
- セッションレベルの設定 (
SETステートメントで設定) は、UDF の実行コンテキストに伝播されません - ユーザープロファイル設定は UDFs に継承されません
- クエリレベルの設定は、UDF の実行中には適用されません
実験的機能
サービスのデプロイの安定性を確保するため、ClickHouse Cloud サービスでは実験的機能は無効化されています。
名前付きコレクション
DDL で作成された名前付きコレクションは、一部の ClickHouse Cloud サービスで有効にできます。利用可否についてはサポートにお問い合わせください。ClickHouse Cloud ではユーザーがサーバー設定ファイルを変更できないため、設定ファイルで定義された名前付きコレクションは利用できません。
運用上のデフォルト設定と考慮事項
以下は ClickHouse Cloud サービスのデフォルト設定です。これらの設定には、サービスを正しく動作させるために固定されているものもあれば、調整可能なものもあります。
運用上の制限
max_parts_in_total: 10,000
MergeTree テーブルにおける max_parts_in_total 設定のデフォルト値は、100,000 から 10,000 に引き下げられました。この変更の理由は、データパーツ数が多いと Cloud 上のサービスの起動時間が長くなりやすいことが確認されたためです。パーツ数が多い場合、通常はパーティションキーの粒度が細かすぎることを示しており、これは多くの場合意図せず設定されるものであるため、避けるべきです。デフォルト値を変更することで、このようなケースをより早い段階で検出できるようになります。
max_concurrent_queries: 1,000
同時実行数を増やすため、このサーバー設定をデフォルトの 100 から 1000 に引き上げています。
これにより、サービスで実行できる同時クエリ数は レプリカ数 * 1,000 になります。単一レプリカのサービスでは、ティアにかかわらず最大 1000 の同時クエリがサポートされます。Scale および Enterprise tier の複数レプリカのサービスでは、レプリカごとに最大 1000 の同時クエリがサポートされます。
max_table_size_to_drop: 1,000,000,000,000
この設定を50GBから引き上げ、最大1TBまでのテーブル/パーティションを削除できるようにしました。
システム設定
ClickHouse Cloud は変動するワークロードに対応できるよう調整されているため、現時点ではほとんどのシステム設定を変更できません。ほとんどのユーザーにとってシステム設定の調整は不要と考えていますが、高度なシステムチューニングについてご質問がある場合は、ClickHouse Cloud Support までお問い合わせください。
高度なセキュリティ管理
ClickHouse service の作成時に、デフォルトのデータベースと、そのデータベースに対して広範な権限を持つ default user が作成されます。この初期ユーザーは、追加のユーザーを作成し、そのデータベースに対する権限を付与できます。これに加えて、Kerberos、LDAP、または SSL X.509 証明書認証を使用して、データベース内で以下のセキュリティ機能を有効にすることは、現時点ではサポートされていません。
サポート対象外の機能一覧
以下の表に、ClickHouse Cloud でサポート対象外とされている機能およびセルフマネージド環境での手順を示します。各エントリには、リンク先のページでサポート対象の機能も扱われている場合でも、サポート対象外の具体的な機能を記載しています。
マネージドインフラストラクチャと運用
| サポートされていない機能 | ドキュメント |
|---|---|
セルフマネージド環境での ClickHouse Keeper のデプロイと設定 |
Keeper ガイド、ZooKeeper 接続の保護 |
| TLS 証明書の手動プロビジョニングとサーバー設定 | ACME プロビジョニング、TLS 設定 |
TTL を使用したホット/ウォーム/コールドストレージ階層の手動設定 |
ガイド |
| セルフマネージド環境でのハードウェア性能テストの実行 | ガイド |
| セルフマネージド環境向けの運用に関する推奨事項の適用 | ガイド |
認証とセキュリティ
| サポートされていない機能 | ドキュメント |
|---|---|
| HTTP 外部認証 | リファレンス |
| Kerberos 外部認証 | リファレンス |
| LDAP 認証とロールマッピング | 設定, 認証器 |
| X.509 証明書認証 | ユーザー認証, 外部認証器 |
インターフェイスとインテグレーション
| サポートされていない機能 | ドキュメント |
|---|---|
| PostgreSQLワイヤプロトコルインターフェイス | リファレンス |
| PTY 対応 SSH インターフェイス | リファレンス |
MaterializedPostgreSQL レプリケーションエンジン |
ClickPipes ガイド, コネクタガイド, データベースエンジン, テーブルエンジン |
ODBC テーブルエンジン |
リファレンス |
| MinIO の S3 互換オブジェクトストレージインテグレーション | ガイド |
| Tigris の S3 互換オブジェクトストレージインテグレーション | ガイド |
サポートされていないデータベースおよびテーブルエンジン
| サポートされていない機能 | ドキュメント |
|---|---|
MySQL データベースエンジン |
リファレンス |
EmbeddedRocksDB テーブルエンジン |
リファレンス |
HDFS テーブルエンジン |
リファレンス |
Hive テーブルエンジン |
リファレンス |
JDBC テーブルエンジン |
リファレンス |
フェデレーテッドクエリ用の Redis テーブルエンジン |
リファレンス |
SQLite テーブルエンジン |
リファレンス |
TimeSeries テーブルエンジン |
リファレンス |
YTsaurus テーブルエンジン |
リファレンス |
Logファミリーのテーブルエンジン (Log、StripeLog、TinyLog) |
ファミリーの概要、Log、StripeLog、TinyLog |
Dictionary とサーバー設定
| サポートされていない機能 | ドキュメント |
|---|---|
名前付きコレクション、および CREATE NAMED COLLECTION と ALTER NAMED COLLECTION ステートメント |
概要、作成、変更 |
| ファイルベースの Dictionary 設定 | リファレンス |
| 埋め込み geobase Dictionary | リファレンス |
ローカルの YAMLRegExpTree Dictionary ソース |
レイアウトガイド、ソースリファレンス |
YTsaurus Dictionary ソース |
リファレンス |
| サーバーで設定された日本語トークナイザー Dictionary | リファレンス |
サポート対象外のデータフォーマットとコーデック
| サポートされていない機能 | ドキュメント |
|---|---|
サーバー側のスキーマファイルを使用する CapnProto フォーマット |
フォーマットリファレンス、ガイド |
サーバー側のスキーマファイルを使用する Protobuf、ProtobufList、ProtobufSingle フォーマット |
ガイド、ProtobufList、ProtobufSingle |
廃止された ZSTD_QAT および DEFLATE_QPL コーデック |
ZSTD_QAT、DEFLATE_QPL |
関数および実験的機能
| サポートされていない機能 | ドキュメント |
|---|---|
| 実験的な自然言語処理関数 | リファレンス |
| commit および rollback を伴う実験的なマルチステートメントトランザクション | ガイド |
| 実験的なトランザクションイントロスペクション関数 | transactionID, transactionLatestSnapshot, transactionOldestSnapshot |
WindowView 用の時間ウィンドウ関数 |
リファレンス |
実験的な WindowView |
リファレンス |
| WebAssembly ユーザー定義関数 | 概要, ガイド |
| ドライバーを利用する実行可能なユーザー定義関数 | リファレンス |
サーバーローカルのファイルに対する filesystem テーブル関数 |
リファレンス |
管理とアクセス制御
| サポートされていない機能 | ドキュメント |
|---|---|
ALTER TABLE によるカラム統計の操作 |
リファレンス |
EXECUTE AS によるユーザーの権限借用 |
リファレンス |
| テーブルエンジン固有の権限付与 | 権限付与、サーバー設定 |
GRANT ALL 権限のショートカット |
リファレンス |
SYSTEM SHUTDOWN によるサーバーのシャットダウン |
リファレンス |
SYSTEM ステートメントによるバックグラウンドフェッチの開始と停止 |
SYSTEM STOP FETCHES、SYSTEM START FETCHES |
SYSTEM ステートメントによるバックグラウンドマージの開始と停止 |
SYSTEM STOP MERGES、SYSTEM START MERGES |
SYSTEM ステートメントによるバックグラウンドの TTL マージの開始と停止 |
SYSTEM STOP TTL MERGES、SYSTEM START TTL MERGES |
ロードマップ
ClickHouse Cloud では、ほかにも多くの機能について需要を見極めています。ご意見がある場合や、特定の機能をリクエストしたい場合は、こちらからお知らせください。