Ингестия
Path A: ClickPipes (управляемый сервис, Только в ClickHouse Cloud)
- Стриминг: Apache Kafka (включая MSK, Confluent Cloud, Redpanda, Azure Event Hubs, WarpStream), Amazon Kinesis
- Объектное хранилище: Amazon S3 (и S3-совместимые хранилища), Google Cloud Storage, Azure Blob Storage
- CDC: PostgreSQL, MySQL, MongoDB, BigQuery
Путь B: Самостоятельная ингестия через официальный клиент для языка программирования
- Официальные клиенты: Python, Go, Java, JavaScript, Rust, C#, C++
- Оба протокола: HTTP (все клиенты) и нативный TCP (только клиенты Go и C++)
- Аутентификация: по умолчанию — имя пользователя и пароль через TLS; mTLS и аутентификация по клиентским SSL-сертификатам поддерживаются всеми основными клиентами
- Формат данных обычно остаётся деталью реализации. Клиенты преобразуют типы среды выполнения в формат ClickHouse Native или RowBinary. Если вы уже формируете Arrow, Parquet, JSONEachRow или другой формат, большинство клиентов предоставляют API для передачи сырых байтов с уже сериализованными данными
- Для высокой пропускной способности объединяйте 10K–100K строк в батч и ориентируйтесь примерно на одну вставку в секунду как на верхний предел для синхронных вставок. Если батчинг на стороне клиента непрактичен, используйте асинхронные вставки, чтобы перенести батчинг на сервер
Использование
- Прикладной код: используйте те же официальные клиенты для языков программирования, что и для ингестии
- BI- и SQL-инструменты: ClickHouse поставляет официальный драйвер JDBC v2 (Java) и драйвер ODBC. Tableau, Looker, Power BI, Metabase, Apache Superset и Grafana интегрируются через эти драйверы или специализированные коннекторы, поддерживаемые ClickHouse и партнёрами
- Формат результатов: обычно за сериализацию отвечают клиенты. Если вашему продукту это требуется, можно запрашивать Arrow, Parquet или другие столбцовые форматы при передаче данных
Размер результирующего набора
SELECT * по большой таблице фактов может передавать терабайты данных. Формируйте запрос на уровне приложения: используйте LIMIT, пагинацию, потоковое чтение и явные списки столбцов. Если вы разрабатываете пользовательскую аналитику, рассматривайте неограниченные результирующие наборы как проблему UX, а не передачи данных.
В ClickHouse богатая система типов: Array, Tuple, Map, JSON, Nested, LowCardinality и другие. Официальные клиенты сопоставляют их с идиоматическими типами языка. Если ваш продукт показывает данные ClickHouse конечным пользователям, заранее продумайте стратегию сопоставления типов.
Дальнейшие шаги
Соглашение о строке User-Agent
User-Agent, которая идентифицирует вашу интеграцию. ClickHouse разбирает её на стороне сервера, чтобы отслеживать распространение интеграции, собирать телеметрию использования и определять дальнейшее развитие продукта.
Формат:
clickhouse-java/0.8.0my-analytics-app/3.1.2 clickhouse-js/1.2.0 (env: staging; region: us-east-1; lv: node/20.10)
- В имени и версии клиента не должно быть пробелов
- Если вы добавляете комментарий, он должен идти первым
- Стандартные ключи метаданных:
lv(версия языка или фреймворка),os,arch - Клиенты TCP и собственного протокола передают имя и версию клиента через поля протокола, а не через
User-Agent
User-Agent и связанные с ним поля.