以下、各実施形態について図面を参照して説明する。なお、以下の各装置は、装置毎に、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体から対応する装置のコンピュータにインストールされ、対応する装置の機能を実現させるためのプログラムが用いられる。
(第1の実施形態)
図1は第1の実施形態に係る分散型データベースシステムの構成の一例を示す模式図である。
読出し要求装置1は、例えばネットワークを介して、分散型データベースシステム100に接続されている。分散型データベースシステム100は、互いに通信可能な複数のノード装置10a〜10yから構成されている。なお、各ノード装置10a〜10yは、データストレージノードと呼んでもよい。また、各ノード装置10a〜10yは、互いに同一の機能ブロック構成を有するので、以下、ノード装置10aを代表例に挙げて説明する。この代表例のノード装置10aの各部11a〜17aの説明は、各部11a〜17aの添字“a”を適宜、“b”,…,“y”に読み替えることにより、代表例以外のノード装置10b,…,10yの図示しない各部11b〜17b,…,11y〜17yの説明に読み替えられる。但し、代表例以外のノード装置10b,…,10yの図示しない各部11b〜17b,…,11y〜17yの参照符号を明細書に記載する場合もある。
例えば、各ノード装置10a〜10yは、データ格納部11a〜11y、アクセス情報格納部12a〜12y、ノード装置配置情報格納部(識別情報格納手段)13a〜13y、データ処理部14a〜14y、データ要求処理部15a〜15y、データ複製配置処理部16a〜16y及びデータ要求転送処理部17a〜17yを備えている。
読出し要求装置1は、読出し対象のデータを識別するためのデータ識別情報を含む読出し要求を送信し、この読出し要求に応じて読出されたデータを受信する機能をもつ。このような読出し要求装置1としては、例えば、ユーザの間接的な操作に応じて読出し要求を送信するサーバ装置2(例えば、図示しないユーザ装置から受けたキーワード等の情報に基づき、当該キーワード等の情報に予め関連付けられたデータ識別情報を含む読出し要求を転送する機器)と、ユーザの直接的な操作に応じて読出し要求を送信するクライアント端末3(例えば、ユーザが読出し要求を直接入力可能な機器)とのいずれを用いてもよい。また、同実施形態では、読出し要求装置1に用いられるサーバ装置2又はクライアント端末3はそれぞれ一つとしたが、これに限定されない。例えば、複数のサーバ装置2及び/又は複数のクライアント端末3を含む読出し要求装置1が適用可能となっている。このような読出し要求装置1の構成は、以下の各実施形態でも同様である。
続いて、前述したように、同様の構成をもつ各ノード装置10a〜10yのうち、代表例に挙げたノード装置10aの各格納部11a〜13aと、各機能部14a〜17aについて説明する。なお、各格納部11a〜13aは、各機能部14a〜17aからそれぞれ読出/書込可能な同一又は別々の記憶装置により実現可能となっている。
ここで、データ格納部11aは、読出し対象のデータと、このデータを識別するためのデータ識別情報とを関連付けて格納している。このデータとしては、例えばブログ(blog)のコメントを示すデータ等のように、読出し要求装置1を操作するユーザに対して即座に反映されなくてもよいデータが使用可能となっている。
アクセス情報格納部12aは、データ格納部11aに格納されたデータを複製する必要があるか否かを判定するためのアクセス情報を格納している。
詳しくは、アクセス情報は、図2に示すように、データ識別情報、アクセス回数情報、カウント開始時刻情報、アクセス頻度情報及び閾値情報を含んでおり、データ識別情報毎に、アクセス回数情報、カウント開始時刻情報、アクセス頻度情報及び閾値情報が関連付けられている。データ識別情報は、データ格納部11aに格納されているデータ識別情報のいずれかを示している。アクセス回数情報は、読出し要求装置1から当該データ識別情報に関連付けられたデータへのアクセス回数を示している。カウント開始時刻情報は、このアクセス回数をカウントし始めた時刻を示している。アクセス頻度情報は、単位時間当たりのアクセス回数の値を示している。閾値情報は、このアクセス頻度情報に対して設定された閾値を示している。この閾値は、処理実行速度の低下をもたらすほどにアクセス頻度情報の値が高いか否か(又は当該データ識別情報に関連付けられたデータを複製する必要があるか否か)を判定するための基準値である。
なお、アクセス情報格納部12aは、図2(a)及び図2(b)に示すように、データ識別情報毎に、少なくとも二つのアクセス情報を格納している。各アクセス情報は、アクセス回数の山の主要部を含むようにアクセス頻度を算出したい観点から、互いに異なるカウント開始時刻を有し、一部の時間帯でアクセス回数の増分が重複するように書き込まれる。換言すると、各アクセス情報は、互いにオーバーラップするように記録され、少なくともいずれか一方のアクセス情報により、アクセス回数の山の主要部を含むようにアクセス頻度を算出可能としている。例えば、30秒だけ異なるアクセス開始時刻を有し、1分間に10回のアクセスの山があった場合、いずれか一方のアクセス情報によれば山の前半又は後半30秒に記録されたアクセス回数からアクセス頻度が算出されて5[回/分]になってしまう。しかしながら、オーバーラップしている他方のアクセス情報によれば、10[回/分]のアクセス頻度が算出される。
また、各アクセス情報のうち、アクセス回数情報、カウント開始時刻情報及びアクセス頻度情報は、例えばカウント開始時刻から一定時間毎にリセットされ、最も旧いアクセス情報がリセット後の新しいアクセス情報に順に書換えられる。
ノード装置配置情報格納部13aは、図3に示すように、他ノード装置10b〜10yに格納されたデータを識別するためのデータ識別情報と、このデータを格納しているノード装置10b〜10yを識別するためのノード装置識別情報とを関連付けて格納している。
データ処理部14aは、アクセス情報をアクセス情報格納部12aに書込む処理を実行し、データ識別情報及びノード装置識別情報をノード装置配置情報格納部13aに書込む処理を実行し、且つ読出し要求装置1から送信された読出し要求を受けると、自ノード装置10aがこの読出し要求に対応可能か否かの判定処理を実行する。また、データ処理部14aは、他ノード装置10b〜10yから複製データを受信し、この複製データをデータ格納部11aに格納すると、この複製データを格納したことを示す情報を他ノード装置10b〜10yに送信する処理を実行する。例えば、以下の各機能(f14-1)〜(f14-5)をもっている。
(f14-1) 読出し要求装置1からデータ格納部11aに格納されたデータへのアクセス回数をカウントし、当該カウントしたアクセス回数を示すアクセス回数情報と、当該アクセス回数をカウントし始めた時刻を示すカウント開始時刻情報とをアクセス情報格納部12aに書込む機能。
(f14-2) 現在の時刻を示す現在時刻情報を定期的に取得すると、当該取得した現在時刻情報と、アクセス情報格納部12aに格納されたカウント開始時刻情報及びアクセス回数情報とに基づいて、アクセス頻度を算出し、算出されたアクセス頻度を示すアクセス頻度情報をアクセス情報格納部12aに書込む機能。なお、現在時刻情報は、例えばノード装置10aの通常の時計機能又はOS(Operating System)等から取得可能となっている。
(f14-3) 他ノード装置10b〜10yに格納されたデータを識別するためのデータ識別情報と、このデータを格納しているノード装置10b〜10yを識別するためのノード装置識別情報とを受信すると、当該データ識別情報と当該ノード装置識別情報とを関連付けてノード装置配置情報格納部13aに書込む機能。
(f14-4) 読出し要求装置1から送信された読出し要求を受けると、データ格納部11aに格納されたデータ識別情報のいずれかが、当該読出し要求に含まれるデータ識別情報に一致するか否かを判定するデータ識別情報判定機能。
(f14-5) 他ノード装置10b〜10yから送信された複製データを受信し、この複製データをデータ格納部11aに格納すると、当該格納されたデータに関連付けられたデータ識別情報と、自ノード装置10aを示すノード装置識別情報とを他ノード装置10b〜10yに送信する機能。
データ要求処理部15aは、データ処理部14aでの判定結果が“一致”を示すとき、読出し要求装置1から送信された読出し要求に含まれるデータ識別情報に関連付けられたデータを複製する必要があるか否かを判定する処理を実行する。例えば、以下の各機能(f15-1)〜(f15-3)をもっている。
(f15-1) データ処理部14aでの判定結果が“一致”を示すとき、当該データ識別情報に関連付けられたアクセス頻度情報及び閾値情報をアクセス情報格納部12aから読み出す機能。
(f15-2) 読出されたアクセス頻度情報及び読出された閾値情報を比較することによって、当該アクセス頻度情報により示される値が当該閾値情報により示される値を超えているか否かを判定するアクセス頻度判定機能。
(f15-3) この判定結果が否を示すとき、当該“一致”したデータ識別情報に関連付けられたデータをデータ格納部11aから読出し、当該読出したデータを読出し要求装置1に送信する機能。
データ複製配置処理部16aは、データ要求処理部15aでの判定結果が“超えている”を示すとき、読出し要求装置1から送信された読出し要求に含まれるデータ識別情報に関連付けられたデータを複製する処理を実行し、且つこの複製されたデータをいずれかの他ノード装置10b,…,10x,又は10yに送信する処理を実行する。例えば、以下の各機能(f16-1)〜(f16-3)をもっている。
(f16-1) データ要求処理部15aのアクセス頻度判定機能による判定結果が閾値を超えている旨を示すとき、“一致”したデータ識別情報に関連付けられたデータをデータ格納部11aから読出し、当該読出したデータを複製する機能。
(f16-2) データ要求処理部15aのアクセス頻度判定機能による判定結果が閾値を超えている旨を示すとき、“一致”したデータ識別情報に関連付けられたノード装置識別情報とは異なるいずれかのノード装置識別情報をノード装置配置情報格納部13aから読み出す機能。
(f16-3) 当該複製されたデータを当該読出されたノード装置識別情報に対応するノード装置10b,…,10x,又は10yに送信する機能。
データ要求転送処理部17aは、データ処理部14aでの判定結果が“不一致”を示すとき、データ処理部14aにおいて受信された読出し要求を他ノード装置に転送する処理を実行する。例えば、以下の各機能(f17-1)及び(f17-2)をもっている。
(f17-1) データ処理部14aでの判定結果が“不一致”を示すとき、当該判定に用いた読出し要求に含まれるデータ識別情報に関連付けられた他ノード装置のノード装置識別情報をノード装置配置情報格納部13aから読み出す機能。
(f17-2) 当該読出されたノード装置識別情報に対応するノード装置に当該読出し要求を転送する機能。
次に、以上のように構成された分散型データベースシステムの動作について図4のフローチャート及び図5の模式図を参照しながら説明する。但し、データ識別情報“300”を含む読出し要求が読出し要求装置1からノード装置10aに向けて送信されたものとする。
始めに、分散型データベースシステム100に備えられたノード装置10a内のデータ処理部14aが、読出し要求装置1から送信されたデータ識別情報“300”を含む読出し要求を受信する(ステップS1)。なお、読出し要求は、読出し要求装置1から送信された後、他のノード装置10b,…,10x,又は10yから転送されることもある。このことは、以下の各実施形態でも同様である。
続いて、データ処理部14aは、データ格納部11aに格納されたデータ識別情報のいずれかが、受信した読出し要求に含まれたデータ識別情報“300”と一致するか否かを判定する(ステップS2)。
ステップS2の判定の結果、データ格納部11aに格納された全てのデータ識別情報がデータ識別情報“300”と一致しない場合(ステップS2:「不一致」)にはステップS8に進む。ここで、データ要求転送処理部17aは、ノード装置配置情報格納部13aに格納されたノード装置識別情報のうち、データ識別情報“300”に関連付けられたノード装置識別情報“y”を読出し、このノード装置10yに当該読出し要求を転送し(ステップS8)、ノード装置10aにおける読出し動作を終了する。
一方、ステップS2の判定の結果、データ格納部11aに格納されたデータ識別情報のいずれかがデータ識別情報“300”と一致する場合(ステップS2:「一致」)には、データ要求処理部15aは、データ識別情報“300”に関連付けられたアクセス頻度情報及び閾値情報をアクセス情報格納部12aから読み出す(ステップS3)。
続いて、データ要求処理部15aは、読出されたアクセス頻度情報により示される値が閾値情報により示される閾値を超えているか否かを判定する(ステップS4)。
ステップS4の判定の結果、アクセス頻度情報により示される値が閾値情報により示される閾値を超えていない場合(ステップS4:「超えていない」)にはステップS9に進む。ここで、データ要求処理部15aは、データ識別情報“300”に関連付けられたデータをデータ格納部11aから読出し、このデータを読出し要求装置1に送信し(ステップS9)、ノード装置10aにおける読出し動作を終了する。
一方、ステップS4の判定の結果、アクセス頻度情報により示される値が閾値情報により示される閾値を超えている場合(ステップS4:「超えている」)には、データ複製配置処理部16aは、データ識別情報“300”に関連付けられたデータをデータ格納部11aから読出し、このデータを複製する(ステップS5)。
続いて、データ複製配置処理部16aは、ノード装置配置情報格納部13aに格納されたノード装置識別情報のうち、データ識別情報“300”に関連付けられたノード装置識別情報“y”とは異なるいずれかのノード装置識別情報“e”を読出す(ステップS6)。
しかる後、データ複製配置処理部16aは、ステップS5において複製されたデータを、読出されたノード装置識別情報“e”に対応するノード装置10eに送信する(ステップS7)。
上述したステップS1〜S7の処理の後に、ステップS7において送信された複製データを受信するノード装置10eは、受信された複製データをデータ格納部11eに格納し、この複製データを読出し要求装置1に送信する処理を実行する。
なお、上述したステップS1の処理の後に、データ処理部14aが、自ノード装置10aのディスクスペース(例えば、データ格納部11a等)の利用率が設定された閾値を超えているか否かを判定する判定ステップ(図示せず)を更に追加してもよい。また、上述したステップS4の判定結果が“超えていない”を示すとき、データ要求処理部15aは、データ格納部11aに格納されたデータ識別情報のうち、当該読出し要求に含まれたデータ識別情報“300”を除くデータ識別情報へのアクセス頻度が設定された閾値を超えているか否かを判定する判定ステップ(図示せず)を更に追加してもよい。
次に、以上のような分散型データベースシステム100の具体的な運用例を4つ述べる。
先ず、第1の運用例について図6の模式図を参照しながら説明する。但し、ノード装置10a,10yのデータ格納部11a,11yには、データ識別情報“300”により識別されるデータd300が格納され、ノード装置10a,10yを除くノード装置10b〜10xのデータ格納部11b〜11xには、データ識別情報“300”により識別されるデータd300が格納されていないものとする。また、ノード装置10a内のアクセス情報格納部12aにおいて、データ識別情報“300”に関連付けられたアクセス頻度情報により示される値が、データ識別情報“300”に関連付けられた閾値情報により示される閾値を超えていないものとする。
始めに、ノード装置10b内のデータ処理部14bが、サーバ装置2から送信されたデータ識別情報“300”を含む読出し要求を受ける(ステップS1−1)。同様に、ノード装置10d内のデータ処理部14dは、クライアント端末3から送信されたデータ識別情報“300”を含む読出し要求を受ける(ステップS1−2)。
続いて、データ処理部14b及び14dは、データ格納部11b及び11dに格納されたデータ識別情報のいずれかが、当該読出し要求に含まれたデータ識別情報“300”と一致するか否かを判定する(ステップS2)。
当該読出し要求に含まれたデータ識別情報“300”がデータ格納部11b及び11dに格納されているデータ識別情報と不一致であると判定されると、データ要求転送処理部17b及び17dは、ノード装置配置情報格納部13b及び13dに格納されたノード装置識別情報のうち、当該読出し要求に含まれたデータ識別情報“300”に関連付けられたノード装置識別情報“a”を読出し、読出されたノード装置識別情報“a”に対応するノード装置10aに当該読出し要求を転送する(ステップS8)。
次に、ノード装置10a内のデータ処理部14aは、転送された読出し要求を受ける(ステップS1)。しかる後、ノード装置10aは、前述したステップS2〜S4の処理を実行し、データ識別情報“300”により識別されるデータd300をデータ格納部11aから読出し、読出されたデータd300をサーバ装置2及びクライアント端末3に送信する(ステップS9)。
次いで、第2の運用例について図7の模式図を参照しながら説明する。但し、上述した第1の運用例の一部の処理が既に実行され、データ識別情報“300”を含む読出し要求がノード装置10b及び10dからノード装置10aに転送されたものとする。また、ノード装置10a内のアクセス情報格納部12aにおいて、データ識別情報“300”に関連付けられたアクセス頻度情報により示される値が、データ識別情報“300”に関連付けられた閾値情報により示される閾値を超えているものとする。
始めに、ノード装置10b及び10dから転送されたデータ識別情報“300”を含む読出し要求を受けると、ノード装置10a内のデータ要求処理部15aは、データ識別情報“300”に関連付けられたアクセス頻度情報及び閾値情報をアクセス情報格納部12aから読み出す(ステップS1〜S3)。
続いて、データ要求処理部15aは、アクセス頻度情報により示される値が閾値情報により示される閾値を超えているか否かを判定する(ステップS4)。この判定の結果、読出されたアクセス頻度情報により示される値が読出された閾値情報により示される値を超えていると判定されると、データ複製配置処理部16aは、データ識別情報“300”に関連付けられたデータd300を複製する(ステップS5)。
続いて、データ複製配置処理部16aは、ノード装置配置情報格納部13aに格納されたノード装置識別情報のうち、データ識別情報“300”に関連付けられたノード装置識別情報“y”とは異なるいずれかのノード装置識別情報“e”を読出し(ステップS6)、読出されたノード装置識別情報“e”に対応するノード装置10eに複製されたデータd300を送信する(ステップS7)。
この場合、ノード装置10aは、複製されたデータd300と、この複製されたデータd300を格納させるための要求とをノード装置10eに対して同時に送信しているが、これに限定されない。例えば、ノード装置10aは、複製されたデータd300を格納させるための要求のみをノード装置10eに対して送り、ノード装置10eが、この要求に応じるときに、複製されたデータd300をノード装置10aから取得することも可能となっている。
次に、ノード装置10e内のデータ処理部14eは、送信された複製データd300を受信し、このデータd300をデータ格納部11eに格納する。続いて、データ処理部14eは、当該格納された複製データd300に関連付けられたデータ識別情報“300”と、自ノード装置10eを示すノード装置識別情報“e”とを他ノード装置10c,10d,10xに送信する(t1)。ここで、データ識別情報“300”とノード装置識別情報“e”とは、データ識別情報“300”に関連付けられたデータd300をノード装置10eに格納したことを示している。しかる後、データ処理部14eは、受信された複製データd300をサーバ装置2及びクライアント端末3に送信する(t2)。また、他ノード装置10c,10d,10xは、それぞれ受信したデータ識別情報“300”及びノード装置識別情報“e”を図示しないノード装置配置情報格納部13c,13d,13xに格納した後、当該データ識別情報“300”及びノード装置識別情報“e”を更に他のノード装置10a,10b,10f,10yに送信する(t3)。
更に、第3の運用例について図8を参照しながら説明する。但し、上述した第2の運用例の一部の処理が既に実行され、データ識別情報“300”に関連付けられたデータd300の複製がノード装置10aからノード装置10eに送信されたものとする(ステップS7)。また、ノード装置10e内のディスクスペースの利用率が予め設定された閾値を超えているものとする。
始めに、ノード装置10e内のデータ処理部14eは、ノード装置10aから送信された、データ識別情報“300”に関連付けられたデータd300の複製を受信する。続いて、データ処理部14eは、ノード装置10e内のディスクスペースの利用率が設定された閾値を超えているか否かを判定する。この判定の結果、ノード装置10e内のディスクスペースの利用率が予め設定された閾値を超えていると判定されると、データ要求転送処理部17eは、ノード装置配置情報格納部13eに格納されたノード装置識別情報のうち、データ識別情報“300”に関連付けられたノード装置識別情報“y”とは異なるいずれかのノード装置識別情報“f”を読出し、受信された複製データd300を読出されたノード装置識別情報“f”に対応するノード装置10fに送信する(t11)。
次に、ノード装置10f内のデータ処理部14fは、送信された複製データd300を受信し、データ格納部11fに格納する。続いて、データ処理部14fは、当該格納された複製データd300に関連付けられたデータ識別情報“300”と、自ノード装置10fを示すノード装置識別情報“f”とを他ノード装置10c,10xに送信する(t12)。前述同様に、データ識別情報“300”とノード装置識別情報“f”とは、データ識別情報“300”に関連付けられたデータd300をノード装置10fに格納したことを示している。しかる後、データ処理部14fは、受信された複製データd300をサーバ装置2及びクライアント端末3に送信する(t13)。また同様に、データ識別情報“300”とノード装置識別情報“f”とは、順次、各ノード装置10c,10x,10a,10e,10y,10d,10bにて格納及び送信され、分散型データベースシステム100内で共有されていく(t14〜t16)。
なお、この第3の運用例では、ノード装置10e内のディスクスペースの利用率が予め設定された閾値を超えているものとしたが、複製されたデータd300の受信前に、ノード装置10eに既に格納されたデータへのアクセス頻度が予め設定された閾値を超えている場合においても、同様の処理が実行される。
続いて、第4の運用例について図9の模式図を参照しながら説明する。但し、上述した第2の運用例の処理が既に実行され、データ識別情報“300”により識別されるデータd300の複製がノード装置10eにも格納されたものとする。また、ノード装置10a内のアクセス情報格納部12a及びノード装置10e内のアクセス情報格納部12eにおいて、データ識別情報“300”に関連付けられたアクセス頻度情報により示される値が、データ識別情報“300”に関連付けられた閾値情報により示される閾値を超えていないものとする。
始めに、ノード装置10b内のデータ処理部14bが、サーバ装置2から送信されたデータ識別情報“300”を含む読出し要求を受ける(ステップS1−1)。同様に、ノード装置10d内のデータ処理部14dが、クライアント端末3から送信されたデータ識別情報“300”を含む読出し要求を受ける(ステップS1−2)。
続いて、データ処理部14b及び14dは、データ格納部11b及び11dに格納されたデータ識別情報のいずれかが、当該読出し要求に含まれたデータ識別情報“300”と一致するか否かを判定する(ステップS2)。
当該読出し要求に含まれたデータ識別情報“300”がデータ格納部11b及び11dに格納されているデータ識別情報と不一致であると判定されると、データ要求転送処理部17b及び17dは、ノード装置配置情報格納部13b及び13dに格納されたノード装置識別情報のうち、データ識別情報“300”に関連付けられたノード装置識別情報“a”及び“e”を読出し、読出されたノード装置識別情報“a”に対応するノード装置10aと、読出されたノード装置識別情報“e”に対応するノード装置10eとに当該読出し要求を転送する(ステップS8)。
この場合、ノード装置10bからノード装置10aに当該読出し要求が転送され、ノード装置10dからノード装置10eに当該読出し要求が転送される。すなわち、データ要求転送処理部17b及び17dは、データ識別情報“300”に関連付けられたノード装置識別情報“a”,“e”,“y”のうち、ホップ数を考慮して、それぞれ最少のホップ数に対応するノード装置識別情報“a”,“e”を選択し、当該選択したノード装置識別情報“a”,“e”に対応するノード装置10a,10eに読出し要求を転送している。
次に、データ処理部14a及び14eは、転送された読出し要求を受ける(ステップS1)。しかる後、ノード装置10a及び10eは、前述したステップS2〜S4の処理を実行し、データ識別情報“300”に関連付けられたデータd300をデータ格納部11a及び11eから読出し、読出されたデータをサーバ装置2及びクライアント端末3に送信する(ステップS9)。
上述したように本実施形態によれば、互いに同一の機能ブロック構成をもつ各ノード装置10a〜10yを備え、各ノード装置10a〜10yが、読出し要求に含まれるデータ識別情報に関連付けられたアクセス頻度情報により示される値が閾値を超えているとき、このデータ識別情報に関連付けられたデータを読出して複製し、このデータ識別情報に関連付けられたノード装置識別情報とは異なるいずれかのノード装置識別情報を読み出し、複製されたデータを当該ノード装置識別情報に対応するノード装置に送信する構成により、アクセス頻度の高いデータの複製を他のノード装置にも格納させ、当該データへのアクセスを分散させることができる。
また、各ノード装置10a〜10yが、読出し要求に含まれるデータ識別情報と、自装置のデータ格納部11a〜11y内のデータ識別情報が不一致のとき、読出要求内のデータ識別情報に関連付けられたノード装置識別情報に対応するノード装置に当該読出要求を転送する構成により、例えば、読出対象のデータを格納していないノード装置10b,10dが受けた読出要求を、読出対象のデータを格納しているノード装置10aに転送できるので、分散型データベースシステム100における読出処理を円滑に実行することができる。また、最少のホップ数に対応するノード装置10eに転送する場合、転送経路上のルータ装置(図示せず)の負荷を軽減させることができる。
さらに、各ノード装置10a〜10yが、複製されたデータを他ノード装置から受信し、当該受信したデータをデータ格納部11a〜11yに格納すると、当該格納されたデータに関連付けられたデータ識別情報と、自ノード装置10a〜10yを示すノード装置識別情報“a”,…,“y”とを他ノード装置に送信する構成により、自ノード装置10a〜10yが複製データを格納していることを他ノード装置に通知できるので、各ノード装置10a〜10yが読出要求を受けて読出対象のデータを格納していない場合の転送処理を円滑に実行することができる。
(第2の実施形態)
図10は第2の実施形態に係る分散型データベースシステムの構成の一例を示す模式図であって、図1に示した構成とは異なり、各ノード装置の機能の一部をデータ複製配置処理装置に配置した構成を示している。
各ノード装置20a〜20yは、前述同様に、互いに同一の機能ブロック構成を有するので、以下、ノード装置20aを代表例に挙げて説明する。この代表例のノード装置20aの各部21a,22a,24a,25a,27aの説明に関し、適宜、添字の“a”を他の“b”,…,“y”に読み替え可能となっている。また同様に、代表例以外のノード装置20b,…,20yの図示しない各部21b,22b,24b,25b,27b,…,21y,22y,24y,25y,27yの参照符号を明細書に記載する場合もある。これらのことは、互いに同一の機能ブロック構成を有するデータ複製配置処理装置30a〜30eにおける代表例のデータ複製配置処理装置30aの各部33a,36aの説明についても同様である。
分散型データベースシステム200は、互いに通信可能な複数のノード装置20a〜20yと、これら複数のノード装置20a〜20yと通信可能な複数のデータ複製配置処理装置30a〜30eとから構成されている。
各ノード装置20a〜20yは、データ格納部21a〜21y、アクセス情報格納部22a〜22y、データ処理部24a〜24y、データ要求処理部25a〜25y及びデータ要求転送処理部27a〜27yを備えている。また、各データ複製配置処理装置30a〜30eは、ノード装置配置情報格納部(識別情報格納手段)33a〜33e及びデータ複製配置処理部36a〜36eを備えている。
以下、代表例のノード装置20a及びデータ複製配置処理装置30aのそれぞれの各部について述べる。
但し、データ格納部21a及びアクセス情報格納部22aに格納されている情報は、前述したデータ格納部11a及びアクセス情報格納部12aに格納されている情報と同一であるため、詳細な説明は省略する。また、データ処理部24aの機能についても、前述したデータ処理部14aにおける(f14-1)、(f14-2)及び(f14-4)と同一であるため、詳細な説明は省略する。以下では、第1の実施形態と異なる部分を主に説明する。
ここで、データ要求処理部25aは、前述したデータ要求処理部15aの機能に加え、読出されたアクセス頻度情報により示される値が読出された閾値情報により示される閾値を超えていると、読出し要求に含まれるデータ識別情報に関連付けられたデータをデータ格納部21aから読出し、当該読出されたデータ及び当該読出し要求に含まれたデータ識別情報を含む複製要求をデータ複製配置処理装置30aに送信する機能を更にもつ。
また、データ要求転送処理部27aは、データ処理部24aでの判定結果が“不一致”を示すとき、当該判定に用いた読出し要求に含まれたデータ識別情報を含む送信要求をデータ複製配置処理装置30aに送信し、この送信要求に応じて返信されたノード装置識別情報であって当該データ識別情報を格納しているノード装置を識別するための当該ノード装置識別情報に対応するノード装置に当該読出し要求を転送する機能をもつ。
また、ノード装置配置情報格納部33aは、図11に示すように、各ノード装置20a〜20yに格納されたデータを識別するためのデータ識別情報と、このデータを格納しているノード装置を識別するためのノード装置識別情報とを関連付けて格納している。すなわち、ノード装置配置情報格納部33aは、各ノード装置20a〜20yのデータ格納部21a〜21yに格納されたデータ識別情報及びノード装置識別情報を集中管理している。
また、データ複製配置処理部36aは、当該読出し要求に含まれたデータ識別情報及び当該データ識別情報に関連付けられたデータを含む複製要求を受けると、この受信した複製要求に含まれるデータを複製する処理を実行する。更に、データ複製配置処理部36aは、当該複製要求に含まれたデータ識別情報を格納していないノード装置のノード装置識別情報を読出し、このノード装置に複製データを送信する処理を実行する。例えば、以下の各機能(f36-1)〜(f36-5)をもっている。
(f36-1) 各ノード装置20a〜20yに格納されたデータを識別するためのデータ識別情報と、このデータを格納しているノード装置20a〜20yを識別するためのノード装置識別情報とを受信すると、当該データ識別情報と当該ノード装置識別情報とを関連付けてノード装置配置情報格納部33aに書込む機能。
(f36-2) 当該複製要求を受けると、当該複製要求に含まれるデータを複製する機能。
(f36-3) 当該複製要求に含まれたデータ識別情報に関連付けられたノード装置識別情報とは異なるいずれかのノード装置識別情報をノード装置配置情報格納部33aから読み出す機能。
(f36-4) 当該読出されたノード装置識別情報に対応するノード装置に当該複製されたデータを送信する機能。
(f36-5) 各ノード装置20a〜20yからの送信要求を受けると、この送信要求に含まれるデータ識別情報に関連付けられたノード装置識別情報をノード装置配置情報格納部33aから読出し、このノード装置識別情報を当該送信要求の送信元のノード装置に返信する機能。
次に、以上のように構成された分散型データベースシステム200の動作について、図12を参照しながら説明する。但し、データ識別情報“300”を含む読出し要求が、読出し要求装置1からノード装置20aに向けて送信されたものとする。
始めに、分散型データベースシステム200においては、ノード装置20内のデータ処理部24aが、読出し要求装置1から送信されたデータ識別情報“300”を含む読出し要求を受信する(ステップS10)。
続いて、データ処理部24aは、データ格納部21aに格納されたデータ識別情報のいずれかが、この読出し要求に含まれたデータ識別情報“300”と一致するか否かを判定する(ステップS11)。
ステップS11の判定の結果、データ格納部21aに格納されたデータ識別情報のいずれかがデータ識別情報“300”と一致するので(ステップS11:「一致」)、データ要求処理部25aは、データ識別情報“300”に関連付けられたアクセス頻度情報及び閾値情報をアクセス情報格納部22aから読み出す(ステップS12)。
一方、ステップS11の判定の結果、データ格納部21aに格納されたデータ識別情報のいずれもがデータ識別情報“300”と一致しない場合(ステップS11:「不一致」)には、データ要求転送処理部27aは、この判定に用いた読出し要求に含まれたデータ識別情報“300”を含む送信要求をデータ複製配置処理装置30aに送信し、この送信要求に応じて返信されたノード装置識別情報に対応するノード装置に当該読出し要求を転送し、ノード装置20aにおける読出し動作を終了する。
続いて、データ要求処理部25aは、読出されたアクセス頻度情報により示される値が、読出された閾値情報により示される閾値を超えているか否かを判定する(ステップS13)。
ステップS13の判定の結果、読出されたアクセス頻度情報により示される値が読出された閾値情報により示される閾値を超えていない場合(ステップS13:「超えていない」)には、データ要求処理部25aは、当該読出し要求に含まれたデータ識別情報“300”により識別されるデータをデータ格納部21aから読出し、このデータを読出し要求装置1に送信し、ノード装置20aにおける読出し動作を終了する。
一方、ステップS13の判定の結果、読出されたアクセス頻度情報により示される値が読出された閾値情報により示される閾値を超えている場合(ステップS13:「超えている」)には、データ要求処理部25aは、当該読出し要求に含まれたデータ識別情報“300”に関連付けられたデータをデータ格納部21aから読出し、当該読出されたデータ及び当該読出し要求に含まれたデータ識別情報“300”を含む複製要求をデータ複製配置処理装置30aに送信する(ステップS14)。
データ複製配置処理装置30aにおいては、データ複製配置処理部36aが、この複製要求を受信する(ステップS15)。
続いて、データ複製配置処理部36aは、受信した複製要求に含まれるデータを複製する(ステップS16)。
また、データ複製配置処理部36aは、当該複製要求に含まれたデータ識別情報“300”に関連付けられたノード装置識別情報“a”,“y”とは異なるいずれかのノード装置識別情報(例、“e”)をノード装置配置情報格納部33aから読み出す(ステップS17)。
しかる後、データ複製配置処理部36aは、ステップS16において複製されたデータを当該読出されたノード装置識別情報“e”に対応するノード装置20eに送信する(ステップS18)。
上述したステップS10〜S18の処理の後に、ステップS18において送信された複製データを受信するノード装置20eは、受信された複製データをデータ格納部21eに格納し、この複製データを読出し要求装置1に送信する処理を実行する。
上述したように本実施形態によれば、データの配置を管理するデータ複製配置処理装置30a〜30eと、データを格納する各ノード装置20a〜20yとを備え、各ノード装置20a〜20yが、読出し要求に含まれるデータ識別情報に関連付けられたアクセス頻度情報により示される値が閾値を超えているとき、このデータ識別情報及びこのデータ識別情報に関連付けられたデータを含む複製要求をデータ複製配置処理装置(例、30a)に送信し、データ複製配置処理装置30aが、複製要求内のデータを複製し、複製要求内のデータ識別情報に関連付けられたノード装置識別情報とは異なるいずれかのノード装置識別情報を読み出し、複製されたデータを当該ノード装置識別情報に対応するノード装置に送信する構成により、アクセス頻度の高いデータの複製を他のノード装置にも格納させ、当該データへのアクセスを分散させることができる。
(第3の実施形態)
図13は第3の実施形態に係る分散型データベースシステムの構成の一例を示す模式図であって、図1に示した構成とは異なり、各ノード装置からノード複製配置情報格納部を省略した構成を示している。
各ノード装置40a〜40yは、前述同様に、互いに同一の機能ブロック構成を有するので、以下、ノード装置40aを代表例に挙げて説明する。この代表例のノード装置40aの各部41a,42a,44a〜47aの説明については、適宜、添字の“a”を他の“b”,…,“y”に読み替え可能となっている。また同様に、代表例以外のノード装置40b,…,40yの図示しない各部41b,42b,44b〜47b,…,41y,42y,44y〜47yの参照符号を明細書に記載する場合もある。
分散型データベースシステム300は、例えば2桁の数字を用いたノード装置識別情報“00”,…,“24”により識別され、互いに通信可能な複数のノード装置40a〜40yから構成されている。なお、同実施形態においては、このノード装置識別情報を2桁としたが、このノード装置識別情報の桁数は任意に設定可能である。
各ノード装置40a〜40yは、データ格納部41a〜41y、アクセス情報格納部42a〜42y、データ処理部44a〜44y、データ要求処理部45a〜45y、データ複製配置処理部46a〜46y及びデータ要求転送処理部47a〜47yを備えている。
以下、代表例のノード装置40aの各格納部41a,42aと、各機能部44a,45a,46a,47aについて説明する。
データ格納部41a及びアクセス情報格納部42aに格納されている情報は、図14に示すように、データ識別情報の構造を除いて、前述したデータ格納部11a,21a及びアクセス情報格納部12a,22aに格納されている情報と同一であるため、同一部分についての詳細な説明は省略する。異なる部分は、データ識別情報が、所定の複数の桁に第1のノード装置識別情報を含み、所定の各桁とは異なる桁に第2のノード装置識別情報を含んでいることである。例えば、データ識別情報“030523”の下4桁が第1のノード装置識別情報“05”,“23”を含み、下4桁とは異なる桁に第2のノード装置識別情報“03”を含んでいる。第1のノード装置識別情報“05”,“23”は、データ識別情報“030523”により識別されるデータが、ノード装置識別情報“05”に対応するノード装置40fと、ノード装置識別情報“23”に対応するノード装置40xとに予め格納されていることを示している。第2のノード装置識別情報“03”は、データ識別情報“030523”により識別されるデータを、ノード装置識別情報“03”に対応するノード装置40cが格納していないことを示している。なお、データ識別情報に代えて、データ識別情報のハッシュ値が、所定の複数の桁に第1のノード装置識別情報を含み、所定の各桁とは異なる桁に第2のノード装置識別情報を含んでいるように変形してもよい。また、データ識別情報又はデータ識別情報のハッシュ値における各桁のうち、どの桁に第1のノード装置識別情報が位置し、どの桁に第2のノード装置識別情報が位置するかは任意に設定可能である。さらに、ノード装置識別情報は、数字に限らず、前述したアルファベット等の文字でもよく、この場合、データ識別情報又はデータ識別情報のハッシュ値が、ノード装置識別情報からなる文字を含む構造となる。
また、データ処理部44aの機能については、前述したデータ処理部14aにおける(f14-1)、(f14-2)及び(f14-4)と同一であり、データ要求処理部45aの機能については、前述したデータ要求処理部15aと同一であるため、それぞれ詳細な説明は省略する。
ここで、データ複製配置処理部46aは、前述したデータ複製配置処理部16aの(f16-1)の機能に加え、読出し要求装置1から送信された読出し要求に含まれるデータ識別情報により識別されるデータを格納していない他ノード装置を検出する処理を実行する。例えば、以下の各機能(f46-1)及び(f46-2)を更に備えている。
(f46-1) データ処理部44aでの判定結果が“一致”を示すときの当該“一致”したデータ識別情報又はこのデータ識別情報のハッシュ値に基づいて、当該データ識別情報により識別されるデータを格納しているノード装置を識別するための第1のノード装置識別情報と、当該データ識別情報により識別されるデータを格納していないノード装置を識別するための第2のノード装置識別情報とを検出する機能。但し、本実施形態では、データ識別情報に基づいて、第1及び第2のノード装置識別情報を検出する例について述べる。
(f46-2) 当該検出された第2のノード装置識別情報に対応するノード装置に当該複製されたデータを送信する機能。
また、データ要求転送処理部47aは、データ処理部44aでの判定結果が“不一致”を示すとき、データ複製配置処理部46aで検出された第1のノード装置識別情報に対応するノード装置に当該読出し要求を転送する機能をもつ。
次に、以上のように構成された分散型データベースシステムの動作について図14のフローチャートを参照しながら説明する。但し、データ識別情報“030024”を含む読出し要求が、読出し要求装置1からノード装置40aに向けて送信されたものとする。
始めに、分散型データベースシステム300に備えられたノード装置40a内のデータ処理部44aが、読出し要求装置1から送信された、データ識別情報“030024”を含む読出し要求を受信する(ステップS20)。
続いて、データ処理部44aは、データ格納部41aに格納されたデータ識別情報のいずれかが、受信した読出し要求に含まれたデータ識別情報“030024”と一致するか否かを判定する(ステップS21)。なお、ステップS21は、この判定に代えて、データ処理部44aがデータ識別情報“030024”の所定の桁“00”,“24”のいずれかが自ノード装置40aのノード装置識別情報“00”と一致するか否かを判定するように変形してもよい。ステップS21の判定の結果、データ格納部41aに格納された全てのデータ識別情報がデータ識別情報“030024”と一致しない場合(ステップS21:「不一致」)にはステップS27に進む。また、ステップS27に進むことは、変形したステップS21の判定結果が不一致を示す場合でも同様である。データ複製配置処理部46aは、データ識別情報“030024”に基づいて、データ識別情報“030024”により識別されるデータを格納しているノード装置を識別するための第1のノード装置識別情報“00”,“24”を検出した後に、データ要求転送処理部47aが、検出された第1のノード装置識別情報“24”に対応するノード装置40yに当該読出し要求を転送し(ステップS27)、ノード装置40aにおける読出し動作を終了する。
一方、ステップS21の判定の結果、データ格納部41aに格納されたデータ識別情報のいずれかがデータ識別情報“030024”と一致する場合(ステップS21:「一致」)には、データ要求処理部45aは、データ識別情報“030024”に関連付けられたアクセス頻度情報及び閾値情報をアクセス情報格納部42aから読み出す(ステップS22)。また、ステップS22に進むことは、変形したステップS21の判定結果が一致を示す場合でも同様である。
続いて、データ要求処理部45aは、読出されたアクセス頻度情報により示される値が閾値情報により示される閾値を超えているか否かを判定する(ステップS23)。
ステップS23の判定の結果、アクセス頻度情報により示される値が閾値情報により示される閾値を超えていない場合(ステップS23:「超えていない」)にはステップS28に進む。ここで、データ要求処理部45aは、当該読出し要求に含まれたデータ識別情報“030024”に関連付けられたデータをデータ格納部41aから読出し、このデータを読出し要求装置1に送信し(ステップS28)、ノード装置40aにおける読出し動作を終了する。
一方、ステップS23の判定の結果、アクセス頻度情報により示される値が閾値情報により示される閾値を超えている場合(ステップS23:「超えている」)には、データ複製配置処理部46aは、データ識別情報“030024”に関連付けられたデータをデータ格納部41aから読出し、このデータを複製する(ステップS24)。
続いて、データ複製配置処理部46aは、当該読出し要求に含まれたデータ識別情報“030024”に基づいて、データ識別情報“030024”に関連付けられたデータを格納していないノード装置を識別するための第2のノード装置識別情報“03”を検出する(ステップS25)。
しかる後、データ複製配置処理部46aは、ステップS24において複製されたデータを当該検出された第2のノード装置識別情報“03”に対応するノード装置40cに送信する(ステップS26)。
上述したステップS20〜S26の処理の後に、ステップS26において送信された複製データを受信するノード装置40cは、受信された複製データをデータ格納部41cに格納し、この複製データを読出し要求装置1に送信する処理を実行する。
上述したように本実施形態によれば、前述したノード複製配置情報格納部を持たず、互いに同一の機能ブロック構成をもつ各ノード装置40a〜40yを備え、各ノード装置40a〜40yが、読出し要求に含まれるデータ識別情報に関連付けられたアクセス頻度情報により示される値が閾値を超えているとき、このデータ識別情報に関連付けられたデータを読出して複製し、このデータ識別情報に基づいて、当該データ識別情報に関連付けられたデータを格納していないノード装置を識別するための第2のノード装置識別情報を検出し、複製されたデータを第2のノード装置識別情報に対応するノード装置に送信する構成により、アクセス頻度の高いデータの複製を他のノード装置にも格納させ、当該データへのアクセスを分散させることができる。
以上説明した各実施形態によれば、読出し要求に含まれるデータ識別情報に関連付けられたアクセス頻度情報により示される値が閾値を超えているとき、このデータ識別情報に関連付けられたデータを複製し、複製されたデータを他のノード装置に送信する構成により、アクセス頻度の高いデータへのアクセスを分散させるようにしたので、ノード装置に格納されたデータ毎のアクセス頻度に偏りがあるときでも、読出し処理等の処理実行速度の低下を阻止することができる。
また、以上説明した各実施形態によれば、各ノード装置が、自ノード装置に格納されたデータのアクセス頻度を管理し、アクセス頻度が閾値を超えたデータの複製を、このデータを格納していない他のノード装置に格納する構成により、分散型データベースシステム内の各ノード装置について、最高のアクセス頻度をもつデータへのアクセス負荷に合わせた複製データの数を全てのデータに適用した場合に必要とされるノード装置の数を最大台数とすると、最大台数よりも少ない数のノード装置で構成することができる。
さらに、以上説明した各実施形態によれば、各ノード装置が、複製されたデータを他ノード装置から受信して格納し、この複製されたデータに関連付けられたデータ識別情報と、自ノード装置を示すノード装置識別情報とを他ノード装置に送信する構成により、各データのアクセス頻度が異なっていても、それぞれのアクセス頻度に応じてアクセス実行先が増えるので、分散型データベースシステムを利用する読出し要求装置1は、分散型データベースシステムで管理されるデータを、データ毎の処理速度に大きな差異を生じることなく、利用することができる。
なお、上記の各実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスクなど)、光ディスク(CD−ROM、DVDなど)、光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のMW(ミドルウェア)等が上記実施形態を実現するための各処理の一部を実行しても良い。
さらに、各実施形態における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
また、記憶媒体は1つに限らず、複数の媒体から上記の各実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
なお、各実施形態におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記の各実施形態における各処理を実行するものであって、パソコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
また、各実施形態におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。