Клиентская библиотека C++
clickhouse-cpp — это официальная клиентская библиотека C++ для ClickHouse, обеспечивающая
быстрый и типобезопасный интерфейс к ClickHouse с использованием его нативного бинарного протокола.
Инструкции по сборке, примеры использования и дополнительная документация доступны в репозитории проекта на GitHub: https://github.com/ClickHouse/clickhouse-cpp.
Библиотека активно развивается. Хотя она уже поддерживает основную функциональность ClickHouse, некоторые возможности и типы данных могут пока ещё быть не полностью реализованы или поддерживаться не в полном объёме.
Ваши отзывы чрезвычайно важны и помогают расставлять приоритеты для разработки новых возможностей и улучшений. Если вы столкнётесь с ограничениями, отсутствующей функциональностью или неожиданным поведением, пожалуйста, поделитесь своими наблюдениями или запросами новых функций через трекер задач по адресу https://github.com/ClickHouse/clickhouse-cpp/issues
Подключение библиотеки к вашему проекту
Самый простой способ добавить библиотеку в проект — использовать модуль CMake 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
не используется.
В более сложных конфигурациях требуется дополнительная настройка. В следующем примере показано подключение к экземпляру ClickHouse Cloud с использованием нескольких дополнительных параметров:
Создание таблиц и выполнение запросов без данных
Чтобы выполнить запрос, который не возвращает данные, например для создания таблиц, используйте метод 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