我刚刚开始将.NET应用程序及其SQL Server数据库分成两个系统 - 一个内部网和一个公共网站。
需要以不同方式在两个数据库之间同步各种数据库表,例如:
某些同步需要以最小的延迟相对快速地发生,可能使用某种类型的事务锁定来确保可重复读取等。其他时间如果同步之间存在延迟则无关紧要。
我不太清楚从哪里开始这一切,因为似乎有很多不同的方法来实现这一目标。我应该关注哪些技术和策略?
任何提示?
答案 0 :(得分:2)
像这样的系统看起来像组件是紧密耦合的。一次升级到多个系统可能会变成一场噩梦。
看起来这不是一个复制问题,更多的是如何在没有太多I / O延迟的情况下维持与远程数据库的持续连接的问题。虽然可以做到,但在可伸缩性和能够解决问题方面可能不会很好。
您可能会考虑使用从远程站点到Intranet的一些消息队列和异步数据处理。您可能需要调整业务方面的一些期望,以便他们不会假设所有内容都是实时可访问的。
当然,如果没有更多细节,很难给出细节。对于您正在尝试做的事情,研究SOA和消息系统的原则可能是一个好主意。
答案 1 :(得分:2)
开箱即用的SQL Server Replication。听起来像一对filtered transactional复制出版物可以完成这项工作。事务复制在发布者上的开销很低,可以确保已发布更改的事务一致性。
内森提出了一些关于需要更松散耦合解决方案的非常有效的观点。 Service Broker可以很好地适应那种松散耦合的异步性质,并且由于SSB为compatible between SQL Server versions and editions,因此可以提供令人头疼的升级未来。但是,这种自由的代价是让实际检测到变化的繁重工作并将它们应用到表中,作为应用程序代码,而不是一个微不足道的功绩。