(57)【特許請求の範囲】
【請求項１】
ユーザアプリケーションプログラムと、データを配置する共有メモリ領域と、マスタデータを格納するディスク装置と、を備えたメモリデータベースシステムであって、
前記共有メモリ領域が、ユーザアプリケーションプログラムが参照のみできる参照用領域と、ユーザアプリケーションプログラムが参照及び更新が可能な更新用領域と、を備えるとともに、
前記共有メモリ領域の前記参照用領域及び前記更新用領域の両方を参照及び更新が可能なコミット実行デーモンを備え、
前記参照用領域が、前記ディスク装置からロードした本データ及びその参照用インデックスを有するマスタデータを格納し、
前記更新用領域が、前記ユーザアプリケーションプログラムが前記マスタデータを更新したときの差分データ及びそのインデックスとなる、前記参照用インデックスとリンクした更新用インデックスを格納し、
前記コミット実行デーモンが、前記差分データによって前記マスタデータを更新する
ことを特徴とするメモリデータベースシステム。
【請求項２】
前記更新用領域が、前記更新用インデックスとして、前記参照用インデックスをコピーして格納する
ことを特徴とする請求項１記載のメモリデータベースシステム。
【請求項３】
共有メモリ領域に格納されたマスタデータを更新するためのメモリデータベース更新方法であって、
前記共有メモリ領域を、ユーザアプリケーションプログラムが参照のみできる参照用領域と、ユーザアプリケーションプログラムが参照及び更新が可能な更新用領域とに分割するステップと、
前記参照用領域に本データ及びその参照用インデックスを有するマスタデータを格納するステップと、
前記更新用領域に前記ユーザアプリケーションプログラムが前記マスタデータを更新する差分データ及びそのインデックスとなる、前記参照用インデックスとリンクした更新用インデックスを格納するステップと、
前記差分データを前記マスタデータに適用して、当該マスタデータを更新するステップと、
を有することを特徴とするメモリデータベース更新方法。
【請求項４】
前記更新用領域に、前記更新用インデックスとして、前記参照用インデックスをコピーして格納する
ことを特徴とする請求項３記載のメモリデータベース更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザアプリケーションプログラムが共有メモリ上に置かれたデータ領域を直接更新するメモリデータベースとメモリデータベースシステム及びメモリデータベース更新方法に関する。
【背景技術】
【０００２】
ユーザアプリケーションプログラムが共有メモリ上に置かれたデータ領域を直接更新するようなメモリデータベースシステムでは、図１３に示すように、ユーザアプリケーションプログラムがデータを更新する際に、ユーザアプリケーションプログラムの不具合により共有メモリ上のデータ領域を容易に破壊できてしまうという問題がある。
【０００３】
メモリデータベースシステムのジャーナルファイルシステムにおいては、データ破壊が発生した場合、図１４に示すように、
１．メモリ上の破壊されたデータを破棄、
２．ディスク装置からマスタデータを再ロード、
３．メタデータを保持・管理しているジャーナルファイルから更新データをロールフォワード
という手順を踏んでデータを復旧させる必要がある。
【０００４】
しかし、手順２、３はディスク装置からのデータ読込が必要となるが、通常ディスク装置へのアクセスはメモリへのアクセスに比べて読み書きするために必要な時間が極端に遅く、性能が大きく劣るため、メモリ破壊発生時の復旧にかかるコストが大きい。
【０００５】
メモリデータベースシステムにおいて、ユーザアプリケーションプログラムによるデータ破壊を防ぐ方法として、クライアント／サーバ方式がある。クライアント／サーバ方式では、図１５に示すように、サーバデーモンを設け、ユーザアプリケーションプログラムがデータにアクセスする場合、必ずサーバデーモンを介してアクセスするようにする。共有メモリにはサーバデーモンのみがアクセスし、ユーザアプリケーションプログラム自身には直接共有メモリをアクセスできないようにすることで、ユーザアプリケーションプログラムが共有メモリ上のデータを破壊できないようにしている。
【０００６】
別の方法として、ＣＶＳ（Ｃｏｎｃｕｒｒｅｎｔ  Ｖｅｒｓｉｏｎｓ  Ｓｙｓｔｅｍ）に用いられている手法が知られている。ＣＶＳは複数人で同時にファイルを操作するための版管理システムで、図１６に示すように、ユーザがマスタデータ（この場合、マスタファイル）を更新する際には、まずリポジトリと呼ばれる領域からローカル領域にマスタファイル全体をコピーし、それを更新する。その後、更新内容をまとめてマスタファイルに反映する。ユーザ自身には直接マスタファイルを更新できないようにすることで、ユーザがマスタファイルを破壊できないようにしている。
【０００７】
また、特許文献１では、図１７に示すように、データベースシステムにおいて、アプリケーションプロセスからは共有メモリを読み出し専用とした上で、アプリケーションプロセス毎に更新用メモリをブロック単位（文献１の例では６４ＫＢ）またはページ単位（同４〜８ＫＢ）で用意し、データ更新時にはまず共有メモリの該当ブロックを更新用メモリにコピーしてから、更新用メモリに対してデータの更新を行い、最後にマネージャプロセスが上記更新用メモリの内容を共有メモリにコピーする方法が提案されている。アプリケーションプロセスがマスタデータを直接アクセスできないようにすることで、ユーザがマスタファイルを破壊できないようにしている。
【０００８】
【特許文献１】特開平１０−０３１６０４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、クライアント／サーバ方式では、ユーザアプリケーションプログラムがデータにアクセスする際に常にユーザアプリケーションプログラムとサーバデーモン間のプロセス間通信が必要となるため、共有メモリを直接アクセスする場合に比べプロセス間通信のオーバーヘッドによるデータ更新性能の劣化により、データアクセスのコストが高くなり、トランザクション性能が悪化する。
この点は、高いトランザクション性能を求められるメモリデータベースでは大きな問題となる。
【００１０】
また、データ更新処理を始める前に、ＣＶＳ方式ではマスタデータの完全なコピーを、また特許文献１で示された方法はブロック単位またはページ単位で別領域にマスタデータの一部をコピーする必要がある。
メモリ間のデータのコピー処理は、コピーするサイズに比例してＣＰＵリソースを消費するため、データ更新を始めるたびに毎回マスタデータをコピーするこれらの方法は、ＣＰＵリソースをコピー処理に奪われてトランザクション性能が悪化するという課題がある。
同時に、これらの方法は、データを更新するプロセス数分マスタデータのコピーを持つことになるため、その分システムに必要なメモリリソースも増加するという課題もある。
【００１１】
本発明の目的は、ユーザによるデータ破壊を防ぐことができるとともに、データアクセス性能の劣化およびＣＰＵリソース、メモリリソースの消費を最小限に抑えることができるメモリデータベースを提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明のメモリデータベースは、データを配置する共有メモリ領域を有するメモリデータベースであって、前記共有メモリ領域が、ユーザアプリケーションプログラムが参照のみできる参照用領域と、ユーザアプリケーションプログラムが参照及び更新が可能な更新用領域と、を備える構成としてある。
【００１３】
また、本発明のメモリデータベースシステムは、ユーザアプリケーションプログラムと、データを配置する共有メモリ領域と、マスタデータを格納するディスク装置と、を備えたメモリデータベースシステムであって、前記共有メモリ領域が、ユーザアプリケーションプログラムが参照のみできる参照用領域と、ユーザアプリケーションプログラムが参照及び更新が可能な更新用領域と、を備えるとともに、前記共有メモリ領域の前記参照用領域及び前記更新用領域の両方を参照及び更新が可能なコミット実行デーモンを備える構成としてある。
【００１４】
また、本発明のメモリデータベース更新方法は、共有メモリ領域に格納されたマスタデータを更新するためのメモリデータベース更新方法であって、前記共有メモリ領域を、ユーザアプリケーションプログラムが参照のみできる参照用領域と、ユーザアプリケーションプログラムが参照及び更新が可能な更新用領域とに分割するステップと、前記参照用領域にマスタデータを格納するステップと、前記更新用領域に前記ユーザアプリケーションプログラムが前記マスタデータを更新する差分データを格納するステップと、前記差分データを前記マスタデータに適用して、当該マスタデータを更新するステップと、を有する方法としてある。
【発明の効果】
【００１５】
本発明によれば、共有メモリ領域にユーザアプリケーションプログラムが参照のみできる参照用領域とユーザアプリケーションプログラムが参照及び更新が可能な更新用領域とを設けることにより、マスタデータを参照用領域に格納しておけば、ユーザアプリケーションプログラムはマスタデータを格納している参照用領域にアクセスできないので、ユーザアプリケーションプログラムの不具合により、マスタデータが破壊されることがなくなる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の好ましい実施形態について図面を参照して説明する。
なお、以下に示す本実施形態のメモリデータベースにおける各処理、動作は、プログラム（ソフトウェア）の命令によりコンピュータで実行される処理，手段，機能によって実現される。プログラムは、コンピュータの各構成要素に指令を送り、以下に示すような所定の処理・機能を行わせる。すなわち、本実施形態のメモリデータベースにおける各処理・手段は、プログラムとコンピュータとが協働した具体的手段によって実現される。
なお、プログラムの全部又は一部は、例えば、磁気ディスク，光ディスク，半導体メモリ，その他任意のコンピュータで読取り可能な記録媒体により提供され、記録媒体から読み出されたプログラムがコンピュータにインストールされて実行される。また、プログラムは、記録媒体を介さず、通信回線を通じて直接にコンピュータにロードし実行することもできる。
【００１７】
図１は、本発明のメモリデータベースシステムの一実施形態を示すシステム図である。
同図に示す本実施形態のメモリデータベースシステム１は、パーソナルコンピュータやワークステーションなどの情報処理装置により構成されており、具体的には、データベースのデータを格納する共有メモリ１００と、ユーザが独自に作成したユーザアプリケーションプログラム２００と、コミット実行デーモン３００と、マスタデータを格納しているディスク装置４００の各部を備えている。
【００１８】
共有メモリ１００は、参照用領域１１０と、更新用領域１２０に分割されている。
参照用領域１１０には、マスタデータ１１１が格納される。
マスタデータ１１１は、メモリデータベースシステム１の動作開始時に、ディスク装置４００から読み込まれる。
マスタデータ１１１は、本データとしてのレコード１１２と、参照用インデックスとしてのインデックスツリー１１３から構成される。
【００１９】
インデックスツリー１１３は、高速にレコードを検索するために用いる木構造であり、葉の部分に参照用ポインタ格納領域１１４を有する。
参照用ポインタ格納領域１１４は、それぞれ対応するレコード１１２を指す参照用ポインタ１１５の値と、更新用領域１２０に設けられる対応する更新用インデックスとしての更新用ポインタ格納領域１２４へのリンクを格納する。
参照用領域１１０は、ユーザアプリケーションプログラム２００からは参照のみ可能で、更新はできないようにアクセス制限が設定され、コミット実行デーモン３００からは参照および更新が可能なようにアクセス制限が設定される。
【００２０】
更新用領域１２０には、更新データ１２１が格納される。
ユーザアプリケーションプログラムがマスタデータ１１１を更新しようとしたタイミングで更新データ１２１を作成する。
更新データ１２１は、更新前と更新後の差分データとしての差分レコード１２２と、更新用インデックスとしての更新用ポインタ格納領域１２４から構成される。
【００２１】
更新用ポインタ格納領域１２４は、参照用領域１１０にマスタデータ１１１が読み込まれたタイミングで、自動的に参照用ポインタ格納領域１１４の内容がコピーされ、参照用ポインタ格納領域１１４からリンクが張られる。
したがって、初期状態では、更新用ポインタ格納領域１２４は、それぞれ対応するマスタデータ１１１上のレコード１１２を指す更新用ポインタ１２５の値を格納する。
【００２２】
その後、ユーザアプリケーションプログラム２００がマスタデータ１１１を更新しようとして差分レコード１２２が作成されると、更新用ポインタ１２５がその差分レコード１２２を指すように更新用ポインタ格納領域１２４の値が更新される。
更新用領域１２０は、ユーザアプリケーションプログラム２００からもコミット実行デーモン３００からも参照および更新が可能なようにアクセス制限が設定される。
【００２３】
ユーザアプリケーションプログラム２００は、メモリデータベースシステム１を使用するユーザが独自に作成し、参照用領域１１０に置かれたマスタデータ１１１を参照する機能と、マスタデータ１１１を更新しようとする際に差分レコード１２２を作成し、更新用領域１２０を排他した上で作成した差分レコード１２２を更新用領域１２０に格納し、更新用ポインタ１２５をその差分レコード１２２を指すように張り替える機能を持つ。
また、データ更新後、コミット実行デーモン３００にコミット要求を送信することで、コミット処理を実行させる機能を有する。
【００２４】
コミット実行デーモン３００は、メモリデータベースシステム１内で動作し、ユーザアプリケーションプログラム２００からのコミット要求を受信したら、参照用領域１１０および更新用領域１２０を排他した上で、更新用領域１２０に格納された差分レコード１２２を、参照用領域１１０に格納されたマスタデータ１１１に反映させ、かつ更新用ポインタ１２５を全てマスタデータ１１１のレコード１１２を指すように張り替える機能を有する。
【００２５】
次に、図２〜図１２を参照しながら上記メモリデータベースシステム１の動作について説明する。
まず準備として、メモリデータベースシステム１の起動時に、図２に示すように、共有メモリ１００上に参照用領域１１０と更新用領域１２０を作成する。
次に、図３に示すように、ディスク装置４００から読み込んだマスタデータ１１１を参照用領域１１０上にロードする。マスタデータ１１１は、本データとしてのレコード１１２と、参照用インデックスとしてのインデックスツリー１１３から構成される。インデックスツリー１１３は、葉の部分に参照用ポインタ格納領域１１４を持つ。
【００２６】
同時に、図４に示すように、更新用領域１２０上に、参照用ポインタ格納領域１１４を、更新用ポインタ格納領域１２４としてコピーする。
参照用ポインタ格納領域１１４は、対応するレコード１１２を指す参照用ポインタ１１５の値を格納する共に、更新用領域１２０に設けられる対応する更新用インデックスとしての更新用ポインタ格納領域１２４へのリンクを格納する。
更新用ポインタ格納領域１２４は、差分レコード２２２を指す更新用ポインタ１２５の値を格納する。
但し、初期状態として、各更新用ポインタ１２５は、図４に示すように、マスタデータ１１１上の参照用ポインタ１１５と同じレコードを指す。
【００２７】
次に、ユーザアプリケーションプログラム２００が共有メモリ１００上に置かれたマスタデータ１１１を更新する方法について説明する。
ユーザアプリケーションプログラム２００は、マスタデータ１１１のレコード１１２を更新しようとした場合、まず、図５に示すように、更新用領域１２０を、他のユーザアプリケーションプログラムやコミット実行デーモン３００が参照できないように排他する。
次に、更新しようとするレコードを、インデックスツリー１１３から更新用ポインタをたどることにより特定する。
その後、図６に示すように、先ほど位置を特定した更新前のレコードイメージと、更新後のレコードイメージからなる差分レコードイメージ１２２を、更新用領域１２０に格納した上で、更新用ポインタ１２５が差分レコードイメージ１２２を指すように更新用ポインタ格納領域１２４を書き換える。
全ての処理が終わった後、更新用領域１２０に対する排他を解除する。
【００２８】
ユーザアプリケーションプログラム２００による特定回数（１回でもよいし、複数回でもよい）の更新が終わった後、更新用領域１２０に蓄積された更新データ１２１をマスタデータ１１１に反映するために、図７に示すように、ユーザアプリケーションプログラム２００は、コミット実行デーモン３００に対してプロセス間通信を用いてコミット要求を送信する。
コミット実行デーモン３００は、コミット要求を受け取ると、まず参照用領域１１０と更新用領域１２０を排他する。
【００２９】
次に、更新用領域１２０に蓄積された差分レコード１２２を、まとめて参照用領域１１０のマスタデータ１１１に反映する。
差分レコード１２２でマスタデータ１１１を書き換えた後、図８に示すように、差分レコード１２２を削除し、差分レコード１２２を指していた更新用ポインタ１２５がマスタデータ１１１上の対応するレコード１１２を指すように、更新用ポインタ格納領域１２４を書き換える。
全ての処理が終わった後、参照用領域１１０および更新用領域１２０に対する排他を解除する。
【００３０】
次に、ユーザアプリケーションプログラム２００によって更新が行われたレコードを、さらに別のユーザアプリケーションプログラム２１０が更新する方法について説明する。
ユーザアプリケーションプログラム２００により、マスタデータ１１１に対して更新が行われ、図６に示したように、差分レコード１２２が更新用領域１２０に格納され、更新用ポインタ１２５が差分レコード１２２を指すように更新用ポインタ格納領域１２４が書き換えられ、更新用領域１２０の排他が解除された状態であるとする。
ユーザアプリケーションプログラム２１０が、再度レコード１１２に対して更新しようとした場合、まず、図９に示すように、更新用領域１２０を、他のユーザアプリケーションプログラムやコミット実行デーモン３００が参照できないように排他する。
【００３１】
次に、更新しようとするレコードを、更新用ポインタ１２５をたどることにより特定する。この場合、更新用ポインタ１２５は差分レコード１２２内を指しており、現在の実更新対象レコードは更新後レコード１２８であると判断する。
その後、図１０に示すように、この更新後レコード１２８と、さらに今回更新した後のレコードからなる差分レコードを更新用領域１２０に格納した上で、更新用ポインタ１２５が今作成した差分レコードを指すように更新用ポインタ１２５を張り替える。全ての処理が終わった後、更新用領域１２０に対する排他を解除する。
【００３２】
ユーザアプリケーションプログラム２１０による更新が終わった後の、コミット実行デーモン３００によるマスタデータ１１１への反映処理については、先ほどと全く同様である。
すなわち、ユーザアプリケーションプログラム２１０からコミット要求を受け取ったコミット実行デーモン３００は、参照用領域１１０と更新用領域１２０を排他し、更新用領域１２０に蓄積された差分レコード１２２を、まとめて参照用領域１１０のマスタデータ１１１に反映し、差分レコード１２２でマスタデータ１１１を書き換えた後、差分レコード１２２を削除し、更新用ポインタ格納領域１２４を書き換えた後、参照用領域１１０および更新用領域１２０に対する排他を解除する。
【００３３】
次に、ユーザアプリケーションプログラム２００によりマスタデータ１１１を更新しようとしている最中に、別のユーザアプリケーションプログラム２１０がマスタデータ１１１を参照する場合について説明する。
ユーザアプリケーションプログラム２００がマスタデータ１１１を更新しようとしている最中は、図１１に示すように、更新用領域１２０は排他されており、他のユーザアプリケーションプログラムやコミット実行デーモン３００が参照することはできないが、参照用領域１１０はデータ更新が一切なく、排他が不要であるため、他のユーザアプリケーションプログラムから常に参照が可能である。
【００３４】
ただし、ユーザアプリケーションプログラム２００の更新処理が完了し、コミット実行デーモン３００にコミット要求を出した後、コミット実行デーモン３００が更新データ１２１をマスタデータ１１１に反映している間は、参照用領域１１０と更新用領域１２０の両方が排他されているため、どのユーザアプリケーションプログラムもマスタデータ１１１を参照することはできない。
もちろん、どのユーザアプリケーションプログラムもマスタデータ１１１を更新していないときは、どのユーザアプリケーションプログラムもマスタデータ１１１を参照可能であることは言うまでもない。
本実施形態のデータベースシステムは、複数のユーザアプリケーションプログラムに「同じ」データを「同時に」「矛盾無く」読み書きできる機能が確保されている。
【００３５】
また、データベースシステムにはデータを障害から保護する機能が必要である。
ユーザアプリケーションプログラム２００の不具合によりメモリ破壊が発生した場合の、共有メモリ１００上のデータを復旧する方法について説明する。
ユーザアプリケーションプログラム２００の不具合によりメモリ破壊が発生した場合、破壊され得るメモリ領域は、ユーザアプリケーションプログラム自身が持つメモリ（ローカルメモリと呼ぶ）と、メモリデータベースシステム１上の共有メモリ１００のうち、ユーザアプリケーションプログラム２００が更新権限を持つ更新用領域１２０に限定され、更新権限を持たない参照用領域１１０が破壊されることはない。
【００３６】
更新用領域１２０上の更新データ１２１が破壊されたことを検出した場合、図１２に示すように、更新用領域１２０を排他した上で、差分レコード１２２を全て破棄し、かつ参照用ポインタ格納領域１１４の内容を再度更新用領域１２０にコピーし、更新用領域１２０の排他を解除することで、速やかに直近のコミットされたデータ状態に戻すことができる。
この間、参照用領域１１０は更新されず、排他されないため、どのユーザアプリケーションプログラムもマスタデータ１１１を参照することが可能である。
【００３７】
更新データが破壊されたことを検出する方法としては、更新データ作成時に、そのデータのチェックサムを計算、格納しておき、次にその更新データが参照されるときに再度チェックサムを計算して、格納されている値と比較するという方法が考えられる。
また、破壊の検出を行うプロセスは、ユーザアプリケーションプログラム２００でもよいし、コミット実行デーモン３００でもよいし、データ破壊検出専用のプロセスを新たに用意してもよい。
【００３８】
このように、本実施形態のメモリデータベースシステム１によれば、データを配置する共有メモリ１００を、ユーザアプリケーションプログラム２００が参照のみ可能な参照用領域１１０と参照および更新が可能な更新用領域１２０に分割することで、ユーザアプリケーションプログラムにメモリを破壊するような不具合があった場合としても、データ破壊の影響をユーザアプリケーションプログラム２００が更新権限を有する更新用領域１２０上の更新データ１２１のみに局所化することができる。
【００３９】
これにより、メモリ破壊が発生した場合でも、マスタデータ１１１は参照用領域１１０で保全されているため、更新用領域１２０上の更新データ１２１を全て破棄し、更新用ポインタ１２４が指す先を書き直すだけで、直近のコミットされたデータ状態に戻すことが可能になる。
その結果、従来の復旧手順である、（１）メモリ上のデータ破棄、（２）ディスク装置からのデータ再ロード、（３）ジャーナルファイルからのロールフォワードに比べ、本発明ではディスクアクセスを要する手順がなくなるため、データリカバリにかかる時間が大幅に短縮される。
【００４０】
また、本実施形態では、上記メモリ破壊の局所化を実現した上で、オーバーヘッドの原因となるプロセス間通信は、ユーザアプリケーションプログラム２００がコミット実行デーモン３００にコミット要求を出すときだけであり、その他はユーザアプリケーションプログラムが共有メモリ１００に直接アクセスするため、データアクセス性能の劣化を最小限とし、トランザクション性能が向上する。
また、データ更新毎にメモリにマスタデータをコピーすることはせず、差分データを作成するだけであるので、ＣＰＵリソースおよびメモリリソースの余分な消費を防ぐことが可能になる。
【００４１】
また、これまではユーザアプリケーションプログラムによるデータ更新中はデータの参照ができなかったが、本実施形態では、参照用領域１１０の排他をコミット実行デーモン３００がコミット処理実行中のみとし、データ更新中は参照用領域１１０を排他しないことで、データ参照が可能な区間を延ばすことができる。
これにより、データ参照を行うユーザアプリケーションプログラムが排他待ちにより処理時間を無駄に消費する可能性が低くなり、データの処理効率を向上させることができる。
【００４２】
以上説明したように、本実施形態に係るメモリデータベースによれば、共有メモリ領域にユーザアプリケーションプログラムが参照のみできる参照用領域とユーザアプリケーションプログラムが参照及び更新が可能な更新用領域とを設けることにより、マスタデータを参照用領域に格納しておけば、ユーザアプリケーションプログラムはマスタデータを格納している参照用領域にアクセスできないので、ユーザアプリケーションプログラムの不具合により、マスタデータが破壊されることがなくなる。
【００４３】
また、参照用領域及び前記更新用領域の両方を参照及び更新が可能なコミット実行デーモンを有することにより、マスタデータを参照用領域に格納し、マスタデータを更新した差分データを更新領域に格納し、コミット実行デーモンが差分データでマスタデータを更新すれば、ユーザアプリケーションプログラムはマスタデータを格納している参照用領域にアクセスできないので、ユーザアプリケーションプログラムの不具合により、マスタデータが破壊されることがなくなる。
しかも、ユーザアプリケーションプログラムが共有メモリ領域にアクセスできるので、プロセス間通信のオーバーヘッドによるデータ更新性能の劣化を防ぐことができるとともに、マスタデータ自身のコピー処理によるＣＰＵリソースとメモリリソースの消費を抑えることができる。
【００４４】
本発明のメモリデータベースは、上記実施形態に限定されるものではない。例えば、上記実施形態では、マスタデータの本データとしてレコードを示したが、データベースを構成するその他の概念であっても良い。
【産業上の利用可能性】
【００４５】
本発明のメモリデータベースは、例えば大量の顧客データや統計データ等のデータ分析を行う分野に利用することができる。
【図面の簡単な説明】
【００４６】
【図１】本発明のメモリデータベースシステムの一実施形態を示すシステム構成図である。
【図２】共有メモリを参照用領域と更新用領域に分割する動作の説明図である。
【図３】マスタデータをロードする動作の説明図である。
【図４】更新用領域にインデックスを設ける動作の説明図である。
【図５】マスタデータの差分データを作成する初期動作の説明図である。
【図６】マスタデータの差分データを作成する後期動作の説明図である。
【図７】差分データでマスタデータを更新する初期動作の説明図である。
【図８】差分データでマスタデータを更新する後期動作の説明図である。
【図９】他のユーザによって差分データが作成される初期動作の説明図である。
【図１０】他のユーザによって差分データが作成される後期動作の説明図である。
【図１１】マスタデータの差分データ作成時の参照用領域の参照動作の説明図である。
【図１２】データ復旧の動作の説明図である。
【図１３】メモリデータベースシステムにおけるデータ破壊の説明図である。
【図１４】ジャーナルファイルシステムにおけるデータ復旧の動作の説明図である。
【図１５】クライアント／サーバ方式のメモリデータベースシステムの説明図である。
【図１６】ＣＶＳ方式のメモリデータベースシステムの説明図である。
【図１７】特許文献１で提案された方式の説明図である。
【符号の説明】
【００４７】
１      メモリデータベースシステム
１００  共有メモリ
１１０  参照用領域
１１１  マスタデータ
１１２  レコード
１１３  インデックスツリー
１１４  参照用ポインタ格納領域
１１５  参照用ポインタ
１２０  更新用領域
１２１  更新データ
１２２  差分レコード
１２４  更新用ポインタ格納領域
１２５  更新用ポインタ
２００  ユーザアプリケーションプログラム
３００  コミット実行デーモン
４００  ディスク装置
【図１】
0005012628.tif 000002
【図２】
0005012628.tif 000003
【図３】
0005012628.tif 000004
【図４】
0005012628.tif 000005
【図５】
0005012628.tif 000006
【図６】
0005012628.tif 000007
【図７】
0005012628.tif 000008
【図８】
0005012628.tif 000009
【図９】
0005012628.tif 000010
【図１０】
0005012628.tif 000011
【図１１】
0005012628.tif 000012
【図１２】
0005012628.tif 000013
【図１３】
0005012628.tif 000014
【図１４】
0005012628.tif 000015
【図１５】
0005012628.tif 000016
【図１６】
0005012628.tif 000017
【図１７】
0005012628.tif 000018