0

我们正在开发一个应用程序,它需要从表 A 中读取数百万条记录,并将其分组为子组(表 B)和主组(表 C)。我们正在使用 Spring Batch 来做到这一点。问题是记录的分组是基于表 A 中的数据,每个唯一的分组标准会有一个主组,如果它们属于同一个主组,则每 1000 条记录会有一个子组。

所以结构看起来像这样。

Records,Table A-->Subgroup, Table B(对于每1000条记录属于一个唯一的分组条件)-->Master Group, Table C-->(对于一个唯一的分组条件)

如果我在非分区步骤中执行此操作,则概念很好。但是当我对步骤进行分区时,单个分区怎么可能知道计数已达到1000,并且需要创建一个新的子组。?

任何更好的想法来解决这个问题也值得赞赏。

4

1 回答 1

0

我相信分区需要分开批处理作业。

我不会做任何复杂的事情,比如 2-phase-commit 或实现自定义注册表,您可以在其中为每个分区 id 存储一行以及分区包含的行数。

您也可以使用Spring-Batch ItemReaders-ItemWriters在 java 中实现一些全局触发机制。它将存储分区 ID 和计数的映射,当某个计数达到 1000 时,将触发一些全局 java 任务。与在 DB 中实现类似方法相比,这种方法的优势在于性能。

于 2012-12-16T11:43:13.960 回答