Contents
1. ClickHouse Cloud の概要とプラン比較
ClickHouse Cloud はフルマネージドの列指向データベースで、インフラ管理を省きつつ高速分析クエリが実行できるサービスです。導入時に選択するプランは Free と Pay‑as‑you‑go (従量課金) の 2 種類が公式に提供されています。
注: 本稿で示す料金・上限は執筆時点の公式情報をもとにしています。実際の利用前に必ず最新プランページをご確認ください。
1‑1. 各プランの主な特徴
| プラン | 無料枠(月間) | ストレージ上限 | 自動スケーリング | バックアップ保持期間 |
|---|---|---|---|---|
| Free | データ読み取り 10 GB、書き込みは制限なし | 5 GB (SSD) | 手動のみ(サイズ変更はコンソール操作) | 7 日間 |
| Pay‑as‑you‑go | 無料枠はなし(従量課金) | 使用した分だけ課金、上限なし | 有効化すれば最小/最大 vCPU を設定可能 | 任意期間 (デフォルト 30 日) |
- Free プラン は試験導入や PoC に適しています。インフラは自動プロビジョニングされ、バックアップも自動で取得されますが、スケールアウトは手動です。
- Pay‑as‑you‑go は本番環境向けで、CPU・メモリをオンデマンドで拡張できるため、トラフィックの変動に柔軟に対応できます。
1‑2. 従量課金モデルの料金構造
| 項目 | 単価(USD) | 計算方法 |
|---|---|---|
| vCPU (時間) | 0.12 / vCPU·h | 使用した CPU 時間に対して課金 |
| メモリ (GB‑hour) | 0.01 / GB·h | ストレージと同様に実績ベースで請求 |
| SSD ストレージ | 0.10 / GB·mo | 月単位の使用容量で計算 |
| データ転送 (リージョン間) | 0.09 / GB | 同一リージョン内は無料 |
料金は ClickHouse Cloud コンソール上部にリアルタイムで表示され、予算アラート を設定すれば超過前に通知が届きます。
2. アカウント作成から課金情報登録までの手順
実際の導入は「アカウント取得 → 組織・プロジェクト作成 → 課金情報入力」の3ステップで完了します。以下では、各フェーズで注意すべきポイントと具体的な操作方法を示します。
2‑1. サインアップとメール認証
- ClickHouse Cloud のトップページから 「Start Free」 をクリック
- 名前・メールアドレス・パスワードを入力し、利用規約に同意
- 送信された認証リンクを 24 時間以内 にクリックするとコンソールへリダイレクト
ポイント: 認証メールが届かない場合は迷惑メールフォルダの確認と、使用ドメインの SPF/DKIM 設定を見直すと解決しやすいです。
2‑2. 組織・プロジェクト作成
- 組織作成: コンソール左上の「Organization」→「Create Organization」で組織名を入力
- プロジェクト作成: 作成した組織内に「Project」→「New Project」を選び、環境(開発・本番)ごとに名前を付ける
組織単位での課金設定が可能なため、複数プロジェクトを横断してコストを一元管理できます。
2‑3. 課金情報の登録
- コンソール左メニュー 「Billing」 → 「Payment Methods」 を開く
- クレジットカード情報または請求書(PO)情報を入力
- カード情報は PCI DSS 準拠 の UI で暗号化されて保存されます。
- Free プランでも課金情報の登録が必須です(スパム防止と利用上限管理のため)。請求は発生しません。
セキュリティ注意: カード番号やシークレットキーはコードに直書きせず、環境変数 または Secret Manager (AWS Secrets Manager, GCP Secret Manager 等) に格納して参照してください。
3. クラスタ作成と接続設定
クラスタ構築時には「リージョン」「サイズ」「自動スケーリング」「バックアップポリシー」の4要素を決定します。以下に実務でよく使われる構成例と、主要クライアントからの接続サンプルを示します。
3‑1. クラスタ作成手順(コンソール)
- Clusters → Create Cluster をクリック
- リージョン選択:
ap-northeast-1 (Tokyo)、eu-central-1 (Frankfurt)などから目的に合うものを選ぶ - サイズ設定: ドロップダウンで
4 vCPU / 16 GB(標準サイズ)や8 vCPU / 32 GBを選択 - 自動スケーリング有効化:
- 最小
2 vCPU、最大8 vCPUと入力し、Enable auto‑scale にチェック - バックアップポリシー: 「Daily backup at 02:00 UTC, retention 30 days」などを設定
作成完了後に表示される Cluster ID, Host name, Port (9440) をメモしておきます。
3‑2. 接続情報のプレースホルダー解説
<cluster-host>はコンソール上で確認できる FQDN(例:my-cluster-abc123.clickhouse.cloud)です。<your-password>はデフォルトユーザーdefaultのパスワードで、コンソールの「Users」タブから変更・取得できます。
これらは ハードコーディングせず、環境変数 (
CLICKHOUSE_HOST,CLICKHOUSE_PASSWORD) に格納して利用することを推奨します。
3‑3. 各種クライアントの接続サンプル
3‑3‑1. clickhouse-client (CLI)
|
1 2 3 4 5 6 7 8 9 10 |
export CLICKHOUSE_HOST=my-cluster-abc123.clickhouse.cloud export CLICKHOUSE_PASSWORD=MySecretPass clickhouse-client \ --host $CLICKHOUSE_HOST \ --port 9440 \ --user default \ --password $CLICKHOUSE_PASSWORD \ --secure |
3‑3‑2. JDBC (Java)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
String host = System.getenv("CLICKHOUSE_HOST"); String password = System.getenv("CLICKHOUSE_PASSWORD"); String url = "jdbc:clickhouse://" + host + ":9440/default"; Properties props = new Properties(); props.setProperty("user", "default"); props.setProperty("password", password); props.setProperty("sslmode", "require"); // TLS 必須 try (Connection conn = DriverManager.getConnection(url, props)) { // 例: バージョン取得 try (Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT version()")) { while (rs.next()) System.out.println(rs.getString(1)); } } |
3‑3‑3. ODBC (UnixODBC)
|
1 2 3 4 5 6 7 8 9 10 |
[ClickHouseCloud] Description=ClickHouse Cloud DSN Driver=/usr/lib/x86_64-linux-gnu/odbc/libclickhouseodbc.so Server=${CLICKHOUSE_HOST} Port=9440 Database=default User=default Password=${CLICKHOUSE_PASSWORD} SSLMode=require |
3‑3‑4. HTTP API (curl)
|
1 2 3 4 5 6 7 8 |
export CLICKHOUSE_HOST=my-cluster-abc123.clickhouse.cloud export CLICKHOUSE_PASSWORD=MySecretPass curl -G "https://${CLICKHOUSE_HOST}:8443/" \ --data-urlencode "query=SELECT count() FROM system.metrics" \ -u default:${CLICKHOUSE_PASSWORD} \ --compressed |
3‑3‑5. Python client (clickhouse-driver)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import os from clickhouse_driver import Client client = Client( host=os.getenv("CLICKHOUSE_HOST"), port=9440, user="default", password=os.getenv("CLICKHOUSE_PASSWORD"), secure=True # TLS 有効化 ) print(client.execute("SELECT version()")) |
テストクエリ: すべての接続で
SELECT 1を実行し、正常に結果が返ることを確認してください。
4. テーブル設計とデータインポート
大規模分析基盤では Distributed と ローカル (MergeTree) の組み合わせが基本です。ここではベストプラクティスと具体的なインポート手順を解説します。
4‑1. テーブル設計の指針
| 用途 | 推奨テーブルタイプ | パーティションキー例 | 主な利点 |
|---|---|---|---|
| 高速分析クエリ | Distributed (全ノードに分散) | event_date (Date) |
スケールアウトで均等負荷、クエリは自動的に全ノード走査 |
| バッチ書き込み・データ保持 | MergeTree(ローカル) | toYYYYMM(event_date), user_id |
INSERT が高速、パーティション単位の削除が簡単 |
4‑1‑1. テーブル作成例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
CREATE DATABASE IF NOT EXISTS analytics; -- ローカルテーブル (実データ格納) CREATE TABLE analytics.sales_local ( event_date Date, order_id UInt64, user_id UInt64, amount Decimal(10,2), product String ) ENGINE = MergeTree() PARTITION BY toYYYYMM(event_date) ORDER BY (event_date, order_id); -- Distributed テーブル (クエリ用エイリアス) CREATE TABLE analytics.sales AS analytics.sales_local ENGINE = Distributed('cluster_name', 'analytics', 'sales_local', sipHash64(order_id)); |
cluster_nameはクラスタ作成時に自動付与される名前です(例:clickhouse_cluster)。
4‑2. データインポート手段
4‑2‑1. コンソールから CSV/TSV アップロード
- Data Import → Upload File を選択
- ファイル形式・区切り文字を設定し、対象テーブル
analytics.sales_localを指定 - 「インポート開始」ボタンでバルク INSERT が自動実行されます
UI からのアップロードは最大 5 GB まで対応しています。大容量の場合は S3 経由が推奨です。
4‑2‑2. clickhouse-client を使った CSV バルクインサート
|
1 2 3 4 5 |
clickhouse-client \ --query " INSERT INTO analytics.sales_local (event_date, order_id, user_id, amount, product) FORMAT CSV" < data_batch.csv |
- ベストプラクティス: 1 回の INSERT に 10 k 行程度(数 MB) を上限とし、バッチサイズを調整するとスループットが最適化されます。
4‑2‑3. S3 → COPY FROM (外部テーブル経由)
公式ドキュメントで推奨されている手順は 外部テーブル を作成し、INSERT SELECT でローカルテーブルへデータを流す方法です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
-- 外部テーブル定義 (S3 上の CSV) CREATE TABLE analytics.sales_s3 ( event_date Date, order_id UInt64, user_id UInt64, amount Decimal(10,2), product String ) ENGINE = S3( 'https://s3.ap-northeast-1.amazonaws.com/my-bucket/sales/*.csv', '{AWS_ACCESS_KEY_ID}', -- 環境変数や Secrets Manager で安全に管理 '{AWS_SECRET_ACCESS_KEY}', 'CSV' ); -- ローカルテーブルへロード INSERT INTO analytics.sales_local SELECT * FROM analytics.sales_s3; |
セキュリティ注意:
AWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYはコードにベタ書きせず、IAM Role (EC2/ECS) もしくは Secret Manager 経由で取得してください。
5. 運用・モニタリング・コスト最適化
本番運用ではリソース使用状況の可視化と費用管理が不可欠です。ClickHouse Cloud は Prometheus エンドポイントを提供しているため、Grafana と連携したダッシュボードやアラート設定が容易に行えます。
5‑1. メトリクス取得と Grafana 連携
- コンソール Monitoring → Export Metrics を有効化し、表示される Prometheus エンドポイント URL(例:
https://metrics.clickhouse.cloud/v1/prometheus)をコピー - Grafana の Data Sources → Add data source → Prometheus に貼り付けて保存
5‑1‑2. CPU 使用率ダッシュボード例
|
1 2 3 4 |
avg by (instance) ( rate(clickhouse_cpu_usage_seconds_total[1m]) ) * 100 |
- このクエリはインスタンス単位の CPU 使用率(%)を算出します。
- ダッシュボードに 「CPU > 80 %」 の閾値アラートを設定し、Slack Webhook に通知させると運用負荷が低減します。
5‑2. コスト削減のための自動スケーリングとクエリキャッシュ
| 手法 | 設定例 | 想定効果 |
|---|---|---|
| 自動スケーリング | Enable auto-scale → 最小 2 vCPU / 最大 8 vCPU |
ピーク時のみリソース増加、平常時は低コストで稼働 |
| クエリキャッシュ | SET enable_query_cache=1, query_cache_size=2GB; をデフォルトに追加 |
同一クエリの再実行が高速化し CPU 使用量を約 15 % 削減 |
| 未使用クラスタ削除 | コンソール → クラスタ一覧 → Delete | 不要インフラの課金停止 |
ベストプラクティス: 月次で
cluster_cpu_seconds_totalとbilling_estimated_costを比較し、スケーリング閾値(例: CPU 平均 70 %)を調整すると効果的です。
5‑3. よくある障害と対処フロー
| 障害 | 主な原因 | 推奨対応 |
|---|---|---|
| 接続タイムアウト | 社内ファイアウォールがポート 9440 を遮断 |
ネットワークチームに outbound TCP/9440 許可を依頼 |
| 認証失敗 (Invalid user/password) | パスワード変更後、環境変数が更新されていない | 環境変数または Secret Manager の値を最新化し再起動 |
| レートリミット超過 | 公式ドキュメントに記載の 10 k req/min を超える高速連続クエリ | クライアント側で指数バックオフ実装、またはプランアップグレード(上限緩和) |
| クラスタ起動失敗 | バックアップポリシーが別リージョンに設定されている | 同一リージョンの S3 バケットへ変更し再作成 |
エラーログはコンソールの Logs タブ で確認可能です。
error_codeとmessageを組み合わせて検索すると原因特定が迅速に行えます。
6. まとめ
- プラン選択: Free は PoC、Pay‑as‑you‑go が本番向き。公式料金は随時変わるので最新情報を必ず確認してください。
- アカウント作成: メール認証 → 組織・プロジェクト設定 → 課金情報登録(Free でも必要)で完了します。
- クラスタ構築: リージョン、サイズ、自動スケーリング、バックアップポリシーを決めたらコンソールで作成し、生成された
<cluster-host>とパスワードを環境変数で管理してください。 - 接続方法: CLI、JDBC/ODBC、HTTP API、Python driver のサンプルはすべて TLS が自動有効化されます。プレースホルダーは必ず実際の値に置き換えて利用しましょう。
- テーブル設計: Distributed とローカル MergeTree を組み合わせ、パーティションキーでデータを分割するとスケーラビリティが向上します。CSV/TSV アップロード・バルク INSERT・S3 COPY のいずれかでインポートしてください。
- 運用とコスト最適化: Prometheus → Grafana でメトリクス可視化、アラート設定を行い、自動スケーリングやクエリキャッシュで無駄な課金を抑制します。一般的な障害はログ確認と設定見直しで迅速に復旧できます。
本ガイドの手順通りに実装すれば、ClickHouse Cloud を安全かつ効率的に導入・運用できるはずです。ぜひ自社のデータ分析基盤構築に活用してください。