連載
Oracle独自の“変更通知機能”で同時実行性を向上:.NETユーザー必見! Oracle 10gのお作法(5)(1/3 ページ)
Oracle独自の“変更通知機能”で同時実行性を向上
変更通知機能とは?
最終回となる今回は、Oracleデータベースの独自機能である行レベルの変更通知機能を活用します。データベース変更通知とは、SELECTを行ったオブジェクトの変更情報をイベントとして受け取る機能のことです。イベントはOracleCommandを通じて通知されます。
通常、排他制御を行う場合は以下のような手段が考えられます。
- SELECT時にはロックをかけず、更新時にほかの人が変更していないかチェックし、変更されていた場合はロールバックする
- SELECT時にロックをかけ、あらかじめほかの人が更新できないようにする
前者の場合はデータが変更されていると入力内容が無駄になる可能性があり、後者の場合は同時実行性が低くなるというデメリットがあります。変更通知機能を使うことでロックをかけず、変更された場合は即座にユーザーに通知することで修正の手間を軽減できます(図1)。
図1では行番号(注1)を受け取っていますが、ほかにも以下のような情報を通知可能です。
- 変更されたオブジェクト名
- 変更されたオブジェクトのスキーマ名
- 通知を発生させるデータベース・イベント(挿入、更新、削除など)
注1:行番号(ROWID)の詳細については、オラクル社のドキュメントをご覧ください。
アプリケーションの作成
これまでの連載ではWebアプリケーションを中心に解説してきましたが、今回はWindowsアプリケーションで作成します。なお、Webアプリケーションで変更通知機能を使う場合はConnectionオブジェクトのインスタンスが稼働中に破棄されないよう、ライフサイクルに注意する必要があります。
[ファイル]メニューの[新しいプロジェクト]より[Windowsアプリケーション]を選択します(図2)。
作成したプロジェクトに「Oracle.DataAccess」の参照設定を追加します。これまでと同様、メニューの[プロジェクト]→[参照の追加]から「Oracle.DataAccess」を選択します。
Copyright © ITmedia, Inc. All Rights Reserved.