首页 > 解决方案 > 数据整合层 (ETL) 的设计模式

问题描述

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

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

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

在此处输入图像描述

标签: c#asp.net-coredesign-patternsarchitectureconsolidation

解决方案


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

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

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

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

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


推荐阅读