黃 新李 瑞梁 川李曉冬鮮文娟
(1.成都軍區聯勤部后勤信息中心,四川 成都 610000;2.武警警官學院,四川 成都 610000;3.成都軍區聯勤部錄像室,四川 成都 610000)
基于Delphi開發的應用系統數據通用遷移
黃 新1李 瑞2梁 川1李曉冬2鮮文娟3
(1.成都軍區聯勤部后勤信息中心,四川 成都 610000;2.武警警官學院,四川 成都 610000;3.成都軍區聯勤部錄像室,四川 成都 610000)
數據集中管理和跨應用流動的發展需求使得異構數據庫的數據遷移技術越發重要。本文提出一種通用的數據遷移新方法,可以直接遠程提取Delphi語言編寫的應用系統數據,能夠有效保障數據遷移過程中的正確性和兼容性,為數據共享和復用提供有力抓手。
Delphi;異構數據;遠程注入;反跟蹤
進入21世紀,計算機編程和數據庫應用技術飛速發展,各種應用系統層出不窮,更新換代時間大大縮短,數據集中管理和跨應用流動成為新的趨勢,常常要將數據遷移到新的平臺從而滿足性能需求以及功能性的需要。然而由于歷史原因和計算機發展技術初期的局限性,企業各個部門之間應用系統構建伊始常常根據自身應用需求研制開發,數據庫獨立性強,無法和其他部門數據共享,互聯互通性差,造成了很大的資源浪費。隨著大數據技術發展得如火如荼,需要各部門各領域的數據更加集中,以往分散管理,處于不同平臺的相關數據無法滿足統一分析、決策以及時代發展的迫切需求,新的信息系統經常面對多個不同數據庫環境,需將各個平臺的數據整合遷移到新的系統中,異構數據庫的數據遷移技術越加重要。
常見的異構數據庫數據遷移技術[1]有以下幾種:(1)通過BI工具或者數據庫自身的ETL工具進行數據遷移。(2)開發專門的遷移模塊針對具體應用完成遷移,可以依據自身特點修正,兼容性強,但是通用性差,不夠靈活。(3)使用數據庫自帶的導入導出工具將原系統的數據導出,修正表結構、數據類型導入新的數據庫系統,效率較高但是需要根據不同數據庫特點進行人工補正。這些方法存在的共同問題是通用性較差,靈活性不夠,遷移之前必須提前深入了解各個數據庫的存儲結構,由于環境的差異,數據遷移過程中出現問題的幾率較高,后期維護困難,無法實現遠程的數據遷移,存在較大的局限性,使用難度較高。
異構數據庫數據遷移[2]是將不同數據庫環境下的數據資源進行集中管理、共享并匯總至另一平臺的過程。本文提供了一種新的應用數據庫通用遠程遷移技術,一改過去常見遷移技術的思路,無須了解各系統數據庫的具體結構和數據內容,結合應用系統數據編輯界面,可以直接遠程提取Delphi語言編寫的應用系統數據,能夠有效保障數據遷移過程中的正確性和兼容性,為數據共享和復用提供了有力抓手。
自IBM的約翰.貝克斯針對匯編語言的缺陷于1957年研制出第一個高級程序設計語言Fortran以來,程序設計語言經歷了從面向過程到面向對象,再到面向組件、面向服務的高速發展。
面向過程編程把編程任務劃分成一個一個的步驟,然后按照步驟分別去執行。其中每完成一個步驟就像是完成一個任務中的單個過程一樣。面向對象[3]編程將現實世界的事物抽象成對象,現實世界中的關系抽象成類、繼承,幫助人們實現對現實世界的抽象與數字建模。使用面向對象的方法,類似人類看待事物的方式對復雜系統進行分析、設計與開發。目前面向對象編程是主流,是編程技術事實上的標準,具備快速化、標準化、模塊化等一系列優點。
Delphi是Windows平臺下的一個集成開發環境(IDE),使用由傳統面向過程的Pascal語言發展而來的Object Pascal編程語言,通過圖形用戶界面開發環境,運用IDE、VCL部件
與編譯器,結合數據庫連接功能,構成的以面向對象程序設計為核心的應用程序開發工具。Delphi特別適合運用于數據庫方面,能夠有效適應多種數據庫結構,具有高效的數據庫管理系統和先進的數據庫引擎和大量的配套組件。本文構建的數據通用遷移系統主要針對于各種Delphi開發的應用數據之間的遷移。
本文構建的應用數據通用遷移平臺的基本原理是:通過遠程注入的方式使用遷移平臺獲取源應用程序數據錄入編輯界面的句柄,逐條讀取界面中各字段數據,隨后數據遷移系統分析處理后自動將對應字段數據添加至目標程序數據錄入界面并提交保存,從而完成多個應用平臺之間的數據遷移。
3.1 應用系統對象模塊句柄
句柄,是Windows編程的基礎。一個句柄是指使用唯一的整數值,即一個4字節(64位程序中為8字節)長的數值,來標識應用程序中的不同對象和同類中的不同的實例,諸如,一個窗口,按鈕,圖標,滾動條,輸出設備,控件或者文件等,應用程序能夠通過句柄訪問相應對象的信息。實例化成內存的對象指針,即句柄。對象指針轉換成對象,即可像使用對象一樣使用目標數據。數據遷移系統必須首先獲取源數據錄入編輯模塊的句柄,才能夠對數據進行提取等進一步操作。但是Windows尋址,要求對象指針轉換的轉換模塊同目標模塊在同一進程中,因此,需要使用遠程注入的方法。
3.2 遠程線程注入
遠程線程注入[4]是指一個進程在另一個進程中創建線程的技術。遠線程注入原理是利用Windows系統中CreateR-emoteThread()這個API,其中第4個參數是準備運行的線程,我們可以將LoadLibrary()填入其中,這樣就可以執行遠程進程中的LoadLibrary()函數,進而將我們自己準備的DLL加載到遠程進程空間中執行。
數據遷移平臺通過遠程注入的方式將自身的轉換模塊注入到源應用程序同一進程中就能獲取到數據錄入編輯模塊的句柄并操作對象包涵的數據,實現數據讀取的局域網操作。
3.3 消除異構沖突
數據獲取之后須將數據填入目標應用系統數據錄入界面并逐條重復。異構數據遷移一般包括模式轉換[5]和數據轉換,要實現數據的完整遷移往往是比較困難的。傳統數據遷移的異構性主要有數據環境的異構、不同數據庫管理系統的異構、數據不同類型不同精度的異構。本平臺因為不直接涉及底層數據庫的操作,因此只需確定數據類型的對應關系、解決命名沖突、格式沖突等問題。通過字段類型變換、字符串長度變換、日期格式變換、數據類型變換、字段合并等手段基本可以順利解決。
本文初步建立了一個基于Delphi平臺之間的應用數據通用遷移系統,通過嶄新的思路摒棄了傳統數據遷移平臺的缺點,有著很強的適用性和可操作性,但還是存在一些問題:
4.1 不同編譯器將對象實例化后的區別
不同的編譯器在實例化對象的時候存在些許區別,會造成獲取對象指針時出現一些兼容性問題,在平臺研制的過程中要充分考慮到這些區別,提升數據遷移平臺的通用性和遷移成功率。
4.2 反跟蹤代碼
基于計算機應用系統的安全考慮,通常要采取多種手段和措施防止軟件在運行過程中被惡意跟蹤,反跟蹤技術[6]是保證系統正常運行的必要一環。常見的反跟蹤技術有破壞單步中斷和斷點中斷、封鎖鍵盤輸入、檢測跟蹤法、分塊加密執行程序、逆指令流法等。由于本文構建系統采用了一些別于傳統的手段,應用系統必要的反跟蹤機制有可能阻止本系統不同進程對象指針的獲取,為數據遷移設置障礙。這是下一步亟待解決的問題。
機器視覺可以看作是與人工智能和模式識別密切相關的一個子學科或子領域,面向的研究對象主要是圖像和視頻。在下一步的發展中,本系統可以引入機器視覺技術,軟件自動截取待遷移數據系統界面,實時逐條識別分析系統數據字段,隨后輸入至目標系統數據錄入編輯界面對應字段,模擬人工操作,用戶無須了解數據庫結構,同時也和系統開發語言、架構無關,進一步提升數據遷移平臺的通用性、易用性和智能程度。
[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
黃新,男,四川成都人,碩士研究生,助理工程師,研究方向:數據管理工作。