Rob Tiffany's 曾經在 MEDC 2007 Las Vegas 和 Tech Ed 2007 Orlando 演示了擁有800個訂閱的4層合并復制架構。之后他開始編寫一本叫《Windows Mobile Data Synchronization with SQL Server 2005 and SQL Server Compact 3.1》的書,將構建高性能、可伸縮性的合并復制架構的寶貴經驗整理到書中,由于國內關于這方面的詳細資料太少了,于是萌發將其翻譯出來的念頭。好了,閑話不多說了開始翻譯:
前言:
設備中擁有一個數據庫,服務器中擁有一個數據庫,讓設備中的數據能夠跟服務器的數據同步已成為行業移動解決方案兩個重要的因素。服務器的數據庫存儲著所有的數據,而它必須將 mobile中的應用程序所需要的數據推送到mobile中的數據庫中去,同樣地,mobile中修改的數據也需返回到服務器中去。微軟的SQLSERVER提供了一種技術叫做合并復制,通過區域的網絡,設備中已訂閱的數據庫將能通過復制的形式從服務器發布的數據庫中下載數據,并能通過合并的方式將設備中對數據庫的更新,修改,插入提交回服務器發布的數據庫當中去.
這里,合并復制有個很好的功能就是,它只捕獲修改設備中修改過的數據并將其更新到數據庫當中去,并且它在協調多個設備發回來的數據有著很好的性能.
早在SQL SERVER CE1.0在2001年出來的時候,合并復制就成為一個很好的數據同步技術,并且它支持winodws mobile設備.隨著互聯網標準的公布,SQL SERVER 開發團隊讓移動設備的數據與服務器的數據同步不僅僅只能通過局域網,還可以通過無線網絡,透過Http,wap等傳輸協議與服務器的數據進行同步.隨著SQL Server CE支持合并復制,Windows Mobile 逐漸成為企業應用的一個平臺,并且它支持Embedded Visual Basic,Embedded C++等開發工具和.NET Compact Framework框架,從2001到現在SQLSERVER也從2001升級至2005,馬上2008又要出來了,SQL SERVER CE也從1.0升級至3.1版本,隨著每一次的更新升級,數據同步技術變得更快,并且能更好地處理丟失的數據.現在,合并復制代表著一種最高級的技術,在這競爭日趨激烈的網絡中,沒有其他的數據同步解決方案能有像合并復制這樣的深度和性能.
既然這樣,那我們在使用SQL Server CE數據同步的時候有其他選擇么?答案是肯定的.
(1)在.NET Compact Framework下,我們可以使用ADO.NET直接與SQL SERVER 進行連接,在局域網中,這或許是一種最佳的解決方案,但你能讓你的移動設備時時刻刻都連接在局域網中嗎?
(2)第二種方法是RDA,它像是合并復制的弟弟一樣,它在SQL SERVER端幾乎不用做任何配置,你只需寫代碼讓它用pull方法從數據庫中pull數據,然后用push方法將數據push回去,但是它不根據服務器端數據的變化,因此每次你都得將全部數據pull過來,全部數據push回去.
(3)第三種方法是使用webservice,你可以建立一個自定義的xml文件,將webservice中傳輸的數據序列化到DataSet當中,然后將DataSet的數據寫入到XML文件當中去,這種解決方案能夠解決前面兩種只針對SQL SERVER數據庫的,這種方法你還可以連接到其他類型的數據庫比如Orcacle or DB2,不過你所要做的工作是編寫數千行代碼來實現這個,并且XML在處理大數據量時的效率并不盡如人意.
情景:
當你意識到合并復制在你的SQL SERVER 數據與SQL SERVER CE同步的重要性時,下面的這幾個案例或許能夠闡明這項技術能給你解決方案帶來的價值.
(案例主要講解windows mobile在各個領域的應用,以及合并復制在mobile的數據與服務器的數據同步時所起的作用,因為案例較多,由于時間的關系這邊就不一一翻譯了,個人認為這些案例對我們的用處不大)
了解這些概念:
• Publisher:在SQL SERVER中通過Replication發布的數據庫
• Article:Replication發布的數據表或子集
• Publication:Article的集合
• Distributor:指的是包含通過Replication發布的數據庫的服務器.
• Subsciber:指的是運行在windows mobile上的接受訂閱數據庫并將結果改變提交給publisher的數據庫
• Subscription:指的是從Subscriber從服務器請求需要復制的數據,這些復制的結果包括表及其集合將被下載并在SQL Mobile中創建,你可以獲取這些表的主鍵,關聯,以及數據。第一次從Distributor下載的數據稱為快照,只需很少的內存消耗就可以下載大量的數據到Windows Mobile模擬器上。
• IIS:SQL MOBILE SERVER Agent,一個ISAPI、SQL Mobile Replication Provider以及SQL SERVER Reconciler集合在一起就是人們眾所周知的SQL MOBILE SERVER TOOLS,它集合在IIS上在設備和SQL SERVER提供一個Internet/Intranet通道.在下面的這張圖中,你就會發現Publisher,Distributor,IIS 和Subscriber是怎樣很好地結合在一起。你可能也注意到了下面的體系架構中有幾個代理的任務很繁重,這個架構或許跟你以前所見過的有所不同。

上圖是單個設備請求時服務器所發生的一系列請求,而下圖將是本篇所要重點講述的如何取搭建企業應用的合并復制的四層架構。

(譯者注:圖圖很不錯哦,認真看肯定會有收獲的)
下一步:一步步教你配置SQL SERVER合并復制(二)建立域用戶