全部產品
Search
文件中心

ApsaraDB RDS:Babelfish簡介

更新時間:Sep 20, 2024

當您希望在單一的資料庫執行個體中同時使用SQL Server和PostgreSQL能力,或計劃將現有應用從SQL Server遷移到更具成本效益的PostgreSQL時,Babelfish for RDS PostgreSQL實現了對T-SQL語句和TDS協議的支援。本文從產品特性、架構、適用情境以及使用方法等維度介紹Babelfish for RDS PostgreSQL執行個體,協助您快速瞭解並上手使用。

Babelfish是什麼

基於Babelfish for PostgreSQL的開源專案,阿里雲RDS PostgreSQL執行個體購買時開啟Babelfish選項後,可以同時獲得Microsoft SQL Server和PostgreSQL兩種資料庫引擎資料查詢和處理的能力,從而使RDS PostgreSQL具備解析執行SQL Server T-SQL語句的能力。

Babelfish支援SQL Server Tabular Data Stream (TDS) wire protocolT-SQL(Microsoft SQL Server 查詢語言),因此您無需切換資料庫驅動程式或重新編寫SQL,只需要在適配少量代碼的情況下,將應用程式的資料庫從SQL Server遷移至開啟了Babelfish的阿里雲RDS PostgreSQL執行個體上。

支援的T-SQL內建函數請參見Babelfish支援的T-SQL內建函數

適用情境

  • 如果您期望節省SQL Server的License費用支出。

  • 如果您計劃將SQL Server資料庫切換為PostgreSQL,又不希望投入大量的時間和精力重寫應用程式。

  • 如果您期望使用PostgreSQL強大的開源外掛程式庫能力,例如時空錨定外掛程式PostGIS,時序外掛程式TimescaleDB等。

  • 如果您期望一份成本享受兩種資料庫引擎的資料處理能力。

Babelfish for RDS PostgreSQL架構圖

架構說明:

  • Babelfish for RDS PostgreSQL執行個體具備兩個TCP連接埠,分別監聽來自SQL Server和PostgreSQL用戶端的SQL請求。

    • TDS Listener:接收SQL Server協議連接埠(TDS)的SQL請求,預設連接埠號碼為1433。

      說明

      Babelfish支援TDS協議7.1及更高版本,即支援Microsoft SQL Server 2000及以上版本。

    • PostgreSQL Listener:接收PostgreSQL協議連接埠的SQL請求,預設連接埠號碼為5432。

      說明

      當前支援RDS PostgreSQL 15。

  • Babelfish for RDS PostgreSQL執行個體接收來自TDS Listener連接埠的SQL請求時,該請求被轉寄到T-SQL解析器,將SQL Server的T-SQL轉換為PostgreSQL可識別的執行計畫。

  • Babelfish for RDS PostgreSQL執行個體接收來自PostgreSQL Listener連接埠的SQL請求時,該請求被轉寄到PostgreSQL解析器,產生執行計畫。

  • PostgreSQL內部的SQL執行器統一處理,執行所有計劃。

開啟了Babelfish功能的RDS PostgreSQL執行個體,使您同時具備了兩個資料庫引擎(PostgreSQL和SQL Server)的能力,既可以處理來自SQL Server的請求,又可以處理來自PostgreSQL的請求,在降低成本的同時獲得更多的能力支援。

移轉模式簡介

Babelfish for RDS PostgreSQL執行個體會預置一個名為babelfish_db的PostgreSQL資料庫,所有遷移的SQL Server對象和結構都會放置在該資料庫下。

說明

如果您通過TDS連接埠串連執行個體,babelfish_db資料庫不可見。

您可以選擇Single-DB模式(單資料庫模式)或Multi-DB模式(多資料庫模式)。不同模式下,babelfish_db內的SQL Server資料庫模式及名稱不同。

Single-DB模式

  • 架構圖single-db

  • 說明:該模式下,babelfish_db資料庫中使用者資料庫的Schema名稱與SQL Server中的相同。

    例如:通過TDS連接埠建立資料庫DB_A,然後在DB_A下建立schema_A。

    • 在PostgreSQL的babelfish_db資料庫中,Schema名稱為:dbo和schema_A。

    • 在SQL Server的DB_A資料庫中,Schema名稱為:dbo和schema_A。

Multi-DB模式

  • 架構圖Multi-DB

  • 說明:該模式下,在PostgreSQL中,使用者資料庫的schema名稱為dbname_schemaname。在SQL Server中,Schema名稱保持不變。

    例如:通過TDS連接埠建立資料庫DB_A,然後在DB_A下建立schema_A。

    • 在PostgreSQL的babelfish_db資料庫中,Schema名稱為:DB_A_dbo和DB_A_schema_A。

    • 在SQL Server的DB_A資料庫中,Schema名稱為:dbo和schema_A。

計費

Babelfish for RDS PostgreSQL執行個體與通用RDS PostgreSQL執行個體售價相同,不會收取任何額外費用,價格與所選地區、規格、儲存等配置相關,請前往購買頁面查看。

注意事項

  • 當前僅支援在購買執行個體時開通Babelfish,且執行個體需滿足以下條件:

    說明

    暫不支援叢集系列執行個體。

    • 執行個體大版本:RDS PostgreSQL 15。

    • 執行個體產品類型為標準版。

  • 已購買的RDS PostgreSQL執行個體,暫不支援開通Babelfish。

  • 開通Babelfish後,暫不支援關閉。

  • 執行個體建立成功後,將會初始化建立babelfish_db資料庫,該資料庫為Babelfish執行個體的關鍵資料庫,請勿刪除,否則執行個體將不可用。

使用方法