體驗智能SQL轉換領航助手(Migration on Pilot)
背景
在傳統的異構數據庫遷移上云場景中,通常存在以下難點和痛點:
源/目標兩種數據庫屬于異構數據庫,源數據庫使用者不一定熟悉如何使用目標數據庫及其SQL語法規則。
異構數據庫之間的SQL語法規則差異,導致在異構數據庫遷移前后必須要對SQL語句進行一定的定制化改造,才能保證順利遷移以及遷移完成后正常使用目標數據庫。
傳統的遷移工具無法提供100%有效且通用的SQL規則,無法幫助用戶解決以上問題。
方案介紹
阿里云瑤池解決方案體驗館提供了智能SQL轉換領航助手(Migration on Pilot),通過LLM+SQL規則轉換融合,幫助您解決在異構數據庫遷移過程中的以上疑問和難點。本方案主要從兩方面提供智能SQL轉換:
基于規則的智能轉換Prompt:基于異構數據庫遷移ADAM積累并提煉的多年的成功遷移實踐經驗,融合了ADAM獨有的智能轉換Prompt能力。基于SQL轉換規則,通過Parser解析成AST;通過重構AST,生成目標數據庫的語法。
基于LLM的交互式智能訂正:引入通義千問大模型,并與其智能改造意圖LLM模型提供的交互能力,結合其情感/意圖分析模型,打造自然語言交互式智能訂正。
影響
本體驗不涉及生產環境的部署,因此不會影響業務。
費用
本次體驗中,由于體驗涉及到的資源不歸屬于您,因此不會產生任何費用,您可以放心體驗。
操作步驟
登錄瑤池數據庫控制臺。
進入MOP界面(二選一)。
在概覽頁簽,單擊Migration on Pilot卡片。
在解決方案頁簽,展開DB+AI體驗折疊面板,然后單擊Migration on Pilot的免費體驗按鈕。
首先輸入要轉化的源SQL。當前僅支持Oracle數據庫的SQL語法。
您也可以在示例SQL的下拉列表中選擇提供的示例進行體驗。
選擇目標數據庫類型。當前支持PostgreSQL數據庫(如阿里云數據庫RDS PostgreSQL)、云原生數據倉庫AnalyticDB PostgreSQL、云原生數據庫PolarDB PostgreSQL版(兼容Oracle)。
單擊轉化源SQL按鈕,進行智能SQL轉化,自動將您輸入的源SQL轉化為適配目標數據庫的SQL語句。
您可在下方區域了解具體的改造點與改造方案,如源數據庫與目標數據庫之間的語法差異和不兼容性,以及針對這部分差異。
例如,您可以選擇如下函數定義SQL:
CREATE OR REPLACE FUNCTION "SHOPTEST"."GET_TAB_PTF"( p_rows IN NUMBER) RETURN t_tf_tab PIPELINED AS BEGIN FOR i IN 1 .. p_rows LOOP PIPE ROW(t_tf_row(i, 'Description for ' || i)); END LOOP; RETURN; END;
當目標數據庫為PolarDB PostgreSQL(兼容Oracle)時,轉換后的SQL如下:
CREATE OR REPLACE FUNCTION "SHOPTEST"."GET_TAB_PTF"(p_rows IN NUMBER) RETURN TABLE (t_tf_row(i INTEGER, Description VARCHAR2(200))) AS BEGIN FOR i IN 1 .. p_rows LOOP RETURN NEXT t_tf_row(i, 'Description for ' || i); END LOOP; END; /
您可以從下方區域了解到,由于PolarDB PostgreSQL(兼容Oracle)不支持PIPELINED關鍵字,因此主要針對這一點進行改造。
您還可以在輸入框中輸入自然語言,進一步補充您對SQL改造的要求。
例如,基于上述返回的目標數據庫SQL示例中,您可以輸入
請幫我改成存儲過程
,然后觀察進一步的改造結果:CREATE OR REPLACE PROCEDURE SHOPTEST.GET_TAB_PTF(p_rows IN NUMBER) AS TYPE tab_t IS TABLE OF t_tf_row INDEX BY PLS_INTEGER; v_tab tab_t; BEGIN FOR i IN 1 .. p_rows LOOP v_tab(i) := t_tf_row(i, 'Description for ' || i); END LOOP; FOR i IN tab_t.FIRST..tab_t.LAST LOOP DBMS_OUTPUT.PUT_LINE(v_tab(i).i||'-'||v_tab(i).description); END LOOP; END; /