ククログ

株式会社クリアコード > ククログ > PostgreSQL Conference Japan 2024 - ADBC: Connecting PostgreSQL with Analytics #pgcon24j

PostgreSQL Conference Japan 2024 - ADBC: Connecting PostgreSQL with Analytics #pgcon24j

PostgreSQL Conference Japan 2024ADBCの話(リンク先にはベンチマークスクリプトや実行結果もあるよ)をした@lidavidmのお手伝いをした須藤です。

内容

ADBC(Arrow DataBase Connectivity)はODBCのApache Arrowバージョンみたいなやつです。ODBCは接続先のデータベースの詳細を(ほとんど)気にせずに同じAPIでデータベースを使える仕組みです。ADBCも同じように接続先のデータベースの詳細を(ほとんど)気にせずに同じAPIでデータベースを使える仕組みです。

違いは何かというと、データをどのように扱うかです。ODBCは行ベースで扱い、ADBCは列ベースで扱います。もう少し言うと、ADBCはApache Arrowを使います。

ADBCがなにを目指しているかというと、分析アプリケーションが高速かつ便利にデータベースにアクセスできるようになることです。これを実現するために重要なところがApache Arrowです。Apache Arrowは標準化されているので、すでに各種分析アプリケーションが対応しています。ADBCはデータをApache Arrow形式で扱うので、各種分析アプリケーションはデータベースから取得したデータをそのまま使えます。そのまま使えると便利ですし、変換が不要なので速いです。

既存の類似実装よりも効率的な実装になっているので、今後は分析アプリケーション用にデータベースにアクセスしたいときはADBCを使うといいですよ!

ADBCは各種データベースごとにドライバーというものを用意してデータベース固有の処理を実装しています。PostgreSQL用のドライバーが用意されているのでPostgreSQLに対してもADBCを使えます。そこのドライバーが効率的な実装になっているのです。たとえば、SELECTの結果をやりとりするところでは、普通にSELECTをしてその結果をパースするのではなく、COPY (SELECT ...) TO STDOUT (FORMAT binary)にしてCOPYのバイナリーフォーマットでやりとりするようにしています。

さらに高速にするためにCOPYのフォーマットを拡張可能にすることに取り組んでいたりします。これが実現されるとバイナリーフォーマットではなく、直接Apache ArrowデータをADBCでやりとりできるのでさらに高速になるはずです!

まとめ

PostgreSQL Conference Japan 2024で@lidavidmが話したADBCの話を紹介しました。