BigQuery ClickPipe 提供了一种完全托管且具备高弹性的方式,可将 BigQuery 中的数据摄取到 ClickHouse Cloud。在私有预览阶段,它支持 initial load 复制方法,帮助你批量加载 BigQuery 数据集,以便进行探索和原型验证。未来将支持 CDC (变更数据捕获) ;在此之前,我们建议你在 initial load 完成后,使用 Google Cloud Storage ClickPipe 持续将 BigQuery 导出的数据同步到 ClickHouse Cloud。
BigQuery ClickPipes 既可通过 ClickPipes UI 手动部署和管理,也可通过 OpenAPI 和 Terraform 以编程方式进行部署和管理。
BigQuery ClickPipe 会通过一次批量操作,将 BigQuery 数据集 中选定的表加载到 ClickHouse 目标表中。摄取任务完成后,ClickPipe 会自动停止。初始加载的摄取过程需要用户提供一个 Google Cloud Storage (GCS) 存储桶作为暂存空间。未来,这个中间存储桶将由 ClickPipes 提供并管理。
ClickPipes 依赖批量提取作业将数据从 BigQuery 拉取到用于暂存的 GCS 存储桶中。此操作在 BigQuery 中不会产生处理费用。
CDC 在私有预览阶段暂不支持,但未来会提供支持。在此期间,我们建议在完成初始加载后,使用 Google Cloud Storage ClickPipe 持续将 BigQuery 导出的数据同步到 ClickHouse Cloud。
BigQuery 数据类型。
| 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 角色:
为进一步缩小访问范围,我们建议使用 IAM 条件 来限制该角色可访问的资源。例如,你可以将 dataViewer 角色限制为仅可访问包含待同步表的特定数据集:
resource.name.startsWith("projects/<PROJECT_ID>/datasets/<DATASET_NAME>")
服务账号必须具备以下 Cloud Storage 角色:
为进一步收窄访问范围,我们建议使用 IAM 条件 来限制角色可访问的资源。例如,你可以将 objectAdmin 和 bucketViewer 角色限制为只能访问专门为 ClickPipes 同步创建的存储桶。
resource.name.startsWith("projects/_/buckets/<BUCKET_NAME>")