最近 消息傳出亞馬遜決定發布“Babelfish for PostgreSQL”的源代碼, 提議對 PostgreSQL 數據庫進行擴展,以實現 Microsoft SQL Server 數據庫的特定功能。
該項目的主要目標是提供在運行 PostgreSQL 的服務器上運行為 SQL Server 編寫的應用程序的能力。 項目代碼在 Apache 2.0 許可和 PostgreSQL 許可下開放。
對於那些不熟悉 Babelfish 的人來說,你應該知道這個 支持用於將客戶端連接到 SQL Server、T-SQL 和 SQL Server 特定查詢語言擴展的網絡協議, 允許您將正在運行的應用程序從 Microsoft SQL Server 轉換為 PostgreSQL,而無需修改代碼或進行最少的更改,也無需更換 DBMS 的驅動程序。 對於應用程序,Babelfish 看起來就像一個普通的 SQL 服務器。 該項目已在 Amazon Aurora 上使用。
今天,我們讓 Babelfish 可用於 Aurora PostgreSQL。 Babelfish 使 Amazon Aurora PostgreSQL 兼容版能夠理解 SQL Server 連接協議。 它使您能夠將應用程序從 SQL Server 遷移到 PostgreSQL,成本更低、速度更快,並且與此類更改相關的風險更低。
據悉,該項目 Babelfish 遵循開放的開發模式 這使社區貢獻者能夠做出改變並影響發展。 對於用戶,更改為 Babelfish 將允許您避免使用 SQL Server 的高額版稅, 繞過許可限制,不依賴於專有產品維護政策的變化(取消福利、終止平台支持、價格上漲)。
該項目包括一組 PostgreSQL 擴展、一組 PostgreSQL 補丁和指南針工具包:
這些擴展為從 SQL Server 遷移所需的其他語法、數據類型和函數提供 PostgreSQL 支持。 總共提出了4個擴展:
- babelfishpg_tsql: 它是執行 T-SQL (Transact-SQL) 語言實現的擴展,該語言通過過程編程增強 SQL,支持局部變量和處理字符串、日期和數學表達式的高級函數。 大多數請求的 T-SQL 函數已經實現,包括保存點、存儲過程和嵌套事務。 但是,語法和功能的很大一部分仍未實現(通常,這些是在實際應用程序中很少使用的特性,即兼容性表)。 例如,構造“ADD SIGNATURE”、“CREATE AGGREGATE”、“CREATE / ALTER / DROP APPLICATION ROLE | ASSEMBLY | ASYMMETRIC KEY”、“BEGIN CONVERSATION TIME”、“END / MOVE CONVERSATION”等。 它們尚不可用。
- babelfishpg_tds: SQL Server 中用於 DBMS 和客戶端之間的網絡連接的 TDS(表格數據流)協議的實現擴展。 支持 TDS 協議版本 7.1 及更高版本。
- babelfishpg_common: 實現特定 SQL Server 數據類型的擴展。
babelfishpg_money: 是基於 FixedDecimal 擴展代碼的貨幣類型實現。
這些補丁包括為 Babelfish 擴展提供附加功能所必需的對 PostgreSQL 引擎的更改。 目前,與 PostgreSQL 開發人員一起,正在努力將準備好的補丁包含在主要的 PostgreSQL 組合中。 為 PostgreSQL 13 準備的補丁。
compass 實用程序旨在解析 T-SQL DDL 腳本和 SQL 代碼以與 Babelfish 兼容。 在輸出中,會生成一個報告,Babelfish 尚不支持啟動應用程序所需的功能。
官方支持以下用於連接到 MS SQL Server 的客戶端庫:
- OLEDB / MSOLEDBSQL 提供程序
- OLEDB / SQLOLEDB 驅動程序
- Ado.NET 實體框架
- SQL Server 11.0 本機客戶端
- ODBC(開放式數據庫連接)
JDBC(Java 數據庫連接)
終於 如果您有興趣了解更多信息,您可以查看筆記的詳細信息 在下面的鏈接中。 至於那些有興趣能夠看到源代碼的人,他們可以這樣做 從這個鏈接。