clickhouse-cpp — официальная клиентская библиотека ClickHouse для C++, предоставляющая быстрый и типобезопасный
интерфейс к ClickHouse через его native-бинарный протокол.
Инструкции по сборке, примеры использования и дополнительная документация доступны в 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