AWS開源讓PostgreSQL也可接受SQL Server查詢語法的Babelfish項(xiàng)目

來源: 十輪網(wǎng)
作者:十輪網(wǎng)
時(shí)間:2021-11-03
16885
AWS現(xiàn)在正式開源Babelfish for PostgreSQL(Babelfish)項(xiàng)目,該項(xiàng)目可以讓PostgreSQL理解專為微軟SQL Server撰寫的應(yīng)用程序查詢,也就是說,借由使用Babelfish,能夠大幅降低用戶將應(yīng)用程序,從SQL Server移動(dòng)到PostgreSQL上的成本。

878-babelfish.jpg

AWS現(xiàn)在正式開源Babelfish for PostgreSQL(Babelfish)項(xiàng)目,該項(xiàng)目可以讓PostgreSQL理解專為微軟SQL Server撰寫的應(yīng)用程序查詢,也就是說,借由使用Babelfish,能夠大幅降低用戶將應(yīng)用程序,從SQL Server移動(dòng)到PostgreSQL上的成本。

AWS在2020年的re:Invent大會(huì)上,宣布了Babelfish開源的消息,而該公司現(xiàn)在實(shí)現(xiàn)這項(xiàng)承諾,以Apache 2.0和PostgreSQL授權(quán)許可開源Babelfish,這項(xiàng)授權(quán)讓用戶可以自由使用、修改、發(fā)布和銷售自己的產(chǎn)品。

Babelfish是一組擴(kuò)展組件,提供T-SQL和TDS(Tabular Data Stream)監(jiān)聽端口口,來強(qiáng)化PostgreSQL的能力,能夠支持SQL Server方言(Dialect)T-SQL,以及Savepoint、預(yù)存程序、嵌套交易等專屬于SQL Server的功能。

Babelfish能夠簡(jiǎn)化將SQL Server應(yīng)用程序搬遷到PostgreSQL的工作,進(jìn)而減少用戶在SQL Server上的授權(quán)費(fèi)用。通過Babelfish,即便最初是針對(duì)SQL Server構(gòu)建的應(yīng)用程序,用戶只要進(jìn)行少量的程序代碼修改,不需要更換數(shù)據(jù)庫驅(qū)動(dòng)程序,就能夠直接將SQL Server應(yīng)用程序搬遷到PostgreSQL上。

Babelfish主要針對(duì)SQL、T-SQL和TDS三部分?jǐn)U展支持。雖然SQL屬于ANSI標(biāo)準(zhǔn),但是依據(jù)關(guān)聯(lián)資料實(shí)例程度和特定語言擴(kuò)展,支持程度也有所不同,因此在SQL Server中的查詢,可能無法直接用于PostgreSQL,為了解決這個(gè)問題,Babelfish內(nèi)置解析器來創(chuàng)建適合的查詢節(jié)點(diǎn),如此SQL Server方言就能夠在PostgreSQL執(zhí)行,Babelfish還針對(duì)無法在PostgreSQL運(yùn)行,或是運(yùn)行方式不同,特定于SQL Server的資料類型、函數(shù)和運(yùn)算符提供支持。

SQL Server的語言T-SQL也是Babelfish的支持重點(diǎn),特別是用于預(yù)存程序結(jié)構(gòu),像是變量、例外和控制流程等。Babelfish還支持T-SQL語義,像是在部分錯(cuò)誤情況下,PostgreSQL會(huì)產(chǎn)生回退處理,但是在SQL Server中卻不會(huì),而通過TDS端口口,Babelfish讓PostgreSQL能夠遵循SQL Server的行為,確保正確性。

Babelfish對(duì)于SQL Server的有線協(xié)議TDS也提供良好的支持,該協(xié)議默認(rèn)在端口口1433上運(yùn)行,也就是說,Babelfish使用相同的網(wǎng)絡(luò)協(xié)議、端口口和連接驅(qū)動(dòng)程序,不過這項(xiàng)支持是利用協(xié)議Hook實(shí)例,因此對(duì)于TDS的支持,Babelfish并非依靠翻譯層。

由于Babelfish不需要更換驅(qū)動(dòng)程序,因此能大幅減少了更新SQL語言程序代碼的工作,使用Babelfish將應(yīng)用程序從SQL Server移動(dòng)到PostgreSQL,與完全移植到PostgreSQL原生驅(qū)動(dòng)程序的工作相比,速度快上不少,而且因?yàn)锽abelfish為開源項(xiàng)目,因此社區(qū)能夠自由地?cái)U(kuò)展功能,強(qiáng)化PostgreSQL的擴(kuò)展性,以便于用在更多使用案例上。

立即登錄,閱讀全文
AWS
版權(quán)說明:
本文內(nèi)容來自于十輪網(wǎng),本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家