数据集成软件和 ESB 有什么区别?

What is the difference between data integration softwares and ESB?

我一直在从事一个项目,该项目从各种第三方数据源收集数据并将其挖掘到我们的数据存储 (DI) 中。为此,我们一直在使用 Pentaho。

我想知道这是否也可以通过 ESB(Camel 或 Mule)完成? 还有哪些 ESB 带来的 DI 没有的特性?

我阅读了很多关于 ESB 和 DI 的文章,但其中 none 能够解决此查询。我还阅读了第三方数据源的 mule 数据连接器。

DI(数据集成而非 'dependency-injection')或 ETL 方法往往是较长的 运行 批处理式作业,以解决将数据从系统 A 移动到系统 B 的解决方案。ESB 或轻量级集成方法通常是将任务分解成更小的部分(数据块,或每个数据项的单个事件)并允许其他系统订阅数据流——通常通过企业消息系统——而不必影响系统A、系统B或现有的代码项目。这也意味着项目计划中没有人为依赖的要求。如果系统 C 出现,他们不一定需要系统 B 团队的资源来访问数据流

在任何给定环境中都有适合的用例。然而,根据我的经验(大 Data/MDM 最佳实践倾向于同意)是,如果您有原始数据流,其他一些系统也会希望在某个时候访问该数据流。如果无需更改现有代码、系统或组织内其他团队即可访问数据流的能力在您的用例中听起来很有用,那么预先为此进行设计并采用 ESB 方法是个好主意。这允许新的感兴趣的消费者进来,而不必重写现有系统使用的流程。 ESB/Lightweight 集成系统倾向于比 DI/ETL 工具更有效地允许该设计模式。

一些随意的想法:

  • ESB 支持 "one bad record problem",允许您将其路由到错误队列以供人工查看,然后重新发布
  • ETL/DI 往往具有直线快乐路径速度优势
  • ETL/DI 一旦您超越了简单的点对点集成用例,就会开始变得复杂
  • 恕我直言:ESB 更擅长支持数据集、服务和数据模型的版本控制。
  • ETL/DI 往往有更成熟的 UI 供非技术用户执行数据映射任务
  • ESB 在支持运行时系统解耦方面非常强大。如果系统 B 出现故障,则数据将排在队列中,直到它恢复正常。不再 运行 阻塞线程或不得不重新启动作业的风险
  • ESB 的上升曲线略高
  • ETL/DI 通常最终会导致 ESB(大多数供应商同时提供 DI 和 ESB 产品)