Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

バッチEXEの実装方式

注意点

バッチ処理の方式を検討する上で以下の点に注意する。

バッチ処理フレームワーク

Spring Batch を参考に方式を参考にして、上記の問題を起こさない、多重化&リラン可能なバッチ処理方式を説明する。
Spring Batchの多重化&リランは、オンライン側を排他で止めておくことが前提で、反復不可、ファントムは発生しない前提とする。

トランザクション範囲

反復不可、ファントムの問題は無い前提のため、トランザクション範囲は、下図の(処理 → Write)の範囲とする。

(コミット インターバル分、データを渡す)
     ↓
Read ────>(処理 ──> Write)
↑           │
└───────────┘loop

多重化方法

リラン

分散多重処理対応

複数のバッチ処理サーバ。

分散多重処理の状態の一元管理には、
別途管理データベースなどの利用が必要になることがあり大掛かりになる。

バッチ処理のフロー

集計処理の場合、DBMSを使用しない場合は、コミットインターバルは不要。

バッチ処理のフロー

オンラインバッチ処理方式

Windows NT系カーネルでは、

が可能である。

となる。

なお、非同期実行を行う場合、連打できてしまうので、
Semaphoreなどを使用して多重実行を防ぐ必要がある。

同期実行

ASP.NETからの同期実行 & セマフォ を使用してバッチの多重度を制御することも可能であるが、
これではオンライン処理が待機によりスレッドを占有してしまい同時実行性が低下する場合がある。

非同期実行

非同期実行では上記問題は発生しないが、場合によっては、
多重度・リトライ、結果通知などの制御・実装が必要となってくる。

多重度・リトライ、結果通知などの制御・実装が必要となる場合、”Open棟梁”の非同期処理サービスを利用できる。


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS