(57)【特許請求の範囲】
【請求項１】
クライアント装置から受信した要求信号を、複数のデータ管理サーバに振り分ける振り分けサーバと、前記振り分けサーバから受信した要求信号に基づき、自身が記憶するデータについて処理を実行する複数の前記データ管理サーバと、前記データ管理サーバに記憶されたデータの欠損を検出する欠損データ特定装置と、を備える分散データベースシステムであって、
前記振り分けサーバは、コンシステントハッシュリング上に、前記データ管理サーバに固有な識別子を所定のハッシュ関数にかけて算出したハッシュ値を昇順に配置すると共に、受信した前記要求信号に付されるデータに固有なキーを前記所定のハッシュ関数にかけて算出したハッシュ値を配置することにより、前記受信した要求信号の振り分け先となる前記データ管理サーバを決定する、振り分け手法を採用すると共に、
前記データ管理サーバそれぞれは、自身に振り分けられた前記要求信号に対応するデータを原本データとして記憶しておき、前記コンシステントハッシュリング上において隣接する所定の複製数の他のデータ管理サーバに対し、前記原本データの複製データを生成して送信することにより、当該複製データを他のデータ管理サーバに記憶させる冗長化手法を採用しており、
前記振り分けサーバは、
前記コンシステントハッシュリング上において前記データ管理サーバそれぞれが振り分け先となる担当範囲を示す、前記データのキーのハッシュ値の範囲を格納する分散ハッシュ情報が記憶される記憶部と、
受信した前記要求信号に付される前記キーのハッシュ値を算出し、前記分散ハッシュ情報に基づき決定した振り分け先の前記データ管理サーバに当該要求信号を転送する振り分け処理部と、
複数の前記データ管理サーバの死活を監視し、死活状態に変化があると前記分散ハッシュ情報の前記担当範囲を変更する死活監視部と、
変更された分散ハッシュ情報を含む分散ハッシュ情報変更通知信号を前記欠損データ特定装置に送信する変更通知部と、を備え、
前記欠損データ特定装置は、
前記受信した分散ハッシュ情報変更通知信号に含まれる分散ハッシュ情報を、新世代の分散ハッシュ情報とし、当該受信以前に受信していた分散ハッシュ情報を、旧世代の分散ハッシュ情報として記憶する記憶部と、
前記新世代の分散ハッシュ情報と前記旧世代の分散ハッシュ情報を比較し、前記データ管理サーバの増減を判定する増減検出部と、
前記判定の結果、前記データ管理サーバが増加していた場合、または、前記旧世代の分散ハッシュ情報が記憶されていない場合に、前記データ管理サーバそれぞれに対応付けてダミーデータを生成し、前記生成したダミーデータを含むダミーデータ登録要求信号を、前記振り分けサーバを介して、前記ダミーデータの対になる前記データ管理サーバに送信することにより前記ダミーデータを登録させるダミーデータ登録部と、
前記判定の結果、前記データ管理サーバが減少していた場合、前記減少したデータ管理サーバに対応付けられたダミーデータの削除を要求するダミーデータ削除要求信号を、前記振り分けサーバを介して、前記減少したデータ管理サーバに送信し、前記減少したデータ管理サーバに対応付けられたダミーデータを削除できないことにより、データの欠損を検出するダミーデータ削除部と、
当該減少したデータ管理サーバの前記コンシステントハッシュリング上での担当範囲で示される、前記データのキーのハッシュ値の範囲を、前記旧世代の分散ハッシュ情報に基づき抽出し、前記原本データおよび前記所定の複製数の複製データが失われた欠損データのキーの範囲として特定する警報通知部と、を備えること
を特徴とする分散データベースシステム。
【請求項２】
前記欠損データ特定装置は、
ランダムにキーを生成し、当該キーを前記所定のハッシュ関数にかけて算出したハッシュ値が前記新世代の分散ハッシュ情報に示される前記データ管理サーバの中から抽出したデータ管理サーバの振り分け先となる担当範囲に含まれるまで、当該キーの生成と、当該キーのハッシュ値の算出を繰り返し、当該キーが、前記抽出したデータ管理サーバの振り分け先となる担当範囲に含まれる場合に、当該キーを、前記抽出したデータ管理サーバに対応付けた前記ダミーデータのキーとして決定するキー生成部を、
さらに備えることを特徴とする請求項１に記載の分散データベースシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のサーバが協調してデータ処理を行うクラスタ構成の分散データベースシステムに関する。
【背景技術】
【０００２】
クラウドコンピューティングのストレージには、多量のデータを保持し、効率的に処理する一方で、故障等が起きた場合でもデータの損失がないことが求められる。これに関し、フロントエンドとなるサーバと、複数のサーバで構成され、多量のデータをサーバ毎に分散して保持・管理するクラスタと、を備える分散データベースシステムが提案されている。
【０００３】
フロントエンドとなるサーバは、データの登録、削除、参照等の要求を受け付け、それらの要求を、データを保持・管理するサーバに振り分ける。データを保持・管理するサーバは、振り分けられた要求を処理する。
また、データを保持するサーバは、そのデータの複製（複製データ）を１つ以上生成し、サーバ間でその複製データを送受信することにより、複製データを生成したサーバ以外の他のサーバが複製データを保持する。これは、１つのサーバに故障等が起きた場合でも、複製データが存在することによりデータの欠損を避けるためである。
なお、以下において、フロントエンドとなるサーバを振り分けサーバ、クラスタを構成し、データを分散して保持するサーバそれぞれをデータ管理サーバと呼ぶ。
【０００４】
データを分散して保持するために、振り分けサーバは、どのデータをどのデータ管理サーバに振り分ければよいかの組み合わせを管理し、データの登録、削除、参照等の要求を正しい振り分け先に転送する必要がある。また、データ管理サーバの故障等が起きた場合には、データ管理サーバのクラスタ構成が変化するため、どのデータをどのデータ管理サーバに振り分ければよいかの組合せを、構成の変化に応じて変更する必要がある。これらを実現するための技術として、コンシステントハッシュ法を用いた技術が知られている（例えば、特許文献１、非特許文献１参照）。
【０００５】
コンシステントハッシュ法では、振り分け先として仮想ノードの概念を導入する場合がある。仮想ノードは、振り分けアルゴリズムにおいて、１つのデータ管理サーバ（物理ノード）に対応付けて設定される論理的なデータ管理サーバであり、物理的なデータ管理サーバとは多対１の関係にある。この仮想ノードは、クラスタを構成する物理的なデータ管理サーバの負荷のばらつきを低減させるために導入される。
また、コンシステントハッシュ法において、データの登録、削除等の要求には、そのデータを振り分けるためのキー（そのデータに固有な識別子）となる情報が設定される。例えば、データの登録要求では、そのデータ登録要求に設定されたキーを所定のハッシュ関数にかけて、そのキーのハッシュ値を求める。そして、そのキーのハッシュ値と、分散ハッシュテーブルとにより、その要求の振り分け先となるデータ管理サーバ（仮想ノード）を求め、そのデータ管理サーバ（仮想ノード）に当該要求が転送され、登録処理が実行される。なお、以降の説明においては、データ管理サーバに仮想ノードが設定されているものとして説明する。
【０００６】
図１は、コンシステントハッシュ法のアルゴリズムの説明するための図である。コンシステントハッシュ法では、ハッシュ関数の出力であるハッシュ値の集合を線で表し、図１（ａ）に示すように、その最大値と最小値とを結んでリング（コンシステントハッシュリング）として表現する。コンシステントハッシュリング上には、各仮想ノードの仮想ノードＩＤ（「Ａ」，「Ｂ」，…，「Ｙ」）に対応したハッシュ値（「ａ」，「ｂ」，…，「ｙ」）が配置される。なお、以下の説明および図において、例えば、仮想ノードＩＤが「Ａ」の仮想ノードのことを仮想ノード「Ａ」、仮想ノードＩＤが「Ｂ」の仮想ノードのことを仮想ノード「Ｂ」等と表現することがある。
【０００７】
そして、ある仮想ノード（例えば、仮想ノード「Ｂ」）は、コンシステントハッシュリング上での自身のハッシュ値「ｂ」から反時計回り方向に隣接する仮想ノード（仮想ノード「Ａ」）のハッシュ値「ａ」の次のハッシュ値から、その仮想ノード（仮想ノード「Ｂ」）自身のハッシュ値「ｂ」までのハッシュ値の範囲（ａ＜仮想ノード「Ｂ」が担当するハッシュ値≦ｂ）を、担当範囲とする。
【０００８】
また、図１（ｂ）は分散ハッシュテーブルであり、図１（ａ）に示したコンシステントハッシュリングをテーブルで表現したものである。分散ハッシュテーブルでは、仮想ノードのハッシュ値の順にレコードがソートされ、１行上のレコードの仮想ノードのハッシュ値の次の値から、自身の仮想ノードのハッシュ値までの範囲が、その仮想ノードが担当するハッシュ値の担当範囲となる。図１（ｂ）では、例えば、仮想ノード「Ｂ」のレコードの１行上のレコードを参照し、そのレコードに示される仮想ノード「Ａ」のハッシュ値「ａ」の次のハッシュ値から、その仮想ノード（仮想ノード「Ｂ」）自身のハッシュ値「ｂ」までのハッシュ値の範囲（ａ＜仮想ノード「Ｂ」が担当するハッシュ値≦ｂ）が、仮想ノード「Ｂ」が担当するハッシュ値の範囲（担当範囲）となる。
【０００９】
つまり、この図１（ａ）のコンシステントハッシュリングと、図１（ｂ）の分散ハッシュテーブルは、共に、各仮想ノードの担当範囲（ハッシュ値の範囲）を表している。
コンシステントハッシュ法では、登録要求等のキーのハッシュ値をハッシュ関数により求め、そのハッシュ値が、どの仮想ノードが担当するハッシュ値の範囲（担当範囲）に含まれるかにより、その登録要求等の振り分け先となる仮想ノードを決定する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１３−０２５４９７号公報
【非特許文献】
【００１１】
【非特許文献１】D. Karger, et al.,“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)、May 1997、pp.654-663、［online］、［平成２５年７月２７日検索］、インターネット<URL:http://thor.cs.ucsb.edu/~ravenben/papers/coreos/KLL+97.pdf>
【発明の概要】
【発明が解決しようとする課題】
【００１２】
コンシステントハッシュ法を用いた分散データベースシステムでは、複製の数＋１（冗長数）以上のデータ管理サーバが一度に故障した場合に、特定の仮想ノードの担当範囲のデータが全て欠損する可能性がある。
【００１３】
図２は、コンシステントハッシュ法における、データ管理サーバの原本データと複製データの保存手法を説明するための図である。
複製の数がｎの場合、仮想ノードに対応するデータ管理サーバは、該当仮想ノードのコンシステントハッシュリング上での担当範囲のデータである原本データと、コンシステントハッシュリングの該当仮想ノードから反時計回り方向に連続するｎ個の仮想ノードの複製データとを保存する。例えば、複製の数が「２」（ｎ＝２）の場合、図２に示すように、仮想ノード「Ｃ」（仮想ノードＩＤ：「Ｃ」）に対応するデータ管理サーバは、仮想ノード「Ｃ」の原本データと、仮想ノード「Ａ」，「Ｂ」それぞれの原本データを複製した複製データとが保存される。言い換えると、ある仮想ノードの複製データは、その仮想ノードから時計回り方向に連続するｎ個の仮想ノードの、対応するデータ管理サーバにおいて保存される。図２においては、仮想ノード「Ａ」の複製データは、仮想ノード「Ｂ」，「Ｃ」に対応するデータ管理サーバにおいて保存される。
【００１４】
以上を踏まえると、コンシステントハッシュリングに沿って、複製の数ｎ＋１個（冗長数）以上の連続する仮想ノードについて、これらの仮想ノードに対応するデータ管理サーバが一度に故障等すると、欠損データが発生する。なお、本実施形態における欠損データとは、クラスタを構成する全てのデータ管理サーバにおいて、原本データ、複製データのいずれもが欠損したデータを意味する。例えば、複製の数が「２」の場合、仮想ノード「Ａ」，「Ｂ」，「Ｃ」に対応するデータ管理サーバが一度に故障等すると、仮想ノード「Ａ」のコンシステントハッシュリング上での担当範囲のデータが欠損データとなる。
【００１５】
データが欠損した場合、バックアップデータ等により、故障した仮想ノードの担当範囲に含まれる欠損した各データをリストアする必要がある。しかし、仮想ノードは、対応するデータ管理サーバが故障すると、分散ハッシュテーブルやコンシステントハッシュリングから消滅してしまうため、どの仮想ノードのデータが欠損したかを特定するのは難しい。
【００１６】
図３は、データ管理サーバが故障した場合の仮想ノードの担当範囲の変更を説明するための図である。
データ管理サーバが故障すると、対応する仮想ノードは消滅する。具体的には、分散ハッシュテーブルから該当仮想ノードのレコードが削除される。その結果、該当仮想ノードの担当範囲は、分散ハッシュテーブルにおいて次のレコードとなる仮想ノードに引き継がれる。図３（ａ）に示す例では、仮想ノード「Ｂ」に対応するデータ管理サーバが故障したため、該当する仮想ノード「Ｂ」のレコードが削除されることを示している。その結果、仮想ノード「Ｂ」の担当範囲は、次のレコードの仮想ノード「Ｃ」に引き継がれる。
コンシステントハッシュリングでは、仮想ノードが消滅すると、該当仮想ノードのハッシュ値の点がコンシステントハッシュリング上から削除される。よって、該当仮想ノードの担当範囲は、時計回り方向に隣接する仮想ノードの担当範囲にマージされる。図３（ｂ）に示す例では、故障した仮想ノード「Ｂ」のハッシュ値「ｂ」が削除され、ハッシュ値「ａ」の次の値からハッシュ値「ｃ」までの範囲が、消滅した仮想ノード「Ｂ」に時計回り方向に隣接する仮想ノード「Ｃ」の担当範囲になることを示している。
【００１７】
このように、データが欠損した場合の仮想ノードの担当範囲は、他の仮想ノードの担当範囲の一部となり、故障時の分散ハッシュテーブルは変更されてしまう。そのため、故障した後の情報から欠損したデータの範囲を求めることは難しい。さらに、複数台が故障等した状況では、故障順なども関係するため、欠損したデータの範囲を求めるのはさらに困難となる。したがって、従来技術では、欠損したデータのキーの範囲を特定することができないため、データ管理サーバのクラスタの全データとバックアップデータとの突合せ確認を行い、欠損したデータを特定してリストアを行っていた。よって、データが多量な場合には、復旧までに多くの時間を要するという問題があった。
【００１８】
このような背景に鑑みて本発明がなされたのであり、本発明は、クラスタを構成するデータ管理サーバが故障等した場合に、データ欠損を検出し、その欠損したデータのキーのハッシュ値の範囲を特定することができる分散データベースシステムを提供することを課題とする。
【課題を解決するための手段】
【００１９】
前記した課題を解決するため、請求項１に記載の発明は、クライアント装置から受信した要求信号を、複数のデータ管理サーバに振り分ける振り分けサーバと、前記振り分けサーバから受信した要求信号に基づき、自身が記憶するデータについて処理を実行する複数の前記データ管理サーバと、前記データ管理サーバに記憶されたデータの欠損を検出する欠損データ特定装置と、を備える分散データベースシステムであって、前記振り分けサーバが、コンシステントハッシュリング上に、前記データ管理サーバに固有な識別子を所定のハッシュ関数にかけて算出したハッシュ値を昇順に配置すると共に、受信した前記要求信号に付されるデータに固有なキーを前記所定のハッシュ関数にかけて算出したハッシュ値を配置することにより、前記受信した要求信号の振り分け先となる前記データ管理サーバを決定する、振り分け手法を採用すると共に、前記データ管理サーバそれぞれが、自身に振り分けられた前記要求信号に対応するデータを原本データとして記憶しておき、前記コンシステントハッシュリング上において隣接する所定の複製数の他のデータ管理サーバに対し、前記原本データの複製データを生成して送信することにより、当該複製データを他のデータ管理サーバに記憶させる冗長化手法を採用しており、前記振り分けサーバが、前記コンシステントハッシュリング上において前記データ管理サーバそれぞれが振り分け先となる担当範囲を示す、前記データのキーのハッシュ値の範囲を格納する分散ハッシュ情報が記憶される記憶部と、受信した前記要求信号に付される前記キーのハッシュ値を算出し、前記分散ハッシュ情報に基づき決定した振り分け先の前記データ管理サーバに当該要求信号を転送する振り分け処理部と、複数の前記データ管理サーバの死活を監視し、死活状態に変化があると前記分散ハッシュ情報の前記担当範囲を変更する死活監視部と、変更された分散ハッシュ情報を含む分散ハッシュ情報変更通知信号を前記欠損データ特定装置に送信する変更通知部と、を備え、前記欠損データ特定装置が、前記受信した分散ハッシュ情報変更通知信号に含まれる分散ハッシュ情報を、新世代の分散ハッシュ情報とし、当該受信以前に受信していた分散ハッシュ情報を、旧世代の分散ハッシュ情報として記憶する記憶部と、前記新世代の分散ハッシュ情報と前記旧世代の分散ハッシュ情報を比較し、前記データ管理サーバの増減を判定する増減検出部と、前記判定の結果、前記データ管理サーバが増加していた場合、または、前記旧世代の分散ハッシュ情報が記憶されていない場合に、前記データ管理サーバそれぞれに対応付けてダミーデータを生成し、前記生成したダミーデータを含むダミーデータ登録要求信号を、前記振り分けサーバを介して、前記ダミーデータの対になる前記データ管理サーバに送信することにより前記ダミーデータを登録させるダミーデータ登録部と、前記判定の結果、前記データ管理サーバが減少していた場合、前記減少したデータ管理サーバに対応付けられたダミーデータの削除を要求するダミーデータ削除要求信号を、前記振り分けサーバを介して、前記減少したデータ管理サーバに送信し、前記減少したデータ管理サーバに対応付けられたダミーデータを削除できないことにより、データの欠損を検出するダミーデータ削除部と、当該減少したデータ管理サーバの前記コンシステントハッシュリング上での担当範囲で示される、前記データのキーのハッシュ値の範囲を、前記旧世代の分散ハッシュ情報に基づき抽出し、前記原本データおよび前記所定の複製数の複製データが失われた欠損データのキーの範囲として特定する警報通知部と、を備えることを特徴とする分散データベースシステムとした。
【００２０】
このようにすることで、クラスタを構成する複数のデータ管理サーバが故障等した場合に、原本データと所定の複製数の複製データが失われたことによる、データの欠損を検出することができる。また、損失データ特定装置が、旧世代の分散ハッシュ情報を記憶しておくことにより、減少したデータ管理装置の担当範囲に基づき、欠損したデータのキーのハッシュ値の範囲を特定することができる。
【００２１】
請求項２に記載の発明は、前記欠損データ特定装置が、ランダムにキーを生成し、当該キーを前記所定のハッシュ関数にかけて算出したハッシュ値が前記新世代の分散ハッシュ情報に示される前記データ管理サーバの中から抽出したデータ管理サーバの振り分け先となる担当範囲に含まれるまで、当該キーの生成と、当該キーのハッシュ値の算出を繰り返し、当該キーが、前記抽出したデータ管理サーバの振り分け先となる担当範囲に含まれる場合に、当該キーを、前記抽出したデータ管理サーバに対応付けた前記ダミーデータのキーとして決定するキー生成部を、さらに備えることを特徴とする請求項１に記載の分散データベースシステムとした。
【００２２】
このようにすることで、欠損データ特定装置は、データ管理サーバのコンシステントハッシュリング上での担当範囲に含まれるキーを、そのデータ管理サーバに対応するダミーデータのキーとすることができる。よって、振り分けサーバは、ダミーデータに付されたキーを用いて振り分け処理を実行することにより、ダミーデータを、対応するデータ管理サーバに確実に登録させることができる。
【発明の効果】
【００２３】
本発明によれば、クラスタを構成するデータ管理サーバが故障等した場合に、データ欠損を検出し、その欠損したデータのキーのハッシュ値の範囲を特定することができる分散データベースシステムを提供する。
【図面の簡単な説明】
【００２４】
【図１】コンシステントハッシュ法のアルゴリズムの説明するための図である。
【図２】コンシステントハッシュ法における、データ管理サーバの原本データと複製データの保存手法を説明するための図である。
【図３】データ管理サーバが故障した場合の仮想ノードの担当範囲の変更を説明するための図である。
【図４】本実施形態に係る分散データベースシステムの全体構成と各装置の機能ブロックを説明するための図である。
【図５】本実施形態に係る分散ハッシュテーブルのデータ構成を示す図である。
【図６】本実施形態に係るダミーデータ登録要求信号のデータ構成を示す図である。
【図７】本実施形態に係るダミーデータ削除要求信号のデータ構成を示す図である。
【図８】本実施形態に係る応答信号のデータ構成を示す図である。
【図９】本実施形態に係るダミーデータキーテーブルのデータ構成を示す図である。
【図１０】本実施形態に係るダミーデータのキー生成処理を説明するためのフローチャートである。
【図１１】クラスタのセットアップ時における、全ての仮想ノードに対するダミーデータ登録処理を示すシーケンス図である。
【図１２】仮想ノードの追加時における、既存の仮想ノードの担当範囲の分割を説明するための図である。
【図１３】仮想ノードの追加時における、分散ハッシュテーブルの変更を説明するための図である。
【図１４】仮想ノードの追加時におけるダミーデータ登録処理を説明するためのシーケンス図である。
【図１５】仮想ノードの追加時におけるダミーデータ登録処理を説明するためのシーケンス図である。
【図１６】仮想ノードの消滅時におけるダミーデータ削除処理を説明するためのシーケンス図である。
【図１７】仮想ノードの消滅時におけるデータ欠損の検出と警報情報の出力処理とを説明するためのシーケンス図である。
【発明を実施するための形態】
【００２５】
次に、本発明を実施するための形態（以下、「本実施形態」という）における分散データベースシステム１０００等について説明する。
【００２６】
＜システム構成と処理概要＞
図４は、本実施形態に係る分散データベースシステム１０００の全体構成と各装置の機能ブロックを説明するための図である。
図４に示すように、分散データベースシステム１０００は、複数のクライアント装置５に接続される振り分けサーバ１と、クラスタを構成する複数のデータ管理サーバ（ここでは、「仮想ノード２」とする。）と、警報監視装置４等に接続される欠損データ特定装置３と、を含んで構成される。
【００２７】
振り分けサーバ１は、各クライアント装置５からの要求信号を受信し、受信したその要求信号の振り分け先となる仮想ノード２を、コンシステントハッシュ法に基づき決定し、その決定した振り分け先の仮想ノード２に対して、要求信号を送信する。
また、振り分けサーバ１は、欠損データ特定装置３と接続され、その欠損データ特定装置３から、ダミーデータ（詳細は後記）の登録を要求するダミーデータ登録要求信号や、ダミーデータの削除を要求するダミーデータ削除要求信号等を受信する。そして、振り分けサーバ１は、クライアント装置５から受信した要求信号に対する振り分け手法と同じ手法、つまり、コンシステントハッシュ法を適用し同じハッシュ関数に基づいて振り分け先となる仮想ノード２を決定し、それらのダミーデータに関する要求信号を送信する。
さらに、振り分けサーバ１は、仮想ノード２から、要求情報に対する処理結果である応答情報を受信して、クライアント装置５や欠損データ特定装置３に向けて送信する。
また、振り分けサーバ１は、仮想ノード２（データ管理サーバ）の死活監視を行っており、クラスタ内のデータ管理サーバの増設（仮想ノード２の追加）や、データ管理サーバの障害発生等により仮想ノード２が消滅した場合に、振り分け先となる仮想ノード２（データ管理サーバ）を管理する分散ハッシュテーブル（分散ハッシュ情報）１００を変更（レコードの追加や削除）する。そして、振り分けサーバ１は、分散ハッシュテーブル１００の変更内容を含む分散ハッシュテーブル変更通知信号（分散ハッシュ情報変更通知信号）を欠損データ特定装置３に送信する。
【００２８】
仮想ノード２は、データ管理サーバ（物理ノード）上に設定される論理的なデータ管理サーバである。本実施形態においては、図４に示すように、仮想ノードＩＤが「Ａ」の仮想ノード２を、仮想ノード「Ａ」と表し、仮想ノードＩＤが「Ｂ」の仮想ノード２を、仮想ノード「Ｂ」等のように表して説明する。
各仮想ノード２は、振り分けサーバ１により振り分け先として決定されたデータである原本データと、他の仮想ノード２が原本データの保存先となっている複製データとを記憶する。なお、複製データは、前記したコンシステントハッシュリングにおいて、原本データを記憶する仮想ノード２から、時計回りに複製の数分の仮想ノード２に記憶される。また、仮想ノード２は、欠損データ特定装置３が生成したダミーデータを、通常のデータ（「原本データ」「複製データ」）と同様に、自身の担当範囲に含まれるダミーデータをダミーデータ（原本）として記憶し、他の仮想ノード２の担当範囲に含まれるダミーデータをダミーデータ（複製）として記憶する。
【００２９】
欠損データ特定装置３は、振り分けサーバ１および警報監視装置４に接続される。
欠損データ特定装置３は、仮想ノード２毎にダミーデータを生成する。ダミーデータとは、仮想ノード２と対になるデータであり、つまり、コンシステントハッシュリングにおいてその仮想ノード２の担当範囲に含まれるデータを意味する。このダミーデータは、クライアント装置５へのサービス提供等のために用いられるものではなく、欠損データを検出する目的のために各仮想ノード２に記憶しておくデータである。そして、欠損データ特定装置３は、振り分けサーバ１を介して、各仮想ノード２に、そのダミーデータ（原本）とダミーデータ（複製）とを記憶させておく。
また、欠損データ特定装置３は、振り分けサーバ１から分散ハッシュテーブル変更通知信号を受信すると、受信した新たな（新世代の）分散ハッシュテーブル（分散ハッシュ情報）１００ａと、自身の記憶部３２に記憶している（旧世代の）分散ハッシュテーブル（分散ハッシュ情報）１００ｂと、を比較することにより、仮想ノード２の追加や消滅を検出する。欠損データ特定装置３は、仮想ノード２の消滅を検出した場合に、消滅した仮想ノード２と対になるダミーデータの削除要求（ダミーデータ削除要求信号）を振り分けサーバ１に送信し、そのダミーデータが削除できないことにより、該当する仮想ノード２の担当範囲のデータが欠損したことを検出する。そして、そのダミーデータと対になる仮想ノード２の担当範囲を旧世代の分散ハッシュテーブル１００ｂを参照することにより特定する。さらに、欠損データ特定装置３は、欠損データの発生とその欠損データのキーの範囲（仮想ノードの担当範囲）とを含む警報情報（データ欠損検出信号）を警報監視装置４に送信する。
【００３０】
このように、本実施形態に係る分散データベースシステム１０００は、予め仮想ノード２と対になるダミーデータを、そのダミーデータ（原本）を記憶する仮想ノード２と、ダミーデータ（複製）を記憶する仮想ノード２とに登録しておき、登録したダミーデータが削除できないことを検出することにより、当該仮想ノード２のデータが欠損したことを検出する。振り分けサーバ１は、また、そのダミーデータと対になる仮想ノード２の担当範囲を、旧世代の分散ハッシュテーブル１００ｂを参照することにより、欠損したデータのキーの範囲を特定することができる。
よって、クラスタを構成するデータ管理サーバが故障等した場合に、データ欠損を検出し、その欠損したデータのキーのハッシュ値の範囲を特定することができる。
なお、ハッシュ値の範囲に基づき、バックアップ（欠損したデータを保持するクライアント装置やデータ管理サーバと接続されたバックアップ装置等）から欠損したデータを抽出することができるため、抽出したデータを振り分けサーバ１経由でデータ管理サーバ２に投入することにより、データをリストアすることができる。
【００３１】
＜各装置の構成＞
以下、本実施形態に係る分散データベースシステム１０００を構成する各装置の構成例について、図４を参照して、具体的に説明する。
【００３２】
≪振り分けサーバ≫
振り分けサーバ１は、各クライアント装置５から受信した要求信号や、欠損データ特定装置３から受信した、ダミーデータ登録要求信号およびダミーデータ削除要求信号等の、振り分け先となる仮想ノード２（データ管理サーバ）を、コンシステントハッシュ法に基づき決定し、その決定した仮想ノード２から、要求信号等に対する処理結果である応答信号を受信し、要求信号等を送信してきたクライアント装置５や欠損データ特定装置３に送信する。
さらに、振り分けサーバ１は、クラスタを構成する各仮想ノード２（データ管理サーバ）の追加（増設）や消滅（減設）を監視しており、クラスタの構成に変化があった場合には、自身の記憶部（図示省略）に記憶した分散ハッシュテーブル１００を変更する。そして、振り分けサーバ１は、その分散ハッシュテーブル１００の変更情報を、各仮想ノード２（データ管理サーバ）に送信すると共に、欠損データ特定装置３に対しても送信する。
【００３３】
本実施形態に係る振り分けサーバ１は、図示を省略した、制御部、入出力部および記憶部を含んで構成される。
【００３４】
入出力部は、クライアント装置５や、各仮想ノード２（データ管理サーバ）および欠損データ特定装置３との間の情報の入出力を行う。この入出力部は、通信回線を介して情報の送受信を行う通信インタフェースと、図示を省略したキーボード等の入力手段やモニタ等の出力手段等との間で入出力を行う入出力インタフェースとから構成される。
【００３５】
記憶部は、ハードディスクやフラッシュメモリ、ＲＡＭ（Random Access Memory）等の記憶手段からなり、前記した、分散ハッシュテーブル１００等が記憶される。
【００３６】
制御部は、図４に示すように、振り分け処理部１０と、死活監視部１１と、分散ハッシュテーブル変更通知部（変更通知部）１２とを備える。なお、この制御部は、例えば、記憶部に格納されたプログラムを、図示を省略したＣＰＵ（Central Processing Unit）がＲＡＭに展開し実行することで実現される。
【００３７】
振り分け処理部１０は、クライアント装置５や、欠損データ特定装置３から、要求信号や、ダミーデータ登録要求信号、ダミーデータ削除要求信号等を受信すると、それらの要求信号に含まれるキーを抽出し、ハッシュ関数にかけることで、その要求信号が対象とするデータのハッシュ値を計算する。そして、振り分け処理部１０は、計算したハッシュ値に基づき、記憶部（図示省略）に記憶された分散ハッシュテーブル１００を参照し、その要求信号の振り分け先となる仮想ノード２（データ管理サーバ）を決定する。
なお、ここで、記憶部に記憶された分散ハッシュテーブル（分散ハッシュ情報）１００は、図５に示すように、データ管理サーバや仮想ノード２に固有な識別子（ここでは、「仮想ノードＩＤ」とする。）と、その仮想ノードＩＤを、ハッシュ関数にかけることで得られたハッシュ値とが対応付けられて、例えば、ハッシュ値が小さい順にソートされたテーブルである。そして、この分散ハッシュテーブル１００は、仮想ノードＩＤに示される仮想ノード２が担当するハッシュ値の範囲（担当範囲）を示している。
【００３８】
図４に戻り、死活監視部１１は、クラスタを構成する各仮想ノード２（データ管理サーバ）の追加（増設）や消滅（減設）を監視しており、クラスタの構成に変化があった場合には、自身の記憶部（図示省略）に記憶した分散ハッシュテーブル１００を変更する。具体的には、死活監視部１１は、データ管理サーバが増設され、仮想ノード２が追加された場合には、分散ハッシュテーブル１００の該当する仮想ノード２のレコードを追加する。また、死活監視部１１は、データ管理サーバが故障等により減設され、仮想ノード２が消滅した場合には、分散ハッシュテーブル１００の該当する仮想ノード２のレコードを削除する。
【００３９】
なお、死活監視部１１は、クラスタを構成する各仮想ノード２（データ管理サーバ）の増減情報を、例えば、次のようにして取得することができる。
各仮想ノード２（データ管理サーバ）は、例えば、分散ハッシュテーブル１００上で、次の行の仮想ノード２（データ管理サーバ）に、所定の時間間隔で生存確認情報を送信しており、生存確認情報を所定の時間内に受信できない場合に、その仮想ノード２（データ管理サーバ）がクラスタから離脱したものして、その離脱した仮想ノード２（データ管理サーバ）のＩＤを含む離脱情報を振り分けサーバ１に送信する。また、クラスタ内に、新たに仮想ノード２が追加されると、その仮想ノード２から、自身がクラスタに参加することを要請する情報を、振り分けサーバ１に送信することにより、振り分けサーバ１が新たな仮想ノード２（データ管理サーバ）がクラスタに追加されることの情報を得る。
この他にも、例えば、振り分けサーバ１から、各仮想ノード２（データ管理サーバ）に対し、所定の時間間隔で、生存確認情報を送信することにより、各仮想ノード２の離脱情報を取得してもよい。また、仮想ノード２（データ管理サーバ）がシステム内に追加されたことの情報を、図示を省略したシステム全体のネットワーク管理サーバ等から取得するようにしてもよい。
【００４０】
分散ハッシュテーブル変更通知部（変更通知部）１２は、死活監視部１１により、分散ハッシュテーブル１００が変更されると、その変更された分散ハッシュテーブル１００を、分散ハッシュテーブル変更通知信号（分散ハッシュ情報変更通知信号）に付して、各仮想ノード２および欠損データ特定装置３へ送信する。
なお、分散ハッシュテーブル変更通知部１２は、分散ハッシュテーブル１００そのものではなく、分散ハッシュテーブル１００において追加されるレコードや、削除されるレコードを示す変更部分の情報のみを、分散ハッシュテーブル変更通知信号に付して送信してもよい。
【００４１】
なお、本実施形態においては、図４に示すように、振り分けサーバ１は１つとして説明するが、振り分けサーバ１は複数であってもよい。その場合には、複数の振り分けサーバ１のうちの１つが代表（マスタ）となり、上記において説明した振り分け処理部１０が実行する以外の処理、つまり、死活監視に基づく分散ハッシュテーブル１００の変更処理や、分散ハッシュテーブルの変更通知の送信処理を行う。
【００４２】
≪仮想ノード（データ管理サーバ）≫
仮想ノード２は、データ管理サーバ（物理ノード）上に設定される論理的なデータ管理サーバであり、データ管理部２０と、図示を省略した、入出力部および記憶部とを含んで構成される。
【００４３】
データ管理部２０は、振り分けサーバ１により自身が振り分け先として決定されたデータを原本データとして記憶部に記憶する。また、データ管理部２０は、他の仮想ノード２から受信した原本データの複製（複製データ）を記憶部に記憶する。
図示を省略した記憶部には、この原本データおよび複製データ以外に、振り分けサーバ１と同じデータが格納された分散ハッシュテーブル１００が記憶されている。この分散ハッシュテーブル１００は、振り分けサーバ１から仮想ノード２それぞれが分散ハッシュテーブル変更通知を受信して自身の記憶部に記憶された分散ハッシュテーブル１００を変更することにより、振り分けサーバ１に記憶された分散ハッシュテーブル１００と同期される。
データ管理部２０は、クラスタのセットアップ時や、分散ハッシュテーブル１００が変更された時に、自身が記憶する原本データについて、予め設定された複製の数ｎだけ複製データを生成し、コンシステントハッシュリング上で時計回りの方向にｎ個（分散ハッシュテーブル１００では、自身の行の下ｎ行まで）の仮想ノード２に対して、生成した複製データを送信することにより保存させる。
【００４４】
また、データ管理部２０は、欠損データ特定装置３から、振り分けサーバ１を介して、ダミーデータ受信した場合には、そのダミーデータを原本として自身の記憶部に記憶する。また、データ管理部２０は、自身の記憶部に記憶された分散ハッシュテーブル１００を参照し、自身が記憶するダミーデータ（原本）について、通常のデータと同様に、予め設定された複製の数ｎだけダミーデータ（複製）を生成し、コンシステントハッシュリング上で時計回りの方向にｎ個（分散ハッシュテーブル１００では、自身の行の下ｎ行まで）の仮想ノード２に対して、生成したダミーデータ（複製）を送信することにより保存させる。
【００４５】
入出力部（図示省略）は、振り分けサーバ１や、他の仮想ノード２との間の情報の入出力を行う。この入出力部は、通信回線を介して情報の送受信を行う通信インタフェースと、図示を省略したキーボード等の入力手段やモニタ等の出力手段等との間で入出力を行う入出力インタフェースとから構成される。なお、仮想ノード２の場合は、実体としてデータ管理サーバ（物理ノード）の入出力部が仮想ノード２の入出力部の機能を具備する。
【００４６】
記憶部は、ハードディスクやフラッシュメモリ、ＲＡＭ等の記憶手段からなり、前記した、原本データ、複製データ、ダミーデータ（原本）、ダミーデータ（複製）、および、分散ハッシュテーブル１００（図示省略）等が記憶される。なお、仮想ノード２の場合は、実体としてデータ管理サーバ（物理ノード）の記憶部が仮想ノード２の記憶部の機能を具備する。
【００４７】
≪欠損データ特定装置≫
欠損データ特定装置３は、仮想ノード２それぞれと対となるダミーデータを生成し、振り分けサーバ１を介して、各仮想ノード２にダミーデータ（原本）およびダミーデータ（複製）として記憶させる。また、欠損データ特定装置３は、仮想ノード２が消滅した場合に、ダミーデータの削除を要求するダミーデータ削除要求信号（図７参照）を、振り分けサーバ１を介して、仮想ノード２に送信し、ダミーデータを削除できないこと（ＮＧ）の応答情報を受信することにより、該当仮想ノード２のデータが欠損したことを検出する。また、そのダミーデータと対になる仮想ノード２の担当範囲を、変更前の（旧世代の）分散ハッシュテーブル１００（１００ｂ）を参照することにより特定する。
【００４８】
図４を参照して、本実施形態に係る欠損データ特定装置３の構成例について説明する。
本実施形態に係る欠損データ特定装置３は、図４に示すように、制御部３０、入出力部３１および記憶部３２を含んで構成される。
【００４９】
入出力部３１は、振り分けサーバ１や、警報監視装置４等との間の情報の入出力を行う。この入出力部３１は、通信回線を介して情報の送受信を行う通信インタフェースと、図示を省略したキーボード等の入力手段やモニタ等の出力手段等との間で入出力を行う入出力インタフェースとから構成される。
【００５０】
記憶部３２は、ハードディスクやフラッシュメモリ、ＲＡＭ等の記憶手段からなり、変更後の（新世代の）分散ハッシュテーブル１００（１００ａ）（図４において「分散ハッシュテーブル（新）」と表記）と、変更前の（旧世代の）分散ハッシュテーブル１００（１００ｂ）（図４において「分散ハッシュテーブル（旧）」と表記）と、ダミーデータキーテーブル２００（詳細は後記）とが記憶される。
【００５１】
制御部３０は、欠損データ特定装置３全体の制御を司り、図４に示すように、欠損データ特定処理部３００と、キー生成部３１０と、警報通知部３２０とを備える。なお、この制御部３０は、例えば、記憶部３２に格納されたプログラムを、図示を省略したＣＰＵがＲＡＭに展開し実行することで実現される。
【００５２】
欠損データ特定処理部３００は、仮想ノード２それぞれと対となるダミーデータを生成し、該当する仮想ノード２に記憶させると共に、変更後の（新世代の）分散ハッシュテーブル１００ａと変更前の（旧世代の）分散ハッシュテーブル１００ｂを比較することにより、仮想ノード２（データ管理サーバ）の増減を検出する。そして、欠損データ特定処理部３００は、仮想ノード２（データ管理サーバ）の消滅を検出した場合には、その仮想ノード２と対となるダミーデータのキーを付したダミーデータ削除要求信号（図７参照）を送信し、ダミーデータが削除できない旨の応答情報を受信することにより、該当仮想ノード２のデータが欠損したことを検出する。そして、欠損データ特定処理部３００は、そのダミーデータと対になる仮想ノード２の担当範囲を変更前（旧世代の）分散ハッシュテーブル１００ｂを参照することにより特定する。
【００５３】
この欠損データ特定処理部３００は、ノード増減検出部（増減検出部）３０１と、ダミーデータ登録部３０２と、ダミーデータ削除部３０３とを備える。
【００５４】
ノード増減検出部（増減検出部）３０１は、振り分けサーバ１から、分散ハッシュテーブル変更通知信号を、入出力部３１を介して受信し、記憶部３２に、変更後の（新世代の）分散ハッシュテーブル１００ａとして記憶する。なお、その際、ノード増減検出部３０１は、それ以前に記憶部３２に記憶されている、今回の変更前の分散ハッシュテーブル１００を旧世代の分散ハッシュテーブル１００ｂとして、そのまま記憶部３２に記憶しておく。
【００５５】
ノード増減検出部３０１は、記憶部３２に記憶された新世代の分散ハッシュテーブル１００ａと、旧世代の分散ハッシュテーブル１００ｂとを比較し、その差分を検出することにより、仮想ノード２（データ管理サーバ）の追加若しくは消滅を検出する。具体的には、ノード増減検出部３０１は、新世代の分散ハッシュテーブル１００ａに仮想ノード２の新たなレコードが挿入されていることにより、仮想ノード２が追加されたことを検出する。一方、ノード増減検出部３０１は、新世代の分散ハッシュテーブル１００ａにおいて、既存の仮想ノード２のレコードが削除されていれることにより、仮想ノード２が消滅したことを検出する。
【００５６】
ダミーデータ登録部３０２は、クラスタのセットアップ時、つまり、旧世代の分散ハッシュテーブル１００ｂが記憶部３２に存在しない場合、また、仮想ノード２が追加されたことを検出した場合に、その仮想ノード２の仮想ノードＩＤに対応するダミーデータのキーの生成を、キー生成部３１０に依頼することにより取得する。そして、ダミーデータ登録部３０２は、ダミーデータ登録要求信号（図６）を生成し、振り分けサーバ１へ送信する。
【００５７】
図６は、本実施形態に係るダミーデータ登録要求信号のデータ構成を示す図である。
ダミーデータ登録要求信号は、要求種別として「登録」を示す要求種別情報と、振り分けサーバ１の振り分け処理部１０において、コンシステントハッシュのキーとして用いるためのダミーデータのキーの情報と、登録されるデータであるバリューと、を含んで構成される。ここで、バリューは、仮想ノードＩＤ等の仮想ノード２を特定するための値が設定される。
【００５８】
図４に戻り、ダミーデータ削除部３０３は、ノード増減検出部３０１が、クラスタを構成する仮想ノード２が消滅したことを検出した場合に、後記するダミーデータキーテーブル２００から、消滅が検出された仮想ノード２に対応するダミーデータのキーを取得し、ダミーデータ削除要求信号（図７）を生成し、振り分けサーバ１へ送信する。
【００５９】
図７は、本実施形態に係るダミーデータ削除要求信号のデータ構成を示す図である。
ダミーデータ削除要求信号は、要求種別として「削除」を示す要求種別情報と、振り分けサーバ１の振り分け処理部１０において、コンシステントハッシュのキーとして用いるための、消滅が検出された仮想ノード２に対応するダミーデータのキーの情報と、を含んで構成される。
【００６０】
また、ダミーデータ削除部３０３は、ダミーデータ削除要求信号に対する応答信号（図８）を振り分けサーバ１から受信する。
【００６１】
図８は、本実施形態に係る応答信号のデータ構成を示す図である。
応答信号は、応答種別として「ＯＫ」若しくは「ＮＧ」のどちらかが格納される。
【００６２】
ダミーデータ削除部３０３は、振り分けサーバ１から、「ＯＫ」が付された応答信号を受信した場合には、ダミーデータキーテーブル２００（図９参照）において、消滅が検出された仮想ノード２の仮想ノードＩＤに対応するレコードを削除する。
一方、ダミーデータ削除部３０３は、振り分けサーバ１から、「ＮＧ」が付された応答信号を受信した場合には、ダミーデータに対応する仮想ノード２のデータが欠損したと判定する。そして、その判定結果を、警報通知部３２０に出力する。
【００６３】
キー生成部３１０は、図９に示すように、データ管理サーバや仮想ノード２に固有な識別子（ここでは、「仮想ノードＩＤ」とする。）と、ダミーデータのキーとを対応付けた情報であるダミーデータキーテーブル２００を生成する。
【００６４】
図９は、本実施形態に係るダミーデータキーテーブル２００のデータ構成を示す図である。
図９に示すように、ダミーデータキーテーブル２００は、仮想ノードＩＤと、ダミーデータのキーの組み合わせが、仮想ノード２の数分のレコードとして記憶される。
【００６５】
キー生成部３１０は、ダミーデータキーテーブル２００に登録された仮想ノードＩＤの値を取得し、これを、ダミーデータ投入先仮想ノードＩＤとする。そして、キー生成部３１０は、このダミーデータ投入先仮想ノードＩＤと、分散ハッシュテーブル１００（１００ａ）に基づき、以下に示すキー生成アルゴリズムを用いて、ダミーデータのキーを生成する。
【００６６】
（キー生成アルゴリズム）
図１０は、本実施形態に係るキー生成部３１０が実行する、ダミーデータのキー生成アルゴリズムを説明するためのフローチャートである。
ここで、ハッシュ関数は一方向性関数であるため、ハッシュ値からキーを生成することはできない。そのため、キー生成部３１０は、トライアンドエラーで仮想ノード２の担当範囲に含まれるキーを見つけることにより、ダミーデータのキーを生成する。
なお、キー生成部３１０は、ダミーデータのキーを生成するにあたり、分散ハッシュテーブル１００（１００ａ）を参照し、全ての仮想ノードＩＤの情報を取得して、ダミーデータキーテーブル２００の各仮想ノードＩＤのレコードを生成しておく。
【００６７】
まず、キー生成部３１０は、ダミーデータキーテーブル２００の１つの行（１行目から順に取得）に登録された仮想ノードＩＤの値を取得し、これをダミーデータ投入先仮想ノードＩＤとする。そして、ダミーデータ投入先仮想ノードへのダミーデータの登録要求のキーとして、ランダムな文字列を生成する（ステップＳ１）。若しくは、キー生成部３１０は、「dummydata」など意味をもった文字列にランダム形成した文字列を繋げたキーを生成してもよい。
【００６８】
次に、キー生成部３１０は、振り分けサーバ１の振り分け処理部１０と同じハッシュ関数を用いて、ステップＳ１において生成したキーのハッシュ値を計算する（ステップＳ２）。
【００６９】
続いて、キー生成部３１０は、生成したキーのハッシュ値を用いて、分散ハッシュテーブル１００（１００ａ）を参照し、そのキーのハッシュ値を担当範囲とする振り分け先仮想ノードの仮想ノードＩＤを算出する（ステップＳ３）。
【００７０】
そして、キー生成部３１０は、算出した仮想ノードＩＤと、ダミーデータ投入先仮想ノードＩＤとが一致するか否かを判定する（ステップＳ４）。
【００７１】
ステップＳ４の判定の結果、一致した場合には（ステップＳ４→Ｙｅｓ）、ステップＳ１において生成したキーを、ダミーデータキーテーブル２００のステップＳ１において取得した仮想ノードＩＤ（ダミーデータ投入先仮想ノードＩＤ）に対応付けて、ダミーデータキーテーブル２００に登録する（ステップＳ５）。
【００７２】
一方、ステップＳ４の判定の結果、一致しない場合には（ステップＳ４→Ｎｏ）、ステップＳ１に戻り、再度、ダミーデータのキーとして、ランダムな文字列を生成する。
【００７３】
キー生成部３１０は、ステップＳ５において、ダミーデータキーテーブル２００の１つの行の仮想ノードＩＤに対応するダミーデータのキーを登録すると、次の行の仮想ノードＩＤを取得し、ステップＳ１〜Ｓ５を繰り返す。これを、キー生成部３１０は、ダミーデータキーテーブル２００に記憶されたすべての行の仮想ノードＩＤについて実行する。
【００７４】
このようにすることで、キー生成部３１０は、各仮想ノードＩＤに対応するダミーデータのキーを生成し、ダミーデータキーテーブル２００に登録する。
【００７５】
図４に戻り、警報通知部３２０は、ダミーデータ削除部３０３が「ＮＧ」が付された応答信号を受信したことにより、データが欠損したと判定した場合に、そのダミーデータのキーに対応する仮想ノード２の担当範囲を、旧世代の分散ハッシュテーブル１００ｂを参照することにより特定する。そして、警報通知部３２０は、欠損したデータのキーのハッシュ値の範囲として、当該仮想ノード２の担当範囲を付したデータ欠損検出信号を生成し、警報監視装置４に通知する。なお、警報通知部３２０は、このデータ欠損検出信号を、例えば、ＳＮＭＰ（Simple Network Management Protocol）トラップとして、警報監視装置４に送信するようにしてもよい。
【００７６】
≪警報監視装置≫
警報監視装置４は、欠損データ特定装置３からデータ欠損検出信号を受信し、データ欠損を検出したことと、その欠損データのキーのハッシュ値の範囲とを、出力手段（図示省略）に出力する。
警報監視装置４は、制御部と、入出力部と、記憶部と（いずれも図示省略）を備える装置であり、制御部が備える警報受信部４０が、データ欠損検出信号を受信することにより、分散データベースシステム１０００の管理者等に、データ欠損の検出を報知する。
【００７７】
＜分散データベースシステムの欠損データ特定処理＞
次に、本実施形態に係る分散データベースシステム１０００が実行する欠損データ特定処理について説明する。
分散データベースシステム１０００において、欠損データ特定装置３は、最初にデータ管理サーバが複数の仮想ノード２のクラスタをセットアップする際に、全ての仮想ノード２に対して、ダミーデータの登録を実行する。
その後、欠損データ特定装置３および振り分けサーバ１は、仮想ノード２の追加や消滅等の変化に応じて、ダミーデータの登録や削除を行うことで、クラスタ内に存在する仮想ノード２それぞれと対になるダミーデータが必ず登録されている状態を維持する。
そして、欠損データ特定装置３は、仮想ノード２の消滅時において、消滅した仮想ノード２のダミーデータの削除要求（ダミーデータ削除要求信号）を振り分けサーバ１に送信し、削除することができたか否かに基づいて仮想ノード２のデータが欠損データであるか否かを判定する。
以上の欠損データ特定処理の流れについて、（１）クラスタセットアップ時のダミーデータ登録処理、（２）仮想ノード追加時のダミーデータ登録処理、（３）仮想ノード消滅時のダミーデータ削除処理、（４）データ欠損の検出と警報情報の出力処理、の順に詳細に説明する。
【００７８】
≪（１）クラスタセットアップ時のダミーデータ登録処理≫
図１１は、データ管理サーバをクラスタにセットアップする際に、全ての仮想ノード２に対して実行するダミーデータ登録処理を示すシーケンス図である。
【００７９】
まず、振り分けサーバ１（振り分け処理部１０および死活監視部１１）は、データ管理サーバ上に形成された複数の仮想ノード２のクラスタのセットアップ時に、図５に示すような分散ハッシュテーブル１００を生成する（ステップＳ１０）。そして、振り分けサーバ１の分散ハッシュテーブル変更通知部１２は、生成された分散ハッシュテーブル１００を含む分散ハッシュテーブル変更通知信号を欠損データ特定装置３に送信する（ステップＳ１１）。
なお、分散ハッシュテーブル変更通知部１２は、生成された分散ハッシュテーブル１００を含む分散ハッシュテーブル変更通知信号を、各仮想ノード２に対しても送信することにより、各仮想ノード２に同一の分散ハッシュテーブル１００を記憶させる。この分散ハッシュテーブル１００を参照することにより、各仮想ノード２は、自身が記憶する原本データの複製先となる仮想ノード２を特定する。
【００８０】
欠損データ特定装置３のノード増減検出部３０１は、分散ハッシュテーブル変更通知信号を受信すると、記憶部３２に既に登録された分散ハッシュテーブル１００がないことから、分散ハッシュテーブル１００の初回登録であると判定し、分散ハッシュテーブル変更通知信号から分散ハッシュテーブル１００を抽出して、記憶部３２に分散ハッシュテーブル１００を記憶する（ステップＳ１２）。
【００８１】
次に、欠損データ特定装置３のキー生成部３１０は、記憶部３２に記憶した分散ハッシュテーブル１００の仮想ノードＩＤに基づいて、ダミーデータキーテーブル２００を生成し、図１０において説明した、ダミーデータのキー生成処理を実行する（ステップＳ１３）。そして、キー生成部３１０は、ダミーデータキーテーブル２００（図９）を完成させ、記憶部３２に記憶する。
【００８２】
続いて、欠損データ特定装置３のダミーデータ登録部３０２は、ダミーデータキーテーブル２００を参照し、ダミーデータ登録要求信号（図６）を生成し（ステップＳ１４）、振り分けサーバ１に送信する。
なお、このダミーデータ登録要求信号には、要求種別「登録」と、生成したダミーデータのキーと、バリューとが設定される。なお、バリューとしては、例えば仮想ノードＩＤなどの仮想ノード２を特定する値がダミーデータキーテーブル２００を参照して設定される。
【００８３】
ダミーデータ登録要求信号を受信した振り分けサーバ１は、振り分け処理部１０により、ダミーデータ登録要求信号に設定されたダミーデータのキーをハッシュ関数にかけることによりハッシュ値を算出する。そして、振り分け処理部１０は、記憶部（図示省略）に記憶された分散ハッシュテーブル１００を参照することにより、振り分け先となる仮想ノード２を決定し、そのダミーデータ登録要求信号を転送する（ステップＳ１５）。このとき、ダミーデータ登録要求信号の転送先となる仮想ノード２は、欠損データ特定装置３のキー生成部３１０が設定したダミーデータ投入先仮想ノード、つまり、ダミーデータ登録要求信号のバリューとして設定された仮想ノード２となる。
【００８４】
続いて、ダミーデータ登録要求信号を受信した仮想ノード２は、ダミーデータを自身の記憶部に記憶する（ステップＳ１６）。なお、振り分けサーバ１やデータ管理サーバの仮想ノード２にとっては、ダミーデータは通常のデータとなんら変わらないデータであり、ここで記憶されるダミーデータは、ダミーデータ（原本）となる。仮想ノード２のデータ管理部２０は、コンシステントハッシュのアルゴリズムに従い、自身に記憶された分散ハッシュテーブル１００を参照し、予め設定された複製の数分のダミーデータ（複製）を生成して、複製データの記憶を担当する他の仮想ノード２にそのダミーデータ（複製）を送信し記憶させる。
【００８５】
振り分けサーバ１の振り分け処理部１０は、所定の仮想ノード２からダミーデータを登録した旨の応答情報を受信すると、欠損データ特定装置３に、ＯＫの応答信号を送信する（ステップＳ１７）。
【００８６】
欠損データ特定装置３のダミーデータ登録部３０２は、このようにして、全ての仮想ノード２に、ダミーデータを登録する。これにより、欠損データ特定装置３による仮想ノード２ごとの欠損データ検出の準備が整うものとなる。
【００８７】
≪（２）仮想ノード追加時のダミーデータ登録処理≫
分散データベースシステム１０００の運用後に、物理的なデータベース管理サーバが増設等された場合には、クラスタを構成する仮想ノード２が追加される。新たな仮想ノード２が追加されると、既存の仮想ノード２の中で、ハッシュ値の担当範囲が分割される仮想ノード２が発生する。以下、仮想ノード追加時におけるダミーデータの登録処理について、図１２〜図１５を参照して説明する。
【００８８】
図１２は、仮想ノード２の追加時における、既存の仮想ノード２の担当範囲の分割を説明するための図である。図１３は、仮想ノード２の追加時における、分散ハッシュテーブル１００の変更を説明するための図である。
【００８９】
データ管理サーバが増設等されることにより、仮想ノード２（図１２では、仮想ノード「Ｘ」）が追加されると、図１２に示すように、追加された仮想ノード２の仮想ノードＩＤ「Ｘ」に対応するハッシュ値「ｘ」の点（丸印）がコンシステントハッシュリング上に追加される。これにより、既存の仮想ノード「Ｂ」の担当範囲（ハッシュ値「ａ」〜「ｂ」）が、追加した仮想ノード「Ｘ」の担当範囲（ハッシュ値「ａ」〜「ｘ」）と、既存の仮想ノード「Ｂ」の担当範囲（ハッシュ値「ｘ」〜「ｂ」）とに分割される。なお、分散ハッシュテーブル１００においては、図１３に示すように、仮想ノードＩＤが「Ａ」のレコードと、仮想ノードＩＤが「Ｂ」のレコードとの間に、仮想ノードＩＤが「Ｘ」のレコードが挿入されることとなる。
この結果、追加した仮想ノード「Ｘ」については、新たにダミーデータ登録処理を行う必要がある。さらに、仮想ノード「Ｂ」については、ハッシュ値の担当範囲が分割されたため、既に登録されているダミーデータは、仮想ノード「Ｘ」の担当範囲に属するか、仮想ノード「Ｂ」の担当範囲に属するかわからないため、既存のダミーデータを一旦削除した上で、分割後の仮想ノード「Ｂ」の担当範囲にダミーデータの再登録を行う。
【００９０】
なお、担当範囲が分割された仮想ノード「Ｂ」について、ダミーデータの削除・再登録を行わず、ダミーデータキーテーブル２００に基づいて既存のダミーデータが新たな仮想ノード「Ｘ」の担当範囲に属するデータか、元の仮想ノード「Ｂ」の担当範囲に属するデータかを判定し、ダミーデータが登録されていない方の仮想ノード２に対してダミーデータの登録処理を行うようにしてもよい。
【００９１】
次に、ダミーデータ登録処理の流れについて説明する。図１４および図１５は、仮想ノード２の追加時におけるダミーデータ登録処理を説明するためのシーケンス図である。
【００９２】
図１４に示すように、まず、振り分けサーバ１の死活監視部１１が、新たな仮想ノード２（データ管理サーバ）の追加を検出すると（ステップＳ２０）、分散ハッシュテーブル１００を参照し、既存の仮想ノード２の担当範囲の広さなどを基準にして、例えば、担当範囲が広い順に仮想ノード２を選択するようにして、既存の仮想ノード２から分割対象となる仮想ノードを選定する。
【００９３】
死活監視部１１は、選定した仮想ノード２の担当範囲を、コンシステントハッシュリングとしては、その担当範囲内に新たに追加する仮想ノード２の仮想ノードＩＤのハッシュ値の点（丸印）を追加することで分割する（図１２参照）。このことは、死活監視部１１が、分散ハッシュテーブル１００において、新たに追加される仮想ノード２のレコードを、分割対象となる仮想ノードのレコードの１つ前に追加することで実現される（図１３参照）。以上のようにして、死活監視部１１は、新たな仮想ノード２を追加して、分散ハッシュテーブル１００を変更する（ステップＳ２１）。
【００９４】
続いて、振り分けサーバ１の分散ハッシュテーブル変更通知部１２は、上記のように分散ハッシュテーブル１００が変更されると、変更した分散ハッシュテーブル１００を含む分散ハッシュテーブル変更通知信号を生成し、欠損データ特定装置３に送信する（ステップＳ２２）。なお、分散ハッシュテーブル変更通知部１２は、同様に、各仮想ノード２（追加された仮想ノード２を含む）に向けて、変更した分散ハッシュテーブル１００を含む分散ハッシュテーブル変更通知信号を送信しておく。このようにすることにより、分散データベースシステム１０００内においては、同一の分散ハッシュテーブル１００に基づき処理を実行できるようにする。
【００９５】
欠損データ特定装置３のノード増減検出部３０１は、分散ハッシュテーブル変更通知信号を受信すると、記憶部３２に先の分散ハッシュテーブル１００が存在することから、分散ハッシュテーブルの２回目以降の登録であると認識する。そして、ノード増減検出部３０１は、記憶部３２にすでに存在する分散ハッシュテーブル１００を、旧世代の分散ハッシュテーブル１００（１００ｂ）とし、今回受信した分散ハッシュテーブル１００を、新世代の分散ハッシュテーブル１００（１００ａ）として記憶部３２に記憶する（ステップＳ２３）。
【００９６】
ノード増減検出部３０１は、新世代の分散ハッシュテーブル１００ａと旧世代の分散ハッシュテーブル１００ｂとを比較する（ステップＳ２４）。そして、ノード増減検出部３０１は、比較の結果、新世代の分散ハッシュテーブル１００ａに、新たな仮想ノード２が追加されていることを検出する（ステップＳ２５）。
【００９７】
仮想ノード２が追加されたことをノード増減検出部３０１が検出すると、ダミーデータ登録部３０２は、追加された仮想ノード２に対して、ダミーデータの登録処理を実行する（以下、「手順Ａ」と呼ぶことがある。）。一方、分散ハッシュテーブル１００において、追加された仮想ノード２のレコードの次のレコードの仮想ノード２について、担当範囲が分割され変更となるため、ダミーデータ削除部３０３が既存のダミーデータを削除し、その後ダミーデータ登録部３０２が再度登録する処理を実行する（以下、「手順Ｂ」と呼ぶことがある。図１５参照。）。以下、具体的に説明する。
【００９８】
（手順Ａ：追加された仮想ノードへのダミーデータの登録処理）
まず、欠損データ特定装置３のキー生成部３１０は、記憶部３２に記憶されたダミーデータキーテーブル２００（図９）に追加された仮想ノード２の仮想ノードＩＤのレコードを追加する。
そして、キー生成部３１０は、追加された仮想ノード２の仮想ノードＩＤと、新世代の分散ハッシュテーブル１００ａとに基づき、図１０において説明した、ダミーデータのキー生成処理を実行し、追加された仮想ノード２の仮想ノードＩＤに対応するダミーデータのキーを生成する（ステップＳ２６）。そして、キー生成部３１０は、生成したダミーデータのキーを、ダミーデータキーテーブル２００に登録する。
【００９９】
続いて、欠損データ特定装置３のダミーデータ登録部３０２は、ダミーデータキーテーブル２００を参照し、ダミーデータ登録要求信号（図６）を生成する（ステップＳ２７）。ここで、ダミーデータ登録部３０２は、要求種別を「登録」とし、生成したダミーデータのキーと、バリューとを設定したダミーデータ登録要求信号を生成する。なお、ここでバリューには、追加された仮想ノード２の仮想ノードＩＤなどの、追加された仮想ノード２を特定する値が設定される。そして、ダミーデータ登録部３０２は、生成したダミーデータ登録要求信号を振り分けサーバ１に送信する。
【０１００】
そして、ダミーデータ登録要求信号を受信した振り分けサーバ１は、ダミーデータ登録要求信号に設定されたダミーデータのキーに基づき、追加された仮想ノード２を振り分け先に決定し、ダミーデータ登録要求信号を転送する（ステップＳ２８）。
【０１０１】
次に、ダミーデータ登録要求信号を受信した仮想ノード２は、ダミーデータ（原本）を自身の記憶部に記憶する（ステップＳ２９）。なお、当該仮想ノード２は、ダミーデータ（複製）を生成し、コンシステントハッシュのアルゴリズムに従い、複製データを担当する他の仮想ノード２に送信し記憶させる。
【０１０２】
振り分けサーバ１の振り分け処理部１０は、所定の仮想ノード２にダミーデータが正しく登録されると、欠損データ特定装置３に、ＯＫの応答信号を送信する（ステップＳ３０）。
【０１０３】
（手順Ｂ：既存の仮想ノードへのダミーデータの削除と再登録処理）
次に、新たな仮想ノード２が追加されたことにより、担当範囲が分割され変更された、既存の仮想ノード２へのダミーデータの削除と再登録処理について説明する。
【０１０４】
図１５に示すように、まず、欠損データ特定装置３のダミーデータ削除部３０３は、ダミーデータキーテーブル２００（図９）を参照し、担当範囲が分割された仮想ノード２のダミーデータのキーを取得し、要求種別を「削除」として、ダミーデータ削除要求信号を生成する（ステップＳ３１）。そして、ダミーデータ削除部３０３は、生成したダミーデータ削除要求信号を振り分けサーバ１に送信する。
【０１０５】
そして、ダミーデータ削除要求信号を受信した振り分けサーバ１は、ダミーデータ削除要求信号に設定されたダミーデータのキーに基づき、コンシステントハッシュのアルゴリズムに従い、該当する仮想ノード２を振り分け先に決定し、ダミーデータ削除要求信号を転送する（ステップＳ３２）。
【０１０６】
ダミーデータ削除要求信号を受信した仮想ノード２は、ダミーデータ（原本）を削除する（ステップＳ３３）。また、当該仮想ノード２は、ダミーデータ（複製）を記憶する他の仮想ノード２に対し、ダミーデータ削除要求信号を送信し、ダミーデータ（複製）を削除させる。
【０１０７】
ダミーデータが削除されると、振り分けサーバ１は、欠損データ特定装置３に、ＯＫの応答信号を送信する（ステップＳ３４）。
【０１０８】
ダミーデータ削除要求信号に対するＯＫの応答信号を受信した欠損データ特定装置３のダミーデータ削除部３０３は、記憶部３２内のダミーデータキーテーブル２００から、担当範囲が分割された仮想ノード２の仮想ノードＩＤのレコードを削除する（ステップＳ３５）。
【０１０９】
続いて、ダミーデータ登録部３０２は、担当範囲が分割された仮想ノード２のダミーデータの登録処理（再登録）を実行する（ステップＳ３６）。なお、このダミーデータの登録処理（再登録）は、前記した手順ＡのステップＳ２６〜Ｓ３０（図１４参照）と同様である。
【０１１０】
このようにすることで、新たな仮想ノード２が追加された場合においても、各仮想ノード２に対応付けたダミーデータを、仮想ノード２それぞれに記憶させる状態を維持することができる。
【０１１１】
≪（３）仮想ノード消滅時のダミーデータ削除処理≫
次に、データ管理サーバの故障等を契機に、仮想ノード２が消滅した場合における、ダミーデータ削除処理について、図１６を参照して説明する。なお、ここでは、ダミーデータの削除処理において、ダミーデータを削除できた場合について説明する。
図１６は、仮想ノード２の消滅時におけるダミーデータ削除処理を説明するためのシーケンス図である。欠損データ特定装置３は、仮想ノード２（データ管理サーバ）が消滅した場合、データ欠損（原本データも複製データも消滅）が発生したか否かを、ダミーデータを削除できるか否かにより判定する。ある仮想ノード２（データ管理サーバ）が消滅した場合、振り分けサーバ１は、ダミーデータ削除要求を該当データの複製データを記憶していた他の仮想ノード２に転送することとなる。ここで、該当データを削除できたということは、そのデータが他の仮想ノード２において消滅せず存在することを意味し、これに対し、該当データを削除できないということは、複製データを記憶していた他の仮想ノード２でもそのデータが消滅したことを意味するからである。
【０１１２】
まず、振り分けサーバ１の死活監視部１１が、仮想ノード２の障害発生を検出すると（ステップＳ４０）、分散ハッシュテーブル１００（図５）を参照し、その障害が発生した仮想ノード２のレコードを削除して、分散ハッシュテーブル１００を変更する（ステップＳ４１）。
【０１１３】
続いて、振り分けサーバ１の分散ハッシュテーブル変更通知部１２は、上記のように分散ハッシュテーブル１００が変更されると、変更した分散ハッシュテーブル１００を含む分散ハッシュテーブル変更通知信号を生成し、欠損データ特定装置３に送信する（ステップＳ４２）。なお、分散ハッシュテーブル変更通知部１２は、同様に、各仮想ノード２に向けて、変更した分散ハッシュテーブル１００を含む分散ハッシュテーブル変更通知信号を送信しておく。
【０１１４】
欠損データ特定装置３のノード増減検出部３０１は、分散ハッシュテーブル変更通知信号を受信すると、記憶部３２に先の分散ハッシュテーブル１００が存在することから、分散ハッシュテーブルの２回目以降の登録であると認識する。そして、ノード増減検出部３０１は、記憶部３２にすでに存在する分散ハッシュテーブル１００を、旧世代の分散ハッシュテーブル１００（１００ｂ）とし、今回受信した分散ハッシュテーブル１００を、新世代の分散ハッシュテーブル１００（１００ａ）として記憶部３２に記憶する（ステップＳ４３）。
【０１１５】
ノード増減検出部３０１は、新世代の分散ハッシュテーブル１００ａと旧世代の分散ハッシュテーブル１００ｂとを比較する（ステップＳ４４）。そして、ノード増減検出部３０１は、比較の結果、旧世代の分散ハッシュテーブル１００ｂに存在していた仮想ノード２が、新世代の分散ハッシュテーブル１００ａにおいて、削除されていることを検出する（ステップＳ４５）。
【０１１６】
ノード増減検出部３０１が、仮想ノード２が削除されていることを検出すると、欠損データ特定装置３のダミーデータ削除部３０３は、ダミーデータキーテーブル２００（図９）を参照し、削除された仮想ノード２のダミーデータのキーを取得し、要求種別を「削除」として、ダミーデータ削除要求信号を生成する（ステップＳ４６）。そして、ダミーデータ削除部３０３は、生成したダミーデータ削除要求信号を振り分けサーバ１に送信する。欠損データ特定装置３が実行するそれ以降の処理（ステップＳ４７〜Ｓ５１）は、前記したステップＳ３２〜Ｓ３６（図１５参照）の処理と同様であるので説明を省略する。
【０１１７】
ここで、データ管理サーバの故障などにより、既存の仮想ノード２が消滅すると、コンシステントハッシュのアルゴリズムに従い、該当仮想ノード２の担当範囲が他の仮想ノード２にマージされる。マージ先の仮想ノード２は、旧世代の分散ハッシュテーブル１００ｂにおいて、消滅した仮想ノード２の次のレコードの仮想ノード２である。その仮想ノード２も消滅している場合、その次のレコードの仮想ノード２がマージ先となり、その仮想ノード２も消滅している場合には、その次のレコードの仮想ノード２がマージ先となり、以下、消滅していない仮想ノード２のレコードがマージ先となる。
欠損データ特定装置３（ダミーデータ削除部３０３およびダミーデータ登録部３０２）は、マージ先の仮想ノード２に対して、ダミーデータの削除処理と再登録処理を実行する。
このようにすることにより、データ管理サーバの故障等により、仮想ノード２が消滅した場合であっても、各仮想ノード２に対応付けたダミーデータを、仮想ノード２それぞれに記憶させる状態を維持することができる。
【０１１８】
≪（４）データ欠損の検出と警報情報の出力処理≫
次に、欠損データ特定装置３によるデータ欠損の検出と警報情報の出力処理について説明する。
本実施形態に係る分散データベースシステム１０００では、データの複製の数を超える複数台のデータ管理装置（物理ノード）が一度に故障すると、仮想ノード２の担当範囲の単位でデータ欠損が発生し、その担当範囲に含まれるダミーデータも欠損する。このとき、欠損したデータを管理していた仮想ノード２も消滅するため、仮想ノード２の消滅時の処理として、前記したステップＳ４０〜Ｓ４７（図１６参照）の処理を試みる。しかしながら、データの欠損に合わせてダミーデータも欠損しているため、ダミーデータの削除を行うことができない。よって、欠損データ特定装置３は、振り分けサーバ１から「ＮＧ」の応答情報を受信することとなる。この処理以降についてシーケンス図を用いて、詳細に説明する。
【０１１９】
図１７は、仮想ノード２の消滅時におけるデータ欠損の検出と警報情報の出力処理とを説明するためのシーケンス図である。
【０１２０】
ダミーデータ削除要求信号を受信した仮想ノード２は、ダミーデータを削除しようとするが、ダミーデータ（原本）およびダミーデータ（複製）が全て消滅しているため、ダミーデータが存在せず、削除することができない。よって、振り分けサーバ１は、欠損データ特定装置３に、ＮＧの応答信号を送信する（ステップＳ６０）。
【０１２１】
欠損データ特定装置３のダミーデータ削除部３０３は、ＮＧの応答信号を受信すると、そのダミーデータに対応する仮想ノード２のデータが欠損したと判定する（データ欠損を検出：ステップＳ６１）。
【０１２２】
データ欠損が検出されると、警報通知部３２０は、ダミーデータの削除がＮＧとなった仮想ノード２の仮想ノードＩＤと、旧世代の分散ハッシュテーブル１００ｂとにより、欠損したデータのキーのハッシュ値の範囲を特定する（ステップＳ６２）。この欠損したデータのキーのハッシュ値の範囲は、ダミーデータの削除がＮＧとなった仮想ノード２の担当範囲である。
【０１２３】
警報通知部３２０は、欠損したデータのハッシュ値の範囲の情報を含むデータ欠損検出信号を生成し（ステップＳ６３）、警報監視装置４の警報受信部４０に通知する。
【０１２４】
以上説明したように、本実施形態に係る分散データベースシステム１０００においては、クラスタを構成するデータ管理サーバが故障等した場合に、欠損データ特定装置３のダミーデータの削除処理によりデータ欠損を検出し、その欠損したデータのキーのハッシュ値の範囲を特定することができる。よって、データ管理サーバが故障等した場合でも、迅速に復旧することができる分散データベースシステムを提供することができる。
【０１２５】
なお、本実施形態に係る分散データベースシステム１０００は、上述した実施形態に限定されるものではない。例えば、本分散データベースシステム１０００では、振り分けサーバ１の振り分け先は、複数の仮想ノード２として説明しているが、必ずしも仮想ノード２である必要はなく、振り分け先が物理ノードである複数のデータ管理サーバであっても、欠損データ特定装置３の行うべき処理や本発明の特徴に変わりはない。
【符号の説明】
【０１２６】
１      振り分けサーバ
２      仮想ノード（データ管理サーバ）
３      欠損データ特定装置
４      警報監視装置
５      クライアント装置
１０    振り分け処理部
１１    死活監視部
１２    分散ハッシュテーブル変更通知部（変更通知部）
２０    データ管理部
３０    制御部
３１    入出力部
３２    記憶部
４０    警報受信部
１００  分散ハッシュテーブル（分散ハッシュ情報）
１００ａ  分散ハッシュテーブル（分散ハッシュ情報）（新）
１００ｂ  分散ハッシュテーブル（分散ハッシュ情報）（旧）
２００  ダミーデータキーテーブル
３００  欠損データ特定処理部
３０１  ノード増減検出部（増減検出部）
３０２  ダミーデータ登録部
３０３  ダミーデータ削除部
３１０  キー生成部
３２０  警報通知部
１０００  分散データベースシステム
【図１】
0006025679.tif 000002
【図２】
0006025679.tif 000003
【図３】
0006025679.tif 000004
【図４】
0006025679.tif 000005
【図５】
0006025679.tif 000006
【図６】
0006025679.tif 000007
【図７】
0006025679.tif 000008
【図８】
0006025679.tif 000009
【図９】
0006025679.tif 000010
【図１０】
0006025679.tif 000011
【図１１】
0006025679.tif 000012
【図１２】
0006025679.tif 000013
【図１３】
0006025679.tif 000014
【図１４】
0006025679.tif 000015
【図１５】
0006025679.tif 000016
【図１６】
0006025679.tif 000017
【図１７】
0006025679.tif 000018