(57)【特許請求の範囲】
【請求項１】
複数のアプリケーションに共有される永続オブジェクトと、特定のアプリケーションの実行中に存在し、そのアプリケーションの終了と共に消滅するアプリケーション固有の揮発オブジェクトとを含む半永続オブジェクトを扱うデータ管理システムにおいて、
各アプリケーションがデータベース上の永続オブジェクトに関する半永続オブジェクトに含まれるアプリケーション固有の揮発オブジェクトをメモリ上に作成する作成手段と、
作成された前記揮発オブジェクトへのポインタを、当該揮発オブジェクトを作成したアプリケーションと当該揮発オブジェクトを含む半永続オブジェクトのインスタンスとに対応付けて、前記複数のアプリケーションで共有する登録表に登録する登録手段と、
各アプリケーションが前記半永続オブジェクトを参照する際に、前記登録表を参照して、当該アプリケーション固有の揮発オブジェクトを同定する同定手段と、
各アプリケーションが前記半永続オブジェクトを更新する際に、前記登録表を参照して、当該半永続オブジェクトの永続部分を共有する他のアプリケーションを識別する識別手段と、
該識別手段により識別された他のアプリケーションに前記半永続オブジェクトの更新を通知する通知手段とを有することを特徴とするデータ管理システム。
【請求項２】
前記登録表が、前記半永続オブジェクトのインスタンス毎に設けられ、前記ポインタがアプリケーションの識別子と対応付けて登録されていることを特徴とする請求項１に記載のデータ管理システム。
【請求項３】
前記半永続オブジェクトの変更が当該半永続オブジェクトの破壊を含むことを特徴とする請求項１に記載のデータ管理システム。
【請求項４】
複数のアプリケーションに共有される永続オブジェクトと、特定のアプリケーションの実行中に存在し、そのアプリケーションの終了と共に消滅するアプリケーション固有の揮発オブジェクトとを含む半永続オブジェクトを扱うデータ管理方法において、
各アプリケーションがデータベース上の永続オブジェクトに関する半永続オブジェクトに含まれるアプリケーション固有の揮発オブジェクトをメモリ上に作成する作成工程と、
作成された前記揮発オブジェクトへのポインタを、当該揮発オブジェクトを作成したアプリケーションと当該揮発オブジェクトを含む半永続オブジェクトのインスタンスとに対応付けて、前記複数のアプリケーションで共有する登録表に登録する登録工程と、
各アプリケーションが前記半永続オブジェクトを参照する際に、前記登録表を参照して、当該アプリケーション固有の揮発オブジェクトを同定する同定工程と、
各アプリケーションが前記半永続オブジェクトを更新する際に、前記登録表を参照して、当該半永続オブジェクトの永続部分を共有する他のアプリケーションを識別する識別工程と、
該識別工程により識別された他のアプリケーションに前記半永続オブジェクトの更新を通知する通知工程とを有することを特徴とするデータ管理方法。
【請求項５】
前記登録表が、前記半永続オブジェクトのインスタンス毎に設けられ、前記ポインタがアプリケーションの識別子と対応付けて登録されていることを特徴とする請求項４に記載のデータ管理方法。
【請求項６】
前記半永続オブジェクトの変更が当該半永続オブジェクトの破壊を含むことを特徴とする請求項４に記載のデータ管理方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、複雑な構造を持ったデータを利用するデータベースアプリケーションを管理する方法に関する。
【０００２】
特に、マルチメディアデータ処理のように、データベース上に存在する永続的なデータと、アプリケーション内にのみ存在する一時的なデータとが、複雑な関係をもって絡み合うアプリケーションにおいて、データを矛盾なく共有する方法に関する。
【０００３】
【従来の技術】
一般に、データベースアプリケーションにおいては、データベース上に置かれ複数のアプリケーションから共有される永続的なオブジェクト（以下、永続オブジェクト）と、アプリケーションの実行中のみ存在しアプリケーションプロセスと共に消滅してしまう一時的なオブジェクト（以下、揮発オブジェクト）とが混在している。
【０００４】
ここで「オブジェクト」とは、従来のレコードデータ、あるいは、関係型データベースのタプルなどを含み、一つの意味をもつまとまりとして扱えるデータ構造全般を指す。
【０００５】
一般にデータベースを利用するアプリケーションを作ろうとする場合、永続オブジェクトと揮発オブジェクトはアプリケーション中で混在したものとなる。特に、永続オブジェクトが揮発オブジェクトをリンクなどの手段で指す状況が発生する。このような状況では、アプリケーションプロセスの終了と共に揮発オブジェクトが消滅し、揮発オブジェクトを含んだ永続的なデータ構造に欠損ができるので、データ構造全体としての意味がなくなってしまう、という問題が発生する。例えば、ビットマップディスプレイとマウスを用いて、図形のドローイングを行う場合、それによって作成した描画データをデータベース管理する例の場合には、その描画データを表示するためのウインドウサーバとの通信情報が、揮発オブジェクトであり、アプリケーションの終了と共にカラー情報やフォント情報が欠損する。したがって、描画データとしての意味が失われてしまう。
【０００６】
従来、オブジェクトの混在から発生するこの問題を回避するため、計算機上でデータベースシステムを用いて蓄えられる永続オブジェクトは、揮発オブジェクトとの関係を記述せず、そのデータベース内に保存されるデータとの関係のみを保存してきた。つまり、データベース内のデータの明示的なもしくは暗に示された参照関係は、この意味においてデータベース内に閉じていた。そして、これにより、データベースの整合性を保っていた。この整合性の保持のために、例えば、典型的な関係型データベースシステム上の永続オブジェクトは、揮発オブジェクトとの関係を保存することを禁止していた。
【０００７】
このため、揮発オブジェクトとの関係を記述する必要があるアプリケーションにおいては、永続オブジェクトをアプリケーションのメモリ空間にコピーしてから、揮発オブジェクトとの関係を記述するといった処理を、アプリケーションプログラマが記述していた。
そのようなアプリケーションの記述の例として、ワークステーション上の一般的なウインドウシステムであるＸウインドウシステムを用いて表示される描画データをデータベース管理する例について説明する。Ｘウインドウシステムでは、ウインドウに表示される描画データは、実際に表示が行われるウインドウサーバとの通信情報（フォント情報やカラー情報のリソース識別子など）を含んでいる。この時、それぞれのウインドウサーバとのコネクションは、アプリケーションプロセスごとに確立されるので、ウインドウサーバとの通信情報は、アプリケーションプロセスごとに異なる。したがって、この描画データは、揮発オブジェクトをその属性として持つ。一方、ここでは、ウインドウ上の描画データを、データベースによって管理しようとしているので、これは、永続オブジェクトである。ここにおいて、従来の方法では、次のような手順を用いて、永続オブジェクトが、揮発オブジェクトと混ざる事を回避している。（１）データベース中に格納するデータ構造と、アプリケーションプロセス内に保持するデータ構造とを分離し、データベース中には、描画データから、ウインドウサーバとの通信情報などの揮発オブジェクトを除いた描画図形固有のデータ部分のみを格納する。（２）アプリケーションプロセスが、描画データを利用する場合には、通信情報を含んだ図形データのデータ構造を確保し、そこにデータベースから取り出した描画データを埋め込み、描画データの複製を作成する。そして、この複製について、ウインドウサーバとの通信情報を確立する。
そして、これらの手順をアプリケーションプログラマの責任において記述することが必要であった。
【０００８】
【発明が解決しようとしている課題】
本発明では、上記従来例に示した課題、すなわち、データベースを用いない実現でのプログラミングでは必要のなかった手続きの追加やデータモデルの変更などのため、アプリケーションプログラマがその責任においてアプリケーション毎に永続オブジェクトと揮発オブジェクトとを矛盾なく扱うプログラムを作成する必要が生じ、アプリケーション作成の生産性が落ちてしまうという課題を解決する。
【０００９】
【課題を解決するための手段】
上記課題を解決するために、本発明によれば、複数のアプリケーションに共有される永続オブジェクトと、特定のアプリケーションの実行中に存在し、そのアプリケーションの終了と共に消滅するアプリケーション固有の揮発オブジェクトとを含む半永続オブジェクトを扱うデータ管理システムにおいて、各アプリケーションがデータベース上の永続オブジェクトに関する半永続オブジェクトに含まれるアプリケーション固有の揮発オブジェクトをメモリ上に作成する作成手段と、作成された前記揮発オブジェクトへのポインタを、当該揮発オブジェクトを作成したアプリケーションと当該揮発オブジェクトを含む半永続オブジェクトのインスタンスとに対応付けて、前記複数のアプリケーションで共有する登録表に登録する登録手段と、各アプリケーションが前記半永続オブジェクトを参照する際に、前記登録表を参照して、当該アプリケーション固有の揮発オブジェクトを同定する同定手段と、各アプリケーションが前記半永続オブジェクトを更新する際に、前記登録表を参照して、当該半永続オブジェクトの永続部分を共有する他のアプリケーションを識別する識別手段と、該識別手段により識別された他のアプリケーションに前記半永続オブジェクトの更新を通知する通知手段とを備える。
また、本発明の他の態様によれば、複数のアプリケーションに共有される永続オブジェクトと、特定のアプリケーションの実行中に存在し、そのアプリケーションの終了と共に消滅するアプリケーション固有の揮発オブジェクトとを含む半永続オブジェクトを扱うデータ管理方法において、各アプリケーションがデータベース上の永続オブジェクトに関する半永続オブジェクトに含まれるアプリケーション固有の揮発オブジェクトをメモリ上に作成する作成工程と、作成された前記揮発オブジェクトへのポインタを、当該揮発オブジェクトを作成したアプリケーションと当該揮発オブジェクトを含む半永続オブジェクトのインスタンスとに対応付けて、前記複数のアプリケーションで共有する登録表に登録する登録工程と、各アプリケーションが前記半永続オブジェクトを参照する際に、前記登録表を参照して、当該アプリケーション固有の揮発オブジェクトを同定する同定工程と、各アプリケーションが前記半永続オブジェクトを更新する際に、前記登録表を参照して、当該半永続オブジェクトの永続部分を共有する他のアプリケーションを識別する識別工程と、該識別工程により識別された他のアプリケーションに前記半永続オブジェクトの更新を通知する通知工程とを備える。
【００１０】
【実施例】
以下、本特許の実施例について、図を用いて説明する。本実施例では、ウインドウシステムを用いた描画アプリケーションにおいて、その描画情報をデータベース管理する例について説明する。
図１は、本実施例におけるシステム構成を表した図である。図中、
１は、描画アプリケーションの利用者が、描画アプリケーションにコマンドやデータを入力するための入力装置で、例えばキーボードやマウスである。
【００１１】
２は、入力装置１より入力された指令に基づいて、本実施例における処理を行うためのＣＰＵで、後述するメモリに存在するプログラムを実行する。
【００１２】
３は、ＣＰＵ２の処理結果、あるいは描画アプリケーションからのメッセージを印刷あるいは表示するための出力装置で、例えばプリンタやＣＲＴディスプレイである。
【００１３】
４は、描画データを保存し管理するためのデータベースで、例えばオブジェクト指向データベースである。
【００１４】
５は、本実施例で扱うデータ、処理プログラム、後述する図２、３、４、８、９、１０、１１、１２に示すごときプログラムおよび処理に要するデータ等を一時的に記憶するための記憶装置である。ここに含まれる各データは、それぞれが独立の記憶装置に分けられていてもよい。
【００１５】
６は、以上の構成要素を結合しデ−タ、アドレス、制御デ−タなどを授受する計算機バスである。
【００１６】
図２は、上記描画アプリケーションで扱われる描画プリミティブの内、円の定義部分を表した図である。図中、
１は、円の属性と振舞いを記述するクラス定義であり、ｂｅｇｉｎ  〜ｅｎｄ  の範囲の記述から成る。以下、円を表すクラスをＣｉｒｃｌｅ、ＣｉｒｃｌｅのあるインスタンスをａＣｉｒｃｌｅ  とする。２は、Ｃｉｒｃｌｅの永続性インスタンス属性の定義であり、座標や長さを表すＤｉｍｅｎｓｉｏｎ  クラスのインスタンスｘ−ｃｅｎｔｅｒ、ｙ−ｃｅｎｔｅｒ、ｒａｄｉｕｓ、および色情報を表すＣｏｌｏｒ  クラスの永続性インスタンスへの参照ｃｏｌｏｒ  から構成される。永続オブジェクトの永続性インスタンス属性は、全て永続オブジェクトである。なお、クラスＣｏｌｏｒ  のインスタンスへの参照を＾Ｃｏｌｏｒと表すが、ｃｏｌｏｒ  は＾Ｃｏｌｏｒクラスのインスタンスと見なすこともできるため、以下そのように扱うものとする。
【００１７】
３は、Ｃｉｒｃｌｅの揮発性インスタンス属性の定義であり、描画属性を表すＰｅｎ  クラスのインスタンスｐｅｎ  と、ａＣｉｒｃｌｅ  が描画されるウインドウ群を表すＷｉｎｄｏｗＬｉｓｔへの参照ｗｉｎｄｏｗｓ  から成る。揮発性インスタンス属性は、２の永続性インスタンス属性と同様クラスのデータ構造を与えるものであるが、永続性インスタンス属性は個々のインスタンスタンス毎に１つ作成される永続オブジェクトであるのに対して、揮発性インスタンス属性は、それが含まれている永続オブジェクトを参照しているアプリケーション毎に作成される揮発オブジェクトである。
【００１８】
４は、Ｃｉｒｃｌｅの永続性クラス属性の定義である。永続性あるいは揮発性インスタンス属性が個々のインスタンス毎に固有の値を持つのに対し、クラス属性は全てのインスタンスに共通の値を持つ。本実施例では、Ｃｉｒｃｌｅの全インスタンスの個数を表す、
Ｉｎｔｅｇｅｒ  クラスのインスタンスｎｕｍ−ｏｆ−Ｃｉｒｃｌｅｓが定義されている。
【００１９】
５は、Ｃｉｒｃｌｅの揮発性クラス属性の定義である。３の揮発性インスタンス属性と同様に、揮発性クラス属性はアプリケーション毎に所定のクラスに属するインスタンスに共通な値を持つ。本実施例における、ウインドウシステムの制御情報への参照を表す＾ＷｉｎｄｏｗＳｙｓｔｅｍ  クラスのインスタンスｗｉｎｄｏｗ−ｓｙｓｔｅｍ  は、アプリケーションの動作中のみ存在し、かつＣｉｒｃｌｅクラスの全インスタンスに共通な揮発オブジェクトである。６は、Ｃｉｒｃｌｅのインスタンスメソッドの宣言であり、ａＣｉｒｃｌｅ  が受け付ける一連のメッセージと、別途定義されるメソッド本体の返値を表すインスタンスのクラスが定義される。但し、返値がない場合はＶｏｉｄとして表す。本実施例では、ａＣｉｒｃｌｅ  を表示するｄｉｓｐｌａｙ  メソッド、ａＣｉｒｃｌｅ  のＸ  座標をＤｉｍｅｎｓｉｏｎ  クラスのインスタンスｘ  に変更し、変更後のａＣｉｒｃｌｅ  への参照を返値とするｓｅｔ−ｘ  メソッド、ｓｅｔ−ｘ  と同様にＹ  座標、半径、色を変更するｓｅｔ−ｙ  、ｓｅｔ−ｒ  、ｓｅｔ−ｃ  メソッド、ａＣｉｒｃｌｅ  の変更を通知するｃｈａｎｇｅｄ  メソッド、ａＣｉｒｃｌｅ  を破壊するｄｅｓｔｒｏｙ  メソッドが定義されている。
【００２０】
７は、Ｃｉｒｃｌｅのクラスメソッドの定義である。クラスメソッドは特定のインスタンスに作用するものではなく、インスタンス生成やクラス属性の初期化などに用いられる。本実施例では、Ｃｉｒｃｌｅのインスタンスを生成し、引数ｘ  、ｙ  、ｒ  、ｃ  に従ってインスタンス属性を設定した後、生成したインスタンスの参照を返すｃｒｅａｔｅメソッドが定義されている。
なお、図２における永続属性と揮発属性の定義は、本実施例のようにインスタンス変数を一括して指定する方法と、例えば「ｔｒａｎｓｉｅｎｔ  Ｄｉｍｅｎｓｉｏｎ  」のように、型を修飾する形式で指定するする方法の２種類があるが、これらは意味的に同等である。以下では、図２の定義に従って説明する。
図３は、Ｃｉｒｃｌｅクラスのクラス属性を初期化する手順を示す流れ図である。
Ｃｉｒｃｌｅクラスのクラス属性としては、永続性クラス属性ｎｕｍ−ｏｆ−Ｃｉｒｃｌｅｓと、揮発性クラス属性ｗｉｎｄｏｗ−ｓｙｓｔｅｍ  がある。まず永続性クラス属性は、他のアプリケーションが検索に失敗した場合は、Ｃｉｒｃｌｅクラスがどのアプリケーションからも使用されたことがないと見なして、永続オブジェクトｎｕｍ−ｏｆ−Ｃｉｒｃｌｅｓを作成し、値を０に初期化する（ステップＳ２）。次に揮発性クラス属性ｗｉｎｄｏｗ−ｓｙｓｔｅｍ  は、既知の手法によるウインドウシステムの初期化の結果得られるウインドウシステム制御情報への参照を用いて初期化する（ステップＳ３）。以上の処理は、アプリケーションがＣｉｒｃｌｅクラスを初めて使用する時点で一度だけ行われる。
【００２１】
図４は、ＣｉｒｃｌｅクラスのインスタンスａＣｉｒｃｌｅ  を生成する手順を示すフローチャートで、処理部ＣＰＵにより実行される。上記のように、Ｃｉｒｃｌｅクラスのインスタンス生成はｃｒｅａｔｅメソッドによって行われる。まずデータベース上にａＣｉｒｃｌｅ  を格納する記憶領域を確保した後、引数を用いて永続性インスタンス属性の初期化を行う（ステップＳ１）。次いで揮発性インスタンス属性を表す揮発オブジェクトを作成する（ステップＳ２）。揮発オブジェクトの作成は、本発明実施においてはアプリケーションの仮想空間に作成したが、実現上はこの限りでなく、データベース上に作成してもよい。以上の処理の後に、揮発性インスタンス属性変換表を作成し（ステップＳ３）、上記揮発オブジェクトをインスタンス属性変換表に登録して（ステップＳ４）、処理を終了する。
図５〜図７は、上記揮発性インスタンス属性変換表を表した図である。
【００２２】
変換表の構成方法は、インスタンス毎に設ける方法、クラス毎に設ける方法、全体で１つの大域的な表を設ける方法の３種類がある。更に後者２種類については、変換表をデータベース上におくか、記憶装置の記憶領域のアプリケーションの仮想空間上におくかの２種類がある。以下、各方法について説明する。
【００２３】
図５は、インスタンス毎の変換表をデータベース上に設ける方法を示した図である。
【００２４】
変換表は、アプリケーション識別子をキー、揮発オブジェクトの参照を値とする辞書として構成される。アプリケーション識別子は、オペレーティングシステムにより提供される識別子であって、例えばホスト識別子とプロセス識別子の組である。
【００２５】
図６は、クラス毎または大域的な変換表をデータベース上に設ける方法を示した図である。変換表は、アプリケーション識別子とオブジェクト識別子をキー、揮発オブジェクトの参照を値とする辞書として構成される。アプリケーション識別子は、第５図と同様である。またオブジェクト識別子は、揮発オブジェクトとして表現されている揮発性インスタンス属性毎に、クラス毎の変換表では同一クラス内で重複の無い番号、大域的な変換表ではデータベース内で重複の無い番号として割り振られる。アプリケーションは、一般にあるクラスの複数のインスタンスを用いるため、同一クラスの揮発性インスタンス属性も一般に複数存在する。オブジェクト識別子は、これらを互いに区別するために必要である。なおオブジェクト識別子としては、データベースシステムによって与えられる識別子を用いてもよく、データベースシステムとは独立に、既知の手法による発番機構によって得られる番号等を用いても良い。
【００２６】
図７は、クラス毎または大域的な変換表をアプリケーションの仮想空間上に設ける方法を示した図である。変換表は、オブジェクト識別子をキー、揮発オブジェクトの参照を値とする辞書として構成される。変換表示体がアプリケーション固有の情報であるため、データベースにおけるアプリケーションの識別は不要となり、図６に較べてアプリケーション識別子が不要になっている。逆に、アプリケーション識別子がない場合、他のアプリケーションによる同一オブジェクトの参照に関する情報が得られるかどうかは、用いているデータベースシステムに依存する。データベースシステムが該参照情報を提供しない場合は、図５または図６の変換表のうち、揮発オブジェクトの参照に関する列を除いた変換表を設けることにより、同等の機能を提供することができる。
【００２７】
図８は、既に作成済みのａＣｉｒｃｌｅ  をアプリケーションが検索して、アプリケーション固有の揮発インスタンス属性を設定する手順を示すフローチャートで、処理部ＣＰＵにより実行される。初めにデータベースに保存されているＣｉｒｃｌｅオブジェクトの検索を行う（ステップＳ１）。検索に成功すれば、揮発性インスタンス属性を作成して（ステップＳ２）、変換表への登録を行う（ステップＳ３）。検索に失敗した場合は、エラーを通知した後（ステップＳ４）終了する。
【００２８】
図９は、ａＣｉｒｃｌｅ  をウインドウに表示する手順を示すフローチャートである。初めにインスタンスａＣｉｒｃｌｅ  を検索し（ステップＳ１）、成功すれば揮発属性ｗｉｎｄｏｗｓ  、ｐｅｎ  、ｗｉｎｄｏｗ−ｓｙｓｔｅｍ  を取り出し（ステップＳ２）、成功すれば上記揮発属性を用いて
ａＣｉｒｃｌｅ  を描画する（ステップＳ  ３）。以上の処理で何からのエラーが発生した場合は、エラーを通知した後（ステップＳ４）終了する。
【００２９】
図１０は、上記図９ステップＳ２における、揮発属性のとりだし手順を示すフローチャートである。ここで揮発性クラス属性は、既知のプログラミング言語で用いられる大域変数として実現され、本発明実施においてもそのように扱っている。一方揮発性インスタンス属性は、図５〜図７で示したいずれかの変換表を用いて登録および参照が行われる。以下では、揮発性インスタンス属性ｐｅｎ  を図５の変換表を用いて取り出す手順について説明する。
【００３０】
図１０において、初めに揮発属性ｐｅｎ  が登録されている変換表の取り出しを行う（ステップＳ１）。取り出しは、図５または図６に示した形式の変換表であれば、既知のデータベース検索手法を用いて行い、図７に示した形式の変換表であれば、アプリケーションのメモリ空間から直接行う。この取り出しに成功すれば、変換表を検索して揮発属性ｐｅｎ  に対応する項目を取り出す（ステップＳ２）。この取り出しに成功すれば、上記項目より揮発オブジェクトｐｅｎ  を取り出す（ステップＳ  ３）。以上の処理で何らかのエラーが発生した場合は、エラーを通知した後（ステップＳ４）終了する。図１１は、半永続オブジェクトが変更される際に、該半永続オブジェクトの永続部分を共有する各アプリケーションに、変更を通知する手段を示すフローチャートである。上記のように、ａＣｉｒｃｌｅ  の変更通知はｃｈａｎｇｅｄ  メソッドによって行われる。初めに、半永続オブジェクトａＣｉｒｃｌｅ  の永続部分を参照しているアプリケーション識別子のリストを作成する（ステップＳ１）。これは、図５または図６に示した変換表から作成
することが可能であり、またデータベースシステムの機能を用いて作成することが可能である場合もある。次に、上記リストが空でなければ、他にａＣｉｒｃｌｅ  を参照しているアプリケーションが存在することになるので、アプリケーション識別子をリストから取り出す（ステップＳ２）。更に、オペレーティングシステム等によって提供される既知のプロセス間通信機能を用いて、上記アプリケーション識別子に対応するアプリケーションと通信可能であるかどうかを調べ、通信可能であればアプリケーションに変更を通知する（ステップＳ３）。以上の処理をリストが空になるまで繰り返した後、処理を終了する。なお、該変更通知を受け取った側のアプリケーションは、例えば第９図に示した手順に従って、ａＣｉｒｃｌｅ  の再表示を行う。
【００３１】
図１２は、半永続オブジェクトが破壊される際に、該半永続オブジェクトの永続部分を共有する各アプリケーションに、破壊を通知する手段を示すフローチャートである。半永続オブジェクトの破壊通知を行う場合、破壊を行ってから通知する方法と、通知を行ってから破壊する方法とがある。前者は、図１１に示した手順で処理を行う。一方後者は、破壊を行う以前に図１１と同様の処理を行った後（ステップ１〜３）、破壊通知を行っている途中で他のアプリケーションによって破壊され、データベースから抹消されていないかどうかを調べ、未だ破壊されておらず、データベース中に存在している場合は破壊処理を行った後、処理を終了する。なお、アプリケーション間で破壊通知を行う場合、通知を受けとったアプリケーションが、図１１に示した手法で変更通知を発効し、図１２の処理と連動させることにより、複数のアプリケーション間で破壊処理を協調的に行うことが可能である。さらに、図１１の手法を組み合わせることにより、破壊処理に限らず、任意の協調処理を実現することも可能である。
【００３２】
【発明の効果】
以上説明したように、本発明によれば、マルチメディアデータベースのように、複数のプロセスに共有される永続データと、特定のプロセスの実行中に存在し、そのプロセスの終了と共に消滅するプロセス固有の一時データとを扱うデータ管理において、次のような利点がある。
（１）永続データが一時データを含んでいたとしても、アプリケーション・プロセスでの利用時点では、欠けのない状態に保つことができる。
（２）複数のアプリケーション・プロセスによって共有される永続データの整合性を保つことができる。
（３）複数のアプリケーション・プロセスの協調動作が容易に実現できる。
【図面の簡単な説明】
【図１】本発明における実施例を説明するためのシステム構成図、
【図２】実施例における半永続オブジェクトの定義を説明するためのクラス定義図、
【図３】半永続オブジェクトのクラス属性の初期化を説明するためのフローチャート、
【図４】半永続オブジェクトのインスタンス生成手順を説明するためのフローチャート、
【図５】半永続オブジェクトの揮発性インスタンス属性の設定および取り出しを行うための変換表を、半永続オブジェクトのインスタンス毎に、データベース上に設ける場合の構造を説明するための図、
【図６】半永続オブジェクトの揮発性インスタンス属性の設定および取り出しを行うための変換表を、半永続オブジェクトのクラス毎に、または大域的に、データベース上に設ける場合の構造を説明するための図、
【図７】半永続オブジェクトの揮発性インスタンス属性の設定および取り出しを行うための変換表を、半永続オブジェクトのクラス毎に、または大域的に、アプリケーションの仮想空間上に設ける場合の構造を説明するための図、
【図８】半永続オブジェクトの揮発性インスタンス属性の設定手順を説明するためのフローチャート、
【図９】半永続オブジェクトの揮発属性を用いた処理を行う場合の手順を説明するためのフローチャート、
【図１０】半永続オブジェクトの揮発属性を取り出す手順を説明するためのフローチャート、
【図１１】半永続オブジェクトの変更を、該半永続オブジェクトを参照しているアプリケーションに通知する手順を説明するためのフローチャート、
【図１２】半永続オブジェクトを破壊する際、破壊に先だって、該半永続オブジェクトを参照しているアプリケーションに破壊を通知する手順を説明するためのフローチャート。
【符号の説明】
１  入力装置
２  ＣＰＵ
３  出力装置
４  デ−タベ−ス
５  記憶装置
【図１】
0003630697.tif 000002
【図２】
0003630697.tif 000003
【図３】
0003630697.tif 000004
【図４】
0003630697.tif 000005
【図５】
0003630697.tif 000006
【図６】
0003630697.tif 000007
【図７】
0003630697.tif 000008
【図８】
0003630697.tif 000009
【図９】
0003630697.tif 000010
【図１０】
0003630697.tif 000011
【図１１】
0003630697.tif 000012
【図１２】
0003630697.tif 000013