黃劉松,張 飛,張學(xué)鋒,吳慧林
(1.馬鞍山師范高等??茖W(xué)校軟件學(xué)院,安徽馬鞍山 243041;2.安徽工業(yè)大學(xué)信息化處,安徽馬鞍山 243032;3.安徽工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,安徽馬鞍山 243032)
在數(shù)據(jù)庫(kù)管理系統(tǒng)領(lǐng)域,市面上擁有許多成熟的數(shù)據(jù)庫(kù)產(chǎn)品,而在企業(yè)搭建的眾多應(yīng)用系統(tǒng)中,由于應(yīng)用開(kāi)發(fā)部門(mén)不同或者應(yīng)用系統(tǒng)本身特點(diǎn)等因素,使得不同系統(tǒng)使用的數(shù)據(jù)庫(kù)系統(tǒng)也存在不同。隨著業(yè)務(wù)與用戶規(guī)模的不斷增加,傳統(tǒng)的單一數(shù)據(jù)中心已經(jīng)不能滿足企業(yè)的發(fā)展需求,跨地域、跨安全區(qū)的互聯(lián)數(shù)據(jù)中心建設(shè)方案由此產(chǎn)生,這種場(chǎng)景就產(chǎn)生了異構(gòu)數(shù)據(jù)庫(kù)之間數(shù)據(jù)同步的問(wèn)題。
網(wǎng)閘是使用帶有多種控制功能的固態(tài)開(kāi)關(guān)讀寫(xiě)介質(zhì),連接兩個(gè)獨(dú)立主機(jī)系統(tǒng)的信息安全設(shè)備,實(shí)現(xiàn)將網(wǎng)絡(luò)數(shù)據(jù)包的協(xié)議剝離,還原為原始數(shù)據(jù),對(duì)原始數(shù)據(jù)內(nèi)容進(jìn)行安全檢測(cè),達(dá)到“協(xié)議落地、內(nèi)容檢測(cè)”的目的,目前在電力等工業(yè)企業(yè)中廣泛使用??梢哉f(shuō)網(wǎng)閘設(shè)備是實(shí)現(xiàn)工業(yè)企業(yè)中安全區(qū)Ⅰ/Ⅱ到安全區(qū)Ⅲ/Ⅳ的單向數(shù)據(jù)傳遞的重要設(shè)備。
正向型網(wǎng)絡(luò)安全隔離網(wǎng)閘對(duì)于安全區(qū)兩側(cè)數(shù)據(jù)傳遞進(jìn)行單向隔離。這就導(dǎo)致在跨安全區(qū)的場(chǎng)景下,安全區(qū)兩側(cè)因?yàn)闃I(yè)務(wù)開(kāi)展以及先后系統(tǒng)建設(shè)的差異,存在異構(gòu)數(shù)據(jù)庫(kù)之間數(shù)據(jù)要實(shí)現(xiàn)快速穩(wěn)定安全同步的問(wèn)題。本文旨在跨安全區(qū)的情況下,屏蔽安全隔離設(shè)備以及兩側(cè)數(shù)據(jù)庫(kù)的異構(gòu)差異,實(shí)現(xiàn)數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步。
正向型網(wǎng)絡(luò)安全隔離網(wǎng)閘從物理上隔離、阻斷了對(duì)內(nèi)網(wǎng)具有潛在攻擊可能的一切網(wǎng)絡(luò)連接,使外部攻擊者無(wú)法直接入侵、攻擊或破壞內(nèi)網(wǎng),保障了內(nèi)部主機(jī)的安全,被廣泛應(yīng)用在企業(yè)安全防護(hù)建設(shè)當(dāng)中。數(shù)據(jù)庫(kù)系統(tǒng)作為數(shù)據(jù)存儲(chǔ)的介質(zhì)以及信息系統(tǒng)建設(shè)的基礎(chǔ),更是被廣泛應(yīng)用于信息化建設(shè)當(dāng)中。
就目前現(xiàn)有使用場(chǎng)景來(lái)說(shuō),異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)同步基本是在網(wǎng)絡(luò)可以互通的場(chǎng)景下。工業(yè)上常見(jiàn)的使用Kettle等ETL(extract-transform-load)工具進(jìn)行異構(gòu)數(shù)據(jù)庫(kù)之間的數(shù)據(jù)同步,這種方式同步在大部分場(chǎng)景下其實(shí)已經(jīng)可以滿足數(shù)據(jù)同步的需要。但是在面對(duì)“安全分區(qū)、網(wǎng)絡(luò)專用、橫向隔離、縱向認(rèn)證”的跨地域、跨安全區(qū)場(chǎng)景下,這類(lèi)同步工具就顯得力不從心。工業(yè)企業(yè)不同安全區(qū)之間因?yàn)榫W(wǎng)絡(luò)安全建設(shè)的需要,使用的正向型網(wǎng)絡(luò)安全隔離網(wǎng)閘使得不同安全區(qū)之間實(shí)現(xiàn)了網(wǎng)絡(luò)上的物理隔離,類(lèi)似Kettle這類(lèi)工具是無(wú)法穿透網(wǎng)閘進(jìn)行數(shù)據(jù)同步的,這大大增加了異構(gòu)數(shù)據(jù)庫(kù)數(shù)據(jù)同步的難度〔1-4〕。
面對(duì)這類(lèi)場(chǎng)景,很多工業(yè)企業(yè)會(huì)面向此類(lèi)業(yè)務(wù)開(kāi)發(fā)相應(yīng)的應(yīng)用程序進(jìn)行特定數(shù)據(jù)庫(kù)的同步,但是,這些應(yīng)用于異構(gòu)數(shù)據(jù)庫(kù)數(shù)據(jù)同步往往面向主流的關(guān)系型數(shù)據(jù)庫(kù)之間,比如Oracle〔5〕、MySQL〔6〕、SQL Server等,隨著應(yīng)用場(chǎng)景的不斷發(fā)展,類(lèi)似MongoDB這些非關(guān)系型數(shù)據(jù)庫(kù)的應(yīng)用場(chǎng)景在不斷加深,這就出現(xiàn)了關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)之間數(shù)據(jù)同步的需求。
再則,數(shù)據(jù)庫(kù)之間的數(shù)據(jù)同步存在全量同步和增量同步問(wèn)題,全量同步在于大數(shù)量的情況下,會(huì)出現(xiàn)同步速度慢、數(shù)據(jù)更新不及時(shí)的問(wèn)題,以及在數(shù)據(jù)傳輸過(guò)程中,必然會(huì)有傳輸失敗的問(wèn)題,所以數(shù)據(jù)庫(kù)同步需要綜合考慮全量同步和增量同步以及數(shù)據(jù)傳輸失敗恢復(fù)重傳的情況。
本文結(jié)合市面上主流正向型網(wǎng)絡(luò)安全隔離網(wǎng)閘的通信原理〔7-9〕,旨在實(shí)現(xiàn)在跨安全區(qū)的場(chǎng)景下以及在保證數(shù)據(jù)同步的正確性和安全性的基礎(chǔ)上,實(shí)現(xiàn)主流關(guān)系型數(shù)據(jù)庫(kù)經(jīng)過(guò)網(wǎng)閘設(shè)備同步數(shù)據(jù)到主流關(guān)系型數(shù)據(jù)庫(kù)以及常見(jiàn)非關(guān)系型數(shù)據(jù)庫(kù)的應(yīng)用需求。
邊界防護(hù)是目前工業(yè)企業(yè)進(jìn)行安全區(qū)劃分的目標(biāo),正向型網(wǎng)絡(luò)安全隔離網(wǎng)閘設(shè)備實(shí)現(xiàn)了物理隔離通信的要求,這自然給安全防護(hù)帶來(lái)了很大助力,但是也給數(shù)據(jù)同步帶來(lái)了巨大困難。針對(duì)工業(yè)企業(yè)跨安全區(qū)數(shù)據(jù)庫(kù)同步的情況,本文設(shè)計(jì)出一個(gè)基于正向網(wǎng)閘的數(shù)據(jù)庫(kù)數(shù)據(jù)同步方案。新設(shè)計(jì)的數(shù)據(jù)同步方案能夠面向主流的關(guān)系型數(shù)據(jù)庫(kù)以及常見(jiàn)的非關(guān)系型數(shù)據(jù)庫(kù)實(shí)現(xiàn)數(shù)據(jù)的跨區(qū)同步??绨踩珔^(qū)異構(gòu)數(shù)據(jù)庫(kù)同步總架構(gòu)見(jiàn)圖1。
圖1 跨安全區(qū)異構(gòu)數(shù)據(jù)庫(kù)同步總架構(gòu)
如圖1所示,從Ⅰ/Ⅱ區(qū)向Ⅲ/Ⅳ區(qū)進(jìn)行數(shù)據(jù)庫(kù)數(shù)據(jù)同步,主要是通過(guò)數(shù)據(jù)庫(kù)數(shù)據(jù)探知模塊收集Ⅰ/Ⅱ區(qū)數(shù)據(jù)庫(kù)中需要同步的數(shù)據(jù),Ⅰ/Ⅱ區(qū)的網(wǎng)閘適配模塊負(fù)責(zé)將需要傳輸?shù)臄?shù)據(jù)進(jìn)行處理,并發(fā)送數(shù)據(jù)給網(wǎng)閘,Ⅲ/Ⅳ區(qū)的網(wǎng)閘適配模塊主要用于接收穿過(guò)網(wǎng)閘的數(shù)據(jù),經(jīng)過(guò)數(shù)據(jù)驗(yàn)證,再將數(shù)據(jù)恢復(fù)成能夠存入Ⅲ/Ⅳ區(qū)數(shù)據(jù)庫(kù)的數(shù)據(jù)格式存入數(shù)據(jù)庫(kù)。
Ⅰ/Ⅱ區(qū)的數(shù)據(jù)庫(kù)數(shù)據(jù)探知模塊主要用于發(fā)現(xiàn)和收集數(shù)據(jù)庫(kù)中需要同步的數(shù)據(jù)。為了能夠適應(yīng)多種場(chǎng)景,在數(shù)據(jù)探知這塊,提供了主動(dòng)探知和被動(dòng)探知兩塊功能。數(shù)據(jù)探知模塊架構(gòu)見(jiàn)圖2。
如圖2所示,主動(dòng)探知又分為全量探知和增量探知,主動(dòng)探知模塊會(huì)根據(jù)定時(shí)器的設(shè)置情況,定時(shí)去獲取數(shù)據(jù),通常按照數(shù)據(jù)實(shí)時(shí)性的要求,可以設(shè)置按秒、分鐘、小時(shí)或者固定某個(gè)時(shí)間點(diǎn)進(jìn)行探知,這是一個(gè)動(dòng)態(tài)調(diào)優(yōu)和需求相結(jié)合的過(guò)程,通常建議1~10 min進(jìn)行探知一次。全量探知即完整的同步數(shù)據(jù)庫(kù)的某張表,一般用于數(shù)據(jù)量不大的表數(shù)據(jù)的同步。增量探知即是指同步數(shù)據(jù)變化的部分。目前不同數(shù)據(jù)庫(kù)產(chǎn)品支持不同的數(shù)據(jù)探知策略,常見(jiàn)的有快照法、觸發(fā)器法、日志法、API法、影子表法、控制表法??紤]到當(dāng)今主流數(shù)據(jù)庫(kù)都已經(jīng)實(shí)現(xiàn)觸發(fā)器機(jī)制,并且用戶對(duì)觸發(fā)器的接受程度較高,本文提出一種基于觸發(fā)器+快照表的數(shù)據(jù)捕獲方法,具體方案如下:
圖2 數(shù)據(jù)探知模塊架構(gòu)圖
(1)對(duì)需要進(jìn)行增量同步的數(shù)據(jù)表建立同步視圖,視圖包括源表字段,還需要包括操作類(lèi)型和時(shí)間戳。操作類(lèi)型包括增加(add)、修改(edit)、刪除(delete)3種操作;時(shí)間戳為該條數(shù)據(jù)變化的時(shí)間,由觸發(fā)器操作快照表時(shí)生成。
(2)對(duì)需要進(jìn)行增量同步的數(shù)據(jù)表建立觸發(fā)器,觸發(fā)器主要目的是根據(jù)用戶的增加(add)、修改(edit)、刪除(delete)3種操作變更快照表中的數(shù)據(jù),對(duì)于同一主鍵的數(shù)據(jù)在快照表中只保留一條數(shù)據(jù)。
(3)增量探知模塊定時(shí)去讀取快照表中的數(shù)據(jù),并根據(jù)Ⅲ/Ⅳ區(qū)目標(biāo)數(shù)據(jù)庫(kù)類(lèi)型以及該條數(shù)據(jù)操作類(lèi)型,生成目標(biāo)表數(shù)據(jù)操作腳本,并將腳本序列化成字符串文本或byte數(shù)組通過(guò)數(shù)據(jù)緩沖區(qū)操作模塊寫(xiě)入數(shù)據(jù)緩沖區(qū)。
(4)增量探知模塊在數(shù)據(jù)寫(xiě)入數(shù)據(jù)緩沖區(qū)后,根據(jù)時(shí)間戳在快照表中刪除不大于該時(shí)間戳的快照數(shù)據(jù)。
被動(dòng)探知主要提供一個(gè)HTTP標(biāo)準(zhǔn)服務(wù)接口,允許第三方數(shù)據(jù)庫(kù)服務(wù)調(diào)用接口傳入需要同步的數(shù)據(jù),同樣被動(dòng)探知模塊會(huì)將需要同步的數(shù)據(jù)根據(jù)Ⅲ/Ⅳ區(qū)目標(biāo)數(shù)據(jù)庫(kù)類(lèi)型以及該條數(shù)據(jù)操作類(lèi)型,生成目標(biāo)表數(shù)據(jù)操作腳本,并將腳本序列化成字符串文本或byte數(shù)組通過(guò)數(shù)據(jù)緩沖區(qū)操作模塊寫(xiě)入數(shù)據(jù)緩沖區(qū)。
網(wǎng)閘適配模塊分為發(fā)送者和接送者兩個(gè)部分,用來(lái)屏蔽正向型網(wǎng)絡(luò)安全隔離網(wǎng)閘設(shè)備,傳輸需要同步的數(shù)據(jù)。如圖3,網(wǎng)閘適配模塊分為兩個(gè)部分,分別位于網(wǎng)閘的兩側(cè),Ⅰ/Ⅱ區(qū)的網(wǎng)閘適配模塊為客戶端,Ⅲ/Ⅳ區(qū)的網(wǎng)閘適配模塊為服務(wù)端,兩端模塊依據(jù)網(wǎng)閘的通信特性,通過(guò)TCP協(xié)議連接。
圖3 網(wǎng)閘適配模塊架構(gòu)圖
Ⅰ/Ⅱ區(qū)網(wǎng)閘適配功能模塊:
(1)數(shù)據(jù)緩沖區(qū)操作模塊
聯(lián)通數(shù)據(jù)緩沖區(qū),通過(guò)Kafka消費(fèi)者訂閱Topic獲得需要同步的數(shù)據(jù),以及在TCP Client發(fā)送數(shù)據(jù)失敗時(shí),通過(guò)Kafka生產(chǎn)者將數(shù)據(jù)重新回寫(xiě)進(jìn)Kafka的Topic,使得網(wǎng)閘適配模塊的Kafka消費(fèi)者能夠再次讀到發(fā)送失敗的數(shù)據(jù),以便實(shí)現(xiàn)同步失敗數(shù)據(jù)的重新同步操作。
(2)數(shù)據(jù)加密/壓縮模塊
為保證數(shù)據(jù)傳輸?shù)陌踩?,采用?duì)稱加密算法實(shí)現(xiàn)數(shù)據(jù)的加密和恢復(fù),網(wǎng)閘適配模塊融合了SM2-3算法對(duì)同步數(shù)據(jù)進(jìn)行加密,加密過(guò)的數(shù)據(jù)按照傳輸報(bào)文格式進(jìn)行封裝,成為網(wǎng)閘兩側(cè)數(shù)據(jù)傳輸、會(huì)話反饋的重要信息。
SM2算法是在ECC橢圓曲線密碼理論基礎(chǔ)上改進(jìn)而來(lái)的,其加密強(qiáng)度比RSA算法(2 048位)更高。國(guó)密SM2包括SM2-1橢圓曲線數(shù)字簽名算法、SM2-2橢圓曲線密鑰交換協(xié)議、SM2-3橢圓曲線公鑰加密算法,分別用于數(shù)字簽名、密鑰協(xié)商和數(shù)據(jù)加密功能,其算法原理見(jiàn)圖4。加密算法為y2=x3-x在該方程支持下,實(shí)現(xiàn)對(duì)稱加密〔10〕。
圖4 SM2橢圓曲線公鑰密碼算法原理圖
為了緩解網(wǎng)閘傳輸壓力,降低傳輸?shù)臄?shù)據(jù)量,網(wǎng)閘適配模塊融合了Gzip壓縮算法對(duì)于需要傳輸?shù)臄?shù)據(jù)進(jìn)行數(shù)據(jù)壓縮。Gzip是一種無(wú)損壓縮算法,其基礎(chǔ)為Deflate,Deflate是LZ77與哈夫曼編碼的一個(gè)組合體。它的基本原理是:對(duì)于要壓縮的文件,首先使用LZ77算法的一個(gè)變種進(jìn)行壓縮,對(duì)得到的結(jié)果再使用哈夫曼編碼的方法進(jìn)行壓縮。
(3)數(shù)據(jù)融合
經(jīng)過(guò)數(shù)據(jù)加密/壓縮模塊的處理,同步數(shù)據(jù)經(jīng)過(guò)了基礎(chǔ)處理,由于數(shù)據(jù)需要通過(guò)網(wǎng)閘傳送給Ⅲ/Ⅳ區(qū),為了保證數(shù)據(jù)在傳輸過(guò)程中的完整性,需要對(duì)數(shù)據(jù)傳輸格式進(jìn)行定義,數(shù)據(jù)傳輸格式定義見(jiàn)表1。
表1 數(shù)據(jù)報(bào)文格式
(4)TCP客戶端(TCP Client)
以TCP協(xié)議與網(wǎng)閘另一側(cè)(Ⅲ/Ⅳ區(qū))服務(wù)端連接,用于發(fā)送數(shù)據(jù)和接收反饋的1字節(jié)報(bào)文。TCP客戶端主要發(fā)送兩種類(lèi)型數(shù)據(jù):
①心跳報(bào)文
TCP客戶端在連接狀態(tài)下,定時(shí)發(fā)送心跳報(bào)文給服務(wù)端,服務(wù)端收到心跳報(bào)文后反饋心跳報(bào)文標(biāo)簽ID(1字節(jié),正向網(wǎng)閘可以反向傳輸1字節(jié)數(shù)據(jù))給TCP客戶端??蛻舳嗽谝欢〞r(shí)間內(nèi)(10 s)未收到數(shù)據(jù)報(bào)文標(biāo)簽ID或者心跳報(bào)文標(biāo)簽ID,則通過(guò)重連機(jī)制,自動(dòng)斷開(kāi)與服務(wù)端連接,并釋放資源,重新連接。心跳報(bào)文定義格式見(jiàn)表2。
表2 心跳報(bào)文格式
②數(shù)據(jù)報(bào)文
數(shù)據(jù)報(bào)文是需要傳輸給服務(wù)端(Ⅲ/Ⅳ區(qū)),并需要更新Ⅲ/Ⅳ區(qū)的數(shù)據(jù),其格式如表1所示,服務(wù)端收到數(shù)據(jù)后,利用正向網(wǎng)閘可反向傳輸1字節(jié)特性,經(jīng)過(guò)數(shù)據(jù)校驗(yàn)解析正確且處理成功并同步數(shù)據(jù)庫(kù)后,將報(bào)文中的標(biāo)簽ID反饋給客戶端,若數(shù)據(jù)錯(cuò)誤或處理失敗,將標(biāo)簽ID+1(3至255奇數(shù))反饋給客戶端。
Ⅲ/Ⅳ區(qū)網(wǎng)閘適配功能模塊:
(1)TCP服務(wù)端(TCP Server)
用于接收網(wǎng)閘適配模塊客戶端(Ⅰ/Ⅱ區(qū))傳輸過(guò)來(lái)的數(shù)據(jù),并對(duì)接收的報(bào)文進(jìn)行報(bào)文層面的解析和初步校驗(yàn),并負(fù)責(zé)將報(bào)文中的標(biāo)簽ID以及報(bào)文最終處理結(jié)果反饋給客戶端。TCP服務(wù)端在有客戶端連接的情況下,長(zhǎng)時(shí)間收不到客戶端發(fā)送的報(bào)文信息,會(huì)通過(guò)重連機(jī)制,主動(dòng)斷開(kāi)與客戶端的連接,并允許客戶端重新連接。
(2)數(shù)據(jù)解密/解壓縮模塊
該模塊與Ⅰ/Ⅱ區(qū)數(shù)據(jù)加密/壓縮模塊對(duì)應(yīng),服務(wù)端收到報(bào)文數(shù)據(jù)庫(kù)經(jīng)報(bào)文層面解析無(wú)誤,將報(bào)文中同步數(shù)據(jù)區(qū)傳入該模塊,經(jīng)過(guò)Gzip算法解壓縮以及SM2-3算法解密后,得到目標(biāo)表數(shù)據(jù)操作腳本文本數(shù)據(jù)。
(3)數(shù)據(jù)庫(kù)操作模塊
用于將解析出來(lái)的目標(biāo)表數(shù)據(jù)操作腳本文本的數(shù)據(jù)寫(xiě)進(jìn)數(shù)據(jù)庫(kù),完成數(shù)據(jù)同步操作。
異構(gòu)數(shù)據(jù)庫(kù)在網(wǎng)閘之間進(jìn)行數(shù)據(jù)同步,存在兩個(gè)方面的難點(diǎn),一個(gè)是如何屏蔽異構(gòu)數(shù)據(jù)庫(kù)之間數(shù)據(jù)類(lèi)型的差異,二是如何保證經(jīng)過(guò)網(wǎng)閘設(shè)備,還能準(zhǔn)確地還原目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)類(lèi)型。針對(duì)以上兩個(gè)問(wèn)題,本文提出在Ⅰ/Ⅱ區(qū)完成源數(shù)據(jù)庫(kù)對(duì)目標(biāo)數(shù)據(jù)庫(kù)的轉(zhuǎn)換過(guò)程。其實(shí)異構(gòu)數(shù)據(jù)庫(kù)之間的難點(diǎn)正是由于網(wǎng)閘設(shè)備存在的原因,如果沒(méi)有這個(gè)設(shè)備,則單側(cè)異構(gòu)數(shù)據(jù)庫(kù)同步則可以輕松地按照不同數(shù)據(jù)庫(kù)的特性進(jìn)行轉(zhuǎn)換。所以只要在Ⅰ/Ⅱ區(qū)完成數(shù)據(jù)轉(zhuǎn)換過(guò)程,將轉(zhuǎn)換的結(jié)果傳遞給Ⅲ/Ⅳ區(qū),則自然能夠還原目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)類(lèi)型。
異構(gòu)數(shù)據(jù)庫(kù)在網(wǎng)閘之間進(jìn)行數(shù)據(jù)同步還應(yīng)該考慮數(shù)據(jù)轉(zhuǎn)換的結(jié)果形式,考慮到每種數(shù)據(jù)庫(kù)都有自己特定的語(yǔ)法結(jié)構(gòu),如關(guān)系型數(shù)據(jù)庫(kù)基本支持SQL語(yǔ)言,MongoDB也有自己的一套腳本語(yǔ)句。所以最直接的方式就是直接轉(zhuǎn)換成目標(biāo)庫(kù)可以直接運(yùn)行的腳本語(yǔ)句,最后再將腳本語(yǔ)句以文本的形式進(jìn)行序列化、加密壓縮后按照傳輸報(bào)文格式進(jìn)行封裝并傳輸。
科東Stonewall-2000網(wǎng)絡(luò)安全物理隔離是比較常用的一款網(wǎng)閘隔離設(shè)備,MySQL、SQL Server、DB2、達(dá)夢(mèng)以及MongoDB是目前工業(yè)企業(yè)常用的數(shù)據(jù)庫(kù),本文選用科東Stonewall-2000系列設(shè)備,測(cè)試MySQL、DB2到MySQL、DB2、MongoDB數(shù)據(jù)傳輸?shù)男室约翱煽啃?,測(cè)試結(jié)果見(jiàn)表3。
表3 實(shí)驗(yàn)同步結(jié)果
經(jīng)過(guò)實(shí)驗(yàn),在指定數(shù)據(jù)量重復(fù)傳輸測(cè)試下,本文設(shè)計(jì)的系統(tǒng)可以在有限時(shí)間內(nèi)完成傳輸,由于數(shù)據(jù)緩沖區(qū)、傳輸狀態(tài)檢測(cè)以及失敗重傳機(jī)制,實(shí)驗(yàn)證明,異構(gòu)數(shù)據(jù)庫(kù)數(shù)據(jù)傳輸可靠性得到了保證。
本文提出的一種面向正向隔離設(shè)備的異構(gòu)數(shù)據(jù)庫(kù)安全同步系統(tǒng),其中網(wǎng)閘適配模塊自定義了數(shù)據(jù)傳輸格式,利用該定義格式可以保證數(shù)據(jù)通過(guò)網(wǎng)閘設(shè)備傳輸時(shí)的完整性和正確性,利用數(shù)據(jù)標(biāo)簽ID的設(shè)計(jì),可以讓客戶端知道每次數(shù)據(jù)同步的狀態(tài),提升數(shù)據(jù)同步的完整性。在數(shù)據(jù)同步和傳輸過(guò)程中,利用取模校驗(yàn)、數(shù)據(jù)加密、數(shù)據(jù)解壓縮等多種技術(shù),在提升數(shù)據(jù)傳輸質(zhì)量的前提下,也進(jìn)一步降低了資源開(kāi)銷(xiāo)。通過(guò)在源站側(cè)將同步數(shù)據(jù)庫(kù)按照目標(biāo)庫(kù)格式進(jìn)行腳本化封裝,屏蔽了異構(gòu)數(shù)據(jù)庫(kù),實(shí)現(xiàn)了關(guān)系型數(shù)據(jù)庫(kù)與非關(guān)系型數(shù)據(jù)庫(kù)之間數(shù)據(jù)同步方案。利用數(shù)據(jù)緩沖區(qū)的設(shè)計(jì)方案,屏蔽了數(shù)據(jù)變更與數(shù)據(jù)同步之間處理效率不均衡的缺點(diǎn),緩解數(shù)據(jù)變更高峰期造成數(shù)據(jù)同步的壓力,同時(shí)利用緩沖區(qū),設(shè)計(jì)實(shí)現(xiàn)了數(shù)據(jù)重傳機(jī)制,實(shí)現(xiàn)數(shù)據(jù)同步失敗的前提下可以多次同步。