(57)【特許請求の範囲】
【請求項１】
２次記憶領域に記憶されている情報としての永続オブジェクトを主記憶領域に読み出すオブジェクト指向データベースシステムにおいて、
前記２次記憶領域から前記主記憶上に永続オブジェクトを読み出す読み出し手段と、
前記読み出し手段が読み出した永続オブジェクトを、該永続オブジェクトについての各種情報を持つハンドラと前記主記憶上の他の永続オブジェクトの位置情報を含む揮発オブジェクトとの組として前記主記憶上で管理する管理手段と、
前記永続オブジェクトを削除する際に、該永続オブジェクトが他の永続オブジェクトから参照されている場合、該永続オブジェクトに対応する揮発オブジェクトを前記主記憶上から解放する削除手段と
を備えることを特徴とするオブジェクト指向データベースシステム。
【請求項２】
前記削除手段は、
前記永続オブジェクトが他の永続オブジェクトから参照されなくなった場合に、該永続オブジェクトに対応するハンドラを前記主記憶上から解放することを特徴とする請求項１記載のオブジェクト指向データベースシステム。
【請求項３】
２次記憶領域に記憶されている情報としての永続オブジェクトを主記憶領域に読み出すオブジェクト指向データベースシステムのオブジェクト管理方法において、
前記２次記憶領域から前記主記憶上に読み出した永続オブジェクトを、該永続オブジェクトについての各種情報を持つハンドラと前記主記憶上の他の永続オブジェクトの位置情報を含む揮発オブジェクトとの組として前記主記憶上で管理し、
前記永続オブジェクトを削除する際に、該永続オブジェクトが他の永続オブジェクトから参照されている場合、該永続オブジェクトに対応する揮発オブジェクトを前記主記憶上から解放する
ことを特徴とするオブジェクト指向データベースシステムのオブジェクト管理方法。
【請求項４】
前記削除された永続オブジェクトが他の永続オブジェクトから参照されなくなった場合に、該永続オブジェクトに対応するハンドラを前記主記憶上から解放することを特徴とする請求項３記載のオブジェクト指向データベースシステムのオブジェクト管理方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、オブジェクト指向データベースシステムおよびそのオブジェクト管理方法に関する。
【０００２】
【従来の技術】
近年、オブジェクト指向データベースシステム（Object Oriented Database＝ＯＯＤＢ）が注目を集め、各種の研究が行われている。
【０００３】
オブジェクト指向データベースの基礎概念としては、
（１）「“オブジェクト指向データベースの基礎概念”（田中克己著 情報処理Vol.32 No.5 pp500〜513 May 1991）」（以下、文献１という）、
（２）「“オブジェクト指向データベース管理システムのアーキテクチャ”（牧之内顕文著 情報処理 Vol.32 No5 pp514〜522 May 1991 ）」（以下、文献２という）
に開示されたものが知られている。
【０００４】
上記文献２の５１６ページに開示されているように、
（ａ）オブジェクト指向データベースにおいては、オブジェクト識別子（ＯＩＤ）が永続オブジェクト（オブジェクト指向データベースのデータで、プロセスの境界を越えて存在するオブジェクト）の識別に重要な役割を果たしている。永続オブジェクトは２次記憶上で管理され主記憶上で操作されるため、ＯＩＤと、２次記憶上の永続オブジェクトの位置（Disk Address＝ディスクアドレス）と、主記憶上の永続オブジェクトの位置（Memoty Address＝メモリアドレス）の３つの値の管理や変換が必要となる。
（ｂ）永続オブジェクトは２次記憶上で管理され主記憶上で操作されるため、操作のためには２次記憶上の永続オブジェクトを一度主記憶上に読み込む必要がある。また一度主記憶上に読み込んだ後は、出切るだけ主記憶上のアドレスを利用して、永続オブジェクトにアクセスすることが永続オブジェクトの参照を効率良くする。
【０００５】
また文献２の５２０ページに開示されている内容においては、
（ｃ）主記憶上の永続オブジェクトをバッファとしてアクセスするためには、ＯＩＤのハッシュテーブルが必要であることを指摘している。
（ｄ）永続オブジェクトは２次記憶上ではディスク形式で表現され、主記憶上ではメモリ形式で表現されることを指摘している。この表現形式の変換の際に、ＯＩＤは変換され、主記憶上の永続オブジェクトへの参照を容易に辿ることができるようになる。
【０００６】
このような文献２に開始された内容のものを実現することにより、オブジェクト指向データベースシステムや永続的プログラミング（Persistent ProgrammingLanguage ）において、データベース中のオブジェクトに対するアクセスを高速化することができる。このことは、アプリケーションプログラムの実行速度を向上させることができるということである。
【０００７】
そこで、文献２に開始された内容のものを実現するようにした技術としては、永続オブジェクトのＯＩＤ、ディスクアドレス、メモリアドレスの３つの値のテーブル（オブジェクトテーブル）を２次記憶上で記憶し管理するようにし、そのテーブルを参照することにより、永続オブジェクトをアクセスするようにした手法のものがある。
【０００８】
しかしながら、このような従来技術においては、オブジェクトテーブルのサイズの肥大化に伴う記憶領域（２次記憶領域）の無駄と、テーブル参照のためのＩ（input ）／Ｏ（output）の増加の可能性があり、このため記憶領域を有効に利用することができず、また処理効率の向上も望めない。
【０００９】
また、上述した様なオブジェクト指向データベースシステムの実現技術としては、
（３）「“オブジェクト指向データベースシステムにおける並行処理制御”（西尾章治朗著 情報処理 Vol.32 No5 pp540〜549 May 1991 ）」（以下、文献３という）
に開示されたものが知られている。
【００１０】
上記文献３の５４０ページに開示されているように、データベース管理システムにおける並行処理制御はの機能は、複数のユーザからデータをアクセスするためには必須である。その代表的な実現方ほとして２相施錠方式がある。この２相施錠方式では、トランザクションがデータにロックを掛けることで、操作の実行系列をスケジュールする。あるトランザクションでデータをフクセスするときは必ずロックを掛け、そのトランザクションが終了するときは、そのトランザクション内で掛けた全てのロックを外すようにしている。従って、主記憶上にキャッシュされた永続オブジェクトが、トランザクションを跨がって有効であれば、永続オブジェクトを主記憶上に重複して読む手間がかからない。
【００１１】
しかしながら、上記文献３に開示されたものにおいては、複数のユーザがデータを更新する場合は、いつ主記憶上にキャッシュが無効になるか分からない。このため、既にキャッシュされているキャッシュデータは信用性が無いとみなし、必要なキャッシュデータが更新されておらずそのまま使用できるにも関わらず、そのキャッシュデータを使用せず、再度必要なデータをキャッシュしなければならない。すなわち、ロックに基づくトランザクションによる並行制御を考慮した効率の良いキャッシュの管理を行うことができず、処理効率が悪い。
【００１２】
なおオブジェクト指向データベースシステムを実現したシステムとしては、特開平３−１３７７３０に開示されたものがある。
【００１３】
【発明が解決しようとする課題】
このように上記従来のオブジェクト指向データベースシステムにおいては、オブジェクトテーブルのサイズの肥大化に伴う２次記憶領域の無駄と、テーブル参照のためのＩ／Ｏの増加の可能性があり、このため記憶領域を有効に利用することができず、また処理効率の向上も望めない。
【００１４】
また上記文献３に開示されたものにおいては、あるユーザが、あるトランザクションでキャッシュしたデータ（オブジェクト）を他のトランザクョンでアクセスするような場合には、キャッシュされているデータ（オブジェクト）が有効であるにもかかわらず、そのキャッシュデータを使用せず、再度必要なデータをキャッシュしなければならない。何故ならば、２次記憶領域に存在するデータは複数のユーザによって更新されることを前提としているため、既にキャッシュされているキャッシュデータは信用性が無いとみなすので、ロックを掛ける毎にデータをキャッシュし直さなければならない。よって、ロックに基づくトランザクションによる並行制御を考慮した効率の良いキャッシュの管理を行うことができないので、処理効率が悪くなってしまう。
【００１５】
ところで、永続オブジェクトの主記憶領域上での表現形式であるメモリ形式においては、ディスク形式で表現されている永続オブジェクトの状態を変換した情報のみでなく、主記憶領域上の他のデータのキャッシュや自分自身の状態を示すフラグなどの様々な値を持つべきである。それらの値により主記憶領域上の永続オブジェクトへの参照を効率良く実現できる。またメモリ形式の永続オブジェクトは、ホスト言語であるオブジェクト言語の結合規則と同じものをサポートするべきである。そうすることにより、永続オブジェクトの操作モデルをホスト言語であるオブジェクト指向言語の操作モデルと一体化することができる。
【００１６】
しかしながら上記各文献にはそれらを実現するための手段は開示されていないので、従来においては、永続オブジェクトを主記憶領域上で効率良く表現することはできなかった。
【００１７】
この発明の他の目的は、永続オブジェクトを主記憶領域で効率良く表現することのできるオブジェクト指向データベースシステムおよびそのオブジェクト管理方法を提供することにある。
【００１８】
【課題を解決するための手段】
上記目的を達成するため、請求項１の発明は、２次記憶領域に記憶されている情報としての永続オブジェクトを主記憶領域に読み出すオブジェクト指向データベースシステムにおいて、前記２次記憶領域から前記主記憶上に永続オブジェクトを読み出す読み出し手段と、前記読み出し手段が読み出した永続オブジェクトを、該永続オブジェクトについての各種情報を持つハンドラと前記主記憶上の他の永続オブジェクトの位置情報を含む揮発オブジェクトとの組として前記主記憶上で管理する管理手段と、前記永続オブジェクトを削除する際に、該永続オブジェクトが他の永続オブジェクトから参照されている場合、該永続オブジェクトに対応する揮発オブジェクトを前記主記憶上から解放する削除手段とを備えることを特徴とする。
【００１９】
また、請求項２の発明は、請求項１の発明において、前記永続オブジェクトが他の永続オブジェクトから参照されなくなった場合に、該永続オブジェクトに対応するハンドラを前記主記憶上から解放することを特徴とする。
【００２０】
また、請求項３の発明は、２次記憶領域に記憶されている情報としての永続オブジェクトを主記憶領域に読み出すオブジェクト指向データベースシステムのオブジェクト管理方法において、前記２次記憶領域から前記主記憶上に読み出した永続オブジェクトを、該永続オブジェクトについての各種情報を持つハンドラと前記主記憶上の他の永続オブジェクトの位置情報を含む揮発オブジェクトとの組として前記主記憶上で管理し、前記永続オブジェクトを削除する際に、該永続オブジェクトが他の永続オブジェクトから参照されている場合、該永続オブジェクトに対応する揮発オブジェクトを前記主記憶上から解放することを特徴とする。
【００２１】
また、請求項４の発明は、請求項３の発明において、前記削除された永続オブジェクトが他の永続オブジェクトから参照されなくなった場合に、該永続オブジェクトに対応するハンドラを前記主記憶上から解放することを特徴とする。
【００２２】
【作用】
この発明によれば、２次記憶領域から主記憶領域上に読み出した永続オブジェクトについて、主記憶領域上の位置情報を含む揮発オブジェクトと、永続オブジェクトについての各種情報を持つハンドラとの組みで管理するようにしているので、主記憶領域上において、ハンドラを参照することにより永続オブジェクトに対する操作を行うことができる。
【００２３】
【実施例】
以下、この発明に係るオブジェクト指向データベースシステムおよびそのオブジェクト管理方法の第１の実施例を図１乃至図９の添付図面を参照して説明する。
【００２４】
図１は、この発明を適用したオブジェクト指向データベースシステムの第１の実施例を示す機能ブロック図である。
【００２５】
同図において、オブジェクト指向データベースシステムは、オブジェクト指向データベース管理システム（Object Oriented DataBase Management System＝ＯＯＤＢＭＳ）１０、２次記憶手段２０、主記憶手段３０から構成されている。
【００２６】
２次記憶手段２０には、永続的なオブジェクトつまり永続オブジェクト（persistent Object ）のオブジェクト識別子（Object identity ＝ＯＩＤ）２１Ａと永続オブジェクトの２次記憶手段２０上の位置情報（Disk Address＝ディスクアドレス）２１Ｂとが対応つけられて登録されるオブジェクトテーブル２１と、永続オブジェクト群２２とが格納されている。
【００２７】
主記憶手段３０には、ロードされた永続オブジェクトのＯＩＤ３１Ａ及び永続オブジェクトの２次記憶手段上の位置情報（ディスクアドレス）３１Ｂとロードされた永続オブジェクトの主記憶手段３０上の位置情報（Memory Address＝メモリアドレス）３１Ｃとが対応つけられて登録されるオブジェクトテーブル３１と、ロードされた永続オブジェクト３２とが記憶されている。
【００２８】
オブジェクト指向データベース管理システム１０は、オブジェクトテーブル管理モジュール１１、永続オブジェクト管理モジュール１２から構成されている。オブジェクトテーブル管理モジュール１１はオブジェクトテーブルをハッシュテーブルとして持ち、該ハッシュテーブルを２次記憶手段２０で保管し管理し、必要に応じて必要な部分を主記憶手段３０に読み込み、データであるＯＩＤやディスクアドレス、メモリアドレスのセット、取り出し、削除の操作を行う。
【００２９】
オブジェクトテーブル（ハッシュテーブル）の管理は以下の様に行う。
◆オブジェクトテーブルが２次記憶手段２０上に存在する場合この場合は、オブジェクトテーブルに、永続オブジェクト毎のＯＩＤと２次記憶記憶手段２０上の永続オブジェクトの位置情報（ディスクアドレス）のみを保持する。
◆オブジェクトテーブルが主記憶手段３０上に存在する場合この場合は、オブジェクトテーブルに、永続オブジェクト毎のＯＩＤとディスクアドレスと、主記憶手段３０に存在する永続オブジェクトの主記憶手段３０上の位置情報（メモリアドレス）を保持する。
【００３０】
オブジェクトテーブル管理モジュール１１は、永続オブジェクト管理モジュール１２からのアドレス情報（メモリアドレス、ディスクアドレス）の問合わせ要求や書き込み要求に応じて、所定の処理を行う。なおアドレス情報の問合わせ要求のときは操作の対象となっている永続オブジェクトのＯＩＤが、アドレス情報の書き込み要求のときは操作の対象となっている永続オブジェクトのＯＩＤ及びその永続オブジェクトのアドレス情報が、永続オブジェクト管理モジュール１２からオブジェクトテーブル管理モジュール１１に通知される。
【００３１】
［アドレス情報の問合わせ要求があった場合］
この場合は、アドレス情報の問合わせ要求の内容（メモリアドレスの問合わせか、ディスクアドレスの問合わせかの内容）に応じて、２次記憶手段２０あるいは主記憶手段３０のオブジェクトテーブルをアクセスし、このアクセスにより得られた結果（通知されたＯＩＤを含んでいるエントリ内のメモリアドレスあるいはディスクアドレスアドレス、又はアドレスが存在しない旨）を問合わせ結果として、永続オブジェクト管理モジュール１２に返す。
【００３２】
［アドレス情報の書き込み要求があった場合］
この場合は、アドレス情報の書き込み要求の内容（メモリアドレスの書き込みか、ディスクアドレスの書き込みかの内容）に応じて、２次記憶手段２０あるいは主記憶手段３０のオブジェクトテーブルをアクセスし、該当するテーブルの通知されたＯＩＤを含んでいるエントリに通知されたアドレス情報を書き込む。
【００３３】
一方、永続オブジェクト管理モジュール１２は、永続オブジェクトを２次記憶手段２０で保管し管理し、必要に応じて主記憶手段３０に読み込み、永続オブジェクトの操作を行うと共に、永続オブジェクトの生成や削除により、主記憶手段３０や２次記憶手段２０のデータ内容を更新する。またオブジェクトテーブル管理モジュール１１に対して、アドレス情報（メモリアドレス、ディスクアドレス）の問合わせ要求や書き込み要求を行う。
【００３４】
この要求に応答したオブジェクトテーブル管理モジュール１１では、指定されたＯＩＤで、主記憶手段３０内のオブジェクトテーブルのバリューを得て、これを永続オブジェクト管理モジュール１２に返すこととなる。
【００３５】
永続オブジェクト管理モジュール１２では、メモリアドレスとディスクアドレスの組みであるバリューに応じて以下のような処理を行う。
【００３６】
［指定されたＯＩＤからメモリアドレスが得られた場合］
返されたメモリアドレスで永続オブジェクトをアクセスする。
【００３７】
［指定されたＯＩＤからメモリアドレスが得られない場合］
（ａ）返されたディスクアドレスから求めた永続オブジェクトを主記憶手段３０上に読み込む割り付ける。
（ｂ）オブジェクトテーブル管理モジュール１１に対して、割り付けた永続オブジェクトのメモリアドレスのオブジェクトテーブルへの登録を依頼する。
【００３８】
（ｃ）そのメモリアドレスで永続オブジェクトをアクセスする。
【００３９】
［指定されたＯＩＤからディスクアドレスが求められない場合］
そのＯＩＤを持つ永続オブジェクトは存在しないと判断する。
【００４０】
この実施例では、オブジェクト指向データベース管理システム１０は、上述した機能を実現するためのプログラム（ソフトウェア）を、プロセッサや中処理装置等の制御手段が実行することにより実現されている。勿論、ハードウェアやファームウェアで実現することもできる。
【００４１】
図２は、図１に示した実施例のオブジェクト指向データベースシステムを実現するためのハードウェア構成を示す構成図である。同図において、主記憶装置２１０は先に述べた主記憶手段３０の機能を果たすものであり、２次記憶装置２２０は先に述べた２次記憶手段２０の機能を果たすものである。データプロセッサ２３０は、プログラムであるオブジェクト指向データベース管理システム１０を実行して所定のデー処理を行う。ディスプレイ装置２４０は、データプロセッサ２３０によるデータ処理の結果を表示する。
【００４２】
次に、オブジェクト指向データベース管理システム１０で管理するデータの論理的な構成を図３に示す。
【００４３】
この図に示す例では、データベースファイル３１０は論理的な１つのオブジェクトテーブル３２０を持っており、このテーブルにはＯＩＤと永続オブジェクトの論理アドレスとが対応して登録されている。オブジェクトテーブル３２０は実体である永続オブジェクト群３３０を各永続オブジェクトのＯＩＤで管理する。各永続オブジェクトはシステムにより一意に決定されるＯＩＤを持っている。同様に、データベースファイル３４０もオブジェクトテーブル３５０を持っており、このテーブルによって永続オブジェクト群３６０が管理される。このような論理的構造のデータはメモリ空間にマッピング（mapping ）され操作される。
【００４４】
次に２次記憶装置上でのオブジェクトテーブルの構造の一例を図４に示す。
【００４５】
この実施例においてはオブジェクトテーブルはハッシュテーブルとして実現され、キーとしてＯＩＤ、バリューとしてディスクアドレスを持っている。図４に示す例では、２次記憶装置上の１００００番地にオブジェクトテーブルが格納され、ＯＩＤが“１００”の永続オブジェクトは２次記憶装置上の１２３４５番地に存在し、ＯＩＤが“１０１”の永続オブジェクトは２次記憶装置上の６７８９０番地に存在していることを表している。
【００４６】
続いて主記憶装置上でのオブジェクトテーブルの構造を図５に示す。
【００４７】
この実施例においてはオブジェクトテーブルはハッシュテーブルとして実現され、キーとしてＯＩＤ、バリューとしてディスクアドレスとメモリアドレスの組みを持っている。図５に示す例では、主記憶装置上の１００番地にオブジェクトテーブルが存在し、ＯＩＤが“１００”の永続オブジェクトは主記憶装置上の１２３番地に存在し、ＯＩＤが“１０１”のオブジェクトは主記憶装置に存在していないことを表している。この場合は、ＯＩＤが“１００”と“１０２”のエントリのプローブ（要素の参照）があったので、それらのエントリのみが存在している。
【００４８】
次に、オブジェクト指向データベース管理システム１０による、永続オブジェクトのＯＩＤからメモリアドレスを求める処理について、図６に示すフローチャートを参照して説明する。
【００４９】
アプリケーションプログラム（ユーザ）からオブジェクト指向データベース管理システム１０にＯＩＤが与えられると、永続オブジェクト管理モジュール１２は、オブジェクトテーブル管理モジュール１１に対して、アプリケーションプログラムからのＯＩＤを指定してアドレス情報の問合わせを行う。
【００５０】
オブジェクトテーブル管理モジュール１１では、与えられたＯＩＤに基づいて、オブジェクトテーブルのキーとしてＯＩＤを与え、ディスクアドレスとメモリアドレスの組みであるバリューを得て（ステップ６０１）、これを問合わせ結果として永続オブジェクト管理モジュール１２に返す。
【００５１】
永続オブジェクト管理モジュール１２では、問合わせ結果であるバリューの値が「０」であるか否かを判断する（ステップ６０２）。ここでバリューが「０」の場合（この場合は、与えられたＯＩＤが登録されているエントリが存在しないことを意味する）は、指定されたＯＩＤを持つ永続オブジェクトは存在しないと判断し（ステップ６０３）、その後、処理を終了する。
【００５２】
ステップ６０２でバリューが「０」でない場合（この場合は、与えられたＯＩＤが登録されているエントリが存在し、更に、少なくともそのエントリにディスクアドレスが登録されていることを意味する）は、バリューのメモリアドレスが「０」であか否かを判断する（ステップ６０４）。
【００５３】
ここで、メモリアドレス値が「０」でない場合は、永続オブジェクトは主記憶装置にバッファされていることになるので、そのメモリアドレスを要求元のアプリケーションプログラムに返す（ステップ６０５）。
【００５４】
ステップ６０４でメモリアドレスが「０」の場合は、永続オブジェクトは主記憶装置上にバッファされていないことを意味するので、永続オブジェクト管理モジュール１２は、バリューのディスクアドレスの番地に基づいて、２次記憶装置上での永続オブジェクトを主記憶装置上に読み込んでバッフアし（ステップ６０６）、その読み込んだ永続オブジェクトを主記憶装置に割り付けて、ここに書き込む（ステップ６０７）。その後、今割り付けた永続オブジェクトのメモリアドレスをオブジェクトテーブル管理モジュール１１に渡して、アドレス情報の書き込みを依頼する。
【００５５】
オブジェクトテーブル管理モジュール１１では、その割り付けた主記憶装置上の番地（メモリアドレス）をオブジェクトテーブルのバリューのメモリアドレスに登録する（ステップ６０８）。
【００５６】
ステップ６０８が終了した場合、永続オブジェクト管理モジュール１２は、割り付けた主記憶装置上の番地（メモリアドレス）を、アプリケーションプログラムに返す（ステップ６０９）。
【００５７】
上述した例では、１つのデータファイル内に存在するオブジェクトのアクセスについて説明したが、データベースファイル間を跨がるオブジェクト間の参照も起こり得るので、次にその場合のデータの論理的構造を説明する。その論理的構造を図７に示す。
【００５８】
この図に示す例においては、図３に示した２つのデータベースファイル間に跨がってオブジェクト間で参照が行われていることを示している。すなわち、データベースファイル３４０内のＯＩＤが“７１０”の永続オブジェクト７２０が、他のデータベースファイル３１０内のＯＩＤが“７３０”の永続オブジェクト７４０を参照している。
【００５９】
このようにデータベースファイル間を跨がるオブジェクト間の参照を実現するために、この実施例においては、データベースファイルに、１つのオブジェクトテーブルに加えて、更に１つの外部オブジェクトテーブルを持たせている。その外部オブジェクトテーブルは、自己のテーブルが属しているデータベースファイル内の永続オブジェクトが参照している他のデータベースファイルの永続オブジェクトのＯＩＤをキーとして、また他のデータベースファイルをバリューとして持つハッシュテーブルである。例えば外部オブジェクトテーブルにはＯＩＤとデータベースファイルの論理アドレスとが対応付けされて登録される。
【００６０】
係るデータ構造のデータをアクセスするにあたって、オブジェクト指向データベース管理システム１０は、ＯＩＤが与えられると、最初にオブジェクトテーブルをアクセスする。ここで、与えられたＯＩＤに対応する永続オブジェクトが見付からなかった場合は、次に外部オブジェクトテーブルをアクセスする。このテーブルでも該当する永続オブジェクトが見付からなかった場合は、与えられたＯＩＤに対応する永続オブジェクトは存在しないことになる。
【００６１】
ここで、図７に示した例におけるオブジェクト間の参照を実現するためのデータ構造を図８に示す。同図においては、データベースファイル３１０には外部オブジェクトテーブル８１０が存在し、またデータベースファイル３４０には外部オブジェクトテーブル８２０が存在している。外部オブジェクトテーブル８２０には、永続オブジェクト７２０が参照している永続オブジェクト７４０のＯＩＤつまり“７３０”に対応して、永続オブジェクト７４０が属するデータベースファイル３１０を示す情報つまり論理アドレスが登録されている。このような論理的構造のデータはメモリ空間にマッピング（mapping ）され操作される。
【００６２】
今、ＯＩＤとして“７３０”が与えられたとすると、オブジェクト指向データベース管理システム１０は、そのＯＩＤでオブジェクトテーブル３５０のバリュー（永続オブジェクト）を得ることになる。しかし、そのテーブルには該当する永続オブジェクトは登録されていないので、次に、そのＯＩＤで外部オブジェクトテーブル８２０のバリュー（データベースファイル）を得ることになる。そのテーブルには“７３０”のＯＩＤに対応してデータベースファイル３１０を示す情報（ディスクアドレス）が登録されているので、オブジェクト指向データベース管理システム１０は、そのディスクアドレスに基づいてデータベースファイル３１０をアクセスし、“７３０”のＯＩＤでオブジェクトテーブル３２０のバリュー（永続オブジェクト）を得ることになる。このテーブルには“７３０”のＯＩＤに対応して永続オブジェクト７４０のディスクアドレスが登録されているので、そのディスクアドレスに基づいて永続オブジェクト７４０を参照することができる。
【００６３】
次に、データベースファイルを跨がるオブジェクトの参照が発生する可能性がある場合において、オブジェクト指向データベース管理システム１０による永続オブジェクトの参照の参照処理について図９を用いて説明する。
【００６４】
図９は、永続オブジェクト管理モジュール１２でオブジェクトテーブルと外部オブジェクトテーブルを利用して、永続オブジェクトのＯＩＤからメモリアドレスを求める処理手順のフローチャートである。
【００６５】
アプリケーションプログラム（ユーザ）からオブジェクト指向データベース管理システム１０にＯＩＤが与えられると、永続オブジェクト管理モジュール１２は、オブジェクトテーブル管理モジュール１１に対して、アプリケーションプログラムからのＯＩＤを指定してアドレス情報（オブジェクトテーブル）の問合わせを行う。
【００６６】
オブジェクトテーブル管理モジュール１１は、与えられたＯＩＤに基づいて、オブジェクトテーブルのキーとしてＯＩＤを与え、ディスクアドレスとメモリアドレスの組みであるバリューを得て（ステップ９０１）、これを問合わせ結果として永続オブジェクト管理モジュール１２に返す。永続オブジェクト管理モジュール１２は、問合わせ結果であるバリューが「０」であるか否かを判断する（ステップ９０２）。ここで、バリューが０でない場合は、図６に示す処理手順のステップ６０４〜６０９と同様の処理が行われる（ステップ９０３〜９０８）。
【００６７】
ステップ９０２でバリューが「０」の場合は、永続オブジェクト管理モジュール１２は、オブジェクトテーブル管理モジュール１１に対して、アプリケーションプログラムからのＯＩＤを指定してアドレス情報（外部オブジェクトテーブル）の問合わせを行う。
【００６８】
オブジェクトテーブル管理モジュール１１では、与えられたＯＩＤに基づいて、外部オブジェクトテーブルのキーとしてＯＩＤを与え、データベースファイルのバリューを得て（ステップ９０９）、これを問合わせ結果として永続オブジェクト管理モジュール１２に返す。
【００６９】
永続オブジェクト管理モジュール１２では、問合わせ結果であるバリューのデータベースファイルが「０」であるか否かを判断する（ステップ９１０）。
【００７０】
ステップ９１０において、得られたバリューが「０」の場合は、指定されたＯＩＤを持つ永続オブジェクトは存在しないと判断し（ステップ９１１）、その後、処理を終了し、これに対し、得られたバリューが「０」でない場合は、永続オブジェクト管理モジュール１２に対して、オブジェクトテーブルのアドレス情報の問合わせ要求を行う。
【００７１】
永続オブジェクト管理モジュール１２では、そのＯＩＤが表すデータベースファイルのオブジェクトテーブルにおいて、指定されたＯＩＤからディスクアドレスとメモリアドレスの組みであるバリューを求め（ステップ９１１）、これを問合わせ結果として返す。
【００７２】
オブジェクトテーブル管理モジュール１１では、結果であるバリューが「０」であるか否かを判断し（ステップ９１２）、バリューが０の場合はステップ９１１に進み、バリューが「０」でない場合はステップ９０３に戻る。
【００７３】
以上説明したようにこの実施例では、ハッシュテーブルでオブジェクトテーブルを実現することにより、オブジェクトの本来の意図である永続オブジェクトのＯＩＤとディスアドレスとメモリアドレスの３つの値が管理でき、更に以下の作用効果がある。
【００７４】
（１）オブジェクトテーブルは、主記憶上ではＯＤＩとディスクアドレス、更に主記憶上に存在する永続オブジェクトのメモリアドレスのみを保持するようにしているので、オブジェクトテーブルを主記憶上の永続オブジェクトの管理のバッファとして利用できる。
【００７５】
（２）オブジェクトテーブルを利用し、組のバリューが存在するか否かの判定によって、あるＯＩＤを持つ永続オブジェクトの存在が判定できる。組のバリューが存在しないときは永続オブジェクトが存在しないと判定することができる。
【００７６】
（３）オブジェクトテーブルは２次記憶上ではＯＤＩとディスクアドレスの対応のみを保持しているので、オブジェクトテーブルが肥大化しても、２次記憶上の記憶領域は無駄になら無い。またオブジェクトテーブルは、主記憶上では、全てのデータが必要でなくプローブ（要素の参照）のあったエントリのデータのみを保持しているので、主記憶上の記憶領域も、必要なもののみ存在するので圧迫されない。
【００７７】
次に、この発明に係る第２の実施例を図１０乃至図１３の添付図面を参照して説明する。
【００７８】
図１０は、この発明に係るオブジェクト管理方法を適用したオブジェクト指向データベースシステムの第２の実施例を示す機能ブロックである。
【００７９】
同図において、オブジェクト指向データベースシステムは、オブジェクシ指向データベース管理システム１０１０、２次記憶手段１０２０、主記憶手段１０３０から構成されている。
【００８０】
２次記憶手段１０２０には永続オブジェクトやオブジェクトテーブルなどのデータが格納されており、主記憶手段１０３０には２次記憶手段１０２０からロードされたデータが記憶される。
【００８１】
オブジェクシ指向データベース管理システム１０１０は、永続オブジェクト管理モジュール１０１１，トランザクションモジュール１０１２から構成されている。
【００８２】
永続オブジェクト管理モジュール１０１１は、永続オブジェクトのキャッシュの有効か無効かを判断する操作機能（以下、有効／無効判断操作機能という）１０１１Ａと、永続オブジェクトを２次記憶手段１０２０から主記憶手段１０３０に読み込む操作機能（読込み操作機能という）１０１１Ｂと、永続オブジェクトのキャッシュを無効とする操作機能（キャッシュ無効操作機能という）１０１１Ｃとを有しており、これらの操作機能を実行して、永続オブジェクトを２次記憶手段１０２０で保管し管理し、必要に応じて主記憶手段１０３０に読み込み、永続オブジェクトの操作を行うと共に、永続オブジェクトの生成や消滅により、主記憶手段１０３０や２次記憶手段１０２０のデータ内容を更新する。永続オブジェクトのキャッシュは永続オブジェクト管理モジュール１０１１によって管理される。
【００８３】
トランザクションモジュール１０１２は、永続オブジェクトにロックを掛ける操作機能１０１２Ａと、永続オブジェクトのロックを外す操作機能１０１２Ｂと、トランザキションの異常終了に対する処理を行う操作機能１０１２Ｃとを有しており、これらの操作機能を実行して、２相施錠方式のロックに基づく並行制御を行う。操作機能１０１２Ｃとしては、例えばシステムのエラーやトランザクションのデットロック等が発生してトランザクションが異常終了した場合に、そのトランザクションの再実行とか異常終了した旨をアプリケーションプログラム（ユーザ）に通知したりする処理がある。なお２相施錠方式のロックに基づく並行制御については周知技術を用いて実現することができるので、ここではその説明を省略する。
【００８４】
係る構成のオブジェクト指向データベース管理システム１０１０においては、永続オブジェクト管理モジュール１０１１の各操作機能とトランザクションモジュール１０１２の操作機能は密接な関係になっている。
【００８５】
すなわち、操作機能１０１２Ａ、操作機能１０１２Ｂは共に、有効／無効判断操作機能１０１１Ａ、読込み操作機能１０１１Ｂと関係し、操作機能１０１２Ｃは有効／無効判断操作機能１０１１Ａ、読込み操作機能１０１１Ｂ及びキャッシュ無効操作機能１０１１Ｃと関係する。
【００８６】
なおこの実施例においては、オブジェクト指向データベース管理システム１０１０は、上述した機能を実現するためのプログラム（ソフトウェア）を、プロセッサや中処理装置等の制御手段が実行することにより実現されている。勿論、ハードウェアやファームウェアで実現することもできる。
【００８７】
図１０に示した実施例のオブジェクト指向データベースシステムを実現するためのハードウェア構成は、図２に示した構成と同様になっている。オブジェクト指向データベース管理システム１０１０を実行するデータプロセッサ、主記憶手段３０の機能を果たす主記憶装置、２次記憶手段２０の機能を果たす２次記憶装置、ディスプレイ装置から構成されている。
【００８８】
この実施例においては、１つの永続オブジェクトを表現するに当たって、主記憶装置上での表現形式と２次記憶装置上での表現形式が異なっている。それらの表現形式の一例を図１１に示す。図１１（ａ）は主記憶装置上での永続オブジェクトを示したものであり、図１１（ｂ）は２次記憶装置上での永続オブジェクトを示したものである。
【００８９】
主記憶装置での永続オブジェクトは、図１１（ａ）に示すように、クラスの情報１１１０や属性値の情報１１２０、キャッシュが有効か否かを示す情報（例えばフラグ）１１３０を有している。これに対し、２次記憶装置情での永続オブジェクトは、図１１（ｂ）に示すように、クラスの情報１１１０や属性値の情報１１２０を有している。しかし、キャッシュが有効か否かを示す情報は有していない。
【００９０】
このように主記憶装置での永続オブジェクトのみにキャッシュが有効か否かを示す情報が設けられているのは、その永続オブジェクトのキャッシュが有効か否かを判断するためだからである。従って２次記憶装置情での永続オブジェクトにはその情報を設けておく必要はないのである。
【００９１】
キャッシュが有効か否かを示す情報は、有効無効判断操作機能１０１１Ａによって参照される。ここで無効であると判定された場合は、読込み操作機能１０１１Ｂによって、２次記憶装置から該当する永続オブジェクトが読み込まれると共に、その永続オブジェクトにキャッシュが有効である旨のフラグが設定される。またキャッシュが有効か否かを示す情報は、キャッシュ無効操作機能１０１１Ｃによって、有効から無効に変更される。
【００９２】
次に、トランザクションモジュール１０１２において永続オブジェクトにロックを掛ける操作の処理手順を図１２に示すフローチャートを参照して説明する。操作機能１０１２がロックを掛ける操作を実行したとき、そのロックを掛ける操作の先頭で、有効／無効判断操作機能１０１１Ａを呼び出す。有効／無効判断操作機能１０１１Ａでは、対象となっている主記憶装置上の永続オブジェクトのキャッシュが有効か否かを示すフラグに基づいて、その永続オブジェクトのキャッシュが有効か否かを判断する（ステップ１２０１）。無効の場合は、読込み操作機能１０１１Ｂを呼び出す。
【００９３】
読込み操作機能１０１１Ｂでは、２次記憶装置から該当する永続オブジェクトを読み込むと共に（ステップ１２０２）、主記憶装置上の永続オブジェクトのキャッシュのフラグを有効にし（ステップ１２０３）、更にキャッシュが有効になった旨を操作機能１０１２に通知する。
【００９４】
操作機能１０１２は、キャッシュが有効を示す旨であったときは、２相施錠方式に基づくロックの操作を継続する（ステップ１２０４）。ステップ１２０１でキャッシュが有効の場合はステップ１２０４に進む。
【００９５】
なお、主記憶装置上の永続オブジェクトのキャッシュのフラグを無効にするのは、
（ａ）あるトランザクションで永続オブジェクトの状態を変更して、そのトランザクションが異常終了した場合。これは主記憶装置上の永続オブジェクトが更新されが、トランザクションが異常終了となったので、変更前の永続オブジェクトに対して操作を行わなければならない場合であるの、更新された永続オブジェクトを無効とするためである。これにより２次億装置から更新前の永続オブジェクトが主記憶装置に読込まれることになる。
（ｂ）異なるマシン（異なるオブジェクト指向データベースシステム）の主記憶装置でのトランザクションで永続オブジェクトの状態が変更されて、そのトランザクションが正常終了したことにより、２次記憶装置の永続オブジェクトが更新された場合である。
【００９６】
いずれの場合も、トランザクションモジュール１０１２がそれらの状態を検知して、永続オブジェクト管理モジュール１０１１にキャッシュの無効操作を指示する。
【００９７】
次に、トランザクションに跨がって、主記憶装置上にキャッシュされた永続オブジェクトを利用する場合の処理について、具体例を挙げて説明する。
【００９８】
図１３は、トランザクション間を跨がってキャッシュされた永続オブジェクトを利用する場合の処理を説明するための図を示したものである。
【００９９】
なお図１３において、Ｏｂｊ１、Ｏｂｊ１´は永続オブジェクトを示しており、ｔ１、ｔ２、…、ｔ１３ は時間を示し、これらはｔ１＜ｔ２、…、＜ｔ１３ の関係が成立するものとする。
【０１００】
いま、ユーザ１が、トランザクションＴｒ１とトランザクションＴｒ２に跨がって、キャッシュされた永続オブジェクトに対して操作するものと仮定し、このときトランザクションＴｒ１とトランザクションＴｒ２との間に、ユーザ２がトランザクションＴｒ３を実行するものと仮定する。
【０１０１】
なおこの実施例では、クライアント・サーバ・モデルで実現されるものとし、クライアント（アプリケーションプログラム）として先に示したユーザ１、ユーザ２、データベース（２次記憶装置）をサーバとする。このクライアント・サーバ・モデルを実現するために、例えばリモート・プロシジャ・コール（ＲＰＣ）を用いている。このＲＰＣ自体は周知技術なので、ここでは説明を省略する。
【０１０２】
ユーザ１において、時点ｔ１でトランザクションＴｒ１をオープンし、時点ｔ2でロックし、２次記憶装置からＯｂｊ１を主記憶装置に読込んでキャッシュすると、そのＯｂｊ１は有効となる。時点ｔ３でＯｂｊ１を参照（ｒｅｆｅｒｅｎｃｅ  ）し、時点ｔ４でアンロック（ロックを外す）し、時点ｔ５でコミット（ｃｏｍｍｉｔ）して、トランザクションＴｒ１を正常終了したとする。この場合には、ユーザ１が属しているマシンの主記憶装置及び２次記憶装置（サーバ）ともにＯｂｊ１になっている。
【０１０３】
次に、ユーザ２において、時点ｔ６でトランザクションＴｒ２をオープンし、時点ｔ７でロックし、２次記憶装置からＯｂｊ１を主記憶装置に読込んでキャッシュすると、そのＯｂｊ１は有効となる。時点ｔ８でＯｂｊ１を更新（ｕｐｄａｔｅ）し、時点ｔ９でアンロックし、時点ｔ５でコミット（ｃｏｍｍｉｔ）して、トランザクションＴｒ２を正常終了したとする。この場合は、ユーザ２が属しているマシンの主記憶装置及び２次記憶装置（サーバ）ともにＯｂｊ１´になっている。
【０１０４】
続いて、ユーザ１が、時点ｔ１１でトランザクションＴｒ２をオープンし、時点ｔ１２でロックする。この場合は、ユーザ２でＯｂｊ１を更新したため、先に説明した主記憶装置上の永続オブジェクトのキャッシュのフラグを無効にする場合の（ｂ）に該当するので、ユーザ１の側においては、時点ｔ12でのロックの際に、主記憶装置にキャッシュされているＯｂｊ１のキャッシュが有効か否かを示す情報は有効から無効に変更される。このときキャッシュされているＯｂｊ１のキャッシュが無効であるので、該当するＯｂｊ１´を２次記憶装置（サーバ）から主記憶上に読み直して、ロックの操作を継続する。所定の操作が終了したらアンロックし、時点ｔ１３でコミットする。
【０１０５】
なお先に説明した主記憶装置上の永続オブジェクトのキャッシュのフラグを無効にする場合の（ｂ）においては、ユーザ１（クライアント）がサーバ（２次記憶装置）にロックする旨を通知すると、サーバは対象としているデータ（この場合はＯｂｊ１）が変更されている旨をユーザ１に返す。このときユーザ１は、Ｏｂｊ１のキャッシュが有効か否かを示すフラグを有効から無効に更新する。その後、ユーザ１は該当するデータ（この場合はＯｂｊ１´）をロードしに行くこととなる。これに対し、先に説明した主記憶装置上の永続オブジェクトのキャッシュのフラグを無効にする場合の（ａ）においては、クライアントはアボートの対象となったオブジェクトのキャッシュが有効か否かを示すフラグを有効から無効に更新することになる。以後の処理は上記の処理と同様である。
【０１０６】
なお、ユーザ２の側において、トランザクションＴｒ３の時点8 でＯｂｊ１を参照しＯｂｊ１の状態が変化せず、トランザクションＴｒ３が正常終了した場合には、ユーザ１の側において、キャッシュされているＯｂｊ１は有効（何故ならばトランザクションＴｒ３の時点ｔ８でＯｂｊ１が参照されたからである）であるので、そのままロックの操作を継続することができる。
【０１０７】
以上説明したように、この実施例によれば、主記憶上のキャッシュが有効か無効かのチェックを、２相施錠方式におけるデータロックの一部として実現し、更にロック時にキャッシュが無効であると判断した時点で、永続オブジェクトを２次記憶から主記憶上に読み直して、ロックの操作を継続するようにしているので、キャッシュのチェックをデータのロック時に行うことで、トランザクションを跨がってキャッシュを有効に利用でき、永続オブジェクトの重複した読み込みが防げる。更に、並行処理制御によって、複数のユーザは矛盾なくデータをアクセスできる。
【０１０８】
次に、この発明に係る第３の実施例を図１４乃至図１７の添付図面を参照して説明する。
【０１０９】
この発明の特徴としては、永続オブジェクトを、オブジェクト指向言語の提供するコンストラクタ（で生成したオブジェクト（揮発オブジェクト（volatile Object ））と、永続オブジェクトに付加すべき種々の情報（所属するデータベースファイル、クラスの定義、キャッシュの有効／無効のフラグ、オブジェクトの２次記憶装置上の物理的位置等）を持するハンドラの組としたメモリ形式で実現していることである。
【０１１０】
また永続オブジェクトの主記憶上の位置情報を、ハンドラのアドレスとして表し、かつ各ハンドラは対応する揮発オブジェクトのアドレスを保持するようにしている。
【０１１１】
また永続オブジェクトから永続オブジェクトへの参照は、主記憶上では、参照する永続オブジェクトを構成する揮発オブジェクトの属性値として、参照される永続オブジェクトを構成するハンドラのアドレスを保持させるようすることで実現している。
【０１１２】
更に永続オブジェクトの削除に当たっては、構成する揮発オブジェクトのみを主記憶上の領域から解放し、他の永続オブジェクトから前記削除された永続オブジェクトへの参照がある間は、該削除された永続オブジェクトを構成するハンドラは永続オブジェクトが削除されたことを示すフラグを立て、主記憶上の領域は解放せずに、他の永続オブジェクトから該削除された永続オブジェクトへの参照がなくなったときに、該削除された永続オブジェクトを構成するハンドラの主記憶上の領域を解放するようにしている。
【０１１３】
図１４は、永続オブジェクトの主記憶上の表現であるメモリ形式を示したものである。
【０１１４】
永続オブジェクトは、主記憶上ではハンドラ１４１０と揮発オブジェクト１４２０の組みで表現される。ハンドラ１４１０が主記憶上の永続オブジェクトを代表しており、ハンドラ１４１０は対応する揮発オブジェクト１４２０を参照している。ハンドラ１４１０は、対応する揮発オブジェクトの位置１４１１、永続オブジェクトの識別子１４１２、所属するデータベースファイル１４１３、クラスの定義１４１４、２次記憶装置に保存される際の位置１４１５、主記憶のキャッシュが有効か否かを示すフラグ１４１６、永続オブジェクトがまだ存在するか否かを示すフラグ１４１７などの情報を持っている。
【０１１５】
揮発オブジェクト１４２０は、そのクラス定義から与えられるコンストラクタで生成され、かつ属性値の情報１４２１を持っており、永続オブジェクトを構成する要素でない通常の揮発オブジェクトと全く同じものである。そのため、ホスト言語であるオブジェクト指向言語の結合規則が同じように適用される。主記憶上での永続オブジェクトの状態を変更するということは、構成する揮発オブジェクトの状態（属性値）を変更するということである。
【０１１６】
図１５は、永続オブジェクトから永続オブジェクトへの参照の主記憶上での表現方法を示している。永続オブジェクト１の属性で、永続オブジェクト２を参照する場合、ハンドラ２のアドレスを、揮発オブジェクト１の属性値２とすることで実現することができる。
【０１１７】
次に、永続オブジェクトの削除に当たって、主記憶上の領域の解放の処理手順を図１６に示すフローチャートを参照して説明する。
【０１１８】
主記憶上の領域の解放に当たっては、揮発オブジェクトの主記憶上での領域が解放され（ステップ１６０１）、次に、他の永続オブジェクトが参照しているか否かが判断される（ステップ１６０２）。
【０１１９】
ここで、参照していない場合は、構成するハンドラの主記憶上での領域が解放される（ステップ１６０３）。ステップ１６０２で参照していない場合は、永続オブジェクトの消滅を表すフラグが、構成するハンドラ（図１４に示す永続オブジェクトはまだ存在するか否かを示すフラグ１４１７）に立てられ（ステップ１６０２）、ステップ１６０２に戻る。
【０１２０】
次に、永続オブジェクトから他の永続オブジェクトへの参照を説明するための処理を、図１７に示す具体例を挙げて説明する。
【０１２１】
ここでは、ＯＩＤが“１０”であるObjectＡがＯＩＤが“２０”であるObjectＢを参照している場合を考える。
【０１２２】
２次記憶上では、ＯＩＤが“１０”であるObjectＡは、ObjectＢのＯＩＤ（２０）を保持している。
【０１２３】
主記憶上では、ObjectＡは、１２３番地のメモリアドレスに存在するハンドラと、４５６番地のメモリアドレスに存在する揮発オブジェクトとで表現されており、一方、ObjectＢは、７８９番地のメモリアドレスに存在するハンドラと、８９０番地のメモリアドレスに存在する揮発オブジェクトとで表現されている。
【０１２４】
ここで１２３番地のメモリアドレスはハンドラの位置情報であって、かつObjectＡの主記憶上の位置情報をも示している。そのハンドラには、対応する揮発オブジェクトのアドレス（４５６番地）が保持されている。その揮発オブジェクトには、ObjectＡが参照しているObjectＢを構成しているハンドラのアドレス（７８９）が属性値として保持されている。
【０１２５】
同様に、７８９番地のメモリアドレスはハンドラの位置情報であって、かつObjectＢの主記憶上の位置情報をも示している。そのハンドラには、対応する揮発オブジェクトのアドレス（８９０番地）が保持されている。
【０１２６】
また永続オブジェクトから永続オブジェクトへの参照は、主記憶上では、参照する永続オブジェクトを構成する揮発オブジェクトの属性値として、参照される永続オブジェクトを構成するハンドラのアドレスを保持させるようすることで実現している。
【０１２７】
以上説明したように、この実施例によれば、主記憶上の永続オブジェクトは揮発オブジェクトとハンドラの組みで管理するようにしたので、永続オブジェクトは、揮発オブジェクトによりホスト言語であるオブジェクト指向言語の結合規則に従うことができる。またハンドラは、主記憶上の他のデータのキャッシュや自分自身の状態を示すフラグとして様々な情報（所属するデータベースファイル、クラスの定義、キャッシュの有効／無効のフラグ、オブジェクトの２次記憶装置上の物理的位置等）を持つことができる。
【０１２８】
【発明の効果】
この発明によれば、２次記憶領域から主記憶領域上に読み出した永続オブジェクトについて、主記憶領域上の位置情報を含む揮発オブジェクトと、永続オブジェクトについての各種情報を持つハンドラとの組みで管理するようにしているので、主記憶領域上において、ハンドラを参照することにより永続オブジェクトに対する操作を行うことができる。
【０１２９】
また、この発明によれば、主記憶上の永続オブジェクトは揮発オブジェクトとハンドラの組みで管理するようにしたので、永続オブジェクトは揮発オブジェクトによりホスト言語であるオブジェクト指向言語の結合規則に従うことができる。またハンドラにより永続オブジェクトを操作するのに必要な情報を知ることがるので、主記憶上の永続オブジェクトへの参照の参照効率を向上させることができる。
【図面の簡単な説明】
【図１】  この発明を適用したオブジェクト指向データベースシステムの第１の実施例を示す機能ブロック図。
【図２】  図１に示したシステムを実現するためのハードウェア構成を示すブロック図。
【図３】  第１の実施例におけるオブジェクト指向データベース管理システムで管理するデータの論理的なデータ構造を示す図。
【図４】  第１の実施例におけるオブジェクトテーブルの２次記憶装置上でのデータ構造を示す図。
【図５】  第１の実施例におけるオブジェクトテーブルの主記憶装置上でのデータ構造を示す図。
【図６】  第１の実施例におけるオブジェクト指向データベース管理システムによる永続オブジェクトのアクセス処理の動作を示すフローチャート。
【図７】  第１の実施例におけるデータベースファイル間に跨がって永続オブジェクトの参照が行われる場合の、そのデータの論理的なデータ構造を示す図。
【図８】  図７に示したデータ構造における永続オブジェクト間の参照を実現するためのデータ構造を示す図。
【図９】  第１の実施例におけるオブジェクト指向データベース管理システムによるデータベースファイル間に跨がって永続オブジェクトの参照が行われる場合のその参照処理の動作を示すフローチャート。
【図１０】  この発明に係るオブジェクト指向データベースシステムの第２の実施例を示す機能ブロック図。
【図１１】  第２の実施例における永続オブジェクトの主記憶装置上での表現形式と２次記憶装置上での表現形式を説明するための図。
【図１２】  第２の実施例におけるトランザクションモジュールにおいて永続オブジェクトにロックを掛ける操作の処理手順を示すフローチャート。
【図１３】  第２の実施例におけるトランザクション間に跨がってキャッシュされた永続オブジェクトを操作する場合の手順を説明するための図。
【図１４】  この発明に係るオブジェクト管理方法の第３の実施例における永続オブジェクトの主記憶装置上での表現形式を説明するための図。
【図１５】  第３の実施例における永続オブジェクトから他の永続オブジェクトへの参照を説明するための図。
【図１６】  第３の実施例における永続オブジェクトを削除するに際の主記憶装置上の領域解放の処理手順を示すフローチャート。
【図１７】  第３の実施例における永続オブジェクトから他の永続オブジェクトへの参照を説明するための具体例を示す図。
【符号の説明】
１０、１０１０    オブジェクト指向データベース管理システム
１１    オブジェクトテーブル管理モジュール
１２、１０１１    永続オブジェクト管理モジュール
２０、１０２０    ２次記憶手段
２１、３０    オブジェクトテーブル
２２    永続オブジェクト群
３０、１０３０    主記憶手段
３２    永続オブジェクト
２１０    主記憶装置
２２０    ２次記憶装置
２３０    データプロセッサ
２４０    ディスプレイ装置
１０１２    トランザクションモジュール
１４１０    ハンドラ
１４２０    揮発オブジェクト
【図１】
0003797336.tif 000002
【図２】
0003797336.tif 000003
【図３】
0003797336.tif 000004
【図４】
0003797336.tif 000005
【図５】
0003797336.tif 000006
【図６】
0003797336.tif 000007
【図７】
0003797336.tif 000008
【図８】
0003797336.tif 000009
【図９】
0003797336.tif 000010
【図１０】
0003797336.tif 000011
【図１１】
0003797336.tif 000012
【図１２】
0003797336.tif 000013
【図１３】
0003797336.tif 000014
【図１４】
0003797336.tif 000015
【図１５】
0003797336.tif 000016
【図１６】
0003797336.tif 000017
【図１７】
0003797336.tif 000018