[英]What pattern should I use to load data from remote sources in Asp.Net apps?
[英]What model/pattern should I use for handling multiple data sources?
作为电子商务系统的一部分,我需要设计和实现各种黑匣子。 这需要接受来自各种内部和外部数据源(即网站,Extranet,yahoo商店,amazon xml feed等)的客户和订单,并插入/更新后端系统。 用于插入/更新客户和订单数据的api可以在网站上正常运行。 现在,我们需要添加处理来自其他数据源的订单的功能。
我一直倾向于提供程序模型(每个数据源一个提供程序),并使用它在调用api实际添加客户和下订单之前将数据标准化到sql server表中。 我还应该考虑其他模型或模式吗? 您以前是否处理过这个问题,如何解决? 我应该看什么资源(文章,书籍,项目等)?
您可能会发现,与尝试解决代码中的问题相比,ETL(Extract-Transform-Load)工具将使您的生活更轻松:
这些是专门为您描述的数据加载工作类型而设计的。
编辑
尽管我仍然坚持认为ETL工具可以最好地满足您的需求,但是如果您坚持在代码中使用ETL工具,则应该考虑将ETL作为一种模式来实现。 原因是ETL是从各种来源加载数据的公认最佳实践。 您应该花一些时间来研究ETL的实现方式。
在基本级别上,您应该具有三层,分别是提取层,转换层和加载层。
提取层应负责从源中检索数据。 这时不必担心数据的形状。 为了保持层清洁,您只应在此处实现“获取”数据的代码。 担心在转换层中对其进行成形。
转换层应负责获取从各种来源提取的数据并将其转换为目标的形状。 ETL工具通过将数据视为管道来非常有效地做到这一点。 这些可以拆分和并行化。 您可能没有时间或资源来执行此操作。 另一种选择是将数据加载到暂存表中(数据的标准化程度较低)。
加载层将转换后的数据(在上述情况下,从登台表中获取)并将其加载到最终目标位置。
这样可以充分分隔各层,以便您可以保护自己免受将来的更改。 但是请记住,您实际上是在开箱即用ETL工具为您做的事情。
如前所述,除非您可以标准化订单最先出现的方式(例如EDI或Web服务),否则ETL可能是可行的方式。
使用ETL工具从源(电子邮件,FTP文件等)转换为SQL Server中的公共管道,然后使用一个单独的过程来处理管道中的未决批处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.