2009-11-17 26 views
0

我刚刚开始将.NET应用程序及其SQL Server数据库分为两个系统 - Intranet和一个公共网站。同步Intranet和Web数据

各种数据库表将需要以不同的方式在两个数据库之间进行同步,例如:

  • 移动从网络到内部网与内网数据变得只读
  • 从内网移动到网络,与网络数据变得只读
  • 需要被同步,并读取在Intranet和网络数据库都/写表。

某些同步需要以最小的延迟相对快速地发生,可能通过某种类型的事务锁定来确保可重复读取等。其他时间无论同步之间是否存在延迟都无关紧要。

我不太肯定这一切开始,因为似乎是实现这一目标的许多不同的方式。我应该关注哪些技术和策略?

任何提示?

+0

是否有任何特别的原因,你不只是指向内部网和互联网网站在同一个数据库?这会为你节省很多头痛。 – David

+0

为什么社区wiki? –

+0

主要原因是从我们在网络服务器上存储大量敏感数据并不是一个好主意,因为它比互联网更广泛地暴露于互联网。 – cbp

回答

2

像这样的系统看起来像组件相当紧密耦合。一次跨多个系统的升级可能变成相当恶梦。

看起来这不太复制问题,更如何保持持续连接到远程数据库的问题没有太多的I/O延迟。尽管可以完成,但在可扩展性方面并不能很好地解决问题。

你可能看使用一些消息队列和异步数据处理从远程站点到Intranet。您可能需要调整业务方面的一些预期,以免他们认为所有事情都可以实时访问。

当然,它很难给出具体细节没有更多的细节。研究SOA和消息传递系统的原理可能是一个好主意。

2

开箱即用的是SQL Server复制。听起来像是一对filteredtransactional复制出版物可以完成这项工作。事务性复制对发布程序的开销较低,并且可以确保发布的更改的事务一致性。

弥敦道提出了关于需要一个更加松散耦合解决一些非常有效点。 Service Broker可以很好地适应那个鞋子与松散耦合的异步性质,并且由于SSB是compatible between SQL Server versions and editions,所以提供了一个头疼的免费升级未来。但是这种自由的代价是让实际检测变化并将它们应用于表格,作为应用程序代码,而不是小事。