Inicio rápido
Datos de conexión
Los detalles de su servicio de ClickHouse Cloud están disponibles en la consola de ClickHouse Cloud.
Seleccione el servicio al que se conectará y haga clic en Connect:
Seleccione Native; los detalles se muestran en un comando de ejemplo de
clickhouse-client.
Si usa ClickHouse autogestionado, los detalles de la conexión los establece su administrador de ClickHouse.
Inicializar un módulo
Copia un ejemplo de código
clickhouse-golang-example como main.go.
main.go
Ejecutar go mod tidy
Configura tus datos de conexión
main.go, en la función connect():
Ejecutar el ejemplo
Más información
Descripción general
- clickhouse-go - Cliente de alto nivel que admite tanto la interfaz estándar
database/sqlde Go como la API nativa de ClickHouse. - ch-go - Cliente de bajo nivel. Solo interfaz nativa.
Cuatro formas de conectarse
Elegir una API: Elige ClickHouse API para obtener el máximo rendimiento y todas las funcionalidades (callbacks de progreso, inserciones columnares y compatibilidad avanzada de tipos). Elige
database/sql cuando necesites integrarte con ORMs o herramientas que esperan una interfaz estándar de base de datos de Go.
Elegir un transporte: TCP es más rápido y es la opción predeterminada. Cambia a HTTP cuando tu infraestructura lo requiera; por ejemplo, al conectarte a través de un balanceador de carga HTTP o un proxy, o cuando necesites funciones específicas de HTTP, como sesiones con tablas temporales o algoritmos de compresión adicionales (gzip, deflate, br).
Ambas APIs usan codificación binaria nativa independientemente del transporte, por lo que HTTP no añade sobrecarga de serialización.
Elegir un cliente
interface{} (any), lo que simplifica su uso.
Para cargas de trabajo de consultas centradas en agregaciones o cargas de trabajo de inserción con menor throughput, clickhouse-go proporciona una interfaz database/sql conocida y una semántica de filas más sencilla. También puede usar HTTP opcionalmente como protocolo de transporte y aprovechar funciones auxiliares para serializar y deserializar filas hacia y desde structs.
Instalación
require github.com/ClickHouse/clickhouse-go/v2 main
O bien, clona el repositorio:
Versiones
Compatibilidad con ClickHouse
- Todas las versiones de ClickHouse compatibles actualmente, como se indica aquí. A medida que las versiones de ClickHouse dejan de tener soporte, también dejan de probarse activamente con las versiones del cliente.
- Todas las versiones de ClickHouse durante los 2 años posteriores a la fecha de lanzamiento del cliente. Ten en cuenta que solo las versiones LTS se prueban activamente.
Compatibilidad con Go
buenas prácticas
- Utilice la API de ClickHouse siempre que sea posible, especialmente para tipos primitivos. Esto evita una reflexión y una indirección significativas.
- Si lee conjuntos de datos grandes, considere modificar
BlockBufferSize. Esto aumentará el uso de memoria, pero permitirá decodificar más bloques en paralelo durante la iteración de filas. El valor predeterminado de 2 es conservador y minimiza la sobrecarga de memoria. Los valores más altos implicarán más bloques en memoria. Esto requiere pruebas, ya que distintas consultas pueden producir bloques de distintos tamaños. Por lo tanto, también puede establecerse a nivel de consulta mediante el Context. - Sea específico con los tipos al insertar datos. Aunque el cliente busca ser flexible, por ejemplo, permitiendo analizar cadenas como UUID o IP, esto requiere validación de datos y supone un coste en el momento de la inserción.
- Utilice inserciones orientadas a columna siempre que sea posible. De nuevo, estas deben estar fuertemente tipadas para evitar que el cliente tenga que convertir sus valores.
- Siga las recomendaciones de ClickHouse para lograr un rendimiento de inserción óptimo.
Siguientes pasos
- Configuración — ajustes de conexión, TLS, autenticación, registro y compresión
- ClickHouse API — API nativa de Go para consultas e inserciones
- API de base de datos/SQL — interfaz estándar
database/sql - Tipos de datos — correspondencia de tipos de Go y compatibilidad con tipos complejos