c# - .Net 多个客户端和中央服务器之间的数据同步

标签 c# .net sql-server multi-tenant

我的客户是一家金融服务提供商,他们的软件部署在 500 多家客户身上。

他们的应用程序是用 C# 编写的,并使用 SQL Server 作为数据库后端。他们希望从所有客户数据库中收集数据,并将少量数据发回给客户。有几个要求:

  1. 数据同步针对 500 多个客户端,这些客户端在其软件的 7 个不同版本中具有 7 个略有不同的数据库架构

  2. 随着时间的推移,他们的软件可能会出现具有不同架构的新版本,不能因为等待更新此数据同步机制而延迟。基本上,数据同步需要灵活以支持任何模式并从中央位置进行控制,而不是将其更改与应用程序的发布联系起来

  3. 需要用 .Net 编写,因为他们所有的软件都在 Windows 上运行

  4. 可以一起部署一个特殊的数据同步客户端,它可以访问每个客户端的 SQL Server 数据库 - 但不能保证经常更新客户端。

是否已经有一个框架(除了在数据库上使用触发器的 Microsoft Sync Framework)可以帮助开发这个数据同步系统?

是否有任何关于 Multi-Tenancy 系统或数据同步的好书/文章可以提供有关如何创建这样的系统的一些要点?

最佳答案

不确定是否有除同步之外的现有框架,前阵子我有类似的要求但无法使用 MS Sync,因为我没有使用 mssql。

这就是我所做的,一些自定义代码,

要对模式变化做一些假设意味着

  • 可以添加新的字段/属性
  • 现有字段不会被删除(即您不必迁移 现有数据)
  • 客户端和服务器上的时钟使用 UTC 并同步。

您可以创建具有以下属性的模式历史表,

  • 表名
  • 版本
  • 上次同步日期

然后所有需要同步的表都有一个日期更改和最后更改的用户属性,例如

  • item1,1/1/13,服务器
  • 项目 2,2/2/13,客户 1

同步时,

  1. 检查模式表,如果客户端版本<服务器版本==> 更新架构(运行更新架构脚本)
  2. 获取服务器更新,将新数据推送到客户端,其中 owner = server and datechanged > clientchangedate
  3. 将每个表的同步最后更改日期与架构进行比较 每个表的表的最后同步日期

    if change date > sync date and user = client => 同步到服务器(更新或插入)

另请查看 ms 同步概念 http://msdn.microsoft.com/en-us/sync/bb821992.aspx如果你想复制它。

关于c# - .Net 多个客户端和中央服务器之间的数据同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14595738/

相关文章:

c# - 我可以使用完整版的 Visual Studio 2010 来开发 Windows 7 Phone 应用程序而不是下载包吗

c# - 静态方法中的全局变量

c# - .netTiers + Codesmith VS Entity Framework .Net C#

c# - 解析 CSS 类,但忽略 @media 查询

c# - ASP.Net 页面输入键导致回发

c# - 尝试阅读 MS Office 文档

c# - 关于 .NET 中的反射的完整教程?

sql-server - SQL Server 区分大小写的数据库名称

sql - 如何使 T-SQL 游标更快?

sql - 什么时候应该在 SQL Server 中对日志文件使用自动收缩?