如何将多个记录数据库系统系统复制/合并到一个主系统记录数据库

时间:2016-07-21 02:27:49

标签: c# .net sql-server distributed-computing eventual-consistency

我正在寻找一个似乎是一个复杂问题的解决方案。基本上,我需要找到基于来自多个其他“分布式”记录系统的数据创建一个“主”数据库(记录系统)的最快和最可靠的方法。让我打破这个问题: 我有N个记录系统,每个记录都附加一个Web服务并响应数据请求。 N个Web服务中的每一个都标准化了响应对象模式,因此每个Web服务的XML / JSON响应数据模式完全相同。 任务是创建一个单独的“主”数据库,以尽可能最快的方式反映所有N系统记录。 (基本上,通过某些过程/应用程序/程序/等定期合并所有N个数据库)。

从每个“分布式”记录系统获取数据的唯一方法是与各自的Web服务进行交互。这是所有N系统记录所有者商定的全球标准。

解决此问题的最有效方法是什么?

这是一种被考虑的方法,但我认为这种方法并不是最优的: 创建一个C#程序,它将同时/异步地从每个Web服务请求数据,并将该数据推送到SQL Server中的暂存环境中。然后,SQL Server将运行程序将该数据合并到主数据库中(目前这需要17个小时才能完成,显然这需要很长时间)

这是运动部件的基本图,“??”中间代表解决方案 Here is a basic drawing of the moving parts, the "??" in the middle represents the solution

1 个答案:

答案 0 :(得分:0)

谢谢Zohar。事实证明,我仍然会使用任务并行库来解决这个问题。我将继续使用任务,但已决定创建一组所有执行异步的任务(5-10),然后使用ConcurrentQueue处理所有Web URL。这将使我能够最大限度地缩短时间。

绝对有充分的理由关注"瓶颈",每个网络服务器都有不同的瓶颈价格" (因为缺乏更好的词)。我将配置我的算法创建N个任务,其中N与Web服务相关联并可配置。因此,例如,如果Web服务1具有高性能,我将创建更多任务(线程)来并行运行请求。谢谢。