summary:
Arrow FlightはgRPCをベースに構築されており,これはGoogle開発のHTTP/2を利用した高性能なRPCフレームワークである.Flightは,Arrowの列指向メモリバッファ[RecordBatch]をそのまま送受信できるため,データのエンコードやデコードにかかるCPUコストを最小限に抑えている.加えて,複数のレコードバッチをストリーミング形式で転送可能であり,これにより大容量データの分割転送や並列処理も容易に実現できる.また,Flightは標準的な認証機構や暗号化だけでなく,カスタム認証メカニズムの実装も可能としており,企業利用に耐えるセキュリティ要件にも対応している.
Flightのアーキテクチャは,主にFlightServerとFlightClientから構成されている.サーバーはデータソースへのアクセスを提供し,クライアントはそれに接続してデータを要求する.このときFlightInfo,FlightDescriptor,FlightDataなどの概念を用いて,データの場所や種類,実際のペイロードを管理する.特に重要なのは,データ転送時にメモリ上のArrowバッファをそのまま送受信できる点であり,これにより従来のプロトコルと比較して10倍以上の性能向上が報告されている事例もある.
歴史的には,Apache Arrowプロジェクトが2016年に開始された後,分散環境でArrowデータを効率的に転送するニーズの高まりを受けて,2018年頃からFlightの仕様策定と実装が進められた.これにより,従来のJDBCやODBC,REST APIを用いたデータ転送が抱えるボトルネック,特に大量データ転送時のCPU負荷やレイテンシ問題を克服できる基盤が提供された.近年では,Flight SQLという拡張プロトコルも策定され,SQLクエリの送受信をArrow Flight上で効率的に行う仕組みが整備されつつある.これにより,データベースや分析エンジン間の高速連携が促進されている.
現在,Arrow Flightは多数のプログラミング言語[Java,C++,Python,Rustなど]で実装が提供されており,異なる言語間でのデータ交換も容易に行える.また,Dremio,InfluxDB,DataFusion,Substrait,DuckDBなどの多くのデータ処理システムやデータベースでも採用が進んでおり,次世代のデータ転送プロトコルとしての地位を確立しつつある.
Mathematics is the language with which God has written the universe.