(57)【特許請求の範囲】
【請求項１】
複数の端末がネットワークを介してデータベースと排他制御監視テーブルとに接続され、該データベースでの同じデータを複数の該端末で共有するデータベース処理システムにおいて、
該排他制御監視テーブルを参照して該排他制御監視テーブルに該データに対するキーと管理情報とからなるキー情報を登録するための参照／登録オペレーションで、該排他制御監視テーブルに更新対象データのキー情報を登録しておき、該参照／登録オペレーションが終了した後、該データベースでのデータの更新を行なうための更新オペレーションで、排他制御監視テーブルに登録された該キー情報を確認することにより、該参照／登録オペレーションと該更新オペレーションとの間に他の端末からの更新要求の有無を判定し、登録された該キー情報が該排他制御管理テーブルに保存されているときのみ、該更新対象データの更新処理を完結させることを特徴とする複数オペレーション間の排他制御方法。
【請求項２】
請求項１において、
前記更新オペレーションで、排他制御監視テーブルに保存されているキー情報が前記登録されたキー情報と異なることが確認されたとき、前記参照／登録オペレーションと該更新オペレーションとの処理を取り消し、再度前記参照／登録オペレーションから実行させることにより、前記更新データの更新処理ができるようにしたことを特徴とする複数オペレーション間の排他制御方法。
【請求項３】
請求項１または２において、
前記参照／登録オペレーションでは、データベース参照を無排他で行い、前記更新オペレーションのデータベース更新は前記更新対象データを他の端末による更新を禁止する排他制御対象として行うことにより、データベースアクセス時の排他範囲を最小限としたことを特徴とする複数オペレーション間の排他制御方法。
【請求項４】
請求項１または２において、
前記更新オペレーションのデータベース更新を、前記更新対象データを他の端末による更新を禁止する排他制御対象として行なうことにより、ユーザプログラムからのデータベースへのアクセス順序を制限することなく、データベースアクセス順不一致によるデッドロックを防止することを特徴とする複数オペレーション間の排他制御方法。
【請求項５】
請求項１または２において、
バッチ処理の対象となるデータに対し、該処理対象データ毎に、前記排他制御監視テーブルを該処理対象データのキー情報と管理情報とからなるキー情報の登録状態とし、該処理データの更新に際し、前記排他制御監視管理テーブルに登録情報されている該キー情報を確認することにより、排他の期間を低減し、他の端末での操作と同時実行を可能にしたことを特徴とする排他制御方法。
【請求項６】
請求項１または２において、
前記排他制御管理テーブルは、排他制御管理専用のテーブルとして作成し、前記データベースとは異なる排他制御単位で管理することを特徴とする複数オペレーション間の排他制御方法。
【請求項７】
請求項１または２において、
前記参照／登録オペレーションで前記排他制御監視テーブルに登録した処理対象データのキー情報と管理情報は、前記端末に関連付けて前記更新オペレーションまで一時記憶し、前記排他制御監視テーブルに登録されている情報との比較を行なうことを特徴とする複数オペレーション間の排他制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の端末がデータベースを共有するシステムにおいて、夫々の端末が複数オペレーション操作で、またはバッチ処理でデータベースを更新する場合のデータベースの排他制御方法に係り、特に、排他範囲を最小限とすることによって端末などからの操作性向上およびバッチ処理の性能向上に関する。
【０００２】
【従来の技術】
従来、排他制御方法として、例えば、特開平６−１０３１４３号公報，特開平４−２４８６２８号公報及び特開昭５４−３８７３０号公報に記載のものが知られている。
【０００３】
特開平６−１０３１４３号公報に記載の技術は、データの利用要求に対し、利用宣言ファイルを作成し、その作成完了後一定時間待って作成した利用宣言ファイルが自己の利用要求に対するものであるかを確認させ、自己の利用要求に対するものであるときのみ、データの利用を許可することを特徴とする。
【０００４】
また、特開平４−２４８６２８号公報に記載の技術は、まず、予め定められたファイル名のファイル作成処理を行ない、ファイルが作成できた場合のみ、該当する情報のアクセスを行なうことを特徴とする。
【０００５】
さらに、特開昭５４−３８７３０号公報に記載の技術は、共有すべきファイルエリアを１つとし、処理装置毎にファイルを管理するフラグを持ち、他の処理装置のフラグを確認してフラグを立て、再度他の処理装置のフラグを確認してから、ファイルする２回確認により、ファイルの競合を避けるようにした点を特徴とする。
【０００６】
【発明が解決しようとする課題】
しかしながら、上記特開平６−１０３１４３号公報に記載の技術は、データの利用を中止または終了する場合には、利用宣言ファイルを削除する必要があり、削除されない場合には、他の端末での利用ができないという問題がある。また、複数オペレーションに跨った操作の場合、これらオペレーションが完了するまで他の端末は長時間利用できないという問題がある。さらに、複数ファイルをアクセスする場合には、全てのファイルに対して宣言ファイルを作成する必要があり、利用するファイルが大量である場合には、排他時間が長くなるために、また、デッドロック防止のために、ユーザープログラムからのデータベースアクセス要求順序を統一する必要があり、処理が複雑化するという問題がある。
【０００７】
上記特開平４−２４８６２８号公報や特開昭５４−３８７３０号公報に記載の技術も、前記と同様の問題がある。
【０００８】
本発明の目的は、上記問題を解消するために、１つの端末で人の判断が入ることによる排他時間の長期化や操作中断があっても、排他待ちの発生がなくて他の端末での操作を可能とし、また、排他が発生しても、それによる待ち時間を最小にし、さらに、ユーザプログラムからのデータベースアクセス順序の統一を必要とせずに、デッドロックを防止することができるようにした複数オペレーション間の排他制御方法を提供することにある。
【０００９】
【課題を解決するための手段】
上記目的を達成するために、本発明は、データベースとは別個に設けた排他制御監視テーブルに処理対象のデータのキー情報と管理情報を登録し、データベースとは異なる排他制御単位で排他制御を行なうようにしたものであり、以下の方式で実現する。
【００１０】
データベース更新を前提とするデータベース参照の端末操作（参照／登録オペレーション）の延長で、更新する可能性のある全てのキー情報と管理情報をユーザープログラムが全て排他制御監視テーブル及び端末対応の一時記憶テーブルに登録し、データベース更新操作までこれら情報を引継ぐ。
【００１１】
データベース更新を行なう端末操作（更新オペレーション）の延長で、データベース参照時に登録した排他制御監視テーブルの情報と端末対応の一時記憶テーブルに登録してある情報とを照合し、一致した場合、他の端末によるデータベース更新の操作がなかったものとしてデータベースの更新を行ない、不一致の場合には、他の端末によるデータベース更新があったとして、上記第１のオペレーションから端末操作を再度実行する。
【００１２】
データベース更新後、排他制御監視テーブルに登録したレコード（上記のキー情報と管理情報の記録）を削除し、これにより、データベースの更新がなされた状態とする。
【００１３】
【発明の実施の形態】
以下、本発明の実施形態を図面を用いて説明する。
【００１４】
図１は本発明を用いたシステムの概略構成を示す構成図であって、１ａ，１ｂ，……はＤＢ（データベース）、２ａ，２ｂ，……は端末、３は排他制御監視テーブル、４は一時記憶排他制御監視テーブル退避部、５はネットワークである。
【００１５】
同図において、複数のＤＢ１ａ，１ｂ，……（なお、これらを総称してＤＢ１という）や複数の端末２ａ，２ｂ，……（なお、これらを総称して端末２という）が共通のネットワーク５を介して接続され、夫々の端末２ａ，２ｂ，……がＤＢ１ａ，１ｂ，……の全てを共有している。端末２ａ，２ｂ，……のいずれかがＤＢ１ａ，１ｂ，……のいずれかのデータを更新（追加，変更，削除など）する場合には（これを、以下、「データベース更新」という）、このデータを排他制御対象として、排他制御がなされ、そのとき、他の端末がこの同じデータを更新しようとしても、これを禁止する。
【００１６】
ここで、これらＤＢ１では、データ毎に異なるキーが設定されており、このキーを用いることによってＤＢ１でのデータが指定され、これによってこのデータの更新（これをＤＢの更新という）が可能となるが、かかるＤＢの更新を行なうためには、更新を希望するデータ（更新対象データ）に対するキーが排他制御監視テーブル３に登録されていなければならない。従って、或る端末２が所望のデータを更新したいときに、これに対するキーが排他制御監視テーブル３に登録されていないときには、この端末２がこのキーと管理情報とを排他制御管理テーブル３に登録する。この管理情報は登録日時などを表わす情報であって、後述するように、排他制御監視テーブル３に登録されているキーが更新されたものであるか否かを判断するために用いられる。
【００１７】
また、同じデータを他の端末２で更新する場合も、この更新対象データに対する同じキーが使用される。従って、或る端末２が所望のデータを更新したいときに、これに対するキーが他の端末２によって既に排他制御監視テーブル３に登録されているときには、これをもってこの端末２はこのキーに対するデータの更新が可能となる。
【００１８】
さらに、端末２は、更新対象データを更新し終わると、排他制御管理テーブル３に登録されているこのデータに対するキーや管理情報をキャンセル（削除する）。これにより、同じデータを更新したい端末２が複数個ある場合、最初にこのデータを更新した端末２（例えば、端末２ａ）が排他制御管理テーブル３に登録されているキーをキャンセルする（なお、この端末２ａがこのデータの更新を行なっている期間、この端末２ａによって排他制御が行なわれているため、他の端末２、例えば、端末２ｂはこの同じデータの更新を行なうことができない）。このため、他の端末２ｂは、この同じデータを更新するためには、排他制御管理テーブル３に再度同じキーと管理情報とを登録する必要がある。
【００１９】
各端末２は、所望データの更新を行なう場合、上記のように、この更新対象データに対するキーが排他制御管理テーブル３に登録されているか否かの確認を行なうが、これを、以下、「データベース参照」という。このデータベース参照では、端末２が、排他制御管理テーブル３で確認したキーと管理情報とを一時記憶するが、この記憶のために、一時記憶排他制御管理テーブル退避部４を有している。この一時記憶排他制御管理テーブル退避部４に一時記憶されたキーと管理情報とは、データベース更新のときに使用される。なお、以下では、かかる一時記憶排他制御管理テーブル退避部４は、夫々の端末２が有するようにする。
【００２０】
図２は図１に示すシステムに用いる本発明による複数オペレーション間の排他制御方法の一実施形態を概略的に示す図であって、図１に対応する部分には同一符号をつけている。
ここでは、２つの端末２ａ，２ｂで、同じデータ（更新対象データ）に対し、データベースのデータ更新のオペレーションが行なわれるものとして説明する。
【００２１】
図２において、ＤＢ１（図１）で所望データの更新（ＤＢ更新）を行なうためには、このＤＢ更新を行なう端末２において、排他制御管理テーブル３を参照して対応するキーや管理情報の登録状態とする第１のオペレーション（これを、以下、参照／登録オペレーションという）と排他制御管理テーブル３が対応するキーや管理情報の登録状態にあることを確認してデータの更新を行なう第２のオペレーション（これを、以下、更新オペレーションという）が行なわれる。
【００２２】
端末２ａにおいては、オペレーション２００ａがオペレータ操作１０１による参照／登録オペレーションであり、オペレーション２００ｂがオペレータ操作１０２に伴う更新オペレーションである。同様にして、端末２ｂにおいても、オペレーション３００ａがオペレータ操作１０４に伴う参照／登録オペレーションであり、オペレーション３００ｂがオペレータ操作１０５に伴う更新オペレーションである。なお、オペレータ操作１０３，１０６は、後述するようにしてＤＢ更新ができなかった場合の操作である。
【００２３】
いま、端末２ａにおいて、ＤＢ更新を行なう場合には、まず、オペレータ操作１０１が行なわれると、この端末２ａと排他制御管理テーブル３との間で情報のやり取りを行なう参照／登録オペレーション２００ａが行なわれる。この参照／登録オペレーション２００ａは、端末２ａで入力した更新対象データのキーが排他制御管理テーブル３に登録するための処理であって、入力されたキー毎にこの処理が行なわれ、排他制御管理テーブル３から登録されている更新対象データ毎のキーと管理情報（以下、これらをまとめてキー情報という）１１，１２を読み取って一時記憶排他制御管理テーブル退避部４に一時記憶するものである。なお、ここでは、更新対象データが２つあり、夫々に対応するキー情報１１，１２が排他制御管理テーブル３に登録されたものとしている。端末２ａでは、一時記憶排他制御管理テーブル退避部４にこれらキー情報１１，１２が一時記憶される。
【００２４】
なお、この参照／登録オペレーション２００ａでは、キー情報１１，１２を排他制御管理テーブル３に登録するときだけ、排他制御が掛かり、他の端末２は排他制御管理テーブル３にアクセスすることができない。
【００２５】
以上のオペレータ操作１０１による参照／登録オペレーション２００ａが終了し、次のオペレータ操作１０２が行なわれると、同様にして、この端末２ａと排他制御管理テーブル３との間で情報のやり取りとデータの更新のための更新オペレーション２００ｂが行なわれる。この更新オペレーション２００ｂは、このオペレータ操作１０２が行なわれたときに、一時記憶排他制御管理テーブル退避部４に一時記憶したキー情報１１，１２と同じものが排他制御管理テーブル３に登録されているか否かを確認し、登録されていれば、上記の更新対象データの更新を行なうものであり、登録されていなければ、あるいはまた、この更新オペレーションが行なわれる前に他の端末によって同じキー情報が排他制御管理テーブル３に登録されている（これを割込みというが、この場合、キーは同じであるが、管理情報が異なる）場合には、ＤＢ更新を行なうことができず、オペレータ操作１０３を行なうことにより、再度参照／登録オペレーション２００ａを行なうことができるようにになる（これを、以下、エラーリターンという）。端末２ａは、所望データの更新を終了すると、これに対応するキー情報１１，１２を排他制御管理テーブル３から削除する。
【００２６】
なお、このオペレータ操作１０２があってから更新オペレーション２００ｂが終了する（即ち、データの更新が終了して排他制御管理テーブル３から対応するキー情報１１，１２を削除する、あるいは排他制御管理テーブル３に対応するキー情報１１，１２がないという確認が得られる）までは、この端末２ａによって排他制御がなされ、この間他の端末２は排他制御管理テーブル３をアクセスすることができず、ＤＢ更新（キー情報の登録やデータの更新）をすることができない。
【００２７】
他の端末２ｂについても同様であり、ＤＢ更新をする場合には、まず、オペレータ操作１０４が行なわれることにより、端末２ａでの参照／登録オペレーション２００ａと同様の参照／登録オペレーション３００ａが行なわれ、排他制御管理テーブル３に登録されているキー情報１１，１２を一時記憶排他制御管理テーブル退避部４に一時記憶する。そして、オペレータ操作１０５が行なわれると、排他制御が掛かって端末２ａでの更新オペレーション２００ｂと同様の更新オペレーション３００ｂが行なわれ、データの更新，排他制御管理テーブル３でのキー情報の削除、あるいはエラーリターンが行なわれる。
【００２８】
次に、まず、端末２ａでオペレータ操作１０１が行なわれ、これによる参照／登録オペレーション２００ａの終了後ＤＢ更新のオペレーションが中断し、その後オペレータ操作１０２が行なわれるが、この端末２ａでのＤＢ更新のオペレーションの中断期間内に端末２ｂでＤＢ更新のオペレータ操作１０４，１０５が行なわれるものとして、図３により、この実施形態をさらに具体的に説明する。なお、図３では、図２に対応する部分に同一符号をつけている。
【００２９】
同図において、端末２でカード（図示せず）を装着し、オペレータ操作１０１を行なうと、図２で説明したように、参照／登録オペレーション２００ａが行なわれる。ここで、一例として、このカードを社会保険証とすると、図４（ａ）に示すように、本人の年金番号Ａとその家族の番号Ｂ，Ｃ，……が記憶されているものとし、かかる年金番号Ａや家族番号Ｂ，Ｃ，……が上記のキーとして用いられるものとする。一方、ＤＢ１（図１）には、かかるキーに対して夫々本人や家族に関するデータが格納されているが、その一例として、図４（ｂ）に示すように、ＤＢ１として、本人やその家族の職歴のデータがキー毎に区分して格納される職歴ＤＢ，同じく住所に関するデータがキー毎に区分されて格納される住所ＤＢ，同じく年金の支払い履歴のデータがキー毎に区分されて格納される支払いＤＢなどが設けられている。このように、ＤＢ１では、同じ個人のデータがこの個人に対するキーが付加されて格納されており、このキーを用いることにより、このキーに対応した個人の全てのデータに対して更新が可能となる。ここでは、かかる社会保険のデータの更新を例にして説明するものであるが、勿論この例のみに限るものではない。
【００３０】
上記のように、端末２ａに社会保険証が装着されてＤＢ更新のためのオペレータ操作１０１が行なわれると、この社会保険証からキー（即ち、図４（ａ）に示す年金番号Ａや家族番号Ｂ，Ｃ，……）が読み取られ（但し、ここでは、説明の都合上、社会保険証には年金番号Ａと家族番号Ｂとの２つのキー（以下、夫々をキーＡ，Ｂという）が格納されており、これらが端末２ａに読み取られるものとする）、参照／登録オペレーション２００ａとして、まず、排他制御監視テーブル３の参照（ステップ２０１）が行なわれる。これは、図５に示すように排他制御監視テーブル３に格納されているキー情報を読み取り、社会保険証から読み取った最初のキー（例えば、図４（ａ）に示す年金番号Ａ）と照合するものである。このキーＡを含むキー情報１１が排他制御監視テーブル３に格納されていることが確認されると（即ち、「当該レコードがある」：ステップ２０２）、次のデータベース参照（即ち、ＤＢ更新のための排他制御監視テーブル３の参照）を行なう必要があるキーがあるか否かの確認し（ステップ２０４）、この場合、家族番号Ｂ（図４（ａ））としてのキーＢが読み取られているので、このキーＢについて、同様の排他制御監視テーブル３の参照（ステップ２０５）が行なわれる。また、キーＡのキー情報１１が排他制御監視テーブル３に格納されていないことが確認されたときには（即ち、「当該レコードがない」：ステップ２０２）、端末２ａはこのキー情報１１を排他制御管理テーブル３に登録し（ステップ２０３）、次のステップ２０４に進む。
【００３１】
ステップ２０４で次のキーＢがあることが認識されるので、このキーＢについてステップ２０１と同様の排他制御管理テーブル３の参照を行ない（ステップ２０５）、このキーＢを含むキー情報１２が排他制御管理テーブル３に登録されていなければ（即ち、「当該レコードがない」：ステップ２０６）、このキー情報１２を排他制御管理テーブル３に登録（ステップ２０７）してから、また、このキー情報１２が排他制御管理テーブル３に登録されていれば（即ち、「当該レコードがある」：ステップ２０６）、直ちに、入力されたキーがもうないことを確認して（ステップ２０８）、排他制御管理テーブル３に登録された上記のキー情報１１，１２を、一時記憶排他制御監視テーブル退避部４に一時記憶する（ステップ２０９）。図６はこの一時記憶排他制御監視テーブル退避部４での記憶状態を摸式的に示したものである。
【００３２】
以上のようにして、オペレータ操作１０１に対する参照／登録オペレーション２００ａが完了し、排他制御監視テーブル３と端末２ａの一時記憶排他制御監視テーブル退避部４とに同じキー情報１１，１２が登録されることになる。
【００３３】
ここで、端末２ａで参照／登録オペレーション２００ａの完了後、直ちに所定のオペレータ操作１０２がなされると、次の更新オペレーション２００ｂが実行される。この更新オペレーション２００ｂでは、まず、排他制御管理テーブル３の参照が行なわれ（ステップ２１０）、この排他制御管理テーブル３に参照／登録オペレーション２００ａで登録したキー情報１１，１２がそのまま保持されているか否かの確認が行なわれる（ステップ２１１，２１２）。ここで、他の端末２による同じキーＡ，Ｂに対するＤＢ更新がないものとすると、後述するように、排他制御管理テーブル３にキー情報１１，１２がそのまま保持されており、従って、これらキー情報１１，１２が存在し（即ち、「当該レコードがある」：ステップ２１１）、かつ後述する割込みが発生していない（ステップ２１２）として、これらキーＡの昇順（即ち、連勤番号Ａや家族番号Ｂの番号順）に、キーＡ，Ｂに対するデータの更新（変更，削除，追加など）がＤＢ１（図１）で行なう（ステップ２１３）。この更新が終了すると、排他制御管理テーブル３の対象となったキー情報１１，１２の削除を行なう（ステップ２１４）とともに、一時記憶排他制御管理テーブル退避部４に一時記憶したキー情報１１，１２を削除し、排他制御を解除してＤＢ更新を終了する。
【００３４】
このようにして、ＤＢ１でキーＡ，Ｂに対するデータの更新を行なう場合、排他制御を掛けて行なうので、他の端末２はこのキーＡ，Ｂに関するデータについてＤＢ１にアクセスすることができない。このため、当該端末２ａでは、このキーＡ，Ｂのユーザプログラムによる順序を配慮することなく、ＤＢ１でのデータ更新を一括して行なうことができる。このような排他が掛けられない場合には、当該端末２ａでキーＡ，Ｂのユーザプログラムによる順序を配慮することなくデータ更新を行なうと、他の端末２がＤＢ更新のためにアクセスするデータと同じデータをアクセスする場合もあり、いわゆるデットロックが生じて処理が進まなくなる。しかし、この実施形態では、上記のことから、かかるデットロックを防止することもできる。
【００３５】
ここで、ＤＢ１でのデータが、図４（ｂ）に示すように、社会保険証の本人や家族の職歴や住所，年金支払い履歴（支払い金も含む）などの複数の項目からなる場合、ステップ２１３でのかかるデータの更新では、更新対象のキーに対する全てのデータがＤＢから読み取られるが、これら項目のいずれかまたは全部のデータを更新できるものであることはいうまでもない。
【００３６】
一方、端末２ａでオペレータ操作１０１が行なわれて参照／登録オペレーション２００ａの終了後、図７（ａ）に示すように、ＤＢ更新のための処理動作が中断し、この間に端末２ｂでオペレータ操作１０４によって上記と同じキーＡ，ＢについてのＤＢ更新が開始された場合には、この端末２ｂでも、オペレータ操作１０４とともに、参照／登録オペレーション３００ａが行なわれる。この参照／登録オペレーション３００ａは端末２ａでの上記の参照／登録オペレーション２００ａと同様である。なお、図７（ａ）では、図３に対応する部分には同一符号をつけている。
【００３７】
端末２ａは、かかる参照／登録オペレーション２００ａの実行中、キー情報１１，１２を排他制御管理テーブル３に登録する（ステップ２０３，２０７）とき以外のときには、及び端末２ａの動作中断期間では、端末２ａは排他制御を掛けていないので、他の端末２もこの排他制御管理テーブル３にアクセスすることができる。そこで、端末２ａの動作の中断期間に端末２ｂで行なうＤＢ更新が端末２ａで上記のように行なったＤＢ更新と同じデータ（年金番号Ａと家族番号Ｂに対するデータ）に対するものであるときには、端末２ｂにおいては、オペレータ操作１０４で、端末２ａと同様、キーＡ，Ｂが入力されることになる。そして、参照／登録オペレーション３００ａで排他制御管理テーブル３の参照を行なうのであるが（ステップ３０１）、このとき、既に端末２ａによって排他制御管理テーブル３にこれらキーＡ，Ｂに対するキー情報１１，１２が登録されているので（ステップ３０２，３０６）、キーＡ，Ｂ以外にキーが入力されていないことを確認されてから（ステップ３０８）、これらキー情報１１，１２が端末２ｂの一時記憶排他制御管理テーブル退避部４に一時記憶されることになる（ステップ３０９）。
【００３８】
このようにして、端末２ｂにおいても、参照／登録オペレーション３００ａが完了して一時記憶排他制御管理テーブル退避部４に排他制御管理テーブル３に登録されているのと同じキー情報１１，１２が一時記憶されていることになる。
【００３９】
そして、この参照／登録オペレーション３００ａの終了後直ちにオペレータ操作１０５が行なわれ、このときも、まだ、端末２ａが動作中断の状態にあるとすると、端末２ｂでは、これが排他制御を掛けて、このオペレータ操作１０５に伴う更新オペレーション３００ｂが行なわれる。
【００４０】
この更新オペレーション３００ｂでは、まず、参照／登録オペレーション３００ａでのステップ３０１と同様の排他制御管理テーブル３の参照（ステップ３１０）が行なわれ、排他制御管理テーブル３に上記と同じキー情報１１，１２が保存されているかどうかの確認（ステップ３１１）と他の端末２による割込みがなされたか否かの判定（ステップ３１２）が行なわれる。この場合のステップ３１１の確認は、排他制御管理テーブル３から読み取ったキー情報１１，１２のキーＡ，Ｂと先に一時記憶排他制御監視テーブル退避部４に一時記憶したキー情報１１，１２のキーＡ，Ｂと対比することによって行なわれる。また、割込みの有無の確認（ステップ３１２）は、排他制御管理テーブル３から読み取ったキー情報の管理情報の内容を基に行なう。管理情報としては、キー情報を排他制御管理テーブル３に登録した日時の情報を含むものであり、他の端末２によって同じキーを用いた割込みがある場合には、管理情報が異なることになる。この点については、後述する。
【００４１】
排他制御管理テーブル３中に同じキー情報１１，１２が保存され（即ち、「当該レコードがある」：ステップ３１１）、かつかかる割込みがないときには（ステップ３１２）、更新対象データ（即ち、キーＡ，Ｂに対するデータ）を更新し（ステップ３１３）、しかる後、排他制御管理テーブル３での使用したキー情報１１，１２を削除する（ステップ３１４）。これとともに、排他制御が解除される。
【００４２】
このようにして、端末２ａのＤＢ更新の動作が中断しているときには、このＤＢ更新の更新対象データのキーに対して排他制御が掛けられていないので、これと同じキーの更新対象データに対して、他の端末２ｂがＤＢ更新を行なうことができる。当該端末２でＤＢ更新を行なう場合、従来では、その最初のオペレータ操作からＤＢ更新が終了するまで排他制御が掛けられるものであるから、このＤＢ更新が終了するまで、他の端末２では、同じキーに対してＤＢ更新をすることができず、当該端末２のＤＢ更新が中断していつまでも再起動しないときには、他の端末２でＤＢ更新をすることができなかったが、この実施形態では、他の端末でＤＢ更新を行なうことができる。
【００４３】
また、端末２ａのＤＢ更新の動作の中断が、このＤＢ更新以外の操作をするためであってもよい。即ち、端末２ａにおいて、オペレータ操作１０１の後、キーＡ，Ｂに対するＤＢ更新以外の操作が必要となった場合、その操作を行なっても、ＤＢ更新の動作が中断するだけで、参照／登録オペレーション２００ａの結果がそのまま保持されており、その後、ＤＢ更新のためのオペレータ操作１０２が行なわれると、更新オペレーション２００ｂが実行できることになる。
【００４４】
端末２ｂでオペレータ操作１０５が行なわれた後に、端末２ａでオペレータ操作１０２が行なわれて動作の中断が解除しても、端末２ｂによってキーＡ，Ｂに対して排他制御が掛けられているので、端末２ａは、このオペレータ操作１０２に伴う更新オペレーション２００ｂを実行することができず、端末２ｂが更新オペレーション３００ｂを終了するまで待機する。
【００４５】
その後、端末２ｂが更新オペレーション３００ｂを終了して排他制御を解除すると、端末２ａは更新オペレーション２００ｂを開始する。この更新オペレーション２００ｂでは、更新オペレーション３００ｂと同様に、まず、排他制御が掛けられて排他制御管理テーブル３の参照を行なうが（ステップ２１０）、このとき、端末２ｂの更新オペレーション３００ｂでのステップ３１４により、排他制御管理テーブル３でキー情報１１，１２が削除されているので、ステップ２０９で一時記憶排他制御管理テーブル退避部４に記憶されたキーＡ，Ｂが排他制御管理テーブル３に存在しない（即ち、「当該レコードがない」：ステップ２１１）と判定され、排他制御が解除されてオペレーション２００ａ，２００ｂの処理結果が全て無効となり、エラーリターンとしてユーザに通知される（ステップ２１５）。このときには、オペレータ操作１０３を行なうことにより、オペレータ操作１０１からのＤＢ更新が再度できるようになる。
【００４６】
このようにして、端末２ａでＤＢ更新の動作を中断しているときに、他の端末２ｂで同じ更新データに対してＤＢ更新を行なった場合には、この端末２ｂによって端末２ａが排他制御管理テーブル３に登録したキー情報が削除されるので、端末２ａはＤＢ更新の操作を最初から、即ち、オペレータ操作１０１から再度やり直させばよい。上記のデッドロックも防止できる。
【００４７】
なお、以上の例では、端末２ｂのＤＢ更新によって排他制御管理テーブル３でキー情報１１，１２が全て削除されたものとしたが、端末２ｂとしては、キーＡ，Ｂのうちいずれか１つ、例えば、キーＡについてＤＢ更新を行なう場合もある。この場合には、更新オペレーション３００ｂでのステップ３１４でキー情報１１のみが排他制御管理テーブル３から削除されることになるが、この場合でも、端末２ａは、排他制御管理テーブル３に登録したものがキー情報１１，１２であるから、更新オペレーション２００ｂにおいて、排他制御管理テーブル３からこれらキー情報１１，１２が参照されない限り、「当該レコードがない」と判定されて（ステップ２１１）、エラーリターンする（ステップ２１５）ことになる。
【００４８】
また、端末２ａにおいて、オペレータ操作１０１に対する参照／登録オペレーション２００ａの終了後、直ちにオペレータ操作１０２が行なわれた場合には、端末２ａによって排他制御が掛けられて更新オペレーション２００ｂが行なわれることになるから、他の端末２ｂでは、端末２ａでの更新オペレーション２００ｂが終了するまで、同じデータに対するＤＢ更新を行なうことができない。従って、端末２ａ，２ｂのオペレーションの時間関係が上記とは逆になっている場合には、端末２ｂでの更新オペレーション３００ｂにおいて、当該レコードがないことになるので（ステップ３１１）、エラーリターン（ステップ３１５）が行なわれる。
【００４９】
図３は端末２ａで参照／登録オペレーションの後次のオペレータ操作を中断している期間内に他の端末２ｂでＤＢ更新が行なわれた場合を示すものであったが、図８は、図７（ｂ）に示すように、端末２ａでの上記中断期間中に、他の端末２ｂのＤＢ更新に続いてさらに他の端末２ｃのＤＢ更新が開始された場合を示すものである。この端末２ｃのＤＢ更新が、端末２ａに対して、後述するようにキー情報が変更されているので、割込みとなる。
【００５０】
また、図８では、端末２ａについては、オペレータ操作１０２とこれに伴う更新オペレーション２００ｂのみを示し、また、この端末２ａの動作の中断期間中に図３に示した端末２ｂのＤＢ更新に続いて端末２ｃが実行するＤＢ更新を示して、端末２ｂについては省略している。また、端末２ｃのＤＢ更新のオペレーション４００ａ，４００ｂも、先に説明した端末２ａ，２ｂと同様のプログラムで実行されるものであるから、これらと重複する説明は省略する。
【００５１】
図８において、端末２ｃで上記の更新対象データについてのＤＢ更新のためのキーＡ，Ｂの入力を伴うオペレータ操作１０７がなされた時点では、端末２ｂの図３に示したＤＢ更新により、排他制御管理テーブル３では、これらキーＡ，Ｂのキー情報１１，１２が削除されている。このために、このオペレータ操作１０７に伴う参照／登録オペレーション４００ａにおいては、排他制御監視テーブル３を参照しても（ステップ４０１）、キーＡ，Ｂを含むキー情報がないので（即ち、「当該レコードがない」：ステップ４０２，４０６）、これらキーＡ，Ｂを含むキー情報１３，１４を排他制御監視テーブル３に登録し（ステップ４０３，４０７）、さらに入力されたキーがないことを確認してから（ステップ４０８）、これらキー情報１３，１４を、図６に示したように、一時記憶排他制御監視データ退避部４に一時記憶する。勿論、この場合のキー情報１３，１４は、その管理情報が表わす日時がこのキー情報１３，１４の登録日時であるから、端末２ａが参照／登録オペレータ２００ａ（図３）で排他制御監視テーブル３に登録したキー情報１１，１２の管理情報の日時と異なる。
【００５２】
このように端末２ｃによって排他制御監視テーブル３にキー情報１３，１４が登録されてから直ちにオペレータ操作１０８が行なわれると、端末２ｃで上記と同様の更新オペレーション４００ｂが排他制御が掛けられて実行されるが、端末２ｃによって排他制御監視テーブル３にキー情報１３，１４が登録されてからこの端末２ｃでオペレータ操作１０８が行なわれるまでは、この端末２ｃによって排他制御が掛けられていないので、その間に端末２ａでオペレータ操作１０２が行なわれると排他制御が掛けられて更新オペレーション２００ｂが実行される。この更新オペレーション２００ｂでは、上記のように、まず、排他制御管理テーブル３の参照が行なわれ（ステップ２１０）、この排他制御管理テーブル３から取り込んだキー情報１３，１４を一時記憶排他制御監視テーブル退避部４に記憶されているキー情報１１，１２と対比する。この場合、キー情報１３，１４のキーＡ，Ｂはキー情報１１，１２のキーＡ，Ｂと一致するが（即ち、「当該レコードがある」：ステップ２１１）、キー情報１３，１４とキー情報１１，１２とでの管理情報（日時）が異なるために、割込みが発生したと判定し（ステップ２１２）、排他制御が解除されてオペレーション２００ａ，２００ｂの処理結果が全て削除され、エラーリターンとしてユーザに通知される（ステップ２１５）。ユーザはオペレータ操作１０３を行なうことにより、オペレータ操作１０１からのＤＢ更新が再度できるようになる。
【００５３】
一方、端末２ａでのかかる更新オペレーション２００ｂが終了して排他制御が解除されるまで、端末２ｃは、例えオペレータ操作１０８が行なわれても、待機状態にある。そして、この排他制御が解除されると、端末２ｃは排他制御を掛けて更新オペレーション４００ｂを実行する。この更新オペレーション４００ｂは他の端末２ａ，２ｂでの更新オペレーション２００ｂ，３００ｂと同様であり、キー情報１３，１４について更新対象データの更新が行なわれ（ステップ４１３）、排他制御管理テーブル３でのキー情報１３，１４の削除が行なわれ（ステツプ４１４）、さらに、排他制御が解除されてＤＢ更新が完了する。
【００５４】
なお、以上の例では、端末２ｃのＤＢ更新で排他制御管理テーブル３にキーＡ，Ｂを含むキー情報１３，１４が登録されたものとしたが、端末２ｃとしては、キーＡ，Ｂのうちいずれか１つ、例えば、キーＡについてのみＤＢ更新を行なうために、これを含むキー情報１３のみが排他制御管理テーブル３に登録される場合もある。しかし、この場合でも、端末２ａでの更新オペレーション２００ｂにおいて、上記と同様であり、このキー情報１３自体が先のキー情報１１と管理情報（日時）について異なるため、割込み発生あり（ステップ２１２）としてエラーリターンする（ステップ２１５）ことになる。排他制御管理テーブル３から読み込んだキー情報を一括してステップ２１１の処理を行ない、次いで、ステップ２１２の処理を行なうようにする場合には、キーＢを含むキー情報１４からないために、「当該レコードがない」と判定し（ステップ２１１）、エラーリターンする（ステップ２１５）ようにしてもよい。
【００５５】
以上のように、この実施形態では、ＤＢ更新をする際、排他制御管理テーブル３へのキー情報の登録や更新オペレーションの実行のみに排他制御が掛けられ、排他制御が掛けられる範囲を必要最小限度にするものであるから、他の端末のＤＢ更新の制約が緩和されることになるし、デッドロックも防止できる。ＤＢ更新オペレーションの進行中、他の操作が必要となった場合、このＤＢ更新の動作を中断して他の操作をすることになるが、この中断中は排他制御が解除されているので、他の端末が同じＤＢ更新を行なうことができることになる。
【００５６】
また、ＤＢ更新が終了すると、排他制御管理テーブル３に登録されているキー情報を削除するようにしているが、これは、不要な情報が排他制御管理テーブル３に残ることを避けてその容量を有効に使用することができるようにするためであり、また、参照／登録オペレーション２００ａ，３００ａ，４００ａにおいて、排他制御管理テーブル３に所望とするキー情報が既に登録されていれば、新たにこのキー情報を登録することなく、この登録されているキー情報を使用するのは、同じキーのキー情報が重複して排他制御管理テーブル３に登録されないようにするためである。このため、自端末でキー情報を排他制御管理テーブル３に登録しても、自端末でのＤＢ更新の中断中、他の端末でこのキー情報が使用されれば、もはやこのキー情報は他の端末のものとなり、従って、自端末は、再度キー情報を排他制御管理テーブル３に登録した状態としなければ、ＤＢ更新を行なうことができないのである。
【００５７】
なお、見るだけのためにＤＢ１からデータを読み出す場合には、上記のようなオペレーションは不要であり、直接ＤＢにアクセスできるものである。
【００５８】
また、図３，図８で説明した動作において、排他制御管理テーブル３にキーＡ，Ｂ以外のキーを含むキー情報が登録されても、これはキーＡ，Ｂを含むキー情報を対象とする端末２ａ〜２ｃには全く関係のないものである。
【００５９】
図９は本発明による複数オペレーション間の排他制御方法の他の実施形態を示す図である。
【００６０】
この実施形態は、バッチ形態に対するものであって、バッチ形態のデータ群の処理をバッチ処理のＢＭＰ（Batch Massege processing Program）からデータの入力毎に処理を実行するＭＰＰ（Message Processing Program）に移し、１処理単位毎に処理するデータを振り分けるものである。なお、この実施形態を用いるシステム構成も、図１に示す構成と同様である。
【００６１】
図９において、図示しないが、バッチ処理の対象となる複数のデータからなるデータ群があって、夫々のデータを処理順にデータ１，データ２，データ３，……とする。これらデータは、先に説明した実施形態でのデータと同様、キーが異なる１以上のデータからなっているものとする。従って、例えば、更新対象データを社会保険証のデータとすると、夫々のデータ１，データ２，データ３，……は複数の個人のデータであって、この実施形態はこれらをバッチ処理するものであり、夫々のデータ１，データ２，データ３，……は、図４（ａ）にしたように、本人の年金番号Ａや家族番号Ｂ，Ｃ，……といったキー番号を持つことになる。
【００６２】
そこで、いま、図示しないセンタからの指示によってＢＭＰ５０１が起動してデータ１，データ２，データ３，……のバッチ処理が開始すると、まず、ＭＰＰが最初のデータ１を受け取り、図示するステップ２０１〜２１４、またはステップ２０１〜２１１，２１２，２１６からなるオペレーションが実行される。
【００６３】
ここで、ステップ２０１〜ステップ２０９のオペレーションは先の実施形態での参照／登録オペレーション２００ａ，３００ａ，４００ａと同様であれ、また、ステップ２１０〜ステップ２１４のオペレーションは同じく更新オペレーション２００ｂ，３００ｂ，４００ｂと同様である。この実施形態では、各データ１，データ２，データ３，……毎に順次かかるオペレーション２０１〜２１６が行なわれるのである。
【００６４】
即ち、まず、データ１に対し、２つのキーＡ，Ｂがあるとすると、ＭＰＰにより、排他制御を掛けない状態で、排他制御管理テーブル３を参照し（ステップ２０１）、キーＡがこの排他制御管理テーブル３に登録されているか否か確認し（ステップ２０２）、登録されていれば、排他制御管理テーブル３をそのままの状態とし、登録されていなければ、排他制御を掛けてこのキーＡに対するキー情報１１を排他制御管理テーブル３に登録し、排他制御を解除する。このようにして、排他制御管理テーブル３をキー情報１１の登録状態とすると、次に、キーＢに対して、ステップ２０４〜２０７により、排他制御管理テーブル３をこのキーＢを含むキー情報１２の登録状態とする。さらにキーがあれば（ステップ２０８）、夫々のキー毎に上記の動作を繰り返して排他制御管理テーブル３を夫々のキー情報の登録状態とする。
【００６５】
このようにして、データ１の全てのキーについて、排他制御管理テーブル３を夫々のキー情報の登録状態とすると、登録状態とした排他制御管理テーブル３の全てのキー情報を一時記憶排他制御管理テーブル退避部４に一時記憶する（ステップ２０９）。
【００６６】
以上が、キーＡ，Ｂについての先の実施形態での参照／登録オペレーションに相当するものであるが、次に、排他制御管理テーブル３に登録した上記のキー情報１１，１２に対して排他制御が掛けられ、排他制御管理テーブル３に登録されているキー情報１１，１２を昇順に読み込む参照を行ない（ステップ２１０）、一時記憶排他制御管理テーブル退避部４に一時記憶したキー情報１１，１２と照合する。
【００６７】
この照合の結果、一時記憶排他制御管理テーブル退避部４に一時記憶したキー情報１１，１２と同じキー情報１１，１２が排他制御管理テーブル３に保持されていれば、他の端末でこのキー情報１１，１２が使用されておらず（ステップ２１１）、また、キーＡ，Ｂについて他の端末のＤＢ更新の割込みがなかったものとし（ステップ２１２）、ＤＢ１でこのキーＡ，Ｂに対するデータの更新を行なう（ステップ２１３）。そして、かかるデータの更新が終了すると、排他制御管理テーブル３や一時記憶排他制御管理テーブル退避部４に登録したキー情報、即ち、キー情報１１，１２を削除し（ステップ２１４）、排他制御を解除してデータ１に対する更新処理が終了する。
【００６８】
このようにして、データ１の更新処理が終了すると、次のデータ２について、ステップ２０１からのオペレーションが実行され、順次データ３，４，……の順で更新が行なわれる。
【００６９】
ところで、ある端末２（以下、当該端末２という）で或るデータ（例えば、データ２とする）に対して以上のオペレーションの実行中、他の端末２によって同様のオペレーションが実行されて、当該端末２でのステップ２１０の実行開始前に（当該端末２による排他制御がかかっていない）当該端末２によって排他制御管理テーブル３に登録されたキー情報の少なくとも１つが削除もしくは割り込みされたとすると、この他の端末２による排他制御の解除後、当該端末２は排他制御管理テーブル３の参照（ステップ２１０）を開始するが、登録したキー情報の一部が排他制御管理テーブル３から削除されていたり（ステップ２１１）、割り込みがあるため（ステップ２１２）、このデータ２については更新が行なわれない。そして、このデータ２については、再処理の指示があって（ステップ２１６）、再度このオペレーションを最初から、即ち、ステップ２０１からし直すことになる。
【００７０】
このようにして、この実施形態においても、バッチ処理するデータについて、キー情報を排他制御管理テーブル３に登録するときとステップ２１０からのデータ更新するときとの必要最小の範囲で排他制御がかかるようにしているので、バッチ処理する全てのデータの更新処理の最初から最後まで排他制御を掛ける場合に比べて、排他制御の期間が大幅に低減でき、他の端末２によるＤＢ更新の実行を制約することが大幅に低減できることになる。
【００７１】
なお、図９に示した実施形態において、複数のＭＰＰを稼働させて複数のデータのＤＢ更新を行なわせ、この処理が終了して空いたＭＰＰに次のデータのＤＢ更新を行なわせることにより、複数のデータの処理時間を大幅に短縮させることもできる。
【００７２】
【発明の効果】
以上説明したように、本発明によれば、データベース更新において、排他制御管理テーブル参照の端末操作からデータ更新の端末操作までの間でデータベース排他を行なわないため、当該端末が長時間データベース更新の処理を完結できない場合でも、また、かかる処理を途中で止めた場合でも、他の端末が優先して処理を行なうことが可能となるし、操作の途中で全く別のオペレーションを行なうことが可能となり、端末の操作性が向上する。
【００７３】
また、本発明によると、データベース更新の一般的規則は、データベース参照時に排他確保・データベース更新・排他解除であり、ユーザープログラムからのデータベースアクセス順序を統一しない場合、デッドロックを防止できないが、本発明によると、データベース更新での排他制御管理テーブル参照を排他を掛けずにで行ない、排他制御を掛けることが必要なデータの更新は一括して行なうものであるから、データベースアクセス時の排他範囲が最小限となる。
【００７４】
さらに、本発明によると、データベース更新時の処理を一定順序で行なうことにより、デッドロックも防止できる。
【００７５】
さらに、本発明によると、ユーザプログラムからのデータベースアクセス順序を厳しく制限することなく、業務開発が容易になる。
【図面の簡単な説明】
【図１】本発明による複数オペレーション間の排他制御方法が用いられるシステムの概略構成図である。
【図２】本発明による複数オペレーション間の排他制御方法の一実施形態を概略的に示す図である。
【図３】図２に示した実施形態をさらに具体的に示す図である。
【図４】図３に示した実施形態に用いるキーとこれに対するデータベースでのデータの一具体例を示す図である。
【図５】図１における排他制御管理テーブルの概略説明図である。
【図６】図１における一時記憶排他制御管理テーブル退避部の概略説明図である。
【図７】当該端末と他の端末とでのデータベース更新の処理タイミングの例を示す図である。
【図８】図２に示した実施形態の割込み発生の場合の処理を示す図である。
【図９】本発明による複数オペレーション間の排他制御方法の他の実施形態を概略的に示す図である。
【符号の説明】
１ａ，１ｂ  データベース
２ａ，２ｂ  端末
３  排他制御管理テーブル
４  一時記憶排他制御管理テーブル退避部
５  ネットワーク
１０１〜１０９  オペレータ操作
２００ａ，３００ａ，４００ａ  参照／登録オペレーション
２００ｂ，３００ｂ，４００ｂ  更新オペレーション
【図１】
0003970524.tif 000002
【図２】
0003970524.tif 000003
【図３】
0003970524.tif 000004
【図４】
0003970524.tif 000005
【図５】
0003970524.tif 000006
【図６】
0003970524.tif 000007
【図７】
0003970524.tif 000008
【図８】
0003970524.tif 000009
【図９】
0003970524.tif 000010