Skip to main content

はじめに

このライブラリは、Postgres 上で chDB クエリを実行したり、さまざまなフォーマットやオブジェクトストアとの間でデータをコピーしたりするための PostgreSQL 拡張機能を提供します。

chdb 拡張機能

chdb 拡張機能は chDB のクエリを実行します。chdb_query() 関数は単一のクエリを実行します。たとえば、次のクエリの場合:
Output:
詳細については、chdb のドキュメントを参照してください。

chdb_hook モジュール

chdb_hook モジュールは COPY コマンドにフックし、S3、GCS、Azure Blob、ファイル、http URL との間でデータをコピーします。次の例では、S3 上にある複数の CSV ファイルのレコードを、1 つの COPY コマンドで読み込みます:
その後、times テーブルには読み込まれた各ファイルのレコードが格納されます:
CREATE TABLE でも、そのような URL からカラムを導出し、行を読み込むことができます:
詳細については chdb_hook のドキュメント を参照してください。

フォーマットのベンチマーク

ベンチマークでは、NYC Taxi dataset の約 100 万行をさまざまなフォーマットで扱った場合の [chdb_hook] の COPY のパフォーマンスを、[aws_s3]、[pg_duckdb]、[pg_lake] と比較しています。 NYC Taxi Data Benchmark 4 つの拡張機能のうち、最も安定したパフォーマンスを示したのは chdb です。いずれも DuckDB を基盤とする [pg_duckdb] と [pg_lake] は、CSV、JSON、Parquet からのデータ取り込みに約 2〜3 倍の時間を要します。[chdb_hook] のパフォーマンスに迫るのは [aws_s3] だけですが、対応するデータフォーマットの種類は大幅に限られます。 さらにベンチマークを実施したところ、NYC Taxi dataset をさまざまなフォーマットで取り込む場合でも、比較的安定したパフォーマンスが得られることが確認できました。 Import Benchmark このベンチマークでは、他の拡張機能との互換性を保つために JSONCompact フォーマットを使用しています。JSONCompactEachRow などの他の JSON フォーマットを用いれば、他のフォーマットのパフォーマンスにより近い結果が得られます。

アーキテクチャ

chdb および chdb_hook 拡張機能は、chDB クエリの実行に chdb_helper プロセスを使用します。このヘルパーにより chDB のリソース消費が Postgres のメインプロセスから切り離されるため、データレイクからのデータロードのように、たまにしか実行されないワークフローでは大きな利点となります。
バックグラウンドワーカーとは異なり、このヘルパーは Postgres の共有メモリを保持せず、postmaster の管理下にも置かれません。そのため、クラッシュが Postgres に波及することはありません。ヘルパーが異常終了しても、エラーが発生するのはそれを起動したバックエンドのみで、他のセッションには影響しません。

Dependencies

chdb 拡張機能には、PostgreSQL 15 以降と chDB ライブラリ v26.7.0 以降が必要です (現在は Linux および macOS でのみ利用可能) 。最も簡単なインストール方法は、lib.chdb.io の シェルスクリプト を使用する方法です。
chDB をヘルパーアプリに静的にコンパイルするには、インストール の make コマンドを実行する前に、以下の変数を設定してください。
Makefile は静的な libchdb ライブラリをダウンロードし、アプリに組み込んでコンパイルします。 Linux では、インストール の make コマンドを実行する前に export BUNDLE_LIBCHDB=1 を設定しておくことで、インストール処理で動的な libchdb ライブラリをダウンロードしてインストールさせることもできます。

ソースからコンパイル

chdb をビルドするには、次のコマンドを実行します。
次のようなエラーが発生した場合:
GNU make を使用する必要があります。お使いのシステムでは gmake としてインストールされている場合があります:
次のようなエラーが発生した場合:
pg_config がインストールされ、path に含まれていることを確認してください。RPM などの package management system を使用して PostgreSQL をインストールした場合は、-devel package もインストールされているか確認してください。必要に応じて、build プロセスに対してその場所を指定します:
次のようなエラーが発生した場合:
chDB をインストールするか、コンパイラにその場所を指定する必要があります。たとえば、lib.chdb.io のシェルスクリプト経由でインストールした場合は、/usr/local を指定します:
次のようなエラーが発生した場合:
test suite は super user で実行する必要があります。たとえば、default の “postgres” super user を使用します。
PostgreSQL 18 以降でカスタムプレフィックスに拡張機能をインストールするには、install に prefix 引数を渡します (他の make ターゲットには渡しません) :
次に、そのプレフィックスが以下の [postgresql.conf の parameters] に含まれていることを確認してください。

著者

Copyright (c) 2026, ClickHouse
最終更新日 2026年9月26日