Apache頂級專案之一的記憶體分析開發平臺Apache Arrow,現在加入了一個由社群開發的客戶端到伺服器協定Flight SQL,其結合Arrow記憶體中的欄位格式(Columnar Format)以及Flight RPC框架,來加速SQL資料庫操作。

Flight SQL的目標,是要提供與JDBC和ODBC等現有API大致相同的功能,包括執行查詢、創建表示式,甚至是擷取SQL方言、可用類型和定義表格的後設資料。而透過利用Apache Arrow建構應用程式,Flight SQL便讓用戶可以和Arrow本地資料庫進行互動,不需要進行額外的資料轉換。

Flight提供了一種線上傳輸格式(Wire Format)的實作,支援開箱即用的加密和身份驗證功能,並且讓開發者有能力進一步實作像是平行資料存取這類最佳化功能。雖然Flight SQL可以直接用來存取資料庫,卻不是要成為JDBC/ODBC替代品,由於Flight SQL可用作線上傳輸協定和驅動程式實作,因此反而可支援JDBC/ODBC驅動程式,減少資料庫實作的負擔。

雖然JDBC/ODBC等標準,已經被使用了數十年,但對於想要使用Apache Arrow或是一般欄式資料庫的用戶來說,JDBC/ODBC功能遠遠不足,官方舉例,像是使用JDBC或是PEP 249這類列式API,在欄式資料庫中,必須進行兩次資料轉置,一次以列的形式呈現給API,另一次則需要再轉回欄式格式。

雖然ODBC等API,都提供結果緩衝區的批次存取功能,但是用戶仍需要將這些資料複製到Arrow陣列中,才能被方便地用於Arrow生態系,而Flight SQL的目標,就是要解決這些麻煩的中間步驟。Flight SQL讓資料庫伺服器一開始就能按欄式資料和Apache Arrow的方式,實作標準介面,就跟Arrow提供標準記憶體格式一樣,Flight SQL讓開發者不必再設計和實作,一個全新的線上傳輸協定。

對客戶端來說,Flight SQL提供用戶以批次存取查詢結果,不需要從其他API或是格式轉換資料,此外,透過在Flight和Flight SQL函式庫實作線上傳輸協定,用戶端或是驅動程式所要編寫的程式碼就更少,而且在底層使用Flight,客戶端和伺服器還可以實作像是平行資料存取這類最佳化功能。

與PyODBC等現有的函式庫相比,Arrow Flight已經可加速達20倍,而Flight SQL能夠將這樣的效能優勢,打包至一個標準介面,供客戶端和資料庫實作。Flight SQL跟著Apache Arrow 7.0.0一起發布,目前仍在開發階段,不過C++和Java實作已經可以使用。

熱門新聞

Advertisement