首页 > 解决方案 > 在 Kiba ETL 中调用相关管道是否有标准模式?

问题描述

我正在使用 Kiba 开发一个 ETL 管道,该管道导入到我的 Rails 应用程序中的多个相关模型中。例如,我records有很多images. 也可能collections其中包含许多records.

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

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

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

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

谢谢。

标签: kiba-etl

解决方案


Kiba作者在这里!

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

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

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

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

即使您获得了更多使用 Kiba 的经验,这种方法也很有效(这也是我逐渐提取您将在kiba-commonkiba-pro中找到的组件的方式。


推荐阅读