【问题标题】:Transfer data from partner continuously不断从合作伙伴传输数据
【发布时间】:2011-04-03 13:31:12
【问题描述】:

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

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

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

其他相关因素:

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

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

欢迎任何指点、想法和建议!

【问题讨论】:

  • 什么是大数据量? 100GB/小时?复制速度必须有多快。它应该是某种预定的批量加​​载,还是更多的事件驱动/每条记录?
  • 抱歉,我所说的“大”是指“每天数万条记录”,这将需要一些处理,但不会对我们的带宽造成太大压力。批量或事件驱动也取决于我们提出的解决方案。它可以是每晚的工作,也可以是单个更新的记录/对象的连续流。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我认为我们正在寻找一个更加面向服务的架构:如果我们要维护他们数据库的完整副本,这也意味着我们必须在他们更改他们的模型。必须有某种中间契约,定义数据及其结构。
    • 日志传送和复制都将应用架构更改 - 所以这可能不是一个重大问题。
    • 是的,但是我们会有一个数据库在一夜之间“神奇地”改变,可能会破坏我们的导入/转换代码。 :)
    • True - 在这种情况下,您肯定需要在自己和远程客户端之间签订合同。在这种情况下,SSIS(如 Vidar 建议的那样)可能是您使用数据、转换数据和填充本地表的绝佳选择。
    【解决方案3】:

    也许,我会这样做:

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

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

    【讨论】:

      猜你喜欢
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多