説明

分散データ管理システム、分散データ管理方法及び分散データ管理プログラム

【課題】複数のサーバが追加された場合であっても、リアルタイムに、かつスケーラビリティを損なわずにデータを移管することが可能な分散データ管理システムを提供する
【解決手段】分散データ管理システムを構成する複数のサーバ30は、要求信号に含まれるデータの識別子に対応するデータが第一の記憶部31−1に記憶されていない場合に、第二の記憶部31−2に記憶されたアドレス表のうち、当該アドレス表の生成時刻が要求信号に含まれるデータの生成時刻よりも古くかつ最新のアドレス表を用いて、データの前の担当サーバを特定する前担当サーバ特定部37と、特定された前の担当サーバとの間でデータ及び当該データの識別子の転送を行うデータ転送部38と、転送されたデータ及び当該データの識別子を第一の記憶部31−1に記憶させるデータ更新部39と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データを複数のサーバに分散して管理する分散データ管理システム、分散データ管理方法及び分散データ管理プログラムに関する。
【背景技術】
【0002】
データベースのように大規模なデータ管理を行う際に、複数のサーバを接続して高い処理性能を獲得するために、分散データ管理システムが用いられる。分散データ管理システムは、複数のサーバが協調して動作する分散システムであり、当該システム全体で管理されるデータを、個々のサーバが分担して管理するものである。かかる分散データ管理システムは、医療、通信等といった高いリアルタイム性が求められる分野において用いられており、分散データ管理システムを利用するクライアントからのデータ取得要求に対し、当該クライアントのアプリケーションごとに定められた一定時間内にデータを返信することが望まれる。
【0003】
データを複数のサーバに分散して管理する手法として、コンシステント・ハッシングが挙げられる(非特許文献1参照)。図7に示すように、コンシステント・ハッシングは、分散データ管理プログラムを実装するサーバである複数のノード130(130A〜130F)と、ノード130によって管理されるデータのそれぞれに識別子を割り当て、あるノード130が管理するデータの識別子の範囲を、当該ノード130の識別子と、当該ノード130よりも値の小さい識別子を持つノード130の中では最も大きい値の識別子を持つノード130の識別子との間に定める技術である。なお、図7のように、ノード130及びデータを識別子の値の順に並べたものは、コンシステント・ハッシングにおいてID空間と呼ばれる。ここで、ノード130及びデータの識別子は、ハッシュ関数等の無作為な値を算出する手法によって決定されるので、個々のノード130が担当するデータの量は、確率的に等しくなり、分散データ管理システムにおいて、各ノード130に対して平等に近い負荷分散を行うことが可能になる。
【0004】
各ノード130は、他の全てのノード130の識別子と当該ノード130のアドレス(IPアドレス等)が関連付けられたアドレス表を保持する。コンシステント・ハッシングを用いた分散データ管理システムでは、当該システムを構成するノード130の数が増減した場合であっても、複数のノード130間で分担していたデータの担当替えがごく一部で済み、分散データ管理システム全体から見ればノード130の数によらず一定のデータ移動しか発生しない。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】D. Karger, E. Lehman, T. Leighton, M. Levine, D. Lewin, and R. Panigrahy, “Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web,” in Proceedings of the 29th ACM Symposium on Theory of Computing (STOC'97), pp.654-663, May 1997.
【発明の概要】
【発明が解決しようとする課題】
【0006】
ここで、非特許文献1には、ノード130の数を動的に変更した際のデータ移管の具体的手法については、開示されていない。データの移管に関する最も単純な手法としては、ノード130の数の変更時に、全てのデータ送信(データを必要とするクライアントへの送信)・保管(データを担当するノード130での保管)要求の処理を停止し、データを前の担当ノード130から新たな担当ノード130へと全て移管し、その後でデータ送信・保管要求の処理を再開するという手法が考えられる。
【0007】
しかし、医療、通信等といった高リアルタイム性を必要とする分野においては、このようにデータ送信・保管要求を停止して全てのデータを移管するという手法は、データの移管にかかる時間が長くなり、データ送信・保管要求の処理の再開が遅れてしまうため、適用が困難である。
【0008】
そこで、新たなノード130上で実際にデータが必要になった際に、前の担当ノード130からこのデータを新たなノード130へ移管し処理を行う手法が考えられる。かかる手法では、予め全てのデータを移管する手法と比べて、データの移管が散発的に発生するため、データ送信・保管要求を受け付けながらデータの移管を行うことができ、リアルタイム性への影響が少ない。一方で、データの移管が完了するまでの時間は長くなり、全てのデータに対してデータ送信・保管要求等の「実際にデータが必要になる」契機が発生するまで、データの移管は完了しない。
【0009】
このようなデータ移管の手法においては、分散データ管理システムに新たに追加されたノード130にデータ送信・保管要求が届き、ノード130上に処理対象のデータがないことを確認したことを契機に、どのノード130が前の担当ノード130であるかの探索を行うことが考えられる。
【0010】
一般的には、図8(a)に示すように、前の担当ノード130Aは、新規に追加されたノード130Gよりも大きい識別子で、かつ最も識別子の値の近いノード130である可能性が高いため、新たな担当ノード130Gは、ノード130Aへデータの有無の問い合わせを行うことが考えられる。このように、ID空間において隣接するノード130からのデータ移管は、一度に追加されるノード130の数が小さい(例えば、1つのみ)場合には成立する。
【0011】
一方、一度に追加されるノード130の数が多い場合には、図8(b)に示すように、新たな担当ノード130Gと前の担当ノード130Aとの間に、1つ以上の他の新規ノード130(130H,130I,130J)が存在する可能性がある。このような場合、単純にデータ送信・保管要求を受けた新たな担当ノード130Gが、隣接するノード130Hにデータの問い合わせを行っても、問い合わせ先のノード130Hも追加されたばかりで何のデータも持たないため、新たな担当ノード130Gは、所望のデータを取得することができない。
【0012】
ここで、隣接するノード130へ問い合わせた結果、所望のデータを取得できない場合、順繰りに更に隣のノード130(130I,130J,…)へと問い合わせを行う手法が考えられる。かかる手法では、新たな担当ノード130Gと前の担当ノード130Aとの間に隣接して追加されたノード130の台数Nに比例して、実際のデータが発見されるまでに複数ホップ(Nホップ)がかかるため、Nの値に比例してリアルタイム性が損なわれる。
【0013】
前記したように、ノード130の識別子はハッシュ関数等により無作為に与えられるため、Nの値は一定ではないが、追加前の全てのノード130の数に対する追加されたノード130の数の比に比例して大きくなる。
【0014】
リアルタイム性を損ねない手法としては、データ送信・保管要求を受けた新たな担当ノード130Gが所望のデータを持たない場合に、他の全てのノード130へと問い合わせを行うものがある。かかる手法では、データの探索に複数ホップを要しないものの、システム全体への問い合わせを行うため、全ノード130の数に比例して処理負荷が増大し、スケーラビリティを著しく損ねる。
【0015】
本発明は、前記した事情に鑑みて創作されたものであり、複数のサーバが追加された場合であっても、リアルタイムに、かつスケーラビリティを損なわずにデータを移管することが可能な分散データ管理システム、分散データ管理方法及び分散データ管理プログラムを提供することを課題とする。
【課題を解決するための手段】
【0016】
前記課題を解決するため、本発明の分散データ管理システムは、複数のサーバがデータを分散して管理する分散データ管理システムであって、前記サーバは、データと当該データの識別子とが関連付けて記憶される第一の記憶部と、前記複数のサーバの識別子及びアドレスとが関連付けられたアドレス表が記憶される第二の記憶部と、前記複数のサーバの増減時に、前記アドレス表を新たに生成して当該アドレス表の生成時刻とともに前記第二の記憶部に記憶させるアドレス表生成部と、クライアントから送信された、データの識別子と当該データの生成時刻とを含み、前記データの送信又は保管を要求する要求信号を取得する要求信号取得部と、取得された前記要求信号に含まれる前記データの識別子と、前記第二の記憶部に記憶された最新の前記アドレス表の前記複数のサーバの識別子と、に基づいて、前記データの担当サーバを特定する担当サーバ特定部と、前記第二の記憶部に記憶された最新の前記アドレス表のアドレスを用いて、特定された前記担当サーバに前記要求信号を転送する要求信号転送部と、前記データの送信を要求する前記要求信号に含まれる前記データの識別子に基づいて第一の記憶部を参照し、対応する前記データを読み出して前記クライアントへ送信する、又は、前記データの保管を要求する前記要求信号に含まれる前記データの識別子に基づいて前記第一の記憶部を参照し、対応する前記データの保管の成否を判定して判定結果を示す保管成否信号を前記クライアントへ送信する応答部と、前記要求信号に含まれる前記データの識別子に対応するデータが前記第一の記憶部に記憶されていない場合に、前記第二の記憶部に記憶されたアドレス表のうち、当該アドレス表の生成時刻が前記要求信号に含まれる前記データの生成時刻よりも古くかつ最新のアドレス表を用いて、前記データの前の担当サーバを特定する前担当サーバ特定部と、特定された前記前の担当サーバとの間で前記データ及び当該データの識別子の転送を行うデータ転送部と、転送された前記データ及び当該データの識別子を前記第一の記憶部に記憶させるデータ更新部と、を備えることを特徴とする。
【0017】
かかる構成によると、サーバの増減ごとにアドレス表生成時刻を有するアドレス表を生成して第二の記憶部に記憶させ、担当サーバの第一の記憶部のデータ表に所望のデータが記憶されていない場合には、データ生成時刻とアドレス表生成時刻とに基づいて選択した過去のアドレス表に基づいて前の担当サーバを特定し、特定された前の担当サーバから担当サーバへデータを移管するので、複数のサーバが追加された場合であっても、リアルタイムに、かつスケーラビリティを損なわずにデータを移管することができる。
【0018】
前記した分散データ管理システムにおいて、前記第一の記憶部には、前記データ及び当該データの識別子と当該データの生成時刻とが関連付けて記憶されており、前記データ更新部は、転送された前記データ及び当該データの識別子を前記第一の記憶部に記憶させる際に、転送された前記データ及び当該データの識別子を当該データ更新部が取得した時刻、又は、転送された前記データ及び当該データの識別子を当該データ更新部が前記第一の記憶部に記憶させた時刻を当該データの生成時刻として前記第一の記憶部に記憶させ、前記応答部は、前記データ又は前記保管成否信号に前記データの生成時刻を付与して前記クライアントへ送信することが望ましい。
【0019】
かかる構成によると、前の担当サーバから担当サーバへデータを移管した際に、担当サーバがデータを取得した時刻又は担当サーバの第一の記憶部のデータ表にデータを記憶させた時刻をデータ生成時刻として第一の記憶部に記憶させるとともにクライアントへ送信するので、データ移管後において、クライアントに新たなデータ生成時刻に基づいて要求信号を生成させることができる。
【0020】
また、本発明の分散データ管理方法は、複数のサーバがデータを分散して管理する分散データ管理方法であって、前記サーバは、データと当該データの識別子とが関連付けて記憶される第一の記憶部と、前記複数のサーバの識別子及びアドレスとが関連付けられたアドレス表が記憶される第二の記憶部と、を備え、前記複数のサーバの増減時に、前記アドレス表を新たに生成して当該アドレス表の生成時刻とともに前記第二の記憶部に記憶させており、一の前記サーバが、クライアントから送信された、データの識別子と当該データの生成時刻とを含み、前記データの送信又は保管を要求する要求信号を取得するステップと、一の前記サーバが、取得された前記要求信号に含まれる前記データの識別子と、前記第二の記憶部に記憶された最新の前記アドレス表の前記複数のサーバの識別子と、に基づいて、前記データの担当サーバを特定するステップと、一の前記サーバが、前記第二の記憶部に記憶された最新の前記アドレス表のアドレスを用いて、特定された前記担当サーバに前記要求信号を転送するステップと、前記担当サーバが、前記データの送信を要求する前記要求信号に含まれる前記データの識別子に基づいて第一の記憶部を参照し、対応する前記データを読み出して前記クライアントへ送信する、又は、前記データの保管を要求する前記要求信号に含まれる前記データの識別子に基づいて前記第一の記憶部を参照し、対応する前記データの保管の成否を判定して判定結果を示す保管成否信号を前記クライアントへ送信するステップと、を含むとともに、前記要求信号に含まれる前記データの識別子に対応するデータが前記第一の記憶部に記憶されていない場合に、前記担当サーバが、前記第二の記憶部に記憶されたアドレス表のうち、当該アドレス表の生成時刻が前記要求信号に含まれる前記データの生成時刻よりも古くかつ最新のアドレス表を用いて、前記データの前の担当サーバを特定するステップと、前記担当サーバが、前記前の担当サーバとの間で前記データ及び当該データの識別子の転送を行うステップと、前記担当サーバが、転送された前記データ及び当該データの識別子を前記第一の記憶部に記憶させるステップと、を含むことを特徴とする。
【0021】
前記した分散データ管理方法において、前記第一の記憶部には、前記データ及び当該データの識別子と当該データの生成時刻とが関連付けて記憶されており、前記担当サーバは、転送された前記データ及び当該データの識別子を前記第一の記憶部に記憶させる際に、転送された前記データ及び当該データの識別子を当該担当サーバが取得した時刻、又は、転送された前記データ及び当該データの識別子を当該担当サーバが前記第一の記憶部に記憶させた時刻を当該データの生成時刻として前記第一の記憶部に記憶させ、前記担当サーバは、前記データ又は前記保管成否信号に前記データの生成時刻を付与して前記クライアントへ送信することが望ましい。
【0022】
なお、本発明は、コンピュータを前記した分散データ管理システムのサーバの各機能部として機能させるための分散データ管理プログラムとしても具現化可能である。
【発明の効果】
【0023】
本発明によれば、複数のサーバが追加された場合であっても、リアルタイムに、かつスケーラビリティを損ねずにデータを移管することができる。
【図面の簡単な説明】
【0024】
【図1】本発明の実施形態に係る分散データ管理システムを模式的に示す図である。
【図2】図1のサーバの構成を示すブロック図である。
【図3】データ表の一例を示す図である。
【図4】アドレス表の一例を示す図である。
【図5】本発明の実施形態に係る分散データ管理システムの動作例を説明するための図であって、ID空間を示す図である。
【図6】本発明の実施形態に係る分散データ管理システムの動作例を説明するためのフローチャートである。
【図7】従来技術におけるID空間を示す図である。
【図8】従来技術におけるID空間において、ノード(サーバ)が追加された場合を説明するための図であって、(a)は1つのノードが追加されたID空間を示す図、(b)は複数のノードが追加されたID空間を示す図である。
【発明を実施するための形態】
【0025】
以下、本発明の実施形態について、適宜図面を参照しながら説明する。図1に示すように、本発明の実施形態に係る分散データ管理システム1は、クライアント10からの要求信号をロードバランサ20を介して取得して応答するシステムであって、複数のサーバ30(30A,30B,…,30N)を備える。複数のサーバ30は、データを分散して管理しており、図示しないネットワークを介して互いに通信可能に接続されている。
【0026】
<クライアント及びロードバランサ>
クライアント10には、データの識別子と当該データの生成時刻とが関連付けて記憶されている。クライアント10は、利用者による入力装置(キーボード、マウス等)の操作に応じて、分散データ管理システム1に記憶されたデータのクライアント10への送信又は分散データ管理システム1での保管を要求する要求信号を生成し、生成された要求信号を分散データ管理システム1へ送信する。ここで、要求信号には、送信又は保管を要求すべきデータの識別子(データ識別子)と生成時刻(データ生成時刻)とが含まれる。ロードバランサ20は、任意のサーバ30を無作為に選択し、クライアント10から送信された要求信号を選択されたサーバ30へ転送する。なお、クライアント10は、最初に、データ生成時刻を含まない、データの保管を要求する要求信号を生成して分散データ管理システム1へ送信し、後記するようにサーバ30から応答信号に付与されて送信されたデータ生成時刻を取得し、取得されたデータ生成時刻を記憶し、以降はデータ識別子及びデータ生成時刻を引数として要求信号を生成することができる。
【0027】
<サーバ>
複数のサーバ30は、分散データ管理システム1全体で管理すべきデータのうち、当該サーバ30が担当するデータをそれぞれ管理する。サーバ30は、CPU(Central Processing Unit)、RAM(Random Access Memory)、ROM(Read-Only Memory)、入出力回路等から構成されており、図2に示すように、機能部として、第一の記憶部31−1と、第二の記憶部31−2と、アドレス表生成部32と、要求信号取得部33と、担当サーバ特定部34と、要求信号転送部35と、応答部36と、前担当サーバ特定部37と、データ転送部38と、データ更新部39と、を備える。
【0028】
<第一の記憶部>
第一の記憶部31−1には、図3に示すデータ表31aが記憶されている。データ表31aは、サーバ30が担当するデータと、当該データの識別子(データ識別子)と、当該データの生成時刻(データ生成時刻)とを関連付けた表である。
【0029】
<第二の記憶部>
第二の記憶部31−2には、図4に示すアドレス表31bが記憶されている。アドレス表31bは、分散データ管理システム1を構成する全てのサーバ30の識別子(サーバ識別子)と、当該サーバ30のアドレス(IPアドレス等)とを関連付けた表であり、当該アドレス表31bの生成時刻(アドレス表生成時刻)ごとに記憶されている。
【0030】
<アドレス表生成部>
アドレス表生成部32は、分散データ管理システム1を構成するサーバ30の増減時に、アドレス表31bを新たに生成し、新たなアドレス表31bのアドレス表生成時刻とともに第二の記憶部31−2に記憶させる。すなわち、第二の記憶部31−2に記憶されたアドレス表31bは、サーバ30が増減して新たなアドレス表31bが生成されても削除されずに履歴として保存され、サーバ30の増減ごとに増える。なお、サーバ30の増減時に、例えば追加(増設)されたサーバ30にアドレスを付与したり、サーバ30の増減及び新たに付与されたアドレスを他のサーバ30と共有したりする技術としては、公知の技術を採用することが可能であり、ここでは詳しい説明を省略する。
【0031】
<要求信号取得部>
要求信号取得部33は、クライアント10から送信された要求信号をロードバランサ20を介して取得し、担当サーバ特定部34へ出力する。
【0032】
<担当サーバ特定部>
担当サーバ特定部34は、要求信号取得部33から出力された要求信号を取得し、取得された要求信号に含まれるデータ識別子と、第二の記憶部31−2に記憶された最新のアドレス表31bのサーバ識別子と、に基づいて、データの担当サーバを特定する。ここで、担当サーバ特定部34は、既存のコンシステント・ハッシング等の技術を用いて担当サーバを特定することができる。自サーバ30が担当サーバであると特定された場合には、担当サーバ特定部34は、要求信号を応答部36へ出力し、他サーバ30が担当サーバであると特定された場合には、担当サーバ特定部34は、担当サーバのアドレスを第二の記憶部31−2に記憶されたアドレス表31bから読み出し、要求信号及び読み出されたアドレスを要求信号転送部35へ出力する。
【0033】
<要求信号転送部>
要求信号転送部35は、担当サーバ特定部34から出力された要求信号及びアドレスを取得し、かかるアドレスを用いて要求信号を担当サーバの応答部36へ転送する。
【0034】
<応答部>
応答部36は、自サーバ30が担当サーバである場合に、自サーバ30の担当サーバ特定部34から出力された要求信号、又は、非担当サーバである他サーバ30の要求信号転送部35によって転送された要求信号を取得する。要求信号がデータの送信を要求するものである場合には、応答部36は、取得された要求信号に含まれるデータ識別子に基づいて第一の記憶部31−1に記憶されたデータ表31aを参照し、データ識別子に対応するデータを読み出してクライアント10へ送信する。また、要求信号がデータの保管を要求するものである場合には、応答部36は、取得された要求信号に含まれるデータ識別子に基づいて第一の記憶部31−1に記憶されたデータ表31aを参照し、データ識別子に対応するデータがデータ表31aに記憶(保管)されているか否かを判定し、判定結果を示す保管成否信号を生成してクライアント10へ送信する。
【0035】
なお、担当サーバである自サーバ30が分散データ管理システム1に追加されたばかりで、データ表31aに所望のデータが記憶されていない場合がある。この場合には、応答部36は、要求信号を前担当サーバ特定部37へ出力する。
【0036】
<前担当サーバ特定部>
前担当サーバ特定部37は、応答部36から出力された要求信号を取得し、取得された要求信号に含まれるデータ生成時刻に基づいて第二の記憶部31−2に記憶されたアドレス表31bを参照し、データ生成時刻よりも古くかつ最新のアドレス表生成時刻を有するアドレス表31bを特定する。前担当サーバ特定部37は、取得された要求信号に含まれるデータ識別子と、特定されたアドレス表31bのサーバ識別子と、に基づいて、データの直前の担当サーバ(前担当サーバ)を特定する。ここで、前担当サーバ特定部37は、担当サーバ特定部34と同様に、既存のコンシステント・ハッシング等の技術を用いて前担当サーバを特定することができる。データ生成時刻よりも古くかつ最新のアドレス表生成時刻を有するアドレス表31bは、所望のデータの担当ノードの更新前のアドレス表に相当するため、かかるアドレス表31bを用いると、担当ノード更新前(担当ノードの更新が行われていない場合は、データの分散データ管理システム1への最初の格納時)の担当ノード、すなわち前担当ノードを特定することができる。前担当サーバ特定部37は、自サーバ30のアドレス及び前担当サーバのアドレスを第二の記憶部31−2に記憶されたアドレス表31bから読み出し、要求信号及び読み出されたアドレスをデータ転送部38へ出力する。
【0037】
<データ転送部>
自サーバ30が担当サーバであってデータを保管していないデータ転送部38は、前担当サーバ特定部37から出力された要求信号及びアドレスを取得し、取得された要求信号及びアドレスに基づいて、前担当サーバのデータ転送部38との間でデータの転送を行い、前担当サーバからデータ及び当該データのデータ識別子を取得し、データ更新部39へ出力する。
【0038】
<データ更新部>
データ更新部39は、データ転送部38から出力されたデータ及びデータ識別子を取得し、取得されたデータを第一の記憶部31−1のデータ表31aに記憶させる。
【0039】
≪データ移管≫
ここで、自サーバ30の第一の記憶部31−1のデータ表31aに所望のデータが記憶されていない場合の、自サーバ30及び前担当サーバのデータ転送部38、データ更新部39及び応答部36のデータ移管に関する機能について詳細に説明する。
【0040】
自サーバ30が現在の担当サーバ(新担当サーバ)であってデータを保管していないデータ転送部38は、要求信号及び自サーバ30のアドレスを含むデータ転送依頼信号を、前担当サーバのアドレスを用いて前担当サーバのデータ転送部38へ送信する。
【0041】
前担当サーバのデータ転送部38は、新担当サーバのデータ転送部38によって送信されたデータ転送依頼信号を取得し、取得されたデータ転送依頼信号に含まれる要求信号のデータ識別子をデータ更新部39へ出力する。
【0042】
前担当サーバのデータ更新部39は、データ転送部38から出力されたデータ識別子を取得し、取得されたデータ識別子に基づいて第一の記憶部31−1に記憶されたデータ表31aを参照し、データ識別子に対応するデータを読み出し、データ識別子及び読み出されたデータをデータ転送部38へ出力する。ここで、データ更新部39は、読み出したデータ及び当該データのデータ識別子(並びに当該データのデータ生成時刻)をデータ表31aから削除する。
【0043】
前担当サーバのデータ転送部38は、データ更新部39から出力されたデータ及びデータ識別子を取得し、取得されたデータ及びデータ識別子を、新担当サーバのアドレスを用いて新担当サーバのデータ転送部38へ送信する。
【0044】
新担当サーバのデータ転送部38は、前担当サーバのデータ転送部38によって送信されたデータ及びデータ識別子を取得し、取得されたデータ及びデータ識別子をデータ更新部39へ出力する。
【0045】
新担当サーバのデータ更新部39は、データ転送部38から出力されたデータ及びデータ識別子を取得し、取得されたデータ及びデータ識別子を第一の記憶部31−1のデータ表31aに記憶させるとともに、更新通知信号を応答部36へ出力する。ここで、新担当サーバのデータ更新部39は、前担当サーバから転送されてきたデータ及びデータ識別子を第一の記憶部31−1のデータ表31aに記憶させる際に、前担当サーバから転送されてきたデータ及びデータ識別子を当該データ更新部39が取得した時刻、又は、前担当サーバから転送されてきたデータ及びデータ識別子を当該データ更新部39がデータ表31aに記憶させた時刻を当該データのデータ生成時刻としてデータ表31aに記憶させる。
【0046】
新担当サーバの応答部36は、データ更新部39から出力された更新通知信号を取得し、取得された更新通知信号に応じて、データ又は保管成否信号をクライアント10へ送信する。この際、新担当サーバの応答部36は、要求信号に含まれるデータ識別信号に基づいて第一の記憶部31−1のデータ表31aに記憶されたデータ生成時刻を読み出し、データ又は保管成否信号にデータ生成時刻を付与してクライアント10へ送信することができる。
【0047】
クライアント10は、応答部36によって送信されたデータ又は保管成否信号とデータ生成時刻とを取得すると、取得されたデータ生成時刻に基づいて、データ識別子と関連付けて記憶されたデータ生成時刻を更新する。
【0048】
なお、前担当サーバのデータ更新部39が所望のデータを読み出すことができなかった場合(前担当サーバのデータ表31aに所望のデータが無い場合)には、前担当サーバのデータ更新部39は、データが無い旨を示す信号をデータ転送部38へ出力し、前担当サーバのデータ転送部38は、データが無い旨を示す信号を新担当サーバのデータ転送部38へ送信する。新担当サーバのデータ転送部38は、データが無い旨を示す信号を取得し、取得された信号をデータ更新部39を介して応答部36へ出力する(データ更新部39を介さずに応答部36へ直接出力する構成でも可)。新担当サーバの応答部36は、データが無い旨を示す保管成否信号を生成し、クライアント10へ送信する。
【0049】
<動作例>
続いて、本発明の実施形態に係る分散データ管理システム1の動作例について、図5及び図6を参照して説明する(適宜図1〜図4参照)。かかる動作例では、図5に示すように、サーバ30A〜30Fによって構成された分散データ管理システム1に対して、新たなサーバ30G,30H,30I,30Jがサーバ30F,30A間に追加され、あるデータの担当サーバが、サーバ30G〜30Jの追加によって、サーバ30Aからサーバ30Hに変更されているものとする。
【0050】
まず、クライアント10が、あるデータの要求信号をロードバランサ20を介してサーバ30Fへ送信する。サーバ30Fの要求信号取得部33が、要求信号を取得すると(ステップS1)、サーバ30Fの担当サーバ特定部34が、要求信号に含まれるデータ識別子と、最新のアドレス表31bに記憶された全サーバ30のサーバ識別子と、に基づいて、データの担当サーバを特定する。
【0051】
本動作例では、担当サーバはサーバ30Fではなくサーバ30Hであるため(ステップS2でNo)、サーバ30Fの要求信号転送部35が、要求信号を担当サーバであるサーバ30Hの応答部36へ送信する(ステップS3)。なお、サーバ30Fが担当サーバである場合には(ステップS2でYes)、サーバ30Fの担当サーバ特定部34が、要求信号をサーバ30Fの応答部36へ出力し、本フローはステップS4へ移行する。
【0052】
ステップS3の実行後、担当サーバであるサーバ30Hの応答部36が、要求信号を取得し、取得された要求信号に含まれるデータ識別子に基づいて、第一の記憶部31−1のデータ表31aからデータを探索する。本動作例では、サーバ30Hのデータ表31aには所望のデータが記憶されていないため(ステップS4でNo)、前担当サーバ特定部37が、要求信号に含まれるデータ生成時刻よりも古くかつ最新のアドレス表生成時刻を有するアドレス表31bに記憶されたサーバ識別子と、要求信号に含まれるデータ識別子と、に基づいて、データの前担当サーバを特定する(ステップS5)。なお、サーバ30Hのデータ表31aに所望のデータが記憶されている場合には(ステップS4でYes)、本フローはステップS7へ移行する。
【0053】
ステップS5の実行後、担当サーバであるサーバ30Hのデータ転送部38及びデータ更新部39と、前担当サーバであるサーバ30Aのデータ転送部38及びデータ更新部39とが、データの移管を行うとともに、担当サーバであるサーバ30Hのデータ更新部39が、データ生成時刻を更新する(ステップS6)。ステップS6によって、第一の記憶部31−1のデータ表31aに、データ及びデータ識別子が記憶され、また、データ及びデータ識別子を取得した時刻又は記憶させた時刻がデータ生成時刻として記憶される。
【0054】
続いて、担当サーバであるサーバ30Hの応答部36が、クライアントへ応答する(ステップS7)。要求信号がデータの送信を要求するものである場合には、応答部36は、データ及びデータ生成時刻をクライアント10へ送信し、要求信号がデータの保管を要求するものである場合には、応答部36は、保管成否信号及びデータ生成時刻をクライアント10へ送信する。
【0055】
本発明の実施形態に係る分散データ管理システム1は、サーバ30の増減ごとにアドレス表生成時刻を有するアドレス表31bを生成して第二の記憶部31−2に記憶させ、担当サーバの第一の記憶部31−1のデータ表に所望のデータが記憶されていない場合には、データ生成時刻とアドレス表生成時刻とに基づいて選択した過去のアドレス表31bに基づいて前担当サーバを特定し、特定された前担当サーバから新担当サーバへデータを移管するので、複数のサーバ30が追加された場合であっても、隣接するサーバ30に順にデータの有無を問い合わせたり、全てのサーバ30にデータの有無を問い合わせたりする必要が無く、前担当サーバにのみ1ホップでデータの有無を確認することができ、リアルタイムに、かつスケーラビリティを損なわずにデータを移管することができる。
【0056】
また、本発明の実施形態に係る分散データ管理システム1は、前担当サーバから新担当サーバへデータを移管した際に、新担当サーバがデータを取得した時刻又は新担当サーバの第一の記憶部31−1のデータ表31aにデータを記憶させた時刻をデータ生成時刻としてデータ表31aに記憶させるとともにクライアント10へ送信するので、データ移管後において、クライアント10に新たなデータ生成時刻に基づいて要求信号を生成させることができる。
【0057】
以上、本発明の実施形態について図面を参照して説明したが、本発明は前記実施形態に限定されず、本発明の要旨を逸脱しない範囲で適宜変更可能である。例えば、本発明は、コンピュータを前記サーバ30として機能させるための分散データ管理プログラムとしても具現化可能である。また、サーバ30及びデータの識別子の決定手法は、ハッシュ関数によるものに限定されず、サーバ30のアドレスは、IPアドレスに限定されない。また、クライアント10及びサーバ30は、それぞれ、一のコンピュータによって具現化されてもよく、複数のコンピュータによって具現化されてもよい。
【符号の説明】
【0058】
1 分散データ管理システム
30 サーバ(ノード)
31−1 第一の記憶部
31−2 第二の記憶部
32 アドレス表生成部
33 要求信号取得部
34 担当サーバ特定部
35 要求信号転送部
36 応答部
37 前担当サーバ特定部
38 データ転送部
39 データ更新部

【特許請求の範囲】
【請求項1】
複数のサーバがデータを分散して管理する分散データ管理システムであって、
前記サーバは、
データと当該データの識別子とが関連付けて記憶される第一の記憶部と、
前記複数のサーバの識別子及びアドレスとが関連付けられたアドレス表が記憶される第二の記憶部と、
前記複数のサーバの増減時に、前記アドレス表を新たに生成して当該アドレス表の生成時刻とともに前記第二の記憶部に記憶させるアドレス表生成部と、
クライアントから送信された、データの識別子と当該データの生成時刻とを含み、前記データの送信又は保管を要求する要求信号を取得する要求信号取得部と、
取得された前記要求信号に含まれる前記データの識別子と、前記第二の記憶部に記憶された最新の前記アドレス表の前記複数のサーバの識別子と、に基づいて、前記データの担当サーバを特定する担当サーバ特定部と、
前記第二の記憶部に記憶された最新の前記アドレス表のアドレスを用いて、特定された前記担当サーバに前記要求信号を転送する要求信号転送部と、
前記データの送信を要求する前記要求信号に含まれる前記データの識別子に基づいて第一の記憶部を参照し、対応する前記データを読み出して前記クライアントへ送信する、又は、前記データの保管を要求する前記要求信号に含まれる前記データの識別子に基づいて前記第一の記憶部を参照し、対応する前記データの保管の成否を判定して判定結果を示す保管成否信号を前記クライアントへ送信する応答部と、
前記要求信号に含まれる前記データの識別子に対応するデータが前記第一の記憶部に記憶されていない場合に、前記第二の記憶部に記憶されたアドレス表のうち、当該アドレス表の生成時刻が前記要求信号に含まれる前記データの生成時刻よりも古くかつ最新のアドレス表を用いて、前記データの前の担当サーバを特定する前担当サーバ特定部と、
特定された前記前の担当サーバとの間で前記データ及び当該データの識別子の転送を行うデータ転送部と、
転送された前記データ及び当該データの識別子を前記第一の記憶部に記憶させるデータ更新部と、
を備えることを特徴とする分散データ管理システム。
【請求項2】
前記第一の記憶部には、前記データ及び当該データの識別子と当該データの生成時刻とが関連付けて記憶されており、
前記データ更新部は、転送された前記データ及び当該データの識別子を前記第一の記憶部に記憶させる際に、転送された前記データ及び当該データの識別子を当該データ更新部が取得した時刻、又は、転送された前記データ及び当該データの識別子を当該データ更新部が前記第一の記憶部に記憶させた時刻を当該データの生成時刻として前記第一の記憶部に記憶させ、
前記応答部は、前記データ又は前記保管成否信号に前記データの生成時刻を付与して前記クライアントへ送信する
ことを特徴とする請求項1に記載の分散データ管理システム。
【請求項3】
複数のサーバがデータを分散して管理する分散データ管理方法であって、
前記サーバは、データと当該データの識別子とが関連付けて記憶される第一の記憶部と、前記複数のサーバの識別子及びアドレスとが関連付けられたアドレス表が記憶される第二の記憶部と、を備え、前記複数のサーバの増減時に、前記アドレス表を新たに生成して当該アドレス表の生成時刻とともに前記第二の記憶部に記憶させており、
一の前記サーバが、クライアントから送信された、データの識別子と当該データの生成時刻とを含み、前記データの送信又は保管を要求する要求信号を取得するステップと、
一の前記サーバが、取得された前記要求信号に含まれる前記データの識別子と、前記第二の記憶部に記憶された最新の前記アドレス表の前記複数のサーバの識別子と、に基づいて、前記データの担当サーバを特定するステップと、
一の前記サーバが、前記第二の記憶部に記憶された最新の前記アドレス表のアドレスを用いて、特定された前記担当サーバに前記要求信号を転送するステップと、
前記担当サーバが、前記データの送信を要求する前記要求信号に含まれる前記データの識別子に基づいて第一の記憶部を参照し、対応する前記データを読み出して前記クライアントへ送信する、又は、前記データの保管を要求する前記要求信号に含まれる前記データの識別子に基づいて前記第一の記憶部を参照し、対応する前記データの保管の成否を判定して判定結果を示す保管成否信号を前記クライアントへ送信するステップと、
を含むとともに、
前記要求信号に含まれる前記データの識別子に対応するデータが前記第一の記憶部に記憶されていない場合に、前記担当サーバが、前記第二の記憶部に記憶されたアドレス表のうち、当該アドレス表の生成時刻が前記要求信号に含まれる前記データの生成時刻よりも古くかつ最新のアドレス表を用いて、前記データの前の担当サーバを特定するステップと、
前記担当サーバが、前記前の担当サーバとの間で前記データ及び当該データの識別子の転送を行うステップと、
前記担当サーバが、転送された前記データ及び当該データの識別子を前記第一の記憶部に記憶させるステップと、
を含むことを特徴とする分散データ管理方法。
【請求項4】
前記第一の記憶部には、前記データ及び当該データの識別子と当該データの生成時刻とが関連付けて記憶されており、
前記担当サーバは、転送された前記データ及び当該データの識別子を前記第一の記憶部に記憶させる際に、転送された前記データ及び当該データの識別子を当該担当サーバが取得した時刻、又は、転送された前記データ及び当該データの識別子を当該担当サーバが前記第一の記憶部に記憶させた時刻を当該データの生成時刻として前記第一の記憶部に記憶させ、
前記担当サーバは、前記データ又は前記保管成否信号に前記データの生成時刻を付与して前記クライアントへ送信する
ことを特徴とする請求項3に記載の分散データ管理方法。
【請求項5】
複数のコンピュータがデータを分散して管理するときに用いられる分散データ管理プログラムであって、
データと当該データの識別子とが関連付けて記憶される第一の記憶部と、前記複数のサーバの識別子及びアドレスとが関連付けられたアドレス表が記憶される第二の記憶部と、を備えるコンピュータを、
前記複数のサーバの増減時に、前記アドレス表を新たに生成して当該アドレス表の生成時刻とともに前記第二の記憶部に記憶させるアドレス表生成部、
クライアントから送信された、データの識別子と当該データの生成時刻とを含み、前記データの送信又は保管を要求する要求信号を取得する要求信号取得部、
取得された前記要求信号に含まれる前記データの識別子と、前記第二の記憶部に記憶された最新の前記アドレス表の前記複数のサーバの識別子と、に基づいて、前記データの担当サーバを特定する担当サーバ特定部、
前記第二の記憶部に記憶された最新の前記アドレス表のアドレスを用いて、特定された前記担当サーバに前記要求信号を転送する要求信号転送部、
前記データの送信を要求する前記要求信号に含まれる前記データの識別子に基づいて第一の記憶部を参照し、対応する前記データを読み出して前記クライアントへ送信する、又は、前記データの保管を要求する前記要求信号に含まれる前記データの識別子に基づいて前記第一の記憶部を参照し、対応する前記データの保管の成否を判定して判定結果を示す保管成否信号を前記クライアントへ送信する応答部、
前記要求信号に含まれる前記データの識別子に対応するデータが前記第一の記憶部に記憶されていない場合に、前記第二の記憶部に記憶されたアドレス表のうち、当該アドレス表の生成時刻が前記要求信号に含まれる前記データの生成時刻よりも古くかつ最新のアドレス表を用いて、前記データの前の担当サーバを特定する前担当サーバ特定部、
特定された前記前の担当サーバとの間で前記データ及び当該データの識別子の転送を行うデータ転送部、及び、
転送された前記データ及び当該データの識別子を前記第一の記憶部に記憶させるデータ更新部、
として機能させるための分散データ管理プログラム。
【請求項6】
前記第一の記憶部には、前記データ及び当該データの識別子と当該データの生成時刻とが関連付けて記憶されており、
前記データ更新部は、転送された前記データ及び当該データの識別子を前記第一の記憶部に記憶させる際に、転送された前記データ及び当該データの識別子を当該データ更新部が取得した時刻、又は、転送された前記データ及び当該データの識別子を当該データ更新部が前記第一の記憶部に記憶させた時刻を当該データの生成時刻として前記第一の記憶部に記憶させ、
前記応答部は、前記データ又は前記保管成否信号に前記データの生成時刻を付与して前記クライアントへ送信する
ことを特徴とする請求項5に記載の分散データ管理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2013−3677(P2013−3677A)
【公開日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願番号】特願2011−131524(P2011−131524)
【出願日】平成23年6月13日(2011.6.13)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り (1)社団法人電子情報通信学会が2011年2月24日に発行した「電子情報通信学会技術研究報告(信学技報)」Vol.110No.448 407頁〜410頁において発表 (2)社団法人電子情報通信学会が2011年3月3日〜4日に開催した「電子情報通信学会〔ネットワークシステム研究会〕」において、3月4日に発表
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】