clickhouse-cpp は ClickHouse 向けの公式 C++クライアントライブラリで、ネイティブのバイナリプロトコルを使用して
ClickHouse への高速で型安全なインターフェイスを提供します。
ビルド手順、使用例、追加のドキュメントは、このプロジェクトの
GitHubリポジトリで確認できます: https://github.com/ClickHouse/clickhouse-cpp.
このライブラリは現在も活発に開発が進められています。すでに ClickHouse の中核機能はサポートしていますが、
一部の機能やデータ型は、まだ完全には実装またはサポートされていない場合があります。皆様からのフィードバックは非常に貴重であり、新機能や
改善の優先順位付けに役立ちます。制限事項、未実装の機能、または予期しない動作に遭遇した場合は、
issue tracker からご意見や機能要望をお寄せください:
https://github.com/ClickHouse/clickhouse-cpp/issues
ライブラリをプロジェクトに組み込む
FetchContent
モジュールを使うことです。この方法なら、ライブラリのバージョンを厳密に固定したうえで、通常の
CMake ワークフローの一部としてビルドできます。
WITH_OPENSSL オプションを有効にすると、ライブラリで TLS がサポートされ、
ClickHouse Cloud やその他の SSL 対応 ClickHouse デプロイメントへの接続に必要となります。非 TLS
接続では省略できますが、通常は有効にすることを推奨します。
SSL サポートを有効にしてビルドするには、OpenSSL の開発用パッケージがインストールされている必要があります。Debian、
Ubuntu またはその派生ディストリビューションでは libssl-dev、Fedora および Red Hat では openssl-devel、
macOS では Homebrew を使用して openssl をインストールしてください。
依存関係を利用できるようにしたら、エクスポートされたライブラリターゲットに対してターゲットをリンクします。
例
クライアントオブジェクトの設定
Client インスタンスを作成します。次の例では、
パスワードが不要で、SSL が有効になっていないローカルの ClickHouse インスタンスに接続する方法を
示します。
データを返さないテーブル作成とクエリの実行
Execute メソッドを使用します。
この方法は、ALTER TABLE や DROP などの他のステートメントにも適用できます。
データの挿入
Block を作成し、テーブルのスキーマに一致するカラムオブジェクトを格納します。データはカラムごとに追加され、その後、効率的なバッチ書き込み向けに最適化された Insert メソッドを使用して、1 回の操作で挿入します。
データの選択
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