clickhouse-cpp — официальная клиентская библиотека ClickHouse для C++, предоставляющая быстрый и типобезопасный
интерфейс к ClickHouse через его нативный бинарный протокол.
Инструкции по сборке, примеры использования и дополнительная документация доступны в
GitHub-репозитории проекта: https://github.com/ClickHouse/clickhouse-cpp.
Библиотека находится в активной разработке. Хотя она уже поддерживает основную функциональность ClickHouse,
некоторые возможности и типы данных пока могут быть реализованы не полностью или не поддерживаться.Ваши отзывы очень важны и помогают определять приоритеты новых возможностей и
улучшений. Если вы столкнулись с ограничениями, отсутствующей функциональностью или неожиданным поведением, пожалуйста,
поделитесь своими наблюдениями или запросами на новые возможности через трекер задач по адресу
https://github.com/ClickHouse/clickhouse-cpp/issues
Подключение библиотеки к проекту
FetchContent.
Этот подход позволяет зафиксировать точную версию библиотеки и собирать её в рамках обычного
рабочего процесса CMake.
WITH_OPENSSL включает поддержку TLS в библиотеке и требуется при подключении к
ClickHouse Cloud или другим развертываниям ClickHouse с поддержкой SSL. Хотя для подключений без TLS
её можно не включать, в целом рекомендуется включить её.
Для сборки с поддержкой SSL необходимо установить пакеты разработки OpenSSL. Установите
libssl-dev в Debian, Ubuntu или их производных; openssl-devel для Fedora, Red Hat; или
openssl в macOS через Homebrew.
После установки зависимости свяжите целевой объект с экспортируемой библиотечной целью:
Примеры
Настройка объекта клиента
Client, чтобы установить соединение с ClickHouse. В следующем примере
показано подключение к локальному экземпляру ClickHouse, где пароль не требуется и SSL не
включен.
Создание таблиц и выполнение запросов без возврата данных
Execute.
Тот же подход применяется и к другим командам, таким как ALTER TABLE, DROP и т. д.
Вставка данных
Block и заполните его объектами столбцов в соответствии со
схемой таблицы. Данные добавляются по столбцам, а затем вставляются одной операцией с помощью
метода Insert, оптимизированного для эффективной пакетной записи.
Выборка данных
Select и передайте функцию обратного вызова для обработки
результата. Результаты запроса возвращаются в виде объектов Block, что отражает нативное
столбцовое представление данных в ClickHouse.
Поддерживаемые типы данных
UInt8,UInt16,UInt32,UInt64,Int8,Int16,Int32,Int64UInt128,Int128Decimal32,Decimal64,Decimal128Float32,Float64DateDateTime,DateTime64DateTime([timezone]),DateTime64(N, [timezone])UUIDEnum8,Enum16StringFixedString(N)LowCardinality(String)иLowCardinality(FixedString(N))Nullable(T)Array(T)TupleMapIPv4,IPv6Point,Ring,Polygon,MultiPolygon