外部只读DB,我的本地数据库,不一致

时间:2011-09-28 05:39:40

标签: .net sql-server

有一个与DB1一起使用的服务A,有与DB1和DB2一起使用的服务B. Service A具有对DB1的读写访问权限,根本不适用于DB2。 Service 2具有对DB2的读写访问权限和对DB1的只读访问权限。

我的想法是,我正在开发服务2并关注不一致性。服务2就像服务1的“插件”,因此DB2可能被认为是“与DB1实体相关的更多数据”。我无法明确地与服务1及其数据库同步,当删除,更改实体或显示新实体时,我无法接收任何通知。

问题是,服务2的正确方法是使所有这些东西保持一致吗?

我正在考虑安排将实体从DB1复制到DB2,因此唯一真正适用于DB1的是“复印机”。然后,Service 2将只与DB2一起工作,应该没有问题。这似乎很微不足道,所以我非常喜欢这种方法。

还有其他想法吗?

更多细节: DB1类似于2个表,其中包含1M行的摘要。两个DB都在同一台服务器上。服务器是MS SQL 2005/2008。服务2在.NET中。

1 个答案:

答案 0 :(得分:1)

“定期复制”选项是一个好主意,如果您的需求可以处理在DB1中添加/更新记录与在DB2中显示记录之间的延迟,那么它将会很好用。

如果您的应用程序无法处理该延迟,那么 I 所采用的方法本质上是一种双管齐下的方法,您仍然可以从DB1执行定期同步DB2,但是如果它发现DB2中需要的东西还没有,那么你的应用程序也会将数据从DB1复制到DB2中。

例如,假设您有一个用户需要更新存储在DB2中的一些特殊配置文件信息(一种常见的“插件”方案)。

  1. 当用户进入应用程序的插件部分以设置此特殊信息时,您的应用程序将首先在DB2中查找该用户。
  2. 如果用户的信息不在那里(例如,新用户),
    • 然后你去DB1获取数据并将其填充到DB2中。
  3. 然后,您可以像往常一样保存特殊的个人资料信息。
  4. 根据您的性能要求,“按需复制”方法可能就足够了,可能不需要额外的“同步所有”周期性过程。但是,如果有额外的同步过程可以减少应用程序在DB2上的“未命中数”,如果它查找不存在的信息并且必须从DB1获取它。