説明

管理装置、データベース管理方法、及びプログラム

【課題】データベース管理システムにおいて、データベースが多重化されている場合であっても、不要領域の修復に関わる排他処理の時間を縮小し得る、管理装置、データベース管理方法、及びプログラムを提供する。
【解決手段】管理装置21は、多重化された複数のデータベースサーバ22〜25を備えたデータベース管理システム2を構成する。管理装置21は、データベースサーバ22〜25それぞれにおける不要領域の修復処理を管理する不要領域修復管理部212を備えている。不要領域修復管理部212は、複数のデータベースサーバ22〜25それぞれにおいて不要領域の修復処理が必要となると、一部のデータベースサーバに、先に修復処理を実行させ、その後、残りのデータベースサーバに、修復処理を実行させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、多重化されたデータベースサーバを備えるデータベース管理システムにおいて管理を行うための、管理装置、データベース管理方法、及びプログラムに関する。
【背景技術】
【0002】
一般に、マルチユーザ環境におけるデータベース管理システムでは、端末装置(データベースクライアント)からのデータベース操作の実行時において、トランザクションの同時実効性制御を考慮する必要がある。このため、追記型のストレージを備えるデータベース管理システムでは、多版式同時実行制御(Multi-Version Concurrency Control)が採用されている(例えば、特許文献1参照。)。
【0003】
多版式同時実行制御では、更新前のデータと更新後のデータとの両方が保持されるため、この追記型ストレージを用いた多版式同時実効制御によれば、問い合わせロックの獲得と書き込みロックの獲得との競合が回避される。よって、データベースへのロールバック機能やリカバリ機能の実装が非常に容易となる。
【0004】
但し、多版式同時実効制御を採用した場合は、更新が発生する度にデータ領域が消費されていくため、データベース管理システムでは、定期的に不要領域を修復する処理が必要である。不要領域を修復する方法は大きく以下の二つに大別される。
【0005】
一つの方法は、記憶領域に設定されたページ内での不要領域を詰めて、利用可能なデータ領域を作り、データのアドレスと利用可能な領域の大きさとを記憶することによって、データを再利用する方法(以下「部分不要領域修復方法」と呼ぶ。)である。また、別の方法は、ページ間に渡って不要領域を詰め、ページ自体の削減を行う方法(以下「完全不要領域修復方法」と呼ぶ)である。
【0006】
上記した方法のうち、部分不要領域修復方法では、修復中のデータ操作の排他対象はページのみであり、データベース管理システムの運用に大きな影響が及ぼされることなく、不要領域を修復することが出来る。
【0007】
しかしながら、ページ数自体の削減は行われないため、ページを保存しているファイルが削減されないというデメリットがある。この結果、修復処理が適切に行われず、データの更新や削除に伴いファイルサイズが過大になってしまった場合に、このことを解消することが出来なくなる。そして、例えば全件検索を行う場合にはファイルI/Oが増大し、性能の劣化などが発生する可能性がある。
【0008】
これに対して、完全不要領域修復方法では、ページ自体の削減が行われるため、ファイルサイズも同様に削減され、上記した部分不要領域修復方法における問題は解消可能である。
【0009】
また、データベース管理システムでは、従来から、検索の性能向上や可用性の向上のため、データベースの多重化が行われている。デーベースが多重化されたデータベース管理システムについて、図9を用いて説明する。図9は、従来からの多重化データベース管理システムの一例を示すブロック図である。
【0010】
図9に示すように、多重化データベース管理システム40は、データベースクライアント30からの問い合わせを受け付ける受付サーバ41と、多重化されたデータベースサー
バ42〜45とを備えている。なお、図9の例では、データベースサーバは4台であるが、一般に、多重化データベース管理システムでは、データベースサーバは2台以上であれば良い。
【0011】
そして、多重化データベース管理システム40では、データベースクライアント30は、全ての問合せを受付サーバ41に対して行う。受付サーバ41は、問い合わせの内容に応じて各データベースと連携し、得た結果をデータベースクライアント30に返却する。
【0012】
例えば、この時、問い合わせが検索であれば、受付サーバ41は、データベースサーバ42〜45の中から負荷の少ないデータベースサーバを選択し、そのデータベースサーバに対して問い合わせを行う。そして、受付サーバ41は、問い合わせの結果を受け取ると、結果を、そのままデータベースクライアント30に返却する。
【0013】
また、問い合わせが更新や削除であれば、受付サーバ41は、データベースサーバ22〜25の全てのデータベースに対して、更新の問い合わせを発行する。そして、全ての処理が終われば、受付サーバ41は、データベースクライアント30に対して、更新結果を返却する。
【0014】
このように、多重化データベース管理システム40では、データベースサーバ22〜25の全てのデータベースが論理的に同じ情報を保持することとなる。よって、多数のデータベースクライアントが、大量の検索を実施する場合の性能の向上が図られる。更に、データベースサーバに異常が発生した場合は、他のデータベースサーバが補うことにより、データベース管理システム全体の可用性の向上が図られる。
【先行技術文献】
【特許文献】
【0015】
【特許文献1】特開2008−181297号公報
【発明の概要】
【発明が解決しようとする課題】
【0016】
しかしながら、上述したデータベース管理システムで行われる従来からの不要領域の修復や、データベースサーバの多重化には、次のような問題点が存在する。以下に具体的に説明する。
【0017】
第一に、従来からの完全不要領域修復方法では、部分不要領域修復方法のような問題は生じないが、不要領域を詰める修復処理の実行時に排他処理が必要であるため、データベース管理システムの運用を停止しなければならいという問題がある。このため、停止時間を取ることができないデータベースでは、完全不要領域修復方法を実施できず、性能の劣化を招くことがある。
【0018】
第二に、排他処理の問題は、データベースが多重化されていると、より大きな問題となってしまう。具体的には、多重化されたデータベースに対して、完全不要領域修復方法による操作が行われると、全てのデータベースは、不要領域の修復処理が全て終了するまで、問い合わせ結果を返せず、排他処理に必要な時間は、単一のデータベースの場合よりも長時間となってしまう。
【0019】
つまり、データベースクライアントから更新の問い合わせが来た場合は、同時に全てのデータベースに対して更新処理をかける必要があるため、このときに、いずれかのデータベースに排他がかかっていると更新を行うことができない状態となる。よって、多重化されたデータベースに対して、完全不要領域修復方法による操作が行われる場合は、各デー
タベースは、全てのデータベースに対する不良領域の修復処理が終了するまで、待機状態となってしまう。
【0020】
本発明の目的は、上記問題を解消し、データベース管理システムにおいて、データベースが多重化されている場合であっても、不要領域の修復に関わる排他処理の時間を縮小し得る、管理装置、データベース管理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【0021】
上記目的を達成するため、本発明における管理装置は、多重化された複数のデータベースサーバを備えたデータベース管理システムを構成する管理装置であって、
前記複数のデータベースサーバそれぞれにおける不要領域の修復処理を管理する不要領域修復管理部を備え、
前記不要領域修復管理部は、前記複数のデータベースサーバそれぞれにおいて不要領域の修復処理が必要となると、一部の前記データベースサーバに、先に前記修復処理を実行させ、その後、残りの前記データベースサーバに、前記修復処理を実行させる、
ことを特徴とする。
【0022】
上記目的を達成するため、本発明におけるデータベース管理方法は、多重化された複数のデータベースサーバを備えたデータベース管理システムにおいてデータベースの管理を行うための方法であって、
(a)前記複数のデータベースサーバそれぞれにおいて不要領域の修復処理が必要となった場合に、一部の前記データベースサーバに、先に前記修復処理を実行させるステップと、
(b)前記(a)のステップの実行後に、残りの前記データベースサーバに、前記修復処理を実行させるステップと、
を有することを特徴とする。
【0023】
上記目的を達成するため、本発明におけるプログラムは、多重化された複数のデータベースサーバを備えたデータベース管理システムにおいて、コンピュータに、データベースの管理を行わせるためのプログラムであって、
前記コンピュータに、
(a)前記複数のデータベースサーバそれぞれにおいて不要領域の修復処理が必要となった場合に、一部の前記データベースサーバに、先に前記修復処理を実行させるステップと、
(b)前記(a)のステップの実行後に、残りの前記データベースサーバに、前記修復処理を実行させるステップと、
を実行させることを特徴とする。
【発明の効果】
【0024】
以上の特徴により、本発明における、管理装置、データベース管理方法、及びプログラムによれば、データベース管理システムにおいて、データベースが多重化されている場合であっても、不要領域の修復に関わる排他処理の時間を縮小することが可能となる。
【図面の簡単な説明】
【0025】
【図1】図1は、本発明の実施の形態1における管理装置及びそれを備えるデータベース管理システムの概略構成を示すブロック図である。
【図2】図2は、本発明の実施の形態1における管理装置の動作を示すフロー図である。
【図3】図3は、本発明の実施の形態1の管理装置によって構成されたデータベース管理システムにおけるアクティビティの変化を示すアクティビティ図である。
【図4】図4は、本実施の形態1において行われる不要領域修復処理の概念を説明する説明図である。
【図5】図5は、図3に示したステップBを具体的に示すアクティビティ図である。
【図6】図6は、図5に示したステップCを具体的に示すアクティビティ図である。
【図7】図7は、本発明の実施の形態2の管理装置によって構成されたデータベース管理システムにおけるアクティビティの変化を示すアクティビティ図である。
【図8】図8は、図7に示したステップB10に含まれる処理を具体的に示すアクティビティ図である。
【図9】図9は、図9は、従来からの多重化データベース管理システムの一例を示すブロック図である。
【発明を実施するための形態】
【0026】
(実施の形態1)
以下、本発明の実施の形態1における、管理装置、データベース管理方法、及びプログラムについて、図1〜図6を参照しながら説明する。最初に、管理装置及びそれを備えるデータベース管理システムの構成について図1を用いて説明する。図1は、本発明の実施の形態1における管理装置及びそれを備えるデータベース管理システムの概略構成を示すブロック図である。
【0027】
図1に示すように、本実施の形態1における管理装置21は、多重化された複数のデータベースサーバ22〜25を備えたデータベース管理システム2を構成している。また、本実施の形態1では、デーベース管理装置21には、データベース対して処理を要求するデータベースクライアント1が接続されている。更に、データベースサーバ22〜25は追記型のデータベースであり、データベース管理システム2では、多版式同時実行制御が採用されている。
【0028】
なお、図1は、データベースサーバが4台の例を示しているが、本実施の形態1において、データベースサーバの数は限定されるものではなく、2台以上であれば良い。また、図1は、1台のデータクライアント1のみを示しているが、本実施の形態1において、データクライアントの数も限定されるものではない。
【0029】
また、図1に示すように、管理装置21は、データベースサーバ22〜25それぞれにおける不要領域の修復処理を管理する不要領域修復管理部212を備えている。不要領域修復管理部21は、データベースサーバ22〜25それぞれにおいて不要領域の修復処理が必要となると、一部のデータベースサーバに、先に修復処理を実行させ、その後、残りのデータベースサーバに、修復処理を実行させる。
【0030】
よって、管理装置21によれば、不要領域の修復処理を、例えば、2つのステップに分割して行うことができるため、データベースが多重化されている場合であっても、不要領域の修復に関わる排他処理の時間を縮小できる。このため、不要領域の修復処理が実行中の場合でも、データベースクライアント1は検索処理や更新処理を要求することができる。
【0031】
ここで、本実施の形態におけるシステム管理装置21及びデータベース管理システム2の構成について具体的に説明する。図1に示すように、管理装置21は、データベースサーバ22〜25に対する外部からの操作要求を管理するクエリ管理部211を備えている。
【0032】
クエリ管理部211は、データクライアント1に接続され、データクライアント211からの要求、例えば、データの更新、検索等を受け付ける。そして、クエリ管理部211
は、受け付けた要求の内容を確認した後、要求内容に応じて、データサーバ22〜24に対して、問い合わせや、操作の指示を発行し、これらを送信する。データベース管理部21は、クエリ管理部211により、問い合わせ受け付けサーバとして機能している。
【0033】
また、本実施の形態1において、システム管理装置21とデータベースクライアント1との接続は、ネットワークによって行われている。更に、同様に、システム管理装置21と、データベースサーバ22〜25それぞれとの接続もネットワークによって行われている。
【0034】
また、不要領域修復管理部212は、本実施の形態では、クエリ管理部211から、データベースサーバ22〜25への問い合わせの結果や、これらに対して行った操作の実行結果を受け取る。そして、不要領域修復管理部212は、不要領域の修復処理が指示された各データベースサーバにおける動作状況を判断し、判断結果に応じて、クエリ管理部211に対して指示を行う。
【0035】
データベースサーバ22〜25は、それぞれ、同様の構成を備えており、データベース管理部と記憶装置とを備えている。例えば、データベースサーバ22は、データベース管理部221と、記憶装置222とを備えている。データベース管理部221は、クエリ管理部211が発行した問い合わせや操作の指示を受けると、これらの内容を分析し、分析結果に応じて処理を実行する。また、データベース管理部221は、処理の結果をクエリ管理部211に返却する。
【0036】
記憶装置222は、格納が指示されたデータ、インデックスデータ、データベースの統計情報、及びトランザクション情報等のデータベースの運用に必要な情報を記録している。なお、他のデータベースサーバ23、24及び25の構成及び動作は、上述したデータベースサーバ22と同様であり、これらのデータベースサーバについての説明は省略する。
【0037】
次に、本発明の実施の形態1における管理装置21の動作を、図2を用いて説明する。図2は、本発明の実施の形態1における管理装置の動作を示すフロー図である。なお、本実施の形態1におけるデータベース管理方法は、本実施の形態1における管理装置21を動作させることによって実行される。よって、データベース管理方法の説明は、以下の管理装置21の動作の説明に代える。また、以下の説明においては、適宜図1を参酌する。
【0038】
図2に示すように、先ず、クエリ管理部211は、データベースクライアント1が不要領域の修復処理の要求コマンドを発行すると、これを受け付け、不要領域修復管理部212に、不要領域の修復処理の開始を通知する(ステップS1)。
【0039】
次に、不要領域修復管理部212は、データベースサーバ22〜25のうちの一部、例えば、データベースサーバ22と23とを修復対象に割り当て、そのことをクエリ管理部211に通知する(ステップS2)。そして、クエリ管理部211は、データベースサーバ22のデータベース管理部221とデータベースサーバ23のデータベース管理部231とに、不要領域の修復処理の指示を発行する。これにより、データベースサーバ22及び23において、不要領域の修復処理が実行される。
【0040】
次に、クエリ管理部211は、データベースクライアント1から、不要領域の修復処理とは別の操作要求、例えば、データの検索を受けた場合は、修復処理の指示を行っていない別のデータベースサーバ24及び25に、求められた処理の実行を指示する(ステップS3)。
【0041】
このとき、データベースクライアント1から、データの更新が指示された場合は、データベースサーバ22及び23に対しては更新を行えないため、クエリ管理部211は、不要領域修復管理部212に更新内容をプールさせる。不要領域修復管理部212は、データベース22及び23において不要領域の修復処理が終了すると、これらに対して、クエリ管理部211を介して更新を行わせる。なお、上述した処理の詳細については後述する。
【0042】
次に、データベースサーバ22及び23において、不要領域の修復処理が終了すると、不要領域修復管理部212は、修復処理が終了していないデータベースサーバ24及び25を修復対象に割り当て、そのことをクエリ管理部211に通知する(ステップS4)。これにより、修復対象となるデータベースが入れ替えられ、全てのデータベースに対する不要領域の修復処理が終了する。そして、ステップS1〜S4までの間、全てのデータベースにおいて同時に不要領域の修復処理が行われることはないため、上述したように、不要領域の修復に関わる排他処理の時間は縮小される。
【0043】
ステップS4の実行後、クエリ管理部211は、通常の運用に戻り、データベースクライアント1から操作要求があった場合は、全てのデータベースに対して、操作要求を実行させる(ステップS5)。
【0044】
次に、管理装置21の動作を更に具体的に説明するため、データベース管理システム2の全体の動作を、図3及び図4を用いて説明する。図3は、本発明の実施の形態1の管理装置によって構成されたデータベース管理システムにおけるアクティビティの変化を示すアクティビティ図である。図4は、本実施の形態1において行われる不要領域修復処理の概念を説明する説明図である。
【0045】
先ず、図3に示すように、データベースクライアント1から、データベース管理システム2全体に対して不要領域の修復処理を要求するコマンドが発行されると、クエリ管理部211は、不要領域の修復処理の要求コマンドを受け付ける(ステップA1)。そして、クエリ管理部211は、不要領域修復管理部212に、不要領域の修復処理の開始を通知する。なお、本実施の形態において行われる修復処理は、背景技術の欄で述べた「完全不要領域修復方法」である。
【0046】
次に、不要領域修復管理部212は、データベースサーバ22〜25の半分を修復対象のデータベースサーバに割り当て、残りのデータベースサーバを通常対応のデータベースサーバに割り当て、結果を、クエリ管理部211に通知する(ステップA2)。本実施の形態1では、上述したように、例として、最初、データベースサーバ22と23とが修復対象のデータベースサーバに割り当てられ、データベースサーバ24と25とが通常対応のデータベースサーバに割り当てられるものとして説明する。
【0047】
また、ステップA2では、クエリ管理部211は、不要領域の修復処理の指示を、修復対象のデータベースサーバ22のデータベース管理部221と、データベースサーバ23のデータベース管理部231とに対して、発行する。
【0048】
また、複数の仮想OSを保有可能な1つのコンピュータ上で仮想化された複数のデータベースサーバが動作し、且つ、各仮想マシンのCPUやメモリ等のリソースを動的に別の仮想マシンに移行できる技術が知られている。この技術を本実施の形態1に適用すれば、修復対象の仮想データベースサーバのCPUやメモリのリソースの一部を、通常対応の仮想データベースサーバに移行することができ、運用中のデータベースシステム全体としての性能低下を抑制することができる。
【0049】
次に、修復処理の指示を受けたデータベース管理部221(又は231)は、修復対象のデータベースそれぞれのデータを格納している全てのページに対して完全修復操作を実行する(ステップA3)。ここで、ステップA3における修復操作を、図4に基づいて説明する。
【0050】
図4に示すように、空き領域を有する連続したページ3及びページ4が存在しているとする。ページ3及び4に対しては、修復処理が未だ行われておらず、これらは解放前の状態にある。ページ3には、ページ管理情報31と、タプルデータ321〜325とが存在している。また、タプルデータ321〜325のうち、有効タプルデータは321と324とであり、削除可能タプルデータは322、323、及び325である。
【0051】
同様に、ページ4には、ページ管理情報31と、タプルデータ421〜425とが存在している。また、タプルデータ421〜425のうち、有効タプルデータは422、423、及び424であり、削除可能タプルデータは421と425とである。
【0052】
そして、解放前のページ3とページ4とに対して修復処理(完全修復操作)を行い、得られたページが、空き領域解放後のページ5となる。具体的には、データベース管理部は、有効タプルデータ321及び324を、順に、後方に向けて詰めていく操作を実行する。図4の例では、タプルデータ321が最も後方にあるので、タプルデータ324をその後方に向けて移動させ、その位置をページ5のタプルデータ522の位置とする。
【0053】
更に、管理情報31において、削除タプルデータ332、333、及び335のタプル情報は無効化され、管理情報31は、ページ管理情報51に書き換えられる。その後、ページ4の有効タプルデータであるタプルデータ422、423、及び424が、ページ5に書き込まれ、不要となったページ4が削除される。
【0054】
つまり、図4の例では、タプルデータ321がタプルデータ521と等しくなり、タプルデータ324がタプルデータ522と等しくなる。また、タプルデータ422がタプルデータ523と等しくなり、タプルデータ423がタプルデータ524と等しくなり、更にタプルデータ424がタプルデータ525と等しくなる。この結果、有効なタプルのみがページ5に残る。そして、ページ4が削減されて、記憶装置の記憶領域にデータ領域を確保することができる。本実施の形態では、修復処理は、このような手順によって行なわれる。
【0055】
また、上述のステップA3と平行して、又はステップA3の実行後に、クエリ管理部211が、データベースクライアント1から、検索や更新等の操作要求を受け取った場合は、ステップBが実行される。ステップBでは、クエリ管理部211は、通常対応のデータベースサーバのデータベース管理部241(又は251)に対して操作を発行する。なお、データベースクライアント1からの操作要求が、更新処理である場合は、不要領域修復管理部212は、更新命令をプールする。ステップBの詳細は、図5を用いて後述する。
【0056】
次に、修復対象データベースサーバにおいて修復処理が完了すると、その情報が、クエリ管理部211へ返却される。更に、ステップA2で対象となったデータベースサーバの修復処理が全て完了すると、クエリ管理部211は、不要領域修復管理部212に対して、対象となっていたデータベースサーバにおいて修復処理が完了したことを通知する(図3のステップA4)。
【0057】
次に、不要領域修復管理部212は、修復処理の完了の通知を受けると、ステップBにおいてプールしていた更新処理をクエリ管理部211に対して発行する(ステップA5)。そして、クエリ管理部211は、不要領域の修復処理が完了したデータベースのデータ
ベース管理部221及び231に対して、更新命令を発行する。
【0058】
次に、データベース管理部221及び231は、クエリ管理部211が発行した更新命令に従い、対応する記憶部が構成するデータベースの更新を実行する(ステップA6)。そして、このステップA5〜ステップA6までの処理は、プールされていた更新命令の分だけ繰り返し行われる。これにより、ステップBによって発生した、修復対象のデータベースサーバ22及び23と通常対応のデータベースサーバ24及び25との差分が、埋められて行くこととなる。
【0059】
なお、ステップA5〜ステップA6の間に、更に新しい問合せがデータベースクライアント1からクエリ管理部211に発行された場合は、クエリ管理部211は、後述するステップBと同様の操作を実行する。
【0060】
そして、ステップA5〜ステップA6までの処理の繰り返しにより、全ての差分の反映が終了すると、不要領域修復管理部212は、修復対象のデータベースサーバと通常対応のデータベースサーバとの役割を入れ替えるため、割り当てを変更し、未だ不要領域の修復処理が行われていない未修復のデータベースサーバに対して、不要領域の修復処理を実行する(ステップA7)。
【0061】
ステップA7の実行後、全てのデータベースサーバに対する不要領域の修復処理は終了する。なお、ステップA1〜A7の動作では、修復処理中において、更新処理による不要領域が発生する可能性があるが、データベース全体としては、殆どの不要領域が修復され、大幅なページの削減が可能となる。
【0062】
ここで、図3に示されたステップBについて図5に基づいて具体的に説明する。図5は、図3に示したステップBを具体的に示すアクティビティ図である。なお、図5の例においても、図3の例と同様に、修復対象のデータベースサーバとしてデーベースサーバ22及び23が割り当てられ、通常対応のデータベースサーバとしてデータベースサーバ24及び25が割り当てられているとする。
【0063】
また、図5に示すステップBによるデータベース操作受付処理は、不要領域の修復処理が完了し、修復対象のデータベースサーバと通常対応のデータベースサーバとの差分が解消され同期が完了(図3のステップA5〜A6の繰り返しが終了)した時点で終了となる。
【0064】
先ず、図5に示すように、クエリ管理部211は、上記の差分が解消するまでの間、データベースクライアント1からのデータベース操作を受け付ける(ステップB1)。次に、データベースクライアント1から操作要求が発行されると、クエリ管理部211は、操作内容の検証を行う(ステップB2)。
【0065】
次に、ステップB2の検証の結果、操作の種類が検索処理であった場合は、クエリ管理部211は、通常対応のデータベースサーバの中で負荷の低いデータベースサーバ(ここでは24だとする)のデータベース管理部に対して、検索命令を発行する(ステップB3)。
【0066】
次に、検索命令を受けたデータベースサーバのデータベース管理部(ここでは、データベース管理部241)は、検索処理を実行する(ステップB4)。そして、データベース管理部は、検索処理の結果を、クエリ管理部211へ送信する(ステップB5)。その後、クエリ管理部211は、受け取った検索結果を、そのままデータベースクライアント1に送信する(ステップB6)。
【0067】
また、ステップB2の検証の結果、操作の種類が更新処理であった場合は、クエリ管理部211は、通常対応のデータベースサーバ24及び25と不要領域修復管理部212とに更新命令を発行する(ステップB7)。この時、不要領域修復管理部212は、更新命令を受け付けた順に保持する。
【0068】
また、更新命令を受け取ったデータベース管理部241及び242は、それぞれ更新処理を解釈し、それぞれの対応する記憶装置242(又は243)に記録されているデータベースを更新する(ステップB8)。
【0069】
次に、更新処理が終了すると、データベース管理部241及び242は、それぞれクエリ管理部211に結果を送信する(ステップB9)。また、クエリ管理部211は全ての正常結果を受信したことを確認すると(ステップB11)、上述の検索処理の場合と同様に、データベースクライアント1に結果を返却する(ステップB6)。更に、クエリ管理部211は、更新件数を、不要領域修復管理部212に通知する。
【0070】
ここで、図5中に示されたステップC(例外処理)について説明する。上述したステップB1では、複数のデータベースクライアント1からデータベース操作が入力され、大量の操作処理を受け付けなければならない場合が想定される。一方、不要領域の修復処理中はデータベースとして運用されているサーバの台数は通常よりも少なくなっている。このため、データベースの検索処理性能も同様に通常よりも低下してしいる。
【0071】
よって、ある程度までのデータベース操作であれば、既に述べたデータベースの検索処理や更新処理によって、データベースの性能低下を抑制することによって対応可能であるが、大量の検索処理等が要求された場合は、データベースとしてのレスポンス低下が懸念される。また、本実施の形態1を実施する際において、データベースに高い負荷がかかる状況は避けるべきではあるが、運用上確実に回避できない場合も想定される。
【0072】
そこで、本実施の形態1においては、データベースクライアントからの操作要求に対して一定の閾値を設け、それ以上(又はそれを超える)のデータベース操作要求が来た場合は、不要領域の修復処理を中断することとしている。そして、この場合は、中断するまでに発生したデータベースへの更新差分の同期処理が即座に適用され、その後、通常運用に戻ることで、処理能力が低下した状態は回避される。
【0073】
但し、このような処理を採用する場合は、更新差分の同期処理自体が大量にある事態も想定され、更に状況を悪化させる可能性がある。よって、このような事態の発生を回避するため、更新差分の発生量にも閾値を設け、それを上回る場合にも、同様に、不要領域の修復処理が中断されるようにするのが好ましい。
【0074】
また、修復処理を中断させるデータベースサーバの台数は、複数の閾値を設定し、閾値毎に変化させても良い。つまり、更新差分の発生量に応じて、1台ずつ順に処理を中断させても良いし、全てのデータベースサーバに対して一度に中断させても良い。なお、不要領域の修復処理では、データの移動が行われているにすぎず、修復処理自体が途中で中断されても、データベースサーバは、直ぐにデータベースとしての利用が可能な状態である。
【0075】
次に、図6を用いて、図5に示したステップC(例外処理)の内容を具体的に説明する。図6は、図5に示したステップCを具体的に示すアクティビティ図である。図6に示すステップは、上記の説明の通り、データベースクライアント1からの操作要求(接続要求)の要求量又は要求件数(例えば、データベース更新の件数)が、それぞれに設定されて
いる閾値を超えた場合に開始される。
【0076】
最初に、図6に示すように、クエリ管理部211は、閾値に対応させた修復対象のデータベースサーバのデータベース管理部に対して、不良領域の修復処理の中断を指示する命令(修復中断命令)を発行し、これを送信する(ステップC1)。
【0077】
次に、修復中断命令を受けたデータベース管理部は、修復処理を即時終了させて(ステップC2)、停止完了をクエリ管理部211に報告する(ステップC3)。次に、クエリ管理部211は、終了報告を確認後、ステップB7と同様に、不要領域修復管理部212によってプールされていた更新命令を、再度、対象のデータベース管理部に対して発行する。(ステップC4)。
【0078】
次に、更新命令を受けたデータベース管理部は、更新操作を実行し(ステップC5)、結果を、クエリ管理部211に送信する(ステップC6)。クリエ管理部211は、結果を受信する(ステップC7)。ステップC5〜C7が繰り返され、全ての更新命令が完了すると、不要領域修復管理部212は、ステップA7と同様に、対象のデータベースサーバの割り当てを修復対象のデータベースサーバから通常対応のデータベースサーバへと変更する(ステップC8)。これにより、通常対応のデータベースサーバが増加する。
【0079】
また、本実施の形態1におけるプログラムは、コンピュータに、図2に示すステップS1〜S4、具体的には、ステップA1、A2、A5、A7、B1、B2、B3、B6、B7、B11、C1、C4、C7、C8を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することにより、本実施の形態1における管理装置及びデータベース管理方法を実現することができる。また、この場合、コンピュータのCPU(central processing unit)は、クエリ管理部211、不要領域修復管理部212として機能し、処理を行なう。
【0080】
以上のように、本実施の形態1によれば、データベースが多重化されたデータベース管理システムにおいては、修復対象のデータベースと通常運用のデータベースとに分けて処理が行われる。よって、上述したように、不要領域の修復に関わる排他処理の時間は縮小される。そして、データベースにおいて不要領域の修復処理を実行しながら、データベースクライアントからの検索や更新といった通常の操作要求を受け、これらの処理を実行することができる。
【0081】
また、修復対象のデータベースと通常運用のデータベースとの間に生じる差分は、不要領域修復管理部212によって管理され、不要領域の修復が完了すると適用される。更に、差分を適用する際において、通常運用のデータベースが停止されることはない。このため、本実施の形態1では、データベースクライアントからの更新処理を止めること無く、差分の適用を行うことができる。
【0082】
更に、本実施の形態1では、図5及び図6においてステップCで示したように、データベースクライアント1からの操作要求に応じて、データベースの性能が低下しないよう、自動的に不要領域の修復処理が中断される。このため、本実施の形態1は、データベースクライアント1の台数の増加や操作要求の増加にも対応することができる。
【0083】
また、複数の仮想OS上でデータベースシステムを構築している場合では、CPUやメモリのリソースを動的に移行して通常対応データベースサーバの性能を向上させることにより、データベースサーバが少なくなることによる検索性能低下を補うことが可能となる。これは不要領域処理が記憶装置への負荷が高く、比較的CPUやメモリのリソースは必要としないことを利用したものである。この技術を本実施の形態1に適用すれば、上述し
たように、運用中のデータベースシステム全体の性能低下を抑制することができる。
【0084】
(実施の形態2)
次に本発明の実施の形態2における、管理装置、データベース管理方法、及びプログラムについて説明する。但し、本実施の形態2における管理装置及びそれを備えるデータベース管理システムの構成は、実施の形態1において図1に示した管理装置及びデータベース管理システムの構成と同様である。
【0085】
本実施の形態2は、管理装置及びデータベースサーバにおける一部の処理が、実施の形態1におけるこれらの処理と異なっている。つまり、実施の形態1では、不要領域の修復処理の終了後に、データベースクライアントからの操作は受け付けたまま、修復対象のデータベースに対して更新命令が発行され、更新差分の適用が行われている。但し、この方式では、通常対応のデータベースの更新完了日時と修復対象のデータベースの更新日時とに幾らかの差異が生じることがあり、データベースによっては、差異の解消が求められる場合がある。このため、本実施の形態2においては、実施の形態1と異なる処理が行われる。
【0086】
本実施の形態2における処理について、図7及び図8を用いて以下に説明する。図7は、本発明の実施の形態2の管理装置によって構成されたデータベース管理システムにおけるアクティビティの変化を示すアクティビティ図である。図8は、図7に示したステップB10に含まれる処理を具体的に示すアクティビティ図である。
【0087】
図7に示されたステップのうち、実施の形態1で用いた図3に示された符号が付されたステップは、当該符号が付された図3のステップと同一ステップである。つまり、図7において、ステップA1〜A4及びA7は、実施の形態1におけるステップA1〜A4及びA7と同様に、クエリ管理部211、不要領域修復管理部212、データベース管理部221、231、241、251によって実行される。
【0088】
一方、図7に示されたステップB10は、図3に示されたステップBとは、例外処理(図5及び図6に示すステップC)の点で異なっている。本実施の形態2においては、後述するように、例外処理は、図8に沿って実行される。図8に示す処理については後述する。また、ステップD1〜D4は、本実施の形態2に特有のステップである。以下に、ステップD1〜D4について説明する。
【0089】
なお、以下の説明では、実施の形態1で用いた図1を適宜参酌する。また、本実施の形態2においても、実施の形態1と同様に、最初に、データベースサーバ22及び23が修復対象のデータベースサーバに割り当てられ、データベースサーバ24及び25が通常対応のデータベースサーバに割り当てられているとする。
【0090】
図7に示すように、不要領域の修復処理が行われている間、クエリ管理部211は、データベースクライアント1からの検索や更新といった操作の受付を保留にし、不要領域修復管理部212に、これらをプールさせる(ステップD1)。
【0091】
次に、クエリ管理部211は、通常対応のデータベースのデータベース管理部241及び251に対して、ジャーナルの転送命令を発行する。データベース管理部241及び251は、転送命令を受信すると、修復対象のデータベースのデータベース管理部221及び231にデータベースの更新情報であるジャーナルを転送する(ステップD2)。なお、通常対応のデータベースの台数より修復対象のデータベースの台数が多い場合は、ジャーナルの転送が早く終わったデータベースが、更に残りの修復対象のデータベースへジャーナルを転送する。
【0092】
次に、クエリ管理部211は、ジャーナルの転送が完了した修復対象のデータベースサーバのデータベース管理部に対して、ジャーナルによる差分の適用を指示し、実行させる(ステップD3)。
【0093】
ステップD3により、全ての差分更新(差分の適用)が完了すると、全てのデータベースの同期が取れた状態となる。そこで、クエリ管理部211は、保留していたデータベース操作を各データベースサーバに指示するため、これらを受け付けた順番で、その内容に従い、各データベースサーバに対して操作要求を発行する(ステップD4)。
【0094】
その後、実施の形態1と同様に、不要領域修復管理部212は、修復対象のデータベースサーバと通常対応のデータベースサーバとの役割を入れ替え、未だ不要領域の修復処理が行われていないデータベースサーバに対して、不要領域の修復処理を実行する(ステップA7)。
【0095】
次に、図8を用いて、ステップB10に含まれる例外処理について説明する。図8に示されたステップのうち、実施の形態1で用いた図6に示された符号が付されたステップは、当該符号が付された図6のステップと同一ステップである。つまり、図8において、ステップC1〜C3及びC8は、実施の形態1におけるステップC1〜C3及びC8と同様に、クエリ管理部211、不要領域修復管理部212、データベース管理部221、231、241、251によって実行される。
【0096】
一方、ステップE1〜E4は、本実施の形態2に特有のステップである。以下に、ステップE1〜E4について説明する。また、以下の説明においても、適宜図1を参酌する。
【0097】
先ず、図8に示すように、修復処理の中断が完了すると、図7に示したステップD1と同様、クエリ管理部211は、データベースクライアント1からの検索や更新といった操作の受付を保留にし、不要領域修復管理部212に、これらをプールさせる。(ステップE1)。
【0098】
次に、クエリ管理部211は、通常対応のデータベースのデータベース管理部241及び251に対して、ジャーナルの転送命令を発行する。データベース管理部241及び251は、ステップD2と同様、転送命令を受信すると、修復処理を停止している修復対象のデータベースのデータベース管理部221及び231にデータベースの更新情報であるジャーナルを転送する(ステップE2)。
【0099】
次に、クエリ管理部211は、ステップD3と同様に、ジャーナルの転送が完了した修復対象のデータベースサーバのデータベース管理部に対して、ジャーナルによる差分の適用を指示し、実行させる(ステップE3)。
【0100】
次に、全ての差分更新が完了すると、クエリ管理部211は、ステップD4と同様に、保留していたデータベース操作を各データベースサーバに指示するため、これらを受け付けた順番で、その内容に従い、各データベースサーバに対して操作要求を発行する(ステップE4)。
【0101】
その後、不要領域修復管理部212は、図6の例と同様に、対象のデータベースサーバの割り当てを、修復対象のデータベースサーバから通常対応のデータベースサーバへと変更する(ステップC8)。これにより、通常対応のデータベースサーバが増加する。
【0102】
このように、本実施の形態2では、実施の形態1と異なり、通常対応のデータベースサ
ーバから、その更新内容を含むジャーナルが、修復対象のデータベースサーバに対して送信され、ジャーナルを用いて更新が行われる。
【0103】
よって、本実施の形態2によれば、通常対応のデータベースの更新完了日時と修復対象のデータベースの更新日時とに差異が生じるのを抑制できる。このため、データベースクライアントからの更新処理の要求に、更新日時に関係する内容が含まれていても、修復対象のデータベースと通常対応のデータベースの同期を取ることが可能となる。本実施の形態2は、更新時に全てのデータベースサーバが更新結果をクエリ管理部211に送信することを利用している。データベース間の更新日時は完全とは言わないまでもほぼ同時刻となる。また、本実施の形態2においても、実施の形態1で述べた効果は全て得ることができる。
【産業上の利用可能性】
【0104】
以上のように、本発明は、データベース管理システム、特には、データベースサーバが多重化された、追記型データベース管理システムに有効である。本発明は、産業上の利用可能性を有している。
【符号の説明】
【0105】
1 データベースクライアント
2 データベース管理システム
3 ページ(解放前)
4 ページ(解放前)
5 ページ(解放後)
21 管理装置
22 データベースサーバ
23 データベースサーバ
24 データベースサーバ
25 データベースサーバ
31 ページ管理情報
41 ページ管理情報
51 ページ管理情報
211 クエリ管理部
212 不要領域修復管理部
221 データベース管理部
222 記憶装置
231 データベース管理部
232 記憶装置
241 データベース管理部
242 記憶装置
251 データベース管理部
252 記憶装置
321〜325 タプルデータ
421〜425 タプルデータ
521〜525 タプルデータ

【特許請求の範囲】
【請求項1】
多重化された複数のデータベースサーバを備えたデータベース管理システムを構成する管理装置であって、
前記複数のデータベースサーバそれぞれにおける不要領域の修復処理を管理する不要領域修復管理部を備え、
前記不要領域修復管理部は、前記複数のデータベースサーバそれぞれにおいて不要領域の修復処理が必要となると、一部の前記データベースサーバに、先に前記修復処理を実行させ、その後、残りの前記データベースサーバに、前記修復処理を実行させる、
ことを特徴とする管理装置。
【請求項2】
前記複数のデータベースサーバそれぞれに対する外部からの操作要求を管理し、これらに対して前記処理を指示するクエリ管理部を更に備え、
前記クエリ管理部は、いずれかの前記データベースサーバが前記修復処理を実行している間に、外部から操作要求があった場合に、前記修復処理を実行していない前記データベースサーバに、要求のあった前記処理を実行させる、請求項1に記載の管理装置。
【請求項3】
前記クエリ管理部は、前記外部からの操作要求として、前記複数のデータベースサーバの更新が要求された場合に、
前記修復処理を実行してない前記データベースサーバに対しては、前記更新を実行させ、前記修復処理を実行している前記データベースサーバに対しては、前記不要領域修復管理部の指示に応じて、前記修復処理の終了後に、前記更新を実行させる、
請求項2に記載の管理装置。
【請求項4】
前記クエリ管理部は、前記外部からの操作要求の要求量または要求件数が、設定された閾値を超えた場合又は前記閾値以上となった場合に、
前記修復処理を実行している前記データベースサーバに対して、前記修復処理を中断させる、請求項2または3に記載の管理装置。
【請求項5】
前記クエリ管理部が、
前記更新の実行が終了した前記データベースサーバに対して、前記更新の内容を含むジャーナルを、前記更新を実行していない前記データベースサーバに向けて送信させ、
前記更新を実行していない前記データベースサーバに対して、前記ジャーナルを用いて前記更新を実行させる、
請求項3に記載の管理装置。
【請求項6】
多重化された複数のデータベースサーバを備えたデータベース管理システムにおいてデータベースの管理を行うための方法であって、
(a)前記複数のデータベースサーバそれぞれにおいて不要領域の修復処理が必要となった場合に、一部の前記データベースサーバに、先に前記修復処理を実行させるステップと、
(b)前記(a)のステップの実行後に、残りの前記データベースサーバに、前記修復処理を実行させるステップと、
を有することを特徴とするデータベース管理方法。
【請求項7】
(c)いずれかの前記データベースサーバが前記修復処理を実行している間に、前記複数のデータベースサーバそれぞれに対して、外部から操作が要求されているかどうかを判定するステップと、
(d)前記(c)のステップで、外部から前記操作が要求されていると判定された場合に、前記修復処理を実行していない前記データベースサーバに、要求のあった前記処理を実
行させるステップとを、
更に有する請求項6に記載のデータベース管理方法。
【請求項8】
前記(d)のステップにおいて、
前記外部からの操作要求として、前記複数のデータベースサーバの更新が要求された場合に、
前記修復処理を実行してない前記データベースサーバに対しては、前記更新を実行させ、前記修復処理を実行している前記データベースサーバに対しては、前記不要領域修復管理部の指示に応じて、前記修復処理の終了後に、前記更新を実行させる、請求項7に記載のデータベース管理方法。
【請求項9】
(e)前記外部からの操作要求の要求量または要求件数が、設定された閾値を超えているか、又は前記閾値以上となっているかどうかを判定する、ステップと、
(f)前記(e)のステップで前記閾値を超えている、又は前記閾値上となっていると判定された場合に、前記修復処理を実行している前記データベースサーバに対して、前記修復処理を中断させる、ステップとを、
更に有する、請求項7または8に記載のデータベース管理方法。
【請求項10】
(g)前記更新の実行が終了した前記データベースサーバに対して、前記更新の内容を含むジャーナルを、前記更新を実行していない前記データベースサーバに向けて送信させる、ステップを更に有し、
前記(d)のステップにおいて、前記更新を実行していない前記データベースサーバに対して、前記ジャーナルを用いて前記更新を実行させる、
請求項8に記載のデータベース管理方法。
【請求項11】
多重化された複数のデータベースサーバを備えたデータベース管理システムにおいて、コンピュータに、データベースの管理を行わせるためのプログラムであって、
前記コンピュータに、
(a)前記複数のデータベースサーバそれぞれにおいて不要領域の修復処理が必要となった場合に、一部の前記データベースサーバに、先に前記修復処理を実行させるステップと、
(b)前記(a)のステップの実行後に、残りの前記データベースサーバに、前記修復処理を実行させるステップと、
を実行させることを特徴とするプログラム。
【請求項12】
(c)いずれかの前記データベースサーバが前記修復処理を実行している間に、前記複数のデータベースサーバそれぞれに対して、外部から操作が要求されているかどうかを判定するステップと、
(d)前記(c)のステップで、外部から前記操作が要求されていると判定された場合に、前記修復処理を実行していない前記データベースサーバに、要求のあった前記処理を実行させるステップとを、
更に前記コンピュータに実行させる請求項11に記載のプログラム。
【請求項13】
前記(d)のステップにおいて、
前記外部からの操作要求として、前記複数のデータベースサーバの更新が要求された場合に、
前記修復処理を実行してない前記データベースサーバに対しては、前記更新を実行させ、前記修復処理を実行している前記データベースサーバに対しては、前記不要領域修復管理部の指示に応じて、前記修復処理の終了後に、前記更新を実行させる、請求項12に記載のプログラム。
【請求項14】
(e)前記外部からの操作要求の要求量または要求件数が、設定された閾値を超えているか、又は前記閾値以上となっているかどうかを判定する、ステップと、
(f)前記(e)のステップで前記閾値を超えている、又は前記閾値上となっていると判定された場合に、前記修復処理を実行している前記データベースサーバに対して、前記修復処理を中断させる、ステップとを、
更に前記コンピュータに実行させる、請求項12または13に記載のプログラム。
【請求項15】
(g)前記更新の実行が終了した前記データベースサーバに対して、前記更新の内容を含むジャーナルを、前記更新を実行していない前記データベースサーバに向けて送信させる、ステップを更に前記コンピュータに実行させ、
前記(d)のステップにおいて、前記更新を実行していない前記データベースサーバに対して、前記ジャーナルを用いて前記更新を実行させる、
請求項13に記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate