0

テーブル A から何百万ものレコードを読み取り、それをサブ グループ (テーブル B) とマスター グループ (テーブル C) としてグループ化する必要があるアプリケーションを開発しています。そのために春のバッチを使用しています。問題は、レコードのグループ化が表 A のデータに基づいており、一意のグループ化基準ごとに 1 つのマスター グループが存在し、同じマスター グループに分類される場合、1000 レコードごとに 1 つのサブ グループが存在することです。

というわけで構造はこんな感じ。

レコード、テーブル A --> サブグループ、テーブル B (1000 レコードごとに一意のグループ化基準に属する) --> マスター グループ、テーブル C --> (一意のグループ化基準)

分割されていないステップで行う場合、コンセプトは問題ありません。しかし、ステップを分割すると、カウントが 1000 に達したこと、および新しいサブグループを作成する必要があることを個々のパーティションがどのように知ることができるでしょうか。?

この問題を解決するためのより良いアイデアも高く評価されます。

4

1 に答える 1

0

パーティショニングはバッチジョブを分離する必要があると思います。

2 フェーズ コミットのような複雑なものや、パーティションに含まれる行数と共にすべてのパーティション ID の行を格納するカスタム レジストリ テーブルの実装には行きません。

また、Spring-Batch ItemReaders-ItemWritersを使用して、Java でグローバル トリガー メカニズムを実装することもできます。パーティション ID とカウントのマップを格納し、一部のカウントが 1000 に達すると、一部のグローバル Java タスクがトリガーされます。DB で同様のものを実装することに対するこの方法の利点は、パフォーマンスです。

于 2012-12-16T11:43:13.960 に答える