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

Design Pattern for Data Consolidation Layer (ETL)

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

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

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

应应用一个模式(或一组模式)来解决特定的问题problem/complexity

我认为您需要的模式是 Facade
它将解决的问题是它将隐藏您的客户'three data sources'的复杂性
在 Facade 中,您可以将数据合并到一个合理的实体中。

此外,您可以使用 Proxy 模式,它可以为您提供 'merged' 实体的 'cache' 功能,这可以解决您描述的第二个复杂性。

我不确定我是否理解将这些项目保存到第四个数据存储区的想法,这可能有点矫枉过正 - 但无论如何,也可以通过代理 class 来实现 - 就是这样缓存会更永久 - 如果您的域 'allows' 它。

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