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
Client, чтобы установить соединение с ClickHouse. В следующем примере
показано, как подключиться к локальному экземпляру ClickHouse, для которого не требуется пароль и не
включен SSL.
Создание таблиц и выполнение запросов без возврата данных
Execute.
То же самое относится и к другим операторам, таким как ALTER TABLE, DROP и т. д.
Вставка данных
Block и заполните его объектами столбцов, соответствующими
схеме таблицы. Данные добавляются столбец за столбцом, а затем вставляются одной операцией с помощью
метода Insert, оптимизированного для эффективной записи батчей.
Выборка данных
Select и передайте callback для обработки
результата. Результаты запроса возвращаются в виде объектов 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