袁 源 張云洋
[摘要]重點研究目前商用移動數(shù)據(jù)庫系統(tǒng)和一些移動數(shù)據(jù)庫系統(tǒng)原型中采用的復制和同步技術,并在此基礎上提出一種以相關事務結(jié)果集為同步粒度的同步機制,并對如何實現(xiàn)這種同步機制做了較為詳細的闡述。
[關鍵詞]移動計算 移動數(shù)據(jù)庫 數(shù)據(jù)復制 同步技術 同步粒度
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0320039-01
一、引言
移動數(shù)據(jù)庫系統(tǒng)是指支持移動計算環(huán)境的分布式數(shù)據(jù)庫系統(tǒng)。與傳統(tǒng)分布式數(shù)據(jù)庫相比,移動數(shù)據(jù)庫具有移動性、位置相關性、頻繁的斷接性、所處網(wǎng)絡條件的多樣性、較差的系統(tǒng)安全性及可靠性、資源的有限性、網(wǎng)絡通訊的非對稱性等特點[1]。
二、數(shù)據(jù)一致性
如何保證各個移動結(jié)點和服務器間的數(shù)據(jù)一致性是移動數(shù)據(jù)庫中的關鍵問題。它的研究方向有兩個方面,一是數(shù)據(jù)的同步復制,另一個是移動事務模型。
到目前為止,已經(jīng)出現(xiàn)了很多成熟的移動復制算法,如:兩級復制算法、三級復制機制等。其中的三級復制機制,是最為典型的異步復制機制,也是本文下部分討論的重點。
三、移動數(shù)據(jù)庫三級復制機制
三級復制體系結(jié)構由服務器級復制、空中復制、客戶機緩存三級復制機制組成。服務器級復制為第一級復制,該復制采用傳統(tǒng)的復制技術,以保證服務器之間的一致性;空中復制為第二級復制,服務器將經(jīng)常被訪問的熱點數(shù)據(jù)組織起來,通過MSS向所有的MH廣播,這實際上等同于在無線信道上做了一級數(shù)據(jù)復制;客戶機緩存為第三級復制,MH利用本身的處理及存儲能力緩存數(shù)據(jù)庫中的部分數(shù)據(jù),以支持移動用戶的斷接操作[3]。
三級復制體系結(jié)構基本滿足了移動數(shù)據(jù)庫系統(tǒng)的四個目標,同時提高了系統(tǒng)的可伸縮性。
四、基于相關事務結(jié)果集的三級復制同步機制
(一)同步機制思想
首先分析同步機制的劃分粒度,它分為元組、事務、SQL語句或者所有的同步數(shù)據(jù)[4]。不同同步粒度的劃分在系統(tǒng)實現(xiàn)的難度、系統(tǒng)開銷、全局提交率等方面各有不同,目前的三級復制體系大都采用以一個移動事務的結(jié)果集為同步粒度,它既保證了移動事務的原子性,又保證了移動事務沖突檢測中的獨立性。但是,這種同步機制所帶來的系統(tǒng)開銷也是很大的,極大地加重了系統(tǒng)的負荷[5]。
為了改進上述問題,本文提出一種以相關事務結(jié)果集作為同步傳輸粒度的同步傳輸機制,它不同于以往的以單個事務結(jié)果集作為同步粒度,通過對移動事務的讀集和寫集進行邏輯運算,判斷出具有相關性的事務,進而在數(shù)據(jù)同步過程中將這些事務的結(jié)果集進行合并,避免了保存大量中間結(jié)果,減輕了同步服務器的負荷,也減少了無線傳輸過程中的數(shù)據(jù)量。同時,也保證了事務的原子性,比較容易實現(xiàn)數(shù)據(jù)一致性的收斂。
(二)實現(xiàn)過程
首先用ReadSet(T)表示事務的讀集;WriteSet(T)表示事務的寫集,ResultSet(MT)表示事務的結(jié)果集。然后定義如下概念:
相關事務:如果兩個事務T1和T2具有以下特征,我們說它們是相關的:
1.WriteSet(T1)WriteSet(T2) !=
2.WriteSet(T1)ReadSet(T2)!=
當移動用戶在移動結(jié)點的本地數(shù)據(jù)副本上執(zhí)行事務時, EDBMS需要判斷正在執(zhí)行的事務是否和其他事務相關,如果是相關的,則將此事務和與之相關的事務的結(jié)果集做上同一個標記,這個標記用于在同步時快速過濾出需要上載的數(shù)據(jù),并且根據(jù)這個標記將上載的數(shù)據(jù)按照相關事務的結(jié)果集劃分成不同的同步單元。
如果相關的事務的結(jié)果集有交集,則對交集的部分做合并操作,這樣就避免了保存大量中間結(jié)果的問題。
下面,我們以具體的例子說明移動事務相關的過程:
(1)相關1:寫寫相關
如果兩個事務的寫集的交集不為空,則這兩個事務是寫寫相關的。這種情況很常見,在一個應用中,經(jīng)常會有包含相同SQL操作的事務重復執(zhí)行,典型的是在一個銷售系統(tǒng)中。
如下有兩個事務MT1,MT2所示,假設事務讀寫的表的初始內(nèi)容如表-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提交事務后,系統(tǒng)對數(shù)據(jù)庫進行操作后便將MT1修改的元組做上MT1的事務標記。在MT2執(zhí)行過程中,發(fā)現(xiàn)將要修改的元組標有其他事務的標記,則認為本事務是和已經(jīng)標記的事務是相關的。將MT1和MT2兩個事務相關后,相關事務的結(jié)果集相當于在移動設備的本地數(shù)據(jù)副本上執(zhí)行了如下一個單獨的事務:
UMT1
Update Table1 Set items=Items-30 Where name=“book”;
Update Table1 Set items=Items-60 Where name=“CD”;
以上描述的是一種較為特殊的產(chǎn)生寫寫相關的事務的場景。更為一般的情況是兩個事務寫集的交集只是其中某個事務寫集的一個真子集,也即兩個事務滿足下列條件:
WriteSet(MT1) WirteSet(MT2)!=
并且滿足下面的一個或者兩個條件:
WirteSet(MT1) WirteSet(MT2)WirteSet(MT1)
WirteSet(MT1) WriteSet(MT2)WirteSet(MT2)
(2)相關2:寫讀相關
寫讀相關的情景在應用中也經(jīng)常出現(xiàn),當一個移動事務在本地數(shù)據(jù)副本上提交后,其對數(shù)據(jù)的修改可能會被其他事務讀取,并用于這些事務的執(zhí)行過程中。在寫讀相關事務中,因為后提交的事務的結(jié)果依賴于前一個事務的寫集中的某些數(shù)據(jù)項,因此認為這兩個事務是相關的。
以上我們討論的都只涉及到兩個事務之間的相關,但卻很容易可以擴展到多個事務之間。
四、結(jié)束語
本文重點研究了目前流行的復制移動數(shù)據(jù)庫系統(tǒng)中的復制和同步技術。在詳細分析已有同步技術的基礎上,提出了一種以相關事務的結(jié)果集為同步粒度的結(jié)果集傳遞合并的同步機制,并對如何實現(xiàn)這種同步機制的方法做了較為詳細的闡述。
參考文獻:
[1]劉鐵銘、張有為、張媛媛,嵌入式移動數(shù)據(jù)庫應用研究[J].微計算機信息,2006,1-2:P88-90.
[2]王珊、丁治明,移動計算環(huán)境中的移動數(shù)據(jù)庫,微電腦世界,2001.8:p25-27.
[3]丁治明,移動數(shù)據(jù)庫關鍵技術研究,中國科學院研究生院博士學位論文,2002.05.
[4]何新貴、唐常杰、李霖、劉云生,特種數(shù)據(jù)庫技術,北京:科學出版社,2000.