具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中数据库迁移评估方法的应用环境图。(例子:参照图1,该数据库迁移评估方法应用于数据库迁移评估系统。该数据库迁移评估系统包括终端110和服务器120。终端110和服务器120通过网络连接。终端110运行有数据库迁移应用。数据库迁移应用用于执行用户所创建的迁移评估任务,对迁移评估任务所指向的源数据库中的迁移对象能否迁移至迁移评估任务所指向的目标数据库,以及迁移工作量等进行评估。数据库迁移应用可以是APP(Application,客户端)、WEB应用(World Wide Web,可以通过全球广域网访问的应用程序)或小程序(Mini Program)等。终端110可以单独用于执行本申请实施例中提供的数据库迁移评估方法。终端110也可以与服务器120协同执行本申请实施例中提供的数据库迁移评估方法。终端110具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。服务器120是为数据库迁移应用提供服务的服务器。服务器120具体可以由独立的服务器或者是多个服务器组成的服务器集群实现。
如图2所示,在一个实施例中,提供了一种数据库迁移评估方法。本实施例主要以该方法应用于上述图1中的终端110来举例说明。参照图2,该数据库迁移评估方法具体包括如下步骤:
S202,确定迁移评估任务所指向的源数据库和目标数据库。
其中,迁移评估任务是在真正进行数据库迁移之前基于预先了解迁移结果及迁移工作量的需求在数据库迁移应用创建的任务。参考图3,图3示出了一个实施例中数据库迁移应用的系统架构示意图。如图3所示,数据库迁移应用包括作业管理302、任务节点304、节点监控306、系统配置308等多个功能模块。其中,作业管理302用于展示任务管理页面,基于任务管理页面可以实现待执行任务的创建及管理,如设定待执行任务的优先等级、删除旧待执行任务等。
任务节点304用于执行所创建的待分布任务。待执行任务可以是迁移评估任务或数据迁移任务。根据所需执行的任务不同,任务节点304可以细分为迁移对象评估节点3042和数据迁移节点3044。迁移评估节点3042在运行时需要依赖配置文件。迁移评估节点3042用于在真正进行数据迁移之前执行迁移评估任务,即根据配置文件记录的迁移评估规则,对迁移对象从可移植性、迁移工作量等维度进行评估,生成评估报告。数据迁移节点3044用于真正的将迁移对象从源数据库310迁移至目标数据库312。
节点监控306用于对各个任务节点的运行情况进行监控。系统配置308用于存储用户上传的配置文件,并支持用户对配置文件所记录的配置信息进行读取、更新等操作。可以理解,数据库迁移应用还可以包括其他功能模块,如用于对数据库应用所支持的源数据库和目标数据库的类型进行配置管理的输出数据源管理功能模块314、对源数据库中的实例进行管理的实例管理316等,对此不做限制。
在一个实施例中,数据库迁移应用采用Dubbo服务框架和zookeeper服务,(一个分布式的,开放源码的分布式应用程序协调服务),并部署有对应的数据库(如MySQL),用于存储执行迁移评估任务所产生的评估报告等。
具体地,当用户在终端基于数据库迁移应用触发了任务创建操作时,终端展示任务配置页面,获取用户基于任务配置页面添加的任务信息。任务信息包括源数据库信息、目标数据库信息和访问源数据库的业务应用信息等。业务应用的正常运行需要数据库的支撑。业务应用信息包括业务应用的名称等。当在任务配置页面发生任务发起操作时,终端根据任务信息生成待执行任务。
其中,源数据库信息包括源数据库的类型、连接信息、登录信息以及可选数据库表等。登录信息包括登录用户名、登录密码等,连接信息包括IP地址、数据库端口等。当用户未对可选数据库表进行配置时,默认对源数据库中全部数据库表进行评估。对于迁移评估任务,目标数据库信息包括目标数据库的类型;对于数据迁移任务,所配置的目标数据库信息还需包括目标数据库的连接信息、登录信息等。源数据库与目标数据库的类型分别可以是关系型数据库,如MySQL、Oracle、SQL Server、TDSQL(Tencent Distributed SQL,一种分布式数据库)、DB2、Apache Kafka等;也可以是非关系型数据库,如BigTable、Cassandra等;还可以是键值(Key-Value)数据库,如Dynamo、LevelDB等。在本申请的实施例中,如图3所示,数据迁移节点3044至少支持的目标端(即目标数据库)包括MySQL、Oracle、TDSQL和Kafka。
在一个实施例中,待执行任务也可以是数据校验任务。任务节点还包括用于执行数据校验任务的数据校验节点3046。数据校验节点3046用于根据数据迁移任务执行结果对迁移评估结果进行验证。
在一个实施例中,待执行任务还可以是迁移评估任务、数据迁移任务和数据校验任务中至少两种任务结合形成的综合任务。节点监控还用于在综合任务中前一顺序的任务执行完毕时自动触发相应任务节点执行下一顺序的任务,直至综合任务执行完毕。或者,用户也可以对综合任务中不同顺序任务的触发机制进行配置。比如,对于包含迁移评估任务和数据迁移任务的综合任务,节点监控在迁移评估任务的执行结果为源数据库中全部迁移对象可迁移,且迁移工作量小于阈值时,触发数据迁移节点执行数据迁移任务。
在一个实施例中,在任务创建过程中,用户还可以对任务类型进行配置。任务类型包括迁移评估、数据迁移、数据校验、综合等。终端根据任务信息生成与预设任务类型对应的待执行任务。比如,当任务类型为迁移评估时,待执行任务为迁移评估任务。当用户未对任务类型进行配置时,默认生成迁移评估任务。
S204,在源数据库中采集迁移对象对应的源查询语句。
其中,根据评估维度不同,迁移评估节点可以细分为数据对象评估节点、业务应用迁移评估节点等。数据对象评估节点用于从语法规则上对源数据库中迁移对象所对应的源查询语句在目标数据库中是否兼容进行评估。业务应用迁移评估节点用于从语法规则上对业务应用访问源数据库时产生的业务查询语句在目标数据库中是否兼容进行评估。
用户可以根据需求单独基于数据对象评估节点或业务应用迁移评估节点执行迁移评估任务,也可以综合数据对象迁移评估节点和业务应用迁移评估节点执行迁移评估任务。换言之,用户通过设定评估维度,可以单纯进行数据对象兼容性评估或业务应用兼容性评估,也可以即进行数据对象兼容性评估也进行业务应用兼容性评估。
数据库存储了一个或多个迁移对象。迁移对象是指数据库中的数据对象。数据库所包含的数据对象可以有表、索引、约束、视图、函数、序列、存储过程、物化视图、触发、包、同义词等多种类型。如图3所示,迁移评估节点3042可以实现表迁移评估、索引迁移评估、约束迁移评估、视图迁移评估、函数迁移评估、序列迁移评估、存储过程迁移评估、物化视图迁移评估、触发器迁移评估、包迁移评估、同义词迁移评估等。每个数据对象关联有对应的SQL(Structured Query Language,结构化查询语言)的语句。源查询语句、业务查询语句以及下文提及的目标查询语句均为SQL语句。下文将源查询语句、业务查询语句、目标查询语句分别称作源SQL语句、业务SQL语句、目标SQL语句。不同数据库所采用SQL语句的语法规则可能不同。换言之,不同类型数据库之间在查询语言上可能存在数据类型、数据结构、数据定义等方面的不同。比如,Oracle数据库所包含的数据对象与TDSQL数据库所包含的数据对象存在不同。
具体地,终端执行数据对象迁移评估任务。终端根据数据对象迁移评估任务中所记录的源数据库连接信息,基于JDBC接口(Java Database Connectivity,Java数据库连接)、TCP/IP标准协议等建立与源数据库的连接,在连接成功后基于源数据库登录信息登录源数据库,根据预置的可选数据库表在源数据库中拉取相应迁移对象所关联的源SQL语句。
在一个实施例中,在创建迁移评估任务时,用户还可以对需要评估的SQL语句类型进行限定。根据查询语句的作用不同,可以将SQL语句区分为DML语句(data manipulationlanguage,数据操纵语言)、DDL语句(data definition language,数据定义语言)、DCL语句(data Control Language,数据库控制语言)、DQL语句(Data Query Language数据查询语言)等。DML语句用于添加、删除、修改数据库中的数据,如INSERT语句、UPDATE语句、DELETE语句等。DDL语句用于创建、修改、删除数据库的内部数据结构,如CREATE DATABASE语句、CREATE TABLE语句、CREATE INDEX语句等。DCL语句用于控制数据库访问权限,如GRANT语句、REMOVE语句等。DQL用于查询数据库中的数据,如SELECT语句。用户可以对其中某一种或几种特定类型的SQL语句进行评估,比如仅对源DML语句和源DDL语句进行评估。
在一个实施例中,在源数据库中采集迁移对象对应的源查询语句包括:根据迁移评估任务记录的源数据库的连接信息,向源数据库发送连接请求;当预设时长内连接请求响应成功且登录成功时,在源数据库中采集迁移对象对应的源查询语句;当预设时长内连接请求响应失败或登陆失败时,停止执行迁移评估任务。
S206,获取用于在源数据库与目标数据库间进行迁移评估的配置信息。
其中,基于系统配置功能模块所上传的配置文件用于记录在源数据库与目标数据库间进行迁移评估的配置信息。不同迁移评估任务所涉及的源数据库和目标数据库的类型组合可能是不同的。不同类型组合的源数据库和目标数据库之间进行迁移评估的配置信息可以记录在同一配置文件中,也可以记录在不同配置文件中。比如,配置文件A用于记录源数据库Oracle和目标数据库TDSQL之间进行迁移评估的配置信息;配置文件B用于记录源数据库MySQL和目标数据库Oracle之间进行迁移评估的配置信息。
配置信息描述了源数据库与目标数据库在语法规则上的差异。配置信息包括多个配置项。每个配置项包括一个源字段以及该源字段对应的关联字段。关联字段可能是目标字段。源字段为源数据库所支持的SQL字段;目标字段是目标数据库所支持的SQL字段。SQL字段为SQL语句中的一个分词。SQL字段通过空格等拼接字符拼接形成SQL语句。比如,源SQL语句“SELECT OWNER TABLE_NAME FROM SYS.ALL_TABLES WHERE OWNER='TEST'ORDER BYOWNER”包括‘SELECT’‘OWNER’等SQL字段。
关联字段也可能是不兼容因素。当源字段对应的关联字段为不兼容因素时,表明该源字段在目标数据库中不存在对应的目标字段,无法实现SQL字段之间的转换,从而该源字段在目标数据库中是不兼容的。不兼容因素是用于描述源字段在目标数据库中不兼容的原因的信息。
具体地,数据库迁移应用基于系统配置模块接收用户上传的配置文件,并对配置文件进行访问属性设置,通知任务节点模块配置文件已更新。任务节点模块接收配置文件更新消息,根据更新消息,从系统配置模块中拉取对应的配置文件。系统配置模块可以将配置文件存储至终端本地,也可以存储服务器,还可以存储至其他存储设备。
S208,将源查询语句与配置信息中每个配置项进行匹配。
其中,每个配置项所涉及源字段在源数据库所采用SQL语言中的作用可能不同,具体可以是关键字、数据对象类型、数据类型、系统函数、Schema(数据对象集合)等。因而,通过将源查询语句与配置信息中的配置项进行匹配,可以以实现关键字校验、Schema校验、系统函数校验、数据对象类型校验等。
在一个实施例中,将源查询语句与配置信息中每个配置项进行匹配包括:识别源查询语句中的关键字;在源查询语句中提取位于相邻两个关键字之间的待评估片段;基于预设的拼接字符对待评估片段进行拆分,得到多个源字段;当源查询语句中存在源字段对应的关联字段为不兼容因素时,判定源查询语句匹配失败;当源查询语句中全部源字段对应的关联字段为符合目标数据库的语法规则的目标字段时,判断源查询语句匹配成功。
具体地,配置文件中所记录了目标数据库所支持的关键字。终端基于适用于当前迁移评估任务的配置文件所记录的关键字,识别源SQL语句的关键字。终端将位于相邻两个关键字之间的字符截取出来,得到待评估片段。配置文件中还记录了目标数据库所支持的一种或多种拼接字符。终端将适用于当前迁移评估任务的配置文件所记录的拼接字符作为拆分字符,当待评估片段中存在拆分字符时,将拆分字符所在位置作为拆分位置对待评估片段进行拆分,得到多个源字段。
比如,上述举例的源SQL语句“SELECT OWNER TABLE_NAME FROM SYS.ALL_TABLESWHERE OWNER='TEST'ORDER BY OWNER”,假设包含目标数据库所支持的四个关键字SELECT、FROM、WHERE和BY,则从该源SQL语句中截取出的待评估片段包括‘OWNER TABLE_NAME’‘SYS.ALL_TABLES’‘OWNER='TEST'ORDER’和‘OWNER’。假设目标数据库所支持的拼接字符包括空格、‘.’和‘,’,则待评估片段包括‘SYS.ALL_TABLES’可拆分得到源字段SYS和ALL_TABLES,如此对每个待评估片段进行拆分。
进一步地,终端在适用于当前迁移评估任务的配置文件中查询每个源字段对应的关联字段。当配置文件中未记录该源字段对应的关联字段,或者所对应的关联字段为不兼容因素时,表明该源字段在目标数据库中是不兼容的。比如,假设上述举例的源SQL语句中“SYS”在目标数据库中是不兼容的,对应的不兼容因素可以是“SYS函数不属于目标数据库所支持的系统函数”等。终端判定该源字段为不兼容字段。当源字段对应的关联字段为目标字段时,终端判断该源字段为兼容字段,表明该源字段在目标数据库中是兼容的,且根据这种映射关系可以实现SQL字段之间的转换。
S210,根据匹配失败的配置项关联的不兼容因素,及匹配成功的配置项关联的迁移工作量,生成迁移评估任务关于迁移对象兼容性及工作量的评估报告。
其中,迁移工作量是完成源SQL对应迁移对象的具体迁移所需要的时间和人力资源,具体可以从单位时间所需人员数量、单人所需工作时长等维度进行评估。配置文件中还记录了多种SQL语句类型,以及每种SQL语句类型对应的迁移工作量。迁移工作量可以是根据对历史数据迁移任务执行结果进行统计而确定的。
在一个实施例中,确定源查询语句的迁移工作量包括:根据源查询语句涉及的关键字,确定源查询语句对应的迁移类型;基于相同迁移类型的历史查询语句对应的参考迁移时间,确定源查询语句对应迁移对象的迁移工作量。
在一个实施例中,根据匹配失败的配置项关联的不兼容因素,及匹配成功的配置项关联的迁移工作量,生成迁移评估任务关于迁移对象兼容性及工作量的评估报告包括:当源查询语句匹配失败时,基于源查询语句中源字段关联的不兼容因素生成源查询语句的迁移评估结果;当源查询语句匹配成功时,确定源查询语句的迁移工作量,基于迁移工作量生成源查询语句的迁移评估结果;基于迁移评估任务涉及的每条源查询语句的迁移评估结果生成评估报告。
具体地,当源SQL语句中存在不兼容字段时,表明该源SQL语句与配置信息中的配置项匹配失败,终端将该源SQL语句判定为不兼容源SQL语句。终端基于源SQL语句中每个不兼容字段所对应的不兼容因素,生成该条源SQL语句的迁移评估结果。
当源SQL语句中全部源字段均为兼容字段时,表明该源SQL语句与配置信息中的配置项匹配成功,终端将该源SQL语句判定为兼容源SQL语句。根据这种源字段与目标字段之间的映射关系可以实现SQL字段之间的转换,从而可以转换得到源SQL语句对应的目标SQL语句。终端根据源SQL语句中所包含的关键字等信息确定源SQL语句类型。终端进一步在配置文件中该源SQL语句类型所对应迁移工作量,将读取到的工作量作为该条源SQL语句对应迁移对象的迁移工作量。终端基于兼容源SQL语句对应的迁移工作量和/或目标SQL语句,生成该条源SQL语句的迁移评估结果。
进一步地,综合源数据库中每条源SQL语句的迁移评估结果生成当前数据对象迁移评估任务的数据对象兼容性迁移评估报告。评估报告可以以列表的形式记录每个源SQL语句的迁移评估结果。参考图4,图4示出了一个实施例中数据对象兼容性迁移评估报告的示意图。如图4所示,数据对象兼容性迁移评估报告以列表的形式展示了每个迁移对象的名称、类型、兼容性评估结果,源SQL语句、以及当兼容性评估结果为兼容时源SQL语句对应的目标SQL语句,或当兼容性评估结果为不兼容源SQL语句对应的不兼容因素和不兼容关键字等。
在一个实施例中,不兼容源SQL语句的评估结果除了是不兼容因素外,也可能是不兼容关键字。当源SQL语句中的关键字目标数据库中并不支持,也就是配置文件中并未记录当前SQL语句的关键字时,也就无法将该源SQL语句拆分为多个源字段,此时可以直接将该源SQL语句判定为不兼容源SQL语句。
对于兼容源SQL语句,后续可以直接基于自动转换得到的目标SQL语句执行与当前迁移评估任务对应的数据迁移任务,即将源SQL语句对应的迁移对象迁移至目标数据库。对于不兼容源SQL语句,用户可以根据评估报告所指出的不兼容因素,将源SQL语句转换为目标SQL语句。
在一个实施例中,终端也可以将迁移评估任务发送至服务器,由服务器根据预存储的适用于当前迁移评估任务的配置文件执行迁移评估任务,生成对应的评估报告。
上述数据库迁移评估方法,用户只要指定源数据库和目标数据库的信息即可发起数据迁移前的迁移评估任务;基于预置适用于当前数据库类型的配置信息执行迁移评估任务,可对任务所涉及的源查询语句从语法上逐项进行兼容性和工作量多维度评估,在保证迁移评估准确性的同时,提高了数据库迁移评估效率;此外,通过预置用于不同类型数据库迁移评估的配置信息可以灵活实现多种类型数据库之间的迁移评估,扩大本方案适用范围;通过更新配置信息,可以实现随时新增迁移评估的数据库类型,无需等待迁移评估系统版本更新,具有很好的扩展性。
在一个实施例中,上述数据库迁移评估方法还包括:识别源查询语句中的语句类型关键字;获取语句类型关键字关联的目标库语法模板;目标库语法模板包括待填充字段;提取源查询语句中用于记录迁移对象的元数据信息的源字段;基于与提取出的源字段对应的目标字段替换目标语法模板中待填充字段,得到目标查询语句;通过在目标数据库中执行目标查询语句将源数据库中与源查询语句对应的迁移对象迁移至目标数据库。
其中,语句类型关键字是指SQL语句能够表征该SQL语句的语句类型的关键字,如DELETE、CREATE TABLE等。如前文,SQL语句的语句类型包括DDL语句、DML语句等。比如,当源SQL语句中包含CREATE TABLE关键字时,可以确定该SQL语句为DDL语句。
目标库语法模板是预设的用于将源SQL语句转换为目标SQL语句的中间媒介。配合文件中记录了每个语句类型关键字所对应的目标库语法模板。目标库语法模板包括模板字段和待填充字段。模板字段是固定不变的字段信息,待填充字段是需要根据源SQL语句动态确定的字段信息。比如,语句类型关键字CREATE TABLE所关联的目标库语法模板可以是“CREATE TABLE IF NOT EXISTS***ENGINE=InnoDB DEFAULT CHARSET=utf8;)”,其中,‘***’为待填充字段。
迁移对象的元数据信息是指迁移对象中具体数据信息。比如,TABLE表的字段值、主键、字段的数据类型等。比如,源SQL语句“CREATE TABLE"TEST"."B4"("ID"NUMBER(*,0),"NAME"VARCHAR2(20))SEGMENT CREATION IMMEDIATE PCTFREE 10PCTUSED 40INITRANS1MAXTRANS 255NOCOMPRESS LOGGING STORAGE(INITIAL 65536NEXT 1048576MINEXTENTS1MAXEXTENTS 2147483645PCTINCREASE 0FREELISTS 1FREELIST GROUPS 1BUFFER_POOLDEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)TABLESPACE"USERS"”中所记录的迁移对象TABLE的元数据信息包括:表名为B4,字段ID和NAME的字段值NUMBER(*,0)和VARCHAR2(20)。
具体地,终端识别源查询语句中的语句类型关键字;获取语句类型关键字关联的目标库语法模板。终端识别源查询语句中用于记录迁移对象的元数据信息的源字段,基于与提取出的源字段对应的目标字段替换目标语法模板中待填充字段,得到目标查询语句。比如,在上述举例中,当源数据库为ORACLE数据库,目标数据库为TDSQL数据库时,源SQL语句中包含TABLE元数据信息的源字段NUMBER(*,0)和VARCHAR2(20)分别可以转换为DECIMAL(22)和VARCHAR(20),由此,源SQL语句转换得到的目标SQL语句可以是“CREATE TABLE IFNOT EXISTS`B4`(`ID`DECIMAL(22),`NAME`VARCHAR(20))ENGINE=InnoDB DEFAULTCHARSET=utf8;)”。终端通过在目标数据库中执行目标查询语句,即可将源数据库中与源查询语句对应的迁移对象迁移至目标数据库。
在一个实施例中,终端通过源数据库系统表中获取出迁移对象的元数据信息,通过目标库语法模板与数据类型转换工具类对记录元数据信息的源SQL语句进行语法转换,得到目标SQL语句。
本实施例中,在执行迁移评估任务的同时完成目标SQL语句的转换,通过执行目标SQL语句即可完成数据的迁移,提高数据迁移效率;此外,借助预置的目标库语法模板即可从语法上快速完成不同类型数据库之间SQL语句的转换,提高目标SQL转换效率。
在一个实施例中,上述数据库迁移评估方法还包括:在源数据库中采集来自业务应用的业务查询语句;将每个业务查询语句拆分为多个源字段,将源字段与配置信息中的配置项进行匹配;配置项包括源字段及对应的关联字段;关联字段包括不兼容因素或符合目标数据库的语法规则的目标字段;当源查询语句中全部源字段对应的关联字段为目标字段时,基于目标字段将业务查询语句转换为符合目标数据库的语法规则的目标查询语句;基于迁移评估任务涉及的每条业务查询语句对应的不兼容因素或目标查询语句生成相应业务应用关于数据查询逻辑的修改报告。
多个业务应用可以依赖同一源数据库。业务应用向源数据库所发送的查询请求携带了业务SQL语句。业务SQL语句以日志的形式记录在源数据库中。
具体地,如前文,迁移评估任务包括数据对象迁移评估任务和业务应用迁移评估任务。终端不仅可以对源数据库中数据对象在目标数据库中的兼容性进行评估,还可以按照上述方式对依赖源数据库的业务应用对目标数据库的兼容性进行评估。
终端执行业务应用兼容性迁移评估任务,按照迁移评估任务所指向的源数据库的连接信息登录源数据库。若预设时长内连接失败,直接结束业务应用兼容性迁移评估任务的执行。若预设时长内连接成功,终端基于所配置的源数据库登录信息登录源数据库,对业务应用发生的业务SQL语句进行周期性扫描和采集。在一个实施例中,在迁移评估任务创建时,用户还可以对采集业务SQL语句的间隔时间进行配置。
终端按照上述方式提取所采集的每条业务SQL语句中的源字段,并根据配置文件中所记录的源字段对应的关联字段,生成业务SQL语句对应的迁移评估结果。终端基于业务应用兼容性迁移评估任务涉及的每条业务SQL语句对应的不兼容因素、目标SQL语句及迁移工作量生成相应业务应用关于数据查询逻辑的修改报告。数据对象兼容性迁移评估结果与业务应用关于数据查询逻辑的修改报告分别可以Word或PDF等格式的文档输出。参考图5,图5示出了一个实施例中业务应用兼容性迁移评估报告的示意图。如图5所示,终端以列表的形式展示了在采集时段访问源数据库的每个业务应用的应用名称、编号id、所产生的业务SQL语句数量、其中兼容业务SQL语句的数量、不兼容业务SQL语句的数量,以及迁移工作量。
在业务应用所依赖的数据从源数据库迁移至目标数据库后,业务应用后续需要访问目标数据库获取数据。业务应用关于数据查询逻辑的修改报告中所记录的目标SQL语句是符合目标数据库语法规则的SQL语句,便于业务应用提供商参考该修改报告对业务应用的数据查询逻辑进行更新。
本实施例中,对业务应用进行可移植性分析,并提供评估报告,为开展迁移工作提供指引,有利于缩短迁移周期。
在一个实施例中,上述数据库迁移评估方法还包括:基于对评估报告中报告字段的加密操作,确定报告字段的访问属性;在加密后评估报告的初始名中添加角色标识,得到存储名;将存储名与包含访问属性的评估报告对应存储。
执行迁移评估任务生成的评估报告具有对应的初始名和存储名。初始名可以是用户创建迁移评估任务时自定义的,也可以是数据库迁移应用根据迁移评估任务的任务信息自动生成的报告名称,如project等。角色标识是能够表征用户角色特征的标识信息。用户角色包括第一角色、第二角色等。不同用户角色具有不同的角色标识。比如,第一角色标识可以是“con”等,第二角色标识可以是“res”等。存储名是采用预设拼接符将初始名与用户标识拼接形成的评估报告名称,如“project-res”等。拼接符可以是“/”,“_”,“#”,“@”或“*”等。可以理解,用户的角色不仅仅局限于上述第一角色和第二角色,还可以是根据需求自由设定的其它更多角色。
评估报告包括多个报告字段,如前文举例的数据对象类型、源SQL语句、目标SQL语句等。有些报告字段中可能记录有敏感信息,比如源SQL语句中的迁移对象具体数据信息可能包含用户密码等敏感信息。而这些产生这些敏感信息的业务应用提供方并不期望这些敏感信息被随意访问。为了解决这个问题,数据库迁移应用还支持用户在创建迁移评估任务时,对所生成评估报告的版本进行配置。
具体地,为了提高评估报告的信息安全性,终端将执行迁移评估任务生成的评估报告确定为非加密版本评估报告,并将评估报告的初始名与访问权限最高的用户角色的角色标识进行拼接,将拼接得到的存储名确定非加密版本的评估报告的存储名。终端识别评估报告中的敏感信息,对该敏感信息进行加密,得到敏感信息对应的密文,以密文替换相应敏感信息,得到加密版本的迁移报告。终端将迁移报告的初始名与访问权限次高的用户角色标识进行拼接,将拼接得到的存储名作为加密版本的评估报告的存储名。其中,每个用户角色的访问权限可以根据需求自由设定。
本实施例中,针对不同用户角色分别生成不同版本的评估报告,从而达到不同用户角色的用户对评估报告具有不同的访问权限的效果。
在一个实施例中,将存储名与包含访问属性的评估报告对应存储包括:获取评估报告所对应的任务描述;对任务描述与存储名进行拼接,得到标识字符串;根据标识字符串,生成加密后评估报告的报告标识。
任务描述是能够唯一表征迁移评估任务的任务特征的信息,具体可以是对评估报告的作用、主要内容等的描述信息。任务描述可以是用户创建评估任务时自定义的,也可以是数据库迁移应用根据从源数据库中拉取的数据对象的具体数据信息自动生成的。在一个实施例中,任务描述还可以是数据库迁移应用在迁移评估任务创建完毕时为迁移评估任务所分配的任务编号,或者由迁移评估任务所指向源数据库和目标数据库的连接信息拼接而成的拼接字符串等。
具体地,终端获取迁移评估任务的任务描述,以及所生成评估报告的存储名,将任务描述与存储名拼接,得到标识字符串。终端根据该标识字符串,生成相应评估报告的报告标识。例如,终端可以依次将标识字符串中每个字符转换为对应的二进制码片段,拼接各个二进制码片段,将拼接得到的二进制码作为报告标识,或者对二进制码进行哈希运算,将运算得到的哈希值作为报告标识。终端将报告标识与相应的非加密版本评估报告或加密版本评估报告关联存储。
在一个实施例中,终端将生成的评估报告发送至服务器,服务器按照上述方式根据为迁移评估任务配置的评估报告的版本信息,转换生成对应的非加密版本评估报告和/或加密版本评估报告,并生成每个版本评估报告的存储名和报告标识。服务器将报告标识返回至终端。报告标识后续可以作为终端从服务器拉取评估报告的电子凭证。将评估报告发送至服务器,便于用户随时随地远程访问评估报告。
本实施例中,由于不同迁移评估任务的任务描述唯一的表征了当前任务的特征,因此即使在存储相同的情况下,生成的报告标识也不同,从而可以减少相同存储应用名对评估报告访问的干扰。
在一个实施例中,上述数据库迁移评估方法还包括:获取对评估报告进行访问操作所产生的评估报告的初始名;确定触发检索操作的用户的角色;根据角色及初始名获取访问操作所指向的评估报告;根据评估报告中报告字段的访问属性对相应报告字段明文或密文展示。
具体地,用户可以在创建迁移评估任务时,指定评估报告的推送时间、推送方式以及推送终端等。推送时间是指向用户发送评估报告的时间。推送方式是指向用户发送评估报告所采用的通信方式,如邮件、社交应用或短消息等。推送指端是指用于接收评估报告的终端。在评估报告生成后,数据库迁移应用可以在推送时间将评估报告的链接地址按照预置的通信方式发送至推送终端。根据链接地址,用户可以基于推送终端在线访问评估报告具体内容,也可以将评估报告以文件的方式导出后离线访问。
进一步地,用户可以基于评估报告的链接地址触发评估报告访问请求,或者直接在数据库迁移应用触发评估报告访问指令。当触发了访问请求或访问指令时,数据库迁移应用从访问请求或访问指令中获取当前登录用户的用户标识以及用户所期望访问的评估报告的初始名。数据库迁移应用根据预存储有每个用户标识对应的用户角色信息,确定当前用户的用户标识所对应的用户角色。数据库迁移应用采用预设拼接符将所获取的角色标识与初始名拼接,得到检索名。数据库迁移应用查询将检索名作为存储名的评估报告,对所查询到的评估报告在线展示,或按照用户下载操作将查询到的评估报告导出。
可以理解,若用户为具有高访问权限的第一角色用户,则所查询到的评估报告为非加密版本评估报告,评估报告的全部报告字段可以明文展示。若用户为具有低访问权限的第二角色用户,则所查询到的评估波高为加密版本评估报告。对于加密版本评估报告,其中访问属性为加密属性的报告字段密文展示,访问属性为非加密属性的报告字段明文展示。
本实施例中,对评估报告中敏感的报告字段进行加密,并对评估报告的访问权限进行限定。访问权限高的用户角色可以访问完整的评估报告,而访问权限低的用户角色只能访问敏感字段被加密替换的评估报告,可以提高评估报告的信息安全性。
在一个具体实施例中,如图6所示,本申请提供的数据库迁移评估方法包括以下步骤:
S602,确定迁移评估任务所指向的源数据库和目标数据库。
S604,在源数据库中采集迁移对象对应的源查询语句以及来自业务应用的业务查询语句。
S606,获取用于在源数据库与目标数据库间进行迁移评估的配置信息;配置信息中的配置项包括源字段及对应的关联字段。
S608,分别识别源查询语句及业务查询语句中的关键字。
S610,在源查询语句及业务查询语句中提取位于相邻两个关键字之间的待评估片段。
S612,基于预设的拼接字符对待评估片段进行拆分,得到多个源字段。
S614,当源查询语句或业务查询语句中存在源字段对应的关联字段为不兼容因素时,判定源查询语句或业务查询语句匹配失败。
S616,当源查询语句或业务查询语句中全部源字段对应的关联字段为符合目标数据库的语法规则的目标字段时,判断源查询语句或业务查询语句匹配成功。
S618,识别源查询语句和业务查询语句中的语句类型关键字。
S620,获取语句类型关键字关联的目标库语法模板;目标库语法模板包括待填充字段。
S622,提取源查询语句和业务查询语句中用于记录迁移对象的元数据信息的源字段。
S624,基于与提取出的源字段对应的目标字段替换目标语法模板中待填充字段,得到目标查询语句。
S626,通过在目标数据库中执行目标查询语句将源数据库中与源查询语句对应的迁移对象迁移至目标数据库。
S628,当源查询语句或业务查询语句匹配失败时,基于源查询语句或业务查询语句中源字段关联的不兼容因素生成源查询语句的迁移评估结果。
S630,当源查询语句或业务查询语句匹配成功时,确定源查询语句或业务查询语句的迁移工作量,基于迁移工作量及目标查询语句生成源查询语句的迁移评估结果。
S632,基于迁移评估任务涉及的每条源查询语句和业务查询语句的迁移评估结果生成评估报告。
上述数据库迁移评估方法,用户只要指定源数据库和目标数据库的信息即可发起数据迁移前的迁移评估任务;基于预置适用于当前数据库类型的配置信息执行迁移评估任务,可对任务所涉及的源查询语句从语法上逐项进行兼容性和工作量多维度评估,在保证迁移评估准确性的同时,提高了数据库迁移评估效率;此外,通过预置用于不同类型数据库迁移评估的配置信息可以灵活实现多种类型数据库之间的迁移评估,扩大本方案适用范围;通过更新配置信息,可以实现随时新增迁移评估的数据库类型,无需等待迁移评估系统版本更新,具有很好的扩展性。
在另一个具体实施例中,如图7所示,本申请提供的数据库迁移评估方法包括以下步骤:
S702,确定迁移评估任务所指向的源数据库和目标数据库。
S704,在源数据库中采集迁移对象对应的源查询语句及来自业务应用的业务查询语句。
S706,获取用于在源数据库与目标数据库间进行迁移评估的配置信息。
S708,将源查询语句及业务查询语句与配置信息中每个配置项进行匹配。
S710,根据匹配失败的配置项关联的不兼容因素,及匹配成功的配置项关联的迁移工作量,生成迁移评估任务关于迁移对象兼容性、业务应用兼容性及工作量的评估报告。
S712,基于对评估报告中报告字段的加密操作,确定报告字段的访问属性。
S714,在加密后评估报告的初始名中添加角色标识,得到存储名。
S716,将存储名与包含访问属性的评估报告对应存储。
S718,获取对评估报告进行访问操作所产生的评估报告的初始名。
S720,确定触发检索操作的用户的角色。
S722,根据角色及初始名获取访问操作所指向的评估报告。
S724,根据评估报告中报告字段的访问属性对相应报告字段明文或密文展示。
在一个具体实施例中,如图8a及图8b所示,基于本申请提供的数据库迁移评估方法,除可以生成如上图4所示的数据对象兼容性评估报告以及如上图5所示的业务应用兼容性评估报告,还可以基于数据迁移节点执行数据迁移任务生成迁移报告,并基于数据校验模块执行数据校验任务生成校验报告。上述多个报告可以集中为一个报告展示,也可以分别独立展示。如图8a所示,数据迁移节点在数据任务执行完毕后对迁移成功的对象和迁移失败的对象的数量进行统计,得到迁移成功率。对应迁移报告可以采用图表的方式展示,其中记录了数据迁移任务所涉及的目标数据库的数据库名、模式名、迁移的总数据量以及总对象数等。如图8b所示,数据校验模块在数据迁移任务执行完毕后对迁移前后数据的一致性及完整性进行校验,计算校验通过率。对应的校验报告中还记录了数据迁移任务所涉及的目标数据库的数据库名、模式名、源库表数量、目标库表数量、源库行数量、目标行数量、校验通过数量等。
图2、6和7为一个实施例中数据库迁移评估方法的流程示意图。应该理解的是,虽然图2、6和7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、6和7中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
如图9所示,在一个实施例中,提供了数据库迁移评估装置900,包括源数据提取模块902、迁移评估模块904和评估报告模块906,其中,
源数据提取模块902,用于确定迁移评估任务所指向的源数据库和目标数据库;在源数据库中采集迁移对象对应的源查询语句。
迁移评估模块904,用于获取用于在源数据库与目标数据库间进行迁移评估的配置信息;将源查询语句与配置信息中每个配置项进行匹配。
评估报告模块906,用于根据匹配失败的配置项关联的不兼容因素,及匹配成功的配置项关联的迁移工作量,生成迁移评估任务关于迁移对象兼容性及工作量的评估报告。
在一个实施例中,配置项包括源字段及对应的关联字段;迁移评估模块904还用于识别源查询语句中的关键字;在源查询语句中提取位于相邻两个关键字之间的待评估片段;基于预设的拼接字符对待评估片段进行拆分,得到多个源字段;当源查询语句中存在源字段对应的关联字段为不兼容因素时,判定源查询语句匹配失败;当源查询语句中全部源字段对应的关联字段为符合目标数据库的语法规则的目标字段时,判断源查询语句匹配成功。
在一个实施例中,如图10所示,上述数据库迁移评估装置900还包括数据迁移模块908,用于识别源查询语句中的语句类型关键字;获取语句类型关键字关联的目标库语法模板;目标库语法模板包括待填充字段;提取源查询语句中用于记录迁移对象的元数据信息的源字段;基于与提取出的源字段对应的目标字段替换目标语法模板中待填充字段,得到目标查询语句;通过在目标数据库中执行目标查询语句将源数据库中与源查询语句对应的迁移对象迁移至目标数据库。
在一个实施例中,评估报告模块906还用于当源查询语句匹配失败时,基于源查询语句中源字段关联的不兼容因素生成源查询语句的迁移评估结果;当源查询语句匹配成功时,确定源查询语句的迁移工作量,基于迁移工作量生成源查询语句的迁移评估结果;基于迁移评估任务涉及的每条源查询语句的迁移评估结果生成评估报告。
在一个实施例中,评估报告模块906还用于根据源查询语句涉及的关键字,确定源查询语句对应的迁移类型;基于相同迁移类型的历史查询语句对应的参考迁移时间,确定源查询语句对应迁移对象的迁移工作量。
在一个实施例中,源数据提取模块902还用于在源数据库中采集来自业务应用的业务查询语句;迁移评估模块904还用于将每个业务查询语句拆分为多个源字段,将源字段与配置信息中的配置项进行匹配;配置项包括源字段及对应的关联字段;关联字段包括不兼容因素或符合目标数据库的语法规则的目标字段;当源查询语句中全部源字段对应的关联字段为目标字段时,基于目标字段将业务查询语句转换为符合目标数据库的语法规则的目标查询语句;评估报告模块906还用于基于迁移评估任务涉及的每条业务查询语句对应的不兼容因素或目标查询语句生成相应业务应用关于数据查询逻辑的修改报告。
在一个实施例中,如图10所示,上述数据库迁移评估装置900还包括报告存储模块910,用于基于对评估报告中报告字段的加密操作,确定报告字段的访问属性;在加密后评估报告的初始名中添加角色标识,得到存储名;将存储名与包含访问属性的评估报告对应存储。
在一个实施例中,报告存储模块910还用于获取评估报告所对应的任务描述;对任务描述与存储名进行拼接,得到标识字符串根据标识字符串,生成加密后评估报告的报告标识。
在一个实施例中,如图10所示,上述数据库迁移评估装置900还包括报告访问模块912,用于获取对评估报告进行访问操作所产生的评估报告的初始名;确定触发检索操作的用户的角色;根据角色及初始名获取访问操作所指向的评估报告;根据评估报告中报告字段的访问属性对相应报告字段明文或密文展示。
上述数据库迁移评估装置,用户只要指定源数据库和目标数据库的信息即可发起数据迁移前的迁移评估任务;基于预置适用于当前数据库类型的配置信息执行迁移评估任务,可对任务所涉及的源查询语句从语法上逐项进行兼容性和工作量多维度评估,在保证迁移评估准确性的同时,提高了数据库迁移评估效率;此外,通过预置用于不同类型数据库迁移评估的配置信息可以灵活实现多种类型数据库之间的迁移评估,扩大本方案适用范围;通过更新配置信息,可以实现随时新增迁移评估的数据库类型,无需等待迁移评估系统版本更新,具有很好的扩展性。
图11示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的终端110。如图11所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现数据库迁移评估方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行数据库迁移评估方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的数据库迁移评估装置可以实现为一种计算机程序的形式,计算机程序可在如图11所示的计算机设备上运行。计算机设备的存储器中可存储组成该数据库迁移评估装置的各个程序模块,比如,图8所示的源数据提取模块、迁移评估模块和评估报告模块。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的数据库迁移评估方法中的步骤。
例如,图11所示的计算机设备可以通过如图9所示的数据库迁移评估装置中的源数据提取模块执行步骤S202和S204。计算机设备可通过迁移评估模块执行步骤S206和S208。计算机设备可通过评估报告模块执行步骤S210。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述数据库迁移评估方法的步骤。此处数据库迁移评估方法的步骤可以是上述各个实施例的数据库迁移评估方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述数据库迁移评估方法的步骤。此处数据库迁移评估方法的步骤可以是上述各个实施例的数据库迁移评估方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。