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