王 華,王玲維,黃漢云
(1. 廣東科技學(xué)院計(jì)算機(jī)學(xué)院,廣東 東莞 523083;2. 湖南工業(yè)大學(xué)機(jī)械自動化學(xué)院,湖南 株洲 412000)
分布式資料庫系統(tǒng)一般采用小型電腦系統(tǒng)將多臺不同位置的電腦通過網(wǎng)路連結(jié)在一起,形成邏輯上完整且物理上分散的大型資料庫[1,2]。由于數(shù)據(jù)庫中存儲大量的用戶信息和隱私數(shù)據(jù),所以在對分布式數(shù)據(jù)庫進(jìn)行數(shù)據(jù)調(diào)用和更新時,可能會產(chǎn)生隱私信息泄露的問題。因此,需要針對分布式數(shù)據(jù)庫中的隱私信息進(jìn)行優(yōu)化,設(shè)計(jì)相應(yīng)的更新方法[3]。
目前,分布式數(shù)據(jù)庫同步更新已成為學(xué)術(shù)界研究的熱點(diǎn)之一[4],并取得了一系列較為成熟的研究成果,如分布式本體調(diào)試信息的存儲優(yōu)化與增量更新方法[5]、鄰域多粒度粗糙集信息更新增量方法[6]等,但由于實(shí)際運(yùn)行環(huán)境復(fù)雜多變,傳統(tǒng)數(shù)據(jù)庫更新速度慢,更新效率不高,因此引入增量更新的概念。
增量式開發(fā)過程的技術(shù)基礎(chǔ)是具有參考透明度的特性。基于此特性就可以顯示出數(shù)據(jù)及其規(guī)格的一致性。為此,本研究設(shè)計(jì)了一種分布式數(shù)據(jù)庫隱私信息增量式更新方法,在保證有效保護(hù)數(shù)據(jù)庫隱私信息的基礎(chǔ)上,提高了數(shù)據(jù)更新的效率。
圖1中顯示了具體的數(shù)據(jù)庫存儲結(jié)構(gòu)。
圖1 分布式數(shù)據(jù)庫結(jié)構(gòu)圖
從圖1中可以看出,分布式數(shù)據(jù)庫從結(jié)構(gòu)上可以劃分為四個層級,在數(shù)據(jù)存儲過程中采用單一數(shù)據(jù)的存儲模式,并在不同的層級上生成數(shù)據(jù)備份,也就是在數(shù)據(jù)庫的不同節(jié)點(diǎn)上存儲兩個相同的數(shù)據(jù)。
DataSourceRegistrations的作用是為分布式異構(gòu)數(shù)據(jù)庫同步系統(tǒng)提供數(shù)據(jù)庫登錄信息和注冊用戶表結(jié)構(gòu),這些信息全部保存在XML結(jié)構(gòu)中。資料來源登記后可取得之資料庫資訊有:資料庫類型、IP位址、用戶名及密碼等[7]。
在數(shù)據(jù)源注冊成功后,數(shù)據(jù)庫下所有用戶表的表結(jié)構(gòu)將被提取以生成TableInfo.xml,以便在系統(tǒng)中生成映射文件。如果沒有注冊數(shù)據(jù)庫,或者數(shù)據(jù)庫注冊不成功,則無法參與映射文件的生成。如果已成功注冊數(shù)據(jù)源,則無法在該數(shù)據(jù)庫類型下注冊相同數(shù)據(jù)庫的名稱;如果已注冊數(shù)據(jù)源的登錄信息發(fā)生了更改,則可以通過修改功能按鈕修改登錄信息;如果更改用戶表,則還可以通過更新表結(jié)構(gòu)按鈕更新Tablelnfo.xml文件。圖2中顯示了數(shù)據(jù)庫的具體注冊過程。
每個單位的源數(shù)據(jù)庫系統(tǒng)管理員負(fù)責(zé)數(shù)據(jù)庫資源的注冊、共享內(nèi)容的定義、共享數(shù)據(jù)的訪問權(quán)限登記等工作。源數(shù)據(jù)庫通過數(shù)據(jù)庫管理員提供的注冊信息連接到相應(yīng)的數(shù)據(jù)庫,并通過中心數(shù)據(jù)庫提供的網(wǎng)絡(luò)服務(wù)進(jìn)行注冊,將相關(guān)的同步表信息傳送到中心數(shù)據(jù)庫。每個單位的源數(shù)據(jù)庫管理員根據(jù)系統(tǒng)提供的數(shù)據(jù)庫表和視圖,并設(shè)置可以共享的內(nèi)容和權(quán)限[8]。每一個單元的數(shù)據(jù)庫管理員都要對自己提交的信息進(jìn)行確認(rèn),然后提交到中心數(shù)據(jù)庫服務(wù)器,等待系統(tǒng)管理員進(jìn)一步處理數(shù)據(jù)中心數(shù)據(jù)庫。
中央資料庫系統(tǒng)管理員負(fù)責(zé)審核各申請登記之異構(gòu)資料來源資料,以及各資料來源共享內(nèi)容及存取權(quán)限的確認(rèn)與分配。此外,在注冊新的數(shù)據(jù)源時,如果數(shù)據(jù)庫連接不成功,則注冊失敗,應(yīng)用程序?qū)⒅苯咏Y(jié)束;如果連接成功,則在整個注冊過程結(jié)束時,首先提取用戶表表結(jié)構(gòu)生成TableInfo.xml,然后提取所有表結(jié)構(gòu)并生成DBinfo.xml文件。在修改注冊信息后,可以通過所選數(shù)據(jù)源更新表結(jié)構(gòu)信息或修改登錄信息。
圖2 數(shù)據(jù)庫注冊流程圖
在此基礎(chǔ)上,根據(jù)數(shù)據(jù)庫日志表的增量情況捕獲變更數(shù)據(jù)。在用戶執(zhí)行數(shù)據(jù)庫寫入操作的同時啟動觸發(fā)器,并將更改和新寫入的信息備份到增量日志表中,手動生成事件驅(qū)動[9]。具體的變更數(shù)據(jù)捕獲過程如圖3所示。
圖3 觸發(fā)器執(zhí)行框架
圖3中采用了推拉式組合方式,在觸發(fā)器的驅(qū)動支持下,將采集到的數(shù)據(jù)變化提交給中間傳輸。源數(shù)據(jù)庫的增量更新日志表結(jié)構(gòu)如表1所示。
表1 源數(shù)據(jù)庫日志表結(jié)構(gòu)
數(shù)據(jù)庫日志表是根據(jù)table info表和word info表中相對應(yīng)的表信息和字段信息,從table info表中獲取的,因此需要確定數(shù)據(jù)在中心數(shù)據(jù)庫中的插入位置。圖4中顯示了它們的變更捕獲關(guān)系。
圖4 變化捕獲關(guān)系ER圖
為確保數(shù)據(jù)庫更新過程中隱私信息的安全,需要對數(shù)據(jù)庫中的隱私信息進(jìn)行加密處理[10]。假定P表示未加密的明文數(shù)據(jù),K表示加密密鑰,那么數(shù)據(jù)的加密過程可以表示為
M=J(K,P)
(1)
式中輸出的是對應(yīng)于數(shù)據(jù)庫隱私信息的密文。在數(shù)據(jù)融合過程中,采用隨機(jī)密鑰分配機(jī)制進(jìn)行加密和解密,系統(tǒng)從包含大量密鑰的密鑰池中隨機(jī)抽取少量密鑰,形成密鑰環(huán)。在鄰接節(jié)點(diǎn)之間通過共享密鑰實(shí)現(xiàn)數(shù)據(jù)的安全傳輸。如果鍵池足夠大,機(jī)制的安全性就會更強(qiáng)。將密鑰總數(shù)設(shè)為k為key-pool,k為key-pool中的密鑰數(shù)。隨機(jī)兩個節(jié)點(diǎn)在網(wǎng)絡(luò)中具有相同密鑰的概率是
(2)
式(2)的計(jì)算結(jié)果表明,攻擊者可以竊取任意兩個通信節(jié)點(diǎn)之間的鏈路,即隱私數(shù)據(jù)被竊聽的概率。由式(2)可知,為了使通信鏈路更安全可靠,需要密鑰池中密鑰的數(shù)量k越大,從而能夠保證節(jié)點(diǎn)間通信鏈路被竊聽的概率Peavesdrop越小,隱私數(shù)據(jù)泄露的可能性越小。假定網(wǎng)絡(luò)中k取值為10000,節(jié)點(diǎn)的鍵環(huán)大小為200,則任何兩個節(jié)點(diǎn)之間的Poverhear概率值為0.2%,足以滿足數(shù)據(jù)的隱私保護(hù)要求。
2.5.1 制定數(shù)據(jù)映射文件
單表到單表的映射關(guān)系在一對一數(shù)據(jù)庫中分為兩種情況:源表字段少于目標(biāo)表,源表字段多于目標(biāo)表。首先,建立映射文件是基于源表,源表有三個字段,目標(biāo)表有四個字段,目標(biāo)表按照系統(tǒng)映射文件準(zhǔn)則,目標(biāo)表字段必然不與源表相對應(yīng)。若要使兩表成功同步,字段必須為空。因?yàn)檫@種建立映射文件的方法具有目標(biāo)表字段總數(shù)節(jié)點(diǎn)和每個字段所在位置節(jié)點(diǎn)[11,12]。如果源表字段的數(shù)目超過了目標(biāo)表的數(shù)目,那么仍然選擇按字段建立映射文件方式。在這種情況下,源表字段的數(shù)量大于目標(biāo)表,因此,當(dāng)創(chuàng)建一個映射文件時,將優(yōu)先考慮目標(biāo)字段的數(shù)量,過程如圖5所示。根據(jù)目標(biāo)表字段數(shù),圖5中只需要建立三次源字段和目標(biāo)字段之間的映射關(guān)系。生成恢復(fù)語句時,只需從源表的三字段中提取有效信息值。
圖5 源表字段個數(shù)多于目標(biāo)表字段個數(shù)
2.5.2 數(shù)據(jù)加載
數(shù)據(jù)加載模塊主要完成SQL語句恢復(fù)、沖突處理以及數(shù)據(jù)導(dǎo)入等操作,實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入?;趯θ齻€XML文件(Datal.xml、DB info.xml、Mapping File.xml)的解析結(jié)果加載數(shù)據(jù)。分析Data Xml主要使用同步數(shù)據(jù)和源表信息,同步數(shù)據(jù)保存在List
2.5.3 數(shù)據(jù)復(fù)制
分布式數(shù)據(jù)復(fù)制模塊主要由兩部分組成:源數(shù)據(jù)庫管理模塊和目標(biāo)數(shù)據(jù)庫管理模塊。其中,源數(shù)據(jù)庫管理模塊包括監(jiān)控采集、拷貝管理、同步傳輸控制和日志變更表四個子模塊功能。目標(biāo)數(shù)據(jù)庫管理模塊主要有同步傳輸控制、數(shù)據(jù)導(dǎo)入、一致性維護(hù)三個模塊。在這些模塊中,日志模塊主要記錄觸發(fā)器引發(fā)的語句的操作和數(shù)據(jù)。具體地說,包括被更新表的名稱、字段、運(yùn)行時間、操作者、同步目的地信息以及相應(yīng)的插入、更新、刪除語句信息等。通過預(yù)先設(shè)置的定時器觸發(fā)同步傳輸控制模塊,根據(jù)監(jiān)控獲取和日志記錄兩個模塊提供的純變化數(shù)據(jù),將其打包后以服務(wù)方式傳送到目標(biāo)數(shù)據(jù),接收到傳輸數(shù)據(jù)后加壓,并按照定制規(guī)則將數(shù)據(jù)轉(zhuǎn)換為與目標(biāo)數(shù)據(jù)庫一致的數(shù)據(jù)格式。在數(shù)據(jù)導(dǎo)入模塊中,按照預(yù)先設(shè)定的規(guī)則對數(shù)據(jù)進(jìn)行一致性維護(hù)處理,使用事務(wù)的方式導(dǎo)入數(shù)據(jù),返回真值進(jìn)行響應(yīng),若失敗,事務(wù)回滾,源同步控制模塊將再次開始與該記錄同步。圖6中顯示了具體的復(fù)制處理過程。
2.5.4 隱私信息增量式同步更新
數(shù)據(jù)庫中的數(shù)據(jù)不斷發(fā)生變化,在網(wǎng)絡(luò)服務(wù)適配器的協(xié)調(diào)下實(shí)現(xiàn)數(shù)據(jù)的同步更新。同步時,應(yīng)在中央數(shù)據(jù)庫的Pure insert STUDENT類中調(diào)用Pure insert STUDENT方法。該方法主要對同步數(shù)據(jù)進(jìn)行邏輯處理,源表是以Web服務(wù)的形式發(fā)布的中心數(shù)據(jù)庫。同步更新的數(shù)據(jù)以Web服務(wù)的形式發(fā)布。
圖6 數(shù)據(jù)庫隱私信息異步復(fù)制流程圖
為驗(yàn)證上述設(shè)計(jì)的分布式數(shù)據(jù)庫隱私信息增量式更新方法的應(yīng)用性能,設(shè)計(jì)如下仿真。實(shí)驗(yàn)將VMware虛擬機(jī)設(shè)置在模擬實(shí)驗(yàn)環(huán)境,虛擬機(jī)內(nèi)嵌4核處理器和64位 CentOS6.5操作系統(tǒng)。另外實(shí)驗(yàn)中使用的分布式數(shù)據(jù)庫配置如表2所示。
表2 實(shí)驗(yàn)數(shù)據(jù)庫配置表
模擬實(shí)驗(yàn)環(huán)境中分布式數(shù)據(jù)庫存儲的數(shù)據(jù)取自 LUBM標(biāo)準(zhǔn)測試數(shù)據(jù)集LUBM-1,LuBM-10,LuBM-100.設(shè)置初始數(shù)據(jù)集中的數(shù)據(jù)量為2.7 GB,并將單位時間生成的數(shù)據(jù)設(shè)置為分布式。在實(shí)驗(yàn)環(huán)境下,將設(shè)計(jì)的分布式數(shù)據(jù)庫隱私信息增量式更新方法導(dǎo)入其中得出設(shè)計(jì)方法的運(yùn)行界面,如圖7所示。
圖7 增量式更新方法運(yùn)行界面
實(shí)驗(yàn)以更新同步效率和隱私信息保護(hù)性能為驗(yàn)證內(nèi)容。其中,更新同步效率通過數(shù)據(jù)庫產(chǎn)生新數(shù)據(jù)到數(shù)據(jù)庫更新完成所消耗的時間來體現(xiàn),隱私信息保護(hù)性能主要通過更新前后隱私信息數(shù)據(jù)量的變化情況來體現(xiàn)。為了形成實(shí)驗(yàn)對比,將傳統(tǒng)的分布式本體調(diào)試信息的存儲優(yōu)化與增量更新方法(文獻(xiàn)[5]方法)、鄰域多粒度粗糙集信息更新增量方法(文獻(xiàn)[6]方法)作為對比。經(jīng)過相關(guān)數(shù)據(jù)的讀取與統(tǒng)計(jì),得出實(shí)驗(yàn)結(jié)果,如表3所示。
表3 仿真測試對比結(jié)果
從表3中可以看出,相比于兩種傳統(tǒng)方法,本文設(shè)計(jì)的更新方法的更新速度更快。從隱私信息保護(hù)性能方面來看,本文設(shè)計(jì)的更新方法在運(yùn)行過程中隱私數(shù)據(jù)的丟失量更少。
綜上所述,本研究設(shè)計(jì)的分布式數(shù)據(jù)庫隱私信息增量式更新方法的更新效率更優(yōu),且在隱私信息保護(hù)方面更加具有優(yōu)勢。
分布式數(shù)據(jù)庫能夠保存大量的數(shù)據(jù)信息,本研究設(shè)計(jì)了分布式數(shù)據(jù)庫隱私信息增量式更新方法,通過增量式概念的應(yīng)用,提升了數(shù)據(jù)的更新效率,能夠保證數(shù)據(jù)庫中數(shù)據(jù)的時效性。然而仿真主要從隱私信息盜取方面進(jìn)行測試,未考慮隱私信息的竊取情況,因此在未來的研究工作中還需要做進(jìn)一步的研究。