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