2010-08-25 51 views
4

我的任务是实施一个系统,用于不断接收来自合作伙伴的大量数据。合作伙伴方面的数据模式与我们的不同,所以当数据被接收并导入到我们的数据库时,必须进行一些转换。从合作伙伴处继续传输数据

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

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

其他相关因素:

  • 使用SQL Server两侧(在我们身边2008年,未知的合作伙伴)。
  • .NET 4和/或任何来自Microsoft的盒子,没有第三方产品。
  • 转移是一种方式,即从合作伙伴转移给我们。
  • 数据量大约是数以万计的每日传输的更新记录/对象。
  • 数据模型相当复杂,有几个表和关系。
  • 的解决方案应该是宽容的合作伙伴方的变化(我们不知道什么时候&怎么变他们的模型)
  • 可维护性和可靠性比性能更重要,即我们不需要最新数据,但服务应该易于修改,并且不能失败/停止。

我在问这个问题,因为我不知所措,但可以完成的方式有多少。作为.NET开发人员,我倾向于实现WCF或者甚至是一些基于xml的自定义交换。但我知道Biztalk可能适合这里的法案,而SQL Server可能有一些我不知道的漂亮功能。

任何指针,想法和建议是最受欢迎的!

+1

什么是大量的数据? 100GB /小时?复制速度有多快。它应该是某种预定的批量加​​载或更多事件驱动/每个记录的基础? – 2010-08-25 06:34:35

+0

对不起,“大”我的意思是“成千上万的记录每天”,这将需要一些处理,但几乎不会对我们的带宽造成太大的压力。批量或事件驱动也取决于我们提出的解决方案。它可以是夜间工作,也可以是连续更新的单个记录/对象。 – 2010-08-25 06:42:01

回答

2

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

2

如果你想要一个完整的数据库副本,那么log shipping是一个不错的选择,否则检查出replication,它可以让你更好地控制拷贝的内容。

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

+0

我认为我们正在寻找更多面向服务的体系结构:如果我们要维护数据库的完整副本,这也意味着我们在对其模型进行更改时必须进行更改。必须有某种中间契约,它定义了数据及其结构。 – 2010-08-25 06:46:38

+0

日志传送和复制都将应用模式更改 - 因此这可能不是一个突破问题。 – 2010-08-25 06:55:55

+0

是的,但之后我们会有一个“神奇地”在一夜之间改变的数据库,可能会破坏我们的导入/转换代码。 :) – 2010-08-25 06:57:46

0

也许,这里就是我会做它:

  1. 保持合作伙伴的数据库的本地副本。让我们称这个分段,因为你会在这里转换数据。使用数据比较(VS 2010功能,你可以当然自动化)或复制来实现这一点。我不确定Replication是否触发CDC,但Data Compare确实会。
  2. 在暂存数据库上启用更改数据捕获。这样只会给您更改的记录,因此您可以选择性地转换数据并更新数据库。
  3. 构建和部署扫描CDC表的SSIS作业,转换数据并加载到数据库中。

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

相关问题