APP下载

AWS开源让PostgreSQL也可接受SQL Server查询语法的Babelfish专案

消息来源:baojiabao.com 作者: 发布时间:2024-09-30

报价宝综合消息AWS开源让PostgreSQL也可接受SQL Server查询语法的Babelfish专案

AWS现在正式开源Babelfish for PostgreSQL(Babelfish)专案,该专案可以让PostgreSQL理解专为微软SQL Server撰写的应用程序查询,也就是说,借由使用Babelfish,能够大幅降低用户将应用程序,从SQL Server移动到PostgreSQL上的成本。

AWS在2020年的re:Invent大会上,宣布了Babelfish开源的消息,而该公司现在兑现这项承诺,以Apache 2.0和PostgreSQL授权许可开源Babelfish,这项授权让用户可以自由使用、修改、发布和销售自己的产品。

Babelfish是一组扩充套件,提供T-SQL和TDS(Tabular Data Stream)监听埠口,来强化PostgreSQL的能力,能够支援SQL Server方言(Dialect)T-SQL,以及Savepoint、预存程序、巢状交易等专属于SQL Server的功能。

Babelfish能够简化将SQL Server应用程序搬迁到PostgreSQL的工作,进而减少用户在SQL Server上的授权费用。透过Babelfish,即便最初是针对SQL Server建构的应用程序,用户只要进行少量的程式码修改,不需要更换数据库驱动程式,就能够直接将SQL Server应用程序搬迁到PostgreSQL上。

Babelfish主要针对SQL、T-SQL和TDS三部分扩展支援。虽然SQL属于ANSI标准,但是依据关联资料实作程度和特定语言扩展,支援程度也有所不同,因此在SQL Server中的查询,可能无法直接用于PostgreSQL,为了解决这个问题,Babelfish内建解析器来创建适合的查询节点,如此SQL Server方言就能够在PostgreSQL执行,Babelfish还针对无法在PostgreSQL运作,或是运作方式不同,特定于SQL Server的资料类型、函式和运算子提供支援。

SQL Server的语言T-SQL也是Babelfish的支援重点,特别是用于预存程序结构,像是变数、例外和控制流程等。Babelfish还支援T-SQL语义,像是在部分错误情况下,PostgreSQL会产生回退处理,但是在SQL Server中却不会,而透过TDS埠口,Babelfish让PostgreSQL能够遵循SQL Server的行为,确保正确性。

Babelfish对于SQL Server的有线协定TDS也提供良好的支援,该协定预设在埠口1433上运作,也就是说,Babelfish使用相同的网络协定、埠口和连接驱动程式,不过这项支援是利用协定Hook实作,因此对于TDS的支援,Babelfish并非依靠翻译层。

由于Babelfish不需要更换驱动程式,因此能大幅减少了更新SQL语言程式码的工作,使用Babelfish将应用程序从SQL Server移动到PostgreSQL,与完全移植到PostgreSQL原生驱动程式的工作相比,速度快上不少,而且因为Babelfish为开源专案,因此社区能够自由地扩展功能,强化PostgreSQL的扩展性,以便于用在更多使用案例上。

2021-10-31 16:48:00

相关文章