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 オブジェクトの設定
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