パイプライン並列バッチの仕組み
具体的な例で仕組みを書いてみたいと思います。
- CSVでデータを取得(処理A)
- 必要なデータだけを選択する(処理B)
- データをデータベースへ登録する(処理C)
これをそれぞれ独立したスレッドで動かすことを考えます。
処理AではCSVから1行取り出したら、処理Bへ渡します。これをどんどん繰り返す感じです。
処理Bでは処理Aから受け取ったデータを確認して、登録できるデータだけを処理Cへ渡します。
処理Cでは処理Bから受け取ったデータをどんどんデータベースへ登録します。今のところトランザクションは考えないようにします。
で、この処理ABCのことをステージと呼ぶことにします。
もちろんステージには送受信用のキューが存在しますね。