BigQuery と ClickHouse Cloud の統合
Private Preview のウェイトリストにはこちらから登録できます。
BigQuery ClickPipe は、BigQuery から ClickHouse Cloud へデータを取り込むための、フルマネージドで高い堅牢性を備えた手段を提供します。Private Preview では、探索やプロトタイピングのために BigQuery データセットを一括ロードするのに役立つ initial load レプリケーション方式をサポートしています。将来的には CDC(変更データキャプチャ) にも対応予定です。それまでは、initial load が完了した後に BigQuery のデータエクスポートを ClickHouse Cloud へ継続的に同期する手段として、Google Cloud Storage ClickPipe の利用を推奨します。
BigQuery ClickPipes は、ClickPipes UI を使用して手動でデプロイおよび管理できるほか、OpenAPI および Terraform を用いてプログラムから管理することもできます。
機能
初回ロード
BigQuery ClickPipe は、選択された BigQuery の dataset 内のテーブルを、単一のバッチ処理で ClickHouse の宛先テーブルにロードします。インジェストタスクが完了すると、ClickPipe は自動的に停止します。初回ロードのインジェスト処理では、ステージング用にユーザーが用意した Google Cloud Storage (GCS) バケットが必要です。将来的には、この中間バケットは ClickPipes によって提供および管理される予定です。
ClickPipes は、BigQuery からステージング用 GCS バケットにデータを取得するためにバッチ抽出ジョブを使用します。この処理によって、BigQuery において 処理料金が発生することはありません。
CDC(変更データキャプチャ)
CDC は Private Preview ではサポートされていませんが、今後サポートされる予定です。それまでの間は、初回ロード完了後に Google Cloud Storage ClickPipe を使用して、BigQuery のデータエクスポートを ClickHouse Cloud と継続的に同期することを推奨します。
データ型マッピング
| BigQuery データ型 | ClickHouse データ型 | 詳細 |
|---|---|---|
BOOL | Bool | |
INT64 | Int64 | |
FLOAT64 | Float64 | |
NUMERIC | Decimal(P, S) | 精度は最大 38、スケールは最大 9 で、精度とスケールは保持されます。 |
BIGNUMERIC | Decimal(P, S) | 精度は最大 76、スケールは最大 38 で、精度とスケールは保持されます。 |
STRING | String | |
BYTES | String | |
JSON | String (JSON) | |
DATE | Date | |
TIME | String | マイクロ秒精度。 |
DATETIME | DateTime | マイクロ秒精度。 |
TIMESTAMP | DateTime64(6) | マイクロ秒精度。 |
GEOGRAPHY | String | |
GEOMETRY | String | |
UUID | String | |
ARRAY<T> | Array(T) | |
ARRAY<DATE> | Array(Date) | |
STRUCT (RECORD) | String |
アクセス制御
認証
サービス アカウントの認証情報
ClickPipes は、サービス アカウント キー を使用して Google Cloud プロジェクトに対して認証します。ClickPipes が BigQuery からデータをエクスポートし、それをステージング用の GCS バケットにロードし、さらに ClickHouse に取り込めるようにするために、必要最小限の権限のみを付与した専用のサービス アカウントを作成することを推奨します。

権限
BigQuery
サービス アカウントには、次の BigQuery ロールが必要です。
アクセス範囲をさらに絞り込むには、ロールがアクセスできるリソースを制限するために IAM conditions を使用することを推奨します。たとえば、同期したいテーブルを含む特定のデータセットに対してのみ dataViewer ロールを付与するように制限できます。
Cloud Storage
サービス アカウントには、次の Cloud Storage ロールが必要です:
アクセス範囲をさらに絞り込むには、IAM conditions を使用して、これらのロールがアクセス可能なリソースを制限することを推奨します。たとえば、objectAdmin と bucketViewer ロールを、ClickPipes の同期用に作成した専用バケットに限定できます。