(57)【要約】【課題】永続データの内容に変更があった場合であってもインデックス更新作業を軽減することのでき、加えて、簡単且つ確実なバックアップを可能とするような永続データ管理システムを提供すること。【解決手段】永続データのデータファイルと、ノードファイルと、インデックスファイルとを別々に生成する。永続データに含まれる案件データの変動（更新等）はデータファイルの末尾に変動後の案件データに対応する案件情報を追記することにより行う。この案件データの変動の際、検索キーとして設定されている属性の値に変動がないのであればインデックスファイルに変更は加えない。その代わり、案件データ（ノード）と案件情報との関連付けのみを記載してあるノードファイルに変更を加えることとする。このようにすると、インデックスの更新作業を劇的に削減することができる。【選択図】図２４
2011018244.tif 000002
【特許請求の範囲】
【請求項１】
対象案件毎のデータである案件データを複数有する永続データを管理するための永続データ管理システムであって、
前記永続データは、前記案件データのそれぞれに対応する案件情報を格納するデータファイルとして記録媒体上に記録されるものである永続データ管理システムにおいて、
それぞれ固有の値が割り当てられた複数のノードを有するノード管理ファイルであって、前記ノードの夫々に前記案件データと前記案件情報の前記記録媒体上における位置情報との対応関係を記述してなるノード管理ファイルを前記データファイルに関連付けて生成する一方で、
前記案件データへのアクセスに用いるインデックスファイルであって、前記案件データに含まれる値のうちキーとして指定された属性の値と前記ノードに固有の値との関連に基づいて生成されたインデックスを有しているインデックスファイルを前記ノード管理ファイルとは別に生成し、
前記永続データに対して新規に案件データを追加する場合には、前記データファイルの末尾に新規に追加する前記案件データに対応する案件情報を追加記録し、
前記永続データに含まれる前記案件データの更新をする場合には、前記データファイルに含まれている更新対象となっている該案件データに対応する前記案件情報を削除せずに残す一方で、前記更新した案件データに対応する案件情報を前記データファイルの末尾に追加記録して、当該追加記録した案件情報を更新した前記案件データに対応付けることとし、
前記永続データに含まれる前記案件データを削除する場合には、前記データファイルに含まれている削除対象となっている該案件データに対応する前記案件情報を削除せずに残す一方で、内容が空である案件データに対応する案件情報を前記データファイルの末尾に追加記録して、当該追加記録した案件情報を削除した前記案件データに対応付けることとし、
前記案件データの新規追加・更新・削除をする場合には、新規追加・更新・削除の対象となっている前記案件データと前記追加記録した案件情報の前記記録媒体上における位置情報を対応付けるようにノード管理ファイルを更新する一方で、前記キーとして指定された属性の値に変更がない限り前記インデックスファイルの更新は行わない
永続データ管理システム。
【請求項２】
請求項１記載の永続データ管理システムであって、
前記ノードは、前記案件データの夫々に割り当てられた領域であり、
前記ノードには、当該案件データに対応する前記案件情報の前記データファイル中での相対アドレスが記述されており、
前記案件データの新規追加・更新・削除をする場合には、当該案件データに割り当てられた前記ノードに記述された前記相対アドレスを前記追加記録した案件情報の前記相対アドレスに変更する
永続データ管理システム。
【請求項３】
請求項１又は請求項２記載の永続データ管理システムであって、
前記案件情報を前記データファイルに格納する前に一時的に格納するための一時ファイルであるトランザクションファイルを生成し、
前記ノードファイルの前記ノードの夫々に、前記案件情報の前記位置情報と当該位置情報が前記データファイル上のものであるか前記トランザクションファイル上のものであるかを示すフラグとを関連づけて格納し、
前記案件データの新規追加・更新・削除をする場合には、新規追加・更新・削除の対象となっている前記案件データに対応するものとして前記永続データに対して追加記録すべき前記案件情報を前記トランザクションファイルに書き込み、
前記ノード管理ファイル上の前記ノードであって前記トランザクションファイルに書き込まれた前記案件情報に対応する前記ノードには、当該案件情報の前記トランザクションファイル上における位置情報を記録するとともに当該位置情報がトランザクションファイル上のものであることを示すフラグを立てる
永続データ管理システム。
【請求項４】
請求項３記載の永続データ管理システムであって、
前記トランザクションファイルに書き込まれた前記案件情報については、当該案件情報を前記永続データに対して永続化処理するまでの間、前記ノード管理ファイルの値に基づいて前記トランザクションファイル上の前記案件情報を参照する
永続データ管理システム。
【請求項５】
請求項４記載の永続データ管理システムであって、
前記永続データに対応する前記データファイルへの前記案件情報の追加記録により、永続化処理が完了した場合には、前記ノード管理ファイルにおいて前記各ノードに対応付けて保存されているフラグを下げると共に前記トランザクションファイル上の前記位置情報を前記データファイル上の前記位置情報で置き換える
永続データ管理システム。
【請求項６】
プロセッサ及びメモリを備えたコンピュータシステムにおいて前記プロセッサに対して所定の処理を実行させることにより、前記コンピュータシステムを請求項１乃至請求項５のいずれかに記載の永続データ管理システムとして機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データに永続性を付与しつつ管理する永続データ管理システムに関する。
【背景技術】
【０００２】
ＡＣＩＤ（Atomicity, Consistency, Isolation, Durability）を要求されるようなデータ管理システム、即ち、データに永続性を付与しつつ管理する永続データ管理システムとしては、例えば、ファイルシステムにおける管理システムやデータベース管理システム（ＤＢＭＳ）などがある。
【０００３】
更に、特許文献１に記載されているように、データベースには、例えば、リレーショナルデータベースやオブジェクト指向データベース（ＯＯＤＢ）、更には、オブジェクト・リレーショナル型データベース（ＯＲＤＢ）などがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−３０８３３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般に、検索性能の向上を図る目的でインデックスが作成・使用されており、データベースに格納されているデータなど永続データの内容に変更があった場合には、このインデックスの更新も行われている。
【０００６】
しかしながら、インデックスを更新するためには、永続データのロックを行わなければならず、且つ、データ数によってはインデックス更新作業の量も膨大なものとなる。
【０００７】
そこで、本発明は、永続データの内容に変更があった場合であってもインデックス更新作業を軽減することのでき、加えて、簡単且つ確実なバックアップを可能とするような永続データ管理システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
簡易且つ確実なバックアップとリカバリーを可能とする仕組みの一つとしては、インスタンスやレコードなどの対象案件毎のデータの生成、削除及び更新のいずれの場合であっても既存のインスタンスやレコードの情報を削除や変更などすることなく、それらを含むファイルの末尾に新たな情報を追加して、その追加した情報を新たなインスタンスやレコードとするといったものが考えられる。
【０００９】
上記のような形態をとる場合、永続データ自体については変動があったとしても、インデックスに含まれているキーの値には変更がないこともある。そのような場合に、インデックスを位置から作り直すのは無駄である。
【００１０】
そこで、本発明においては、インスタンスやレコードといった対象案件毎のデータとその情報とを関連付けてなるノード管理ファイルを永続データ管理システムに設けることとし、インスタンスやレコードといった対象案件毎のデータに変動があった場合であったとしてもインデックスに含まれているキーの値に変更がない場合にはインデックスの更新は行わずにノード管理ファイルに記載されていた関連付けのみを書き換えることとした。
【００１１】
本発明によれば、第１の永続データ管理システムとして、
対象案件毎のデータである案件データを複数有する永続データを管理するための永続データ管理システムであって、
前記永続データは、前記案件データのそれぞれに対応する案件情報を格納するデータファイルとして記録媒体上に記録されるものである永続データ管理システムにおいて、
それぞれ固有の値が割り当てられた複数のノードを有するノード管理ファイルであって、前記ノードの夫々に前記案件データと前記案件情報の前記記録媒体上における位置情報との対応関係を記述してなるノード管理ファイルを前記データファイルに関連付けて生成する一方で、
前記案件データへのアクセスに用いるインデックスファイルであって、前記案件データに含まれる値のうちキーとして指定された属性の値と前記ノードに固有の値との関連に基づいて生成されたインデックスを有しているインデックスファイルを前記ノード管理ファイルとは別に生成し、
前記永続データに対して新規に案件データを追加する場合には、前記データファイルの末尾に新規に追加する前記案件データに対応する案件情報を追加記録し、
前記永続データに含まれる前記案件データの更新をする場合には、前記データファイルに含まれている更新対象となっている該案件データに対応する前記案件情報を削除せずに残す一方で、前記更新した案件データに対応する案件情報を前記データファイルの末尾に追加記録して、当該追加記録した案件情報を更新した前記案件データに対応付けることとし、
前記永続データに含まれる前記案件データを削除する場合には、前記データファイルに含まれている削除対象となっている該案件データに対応する前記案件情報を削除せずに残す一方で、内容が空である案件データに対応する案件情報を前記データファイルの末尾に追加記録して、当該追加記録した案件情報を削除した前記案件データに対応付けることとし、
前記案件データの新規追加・更新・削除をする場合には、新規追加・更新・削除の対象となっている前記案件データと前記追加記録した案件情報の前記記録媒体上における位置情報を対応付けるようにノード管理ファイルを更新する一方で、前記キーとして指定された属性の値に変更がない限り前記インデックスファイルの更新は行わない
永続データ管理システムが得られる。
【００１２】
本発明によれば、第２の永続データ管理システムとして、第１の永続データ管理システムであって、
前記ノードは、前記案件データの夫々に割り当てられた領域であり、
前記ノードには、当該案件データに対応する前記案件情報の前記データファイル中での相対アドレスが記述されており、
前記案件データの新規追加・更新・削除をする場合には、当該案件データに割り当てられた前記ノードに記述された前記相対アドレスを前記追加記録した案件情報の前記相対アドレスに変更する
永続データ管理システムが得られる。
【００１３】
本発明によれば、第３の永続データ管理システムとして、第１又は第２の永続データ管理システムであって、
前記案件情報を前記データファイルに格納する前に一時的に格納するための一時ファイルであるトランザクションファイルを生成し、
前記ノードファイルの前記ノードの夫々に、前記案件情報の前記位置情報と当該位置情報が前記データファイル上のものであるか前記トランザクションファイル上のものであるかを示すフラグとを関連づけて格納し、
前記案件データの新規追加・更新・削除をする場合には、新規追加・更新・削除の対象となっている前記案件データに対応するものとして前記永続データに対して追加記録すべき前記案件情報を前記トランザクションファイルに書き込み、
前記ノード管理ファイル上の前記ノードであって前記トランザクションファイルに書き込まれた前記案件情報に対応する前記ノードには、当該案件情報の前記トランザクションファイル上における位置情報を記録するとともに当該位置情報がトランザクションファイル上のものであることを示すフラグを立てる
永続データ管理システムが得られる。
【００１４】
本発明によれば、第４の永続データ管理システムとして、第３の永続データ管理システムであって、
前記トランザクションファイルに書き込まれた前記案件情報については、当該案件情報を前記永続データに対して永続化処理するまでの間、前記ノード管理ファイルの値に基づいて前記トランザクションファイル上の前記案件情報を参照する
永続データ管理システムが得られる。
【００１５】
本発明によれば、第５の永続データ管理システムとして、第４の永続データ管理システムであって、
前記永続データに対応する前記データファイルへの前記案件情報の追加記録により、永続化処理が完了した場合には、前記ノード管理ファイルにおいて前記各ノードに対応付けて保存されているフラグを下げると共に前記トランザクションファイル上の前記位置情報を前記データファイル上の前記位置情報で置き換える
永続データ管理システムが得られる。
【００１６】
更に、本発明によれば、プロセッサ及びメモリを備えたコンピュータシステムにおいて前記プロセッサに対して所定の処理を実行させることにより、前記コンピュータシステムを第１乃至第５の永続データ管理システムのいずれかとして機能させるためのプログラムが得られる。
【発明の効果】
【００１７】
本発明によれば、永続データに変動があったとして問題となるキーに関連した変動がなければインデックスの更新（再生成）を行わないこととし、本当に必要となったときのみインデックスの更新等を行うこととしたため、永続データをロックしなければならない頻度を低くすることができるとともにインデックス生成にかかっていた総計算量を激減させることができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施の形態による永続データ管理システムを概念的に示した図である。
【図２】オブジェクト間の結合関係に応じた処理を示すフローチャートである。
【図３】親オブジェクトと子オブジェクトのセットを概念的に示した図である。
【図４】図３の親オブジェクトと子オブジェクトとから想定される仮想インスタンスのセットを一覧表示した図である。
【図５】図３の子インスタンスｐ０３の内容を変更するときのロック状態を概念的に示す図である。なお、図５において、ロックされるインスタンスは太線で囲まれている。
【図６】図４の仮想インスタンスにおいて、ＣＣＣを削除した場合に想定される仮想インスタンスのセットを概念的に示す図である。
【図７】図３の親オブジェクトと子オブジェクトのうち、親インスタンスＣを削除するときのロック状態を概念的に表した図である。ロックされるインスタンスは太線で囲まれて示されている。
【図８】図４の仮想インスタンスにおいて、仮想インスタンスＣを削除した場合に想定される仮想インスタンスのセットを一覧表示した図である。
【図９】単純参照関係にある参照元オブジェクトと参照先オブジェクトのセットを概念的に示した図である。
【図１０】図９の参照元オブジェクトと参照先オブジェクトから想定される仮想インスタンスのセットを一覧表示した図である。
【図１１】図９の参照先インスタンスｃ０２の内容を変更するときのロック状態を概念的に示す図である。なお、図１１において、ロックされるインスタンスは太線で囲まれている。
【図１２】図１１の仮想インスタンスにおいて、ＹＴＪの住所（ａｄｄｒｅｓｓ）を変更した場合に想定される仮想インスタンスのセットを概念的に示す図である。
【図１３】図９の参照先インスタンスｃ０２の内容を削除するときのロック状態を概念的に示す図である。なお、図１３において、ロックされるインスタンスは太線で囲まれている。
【図１４】図１３の仮想インスタンスにおいて、参照先インスタンスｃ０２の内容を削除した場合に想定される仮想インスタンスのセットを概念的に示す図である。
【図１５】グループ参照関係にある参照元オブジェクトと参照先オブジェクトのセットを概念的に示した図である。
【図１６】図１５の参照元オブジェクトと参照先オブジェクトから想定される仮想インスタンスのセットを一覧表示した図である。
【図１７】図１５の参照先インスタンスｆ０２の内容を変更するときのロック状態を概念的に示す図である。なお、図１７において、ロックされるインスタンスは太線で囲まれている。
【図１８】図１６の仮想インスタンスにおいて、ＴＹの住所（ａｄｄｒｅｓｓ）を変更した場合に想定される仮想インスタンスのセットを概念的に示す図である。
【図１９】順序参照関係にある参照元オブジェクトと参照先オブジェクトのセットを概念的に示した図である。
【図２０】図１９の参照元オブジェクトと参照先オブジェクトから想定される仮想インスタンスのセットを一覧表示した図である。
【図２１】図１９の参照先インスタンスＯｐ０２の内容を変更するときのロック状態を概念的に示す図である。なお、図２１において、ロックされるインスタンスは太線で囲まれている。
【図２２】図２０の仮想インスタンスにおいて、ＢＢＢの作業内容（Ｗｏｒｋ）を変更した場合に想定される仮想インスタンスのセットを概念的に示す図である。
【図２３】オブジェクトと、オブジェクトとファイルとの関係を概念的に示した図である。
【図２４】オブジェクトファイル、ノード管理ファイル及びインデックスファイルと永続データ管理システムとを概念的に示した図である。
【図２５】オブジェクトにインスタンスを追加する処理と、オブジェクトファイルにインスタンス情報を追加する処理とを概念的に示した図である。
【図２６】図２５において追加されたインスタンスと、当該インスタンスの記録媒体上の位置との関係を表わしたノード管理ファイルを概念的に示した図である。
【図２７】オブジェクトのインスタンスを更新する処理と、オブジェクトファイルに対して更新されたインスタンスに対応するインスタンス情報を追加する処理とを概念的に示した図である。
【図２８】図２７において更新されたインスタンスと、当該インスタンスの記録媒体上の位置との関係を表わしたノード管理ファイルを概念的に示した図である。
【図２９】オブジェクトのインスタンスを削除する処理と、オブジェクトファイルに対して削除されたインスタンスに対応する空のインスタンス情報を追加する処理とを概念的に示した図である。
【図３０】図２９において削除されたインスタンスと、当該削除されたインスタンスに対応する空のインスタンス情報の記録媒体上の位置との関係を表わしたノード管理ファイルを概念的に示した図である。
【図３１】オブジェクトファイル、ノード管理ファイル及びトランザクションファイルの永続化処理前の関係を概念的に示した図である。
【図３２】オブジェクトファイル、ノード管理ファイル及びトランザクションファイルの永続化処理後の関係を概念的に示した図である。
【発明を実施するための形態】
【００１９】
図１に示されるように、本発明の実施の形態による永続データ管理システム（ＤＢＭＳ）１００は、複数のインスタンスを夫々含む複数のオブジェクト２００によって構成される永続データを管理するためのものである。
【００２０】
本実施の形態による永続データ管理システム１００は、概略すると、特定のオブジェクトに含まれるインスタンスに対し他のオブジェクトに含まれるインスタンスを組み込むことにより、仮想インスタンス３００を想定し、この仮想インスタンス３００をアプリケーション４００に対して提供するものである。アプリケーション４００は、提供された仮想インスタンス３００に基づいてデータの参照又は変更ができる。図１を用いて具体的に説明すると、永続データ管理システム１００は、オブジェクトＡ〜Ｃ２００の各インスタンスを夫々別個のものとして利用するが、一方で、アプリケーション４００に対しては、例えば、オブジェクトＡに含まれているインスタンス内に、オブジェクトＢに含まれるインスタンスがあたかも包含されているように見える形で提供することができる。ここで、オブジェクト２００間の関係としては密結合している場合と疎結合している場合との大きく２種類に分けることができる。ここで、密結合している場合とは、オブジェクト２００の一方がオブジェクト２００の他方を内包する形で両オブジェクト２００が密接に関連しており、一方の変更が他方にも影響を及ぼす親子関係（所有関係）にある場合である。疎結合している場合とは、オブジェクト同士が単に参照関係にあり、一方を変更しても他方には直接には影響が及ばない参照関係にある場合である。
【００２１】
本実施の形態による永続データ管理システム１００は、以下に具体的に説明するように、オブジェクト２００間の結合関係に応じて、処理を異ならせることとしている。図２に示されるように、本実施の形態による永続データ管理システム１００は、アプリケーションからの要求を受けると、その要求に関連するオブジェクト２００間の結合に関する属性の型を特定し（ステップＳ２０１）、特定した属性の型に基づいて、オブジェクト２００間の結合関係が密結合であるか疎結合であるかを判断する（ステップＳ２０２）。ここで、オブジェクト２００に含まれる属性の型は、オブジェクト２００の生成の際などにおいて定義しうるものである。ステップＳ２０２において、オブジェクト２００間の結合関係が密結合であると判断した場合、一つのオブジェクト２００に含まれるインスタンスと他のオブジェクト２００に含まれるインスタンスとの参照整合性を保持するように処理する（ステップＳ２０３）。一方、ステップＳ２０２において、オブジェクト２００間の結合関係が疎結合であると判断した場合、一つのオブジェクト２００に含まれるインスタンスと他のオブジェクト２００に含まれるインスタンスとの参照整合性はアプリケーションに任せることとして、一つのオブジェクト２００に含まれるインスタンスの生成・変更・消滅の処理と他のオブジェクト２００に含まれるインスタンスの生成・変更・消滅の処理を互いに独立して行う（ステップＳ２０４）。
【００２２】
以下、図面を参照しながら、密結合の場合の仮想インスタンスの例として、親子関係にあるオブジェクト同士から想定される仮想インスタンスについて説明し、更に、疎結合の場合の仮想インスタンスの例として、参照関係にあるオブジェクト同士から想定される仮想インスタンスについて説明する。
【００２３】
親子関係にあるオブジェクトの例として、ペットの所有者とペットとの関係が挙げられる。この例においては、所有者が特定されると、その所有者のペットも特定され（１：Ｎの関係）、所有者のオブジェクトの変更と、ペットのオブジェクトの変更とが互いに影響を及ぼし合うものである。従って、ペットの所有者のオブジェクト（親オブジェクト）と、ペットのオブジェクト（子オブジェクト）とは密接に関連している親子関係にあるといえる。図３に示されるように、親オブジェクトに含まれるインスタンス（親インスタンス）夫々は、所有者の名前（ｎａｍｅ）と、所有ペット数（ｐｅｔ（ｓ））と、当該所有者が所有しているペットに対応付けられた配列型の属性である所有属性（ＰＥＴ  ＩＤ）とを有している。換言すると、親子関係にある２つのオブジェクトにおいて、それらオブジェクトを関連付けている属性は、この所有属性であり、従って、図２のステップＳ２０２において判断対象となる属性の型も所有属性を示す型か否かである。なお、親インスタンスのうち、所有者の名前（ｎａｍｅ）Ａ、Ｂ及びＣで特定されるインスタンスを夫々インスタンスＡ、インスタンスＢ及びインスタンスＣと呼ぶ。一方、子オブジェクトに含まれるインスタンス（子インスタンス）夫々は、所有者の所有属性に対応するＩＤと、ペットの名前（ＰＥＴ  ｎａｍｅ）と、ペットの年齢（ＰＥＴ  ａｇｅ）と、ペットの種別（ＰＥＴ  ｔｙｐｅ）とを有している。なお、親インスタンスと同様に、子インスタンスのＩＤｐ０１〜ｐ０５で特定されるインスタンスを夫々インスタンスｐ０１〜インスタンスｐ０５と呼ぶ。
【００２４】
図４に示されるように、本実施の形態による仮想インスタンスは、上記親インスタンスに子インスタンスを取り込むことにより想定されるものである。これにより、アプリケーション側には、実際には親インスタンス及び子インスタンスからなるデータを、あたかもひとつのインスタンスとして存在するかのように認識させることができる。本実施の形態による仮想インスタンスは、所有者の名前（ｎａｍｅ）と、所有ペット数（ｐｅｔ（ｓ））とペットの名前（ＰＥＴ  ｎａｍｅ）と、ペットの年齢（ＰＥＴ  ａｇｅ）と、ペットの種別（ＰＥＴ  ｔｙｐｅ）とを有している。なお、仮想インスタンスのうち、所有者の名前（ｎａｍｅ）Ａ〜Ｃで特定される仮想インスタンスを夫々仮想インスタンスＡ〜仮想インスタンスＣと呼ぶ。また、仮想インスタンス同士は互いに依存することなく別個独立のものとして存在するが、図４においては、便宜上、仮想インスタンスのセットとして一覧表示している。
【００２５】
アプリケーション４００から永続データ管理システム１００に対して親子関係にあるオブジェクト、特に子オブジェクトに対する変更要求が出された場合、永続データ管理システム１００は以下のように処理を行う。例えば、Ｂの所有するＣＣＣというデータを削除する必要が生じた場合、アプリケーションは、仮想インスタンスＢのＣＣＣを削除するように永続データ管理システムに指示をする。かかる指示を受けた永続データ管理システム１００は、親オブジェクトと子オブジェクトを関連付ける属性が所有属性（ＰＥＴ  ＩＤ）を示すものであることを特定し（ステップＳ２０１）、それが密結合を示すものであると判断する（ステップＳ２０２）。その後、以下に示すような密結合対応処理を行う（ステップＳ２０３）。即ち、永続データ管理システム１００は、インスタンスｐ０３を削除すると共に、インスタンスＢの所有ペット数（ｐｅｔ（ｓ））の値を「３」から「２」へと変更する。なお、これらの変更は、データの整合性を図るためにも同時に行われなければならない。そこで、図５に示されるように、本実施の形態による永続データ管理システムは、まず、インスタンスＢと、インスタンスｐ０３とをロック、即ち、書き込みを禁止した後に上記変更を行う。これにより、アプリケーションに対して、図６に示されるような、仮想インスタンスＢとして提供することができる。このように、本実施の形態における永続データ管理システムは、変更する必要が生じた子インスタンスと関連する親インスタンスのみを一体として管理するため、その他のインスタンスへの書き込みは自由である。例えば、図５において、インスタンスｐ０３とインスタンスＢがロックされている間においても、インスタンスｐ０１及びインスタンスＡや、インスタンスｐ０５及びインスタンスＣについては、書き込みが必要になった際に、夫々ロックして書き込みを行うことができる。
【００２６】
また、図４において、例えばインスタンスＣを削除するようアプリケーションから指示がなされた場合、図７に示されるように、永続性データ管理システムは、インスタンスＣと、インスタンスｐ０５をロックした後に、これらを同時に削除する。これにより、図８に示される変更後の仮想インスタンスのセットからは、仮想インスタンスＣがなくなることとなる。
【００２７】
このように、本実施の形態による永続データ管理システムは、変更や削除するインスタンスのみを選択的にロックすることとしている。これにより、当該変更又は削除にかかるインスタンス以外のインスタンスへの書き込みは制限されず、データベースの自由度を高めることができる。また、整合をとるべきデータのまとまりのサイズを小さくすることにより、データのバックアップも簡単且つ確実なものとなる。
【００２８】
一方、単純参照関係にあるオブジェクトの例として、図９に示されるように、複数の個人と、当該個人夫々の所属する勤務先との関係が挙げられる。この例においては、個人のオブジェクト（参照元オブジェクト）と、勤務先のオブジェクト（参照先オブジェクト）とは単純参照関係（Ｍ：１の関係）にあり、個人のオブジェクトの変更と、勤務先のオブジェクトの変更とは互いに影響を及ぼさない。本実施の形態において、参照元オブジェクトに含まれるインスタンス（参照元インスタンス）の夫々は、個人の名前（ｎａｍｅ）と、当該個人が属している勤務先を特定する外部ｋｅｙを有している。即ち、単純参照関係にある２つのオブジェクトにおいて、それらオブジェクトを関連付けている属性は、この外部ｋｅｙであり、従って、図２のステップＳ２０２において判断対象となる属性の型も外部ｋｅｙを示す型か否かである。なお、参照元インスタンスのうち、個人（ｎａｍｅ）Ａ〜Ｃで特定されるインスタンスを夫々参照元インスタンスＡ〜Ｃと呼ぶ。一方、参照先インスタンス夫々は、外部ｋｅｙに対応し主キーとして機能し得る主キー値（ｋｅｙ）と、勤務先名（ｃａｍｐａｎｙ）と、勤務先の住所（ａｄｄｒｅｓｓ）とを有している。なお、参照元インスタンスと同様に、参照先インスタンスのうちｋｅｙｃ０１及びｃ０２で特定されるインスタンスを夫々参照先インスタンスｃ０１及びインスタンスｃ０２と呼ぶ。
【００２９】
図１０に示されるように、本実施の形態による仮想インスタンスは、参照元インスタンスに参照先インスタンスを取り込むことにより想定されるものである。これにより、アプリケーション側には、実際には参照元インスタンス及び参照先子インスタンスからなるデータを、あたかもひとつのインスタンスとして存在するかのように認識させることができる。本実施の形態による仮想インスタンスは、個人の名前（ｎａｍｅ）と、所属している勤務先（ｃａｍｐａｎｙ）と、勤務先の住所（ａｄｄｒｅｓｓ）とを有している。なお、仮想インスタンスのうち、個人の名前（ｎａｍｅ）Ａ〜Ｃで特定される仮想インスタンスを夫々仮想インスタンスＡ〜仮想インスタンスＣと呼ぶ。また、上記と同様に、仮想インスタンス同士は互いに依存することなく別個独立のものとして存在するが、便宜上、仮想インスタンスのセットとして一覧表示している。
【００３０】
アプリケーション４００から永続データ管理システム１００に対して単純参照関係にあるオブジェクトに対する変更要求が出された場合、永続データ管理システム１００は以下のように処理を行う。例えば、ＹＴＪという勤務先の住所を「ｋｚｚ５−２−５３」から「ｔｍｒ１−２−１」に変更する場合、アプリケーションは、仮想インスタンスのうちＹＴＪの住所（ａｄｄｒｅｓｓ）を「ｔｍｒ１−２−１」に変更するように永続データ管理システムに指示する。かかる指示を受けた永続データ管理システム１００は、２つのオブジェクトを関連付ける属性が外部ｋｅｙであることを特定し（ステップＳ２０１）、それが疎結合を示すものであると判断する（ステップＳ２０２）。その後、以下に示すような疎結合対応処理を行う（ステップＳ２０３）。疎結合の場合、図１１に示されるように、例えばＹＴＪについてのインスタンスｃ０２の情報が変更されても、インスタンスｃ０２に外部ｋｅｙで関連付けられているインスタンスＢやインスタンスＣについては変更する必要がない。この場合、永続データ管理システムは、当該変更に関係するインスタンスｃ０２のみをロックして変更を行う。これにより、図１２に示されるように、変更が反映された仮想インスタンスにおいては、ＹＴＪの住所が変更される。
【００３１】
また、例えば、インスタンスｃ０２を削除する場合、永続データ管理システムは、上述した親子関係にあるオブジェクトとは異なり、図１３に示されるように、当該削除の対象であるインスタンスｃ０２のみをロックして削除を行い、参照元インスタンスと削除された参照先インスタンスの参照関係を無効化する。そして、アプリケーションによって、これらの関係が再構築されるか、又は新たな参照先インスタンスとの参照関係が構築されるまでは、データのない（空の）インスタンスを仮想インスタンスに取り込ませる。その結果、図１４に示されるように、削除が反映された仮想インスタンスにおいては、インスタンスの一部の情報に欠損が発生することになるので、整合性を保持するためには、アプリケーションによる参照解除の処理を同時に実行することが必要である。
【００３２】
また、他の参照関係にあるオブジェクトの例として、人と、その人の友人との関係が挙げられる。この例においては、人のオブジェクト（参照元オブジェクト）と、友人のオブジェクト（参照先オブジェクト）とはグループ参照関係（Ｍ：Ｎの関係）にあり、友人のオブジェクトの変更と、その友人と関連付けられている複数の人のオブジェクトの変更とは互いに影響を及ぼさない。図１５に示されるように、本実施の形態において、参照元インスタンスの夫々は、人の名前（ｎａｍｅ）と、当該人とつながりのある友人を特定する外部ｋｅｙを有している。なお、参照元インスタンスのうち、人（ｎａｍｅ）Ａ〜Ｃで特定されるインスタンスを夫々参照元インスタンスＡ〜Ｃと呼ぶ。一方、参照先インスタンス夫々は、外部ｋｅｙに対応し、主キーとして機能し得る主キー値（ｋｅｙ）と、友人名（ｆｒｎａｍｅ）と、友人の住所（ａｄｄｒｅｓｓ）とを有している。なお、参照元インスタンスと同様に、参照先インスタンスのうちｋｅｙｆ０１〜ｆ０４で特定されるインスタンスを夫々参照先インスタンスｆ０１〜ｆ０４と呼ぶ。
【００３３】
図１６に示されるように、本実施の形態による仮想インスタンスも、参照元インスタンスに参照先インスタンスを取り込むことにより想定されるものである。これにより、アプリケーションには、実際には参照元インスタンス及び参照先インスタンスからなるデータを、あたかもひとつのインスタンスとして存在するかのように認識させることができる。本実施の形態による仮想インスタンスは、人の名前（ｎａｍｅ）と、友人（ｆｒｎａｍｅ）と、住所（ａｄｄｒｅｓｓ）とを有している。なお、仮想インスタンスのうち、人の名前（ｎａｍｅ）Ａ〜Ｃで特定される仮想インスタンスを夫々仮想インスタンスＡ〜Ｃと呼ぶ。
【００３４】
グループ参照関係にあるオブジェクトに変更が加えられた場合、永続データ管理システムは以下のように処理を行う。例えば、仮想インスタンスのうちＴＹの住所（ａｄｄｒｅｓｓ）を新住所へ変更するようにアプリケーションから指示がなされた場合、永続データ管理システムは、図１７に示されるように、参照先インスタンスｆ０２の住所（ａｄｄｒｅｓｓ）に新住所を書き換える作業を行う。このとき、永続データ管理システムは、インスタンスｆ０２のみをロックしてデータの書き換えを行う。図１８に示されるように、変更後の仮想インスタンスのセットとしては、仮想インスタンスＡ、Ｂ及びＣのうちＴＹの住所（ａｄｄｒｅｓｓ）部分が更新される。このように、グループ参照関係にあるオブジェクトの変更時においては、変更するインスタンスのみロックすればよいため、例えば、ＴＹの住所を変更している間に、参照元インスタンスはもちろん、他の参照先インスタンス（たとえば、インスタンスｆ０１等）の住所を変更したりすることができる。
【００３５】
更に、例えば、複数の製法と、その製法中において決められた順序に従って行われていく複数の作業との関係も挙げられる。この例においては、製法のオブジェクト（参照元オブジェクト）と、順序に従って進められる各作業（参照先オブジェクト）は、順序参照関係（Ｍ：Ｎｔｈ）にあるといえ、製法のオブジェクトの変更と、各作業の変更は互いに影響を及ぼさない。図１９に示されるように、本実施の形態において、参照元インスタンスの夫々は、製法名（ｎａｍｅ）と、製法中の作業を特定する外部ｋｅｙを有している。なお、参照元インスタンスのうち、製法名（ｎａｍｅ）Ａ〜Ｃで特定されるインスタンスを夫々参照元インスタンスＡ〜Ｃと呼ぶ。一方、参照先インスタンス夫々は、外部ｋｅｙに対応し、主キーとして機能し得る主キー値（ＯｐＩＤ）と、作業名（Ｏｐｅｒａｔｉｏｎ）と、作業内容（Ｗｏｒｋ）とを有している。なお、参照元インスタンスと同様に、参照先インスタンスのうちＯｐ０１〜Ｏｐ０４で特定されるインスタンスを夫々参照先インスタンスＯｐ０１〜Ｏｐ０４と呼ぶ。
【００３６】
図２０に示されるように、本実施の形態による仮想インスタンスも、参照元インスタンスに参照先インスタンスを取り込むことにより想定されるものである。これにより、アプリケーションには、実際には参照元インスタンス及び参照先インスタンスからなるデータを、あたかもひとつのインスタンスとして存在するかのように認識させることができる。本実施の形態による仮想インスタンスは、製法名（ｎａｍｅ）と、作業名（Ｏｐｅｒａｔｉｏｎ）と、作業内容（Ｗｏｒｋ）とを有している。なお、仮想インスタンスのうち、製法名（ｎａｍｅ）Ａ〜Ｃで特定される仮想インスタンスを夫々仮想インスタンスＡ〜Ｃと呼ぶ。
【００３７】
順序参照関係にあるオブジェクトに変更が加えられた場合、永続データ管理システムは以下のように処理を行う。例えば、仮想インスタンスのうち作業ＢＢＢの作業内容（Ｗｏｒｋ）を新しい作業内容へ変更するようにアプリケーションから指示がなされた場合、永続データ管理システムは、図２１に示されるように、参照先インスタンスＯｐ０２の作業内容（Ｗｏｒｋ）を新しい作業内容に書き換える作業を行う。このとき、永続データ管理システムは、インスタンスＯｐ０２のみをロックしてデータの書き換えを行う。図２２に示されるように、変更後の仮想インスタンスのセットとしては、仮想インスタンスＡ、Ｂ及びＣのうち作業ＢＢＢの作業内容（Ｗｏｒｋ）の部分が更新されている。このように、順序参照関係にあるオブジェクトの変更時においても、変更するインスタンスのみロックすればよいため、例えば、作業ＢＢＢの作業内容（Ｗｏｒｋ）を変更している間に、参照元インスタンスはもちろん、他の参照先インスタンス（たとえば、インスタンスＯｐ０１等）の作業内容（Ｗｏｒｋ）を変更したりすることができる。
【００３８】
続いて、親子関係及び参照関係にあるオブジェクトについて上述した一連の処理、即ち、インスタンスの生成・変更・消滅の処理が記録媒体上でどのように行われるかについて説明する。上述したオブジェクトは、オブジェクトファイルとしてメモリやハードディスク等の記録媒体上に格納される。オブジェクトファイルは、ヘッダ部及びボディ部を備えている。ヘッダ部には、オブジェクトの基本情報（クラス名など）、各属性の定義情報（名前、型など）及びオブジェクトの制御情報（最終コミットＩＤなど）が含まれている。一方、ボディ部には、インスタンス情報として、インスタンス基本情報（インスタンスＩＤなど）、属性情報が含まれている。例えば、図２３に示されるように、オブジェクトＡ（図１参照）についてのオブジェクトファイルは、ヘッダ部に当該オブジェクトＡについての基本情報（ｏｂｊｅｃｔ−Ａ）が含まれており、ボディ部には、インスタンスａ１〜ａｎに対応するインスタンス情報ａ１〜ａｎ（ｉｎｓｔａｎｃｅ−ａ１〜ａｎ）が含まれている。なお、インスタンス情報は、記録媒体上に格納されているものであるが、説明の便宜のため一覧で表すこととし、インスタンス情報の記録媒体上の位置を示す相対アドレスを簡易的に番号で示すこととする。
【００３９】
本実施の形態においては、検索性能の向上を図る目的でインデックスファイルを作成・使用するが、インデックスファイルの更新頻度を低減するため、オブジェクトファイルとインデックスファイルとを直接関連づけるのではなく、ノード管理ファイルを介在させることとしている。即ち、図２４に示されるように、本実施の形態による永続データ管理システム１００は、検索等の処理を行うに際しては、インデックスファイル７００とノード管理ファイル６００を利用してオブジェクトファイル５００に含まれるインスタンス情報を特定することとしている。
【００４０】
ここで、ノード管理ファイル６００は、それぞれ固有の値が割り当てられた複数のノードを有するものであり、それらノードの夫々にインスタンスとそのインスタンスに対応するインスタンス情報の位置情報との対応関係を記述してなるものである。即ち、このノード管理ファイル６００は、各インスタンスについてのインスタンス情報がオブジェクトファイル５００内のどこに格納されているか（記録媒体上のどこに格納されているのか）を示すものである。例えば、インスタンスａ１に対応するインスタンス情報にアクセスしたい場合、永続データ管理システム１００は、ノード管理ファイル６００を参照し、目的とするインスタンス情報（ｉｎｓｔａｎｃｅ  ａ１）が記録媒体上の「１」で示される場所にあることを特定することができる。なお、図示されたノード管理ファイル６００においては、理解を容易にすべく、ノード固有の値として直接インスタンス名を記載しているが、実際には、インスタンス名が記載されている個所には例えば各ノードに割り当てられた番号（＃１、＃２・・・など）が記載されている。例えば、ノード番号が＃１であるノードは、インスタンスａ１に対応付けられているという場合、＃１のノードに対応する領域に格納されている位置情報を用いればインスタンスａ１に対応するインスタンス情報にアクセスすることができる。また、インスタンスとインスタンス情報との関連付けに関しては、事実上の関連付けがされていればよく、図示された形態をとらなければならないわけではない。例えば、各インスタンス情報に対応するノードに対して所定バイトずつの領域を割り当てることとして、各ノードに対応するインスタンス情報の位置情報（上述の相対アドレスなど）をそのノードの領域に格納することとしてもよい。この場合、例えば、３番目のインスタンス情報にアクセスしたい場合、ノード管理ファイル６００にアクセスして、「所定バイト×２＋１」から所定バイト分の領域に格納されている位置情報を取得して、その取得した位置情報に基づいてオブジェクトファイル５００内に格納されているインスタンス情報にアクセスすることができる。
【００４１】
一方、インデックスファイル７００は、上述したように、オブジェクトファイル５００に含まれているインスタンス情報へのアクセスに用いられるものである。より具体的には、インデックスファイル７００は、検索対象となっているインスタンス情報をオブジェクトファイル５００に含まれている複数のインスタンス情報の中から特定するために用いられるものであり、インスタンス情報（インスタンス）に含まれる値のうちキーとして指定された属性の値とノードに固有の値との関連に基づいて生成されたインデックスを有している。ここで、ノードに固有の値とは、例えば、上述したノード番号などである。
【００４２】
上述したようなノード管理ファイル６００及びインデックスファイル７００を用いて、オブジェクトファイル５００にアクセスする手順は概略次の通りである。まず、永続データ管理システム１００は、検索に用いられたキーを用いて、インデックスファイル７００にアクセスし、そのキーに対応するノードを特定する（ノード番号を抽出する）。次いで、永続データ管理システム１００は、ノード管理ファイル６００にアクセスし、インデックスファイル７００を用いて特定されたノードに対応付けられた位置情報を取得する。更に、永続データ管理システム１００は、取得した位置情報に従って、オブジェクトファイル５００にアクセスして、検索キーに対応するインスタンス情報を特定・取得する。
【００４３】
特に、本実施の形態においては、以下に具体例を挙げて詳述するように、インスタンスの生成・削除・更新のいずれの場合にもオブジェクトファイル５００に既に含まれている情報の書き換えは行わず、オブジェクトファイル５００の末尾にインスタンス情報を追加記録することとし、その都度、ノード管理ファイル６００に格納されているインスタンス情報の位置情報の更新を行うこととしている。このようなファイル構成を採用することにより、キーとして指定された属性の値に変更がない限り、インデックスファイル７００の更新を行う必要がない。即ち、本実施の形態によれば、インデックスファイル７００の更新頻度を低減することができる。
【００４４】
本実施の形態において、インデックスファイル７００の更新は、上記のように、キーとして指定された属性の値に変更があった場合のみ行われるが、ノード管理ファイル６００の内容変更は、オブジェクトファイル５００の内容変更の都度行われる。そこで、以下においては、インスタンスの追加・更新・削除の各処理に関し、オブジェクトファイル５００とノード管理ファイル６００に対してどのような変更を加えるかについて説明する。
【００４５】
図２５及び図２６に示されるように、オブジェクトＡにインスタンスａ（ｎ＋１）を追加する場合、永続データシステムは、インスタンス情報ａ（ｎ＋１）をオブジェクトファイルとして記録媒体上のｎ＋１で特定される場所に格納する。同時に、ノード管理ファイルに当該追加されたインスタンスａ（ｎ＋１）とその格納場所（ｎ＋１）を追加する。これにより、アプリケーションからインスタンスａ（ｎ＋１）を参照する指示がなされた場合、ノード管理ファイルに従って、追加されたインスタンス情報ａ（ｎ＋１）を参照し、アプリケーションに返すことができる。
【００４６】
図２７及び図２８に示されるように、インスタンスａ２をインスタンスａ２’へ変更する場合、永続データ管理システムはインスタンスａ２’に対応するインスタンス情報ａ２’をオブジェクトファイルＡのボディ部の末尾（ｎ＋１）に追加する。同時に、ノード管理ファイルのインスタンスａ２に追加されたインスタンス情報ａ２’の記録媒体上の位置（ｎ＋１）を対応付ける。これにより、アプリケーションからインスタンスａ２を参照する指示がなされた場合、ノード管理ファイルに従って、変更されたインスタンス情報ａ２’を参照し、アプリケーションに返すことができる。このように、変更前、即ち更新対象となっているインスタンス情報を削除せずにオブジェクトファイルとして記録媒体上に残す一方で、変更後のインスタンス情報をオブジェクトファイルの末尾に追加することとしているため、インスタンスを更新する際には、オブジェクトファイルの末尾にインスタンス情報を追加するという単純な作業のみでデータの更新が図れる。また、この際、上述したように、キーとして指定された属性の値に変更がないのであれば、インデックスファイルの更新を行わなくてよい。
【００４７】
図２９及び図３０に示されるように、インスタンスａ２を削除する場合、永続データ管理システムは、空のインスタンス情報をオブジェクトファイルＡのボディ部の末尾（ｎ＋１）に追加する。同時に、ノード管理ファイルのインスタンスａ２に当該空のインスタンス情報の記録媒体上の位置（ｎ＋１）を対応付ける。これにより、アプリケーションからインスタンスａ２を参照する指示がなされた場合、ノード管理ファイルに従って、空のインスタンス情報を参照し、アプリケーションに返す。このように、削除対象となっているインスタンス情報についても、削除せずにオブジェクトファイルとして記録媒体上に残す一方で、空のインスタンス情報をオブジェクトファイルの末尾に追加することとしているため、インスタンスを削除する際には、オブジェクトファイルの末尾に空のインスタンス情報を追加するという単純な作業のみでインスタンスの削除を行うことができる。
【００４８】
上述したように、インスタンスの生成・削除・更新のいずれの場合にもオブジェクトファイル５００に既に含まれている情報の書き換えは行わず、オブジェクトファイル５００の末尾にインスタンス情報を追加記録することとすると、一旦オブジェクトファイルの全体についてバックアップを行った後は、差分バックアップを図るだけでよい。加えて、その際に、検索キー等として指定されている属性の値に変更がないのであれば、インデックスファイルの更新は行わなくてよい。本実施の形態によれば、インスタンスの新規追加・更新・削除に際して、ノード管理ファイルの更新を行わなければならないが、対象となっているインスタンスに対応するノード領域に格納されている位置情報（相対アドレスなど）の更新のみを行えばよいことから、インデックスファイルの更新処理と比較して極めて少なくて済むこととなっている。
【００４９】
なお、本実施の形態においては、インスタンスを追加、更新又は削除する場合、その都度、対応するインスタンス情報をオブジェクトファイルに追加することしていたが、例えば、トランザクションの結果を一時的に保存するファイル（トランザクションファイル）を用意しておき、そこへトランザクション処理で永続化書き込みが確定した当該追加、更新又は削除インスタンスに対応するインスタンス情報を追加することとしてもよい。
【００５０】
また、当該追加、更新又は削除されたインスタンス情報がトランザクションファイルからオブジェクトファイルに追加されるまでの間に当該インスタンス情報へのアクセスが生じた際には、オブジェクトファイルに代えて、トランザクションファイルを参照させることとすればよい。具体的には、各ノードに記録される情報をトランザクションファイル上の位置であるかどうかを示すフラグと記録媒体上における位置情報との組み合わせとすれば良い。
【００５１】
ここで、図３１及び図３２を参照して、トランザクションファイルを用いた場合の処理について説明する。この場合、ノード管理ファイルの各ノードには、格納されている位置情報（相対アドレス）がオブジェクトファイル上のものなのかトランザクションファイル上のものなのかを示すフラグが付加されている。フラグが１の場合、そのインスタンス（ノード）に対応付けられている位置情報は、トランザクションファイル上のものであり、そのインスタンスについては、永続化処理はまだ行われていないことを示す。一方、フラグが０の場合、そのインスタンス（ノード）に対応付けられている位置情報は、オブジェクトファイル上のものであり、このインスタンスについては永続化処理が既に行われていることを示す。
【００５２】
具体的には、図３１には、インスタンスａ（ｎ＋１）の新規追加及びインスタンスａ３の削除を行った後、インスタンスａ２の内容を更新する場合について例示されている。ここで、例示した新規追加、削除及び更新の処理は、いずれもトランザクションファイルに対して行われており、まだオブジェクトファイルへの書き込み（即ち、永続化処理）はなされていない。従って、インスタンスａ（ｎ＋１）、インスタンスａ３及びインスタンスａ２’に対応するノードのフラグには１が書き込まれており、ノード管理ファイルに格納されたインスタンスａ（ｎ＋１）、インスタンスａ３及びインスタンスａ２’の位置情報はトランザクションファイル上のものとなっている。更に、図３１における直接の処理対象は、インスタンスａ２’に関連するものであり、ノード管理ファイル及びトランザクションファイルに含まれるインスタンスａ２’に関連するものについては前述のノード管理ファイルとオブジェクトファイルの部分的なロックの場合と同様に、ロックされている。
【００５３】
図３２には、図３１においてトランザクションファイルに格納されていたデータについて永続化処理が行われた後の状態が例示されている。この永続化処理、即ち、トランザクションファイルから該当するオブジェクトファイルへのデータの移動は、本実施の形態においては、永続データの処理サービス（データベースへのアクセス）のアイドリング中にタイマー処理によって行われる。そのため、本実施の形態によれば、トランザクションのコミット（成立）／アボート（破棄）に伴うデータの永続化処理の簡略化を実現することができる。
【００５４】
図３２と図３１を比較参照すると、図３２に示される永続化処理後の状態においては、図３１に示された状態（永続化処理前の状態）においてトランザクションファイルに格納されていたデータがオブジェクトファイルの末尾に移動されており、その移動によって、ノード管理ファイルにおけるインスタンスａ（ｎ＋１）、インスタンスａ３及びインスタンスａ２’に対応するノードのフラグには０が書き込まれ、ノード管理ファイルに格納されたインスタンスａ（ｎ＋１）、インスタンスａ３及びインスタンスａ２’の位置情報はオブジェクトファイル上のものに更新されている。
【００５５】
上述したように、各ノードに対応付けて記録した各インスタンス情報の記録媒体上の位置情報として、その情報が本来のオブジェクトファイル上の位置を指すのではなく、トランザクションファイル上の位置を指しているのであるというフラグを付加し、そのフラグの有無の使い分けによってインスタンス情報が実在するファイルの位置を隠蔽することとすると、永続ファイルへアクセスする処理系に対してトランザクションファイルの存在を隠蔽することが可能になる。更に、インスタンス情報にダイレクトにアクセスするために使用されるインデックスをインスタンスのキー属性の値とノードの固有の値との関連に基づいて生成しておくことによって、このインデックス処理系に対しても、インスタンス情報が実在するファイルの位置を隠蔽することができる。結果として、トランザクション処理・インデックスによるアクセス制御を簡単かつ堅牢なものにすることができる。
【００５６】
なお、上述した実施の形態においては、オブジェクト指向データベース又はそれに類するデータベースを具体例としていたため、対象案件毎のデータである案件データの例として「インスタンス」を掲げて説明してきたが、ファイルの末尾にデータを追記することにより案件データの生成、更新及び削除を実現するようなシステムであるのであれば、リレーショナルデータベースやそれに類するデータベースの場合（即ち、案件データが「レコード」である場合）にも本発明の概念は適用可能である。
【符号の説明】
【００５７】
１００    永続データ管理システム（ＤＢＭＳ）
２００    オブジェクト
３００    仮想インスタンス
４００    アプリケーション
５００    オブジェクトファイル
６００    ノード管理ファイル
７００    インデックスファイル
【図１】
2011018244.tif 000003
【図２】
2011018244.tif 000004
【図３】
2011018244.tif 000005
【図４】
2011018244.tif 000006
【図５】
2011018244.tif 000007
【図６】
2011018244.tif 000008
【図７】
2011018244.tif 000009
【図８】
2011018244.tif 000010
【図９】
2011018244.tif 000011
【図１０】
2011018244.tif 000012
【図１１】
2011018244.tif 000013
【図１２】
2011018244.tif 000014
【図１３】
2011018244.tif 000015
【図１４】
2011018244.tif 000016
【図１５】
2011018244.tif 000017
【図１６】
2011018244.tif 000018
【図１７】
2011018244.tif 000019
【図１８】
2011018244.tif 000020
【図１９】
2011018244.tif 000021
【図２０】
2011018244.tif 000022
【図２１】
2011018244.tif 000023
【図２２】
2011018244.tif 000024
【図２３】
2011018244.tif 000025
【図２４】
2011018244.tif 000026
【図２５】
2011018244.tif 000027
【図２６】
2011018244.tif 000028
【図２７】
2011018244.tif 000029
【図２８】
2011018244.tif 000030
【図２９】
2011018244.tif 000031
【図３０】
2011018244.tif 000032
【図３１】
2011018244.tif 000033
【図３２】
2011018244.tif 000034