繁体   English   中英

我应该使用哪种模型/模式来处理多个数据源?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM