文档

体验智能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架构图的副本

影响

本体验不涉及生产环境的部署,因此不会影响业务。

费用

本次体验中,由于体验涉及到的资源不归属于您,因此不会产生任何费用,您可以放心体验。

操作步骤

  1. 登录瑶池数据库控制台

  2. 进入MOP界面(二选一)。

    • 概览页签,单击Migration on Pilot卡片。

      image

    • 解决方案页签,展开DB+AI体验折叠面板,然后单击Migration on Pilot免费体验按钮。

      image

  3. 首先输入要转化的源SQL。当前仅支持Oracle数据库的SQL语法。

    您也可以在示例SQL的下拉列表中选择提供的示例进行体验。

    image

  4. 选择目标数据库类型。当前支持PostgreSQL数据库(如阿里云数据库RDS PostgreSQL)、云原生数据仓库AnalyticDB PostgreSQL云原生数据库PolarDB PostgreSQL版(兼容Oracle)

    image

  5. 单击转化源SQL按钮,进行智能SQL转化,自动将您输入的源SQL转化为适配目标数据库的SQL语句。

    您可在下方区域了解具体的改造点与改造方案,如源数据库与目标数据库之间的语法差异和不兼容性,以及针对这部分差异。

    image

    例如,您可以选择如下函数定义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关键字,因此主要针对这一点进行改造。

  6. 您还可以在输入框中输入自然语言,进一步补充您对SQL改造的要求。

    例如,基于上述返回的目标数据库SQL示例中,您可以输入请帮我改成存储过程,然后观察进一步的改造结果:

    image

    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;
    /

相关内容

目标数据库兼容性评估

异构数据库迁移

SQL转化规则详解