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的擴展性,以便於用在更多使用案例上。

熱門新聞

Advertisement