同时更新两个不同的数据库
问题描述:
比方说,我有两个数据库,像这样:同时更新两个不同的数据库
DatabaseA
创建表表1(FIELD1 INT,场2 INT,字段3 INT)
DatabaseB
创建表表1(FIELD1 INT,场2 INT)
我们旧的应用程序使用乙,必须继续这样做。我们正在开发一款即将使用A的新应用程序。答:A:表1复制B:Table1?
这里有一些事情要考虑:
- 旧的应用程序只能在b执行
selects
:表1,没有必要的同步化去两种方式。 - 旧应用程序必须保持使用B。
- 中的大部分字段答:表1与相同B:表1,但某些类型的数据转换在某些情况下将需要。
- 性能不是一个大问题,因为不会有太多的修改。
- 首先,只有1到2个表需要同步,但随着我们将更多模块迁移到新版本,将添加更多表。
- 这两个数据库来自不同的供应商。
这里是我考虑的选项:
- 在新的应用程序,请更新到两个数据库:
我不喜欢这个选项,因为它增加了一个新应用程序数据层的复杂性很大,并且两个数据库之间没有事务 - 使用A中的触发器启动
application
将复制在B中的变化
不知道这是一个很好的做法,以及如何可靠是 - 在一个使用触发器发动
stored procedure
复制的更改
一些数据转换可能过于复杂,在存储过程中做 - 启动在设定的时间间隔的应用程序或存储过程来进行更改
不是真正的蒂姆E,所以我宁可不使用此
你对这个恶棍?
我错过了另一种选择吗?
你有没有做过类似的事情?
有没有可以完成这项工作的软件(免费或不是)?
一如既往,非常感谢大家的时间和您的意见。
答
你有很多的选择在这里...
- 您可以link the servers并在交易一起应用的更新。这是在同一台服务器上的数据库是而不是。
- 您可以使用Service Broker向其他服务器提供有保证的异步更新。
- Log shipping也将允许其他服务器以接近实时的方式接收更新。
最后,您需要详细了解每一项,并决定哪种最适合您的需求。这将是可靠性和性能之间的折衷。
单从您的问题中的信息,听起来像Service Broker将是最合适的。您仍然可以使用触发器来调用代理,然后异步响应。
答
您如何看待事务复制?您只能复制某些列,并且可以编写自定义存储过程来执行插入,更新和删除操作。它也是异步的,所以你的新应用程序不应该被它阻塞。