摘要:MobiLink同步技術是移動數據庫常用的一種技術,以提高數據的可用性和系統的性能。該文主要從理論上介紹了MoniLink同步技術的基礎知識,重點分析了MobiLink移動數據庫同步過程,說明了MobiLink同步技術的實用性。最后,通過對MobiLink同步技術的研究,分析了沖突處理問題,簡化了沖突處理過程,提高了同步效率。
關鍵詞:同步技術;MobiLink;移動數據庫;沖突處理
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2009)32-8870-03
The Research of Mobilink Synchronization in Mobile Database
XING Peng, ZHANG Meng
(Xuchang Vocational Technical college, Xuchang 461000, China)
Abstract: The technique of MobiLink Synchronous Technique are widely adopted in Mobile database to improve data availability and system performance.In this paper,Some rudiments of MobiLink Synchronous Technique are introduced in theory,the course of mobile database's synchronization is particularyly analyzed,and as a result we can find its practicability.Final,study of MobiLink Synchronous Technique,the question of conflict reconciliation is analyzed,simplify conflict processing and enhance the efficiency of synchronizing duplication.
Key words: synchronous technique; mobiLink; mobile database; conflict reconciliation
目前,移動數據庫技術的研究是一個熱點問題。實現數據庫同步復制、保持多個數據副本的一致性的同步復制技術是移動數據庫的核心技術,在移動數據庫系統中發揮著愈來愈大的作用。于是深入研究移動數據庫同步技術具有很重要的研究價值和應用價值。本文就結合Sybase公司的MobiLink同步技術進行研究。
1 MoniLink同步技術和同步系統
1.1 MobiLink技術
MobiLink 是一種基于會話的技術,用來在中心統一數據庫和大量遠程數據庫間進行雙向數據復制。它支持多種統一數據庫服務器,其中包括非 Sybase 數據庫。遠程站點的管理和資源要求已降到了最低限度,因此,它非常適于各種移動數據庫。每個同步會話結束后,這些數據庫就會保持一致[1]。
MobiLink用于在中心數據庫和大量遠程數據庫之間進行復制。MobiLink可以在一個統一數據庫和一組遠程數據庫之間提供數據復制。統一數據庫包含要復制的所有數據,遠程數據庫是統一數據庫的副本,它可以與統一數據庫位于相同的站點,也可以位于物理上的遠程站點。
1.2 同步技術
同步是指在多個結點上完成數據的備份,包括服務器的中心數據庫的復制以及在移動計算機中保存數據庫的復制,利用同步過程來消除移動設備上的數據與企業中心數據庫中的數據會有暫時的數據不一致的技術。其目的是保持數據庫系統各結點中數據狀態的一致性。
目前移動數據庫同步復制技術主要包括數據級同步和事務級同步兩種類型:數據級同步技術[2]以元組作為同步處理的基本單位,其實現簡單、同步效率較高,但由于在同步處理過程中沒有考慮事務的概念,因此不能保證事務的原子性和數據庫的一致性;事務級同步技術[3]以事務作為同步處理的基本單位,其同步機制保證了事務的原子性,數據庫一致性則依賴于同步過程中所采用的沖突檢測和消解算法,因此事務級同步是一種理想的同步處理方式,已成為移動數據庫研究領域的一個重要研究方向[4]。
1.3 同步系統的組成部分
圖1顯示了同步系統的主要組成部分。
統一數據庫:此數據庫包括同步系統中所有信息的主副本。
統一數據庫服務器:管理統一數據庫的服務器或 DBMS。此服務器可以是 Sybase 產品,如 Adaptive Server Anywhere 或 Adaptive Server Enterprise,也可以是其他公司生產的受支持系統。
ODBC 連接:MobiLink同步服務器和統一數據庫之間的所有通信都通過一個ODBC連接進行。ODBC使同步服務器可以使用多種統一數據庫系統。
MobiLink 同步服務器:此服務器管理同步過程并提供所有它MobiLink客戶端之間的接口,以及它與統一數據庫服務器之間的接口。
網絡:MobiLink同步服務器dbmlsrv8與MobiLink客戶端實用程序 dbmlsync之間的連接,可以使用多種協議。
MobiLink 客戶端:支持兩種類型的客戶端:UltraLite數據庫與Adaptive Server Anywhere數據庫。在一個MobiLink安裝中可以同時使用上述兩種或其中一種客戶端。
2 基于MobiLink移動數據庫的同步過程
同步是 MobiLink 移動數據庫的客戶端和同步服務器之間的雙向數據交換過程。一般由移動數據庫的客戶端開始進行同步過程,它開始與MobiLink同步服務器建立連接。MobiLink的同步主要分為三個階段,如圖2。
上載流: MobiLink客戶端自動跟蹤記錄在上一次成功同步之后遠程移動數據數據庫中插入、更新和刪除了哪些行。連接一旦建立,MobiLink客戶端將一個列出所有這些更改的列表上載到同步服務器。
上載流由遠程移動數據庫中被修改的各行的新行值和舊行值組成。如果某行被更新或刪除,舊行值是指上次成功同步后時的那些值。如果某一行被插入或更新,新行值是指當前的行值。即使在到達當前狀態之前,行已經更改過數次,也不會發送任何中間值。
MobiLink同步服務器接收上載流并將更改應用于統一數據庫中。所有的更改一般都在一次事務中完成應用。此后,MobiLink同步服務器將提交該事務。
下載流:MobiLink同步服務器將使用您創建的同步邏輯編譯在 MobiLink客戶端插入、更新或刪除的一組行。它將這些行下載到MobiLink客戶端。為了對該列表進行編譯,MobiLink同步服務器將在統一數據庫中打開一個新事務。
MobiLink客戶端接收下載流。當下載流到達時,MobiLink客戶端認為統一數據庫已成功應用所有上載的更改,并將確保這些更改不會再發送到統一數據庫中。
接下來,MobiLink客戶端將自動對下載流進行處理,刪除舊行、插入新行以及更新已更改的行。所有的更改將在遠程數據庫中的一個事務中完成應用。此后,MobiLink同步服務器將提交該事務。
可選的下載確認:MobiLink客戶端可以將一個簡短確認消息發送給MobiLink同步服務器。
MobiLink同步服務器接收到確認消息。該消息讓同步服務器知道客戶端已經接收并處理了所有下載的更改。作為響應,同步服務器將提交上一步的下載事務。
但是在同步過程中,由于種種原因,同步也會失敗,那么對于同步過程中的失敗又如何處理?
① 上載中的故障:如果在創建或應用上載流時出現故障,遠程數據庫將保持與同步開始時完全相同的狀態。在服務器端,任何已應用的上載流部分將被回退。
② 上載和下載之間的故障:如果故障在上載流完成之后、在 MobiLink客戶端接收到下載流之前發生,客戶端將無法確定上載更改是否成功地應用到統一數據庫中。上載流可能已經全部應用并提交,故障也可能出現在服務器應用整個上載流之前。此時MobiLink同步服務器將自動回退統一數據庫中的未完成事務。
MobiLink 客戶端維護所有上載更改的記錄,以備這些更改必須再次發送。在下一次客戶端同步時,它在創建新的上載流之前請求上一個上載流的狀態。如果沒有提交上一個上載流,新的上載流將包含自上一個上載流之后發生的所有更改。
③ 下載中的故障:如果故障發生于正在應用下載流的遠程設備,所有已應用的下載部分都將回退,而遠程數據庫將與下載前保持相同的狀態。MobiLink 同步服務器自動回退統一數據庫中的下載事務。
3 MobiLink同步技術及沖突處理問題
3.1 基于時間戳的同步
時間戳方法是可以進行高效的同步的最實用的通用技術。此項技術涉及跟蹤每個用戶上次進行同步的時間,并使用此信息控制下載到每個遠程數據庫的行。
MobiLink 保留了一個用以說明每個 MobiLink 用戶上一次下載數據的時間的時間戳值。該值被稱為上次下載的時間戳。上次下載的時間戳將作為一個參數被提供給許多事件,該時間戳還可以在同步腳本中使用。
3.2 快照同步
對于上面的基于時間戳的同步適合于大多數同步。但是,有些時候可能需要更新數據快照。表的快照同步是指完全下載表中的所有相關行,而不考慮這些行以前是否已經下載。這是最簡單的同步方法,但會引起大量的不必要的數據集交換,從而導致性能下降。
快照同步最適合用于同時具有以下兩種特征的表。
1) 行數相對較少:當表中的行數比較少時,下載所有行所產生的開銷也會相對較小。
2) 行信息經常更改:當表中的大多數行頻繁進行更改時,采用顯式排除上次同步后未發生更改的行的方法就沒有太大的必要了。
3.3 沖突處理問題
結合移動計算的特點,一個理想的移動數據庫系統要做到有效地支持移動計算環境中的各種數據應用,滿足人們能在任意時刻、任意地點訪問任意數據的需求,應當實現以下4個目標SMSC:1) 可用性與可伸縮性(scalability)、2) 移動性(mobility)、3) 可串行性(serialbility)、4) 收斂性(convergence)。這四個目標決定了理想的移動數據庫復制應該是一種異步的多主副本復制,即系統允許移動主機在斷連的情況下存取本地副本并提交事務操作,從而造成系統短暫的不一致;重新連接時進行數據同步處理,使系統重新收斂于一致性的狀態.在此過程中,必須正確地檢測并有效地消除沖突.沖突處理是移動復制機制需要解決的關鍵問題。
對于在MobiLink同步中,沖突的檢測有兩種方法,一是使用基于語句的上載進行沖突檢測;二是使用基于游標的上載進行沖突檢測。
每當在遠程數據庫中更新行時,系統將保留最近一次同步時該行包含的值的副本。在進行下一次同步時,遠程數據庫中將不僅包含現在的值,而且還包含上次同步時相應值的記錄。
在客戶端向 MobiLink 同步服務器發送一個更新后的行時,發送的數據中不僅包含該行的新值,而且還將包含原值的副本。
MobiLink 同步服務器檢測沖突的過程取決于您使用的是基于語句的上載還是基于游標的上載。在大多數情況下,建議使用基于語句的上載。
在MobiLink同步中,對沖突處理,常使用強制沖突解決,強制沖突解決是一種特殊的技術,它強制將每個上載的行都作為沖突對待。強制沖突解決的實施方式取決于您使用的是基于語句的上載還是基于游標的上載[6]。
4 結束語
MobiLink同步技術在移動數據庫技術實現架構中扮演著非常重要的角色,尤其是在使用運行在移動設備上的移動數據庫與統一數據庫進行數據同步時,MobiLink在兩者之間起到了不可替代的橋梁作用,在同步處理過程中,能夠針對不同的故障做出相應的處理方法,可以說是MobiLink使統一數據庫與遠程數據庫能夠進行通信并實現數據同步成為現實。
參考文獻:
[1] 林勝利,路宗強,吳曉華.C#與sybase 數據庫移動應用開發指南[M].中國鐵道出版社,2007.
[2] 靖樹峰,鐘錫昌,張倪.一種移動數據庫系統的同步方案設計[J].計算機應用研究, 2006(6):50253.
[3] 丁治明, 王珊, 孟小峰. 移動復制數據庫系統沖突檢測及消解策略[J].計算機學報,2002,25(3):2972305.
[4] 金敏, 龔春紅, 周翔, 戴瑜興移動同步復制的沖突預處理與檢測消解策略[J].湖南師范大學:自然科學學報,2007,30(4).
[5] Sybase.Ultralite and Adaptive Server Anywhere ——AWhitepaper from Sybase.Inc [EB/OL].http://www.Sybase.com.