王 華,王玲維,黃漢云
(1. 廣東科技學院計算機學院,廣東 東莞 523083;2. 湖南工業大學機械自動化學院,湖南 株洲 412000)
分布式資料庫系統一般采用小型電腦系統將多臺不同位置的電腦通過網路連結在一起,形成邏輯上完整且物理上分散的大型資料庫[1,2]。由于數據庫中存儲大量的用戶信息和隱私數據,所以在對分布式數據庫進行數據調用和更新時,可能會產生隱私信息泄露的問題。因此,需要針對分布式數據庫中的隱私信息進行優化,設計相應的更新方法[3]。
目前,分布式數據庫同步更新已成為學術界研究的熱點之一[4],并取得了一系列較為成熟的研究成果,如分布式本體調試信息的存儲優化與增量更新方法[5]、鄰域多粒度粗糙集信息更新增量方法[6]等,但由于實際運行環境復雜多變,傳統數據庫更新速度慢,更新效率不高,因此引入增量更新的概念。
增量式開發過程的技術基礎是具有參考透明度的特性?;诖颂匦跃涂梢燥@示出數據及其規格的一致性。為此,本研究設計了一種分布式數據庫隱私信息增量式更新方法,在保證有效保護數據庫隱私信息的基礎上,提高了數據更新的效率。
圖1中顯示了具體的數據庫存儲結構。

圖1 分布式數據庫結構圖
從圖1中可以看出,分布式數據庫從結構上可以劃分為四個層級,在數據存儲過程中采用單一數據的存儲模式,并在不同的層級上生成數據備份,也就是在數據庫的不同節點上存儲兩個相同的數據。
DataSourceRegistrations的作用是為分布式異構數據庫同步系統提供數據庫登錄信息和注冊用戶表結構,這些信息全部保存在XML結構中。資料來源登記后可取得之資料庫資訊有:資料庫類型、IP位址、用戶名及密碼等[7]。
在數據源注冊成功后,數據庫下所有用戶表的表結構將被提取以生成TableInfo.xml,以便在系統中生成映射文件。如果沒有注冊數據庫,或者數據庫注冊不成功,則無法參與映射文件的生成。如果已成功注冊數據源,則無法在該數據庫類型下注冊相同數據庫的名稱;如果已注冊數據源的登錄信息發生了更改,則可以通過修改功能按鈕修改登錄信息;如果更改用戶表,則還可以通過更新表結構按鈕更新Tablelnfo.xml文件。圖2中顯示了數據庫的具體注冊過程。
每個單位的源數據庫系統管理員負責數據庫資源的注冊、共享內容的定義、共享數據的訪問權限登記等工作。源數據庫通過數據庫管理員提供的注冊信息連接到相應的數據庫,并通過中心數據庫提供的網絡服務進行注冊,將相關的同步表信息傳送到中心數據庫。每個單位的源數據庫管理員根據系統提供的數據庫表和視圖,并設置可以共享的內容和權限[8]。每一個單元的數據庫管理員都要對自己提交的信息進行確認,然后提交到中心數據庫服務器,等待系統管理員進一步處理數據中心數據庫。
中央資料庫系統管理員負責審核各申請登記之異構資料來源資料,以及各資料來源共享內容及存取權限的確認與分配。此外,在注冊新的數據源時,如果數據庫連接不成功,則注冊失敗,應用程序將直接結束;如果連接成功,則在整個注冊過程結束時,首先提取用戶表表結構生成TableInfo.xml,然后提取所有表結構并生成DBinfo.xml文件。在修改注冊信息后,可以通過所選數據源更新表結構信息或修改登錄信息。

圖2 數據庫注冊流程圖
在此基礎上,根據數據庫日志表的增量情況捕獲變更數據。在用戶執行數據庫寫入操作的同時啟動觸發器,并將更改和新寫入的信息備份到增量日志表中,手動生成事件驅動[9]。具體的變更數據捕獲過程如圖3所示。

圖3 觸發器執行框架
圖3中采用了推拉式組合方式,在觸發器的驅動支持下,將采集到的數據變化提交給中間傳輸。源數據庫的增量更新日志表結構如表1所示。

表1 源數據庫日志表結構
數據庫日志表是根據table info表和word info表中相對應的表信息和字段信息,從table info表中獲取的,因此需要確定數據在中心數據庫中的插入位置。圖4中顯示了它們的變更捕獲關系。

圖4 變化捕獲關系ER圖
為確保數據庫更新過程中隱私信息的安全,需要對數據庫中的隱私信息進行加密處理[10]。假定P表示未加密的明文數據,K表示加密密鑰,那么數據的加密過程可以表示為
M=J(K,P)
(1)
式中輸出的是對應于數據庫隱私信息的密文。在數據融合過程中,采用隨機密鑰分配機制進行加密和解密,系統從包含大量密鑰的密鑰池中隨機抽取少量密鑰,形成密鑰環。在鄰接節點之間通過共享密鑰實現數據的安全傳輸。如果鍵池足夠大,機制的安全性就會更強。將密鑰總數設為k為key-pool,k為key-pool中的密鑰數。隨機兩個節點在網絡中具有相同密鑰的概率是

(2)
式(2)的計算結果表明,攻擊者可以竊取任意兩個通信節點之間的鏈路,即隱私數據被竊聽的概率。由式(2)可知,為了使通信鏈路更安全可靠,需要密鑰池中密鑰的數量k越大,從而能夠保證節點間通信鏈路被竊聽的概率Peavesdrop越小,隱私數據泄露的可能性越小。假定網絡中k取值為10000,節點的鍵環大小為200,則任何兩個節點之間的Poverhear概率值為0.2%,足以滿足數據的隱私保護要求。
2.5.1 制定數據映射文件
單表到單表的映射關系在一對一數據庫中分為兩種情況:源表字段少于目標表,源表字段多于目標表。首先,建立映射文件是基于源表,源表有三個字段,目標表有四個字段,目標表按照系統映射文件準則,目標表字段必然不與源表相對應。若要使兩表成功同步,字段必須為空。因為這種建立映射文件的方法具有目標表字段總數節點和每個字段所在位置節點[11,12]。如果源表字段的數目超過了目標表的數目,那么仍然選擇按字段建立映射文件方式。在這種情況下,源表字段的數量大于目標表,因此,當創建一個映射文件時,將優先考慮目標字段的數量,過程如圖5所示。根據目標表字段數,圖5中只需要建立三次源字段和目標字段之間的映射關系。生成恢復語句時,只需從源表的三字段中提取有效信息值。

圖5 源表字段個數多于目標表字段個數
2.5.2 數據加載
數據加載模塊主要完成SQL語句恢復、沖突處理以及數據導入等操作,實現數據導入。基于對三個XML文件(Datal.xml、DB info.xml、Mapping File.xml)的解析結果加載數據。分析Data Xml主要使用同步數據和源表信息,同步數據保存在List
2.5.3 數據復制
分布式數據復制模塊主要由兩部分組成:源數據庫管理模塊和目標數據庫管理模塊。其中,源數據庫管理模塊包括監控采集、拷貝管理、同步傳輸控制和日志變更表四個子模塊功能。目標數據庫管理模塊主要有同步傳輸控制、數據導入、一致性維護三個模塊。在這些模塊中,日志模塊主要記錄觸發器引發的語句的操作和數據。具體地說,包括被更新表的名稱、字段、運行時間、操作者、同步目的地信息以及相應的插入、更新、刪除語句信息等。通過預先設置的定時器觸發同步傳輸控制模塊,根據監控獲取和日志記錄兩個模塊提供的純變化數據,將其打包后以服務方式傳送到目標數據,接收到傳輸數據后加壓,并按照定制規則將數據轉換為與目標數據庫一致的數據格式。在數據導入模塊中,按照預先設定的規則對數據進行一致性維護處理,使用事務的方式導入數據,返回真值進行響應,若失敗,事務回滾,源同步控制模塊將再次開始與該記錄同步。圖6中顯示了具體的復制處理過程。
2.5.4 隱私信息增量式同步更新
數據庫中的數據不斷發生變化,在網絡服務適配器的協調下實現數據的同步更新。同步時,應在中央數據庫的Pure insert STUDENT類中調用Pure insert STUDENT方法。該方法主要對同步數據進行邏輯處理,源表是以Web服務的形式發布的中心數據庫。同步更新的數據以Web服務的形式發布。

圖6 數據庫隱私信息異步復制流程圖
為驗證上述設計的分布式數據庫隱私信息增量式更新方法的應用性能,設計如下仿真。實驗將VMware虛擬機設置在模擬實驗環境,虛擬機內嵌4核處理器和64位 CentOS6.5操作系統。另外實驗中使用的分布式數據庫配置如表2所示。

表2 實驗數據庫配置表
模擬實驗環境中分布式數據庫存儲的數據取自 LUBM標準測試數據集LUBM-1,LuBM-10,LuBM-100.設置初始數據集中的數據量為2.7 GB,并將單位時間生成的數據設置為分布式。在實驗環境下,將設計的分布式數據庫隱私信息增量式更新方法導入其中得出設計方法的運行界面,如圖7所示。

圖7 增量式更新方法運行界面
實驗以更新同步效率和隱私信息保護性能為驗證內容。其中,更新同步效率通過數據庫產生新數據到數據庫更新完成所消耗的時間來體現,隱私信息保護性能主要通過更新前后隱私信息數據量的變化情況來體現。為了形成實驗對比,將傳統的分布式本體調試信息的存儲優化與增量更新方法(文獻[5]方法)、鄰域多粒度粗糙集信息更新增量方法(文獻[6]方法)作為對比。經過相關數據的讀取與統計,得出實驗結果,如表3所示。

表3 仿真測試對比結果
從表3中可以看出,相比于兩種傳統方法,本文設計的更新方法的更新速度更快。從隱私信息保護性能方面來看,本文設計的更新方法在運行過程中隱私數據的丟失量更少。
綜上所述,本研究設計的分布式數據庫隱私信息增量式更新方法的更新效率更優,且在隱私信息保護方面更加具有優勢。
分布式數據庫能夠保存大量的數據信息,本研究設計了分布式數據庫隱私信息增量式更新方法,通過增量式概念的應用,提升了數據的更新效率,能夠保證數據庫中數據的時效性。然而仿真主要從隱私信息盜取方面進行測試,未考慮隱私信息的竊取情況,因此在未來的研究工作中還需要做進一步的研究。