春季批处理框架

维杰

我无法最终确定Spring Batch框架是否适用于以下要求。我需要专家的意见。

以下是我的要求:

读取多个Oracle表(至少10个表,包括事务表和主表),根据业务规则进行复杂的计算,在事务表中插入/更新/删除记录。

我确定了以下两种设计:

设计#1:

ItemReader:从“关键交易”表中选择符合条件的记录。

ItemProcessor:使用ItemReader检索到的记录中提供的密钥从数据库中获取其他详细信息。(这将需要多个DB事务)进行验证和计算,并将要写入数据库的详细信息作为对象添加到列表中。

ItemWriter:使用CustomItemWriter写入对象中可用的详细信息(插入/更新/删除操作)

通过这种设计,我们可以实现并行处理,但可以增加数据库事务的数量

设计2:

步骤1

ItemReader:使用Composite Item Reader(Group of ItemReaders)来读取所有必需的表。

ItemWriter:将结果集另存为执行上下文中的对象列表(每个表一个列表)

第2步

ItemReader:检索在执行上下文中可用的对象列表,并根据业务处理将它们分组为一个对象列表,以便处理器可以处理它们。

IremProcessor:处理由ItemReader返回的Object的块。进行验证和计算,并将要写入数据库的详细信息作为对象添加到列表中。

ItemWriter:使用CustomItemWriter写入对象中可用的详细信息(插入/更新/删除操作)

通过这种设计,我们可以减少数据库事务的数量,但是我们要延迟处理,直到所有表记录都被检索并存储在执行上下文中为止,也就是说,我们没有使用SpringBatch提供的并行处理

请告知使用SpringBatch上面的方法是否可行,还是我们需要使用常规的Java程序。

Pojo-Guy

好消息是,您的问题描述与spring-batch的一个非常常见的用例匹配。坏消息是,问题描述过于笼统,无法在已提供的注释之外提供有关特定设计的大量有意义的输入。

Spring-batch将类似于JCL和ISPF的功能从大型机世界引入到Java上下文中。

Spring批处理提供了一个用于组织和管理流程边界的框架。对于许多ETL和大数据操作来说,这是很自然的事情,但这并不是编写这些过程的唯一方法。

如果您可以将过程分解为谨慎的步骤,那么春季批处理将是您的理想选择。

Itemreader应该(逻辑上)是一个迭代器,它返回一个对象,该对象表示一个逻辑工作单元(luw)的开始。luw对象由分块器捕获,并组装成您配置的大小的集合,然后传递给处理器。然后,处理器的结果将传递给编写器。在以RDBMS为中心的过程中,提交发生在编写者操作结束时。

无论您需要什么,每个步骤中发生的事情都是100%(普通的Java)。该框架的目的是使您摆脱复杂性,并使您能够解决问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

春季批处理:NotSerializableException

来自分类Dev

春季批处理StoredProcedureItemReader

来自分类Dev

春季批处理步骤失败

来自分类Dev

春季批处理-运行JobLauncher

来自分类Dev

春季批处理步骤不执行

来自分类Dev

春季批处理作业实例已存在

来自分类Dev

春季批处理,记录跳过的记录/行

来自分类Dev

春季批处理步骤执行警报

来自分类Dev

春季批处理,如何删除根标签

来自分类Dev

春季批处理,记录跳过的记录/行

来自分类Dev

春季批处理中的链接步骤

来自分类Dev

春季批处理中子句中的preparestatemnt

来自分类Dev

春季批处理:JobScope在春季3.0.0中不可用

来自分类Dev

春季批处理:一次处理多个记录

来自分类Dev

Spring框架的Http批处理操作

来自分类Dev

在春季批处理中将参数从父作业传递给stepJob?

来自分类Dev

页面大小和提交间隔之间的春季批处理差异

来自分类Dev

春季批处理的阅读器必须是注入的豆吗?

来自分类Dev

春季批处理中的多个项目编写器

来自分类Dev

春季批处理+选择期间休眠写入

来自分类Dev

在春季批处理中引发异常并正常失败

来自分类Dev

在春季批处理中使用分区步骤访问@JobScope bean

来自分类Dev

按春季批处理删除元数据表

来自分类Dev

已在事务中时开始春季批处理作业

来自分类Dev

使用步骤决定者和块时的春季批处理

来自分类Dev

在春季批处理中使用分区步骤访问@JobScope bean

来自分类Dev

春季批处理作业中有多个分区程序

来自分类Dev

Wildfly 8.x中的春季批处理

来自分类Dev

春季批处理+完成一个步骤