(57)【要約】【課題】ログデータ内の各レコードが不連続の場合でも各レコードが不当に削除されていないことを保証する。【解決手段】ＣＰＵ１４においては、ログデータ７から最新のレコードＩＤである親レコードＩＤを取得すると共に、新たに子レコードＩＤを生成し、親レコードＩＤ及び子レコードＩＤからなる一組のレコードＩＤのうちの子レコードＩＤと、ログ情報とからなるレコードを追加するようにログデータ７を更新し、一組のレコードＩＤを追加するようにログ連鎖情報８を更新し、ログ連鎖情報８内の全ての子レコードＩＤが個別にログデータ７内の各レコードＩＤのいずれかに一致することを検証する。【選択図】図２
2011053963.tif 000002
【特許請求の範囲】
【請求項１】
レコードＩＤ及びログ情報からなる各レコードが順次追加されるログデータを記憶可能な記憶手段を有し、且つ複数のアプリケーション処理を実行して当該各アプリケーション処理のログ情報を前記ログデータに記録する計算機に用いられるログ記録用プログラムであって、
前記記憶手段は、親レコードＩＤ及び子レコードＩＤからなる一組のレコードＩＤが順次追加されるログ連鎖情報を更に記憶しており、
前記ログ記録用プログラムは、複数のレコードＩＤ取得プログラム、レコードＩＤ生成プログラム、ログ書込プログラム、連鎖情報更新プログラム及びログ検証プログラムを備えており、
前記計算機に、
前記ログ書込プログラムに基づくログ書込処理を実行する機能、
前記連鎖情報更新プログラムに基づく連鎖情報更新処理を実行する機能、
前記各アプリケーション処理から個別に前記レコードＩＤ取得プログラムが呼ばれると、当該レコードＩＤ取得プログラムに基づくレコードＩＤ取得処理を実行する機能、
前記レコードＩＤ取得処理により、前記レコードＩＤ生成プログラムを呼び出す機能、
前記レコードＩＤ取得処理から呼び出されたレコードＩＤ生成プログラムに基づくレコードＩＤ生成処理を実行する機能、
前記レコードＩＤ取得処理により、レコードＩＤ取得要求を前記レコードＩＤ生成処理に送出する機能、
前記レコードＩＤ生成処理により、前記レコードＩＤ取得処理からレコードＩＤ取得要求を受けたとき、前記記憶手段内のログデータから最新のレコードのレコードＩＤである親レコードＩＤを取得すると共に、当該レコードＩＤ取得要求に対応して新たに子レコードＩＤを生成する機能、
前記レコードＩＤ生成処理により、前記親レコードＩＤ及び前記子レコードＩＤからなる一組のレコードＩＤをレコードＩＤ取得処理に返す機能、
前記レコードＩＤ取得処理により、前記レコードＩＤ生成処理から取得した一組のレコードＩＤと、前記アプリケーション処理から受けたログ情報とを前記ログ書込処理に送出する機能、
前記ログ書込処理により、前記レコードＩＤ取得処理から受けた一組のレコードＩＤのうちの子レコードＩＤと、当該レコードＩＤ取得処理から受けたログ情報とからなるレコードを追加するように前記記憶手段内のログデータを更新する機能、
前記ログ書込処理により、前記レコードＩＤ取得処理から受けた一組のレコードＩＤを前記連鎖情報更新処理に送出する機能、
前記連鎖情報更新処理により、前記ログ書込処理から受けた一組のレコードＩＤを追加するように前記記憶手段内のログ連鎖情報を更新する機能、
前記ログ検証プログラムに基づくログ検証処理の実行により、前記ログ連鎖情報内の全ての子レコードＩＤが個別に前記ログデータ内の各レコードＩＤのいずれかに一致することを検証し、検証結果を出力する機能、
を実現させるためのログ記録用プログラム。
【請求項２】
請求項１に記載のログ記録用プログラムにおいて、
前記ログ書込処理は、前記ログデータが一定量になったとき、当該ログデータ内のレコードの先頭の位置から途中の位置までの削除対象領域内の各レコードを削除する処理を更に含んでおり、
前記連鎖情報更新処理は、
前記ログ書込処理により前記削除対象領域内の各レコードが削除される場合に、前記ログデータにおける当該削除対象領域とは異なる領域内の所定個数のレコードＩＤと、前記ログ連鎖情報内の子レコードＩＤとを比較し、前記異なる領域内のレコードＩＤに一致した子レコードＩＤのうち、最前の子レコードＩＤの位置を求める処理と、
この最前の子レコードＩＤの位置よりも前の位置に記憶された各組のレコードＩＤを前記ログ連鎖情報から削除する処理と、
を更に含んでいることを特徴とするログ記録用プログラム。
【請求項３】
請求項１に記載のログ記録用プログラムにおいて、
前記ログ書込処理は、前記ログデータが一定量になったとき、前記ログデータの最古の位置から途中の位置までの削除対象領域内の各レコードを削除する処理と、当該削除対象領域の直後の位置にレコードを書き込む場合に、前記直後の位置のレコードＩＤを連鎖情報更新処理に通知する処理とを更に含んでおり、
前記連鎖情報更新処理は、
前記ログ書込処理から通知されたレコードＩＤを子レコードＩＤとして含む一組のレコードＩＤを追加するように前記ログ連鎖情報を更新する場合、この一組のレコードＩＤを追加した位置を前記記憶手段に書き込む処理と、
この追加した位置よりも前の位置に記憶された各組のレコードＩＤを前記ログ連鎖情報から削除する処理と、
を更に含んでいることを特徴とするログ記録用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レコード毎にログデータを記録するためのログ記録用プログラムに係り、例えば、ログデータ内の各レコードが不連続の場合でも各レコードが不当に削除されていないことを保証し得るログ記録用プログラムに関する。
【背景技術】
【０００２】
アプリケーションやＯＳ（Operating System）における事象は、レコード毎にログデータに記録される。このようなログデータは監査に利用されることもある。ログデータを監査に利用する場合には、ログデータ内の各レコードが不当に削除されていないことを保証する必要がある。
【０００３】
この種の技術としては、例えば、連続して発生するデータに対し、前データと現データを含むデータを組み立て、そのデータ毎にデジタル署名を施した保管データを記憶し、前保管データの現データと現保管データの前データが一致することにより、保管データの連続性を保証するものがある（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−１４３１３９号公報（第２０段落、図２、要約）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら特許文献１記載の技術は、通常は特に問題無いが、本発明者の検討によれば、マルチスレッドのような並行処理により不連続にデータ（ログデータ内の各レコード）を保管する場合には適用できない点で改善の余地がある。
【０００６】
本発明は上記実情を考慮してなされたもので、ログデータ内の各レコードが不連続の場合でも各レコードが不当に削除されていないことを保証し得るログ記録用プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一つの局面は、レコードＩＤ及びログ情報からなる各レコードが順次追加されるログデータを記憶可能な記憶手段を有し、且つ複数のアプリケーション処理を実行して当該各アプリケーション処理のログ情報を前記ログデータに記録する計算機に用いられるログ記録用プログラムであって、前記記憶手段としては、親レコードＩＤ及び子レコードＩＤからなる一組のレコードＩＤが順次追加されるログ連鎖情報を更に記憶しており、前記ログ記録用プログラムとしては、複数のレコードＩＤ取得プログラム、レコードＩＤ生成プログラム、ログ書込プログラム、連鎖情報更新プログラム及びログ検証プログラムを備えており、前記計算機に、前記ログ書込プログラムに基づくログ書込処理を実行する機能、前記連鎖情報更新プログラムに基づく連鎖情報更新処理を実行する機能、前記各アプリケーション処理から個別に前記レコードＩＤ取得プログラムが呼ばれると、当該レコードＩＤ取得プログラムに基づくレコードＩＤ取得処理を実行する機能、前記レコードＩＤ取得処理により、前記レコードＩＤ生成プログラムを呼び出す機能、前記レコードＩＤ取得処理から呼び出されたレコードＩＤ生成プログラムに基づくレコードＩＤ生成処理を実行する機能、前記レコードＩＤ取得処理により、レコードＩＤ取得要求を前記レコードＩＤ生成処理に送出する機能、前記レコードＩＤ生成処理により、前記レコードＩＤ取得処理からレコードＩＤ取得要求を受けたとき、前記記憶手段内のログデータから最新のレコードのレコードＩＤである親レコードＩＤを取得すると共に、当該レコードＩＤ取得要求に対応して新たに子レコードＩＤを生成する機能、前記レコードＩＤ生成処理により、前記親レコードＩＤ及び前記子レコードＩＤからなる一組のレコードＩＤをレコードＩＤ取得処理に返す機能、前記レコードＩＤ取得処理により、前記レコードＩＤ生成処理から取得した一組のレコードＩＤと、前記アプリケーション処理から受けたログ情報とを前記ログ書込処理に送出する機能、前記ログ書込処理により、前記レコードＩＤ取得処理から受けた一組のレコードＩＤのうちの子レコードＩＤと、当該レコードＩＤ取得処理から受けたログ情報とからなるレコードを追加するように前記記憶手段内のログデータを更新する機能、前記ログ書込処理により、前記レコードＩＤ取得処理から受けた一組のレコードＩＤを前記連鎖情報更新処理に送出する機能、前記連鎖情報更新処理により、前記ログ書込処理から受けた一組のレコードＩＤを追加するように前記記憶手段内のログ連鎖情報を更新する機能、前記ログ検証プログラムに基づくログ検証処理の実行により、前記ログ連鎖情報内の全ての子レコードＩＤが個別に前記ログデータ内の各レコードＩＤのいずれかに一致することを検証し、検証結果を出力する機能、を実現させるためのログ記録用プログラムである。
【０００８】
なお、本発明の一つの局面は、プログラムとして表現したが、これに限らず、装置、方法、プログラムを記憶した記憶媒体として表現することもできる。
【０００９】
（作用）
本発明の一つの局面においては、ログデータから最新のレコードＩＤである親レコードＩＤを取得すると共に、新たに子レコードＩＤを生成し、親レコードＩＤ及び子レコードＩＤからなる一組のレコードＩＤのうちの子レコードＩＤと、ログ情報とからなるレコードを追加するようにログデータを更新し、一組のレコードＩＤを追加するようにログ連鎖情報を更新し、ログ連鎖情報内の全ての子レコードＩＤが個別にログデータ内の各レコードＩＤのいずれかに一致することを検証する構成により、ログデータ内の各レコードが不連続の場合でも各レコードが不当に削除されていないことを保証できる。
【発明の効果】
【００１０】
以上説明したように本発明によれば、ログデータ内の各レコードが不連続の場合でも各レコードが不当に削除されていないことを保証できる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１の実施形態に係るログ記録用プログラムが適用された計算機の構成を示す模式図である。
【図２】同実施形態における動作を説明するための模式図である。
【図３】同実施形態における動作を説明するための模式図である。
【図４】同実施形態における動作を説明するためのフローチャートである。
【図５】本発明の第２の実施形態における動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の各実施形態について図面を用いて説明する。  
（第１の実施形態）
図１は本発明の第１の実施形態に係るログ記録用プログラムが適用された計算機の構成を示す模式図である。この計算機１０は、主記憶装置１１、補助記憶装置１２、入出力部１３及びＣＰＵ１４が互いにバスを介して接続されている。
【００１３】
ここで、主記憶装置１１は、プログラム実行時に用いられるＲＡＭ等の記憶装置であり、プログラム実行前に、補助記憶装置１２から個別に読み出された複数のアプリケーションプログラム１ａ，１ｂ，…、複数のレコードＩＤ取得プログラム２ａ，２ｂ，…、レコードＩＤ生成プログラム３、ログ書込プログラム４、連鎖情報更新プログラム５、ログ検証プログラム６、ログデータ７及びログ連鎖情報８が記憶され、電源オフ時の直前に記憶内容が補助記憶装置１２に移される。なお、各レコードＩＤ取得プログラム２ａ，２ｂ，…、レコードＩＤ生成プログラム３、ログ書込プログラム４、連鎖情報更新プログラム５及びログ検証プログラム６は、ログ記録用プログラムを構成している。また、レコードＩＤ生成プログラム３は、必ずしも１つである必要は無く、複数のレコードＩＤ生成プログラムの各々が互いに唯一の子レコードＩＤを生成可能であれば、複数のレコードＩＤ生成プログラム３としてもよい。ログ書込プログラム４は、複数のログ書込プログラム４として互いに排他制御しながら処理を実行する構成としてもよいが、排他制御の分だけ処理が複雑になることから、１つのログ書込プログラムとした方が好ましい。
【００１４】
各アプリケーションプログラム１ａ，１ｂ，…は、所定のアプリケーション処理を実行する機能と、当該アプリケーション処理に伴い、各レコードＩＤ取得プログラム２ａ，２ｂ，…を呼び出す機能と、各アプリケーション処理のログ情報を各レコードＩＤ取得処理に渡す機能と、を計算機１０に実現させるためのプログラムである。
【００１５】
各レコードＩＤ取得プログラム２ａ，２ｂ，…は、アプリケーション処理から呼ばれると、当該レコードＩＤ取得プログラム２ａ，２ｂ，…に基づくレコードＩＤ取得処理を実行する機能、レコードＩＤ取得処理により、レコードＩＤ生成プログラム３を呼び出す機能、レコードＩＤ取得処理により、レコードＩＤ取得要求をレコードＩＤ生成処理に送出する機能、レコードＩＤ取得処理により、レコードＩＤ生成処理から取得した一組のレコードＩＤと、アプリケーション処理から受けたログ情報とをログ書込処理に送出する機能、を計算機１０に実現させるためのプログラムである。
【００１６】
レコードＩＤ生成プログラム３は、レコードＩＤ取得処理から呼ばれると、当該レコードＩＤ生成プログラム３に基づくレコードＩＤ生成処理を実行する機能、レコードＩＤ生成処理により、レコードＩＤ取得処理からレコードＩＤ取得要求を受けたとき、主記憶装置１１内のログデータ７から最新のレコードのレコードＩＤ（以下、親レコードＩＤという）を取得すると共に、レコードＩＤ取得処理に対応して新たに唯一のレコードＩＤ（以下、子レコードＩＤという）を生成する機能、レコードＩＤ生成処理により、当該親レコードＩＤ及び子レコードＩＤからなる一組のレコードＩＤをレコードＩＤ取得処理に返す機能、を計算機１０に実現させるためのプログラムである。
【００１７】
ログ書込プログラム４は、当該ログ書込プログラム４に基づくログ書込処理を実行する機能、ログ書込処理により、レコードＩＤ取得処理から受けた一組のレコードＩＤのうちの子レコードＩＤと、レコードＩＤ取得処理から受けたログ情報とからなるレコードを追加するように主記憶装置１１内のログデータ７を更新する機能と、ログ書込処理により、レコードＩＤ取得処理から受けた一組のレコードＩＤを連鎖情報更新処理に送出する機能と、を計算機１０に実現させるためのプログラムである。ここで、ログ書込処理は、ログデータ７が一定量になったとき、当該ログデータ７内のレコードの先頭の位置から途中の位置までの削除対象領域内の各レコードを削除する処理を更に含んでいる。
【００１８】
連鎖情報更新プログラム５は、当該連鎖情報更新プログラム５に基づく連鎖情報更新処理を実行する機能、連鎖情報更新処理により、ログ書込処理から受けた一組のレコードＩＤを追加するように主記憶装置１１内のログ連鎖情報８を更新する機能、を計算機１０に実現させるためのプログラムである。ここで、連鎖情報更新処理は、ログ書込処理により削除対象領域内の各レコードが削除される場合に、ログデータ７における当該削除対象領域とは異なる領域内の所定個数のレコードＩＤと、ログ連鎖情報８内の子レコードＩＤとを比較し、異なる領域内のレコードＩＤに一致した子レコードＩＤのうち、最前の子レコードＩＤの位置を求める処理、この最前の子レコードＩＤの位置よりも前の位置に記憶された各組のレコードＩＤをログ連鎖情報８から削除する処理、を更に含んでいる。
【００１９】
ログ検証プログラム６は、当該ログ検証プログラム６に基づくログ検証処理の実行により、ログ連鎖情報８内の全ての子レコードＩＤが個別にログデータ７内の各レコードＩＤのいずれかに一致することを検証し、検証結果を出力する機能、を計算機１０に実現させるためのプログラムである。
【００２０】
ログデータ７は、ログ書込処理により、レコードＩＤ及びログ情報からなる各レコードが順次追加書き込みされるデータである。ログデータ７は、所定の容量を超えた場合、古い領域が削除後に再利用されることにより、主記憶装置１１の一定領域にサイクリックに書き込まれる。
【００２１】
ログ連鎖情報８は、連鎖情報更新処理により、親レコードＩＤ及び子レコードＩＤからなる一組のレコードＩＤが順次追加書き込みされてなる情報である。ログ連鎖情報８は、ログデータ７の削除に伴い、ログデータの削除対象領域に対応する領域が削除後に再利用されることにより、主記憶装置１１の一定領域にサイクリックに書き込まれる。なお、ログデータ７とログ連鎖情報８は、互いに書き込みの権限が分離されている。
【００２２】
補助記憶装置１２は、電源オフ時に記憶内容を維持するためのハードディスク装置等の不揮発性記憶装置であり、複数のアプリケーションプログラム１ａ，１ｂ，…、ログ記録用プログラム、ログデータ７及びログ連鎖情報８が記憶されている。
【００２３】
入出力部１３は、外部と計算機１０内部との間の入出力インターフェイスである。例えば計算機１０が利用者端末の場合には、入出力部１３は、キーボード、マウス及び表示装置といった入力装置及び出力装置である。計算機１０がサーバ装置の場合には、入出力部１３は、外部ネットワークに対する通信インターフェイスである。本実施形態では、入出力部が入力装置及び出力装置である場合を例に挙げて述べる。
【００２４】
ＣＰＵ１４は、通常のＣＰＵ機能を有し、例えば、入出力部１３との間のデータの入出力機能と、各記憶装置１１，１２に対する読出／書込機能と、主記憶装置１１内の各プログラムを実行する機能とをもっている。
【００２５】
次に、以上のように構成された計算機１０のログ記録用プログラムに関する動作について図２乃至図４を用いて説明する。  
［ログ記録処理］
計算機１０においては、例えば利用者による入出力部１３の操作により、ＣＰＵ１４が複数のアプリケーションプログラム１ａ，１ｂ，…を起動したとする。また、ＣＰＵ１４は、各アプリケーションプログラム１ａ，１ｂ，…に基づくアプリケーション処理を並列に実行し、且つログ書込プログラム４に基づくログ書込処理と、連鎖情報更新プログラム５に基づく連鎖情報更新処理とをそれぞれ実行中であるとする。
【００２６】
ＣＰＵ１４は、図２に示すように、例えばあるアプリケーションプログラム１ａに基づくアプリケーション処理に伴い、レコードＩＤ取得プログラムを呼び出してレコードＩＤ取得プログラム１ａに基づくレコードＩＤ取得処理を実行すると共に、当該アプリケーション処理のログ情報をレコードＩＤ取得処理に渡す（ＳＴ１）。
【００２７】
ＣＰＵ１４は、第１レコードＩＤ取得処理により、レコードＩＤ生成プログラム３を呼び出してレコードＩＤ生成プログラム３に基づくレコードＩＤ生成処理を実行する。
【００２８】
ＣＰＵ１４は、レコードＩＤ取得処理により、レコードＩＤ取得要求をレコードＩＤ生成処理に送出する（ＳＴ２）。
【００２９】
ＣＰＵ１４は、レコードＩＤ生成処理により、レコードＩＤ取得要求を受けたとき、主記憶装置１１内のログデータ７から最新のレコードのレコードＩＤである親レコードＩＤ（例、図３のＩＤ０）を取得すると共に（ＳＴ３）、レコードＩＤ取得要求に対応して新たに唯一の子レコードＩＤ（例、図３のＩＤ１）を生成する。
【００３０】
しかる後、ＣＰＵ１４は、レコードＩＤ生成処理により、これら親レコードＩＤ（ＩＤ０）及び子レコードＩＤ（ＩＤ１）からなる一組のレコードＩＤ（ＩＤ０，ＩＤ１）を、レコードＩＤ取得処理に返す（ＳＴ４）。
【００３１】
ＣＰＵ１４は、レコードＩＤ取得処理により、レコードＩＤ生成処理で取得した一組のレコードＩＤ（ＩＤ０，ＩＤ１）と、アプリケーション処理で取得したログ情報とをログ書込処理に渡す（ＳＴ５）。
【００３２】
ＣＰＵ１４は、ログ書込処理により、レコードＩＤ取得処理から受けた一組のレコードＩＤ（ＩＤ０，ＩＤ１）のうちの子レコードＩＤと、レコードＩＤ取得処理から受けたログ情報とからなるレコードを追加するように主記憶装置１１内のログデータ７を更新する（ＳＴ６）。更に、この一組のレコードＩＤ（ＩＤ０，ＩＤ１）を連鎖情報更新処理に渡す（ＳＴ７）。
【００３３】
ＣＰＵ１４は、連鎖情報更新処理により、受けたレコードＩＤ（ＩＤ０，ＩＤ１）を追加するように主記憶装置１１内のログ連鎖情報８を更新する（ＳＴ８）。
【００３４】
なお、以上のステップＳＴ１〜ＳＴ８は、他のアプリケーションプログラム１ｂ，…に基づくアプリケーション処理に対しても同様に実行される。ここで、各アプリケーションプログラム１ａ，１ｂ，…間でステップＳＴ１〜ＳＴ８が並列に実行されることから、各アプリケーションプログラム１ａ，１ｂ，…間でレコードＩＤを生成した順序とログデータが書き込まれた順序とが逆転する可能性があることから、ログデータ７における各レコードのレコードＩＤが不連続になる場合がある。
【００３５】
しかしながら、このような場合であっても、次の［検証処理］で述べるように、ログ連鎖情報８の全ての子レコードＩＤがログデータ７のレコードＩＤにあれば、ログデータ７のレコードＩＤに抜けがないことが確認できるので、ログデータ７のレコードの不正な削除が無いことを保証することができる。
【００３６】
［検証処理］
ログの健全性（不正に削除されたレコードが無いこと）を確認するには、ログ連鎖情報８の子レコードＩＤの全てが、ログのレコードＩＤとして現れることを検証により示す。ログとログ連鎖情報８は書込み権限が分離されているので、不正にログ連鎖情報８の一部を削除できない。もしログの中に削除されたレコードがあった場合、削除されたログのレコードＩＤはログ連鎖情報８の子のレコードＩＤとして必ず現れる。よって、ログ連鎖情報８の子レコードＩＤが全てログのレコードＩＤとして現れれば、ログデータ７のレコードの不正な削除が無いことが確認される。
【００３７】
具体的には、ＣＰＵ１４は、ログ連鎖情報８内の全ての子レコードＩＤが個別にログデータ７内の各レコードＩＤのいずれかに一致することを検証し、検証結果を入出力部１３に出力する。
【００３８】
入出力部１３は、この検証結果を表示出力又は印刷出力する等により、利用者に検証結果を提示する。
【００３９】
［ログデータ７等の削除処理］
ログデータ７が一定量を超え、一部の領域が再利用のために削除される場合の処理について説明する。始めに、ログデータ７内のレコードＩＤの順序は、レコードＩＤ生成処理により生成した順序になるとは限らない。例えば、ＩＤｎ，ＩＤ(n+1)の順に生成されたレコードＩＤがログデータ７内にＩＤｎ，ＩＤ(n+1)の順に書き込まれるとは限らない。理由は、マルチスレッド等の並列処理において、後から開始したスレッドが先に終了する場合に、後に生成したレコードＩＤを先にログデータ７に書き込むことになるからである。同様に、ログデータ７内のレコードＩＤの順序と、ログ連鎖情報８内の子レコードＩＤの順序との関係も逆転が生じる可能性がある。
【００４０】
そこで、ログデータ７の一部の領域（削除対象領域）Ｘを削除する場合に、この削除に応じてログ連鎖情報８内で削除可能領域Ｘ’を確定し、この削除可能領域Ｘ’のログ連鎖情報８を削除する必要がある。なお、削除可能領域Ｘは、ログ連鎖情報８において、ログデータ７の削除対象領域ＸのレコードＩＤのみを子レコードＩＤに含む領域である。
【００４１】
具体的には、ＣＰＵ１４は、ログ書込処理において、ログデータ７が一定量になったとき、当該ログデータ７内のレコードの先頭の位置から途中の位置までの削除対象領域Ｘ内の各レコードを削除する。
【００４２】
また、ＣＰＵ１４は、連鎖情報更新処理において、ログ書込処理により削除対象領域Ｘ内の各レコードが削除される場合に、ログデータ７における当該削除対象領域Ｘとは異なる領域Ａ内の所定個数Ｎ個のレコードＩＤと、ログ連鎖情報８内の子レコードＩＤとを比較し、異なる領域Ａ内のレコードＩＤに一致した子レコードＩＤのうち、最前の子レコードＩＤ（図３のＩＤｘ）の位置を求める。
【００４３】
さらに、ＣＰＵ１４は、この最前の子レコードＩＤの位置よりも前の位置に記憶された各組のレコードＩＤを（削除可能領域Ｘ’として）ログ連鎖情報８から削除する。
【００４４】
以上の処理は、例えば図４のフローチャートに示すように実行される。
【００４５】
すなわち、ＣＰＵ１４は、ログデータ７の削除されない領域Ａのうち、ログ連鎖情報８との間で逆転が生じる可能性があるレコードの個数Ｎを決定する（ＳＴ１１）。この記録数Ｎは、予め連鎖情報更新プログラム５に書き込まれていてもよく、入出力部１３を介して利用者に入力を促してもよい。また、領域Ａの先頭のレコードＩＤ（図３のＩＤ(n+1)）を検索キーとする。
【００４６】
続いて、ＣＰＵ１４は、検索キーとした領域ＡのレコードＩＤに基づき、ログ連鎖情報８の子レコードＩＤを検索し（ＳＴ１２）、一致する子レコードＩＤがあるか否かを判定する（ＳＴ１３）。ステップＳＴ１３の判定の結果、一致する子レコードが無ければ（ＳＴ１３；Ｎｏ）、ステップＳＴ１６に進む。
【００４７】
一方、ステップＳＴ１３の判定の結果、一致する子レコードがあれば（ＳＴ１３；Ｙｅｓ）、一致する子レコードＩＤの位置が既に記憶された位置よりも前か否かを判定し（ＳＴ１４）、否であれば、ステップＳＴ１６に進む。
【００４８】
ステップＳＴ１４の判定の結果、前であれば（ＳＴ１４；Ｙｅｓ）、今回の子レコードＩＤの位置を主記憶装置１１に記憶し（ＳＴ１５）、ステップＳＴ１６に進む。
【００４９】
続いて、ＣＰＵ１４は、領域ＡのＮ個のレコードＩＤを検索したか否かを判定し（ＳＴ１６）、否であれば、領域Ａの他のレコードＩＤを検索キーとしてステップＳＴ１２に戻る（ＳＴ１７）。
【００５０】
また、ＣＰＵ１４は、Ｎ個のレコードＩＤを検索した場合（ＳＴ１６；Ｙｅｓ）には、ステップＳＴ１５で記憶した位置よりも前の位置のログ連鎖情報８を削除する（ＳＴ１８）。
【００５１】
上述したように本実施形態によれば、ＣＰＵ１４が、ログデータ７から最新のレコードＩＤである親レコードＩＤを取得すると共に、新たに子レコードＩＤを生成し、親レコードＩＤ及び子レコードＩＤからなる一組のレコードＩＤのうちの子レコードＩＤと、ログ情報とからなるレコードを追加するようにログデータ７を更新し、一組のレコードＩＤを追加するようにログ連鎖情報８を更新し、ログ連鎖情報８内の全ての子レコードＩＤが個別にログデータ７内の各レコードＩＤのいずれかに一致することを検証する構成により、ログデータ内の各レコードが不連続の場合でも各レコードが不当に削除されていないことを保証することができる。
【００５２】
また、ログデータ７が所定の容量内に制限される場合が多いことから、ログデータ７の削除対象領域の各レコードを削除して新たなレコードを書き込む。また、ログデータ７の各レコードの削除に伴い、ログ連鎖情報８におけるログデータの削除対象領域に対応する領域を削除することにより、ログデータ７及びログ連鎖情報８において、それぞれ削除した領域を再利用することができる。これにより、ログデータ７が所定の容量に制限された場合であっても、ログデータ７を主記憶装置１１の一定領域にサイクリックに書き込むことができる。
【００５３】
さらに、ログデータ７の削除しない領域Ａのうち、逆転が生じる可能性があるレコードの個数Ｎ個を決定し、当該領域ＡのうちのＮ個のレコードＩＤについてログ連鎖情報を検索する構成としたので、削除しない領域Ａの全てのレコードＩＤについてログ連鎖情報を検索する場合に比べ、検索する回数を低減することができる。
【００５４】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。  
本実施形態は、第１の実施形態における［ログデータ７等の削除処理］の変形例であり、具体的には、ログ書込処理及び連鎖情報更新処理が次のように変形されている。
【００５５】
すなわち、ログ書込処理は、ログデータ７が一定量になったとき、ログデータ７の最古の位置から途中の位置までの削除対象領域Ｘ内の各レコードを削除する処理と、当該削除対象領域Ｘの直後の位置（領域Ａの先頭位置）にレコードを書き込む場合に、直後の位置のレコードＩＤを連鎖情報更新処理に通知する処理とを備えている。
【００５６】
連鎖情報更新処理は、ログ書込処理から通知されたレコードＩＤを子レコードＩＤとして含む一組のレコードＩＤを追加するようにログ連鎖情報８を更新する場合、この一組のレコードＩＤを追加した位置を主記憶装置１１に書き込む処理と、この追加した位置よりも前の位置に記憶された各組のレコードＩＤをログ連鎖情報８から削除する処理とを備えている。
【００５７】
次に、以上のように構成された計算機１０におけるログデータ７等の削除処理について図５のフローチャートを用いて説明する。
【００５８】
第１の実施形態において、削除される領域Ｘの大きさは一定に取るのが一般的な方法である。よって、ログの境界となる位置（図３のＩＤ(n+1)の位置）は予め知ることができる。
【００５９】
ＣＰＵ１４は、ログ書込処理により、ログデータ７の境界となる（領域Ａの先頭の）位置にレコードを書き込む場合に、連鎖情報更新処理に当該レコードのレコードＩＤを通知し（ＳＴ２１）、連鎖情報更新処理により、通知されたレコードＩＤに対応する一組のレコードＩＤを書き込む位置を主記憶装置１１に記憶する（ＳＴ２２）。これにより、第１の実施形態における領域Ａの先頭のレコードＩＤ（図３のＩＤ(n+1)）をログ連鎖情報８の子レコードＩＤから検索する処理（ＳＴ１２〜ＳＴ１５の１回目）を不要にすることができる。
【００６０】
また、ＣＰＵ１４は、残りＮ−１個のレコードＩＤについて、前述したステップＳＴ１６，ＳＴ１７，ＳＴ１２〜ＳＴ１５を同様に実行し、最前の子レコードＩＤの位置を記憶する（ＳＴ２３）。
【００６１】
しかる後、ＣＰＵ１４は、ステップＳＴ２３で記憶した位置よりも前の位置のログ連鎖情報８を削除する（ＳＴ２３）。
【００６２】
上述したように本実施形態によれば、第１の実施形態の効果に加え、領域Ａの先頭のレコードＩＤをログ連鎖情報８の子レコードＩＤから検索する処理を不要にすることができる。
【００６３】
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【００６４】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【００６５】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が上記実施形態を実現するための各処理の一部を実行しても良い。
【００６６】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【００６７】
また、記憶媒体は１つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【００６８】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成としても良い。
【００６９】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【００７０】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
【産業上の利用可能性】
【００７１】
本発明によれば、ログデータ内の各レコードが不連続の場合でも各レコードが不当に削除されていないことを保証できる。
【符号の説明】
【００７２】
１ａ，１ｂ…アプリケーションプログラム、２ａ，３ｂ…レコードＩＤ取得プログラム、３…レコードＩＤ生成プログラム、４…ログ書込プログラム、５…連鎖情報更新プログラム、６…ログ検証プログラム、７…ログデータ、８…ログ連鎖情報、１０…計算機、１１…主記憶装置、１２…補助記憶装置、１３…入出力部、１４…ＣＰＵ。
【図１】
2011053963.tif 000003
【図２】
2011053963.tif 000004
【図３】
2011053963.tif 000005
【図４】
2011053963.tif 000006
【図５】
2011053963.tif 000007