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合并复制(二)建立域用户