Service 通过数据仓库还是通过消息进行企业集成?

Service 通过数据仓库还是通过消息进行企业集成?,service,architecture,integration,data-warehouse,servicebus,Service,Architecture,Integration,Data Warehouse,Servicebus,想象一个拥有许多应用程序的大型组织。目前,这些应用程序的集成程度不高。有一个新的空企业数据仓库,它将以规范格式存储所有数据。第一步是建立仓库并使用来自应用程序的数据为其种子 我正在寻找以下两种企业集成模式之间的优缺点: 1) 使用集成工具的组合,设置批处理以提取转换数据,并定期将数据加载到仓库中。然后,作为流程的一部分,将数据仓库中的数据集成到所需的应用程序中 2) 使用集成工具的组合,实时或批量检测更改并将其发布到服务总线(标准格式)。然后,对于每个必需的应用程序,订阅消息以集成它们。数据仓库

想象一个拥有许多应用程序的大型组织。目前,这些应用程序的集成程度不高。有一个新的空企业数据仓库,它将以规范格式存储所有数据。第一步是建立仓库并使用来自应用程序的数据为其种子

我正在寻找以下两种企业集成模式之间的优缺点:

1) 使用集成工具的组合,设置批处理以提取转换数据,并定期将数据加载到仓库中。然后,作为流程的一部分,将数据仓库中的数据集成到所需的应用程序中

2) 使用集成工具的组合,实时或批量检测更改并将其发布到服务总线(标准格式)。然后,对于每个必需的应用程序,订阅消息以集成它们。数据仓库是相同消息的另一个订户


提前谢谢。

我想你说的是和。我不知道为什么要在它们之间进行选择,在我目前的项目中,我们将它们结合起来

ETL解决方案实现为负责数据集成(via)管理的层。它是一个单一的入口点,也是 我们所依赖的概念。它能够对其处理的信息执行各种不同复杂性的任务

另一方面,中介作为系统充当多个应用程序之间的“代理”。每当应用程序中发生有趣的事件(例如,创建新信息或完成新事务)时,EAI系统中的集成模块就会收到通知。然后,模块将更改传播到其他相关应用程序


所以,作为底线,我不能给你们两个方面的利弊,因为对我来说,它们是一个很好的解决方案,它们的使用取决于你们的目标、设计等。。但从您的描述来看,我觉得这与我的建议类似。

通过消息进行集成很难正确理解的一个方面是周期性数据集

假设您的数据仓库(DW)中有一个表,其中包含按天分区的数据。如果ETL作业加载了该表,则可以确保加载作业完成后,相应的数据集已完成(除非作业中存在错误)

另一方面,消息传递系统通常不提供及时传递的保证。因此,你可能会在午夜前收到某一天90%的邮件,8%在接下来的一小时内收到,剩下的2%在接下来的6小时内收到(还有一些邮件可能永远不会收到)。在这种情况下,如果您有一个依赖于此数据的作业,您如何知道数据集已准备就绪?在考虑数据集完成时,可以根据先前的经验、SLA或其他一些标准设置任意截止时间(例如,午夜1小时),但按设计将是近似值。您还需要一些方法来检测丢失的数据(由于丢失的消息),并从源重新请求数据

谈论类似的问题

另一个问题是回填。假设您的源发送了一条回溯消息,例如,更正以前发送的属于过去数据集的消息。据推测,该数据集的任何消费者都需要被通知更改并重新计算其结果。然而,如果DW中没有一些额外的逻辑,他们可能不知道它。使用ETL方法,由于作业之间已经存在依赖关系,如果使用回填日期重新运行某个作业,其依赖关系将自动运行,或者至少明确知道某些使用者受到影响

考虑到这些注意事项,消息传递方法有一些巨大的优势:

  • 您的所有系统都将使用统一的方法进行集成
  • 数据的传播时间可能会低得多
  • 您不必修复爆炸性的ETL作业,因为数据量已经超过了它们的扩展能力
  • 您不会因为ETL作业超时而违反SLA