メインコンテンツへスキップ
メインコンテンツへスキップ

BigQuery と ClickHouse Cloud の統合

Private preview in 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 データ型

BigQuery データ型ClickHouse データ型詳細
BOOLBool
INT64Int64
FLOAT64Float64
NUMERICDecimal(P, S)精度は最大 38、スケールは最大 9 で、精度とスケールは保持されます。
BIGNUMERICDecimal(P, S)精度は最大 76、スケールは最大 38 で、精度とスケールは保持されます。
STRINGString
BYTESString
JSONString (JSON)
DATEDate
TIMEStringマイクロ秒精度。
DATETIMEDateTimeマイクロ秒精度。
TIMESTAMPDateTime64(6)マイクロ秒精度。
GEOGRAPHYString
GEOMETRYString
UUIDString
ARRAY<T>Array(T)
ARRAY<DATE>Array(Date)
STRUCT (RECORD)String

アクセス制御

認証

サービス アカウントの認証情報

ClickPipes は、サービス アカウント キー を使用して Google Cloud プロジェクトに対して認証します。ClickPipes が BigQuery からデータをエクスポートし、それをステージング用の GCS バケットにロードし、さらに ClickHouse に取り込めるようにするために、必要最小限の権限のみを付与した専用のサービス アカウントを作成することを推奨します。

BigQuery と Cloud Storage の権限を持つサービス アカウント キーの作成

権限

BigQuery

サービス アカウントには、次の BigQuery ロールが必要です。

アクセス範囲をさらに絞り込むには、ロールがアクセスできるリソースを制限するために IAM conditions を使用することを推奨します。たとえば、同期したいテーブルを含む特定のデータセットに対してのみ dataViewer ロールを付与するように制限できます。

resource.name.startsWith("projects/<PROJECT_ID>/datasets/<DATASET_NAME>")

Cloud Storage

サービス アカウントには、次の Cloud Storage ロールが必要です:

アクセス範囲をさらに絞り込むには、IAM conditions を使用して、これらのロールがアクセス可能なリソースを制限することを推奨します。たとえば、objectAdminbucketViewer ロールを、ClickPipes の同期用に作成した専用バケットに限定できます。

resource.name.startsWith("projects/_/buckets/<BUCKET_NAME>")