MobiLink的移動數據庫同步技術研究
近年來,隨著移動計算技術的快速發展,智能手機、PDA等移動設備的普遍使用,使得數據同步技術在分布式數據庫系統,特別是在移動數據庫系統中發揮了愈來愈大的作用[1-2]。數據同步技術可以使遠程數據庫和統一數據庫保持同步,達到共享數據和保持數據一致性的目的。MobiLink iAnywhere Solutions公司開發的基于會話的關系數據庫同步系統,它支持遠程數據庫和統一數據庫之間的雙向數據同步,非常適用于移動計算環境。1 MobiLink同步系統
??? MobiLink是基于會話的同步系統,它允許在統一數據庫與多個遠程數據庫之間進行雙向數據同步[3]。統一數據庫是可以支持任何ODBC標準的數據庫,保存了所有數據的主副本。遠程數據庫是Adaptive Server Anywhere數據庫或UltraLite數據庫,保存了部分數據的副本。通常,當MobiLink遠程站點請求與MobiLink同步服務器連接時,便開始了同步過程。同步期間,遠程站點的MobiLink客戶端將上載自上一次同步以來對遠程數據庫所作的更改。MobiLink同步服務器在接收到這些數據時開始更新統一數據庫,然后將統一數據庫中的更改下載到遠程數據庫。
1.1 MobiLink同步系統的結構
??? MobiLink同步系統的結構如圖1所示[4]:
??? (1)統一數據庫,此數據庫包含同步系統中所有數據的集中副本。
??? (2)統一數據庫服務器,管理統一數據庫的服務器或DBMS。此服務器可以是Sybase公司的產品,如Adaptive Server Anywhere或Adaptive Server Enterprise,也可以是其他公司支持ODBC標準的DBMS(如Oracle,Microsoft SQL Server等)。
?? ?(3)ODBC,MobiLink同步服務器和統一數據庫之間的所有通信都通過ODBC進行連接。ODBC使同步服務器可以連接多種統一數據庫系統。
??? (4)MobiLink同步服務器,此服務器管理同步過程并提供所有MobiLink客戶端與統一數據庫服務器之間的接口。
??? (5)網絡,MobiLink同步服務器與MobiLink客戶端或UltraLite之間的連接,可以使用多種協議。
??? (6)MobiLink同步客戶端,通過網絡與MobiLink同步服務器進行連接,是遠程數據庫與MobiLink同步服務器之間進行通信的接口。
??? (7)遠程數據庫,此數據庫包含同步系統中部分數據的副本。
1.2 MobiLink同步系統的特性[4]
??? MobiLink同步系統具有很強的適應性和靈活性。其關鍵特性如下:
??? (1)數據協調,MobiLink可以為同步過程選擇數據的特定部分,并解決不同數據庫之間的更改沖突。同步過程由編寫為SQL、Java或.NET應用程序的同步邏輯控制。同步邏輯的每個單元稱為1個腳本。例如,可以使用腳本指定如何將上載的數據應用到統一數據庫中,并指定下載內容,以及處理統一數據庫與遠程數據庫之間不同的模式和名稱。
??? (2)自動化,MobiLink具備多種自動化功能。可以指導MobiLink同步服務器生成適合于快照同步的腳本,或者生成示例同步腳本。它還可以自動添加需要鑒定的用戶。服務器啟動的同步系統允許將數據更新推送到遠程數據庫。
??? (3)監控和報告,MobiLink提供了2種同步監控機制:MobiLink監控器和統計腳本。可以監控腳本、模式內容、行數的值、腳本名稱、轉換的腳本內容以及行值。
??? (4)性能調優,調優MobiLink性能的機制有多種。例如,可以調優爭用程度、上載高速緩存大小、數據庫連接數、工作線程數、日志詳細程度或BLOB高速緩存的大小。
??? (5)雙向同步,可以在任意位置對數據庫進行更改。
??? (6)僅上載同步或僅下載同步,可以選擇僅執行上載或僅執行下載。
??? (7)基于文件的下載,可以將下載作為文件分發,從而實現了脫機分發同步更改。只需1次創建文件,然后將其廣泛分發。
??? (8)服務器啟動的同步,可從統一數據庫啟動MobiLink同步。這意味著可以將數據更新推送到遠程數據庫,并讓遠程數據庫將更新數據上載到統一數據庫中。
??? (9)通信流的選擇,同步可以通過TCP/IP、HTTP或HTTPS執行。Palm設備可以通過HotSync同步。Windows CE設備可以使用ActiveSync同步。
??? (10)遠程啟動,可以在遠程數據庫啟動該數據庫和統一數據庫之間的同步。
??? (11)基于會話,對所有更改的上載和下載都分別在單個事務中完成。每次同步成功完成后,統一數據庫和遠程數據庫將保持一致。
??? (12)事務完整性,要么同步全部事務、要么不進行任何同步。確保了每個數據庫的事務完整性。
??? (13)數據一致性,MobiLink使用松散一致性策略來進行操作。所有更改經過一段時間后,將在每個站點中保持一致,從而實現同步,但在任一瞬時不同的站點可能擁有不同的數據副本。
??? (14)范圍廣泛的硬件和軟件平臺,多種廣泛使用的數據庫管理系統都可以用作MobiLink統一數據庫:Adaptive Server Anywhere、Adaptive Server Enterprise、Oracle、Microsoft SQL Server 或 IBM DB2等。遠程數據庫可以是Adaptive Server Anywhere數據庫或UltraLite數據庫。MobiLink同步服務器可在Windows或UNIX平臺上運行。Adaptive Server Anywhere可在Windows、Windows CE或UNIX計算機上運行。UltraLite可在Palm、Windows CE或基于Java的設備上運行。
??? (15)靈活性,MobiLink同步服務器使用SQL、Java或.NET腳本來控制數據的上載和下載。該腳本在每次同步期間將根據事件模型執行。通過基于事件的腳本編寫這種方式,為同步過程的設計提供了很大的靈活性,包括如解決沖突、錯誤報告和用戶鑒定等功能。
??? (16)可伸縮性,MobiLink同步是可伸縮的:1個服務器可以處理數千個共存的同步,而通過負載平衡可以同時運行多個MobiLink服務器。MobiLink同步服務器是多線程的,可對統一數據庫使用連接池,并提供大量的監控和報告工具。
2 使用MobiLink進行移動數據庫同步
??? 本文主要目的在于研究利用MobiLink同步技術,在統一數據庫和移動數據庫之間進行數據同步的方法。但在MobiLink的幫助文檔中,對于如何在Windows CE平臺中啟動MobiLink客戶端沒有給出明確說明,研究中發現,Windows CE中的MobiLink客戶端不能有效地傳遞參數,同時使用觸摸筆輸入參數也很不方便。經過研究提出了一種利用快捷方式文件啟動的解決方法。
??? 本文選用Sybase公司的Adaptive Server Anywhere分別作為統一數據庫和遠程數據庫。Adaptive Server Anywhere是基于事務的關系數據庫,適用于個人和工作組,可以在多種操作系統上運行,包括各種Windows和UNIX操作系統以及Novell NetWare操作系統。
2.1 資源配置
??? (1)工作平臺和軟件環境
??? 硬件平臺:PC機和Windows CE移動設備。統一數據庫:Adaptive Server Anywhere 9.0,在PC機安裝SQL Anywhere Studio 9.0。移動數據庫:Adaptive Server Anywhere 9.0,通過SQL Anywhere for Windows CE部署選項將Adaptive Server Anywhere部署到Windows CE設備上。網絡:TCP/IP。
??? (2)準備數據庫
??? 統一數據庫:用Sybase Central在PC機創建1個統一數據庫consol.db。遠程數據庫:用Sybase Central為Windows CE創建1個遠程數據庫remote.db。
2.2 系統初始化
2.2.1 填充數據庫[5]
??? (1)統一數據庫
??? 在數據庫服務器dbsrv9上啟動數據庫consol.db后,通過Sybase Central連接到數據庫,為數據庫創建一個名為student的表,只添加屬性SId和SName,不填充數據。
??? (2)遠程數據庫
??? 啟動Windows CE上的網絡數據庫服務器,并在服務器啟動遠程數據庫remote.db。然后用Sybase Central通過網絡連接到遠程數據庫,為數據庫創建一個名為student的表,添加與統一數據庫中的表student相同的屬性,并添加記錄。
2.2.2 創建數據源
??? (1)統一數據庫
??? 用ODBC管理器為統一數據庫consol創建數據源test_consol。
??? (2)遠程數據庫
??? 由于Windows CE沒有ODBC管理器,因此為遠程數據庫創建文件數據源。創建名為student.dsn的文本文件,填充如下內容:
??? [ODBC]
??? uid=dba
??? pwd=sql
??? enginename=remote
??? databasename=remote
2.2.3 準備同步
??? (1)遠程數據庫
??? 通過Sybase Central連接到遠程數據庫,為表student創建一個新的發布stu_pub。創建MobiLink用戶ml_student,為該用戶預定發布stu_pub。設置同步預定ml_student的屬性,在Connection選項卡中分別設置PC機的IP地址和MobiLink服務器啟動的端口號。
??? (2)統一數據庫
??? 通過MobiLink Synchronization連接到統一數據庫,在表->DBA中將student表添加到同步表中,新建版本default。
??? 在同步表中選擇student表,為其添加如下腳本。
??? Download_cursor
??? SELECT SId, SName FROM student
??? Upload_insert
??? INSERT INTO student(SId, SName) VALUES (?,?)
??? Upload_update
??? UPDATE student SET SName =? WHERE SId =?
??? Upload_delete
??? DELETE FROM student WHERE SId =?
2.3 啟動同步
2.3.1 啟動MobiLink服務器
??? 在PC機命令提示符中運行如下命令:
??? dbmlsrv9-c“dsn=test_consol”-o mlserver.mls-v+-dl-x tcpip(port=2639)-za-zu+
2.3.2 啟動MobiLink客戶端
??? 針對Adaptive Server Anywhere遠程數據庫,MobiLink提供了2種客戶端,(1)用于支持Win32平臺;(2)用于支持Windows CE平臺。在2種平臺中MobiLink客戶端文件名都為dbmlsync的命令行程序。
??? 在Win32平臺中啟動MobiLink客戶端有2種方法:
??? (1)直接運行程序dbmlsync,如圖2所示,在這個設置界面中設置好相關參數后即可啟動同步。
??? (2)在命令提示符中運行如下命令:
??? dbmlsync-c “dsn=student”-e “sch=EVERY:00:05”
??? 與Win32平臺不同的是,一方面Windows CE平臺不支持命令行程序;另一方面Windows CE平臺中的MibiLink客戶端輸入相關參數后仍然不能順利實現同步,而且在只有觸摸筆的Windows CE設備中輸入參數很不方便。
??? 為了解決這個問題,本文采用了快捷方式文件啟動的方法。在Windows CE中創建名為sync.lnk的文本文件,內容如下:100#“Program FilesSybaseASA9dbmlsync.exe” -c “dsn=student” -e “sch=EVERY:00:05”。
??? 這是一個指向dbmlsync的快捷方式文件,同時在文件中提供了程序運行所需要的參數,運行這個文件即可成功實現同步。同步后的狀態如圖3所示。
3 應用前景
??? MobiLink可以應用于具有以下要求的同步系統:
??? (1)大量數據庫,MobiLink可用于支持大量的遠程數據庫。在單個系統中,可支持數以千計的遠程數據庫。
??? (2)不定時連接,MobiLink支持不定時連接或間接連接到服務器所在網絡的數據庫。
??? (3)靈活的同步調度,應用程序按指定的間隔(幾分鐘、幾小時或幾天)進行連接和同步。
??? (4)低或中等容量,每次只能給遠程站點準備1個下載信息。在MobiLink系統中,如果數據量很大,就會造成較長的連接時間,因為遠程站點在同步完成之前不能斷開連接。
??? (5)異類數據庫,MobiLink支持將許多常用的關系數據庫用作統一數據庫。遠程站點的模式可以與統一數據庫的模式不同,因為可通過編寫腳本來控制同步過程。
??? 隨著移動計算技術、無線通信技術和移動數據庫技術的飛速發展,MobiLink數據庫同步技術將會在移動數據庫系統中發揮越來越重要的作用。
??? 本文在分析了MobiLink數據庫同步技術原理的基礎上,研究了通過MobiLink來實現移動數據庫同步的方法,并利用快捷方式文件解決了Windows CE中MobiLink客戶端不能有效傳遞參數和輸入不便的問題,最后對MobiLink同步技術的應用前景提出了展望。
評論
查看更多