999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

異構數據庫同步技術的研究與實現

2021-03-08 09:41:28張記強王仁蔣欣欣李明磊
軟件工程 2021年1期

張記強 王仁 蔣欣欣 李明磊

摘? 要:隨著信息化應用的不斷深入,企業內部不同應用系統、企業與外部信息系統數據同步的需求日益強烈。由于各信息系統使用的數據庫管理軟件各不相同,導致數據之間無法實現同步與共享,因此,需要設計一種異構數據庫之間同步的方法,解決不同信息系統數據間的同步問題。本論文在現有成熟數據庫產品的基礎上,分析了數據同步過程中的關鍵問題,如數據類型差異、數據捕獲策略、同步振蕩等。針對這些問題,設計采用建立映射模式的方法、觸發器與控制表相結合的方法以及在同步任務中對控制表進行干預的方法予以解決。最后,在QT(跨平臺軟件開發框架)下,設計實現異構數據庫同步系統,實驗驗證表明,本系統達到了較好的數據同步效果。

關鍵詞:異構數據庫;數據同步;數據捕獲;觸發器;QT

中圖分類號:TP311.13? ? ?文獻標識碼:A

文章編號:2096-1472(2021)-01-06-04

Abstract: With the development of information applications, there is a growing demand for data synchronization between different application systems within enterprises, between enterprises, and amongst external information systems. However, due to different database management software used by different information systems, data synchronization and sharing cannot be achieved. Therefore, it is necessary to design a method of synchronization between heterogeneous databases to realize data synchronization of different information systems. Based on existing mature database products, this paper analyzes key issues in the process of data synchronization, such as data type difference, data capture strategy, synchronous oscillation and so on. In order to solve these problems, methods of establishing mapping pattern, combining trigger with control table, and intervening control table in synchronization task are designed. At last, under the framework of QT (the cross-platform software development framework), a heterogeneous database synchronization system is designed and implemented. Experimental results show that the system achieves better data synchronization effect.

Keywords: heterogeneous database; data synchronization; data capture; trigger; QT

1? ?引言(Introduction)

在數據庫管理系統領域,已經存在多個成熟的數據庫產品,而在企業搭建的眾多應用系統中,由于應用開發部門不同或者應用系統本身特點等因素,使得不同的系統使用的數據庫系統也不同。隨著業務與用戶規模的不斷增加,傳統的單一數據中心已經不能滿足企業的發展需求,跨地域的互聯數據中心建設方案由此產生,例如兩地三中心、異地多活數據庫等方案[1],這種場景就涉及異構數據庫之間數據同步的問題。同時以神通、武漢達夢、人大金倉為代表的一大批優秀的國產數據庫軟件逐漸被市場認可,并被企業應用到內部系統中,用于替換國外數據庫產品。

現有技術中,異構數據庫數據同步方式大多是基于自身的同步復制技術實現的,各數據庫廠商在各自數據庫復制的基礎上提出了數據庫的同步方案。例如SQL Server提出的出版者及訂閱者同步方案,用于多臺數據庫服務器之間的數據同步[2,3];Oracle采用多主復制和物化視圖的方案實現數據同步功能。

本文通過對異構數據庫數據同步問題進行分析與研究,提出了解決異構數據庫數據同步關鍵問題的方法。在該方法的基礎上,設計并實現了基于QT框架的異構數據庫同步系統,實現異構數據庫間數據的同步與共享。

2? ?相關工作(Related work)

2.1? ?天熠嵌入式數據庫簡介

天熠嵌入式數據庫(TYCHE)是中國航天科工集團第二研究院706所面向綜合化、網絡化、信息化應用需求自主研發的一款嵌入式實時數據庫產品,具備強實時、高可靠的產品特性,目前在項目中應用廣泛。其特點是占用資源少,并支持主流的操作系統,尤其是它的處理速度非常快,單條數據讀取速率能達到40微秒。本項目使用天熠數據庫作為數據存儲的軟件。

2.2? ?QT開發工具

QT是由Qt Company開發的跨平臺C++圖形用戶界面應用程序開發框架。本文選擇QT作為開發工具主要是由于在其上開發的軟件具有很好的跨平臺性,即一次開發可以在微小改動的情況下,實現在Windows和中標麒麟下的編譯運行[4]。

2.3? ?相關研究

目前已經出現了一些異構數據庫數據同步技術,但總的來說,這些技術與各數據庫廠商產品緊密綁定,擴展性較差。

文獻[3]研究的是分布式異構數據庫環境下數據同步技術,由系統管理員啟動同步程序,從而將Linux服務器下的Oracle數據庫中的數據單向同步到Windows服務器下的Oracle數據庫中。該技術實現了Oracle到Oracle之間的數據同步,并且只能單向同步,底層借助的是Oracle的SQL Plus工具。該文獻涉及的方法與Oracle數據庫緊密綁定,不能解決其他異構數據庫之間數據同步的問題。

3? ?數據同步常見問題(Data synchronization FAQ)

3.1? ?數據類型差異

對于異構數據庫的數據同步,必須解決異構數據庫數據類型差異的問題[5]。數據類型差異表現在以下四個方面。

(1)異構數據庫支持的數據類型種類不完全相同。例如A數據庫有時間類型,B數據庫不一定有時間類型。

(2)異構數據庫相同數據類型的名稱可能不同。例如存儲整型數據,A數據庫類型名稱為integer,B數據庫類型名稱為int。

(3)在不同場景下,一個數據庫的同一數據類型對應其他數據庫的數據類型不同。例如A數據庫的varchar類型根據實際數據長度,可能對應B數據庫的varchar或blob數據類型。

(4)類型映射往往為單向映射。例如A數據庫支持money類型,B數據庫不支持money類型但是支持double類型。此時A數據庫的money類型對應B數據庫的double類型,但是B數據庫的double類型一般不能直接轉換為A數據庫的money類型。

本系統解決異構數據庫數據類型差異的方案是通過建立數據類型映射,用戶可根據需要自定義或者修改數據類型映射規則。

3.2? ?數據捕獲策略

不同數據庫產品支持不同的數據捕獲策略,常見的有快照法、觸發器法、日志法、API法、影子表法、控制表法[6]。這些方法各有優缺點,若本系統針對每個數據庫采用其獨特的數據捕獲方式,會對系統的通用性產生一定的影響。

考慮到當今主流數據庫都已經實現觸發器機制,并且用戶對觸發器的接受程度較高,本系統提出一種基于觸發器的數據捕獲方法,并在觸發器機制上進行了改進,增加了控制表機制。

3.3? ?同步振蕩問題

同步振蕩是由于在異構數據庫兩端同時建立觸發器導致的一種循環更新的問題。比較典型的場景是用戶操作A數據庫,在A數據庫端通過觸發器產生一條數據變更記錄寫入控制表,系統將數據同步到B數據庫,B數據庫也會通過觸發器產生一條數據變更寫入控制表。若系統將B數據庫變化回寫到A數據庫,此時就會形成一種循環更新的現象。

本系統解決同步振蕩問題的方案是在同步過程對控制表進行干預。

4? ?異構數據庫同步系統的設計與實現(The design and implementation of Heterogeneous database synchronization system)

4.1? ?系統總體架構

圖1為異構數據庫同步系統架構圖。異構數據庫數據同步過程由建立觸發器、創建控制表、數據源注冊、建立模式映射、建立同步任務五部分功能組成。其中建立觸發器與創建控制表功能位于異構數據庫管理系統端;數據源注冊、建立模式映射、建立同步任務功能位于數據同步服務器端。

異構數據庫端完成以下工作:

(1)創建控制表。為完整記錄數據變化過程,為每一個數據庫中的數據基表創建一個對應的控制表[7](CTRLTABLE)。控制表包含數據基表的主鍵,同時還包括其他字段記錄數據源的變化過程。控制表必須在同步的兩端均存在。控制表包含字段如表1所示。

(2)建立觸發器。觸發器的作用是在數據基表發生變化時,捕獲變化的數據。在本系統中建立的觸發事件包括INSERT、UPDATE與DELETE[8,9]。

如圖2所示為數據基表的一個示例,該表名稱為testTable。結合表1中控制表結構,本文設計INSERT觸發器結構如圖3所示,UPDATE觸發器結構如圖4所示,DELETE觸發器結構如圖5所示。

數據同步服務器端完成以下工作:

(1)數據源注冊。將異構數據庫作為數據源接入系統中,其他功能模塊均依賴本功能,未注冊到系統的數據源不會作為數據同步的源數據庫或者目標數據庫。

(2)建立模式映射。為屏蔽各數據源的差異,為異構數據源建立模式映射。如圖6所示,系統提前將Oracle與達夢的元數據進行獲取并保存在本地TYCHE中,在數據同步時使用建立的模式映射關系屏蔽異構數據庫的差異。

(3)創建同步任務。用于管理整個數據同步的過程,并且解決同步振蕩問題。

4.2? ?關鍵模塊的實現

4.2.1? ?數據源注冊

注冊數據源分為兩步,第一步通過加載數據庫提供的ODBC驅動連接數據庫;第二步將注冊信息寫入TYCHE中。數據源注冊需要的信息包括數據源類型、注冊名稱、IP地址、端口號、DNS信息、默認連接數據庫名稱、用戶名與密碼。圖7為保存數據源注冊信息的表結構圖,表名稱為“數據源表”。

通過以上兩步,即可將數據庫接入系統中,并且與數據源建立連接。

4.2.2? ?建立模式映射

建立模式映射由兩部分組成:建立數據字典信息和建立數據類型映射關系。

(1)建立數據字典信息。建立數據庫信息、數據庫內表信息、表內字段信息三類數據字典信息,并保存到本地TYCHE中,數據字典存儲結構如圖8所示。

①獲取數據源數據庫信息,并且寫入TYCHE的“數據庫表”(T_DATABASEINFO)。

在數據源注冊后,執行SQL語句獲取數據源數據庫信息。以Oracle數據庫為例,在QT下獲取數據源數據庫信息的方式為:QsqlQuery::exec(“SELECT * FROM USER_USERS”)。

通過執行SQL語句INSERT INTO T_DATABASEINFO VALUES,將獲取到的數據庫信息寫入T_DATABASEINFO表。

②獲取表的信息,并且寫入TYCHE的“數據表表”(T_TABLEINFO)。

通過執行獲取表信息的SQL語句,獲取數據源內表的信息。以Oracle數據庫為例,在QT下獲取數據源內表的信息的方式為:QsqlQuery::exec(“SELECT * FROM USER_TABLES”)。

通過執行SQL語句INSERT INTO T_TABLEINFO VALUES,將獲取到的表信息寫入T_TABLEINFO表。

③獲取字段信息,并且寫入TYCHE的“數據字段表”(T_FIELDINFO)。

通過執行獲取字段信息的SQL語句,獲取數據源內字段信息。以Oracle數據庫為例,在QT下獲取數據源內字段信息的方式為:QsqlQuery::exec(“SELECT COLUMN_NAME,DATA_TYPE,DATA_LENGTH FROM USER_TAB_COLUMNS WHERE TABLE_NAME = '%1'").arg(strtable) ”),其中strtable為表的名稱。

通過執行SQL語句INSERT INTO T_FIELDINFO VALUES,將獲取到的字段信息寫入T_FIELDINFO表。

(2)建立數據類型映射關系。針對接入系統中的各異構數據庫數據源,提取支持的所有數據類型,保存到本地TYCHE數據庫進行統一管理,數據庫中對數據類型管理的存儲結構如圖9所示。

本系統為各數據源的各類數據類型設置一個默認數據類型,以降低用戶配置的難度,同時在數據遷移時運行用戶手動配置實際的數據類型。考慮到數據類型映射往往為單向映射,本系統中在存儲數據類型映射關系時添加映射源字段,以指明當前映射關系中可以作為源的數據源類型。

4.2.3? ?創建同步任務

同步任務控制整個數據同步的流程。如圖10所示為同步任務進行一次同步的流程圖。

用戶修改A數據源的數據基表內一條數據,在同步任務內就會開始一次數據同步的過程,最終完成將該條數據變更到B數據源內。

下面以用戶在A數據源內寫入一條主鍵值為X的數據為例,說明同步任務的整個流程。其中A數據源與B數據源內數據基表名稱為testTable,控制表為CTRLTABLE。

(1)A數據源:在A數據源上主要完成數據基表的更新與形成操作SQL語句,由以下四步完成。

①寫入數據基表。將本次要寫入的數據首先寫入數據基表,只有寫入成功才能觸發INSERT事件觸發器,觸發器觸發后,將在控制表CTRLTABLE寫入一條數據,TableName為“testTable”,FiledKey為X,OperateType為“INSERT”。

②讀取控制表內數據。使用select語句在控制表CTRLTABLE內讀取數據,條件為IsSync=0,IsSync為0表示本條數據未被同步。

③讀取數據基表內數據。使用select語句在數據基表testTable內讀取一條數據,條件是關鍵字為X。

④組成一條SQL語句。根據控制表內數據與數據基表內數據形成一條操作語句,由于控制表的OperateType為“INSERT”,因此本條SQL語句為一條insert語句。

(2)B數據源:在B數據源上主要完成基礎表的更新與處理數據振蕩問題。

①執行該SQL語句。在B數據源上執行一條SQL語句。

②修改控制表內數據。本步解決數據振蕩問題,在B數據源的控制表CTRLTABLE中使用select語句查找關鍵字為X的一條數據,并且將該數據的IsSync設置為1,即該條數據變更不需要進行同步。

經過以上過程即完成一次數據同步,由于A數據源與B數據源上均配置觸發器與控制表,因此數據從B數據源到A數據源是完全相同的過程。

4.3? ?應用與驗證

該系統已經成功應用在某艦船系統中,該艦船系統的軟件環境如表6所示。

系統驗證分為兩個階段。第一個階段是船體離岸各設備加電運行階段,此時數據故障信息首先保存在達夢數據庫中,通過本文所設計的系統同步到Oracle數據庫中。第二個階段是船體靠岸后,用戶分別從Oracle與達夢數據庫中查找數據,經過對比發現兩個數據庫的數據完全一致。

實際應用結果表明,采用本文所設計的系統,對Oracle、達夢數據同步效果較好,達到預期效果。

5? ?結論(Conclusion)

當前異構數據庫之間的數據同步已經成為數據庫領域研究的重要方向。本文在現有成熟數據庫產品的基礎上,分析解決了數據類型差異、數據捕獲策略、同步振蕩等數據同步中的關鍵問題,設計實現了一種基于QT框架的異構數據庫同步系統。通過將該系統在某艦船系統進行應用與驗證,結果表明本文所設計的異構數據庫同步系統可以很好地解決異構數據庫數據同步問題,具有較好的適用性。

參考文獻(References)

[1] 陸葉杉.系統數據遷移常見問題及案例分析[J].計算機科學,2019,46(6A):412-416.

[2] 王亞蘭.分布式異構數據庫集成與透明訪問的研究與實現[D].四川:西南交通大學,2013.

[3] 劉娟娟,劉帥.數據庫同步技術的研究與實現[J].軟件工程,2017,20(01):1-4.

[4] 楊剛,陳健美,宋余慶,等.嵌入式設備與網絡數據庫交互的中間件設計[J].計算機工程與設計,2013,34(11):3878-3882.

[5] 田淼.分布式異構數據庫同步中間件的設計與實現[D].西安:西安電子科技大學,2012:15-16.

[6] 曹群英.分布式空間數據庫同步更新技術的研究與應用[J].科技創新與生產力,2017(04):66-69.

[7] 張振友,孫燕.分布式異構數據庫同步技術研究與實現[J].電腦知識與技術:學術交流,2015,11(28):16-19.

[8] 楊維,朱克,韓維,等.基于95598異地雙活架構的數據庫同步系統設計[J].電子技術與軟件工程,2019,000(23):161-162.

[9] Wang Y B, Rao X R, Pan H E. Incremental database synchronization update mechanism under heterogeneous environment[J]. Computer Engineering & Design, 2011, 32(3):948-951.

作者簡介:

張記強(1988-),男,碩士,工程師.研究領域:數據庫,軟件工程.

王? ?仁(1984-),男,碩士,高級工程師.研究領域:數據庫存儲,圖形圖像處理.

蔣欣欣(1989-),女,碩士,工程師.研究領域:嵌入式軟件.

李明磊(1991-),男,碩士,工程師.研究領域:圖形圖像處理,信息檢索.

主站蜘蛛池模板: 手机在线国产精品| 成年人视频一区二区| 欧美激情第一欧美在线| 国产情侣一区| 国产理论一区| 国产性猛交XXXX免费看| 91国内外精品自在线播放| 久久女人网| 毛片手机在线看| 亚洲中久无码永久在线观看软件| 91激情视频| 国产精品精品视频| 欧美不卡二区| 亚洲精品天堂在线观看| 久久不卡精品| 午夜电影在线观看国产1区| 日韩毛片免费观看| 免费人成黄页在线观看国产| 久久综合亚洲色一区二区三区| 无码 在线 在线| 国产免费久久精品99re丫丫一 | 日韩精品专区免费无码aⅴ| 91破解版在线亚洲| 91在线高清视频| 国产屁屁影院| 色亚洲激情综合精品无码视频 | 在线精品视频成人网| 亚洲人成在线免费观看| 日韩天堂网| 国产无吗一区二区三区在线欢| 亚洲 日韩 激情 无码 中出| 国产成人精品一区二区免费看京| 无码中文字幕乱码免费2| 国产 日韩 欧美 第二页| 欧美日韩一区二区三区在线视频| 91麻豆久久久| 一级毛片中文字幕| 国产成人午夜福利免费无码r| 四虎亚洲国产成人久久精品| 欧美成人区| 国产主播福利在线观看| 3p叠罗汉国产精品久久| 激情亚洲天堂| 青青草原国产| 国产一区三区二区中文在线| 伊人久久久久久久| 亚洲欧洲日韩综合色天使| 国产成人一区免费观看| 亚洲中文在线看视频一区| 国产成人AV男人的天堂| 午夜无码一区二区三区在线app| 原味小视频在线www国产| 伊人网址在线| 欧美日韩v| 国模私拍一区二区| 天天综合天天综合| 国产成人精品一区二区三在线观看| 久久永久视频| 手机精品福利在线观看| 久久香蕉国产线| 四虎影视无码永久免费观看| 亚洲一级毛片在线观播放| 国产激情第一页| 国产精品粉嫩| 国产精品三级av及在线观看| 亚洲欧洲自拍拍偷午夜色| 天堂成人在线视频| 久久久久人妻一区精品| 国产内射一区亚洲| 国产欧美在线观看一区| 免费AV在线播放观看18禁强制| 天天躁狠狠躁| 日韩午夜福利在线观看| 蜜桃视频一区二区三区| 亚洲一区无码在线| 久久精品中文字幕免费| 国产在线啪| 免费看美女自慰的网站| 99ri精品视频在线观看播放| 亚洲成人高清在线观看| 91精品久久久无码中文字幕vr| 久久人人妻人人爽人人卡片av|