4

我的任务是实施一个系统,用于连续接收来自合作伙伴的大量数据。合作伙伴的数据模式和我们的不同,所以在接收数据并导入我们的数据库时必须进行一些转换。

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

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

其他相关因素:

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

我问这个问题是因为我不知所措,但是可以实现的方法有很多。作为 .NET 开发人员,我倾向于实现 WCF,甚至可能是一些基于 xml 的自定义交换。但我知道 Biztalk 可能适合这里的账单,而且 SQL Server 可能内置了一些我不知道的漂亮特性。

任何指示,想法和建议都非常受欢迎!

4

3 回答 3

2

如果您想要他们数据库的完整副本,那么日志传送是一个不错的选择,否则请查看复制,它可以让您对复制的内容进行更细粒度的控制。

您可以按原样复制数据,并在您这边处理转换逻辑。

于 2010-08-25T06:33:11.247 回答
2

除了 Will 的建议,你可以看看 SSIS(SQL Server Integration Services)。有了这个,您可以导出到 FTP 站点,然后将其导入另一端。

于 2010-08-25T06:35:01.360 回答
0

可能,这就是我的做法:

  1. 维护合作伙伴数据库的本地副本。让我们将此称为暂存,因为您将在此处转换数据。使用数据比较(您当然可以自动化的 VS 2010 功能)或复制来实现这一点。我不确定复制是否会触发 CDC,但数据比较肯定会。
  2. 在登台数据库上启用变更数据捕获。这只会为您提供更改的记录,因此您可以有选择地转换数据并更新数据库。
  3. 构建和部署一个扫描 CDC 表、转换数据并加载到数据库中的 SSIS 作业。

据我所知,数据比较在架构更改时效果很好(它忽略了架构更改)。CDC 也运行良好,您只需在架构发生更改时创建第二个捕获实例并删除第一个。

于 2010-08-25T07:26:57.137 回答