Démarrage rapide
Détails de connexion
Les détails de votre service ClickHouse Cloud sont disponibles dans la console ClickHouse Cloud.
Sélectionnez le service auquel vous allez vous connecter, puis cliquez sur Connect :
Choisissez Native ; les détails sont disponibles dans un exemple de commande
clickhouse-client.
Si vous utilisez une instance ClickHouse autogérée, les détails de connexion sont définis par votre administrateur ClickHouse.
Initialiser un module
Copiez un exemple de code
clickhouse-golang-example sous le nom main.go.
main.go
Lancez go mod tidy
Configurez vos détails de connexion
main.go, dans la fonction connect() :
Exécuter l’exemple
En savoir plus
Vue d’ensemble
- clickhouse-go - Client Go de haut niveau qui prend en charge soit l’interface
database/sqlstandard de Go, soit l’API native de ClickHouse. - ch-go - Client de bas niveau. Interface native uniquement.
Quatre façons de se connecter
Choisir une API : choisissez la ClickHouse API pour des performances maximales et l’ensemble complet des fonctionnalités (callbacks de progression, insertions en colonnes, prise en charge étendue des types). Choisissez
database/sql lorsque vous devez l’intégrer à des ORM ou à des outils qui attendent une interface Go standard de base de données.
Choisir un transport : TCP est plus rapide et c’est le mode par défaut. Passez à HTTP lorsque votre infrastructure l’exige — par exemple, si vous vous connectez via un proxy HTTP ou un load balancer HTTP, ou si vous avez besoin de fonctionnalités propres à HTTP comme les sessions avec des tables temporaires, ou d’algorithmes de Compression supplémentaires (gzip, deflate, br).
Les deux API utilisent l’encodage binaire natif quel que soit le transport, donc HTTP n’ajoute aucun surcoût de sérialisation.
Choisir un client
interface{} (any), ce qui simplifie son utilisation.
Pour les workloads de requête axés sur les agrégations, ou pour des workloads d’insertion à plus faible débit, clickhouse-go fournit une interface database/sql familière et une sémantique orientée lignes plus simple. Vous pouvez également utiliser HTTP comme protocole de transport, si nécessaire, et tirer parti de fonctions utilitaires pour sérialiser et désérialiser des lignes vers et depuis des structs.
Installation
require github.com/ClickHouse/clickhouse-go/v2 main
Ou clonez le dépôt :
Versions
Compatibilité avec ClickHouse
- Toutes les versions de ClickHouse actuellement prises en charge, comme indiqué ici. Lorsqu’une version de ClickHouse n’est plus prise en charge, elle n’est plus non plus testée activement avec les versions du client.
- Toutes les versions de ClickHouse pendant les 2 ans suivant la date de sortie du client. Notez que seules les versions LTS sont testées activement.
Compatibilité de Golang
Bonnes pratiques
- Utilisez l’ClickHouse API lorsque c’est possible, en particulier pour les types primitifs. Cela évite une réflexion et une indirection importantes.
- Si vous lisez de grands jeux de données, envisagez de modifier le paramètre
BlockBufferSize. Cela augmentera l’empreinte mémoire, mais permettra de décoder davantage de blocs en parallèle lors de l’itération sur les lignes. La valeur par défaut de 2 est prudente et minimise la surcharge mémoire. Des valeurs plus élevées signifient davantage de blocs en mémoire. Cela nécessite donc des tests, car différentes requêtes peuvent produire des tailles de bloc différentes. Ce paramètre peut donc être défini au niveau de la requête via le Context. - Soyez précis quant à vos types lors de l’insertion de données. Bien que le client cherche à être flexible, par exemple en permettant d’analyser des chaînes en UUID ou en adresses IP, cela nécessite une validation des données et entraîne un coût au moment de l’insertion.
- Utilisez des insertions orientées colonnes lorsque c’est possible. Là encore, elles doivent être fortement typées afin d’éviter que le client n’ait à convertir vos valeurs.
- Suivez les recommandations de ClickHouse pour obtenir des performances d’insertion optimales.
Étapes suivantes
- Configuration — paramètres de connexion, TLS, authentification, journalisation, compression
- ClickHouse API — API Go native pour les requêtes et les insertions
- API database/sql — interface
database/sqlstandard - Types de données — correspondances de types Go et prise en charge des types complexes