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