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

目次

概要

バッチEXEの実装方式

注意点

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

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

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

トランザクション範囲

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

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

多重化方法

リラン

分散多重処理対応

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

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

バッチ処理のフロー

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

バッチ処理のフロー

参考

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

Windows NT系カーネルでは、

が可能である。

となる。

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

同期実行

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

非同期実行

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

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

データアクセス

大量データ

大凡、下記の選択肢がある。

バッチクエリ作成支援機能

配列バインドの実行方法

配列バインドは、ODP.NETやHiRDBなど、ごく少数のデータ・プロバイダでサポートされている。

また、動的パラメタライズド・クエリ分析ツールも、この「配列バインド」をサポートしている。

性能を考慮した動的パラメタライズド・クエリの連続実行方法

DataSet?DataTable?を使用したバッチ更新方式

概要

これらの機能を活用することで、DataSet?DataTable?を使用したバッチ更新処理は、DataAdapter?の自動生成に頼らずとも容易に開発可能である。また、本フレームワークの

バッチ更新処理(C/S2層)のサンプル プログラムは、 「~ \root\programs\C#\Samples\2CS_sample\DenDaoAndBatUpd_sample」 に配置されているので、これを参考にするとわかり易い。

注意点は、複数ポストバックに跨ってデータ編集を行うため、編集中のDataSet?DataTable?をSessionなどに保持する必要があることである。この場合、サーバ メモリの消費量などに注意が必要である。

補足

※ ただし、マスタメンテなど限られた範囲で、CommandBuilder?は有効。

参考


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