背景
在传统的异构数据库迁移上云场景中,通常存在以下难点和痛点:
源/目标两种数据库属于异构数据库,源数据库使用者不一定熟悉如何使用目标数据库及其SQL语法规则。
异构数据库之间的SQL语法规则差异,导致在异构数据库迁移前后必须对SQL语句进行一定的定制化改造,才能保证顺利迁移以及迁移完成后正常使用目标数据库。
传统的迁移工具无法提供100%有效且通用的SQL规则,无法帮助用户解决以上问题。
方案介绍
阿里云瑶池解决方案体验馆提供了智能SQL转换领航助手(Migration on Pilot),通过LLM+SQL规则转换融合,帮助您解决在异构数据库迁移过程中的以上疑问和难点。本方案主要从两方面提供智能SQL转换:
基于规则的智能转换Prompt:基于异构数据库迁移ADAM积累并提炼的多年的成功迁移实践经验,融合了ADAM独有的智能转换Prompt能力。基于SQL转换规则,通过Parser解析成AST;通过重构AST,生成目标数据库的语法。
基于LLM的交互式智能订正:引入通义千问大模型,并与其智能改造意图LLM模型提供的交互能力,结合其情感/意图分析模型,打造自然语言交互式智能订正。
影响
本体验不涉及生产环境的部署,因此不会影响业务。
费用
本次体验中,由于体验涉及到的资源不归属于您,因此不会产生任何费用,您可以放心体验。
操作步骤
进入瑶池解决方案体验馆。
单击DB+AI体验,然后单击Migration on Pilot的免费体验按钮,进入如下页面:
首先输入要转化的源SQL。当前仅支持Oracle数据库的SQL语法。
您也可以在示例SQL的下拉列表中选择提供的示例进行体验。
选择目标数据库类型。当前支持云原生数据库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; /