内存分析开发平台Apache Arrow添加新协议,可加速数据库访问和减少程序代码撰写

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实例已经可以使用。