(57)【要約】  【課題】本発明は、パーティショニングにより複数のパーティションに分割されたデータベースにおいて、分割されたパーティション毎の障害情報を管理することにより、パーティション単位のアクセス許可あるいは禁止をすることを課題とする。  【解決手段】複数のパーティションに分割された記憶領域へのアクセス制御方法であって、各パーティションにアクセスして正常か否かを状態保有部に保存する状態検出ステップと、前記記憶領域へのデータ更新要求を受けた場合に、前記状態保有部を参照して要求にかかるパーティションの状態を確認する状態確認ステップと、前記パーティションの状態が正常である場合にのみ前記要求にかかる処理を実行するデータ更新ステップとを含むことを特徴とするアクセス制御方法。【選択図】図１
2009217768.tif 000002
【特許請求の範囲】
【請求項１】
複数のパーティションに分割された記憶領域へのアクセス制御方法であって、
各パーティションにアクセスして正常か否かを状態保有部に保存する状態検出ステップと、前記記憶領域へのデータ更新要求を受けた場合に、前記状態保有部を参照して要求にかかるパーティションの状態を確認する状態確認ステップと、前記パーティションの状態が正常である場合にのみ前記要求にかかる処理を実行するデータ更新ステップとを含むことを特徴とするアクセス制御方法。
【請求項２】
請求項１に記載の方法において、前記状態検出ステップは定期的に実行され、前記状態保有部には最新の検出状態が保存されることを特徴とするアクセス制御方法。
【請求項３】
請求項１または２に記載の方法において、前記状態確認ステップは、前記記憶領域に格納されるデータがどのパーティションに存在するかを示す対応テーブルを参照して前記要求にかかるデータに対応するパーティションを導出し、当該パーティションの状態を確認することを特徴とするアクセス制御方法。
【請求項４】
複数のパーティションに分割された記憶領域を具える記憶装置において、
各パーティションにアクセスして正常か否かを状態保有部に保存する監視手段と、データ更新要求を受けた場合に前記状態保有部を参照して要求にかかるパーティションの状態を確認する状態情報参照手段とを具え、
当該パーティションの状態が正常である場合にのみ前記要求にかかる処理を実行することを特徴とする装置。
【請求項５】
請求項４に記載の装置において、前記監視手段は、定期的に各パーティションへのアクセスを実行して前記状態保有部を更新することを特徴とする装置。
【請求項６】
請求項４または５に記載の装置において、さらに、前記記憶領域に格納されるデータがどのパーティションに存在するかを示す対応テーブルを具えるとともに、前記状態情報参照手段は、前記対応テーブルを参照して前記更新要求にかかるデータに対応するパーティションを特定し状態確認することを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースにおけるパーティション障害管理方法およびシステムに関する。特に、パーティショニングにより複数のパーティションに分割されたデータベースにおけるパーティション障害管理方法およびシステムに関する。
【背景技術】
【０００２】
データベースの可用性、管理性、および問い合わせのレスポンスを向上させるために、１のデータベーステーブルのデータを複数の論理的なデータの集合であるパーティションに分割するパーティショニングというデータ分割手法が知られている。このパーティショニングにより分割された複数のパーティションは、それぞれ別のディスクあるいは論理ボリュームに割り当てることができ、特定のパーティションを破損した場合でも、他の正常なパーティションへのアクセスやデータの更新等が継続して行うことができる。
【０００３】
しかしながら、テーブルがパーティショニングにより複数のパーティションに分割されている場合でも、このテーブルは、クライアントアプリケーションからは１のテーブルとして見えているだけであり、クライアントアプリケーションは、どのようなパーティションが存在するのか認識することができない。このため、クライアントアプリケーションは、パーティションの状態を個別に認識することができず、一部のパーティションに障害が生じても、テーブル全体が正常であるか、あるいはテーブル全体がエラーであるかしか認識できない。パーティショニングの利点は、特定のパーティションに障害が発生しても、他の正常なパーティションが存在する限り、他のパーティションに対しては処理を継続できることである。したがって、この利点を生かすためには、特定のパーティションに障害が発生している場合であっても、他の正常なパーティションへのアクセスを可能にするために、クライアントアプリケーションは、テーブル全体が正常であるとして処理を継続する必要がある。しかしながら、特定のパーティションに障害が発生しているにも拘わらずテーブル全体が正常であるとしてしまうと、障害が発生しているパーティションに複数のトランザクションによる多重アクセスが生じる恐れがある。この場合には、エラーメッセージが繰り返し発生してしまい、他の重要なメッセージが埋もれてしまうという問題がある。
【０００４】
このような問題に対応すべく、障害の発生したデータを含むブロック領域へのアクセスを禁止するファイル閉塞制御方式が開示されている（例えば、特許文献１）。このファイル閉塞制御方式は、障害が発生したデータのアドレスをメモリに記憶しておき、データへアクセス要求があった場合に、アクセスを要求されているデータのアドレスが前記メモリに格納されているか確認し、このアドレスが格納されているときは、当該アドレスへのアクセス要求を拒否する。
【特許文献１】特開昭６０−２５８６５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、この方式では、障害のあるデータアドレスへのアクセスを禁止するのみであり、パーティション単位でアクセスを許可あるいは禁止することはできない。また、この方式は、データ領域の障害情報を監視していないため、クライアントアプリケーションが、いずれのメモリへのアクセスが禁止されているのか認識できず、また、データ領域の障害が解消されたことを認識することできない。
【０００６】
したがって、本発明は、パーティショニングにより複数のパーティションに分割されたデータベースにおいて、分割されたパーティション毎の障害情報を管理することにより、パーティション単位のアクセス許可あるいは禁止することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、複数のパーティションに分割された記憶領域へのアクセス制御方法であって、各パーティションにアクセスして正常か否かを状態保有部に保存する状態検出ステップと、前記記憶領域へのデータ更新要求を受けた場合に、前記状態保有部を参照して要求にかかるパーティションの状態を確認する状態確認ステップと、前記パーティションの状態が正常である場合にのみ前記要求にかかる処理を実行するデータ更新ステップとを含むことを特徴とする。
【０００８】
また、前記状態検出ステップは定期的に実行され、前記状態保有部には最新の検出状態が保存されることを特徴とする。
【０００９】
さらに、前記状態確認ステップは、前記記憶領域に格納されるデータがどのパーティションに存在するかを示す対応テーブルを参照して前記要求にかかるデータに対応するパーティションを導出し、当該パーティションの状態を確認することを特徴とする。
【発明の効果】
【００１０】
本発明は、複数のパーティションに分割された記憶領域へのアクセス制御方法であり、各パーティションにアクセスして正常か否かを状態保有部に保存し、前記記憶領域へのデータ更新要求を受けた場合に、前記記憶領域に格納されるデータがどのパーティションに存在するかを示す対応テーブルを参照して前記要求にかかるデータに対応するパーティションを導出し、当該パーティションの状態を確認し、前記パーティションの状態が正常である場合にのみ前記要求にかかる処理を実行するため、パーティション単位でアクセス許可あるいは禁止することができる。
【００１１】
また、本発明は、前記状態検出が定期的に実行され、前記状態保有部には最新の検出状態が保存されるため、ほぼリアルタイムで記憶領域の状態を確認することができ、障害の発生および復旧に迅速に対応できる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明を実施するための最良の形態について、添付の図面を参照しながら詳細に説明する。
【００１３】
図１は、本発明にかかるデータベースの障害管理システムの全体構成を示す概略図である。本図には、パーティション状態監視装置１０と、クライアントアプリケーション２０と、データベースノード３０とが示されている。このシステムは、例えば、ネットワークに接続されたデータサーバであり、クライアントアプリケーション２０が、クライアントＰＣからデータの処理要求を受け付け、データベースノード３０のディスク３３に対し処理を行うものである。パーティション状態監視装置１０は、データベースノード３０から監視情報を収集する監視情報登録部１１と、監視情報登録部１１が収集した情報を保持する情報保有部１２と、予め定義されたパーティション情報を保持するパーティション定義保有部１３と、クライアントアプリケーション２０がパーティションの状態を参照するための状態情報参照部１４とを備えている。
【００１４】
図２は、データベースノード３０の監視部３１をより詳細に示した図である。データベースノード３０は、監視部３１と、データベース３２とを備えており、このデータベース３２は、障害監視用テーブル３２１と、業務用テーブル３２２とを備えている。監視部３１は、データベース３２の障害監視用テーブル３２１を参照してパーティション障害が発生しているか判断する判断手段３１２と、当該判断手段３１２の判断結果を、パーティション状態監視装置１０の監視情報登録部１１に送信する通信手段３１１とを備えている。
【００１５】
図３は、データベースノード３０のデータベース３２が備える障害監視用テーブル３２１および業務用テーブル３２２と、ディスク３３との関係を示す図である。本図に示すように、本実施例では５つのディスクを使用しているため、これらのディスクに対応するように障害監視用テーブル３２１を５つのパーティション３２１１乃至３２１５に分割する。本実施例では、パーティションを物理的なディスク単位で割り当てているが、代替的に論理ボリューム単位で割り当ててもよい。また、業務用テーブル（Ａ）３２２ａは、４つのディスク３３１乃至３３４に割り当てられ、業務用テーブル（Ｂ）３２２ｂは、２つのディスク３３４および３３５に割り当てられている。
【００１６】
図４は、障害監視用テーブル３２１の定義例を示しており、図５は、この定義例による障害監視用テーブル３２１の初期状態を示している。この定義例では、ＩＤ列を主キーに設定し、ＩＤが重複しないようにしている。また、リストパーティションにより、ＩＤ１乃至５の各レコードが、障害監視用テーブル３２１のパーティション３２１１乃至３２１５と一意に対応するように定義されている。これらのパーティションはそれぞれ、ディスク３３１乃至３３５に対応している。これにより、ＩＤ１乃至５の各レコードにＳＱＬ  ＵＰＤＡＴＡ文等を発行し、その結果を確認することにより、パーティション単位で障害の有無を確認することができる。
【００１７】
次に、図６を参照して、本発明の処理動作について説明する。初めに、データベースノード３０内の監視部３１の判断手段３１２が、障害監視用テーブル３２１にＳＱＬ  ＳＥＬＥＣＴ文を発行し（Ａ１）、障害監視用テーブル３２１に格納されたＩＤのリスト（ＩＤ１乃至５）を取得する（Ａ２）。これらのＩＤが障害監視用テーブル３２１の各パーティションおよびディスクに対応する。次に、監視部３１の判断手段３１２は、パーティションの障害の有無を確認すべく、各ＩＤに対応するレコードにＳＱＬ  ＵＰＤＡＴＡ文を発行し（Ａ３）、更新結果を受け取る（Ａ４）。ここで、ＳＱＬ文が正常終了した場合、該当するパーティションは正常であると判断し、ＳＱＬ文が異常終了した場合、該当するパーティションは異常であると判断する。次に、監視部３１の通信手段３１１が、この更新結果をパーティション状態監視装置１０の監視情報登録部１１に送信し（Ａ５）、当該監視情報登録部１１は、この更新結果を状態保有部１２に登録する（Ａ６）。図７は、この状態保有部１２の一例を示す図である。状態保有部１２には、これらの更新結果がＩＤおよびディスク毎に保持される。データベースノード３０の監視部３１は、これらの処理を定期的に、例えば１秒おきに繰り返す。これにより、パーティションの状態が定期的に更新され、パーティション毎の状態をほぼリアルタイムで確認することができる。
【００１８】
次に、図８乃至１０を参照して、パーティション定義保有部１３について説明する。パーティション定義保有部１３は、これらの図に示すように、テーブル／パーティションキー対応テーブル１３１と、業務テーブルＡ用のキー値／ディスク名対応テーブル１３２ａと、業務テーブルＢ用のキー値／ディスク名対応テーブル１３２ｂとを備えている。テーブル／パーティションキー対応テーブル１３１は、図８に示すように、業務テーブルＡおよびＢのパーティションキーが登録されている。業務テーブルＡ用のキー値／ディスク名対応テーブル１３２ａは、図９に示すように、パーティションキー「ｄａｔｅ」の範囲と、これに関連するディスク名とが登録されている。業務テーブルＢ用のキー値／ディスク名対応テーブル１３２ｂは、図１０に示すように、パーティションキー「ＩＤ」の範囲と、これに関連するディスク名とが登録されている。
【００１９】
次に図１１を参照して、クライアントアプリケーション２０が、業務テーブルを更新する処理について説明する。以下の説明では、更新の対象の業務テーブルを「業務テーブルＡ」とし、キー値を「２００７．１．１」とする。
【００２０】
初めに、クライアントアプリケーション２０が、クライアントＰＣ（図示せず）から業務用テーブルの更新要求を受信すると（Ｂ１）、パーティション状態監視装置１０の状態情報参照部１４に、更新の対象であるテーブル名「業務用テーブルＡ」および更新する情報を送信する（Ｂ２）。次に、状態情報参照部１４は、パーティション定義保有部１３のテーブル／パーティションキー対応テーブル１３１を参照して、受信したテーブル名「業務用テーブルＡ」に関連するパーティションキー「ｄａｔｅ」を取得する（Ｂ３）。次に、状態情報参照部１４は、取得したパーティションキー「ｄａｔｅ」と当該キーの値「２００７．１．１」を基に、パーティション保有部１３の業務テーブルＡ用のキー値／ディスク名対応テーブル１３２ａを参照して、該当するディスク名「ディスク３３３」を取得する（Ｂ４）。状態情報参照部１４は、図７に示す状態保有部１２を参照して、「ディスク３３３」の状態情報を取得し（Ｂ５）、この状態情報をクライアントアプリケーション２０に送信する（Ｂ６）。クライアントアプリケーション２０は、状態情報が正常である場合にのみデータベースの更新処理を実施する（Ｂ７）。このように、クライアントアプリケーション２０は、データベース更新処理を行う前にパーティションの状態を確認するため、不必要なデータベースの更新を回避することができる。
【００２１】
ここでは、更新対象のテーブルが１つの場合の処理についてのみ説明しているが、更新対象のテーブルが複数ある場合にはこれらの処理を繰り返し行う。この場合も同様に、更新対象であるパーティションが正常である場合にのみ更新処理を行う。
【００２２】
本発明の好適な実施例を示し説明したが、本発明の目的または特徴から逸脱しない範囲で様々な変更を加えることができる。
【産業上の利用可能性】
【００２３】
本発明は、データベースのパーティショニングを利用しているシステム全般に用いることができる。特に、トランザクション処理件数の多い大規模データベースを有するオンラインシステムに有用である。
【図面の簡単な説明】
【００２４】
【図１】図１は、本発明にかかるデータベースの障害管理システムの全体構成を示す概略図である。
【図２】図２は、データベースノード３０の監視部３１の詳細図である。
【図３】図３は、データベース３２の障害監視用テーブル３２１および業務用テーブル３２２と、ディスク３３とを示す図である。
【図４】図４は、障害監視用テーブル３２１の定義例を示す図である。
【図５】図５は、図４の定義例による障害監視用テーブル３２１の初期状態を示している。
【図６】図６は、本発明の処理動作を示す図である。
【図７】図７は、パーティション状態監視装置１０の状態保有部１２を示す図である。
【図８】図８は、業務テーブルＡおよびＢのパーティションキーを管理するテーブル／パーティションキー対応テーブル１３１を示す図である。
【図９】図９は、パーティションキー値「ｄａｔｅ」の範囲と、これに関連するディスク名を管理する業務テーブルＡ用のキー値／ディスク名対応テーブルを示す図である。
【図１０】図１０は、パーティションキー値「ＩＤ」の範囲と、これに関連するディスク名を管理する業務テーブルＢ用のキー値／ディスク名対応テーブルを示す図である。
【図１１】図１１は、クライアントアプリケーション２０が、業務テーブルを更新する処理を示す図である。
【符号の説明】
【００２５】
１０  パーティション状態監視装置
２０  クライアントアプリケーション
３０  データベースノード
【図１】
2009217768.tif 000003
【図２】
2009217768.tif 000004
【図３】
2009217768.tif 000005
【図４】
2009217768.tif 000006
【図５】
2009217768.tif 000007
【図６】
2009217768.tif 000008
【図７】
2009217768.tif 000009
【図８】
2009217768.tif 000010
【図９】
2009217768.tif 000011
【図１０】
2009217768.tif 000012
【図１１】
2009217768.tif 000013