论文部分内容阅读
[摘要]如何实现旧网站保留的历史数据向新系统中的顺利迁移,成为目前企业内容管理系统必须解决的一个问题。本文通过研究网站内容管理系统升级时的数据迁移,实现了数据迁移过程模型。通过设计一个跨平台的通用的数据迁移工具,最终实现了系统的数据迁移。
[关键词]内容管理系统 数据迁移 Hibernate
[中图分类号]TP315[文献标识码]A[文章编号]1009-5349(2011)01-0030-02
引言
如何实现旧网站保留的历史数据向新系统中的顺利迁移,是企业内容管理系统必须解决的一个问题。由于所使用的数据库平台的异构性,亟待开发一个跨平台的通用的数据迁移工具。本文通过构建数据迁移总体模型,引入Hibernate中间层,用来实现内容管理系统之间的异构数据库数据交换。
一、内容管理系统数据迁移的设计
(一)系统需求分析
基于目前企业网站的实际情况,以下是需要解决的一些问题:
1.数据迁移策略的选择
针对网站的内容管理系统,在升级网站内容管理系统时,应该结合不同的迁移方法和不同的迁移工具,使数据迁移工作变得高效。
2.数据转换方法的选择
建立数据迁移模型的关键问题是如何解决不同数据库、不同平台之间的数据转换,包括数据的分拆、数据的抽取、数据的传输、数据的重组等。
3.数据的抽取的实现
在数据抽取的实现中,该数据抽取方法可以应用到任何操作系统上,即具备平台无关性。
4.跨平台与通用性的实现
怎样设计出一种跨平台与通用性的数据迁移工具,以减少程序设计的复杂性,也是所面临的一个问题。
(二)运用Hibernate消除数据库的异构性
本文运用Hibernate消除数据库的异构性。在具体的数据迁移中,首先对Configuration类进行调用,在内存中调入Hibernate映射文件和配置文件中的信息,基于这些信息,在Configuration类的作用下生成一个对象:Session Factory,经由这个对象进一步生成一个Session对象,然后生成Transaction对象。由Session对象的方法来实现持久化对象的不同操作。最终通过Transaction对象来提交这些操作结果。
(三)数据迁移模型设计方案
1.模型总体功能与层次结构
为了适应企业网站中各种迁移需要,本模型设计的策略适用一次迁移,同时也适用分次迁移。在进行迁移时,指令由新内容管理系统发出,迁移指令被中间处理层检测到,对源数据库中的数据利用Hibernate提取,经过对数据表中的数据进行转换,使之成为统一的静态Java类对象,在进行分拆处理后,以Hibernate在新系统中写入:
(1)源数据库层。这个层次通过Hibernate,可以将需要访问的数据类型抽象为静态Java类,从而实现访问需要迁移的数据库的信息。
(2)中间处理层。在Hibernate的协助下,建立与目标数据库和源数据库之间的连接,表中各数据字段信息及数据库中表的基本信息通过Hibernate接口得到,并将其转换为静态Java类,实现对数据的整理和拆分,将源数据库中的数据迁至目标数据库中。
(3)客户端层。客户端层指的是目标数据库端,用来实现返回迁移结果和出错信息,接收数据迁移完成信号,发送数据迁移指令等。
(4)源数据库。源数据库指的是旧内容管理系统原有数据库,源数据库大多为基于一种平台的几个不同版本的系统,其异构性通过Hibernate来进行消除。
(5)数据迁移准备。数据迁移准备涉及到的工作包括旧系统数据质量分析、旧系统数据字典整理、新旧系统数据差异性分析、新系统数据字典整理等。
2.数据迁移的流程
针对网站数据迁移的特性和网站内容管理系统本身的特点,本文通过Hibernate消除数据异构性。下图所示为数据迁移的流程。
结合上图,下面简要阐述数据迁移的基本过程:
(1)查询新网站内容管理系统是否包含需要迁移的历史数据。
(2)如果没有查询到该历史数据,就向中间层传输一个数据迁移指令,如果查询到历史数据,就继续完成迁移任务。
(3)在Hibernate的协助下,中间处理层通过连接源数据库,在对象模型中加载数据模型中的数据。
(4)中间处理层转换对象模型中的对象,包括数据分拆、数据重组等。
(5)对转换后的对象进行组装,使之成为新系统对应的Hibernate模型,通借助Hibernate内部机制写入到目的数据库中。
(6)迁移结果由中间处理层显示,同时将完成信号发送给新内容管理系统,继续回到步骤(1)。
(四)数据迁移总体模型的关键技术
本系统重点和难点在于实现不同对象模型之间的分拆重组。
1.通过Hibernate对源数据库进行抽取
下图所示为数据抽取过程,通过反向工程生产的类,以及已经配置好的源数据库Hibernate映射,在系统中加载静态数据。
图:Hibernate 抽取数据
通过将源数据库中的数据抽取出来,使之转换为Java对象,关键代码如下:
public static void copyBody(String[]args){
//加载编号为5的文章
WyArticles article=new WyArticles(5);
……
}
通过以上代码,将一个id号为5的文章加载到系统中,从而进一步拆分验证该数据对象。
2.拆分验证静态数据对象
一般来讲,网站新旧内容管理系统数据库E-R图是有所差异的,在组织格式上,通过Hibernate抽取的Java类也有不少差别,因此对Java对象进行相应的转换是十分必要的。基本的转换主要包括:
(1)验证空值:如果系统在是否允许保存空值上存在矛盾,就需要通过一定的空值验证的手段,将默认值存储到新系统中。
(2)验证数据长度:数据库都有数据库长度的要求,进入新系统的数据长度必须通过验证,以符合系统要求。
(3)转换数据格式:可以通过Java内部的一些方式来构造出符合目标数据库的Java类格式。
3.数据重组写入静态数据对象
结合目标数据库的需求,对源系统经过拆分验证后的数据,组装为Java类格式,这也是目标数据库需要的。然后再借助Hibernate,将来自目标数据库的Dao文件提取出来,存入目标数据库中,具体操作流程如下图所示。
图:Hibernate 写入数据
一条记录的迁移工作至此完成了,只要系统重复进行迁移指令,就会逐步将旧系统中的数据信息全部迁移到新系统中。
二、结束语
由于新旧网站内容管理系统存在异构性,因此数据迁移工作也存在很大的难度。本文通过研究网站内容管理系统升级时的数据迁移,实现了数据迁移过程模型。通过设计一个跨平台的通用的数据迁移工具,最终实现了系统的数据迁移,具有一定的理论价值与现实意义。
【参考文献】
[1]Norman W.Y.Shao,Stephen J.H.A content Management System for Adaptive Learning Environment.Proceedings of the IEEE Fifth International Symposium OilMultimedia Software Engineering.
[2]弓英.内容管理系统的设计与实现[D].南京信息工程大学,2009.
[3]陈伟,丁秋林,谢强.交互式数据迁移系统及相似检测效率优化[J].华南理工大学学报自然科学版,2008,32(2):58-61.
[关键词]内容管理系统 数据迁移 Hibernate
[中图分类号]TP315[文献标识码]A[文章编号]1009-5349(2011)01-0030-02
引言
如何实现旧网站保留的历史数据向新系统中的顺利迁移,是企业内容管理系统必须解决的一个问题。由于所使用的数据库平台的异构性,亟待开发一个跨平台的通用的数据迁移工具。本文通过构建数据迁移总体模型,引入Hibernate中间层,用来实现内容管理系统之间的异构数据库数据交换。
一、内容管理系统数据迁移的设计
(一)系统需求分析
基于目前企业网站的实际情况,以下是需要解决的一些问题:
1.数据迁移策略的选择
针对网站的内容管理系统,在升级网站内容管理系统时,应该结合不同的迁移方法和不同的迁移工具,使数据迁移工作变得高效。
2.数据转换方法的选择
建立数据迁移模型的关键问题是如何解决不同数据库、不同平台之间的数据转换,包括数据的分拆、数据的抽取、数据的传输、数据的重组等。
3.数据的抽取的实现
在数据抽取的实现中,该数据抽取方法可以应用到任何操作系统上,即具备平台无关性。
4.跨平台与通用性的实现
怎样设计出一种跨平台与通用性的数据迁移工具,以减少程序设计的复杂性,也是所面临的一个问题。
(二)运用Hibernate消除数据库的异构性
本文运用Hibernate消除数据库的异构性。在具体的数据迁移中,首先对Configuration类进行调用,在内存中调入Hibernate映射文件和配置文件中的信息,基于这些信息,在Configuration类的作用下生成一个对象:Session Factory,经由这个对象进一步生成一个Session对象,然后生成Transaction对象。由Session对象的方法来实现持久化对象的不同操作。最终通过Transaction对象来提交这些操作结果。
(三)数据迁移模型设计方案
1.模型总体功能与层次结构
为了适应企业网站中各种迁移需要,本模型设计的策略适用一次迁移,同时也适用分次迁移。在进行迁移时,指令由新内容管理系统发出,迁移指令被中间处理层检测到,对源数据库中的数据利用Hibernate提取,经过对数据表中的数据进行转换,使之成为统一的静态Java类对象,在进行分拆处理后,以Hibernate在新系统中写入:
(1)源数据库层。这个层次通过Hibernate,可以将需要访问的数据类型抽象为静态Java类,从而实现访问需要迁移的数据库的信息。
(2)中间处理层。在Hibernate的协助下,建立与目标数据库和源数据库之间的连接,表中各数据字段信息及数据库中表的基本信息通过Hibernate接口得到,并将其转换为静态Java类,实现对数据的整理和拆分,将源数据库中的数据迁至目标数据库中。
(3)客户端层。客户端层指的是目标数据库端,用来实现返回迁移结果和出错信息,接收数据迁移完成信号,发送数据迁移指令等。
(4)源数据库。源数据库指的是旧内容管理系统原有数据库,源数据库大多为基于一种平台的几个不同版本的系统,其异构性通过Hibernate来进行消除。
(5)数据迁移准备。数据迁移准备涉及到的工作包括旧系统数据质量分析、旧系统数据字典整理、新旧系统数据差异性分析、新系统数据字典整理等。
2.数据迁移的流程
针对网站数据迁移的特性和网站内容管理系统本身的特点,本文通过Hibernate消除数据异构性。下图所示为数据迁移的流程。
结合上图,下面简要阐述数据迁移的基本过程:
(1)查询新网站内容管理系统是否包含需要迁移的历史数据。
(2)如果没有查询到该历史数据,就向中间层传输一个数据迁移指令,如果查询到历史数据,就继续完成迁移任务。
(3)在Hibernate的协助下,中间处理层通过连接源数据库,在对象模型中加载数据模型中的数据。
(4)中间处理层转换对象模型中的对象,包括数据分拆、数据重组等。
(5)对转换后的对象进行组装,使之成为新系统对应的Hibernate模型,通借助Hibernate内部机制写入到目的数据库中。
(6)迁移结果由中间处理层显示,同时将完成信号发送给新内容管理系统,继续回到步骤(1)。
(四)数据迁移总体模型的关键技术
本系统重点和难点在于实现不同对象模型之间的分拆重组。
1.通过Hibernate对源数据库进行抽取
下图所示为数据抽取过程,通过反向工程生产的类,以及已经配置好的源数据库Hibernate映射,在系统中加载静态数据。
图:Hibernate 抽取数据
通过将源数据库中的数据抽取出来,使之转换为Java对象,关键代码如下:
public static void copyBody(String[]args){
//加载编号为5的文章
WyArticles article=new WyArticles(5);
……
}
通过以上代码,将一个id号为5的文章加载到系统中,从而进一步拆分验证该数据对象。
2.拆分验证静态数据对象
一般来讲,网站新旧内容管理系统数据库E-R图是有所差异的,在组织格式上,通过Hibernate抽取的Java类也有不少差别,因此对Java对象进行相应的转换是十分必要的。基本的转换主要包括:
(1)验证空值:如果系统在是否允许保存空值上存在矛盾,就需要通过一定的空值验证的手段,将默认值存储到新系统中。
(2)验证数据长度:数据库都有数据库长度的要求,进入新系统的数据长度必须通过验证,以符合系统要求。
(3)转换数据格式:可以通过Java内部的一些方式来构造出符合目标数据库的Java类格式。
3.数据重组写入静态数据对象
结合目标数据库的需求,对源系统经过拆分验证后的数据,组装为Java类格式,这也是目标数据库需要的。然后再借助Hibernate,将来自目标数据库的Dao文件提取出来,存入目标数据库中,具体操作流程如下图所示。
图:Hibernate 写入数据
一条记录的迁移工作至此完成了,只要系统重复进行迁移指令,就会逐步将旧系统中的数据信息全部迁移到新系统中。
二、结束语
由于新旧网站内容管理系统存在异构性,因此数据迁移工作也存在很大的难度。本文通过研究网站内容管理系统升级时的数据迁移,实现了数据迁移过程模型。通过设计一个跨平台的通用的数据迁移工具,最终实现了系统的数据迁移,具有一定的理论价值与现实意义。
【参考文献】
[1]Norman W.Y.Shao,Stephen J.H.A content Management System for Adaptive Learning Environment.Proceedings of the IEEE Fifth International Symposium OilMultimedia Software Engineering.
[2]弓英.内容管理系统的设计与实现[D].南京信息工程大学,2009.
[3]陈伟,丁秋林,谢强.交互式数据迁移系统及相似检测效率优化[J].华南理工大学学报自然科学版,2008,32(2):58-61.