アイテムのリストを(DBから)読み取り、アイテムを処理する必要があり、処理したらDBに更新する必要があるという単純な要件があります。
リーダー、プロセッサ、ライターでSpringバッチチャンクを使用することを考えています。私のリーダーはリストから一度に1つのアイテムを返し、それをプロセッサに送信し、処理が終了するとライターに戻り、そこでDBを更新します
これらのメソッドで同期のコストがかかるため、後でマルチスレッド化する可能性があります。
ここで、いくつかの懸念事項が予想されます。
- 処理するアイテムの数は、それ以上になる可能性があります。10,000 またはそれ以上になる場合もあります。
- プロセッサで何らかの論理計算が必要です。したがって、一度に 1 アイテムを処理します。10スレッドでマルチスレッドにしても性能は不明。
- ライターは、その処理されたアイテムの DB 内の結果を更新できます。処理されて準備ができているアイテムが常に 1 つしかないため、バッチ更新を行う方法がわかりません。
このアプローチはこの種のユースケースに適していますか、それとももっと良い方法がありますか? リーダー、プロセッサ、ライターの 1 回の呼び出しで一連のアイテムを処理する別の方法はありますか? もしそうなら、リストから10個のアイテムを抽出してプロセッサに渡すメカニズムを作成する必要がありますか? ライターは各レコードを更新するように見えますが、バッチ更新は、ライターが処理されたアイテムの束を受け取った場合にのみ意味があります。なにか提案を?
パフォーマンスを向上させるために、このデザインにライトを当ててください。
ありがとう、