袁 源 張云洋
[摘要]重點研究目前商用移動數據庫系統和一些移動數據庫系統原型中采用的復制和同步技術,并在此基礎上提出一種以相關事務結果集為同步粒度的同步機制,并對如何實現這種同步機制做了較為詳細的闡述。
[關鍵詞]移動計算 移動數據庫 數據復制 同步技術 同步粒度
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0320039-01
一、引言
移動數據庫系統是指支持移動計算環境的分布式數據庫系統。與傳統分布式數據庫相比,移動數據庫具有移動性、位置相關性、頻繁的斷接性、所處網絡條件的多樣性、較差的系統安全性及可靠性、資源的有限性、網絡通訊的非對稱性等特點[1]。
二、數據一致性
如何保證各個移動結點和服務器間的數據一致性是移動數據庫中的關鍵問題。它的研究方向有兩個方面,一是數據的同步復制,另一個是移動事務模型。
到目前為止,已經出現了很多成熟的移動復制算法,如:兩級復制算法、三級復制機制等。其中的三級復制機制,是最為典型的異步復制機制,也是本文下部分討論的重點。
三、移動數據庫三級復制機制
三級復制體系結構由服務器級復制、空中復制、客戶機緩存三級復制機制組成。服務器級復制為第一級復制,該復制采用傳統的復制技術,以保證服務器之間的一致性;空中復制為第二級復制,服務器將經常被訪問的熱點數據組織起來,通過MSS向所有的MH廣播,這實際上等同于在無線信道上做了一級數據復制;客戶機緩存為第三級復制,MH利用本身的處理及存儲能力緩存數據庫中的部分數據,以支持移動用戶的斷接操作[3]。
三級復制體系結構基本滿足了移動數據庫系統的四個目標,同時提高了系統的可伸縮性。
四、基于相關事務結果集的三級復制同步機制
(一)同步機制思想
首先分析同步機制的劃分粒度,它分為元組、事務、SQL語句或者所有的同步數據[4]。不同同步粒度的劃分在系統實現的難度、系統開銷、全局提交率等方面各有不同,目前的三級復制體系大都采用以一個移動事務的結果集為同步粒度,它既保證了移動事務的原子性,又保證了移動事務沖突檢測中的獨立性。但是,這種同步機制所帶來的系統開銷也是很大的,極大地加重了系統的負荷[5]。
為了改進上述問題,本文提出一種以相關事務結果集作為同步傳輸粒度的同步傳輸機制,它不同于以往的以單個事務結果集作為同步粒度,通過對移動事務的讀集和寫集進行邏輯運算,判斷出具有相關性的事務,進而在數據同步過程中將這些事務的結果集進行合并,避免了保存大量中間結果,減輕了同步服務器的負荷,也減少了無線傳輸過程中的數據量。同時,也保證了事務的原子性,比較容易實現數據一致性的收斂。
(二)實現過程
首先用ReadSet(T)表示事務的讀集;WriteSet(T)表示事務的寫集,ResultSet(MT)表示事務的結果集。然后定義如下概念:
相關事務:如果兩個事務T1和T2具有以下特征,我們說它們是相關的:
1.WriteSet(T1)WriteSet(T2) !=
2.WriteSet(T1)ReadSet(T2)!=
當移動用戶在移動結點的本地數據副本上執行事務時, EDBMS需要判斷正在執行的事務是否和其他事務相關,如果是相關的,則將此事務和與之相關的事務的結果集做上同一個標記,這個標記用于在同步時快速過濾出需要上載的數據,并且根據這個標記將上載的數據按照相關事務的結果集劃分成不同的同步單元。
如果相關的事務的結果集有交集,則對交集的部分做合并操作,這樣就避免了保存大量中間結果的問題。
下面,我們以具體的例子說明移動事務相關的過程:
(1)相關1:寫寫相關
如果兩個事務的寫集的交集不為空,則這兩個事務是寫寫相關的。這種情況很常見,在一個應用中,經常會有包含相同SQL操作的事務重復執行,典型的是在一個銷售系統中。
如下有兩個事務MT1,MT2所示,假設事務讀寫的表的初始內容如表-1所示:

MT1
Update Table1 Set items=Items-10 Where name=“book”;
Update Table1 Set items=Items-10 Where name=“CD”;
MT2
Update Table1 Set items=Items-20 Where name=“book”;
Update Table1 Set items=Items-45 Where name=“CD”;
在MT1提交事務后,系統對數據庫進行操作后便將MT1修改的元組做上MT1的事務標記。在MT2執行過程中,發現將要修改的元組標有其他事務的標記,則認為本事務是和已經標記的事務是相關的。將MT1和MT2兩個事務相關后,相關事務的結果集相當于在移動設備的本地數據副本上執行了如下一個單獨的事務:
UMT1
Update Table1 Set items=Items-30 Where name=“book”;
Update Table1 Set items=Items-60 Where name=“CD”;
以上描述的是一種較為特殊的產生寫寫相關的事務的場景。更為一般的情況是兩個事務寫集的交集只是其中某個事務寫集的一個真子集,也即兩個事務滿足下列條件:
WriteSet(MT1) WirteSet(MT2)!=
并且滿足下面的一個或者兩個條件:
WirteSet(MT1) WirteSet(MT2)WirteSet(MT1)
WirteSet(MT1) WriteSet(MT2)WirteSet(MT2)
(2)相關2:寫讀相關
寫讀相關的情景在應用中也經常出現,當一個移動事務在本地數據副本上提交后,其對數據的修改可能會被其他事務讀取,并用于這些事務的執行過程中。在寫讀相關事務中,因為后提交的事務的結果依賴于前一個事務的寫集中的某些數據項,因此認為這兩個事務是相關的。
以上我們討論的都只涉及到兩個事務之間的相關,但卻很容易可以擴展到多個事務之間。
四、結束語
本文重點研究了目前流行的復制移動數據庫系統中的復制和同步技術。在詳細分析已有同步技術的基礎上,提出了一種以相關事務的結果集為同步粒度的結果集傳遞合并的同步機制,并對如何實現這種同步機制的方法做了較為詳細的闡述。
參考文獻:
[1]劉鐵銘、張有為、張媛媛,嵌入式移動數據庫應用研究[J].微計算機信息,2006,1-2:P88-90.
[2]王珊、丁治明,移動計算環境中的移動數據庫,微電腦世界,2001.8:p25-27.
[3]丁治明,移動數據庫關鍵技術研究,中國科學院研究生院博士學位論文,2002.05.
[4]何新貴、唐常杰、李霖、劉云生,特種數據庫技術,北京:科學出版社,2000.