(57)【要約】【課題】  データベースから効率的にデータを削除できる情報処理装置、情報処理システム、データ・アーカイブ方法およびデータ削除方法を提供すること。【解決手段】  本発明の情報処理装置１０は、データベース１１０を管理し、データベース１１０から削除する削除対象が条件付けられる即時処理コマンドを受信するコマンド受信部１１２と、即時処理コマンドによる削除対象を規定する情報を管理データ部１２２に登録する登録処理部１３０（１３０ａ）と、即時処理コマンドによる削除対象をデータベースから削除し、削除が完了した削除対象の登録を管理データ部１２２から消去する削除処理部１３０（１３０ｂ）と、管理データ部１２２に登録中の削除対象と同一テーブルを対象に含むデータ操作コマンドが受信された場合に、該削除対象を操作対象から除外する条件を付加して処理するデータ操作コマンド処理部（１３２または１３４）とを含む。【選択図】図２
2011150458.tif 000002
【特許請求の範囲】
【請求項１】
データベースを管理する情報処理装置であって、
前記データベースから削除する削除対象が条件付けられる即時処理コマンドを受信するコマンド受信部と、
前記即時処理コマンドによる削除対象を規定する情報を管理データ部に登録する登録処理部と、
前記即時処理コマンドによる削除対象を前記データベースから削除し、削除が完了した削除対象の登録を前記管理データ部から消去する削除処理部と、
前記管理データ部に登録中の削除対象と同一テーブルを対象に含むデータ操作コマンドが受信された場合に、該削除対象を操作対象から除外する条件を付加して処理するデータ操作コマンド処理部と
を含む、情報処理装置。
【請求項２】
前記削除処理部は、前記即時処理コマンドによる削除対象がレコード単位でロックされていない状態の下で削除処理を実行する、請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、更新または挿入のコマンドに対する処理を実行する更新または挿入のコマンド処理部を含み、
前記削除処理部は、前記即時処理コマンドによる削除対象が領域単位でロックされていない状態の下で削除処理を実行し、前記更新または挿入のコマンド処理部は、更新対象または挿入対象が前記管理データ部に登録中の削除対象の範囲に該当するコマンドに対しては、エラー応答する、請求項２に記載の情報処理装置。
【請求項４】
前記即時処理コマンドは、アーカイブ取出し後に予定される前記削除対象を条件付けるアーカイブ準備コマンドであり、前記削除処理部は、前記予定される削除対象の削除実行を指令するアーカイブ削除実行コマンドに応答して、前記管理データ部に登録された前記アーカイブ準備コマンドによる削除対象の削除処理を開始する、請求項３に記載の情報処理装置。
【請求項５】
前記登録処理部は、前記アーカイブ準備コマンドの要求元識別子をさらに関連付けて前記管理データ部に登録し、前記データ操作コマンド処理部は、前記データ操作コマンドの要求元に一致する削除対象については、操作対象から除外する条件を付加しない、請求項４に記載の情報処理装置。
【請求項６】
前記更新または挿入のコマンド処理部は、更新対象または挿入対象が、前記更新または挿入のコマンドの要求元に一致する削除対象の範囲のみに該当する場合には、エラー応答せずに前記更新または挿入のコマンドに対する処理を実行する、請求項５に記載の情報処理装置。
【請求項７】
前記即時処理コマンドは、即時に削除する前記削除対象を条件付ける即時削除コマンドであり、前記削除処理部は、前記即時削除コマンドによる削除対象を規定する情報が前記管理データ部に登録された後、前記即時削除コマンドによる削除対象の削除処理を開始する、請求項３に記載の情報処理装置。
【請求項８】
前記データベースは、本番データベースから複製された複製データベースであり、前記情報処理装置は、さらに、
前記本番データベースに発行されたコマンドを受信して、前記複製データベースに転送するコマンド仲介部であって、
前記本番データベースおよび前記複製データベースからアーカイブ取出し後に削除することが予定される削除対象を条件付けるアーカイブ準備コマンドを受信した場合には、該削除対象を規定する情報をアーカイブ管理データ部に登録し、
前記アーカイブ管理データ部に登録された削除対象のテーブルに関連するデータ操作コマンドを受信した場合には、該データ操作コマンドをキューに保持し、
前記予定される削除対象の削除実行を指令するアーカイブ削除実行コマンドを受信した場合には、前記複製データベースに対し、前記アーカイブ管理データ部に登録中の前記削除対象について即時削除コマンドを発行するとともに、前記アーカイブ管理データ部から該削除対象の登録を消去し、前記キューに保持されたコマンドのうち、消去された登録の削除対象のテーブルに関連するデータ操作コマンドを前記複製データベースに対し発行する、当該コマンド仲介部を含む、請求項７に記載の情報処理装置。
【請求項９】
前記即時処理コマンドによる削除対象は、該即時処理コマンドが条件付ける削除対象から、前記管理データ部に登録中の同一テーブルの削除対象を除外した範囲に変更されたものである、請求項２に記載の情報処理装置。
【請求項１０】
前記即時処理コマンドによる削除対象の削除処理時に該削除対象を領域単位でロックするか否かを指定する環境変数を含み、前記領域単位でロックする必要があると指定される場合、更新または挿入のコマンドについては、該コマンドの更新対象または挿入対象が前記管理データ部に登録中の削除対象の範囲に該当するときは、前記即時処理コマンドの削除処理の終了による領域単位のロック解除を待って、更新または挿入処理を行う、請求項２に記載の情報処理装置。
【請求項１１】
複数のコンピュータにより、本番データベースと、前記本番データベースから複製された複製データベースとを管理する情報処理システムであって、
前記本番データベースに発行されたコマンドを受信して、前記複製データベースに転送するコマンド仲介部であって、
前記本番データベースおよび前記複製データベースからアーカイブ取出し後に削除することが予定される削除対象を条件付けるアーカイブ準備コマンドを受信した場合には、該削除対象を規定する情報をアーカイブ管理データ部に登録し、
前記アーカイブ管理データ部に登録された削除対象のテーブルに関連するデータ操作コマンドを受信した場合には、該データ操作コマンドをキューに保持し、
前記予定される削除対象の削除実行を指令するアーカイブ削除実行コマンドを受信した場合には、前記複製データベースに対し、前記アーカイブ管理データ部に登録中の前記削除対象について即時削除コマンドを発行するとともに、前記アーカイブ管理データ部から登録を消去し、前記キューに保持されたコマンドのうち、消去された登録の削除対象のテーブルに関連するデータ操作コマンドを前記複製データベースに対し発行する、当該コマンド仲介部と、
前記複製データベースであって、
前記即時削除コマンドを受信した場合には、前記即時削除コマンドが条件付ける削除対象を規定する情報を削除対象管理データ部に登録する登録処理部と、
前記即時削除コマンドによる削除対象を前記複製データベースから削除し、削除が完了した削除対象の登録を前記削除対象管理データ部から消去する削除処理部と、
前記削除対象管理データ部に登録中の削除対象と同一テーブルを対象に含むデータ操作コマンドが受信された場合に、該削除対象を操作対象から除外する条件を付加して処理するデータ操作コマンド処理部とを含む、当該複製データベースと
を含む、情報処理システム。
【請求項１２】
前記アーカイブ準備コマンドが条件付ける削除対象は、該コマンドの要求元識別子に関連付けて登録され、前記コマンド仲介部は、前記アーカイブ削除実行コマンドを受信した場合に、前記アーカイブ管理データ部に登録中の要求元に一致する削除対象について前記即時削除コマンドを発行する、請求項１１に記載の情報処理システム。
【請求項１３】
前記コマンド仲介部は、アーカイブのステータスの問い合わせに対し、指定された要求元識別子に一致する前記アーカイブ管理データ部に登録中の削除対象に関する情報を返答する、請求項１２に記載の情報処理システム。
【請求項１４】
データベースのデータをアーカイブする方法であって、コンピュータが、
アーカイブ取出し後に前記データベースから削除することが予定される削除対象を条件付けるアーカイブ準備コマンドを受信するステップと、
前記アーカイブ準備コマンドによる削除対象を規定する情報を管理データ部に登録するステップと、
前記管理データ部に登録中の削除対象と同一テーブルを対象に含むデータ操作コマンドが受信された場合に、該削除対象を操作対象から除外する条件を付加して処理するステップと、
アーカイブ削除実行コマンドに応答して、前記管理データ部から前記予定される削除対象の登録を読み出して、前記予定される削除対象を前記データベースから削除する処理を開始するステップと、
前記削除処理の完了に応答して、完了させた削除対象の登録を前記管理データ部から消去するステップと
を実行する、データ・アーカイブ方法。
【請求項１５】
前記削除する処理を開始するステップでは、前記アーカイブ準備コマンドによる削除対象がレコード単位でロックされていない状態の下、該削除対象の削除処理が行われる、請求項１４に記載のデータ・アーカイブ方法。
【請求項１６】
前記データ・アーカイブ方法は、さらに、コンピュータが、
更新または挿入のコマンドを受信するステップと、
更新対象または挿入対象が前記管理データ部に登録中の削除対象の範囲に該当するコマンドに対してエラー応答するステップと
を実行することを含み、前記削除する処理を開始するステップでは、前記削除対象が領域単位でもロックされていない状態の下で該削除対象の削除処理が行われる、請求項１５に記載のデータ・アーカイブ方法。
【請求項１７】
データベースのデータを削除する方法であって、コンピュータが、
前記データベースから即時に削除する削除対象が条件付けられる即時削除コマンドを受信するステップと、
前記即時削除コマンドによる削除対象を規定する情報を管理データ部に登録するステップと、
前記データベースからの前記即時削除コマンドによる削除対象を削除する処理を開始するステップと、
前記管理データ部に登録中の削除対象と同一テーブルを対象に含むデータ操作コマンドが受信された場合に、該削除対象を操作対象から除外する条件を付加して処理するステップと、
前記削除処理の完了に応答して、削除が完了した削除対象の登録を前記管理データ部から消去するステップと
を実行する、データ削除方法。
【請求項１８】
前記削除する処理を開始するステップは、前記即時削除コマンドによる削除対象がレコード単位でロックされていない状態の下で行われる、請求項１７に記載のデータ削除方法。
【請求項１９】
前記データ削除方法は、さらに、コンピュータが、
更新または挿入のコマンドを受信するステップと、
更新対象または挿入対象が前記管理データ部に登録中の削除対象の範囲に該当するコマンドに対してエラー応答するステップと
を実行することを含み、前記削除する処理を開始するステップでは、前記削除対象が領域単位でもロックされていない状態の下で該削除対象の削除処理が行われる、請求項１８に記載のデータ削除方法。
【請求項２０】
本番データベースと、前記本番データベースから複製された複製データベースとを複数のコンピュータにより管理する情報処理システムで実行される、データをアーカイブする方法であって、前記本番データベースに発行されたコマンドを前記複製データベースに仲介するコマンド仲介部が、
前記本番データベースに発行された、前記本番データベースおよび前記複製データベースからアーカイブ取出し後に削除することが予定される削除対象を条件付けるアーカイブ準備コマンドを受信するステップと、
前記アーカイブ準備コマンドが条件付ける削除対象を規定する情報をアーカイブ管理データ部に登録するステップと、
前記アーカイブ管理データ部に登録された削除対象のテーブルに関連するデータ操作コマンドを受信し、該データ操作コマンドをキューに保持するステップと、
前記本番データベースに発行された、前記予定される削除対象の削除実行を指令するアーカイブ削除実行コマンドを受信するステップと、
前記複製データベースに対し、前記アーカイブ管理データ部に登録中の前記削除対象について即時削除コマンドを発行するステップと、
前記アーカイブ管理データ部から前記即時削除コマンドを発行した削除対象の登録を消去するステップと、
前記キューに保持されたコマンドのうち、消去された登録の削除対象のテーブルに関するデータ操作コマンドを前記複製データベースに対し発行するステップと
を実行し、前記複製データベースが、
前記即時削除コマンドに応答して、前記即時削除コマンドが条件付ける削除対象を規定する情報を削除対象管理データ部に登録するステップと、
前記即時削除コマンドが条件付ける削除対象を前記複製データベースから削除するステップと、
前記削除対象管理データ部に登録中の削除対象と同一テーブルを対象に含むデータ操作コマンドが受信された場合に、該削除対象を操作対象から除外する条件を付加して処理するステップと、
削除が完了した削除対象の登録を前記削除対象管理データ部から消去するステップと
を実行する、アーカイブ方法。
【請求項２１】
前記アーカイブ方法は、さらに、前記本番データベースが、
前記アーカイブ準備コマンドを受信するステップと、
前記アーカイブ準備コマンドによる予定される削除対象を規定する情報を第２削除対象管理データ部に登録するステップと、
前記コマンド仲介部に対し前記アーカイブ準備コマンドを転送するステップと、
前記第２削除対象管理データ部に登録中の削除対象と同一テーブルを対象に含むデータ操作コマンドが受信された場合に、登録の削除対象をデータ操作対象から除外する条件を付加して処理するステップを含む、請求項２０に記載のアーカイブ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース技術に関し、より詳細には、データベースから効率的にデータを削除できる情報処理装置、情報処理システム、データ・アーカイブ方法およびデータ削除方法に関する。
【背景技術】
【０００２】
官公庁および企業などにおいては、種々の活動に伴って発生する膨大なデータを管理するために、大規模データベース・システムが構築されている。このような大規模データベース・システムにおいては、日々大量のデータが発生し、蓄積されてゆく。このため、所定範囲の重要度の低いデータを定期的にまたは不定期にアーカイブし、さらに不要となったデータについてはデータベース上から削除するという運用が一般的である。このようなデータ削除またはアーカイブの処理においては、対象が数万件、数十万件から数百万件規模のレコードに及ぶと、削除処理またはアーカイブ処理の完了までに時間を要し、大きな負荷がかかってしまう。
【０００３】
データベースにおいては、複数の並行処理における待ち状態を改善するために、種々のトランザクション分離レベルが設けられているが、上述した削除処理またはアーカイブ処理中、分離レベルに依存して以下のような不具合を発生させてしまうという問題があった。
【０００４】
すなわち、分離レベルが低い場合には、削除処理またはアーカイブ処理が完了するまで、アプリケーションが対象データを参照できてしまうという不具合が発生し得る。アーカイブ済みのデータは、アーカイブ開始時点からアーカイブ処理を実行するアプリケーション以外からは参照されないことが好ましく、削除済みデータは、削除時点からいずれのアプリケーションからも参照されないことが好ましい。また、アーカイブ済みの対象データが参照できてしまうということは、他のアプリケーションがデータ参照する際のパフォーマンスを低下させてしまうことも意味する。
【０００５】
一方、分離レベルが高い場合、他のアプリケーションが削除中の削除対象のデータを参照すると、削除処理が完了するまでロック解除待ちとなり、削除処理が完了するまで無応答となるという不具合が発生し得る。またアーカイブ処理では、データ取出しの後に削除処理を行うため、その削除時にも同様の不具合を発生させてしまう。さらに、アーカイブの取出しの際にも多くの時間を要し、負荷が大きいという問題もあるため、本番データベースに負荷をかけないアーカイブ手法も求められている。
【０００６】
さらに、データベースでは、ロック制御のため、対象レコード数に応じてメモリ消費量が増大する。ロック制御のためのメモリ消費量が設定メモリ最大消費量に達すると、ロックエスカレーションにより、レコード毎のロックからテーブル全体へのロックに切り替わる。この場合、テーブル中の対象以外のデータにもロックがかかり、他のアプリケーション・プロセスは、対象以外のデータを参照するときにも分離レベルによってはロック解除待ちとなってしまう可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したように、従来からのデータベース技術では、大量データの削除またはアーカイブを行う際に、その処理完了までに上述したような不具合を発生させる点で充分なものではなかった。本発明は、上記問題点に鑑みてなされたものであり、本発明は、削除が現に要求された削除対象、またはアーカイブにおける予定される削除対象について、即時処理を指令するコマンド受領直後から、トランザクション分離レベルによらずデータ操作の対象から除外し、削除中のデータを参照すべきではないアプリケーションに対しては、削除完了前であっても削除対象がデータベースから削除済みであるように振る舞うことが可能な情報処理装置、情報処理システム、データ・アーカイブ方法およびデータ削除方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明では、上記課題を解決するために、データベースを管理する情報処理装置は、データベースから削除する削除対象が条件付けられる即時処理コマンドを受信すると、この即時処理コマンドによる削除対象を規定する情報（例えば対象テーブルおよび対象領域を規定する条件式）を管理データ部に登録する。この管理データ部に登録された削除対象は、上記即時処理コマンドによる削除対象のデータベースからの削除が完了した際に、その登録が消去される。一方、登録されている期間中、データベースに対するデータ操作コマンド（例えば照会コマンドや通常の削除コマンド）を処理する際には、上記管理データ部が参照され、登録中の対象テーブルを対象に含むデータ操作コマンドが受信された場合には、その登録の対象領域をデータ操作対象から除外する条件を付加して、当該データ操作コマンドを処理することとなる。
【０００９】
さらに本発明では、上記削除対象の削除処理は、該削除対象がレコード単位でロックされていない状態の下で実行することができる。
【００１０】
さらに本発明では、即時処理コマンドによる削除対象の削除処理を実行する際に該削除対象を領域単位でロックするか否かを指定する環境変数を含むことができる。削除対象を領域単位でロックしない場合には、更新または挿入のコマンドについては、そのコマンドの更新対象または挿入対象が管理データ部に登録中の削除対象の範囲に該当する場合には、エラー応答することができる。
【００１１】
削除対象を領域単位でロックする場合には、更新または挿入のコマンドについては、そのコマンドの更新対象または挿入対象が管理データ部に登録中の削除対象の範囲に該当する場合には、該当する即時処理コマンドの削除処理が終了し、削除対象の領域単位のロックが解除されるのを待って、更新または挿入処理を行うことができる。
【００１２】
また本発明では、上記即時処理コマンドは、データベースからアーカイブ取出し後に予定される削除対象を条件付けるアーカイブ準備コマンドとすることができ、管理データ部に登録されたアーカイブ準備コマンドによる削除対象の削除処理は、予定された削除対象の削除実行を指令するアーカイブ削除実行コマンドに応答して開始することができる。
【００１３】
また本発明では、上記アーカイブ準備コマンドを発行したクライアントの要求元識別子（要求元セッション識別子）をさらに関連付けて管理データ部に登録し、データ操作コマンドの要求元に一致する削除対象について操作対象から除外する条件を付加しないよう構成することができ、これにより、そのクライアントのみが当該削除対象の領域を参照等することが可能となり、当該削除領域をアーカイブすることが可能となる。
【００１４】
また本発明では、上記即時処理コマンドは、即時に削除する削除対象を条件付ける即時削除コマンドとすることができ、上記即時削除コマンドによる削除対象の削除処理は、即時削除コマンドによる削除対象が管理データ部に登録された後直ぐに開始することができる。
【００１５】
さらに本発明では、即時処理コマンドによる削除対象は、管理データ部に既に登録中の削除対象がある場合には、当該即時処理コマンドが条件付ける削除対象から管理データ部に登録中の同一対象テーブルの対象領域を除外した範囲とすることができる。
【００１６】
さらに本発明では、管理するデータベースを本番データベースと、その複製データベースとし、本番データベースに発行されたコマンドを複製データベースに仲介することができる。仲介の際には、本番データベースに発行されたアーカイブ準備コマンドを受信した場合には、そのコマンドが条件付けるアーカイブ取出し後にデータベースから削除することが予定される削除対象をアーカイブ管理データ部に登録することができる。また、本番データベースに発行されたアーカイブ削除実行コマンドを受信した場合に、複製データベースに対し、アーカイブ管理データ部に登録中の削除対象について即時削除コマンドを発行し、アーカイブ管理データ部から登録を消去することができる。
【００１７】
さらに本発明では、アーカイブ管理データ部に登録されているアーカイブ処理中のテーブルに関するコマンドを受信した場合には、キュー（アーカイブ時コマンド受信キュー）にコマンドを保持しておき、アーカイブ処理が終了し、アーカイブ管理データ部から登録が消去された時点で、キューに保持されたコマンドのうち、消去された登録の削除対象のテーブルに関するデータ操作コマンドを複製データベースに対し発行することができる。
【００１８】
このとき、複製データベース側では、即時削除コマンドを受信した場合に、即時削除コマンドが条件付ける削除対象を削除対象管理データ部に登録するとともに複製データベースから削除し、削除が完了した削除対象の登録を削除対象管理データ部から消去する。その一方、削除対象管理データ部に登録中の対象テーブルを対象に含むデータ操作コマンドが受信された場合に、登録される対象領域をデータ操作対象から除外する条件を付加して、当該データ操作コマンドに対する処理を実行することができる。
【発明の効果】
【００１９】
上記構成によれば、即時処理コマンドによって要求された削除対象については、それが大量なデータを対象としていたとしても、管理データ部に登録された直後からデータベースにおけるデータ操作の対象から除外されることとなる。これにより、削除完了前であっても、少なくとも削除中のデータを参照すべきではないアプリケーションからは削除対象が削除済みであるかのよう見えることになる。そして、照会コマンドなどのデータ操作コマンドの処理については、当該削除対象が除外された条件が付加されて処理が遂行されるため、削除対象のデータが参照されてしまうことで、存在すべきでない削除データが照会結果に含まれたり、データ参照時にロック解除待ちとなってしまったりするという不具合の発生が回避される。
【００２０】
またその際には、データ操作コマンドに対する処理における操作対象を指定する条件が変更される形で当該削除対象が操作対象から除外されるため、このようなデータ操作コマンド等に関していえば、ロック制御が不要ということになり、メモリ消費量を削減し、ロックエスカレーションの発生を回避することが可能となる。
【図面の簡単な説明】
【００２１】
【図１】データベース・サーバのハードウェア構成の実施形態を示す図。
【図２】第１の実施形態のデータベース・サーバおよびクライアント上に実現されるデータベース・システムの機能ブロック。
【図３】第１の実施形態における即時削除コマンド処理部が実行する処理を示すフローチャート。
【図４】（Ａ）データベース内のテーブルと（Ｂ）即時削除テーブルとのデータ構造、および（Ｃ）即時削除ロック変数のデータ定義を例示する図。
【図５】複数の即時削除コマンドがオーバーラップして発行された場合の処理動作を概略的に示す図。
【図６】第１の実施形態における（Ａ）照会コマンド処理部が実行する処理および（Ｂ）更新コマンド処理部が実行する処理を示すフローチャート。
【図７】即時削除コマンドが発行されてからその削除処理が完了するまでの期間中に各種コマンドが発行された場合の動作を概略的に示す図。
【図８】第２の実施形態におけるデータベース・システムの機能ブロック図。
【図９】第２の実施形態における準備コマンド処理部が実行する処理を示すフローチャート。
【図１０】第２の実施形態における（Ａ）照会コマンド処理部が実行する処理および（Ｂ）更新コマンド処理部が実行する処理を示すフローチャート。
【図１１】第２の実施形態におけるアーカイブ処理動作を概略的に示す図。
【図１２】第２の実施形態における（Ａ）削除実行コマンド処理部が実行する処理および（Ｂ）削除取消コマンド処理部が実行する処理を示すフローチャート。
【図１３】第３の実施形態のデータベース・システムの機能ブロック図。
【図１４】（Ａ）第３の実施形態におけるコマンド検出部が実行する処理および（Ｂ）コマンド仲介部がクライアントからのアーカイブ処理ステータスの問い合わせに対し実行する処理を示すフローチャート。
【図１５】第３の実施形態におけるコマンド仲介部が実行する処理を示すフローチャート。
【図１６】第３の実施形態のデータベース・システムにおいてクライアント上で動作するアーカイブ・アプリケーションが実行する処理を示すフローチャート。
【発明を実施するための形態】
【００２２】
以下、本発明について実施形態をもって説明するが、本発明は、後述する実施形態に限定されるものではない。なお、以下の実施形態では、情報処理システムの一例として、データベースを管理する情報処理装置としてのデータベース・サーバ（以下、ＤＢサーバとして参照する。）を含む、データベース・システム（以下、ＤＢシステムとして参照する。）を例に説明する。
【００２３】
［第１実施形態］
まず、第１の実施形態のＤＢシステムを構成するＤＢサーバ１０のハードウェアおよびソフトウェア構成について説明する。図１は、ＤＢサーバ１０のハードウェア構成の実施形態を示す。図１に示すＤＢサーバ１０は、概ねパーソナル・コンピュータ、ワークステーションまたはメインフレームなどのコンピュータ装置３４として構成されている。図１に示すコンピュータ装置３４は、中央処理装置（ＣＰＵ）１２と、ＣＰＵ１２が使用するデータの高速アクセスを可能とするキャッシュ・メモリ１４と、ＣＰＵ１２の処理を可能とするＤＲＡＭなどの固体メモリ素子から形成されるシステム・メモリ１６とを備えている。
【００２４】
ＣＰＵ１２、キャッシュ・メモリ１４、およびシステム・メモリ１６は、システム・バス１８を介して、他のデバイスまたはドライバ、例えば、グラフィックス・ドライバ２０およびネットワーク・インタフェース・カード（ＮＩＣ）２２へと接続されている。グラフィックス・ドライバ２０は、バスを介して外部のディスプレイ２４に接続されて、ＣＰＵ１２による処理結果をディスプレイ画面上に表示させることができる。また、ＮＩＣ２２は、物理層レベルおよびデータリンク層レベルでＤＢサーバ１０を、ＴＣＰ／ＩＰなどの適切な通信プロトコルを使用するネットワークへと接続している。
【００２５】
システム・バス１８には、さらにＩ／Ｏバス・ブリッジ２６が接続されている。Ｉ／Ｏバス・ブリッジ２６の下流側には、Ｉ／Ｏバス２８を介して、シリアルＡＴＡ、ＵＳＢなどにより、ハードディスク３０が接続されている。ハードディスク３０は、本実施形態のデータベースのデータを記憶する記憶領域を提供している。また、Ｉ／Ｏバス２８には、ＵＳＢなどのバスを介して、キーボードおよびマウスなどのポインティング・デバイスなどの入力装置３２が接続されていて、この入力装置３２によりユーザ・インタフェースが提供される。オペレータは、入力装置３２を用いて、あるいはＮＩＣ２２を介したリモートアクセスにより、データベースのメンテナンス操作などの各種処理操作をコンピュータ装置３４に対し指令することができる。
【００２６】
コンピュータ装置３４のＣＰＵ１２としては、いかなるシングルコア・プロセッサまたはマルチコア・プロセッサを用いることができる。ＤＢサーバ１０は、ＷＩＮＤＯＷＳ（登録商標）２００Ｘ、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ（登録商標）などのオペレーティング・システム（以下、ＯＳとして参照する。）により制御され、リレーショナル・データベース、オブジェクト・リレーショナル・データベース、ＸＭＬ（eXtensible Markup Language）データベースなどのデータベースを管理するデータベース管理システム（ＤＢＭＳ；Database Management System）などを実装している。なお、クライアントも、図１に示したものと同様なハードウェア構成により実現することができる。
【００２７】
図２は、第１の実施形態のＤＢサーバ１０およびクライアント５０上に実現されるＤＢシステム１００の機能ブロックを示す。ＤＢサーバ１０およびクライアント５０は、ローカル・エリア・ネットワーク（ＬＡＮ）などのネットワーク４０を介し、イーサネット（登録商標）およびＴＣＰ／ＩＰなどの通信プロトコルに従い相互に通信を行っている。
【００２８】
ＤＢサーバ１０上で動作するデータベース１１０は、クライアント５０などからデータベース接続を介して各種コマンドを受信するコマンド受信部１１２と、受信された各種コマンドに対する処理を実行するコマンド処理群１１４と、データベース１１０内のデータを記憶するデータベース記憶部１１６とを含む。データベース１１０は、ＳＱＬなどのデータベース言語を備え、クライアント５０とのＡＣＩＤ（Atomicity, Consistency, Isolation, Durability）特性に従ったトランザクション処理を実行し、クライアント５０に対しデータベース記憶部１１６内のデータへのアクセスを提供している。なお、説明する実施形態では、便宜上、リレーショナル・データベースを用いた場合を例として説明するが、これに限定されるものではない。
【００２９】
コマンド受信部１１２は、図１に示すＮＩＣ２２などのハードウェア資源とともに、本発明の実施形態におけるコマンド受信部としてコンピュータ上に実現される。データベース記憶部１１６は、図１に示したハードディスク３０により提供され、コンピュータがアクセス可能なフォーマットでデータを記憶する。
【００３０】
コマンド処理群１１４としては、本実施形態による即時削除コマンド（詳細は後述する。）を処理する即時削除コマンド処理部１３０を含み、さらに、それぞれ照会コマンド（SELECT文）、通常削除コマンド（DELETE文：即時削除と区別するため通常削除と参照する。）、更新コマンド（UPDATE文）および挿入コマンド（INSERT文）を処理する照会コマンド処理部１３２、通常削除コマンド処理部１３４、更新コマンド処理部１３６および挿入コマンド処理部１３８を含む。その他、データベース１１０のコマンド処理群１１４には、通常のデータベース言語における各種データ定義、データ操作およびデータ制御のコマンドを処理する各コマンド処理部１４０が含まれる。
【００３１】
本実施形態のデータベース１１０は、さらに、即時削除コマンド処理時の対象テーブル内の削除対象領域のロックの有無を指定する即時削除ロック変数１１８と、即時削除コマンドに条件付けられる削除対象を登録し管理するための即時削除テーブル１２０とをさらに含む。即時削除ロック変数１１８および即時削除テーブル１２０は、システム・メモリ１６またはハードディスク３０などの記憶領域により提供される管理データ部１２２に格納され、各コマンド処理部１３０〜１４０から参照される。なお、管理データ部１２２には、即時削除テーブル１２０というテーブル構造のデータが格納されるものとして説明するが、削除対象を登録し、管理するためのデータ構造は、特に限定されるものではない。
【００３２】
一方、クライアント５０は、ＤＢサーバ１０のデータベース１１０に遠隔的にアクセスするため、ＪＤＢＣ、ＯＤＢＣ（Open Database Connectivity）などの共通インタフェース（Application Programming Interface；ＡＰＩ）や、その他のＤＢＭＳ固有のＡＰＩとして構成されるデータベース接続ＡＰＩ（以下、ＤＢ接続ＡＰＩと参照する。）１５２を実装し、データベース１１０にアクセスすることが可能とされている。クライアント５０上で実行され、該データベース１１０のデータを利用する必要のあるアプリケーション１５４は、このＡＰＩ１５２を介してデータベース１１０にアクセスする。
【００３３】
アプリケーション１５４は、ＤＢ接続ＡＰＩ１５２を用いてＤＢサーバ１０のデータベース１１０とのデータベース接続を確立し、ＳＱＬなどのデータベース言語で記述される各種コマンドを発行する。この各種コマンドには、本実施形態による即時削除コマンド（DELETE IMMEDIATE文）、その他、照会コマンド（SELECT文）などのデータ操作コマンドが含まれる。ＤＢサーバ１０の説明に戻ると、データベース１１０は、コマンド処理群１１４の各コマンド処理部１３０〜１４０を用いて、アプリケーション１５４から発行されたコマンドを解釈し、要求された処理を実行し、処理結果をクライアント５０に応答する。
【００３４】
本実施形態における即時削除コマンド（DELETE IMMEDIATE文）は、削除対象を条件付け、この削除対象をデータ操作（SELECT文、DELETE文等）の対象から即時に除外しつつ、当該削除対象をデータベースから削除する即時処理コマンドである。削除対象に含まれるレコード数が大量になると、削除処理の完了までしばらくの時間を要することがある。そこで本実施形態では、この即時削除コマンドを導入し、この即時削除コマンドによる削除対象については、実際の削除処理が完了していなくとも、他のデータ操作コマンドによるデータ操作の対象から除外されるように構成する。
【００３５】
データベース１１０に対し即時削除コマンドが発行されると、即時削除コマンド処理部１３０は、当該コマンドに条件付けられる削除対象を即時削除テーブル１２０に登録し、即時削除ロック変数１１８の値に応じてその削除対象の削除を開始する。削除対象は、対象テーブルを識別するテーブル名と、当該対象テーブル中の対象領域を指定する条件文とにより特定され、これら対象テーブル名および対象領域の条件文が即時削除テーブル１２０に書き込まれ、管理されることとなる。
【００３６】
即時削除コマンドによる削除処理は、トランザクション分離レベルにかかわらず、削除対象のレコードをロックしない状態で行われる。削除処理が完了すると即時削除テーブル１２０を用いた除外処理が不要となるため、即時削除コマンド処理部１３０は、即時削除テーブル１２０から当該即時削除コマンドによる削除対象の登録を消去する。
【００３７】
コマンド処理群１１４の他のコマンド処理部１３２〜１３８は、各コマンドを処理する際に即時削除テーブル１２０を参照する。照会コマンドおよび通常削除コマンドは、それぞれ対象レコードを参照または消去するのみで、処理後操作位置に新たな情報を追加しないコマンドである。そこで本実施形態では、照会コマンド処理部１３２および通常削除コマンド処理部１３４は、それぞれ、照会コマンドまたは通常削除コマンドの処理に対し、即時削除テーブル１２０に登録中の削除対象に触れないように、照会または通常削除の対象から当該削除対象を除外する条件を付加する変更を加えて、当該コマンドを処理する。
【００３８】
一方、挿入コマンドは、新たなレコードを挿入するという、処理後操作位置に新たな情報を追加するコマンドである。そこで本実施形態では、挿入コマンド処理部１３８は、そのコマンドの挿入対象が即時削除テーブル１２０に登録中の削除対象に該当する場合、即時削除ロック変数１１８の値に応じて、当該コマンドの実行の可否を判定し、実行不可の場合にはエラー応答を行う。
【００３９】
一方、更新コマンドは、条件に該当するレコードを新たな情報で書き換えるコマンドである。そこで本実施形態では、更新コマンド処理部１３６は、更新コマンドの更新対象が即時削除テーブル１２０に登録中の削除対象に触れないように、更新の対象から当該削除対象を除外する条件を付加する変更を加え、当該コマンドを処理する。さらに、そのコマンドの更新後の値が即時削除テーブル１２０に登録中の削除対象に該当する場合、即時削除ロック変数１１８の値に応じて、当該コマンドの実行の可否を判定し、実行不可の場合にはエラー応答を行う。
【００４０】
図２に示すＤＢサーバ１０の各機能部は、ＤＢサーバ１０のシステム・メモリ１６上にプログラムを展開して、ＣＰＵ１２がプログラムを実行し、各ハードウェア資源を動作制御することによって、ＤＢサーバ１０上に実現される。上記即時削除コマンド処理部１３０は、本実施形態の登録処理部および削除処理部としてコンピュータ上に実現される。また、照会コマンド処理部１３２または通常削除コマンド処理部１３４は、照会コマンドまたは通常削除コマンドをデータ操作コマンドとして処理する本実施形態のデータ操作コマンド処理部として、更新コマンド処理部１３６または挿入コマンド処理部１３８は、本実施形態の更新または挿入のコマンド処理部として、それぞれコンピュータ上に実現される。
【００４１】
クライアント５０の各機能部も同様に、クライアント５０のシステム・メモリ上などにプログラムを展開し、ＣＰＵがプログラムを実行し、各ハードウェア資源を動作制御することによってクライアント５０上に実現される。以下、本実施形態の即時削除コマンドの機能について、より詳細に説明する。
【００４２】
（Ａ）即時削除コマンド処理部
図３は、第１の実施形態の即時削除コマンド処理部１３０が実行する処理を示すフローチャートである。図４（Ａ）は、説明の便宜上、例示的に参照される即時削除対象のＭＳＧテーブルのデータ構造を示す。図４（Ａ）に示すように、ＭＳＧテーブルは、ＤＡＴＥ、ＬＥＶＥＬおよびＭＥＳＳＡＧＥのカラムを有するテーブルである。図３を参照すると、図３に示す処理は、コマンド受信部１１２が即時削除コマンドを受信したことに応答して、ステップＳ１００から開始する。
【００４３】
ステップＳ１０１では、即時削除コマンド処理部１３０は、受信した即時削除コマンドを解釈し、削除対象の対象テーブルおよび対象領域を特定し、即時削除テーブル１２０中にその対象テーブル名と一致するレコードが存在するか否かを判定する。図４（Ｂ）は、本実施形態の即時削除テーブル１２０のデータ構造を例示する。図４（Ｂ）に示すように、即時削除テーブル１２０は、対象テーブルの名称が書き込まれる対象テーブル名カラムと、削除の対象領域を規定する条件式が書き込まれる対象領域カラムと、当該削除の対象領域についてロックが作成された場合にそのロック識別子が書き込まれるロック識別子カラムとを含む。
【００４４】
ステップＳ１０１で、即時削除テーブル１２０中にその対象テーブルと一致するレコードが存在しないと判定された場合（ＮＯ）には、ステップＳ１０２へ処理を進める。ステップＳ１０２では、即時削除コマンド処理部１３０は、例えば図４（Ｂ）に示すように、即時削除テーブル１２０に対象テーブル名と、対象領域の条件式とを書き込み、ステップＳ１０４へ処理を進める。
【００４５】
ステップＳ１０４では、即時削除コマンド処理部１３０は、環境変数である即時削除ロック変数１１８を参照し、その値が「ロック無し（ＮＯＬＯＣＫ）」であるか、「ロック有り（ＬＯＣＫ）」であるかを判定する。図４（Ｃ）は、即時削除ロック変数１１８のデータ定義を示す図である。ステップＳ１０４で、即時削除ロック変数１１８の値が「ロック有り」であると判定された場合（ＬＯＣＫ）には、ステップＳ１０５へ処理を進める。即時削除コマンド処理部１３０は、ステップＳ１０５で、即時削除コマンド用ロックを作成し、削除対象を領域単位でロックするとともに、そのロックを識別するロック識別子を即時削除テーブル１２０に書き込み、ステップＳ１０８で、当該対象テーブル中の対象領域の削除処理を開始する。
【００４６】
一方、ステップＳ１０４で、即時削除ロック変数１１８の値が「ロック無し」であると判定された場合（ＮＯＬＯＣＫ）には、ステップＳ１０６へ処理を進める。ステップＳ１０６では、即時削除コマンド処理部１３０は、当該即時削除コマンド以前の処理中コマンドによって当該削除対象のレコードが使用中であるかを確認し、ステップＳ１０７で、使用中であるか否かを判定する。ステップＳ１０７で、使用中であるとされた場合（ＹＥＳ）には、ステップＳ１０６へ処理をループさせ、使用中ではないことを確認できるまで待つ。
【００４７】
より具体的には、上記ステップＳ１０６では、即時削除コマンド処理部１３０は、処理中のすべてのコマンドが保持されている記憶領域から、即時削除コマンド発行以前に発行されて処理中のすべてのコマンドをチェックし、当該即時削除コマンドの当該削除領域が使用されているコマンドがあれば、そのすべてのコマンドが終了するまで処理を待つ。このように即時削除コマンド発行以前に発行されて処理中のコマンドをチェックする理由は、即時削除テーブル１２０に書き込み後に発行されるデータ操作コマンドについては、その削除対象は排除されて触れられなくなるが、それ以前に発行されたデータ操作コマンドについては、そのコマンドによる処理が完了するまで待つ必要があるためである。ステップＳ１０７で、使用中ではないことが確認された場合（ＮＯ）には、ステップＳ１０８へ処理を進め、ステップＳ１０８で、当該対象テーブル中の対象領域の削除処理を開始する。
【００４８】
ステップＳ１０９では、即時削除コマンド処理部１３０は、削除処理が完了すると、即時削除コマンド用ロックが作成されていればロックを解除および削除し、ステップＳ１１０で、即時削除テーブル１２０に登録された削除対象のレコードを消去し、ステップＳ１１１で、当該即時削除コマンドに関する処理を終了させる。
【００４９】
再びステップＳ１０１を参照すると、ステップＳ１０１でコマンドの対象テーブルと一致するレコードが存在すると判定された場合（ＹＥＳ）には、ステップＳ１０３へ処理を進める。ステップＳ１０３では、即時削除コマンド処理部１３０は、受信した当該即時削除コマンドについての削除対象を示す条件に、即時削除テーブル１２０に登録されている同名テーブルのレコードの対象領域と逆の条件を付加する。ステップＳ１０２では、即時削除コマンド処理部１３０は、即時削除テーブル１２０に対象テーブル名と、対象領域の条件式とを書き込み、ステップＳ１０４以降の処理へ進める。
【００５０】
この場合、即時削除コマンド処理部１３０は、即時削除ロック変数１１８の値が「ロック有り」である場合（ＬＯＣＫ）には、ステップＳ１０５で、即時削除コマンド用ロックを作成し、ロックするとともに、そのロックを識別するロック識別子を即時削除テーブル１２０に書き込み、ステップＳ１０８で、当該範囲の削除処理を開始することになる。一方、即時削除ロック変数１１８の値が「ロック無し」である場合（ＮＯＬＯＣＫ）には、ステップＳ１０８で、登録済みの削除対象を除外した範囲の削除処理を開始することになる。
【００５１】
図５は、複数の即時削除コマンドがオーバーラップして発行された場合の処理動作を概略的に示す図である。なお、図５には、即時削除コマンド処理部１３０のより詳細な機能分けによる登録処理部１３０ａおよび削除処理部１３０ｂが示されている。登録処理部１３０ａは、図３に示したステップＳ１０１〜Ｓ１０７の処理を担当し、削除処理部１３０ｂは、ステップＳ１０８〜ステップＳ１１０の削除処理を担当する。
【００５２】
図５に示すように、第１の即時削除コマンド（DELETE IMMEDIATE文）が発行されると、登録処理部１３０ａは、図３に示すステップＳ１０２で、第１の即時削除コマンド中の対象テーブル名「MSG」と、対象領域を示す条件式「DATE<’200x-01-01’」を即時削除テーブル１２０に書き込む。そして、削除処理部１３０ｂは、ステップＳ１０８で、第１の即時削除コマンドの対象テーブル「MSG」中の対象領域「DATE<’200x-01-01’」の削除処理を開始する。
【００５３】
第１の即時削除コマンドの削除処理が完了する前に、同一テーブルを対象とした第２の即時削除コマンド（DELETE IMMEDIATE文）が発行されると、登録処理部１３０ａは、図３に示すステップＳ１０１で、第２の即時削除コマンド中の対象テーブル名「MSG」に一致するレコードを即時削除テーブル１２０から発見する。ステップＳ１０３で、登録処理部１３０ａは、第２の即時削除コマンドによる削除対象を示す条件「LEVEL=’W’」に、即時削除テーブル１２０に登録中の同名テーブルのレコードの対象領域と逆の条件（例えば「DATE>=’200x-01-01’」）を付加し、ステップＳ１０２で、即時削除テーブル１２０に対象テーブル名「MSG」と、対象領域の条件式（例えば「LEVEL=’W’ AND DATE>=’200x-01-01’」）とを書き込む。
【００５４】
そして、ステップＳ１０８で、削除処理部１３０ｂは、第２の即時削除コマンドの対象テーブル「MSG」中の対象領域（例えば「LEVEL=’W’ AND DATE>=’200x-01-01’」）の削除処理を開始する。このように、後続の即時削除コマンドによる処理フローでは、従前の即時削除コマンドによって削除中の対象領域を除く範囲の削除を担当することとなる。
【００５５】
（Ｂ）照会コマンド処理部および通常削除コマンド処理部
図６（Ａ）は、第１の実施形態の照会コマンド処理部１３２が実行する処理を示すフローチャートである。なお、通常削除コマンド処理部１３４が実行する処理については、照会コマンド処理部１３２のものと同様であるため、通常削除コマンドについては、「照会コマンド」、「照会コマンド処理部１３２」および「照会処理」を、適宜「通常削除コマンド」、「通常削除コマンド処理部１３４」および「通常削除処理」と読み替えればよい。図６（Ａ）に示す処理は、コマンド受信部１１２が照会コマンドを受信したことに応答して、ステップＳ２００から開始する。
【００５６】
ステップＳ２０１では、照会コマンド処理部１３２は、受信した照会コマンドを解釈し、照会処理の対象テーブルを特定し、即時削除テーブル１２０を参照し、その中にその対象テーブル名と一致するレコードが存在するか否かを判定する。
【００５７】
ステップＳ２０１で、即時削除テーブル１２０中にその対象テーブルと一致するレコードが存在しないと判定された場合（ＮＯ）には、ステップＳ２０３へ処理を進める。ステップＳ２０３では、照会コマンド処理部１３２は、そのまま条件の変更を加えず、照会コマンドに対する処理を実行し、ステップＳ２０４で、当該照会コマンドに関する処理を終了させる。
【００５８】
一方、ステップＳ２０１で即時削除テーブル１２０中にその対象テーブルと一致するレコードが存在すると判定された場合（ＹＥＳ）には、ステップＳ２０２へ処理を進める。ステップＳ２０２では、照会コマンド処理部１３２は、受信した当該照会コマンドに、即時削除テーブル１２０に登録されている同名テーブルのレコードの対象領域と逆の条件を付加する。この場合、ステップＳ２０３では、照会コマンド処理部１３２は、当該照会コマンドが条件付ける対象から、登録中の同一対象テーブルの削除対象を除外した範囲の照会処理を実行することになる。
【００５９】
図７は、即時削除コマンドが発行されてからその削除処理が完了するまでの期間中に各種コマンドが発行された場合の動作を概略的に示す図である。図７に示すように、第１のコマンドとして、即時削除コマンドが発行されると、その削除対象の領域は、即時削除ロック変数１１８の値に応じて、ロックされた状態またはロックされない状態で削除処理が開始される。その削除処理が完了するまでの間に、第２のコマンドとして照会コマンドが発行されると、当該照会コマンドについての処理は、第１の即時削除コマンドの削除対象を除外する条件が付加された形式に変更されて実行されることとなる。これにより、仮にテーブルの全範囲が照会されたとしても、削除対象以外の範囲のみが照会されることとなり、削除対象のデータが触れられることはない。
【００６０】
（Ｃ）更新コマンド処理部および挿入コマンド処理部
図６（Ｂ）は、第１の実施形態の更新コマンド処理部１３６が実行する処理を示すフローチャートである。なお、挿入コマンド処理部１３８が実行する処理については、更新コマンド処理部１３６のものと概ね同様であるため、同一フローチャートを参照して説明する。また、更新コマンド特有の処理については破線枠で示し、その他の事項については、適宜、「更新コマンド」、「更新コマンド処理部」および「更新処理」を、それぞれ「挿入コマンド」、「挿入コマンド処理部」および「挿入処理」に読み替えればよい。図６（Ｂ）に示す処理は、コマンド受信部１１２が更新コマンドを受信したことに応答して、ステップＳ３００から開始する。
【００６１】
ステップＳ３０１に示す処理は、更新コマンドの場合にのみ行われるものであるが、ステップＳ３０１では、更新コマンド処理部１３６は、照会コマンドまたは通常削除コマンドを受信した場合と同様に、受信した更新コマンドについての更新条件に、即時削除テーブル１２０に登録されている同名テーブルのレコードの対象領域と逆の条件を付加する。挿入コマンドの場合、ステップＳ３００からステップＳ３０２へ直接進められる。ステップＳ３０２では、更新コマンド処理部１３６は、受信した更新コマンドを解釈し、即時削除テーブル１２０を参照し、その中にその対象テーブル名と一致するレコードが存在するか否かを判定する。ステップＳ３０２で、一致するレコードが存在しないと判定された場合（ＮＯ）には、ステップＳ３０３へ処理を進める。ステップＳ３０３では、更新コマンド処理部１３６は、更新コマンドに対する処理を実行し、ステップＳ３０８で、当該更新コマンドに関する処理を終了させる。
【００６２】
一方、ステップＳ３０２で一致するレコードが存在すると判定された場合（ＹＥＳ）には、ステップＳ３０４へ処理を進める。ステップＳ３０４では、更新コマンド処理部１３６は、更新処理の対象、すなわち更新後の値が即時削除テーブル１２０に登録されている同名テーブルのレコードの対象領域に一致するか否かを判定する。挿入コマンドの場合、挿入処理の対象、すなわち挿入するデータが対象領域に一致するか否かを判定する。ステップＳ３０４で、一致しないと判定された場合（ＮＯ）には、ステップＳ３０３へ処理を進め、更新コマンド処理部１３６は、通常通り、更新コマンドに対する処理を実行し、ステップＳ３０８で、当該更新コマンドに関する処理を終了させる。
【００６３】
一方、ステップＳ３０４で、一致すると判定された場合（ＹＥＳ）には、ステップＳ３０５で、即時削除ロック変数１１８を参照し、その値が「ロック無し」であるか、「ロック有り」であるかを判定する。ステップＳ３０５で、即時削除ロック変数１１８の値が「ロック有り」であると判定された場合（ＬＯＣＫ）には、更新コマンド処理部１３６は、ステップＳ３０７で即時削除テーブル１２０の該当削除領域のロック解除待ちを行った後、ステップＳ３０３へ処理を進める。ステップＳ３０３では、通常通り、更新コマンドに対する処理を実行し、ステップＳ３０８で、当該更新コマンドに関する処理を終了させる。
【００６４】
一方、ステップＳ３０５で、「ロック無し」であると判定された場合（ＮＯＬＯＣＫ）には、ステップＳ３０６へ処理を進める。ステップＳ３０６では、削除対象の領域がロックされていないため、当該更新コマンドに対する応答として要求元に即時削除処理中である旨を示すエラーを返し、ステップＳ３０８で、当該更新コマンドに関する処理を終了させる。
【００６５】
ここで、再び図７を参照する。図７に示すように、第１のコマンドによる削除処理が完了するまでの間に、更新コマンドが発行されると、当該更新コマンドについての処理は、第１の即時削除コマンドの削除対象を除外する条件が付加された形式に変更されて実行されることとなる。さらに、更新対象が削除中の削除対象の領域に該当する場合、即時削除ロック変数１１８の値に応じて、エラーとせずに削除処理の完了を待って更新コマンドの処理を続行（ＬＯＣＫの場合）するか、エラー応答（ＮＯＬＯＣＫの場合）されることとなる。即時削除ロック変数１１８が「ロック有り」の場合、当該削除対象について作成された即時削除用ロックのロック解除待ち後にコマンドの処理が実行されることになる。一方、挿入コマンドが発行された場合には、挿入対象が削除中の削除対象の領域に該当する場合、即時削除ロック変数１１８の値に応じて、エラーとせずに削除処理の完了を待って挿入コマンドの処理を続行（ＬＯＣＫの場合）するか、エラー応答（ＮＯＬＯＣＫの場合）されることとなる。
【００６６】
上述した即時削除コマンドによれば、即時削除コマンドによって要求された削除対象については、それが大量なデータを対象としていたとしても、即時削除テーブル１２０に登録された直後からデータ操作の対象から除外されることとなる。これにより、削除完了前であっても、アプリケーションからは削除対象が削除済みであるかのよう見えることになる。そして、照会コマンドなどの処理については、当該削除対象が除外されて処理が遂行されるため、削除対象のデータが参照されてしまうことで、存在すべきでない削除データが照会結果に含まれたり、データ参照時にロック解除待ちとなってしまったりするという不具合の発生が回避される。
【００６７】
またその際には、照会コマンド等に対する処理における操作対象を指定する条件が変更される形で当該削除対象が操作対象から除外され、また「ロック無し」および「ロック有り」のいずれの場合でも、対象テーブルのレコード単位のロック制御が不要とされるため、メモリ消費量を削減し、ロックエスカレーションの発生を回避することが可能となる。
【００６８】
また、上述した即時削除ロック変数１１８を導入することで、システムの運用指針に応じて、挿入または更新のコマンドを処理することが可能となる。この即時削除ロック変数１１８は、削除中でもその削除領域へのデータ挿入または更新が必要とされる運用に対応するために設けられるものであるが、一般に削除対象となる領域には、新しいデータを挿入したり更新したりする実際上の要望が少ないため、即時削除ロック変数１１８は、デフォルトの「ロック無し」の値に設定しておくことが好ましい。即時削除ロック変数１１８を「ロック無し」とすることで、さらに削除対象の領域単位のロック制御も不要となり、さらにメモリ消費量が削減される。
【００６９】
［第２実施形態］
上述した第１の実施形態による即時削除コマンドは、条件付けた削除対象をデータ操作の対象から即時に除外しつつデータベースから削除する即時処理コマンドであるが、以下、所定の時点のデータベースからデータ取出後に削除するアーカイブ処理に適用した第２の実施形態のＤＢシステムについて説明する。なお、第２の実施形態のＤＢシステムにおけるハードウェアおよびソフトウェア構成は、第１の実施形態のものと類似しているため、以下、相違点を中心に説明する。また、第１の実施形態と同様の機能を奏する構成については、「’」を付加した同一符番にて参照する。
【００７０】
図８は、第２の実施形態のＤＢシステム１００’におけるＤＢサーバ１０’上に実現される機能ブロックを示す。本実施形態のＤＢサーバ１０’上で動作するデータベース１１０’は、コマンド処理群１１４’として、第１の実施形態で説明したコマンド処理部１３０’〜１４０’を含むほか、さらに、アーカイブ処理に関連するコマンド処理部１４２〜１４６を備える。
【００７１】
アーカイブ準備コマンド処理部（以下、省略して準備コマンド処理部と参照する。）１４２、アーカイブ削除実行コマンド処理部（以下、省略して削除実行コマンド処理部と参照する。）１４４およびアーカイブ削除取消コマンド処理部（以下、省略して削除取消コマンド処理部と参照する。）１４６は、それぞれ、本実施形態のアーカイブ準備コマンド（ARCHIVE PREPARE文）、アーカイブ削除実行コマンド（ARCHIVE EXEC DELETE文）、アーカイブ削除取消コマンド（ARCHIVE CANCEL DELETE文）を処理する機能部である。
【００７２】
本実施形態のデータベース１１０’も、第１の実施形態と同様に、即時削除ロック変数１１８’および即時削除テーブル１２０’を格納する管理データ部１２２’を含み、コマンド処理群１１４’の各コマンド処理部１３０’〜１４６から参照される。
【００７３】
本実施形態におけるアーカイブ準備コマンド（以下、省略して準備コマンドと参照する。）は、アーカイブ処理におけるデータ取出し後に削除することが予定される削除対象を条件付け、他のアプリケーションによるデータ操作対象から当該削除対象を即時に除外する即時処理コマンドである。本コマンドにより、削除するものとして予約された削除対象は、準備コマンドの要求元以外のアプリケーションからは見えなくなる一方で、必要に応じて準備コマンドの要求元のアプリケーションからはデータ操作可能とされる。
【００７４】
一方、本実施形態におけるアーカイブ削除実行コマンド（以下、省略して削除実行コマンドと参照する。）は、準備コマンド発行後、データの取出しが完了した場合に、その予定された削除対象の実際の削除を指令するコマンドである。なお、削除実行コマンドの前に複数の準備コマンドが発行されていても良く、この場合、この単一の削除実行コマンドによって、従前に同一要求元から発行された準備コマンドによるすべての削除対象が削除されることになる。
【００７５】
また本実施形態におけるアーカイブ削除取消コマンド（以下、省略して削除取消コマンドと参照する。）は、準備コマンド発行後、アーカイブ処理中にエラーが発生した場合など、アーカイブをキャンセルする必要が発生した場合に、その予定された削除対象の削除を撤回するためのコマンドである。
【００７６】
本実施形態のクライアント上で動作するアーカイブ処理用のアプリケーションは、本データベースに対し、これらのアーカイブ関連コマンドを発行することにより、データベース中のデータを効率的にアーカイブすることができる。データベース１１０’に対し準備コマンドが発行されると、準備コマンド処理部１４２は、当該コマンドに条件付けられる削除対象を即時削除テーブル１２０’に登録し、当該削除対象を他のアプリケーションから触れられなくする。また、即時削除ロック変数１１８’が「ロック有り」の値である場合には、即時削除コマンド用ロックを作成して、削除対象を領域単位でロックする。
【００７７】
準備コマンド発行後、適切にデータ取出しが行われ、アプリケーションからデータベース１１０’に対し削除実行コマンドが発行されると、削除実行コマンド処理部１４４は、要求元に紐付けられる削除対象の実際の削除処理を開始する。削除対象の削除処理は、即時削除ロック変数１１８’の値にかかわらず、かつ、トランザクション分離レベルにかかわらず、削除対象のレコードをロックしない状態で行われる。削除処理が完了すると、削除実行コマンド処理部１４４は、即時削除テーブル１２０’から削除が完了した削除対象の登録を消去する。
【００７８】
一方、準備コマンド発行後、アプリケーションからデータベース１１０’に対し削除取消コマンドが発行されると、削除取消コマンド処理部１４６は、即時削除テーブル１２０’から、要求元に紐付けられた削除対象の登録を消去する。
【００７９】
コマンド処理群１１４’の他のコマンド処理部１３０’〜１３８’は、第１の実施形態と同様に、即時削除テーブル１２０’を参照しながら、担当するコマンドに対する処理を実行する。照会コマンド処理部１３２’および通常削除コマンド処理部１３４’は、それぞれ、照会コマンドまたは通常削除コマンドの処理に対し、当該コマンドの要求元以外に紐付けられた登録中の削除対象に触れないように、照会または通常削除の対象から当該削除対象を除外する条件を付加する変更を加えて実行する。
【００８０】
一方、更新コマンド処理部１３６’および挿入コマンド処理部１３８’は、更新対象または挿入対象が、当該コマンドの要求元以外に紐付けられた登録中の削除対象に該当する場合、即時削除ロック変数１１８’の値に応じて、更新コマンドまたは挿入コマンドの実行の可否を判定し、実行不可の場合にはエラー応答を行う。
【００８１】
上記準備コマンド処理部１４２は、本実施形態の登録処理部としてコンピュータ上に実現され、上記削除実行コマンド処理部１４４は、本実施形態の削除処理部としてコンピュータ上に実現される。以下、本実施形態のアーカイブ関連コマンドの機能について、より詳細に説明する。
【００８２】
（Ａ）アーカイブ準備コマンド処理部
図９は、第２の実施形態における準備コマンド処理部１４２が実行する処理を示すフローチャートである。図９に示す処理は、コマンド受信部１１２’が準備コマンドを受信したことに応答して、ステップＳ４００から開始する。ステップＳ４０１では、準備コマンド処理部１４２は、受信した準備コマンドを解釈し、削除対象の対象テーブルおよび対象領域を特定し、即時削除テーブル１２０’中にその対象テーブル名と一致するレコードが存在するか否かを判定する。
【００８３】
ステップＳ４０１で、一致するレコードが存在しないと判定された場合（ＮＯ）には、ステップＳ４０２へ処理を進める。ステップＳ４０２では、準備コマンド処理部１４２は、即時削除テーブル１２０’に対象テーブル名と、対象領域の条件式と、要求元セッション識別子とを書き込み、ステップＳ４０４へ処理を進める。要求元セッション識別子は、コマンドを要求するクライアントを識別するための値である。図１１は、アーカイブ処理動作を概略的に示す図である。図１１に示すように、第１の準備コマンドが発行されると、即時削除テーブル１２０’に、削除対象に関連付けて、要求元セッション識別子（ＩＤ）が書き込まれる。
【００８４】
一方、ステップＳ４０１でテーブル名が一致するレコードが存在すると判定された場合（ＹＥＳ）には、ステップＳ４０３へ処理を進める。ステップＳ４０３では、準備コマンド処理部１４２は、受信した当該準備コマンドについての削除対象を示す条件に、即時削除テーブル１２０’に登録中の同名テーブルのレコードの対象領域と逆の条件を付加し、ステップＳ４０２で、即時削除テーブル１２０’に登録し、ステップＳ４０４へ処理を進める。
【００８５】
ステップＳ４０４では、準備コマンド処理部１４２は、即時削除ロック変数１１８’の値が「ロック無し」であるか、「ロック有り」であるかを判定する。ステップＳ４０４で、即時削除ロック変数１１８’の値が「ロック有り」である場合（ＬＯＣＫ）には、ステップＳ４０５へ処理を進める。準備コマンド処理部１４２は、ステップＳ４０５で、即時削除コマンド用ロックを作成し、ロックするとともに、そのロック識別子を即時削除テーブル１２０’に書き込み、ステップＳ４０８で当該準備コマンドに関する処理を終了させる。
【００８６】
一方、ステップＳ４０４で、「ロック無し」であると判定された場合（ＮＯＬＯＣＫ）には、ステップＳ４０６へ処理を進める。準備コマンド処理部１４２は、ステップＳ４０６で、当該即時削除コマンド以前の処理中コマンドによって当該削除対象のレコードが使用中であるかを確認し、ステップＳ４０７で、使用中であるか否かを判定する。ステップＳ４０７で、使用中であるとされた場合（ＹＥＳ）には、ステップＳ４０６へ繰り返しループさせる。ステップＳ４０７で使用中でないことが確認された場合（ＮＯ）には、ステップＳ４０８へ処理を進め、当該準備コマンドに関する処理を終了させる。
【００８７】
（Ｂ）照会コマンド処理部および通常削除コマンド処理部
図１０（Ａ）は、第２の実施形態における照会コマンド処理部１３２’が実行する処理を示すフローチャートである。図１０（Ａ）に示す処理は、コマンド受信部１１２’が照会コマンドを受信して、ステップＳ５００から開始する。ステップＳ５０１では、照会コマンド処理部１３２’は、即時削除テーブル１２０’を参照し、その中に当該照会コマンドの対象テーブル名と一致するレコードが存在するか否かを判定する。
【００８８】
ステップＳ５０１でテーブル名が一致するレコードが存在すると判定された場合（ＹＥＳ）には、ステップＳ５０２へ処理を進め、照会コマンド処理部１３２’は、当該照会コマンドの要求元セッション識別子に一致しないものが即時削除テーブル１２０’に登録されているか否かを判定する。ステップＳ５０２で、一致しないものが存在すると判定された場合（ＹＥＳ）には、ステップ５０３へ処理を進める。
【００８９】
ステップＳ５０３では、照会コマンド処理部１３２’は、受信した当該照会コマンドについて、登録中の同名テーブルのレコードであって、セッション識別子が一致しないものの対象領域と逆の条件を当該照会コマンドに付加する。この場合、照会コマンド処理部１３２’は、ステップＳ５０４で、当該照会コマンドの対象から他の要求元によるアーカイブ準備の対象領域や即時削除処理中の削除領域を除外した範囲の照会処理を実行し、ステップＳ５０５で、当該照会コマンドに関する処理を終了させる。
【００９０】
一方、ステップＳ５０１で、テーブル名が一致するレコードが存在しないと判定された場合（ＮＯ）、ステップＳ５０２で、セッション識別子が一致しないレコードが存在しないと判定された場合（ＮＯ）には、ステップＳ５０４へ処理を進める。照会コマンド処理部１３２’は、ステップＳ５０４で、そのまま条件の変更を加えずに照会コマンドに対する処理を実行し、ステップＳ５０５で、当該照会コマンドに関する処理を終了させる。
【００９１】
図１１に示すように、アーカイブ・アプリケーションから第１の準備コマンドが発行されると、コマンド要求元のセッション識別子と関連付けて即時削除テーブル１２０’に削除対象が登録され、その削除対象の範囲は、即時削除ロック変数１１８’の値に応じて、ロックされた状態またはロックされない状態に設定される。
【００９２】
その後、削除実行コマンドが発行されるまでの間に、アーカイブ・アプリケーションから第２のコマンドとして照会コマンドが発行されると、当該照会コマンドについての処理は、要求元セッション識別子が同一であるため、通常の条件のまま実行される。一方、異なるセッション識別子が割当てられた他のアプリケーションから照会コマンドが発行されると、第１の準備コマンドの削除対象を除外する条件が付加された形式に変更されてコマンドが処理されることとなる。これにより、仮に他のアプリケーションからテーブルの全範囲が照会されたとしても、アーカイブ対象以外の範囲のみが照会されることとなり、アーカイブ対象のデータが触れられて、ロック解除待ち等の不具合が回避される。
【００９３】
（Ｃ）更新コマンド処理部および挿入コマンド処理部
図１０（Ｂ）は、第２の実施形態にける更新コマンド処理部１３６’が実行する処理を示すフローチャートである。図１０（Ｂ）に示す処理は、コマンド受信部１１２’が更新コマンドを受信したことに応答して、ステップＳ６００から開始する。第１の実施形態と同様、挿入コマンド処理部１３８’が実行する処理については、更新コマンド処理部１３６’のものと概ね同様であるため、更新コマンド特有の処理を破線枠で示し、同一フローチャートを参照して説明する。
【００９４】
更新コマンドの場合、ステップＳ６０１では、更新コマンド処理部１３６’は、照会コマンドまたは通常削除コマンドを受信した場合と同様に、受信した更新コマンドについての更新条件に、即時削除テーブル１２０’に登録され、かつ、要求元セッション識別子が一致しない、同名テーブルのレコードの対象領域と逆の条件を付加する。挿入コマンドの場合、ステップＳ６００からステップＳ６０２へ直接進められる。ステップＳ６０２では、更新コマンド処理部１３６’は、即時削除テーブル１２０’を参照し、その中に当該更新コマンドの対象テーブル名と一致するレコードが存在するか否かを判定する。
【００９５】
ステップＳ６０２で一致するレコードが存在すると判定された場合（ＹＥＳ）には、ステップＳ６０３へ処理を進め、更新コマンド処理部１３６’は、さらに当該更新コマンドの要求元セッション識別子に一致しないものが登録されているか否かを判定する。ステップＳ６０３で、一致しないものが存在すると判定された場合（ＹＥＳ）には、ステップＳ６０４へ処理を進める。ステップＳ６０４では、更新コマンド処理部１３６’は、さらに、即時削除テーブル１２０’に登録中の同名テーブルのレコードであって、セッション識別子が一致しないものの対象領域の範囲に、当該更新コマンドの対象、すなわち更新後の値が一致するか否かを判定する。
【００９６】
ステップＳ６０４で、セッション識別子が一致しないレコードの対象領域のいずれかに一致すると判定された場合（ＹＥＳ）には、ステップＳ６０５へ処理を進める。ステップＳ６０５では、更新コマンド処理部１３６’は、即時削除ロック変数１１８’を参照し、その値が「ロック無し」であるか、「ロック有り」であるかを判定する。ステップＳ６０５で、「ロック無し」であると判定された場合（ＮＯＬＯＣＫ）には、ステップＳ６０６へ処理を進め、削除対象の領域がロックされていないため、当該更新コマンドに対する応答として要求元に、即時削除処理中である旨を示すエラーを返し、ステップＳ６０９で、当該更新コマンドに関する処理を終了させる。
【００９７】
一方、ステップＳ６０２でテーブル名が一致するレコードが存在しないと判定された場合（ＮＯ）、ステップＳ６０３でセッション識別子が一致しないレコードが存在しないと判定された場合（ＮＯ）、ステップＳ６０４でセッション識別子が一致しないレコードの対象領域のいずれにも更新対象が一致しないと判定された場合（ＮＯ）には、ステップＳ６０８へ処理を進める。ステップＳ６０５で即時削除ロック変数１１８’の値が「ロック有り（ＬＯＣＫ）」であると判定された場合（ＬＯＣＫ）には、ステップＳ６０７で、即時削除テーブル１２０’の該当削除領域のロック解除待ちを行った後、ステップＳ６０８へ処理を進める。ステップＳ６０８では、更新コマンドに対する処理を実行し、ステップＳ６０９で、当該更新コマンドに関する処理を終了させる。
【００９８】
再び図１１を参照すると、準備コマンド発行後から削除実行コマンド発行までの間に、他のアプリケーションから対象が第１の準備コマンドによる削除対象の範囲に該当する更新コマンドまたは挿入コマンドが発行されると、即時削除ロック変数１１８’の値に応じて、削除処理の完了をまって当該コマンドの処理を継続（ＬＯＣＫの場合）するか、エラー応答（ＮＯＬＯＣＫの場合）されることとなる。
【００９９】
（Ｄ）アーカイブ削除実行コマンド処理部
図１２（Ａ）は、第２の実施形態の削除実行コマンド処理部１４４が実行する処理を示すフローチャートである。図１２（Ａ）に示す処理は、コマンド受信部１１２’が削除実行コマンドを受信したことに応答して、ステップＳ７００から開始する。
【０１００】
削除実行コマンド処理部１４４は、ステップＳ７０１では、受信したコマンドの要求元セッション識別子を特定し、即時削除テーブル１２０’から要求元に紐付けられる削除対象の対象テーブルおよび条件式を取得し、ステップＳ７０２では、取得した情報に従って、要求元セッション識別子に紐付けられる削除対象についての削除処理を実行する。削除実行コマンド発行前に複数の準備コマンドが同一要求元から発行されていた場合には、複数の準備コマンドによる削除対象の削除処理が実行されることとなる。
【０１０１】
また、複数の準備コマンドにより複数のテーブルのレコードを削除する場合、テーブル間に依存関係があれば、その関係に応じて、削除する順番を決定する。例えば、発注情報テーブルと、その詳細情報を記した発注明細情報テーブルをアーカイブする場合、発注明細情報テーブルは発注情報テーブルに依存しているため、発注明細情報テーブルのレコードを先に削除する。この依存関係は、アーカイブする領域の条件に別のテーブルが含まれているかで判断することができる。例えば、発注情報テーブル（ORDERS）と発注明細情報テーブルが発注ID（ORDER_ID）で関係付けられ、発注情報テーブルの発注日（ORDER_DATE）が'200x-01-01'以前の発注明細情報テーブルをアーカイブしたい場合、その条件は、ORDER_ID IN（SELECT ORDER_ID FROM ORDERS）となり、発注明細情報テーブルのアーカイブ領域の条件に発注情報テーブル（ORDERS）が含まれる。
【０１０２】
ステップＳ７０２で削除処理が完了すると、削除実行コマンド処理部１４４は、ステップＳ７０３で、即時削除コマンド用ロックが作成されていればロックを解除および削除し、ステップＳ７０４で、即時削除テーブル１２０’から当該削除実行コマンドによる削除対象の登録を消去し、ステップＳ７０５で当該削除実行コマンドに関する処理を終了させる。
【０１０３】
図１１に示すように、第１の準備コマンド発行後、第３の削除実行コマンドが発行されると、第１の準備コマンドによる処理の際に設定されたロック状態またはロックなしの状態の下、実際の削除処理が行われ、また削除処理が完了すると即時削除テーブル１２０’から登録が消去されることとなる。
【０１０４】
（Ｅ）削除取消コマンド処理部
図１２（Ｂ）は、第２の実施形態の削除取消コマンド処理部１４６が実行する処理を示すフローチャートである。図１２（Ｂ）に示す処理は、コマンド受信部１１２’が削除取消コマンドを受信したことに応答して、ステップＳ８００から開始する。
【０１０５】
ステップＳ８０１では、削除取消コマンド処理部１４６は、受信したコマンドの要求元セッション識別子を特定し、この要求元に紐付けられる削除対象の登録を即時削除テーブル１２０’から消去する。ステップＳ８０２では、削除取消コマンド処理部１４６は、即時削除ロック変数１１８’を参照し、その値が「ロック無し」であるか、「ロック有り」であるかを判定する。ステップＳ８０２で、「ロック無し」であると判定された場合（ＮＯＬＯＣＫ）には、ステップＳ８０４へ処理を進め、当該削除取消コマンドに関する処理を終了させる。
【０１０６】
一方、ステップＳ８０２で、「ロック有り」であると判定された場合（ＬＯＣＫ）には、ステップＳ８０３へ処理を進め、削除取消コマンド処理部１４６は、受信コマンドの要求元に紐付けられる削除対象のロックを解除および削除し、ステップＳ８０４で、当該削除取消コマンドに関する処理を終了させる。これにより、準備コマンドにより登録された削除対象の削除が撤回される。
【０１０７】
図１１に示すように、第１の準備コマンド発行後、第３の削除キャンセルコマンドが発行されると、第１の準備コマンドによる処理の際にロック状態が設定されていた場合には、ロックが解除および削除され、即時削除テーブル１２０’から登録が消去され、これによりアーカイブ準備コマンドによる削除対象の削除を撤回することができる。
（Ｆ）即時削除コマンド処理部
第２の実施形態においても、第１の実施形態による即時削除コマンドを併存させることができる。即時削除コマンド処理部１３０’が実行する処理は、第１の実施形態について図３を参照して説明した処理フローと同様であるため、詳細な説明は割愛するが、共通の即時削除テーブル１２０’を使用して行われる。ただし、本実施形態の即時削除テーブル１２０’の要求元セッション識別子のカラムが、アーカイブ準備コマンドで即時削除テーブル１２０’に登録されても、同じセッションからの要求に限り、削除されてないものとして扱うために導入したものであるため、即時削除コマンドの処理フローにおいては、要求元セッション識別子のカラムには書き込まない。
【０１０８】
上述したアーカイブ準備コマンドによれば、当該コマンドによって条件付けられる削除対象については、即時削除テーブル１２０’に登録された直後から他のアプリケーションによるデータ操作の対象から除外されることとなる。これにより、削除実行コマンドが発行されて削除処理が完了する前であっても、他のアプリケーションからは削除対象が削除済みであるかのよう見えることになる。その一方で、アーカイブ準備コマンドの要求元のアプリケーションからは参照可能であるため、アーカイブにおけるデータ取出しを適切に行うことができる。また、削除実行コマンドによる実際の削除時においても、上述した即時削除コマンドによる削除と同様の利点を得ることが可能となり、メモリ消費量を削減し、ロックエスカレーションの発生も好適に回避することができる。
【０１０９】
［第３実施形態］
上述した第２の実施形態によるＤＢシステム１００’では、アーカイブ準備コマンド発行後のデータ取出しは、同一のデータベースに対してコマンドを発行することにより行われるものとして説明してきた。しかしながら、データ取出しによっても大きな負荷が発生するため、この負荷を低減することが望ましい。以下、複製データベースを用いたデータ取出し方法を提供する第３の実施形態について説明する。なお、第３の実施形態のＤＢシステムにおける各ＤＢサーバのハードウェアおよびソフトウェア構成は、第２の実施形態のものと類似しているため、以下、相違点を中心に説明する。また、第１の実施形態または第２の実施形態と同様の機能を奏する構成については、「”」を付加した同一符番にて参照する。
【０１１０】
図１３は、第３の実施形態のＤＢシステム１００”上に実現される機能ブロックを示す。本実施形態のＤＢシステム１００”は、１以上のＤＢサーバを含み構成され、マスタである本番データベース１１０”Ａと、当該本番データベース１１０”Ａから取得されるレプリカの複製データベース１１０”Ｂとを含む。本番データベース１１０”Ａと、複製データベース１１０”Ｂとは、通常、異なるハードウェア上に実現される。それぞれのデータベース１１０”は、第２の実施形態のものと同様の構成を有しており、コマンド受信部１１２”と、詳細については省略するが即時削除コマンド処理部１３０”およびアーカイブ関連コマンド処理部１４２”〜１４６”等を備えるコマンド処理群１１４”と、即時削除ロック変数１１８”および即時削除テーブル１２０”を格納する削除対象の管理データ部（以下、削除対象管理データ部と参照する。）１２２”と含む。
【０１１１】
一方、本番データベース１１０”Ａでは、そのコマンド受信部１１２”Ａが受信した各種コマンドは、トランザクション・ログ１７０として一時的に蓄積され、適時に複製データベース１１０”Ｂへ伝達する。このため、本実施形態のＤＢシステム１００”では、本番データベース１１０”Ａ側のＤＢサーバ上に、トランザクション・ログ１７０を取得して本番データベース１１０”Ａが受信した各コマンドを複製データベース１１０”Ｂ側へ転送するコマンド検出部１７２が設けられる。さらに、複製データベース１１０”Ｂ側のＤＢサーバ上には、図１３に短形１７４で示す機能部が設けられる。
【０１１２】
複製データベース１１０”Ｂ側に設けられる機能部としては、コマンド検出部１７２から転送される各種コマンドを受信して、複製データベース１１０”Ｂのコマンド受信部１１２”Ｂに伝達するコマンド仲介部１７６と、レプリケーション（複製）によるアーカイブを管理するためのアーカイブ管理テーブルを格納するアーカイブ管理データ部１７８と、アーカイブ処理中のテーブルに関する挿入、更新、通常削除、即時削除等のコマンドを一時的に待機するためのアーカイブ時コマンド受信キュー１８０とを含む。アーカイブ管理テーブルは、第２の実施形態において説明した即時削除テーブルと同一のデータ構造を有し、転送される準備コマンドの対象テーブル、削除領域、要求元セッション識別子を保持するために使用される。
【０１１３】
本実施形態におけるアーカーブ処理の特徴は、本番データベース１１０”Ａに準備コマンドを発行して、本番データベース１１０”Ａにおいて他のアプリケーションによるデータ操作対象から当該削除対象を即時に除外する一方で、複製データベース１１０”Ｂからのデータ取出し可能とする点である。
【０１１４】
本実施形態によるコマンド仲介部１７６は、本番データベース１１０”Ａに発行され、転送されてきたコマンドを複製データベース１１０”Ｂへ転送するが、コマンドの種類や条件に応じて以下の処理を実行する。すなわち、コマンド仲介部１７６は、本番データベース１１０”Ａに発行された準備コマンドを受信した場合には、複製データベース１１０”Ｂに伝達せずに、準備コマンドが条件付ける削除対象をアーカイブ管理テーブルに登録する。テーブルの更新、挿入、通常削除または即時削除のコマンドを受信した場合は、その対象となるテーブルがアーカイブ管理テーブルに登録されていれば、複製データベース１１０”Ｂに直ぐに伝達せずに、アーカイブ時コマンド受信キュー１８０に一旦保持する。
【０１１５】
また、コマンド仲介部１７６は、削除実行コマンドを受信した場合には、当該削除実行コマンドを伝達せずに、複製データベース１１０”Ｂに対し、アーカイブ管理テーブルに登録中の同一要求元の削除対象について、即時削除コマンドを発行し、アーカイブ管理テーブルから登録を消去し、アーカイブ処理が終了したテーブルに関するコマンドがアーカイブ時コマンド受信キュー１８０に存在する場合、受信した順に、コマンドを複製データベース１１０”Ｂに対して発行する。
【０１１６】
またコマンド仲介部１７６は、削除取消コマンドを受信した場合には、当該削除取消コマンドを伝達せずに、アーカイブ管理テーブルから同一要求元の削除対象についての登録を消去し、アーカイブ処理が終了したテーブルに関するコマンドがアーカイブ時コマンド受信キュー１８０に存在する場合、受信した順に、コマンドを複製データベース１１０”Ｂに対して発行する。一方、本番データベース１１０”Ａに発行された上記の条件に該当しないコマンドを受信した場合には、コマンド仲介部１７６は、当該コマンドを複製データベース１１０”Ｂに伝達する。
【０１１７】
なお、本実施形態におけるコマンド仲介部１７６は、本実施形態のコマンド仲介部としてコンピュータ上に実現され、上述した登録処理部および削除処理部に対応する機能部ともいえる。以下、本実施形態の複製データベースを用いたアーカイブ処理について、より詳細に説明する。
【０１１８】
（Ａ）コマンド検出部
図１４（Ａ）は、第３の実施形態におけるコマンド検出部１７２が実行する処理を示すフローチャートである。図１４（Ａ）に示す処理は、当該コマンド検出プログラムが起動されたことに応答して、ステップＳ９００から開始する。ステップＳ９０１では、コマンド検出部１７２は、トランザクション・ログ１７０から本番データベース１１０”Ａに発行済みのコマンドを検出するか、あるいは当該プログラムの停止コマンドを受信する。ステップＳ９０２では、コマンド検出部１７２は、そのコマンドがプログラムの停止コマンドであるか否かを判定する。
【０１１９】
ステップＳ９０２で、停止コマンドであると判定された場合（ＹＥＳ）には、ステップＳ９０４へ処理を進め、本処理を終了させる。一方、ステップＳ９０２で、停止コマンドではなく発行されたコマンドを検出したものと判定された場合（ＮＯ）には、ステップＳ９０３へ処理を進める。ステップＳ９０３では、本番データベース１１０”Ａに発行されたコマンドを複製データベース１１０”Ｂ側のコマンド仲介部１７６に送信し、ステップＳ９０１へループさせ、プログラム停止コマンドを受信するまで当該ループを繰り返す。
【０１２０】
（Ｂ）コマンド仲介部
図１５は、第３の実施形態におけるコマンド仲介部１７６が実行する処理を示すフローチャートである。図１５に示す処理は、当該コマンド仲介プログラムが起動されたことに応答して、ステップＳ１０００から開始する。ステップＳ１００１では、コマンド仲介部１７６は、コマンド検出部１７２から転送されるコマンドを受信するか、あるいは当該プログラムの停止コマンドを受信する。ステップＳ１００２では、コマンド仲介部１７６は、そのコマンドがプログラムの停止コマンドであるか否かを判定する。ステップＳ１００２で、停止コマンドであると判定された場合（ＹＥＳ）には、ステップＳ１０１４へ処理を進め、本処理を終了させる。一方、ステップＳ１００２で、停止コマンドではなく発行されたコマンドを検出したものと判定された場合（ＮＯ）には、ステップＳ１００３へ処理を進める。
【０１２１】
ステップＳ１００３では、コマンド仲介部１７６は、受信したコマンドが準備コマンドであるか否かを判定する。ステップＳ１００３で、コマンドが準備コマンドであると判定された場合（ＹＥＳ）には、ステップＳ１００４へ処理を進める。ステップＳ１００４では、準備コマンドに条件付けられる削除対象の対象テーブルおよび対象領域と、コマンドのセッション識別子をアーカイブ管理テーブルに登録し、ステップＳ１００１にループさせ、プログラム停止コマンドを受信するまで処理を繰り返させる。一方、ステップＳ１００３で、コマンドが準備コマンドではないと判定された場合（ＮＯ）には、ステップＳ１００５へ処理を進める。
【０１２２】
ステップＳ１００５では、コマンド仲介部１７６は、受信したコマンドが削除実行コマンドであるか否かを判定する。ステップＳ１００５で、コマンドが削除実行コマンドであると判定された場合（ＹＥＳ）には、ステップＳ１００６へ処理を進める。ステップＳ１００６では、削除実行コマンドの要求元セッション識別子が一致する削除対象についての即時削除コマンドを複製データベース１１０”Ｂに対し発行する。ステップＳ１００７では、コマンド仲介部１７６は、即時削除コマンドを発行済みの削除対象の登録をアーカイブ管理テーブルから消去する。
【０１２３】
ステップＳ１００８では、アーカイブ処理が終了したテーブルに関連するコマンドがアーカイブ時コマンド受信キュー１８０にある場合、受信した順に、コマンドを複製データベース１１０”Ｂに対して発行し、ステップＳ１００１にループさせる。一方、ステップＳ１００５で、コマンドが削除実行コマンドではないと判定された場合（ＮＯ）には、ステップＳ１００９へ処理を進める。
【０１２４】
ステップＳ１００９では、コマンド仲介部１７６は、受信したコマンドが削除取消コマンドであるか否かを判定する。ステップＳ１００９で、削除取消コマンドであると判定された場合（ＹＥＳ）には、ステップＳ１０１０へ処理を進める。ステップＳ１０１０では、削除取消コマンドの要求元セッション識別子に該当する登録をアーカイブ管理テーブルから消去し、ステップＳ１００８へ処理を進める。
【０１２５】
ステップＳ１００８では、アーカイブ処理が終了したテーブルに関するコマンドがアーカイブ時コマンド受信キュー１８０にある場合、受信した順に、コマンドを複製データベース１１０”Ｂに対して発行し、ステップＳ１００１にループさせる。一方、ステップＳ１００９で、コマンドが削除取消コマンドではないと判定された場合（ＮＯ）には、ステップＳ１０１１へ処理を進める。
【０１２６】
ステップＳ１０１１では、アーカイブ関連コマンド以外のコマンドが、アーカイブ処理中のテーブルに関するものであるか否かを判定する。ステップＳ１０１１で、コマンドがアーカイブ処理中のテーブルに関するものであると判定された場合（ＹＥＳ）には、ステップＳ１０１３で、アーカイブ時コマンド受信キュー１８０に一旦保持する。ステップＳ１０１１で、コマンドがアーカイブ処理中のテーブルに関するものではないと判定された場合（ＮＯ）には、ステップＳ１０１２で、コマンド仲介部１７６は、そのまま複製データベース１１０”Ｂ側に発行し、ステップＳ１００１へループさせる。
【０１２７】
図１４（Ｂ）は、第３の実施形態におけるコマンド仲介部１７６が、クライアントからのアーカイブ処理ステータスの問い合わせに対し実行する処理を示すフローチャートである。図１４（Ｂ）に示す処理は、クライアント上のアーカイブ・アプリケーションからアーカイブ処理のステータスの問い合わせのコマンドを受信して、ステップＳ１１００から開始する。ステップＳ１１０１では、コマンド仲介部１７６は、アーカイブ・アプリケーションからステータス取得の対象となるセッション識別子を受信する。
【０１２８】
ステップＳ１１０２では、コマンド仲介部１７６は、アーカイブ管理テーブルから取得したセッション識別子に該当するレコードを読み出し、ステップＳ１１０３で、そのテーブル名および条件式を、問い合わせに対する応答として返し、ステップＳ１１０４で処理を終了させる。なお、このステータス問い合わせは、トランザクション・ログ１７０に含まれるコマンドが複製データベース側に伝達されるまでにタイムラグがあるため、本番データベース１１０”Ａに発行されたアーカイブ準備コマンドが複製データベース１１０”Ｂ側に届いているか否かを確認するためのものである。
【０１２９】
（Ｃ）アーカイブ・アプリケーション
本実施形態のＤＢシステム１００において、アーカイブ・アプリケーションは、以下に示す処理フローに従うことで、本番データベース１１０”Ａのアーカイブを実行することができる。図１６は、第３の実施形態のＤＢシステム１００においてクライアント上で動作するアーカイブ・アプリケーションが実行する処理を示すフローチャートである。
【０１３０】
図１６に示す処理は、例えばオペレータからのアーカイブの指令がなされたことに応答して、ステップＳ１２００から開始する。ステップＳ１２０１では、アプリケーションは、本番データベース１１０”Ａに対して準備コマンドを発行し、セッションＩＤを取得する。この準備コマンドが発行されると、本番データベース１１０”Ａは、当該準備コマンドの削除対象を即時削除テーブル１２０”Ａに登録し、また適時に複製データベース１１０”Ｂ側のコマンド仲介部１７６に準備コマンドを転送する。
【０１３１】
これにより、本番データベース１１０”Ａ側では、当該準備コマンドにより条件付けられる削除対象が、少なくとも他のアプリケーションにより操作対象から除外される。一方、複製データベース１１０”Ｂ側では、コマンド仲介部１７６は、本番データベース１１０”Ａに発行された準備コマンドを受信し、その削除対象をアーカイブ管理テーブルに登録する。アーカイブ・アプリケーションは、異なるセッション識別子で複製データベース１１０”Ｂにアクセスすることになるが、複製データベース１１０”Ｂには準備コマンドが発行されないため、複製データベース１１０”Ｂのアーカイブ準備された削除対象に対してもアクセスすることができる。
【０１３２】
ステップＳ１２０２では、アプリケーションは、コマンド仲介部１７６に対し問い合わせを行い、取得したセッション識別子に関連するアーカイブのステータスを取得する。ステップＳ１２０３では、アプリケーションは、ステータスを取得できたか否かを判定する。ステップＳ１２０３で、ステータスが取得できなかった場合（ＮＯ）には、一時待機した後ステップＳ１２０２へループさせ、ステータス取得ができるまで、あるいはタイムアウトするまで処理を繰り返させる。一方、ステップＳ１２０３で、ステータスが取得できた場合（ＹＥＳ）には、ステップＳ１２０４へ処理を進める。このステータス確認により、本番データベース１１０”Ａに発行された準備コマンドによる削除対象がアーカイブ管理テーブルに登録されていることが確認できる。
【０１３３】
ステップＳ１２０４では、アプリケーションは、複製データベース１１０”Ｂから既存のＳＱＬ文などによりデータ取出しを行う。必要なデータの取出しが完了すると、ステップＳ１２０５で、アプリケーションは、本番データベース１１０”Ａに対して削除実行コマンドを発行し、ステップＳ１２０６で処理を終了させる。
【０１３４】
この削除実行コマンドを受信すると、本番データベース１１０”Ａは、即時削除テーブル１２０”Ａに登録された準備コマンドによる削除対象について、削除処理を実行し、完了とともに該即時削除テーブル１２０”Ａから登録を消去する。また適時に複製データベース１１０”Ｂ側のコマンド仲介部１７６に対し、当該削除実行コマンドを転送する。
【０１３５】
一方、複製データベース１１０”Ｂ側では、上記削除実行コマンドを受けてコマンド仲介部１７６は、アーカイブ管理テーブルに登録中の要求元が一致する削除対象について、複製データベース１１０”Ｂに対し即時削除コマンドを発行するとともに、アーカイブ管理テーブルから登録を消去する。図１３に示すアーカイブ管理テーブルの状態で、同一要求元（セッション識別子が「1234」）から削除実行コマンドを受けた場合、例えば、「DELETE IMMEDIATE FROM MSG WHERE DATE<’200x-01-01’」というコマンドが複製データベースに発行される。これを受けて、複製データベース１１０”Ｂでは、即時削除コマンドによる削除対象を削除対象管理データ部１２２”Ｂの即時削除テーブル１２０”Ｂに登録するとともに、複製データベース１１０”Ｂから削除対象を削除する。削除が完了した削除対象については、該即時削除テーブル１２０”Ｂから登録を消去する。
【０１３６】
上述した第３の実施形態のアーカイブ処理によれば、当該アーカイブ準備コマンドによって条件付けられる削除対象については、本番データベース１１０”Ａでは、即時削除テーブル１２０”Ａに登録された直後から他のアプリケーションによるデータ操作の対象から除外されることとなる。その一方で、複製データベース１１０”Ｂでは、まだデータ操作の対象から除外されていない状態であるため、アーカイブ準備コマンドを発行後、複製データベース１１０”Ｂ側からデータ取出しを行うことができ、データ取出しにより発生する負荷を本番データベース１１０”Ａから切り離すことができる。
【０１３７】
以上説明したように、本発明によれば、削除が現に要求された削除対象、またはアーカイブにおける予定される削除対象について、即時処理を指令するコマンド受領直後から、トランザクション分離レベルによらずデータ操作の対象から除外し、削除中のデータを参照すべきではないアプリケーションに対しては、削除対象がデータベースから削除済みであるように振る舞うことが可能な情報処理装置、情報処理システム、データ・アーカイブ方法およびデータ削除方法を提供することができる。これにより、削除対象のデータが参照されてしまうことで、存在すべきでない削除データが照会結果に含まれたり、ロック解除待ちとなってしまったりするという問題の発生を回避することが可能となる。
【０１３８】
なお、本発明につき、発明の理解を容易にするために各機能部および各機能部の処理を記述したが、本発明は、上述した特定の機能部が特定の処理を実行する外、処理効率や実装上のプログラミングなどの効率を考慮して、いかなる機能部にも、上述した処理を実行するための機能を割当てることができる。
【０１３９】
本発明の上記機能は、Ｃ＋＋、Ｊａｖａ（登録商標）、Ｊａｖａ（登録商標）Ｂｅａｎｓ、Ｊａｖａ（登録商標）Ａｐｐｌｅｔ、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔ、Ｐｅｒｌ、Ｒｕｂｙなどのオブジェクト指向プログラミング言語、ＳＱＬなどのデータベース言語などで記述された装置実行可能なプログラムにより実現でき、装置可読な記録媒体に格納して頒布または伝送して頒布することができる。
【０１４０】
これまで本発明を、特定の実施形態をもって説明してきたが、本発明は、実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【０１４１】
１０…ＤＢサーバ、１２…中央処理装置（ＣＰＵ）、１４…キャッシュ・メモリ、１６…システム・メモリ、１８…システム・バス、２０…グラフィックス・ドライバ、２２…ネットワーク・インタフェース・カード（ＮＩＣ）、２４…ディスプレイ、２６…Ｉ／Ｏバス・ブリッジ、２８…Ｉ／Ｏバス、３０…ハードディスク、３２…入力装置、３４…コンピュータ装置、４０…ネットワーク、５０…クライアント、１００…ＤＢシステム、１１０…データベース、１１２…コマンド受信部、１１４…コマンド処理群、１１６…データベース記憶部、１１８…即時削除ロック変数、１２０…即時削除テーブル、１２２…管理データ部、１３０…即時削除コマンド処理部、１３２…照会コマンド処理部、１３４…通常削除コマンド処理部、１３６…更新コマンド処理部、１３８…挿入コマンド処理部、１４０…コマンド処理部、１４２…アーカイブ準備コマンド処理部、１４４…アーカイブ削除実行処理部、１４６…アーカイブ削除取消処理部、１５２…ＤＢ接続ＡＰＩ、１５４…アプリケーション、１７０…トランザクション・ログ、１７２…コマンド検出部、１７６…コマンド仲介部、１７８…アーカイブ管理データ部、１８０…アーカイブ時コマンド受信キュー
【図１】
2011150458.tif 000003
【図２】
2011150458.tif 000004
【図３】
2011150458.tif 000005
【図４】
2011150458.tif 000006
【図５】
2011150458.tif 000007
【図６】
2011150458.tif 000008
【図７】
2011150458.tif 000009
【図８】
2011150458.tif 000010
【図９】
2011150458.tif 000011
【図１０】
2011150458.tif 000012
【図１１】
2011150458.tif 000013
【図１２】
2011150458.tif 000014
【図１３】
2011150458.tif 000015
【図１４】
2011150458.tif 000016
【図１５】
2011150458.tif 000017
【図１６】
2011150458.tif 000018