Об этом проекте

chconn — это драйвер на чистом Go для ClickHouse, который взаимодействует через нативный TCP-протокол и оптимизирован для высокопроизводительного колоночного доступа к данным. Он поддерживает полноценные дженерики, обеспечивая типобезопасные колоночные операции как для вставки, так и для выборки. Ключевые возможности: - **Колоночная вставка и выборка**: добавление данных в типизированные колонки и массовая вставка или чтение блок за блоком для максимальной пропускной способности. - **Строчно-ориентированные запросы**: привычная итерация в стиле SQL с помощью `Query` и `Scan`. - **Сканирование в структуры**: прямое отображение результатов в структуры Go по имени или позиции поля, с опциями `RowToStructByName`, `RowToStructByNameLax`, `RowToStructByPos` и `RowTo`. - **Потоковая вставка**: добавление строк или запись колоночных пакетов для многопакетных вставок. - **Параметризованные запросы**: типобезопасные параметры запросов с использованием нативного синтаксиса ClickHouse. - **Пул соединений**: настраиваемый пул с минимальным и максимальным числом соединений, временем жизни, временем простоя и проверками работоспособности. - **Всесторонняя поддержка типов**: включает числовые типы, строки, даты, UUID, IP-адреса, перечисления, массивы, nullable, low cardinality, maps, tuples, nested, JSON, variants, dynamic, геотипы и многое другое. - **Сжатие**: поддержка LZ4 и ZSTD. - **TLS/SSL**: несколько режимов SSL. - **Генератор кода (chgen)**: генерация структур моделей Go и объявлений колонок из таблиц ClickHouse или SQL-файлов. - **Конструктор SQL**: fluent-конструктор для запросов SELECT с объединениями, условиями, группировкой и многим другим. - **Экспорт JSON**: экспорт результатов запросов в виде объектов JSON, массивов или построчно. - **Обратные вызовы прогресса и профиля**: мониторинг выполнения запросов в реальном времени. - **Обработка ошибок**: типизированные ошибки ClickHouse с кодами и трассировками стека, а также sentinel-ошибки. - **Поддержка контекста**: все операции принимают контекст для тайм-аутов и отмены. Поддерживаются две последние стабильные версии Go и ClickHouse 24.3+. Драйвер протестирован на ClickHouse 24.3, 24.8, 25.3, 25.8 и 26.2. Бенчмарки показывают значительное улучшение производительности и выделения памяти по сравнению с другими Go-драйверами для ClickHouse.