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