PostgreSQL Conference Japan 2024でADBCの話(リンク先にはベンチマークスクリプトや実行結果もあるよ)をした@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の話を紹介しました。