神通数据库迁移方案

1) 引言

      随着国产软件的逐渐壮大,政府对国产软件进行了大力的支持,使得国产软件得到了迅速的发展。国产数据库作为国产软件的代表之一。

      神通数据库作为大型的国产数据库,以其操作简单,通用性强、优质的技术服务等特点获得了越来越多的用户支持和青睐。神通数据库无论是在功能上还是在性能上均获得了业界的一致好评,在大型评测机构中,神通数据库取得了相当不错的成绩,其在某些方面的表现甚至要超过了国外流行的几家数据库。使用神通数据库来开发新的应用系统,以及将现有系统移植到神通数据库中,已经获得了用户的支持和认可。国内许多的应用系统都使用了神通数据库,其应用广泛分布在航天单位,政府部门、事业单位、军队等。

      如果你当前的应用系统使用的是其他品牌的数据库,而希望将现有的应用系统移植到神通数据库中上运行或试运行,可参考本文档。本文档旨在说明如何将数据对象从其他数据库移植到神通数据库的整个过程。由于大部分的迁移工作是自动完成的,通过该文档你会发现迁移工作是非常简单、易操作的。


2) 神通数据库迁移范围

      神通数据库数据迁移主要是迁移并转换异类数据。它能够进行神通数据库与各种数据库系统以及Excel文件、Text文件、XML文件之间数据的迁移转换。支持的数据源包括:神通数据库,Oracle,Microsoft SQL Server,IBM DB2,MYSQL,INFORMIX,SYBASE,Excel,Text File,DEL, XML File。


3) 数据迁移的方法和策略

       神通数据库迁移主要采用一次迁移的策略进行,即通过数据库迁移工具,将需要迁移的数据对象和数据结构一次性迁移到新的数据库系统中如:表的列名、数据类型、长度、精度、约束、外键、索引等。迁移实施的过程比较短,迁移时涉及的问题少,风险相对比较低。

       因为数据库厂商众多,各个数据库之间的使用方式差异很大,神通数据库与这些数据库也存在一些不兼容的语法(主要包括一些SQL语句的书写方式和一些特有的系统函数、系统表,以及部分不兼容的接口函数),所以需要进行手动的数据迁移,对于这部分不兼容的代码,可以由数据库应用支持人员指出,由应用程序的开发人员进行修改。

     归纳起来神通数据库的迁移策略分为两部分:自动迁移和手动移植。


4) 数据迁移的实现

      数据迁移的实现主要包括四个阶段:数据迁移前的评估、数据迁移的实施和数据迁移后的调试、数据迁移后的优化。如下图所示:


 


       神通数据库标准版采用关系数据模型作为核心数据模型,支持SQL通用数据库查询语言,提供标准的ODBC、JDBC、OLEDB/ADO、.Net Provider等数据访问接口,并具有海量数据管理和大规模并发处理能力。系统功能完善、性能稳定,可广泛应用于各类企事业单位、政府机关的信息化建设。几年来,神通数据库已经在航天、航空、政府、金融、电信、船舶、能源、电力、互联网等行业得到了大量应用,可靠稳定的支撑了政府机关和企事业单位的数据业务平台,与此同时,神通数据库也在基础软件领域极大地推动了我国软件产业的发展。

■ 数据迁移前的评估

      在执行将应用系统从其他数据库移植到神通数据库之前,对于移植代价需要先做一个估计。移植过程中最重要的问题就是该应用系统是否与神通数据库兼容,应用系统可能需要重写部分代码来连接神通数据库。重写代码的工作量依据使用的接口而定:

      如果当前系统使用的是标准的接口,如ODBC、JDBC等,由于神通数据库对于标准接口的标准符合度非常高,其修改量应该是比较小的

      如果当前系统使用了嵌入式SQL,其修改量要依据该产品的数据库与神通数据库在嵌入式SQL的兼容性。如果两个数据库产品对于嵌入式SQL的兼容性比较好,则修改量不大,如果两个数据库库的嵌入式SQL兼容性较差,则修改量会很大。

      由于各个数据库都有自己的内部接口,而其他数据库对于这些内部接口基本不会支持。如果当前系统使用的是数据库的内部接口,那么此时的改动就会比较大,整个的接口层都需要修改,需要用神通数据库支持的标准接口(如ODBC、JDBC)或神通数据库支持的内部接口来进行相应的替换。

■ 数据迁移的实施

    神通数据库的实施范围包括两方面:数据移植,代码移植。

* 数据移植

      数据移植方面,全部由数据库支持人员来完成,无需应用程序的开发人员进行参与。数据移植主要分为四个步骤:

根据源库在目的库上建立相应的用户,创建相应的表空间。

       移植数据库的基本对象,包括表,视图,索引,约束,序列。这部分的移植使用神通数据库的迁移工具进行自动化移植,具体操作会在第5部分进行详细技术说明。

移植存储过程,函数,和触发器。

      神通数据库提供的迁移工具无法迁移存储过程、函数、触发器数据库对象,它们的迁移目前只能通过手工迁移来完成。无法迁移的原因是异构数据库间的存储过程、函数、触发器的定义语法格式、调用语法存在比较大的差异,并且存储过程、函数、触发器也是数据库过程化语言的实现,它们主体功能实现的形式是灵活多样,业务复杂的;另外,神通数据库提供的触发器是建立在一个用户自定义的触发器函数基础之上的,触发器的种类主要有行级触发器、列级触发器、语句级触发器。

移植用户和角色

     神通数据库提供的迁移工具也是无法迁移用户、角色的,它们的迁移也只能通过手工进行迁移。首先建立相应的角色、用户,赋予角色相应的权限,赋予用户相应的角色。另外,在神通数据库中创建用户后,会自动创建一个和用户名相同的模式。

* 代码移植

     应用程序代码是应用系统移植中的另一大块内容,它不但涉及到业务逻辑、运用编程语言多种多样、代码量庞大,而且代码应用非常灵活、各个数据库提供的功能也存在着差异,所以应用程序代码也是无法通过自动化移植来完成的,代码移植人员必须通过手工移植。对于这部分不兼容的代码,可以由数据库应用支持人员指出,由应用程序的开发人员进行互相合作,互相配合来完成。

应用程序代码移植主要分为三部分内容:

      第一部分是简单SQL语句书写格式、存储过程调用方式、系统函数使用方式等问题;

      第二部分是应用程序中调用了异构数据库提供的特殊功能,而神通数据库目前没有提供相应的功能,则应通过应用程序编码来实现,如SQL SERVER提供的对EXCEL导入、导出函数opendatasource,神通数据库没有提供对应功能的函数,就需要通过编码来实现此函数的功能;

      第三部分是无法迁移的存储过程、触发器等数据库对象,也应通过应用程序编码来实现对应的功能。

■ 数据迁移后的调试

      数据迁移实施步骤都操作成功后,就可以部署应用程序连接到神通数据库。测试组针对应用系统编写测试用例,并进行全方面的功能性测试,开发人员修改测试中发现的BUG,最后得到一个基于神通数据库所有应用程序功能都能正常运行的系统。

■ 数据迁移后的优化

      通过自动化测试工具(如:LoadRunner)对系统进行多用户并发压力、稳定性测试,性能测试分析人员经过对结果的分析以后,定位系统是否存在性能瓶颈,若存在系统瓶颈则进行数据库性能优化;利用神通数据库自带的性能监测工具找出经常使用和比较耗时的SQL语句,进行SQL语句优化,如用简单语句替代复杂语句、建立索引等。经过性能分析、优化调整后,最后得到一个高稳定、高性能的应用系统。


5) 神通数据迁移工具使用说明

      从异构数据库(MYSQL、DB2、SQL SERVER、ORACLE),向神通数据库做数据迁移时,可以利用神通数据库自带的迁移工具做数据迁移。具体迁移步骤如下,以SQL SERVER向神通数据库迁移为例。

 ■ 创建数据库

     通过神通数据库DBA工具、ISQL或SQL交互工具建立一个有实际意义的模式名称。

注:不新建模式,直接把SQL SERVER的某个数据库通过迁移工具迁移到神通数据库,迁移工具会新建一个名为DBO的模式。

■ 迁移对象 
      单击 开始——>程序——>神通数据库——>数据迁移工具,启动后得到欢迎界面。欢迎界面上主要描述了神通数据库迁移工具所支持Oracle、DB2、SQL Server、MySql等数据库向神通数据库进行数据对象的迁移,神通数据库的版本。

 


     单击“下一步”,进入数据源设置界面,神通数据库迁移工具支持市场上常见的数据源类型,如Oracle、MySQL、SQL SEVER等数据源,也支持神通数据库不同版本间的迁移。具体如图2所示。

       选择数据源后,会自动选择对应的数据源驱动;服务器对应文本框填写IP地址或机器名,推荐使用IP地址;数据库对应的文本框应用要迁移的数据库名;用户名和密码对应的文本框填写可以正确登陆的用户名和密码。另外,神通数据库迁移工具还支持源文件向其他数据源的迁移,主要支持的文件类型为:Text、Excel、XML、DEL。下面以SQL SERVER数据源为例进行数据迁移,SQL SERVER运行在本机,数据库名为BjsascFrom_1y。具体如图3所示。



       单击“下一步”,进入目标数据源设置界面,也要设置对应的目标数据源类型、数据库驱动、数据库名、用户名、口令等,不同的数据源类型设置的参数会存在细微的差别,神通数据库支持的目标数据源类型如图4所示。
 

 
      另外,神通数据库迁移工具还支持目标数据源为文件类型,文件类型主要有:Text、Excel、SQL、XML、DEL。

     下面以神通数据库为目标数据源进行参数设置;神通数据库运行在本机,所以服务器设置为localhost;神通数据库默认端口为2003;数据库为OSRDB;用户名和密码分别为sydba和szoscar55(注:用户名不区分大小写,密码区分大小写)。具体参数配置如图5所示。



单击“下一步”,进入数据对象选择界面,异构数据库间迁移数据对象类型主要有表、视图具体,具体如图6所示。
 


      在模式区域内选中模式,则该模式下的表和视图均被选中。若只想迁移所有的表或视图,则选择对象类型下拉列表框中的对象,然后勾选“全选”复选框,具体如图7所示。


 


     可以根据自己的业务需求,迁移部分表或视图;单击“目的表名”列对应的具体表名来修改表名;也可以选择相应的操作方式:新建表、重载数据、追加数据。
     单击下一步,进入设置列转换规则界面,具体如图8所示。

 


 
      迁移工具默认会选择所有的基本表;可以根据实际的业务需求,改变要迁移表的目的列名、数据类型、长度、精度、可为空等属性,调整异构数据库间不兼容的问题。
      单击下一步,进入迁移其他数据对象的界面,其他数据对象主要有约束、外键、索引,具体如图9所示。
 

 
单击下一步,进入数据转换预览界面,如图10所示。
 

 
      用户可查看数据迁移转换的配置是否正确,如果正确,单击“下一步”开始进行数据转换;若预览时发现某项配置有错,则可以单击“上一步”返回到相应的配置界面。
预览的数据信息包括:
* 源数据源配置
* 目的数据源配置
* 迁移规则
* 表名映射
* 列映射
 
数据迁移条件设置:
■ 强制不使用import协议迁移
指的是在数据迁移过程中不使用神通数据库 import协议对数据导入进行优化,因为使用import协议会造成忽略对原有表结构中外键和check约束的校验。这样将较大的提高数据的迁移速度,但是如果源数据库中存在了不符合条件的检查约束和外键约束的数据,则迁移之后数据将会出错。
■ 不检查check约束
此功能则表示是否检查现有数据满足所迁移的约束,选中则检查,不符合时报错,不选则不检查。
■ 仅迁移索引
当选中该选项时,仅对数据表中的索引进行迁移。
■ 仅迁移表结构
选中时表示只迁移除表数据外的其他所有信息。
单击“下一步”,进入SQL SERVER向神通数据库的数据迁移过程的界面,具体如图11所示。

 


经过一段时间的数据迁移,数据迁移完成后,界面如图12所示。
 

 
      数据迁移完成后,可以单击“查看日志”按钮,查看数据迁移日志,迁移日志包括迁移对象的成功和失败情况、源数据源配置信息、目的数据源配置信息、迁移规则等。具体迁移日志信息如图13所示。
 


      如果数据迁移日志文件中含有数据库对象迁移失败的情况,迁移工具则会抛出数据库的对象异构数据库间迁移失败的原因,查看具体失败原因,进而解决无法迁移的问题。