我有n个具有相同数据模式的Server数据库。
另一方面,对于某些实体,我有一个web应用程序需要检索存储在n个数据库中的信息的合并。
一个可能的解决方案是使用SSIS ()和BIDS ()应用ETL操作(提取、转换和加载)。
通过应用ETL操作,我可以从我的web应用程序中获得一个数据库(仓库)。有关基本草图,请看下面的图片。
问题在于,web应用程序不仅访问仓库进行读取,而且还访问写入和更新信息。
如果实体正在更新到仓库中,则需要将相同的更新应用到原始源中。
注意:进入源和仓库的信息可以频繁更新。
复制是否是将更新同步到仓库到正确源的好方法,或者我还可以使用其他工具?
也许我可以考虑另一种策略,而不是ETL和仓库?
发布于 2013-12-28 07:06:57
如果您的更新/插入总是发生在n个数据库中的单个数据库上,并且在每个请求中读取了较少的行数,则可以使用链接服务器和分布式分区视图(DPV)来创建单个数据库的错觉:http://technet.microsoft.com/en-us/library/ms188299(v=sql.105).aspxhttp://technet.microsoft.com/en-us/library/ms188299(v=sql.105).aspx。这可以在不引入复制复杂性的情况下完成。
DPV有几个限制,如果您不小心,可能会给您带来较差的性能。如果不知道您想要运行的查询的更多细节,我只能建议您尝试并查看是否解决了您的问题。
发布于 2013-10-26 04:50:35
一种选择是将n个相同的Server数据库替换为针对数据仓库的可写视图。
通过这种方式,您可以将所有数据保存在一个地方,但是可以使用视图来过滤数据,这样每个子集都可以作为一个独立的实体查看。因为您实际上只有一个数据副本,所以插入/更新/删除是对筛选视图执行还是对未筛选的表执行并不重要。双方将同时看到它,永远不会出现同步问题。
注意,为了使视图可写,必须强制执行某些条件。见这里。
发布于 2013-10-27 07:08:01
据我所知,更新仓库数据不是一个好做法。但是,如果确实需要执行此操作,则可以使用以下技巧:
在这种情况下,您可以在仓库数据更新期间避免锁。
https://dba.stackexchange.com/questions/52254
复制相似问题