「換引擎」才是資料庫搬遷最難的一關

把資料庫從一種引擎搬到另一種,真正費工的往往不是搬資料本身,而是改寫藏在資料庫裡的程式邏輯——預存程序、觸發程序與自訂函式。當來源與目標分屬不同廠牌、講的是不同 SQL 方言,這層邏輯就得逐段重寫。Google Cloud 的 Database Migration Service(DMS)是代管、無伺服器的搬遷服務,支援 MySQL、PostgreSQL、SQL Server 與 Oracle 等來源;同引擎(homogeneous)搬遷不額外收費,跨引擎(heterogeneous)的異質搬遷才按位元計費。

難就難在跨引擎。從 SQL Server 或 Oracle 搬向 PostgreSQL 時,Google Cloud 官方部落格點出痛點:SQL Server 的 T-SQL 語法與內建函式往往需要手工翻成 PostgreSQL 的 PL/pgSQL,資料型別對應也很瑣碎,例如 DATETIME 的精密度、NVARCHAR 的處理方式都與 PostgreSQL 不同;更麻煩的是,預存程序、觸發程序與函式經常需要大幅重構,才能符合 PostgreSQL 的實作方式。這類工作需要同時精通兩套資料庫,加上搬遷經驗,是一般開發者通常不具備的條件。

演算法轉換打底,Gemini 補上最後一哩

DMS 用一個「轉換工作區(conversion workspace)」把這件事收進同一套介面。它先以一套演算法式(規則式)的轉換引擎,把來源資料型別與 SQL 指令對應到最合適的 PostgreSQL 寫法,連沒有直接對應的複雜功能也會重構成 PostgreSQL 能達成同樣效果的寫法。這套規則引擎對「它被設計來處理的情境」極為準確,但限制也在於此——真實專案裡總有一部分資料庫程式碼落在預期之外,是規則無法涵蓋的長尾。

Gemini 補的就是這段缺口。Google Cloud 引入的 Gemini 自動轉換引擎,會在演算法轉換的結果之上自動增補,進一步把轉換工作自動化、縮減剩下的人工,並產出一份轉換報告,標明哪些段落被改寫、為什麼改、怎麼改。官方產品頁則點明範圍:在預覽階段的 Gemini in DMS,能讓你檢視並轉換預存程序、觸發程序與函式等常駐於資料庫的程式碼,轉成 PostgreSQL 相容的方言。換言之,規則引擎打底、Gemini 收尾,人工則從「研究並修復問題」降級成「檢視建議並驗收」。

Gemini 的四種角色:自動轉換、解釋、品質評估、修正建議

官方文件把 Gemini 在轉換工作區裡的角色拆成四塊。第一是自動轉換:在規則結果之上套用 Gemini 修正,減少 PostgreSQL 程式碼需要的人工調整。第二是轉換助理(conversion assistant),一組專用提示詞,幫你理解轉換邏輯、針對轉換問題提出修正、把程式碼最佳化,甚至為資料庫物件加上註解。第三是品質評估(quality assessment),由 Gemini 分析轉換後的程式碼是否正確、與來源在功能上是否等價。第四是程式碼轉換建議(code conversion suggestions):當你修復一個轉換問題,Gemini 模型會從你的修正中學習,並對工作區裡其他有問題的物件建議類似的改動——也就是把單點修復往整批物件擴散。

Gemini 在轉換工作區的四個角色:自動轉換、轉換助理、品質評估、修正建議,沿著一條從 Oracle、SQL Server 程式碼走向 PostgreSQL 的搬遷路徑逐站完成。
圖1 轉換工作區裡 Gemini 的四個角色,把「規則打不到的長尾」沿著一條搬遷路徑逐站處理,單點修復還能往整批物件擴散。

人在迴路、資料落地與費用

幾個現實條件值得看清楚。其一,Gemini 輔助的程式碼轉換目前是預覽階段:官方產品頁把「由 Gemini 輔助的應用程式碼轉換」列為需要申請取用(Request access)的功能,至於預存程序等常駐於資料庫的程式碼轉換則標明「in preview」。要使用 Gemini 功能,必須先在專案啟用 Gemini for Google Cloud API,且 Gemini 的計價會適用。其二,資料落地:官方文件提醒,若使用 Gemini 輔助的程式碼與結構描述轉換,程式碼與結構描述可能在其他地區被處理——這對有資料主權或合規要求的團隊是需要評估的一點。其三,這套流程是「人在迴路(human-in-the-loop)」:Gemini 給的是建議與報告,最終仍要人員檢視、驗收,品質評估的重點在功能等價而非效能測試,結構描述物件也不在品質評估的支援範圍內。

為什麼這件事值得關注

把 Gemini 嵌進資料庫搬遷流程,改變的是異質搬遷的成本結構。過去要把 Oracle 或 SQL Server 的預存程序、觸發程序與函式搬到 PostgreSQL,靠的是規則引擎加上大量人工,而人工門檻——得同時熟兩套引擎與搬遷眉角——正是企業遲遲不動的原因之一。Gemini 把「規則打不到的長尾」交給模型自動改寫、把「為什麼這樣改」交給解釋、把「功能對不對」交給品質評估、把「單點修正」往整批擴散,等於把最耗人工、最吃經驗的那一段部分自動化。

不過有幾點必須看清楚。Gemini 的建議需要人員檢視與驗收,轉換正確性會隨程式碼庫的複雜度與方言差異而不同,AIDM 並未獨立實測其轉換品質;預覽階段與「申請取用」的限制,也代表它還不是完全開放、隨開即用的功能。對於正評估把商業資料庫搬向 PostgreSQL 或 AlloyDB 的團隊,這是一條值得追蹤、但仍需自行驗證的路徑;若目標還包含大型向量檢索,則可再看 AlloyDB ScaNN 四層樹的百億向量架構