(57)【要約】【課題】データベースの更新処理を行っている場合であっても、整合性チェックの応答時間の遅延を抑制する。【解決手段】本発明は、ＤＢ中のデータにある処理がアクセスしている間に、他の処理が該ＤＢの同データにアクセスしないように排他制御を行うロック資源管理手段と、ＤＢ内のデータの更新処理及び参照処理を開始する際に、ロック資源管理手段に排他ロックを要求し、排他ロックがＯＫが通知されると、該ＤＢの更新処理または参照処理を行うＤＢ処理手段と、ＤＢ内のデータの整合性のチェックを行い、不整合があった場合は、ロック資源管理手段に排他ロックを要求し、排他ロックＯＫが通知されると、整合性のチェックを行い、該ロック資源管理手段に排他ロックの解除を依頼し、排他ロックＮＧが通知されると、排他ロックを再要求するＤＢ整合性チェック手段と、を有する。【選択図】図１
2010003265.tif 000002
【特許請求の範囲】
【請求項１】
データベースの整合性をチェックするためのデータベース整合性チェック装置であって、
アクセス及び整合性チェックの対象のデータベースと、
前記データベース中のデータにある処理がアクセスしている間に、他の処理が該データベースの同データにアクセスしないように排他制御を行うロック資源管理手段と、
前記データベース内のデータの更新処理及び参照処理を開始する際に、前記ロック資源管理手段に排他ロックを要求し、排他ロックが可能な旨が通知されると、該データベースの更新処理または参照処理を行うデータベース処理手段と、
最初に、前記データベース内のデータの整合性のチェックを行い、不整合があった場合は、前記ロック資源管理手段に排他ロックを要求し、排他ロックを取得すると、整合性のチェックを行い、該ロック資源管理手段に排他ロックの解除を依頼し、整合結果を出力し、一方、排他ロックを取得できなかった場合は、排他ロックを再要求するデータベース整合性チェック手段と、
を有することを特徴とするデータベース整合性チェック装置。
【請求項２】
前記データベース整合性チェック手段は、
初回の整合性のチェック時において、不整合ありと判定された場合に、前記ロック資源管理手段に対する排他ロック要求を行なわずに、予め設定された回数まで前記データベースの整合性のチェックを行う手段を含む請求項１記載のデータベース整合性チェック装置。
【請求項３】
前記データベース整合性チェック手段は、
初回の整合性チェックにおいて不整合あった場合に、前記ロック資源管理手段から排他ロックを取得した後に、整合性のチェックを行わずに、前記データベースのチェック対象区間をキャッシュへコピーし、該排他ロックの解除要求を該ロック資源管理手段に出力し、該キャッシュ内の整合性をチェックする手段を含む
請求項１記載のデータベース整合性チェック装置。
【請求項４】
前記ロック資源管理手段は、
前記データベースの排他制御の対象となるデータ区間が、前記データベース処理手段と前記データベース整合性チェック手段とで競合する場合には、先に受け付けた方の排他ロック要求を優先する手段を含む
請求項１記載のデータベース整合性チェック装置。
【請求項５】
データベースの整合性をチェックするためのデータベース整合性チェック方法であって、
前記データベース中のデータにある処理がアクセスしている間に、他の処理が該データベースの同データにアクセスしないように排他制御を行うロック資源管理手段を有する装置において、
データベース処理手段が、前記ロック資源管理手段から排他ロックを取得すると、該データベースの更新処理または参照処理を行うデータベース処理ステップと、
データベース整合性チェック手段が、最初に前記データベースの整合性のチェックを行う初回整合性チェックステップと、
前記データベース整合性チェック手段が、前記初回整合性チェックステップにおいて、不整合がある場合には、前記ロック資源管理手段から排他ロックを取得し、整合性のチェックを行い、該ロック資源管理手段に排他ロックの解除を依頼し、整合結果を出力する整合性チェックステップと、
前記データベース整合性チェック手段が、前記整合性チェックステップにおいて、前記排他ロックを取得できない場合は、該ロック資源管理手段に排他ロックを再要求する排他ロック再要求ステップと、
を行うことを特徴とするデータベース整合性チェック方法。
【請求項６】
前記初回整合性チェックステップにおいて、
初回の整合性のチェック時において、不整合ありと判定された場合に、前記ロック資源管理手段に対する排他ロック要求を行なわずに、予め設定された回数まで前記データベースの整合性のチェックを行う
請求項５記載のデータベース整合性チェック方法。
【請求項７】
前記初回整合性チェックステップにおいて、
初回の整合性チェックにおいて不整合あった場合に、前記ロック資源管理手段から排他ロックを取得した後に、整合性のチェックを行わずに、前記データベースのチェック対象区間をキャッシュへコピーし、
前記排他ロックの解除要求を該ロック資源管理手段に出力し、
前記キャッシュ内の整合性をチェックする
請求項５記載のデータベース整合性チェック方法。
【請求項８】
前記ロック資源管理手段において、
前記データベースの排他制御の対象となるデータ区間が、前記データベース処理手段と前記データベース整合性チェック手段とで競合する場合には、先に受け付けた方の排他ロック要求を優先する
請求項５記載のデータベース整合性チェック方法。
【請求項９】
請求項１乃至４のいずれか１項に記載のデータベース整合性チェック装置を構成する各手段としてコンピュータを機能させるためのデータベース整合性チェックプログラム。
【請求項１０】
請求項９記載のデータベース整合性チェックプログラムを格納したことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース整合性チェック装置及び方法及びプログラム及びコンピュータ読取可能な記録媒体に係り、特に、メモリ上に展開されたデータベースの整合性をチェックするためのデータベース整合性チェック装置及び方法及びプログラム及びコンピュータ読取可能な記録媒体に関する。
【背景技術】
【０００２】
データベースの更新トランザクションの実行を停止することなく、整合性のチェックを行うことが可能な技術として、あるインデックスに対応したあるブロックを起点として、リレーション順に各データブロックを読み出し、次のデータブロックへのチェーンが途切れた場合、途切れたチェーンの前後のデータブロックのうち、少なくとも一方のデータブロックを以上であると判定するものがある（例えば、特許文献１参照）。
【０００３】
しかし、データベースの更新と整合性のチェックを同時に行うと、更新中の不完全な情報データベースが更新トランザクション処理途中の不整合な状態（原始性が保たれていない状態）で整合性を判断することになり、不整合であると誤診断する可能性がある。このため、図９（Ａ），（Ｂ）に示すように、データベースの更新または整合性チェックのいずれかが排他ロックを取得し、排他区間内で処理を行うことにより、データベースの更新と整合性チェックが同時に行われないようにする必要がある。このようなデータベースの更新と整合性チェックが同時に行われないように、チェック対象のフィールドまたはフィールドの組み合わせに対する他の処理のアクセスを規制するための参照ロックをかけながら、チェック対象のフィールドまたはフィールドの組み合わせ整合性のチェックを行う方法がある（例えば、特許文献２参照）。
【特許文献１】特開平６−４５８８号公報
【特許文献２】特開平８−２４９２２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の技術では、データベースの更新処理と整合性チェックとが競合した場合に、図９（Ａ），（Ｂ）に示すように、データベースの更新処理、または、整合性チェックのいずれか一方が、排他ロックを取得した場合、残りの一方が、排他ロックの取得待ちを行う必要があり、当該処理の応答が遅延してしまうという問題がある。
【０００５】
本発明は、上記の点に鑑みなされたもので、データベースの更新処理を行っている場合であっても、整合性チェックの応答時間の遅延を抑制することが可能なデータベース整合性チェック装置及び方法及びプログラム及びコンピュータ読取可能な記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００６】
図１は、本発明の原理構成図である。
【０００７】
本発明（請求項１）は、データベースの整合性をチェックするためのデータベース整合性チェック装置であって、
アクセス及び整合性チェックの対象のデータベース１３０と、
データベース１３０中のデータにある処理がアクセスしている間に、他の処理が該データベース１３０の同データにアクセスしないように排他制御を行うロック資源管理手段１１０と、
データベース１３０内のデータの更新処理及び参照処理を開始する際に、ロック資源管理手段１１０に排他ロックを要求し、排他ロックが可能な旨が通知されると、該データベースの更新処理または参照処理を行うデータベース処理手段１００と、
最初に、データベース１３０内のデータの整合性のチェックを行い、不整合があった場合は、ロック資源管理手段１１０に排他ロックを要求し、排他ロックを取得すると、整合性のチェックを行い、該ロック資源管理手段１１０に排他ロックの解除を依頼し、整合結果を出力し、一方、排他ロックが取得できない場合は、排他ロックを再要求するデータベース整合性チェック手段１２０と、を有する。
【０００８】
また、本発明（請求項２）は、データベース整合性チェック手段１２０において、
初回の整合性のチェック時に、不整合ありと判定された場合に、ロック資源管理手段に対する排他ロック要求を行なわずに、予め設定された回数までデータベースの整合性のチェックを行う手段を含む。
【０００９】
また、本発明（請求項３）は、データベース整合性チェック手段１２０において、
初回の整合性チェックにおいて不整合あった場合に、ロック資源管理手段から排他ロックを取得した後に、整合性のチェックを行わずに、データベースのチェック対象区間をキャッシュへコピーし、該排他ロックの解除要求を該ロック資源管理手段１１０に出力し、該キャッシュ内の整合性をチェックする手段を含む。
【００１０】
また、本発明（請求項４）は、ロック資源管理手段１１０において、
データベースの排他制御の対象となるデータ区間が、データベース処理手段１００とデータベース整合性チェック手段１２０とで競合する場合には、先に受け付けた方の排他ロック要求を優先する手段を含む。
【００１１】
図２は、本発明の原理を説明するための図である。
【００１２】
本発明（請求項５）は、データベースの整合性をチェックするためのデータベース整合性チェック方法であって、
データベース中のデータにある処理がアクセスしている間に、他の処理が該データベースの同データにアクセスしないように排他制御を行うロック資源管理手段を有する装置において、
データベース処理手段が、ロック資源管理手段から排他ロックを取得すると、該データベースの更新処理または参照処理を行うデータベース処理ステップと、
データベース整合性チェック手段が、最初にデータベースの整合性のチェックを行う初回整合性チェックステップ（ステップ１）と、
データベース整合性チェック手段が、初回整合性チェックステップにおいて、不整合がある場合には（ステップ２、Ｙｅｓ）、ロック資源管理手段から排他ロックを取得し（ステップ３、Ｙｅｓ）、整合性のチェックを行い（ステップ４）、該ロック資源管理手段に排他ロックの解除を依頼し（ステップ５）、整合結果を出力する（ステップ６）整合性チェックステップと、
データベース整合性チェック手段が、整合性チェックステップにおいて、排他ロックを取得できない場合は（ステップ３、Ｎｏ）、該ロック資源管理手段に排他ロックを再要求する（ステップ７）排他ロック再要求ステップと、を行う。
【００１３】
また、本発明（請求項６）は、初回整合性チェックステップにおいて、
初回の整合性のチェック時において、不整合ありと判定された場合に、予め設定された回数までデータベースの整合性のチェックを行う。
【００１４】
また、本発明（請求項７）は、初回整合性チェックステップにおいて、
初回の整合性チェックにおいて不整合あった場合に、ロック資源管理手段から排他ロックを取得した後に、整合性のチェックを行わずに、データベースのチェック対象区間をキャッシュへコピーし、
排他ロックの解除要求を該ロック資源管理手段に出力し、
キャッシュ内の整合性をチェックする。
【００１５】
また、本発明（請求項８）は、ロック資源管理手段において、
データベースの排他制御の対象となるデータ区間が、データベース処理手段とデータベース整合性チェック手段とで競合する場合には、先に受け付けた方の排他ロック要求を優先する。
【００１６】
本発明（請求項９）は、請求項１乃至４のいずれか１項に記載のデータベース整合性チェック装置を構成する各手段としてコンピュータを機能させるためのデータベース整合性チェックプログラムである。
【００１７】
本発明（請求項１０）は、請求項９記載のデータベース整合性チェックプログラムを格納したことを特徴とするコンピュータ読み取り可能な記録媒体である。
【発明の効果】
【００１８】
上記のように、本発明によれば、データベースの最初の整合性のチェックを、排他ロックを取得せずに実行することにより、整合性チェック自体も、データベースの更新処理も、排他ロックの取得に失敗することなく、同時に実行が可能である。これにより、データベースの更新を行っている場合であっても、整合性チェックの応答時間の遅延を抑制することができる。また、整合性のチェック実施中であっても、データベースの更新処理の遅延を抑制することができる。
【００１９】
また、初回の整合性に失敗した場合に、再試行することにより、不整合と誤判定される可能性が低くなり、データベースの更新処理の応答時間の遅延を抑制することができる。
【００２０】
また、排他ロックを取得し、キャッシュへのコピーを行い、排他ロックを解放し、整合性チェックを行うことで、排他ロック期間が短縮されデータベースの応答時間の遅延を抑制することが可能となる。
【発明を実施するための最良の形態】
【００２１】
以下、図面と共に本発明の実施の形態を説明する。
【００２２】
［第１の実施の形態］
図３は、本発明の第１の実施の形態におけるデータベース整合性チェック装置の構成図である。
【００２３】
同図に示すデータベース整合性チェック装置は、データベース処理部１００、ロック資源管理部１１０、整合性チェック部１２０、及びデータベース１３０から構成される。
【００２４】
データベース処理部１００は、データベース１３０の更新処理及び参照処理を行う。更新処理を行う場合には、ロック資源管理部１１０より排他ロックを取得する。
【００２５】
ロック資源管理部１１０は、メモリ（図示せず）内に、データベース１３０内のインデックス毎に、インデックス及びデータの更新ロックテーブル１１５を有している。データベース処理部１００または、整合性チェック部１２０からデータベース１３０中のデータのインデックスを含む排他ロック要求を取得すると、当該インデックスに基づいて当該テーブル１１５を参照することにより、現在排他ロック中でないデータについては排他ロックを許可し、テーブル１１５に排他ロックを示すフラグを立て（ＯＮにする）、当該データに対して排他制御を行う。また、排他ロックが解除された場合には、テーブル１１５の当該フラグにＯＦＦを設定し、排他制御を解除する。ロック資源管理部１１０は、データベース処理部１００と整合性チェック部１２０に対して、更新ロックテーブル１１５の整合性チェック対象のデータ区間のフラグが「ＯＦＦ」であれば、排他ロックを許可する「ＯＫ」を返却し、フラグが「ＯＮ」であれば、排他ロックを不許可とする「ＮＧ」を返却する。また、データベース処理部１００と整合性チェック１２０の双方から排他ロック取得要求を受け付けた場合には、先に当該要求を受け付けた方について、優先的に排他ロックを許可するものとする。
【００２６】
整合性チェック部１２０は、まず、排他ロックをせずに整合性チェックを行い、不整合であると診断された場合には、ロック資源管理部１１０に排他ロックを要求し、排他ロックを取得する。なお、整合性チェック部１２０では、整合性チェックは、データベース制御表チェック、インデックス・データベース相関チェック、データベースのデータ構造チェック等を用いるものとする。
【００２７】
以下に上記の構成における動作を説明する。
【００２８】
最初に、データベース処理部１１０の動作について説明する。
【００２９】
図４は、本発明の第１の実施の形態におけるデータベース処理のフローチャートである。
【００３０】
データベース処理部１００は、データベース処理を開始すると、ロック資源管理部１１０から排他ロックを取得し（ステップ１０１）、成功した場合（ロック資源管理部１１０からＯＫを取得した場合）は、データベース１３０のインデックス、ローの更新を行い（ステップ１０２）、当該更新処理が終了したら排他ロック解除の解除要求をロック資源管理部１１０に出力し（ステップ１０３）、当該処理を終了する。
【００３１】
次に、整合性チェック部１２０の動作について説明する。
【００３２】
以下に示す動作の特徴は、データベース１３０の整合性の初回のチェック処理において、排他ロックの取得を行わず、処理時間を短縮するものである。
【００３３】
図５は、本発明の第１の実施の形態におけるデータベース整合性チェックのフローチャート（その１）である。
【００３４】
データベース整合性チェック部１２０において、整合性チェックを開始すると、初回は排他ロックを取得せずに整合性チェックを行い（ステップ２０１）、不整合であるかを判定し、不整合なしと判定された場合には（ステップ２０２、なし）、「不整合性なし」の判定結果を出力し（ステップ２０８）、処理を終了する。一方、「不整合あり」と診断された場合には、ロック資源管理部１１０に対して排他ロック要求を行い、成功した場合は（ステップ２０３、ＯＫ）、整合性チェックを行い（ステップ２０４）、ロック資源管理部１１０に対して排他ロックの解除要求を行う（ステップ２０５）。排他ロックに失敗した場合は（ステップ２０３、ＮＧ）、再度排他ロック要求を行う（ステップ２０３）。整合性チェックの結果が不整合であるかを判定し、不整合がある場合は（ステップ２０６、あり）、「不整合あり」の判定結果を出力し、処理を終了する（ステップ２０７）。不整合なし場合は（ステップ２０６、なし）、「不整合なし」を判定として出力し、処理を終了する（ステップ２０８）。
【００３５】
上記の図４のデータベース処理の排他区間（ステップ１０２〜１０４）と、データベース整合性チェック処理の排他区間（ステップ２０３〜２０５）が競合した場合は、ロック資源管理部１１０の制御により、いずれか先に排他ロックを取得した処理が実行される。
【００３６】
整合性チェック処理の初回の整合性チェック（ステップ２０１）、は、データベース処理の排他区間（ステップ１０２〜１０４）であっても実行可能である。
【００３７】
図６は、本発明の第１の実施の形態におけるデータベース整合性チェックを説明するための図である。
【００３８】
上記の処理により、図６（Ａ）に示すように、整合性チェックをはじめに排他ロックを取得せずに実行するため、整合性チェック自体も、データベースの更新処理も排他ロック取得に失敗することなく、同時に実行が可能である。この際、不整合であると誤診断する可能性があるが、再度排他ロックを取得し、データベースの更新処理が同時行われない状態で、再度整合性の判定を行うことにより（図６（Ｂ））、初回の診断が誤診断であったか、診断が正しく不整合であったかが判断できる。
【００３９】
誤診断による不整合となる確率は、更新処理が行われる時間区間のうち、整合性チェックにより不整合であると誤診断される処理区間は、同じか、短いため、少なくとも、同時もしくは低くなる。一般的には、トランザクション処理等の不整合と判定されない処理が含まれているため、誤診断による不整合となる確率は低くなる。これにより、データベース１３０の更新処理、もしくは、整合性チェックの応答時間の遅延が抑制されることとなる。
【００４０】
［第２の実施の形態］
本実施の形態では、上記の図５の初回の整合性チェック（ステップ２０１）において、「不整合あり」と判定された場合（ステップ２０２、あり）の追加処理について説明する。
【００４１】
図７は、本発明の第２の実施の形態におけるデータベース整合性チェックのフローチャートである。同図において、図５と同一動作については同一ステップ番号を付し、その説明を省略する。なお、装置構成は図３と同様である。
【００４２】
図５のステップ２０１の処理を行う前に、再試行回数カウンタｉの初期値を設定し（ｉ＝０）、上記のステップ２０２において、「不整合あり」と判定された場合は、所定の再試行回数を超過しているかを判定し、超過している場合には（ステップ３０２、Ｙｅｓ）、ステップ２０３に移行する。超過していない場合は（ステップ３０２、Ｎｏ）、再試行回数のカウンタｉに１加算し（ｉ＝ｉ＋１）、ステップ２０１に移行する（ステップ３０３）。
【００４３】
これにより、初回の整合性チェック（ステップ２０１）が不整合となった場合でも、再試行回数が所定の再試行回数を超過するまで、再試行を行うことにより、誤診断となる確率が１未満であれば、ｐ（n)＞ｐ（n+1）であるため、上記の処理を繰り返すことにより、排他ロックを取得せずに誤診断の確率を下げることができる。これにより、排他ロックの抑制が可能となる。
【００４４】
［第３の実施の形態］
本実施の形態では、第１の実施の形態における図５のステップ２０４の整合性のチェックを行わずにキャッシュへコピーする場合について説明する。
【００４５】
図８は、本発明の第３の実施の形態におけるデータベース整合性チェックのフローチャートである。同図において、図５と同一動作については同一ステップ番号を付し、その説明を省略する。なお、装置構成は図３と同様である。
【００４６】
排他ロックを取得した後（ステップ２０３、ＯＫ）、整合性チェックを行わずに、チェック区間のキャッシュへコピーし（ステップ４０１）、排他ロックを解除し（ステップ２０４）、キャッシュ内の整合性のチェックを行い（ステップ４０２）、整合性があるかを判定する（ステップ２０６）。
【００４７】
これにより、排他ロックを取得し、キャッシュへのコピーを行い、その後で排他ロックを解放し、排他ロック区間外（キャッシュ内）で整合性のチェックを行い、整合性チェックを行うことで、整合性のチェックよりキャッシュコピー時間が短い場合には、排他ロック期間が短縮され、データベース１３０の応答時間の遅延を抑制することが可能となる。
【００４８】
なお、上記の図３に示すデータベース整合性チェック装置の各構成要素について、第１〜第３の実施の形態に示す動作をプログラムとして構築し、データベース整合性チェック装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【００４９】
また、構築されたプログラムをハードディスクや、フレキシブルディスク・ＣＤ−ＲＯＭ等の可搬記憶媒体に格納し、コンピュータにインストールする、または、配布することが可能である。
【００５０】
なお、本発明は、上記の実施の形態及び実施例に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
【産業上の利用可能性】
【００５１】
本発明は、データベースの整合性チェック技術に適用可能である。
【図面の簡単な説明】
【００５２】
【図１】本発明の原理構成図である。
【図２】本発明の原理を説明するための図である。
【図３】本発明の第１の実施の形態におけるデータベース整合性チェックの構成図である。
【図４】本発明の第１の実施の形態におけるデータベース処理のフローチャートである。
【図５】本発明の第１の実施の形態におけるデータベース整合性チェックのフローチャートである。
【図６】本発明の第１の実施の形態におけるデータベース整合性チェックの説明図である。
【図７】本発明の第２の実施の形態におけるデータベース整合性チェックのフローチャートである。
【図８】本発明の第３の実施の形態におけるデータベース整合性チェックのフローチャートである。
【図９】従来のデータベース整合性チェック方法を示す図である。
【符号の説明】
【００５３】
１００  データベース処理手段、データベース処理部
１１０  ロック資源管理手段、ロック資源管理部
１１５  更新ロックテーブル
１２０  データベース整合性チェック手段、整合性チェック部
１３０  データベース
【図１】
2010003265.tif 000003
【図２】
2010003265.tif 000004
【図３】
2010003265.tif 000005
【図４】
2010003265.tif 000006
【図５】
2010003265.tif 000007
【図６】
2010003265.tif 000008
【図７】
2010003265.tif 000009
【図８】
2010003265.tif 000010
【図９】
2010003265.tif 000011