数据整合层 (ETL) 的设计模式

问题描述

我必须使用 asp .net core 设计一个软件,该软件从各种数据源收集数据(如下图所示)。 例如。 DataSource1 和 DataSource2 包括产品数据,如属性。 DataSource 3 包括这些产品的资产。 我想首先我将从每个数据源收集数据,并将它们保存在自己的数据源中,并使用下面定义的实体。 我稍后在翻译或转换数据以使用一个抽象实体时具有优势。

我的问题是哪种模式应该适合这个系统?存储库,管道,...?? 你能告诉我一些伪代码吗?

如果我使用接口但应该有多个数据源实例,那么 DI 怎么办?

enter image description here

解决方法

应该应用一种模式(或一组模式)解决特定问题/复杂性

我认为您在这里需要的模式是Facade
它将解决的问题是,它将为您的客户隐藏“三个数据源”的复杂性
在 Facade 中,您可以将数据合并为一个合理的实体。

此外,您可以使用 Proxy 模式,它可以为“合并”实体提供“缓存”功能,这可以解决您描述的第二种复杂性。

我不确定我是否理解将这些项目持久化到第四个数据存储中的想法,这可能有点矫枉过正——但无论如何,这也可以通过代理类来实现——只是缓存会更持久- 如果您的域“允许”它。

至于存储库(模式) - 好吧,我相信您应用的任何合理的解决方案很可能会隐藏您的数据访问的详细信息,最终将成为存储库的实现强>.
我不会太严格地命名模式并坚持使用书籍或文章中的示例代码。模式是可以根据需要进行调整的高级指南。