Kiba ETL中是否有调用相关管道的标准模式



我正在使用Kiba开发ETL管道,该管道将导入我的Rails应用程序中的多个相关模型。例如,我有records,它有许多images。也可能存在包含许多CCD_ 4的CCD_。

我的数据来源多种多样,包括HTTPAPI和CSV文件。我想让管道尽可能模块化和可重用,所以对于每种新类型的源,我只需要创建源,其余的管道定义都是一样的。

给定目标中的多个模型,以及从源获取数据的几个API调用,Kiba中的标准模式是什么?

我可以创建一个管道,其中目的地是"应用程序",并负责所有这些模型,这种感觉是错误的方法,因为目的地将负责跨不同Rails模型保存数据、上传图像等。

我应该创建一个主管道来触发更具体的主管道,传递特定类型的数据(例如,用于导入的图像URL(吗?或者还有比这更好的方法吗?

谢谢。

Kiba作者在这里!

这是自然的&常见的是在数据管道中寻找某种形式的通用性、模块性和可重用性。不过,我想说的是,就像普通代码一样,最初很难弄清楚什么是正确的方法(这在很大程度上取决于您的确切情况(。

这就是为什么我的建议是:

  • 简单开始(针对一项特定工作(
  • 非常重要的是:确保实现端到端的自动化测试(使用webmock或类似的方法来截取API请求并使测试完全隔离,创建从源到目标的1行测试(-这将使以后的重构更加容易
  • 一旦你有了(1个带测试的管道(,你就可以开始实现第二个,重构以提取有趣的模式作为可重用的比特,并从那里迭代

根据您的具体情况,您可能会提取特定的组件,也可能最终提取整个通用作业或通用作业系列等。

即使你在Kiba上有了更多的工作经验,这种方法也能很好地工作(这就是我如何逐渐提取你在Kiba common和Kiba pro中也能找到的组件

最新更新