基于Delphi开发的应用系统数据通用迁移
2016-03-10新李瑞梁川李晓冬鲜文娟
黄 新李 瑞梁 川李晓冬鲜文娟
(1.成都军区联勤部后勤信息中心,四川 成都 610000;2.武警警官学院,四川 成都 610000;3.成都军区联勤部录像室,四川 成都 610000)
基于Delphi开发的应用系统数据通用迁移
黄 新1李 瑞2梁 川1李晓冬2鲜文娟3
(1.成都军区联勤部后勤信息中心,四川 成都 610000;2.武警警官学院,四川 成都 610000;3.成都军区联勤部录像室,四川 成都 610000)
数据集中管理和跨应用流动的发展需求使得异构数据库的数据迁移技术越发重要。本文提出一种通用的数据迁移新方法,可以直接远程提取Delphi语言编写的应用系统数据,能够有效保障数据迁移过程中的正确性和兼容性,为数据共享和复用提供有力抓手。
Delphi;异构数据;远程注入;反跟踪
1 概述
进入21世纪,计算机编程和数据库应用技术飞速发展,各种应用系统层出不穷,更新换代时间大大缩短,数据集中管理和跨应用流动成为新的趋势,常常要将数据迁移到新的平台从而满足性能需求以及功能性的需要。然而由于历史原因和计算机发展技术初期的局限性,企业各个部门之间应用系统构建伊始常常根据自身应用需求研制开发,数据库独立性强,无法和其他部门数据共享,互联互通性差,造成了很大的资源浪费。随着大数据技术发展得如火如荼,需要各部门各领域的数据更加集中,以往分散管理,处于不同平台的相关数据无法满足统一分析、决策以及时代发展的迫切需求,新的信息系统经常面对多个不同数据库环境,需将各个平台的数据整合迁移到新的系统中,异构数据库的数据迁移技术越加重要。
常见的异构数据库数据迁移技术[1]有以下几种:(1)通过BI工具或者数据库自身的ETL工具进行数据迁移。(2)开发专门的迁移模块针对具体应用完成迁移,可以依据自身特点修正,兼容性强,但是通用性差,不够灵活。(3)使用数据库自带的导入导出工具将原系统的数据导出,修正表结构、数据类型导入新的数据库系统,效率较高但是需要根据不同数据库特点进行人工补正。这些方法存在的共同问题是通用性较差,灵活性不够,迁移之前必须提前深入了解各个数据库的存储结构,由于环境的差异,数据迁移过程中出现问题的几率较高,后期维护困难,无法实现远程的数据迁移,存在较大的局限性,使用难度较高。
异构数据库数据迁移[2]是将不同数据库环境下的数据资源进行集中管理、共享并汇总至另一平台的过程。本文提供了一种新的应用数据库通用远程迁移技术,一改过去常见迁移技术的思路,无须了解各系统数据库的具体结构和数据内容,结合应用系统数据编辑界面,可以直接远程提取Delphi语言编写的应用系统数据,能够有效保障数据迁移过程中的正确性和兼容性,为数据共享和复用提供了有力抓手。
2 编程技术发展
自IBM的约翰.贝克斯针对汇编语言的缺陷于1957年研制出第一个高级程序设计语言Fortran以来,程序设计语言经历了从面向过程到面向对象,再到面向组件、面向服务的高速发展。
面向过程编程把编程任务划分成一个一个的步骤,然后按照步骤分别去执行。其中每完成一个步骤就像是完成一个任务中的单个过程一样。面向对象[3]编程将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。使用面向对象的方法,类似人类看待事物的方式对复杂系统进行分析、设计与开发。目前面向对象编程是主流,是编程技术事实上的标准,具备快速化、标准化、模块化等一系列优点。
Delphi是Windows平台下的一个集成开发环境(IDE),使用由传统面向过程的Pascal语言发展而来的Object Pascal编程语言,通过图形用户界面开发环境,运用IDE、VCL部件
与编译器,结合数据库连接功能,构成的以面向对象程序设计为核心的应用程序开发工具。Delphi特别适合运用于数据库方面,能够有效适应多种数据库结构,具有高效的数据库管理系统和先进的数据库引擎和大量的配套组件。本文构建的数据通用迁移系统主要针对于各种Delphi开发的应用数据之间的迁移。
3 通用数据迁移技术
本文构建的应用数据通用迁移平台的基本原理是:通过远程注入的方式使用迁移平台获取源应用程序数据录入编辑界面的句柄,逐条读取界面中各字段数据,随后数据迁移系统分析处理后自动将对应字段数据添加至目标程序数据录入界面并提交保存,从而完成多个应用平台之间的数据迁移。
3.1 应用系统对象模块句柄
句柄,是Windows编程的基础。一个句柄是指使用唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等,应用程序能够通过句柄访问相应对象的信息。实例化成内存的对象指针,即句柄。对象指针转换成对象,即可像使用对象一样使用目标数据。数据迁移系统必须首先获取源数据录入编辑模块的句柄,才能够对数据进行提取等进一步操作。但是Windows寻址,要求对象指针转换的转换模块同目标模块在同一进程中,因此,需要使用远程注入的方法。
3.2 远程线程注入
远程线程注入[4]是指一个进程在另一个进程中创建线程的技术。远线程注入原理是利用Windows系统中CreateR-emoteThread()这个API,其中第4个参数是准备运行的线程,我们可以将LoadLibrary()填入其中,这样就可以执行远程进程中的LoadLibrary()函数,进而将我们自己准备的DLL加载到远程进程空间中执行。
数据迁移平台通过远程注入的方式将自身的转换模块注入到源应用程序同一进程中就能获取到数据录入编辑模块的句柄并操作对象包涵的数据,实现数据读取的局域网操作。
3.3 消除异构冲突
数据获取之后须将数据填入目标应用系统数据录入界面并逐条重复。异构数据迁移一般包括模式转换[5]和数据转换,要实现数据的完整迁移往往是比较困难的。传统数据迁移的异构性主要有数据环境的异构、不同数据库管理系统的异构、数据不同类型不同精度的异构。本平台因为不直接涉及底层数据库的操作,因此只需确定数据类型的对应关系、解决命名冲突、格式冲突等问题。通过字段类型变换、字符串长度变换、日期格式变换、数据类型变换、字段合并等手段基本可以顺利解决。
4 存在问题
本文初步建立了一个基于Delphi平台之间的应用数据通用迁移系统,通过崭新的思路摒弃了传统数据迁移平台的缺点,有着很强的适用性和可操作性,但还是存在一些问题:
4.1 不同编译器将对象实例化后的区别
不同的编译器在实例化对象的时候存在些许区别,会造成获取对象指针时出现一些兼容性问题,在平台研制的过程中要充分考虑到这些区别,提升数据迁移平台的通用性和迁移成功率。
4.2 反跟踪代码
基于计算机应用系统的安全考虑,通常要采取多种手段和措施防止软件在运行过程中被恶意跟踪,反跟踪技术[6]是保证系统正常运行的必要一环。常见的反跟踪技术有破坏单步中断和断点中断、封锁键盘输入、检测跟踪法、分块加密执行程序、逆指令流法等。由于本文构建系统采用了一些别于传统的手段,应用系统必要的反跟踪机制有可能阻止本系统不同进程对象指针的获取,为数据迁移设置障碍。这是下一步亟待解决的问题。
5 未来发展
机器视觉可以看作是与人工智能和模式识别密切相关的一个子学科或子领域,面向的研究对象主要是图像和视频。在下一步的发展中,本系统可以引入机器视觉技术,软件自动截取待迁移数据系统界面,实时逐条识别分析系统数据字段,随后输入至目标系统数据录入编辑界面对应字段,模拟人工操作,用户无须了解数据库结构,同时也和系统开发语言、架构无关,进一步提升数据迁移平台的通用性、易用性和智能程度。
[1]周龙骧.分布式数据库管理系统实现技术[M].北京:科学出版社,1999.
[2]靳强勇,李冠宁,张俊.异构数据集成技术的发展和现状[J]计算机工程与应用,2002,38(11).
[3]张国锋.面向程序设计[M].北京:高等教育出版社,1995.
[4]Jeffrey Richter.Windows核心编程[M].王建华,张焕生,侯丽坤,等译.北京:机械工业出版社,2000.
[5]李鹏飞,赵军强.SSIS在异构数据库间数据迁移的应用研究[J].长江大学学报,2008(9):62-64.
[6]赵世平.浅谈汇编语言在反跟踪和反破解中的应用[J].程序员,2006(03).
General Migration ofApplication System Data Based on Delphi
Huang Xin1Li Rui2Liang Chuan1Li Xiaodong2Xian Wenjuan3
(1.Information Center,Joint Logistics Department of Chengdu Military Region Logistics,Chengdu 610000,Sichuan; 2.Armed police College,Sichuan,Chengdu 610000,Sichuan; 3.Video Room,Joint Logistics Department of Chengdu Military Region,Chengdu 610000,Sichuan)
The development of data centralized management and cross application flow makes the data migration technology of heterogeneous database become more and more important.This paper proposes a universal data transfer method,which can remotely extract the application system data written by Delphi,effectively protect the data validity and compatibility in migration process.It is conducive to data sharing and reuse.
Delphi;heterogeneous data;remote injection;back tracking
TP311.13
A
1008-6609(2016)08-0061-03
黄新,男,四川成都人,硕士研究生,助理工程师,研究方向:数据管理工作。