BigQuery ClickPipe предоставляет полностью управляемый и отказоустойчивый способ приёма данных из BigQuery в ClickHouse Cloud. В закрытой предварительной версии поддерживается метод репликации первоначальной загрузки, который позволяет массово загружать наборы данных BigQuery для анализа и прототипирования. Поддержка CDC появится в будущем — а пока мы рекомендуем использовать Google Cloud Storage ClickPipe, чтобы после завершения первоначальной загрузки непрерывно синхронизировать экспортированные из BigQuery данные с ClickHouse Cloud.
BigQuery ClickPipes можно вручную развёртывать и настраивать через интерфейс ClickPipes, а также программно с помощью OpenAPI и Terraform.
Возможности
Начальная загрузка
ClickPipe для BigQuery загрузит выбранные таблицы из набора данных BigQuery в целевые таблицы ClickHouse одной батч-операцией. После завершения задачи по ингестии ClickPipe автоматически останавливается. Для процесса ингестии при начальной загрузке требуется предоставленный пользователем GCS-бакет в качестве промежуточного хранилища. В будущем этот промежуточный бакет будет предоставляться и управляться ClickPipes.
CDC (фиксация изменений данных)
CDC не поддерживается в закрытой предварительной версии, но будет поддерживаться в будущем. Пока мы рекомендуем использовать ClickPipe для Google Cloud Storage, чтобы после завершения начальной загрузки непрерывно синхронизировать экспортированные из 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, чтобы ограничить ресурсы, к которым у роли есть доступ. Например, роль dataViewer можно ограничить конкретным набором данных, содержащим таблицы, которые вы хотите синхронизировать:
resource.name.startsWith("projects/<PROJECT_ID>/datasets/<DATASET_NAME>")Cloud Storage
Сервисный аккаунт должен иметь следующие роли Cloud Storage:
Чтобы дополнительно сузить область доступа, мы рекомендуем использовать условия IAM, чтобы ограничить ресурсы, к которым у роли есть доступ. Например, можно ограничить роли objectAdmin и bucketViewer, предоставив им доступ только к выделенному бакету, созданному для синхронизации ClickPipes.
resource.name.startsWith("projects/_/buckets/<BUCKET_NAME>")