(57)【特許請求の範囲】
【請求項１】
リレーショナルデータベースを管理するためのデータベース管理システムにおいて、
前記リレーショナルデータベースに対する操作要求を、検索操作、挿入操作、削除操作、又は更新操作に振り分けて実行するデータベース操作要求処理手段と、
検索向けデータ保持手段と、
挿入向けデータ保持手段と、
削除向けデータ保持手段と、
データ転送手段と、
を有し、
前記データベース操作要求処理手段が、
前記データベース操作要求処理手段に対する操作要求が挿入操作である場合には、前記挿入向けデータ保持手段にタプルを挿入し、
前記データベース操作要求処理手段に対する操作要求が挿入操作でない場合には、前記検索向けデータ保持手段、前記挿入向けデータ保持手段、前記削除向けデータ保持手段のそれぞれに対して前記検索操作を実行し、該実行結果としてそれぞれ第一の検索集合、第二の検索集合、及び第三の検索集合を求め、
前記第一の検索集合（Ｒｒ）と前記第二の検索集合（Ｒｉ）と前記第三の検索集合（Ｒｄ）から、最終結果集合Ｒ（Ｒ＝Ｒｒ＋Ｒｉ−Ｒｄ；ただし、＋は論理和、−は論理差をあらわす。）を作成し、
前記データベース操作要求処理手段に対する操作要求が前記削除操作であり、且つ前記最終結果集合のタプルが前記第二の検索集合にあるときには、前記挿入向けデータ保持手段から前記第二の検索集合のタプルを削除し、
前記データベース操作要求処理手段に対する操作要求が前記削除操作であり、且つ前記最終結果集合のタプルが前記第二の検索集合にないときには、前記削除向けデータ保持手段にタプルを挿入し、
前記データベース操作要求処理手段に対する操作要求が前記検索操作でなく、前記削除操作でなければ、前記更新操作として、前記挿入向けデータ保持手段に対してタプルの更新操作を実行し、
前記データ転送手段が、
前記挿入向けデータ保持手段のタプルと同じタプルが前記検索向けデータ保持手段にある場合には、検索向けデータ保持手段にタプルの更新を行い、前記挿入向けデータ保持手段のタプルを削除し、
前記挿入向けデータ保持手段のタプルと同じタプルが前記検索向けデータ保持手段にない場合には、検索向けデータ保持手段にタプルを挿入し、前記挿入向けデータ保持手段のタプルを削除し、
前記削除向けデータ保持手段のタプルと同じタプルを前記検索向けデータ保持手段から削除し、前記削除向けデータ保持手段のタプルを削除する、
ことを特徴とするデータベース管理システム。
【請求項２】
請求項１記載のデータベース管理システムにおいて、
前記挿入向けデータ保持手段及び削除向けデータ保持手段をそれぞれ複数備え、
複数のユーザからのデータベース操作要求を入力するデータベース操作要求入力手段と、
前記検索操作と、前記挿入操作、前記削除操作、又は前記更新操作との間でデータの一貫性を保つように実行順序を制御するトランザクション処理手段と、
前記挿入向けデータ保持手段及び削除向けデータ保持手段を、同時に実行できるトランザクションの最大数としてシステムに対して定められた個数分、予め作成しておき、トランザクションの開始，コミット，ロールバックに応じて、それぞれの挿入向けデータ保持手段及び削除向けデータ保持手段と各トランザクションの関係を記録し変更するデータ保持部管理手段と、
を有することを特徴とするデータベース管理システム。
【請求項３】
コンピュータに組み込みリレーショナルデータベースを管理するためのデータベース管理プログラムにおいて、
当該データベース管理プログラムは、前記コンピュータを、データベース操作要求処理手段、検索向けデータ保持手段、挿入向けデータ保持手段、削除向けデータ保持手段、データ転送手段として機能させるためのプログラムであり、
前記データベース操作要求処理手段は、前記リレーショナルデータベースに対する操作要求を、検索操作、挿入操作、削除操作、又は更新操作に振り分けて実行し、
前記データベース操作要求処理手段が、
前記データベース操作要求処理手段に対する操作要求が挿入操作である場合には、前記挿入向けデータ保持手段にタプルを挿入し、
前記データベース操作要求処理手段に対する操作要求が挿入操作でない場合には、前記検索向けデータ保持手段、前記挿入向けデータ保持手段、前記削除向けデータ保持手段のそれぞれに対して前記検索操作を実行し、該実行結果としてそれぞれ第一の検索集合、第二の検索集合、及び第三の検索集合を求め、
前記第一の検索集合（Ｒｒ）と前記第二の検索集合（Ｒｉ）と前記第三の検索集合（Ｒｄ）から、最終結果集合Ｒ（Ｒ＝Ｒｒ＋Ｒｉ−Ｒｄ；ただし、＋は論理和、−は論理差をあらわす。）を作成し、
前記データベース操作要求処理手段に対する操作要求が前記削除操作であり、且つ前記最終結果集合のタプルが前記第二の検索集合にあるときには、前記挿入向けデータ保持手段から前記第二の検索集合のタプルを削除し、
前記データベース操作要求処理手段に対する操作要求が前記削除操作であり、且つ前記最終結果集合のタプルが前記第二の検索集合にないときには、前記削除向けデータ保持手段にタプルを挿入し、
前記データベース操作要求処理手段に対する操作要求が前記検索操作でなく、前記削除操作でなければ、前記更新操作として、前記挿入向けデータ保持手段に対してタプルの更新操作を実行し、
前記データ転送手段が、
前記挿入向けデータ保持手段のタプルと同じタプルが前記検索向けデータ保持手段にある場合には、検索向けデータ保持手段にタプルの更新を行い、前記挿入向けデータ保持手段のタプルを削除し、
前記挿入向けデータ保持手段のタプルと同じタプルが前記検索向けデータ保持手段にない場合には、検索向けデータ保持手段にタプルを挿入し、前記挿入向けデータ保持手段のタプルを削除し、
前記削除向けデータ保持手段のタプルと同じタプルを前記検索向けデータ保持手段から削除し、前記削除向けデータ保持手段のタプルを削除する、
ことを特徴とするデータベース管理プログラム。
【請求項４】
請求項３記載のデータベース管理プログラムにおいて、
コンピュータを、複数の前記挿入向けデータ保持手段、複数の前記削除向けデータ保持手段、データベース操作要求入力手段、前記検索操作と、前記挿入操作、前記削除操作、又は前記更新操作との間でデータの一貫性を保つように実行順序を制御するトランザクション処理手段、データ保持部管理手段として機能させるためのプログラムを含み、
前記データベース操作要求入力手段は、複数のユーザからのデータベース操作要求を入力し、
前記データ保持部管理手段は、前記挿入向けデータ保持手段及び削除向けデータ保持手段を、同時に実行できるトランザクションの最大数としてシステムに対して定められた個数分、予め作成しておき、トランザクションの開始，コミット，ロールバックに応じて、
それぞれの挿入向けデータ保持手段及び削除向けデータ保持手段と各トランザクションの関係を記録し変更する、
ことを特徴とするデータベース管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース管理システム、及びプログラムに関し、より詳細には、例えば文書管理システムのように更新と検索が頻繁に発生するデータベースシステムに適用可能な、データベースの更新及び検索の処理を行うための書き込み遅延データベース管理システム、及びデータベース管理プログラムに関する。
【背景技術】
【０００２】
リレーショナルデータベースはデータを表で表現して扱う。表はタプルの集合であり、タプルは属性値の並びである。表の実体はファイルに格納される。データベースに対する操作は、検索操作、挿入操作、更新操作、及び削除操作に分けることができる。検索操作は属性値に関する条件を検索条件として与えてそれに合致するタプルの集合を得る操作である。挿入操作は与えられた属性値を持った新たなタプルを表に挿入する操作である。更新操作は表から選び出されたタプルの属性値を新たな値に変更する操作である。削除操作は表から選び出されたタプルを削除する操作である。挿入（Insert）操作、更新（Update）操作、削除（Delete）操作をまとめてここでは変更操作と呼ぶことにする。
【０００３】
リレーショナルデータベースに代表されるデータベースを用いたシステムで重要視される性能の１つは検索操作に対する応答時間である。検索操作に対する応答時間を短縮するために用いられる方法は索引ファイルの導入である。索引ファイルは１つ又は複数の属性値を特定の構造に変換することでそれらの属性値に関する条件を高速に評価できるようにしたものとして一般化することができる。
【０００４】
一方、変更操作においては索引ファイルの更新にかかる時間が性能を低下させる原因となっている。これまでは変更操作に対する応答時間で測られる性能は重要視されてこなかった。それは検索操作に比べて変更操作の要求頻度が少ないこと、利用形態として通常は主に検索操作のみが実行され、大量の変更操作は夜間などにシステムを停止した状態で行うことができること、などの状況によっている。
【０００５】
しかし、オンラインシステムのようにリアルタイム性が求められる場合においては変更操作に対する応答時間が重要視される。このような問題に対し、例えば、特開平１０−１４３４１２号公報に記載の「データベース管理システム」では、データベースへの書き込みを磁気ディスクに反映する前に不揮発性メモリに一時的に保持して、該当データの参照には磁気ディスクの代わりに不揮発性メモリをディスクキャッシュとして用いている。しかしながら、ディスクキャッシュには構造が単純なデータしかおくことができず、高機能の索引ファイルを用いることはできないという問題が生じる。
【０００６】
データベースシステムを複数のユーザが同時に利用する場合、検索操作と変更操作が非同期に要求される。このときにデータの一貫性を保つためにトランザクション処理が用いられる。トランザクション処理については［１］「“トランザクション処理システム入門”フィリップ・Ａ・バーンスタイン、エリック・ニューカマー 日経ＢＰ社」に詳しく説明されている。
【０００７】
トランザクションを完全に隔離するとデータの一貫性がどの時点においても保証されるようになるが、同時実行性の低下によって全体のスループットが著しく低下する場合がある。この問題を回避するためにアイソレーションレベルの概念が用いられる。アイソレーションレベルについては［２］「“Ａ  Ｃｒｉｔｉｑｕｅ  ｏｆ  ＡＮＳＩ  ＳＱＬ  Ｉｓｏｌａｔｉｏｎ  Ｌｅｖｅｌｓ”Ｈａｌ  Ｂｅｒｅｎｓｏｎ，  Ｐｈｉｌｉｐ  Ａ  Ｂｅｒｎｓｔｅｉｎ，  Ｊｉｍ  Ｇｒａｙ，  ＪｉｍＭｅｌｔｏｎ，  Ｅｌｉｚａｂｅｔｈ  Ｊ．  Ｏ’Ｎｅｉｌ，  Ｐａｔｒｉｃｋ  Ｅ．  Ｏ，Ｎｅｉｌ  Ｐｒｏｃ．  ＡＣＭ  ＳＩＧＭＯＤ  Ｃｏｎｆ．  （Ｊｕｎ．  １９９５）  ｐ．１−１０」に詳しく説明されている。
【０００８】
上述したごとくに、データベースの扱うデータが大量になるなかで、システムを停止することなく稼動させつづけることが求められるようになり、本出願人は、特願２０００−２５２４７２号明細書において、高度な検索要求に高速に応答できる性能を維持しつつ、システム稼働中の更新性能を向上させることができるデータベース管理方式及びシステムを提案した。
【０００９】
しかしながら、特願２０００−２５２４７２号明細書におけるデータベース管理方式及びシステムにおいては、変更処理（挿入、更新、削除）を一つのデータ保持手段で処理している。そのため削除されたタプルを識別するために削除フラグという属性値を用意している。検索結果を求める際には求まった結果集合の全てのタプルの削除フラグを調べて結果から取り除く処理が必要であった。
【００１０】
一方、トランザクションは、原子性、一貫性、隔離性、耐久性という４つの重要な性質を持つ。原子性はあるトランザクションが成功したときはそのトランザクションで実行された処理が全てデータベースに反映されており、失敗したときはそのトランザクションで実行された処理が全て無効になっており、そのどちらでもない状態になることはない、という性質である。トランザクションの成功ではコミット、失敗ではロールバック又はアボートと呼ばれる処理が行われる。
【００１１】
コミットとロールバックを実現する従来の一般的な方法はトランザクションの開始及びそのトランザクション中に行われた変更操作の履歴をログに記録していき、コミットではコミットしたことを記録、ロールバックではその時点までに記録されているログの内容をトランザクションの開始までさかのぼって逆操作を行う。ログは耐久性を保証するための回復処理にも使用される。
【００１２】
一貫性が保証できるアイソレーションレベルにした場合、トランザクション中に変更操作をするレコードにかけられたロックはコミット又はロールバックが完了するまで外すことができない。つまり、大量のデータに対する変更操作を行ったトランザクションをロールバックする時間が長いと、それだけ他のトランザクションによる変更操作の応答時間が長くなってしまう。このことから、大量のデータ操作をしたトランザクションがロールバックした際に行われる逆操作にも高速性が求められる。
【特許文献１】特開平１０−１４３４１２号公報
【非特許文献１】“トランザクション処理システム入門”フィリップ・Ａ・バーンスタイン、エリック・ニューカマー 日経ＢＰ社
【非特許文献２】“Ａ  Ｃｒｉｔｉｑｕｅ  ｏｆ  ＡＮＳＩ  ＳＱＬ  Ｉｓｏｌａｔｉｏｎ  Ｌｅｖｅｌｓ”Ｈａｌ  Ｂｅｒｅｎｓｏｎ，  Ｐｈｉｌｉｐ  Ａ  Ｂｅｒｎｓｔｅｉｎ，  Ｊｉｍ  Ｇｒａｙ，  ＪｉｍＭｅｌｔｏｎ，  Ｅｌｉｚａｂｅｔｈ  Ｊ．  Ｏ’Ｎｅｉｌ，  Ｐａｔｒｉｃｋ  Ｅ．  Ｏ，Ｎｅｉｌ  Ｐｒｏｃ．  ＡＣＭ  ＳＩＧＭＯＤ  Ｃｏｎｆ．  （Ｊｕｎ．  １９９５）  ｐ．１−１０
【発明の開示】
【発明が解決しようとする課題】
【００１３】
本発明は、上述のごとき実情に鑑みてなされたものであり、高度な検索要求に高速に応答できる性能を維持しつつ、システム稼働中の更新性能をさらに向上させることが可能なデータベース管理システム、及びデータベース管理プログラムを提供することをその目的とする。
【００１４】
本発明はさらに、大量のデータ操作をしたトランザクションがロールバックした際に行われる逆操作を高速にすることが可能なデータベース管理システムを提供することを他の目的とする。
【課題を解決するための手段】
【００１５】
本発明に係るデータベース管理システム、及びプログラムにおいては、削除処理のために別の削除向けデータ保持手段を使用する。このデータ保持手段には挿入向けデータ保持手段（特願２０００−２５２４７２号明細書に記載の発明における変更向けデータ保持手段）と同じ機構を使用することができる。検索結果を求める際には検索向け，挿入向け，削除向けのデータ保持手段から求まったタプルＩＤの集合に対する集合演算のみでよくタプルの属性値を参照する必要がなくなり処理が効率よく行える。 
【００１６】
請求項１の発明は、リレーショナルデータベースを管理するためのデータベース管理システムにおいて、前記リレーショナルデータベースに対する操作要求を、検索操作、挿入操作、削除操作、又は更新操作に振り分けて実行するデータベース操作要求処理手段と、検索向けデータ保持手段と、挿入向けデータ保持手段と、削除向けデータ保持手段と、データ転送手段と、を有し、前記データベース操作要求処理手段が、前記データベース操作要求処理手段に対する操作要求が挿入操作である場合には、前記挿入向けデータ保持手段にタプルを挿入し、前記データベース操作要求処理手段に対する操作要求が挿入操作でない場合には、前記検索向けデータ保持手段、前記挿入向けデータ保持手段、前記削除向けデータ保持手段のそれぞれに対して前記検索操作を実行し、該実行結果としてそれぞれ第一の検索集合、第二の検索集合、及び第三の検索集合を求め、前記第一の検索集合（Ｒｒ）と前記第二の検索集合（Ｒｉ）と前記第三の検索集合（Ｒｄ）から、最終結果集合Ｒ（Ｒ＝Ｒｒ＋Ｒｉ−Ｒｄ；ただし、＋は論理和、−は論理差をあらわす。）を作成し、前記データベース操作要求処理手段に対する操作要求が前記削除操作であり、且つ前記最終結果集合のタプルが前記第二の検索集合にあるときには、前記挿入向けデータ保持手段から前記第二の検索集合のタプルを削除し、前記データベース操作要求処理手段に対する操作要求が前記削除操作であり、且つ前記最終結果集合のタプルが前記第二の検索集合にないときには、前記削除向けデータ保持手段にタプルを挿入し、前記データベース操作要求処理手段に対する操作要求が前記検索操作でなく、前記削除操作でなければ、前記更新操作として、前記挿入向けデータ保持手段に対してタプルの更新操作を実行し、前記データ転送手段が、前記挿入向けデータ保持手段のタプルと同じタプルが前記検索向けデータ保持手段にある場合には、検索向けデータ保持手段にタプルの更新を行い、前記挿入向けデータ保持手段のタプルを削除し、前記挿入向けデータ保持手段のタプルと同じタプルが前記検索向けデータ保持手段にない場合には、検索向けデータ保持手段にタプルを挿入し、前記挿入向けデータ保持手段のタプルを削除し、前記削除向けデータ保持手段のタプルと同じタプルを前記検索向けデータ保持手段から削除し、前記削除向けデータ保持手段のタプルを削除することを特徴としたものである。
【００１７】
請求項２の発明は、請求項１の発明において、前記挿入向けデータ保持手段及び削除向けデータ保持手段をそれぞれ複数備え、複数のユーザからのデータベース操作要求を入力するデータベース操作要求入力手段と、前記検索操作と、前記挿入操作、前記削除操作、又は前記更新操作との間でデータの一貫性を保つように実行順序を制御するトランザクション処理手段と、前記挿入向けデータ保持手段及び削除向けデータ保持手段を、同時に実行できるトランザクションの最大数としてシステムに対して定められた個数分、予め作成しておき、トランザクションの開始，コミット，ロールバックに応じて、それぞれの挿入向けデータ保持手段及び削除向けデータ保持手段と各トランザクションの関係を記録し変更するデータ保持部管理手段と、を有することを特徴としたものである。
【００１８】
請求項３の発明は、コンピュータに組み込みリレーショナルデータベースを管理するためのデータベース管理プログラムにおいて、当該データベース管理プログラムは、前記コンピュータを、データベース操作要求処理手段、検索向けデータ保持手段、挿入向けデータ保持手段、削除向けデータ保持手段、データ転送手段として機能させるためのプログラムであり、前記データベース操作要求処理手段は、前記リレーショナルデータベースに対する操作要求を、検索操作、挿入操作、削除操作、又は更新操作に振り分けて実行し、前記データベース操作要求処理手段が、前記データベース操作要求処理手段に対する操作要求が挿入操作である場合には、前記挿入向けデータ保持手段にタプルを挿入し、前記データベース操作要求処理手段に対する操作要求が挿入操作でない場合には、前記検索向けデータ保持手段、前記挿入向けデータ保持手段、前記削除向けデータ保持手段のそれぞれに対して前記検索操作を実行し、該実行結果としてそれぞれ第一の検索集合、第二の検索集合、及び第三の検索集合を求め、前記第一の検索集合（Ｒｒ）と前記第二の検索集合（Ｒｉ）と前記第三の検索集合（Ｒｄ）から、最終結果集合Ｒ（Ｒ＝Ｒｒ＋Ｒｉ−Ｒｄ；ただし、＋は論理和、−は論理差をあらわす。）を作成し、前記データベース操作要求処理手段に対する操作要求が前記削除操作であり、且つ前記最終結果集合のタプルが前記第二の検索集合にあるときには、前記挿入向けデータ保持手段から前記第二の検索集合のタプルを削除し、前記データベース操作要求処理手段に対する操作要求が前記削除操作であり、且つ前記最終結果集合のタプルが前記第二の検索集合にないときには、前記削除向けデータ保持手段にタプルを挿入し、前記データベース操作要求処理手段に対する操作要求が前記検索操作でなく、前記削除操作でなければ前記更新操作として、前記挿入向けデータ保持手段に対してタプルの更新操作を実行し、前記データ転送手段が、前記挿入向けデータ保持手段のタプルと同じタプルが前記検索向けデータ保持手段にある場合には、検索向けデータ保持手段にタプルの更新を行い、前記挿入向けデータ保持手段のタプルを削除し、前記挿入向けデータ保持手段のタプルと同じタプルが前記検索向けデータ保持手段にない場合には、検索向けデータ保持手段にタプルを挿入し、前記挿入向けデータ保持手段のタプルを削除し、前記削除向けデータ保持手段のタプルと同じタプルを前記検索向けデータ保持手段から削除し、前記削除向けデータ保持手段のタプルを削除することを特徴としたものである。
【００１９】
請求項４の発明は、請求項３の発明において、コンピュータを、複数の前記挿入向けデータ保持手段、複数の前記削除向けデータ保持手段、データベース操作要求入力手段、前記検索操作と、前記挿入操作、前記削除操作、又は前記更新操作との間でデータの一貫性を保つように実行順序を制御するトランザクション処理手段、データ保持部管理手段として機能させるためのプログラムを含み、前記データベース操作要求入力手段は、複数のユーザからのデータベース操作要求を入力し、前記データ保持部管理手段は、前記挿入向けデータ保持手段及び削除向けデータ保持手段を、同時に実行できるトランザクションの最大数としてシステムに対して定められた個数分、予め作成しておき、トランザクションの開始，コミット，ロールバックに応じて、それぞれの挿入向けデータ保持手段及び削除向けデータ保持手段と各トランザクションの関係を記録し変更することを特徴としたものである。
【発明の効果】
【００２５】
本発明によれば、検索向けデータ保持手段が提供する高度な検索要求を高速に処理する能力を保ちつつ、それによって更新性能が低下することを防ぐことができる。
【００２６】
また、本発明によれば、複数のユーザから非同期に要求されるデータベース操作要求に対して検索向けデータ保持手段と挿入向けデータ保持手段及び削除向けデータ保持手段の整合性を保ちながら検索にも更新にも高速に応答することができる。
【発明を実施するための最良の形態】
【００２７】
＜システム構成＞
図１は、本発明の一実施形態に係るデータベース管理システムの機能を説明するためのブロック構成図である。以下、リレーショナルデータベースを代表させて説明するが、通常のデータベースにも本実施形態に係る発明は適用可能である。データベース操作要求入力手段１からデータベースに対する操作要求が入力され、データベース操作要求処理手段３が操作を実行する。検索向けデータ保持手段４は、データベースの検索操作を処理する。また挿入向けデータ保持手段５はデータベースのデータ挿入操作、削除操作及び更新操作を処理し、削除向けデータ保持手段６はデータベースのデータ挿入操作及び削除操作を処理する。なお、ここでデータ保持手段４，５，６として説明しているものは、例えばリレーショナルデータベースにおいては索引ファイル及び索引ファイルを用いた処理を行うための手段であり、データを参照等するために関連付けて保持し、その関連付けに従って各種処理を行なう手段である。データ転送手段７は、挿入向けデータ保持手段５及び削除向けデータ保持手段６からタプルを読みとって検索向けデータ保持手段４に対するタプルの挿入、更新、削除の操作を行う。トランザクション（排他制御）処理手段２は、システムにおけるトランザクション制御を行う。本実施形態によれば、検索向けデータ保持手段４が提供する高度な検索要求を高速に処理する能力を保ちつつ、それによって更新性能が低下することを防ぐことができる。これら各要素については、この後さらに詳しく説明する。
【００２８】
（データベース操作要求入力手段）
図２は、本発明を具体化するシステム構成の一例を示す図で、データベース操作要求入力手段１は、入力端末２１として実現される。データベースを保持するサーバホスト１０は、ＣＰＵ１１、プログラム領域１２ａとデータ領域１２ｂとを有するメモリ１２、及びハードディスク１３がバス１４にて接続され、このサーバホストに対してＬＡＮ２２により複数の入力端末２１が接続可能となっている。この例におけるデータベース操作要求入力手段１は、複数のユーザからのデータベース操作要求を入力することができるものとする。
【００２９】
ユーザは入力端末２１から例えばＳＱＬ文の形式で文字列により表現されたデータベース操作要求を入力する。データベース操作要求はＬＡＮ２２を通じてサーバーホスト１０に送られて処理される。処理の結果は再びＬＡＮ２２を通じて入力端末２１に送られ、当該入力端末２１のディスプレイに表示するなどしてユーザに知らせることができる。この例によれば、複数のユーザから非同期に要求されるデータベース操作要求に対して検索向けデータ保持手段４と挿入向けデータ保持手段５及び削除向けデータ保持手段６の整合性を保ちながら検索にも更新にも高速に応答することができる。
【００３０】
（データベース操作要求処理手段）
図３は、データベース操作要求処理手段の処理手順の一例を示すフロー図である。データベース操作要求の種類によって処理内容が分かれる。この例では表の各タプルは一意に定まるＩＤ（タプルＩＤ）を付与され、タプルは全てタプルＩＤで識別される。
【００３１】
データベース操作要求処理手段３がデータベース操作要求処理を受け取ると（ステップＳ１）、挿入操作かどうかを判断し（ステップＳ２）、挿入操作の場合は新しいタプルに対してタプルＩＤを取得した後（ステップＳ３）、挿入向けデータ保持手段５に対してタプルの挿入操作を実行し（ステップＳ４）、その結果を返す（ステップＳ５）。
【００３２】
ステップＳ２で挿入操作でない場合は、検索向けデータ保持手段４，挿入向けデータ保持手段５，削除向けデータ保持手段６のそれぞれに検索操作を実行し（ステップＳ６〜Ｓ８）、それぞれの検索結果集合Ｒｒ，Ｒｉ，Ｒｄから、最終結果集合Ｒ（Ｒ＝Ｒｒ＋Ｒｉ−Ｒｄ；ただし、＋は論理和、−は論理差をあらわす。）を作って結果とする（ステップＳ９）。
【００３３】
次いで、ステップＳ１０で検索操作であれば、その結果を返し（ステップＳ５）、検索操作でなければさらに削除操作かどうかを判断し（ステップＳ１１）、削除操作でなければ更新操作として、検索操作と同様の手順で選ばれたタプルに対して新しい値に変更したものを用いて挿入向けデータ保持手段５に対してタプルの更新操作を実行し（ステップＳ１５）、その結果を返す（ステップＳ５）。
【００３４】
ステップＳ１１で削除操作である場合は、検索操作と同様の手順で選ばれたタプルがＲｉにある場合には（ステップＳ１２でＹＥＳ）、挿入向けデータ保持手段５に対して削除処理を実行し（ステップＳ１３）、その結果を返す（ステップＳ５）。Ｒｉにない場合（ステップＳ１２でＮＯ）、すなわちＲｒにある場合には、タプルを削除向けデータ保持手段６に対して挿入処理を実行し（ステップＳ１４）、その結果を返して（ステップＳ５）処理を終了する。
【００３５】
（検索向けデータ保持手段）
検索向けデータ保持手段４は、データベース操作要求処理手段３が実行する検索操作を処理する。また、データ転送手段７が実行する変更操作を処理する。検索向けデータ保持手段４は検索操作を高速で実行できる代わりに変更操作が比較的低速である。例えば、全文検索を行うことができる全文検索サーバを用いることが考えられる。
【００３６】
（挿入向けデータ保持手段）
挿入向けデータ保持手段５はデータベース操作要求処理手段３が実行する挿入操作、削除操作及び更新操作を処理する。また、データ転送手段７が実行する削除操作を処理する。挿入向けデータ保持手段５は変更操作を高速に実行できる。例えばＯＳが管理する通常のファイルを用いることが考えられる。
【００３７】
通常のファイルのように挿入向けデータ保持手段５が検索操作を実行できない場合は、保持しているタプルを逐次的に返しデータベース操作要求処理手段３が検索条件を評価（全数検索と呼ぶ）する。挿入向けデータ保持手段５が保持するタプル数は検索向けデータ保持手段４が保持するタプル数に比べて非常に少数なので全数検索を行っても応答時間に影響しない。
【００３８】
（削除向けデータ保持手段）
削除向けデータ保持手段６は、データベース操作要求処理手段３が実行する挿入操作を処理する。また、データ転送手段７が実行する削除操作を処理する。削除向けデータ保持手段６は挿入操作を高速に実行できる。例えばＯＳが管理する通常のファイルを用いることが考えられる。
【００３９】
通常のファイルのように削除向けデータ保持手段６が検索操作を実行できない場合は、保持しているタプルを逐次的に返しデータベース操作要求処理手段３が検索条件を評価（全数検索と呼ぶ）する。削除向けデータ保持手段６が保持するタプル数は検索向けデータ保持手段４が保持するタプル数に比べて非常に少数なので全数検索を行っても応答時間に影響しない。
【００４０】
挿入向けデータ保持手段５，削除向けデータ保持手段６，検索向けデータ保持手段４のいずれか１又は複数は、それ自体が独立して動作可能にデータベース管理システムを構成することができるものであってよい。このようなデータ保持手段４，５，６のいずれかを本発明のデータベース管理システムに適用すればよい。すなわち、既存のデータベース管理システムで検索は高速だが更新が比較的低速であるようなものに対して、そのデータベース管理システムに特別な変更を施すことなく、更新要求への応答を向上することができる。また、逆に既存のデータベース管理システムの更新応答が高速ならば、検索が高速なデータ保持手段と組み合わせることによって、更新応答性能を生かしながら検索要求への応答を向上することができる。
【００４１】
また、挿入向けデータ保持手段５及び／又は削除向けデータ保持手段６がメモリ上にあるようにしてもよく、メモリが大量にある場合に、変更向けデータ保持手段、すなわち挿入向けデータ保持手段５，削除向けデータ保持手段６をメモリ上で利用することで更新性能の著しい向上が実現できる。
【００４２】
また、検索向けデータ保持手段４及び挿入向けデータ保持手段５及び削除向けデータ保持手段６は、属性値の特性に応じてその形態を選定することが好ましく、例えばデータ量が少ない属性値については上述のごとくのメモリ上で挿入向けデータ保持手段５及び削除向けデータ保持手段６を用いることによって性能の向上が実現できる。
【００４３】
（データ転送手段）
図４は、データ転送手段の処理手順の一例を説明するためのフロー図である。データ転送手段７によるデータ転送は、挿入向けデータ保持手段５からタプルを順次読み込み、その値に従って検索向けデータ保持手段４に対するタプルの挿入或いは更新の操作を行い、反映が終わったタプルを挿入向けデータ保持手段５から削除する。次に、削除向けデータ保持手段６からタプルを順次読み込み、そのタプルを検索向けデータ保持手段４から削除し、反映が終わったタプルを削除向けデータ保持手段６から削除するという手順で実行される。
【００４４】
図４において、データ転送手段７が挿入向けデータ保持手段５からタプルを得ると（ステップＳ２１）、検索向けデータ保持手段４から同じタプルＩＤのタプルを探し（ステップＳ２２）、同じタプルがあれば（ステップＳ２３でＹＥＳ）、検索向けデータ保持手段４にタプルの更新を実行し（ステップＳ２４）、挿入向けデータ保持手段５のタプルを削除する（ステップＳ２５）。同じタプルがなければ（ステップＳ２３でＮＯ）、検索向けデータ保持手段４にタプルの挿入を実行して（ステップＳ２９）、挿入向けデータ保持手段５のタプルを削除する（ステップＳ２５）。ステップＳ２５の処理が終了すると、削除向けデータ保持手段６からタプルを得て（ステップＳ２６）、検索向けデータ保持手段４にタプルの削除を実行し（ステップＳ２７）、削除向けデータ保持手段６のタプルを削除して（ステップＳ２８）、処理を終了する。
【００４５】
また、他の実施形態として、データ転送手段７に転送時刻情報を指定することにより、すなわちデータ転送手段７に転送指定時刻情報を保持させておくことにより、データ転送手段７による検索向けデータ保持手段４へのデータの変更操作を、上記の指定時刻まで遅延することができる。これにより、システムの稼働率が低くなる時間帯が決まっている場合に、検索向けデータ保持手段４へのデータの反映をその時間帯に集中させることでシステム全体のスループットを上げることができる。
【００４６】
さらに、他の実施形態として、データ転送手段７は、データ転送手段７が実行すべき検索向けデータ保持手段４への変更操作要求が一定数になるごとに変更操作を実行するようにしてもよい。データ転送手段７は、検索向けデータ保持手段４への変更操作要求が一定数になるごとに変更操作を実行させるようにすることにより、検索向けデータ保持手段４への更新要求が発生する頻度を減らすことができ、これにより排他制御が必要になる頻度を減らし、システム全体のスループットを上げることができる。
【００４７】
さらに、他の実施形態として、検索向けデータ保持手段４における複数の処理単位データに対する変更操作がバッチ処理として実行されるようにしてもよい。検索向けデータ保持手段４における複数のタプルに対する変更操作が、バッチ処理として実行されるようにすることにより高速に実行できる場合には、データ転送手段７の操作の実行が高速になり、結果としてシステム全体のスループットを上げることができる。
【００４８】
（トランザクション処理手段）
トランザクション処理手段２は非同期に要求される検索操作と変更操作をデータの一貫性を保つように実行順序を制御するための排他制御と、変更操作を中止したときにトランザクション開始前の状態に戻すための情報を記録するためのロギングを行う。排他制御は複数のユーザから要求されるデータベース操作間の排他制御のほかに、データベース操作要求処理手段３とデータ転送手段７の間の排他制御にも用いられる。
【００４９】
前述の文献［１］で説明される複粒度ロックを用いてさまざまなアイソレーションレベルを実現する。ロックの対象は表、タプル、ファイルである。本発明におけるファイルは検索向けデータ保持手段、挿入向けデータ保持手段及び削除向けデータ保持手段からなるものとみなすことができる。排他制御とロギングにおいてはファイルを構成する検索向けデータ保持手段、挿入向けデータ保持手段及び削除向けデータ保持手段がどういう構造であるかは無関係にこれらをまとめて１つのオブジェクトとして扱うことができる。
【００５０】
ここでロックに関して説明する。２相ルールによるロック方式では、書き込み操作は、操作対象に対して更新（Ｘ）ロックを、読み出し操作は、操作対象に対して参照（Ｓ）ロックをそれぞれ確保することにより、対象を予約してから、操作する。あるトランザクションＴ１がある種類のロックをしたときに、他のトランザクションＴ０がその対象に対してすでにある種類のロックをしているときの結果は、表１のようになる。
【００５１】
【表１】
0004287900.tif 000002
【００５２】
表１において、○はロックが共存できることを表し、トランザクションＴ１は、操作対象をロックできる。Ｘはロックが衝突することを表し、トランザクションＴ１は、衝突の原因となっているロックが放棄され、操作対象をロックできるようになるまで、実行を中断し、待つことになる。
【００５３】
あるトランザクションにおいては、ロックを１つでも放棄したら、それ以降、トランザクションが終了するまで、ロックを確保しない。あるトランザクションの終了時に、そのトランザクションが確保したロックのうち、放棄されていないものが残っていれば、全て放棄される。つまり、トランザクションを複数のロックを確保していく過程と、確保していたロックをはずす過程の２相に分ける。このことにより、トランザクションの直列化可能性が保証される。
【００５４】
また、トランザクション中において異なる種類の操作対象を認める場合、例えば、データベース、データベースを構成する表、表を構成するタプルなどに対する操作を認める場合、複粒度ロックが必要になる。つまり、ある対象への書き込み操作は、その上位の対象に対して、更新の意図があることを表すＩＸやＳＩＸを確保してから、その対象に対してＸロックを確保する。ある対象への読み出し操作は、その上位の対象に対して、参照の意図があることを表すＩＳロックを確保してから、その対象に対してＳロックを確保する。表１にこれらの意図的ロックＩＸ，ＳＩＸ，ＩＳを加えると、表２のようになる。表１と同様に、○はロックが共存できる事を表し、×はロックが衝突することを表す。
【００５５】
【表２】
0004287900.tif 000003
【００５６】
以下で本実施形態においてＲＥＡＤ ＣＯＭＭＩＴＴＥＤのアイソレーションレベルを実現する方法について述べる。まず、ロックに関して以下の前提条件がある。
・表にかかるロックはＩＳ、ＩＸ、Ｓ、ＳＩＸ、Ｘのいずれかのモードを持つ。
・タプルにかかるロックはＳ、Ｘのいずれかのモードを持つ。
・タプルにかかっているＳロックは参照後にいつでも解除することができる。
・タプルにかかっているＸロックはトランザクションの終了まで解除できない。
・ファイルにアクセスする前後では、ファイルに排他的なラッチをかける。
データベース操作の種類に応じて手順を述べる。
【００５７】
（検索操作）
０．操作開始前に対象の表にＩＳロックをかける。
１．ファイルにラッチをかける。
２．検索条件に合致するタプルを探す。
３．得られたタプルにＳロックをかける。
４．Ｓロックをかけることができない場合はファイルへのラッチを解除して１に戻る。
５．タプルを検索結果に加える。
６．タプルへのロックを解除する。
７．ファイルへのラッチを解除する。
【００５８】
（挿入操作）
０．操作開始前に対象の表にＩＸロックをかける。
１．ファイルにラッチをかける。
２．新たなタプルＩＤを取得する。
３．そのタプルにＸロックをかける。
４．ログにタプル挿入を記録する。
５．ファイルにタプルを挿入する。
６．ファイルへのラッチを解除する。
【００５９】
（更新操作）
０．操作開始前に対象の表にＩＸロックをかける。
１．ファイルにラッチをかける。
２．更新対象の条件に合致するタプルを探す。
３．得られたタプルにＸロックをかける。
４．Ｘロックをかけることができない場合はファイルへのラッチを解除して１に戻る。
５．ログにタプル更新を記録する。
６．タプルの更新を実行する。
７．ファイルへのラッチを解除する。
【００６０】
（削除操作）
０．操作開始前に対象の表にＩＸロックをかける。
１．ファイルにラッチをかける。
２．削除対象の条件に合致するタプルを探す。
３．得られたタプルにＸロックをかける。
４．Ｘロックをかけることができない場合はファイルへのラッチを解除して１へ戻る。
５．ログにタプル削除を記録する。
６．タプルの削除を実行する。
７．ファイルへのラッチを解除する。
トランザクションの終了に際しては以下の処理を行う。
【００６１】
（コミット）
０．変更操作の前に対象の表にＩＸロックがかかっている。
１．ログにコミットを記録する。
２．コミットしたトランザクションが要求したロックを全て解除する。
【００６２】
（ロールバック（アボート））
０．変更操作の前に対象の表にＩＸロックがかかっている。
１．ログにロールバックを記録する。
２．ログを参照しながら、データ操作をＵＮＤＯする。その際、必要なファイルへのラッチを行う。
３．ロールバックしたトランザクションが要求したロックを全て解除する。
【００６３】
＜他のシステム構成＞
図５は、本発明の他の実施形態に係るデータベース管理システムの機能を説明するためのブロック構成図である。以下、リレーショナルデータベースを代表させて説明するが、通常のデータベースにも本実施形態に係る発明は適用可能である。データベース操作要求入力手段１からデータベースに対する操作要求が入力され、データベース操作要求処理手段３が操作を実行する。検索向けデータ保持手段４は、データベースの検索操作を処理する。また複数の挿入向けデータ保持手段５1〜５ｎ（しばしば５で代表させて説明する）はデータベースのデータ挿入操作、削除操作及び更新操作を処理し、複数の削除向けデータ保持手段６1〜６ｍ（しばしば６で代表させて説明する）はデータベースのデータ挿入操作及び削除操作を処理する。なお、ここでデータ保持手段４，５，６として説明しているものは、例えばリレーショナルデータベースにおいては索引ファイル及び索引ファイルを用いた処理を行うための手段であり、データを参照等するために関連付けて保持し、その関連付けに従って各種処理を行なう手段である。データ転送手段７は、挿入向けデータ保持手段５1〜５ｎ及び削除向けデータ保持手段６1〜６ｍからタプルを読みとって検索向けデータ保持手段４に対するタプルの挿入、更新、削除の操作を行う。トランザクション（排他制御）処理手段２は、システムにおけるトランザクション制御を行う。データ保持部管理手段８は、挿入向けデータ保持手段５及び削除向けデータ保持手段６を、同時に実行できるトランザクションの最大数として当該システムに対して定められた個数分、予め作成しておき、トランザクションの開始，コミット，ロールバックに応じて、それぞれの挿入向けデータ保持手段及び削除向けデータ保持手段と各トランザクションの関係を記録し、変更を行う。これら各要素については、この後さらに詳しく説明する。
【００６４】
（データベース操作要求入力手段）
本実施形態におけるデータベース操作要求入力手段１は、複数のユーザからのデータベース操作要求を入力することができるものとする。図２を再度参照すると、ユーザは入力端末２１から例えばＳＱＬ文の形式で文字列により表現されたデータベース操作要求及びトランザクション処理要求を入力する。データベース操作要求は及びトランザクション処理要求ＬＡＮ２２を通じてサーバーホスト１０に送られて処理される。処理の結果は再びＬＡＮ２２を通じて入力端末２１に送られ、当該入力端末２１のディスプレイに表示するなどしてユーザに知らせることができる。
【００６５】
本実施形態によれば、複数のユーザから非同期に要求されるデータベース操作要求に対して検索向けデータ保持手段と挿入向けデータ保持手段及び削除向けデータ保持手段の整合性を保ちながら検索にも更新にも高速に応答することができ、ロールバック操作を他のユーザによる操作とは独立に高速に実行することができる。
【００６６】
（データベース操作要求処理手段）
図６乃至図８は、データベース操作要求処理手段の処理手順の一例を示す一連のフロー図である。データベース操作要求の種類によって処理内容が分かれる。この例では表の各タプルは一意に定まるＩＤ（タプルＩＤ）を付与され、タプルは全てタプルＩＤで識別される。
【００６７】
データベース操作要求処理手段３がデータベース操作要求処理を受け取ると（ステップＳ３１）、挿入操作かどうかを判断し（ステップＳ３２）、挿入操作の場合は、操作要求が発せられたトランザクションの識別子に対応した挿入向けデータ保持手段（手段５1〜５ｎのいずれか）をデータ保持部管理手段８から取得する（ステップＳ３３）。ここで、対応するものがなければ新規に対応させたものを取得する。新しいタプルに対してタプルＩＤを取得した後（ステップＳ３４）、取得した挿入向けデータ保持手段に対してタプルの挿入操作を実行し（ステップＳ３５）、その結果を返す（ステップＳ３６）。
【００６８】
ステップＳ３２で挿入操作でない場合、この例では検索操作を行う。検索操作では、データ保持部管理手段８からコミット済みの状態にある挿入向けデータ保持手段（手段５1〜５ｎのいずれか）及び削除向けデータ保持手段（手段６1〜６ｍのいずれか）を取得する（ステップＳ３７，Ｓ３８）。さらに操作中のトランザクション記述子が記録されている挿入向けデータ保持手段及び削除向けデータ保持手段があればそれも取得する（ステップＳ３９，Ｓ４０）。コミット済みの状態にある挿入向けデータ保持手段の個数をＮｉ、コミット済みの状態にある削除向けデータ保持手段の個数をＮｄとする。検索向けデータ保持手段４、コミット済み挿入向けデータ保持手段及びコミット済み削除向けデータ保持手段、操作中のトランザクションの挿入向けデータ保持手段及び削除向けデータ保持手段のそれぞれに検索操作を実行し（ステップＳ４１〜Ｓ４５）、以下の式（１）の集合演算を行ったものを検索結果とする（ステップＳ４６）。検索操作であるか判断し（ステップＳ４７）、検索操作であればその結果を返す（ステップＳ３６）。
【００６９】
Ｒ＝Ｒｒ＋Ｒｉ１＋Ｒｉ２＋．．．＋ＲｉＮｉ＋Ｒｉ−Ｒｄ１−Ｒｄ２−．．．−ＲｄＮｄ−Ｒｄ      （１）
【００７０】
上式（１）において、＋は論理和、−は論理差をあらわすものとし、各記号は以下の集合をあらわすものとする。
Ｒｒ    ：  検索向けデータ保持手段の検索結果集合
Ｒｉ１  ：  １番目の挿入向けデータ保持手段の検索結果集合
Ｒｉ２  ：  ２番目の挿入向けデータ保持手段の検索結果集合（以下同様に３，４，．．．と続く）
ＲｉＮｉ：  Ｎｉ番目の挿入向けデータ保持手段の検索結果集合
Ｒｄ１  ：  １番目の削除向けデータ保持手段の検索結果集合
Ｒｄ２  ：  ２番目の削除向けデータ保持手段の検索結果集合（以下同様に３，４，．．．と続く）
ＲｄＮｄ：  Ｎｄ番目の削除向けデータ保持手段の検索結果集合
Ｒｉ    ：  操作中のトランザクションの挿入向けデータ保持手段の検索結果集合
Ｒｄ    ：  操作中のトランザクションの削除向けデータ保持手段の検索結果集合
Ｒ      ：  検索結果集合
【００７１】
検索操作でなければ（ステップＳ４７でＮＯ）、この例では削除操作を実行する。削除操作では、検索操作と同様の手順で選ばれたタプルがコミット済みの挿入向けデータ保持手段にある場合、すなわちＲｉ１，．．．ＲｉＮｉのいずれかにある場合は（ステップＳ４８でＹＥＳ）、その挿入向けデータ保持手段に対して削除処理を実行する（ステップＳ４９）。ない場合は（ステップＳ４８でＮＯ）、操作中のトランザクションの挿入向けデータ保持手段にあるか、すなわちＲｉにあるかを判断し（ステップＳ５４）、存在すればその挿入向けデータ保持手段に対して削除処理を実行する（ステップＳ５５）。どの挿入向けデータ保持手段にもない場合（ステップＳ５４でＮＯ）、すなわち検索向けデータ保持手段４にある場合には、操作要求が発せられたトランザクションの識別子に対応した削除向けデータ保持手段をデータ保持部管理手段８から取得し、対応するものがなければ新規に対応させたものを取得する（ステップＳ５６）。さらにタプルを削除向けデータ保持手段に対して挿入操作を実行する（ステップＳ５７）。
【００７２】
ステップＳ４９，Ｓ５５，Ｓ５７に続き、更新操作であるかを判断し（ステップＳ５０）、更新操作でなければ結果を返す（ステップＳ３６）。更新操作では、検索操作と同様の手順で選ばれたタプルに対して、削除操作と同様の手段で削除操作を実行し、新しい値にタプルを更新する（ステップＳ５１）。さらに、新しい値に変更したタプルに対して、挿入操作と同様の手段で、挿入向けデータ保持手段を取得し（ステップＳ５２）、その挿入向けデータ保持手段にタプルを挿入する操作を実行し（ステップＳ５３）、結果を返す（ステップＳ３６）。
【００７３】
（検索向けデータ保持手段）
検索向けデータ保持手段４は、データベース操作要求処理手段３が実行する検索操作を処理する。また、データ転送手段７が実行する変更操作を処理する。検索向けデータ保持手段４は検索操作を高速で実行できる代わりに変更操作が比較的低速である。例えば、全文検索を行うことができる全文検索サーバを用いることが考えられる。
【００７４】
（挿入向けデータ保持手段）
挿入向けデータ保持手段５はデータベース操作要求処理手段３が実行する挿入操作、削除操作及び更新操作を処理する。また、データ転送手段７が実行する削除操作を処理する。また、データ保持部管理手段８が実行するデータ一括破棄操作を処理する。挿入向けデータ保持手段は変更操作及びデータ一括破棄操作を高速に実行できる。例えばＯＳが管理する通常のファイルを用いることが考えられる。
【００７５】
通常のファイルのように挿入向けデータ保持手段５が検索操作を実行できない場合は、保持しているタプルを逐次的に返しデータベース操作要求処理手段３が検索条件を評価（全数検索と呼ぶ）する。挿入向けデータ保持手段５が保持するタプル数は検索向けデータ保持手段４が保持するタプル数に比べて非常に少数なので全数検索を行っても応答時間に影響しない。
【００７６】
（削除向けデータ保持手段）
削除向けデータ保持手段６は、データベース操作要求処理手段３が実行する挿入操作を処理する。また、データ転送手段７が実行する削除操作を処理する。また、データ保持部管理手段８が実行するデータ一括破棄操作を処理する。削除向けデータ保持手段は変更操作及びデータ一括破棄操作を高速に実行できる。例えばＯＳが管理する通常のファイルを用いることが考えられる。
【００７７】
通常のファイルのように削除向けデータ保持手段６が検索操作を実行できない場合は、保持しているタプルを逐次的に返しデータベース操作要求処理手段３が検索条件を評価（全数検索と呼ぶ）する。削除向けデータ保持手段６が保持するタプル数は検索向けデータ保持手段４が保持するタプル数に比べて非常に少数なので全数検索を行っても応答時間に影響しない。
【００７８】
挿入向けデータ保持手段５1〜５ｎ，削除向けデータ保持手段６1〜６ｍ，検索向けデータ保持手段４のいずれか１又は複数は、それ自体が独立して動作可能にデータベース管理システムを構成することができるものであってよい。例えば、検索向けデータ保持手段４自体だけが、或いは挿入向けデータ保持手段５1〜５ｎ及び削除向けデータ保持手段６1〜６ｍ自体がデータベース管理システムによって実現されているような構成が挙げられる。このようなデータ保持手段４，５，６のいずれかを本発明のデータベース管理システムに適用すればよい。すなわち、既存のデータベース管理システムで検索は高速だが更新が比較的低速であるようなものに対して、そのデータベース管理システムに特別な変更を施すことなく、更新要求への応答を向上することができる。また、逆に既存のデータベース管理システムの更新応答が高速ならば、検索が高速なデータ保持手段と組み合わせることによって、更新応答性能を生かしながら検索要求への応答を向上することができる。
【００７９】
また、挿入向けデータ保持手段５1〜５ｎ及び／又は削除向けデータ保持手段６1〜６ｍがメモリ上にあるようにしてもよい。メモリが大量にある場合に、変更向けデータ保持手段、すなわち挿入向けデータ保持手段５1〜５ｎ，削除向けデータ保持手段６1〜６ｍの一部又は全部をメモリ上で利用することで更新性能の著しい向上が実現できる。
【００８０】
また、検索向けデータ保持手段４及び挿入向けデータ保持手段５及び削除向けデータ保持手段６は、属性値の特性に応じてその形態を選定することが好ましく、例えばデータ量が少ない属性値については上述のごとくのメモリ上で挿入向けデータ保持手段５及び削除向けデータ保持手段６を用いることによって性能の向上が実現できる。
【００８１】
（データ転送手段）
図９は、データ転送手段の処理手順の一例を説明するためのフロー図である。データ転送手段７には転送の対象となる操作を行ったトランザクション識別子が指定される。データ転送手段７は、データ保持部管理手段８から指定されたトランザクション識別子が記録されている挿入向けデータ保持手段及び削除向けデータ保持手段を取得する。取得した削除向けデータ保持手段からタプルを順次読み込み、その値にしたがって検索向けデータ保持手段４から削除し、反映が終わったタプルを削除向けデータ保持手段から削除する。次に、取得した挿入向けデータ保持手段からタプルを順次読み込み、そのタプルを検索向けデータ保持手段４に挿入し、反映が終わったタプルを挿入向けデータ保持手段から削除する。転送が完了するとデータ保持部管理手段８に転送終了を伝える。
【００８２】
図９において、まず、データ転送手段７はデータ保持部管理手段８から指定されたトランザクション識別子が記録されている削除向けデータ保持手段を取得する（ステップＳ６１）。取得できれば（ステップＳ６２でＹＥＳ）、取得した削除向けデータ保持手段からタプルを順次読み込み（ステップＳ６３）、その値にしたがって検索向けデータ保持手段４から削除し、反映が終わったタプルを削除向けデータ保持手段から削除する（ステップＳ６４）。その後、及びステップＳ６２でＮＯの場合、データ保持部管理手段８から指定されたトランザクション識別子が記録されている挿入向けデータ保持手段を取得する（ステップＳ６５）。取得できなければ（ステップＳ６６でＮＯ）ステップＳ６９へ進む。取得できれば（ステップＳ６６でＹＥＳ）取得した挿入向けデータ保持手段からタプルを順次読み込み（ステップＳ６７）、そのタプルを検索向けデータ保持手段４に挿入し、反映が終わったタプルを挿入向けデータ保持手段から削除する（ステップＳ６８）。転送が完了するとデータ保持部管理手段８に、データ保持手段の識別子とともに転送終了を伝え（ステップＳ６９）、処理を終了する。
【００８３】
（データ保持部管理手段）
本発明に係るデータ保持部管理手段８は、変更向けデータ保持手段５，６を予め作成し、それらと各トランザクションとの関係を記録、変更するものであるが、他の実施形態におけるデータ保持部管理手段８では、それぞれの挿入向けデータ保持手段５1〜５ｎ（又は削除向けデータ保持手段６1〜６ｍ）について、対応するトランザクションの識別子とともに、「未使用」，「使用中」，「コミット済み」，「転送中」の別を保持するようにし、さらに、データベース操作要求処理手段３にタプル挿入要求（又はタプル削除要求）があった場合に、次の（１）〜（３）の処理を実行する。
【００８４】
（１）未使用の挿入向けデータ保持手段（又は削除向けデータ保持手段）があれば、それを使用中の状態にして要求を発したトランザクションの識別子を記録し、（２）未使用の挿入向けデータ保持手段（又は削除向けデータ保持手段）が１つもなければ、コミット済みの挿入向けデータ保持手段（又は削除向けデータ保持手段）の中から検索向けデータ保持手段４へのデータ転送を行うものを１つ選び、転送中の状態にした上で、データ転送手段７によりデータ転送を行った後、それを未使用の状態にして要求を発したトランザクションの識別子を記録し、（３）未使用又はコミット済みの挿入向けデータ保持手段（又は削除向けデータ保持手段）が１つもない場合は少なくとも１つの挿入向けデータ保持手段（又は削除向けデータ保持手段）が未使用又はコミット済みになるまで待ってからそれに対して、上記（１）又は（２）と同様の操作を行う。
【００８５】
そして、データベース操作要求処理手段３は、その要求を発したトランザクションの識別子が記録されている挿入向けデータ保持手段（又は削除向けデータ保持手段）にタプルを挿入（又は削除）する。データ保持部管理手段８は、トランザクション処理手段２にトランザクションのコミット要求があった場合に、その要求を発したトランザクションの識別子が記録されている挿入向けデータ保持手段（又は削除向けデータ保持手段）の状態をコミット済みにし、トランザクション処理手段２にトランザクションのロールバック要求があった場合に、その要求を発したトランザクションの識別子が記録されている挿入向けデータ保持手段（又は削除向けデータ保持手段）のデータを全て一括して破棄した上でその状態を未使用にする。
【００８６】
本実施形態によれば、異なるトランザクションによる挿入（又は削除）操作に影響されることなくタプル挿入（又はタプル削除）を高速に行うことができ、ロールバック操作はデータ保持手段が保持するデータを一括して破棄することで行えるので通常の変更操作より高速に行うことができ、更新要求及びロールバック操作への応答を向上することができる。
【００８７】
また、他の実施形態として、データ保持部管理手段８が管理する挿入向けデータ保持手段及び削除向けデータ保持手段はシステム起動時には存在しておらず、上述の（３）で未使用又はコミット済みの挿入向けデータ保持手段又は削除向けデータ保持手段が１つもない場合に、挿入向けデータ保持手段の数又は削除向けデータ保持手段の数が所定数を超えていなければ新たに挿入向けデータ保持手段又は削除向けデータ保持手段を作成してそれを使用し、その数が所定数を超えているときには少なくとも１つの挿入向けデータ保持手段又は削除向けデータ保持手段が未使用又はコミット済みになるまで待つようにしてもよい。本実施形態においては、コミット済みの挿入向けデータ保持手段又は削除向けデータ保持手段についてデータ転送が完了したとき、或いは使用中の挿入向けデータ保持手段又は削除向けデータ保持手段と対応しているトランザクションにロールバック要求があったときに、そのデータ保持手段を抹消するものとする。
【００８８】
本実施形態によれば、挿入向けデータ保持手段及び削除向けデータ保持手段の作成が高速に行える場合は同時に発生するトランザクションの数に応じて適切な数のデータ保持手段を管理することができ、無駄なリソースを消費することなく更新要求及びロールバック操作への応答を向上することができる。
【００８９】
また、他の実施形態として、データ保持部管理手段８が時間間隔を保持することにより、コミット済みの挿入向けデータ保持手段のデータ転送をタプル挿入やタプル削除要求時に行うのではなく、データ保持部管理手段８がその保持する時間間隔を経過するごとにコミット済みであるような挿入向けデータ保持手段又は削除向けデータ保持手段について、データ転送手段７によりデータ転送を実行した上で、データ転送を実行した挿入向けデータ保持手段又は削除向けデータ保持手段の状態を未使用に変更するようにしてもよい。
【００９０】
本実施形態によれば、自動的にコミット済みのデータ保持手段からデータ転送することにより未使用のデータ保持手段の割合を増やし、更新要求への応答をさらに向上することができる。
【００９１】
さらに他の実施形態として、データ保持部管理手段８が、未使用の挿入向けデータ保持手段又は削除向けデータ保持手段の数が一定数以下になるごとにコミット済みであるような挿入向けデータ保持手段又は削除向けデータ保持手段について、データ転送手段７によりデータ転送を実行した上で、データ転送を実行した挿入向けデータ保持手段又は削除向けデータ保持手段の状態を未使用に変更するようにしてもよい。
【００９２】
本実施形態によれば、同時に発生するトランザクションの数に応じて自動的にデータ転送することにより、データ転送手段７によって消費されるリソースを必要なときに効果的に使用することができる。
【００９３】
上述した各実施形態におけるデータ保持部管理手段８に関し、その処理の一例を説明する。データ保持部管理手段８には、データ保持手段を取得したいトランザクションの識別子又は取得したいデータ保持手段の状態と、対応するものがないときに新規に対応させたものを取得するか取得せずに対応がないことを知らせるかの別が指定される。データ保持部管理手段８は、挿入向けデータ保持手段５及び削除向けデータ保持手段６のそれぞれに識別子をつけ、データ保持手段の識別子と未使用／使用中／コミット済み／転送中の状態をハッシュ表Ａで記録している。ハッシュ表は周知の技術である。下表３はハッシュ表Ａに記録する情報を示している。
【００９４】
【表３】
0004287900.tif 000004
【００９５】
また、データ保持部管理手段８はトランザクションの識別子とデータ保持手段の識別子もハッシュ表Ｂにより記録する。下表４はハッシュ表Ｂに記録する情報を示している。
【００９６】
【表４】
0004287900.tif 000005
【００９７】
データ保持部管理手段８は、トランザクションの識別子が指定されている場合、そのトランザクション識別子に対応するデータ保持手段の識別子をハッシュ表Ｂから取得する。データ保持手段の識別子が取得できた場合、データ保持手段の識別子の状態をハッシュ表Ａから取得し返答する。取得したいデータ保持手段の状態が指定されている場合、ハッシュ表Ａを走査して指定された状態と等しければデータ保持手段の記述子の集合に加え、全て走査したときに得られたデータ保持手段の記述子の集合を返答する。データ保持手段の識別子が取得できなかった場合、新規に対応させたものを取得するよう指定されている場合は以下のようにして新規に対応させたものを取得する。
【００９８】
（１）ハッシュ表Ａ全体を走査して未使用の状態にあるデータ保持手段の識別子を探索し、それがあればハッシュ表Ａに記録されている状態を使用中に変更した上でハッシュ表Ｂに指定されたトランザクション識別子との対応を記録し、そのデータ保持手段を返答する。
（２）未使用の状態にあるデータ保持手段がなければハッシュ表Ａ全体を走査して転送中の状態にあるデータ保持手段を探索し、それがあればデータ転送手段から転送終了の指示がくるまで待った上で（１）と同様にハッシュ表Ａ及びハッシュ表Ｂに記録し、返答する。
【００９９】
（３）未使用のものも転送中のものもなければハッシュ表Ａ全体を走査してコミット済みの状態にあるデータ保持手段を探索し、それがあればデータ転送手段にそのデータ保持手段と対応されているトランザクション識別子を指定してデータ転送の開始を指示し、転送終了まで待った上で（１）と同様にハッシュ表Ａ及びハッシュ表Ｂに記録し、返答する。
（４）未使用のものも転送中のものもコミット済みのものもなければ全て使用中なので他のトランザクションの操作により新たに未使用又はコミット済みのものが現れるまで返答を保留する。
【０１００】
データ保持部管理手段８はさらにトランザクション処理手段２から指示されるロールバック処理も行う。ロールバック処理は対象のトランザクションの識別子を指定され、ハッシュ表Ｂから対応するデータ保持手段の識別子を取得したらそのデータ保持手段に対してデータの一括破棄を指示した上でハッシュ表Ａに未使用の状態を記録する。
【０１０１】
図１０乃至１２は、データ保持部管理手段の処理手順の一例を説明するための一連のフロー図である。以上のデータ保持部管理手段８の一例を図１０乃至図１２に基づいて説明する。まず、データ保持部管理手段８は、処理要求を受け取ると（ステップＳ７１）、ロールバック処理の要求かを判断し（ステップＳ７２）、ロールバック処理要求であれば、ハッシュ表Ｂから指定されたトランザクションに対応する挿入向けデータ保持手段及び削除向けデータ保持手段の識別子を得る（ステップＳ７３）。次に挿入向けデータ保持手段及び削除向けデータ保持手段にデータ一括破棄を実行する（ステップＳ７４）。次にハッシュ表Ａで挿入向けデータ保持手段の識別子と対応する状態の情報を「未使用」に変更し（ステップＳ７５）、ハッシュ表Ａで削除向けデータ保持手段の識別子と対応する状態の情報を「未使用」に変更する（ステップＳ７６）。
【０１０２】
ステップＳ７２でロールバック処理要求でないと判断された場合、トランザクションの指定があるかを判断する（ステップＳ７７）。ステップＳ７７でＹＥＳの場合、挿入向け取得要求であるかを判断する（ステップＳ７８）。ステップＳ７８でＹＥＳの場合、ハッシュ表Ｂから指定されたトランザクションに対応する挿入向けデータ保持手段の識別子を得る（ステップＳ７９）。ステップＳ７８でＮＯの場合、ハッシュ表Ｂから指定されたトランザクションに対応する削除向けデータ保持手段の識別子を得る（ステップＳ８２）。ステップＳ７９，Ｓ８２に関し、取得できたのであれば（ステップＳ８０でＹＥＳ）、結果を返し（ステップＳ８１）、処理を終了する。取得できなければ、新たに対応させる指定があるかを判断する（ステップＳ８３）。新たに対応させる指定がなければ、取得できなかったことを結果として（ステップＳ８４）、結果を返し（ステップＳ８１）、処理を終了する。
【０１０３】
ステップＳ７７においてトランザクションの指定がないと判断された場合、ハッシュ表Ａからエントリを１つ得（ステップＳ８５）、指定された挿入／削除の別とエントリの挿入／削除の別が一致しているかを判断する（ステップＳ８６）。一致していれば、指定された状態とエントリの状態が一致しているかを判断し（ステップＳ８７）、データ保持手段の識別子を結果に加える（ステップＳ８８）。ステップＳ８８の後、及びステップＳ８６でＮＯの場合、及びステップＳ８７でＮＯの場合、未処理のエントリが残っているかを判断し（ステップＳ８９）、残っていればステップＳ８５に戻り、残っていなければステップＳ８１へ進み結果を返して処理を終了する。
【０１０４】
ステップＳ８３において新たに対応させる指定があると判断された場合、ハッシュ表Ａからエントリを１つ得（ステップＳ８４）、指定された挿入／削除の別とエントリの挿入／削除の別が一致しているかを判断する（ステップＳ９１）。一致していれば、エントリの状態が「未使用」かを判断する（ステップＳ９２）。「未使用」であれば、エントリの識別子を結果とし（ステップＳ９３）、結果を返して（ステップＳ８１）処理を終了する。ステップＳ９２にてＮＯの場合、エントリの状態が「転送中」又は「コミット済み」かを判断する（ステップＳ９４）。「転送中」又は「コミット済み」であれば、転送候補に加える（ステップＳ９５）。ステップＳ９５の後、及びステップＳ９１でＮＯの場合、及びステップＳ９４でＮＯの場合、未処理のエントリが残っているかを確認し（ステップＳ９６）、残っていればステップＳ９０に戻る。残っていなければ、ステップＳ９７に進み、転送候補が空でないかを判断する。空であれば、「未使用」又は「コミット済み」のデータ保持手段が現れるまで処理を中断する（ステップＳ１０１）。ステップＳ９７にて空でないと判断された場合、転送候補の先頭が「コミット済み」かを判断する（ステップＳ９８）。「コミット済み」であれば、転送候補の先頭に転送を実行し（ステップＳ９９）、データ転送手段から転送終了の通知が来るのを待ち（ステップＳ１００）、ステップＳ８１で結果を返し、処理を終了する。一方、「コミット済み」でなければ、ステップＳ９９を経ずにステップＳ１００へと進む。
【０１０５】
（トランザクション処理手段）
トランザクション処理手段２は非同期に要求される検索操作と変更操作をデータの一貫性を保つように実行順序を制御するための排他制御と、変更操作を中止したときにデータ保持部管理手段８にデータの一括破棄の指示を行う。排他制御は複数のユーザから要求されるデータベース操作間の排他制御のほかに、データベース操作要求処理手段３とデータ転送手段７の間の排他制御にも用いられる。
【０１０６】
上述した複粒度ロック（［１］参照）を用いてさまざまなアイソレーションレベルを実現する。ロックの対象は表、タプル、ファイルである。本発明におけるファイルは検索向けデータ保持手段、挿入向けデータ保持手段及び削除向けデータ保持手段からなるものとみなすことができる。排他制御とロギングにおいてはファイルを構成する検索向けデータ保持手段、挿入向けデータ保持手段及び削除向けデータ保持手段がどういう構造であるかは無関係にこれらをまとめて１つのオブジェクトとして扱うことができる。本発明においてＲＥＡＤ ＣＯＭＭＩＴＴＥＤのアイソレーションレベルを実現する方法については、基本的に上述した通りである。検索操作，挿入操作，更新操作，削除操作，コミットに関する手順は同じであるが、ロールバック（アボート）については以下のようになる。
【０１０７】
（ロールバック（アボート））
０．変更操作の前に対象の表にＩＸロックがかかっている。
１．ログにロールバックを記録する。
２．ログを参照しながら、データ操作をＵＮＤＯする。その際、必要なファイルへのラッチを行う。ファイルが挿入向けデータ保持手段又は削除向けデータ保持手段ならばＵＮＤＯではなくファイルのデータ一括破棄を行う。
３．ロールバックしたトランザクションが要求したロックを全て解除する。
【０１０８】
以上、本発明のデータベース管理システムを中心に各実施形態を説明してきたが、本発明は、これらデータベース管理システムにおける処理手順を含んでなるデータベース管理方法、これらデータベース管理システムとして又は該データベース管理システムの各手段として機能させるためのプログラムとしても、或いは、そのプログラムを記録したコンピュータ読み取り可能な記録媒体としての形態も可能である。
【０１０９】
本発明によるデータベース管理の機能を実現するためのプログラムやデータを記憶した記録媒体の実施形態を説明する。記録媒体としては、具体的には、ＣＤ−ＲＯＭ、光磁気ディスク、ＤＶＤ−ＲＯＭ、ＦＤ、フラッシュメモリ、及びその他各種ＲＯＭやＲＡＭ等が想定でき、これら記録媒体に上述した本発明の各実施形態のシステムの機能をコンピュータに実行させ、データベース管理の機能を実現するためのプログラムを記録して流通させることにより、当該機能の実現を容易にする。そしてコンピュータ等の情報処理装置に上記のごとくの記録媒体を装着して情報処理装置によりプログラムを読み出すか、若しくは情報処理装置が備えている記憶媒体に当該プログラムを記憶させておき、必要に応じて読み出すことにより、本発明に係わるデータベース管理機能を実行することができる。
【図面の簡単な説明】
【０１１０】
【図１】本発明の一実施形態に係るデータベース管理システムの機能を説明するためのブロック構成図である。
【図２】本発明を具体化するシステム構成の一例を示す図である。
【図３】データベース操作要求処理手段の処理手順の一例を示すフロー図である。
【図４】データ転送手段の処理手順の一例を説明するためのフロー図である。
【図５】本発明の他の実施形態に係るデータベース管理システムの機能を説明するためのブロック構成図である。
【図６】データベース操作要求処理手段の処理手順の一例を示すフロー図である。
【図７】図６に続くフロー図である。
【図８】図７に続くフロー図である。
【図９】データ転送手段の処理手順の一例を説明するためのフロー図である。
【図１０】データ保持部管理手段の処理手順の一例を説明するためのフロー図である。
【図１１】図１０に続くフロー図である。
【図１２】図１０に続くフロー図である。
【符号の説明】
【０１１１】
１    データベース操作要求入力手段
２    トランザクション処理手段
３    データベース操作要求処理手段
４    検索向けデータ保持手段
５，５1〜５ｎ    挿入向けデータ保持手段
６，６1〜６ｍ    削除向けデータ保持手段
７    データ転送手段
８    データ保持部管理手段
１０    サーバホスト
１１    ＣＰＵ
１２    メモリ
１２ａ  プログラム領域
１２ｂ  データ領域
１３    ハードディスク
１４    バス
２１    入力端末
２２    ＬＡＮ。
【図１】
0004287900.tif 000006
【図２】
0004287900.tif 000007
【図３】
0004287900.tif 000008
【図４】
0004287900.tif 000009
【図５】
0004287900.tif 000010
【図６】
0004287900.tif 000011
【図７】
0004287900.tif 000012
【図８】
0004287900.tif 000013
【図９】
0004287900.tif 000014
【図１０】
0004287900.tif 000015
【図１１】
0004287900.tif 000016
【図１２】
0004287900.tif 000017