持续从合作伙伴传输数据

时间:2010-08-25 06:28:54

标签: .net sql-server architecture data-transfer

我的任务是实施一个系统,以便不断从合作伙伴那里接收大量数据。合作伙伴方的数据模式与我们的不同,因此在接收数据并将其导入数据库时​​必须进行一些转换。

解决此任务的最佳方法是什么?

我对方程式的两个方面都有一定的控制权,即如果我们选择使用WCF,我们的合作伙伴将实施该服务。但是,尽可能限制必须在合作伙伴方面进行的编程量是很重要的。理想情况下,他们会使用SQL Server的某些功能导出他们的数据,然后让我们处理其余的数据。

其他相关因素:

  • 双方都使用SQL Server(2008年在我们这边,对于合作伙伴来说不为人知)。
  • .NET 4和/或Microsoft开箱即用的任何产品,没有第三方产品。
  • 转移是一种方式,即从合作伙伴到我们。
  • 数据量大约是每天传输的数万个更新记录/对象。
  • 数据模型相当复杂,有几个表和关系。
  • 解决方案应该容忍合作伙伴方面的变更(我们不知道何时以及他们如何更改模型)
  • 可维护性和可靠性比性能更重要,即我们不需要 最新数据,但该服务应易于修改且不会失败/停止。

我问这个问题是因为我不知所措,但是可以实现的方式有多少。作为一名.NET开发人员,我倾向于实现WCF甚至是一些基于xml的自定义交换。但是我知道Biztalk可能符合这个要求,而SQL Server可能有一些我不知道的内置的漂亮功能。

欢迎任何指示,想法和建议!

3 个答案:

答案 0 :(得分:2)

如果您想要完整的数据库副本,那么log shipping是一个不错的选择,否则请查看replication,它可以让您对复制的内容进行更精细的控制。

您可以按原样复制数据,并处理线路侧的转换逻辑。

答案 1 :(得分:2)

除了Will的建议,您还可以查看SSIS(SQL Server Integration Services)。有了这个,您可以导出到FTP站点,然后在另一侧导入它。

答案 2 :(得分:0)

可能这就是我要做的事情:

  1. 维护合作伙伴数据库的本地副本。让我们调用此暂存,因为您将在此处转换数据。使用数据比较(您可以自动执行的VS 2010功能)或复制来实现此目的。我不确定Replication是否会触发CDC,但数据比较肯定会。
  2. 在登台数据库上启用“更改数据捕获”。这只为您提供了更改的记录,因此您可以有选择地转换数据并更新数据库。
  3. 构建并部署扫描CDC表的SSIS作业,将数据转换并加载到数据库中。
  4. 据我所知,数据比较在架构更改时运行良好(它忽略了架构更改)。 CDC也运行良好,您需要做的就是创建第二个捕获实例(如果存在架构更改并删除第一个)。