我正在开发一个可在5台不同机器上运行的应用程序。每台机器的数据将存储在同一台机器上。我必须将所有机器的数据与集中式数据库同步。我无法找到这个问题的答案:最好的办法是什么?
请提出有利有弊的建议。
答案 0 :(得分:1)
您可以将sql server配置为使用复制并将副本发布到5台计算机中的每台计算机上。
如果您需要合并复制,则必须评估是否需要所有计算机中的所有更改,它们还有其他结构和选项,例如过滤器,只能在远程计算机中包含特定数据。
答案 1 :(得分:0)
Microsoft已经为您解决了这个问题 - 他们开发了Sync framework。我在大约4年前使用过它,它相当不错 - 但正如@Juan在评论中所说的那样,它现在已不再由微软积极开发,开源版似乎相当安静。
有两个明显的选择。
如果要将此解决为数据库问题,可以使用(合并)复制。这是最简单的解决方案 - 复制只是将数据从客户端复制到目标数据库,Microsoft处理所有调度,冲突解决等。
但是,客户端之间通常存在一些数据或业务逻辑 - 常见问题是客户端之间的主键或查找值之间可能存在冲突。例如,如果您使用整数作为主键,则机器1和机器2都分配" 1000"作为"销售"中记录的主键。表,复制变得棘手。 另一个常见的情况是,必须执行一些业务逻辑,这在单个机器上很简单,但在处理多个偶尔连接的机器时很难。例如,如果客户下订单,则应用程序可能希望检查总订单价值是否超过客户的信用额度 - 但如果另一个客户的另一个交易待处理怎么办? / p>
在这些情况下,您可能希望创建面向服务的同步设计。 Microsoft为此提供了WCF。虽然更灵活,但实施起来可能要付出更多努力。在此模型中,您可能将客户端上的本地数据库视为缓存,并将消息推送到中央计算机以反映用户交互。