Ingestão
Caminho A: ClickPipes (gerenciado, somente no ClickHouse Cloud)
- Streaming: Apache Kafka (incluindo MSK, Confluent Cloud, Redpanda, Azure Event Hubs, WarpStream), Amazon Kinesis
- Armazenamento de objetos: Amazon S3 (e armazenamentos compatíveis com S3), Google Cloud Storage, Azure Blob Storage
- CDC: PostgreSQL, MySQL, MongoDB, BigQuery
Caminho B: ingestão autogerida por meio de um cliente oficial de linguagem
- Clientes oficiais: Python, Go, Java, JavaScript, Rust, C#, C++
- Ambos os protocolos wire: HTTP (todos os clientes) e TCP nativo (apenas clientes Go e C++)
- Autenticação: nome de usuário e senha via TLS por padrão; mTLS e autenticação SSL com certificado de cliente são compatíveis com todos os principais clientes
- O formato dos dados normalmente é um detalhe de implementação. Os clientes convertem tipos de runtime para ClickHouse Native ou RowBinary format. Se você já produz Arrow, Parquet, JSONEachRow ou outro format, a maioria dos clientes expõe uma API de bytes brutos para dados pré-serializados
- Para maior vazão, processe em lotes de 10 mil a 100 mil linhas e tenha como meta aproximadamente uma inserção por segundo como limite superior para inserções síncronas. Se o processamento em lotes no lado do cliente for impraticável, use inserções assíncronas para transferir esse processamento para o servidor
Consumo
- Código da aplicação: use os mesmos clientes oficiais de linguagem usados na ingestão
- Ferramentas de BI e SQL: o ClickHouse oferece um driver JDBC v2 oficial (Java) e um driver ODBC. Tableau, Looker, Power BI, Metabase, Apache Superset e Grafana se integram por meio desses drivers ou de conectores dedicados mantidos pela ClickHouse e por parceiros
- Formato de resultado: os clientes normalmente controlam a serialização. Você pode solicitar Arrow, Parquet ou outros formatos colunares via wire, se o seu produto precisar deles
Dimensionamento do conjunto de resultados
SELECT * sem limite em uma tabela de fatos grande pode movimentar terabytes. Modele a requisição na sua aplicação: use LIMIT, paginação, leituras em streaming e listas explícitas de colunas. Se você cria análises voltadas para o usuário, trate conjuntos de resultados não limitados como um problema de UX, não de transporte.
O ClickHouse tem um sistema de tipos rico: arrays, tuplas, maps, JSON, nested, LowCardinality e muito mais. Os clientes oficiais mapeiam esses tipos para tipos idiomáticos da linguagem. Se o seu produto expõe dados do ClickHouse aos usuários finais, planeje cedo uma estratégia de mapeamento de tipos.
Próximos passos
Convenção da string user-agent
User-Agent que identifique sua integração. O ClickHouse analisa isso no servidor para acompanhar a adoção, gerar telemetria de uso e orientar o roadmap.
Formato:
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)
- Sem espaços no nome nem na versão do cliente
- Se você incluir um comentário, ele deve vir primeiro
- Chaves de metadados padrão:
lv(versão da linguagem ou do framework),os,arch - Clientes TCP e do protocolo nativo informam o nome e a versão do cliente por meio de campos do protocolo, não de
User-Agent
User-Agent e campos relacionados.