Ingestion
Option A : ClickPipes (Managed, ClickHouse Cloud uniquement)
- Streaming : Apache Kafka (y compris MSK, Confluent Cloud, Redpanda, Azure Event Hubs, WarpStream), Amazon Kinesis
- Object storage : Amazon S3 (et les stockages compatibles S3), Google Cloud Storage, Azure Blob Storage
- CDC : PostgreSQL, MySQL, MongoDB, BigQuery
Voie B : ingestion autogérée via un client officiel
- Clients officiels : Python, Go, Java, JavaScript, Rust, C#, C++
- Les deux protocoles de communication : HTTP (tous les clients) et TCP natif (clients Go et C++ uniquement)
- Authentification : nom d’utilisateur et mot de passe via TLS par défaut ; mTLS et l’authentification SSL par certificat client sont pris en charge par tous les principaux clients
- Le format des données est généralement un détail d’implémentation. Les clients convertissent les types du runtime au format ClickHouse Native ou RowBinary. Si vous produisez déjà de l’Arrow, du Parquet, du JSONEachRow ou un autre format, la plupart des clients exposent une API d’octets bruts pour les données présérialisées
- Pour le débit, regroupez 10K–100K lignes par lot et visez environ une insertion par seconde comme limite supérieure pour les insertions synchrones. Si la mise en lot côté client n’est pas pratique, utilisez les insertions asynchrones pour déplacer le batching vers le serveur
Consommation
- Code d’application : utilisez les mêmes clients officiels que pour l’ingestion
- Outils BI et SQL : ClickHouse fournit un pilote JDBC v2 officiel (Java) et un pilote ODBC. Tableau, Looker, Power BI, Metabase, Apache Superset et Grafana s’intègrent via ces pilotes ou des connecteurs dédiés maintenus par ClickHouse et ses partenaires
- Format de résultat : les clients gèrent généralement eux-mêmes la sérialisation. Vous pouvez demander Arrow, Parquet ou d’autres formats colonnaires pour le transfert si votre produit en a besoin
Dimensionnement des ensembles de résultats
SELECT * non borné sur une grande table de faits peut déplacer des téraoctets. Définissez la requête côté application : utilisez LIMIT, la pagination, la lecture en streaming et des listes explicites de colonnes. Si vous créez des fonctionnalités analytiques destinées aux utilisateurs, considérez les ensembles de résultats non bornés comme un problème d’UX, pas comme un problème de transport.
ClickHouse dispose d’un système de types riche : arrays, tuples, maps, JSON, nested, LowCardinality, etc. Les clients officiels convertissent ces types en types idiomatiques du langage. Si votre produit expose des données ClickHouse aux utilisateurs finaux, prévoyez tôt une stratégie de correspondance des types.
Prochaines étapes
Convention de chaîne user-agent
User-Agent qui identifie votre intégration. ClickHouse l’analyse côté serveur pour suivre son adoption, faire remonter des données de télémétrie d’usage et orienter la feuille de route.
Format :
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)
- Aucun espace dans le nom ou la version du client
- Si vous ajoutez un commentaire, il doit apparaître en premier
- Clés de métadonnées standard :
lv(version du langage ou du framework),os,arch - Les clients TCP et utilisant le protocole natif indiquent le nom et la version du client via des champs du protocole, et non via
User-Agent
User-Agent et les champs associés.