(57)【要約】      （修正有）【課題】複数のデータベース管理ノードのそれぞれが、割り当てられたデータ領域しかアクセスすることができないデータベースシステムにおいて、参照頻度が高いテーブルの再配置ができない場合にも、増加させたノード数に見合う性能向上を実現する。【解決手段】複数のデータベース管理ノード４ｂ〜４ｄに割り当てられている外部記憶装置９内の参照頻度の高いテーブルを格納したデータ格納領域を、複数のノードから参照可能な共用データ領域１０ｃとして設定し、共用データ領域１０ｃ内の共用テーブル３ｃを任意のノードから任意のタイミングで並列に参照できるよう制御する。これにより、データ領域が割り当てられたノードに負荷が集中することを防止できる。【選択図】      図１
2005339236.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータベース管理ノードのそれぞれが、それぞれのデータベース管理ノードに割り当てられたデータ領域に格納されたテーブルをアクセスするシェアード・ナッシング方式に基づいたデータベース管理方法において、前記複数のデータベース管理ノードに割り当てられたデータ領域に格納されたテーブルのアクセス頻度を参照し、該アクセス頻度が所定値以上の該テーブルについて負荷分散するために該テーブルが割り付けられていない他のデータベース管理ノードから参照可能な共用テーブルとして再設定することを特徴とするデータベース管理方法。
【請求項２】
前記共用テーブルの更新は、共用テーブルが割り当てられたデータベース管理ノードにより行われ、前記共用テーブルの更新が行われるとき、前記共用テーブルを参照可能な全てのデータベース管理ノードは、自ノード内のキャッシュ上のデータの更新を行うことを特徴とする請求項１記載のデータベース管理方法。
【請求項３】
前記複数のデータベース管理ノードのそれぞれに割り当てられたデータ領域内のテーブル及び共用テーブルは、外部記憶装置上の分割したデータ領域毎に設けられ、前記テーブル及び共用テーブルに対応して外部記憶装置にキャッシュが割り当てられており、前記キャッシュは、前記データベース管理ノードから制御されることを特徴とする請求項１記載のデータベース管理方法。
【請求項４】
前記複数のデータベース管理ノードのそれぞれに割り当てられたデータ領域内のテーブル及び共用テーブルの参照状況を監視し、テーブルの参照頻度に応じてそのテーブルを共用テーブルとするか否かを動的に切り替えることを特徴とする請求項１記載のデータベース管理方法。
【請求項５】
複数のデータベース管理ノードのそれぞれが、それぞれのデータベース管理ノードに割り当てられたデータ領域内のテーブルしかアクセスすることができないように構成されるデータベースのデータベース管理方法において、前記複数のデータベース管理ノードに割り当てられたデータ領域内のテーブルの内、参照頻度の高いテーブルを複数のデータベース管理ノードから参照可能な共用テーブルとして設定し、アクセス要求を受けたデータベース管理ノードは、アクセス要求が参照の要求であった場合、要求されたデータが自ノード内のキャッシュにあればキャッシュ上のデータを要求元に返し、キャッシュになければ前記テーブルまたは共用テーブルから要求されたデータを自ノード内のキャッシュに読み込んだ後そのデータを要求元に返し、アクセス要求が更新の要求であった場合、更新が要求されたデータが自ノード内のキャッシュにあればキャッシュ上のデータを更新し、キャッシュになければ前記テーブルまたは共用テーブルから更新が要求されたデータを自ノード内のキャッシュに読み込んだ後そのデータを更新し、さらに、前記テーブルまたは共用テーブルが自ノードに割り当てられたものである場合、前記テーブルまたは共用テーブル上のデータの更新を行うことを特徴とするデータベース管理方法。
【請求項６】
複数のデータベース管理ノードのそれぞれが、それぞれのデータベース管理ノードに割り当てられたデータ領域内のテーブルしかアクセスすることができないように構成されるデータベースシステムにおいて、前記複数のデータベース管理ノードに割り当てられたデータ領域内のテーブルの内、参照頻度の高いテーブルを複数のデータベース管理ノードから参照可能な共用テーブルとして設定することを特徴とするデータベースシステム。
【請求項７】
前記共用テーブルの更新は、共用テーブルが割り当てられたデータベース管理ノードにより行われ、前記共用テーブルの更新が行われるとき、前記共用テーブルを参照可能な全てのデータベース管理ノードは、自ノード内のキャッシュ上のデータの更新を行うことを特徴とする請求項６記載のデータベースシステム。
【請求項８】
前記複数のデータベース管理ノードのそれぞれに割り当てられたデータ領域内のテーブル及び共用テーブルは、外部記憶装置上の分割したデータ領域毎に設けられ、前記テーブル及び共用テーブルに対応して外部記憶装置にキャッシュが割り当てられており、前記キャッシュは、前記データベース管理ノードから制御されることを特徴とする請求項６記載のデータベースシステム。
【請求項９】
前記複数のデータベース管理ノードのそれぞれに割り当てられたデータ領域内のテーブル及び共用テーブルの参照状況を監視する手段を備え、テーブルの参照頻度に応じてそのテーブルを共用テーブルとするか否かを動的に切り替えることを特徴とする請求項６記載のデータベースシステム。
【請求項１０】
複数のデータベース管理ノードのそれぞれが、それぞれのデータベース管理ノードに割り当てられたデータ領域内のテーブルしかアクセスすることができないように構成され、前記複数のデータベース管理ノードに割り当てられたデータ領域内のテーブルの内、参照頻度の高いテーブルを複数のデータベース管理ノードから参照可能な共用テーブルとして設定するデータベースのデータベース管理プログラムであって、
アクセス要求を受けたデータベース管理ノードに、アクセス要求が参照の要求であった場合、要求されたデータが自ノード内のキャッシュにあればキャッシュ上のデータを要求元に返す処理と、キャッシュになければ前記テーブルまたは共用テーブルから要求されたデータを自ノード内のキャッシュに読み込んだ後そのデータを要求元に返す処理と、アクセス要求が更新の要求であった場合、更新が要求されたデータが自ノード内のキャッシュにあればキャッシュ上のデータを更新する処理と、キャッシュになければ前記テーブルまたは共用テーブルから更新が要求されたデータを自ノード内のキャッシュに読み込んだ後そのデータを更新する処理と、前記テーブルまたは共用テーブルが自ノードに割り当てられたものである場合、前記テーブルまたは共用テーブル上のデータの更新を行う処理を実行させることを特徴とするデータベース管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータ処理ノードにおける負荷のアンバランスを改善するデータ処理技術に関する。
【背景技術】
【０００２】
従来、複数のノードで構成されるデータベースシステムのデータへのアクセス方法として、共用データベース・アプローチとシェアード・ナッシング・データベース・アプローチとの２つの方法が、例えば、非特許文献１等に記載されて知られている。
【０００３】
共用データベース・アプローチの方法は、複数のノードのそれぞれが全てのデータに等しくアクセスすることができる。そのため、この方法では、ノード間に均等に負荷を分散させることができる。しかし、この方法は、ノード間における更新同期が必要であり、その際にデータ再読み込みのためのＩ／Ｏ処理や同期制御のためのノード間通信によるオーバヘッドが生じる。
【０００４】
一方、シェアード・ナッシング・データベース・アプローチの方法は、複数のノードのそれぞれが、それぞれのノードに割り当てられたデータ領域しかアクセスすることができないため、データの配置が偏っていると一部のノードに負荷が集中してしまうが、ノード間の同期制御が不要で、各ノードが並列に動作可能である。
【非特許文献１】Ｓｏｈａｎ  ＤｅＭｅｌ著「Ｏｒａｃｌｅ９ｉ  ｒｅａｌ  Ａｐｐｌｉｃａｔｉｏｎ  Ｃｌｕｓｔｅｒｓ  −  Ｃａｃｈｅ  Ｆｕｓｉｏｎ  Ｄｅｌｉｖｅｒｓ  Ｓｃａｌａｂｉｌｉｔｙ、Ａｎ  Ｏｒａｃｌｅ  Ｗｈｉｔｅ  Ｐａｐｅｒ」Ｏｒａｃｌｅ  Ｃｏｒｐｏｒａｔｉｏｎ、２００１年５月、Ｐ．７−９、１２−１３
【発明の開示】
【発明が解決しようとする課題】
【０００５】
前述した従来技術による方法は、どちらの場合も、ノードを増加することによって、ノードにかかる負荷を分散し、性能向上を図ることができる。しかし、共用データベース・アプローチの方法は、ノードを増加してもそれに応じてオーバヘッドも増加するので純粋に増えたノード数分の性能の向上を得ることができないという問題点を有している。また、シェアード・ナッシング・データベース・アプローチの方法でも、増加させたノードの数に応じてデータを適切に再配置する必要があるが、参照頻度が高いテーブルが分割等による再配置を行うことができない場合、そのテーブルを配置したノードに負荷が集中するため、増加させたノード数に見合う性能の向上を図ることがができないという問題点を有している。
【０００６】
共用データベース・アプローチの方法における前述した問題点は、複数のノードから同一のデータをアクセスした場合に同期対象のノードのキャッシュからもう一方のノードのキャッシュにデータを転送することによりコストの高いＩ／Ｏ処理を不要にしてオーバヘッドの増加を少なくするようにして解決することができる。
【０００７】
しかし、シェアード・ナッシング・データベース・アプローチの方法における前述した問題点に対しては、これまで有効な解決手段がなかった。
【０００８】
本発明の目的は、複数のデータベース処理ノードにおける負荷のアンバランスを改善することにある。
【課題を解決するための手段】
【０００９】
本発明によれば前記目的は、複数のデータベース管理ノードのそれぞれが、それぞれのデータベース管理ノードに割り当てられたデータ領域内のテーブルしかアクセスすることができないように構成されるデータベースのデータベース管理方法において、前記複数のデータベース管理ノードに割り当てられたデータ領域内のテーブルの内、参照頻度の高いテーブルを複数のデータベース管理ノードから参照可能な共用テーブルとして設定することにより達成される。
【発明の効果】
【００１０】
本発明によれば、データベース管理ノードにおける負荷のアンバランスを改善することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明によるデータベース管理方法及びデータベースシステムの実施形態を図面により詳細に説明する。
【００１２】
図１は本発明の第１の実施形態によるデータベースシステムの構成例を示すブロック図である。図１において、１はアプリケーションプログラム（業務プログラムやその機能を実現するオブジェクトやプロセス、スレッドでもよい）、２ａは業務ノード、３ｂ〜３ｄはテーブル、４ｂ〜４ｄはデータベース管理ノード、５ａ〜５ｄは主記憶装置、６はデータアクセス要求制御部（プログラムやその機能を実現するオブジェクトやプロセス、スレッド、ハードウェアでもよい）、７ｂ〜７ｄはデータアクセス制御部（プログラムやその機能を実現するオブジェクトやプロセス、スレッド、ハードウェアでもよい）、８ｂ〜８ｄはキャッシュ、９は外部記憶装置、１０ｂ〜１０ｄはデータ領域（データ格納領域あるいはデータ記憶領域ともいう）、１１はテーブル情報、１２ａ〜１２ｄはテーブル情報制御部（プログラムやその機能を実現するオブジェクトやプロセス、スレッド、ハードウェアでもよい）である。本発明の第１の実施形態として説明するデータベースシステムは、複数のデータベース管理ノードのそれぞれが、それぞれのノードに割り当てられたデータ領域（データベースが格納される）をアクセスすることを原則とし、基本的には割当てられていデータ領域にはアクセスしないシステムであり、一般には、シェアード・ナッシング・データベース・アプローチと呼ばれるデータベース管理方式である。
【００１３】
本発明の第１の実施形態によるデータベースシステムは、アプリケーション１が実行される業務ノード２ａと、複数のデータ領域１０ｂ〜１０ｄを有し、各データ領域にデータベースが分割されたテーブル３ｂ〜３ｄが格納されている外部記憶装置９と、アプリケーション１の実行によりテーブル３ｂ〜３ｄにアクセスする複数のデータベース管理ノード４ｂ〜４ｄとにより構成されている。本例では、データベースを分割したものをテーブルと呼んでいるが、部分表や部分データベース、分割表、分割データベース等と呼ぶ場合もある。また、データベースを表やテーブルと呼ぶ場合もある。業務ノード２ａは、自業務ノード２ａ内の主記憶装置５ａ内にアプリケーション１と、アプリケーション１からの要求を受け付けて適切なデータベース管理ノード４ｂ〜４ｄにデータアクセス要求を振り分けるデータアクセス要求制御部６とを備えている。本例の業務ノード２ａやデータベース管理ノード４ｂ〜４ｄは、情報処理装置や論理サーバ、プログラム、オブジェクトやプロセス、スレッド、ハードウェアで実現してもよい。また、データベース管理ノード４ｂ〜４ｄは、データベース管理プログラムやデータベース管理装置で実現してもよい。データアクセス制御部７ｂ〜７ｄは、プログラムやオブジェクト、プロセス、スレッド、ハードウェアで実現してもよい。
【００１４】
データベース管理ノード４ｂ〜４ｄは、その主記憶装置５ｂ〜５ｄ上に業務ノード２ａのデータアクセス要求制御部６からの要求を受け付けて、自ノードに割り当てられたテーブル３ｂ〜３ｄをアクセスするデータアクセス制御部７ｂ〜７ｄを有している。データアクセス制御部７ｂ〜７ｄは、キャッシュ８ｂ〜８ｄを通してテーブル３ｂ〜３ｄにアクセスし、読み込んだデータをキャッシュ８ｂ〜８ｄ上に保持する。データベース管理ノード４ｂ〜４ｄには、全てのデータベース管理ノード４ｂ〜４ｄからアクセスすることができる外部記憶装置９上のデータ領域ず、データ領域１０ｂ〜１０ｄとして適当に分割して割り当てられており、各データ領域１０ｂ〜１０ｄ上に、データベースとしてのテーブル３ｂ〜３ｄを作成する。テーブル３ｂ〜３ｄは、作成されたデータ領域１０ｂ〜１０ｄが割り当てられているデータベース管理ノード４ｂ〜４ｄのみがアクセスできる。
【００１５】
本発明の第１の実施形態では、任意のデータベース管理ノードに割り当てられたデータ領域を、任意のデータベース管理ノードからの参照を許可する共用データ領域として設定することができる。但し、データの更新を行うことができるのは、データ領域が割り当てられているデータベース管理ノードのみである。図１に示す本発明の第１の実施形態では、データベース管理ノード４ｃに割り当てられたデータ領域１０ｃが共用データ領域として設定され、データベース管理ノード４ｂから参照可能とされている。共用データ領域として設定されるデータ領域１０ｃは、参照頻度の高いテーブルを作成したデータ領域であり、そのテーブルを共用テーブルとして設定する。図１に示す例ではテーブル３ｃが共用テーブルとして設定されている。そして、全てのノードの主記憶装置５ａ〜５ｄ上に、それぞれのテーブルが共用テーブルであるか否か、割り当てられたデータベース管理ノード、参照を許可されたデータベース管理ノードの各情報を持つテーブル情報１１が作成されており、テーブル情報１１をアクセスするテーブル情報制御部１２ａ〜１２ｄが備えられている。
【００１６】
前述した本発明の第１の実施形態において、業務ノード２ａ、データベース管理ノード４ｂ〜４ｄは、図示しないＣＰＵ等を備えて構成されるよく知られているワークステーション、ＰＣ等の情報処理装置であってよい。そして、図示しないＣＰＵがプログラムを実行することにより、本発明の実施形態で必要とする後述する各種の機能部を構成する。また、業務ノード２ａ、データベース管理ノード４ｂ〜４ｄ、あるいは、データベース管理ノード４ｂ〜４ｄを仮想計算機として、全体が１つのハードウェアにより構成される計算機システム内に構成してもよい。これらのことは、後述する本発明の他の実施形態の場合も同様である。
【００１７】
図２はテーブル情報１１の構成例を示す図である。テーブル情報１１には、テーブル名１３をキーとし、そのテーブルが共用テーブルであるか否かの情報１４と、割り当てデータベース管理ノードの情報１５と、参照可能データベース管理ノードの情報１６とが保持されている。
【００１８】
図３は本発明の第１の実施形態における業務ノードでの処理動作を説明するフローチャートであり、次に、これについて説明する。
【００１９】
（１）業務ノード２ａにおいて、アプリケーション１がデータアクセス要求制御部６にデータベースアクセスを要求すると、データアクセス要求制御部６は、データアクセス要求制御処理を行い、対象となるテーブルのテーブル情報１１をテーブル情報制御部１２ａに要求し、テーブル情報１１を取得する（ステップＳ１）。
【００２０】
（２）データアクセス要求制御部６は、取得したテーブル情報１１により、対象となるテーブルが共用テーブルであるか否かを判断し、共用テーブルでなければ、割り当てられたデータベース管理ノードのデータアクセス制御部にアクセスを要求する（ステップＳ４、Ｓ５）。
【００２１】
（３）ステップＳ４の判定で、対象となるテーブルが共用テーブルであった場合、要求された処理の種別が参照であるか更新であるかを判断し、参照要求であった場合、参照が可能ｕデータベース管理ノード、図１の場合、データベース管理ノード４ｂまたは４ｃの中から、参照要求の条件に応じた任意のデータベース管理ノードを選択し、選択したデータベース管理ノードのデータアクセス制御部に参照のアクセスを要求する（ステップＳ６〜Ｓ８）。
【００２２】
（４）ステップＳ６の判定で、要求種別が更新要求であった場合、全ての参照可能なデータベース管理ノード数分をループさせて、アクセス要求の未発行のデータベース管理ノードを選択して、選択したデータベース管理ノードのデータアクセス制御部７に更新のアクセスを要求する（ステップＳ９〜Ｓｌｌ）。
【００２３】
図４は本発明の第１の実施形態におけるデータベース管理ノードでの処理動作を説明するフローチャートであり、次に、これについて説明する。ここで説明する処理は、図３により説明した処理で、アクセス要求を受けたデータベース管理ノードでの処理である。
【００２４】
（１）アクセスを要求されたデータベース管理ノードのデータアクセス制御部は、データアクセス制御処理を行い、まず、要求された処理の種別が参照であるか、更新であるかを判断する（ステップＳ１２）。
【００２５】
（２）ステップＳ１２の判定で、要求された処理の種別が参照要求であった場合、自ノードのキャッシュに要求されたデータが読み込み済みであるか否かを判断し、要求されたデータがキャッシュに読み込み済みであれば、保持されているデータをもとに結果を返却する（ステップＳ１３、Ｓ１５）。
【００２６】
（３）ステップＳ１３の判定で、キャッシュに要求されたデータが読み込み済みでなかった場合、対象のテーブルまたは共用テーブルからキャッシュに要求されたデータを読み込んで保持し、保持されたデータをもとに結果を返却する（ステップＳ１４、Ｓ１５）。
【００２７】
（４）ステップＳ１２の判定で、要求された処理の種別が更新要求であった場合、キャッシュに更新要求のあったデータが読み込み済みであるか否かを判断し、更新要求のあったデータがキャッシュに読み込み済みであれば、キャッシュに保持されたデータに要求された更新を反映する（ステップＳ１６、Ｓ１８）。
【００２８】
（５）ステップＳ１６の判定で、更新要求のあったデータがキャッシュに読み込み済みでなかった場合、対象のテーブルまたは共用テーブルからキャッシュに更新要求のあったデータを読み込んで保持し、キャッシュに保持したデータに要求された更新を反映する（ステップＳ１７、Ｓ１８）。
【００２９】
（６）続いて、対象となるテーブルのテーブル情報１１をテーブル情報制御部１２に要求し、テーブル情報１１を取得する（ステップＳ１９）。
【００３０】
（７）データアクセス制御部は、取得したテーブル情報をもとに、対象となるテーブルが共用テーブルであるか否かを判断し、共用テーブルでなければ、キャッシュ内に更新したデータをデータ領域のテーブルに出力する（ステップＳ２２、Ｓ２３）。
【００３１】
（８）ステップＳ２２の判定で、対象となるテーブルが共用テーブルであった場合、自データベース管理ノードが共用データ領域を割り当てられているデータベース管理ノードであるか否かを判断する（ステップＳ２４）。
【００３２】
（９）ステップＳ２４の判定で、自データベース管理ノードが割り当てられたデータベース管理ノードであった場合、キャッシュ内に更新したデータを共用データ領域の共用テーブルに出力し、自データベース管理ノードが割り当てられたデータベース管理ノードでなかった場合、何もしない（ステップＳ２３、Ｓ２５）。
【００３３】
本発明の第１の実施形態によれば、前述したような処理を行うことにより、業務ノードは、共用テーブルの参照を要求された場合、ステップＳ７、Ｓ８の処理により任意のデータベース管理ノードのデータアクセス制御部に要求を分散することができる。この処理により、共用テーブルが頻繁に参照される必要のあるテーブルであっても、参照を許可された任意のデータベース管理ノードから参照の処理を行うことができるので、特定のデータベース管理ノードに処理が集中することを防止することができる。
【００３４】
また、共用テーブルの更新を要求された場合、ステップＳ９、Ｓ１０、Ｓ１１の処理により、参照を許可された全てのデータベース管理ノードのデータアクセス制御部に更新を要求することにより、共用データ領域の共用テーブルのデータが更新されると同時に、参照を許可された全てのデータベース管理ノードのキャッシュのデータが更新されることになる。
【００３５】
従来技術により説明した共用データベース・アプローチのデータベースの場合、更新を実行したノードのキャッシュのみが更新されるため、他のノードから参照する場合、改めてディスクからデータを読み込み直すためにＩ／Ｏ処理が発生し、また、その際に更新中のデータを読み込まないようにするために更新中のノードがいないことを保証するために同期制御のノード間通信が発生する。このように、共用データベース・アプローチのデータベースは、複数のノードから同じテーブルをアクセスする際にさまざまなオーバヘッドが発生してしまう。
【００３６】
本発明の第１の実施形態は、前述の説明から判るように、参照を許可された全てのデータベース管理ノードのキャッシュのデータが常に全ての更新要求が反映されていることが保証され、ディスクからデータを読み込み直す必要がなく、Ｉ／Ｏ処理が発生することはない。また、更新中のデータを読み込まないようにするために、参照要求されたデータベース管理ノード自身が更新中でないことを保証するだけでよく、他のデータベース管理ノードの状態に左右されないため同期制御のためのノード間通信も発生しない。
【００３７】
従って、前述した本発明の第１の実施形態によれば、オーバヘッドなしで、複数のデータベース管理ノードから共用テーブルをアクセスすることができ、これにより、性能向上のために新たなデータベース管理ノードを追加して、共用テーブルの参照を許可することにより、各データベース管理ノードで並列に参照、更新の処理を行うことが可能となり、オーバヘッドの増加もないので、増加させたデータベース管理ノードの数分の性能向上を得ることができる。
【００３８】
図５は前述で説明した本発明の第１の実施形態でのアプリケーションの実行例を説明する図であり、次に、図５を参照して、図１〜図４により説明した処理の具体例を説明する。
【００３９】
いま、業務ノード２ａでアプリケーションａ１７、アプリケーションｂ１８、アプリケーションｃ１９、アプリケーションｄ２０、アプリケーションｅ２１を実行するものとする。アプリケーションａ１７、アプリケーションｂ１８、アプリケーションｄ２０、アプリケーションｅ２１は、データベース管理ノードｃ２２に割り当てられた共用テーブルｃ２３を参照し、アプリケーションｃ１９は、共用テーブルｃ２３のデータを「２０」に更新するものとする。共用テーブルｃ２３は、データベース管理ノードｂ２４とデータベース管理ノードｃ２２とに参照を許可している。前述した複数のアプリケーションが実行される前には、共用テーブルｃ２３にデータ「１０」が入っており、データベース管理ノードｂ２４、データベース管理ノードｃ２２のそれぞれのキャッシュｂ２５、キャッシュｃ２６には、まだ読み込まれていないものとする。
【００４０】
まず、アプリケーションａ１７、アプリケーションｂ１８が続けて実行され、アプリケーションａ１７からの参照要求がデータベース管理ノードｂ２４、アプリケーションｂ１８からの参照要求がデータベース管理ノードｃ２２に振り分けられたとする。この場合、アプリケーションａ１７の参照要求によってデータベース管理ノードｂ２４のキャッシュｂ２５にデータ「１０」が読み込まれ、その結果がアプリケーションａ１７に返却される。それと並行して、アプリケーションｂ１８の参照要求によってデータベース管理ノードｃ２２のキャッシュｃ２６にデータ「１０」が読み込まれ、その結果がアプリケーションｂ１８に返却される。その後、共用テーブルｃ２３を参照するアプリケーションが実行されれば振り分けられた任意のデータベース管理ノードのキャッシュ上のデータ「１０」が返却されることになる。
【００４１】
その後、アプリケーションｃ１９が実行され、共用テーブルｃ２３のデータを「１０」から「２０」へ変更する要求を行うと、業務ノード２ａからデータベース管理ノードｂ２４、データベース管理ノードｃ２２の両方に更新要求が発行される。データベース管理ノードｂ２４は、キャッシュｂ２５上のデータ「１０」を「２０」に更新する。また、データベース管理ノードｃ２２は、キャッシュｃ２６上のデータ「１０」を「２０」に更新し、それを共用テーブルｃ２３に出力する。前述により、全てのデータベース管理ノードのキャッシュ上のデータが更新される。
【００４２】
続いて、アプリケーションｄ２０、アプリケーションｅ２１が続けて実行され、アプリケーションｄ２０からの参照要求がデータベース管理ノードｂ２４、アプリケーションｅ２１からの参照要求がデータベース管理ノードｃ２２に振り分けられたとする。この場合、アプリケーションｄ２０の参照要求に対してはデータベース管理ノードｂ２４のキャッシュｂ２５のデータ「２０」が返却される。それと並行して、アプリケーションｅ２１の参照要求に対してもデータベース管理ノードｃ２２のキャッシュｃ２６のデータ「２０」が返却される。これ以降、共用テーブルｃ２３を参照するアプリケーションが実行されれば、振り分けられた任意のデータベース管理ノードのキャッシュ上のデータ「２０」が返却されることになる。
【００４３】
前述した説明から判るように、本発明の第１の実施形態によれば、共用テーブルｃ２３を参照するアプリケーションが繰り返し実行されているなかで、共用テーブルを更新するアプリケーションが実行されても、そのアプリケーションの実行時に全てのデータベース管理ノードのキャッシュ上のデータが更新されるので、参照要求を行ったアプリケーションがどのデータベース管理ノードに振り分けられても、他のデータベース管理ノードでの更新との同期制御やデータの再読み込み等の処理を行うことなくキャッシュから正しいデータを返却することができる。
【００４４】
前述で説明した本発明の第１の実施形態は、外部記憶装置９上の複数のデータ領域１０ｂ〜１０ｄのそれぞれにテーブル３ｂ〜３ｄを格納して、各データベース管理ノード４ｂ〜４ｄ上のキャッシュ８ｂ〜８ｄにそれぞれデータを読み込んで処理するように構成されている。このように構成した本発明の第１の実施形態によるデータベースシステムは、共用テーブル３ｃを複数のデータベース管理ノードから参照することができる。そして、読み込んだデータは、参照が許可されたデータベース管理ノードのそれぞれのキャッシュ上に保持されることになる。
【００４５】
このため、本発明の第１の実施形態は、データベース管理ノード相互間の同期制御のため、データの更新を行う場合、図３に示したフローのステップＳ９からステップＳｌｌの処理及び図４に示したフローのステップＳ１６からＳ１８の処理によって更新対象の共用テーブル３ｃの参照を許可された全てのデータベース管理ノードのキャッシュ上のデータを更新しなければならない。また、本発明の第１の実施形態は、図４に示したフローのステップＳ１９からステップＳ２５の処理によって外部記憶装置９上の共用テーブル３ｃを実際に更新するデータベース管理ノード４を制御しなければならない。
【００４６】
図６は本発明の第２の実施形態によるデータベースシステムの構成例を示すブロック図である。図６において、２７ｂ〜２７ｄは外部記憶装置キャッシュ、２８は外部記憶装置キャッシュ制御部であり、他の符号は図１の場合と同一である。以下に説明する本発明の第２の実施形態は、前述した本発明の第１の実施形態におけるデータベース管理ノード相互間の同期制御を不要とするものである。
【００４７】
図６に示す本発明の第２の実施形態は、第１の実施形態に対して、各データベース管理装置内に設けられていたキャッシュをなくし、対応するキャッシュを外部記憶装置キャッシュ２７ｂ〜２７ｄとして外部記憶装置９内に設けると共に、これらのキャッシュを制御するための外部記憶装置キャッシュ制御部２８を外部記憶装置９内に設けると共に、テーブルとデータベース管理ノードとの対応を管理するテーブル名３５とデータベース管理ノード名３７とを有するテーブル情報３５を設けて構成したものであり、他の構成は、第１の実施形態と同様である。
【００４８】
外部記憶装置９内に設けられる外部記憶装置キャッシュ２７ｂ〜２７ｄは、データ領域１０ｂ〜１０ｄ毎に割り当てられている。外部記憶装置キャッシュ制御部２８は、この外部記憶装置キャッシュ２７ｂ〜２７ｄとデータ領域１０ｂ〜１０ｄの割り当ての対応関係を管理し、データベース管理ノード４ｂ〜４ｄが参照または更新を要求したデータ領域１０ｂ〜１０ｄに応じて、適切な外部記憶装置キャッシュ２７ｂ〜２７ｄを参照あるいは更新させる。また、外部記憶装置キャッシュ制御部２８は、あらかじめ定められた契機により外部記憶装置キャッシュ２７ｂ〜２７ｄで更新されたデータを、それぞれの割り当てられたデータ領域１０ｂ〜１０ｄに反映する。あらかじめ定められた契機とは、あらかじめ定められた外部記憶装置キャッシュ２７ｂ〜２７ｄで更新されたデータの量、あるいは、更新された回数、あるいは、あらかじめ定められた時間間隔、あるいはデータベース管理ノード４ｂ〜４ｄからの要求、あるいは外部記憶装置９に対する外部からのコマンドなどの入力であってよい。外部記憶装置キャッシュ制御部２８は、データベース管理ノード４ｂ〜４ｄがテーブル３ｂ〜３ｄを参照すると、そのテーブル３ｂ〜３ｄの格納されたデータ領域１０ｂ〜１０ｄに割り当てられた外部記憶装置キャッシュ２７ｂ〜２７ｄ上にデータを読み込んで保持し、外部記憶装置キャッシュ２７ｂ〜２７ｄをデータベース管理ノード４ｂ〜４ｄに参照させる。
【００４９】
この場合、外部記憶装置キャッシュ制御部２８はテーブル情報３５を参照し、データベース管理ノードと外部記憶装置１０に格納しているテーブルとの割付関係を得る。本例では、データベース管理ノード４ｄにはテーブル３ｄが割当てられており、データベース管理ノード４ｂ、データベース管理ノード４ｃについてはテーブル３ｃが割当てられている。つまり、外部記憶装置キャッシュ制御部２８は、データベース管理ノード４ｄからアクセス要求を受信するとテーブル情報３５を参照し、データベース管理ノード４ｄに対応するテーブル３ｄについて受信したアクセス要求に基づいた処理を実行することになる。また、外部記憶装置キャッシュ制御部２８は、データベース管理ノード４ｂ〜４ｄがテーブル３ｂ〜３ｄを更新すると、そのテーブル３ｂ〜３ｄを格納しているデータ領域１０ｂ〜１０ｄに割り当てられた外部記憶装置キャッシュ２７ｂ〜２７ｄ上で保持しているデータを更新する。そのため、どのデータベース管理ノード４ｂ〜４ｄでも、要求に応じて、同じ外部記憶装置キャッシュ２７ｂ〜２７ｄに対して参照、更新できる。さらに、外部記憶装置キャッシュ制御部２８は、あらかじめ定められた契機により外部記憶装置キャッシュ２７ｂ〜２７ｄで更新されたデータで、それぞれの割り当てられたデータ領域１０ｂ〜１０ｄを更新するので、データベース管理ノード４ｂ〜４ｄは更新したデータをデータ領域１０ｂ〜１０ｄへの出力を制御する必要がなくなる。
【００５０】
前述したように構成される本発明の第２の実施形態において、データベース管理ノード４ｂ〜４ｄは、外部記憶装置キャッシュ制御２８を通して、直接外部記憶装置キャッシュ２７ｂ〜２７ｄ上のデータを参照、更新することができる。そのため、データベース管理ノード４ｂ〜４ｄは、自身のキャッシュ上にデータを保持する必要がないので、データベース管理ノード４ｂ〜４ｄ相互間の同期制御のため、更新対象の共用テーブル３ｃの参照を許可されたすべてのデータベース管理ノード４ｂ〜４ｄのキャッシュ８ｂ〜８ｄ上のデータを更新する必要がなくなり、外部記憶装置９上の共用テーブル３ｃを実際に更新するデータベース管理ノード４ｃを制御する必要もなくなる。本発明の第２の実施形態は、前述したような制御が不要になることにより、より高速にテーブルへのアクセスを行うことが可能となる。
【００５１】
図７は本発明の第２の実施形態における業務ノードでの処理動作を説明するフローチャートであり、次に、これについて説明する。
【００５２】
図７に示すフローにおいて、ステップＳｌからステップＳ８までの処理は、図３に示すフローにより説明したステップＳｌからステップＳ８までの処理と同一である。そして、本発明の第２の実施形態では、図３に示すフローで説明したステップＳ９からステップＳｌｌの処理で行っていた更新対象の共用テーブル３ｃの参照が許可された全てのデータベース管理ノードのキャッシュ上のデータを更新するための処理が不要となる。このため、共用テーブル３ｃに対する更新要求があった場合、更新処理に応じた任意のデータベース管理ノードを選択（ステップＳ２６）して、選択したデータベース管理ノードのデータアクセス制御部にアクセスを要求する（ステップＳ２７）ようにすればよい。
【００５３】
図８は本発明の第２の実施形態におけるデータベース管理ノードでの処理動作を説明するフローチャートであり、次に、これについて説明する。ここで説明する処理は、図７により説明した処理で、アクセス要求を受けたデータベース管理ノードでの処理である。
【００５４】
図８に示すフローにおいて、ステップＳ１２からステップＳ１８までの処理は、図４に示すフローにより説明したステップＳ１２からステップＳ１８までの処理と同一である。そして、本発明の第２の実施形態では、図４に示すフローで説明したステップＳ１９からステップＳ２５の処理で行っていた外部記憶装置９上の共用テーブル３ｃを実際に更新するデータベース管理ノード４ｃを制御する処理が不要となる。このため、ステップ１８の処理により外部記憶装置キャッシュ２７ｃ上のデータを更新した後、外部記憶装置キャッシュ制御２８がデータ領域１０ｃを更新するので、データベース管理ノードは、何もしなくてよい（ステップＳ２８）。
【００５５】
前述したように、本発明の第２の実施形態によれば、外部記憶装置上の分割したデータ領域毎に、外部記憶装置上にキャッシュを割り当て、そのキャッシュをデータベース管理ノードから直接制御することが可能な外部記憶装置と連携することにより、アプリケーションをより高速に実行することができる。
【００５６】
前述したように、本発明の第１、第２の実施形態は、参照頻度の高いテーブルを共用テーブルとすることにより負荷分散を行うことができるが、テーブルの参照頻度の調査を行ったり、また、将来のテーブルの使用状況の変化を見越した参照頻度の変遷を検討したりする必要があり、テーブルを共用テーブルとするかどうかを決定することが運用上必要となる。
【００５７】
そこで、アプリケーションの実行によるテーブルの参照状況を監視して、テーブルの参照頻度に応じてそのテーブルを共用テーブルにするかどうかを動的に切り替えることを可能にすることにより、テーブルを共用テーブルにするかどうかを調査、検討するための負担を軽減することができる。
【００５８】
図９は各テーブルの参照頻度を収集し、テーブルの参照頻度に応じてそのテーブルを共用テーブルにするか否かを動的に切り替えることを可能にする本発明の第３の実施形態を説明する図であり、次に、これについて説明する。図９において、２９はテーブル参照監視・共用テーブル切り替え制御部、３０はテーブル参照情報であり、他の符号は図１の場合と同一である。なお、図９には、ここでの説明に必要な部分のみを示しており、全体の構成は、図１、図６と同様である。
【００５９】
図９に示す本発明の第３の実施形態は、業務ノード２ａのアプリケーション１によるテーブル３ｂ〜３ｄのアクセスを監視し、テーブルを共用テーブルとするか否かを決定して切り替えるテーブル参照監視・共用テーブル切り替え制御部２９を業務ノード２ａに追加して構成されている。アプリケーション１がテーブル３ｂ〜３ｄのアクセスを要求する際には、データアクセス要求制御６が必ずテーブル情報制御部１２にテーブル情報１１の参照要求を行うので、データアクセス要求制御部６は、テーブル参照監視・共用テーブル切り替え制御部２９に参照要求が行われたことを通知し、テーブル参照監視・共用テーブル切り替え制御２９は、テーブル３ｂ〜３ｄ毎の参照頻度をテーブル参照情報３０に蓄積する。
【００６０】
図１０はテーブル参照情報３０の例を示す図である。テーブル参照情報３０には、システムまたは利用者によって予め設定された、テーブルを共用テーブルとするか否かを切り替える参照頻度の閾値３１と、テーブル名３２をキーとし、そのテーブル３ｂ〜３ｄの参照頻度の情報３３を保持している。
【００６１】
テーブル参照監視・共用テーブル切り替え制御部２９は、データアクセス要求制御部６からの通知に基づいて、テーブル３ｂ〜３ｄの参照頻度を算出し、テーブル参照情報３０のテーブル３ｂ〜３ｄの参照頻度の情報３３を随時更新する。また、切り替え制御部２９は、この値を常に監視しており、テーブル３ｂ〜３ｄを共用テーブルに切り替える閾値３１を超えた場合、そのテーブルを共用テーブルに切り替えるように、また、下回った場合、そのテーブルを通常のテーブルに切り替えるように、全てのノードのテーブル情報制御部１２に通知する。テーブル情報制御部１２は、テーブル情報１１の該当するテーブル名１３の共用テーブルであるかの情報１４と参照可能データベース管理ノード１６とを更新する。
【００６２】
テーブル情報制御部１２は、共用テーブルへの切り替えを通知された場合、該当するテーブル名１３の共用テーブルであるかの情報１４をＹＥＳに設定し、参照可能データベース管理ノード１６に参照を許可されたデータベース管理ノードを追加する。また、テーブル情報制御部１２は、通常のテーブルへの切り替えを通知された場合、該当するテーブル名１３の共用テーブルであるかの情報１４をＮＯに設定し、参照可能データベース管理ノード１６を割り当てデータベース管理ノードのみに更新する。これ以降、アプリケーション１からのアクセス要求は、データアクセス要求制御部６で共用テーブルであるか否かを判断する際に、テーブル情報制御部１２から返却されるテーブル情報１１が切り替えられた情報になり、それに従った動作を行うことになる。
【００６３】
前述したように、本発明の第３の実施形態によれば、テーブルの参照頻度に応じてそのテーブルを共用テーブルにするか否かを動的に切り替えることができ、これにより、テーブルの参照頻度が増加した場合、そのテーブルを共用テーブルとして負荷を分散し、参照頻度が減少した場合、通常のテーブルとして参照するようにすることができる。そのため、利用者自身がテーブルの使用状況の変化に応じてテーブルの再配置や共用テーブルとするか否かを検討する必要をなくすことができる。
【００６４】
前述した本発明の各実施形態における各処理は、処理プログラムとして構成することができ、この処理プログラムは、ＨＤ、ＤＡＴ、ＦＤ、ＭＯ、ＤＶＤ−ＲＯＭ、ＣＤ−ＲＯＭ等の記録媒体に格納して提供することができる。
【００６５】
以上説明したように、本発明の第１の実施形態によれば、複数のデータベース管理ノードのそれぞれが、それぞれのノードに割り当てられたデータ領域しかアクセスすることができないデータベースシステムにおいて、参照頻度が高いテーブルが分割等による再配置ができない場合にも、そのテーブルを共用テーブルとするようにしているので、任意のノードから任意のタイミングでアクセスすることができ、増加させたノード数に見合う性能の向上を図ることができる。
【００６６】
また、本発明の第２の実施形態によれば、外部記憶装置上の分割したデータ領域毎に、外部記憶装置上にキャッシュを割り当て、そのキャッシュをノードから直接制御することが可能としているので、さらに高速なアクセスを実現することができる。
【００６７】
また、本発明の第３の実施形態によれば、アプリケーションの実行によるテーブルの参照状況を監視して、テーブルの参照頻度に応じてそのテーブルを共用テーブルにするか否かを動的に切り替えることを可能にしているので、テーブルを共用テーブルにするか否かを調査、検討するためのユーザの負担を軽減することができる。
【図面の簡単な説明】
【００６８】
【図１】本発明の第１の実施形態によるデータベースシステムの構成例を示すブロック図である。
【図２】テーブル情報の構成例を示す図である。
【図３】本発明の第１の実施形態における業務ノードでの処理動作を説明するフローチャートである。
【図４】本発明の第１の実施形態におけるデータベース管理ノードでの処理動作を説明するフローチャートである。
【図５】本発明の第１の実施形態でのアプリケーションの実行例を説明する図である。
【図６】本発明の第２の実施形態によるデータベースシステムの構成例を示すブロック図である。
【図７】本発明の第２の実施形態における業務ノードでの処理動作を説明するフローチャートである。
【図８】本発明の第２の実施形態におけるデータベース管理ノードでの処理動作を説明するフローチャートである。
【図９】テーブルの参照頻度を収集し、テーブルの参照頻度に応じてそのテーブルを共用テーブルにするか否かを動的に切り替えることを可能にする本発明の第３の実施形態を説明する図である。
【図１０】テーブル参照情報の例を示す図である。
【符号の説明】
【００６９】
１  アプリケーション
２ａ  業務ノード
３ｂ〜３ｄ  テーブル
４ｂ〜４ｄ  データベース管理ノード
５ａ〜５ｄ  主記憶装置
６  データアクセス要求制御部
７ｂ〜７ｄ  データアクセス制御部
８ｂ〜８ｄ  キャッシュ
９  外部記憶装置
１０ｂ〜１０ｄ  データ領域
１１  テーブル情報
１２ａ〜１２ｄ  テーブル情報制御部
２７ｂ〜２７ｄ  外部記憶装置キャッシュ
２８  外部記憶装置キャッシュ制御部
【図１】
2005339236.tif 000003
【図２】
2005339236.tif 000004
【図３】
2005339236.tif 000005
【図４】
2005339236.tif 000006
【図５】
2005339236.tif 000007
【図６】
2005339236.tif 000008
【図７】
2005339236.tif 000009
【図８】
2005339236.tif 000010
【図９】
2005339236.tif 000011
【図１０】
2005339236.tif 000012