想象一下,一个拥有许多应用程序的大型组织。这些应用程序目前没有在很大程度上集成在一起。有一个新的空企业数据仓库,它将以规范的格式存储所有数据。第一步是设置仓库,并使用来自应用程序的数据对其进行播种。
我正在寻找以下两种企业集成模式的优缺点:
1)使用集成工具的组合,设置批处理以定期提取、转换和加载数据到仓库中。然后,作为流程的一部分,将数据从仓库集成到所需的应用程序。
2)使用集成工具的组合,实时或批量检测更改,并将其发布到服务总线(以规范格式)。然后,对于每个所需的应用程序,订阅消息以集成它们。数据仓库是相同消息的另一个订阅者。
提前谢谢。
发布于 2015-07-12 14:25:40
通过消息集成很难正确处理的一个方面是定期数据集。
假设您的数据仓库(DW)中有一个表,其中包含按天分区的数据。如果ETL作业加载了该表,则可以确保如果加载作业完成,则相应的dataset也已完成(除非作业中存在错误)。
另一方面,消息传递系统通常不提供及时交付的保证。因此,您可能会在午夜之前收到特定日期的90%的消息,在接下来的一小时内收到8%,在接下来的6小时内收到剩余的2% (少数消息可能永远不会到达)。在这种情况下,如果您有一个依赖于此数据的作业,您如何知道数据集已准备就绪?当您认为数据集是完整的时,您可以根据以前的经验、SLA或一些其他标准设置任意的截止时间(例如午夜过后1小时),但这在设计上是近似值。您还需要一些方法来检测丢失的数据(由于丢失的消息),并从源重新请求它。
This answer谈到了类似的问题。
另一个问题是回填。假设您的源发送了一条回溯的消息,例如,为了更正以前发送的属于某个数据集的消息。据推测,该数据集的任何使用者都需要收到更改通知并重新计算其结果。然而,如果在DW中没有一些额外的逻辑,他们可能不知道它。使用ETL方法时,由于作业之间已经存在依赖关系,因此如果重新运行某个具有回填日期的作业,它的依赖关系将自动运行,或者至少可以明确知道某些使用者受到了影响。
考虑到这些注意事项,消息传递方法有一些很大的优势:
发布于 2014-09-26 15:59:37
我猜你说的是ETL Systems和Mediation (intra-communication) design pattern。我不知道为什么必须在它们之间做出选择,在我目前的项目中,我们将它们结合在一起。
ETL解决方案被实现为负责管理数据集成的层(通过Orchestrator module。它是一个单一的入口点,也是我们依赖的Pipes and filters design pattern概念的一部分。它能够对它所处理的信息执行各种复杂的任务。
另一方面,Mediation as EAI系统充当多个应用程序之间的“代理”。只要应用程序中发生了有趣的事件(例如,创建了新信息或完成了新事务),就会通知EAI系统中的集成模块。然后,该模块将更改传播到其他相关应用程序。
所以作为底线,我不能给你两者的利弊,因为对我来说,它们是一个很好的解决方案,它们的使用取决于你的目标,设计等。但从你的描述来看,在我看来,这与我的建议相似。
https://stackoverflow.com/questions/26049405
复制相似问题