Babelfish 架構 - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Babelfish 架構

建立啟用 Babelfish 的 Aurora PostgreSQL 叢集時,Aurora 會在叢集上佈建名為 babelfish_db 的 PostgreSQL 資料庫。所有遷移的 SQL Server 物件和結構都位於此資料庫。

注意

在 Aurora PostgreSQL 叢集中,為 Babelfish 保留了 babelfish_db 資料庫名稱。若自行在 Babelfish 資料庫叢集上建立 "babelfish_db" 資料庫,可能會導致 Aurora 無法成功佈建 Babelfish。

連線至 TDS 連接埠時,工作階段就放在 babelfish_db 資料庫中。就 T-SQL 而言,結構看似連線至 SQL Server 執行個體。您會看到 mastermsdbtempdb 資料庫,以及 sys.databases 目錄。您可以建立其他使用者資料庫,並使用 USE 陳述式來切換資料庫。您建立的 SQL Server 使用者資料庫會扁平化為 babelfish_db PostgreSQL 資料庫。您的資料庫保留同於或類似於 SQL Server 提供的跨資料庫語法和語意。

搭配單一資料庫或多個資料庫來使用 Babelfish

建立適用於 Babelfish 的 Aurora PostgreSQL 叢集時,您可以選擇單獨使用一個 SQL Server 資料庫,或同時使用多個 SQL Server 資料庫。您的選擇會影響 babelfish_db 資料庫內的 SQL Server 結構描述名稱如何出現在 Aurora PostgreSQL 中。遷移模式存放在 migration_mode 參數中。您不得在建立叢集之後變更此參數,因為您可能會失去先前建立之所有 SQL 物件的存取權。

在單一資料庫模式中,SQL Server 資料庫的結構描述名稱在 PostgreSQL 的 babelfish_db 資料庫中仍保持相同。如果您選擇只遷移單一資料庫,則可以利用 SQL Server 中使用的同一名稱,在 PostgreSQL 中參考已遷移之使用者資料庫的結構描述名稱。例如,dbosmith 結構描述位於 dbA 資料庫內

遷移單一資料庫。

透過 TDS 連線時,您可以執行 USE dba 來查看架構描述 dbodev,就像在 SQL Server 中一樣。從 PostgreSQL 也可以看到未變更的結構描述名稱。

在多資料庫模式中,若從 PostgreSQL 存取,使用者資料庫的結構描述名稱變成 dbname_schemaname。若從 T-SQL 存取,結構描述名稱保持不變。

遷移多個資料庫。

如圖所示,當透過 TDS 連接埠連線及使用 T-SQL 時,多資料庫模式和單資料庫模式與 SQL Server 相同。例如:USE dbA 會列出結構描述 dbodev,就如同在 SQL 伺服器中一樣。從 PostgreSQL 可以看到對應的結構描述名稱,例如 dba_dbodba_dev

每個資料庫仍然包含您的結構描述。SQL Server 結構描述名稱的前面加上每個資料庫的名稱,以底線為分隔符號,例如:

  • dba 包含 dba_dbodba_dev

  • dbb 包含 dbb_dbodbb_test

  • dbc 包含 dbc_dbodbc_prod

babelfish_db 資料庫內,T-SQL 使用者仍需執行 USE dbname 來切換資料庫環境,外觀和風格上仍類似於 SQL Server。

選擇遷移模式

每個遷移模式各有優缺點。請根據您的使用者資料庫數目和遷移計畫來選擇遷移模式。在建立與 Babelfish 搭配使用的叢集之後,您不得變更遷移模式,因為可能失去所有先前建立之 SQL 物件的存取權。選擇移轉模式時,請考量使用者資料庫和用戶端的需求。

建立適用於 Babelfish 的叢集時,Aurora PostgreSQL 會建立系統資料庫 mastertempdb。如果您在系統資料庫中 (mastertempdb) 建立或修改物件,請務必在新叢集中重新建立這些物件。與 SQL Server 不同,在 tempdb 叢集重新啟動後,Babelfish 不會重新初始化。

在下列情況下,請使用單一資料庫遷移模式:

  • 如果您遷移單一 SQL Server 資料庫。在單一資料庫模式中,從 PostgreSQL 存取的遷移結構描述名稱與原始 SQL Server 結構描述名稱相同。若您想要最佳化現有 SQL 查詢,以便透過 PostgreSQL 連線執行,這會減少對現有 SQL 查詢的程式碼變更。

  • 如果最終目標是完整遷移至原生 Aurora PostgreSQL。在遷移之前,請將結構描述合併為單一結構描述 (dbo),然後遷移至單一叢集,以減少必要的變更。

在下列情況下,請使用多資料庫遷移模式:

  • 若您想要在同一個執行個體中擁有多個使用者資料庫的預設 SQL Server 體驗。

  • 若需要一起移轉多個使用者資料庫。