Architecture spring批处理与ETL过程

Architecture spring批处理与ETL过程,architecture,spring-batch,etl,Architecture,Spring Batch,Etl,我有一个产品,用户可以通过该产品创建信息,如用户详细信息、员工详细信息等。该产品/web应用程序主要在Spring和hibernate中开发 现在,当我向一家公司销售产品时,他们正在寻找批量加载工具来加载用户和公司 在这种情况下,我可以选择SpringBatch(从未使用过SpringBatch,但听说过它)吗?因为,正如我已经在应用程序中使用Spring一样,我也可以使用相同的编码和业务逻辑实现进行批量加载 或者我应该使用像Pentaho或informatica这样的ETL工具吗?在这种情况下

我有一个产品,用户可以通过该产品创建信息,如用户详细信息、员工详细信息等。该产品/web应用程序主要在Spring和hibernate中开发

现在,当我向一家公司销售产品时,他们正在寻找批量加载工具来加载用户和公司

在这种情况下,我可以选择SpringBatch(从未使用过SpringBatch,但听说过它)吗?因为,正如我已经在应用程序中使用Spring一样,我也可以使用相同的编码和业务逻辑实现进行批量加载

或者我应该使用像Pentaho或informatica这样的ETL工具吗?在这种情况下,我需要复制我的编码和业务逻辑实现来使用Pentaho或informatica。若我要改变核心产品中的任何逻辑,那个么我也必须在这里进行

哪一个是好的方法和最好的方法

我的想法是创建一个excel文件,其中包含用户和公司的列表,Spring batch或Pentaho Kettle将以此作为输入,处理数据并将其存储在数据库中,并告诉用户提交了多少条记录、成功了多少条记录和失败了多少条记录


请说明哪种方法是好的,为什么?

我在工作中使用Spring Batch,我没有使用任何ETL工具的经验,因此我倾向于使用它。然而,我认为你基本上回答了你自己的问题

您提到SpringBatch将允许您重用现有的业务逻辑(仅此一点对我来说就足够了),并获取摘要统计信息(Spring默认具有此功能)。我还认为,与专有ETL软件的开发人员相比,寻找、雇佣和培训Java开发人员要容易得多


唯一的缺点是,您可能需要扩展框架才能发挥作用。例如,如果您正在接收JSON,他们目前不支持这两种技术。

我已经尝试了这两种技术,使用pentaho ETL的IMHO将更快,因为您只需拖放步骤并配置输入输出和处理。对于ETL,我相信它比spring batch需要更少的培训。我自己是java开发人员,我曾经使用pentaho Ketter(ETL工具)来满足类似的需求,现在我正在为类似的任务进行spring批处理,在Ketter中花费10分钟,在spring批处理中花费大约几个小时,考虑到我在实施这两种技术时都是新手。

在此处粘贴可能对其他人有帮助的好链接:

Spring批处理不会为您执行解析。您将需要收到 文件、流程、验证等。。还可以查看mule ESB,以了解 在接收到特定位置的文件时自动触发 文件夹/目录

另外,对于ETL,看看Talend,我相信它是开源的,可以 转换各种文件

这是一个相当大的问题,一个我经历了相当长时间的问题 以前讨论过,没有硬性规定。我 不要自称是ETL专家,但我已经熟悉其中一些 ETL空间中的大炮,如Datastage等 同意Java批处理在许多方面类似于ETL (您关于ETL类似于读/处理/写的断言是 合理)我认为它通常用于BI场景。事实上,如果你 看看Jasper站点,它是他们完整BI堆栈的一个组件 许多其他ETL提供者都是相同的。我看到它在数据中被大量使用 仓储场景,它在那里工作得很好。散装运输和 数据的转换是它的亮点。我看到的问题是 当尝试在两者之间应用复杂的业务逻辑时。我不想要 在这里开始任何形式的宗教辩论,这只是我的想法 经验ETL工具就是这样的工具。这几乎可以归结为 在某些方面,打包还是定制,这是一个我不想讨论的问题 我完全不喜欢。但是,如果你有一家全是Java开发人员的公司, 许多业务逻辑已经用Java编写,用于其他应用程序 应用程序样式,如web或集成,非常有意义 在相同的技术中保持批处理应用程序样式。ETL工具 在可用性方面已经取得了长足的进步,但它们仍然是相当不错的 大型和复杂的工具以及学习如何有效地使用它们需要 一些时间。我意识到学习springbatch的时机并不成熟 完全为零,但我认为很容易同意 Java人员在Java框架上的最新速度将比 教他们使用工具,我们倾向于编写代码。成本问题 通常也会出现,因为ETL通常不是免费的。我知道那里 有一些开源实现,一些是Java的,但是我 没有在大规模生产中使用它们的经验 环境,所以我不能评论

这是我在论坛帖子中所愿意做的。我认为ETL 当然是工具箱中的另一个工具,在某些场景中 可能与自定义批处理解决方案重叠。使用哪一个的决定 取决于您的特定场景的许多因素


虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面更改,仅链接的答案可能会无效。我添加了一些文本。请重新考虑否决票!