(57)【要約】【課題】任意にネットワークに対して接続あるいは取り外しから可能なノードの記憶媒体を、システム内におけるデータの蓄積に有効に利用することが可能なデータ管理システムを提供する。【解決手段】本発明のデータ管理システムは、ネットワークに対してノードを接続あるいは取り外し可能に運用するネットワークシステムについて、キーに対応したデータ構造を用いて前記ネットワークに接続される複数のノードに対してデータを分散させて、前記データの蓄積を行うデータ管理システムにおいて、前記ノードが、新たに前記ネットワークに接続された際に、前記データを蓄積する前記ノードとなるために用いるノード情報を、前記ネットワークにすでに接続されている他の前記ノードに対して供給するデータ解析部を備えている。【選択図】図２
2016218787.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに対してノードを接続あるいは取り外し可能に運用するネットワークシステムについて、キーに対応したデータ構造を用いて前記ネットワークに接続される複数のノードに対してデータを分散させて、前記データの蓄積を行うデータ管理システムにおいて、
前記ノードが、
新たに前記ネットワークに接続された際に、前記データを蓄積する前記ノードとなるために用いるノード情報を、前記ネットワークにすでに接続されている他の前記ノードに対して供給するデータ解析部を備えている
ことを特徴とするデータ管理システム。
【請求項２】
前記ノード情報が、前記データの書き込み及び読み出しを行う先の前記ノードを抽出するために用いる、
ことを特徴とする請求項１に記載のデータ管理システム。
【請求項３】
前記データ解析部が、
前記ネットワーク内の前記ノードの各々に前記蓄積データを蓄積するために書き込む、あるいは蓄積されている前記蓄積データを読み出すために前記ネットワークに接続された際、書き込みあるいは読み出す対象の前記蓄積データのキーと前記ノードの各々のノード情報とにより、前記蓄積データを書き込むあるいは読み出す前記ノードを抽出する
ことを特徴とする請求項１または請求項２に記載のデータ管理システム。
【請求項４】
前記キーは前記蓄積データが測定された時間を含み、前記ノード情報が前記ノードの処理能力及び稼働率を含み、
前記データ解析部が、
所定の閾値以上の稼働率の前記ノードを前記蓄積データを保存するノードとして選択し、  前記蓄積データの測定が行われる時間の範囲を示す時刻範囲を前記処理能力に対応して分割することにより、測定された時間によって前記蓄積データを割り当てるための割当時刻範囲を、選択されたノード毎に設定する
ことを特徴とする請求項１または請求項２に記載のデータ管理システム。
【請求項５】
前記データ解析部が、
前記ノードに蓄積されている前記蓄積データを、他のノードに対して複製することを特徴とする請求項４に記載のデータ管理システム。
【請求項６】
前記データ解析部が、
前記データの複製を行う際、前記ノード及び他のノードの各々の稼働率に基づいてデータの取得率を算出し、取得率が予め設定された値となるまで、前記ノードの前記蓄積データをさらに前記他のノードと異なる他のノードに複製する
ことを特徴とする請求項５に記載のデータ管理システム。
【請求項７】
前記データ解析部が、
コンシステントハッシュ法のアルゴリズにより、前記時刻範囲に含まれる時刻を円の円周に写像し、前記ノード各々の前記割当時刻範囲に対応するをハッシュ値とするハッシュ関数により、前記ノードに対応する前記ハッシュ値の前記割当時刻範囲を前記時刻に対応させて前記円周に写像し、自身の蓄積データの複製である複製データの生成を、前記円周上において隣接する他のノードの前記割当時刻範囲から順次行う
ことを特徴とする請求項５または請求項６に記載のデータ管理システム。
【請求項８】
前記ノードの読み出しが行えなくなった際、
前記他のノードの前記データ解析部が、
前記ノードの前記蓄積データを、自身が記憶している前記ノードの前記蓄積データの前記複製データから復旧し、読み出しが行えなくなった前記ノードの前記蓄積データを自身の蓄積データとする
ことを特徴とする請求項５から請求項７のいずれか一項に記載のデータ管理システム。
【請求項９】
前記データ解析部が、
前記ハッシュ関数により、前記ノードの処理能力に対応した数のハッシュ値を算出し、前記円周に写像した前記ノードの各々のハッシュ値の合計値で前記時刻範囲を除算した割当時刻範囲で、前記円周に前記ハッシュ値を写像して分布させて仮想ノードの割当時刻範囲とする
ことを特徴とする請求項７または請求項８に記載のデータ管理システム。
【請求項１０】
ネットワークに対してノードを接続あるいは取り外し可能に運用するネットワークシステムについて、キーに対応したデータ構造を用いて前記ネットワークに接続される複数のノードに対してデータを分散させて、前記データの蓄積を行うデータ管理方法において、
前記ノードにおいて、
データ解析部が、新たに前記ネットワークに接続された際に、前記データを蓄積する前記ノードとなるために用いるノード情報を、前記ネットワークにすでに接続されている他の前記ノードに対して供給するデータ解析過程を含む
ことを特徴とするデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キーバリュー型データベースを用いたデータ管理システム及びデータ管理方法に関する。
【背景技術】
【０００２】
測定されたデータ管理を行う場合、センサなどの計測機器に対して直接に接続される設定端末などを用いて、センサからのデータ収集を行いリレーショナルデータベース（ＲＤＢ：relational database）に蓄積している（例えば、特許文献１参照）。
特に、プラントなどでは、数千にも及ぶ計測機器が施設の様々な部位に取りつけられている。それら計測機器は、秒単位などで計測結果を上記設定端末を介して常時発信し続ける。このため、プラント管理において蓄積されるデータ量は膨大な量になることが考えられる。プラントでは計測機器に対して設定端末を接続し、計測機器が取り付けられている部位を確認しつつデータ計測を行うという需要がある。このため、計測したデータを蓄積させる際に、設定端末をデータ管理システムのネットワークに対して頻繁に接続し、データを蓄積した後に切り離す運用を行っている。
【０００３】
また、近年注目を浴びるキーバリュー型データベースは、ＮｏＳＱＬ（Not only SQL）データベースの一例であり、ＲＤＢに比較して柔軟なデータ構造を有している。そのデータ構造は、ストア（ストレージ）の分散化に向き、大量データに対する可用性や読み取り性能において、一般的なＲＤＢよりも優位であると考えられる（例えば、特許文献２参照）。
【０００４】
一方、すでに述べたように、プラントのデータ管理においては、ＮｏＳＱＬデータベースを用いたデータ管理システムのネットワークへの接続あるいは切り離しを、どのノードにおいても可能として運用できることが望まれている。このノードとは、データ管理システムにおけるサーバ、パーソナルコンピュータ（以下、単にＰＣ）、設定端末（例えば、タブレット端末などの携帯端末）を示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−２２１７９９号公報
【特許文献２】特開２０１４−２１１７９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述したキーバリュー型データベースは、大容量のデータを蓄積するため、データの蓄積をそれぞれの端末により分散して記憶する分散型のデータベースであり、複数のノードの記憶媒体においてデータを蓄積している。
したがって、任意にノードをネットワークから接続あるいは取り外し可能として運用する場合、新たに接続したノードにデータの蓄積ができず、また取り外しが行えるノードもデータ蓄積に対して用いることができず、ネットワークに接続されているノードを有効的に大容量のデータの記憶の記憶媒体として活用できない問題がある。
【０００７】
本発明は、このような状況に鑑みてなされたもので、任意にネットワークに対して接続あるいは取り外しが可能なノードの記憶媒体を、システム内におけるデータの蓄積に有効に利用することが可能なデータ管理システム及びデータ管理方法を提供する。
【課題を解決するための手段】
【０００８】
上述した課題を解決するために、本発明のデータ管理システムは、ネットワークに対してノードを接続あるいは取り外し可能に運用するネットワークシステムについて、キーに対応したデータ構造を用いて前記ネットワークに接続される複数のノードに対してデータを分散させて、前記データの蓄積を行うデータ管理システムにおいて、前記ノードが、新たに前記ネットワークに接続された際に、前記データを蓄積する前記ノードとなるために用いるノード情報を、前記ネットワークにすでに接続されている他の前記ノードに対して供給するデータ解析部を備えていることを特徴とする。
本発明のデータ管理システムは、前記ノード情報が、前記データの書き込み及び読み出しを行う先の前記ノードを抽出するために用いる、ことを特徴とする。
【０００９】
また、本発明のデータ管理システムは、前記データ解析部が、前記ネットワーク内の前記ノードの各々に前記蓄積データを蓄積するために書き込む、あるいは蓄積されている前記蓄積データを読み出すために前記ネットワークに接続された際、書き込みあるいは読み出す対象の前記蓄積データのキーと前記ノードの各々のノード情報とにより、前記蓄積データを書き込むあるいは読み出す前記ノードを抽出することを特徴とする。
【００１０】
また、本発明のデータ管理システムは、前記キーは前記蓄積データが測定された時間を含み、前記ノード情報が前記ノードの処理能力及び稼働率を含み、前記データ解析部が、所定の閾値以上の稼働率の前記ノードを前記蓄積データを保存するノードとして選択し、前記蓄積データの測定が行われる時間の範囲を示す時刻範囲を前記処理能力に対応して分割することにより、測定された時間によって前記蓄積データを割り当てるための割当時刻範囲を、選択されたノード毎に設定することを特徴とする。
【００１１】
また、本発明のデータ管理システムは、前記データ解析部が、前記ノードに蓄積されている前記蓄積データを、他のノードに対して複製することを特徴とする。
【００１２】
また、本発明のデータ管理システムは、前記データ解析部が、前記データの複製を行う際、前記ノード及び他のノードの各々の稼働率に基づいてデータの取得率を算出し、取得率が予め設定された値となるまで、前記ノードの前記蓄積データをさらに前記他のノードと異なる他のノードに複製することを特徴とする。
【００１３】
また、本発明のデータ管理システムは、前記データ解析部が、コンシステントハッシュ法のアルゴリズにより、前記時刻範囲に含まれる時刻を円の円周に写像し、前記ノード各々の前記割当時刻範囲に対応するをハッシュ値とするハッシュ関数により、前記ノードに対応する前記ハッシュ値の前記割当時刻範囲を前記時刻に対応させて前記円周に写像し、自身の蓄積データの複製である複製データの生成を、前記円周上において隣接する他のノードの前記割当時刻範囲から順次行うことを特徴とする。
【００１４】
また、本発明のデータ管理システムは、前記ノードの読み出しが行えなくなった際、前記他のノードの前記データ解析部が、前記ノードの前記蓄積データを、自身が記憶している前記ノードの前記蓄積データの前記複製データから復旧し、読み出しが行えなくなった前記ノードの前記蓄積データを自身の蓄積データとすることを特徴とする。
【００１５】
また、本発明のデータ管理システムは、前記ハッシュ関数が前記ノードの処理能力に対応した数のハッシュ値を算出し、前記円周上に前記ノードの各々のハッシュ値の合計値で前記時刻範囲を除算した割当時刻範囲で、前記円周上に前記ハッシュ値が分布させて仮想ノードとすることを特徴とする。
【００１６】
また、本発明のデータ管理方法は、ネットワークに対してノードを接続あるいは取り外し可能に運用するネットワークシステムについて、キーに対応したデータ構造を用いて前記ネットワークに接続される複数のノードに対してデータを分散させて、前記データの蓄積を行うデータ管理方法において、前記ノードにおいて、データ解析部が、新たに前記ネットワークに接続された際に、前記データを蓄積する前記ノードとなるために用いるノード情報を、前記ネットワークにすでに接続されている他の前記ノードに対して供給するデータ解析過程を含むことを特徴とする。
【発明の効果】
【００１７】
以上説明したように、本発明によれば、任意に端末をノードとしてネットワークに接続した場合、予めネットワークに接続されていたノードと同様に、ノード情報を他のノードに提供してデータの蓄積を行うことも含めて、ネットワークに参加させ、任意にネットワークに対して接続あるいは取り外しが可能となり、任意にネットワークに対して接続あるいは取り外しが可能なノードの記憶媒体を、システム内におけるデータの蓄積に有効に利用することが可能となる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施形態によるデータ管理システム１の構成例を示すブロック図である。
【図２】本実施形態におけるデータ管理部の構成例を示す図である。
【図３】ネットワークＮＷに接続され、データ管理システム１に参加しているノードのノード情報が記載された参加ノード情報を示す図である。
【図４】検索用インデックスを示すインデックステーブルの一例を示す図である。
【図５】携帯端末Ａ−３がデータをデータ管理システム１で保存する際にネットワークＮＷに接続され、新たなノードとしてデータ管理システム１に参加する処理の動作例を示すフローチャートである。
【図６】図１に対応した図であり、図５のフローチャートの処理を説明する図である。
【図７】データの保存先の算出条件が記載された算出条件テーブルの構成例を示す図である。
【図８】データの保存先として選択されたノードの各々におけるデータの保存量の設定を説明する図である。
【図９】データ管理システム１内における各ノードのデータベース１０６において記憶されるパーティションキー及びレンジキーからなるキー（Key）部分とデータとの対応関係を示す図である。
【図１０】携帯端末Ａ−３がネットワークＮＷに接続され、新たなノードとしてデータ管理システム１に参加する処理の動作例を示すフローチャートである。
【図１１】図１に対応した図であり、図１０のフローチャートの処理を説明する図である。
【図１２】データ管理システム１のノード間における複製の作成処理の動作例を示すフローチャートである。
【図１３】データ管理システム１のノード間における複製の作成処理の動作例を示す図である。
【図１４】データ管理システム１のノード間における複製からデータを復旧する処理の動作例を示すフローチャートである。
【図１５】データ管理システム１のノード間における複製のデータから読み出せなくなったノードが記憶するデータの復旧の処理の動作例を示す図である。
【図１６】レンジキーの最小値と最大値との間の時刻範囲を円の円周上に写像することで配置し、かつこの円の円周上（以下、単に円周上）にハッシュ値として各ノードの格納する割当時刻範囲を仮想ノードとして配置するハッシュ関数を説明する図である。
【図１７】ネットワークＮＷに接続され、データ管理システム１に参加しているノードのノード情報が記載された参加ノード情報である。
【図１８】本実施形態の説明に用いるデータとこのデータに対応するレンジキーとの対応を説明するインデックステーブルを示す図である。
【図１９】仮想ノードを用いたコンシステントハッシュ法により、ノードＡ−１、ノードＡ−２及びノードＡ−３の各々に記憶されているデータとそのデータの複製先とを説明する図である。
【図２０】レンジキーの最小値と最大値との間の時刻範囲を円周上に写像して配置した仮想ノードにおいて、ノードＡ−３が無反応状態である場合における、ノードＡ−３に記憶されているデータの復旧を説明する図である。
【図２１】ノード３が死んだ場合に、ノードＡ−１がノードＡ−３のデータの複製からノードＡ−３のデータを復旧する処理を説明する図である。
【図２２】ノードＡ−１がノードＡ−３のデータの複製を、自身の担当するデータに変更した後に、新たに担当するデータの複製を他のノードに作成する処理を説明する図である。
【発明を実施するための形態】
【００１９】
本発明のデータ管理システムは、ネットワークに対してノードを接続あるいは取り外し可能に運用するネットワークシステムにおいて、このネットワークシステムに接続される複数のノードに対してデータを分散させて蓄積する際、キーバリューストアのデータ構造によりデータの蓄積の管理を行う（キーバリュー型データベースを活用したデータの管理を行う）。これにより、本発明のデータ管理システムは、任意に端末をノードとしてネットワークに接続した場合、予めネットワークに接続されていたノードと同様に、ノード情報を他のノードに提供してデータの蓄積を行うことも含めて、ネットワークに参加させ、また取り外した場合、このノードに蓄積されていたデータを他のノードにおいて復旧させることより、任意にネットワークに対して接続あるいは取り外しを可能としている。
【００２０】
＜第１の実施形態＞
以下、本発明の第１の実施形態について、図面を参照して説明する。
図１は、本発明の第１の実施形態によるデータ管理システム１の構成例を示すブロック図である。本実施形態におけるデータ管理システム１は、記憶媒体（蓄積媒体）としてデータベース（ＤＢ：database）を有する、サーバＡ−１及びＢ−１と、パーソナルコンピュータＡ−２及びＢ−２と、携帯端末Ａ−３及びＡ−４との各々を備えている。また、サーバＡ−１及びＢ−１と、パーソナルコンピュータＡ−２及びＢ−２との各々は、ネットワークＮＷに対して接続されている。また、携帯端末Ａ−３及びＡ−４の各々は、パーソナルコンピュータＡ−２を介してネットワークＮＷに対して接続されている。
【００２１】
携帯端末Ａ−３及びＡ−４の各々は、例えばタブレット型コンピュータであり、プラント内に設けられた測定器Ｐ−１からＰ−３の各々から、測定器Ｐ−１からＰ−３の各々が測定したデータを読み込む。このとき、携帯端末Ａ−３及びＡ−４の各々は、それぞれ蓄積媒体ＤＢにデータを一旦蓄積する。本実施携帯のデータ管理システムにおいては、ネットワークの各ノード間で送受信する、あるいは蓄積媒体に蓄積するデータ形式をキーバリュー（Key-Value）形式として、キーバリューストアの方式によりデータ管理を行う。
【００２２】
サーバＡ−１及びＢ−１と、パーソナルコンピュータＡ−２及びＢ−２と、携帯端末Ａ−３及びＡ−４との各々（以下、総称してノードと示すこともある）は、データを管理するデータ管理部（不図示）が備えられている。図２は、本実施形態におけ各ノードに設けられたデータ管理部１０の構成例を示す図である。データ管理部１０は、表示部１０１、表示データ作成部１０２、データ解析部１０３、データ読み書き部１０４、データ通信部１０５、データベース１０６の各々を備えている。
【００２３】
表示部１０１は、ノード対して行わせる処理の内容を選択したり、文字入力を行う画像の表示、また読み出し及び書き込みを行うデータの入力操作及び表示を行う。表示データ作成部１０２は、表示部１０１に対して表示する文字を含む画像を生成する。例えば、表示データ作成部１０２は、表示部１０１に対して表示するデータベースから読み出されたデータや測定器Ｐ−１などから読み込んだデータの文字列や、操作を選択する入力画面の画像を生成する。
【００２４】
データ解析部１０３は、ノードの各々が新たにネットワークＮＷに接続された際に、データを蓄積するノードとなるため、データの書き込み及び読み出しを行う先のノードを抽出するために用いるノード情報を、ネットワークＮＷにすでに接続されている他のノードに対して供給する。また、データ解析部１０３は、ネットワークＮＷ内のノードの各々に蓄積データを蓄積するために書き込む、あるいは蓄積されている蓄積データを読み出すためにネットワークＮＷに接続された際、読み出す蓄積データのキーとノードの各々のノード情報とにより、蓄積データを書き込むあるいは読み出すノードを抽出する（詳細は後述する）。
【００２５】
図３は、ネットワークＮＷに接続され、データ管理システム１に参加しているノードのノード情報が記載された参加ノード情報を示す図である。各ノード毎にレコード（行方向のデータ列）が形成されており、ノードＩＤ（identification）に対応し、パーティションキー、処理能力、稼働率の各々が記憶されている。ノードＩＤは、ノードを識別する情報であり、例えば本実施形態においては符号を用いている。パーティションキーは、大規模なデータを多くのノードにより管理する際、管理を行い易くし、ネットワークＮＷ内のトラフィックの増大を抑制する目的で、ノードを複数のパーティションに分割するために任意に設定されるものであり、省略しても良い。処理能力は、データベース１０６の容量の大きさ及びノードの読み書きのスピードで決定されている。稼働率は、データ管理システム１の動作している時間に対して、ノードがネットワークＮＷに接続されて、データ管理システム１に参加している時間の割合を示す。例えば、ネットワークＮＷに対して常時接続されるノードは稼働率が１００であり、ネットワークＮＷから切り離されている時間が長く、短時間しかネットワークＮＷに接続されないノードは１０と設定される。
【００２６】
図４は、検索用インデックスを示すインデックステーブルの一例を示す図である。検索用インデックスは、例えば、データの各々に個別に設けられたキーとして、パーティションキーとレンジキーとから構成されている。パーティションキーは、図３におけるパーティション個別に設けられたキーである。レンジキーは、データが測定器で測定された日時を示している。すなわち、本実施形態においては、測定された日時が測定されたデータを検索するキーであるレンジキーとして用いる。
【００２７】
図２に戻り、データ読み書き部１０４は、データ通信部１０５を介してデータの読み出しを要求する読出信号が入力されると、読出信号に含まれるキーに対応したデータをデータベース１０６から読み出し、読み出しを要求したノードに対してデータ通信部１０５を介して出力する。また、データ読み書き部１０４は、データ通信部１０５を介してデータの書き込みを要求する書込信号が入力されると、書込信号に含まれるキーに対応させて入力されたデータをデータベース１０６に書き込んで記憶させる。
【００２８】
ここで、図５及び図６を用いて、携帯端末Ａ−３がデータをデータ管理システム１で保存する際にネットワークＮＷに接続され、新たなノードとしてデータ管理システム１に参加する処理の説明を行う。図５は、携帯端末Ａ−３がデータをデータ管理システム１で保存する際にネットワークＮＷに接続され、新たなノードとしてデータ管理システム１に参加する処理の動作例を示すフローチャートである。図６は、図１に対応した図であり、図５のフローチャートの処理を説明する図である。ここで、サーバＡ−１及びＢ−１と、パーソナルコンピュータＡ−２及びＢ−２と、携帯端末Ａ−４の各々は、すでにネットワークＮＷに接続され、データ管理システム１に参加している。
【００２９】
ステップＳ１０１：
携帯端末Ａ−３は、ユーザの操作により、測定器Ｐ−１から、測定器Ｐ−１が測定したデータを吸い上げる（入力する）。そして、この吸い上げたデータをデータ管理システム１内に記憶させるため、携帯端末Ａ−３は、ユーザの操作により、パーソナルコンピュータＡ−２を介してネットワークＮＷに接続される。
【００３０】
ステップＳ１０２：
パーソナルコンピュータＡ−２のデータ解析部１０３は、携帯端末Ａ−３が接続されると、携帯端末Ａ−３に対して、データベース１０６に格納されている参加ノード情報と、検索用インデックスとを読み出す。そして、パーソナルコンピュータＡ−２のデータ解析部１０３は、読み出したノード情報と検索用インデックスとの各々を携帯端末Ａ−３に対して出力する。
これにより、携帯端末Ａ−３のデータ解析部１０３は、パーソナルコンピュータＡ−２から供給されるノード情報と検索用インデックスが記載されたインデックステーブルとの各々を取得する。そして、携帯端末Ａ−３のデータ解析部１０３は、参加ノード情報に自身のノード情報を加えて、データベース１０６に対して書き込んで記憶させる。
【００３１】
ステップＳ１０３：
携帯端末Ａ−３のデータ解析部１０３は、自身のノード情報を加えた参加ノード情報を、データ通信部１０５を介して、他のノードであるサーバＡ−１及びＢ−１と、パーソナルコンピュータＡ−２及びＢ−２と、携帯端末Ａ−４の各々に対して出力する。
【００３２】
ステップＳ１０４：
そして、サーバＡ−１及びＢ−１と、パーソナルコンピュータＡ−２及びＢ−２の各々において、データ解析部１０３は、新たに携帯端末Ａ−３のノード情報を加えた参加ノード情報を、データベース１０６に対して書き込んで記憶させる。これにより、携帯端末Ａ−３のノード情報が含まれる参加ノード情報は、データ管理システム１におけるノードの各々により共有される。
【００３３】
ステップＳ１０５：
次に、携帯端末Ａ−３のデータ解析部１０３は、自身の保持するデータを蓄積するノード、すなわちデータの書込先を求める。ここで、携帯端末Ａ−３のデータ解析部１０３は、パーソナルコンピュータＡ−２に対して、保存先の算出条件を要求する。
これにより、パーソナルコンピュータＡ−２のデータ解析部１０３は、データベース１０６から保存先の算出条件を読み出し、読み出した保存先の算出（選択）条件を、携帯端末Ａ−３に対して出力する。
【００３４】
図７は、データの保存先の算出条件が記載された算出条件テーブルの構成例を示す図である。算出条件（選択）として、例えば一つは、「稼働率１０％以下のノードにデータ保存はさせない」ことである。この時点で、稼働率が１０％以下の携帯端末Ａ−３及びＡ−４は除外されることになる。算出条件として、例えば他の一つは、「ノードの処理能力の高い順に能力の比率でレンジキーの時刻情報を元にデータを分散させる」ことである。本実施携帯としては、パーティションＡのパーソナルコンピュータＡ−２を介して、ネットワークＮＷに接続されたため、携帯端末Ａ−３のデータもパーティションＡのノードに接続される。サーバＡ−１及びパーソナルコンピュータＡ−２の各々は、稼働率が１００％であるため、データの保存先として選定されることになる。
【００３５】
図８は、データの保存先として選択されたノードの各々におけるデータの保存量の設定を説明する図である。サーバＡ−１は処理能力が１００であり、パーソナルコンピュータＡ−２は処理能力が５０である。このため、データ管理システム１におけるパーティションＡで蓄積するデータは、サーバＡ−１とパーソナルコンピュータＡ−２との各々で、２：１の割合で分散して記憶される。すなわち、本実施形態においては、蓄積されるデータの測定が行われる時刻の範囲、すなわちレンジキーの時間が取り得る時刻の範囲である時刻範囲（時間幅）として００：００から２４：００までの時間においてデータが測定される。サーバＡ−１とパーソナルコンピュータＡ−２との各々は、この２：１の割合で測定されたデータの蓄積を行う。このため、データの測定が行われる時刻範囲を、２：１の割当時刻範囲に分割している。サーバＡ−１とパーソナルコンピュータＡ−２との各々は、データが測定された時間が自身に割り当てられた割当時刻範囲に含まれる場合に、その時間に測定されたデータの蓄積を行う。
したがって、サーバＡ−１は、時刻範囲を処理能力の割合で分割した割当時刻範囲である００：００から１６：００までの時間が割り当てられるため、この割当時刻範囲に含まれる時間を測定した時間として含むレンジキーのデータを保存する。一方、サーバＡ−２は、時刻範囲を処理能力の割合で分割した割当時刻範囲である１６：００から２４：００までの割当時刻範囲が割り当てられるため、この割当時刻範囲に含まれる時間を測定した時間として含むレンジキーのデータを保存する。
【００３６】
図５に戻り、携帯端末Ａ−３のデータ解析部１０３は、図７の算出（選択）条件の一つである「稼働率１０％以下のノードにデータ保存はさせない」ことから、データの保存先として携帯端末Ａ−３及びＡ−４を除外し、保存先としてサーバＡ−１及びパーソナルコンピュータＡ−２を選択する。また、携帯端末Ａ−３のデータ解析部１０３は、算出条件の一つである「ノードの処理能力の高い順に能力の比率でレンジキーの時刻情報を元にデータを分散させる」に対応させ、サーバＡ−１及びパーソナルコンピュータＡ−２の処理能力である１００：５０（＝２：１）に基づいて、レンジキーの時刻範囲である００：００から２４：００において、サーバＡ−１の記憶する割当時刻範囲を００：００から１６：００までとし、パーソナルコンピュータＡ−２の記憶する割当時刻範囲を１６：００から２４：００までとする。
【００３７】
そして、携帯端末Ａ−３のデータ解析部１０３は、自身の保持しているレンジキーの時間を確認し、サーバＡ−１及びパーソナルコンピュータＡ−２の各々の割当時刻範囲に各データのレンジキーの時間が含まれるかを検出する。そして、携帯端末Ａ−３のデータ解析部１０３は、レンジキーが２０１５−０１−０１−０１：００及び２０１５−０１−０２−１２：００のデータの保存先をサーバＡ−１とし、レンジキーが２０１５−０１−０２−２２：００のデータの保存先をパーソナルコンピュータＡ−２とする。
【００３８】
ステップＳ１０６：
携帯端末Ａ−３のデータ解析部１０３は、レンジキーが２０１５−０１−０１−０１：００及び２０１５−０１−０１−１２：００のデータをサーバＡ−１へ出力（送信）する。また、携帯端末Ａ−３のデータ解析部１０３は、レンジキーが２０１５−０１−０１−２２：００のデータをパーソナルコンピュータＡ−２に出力する。
これにより、サーバＡ−１のデータ読み書き部１０４は、供給されるレンジキーが２０１５−０１−０１−０１：００及び２０１５−０１−０２−１２：００のデータを、それぞれのレンジキーと対応させてデータベース１０６に対して書き込んで記憶させる。同様に、パーソナルコンピュータＡ−２のデータ読み書き部１０４は、供給されるレンジキーが２０１５−０１−０２−２２：００のデータを、このレンジキーと対応させてデータベース１０６に対して書き込んで記憶させる。
【００３９】
ステップＳ１０７：
また、携帯端末Ａ−３のデータ解析部１０３は、インデックステーブルに対して、新たにサーバＡ−１及びパーソナルコンピュータＡ−２の各々のレンジキーを書き込み、この更新したインデックステーブルを、パーソナルコンピュータＡ−２に対し、データ通信部１０５を介して出力する。
そして、パーソナルコンピュータＡ−２のデータ解析部１０３は、供給される更新されたインデックステーブルをデータベース１０６に対して書き込んで記憶させるとともに、サーバＡ−１、携帯端末Ａ−４、サーバＢ−１、パーソナルコンピュータＢ−２の各々に対して出力する。
【００４０】
ステップＳ１０８：
サーバＡ−１、携帯端末Ａ−４、サーバＢ−１、パーソナルコンピュータＢ−２の各々データ解析部１０３は、供給される更新されたインデックステーブルをそれぞれデータベース１０６に対して書き込んで記憶させる。
これにより、更新されたインデックステーブルは、データ管理システム１のネットワークＮＷに接続に接続されているノードの全てにおいて、インデックステーブルにおけるインデックス情報が共有される。
【００４１】
図９は、データ管理システム１内における各ノードのデータベース１０６において記憶されるパーティションキー及びレンジキーからなるキー（Key）部分とデータとの対応関係を示す図である。図９において、キー部分は、パーティションキー及びレンジキーの各々から構成されているが、すでに説明したようにネットワークに接続されるノードをパーティションに分割する必要が無い場合、パーティションキーを用いずレンジキーのきでキー部分を構成するようにしても良い。この図９におけるキー部分の情報がインデックステーブル（図４）によって、データ管理システム１内で共有される。
【００４２】
図１０及び図１１を用いて、携帯端末Ａ−３がデータを読み出す際にネットワークＮＷに接続され、新たなノードとしてデータ管理システム１に参加する処理の説明を行う。図１０は、携帯端末Ａ−３がネットワークＮＷに接続され、新たなノードとしてデータ管理システム１に参加する処理の動作例を示すフローチャートである。図６は、図１に対応した図であり、図１０のフローチャートの処理を説明する図である。ここで、サーバＡ−１及びＢ−１と、パーソナルコンピュータＡ−２及びＢ−２と、携帯端末Ａ−４の各々は、すでにネットワークＮＷに接続され、データ管理システム１に参加している。
【００４３】
ステップＳ２０１：
測定器Ｐ−１が過去に測定したデータを、データ管理システム１内から読み出すため、携帯端末Ａ−３は、ユーザの操作により、パーソナルコンピュータＡ−２を介して、ネットワークＮＷに接続される。
【００４４】
ステップＳ２０２：
パーソナルコンピュータＡ−２のデータ解析部１０３は、携帯端末Ａ−３が接続されると、携帯端末Ａ−３に対して、データベース１０６に格納されている参加ノード情報と、検索用インデックスとを読み出す。そして、パーソナルコンピュータＡ−２のデータ解析部１０３は、読み出したノード情報と検索用インデックスとの各々を携帯端末Ａ−３に対して出力する。
これにより、携帯端末Ａ−３のデータ解析部１０３は、パーソナルコンピュータＡ−２から供給されるノード情報と検索用インデックスが記載されたインデックステーブルとの各々を取得する。そして、携帯端末Ａ−３のデータ解析部１０３は、参加ノード情報に自身のノード情報を加えて、データベース１０６に対して書き込んで記憶させる。
【００４５】
ステップＳ２０３：
携帯端末Ａ−３のデータ解析部１０３は、自身のノード情報を加えた参加ノード情報を、データ通信部１０５を介して、他のノードであるサーバＡ−１及びＢ−１と、パーソナルコンピュータＡ−２及びＢ−２と、携帯端末Ａ−４の各々に対して出力する。
【００４６】
ステップＳ２０４：
そして、サーバＡ−１及びＢ−１と、パーソナルコンピュータＡ−２及びＢ−２の各々において、データ解析部１０３は、新たに携帯端末Ａ−３のノード情報を加えた参加ノード情報を、データベース１０６に対して書き込んで記憶させる。これにより、携帯端末Ａ−３のノード情報が含まれる参加ノード情報は、データ管理システム１におけるノードの各々により共有される。
【００４７】
ステップＳ２０５：
ユーザが携帯端末Ａ−３の表示部１０１に表示されている入力欄に対して、データを読み出すかを示す必要情報として、検索範囲を示す日時情報を入力する。
これにより、携帯端末Ａ−３のデータ解析部１０３は、データの読み出し要求を受け付け、入力されたレンジキーにおける検索範囲を抽出する。
【００４８】
ステップＳ２０６：
携帯端末Ａ−３のデータ解析部１０３は、抽出した検索範囲に含まれる時間を有するレンジキーをインデックステーブルから検出する。
【００４９】
ステップＳ２０７：
次に、携帯端末Ａ−３のデータ解析部１０３は、ユーザが入力した検索範囲のレンジキーのデータが記憶されているノード、すなわちデータの読み出しを要求するノードを求める。ここで、携帯端末Ａ−３のデータ解析部１０３は、パーソナルコンピュータＡ−２に対して、保存先の算出条件を要求する。
これにより、パーソナルコンピュータＡ−２のデータ解析部１０３は、データベース１０６から保存先の算出条件を読み出し、読み出した保存先の算出（選択）条件を、携帯端末Ａ−３に対して出力する。
【００５０】
携帯端末Ａ−３のデータ解析部１０３は、図７の算出（選択）条件の一つである「稼働率１０％以下のノードにデータ保存はさせない」ことから、データの保存先として携帯端末Ａ−３及びＡ−４を除外し、保存先としてサーバＡ−１及びパーソナルコンピュータＡ−２を選択する。また、携帯端末Ａ−３のデータ解析部１０３は、算出条件の一つである「ノードの処理能力の高い順に能力の比率でレンジキーの時刻情報を元にデータを分散させる」に対応させ、サーバＡ−１及びパーソナルコンピュータＡ−２の処理能力である１００：５０（＝２：１）に基づいて、レンジキーの時刻範囲である００：００から２４：００において、サーバＡ−１の記憶する割当時刻範囲を００：００から１６：００までとし、パーソナルコンピュータＡ−２の記憶する割当時刻範囲を１６：００から２４：００までとする。
【００５１】
そして、携帯端末Ａ−３のデータ解析部１０３は、読み出そうとしているレンジキーの時間を確認し、サーバＡ−１及びパーソナルコンピュータＡ−２のいずれの割当時刻範囲に、読み出すデータ各々のレンジキーの時間が含まれるかを検出する。そして、携帯端末Ａ−３のデータ解析部１０３は、レンジキーが２０１５−０１−０１−０１：００、２０１５−０１−０１−０６：００、２０１５−０１−０２−１２：００及び２０１５−０１−０２−１８：００のデータの保存先をサーバＡ−１と抽出（算出）し、レンジキーが２０１５−０１−０２−２２：００のデータの保存先をパーソナルコンピュータＡ−２と抽出（算出）する。
【００５２】
ステップＳ２０８：
携帯端末Ａ−３のデータ解析部１０３は、レンジキーが２０１５−０１−０１−０１：００、２０１５−０１−０１−０６：００、２０１５−０１−０２−１２：００及び２０１５−０１−０２−１８：００のデータを、サーバＡ−１に対して読み出しするように要求する。また、携帯端末Ａ−３のデータ解析部１０３は、レンジキーが２０１５−０１−０２−２２：００のデータを、パーソナルコンピュータＡ−２に対して読み出しするように要求する。
【００５３】
これにより、サーバＡ−１のデータ読み書き部１０４は、供給されるレンジキーが２０１５−０１−０１−０１：００、２０１５−０１−０１−０６：００、２０１５−０１−０２−１２：００及び２０１５−０１−０２−１８：００のデータを、それぞれのレンジキーに対応してデータベース１０６から読み出し、データ通信部１０５を介して携帯端末Ａ−３に対して送信する。同様にパーソナルコンピュータＡ−２のデータ読み書き部１０４は、供給されるレンジキーが２０１５−０１−０２−２２：００のデータを、このレンジキーと対応しデータベース１０６から読み出し、データ通信部１０５を介して携帯端末Ａ−３に対して送信する。
ステップＳ２０９：
そして、携帯端末Ａ−３の表示部１０１は、供給されたレンジキーが２０１５−０１−０２−２２：００のデータを、自身の表示画面に表示させる。
【００５４】
図１２及び図１３を用いて、ノードからデータが読み出せない状態となった場合、他のノードからデータの読み出せなくなったデータを読み出すため、他のノードに複製を生成する処理について以下に説明する。すなわち、本実施形態においては、任意にノードをネットワークＮＷから取り外す運用を前提としている。これにより、取り外すノードが記憶しているデータが読み出せなく無くなる場合が生じる。このため、取り外されたノードに記憶されているデータを、このデータの複製を有する他のノードにおいて復旧させ、取り外されたノードのデータを、複製を有するノードにおいて読み出るようにしている。図１２は、データ管理システム１のノード間における複製の作成処理の動作例を示すフローチャートである。図１３は、データ管理システム１のノード間における複製の作成処理の動作例を示す図である。
【００５５】
ここで、図１において、サーバＡ−１と、パーソナルコンピュータＡ−２と、携帯端末Ａ−３及びＡ−４の各々は、ネットワークＮＷに接続され、データ管理システム１に参加している。また、サーバＡ−１は、処理能力が８０であり、稼働率が９０％である。パーソナルコンピュータＡ−２は、処理能力が６０であり、稼働率が９０％である。携帯端末Ａ−３は、処理能力が５０であり、稼働率が８０％である。携帯端末Ａ−４は、処理能力が５０であり、稼働率が８０％である。
以下の説明においては、ノード（サーバ）Ａ−１が他のノード（パーソナルコンピュータ）Ａ−２、ノード（携帯端末）Ａ−３及びノード（携帯端末）Ａ−４を複製を作成する対象とした場合を説明する。
【００５６】
ステップＳ３０１：
サーバＡ−１のデータ解析部１０３は、データベース１０６から参加ノード情報を読み出し、この参加ノード情報から他のノードであるパーソナルコンピュータＡ−２、携帯端末Ａ−３及びＡ−４の各々の処理能力を検出する。サーバＡ−１のデータ解析部１０３は、パーソナルコンピュータＡ−２（処理能力：６０）、携帯端末Ａ−３（処理能力：５０）及びＡ−４（処理能力：５０）の各々の処理能力の比を、６：５：５と算出する。そして、サーバＡ−１のデータ解析部１０３は、複製を行いたいノードを除いたノードの各々に対して、レンジキーの割当時刻範囲を割り当てる。
【００５７】
このとき、サーバＡ−１のデータ解析部１０３は、処理能力の比で２４時間を分割すると、パーソナルコンピュータＡ−２に９時間の割当時刻範囲、携帯端末Ａ−３に７．５時間の割当時刻範囲、携帯端末Ａ−４に７．５時間の割当時刻範囲となる。これにより、サーバＡ−１のデータ解析部１０３は、パーソナルコンピュータＡ−２に対し、００：００から０９：００までの時間に含まれるレンジキーのデータの複製を保持させ、携帯端末Ａ−３に対し、０９：００から１６：３０までの時間に含まれるレンジキーのデータの複製を保持させ、携帯端末Ａ−４に対し、１６：３０から２４：００までの時間に含まれるレンジキーのデータを保持させる。
【００５８】
ステップＳ３０２：
サーバＡ−１のデータ解析部１０３は、参加ノード情報から自身以外の他のノードであるパーソナルコンピュータＡ−２、携帯端末Ａ−３及びＡ−４の各々の稼働率を検出する。そして、サーバＡ−１のデータ解析部１０３は、複製先の稼働率から取得率を算出する。ここで、サーバＡ−１のデータ解析部１０３は、サーバＡ−１の保持する割当時刻範囲００：００から０８：００までのデータの複製を生成させるノードがパーソナルコンピュータＡ２であるため、自身の稼働率９０％とパーソナルコンピュータＡ−２の稼働率９０％から、いずれか一つが稼働している確率を取得率として、１−（１−（一方の稼働率））×（１−（他方の稼働率））の式に、自身とパーソナルコンピュータＡ−２との稼働率を代入し、１−（１−０．９）×（１−０．９）＝０．９９（すなわち、９９％）を算出する。
【００５９】
また、サーバＡ−１のデータ解析部１０３は、データの複製を生成させるノードがパーソナルコンピュータＡ２及び携帯端末Ａ−３の各々である場合、取得率は、１−（１−（一方の稼働率））×（１−（他方の稼働率））×（１−（他方の稼働率））の式に、自身とパーソナルコンピュータＡ−２と携帯端末Ａ−３との稼働率を代入し、１−（１−０．９）×（１−０．９）×（１−０．８）＝０．９９８（すなわち、９９．８％）を算出する。
【００６０】
ステップＳ３０３：
サーバＡ−１のデータ解析部１０３は、自身のノードの稼働率と、データの複製先であるパーソナルコンピュータＡ２の稼働率から求めた取得率を、予め設定した取得率閾値と比較する。そして、サーバＡ−１のデータ解析部１０３は、取得率が設定値である上記取得率閾値以上の場合に、処理をステップＳ３０４へ進め、一方、取得率が取得率閾値未満である場合に、処理をステップＳ３０５へ進める。ここで、取得率閾値は、対象となるノードに記憶されているデータを読み出すことができる割合を示し、ユーザがデータの読み出しの重要性に対応させて適時、任意の数値を設定する。
【００６１】
ステップＳ３０４：
次に、サーバＡ−１のデータ解析部１０３は、複製指示を示す制御信号とともに、自身の保持しているデータを、複製先のノード、例えばパーソナルコンピュータＡ−２に対して送信する。
そして、複製先のノード、例えばパーソナルコンピュータＡ−２のデータ読み書き部１０４は、データベース１０６に対してデータの複製を書き込んで記憶させる。このとき、パーソナルコンピュータＡ−２のデータ読み書き部１０４は、複製であり自身がアクセスされて読み出しを行うものではないことを示す複製フラグを、データの複製に対して付与する。また、このとき、パーソナルコンピュータＡ−２のデータ読み書き部１０４は、複製したデータの各々に対して、いずれのノードの複製であるかを示すノードフラグを付して記憶させる。
【００６２】
あるいは、データベース１０６を自身の記憶するデータのデータ領域と、他のノードのデータの複製を記憶する複製データ領域とに分離して、自身の記憶するデータをデータ領域に書き込み、他のノードの複製したデータを複製データ領域に書き込む構成としても良い。この場合、データの複製もとのノードを示す識別情報を各複製データ領域に付与する。
上述した処理により、複製の対象となるノードであるサーバＡ−１のデータを、複製を保持させるノード、例えばパーソナルコンピュータＡ−２に複製する処理を終了する。
【００６３】
ステップＳ３０５：
サーバＡ−１のデータ解析部１０３は、参加ノード情報にを参照して、パーソナルコンピュータＡ−２以外のノードを検索し、携帯端末Ａ−３及びＡ−４の各々を抽出する。そして、サーバＡ−１のデータ解析部１０３は、処理能力の比が５０：５０＝１：１であるため、処理能力の比で２４時間を分割すると、携帯端末Ａ−３に１２時間の割当時刻範囲、携帯端末Ａ−４に１２時間の割当時刻範囲となる。これにより、サーバＡ−１のデータ解析部１０３は、携帯端末Ａ−３に対し、００：００から１２：００までの時間に含まれるレンジキーのデータの複製を保持させ、携帯端末Ａ−４に対し、１２：００から２４：００までの時間に含まれるレンジキーのデータを保持させる。ここで、サーバＡ−１のデータ解析部１０３は、自身が記憶するレンジキーの範囲が００：００から０８：００であるため、００：００から１２：００までのデータの複製を担当するノードとして携帯端末Ａ−３を選択して設定する。そして、サーバＡ−１のデータ解析部１０３は、処理をステップＳ３０２へ進める。
【００６４】
図１４及び図１５を用いて、ノードからデータが読み出せない状態となった場合、他のノードに生成された複製のデータを用いて、他のノードからデータの読み出せるようにしてデータを復旧する処理について以下に説明する。すなわち、本実施形態においては、任意にノードをネットワークＮＷから取り外す運用を前提としている。すでに述べたように、取り外すノードが記憶しているデータが読み出せなく無くなる場合が生じる。このため、取り外されたノード（あるいは故障したノード）に記憶されているデータを、このデータの複製を有する他のノードにおいて復旧させ、取り外されたノードのデータを、複製を有するノードにおいて読み出るようにしている。
【００６５】
図１４は、データ管理システム１のノード間における複製からデータを復旧する処理の動作例を示すフローチャートである。図１５は、データ管理システム１のノード間における複製のデータから読み出せなくなったノードが記憶するデータの復旧の処理の動作例を示す図である。
また、本実施形態においては、各ノード間においてハートビートの処理などにより、ノードの各々の死活監視を行いそれぞれのノードの生死を互いに確認し合っている。
【００６６】
ステップＳ４０１：
パーソナルコンピュータＡ−２のデータ解析部１０３は、例えば、ハートビートの処理により、サーバＡ−１からの応答がなく、サーバＡ−１が無反応状態（ネットワークＮＷから外されたか、あるいは故障したかのいずれかの状態を示す）ことを検出する。
【００６７】
ステップＳ４０２：
パーソナルコンピュータＡ−２のデータ解析部１０３は、サーバＡ−１が無反応状態となったことを示す情報をネットワークＮＷに接続されているノードの全て、すなわち参加ノード情報におけるサーバＡ−１及び自身以外の各々のノードに対して出力する。
これにより、例えば、携帯端末Ａ−３及びＡ−４の各々は、パーソナルコンピュータＡ−２からの通知により、サーバＡ−１が無反応状態となったことを認識する。このとき、各ノードは、参加ノード情報の無反応となったノードであるサーバＡ−１に対して無反応状態であることを示すフラグを付与するように構成しても良い。
上述した処理により、ネットワークＮＷに接続されているサーバＡ−１以外のノードの全てにおいて、すなわち、パーソナルコンピュータＡ−２、携帯端末Ａ−３及びＡ−４の各々において、サーバＡ−１が無反応状態であるという情報を共有する。
【００６８】
ステップＳ４０３：
パーソナルコンピュータＡ−２、携帯端末Ａ−３及びＡ−４の各々のノードのデータ解析部１０３は、サーバＡ−１の記憶するレンジキーの割当時刻範囲を、すでに説明したように、稼働率及び処理能力により求めることができる。そして、パーソナルコンピュータＡ−２、携帯端末Ａ−３及びＡ−４の各々のノードのデータ解析部１０３は、自身が記憶している複製のレンジキーの時間を確認し、サーバＡ−１の割当時刻範囲に含まれるものが有るか否かにより、サーバＡ−１のデータの複製が記憶されているか否かの判定を行う。
【００６９】
また、パーソナルコンピュータＡ−２、携帯端末Ａ−３及びＡ−４の各々のノードのデータ解析部１０３は、上述した複製したデータに付与されたいるノードフラグあるいは複製データ領域に付与されている識別情報により、無反応状態のサーバＡ−１が記憶するデータの複製の有無を検出する。そして、例えば、パーソナルコンピュータＡ−２のデータ解析部１０３は、サーバＡ−１の記憶するデータの複製が自身のデータベース１０６に書き混まれて記憶されていることを検出する。
【００７０】
ステップＳ４０４：
パーソナルコンピュータＡ−２のデータ解析部１０３は、自身に記憶されているサーバＡ−１のデータＡ、データＢ及びデータＣの複製のデータを、自身のデータとすることで、サーバＡ−１のデータＡ、データＢ及びデータＣの復旧を行う。このとき、パーソナルコンピュータＡ−２のデータ解析部１０３は、データＡ、データＢ及びデータＣに付与されているノードのノードフラグをパーソナルコンピュータＡ−２のノードフラグに変更することによりデータの復旧を行う。あるいは、パーソナルコンピュータＡ−２のデータ解析部１０３は、複製データ領域に記憶されているデータＡ、データＢ及びデータＣの複製を、自身のデータ領域に対して移動させることによりデータの復旧を行う。
【００７１】
ステップＳ４０５：
また、パーソナルコンピュータＡ−２、携帯端末Ａ−３及びＡ−４の各々のノードのデータ解析部１０３は、図１２のフローチャートに従って、自身のデータの複製の分散先を再度求める。
【００７２】
ステップＳ４０６：
パーソナルコンピュータＡ−２、携帯端末Ａ−３及びＡ−４の各々のデータ解析部１０３は、それぞれのデータを求められた分散先のノードに分散する。
これにより、パーソナルコンピュータＡ−２、携帯端末Ａ−３及びＡ−４の各々のデータ解析部１０３により、データの取得率を取得閾値以上としたまま、データ管理システム１全体が復旧される。
【００７３】
上述したように、本実施形態によれば、ネットワークＮＷに新たなノードが接続されると、各ノード間で新たに参加したノードの情報を含む参加ノード情報及びインデックステーブルを共有することができるため、新たに参加したノードのデータをデータ管理システム１内の全てのノードで共有することができる。これにより、本実施形態によれば、任意にネットワークに対して接続あるいは取り外しから可能なノードの記憶媒体を、システム内におけるデータの蓄積に有効に利用することが可能となる。
また、本実施形態によれば、キーバリューストアの方式を用いているため、データ管理システム１におけるノード全てで同一のデータ形式を用いるため、特定のノードを経由してデータ変換を行う必要がなくなる。これにより、本実施形態によれば、ネットワークＮＷに接続されているいずれのノードからも、データ管理システム１に記憶されているデータを、そのノードをアクセスして参照することができる。
【００７４】
また、本実施形態によれば、複製によりデータを複数のノード間において共有しているため、いずれを取り外したとしてもデータが喪失される（読み出せなくなる）ことがないため、任意にネットワークＮＷに対するノードの接続及び取り外しができる。すなわち、ネットワークＮＷにデータ管理システム１において管理するデータを保持したノードが新たに接続された場合、この新たなノードのデータの共有が複数のノードで行われるため、新たなノードのデータを記憶する一つのノードが取り外された場合、あるいは故障によりいずれかのノードが無反応状態である場合に、このデータが読み出せなくなったノードのデータが複製を有する他のノードにおいて復旧されるため、データが読み出せなくなったノードのデータが失われることがない。
【００７５】
＜第２の実施形態＞
第２の実施形態において、データ管理システム１の構成は第１の実施形態と同様であり、以下異なる処理について説明する。第２の実施形態においては、レンジキーにおける時間に応じたデータの保存先であるノードを、コンシステントハッシュ法のアルゴリズムにより、データ解析部１０３がハッシュ関数を用いて算出することで設定している。本実施形態におけるコンシステントハッシュ法は、ハッシュ値のバラツキに応じて各ノードが扱うデータ量が不均等になることを抑制するため、ハッシュ値として仮想ノードを用いている。仮想ノードは、実体と同一のノードを指す複数の仮想的なノードを示している。すなわち、本実施形態においては、図１６に示すように、データ解析部１０３が、一つのノードについて、複数の仮想ノードとして割当時刻範囲を作成し、レンジキーの時刻範囲上に写像させて分布させることにより、ノード毎の扱うデータ量の偏りを分散している。以下説明する仮想ノードの割当時刻範囲としてのハッシュ関数によるハッシュ値の算出、及び複製を作成するノードの選定の処理は、各ノードのデータ解析部１０３がコンシステントハッシュ法のアルゴリズムにより行う。
【００７６】
図１６は、レンジキーの最小値と最大値との間の時刻範囲を円の円周上に写像することで配置し、かつこの円の円周上（以下、単に円周上）にハッシュ値として各ノードの格納する割当時刻範囲を仮想ノードとして配置するハッシュ関数を説明する図である。図１６において、データ解析部１０３は、レンジキーの時刻範囲において最小値である００：００とレンジキーの最大値である２４：００との間の時刻範囲を、００：００と２４：００とは同一として、円周上に写像して配置している。また、本実施形態におけるハッシュ関数は、各ノードの処理能力に対応した数の仮想ノードに対応した割当時刻範囲をハッシュ値として、図１６のレンジキーの時刻範囲を示す円周上に出力する。
【００７７】
図１７は、ネットワークＮＷに接続され、データ管理システム１に参加しているノードのノード情報が記載された参加ノード情報である。各ノード毎にレコード（行方向のデータ列）が形成されており、ノードＩＤ（identification）に対応し、処理能力、稼働率の各々が記憶されている。ノードＩＤは、ノードを識別する情報であり、例えば本実施形態においては符号を用いている。処理能力は、データベース１０６の容量の大きさ及びノードの読み書きのスピードで決定されている。稼働率は、データ管理システム１の動作している時間に対して、ノードがネットワークＮＷに接続されて、データ管理システム１に参加している時間の割合を示す。例えば、ネットワークＮＷに対して常時接続されるノードは稼働率が１００であり、ネットワークＮＷから切り離されている時間が長く、短時間しかネットワークＮＷに接続されないノードは１０と設定される。図１７から、ノードＡ−１は処理能力が１００であり、稼働率が９０である。また、ノードＡ−２は処理能力が８０であり、稼働率が８０である。ノードＡ−３は処理能力が６０であり、稼働率が７０である。
【００７８】
図１８は、本実施形態の説明に用いるデータとこのデータに対応するレンジキーとの対応を説明するインデックステーブルを示す図である。データＡからデータＯの各々は、それぞれ２０１５−０１−０１−０２：００、…、２０１５−０１−０１−２３：００に測定されたデータである。各データは、００：００から２４：００の間に測定されている。
【００７９】
図１６に戻り、参加ノードテーブルから、参加しているノードＡ−１、Ａ−２及びＡ−３の各々の処理能力の比が１００：８０：６０＝５：４：３である。このため、ハッシュ関数は、ノードＡ−１の仮想ノードを５個のハッシュ値として出力し、ノードＡ−２の仮想ノードを４個のハッシュ値として出力し、ノードＡ−３の仮想ノードを３個のハッシュ値として出力する。図１６において、ノードＡ−１の仮想ノードは、「□」で示されており、仮想ノードＩＡ−１−１から仮想ノードＩＡ−１−５の各々の５個である。また、ノードＡ−２の仮想ノードは、「△」で示されており、仮想ノードＩＡ−２−１から仮想ノードＩＡ−２−４の各々の４個である。ノードＡ−３の仮想ノードは、「◇」で示されており、仮想ノードＩＡ−３−１から仮想ノードＩＡ−３−３の各々の３個である。
【００８０】
各仮想ノード間の時間のレンジキーのデータは、時計回りの方向において最初の仮想ノードに対応するノードに記憶されることになる。例えば、仮想ノードＩＡ−１−１と仮想ノードＩＡ−２−１との間にあるレンジキーが２０１５−０１−０１−０２：００のデータＡは、仮想ノードＩＡ−２−１に対応するノードＡ−２に記憶される。同様に、仮想ノードＩＡ−２−２と仮想ノードＩＡ−１−３との間にあるレンジキーが２０１５−０１−０１−０７：００のデータＥは、仮想ノードＩＡ−１−３に対応するノードＡ−１に記憶される。
【００８１】
図１に戻り、仮想ノードを用いたことにより、自身に記憶するデータの複製を作成する他のノードの選定は、所定のノードの仮想ノードの各々を複製元のノードとして、自身のノードに対応する他の仮想ノードを除き、この複製元の仮想ノードに対して時計回り方向に隣接する順番に行う。例えば、ノードＡ−１のデータ解析部１０３は、複製を生成するノードの選定において、仮想ノードＩＡ−１−１に対応する割当時刻範囲にあるデータの複製先として、時計回りの方向において隣接するノードＡ−２の仮想ノードＩＡ−２−１を選定する。これにより、仮想ノードＩＡ−３−３と仮想ノードＩＡ−１−１との割当時刻範囲に含まれれるノードＡ−１のデータＯがノードＡ−２の仮想ノードＩＡ−２−１の割当時刻範囲に対応して複製される。
【００８２】
また、ノードＡ−１のデータ解析部１０３は、複製を生成するノードの選定において、仮想ノードＩＡ−１−２に対応する割当時刻範囲にあるデータの複製先として、自身（仮想ノードＩＡ−１−２）の割当時刻範囲に対して時計回りの方向において隣接するノードＡ−２の仮想ノードＩＡ−２−２を選定する。これにより、仮想ノードＩＡ−３−１と仮想ノードＩＡ−１−２との割当時刻範囲に含まれれるノードＡ−１のデータＣがノードＡ−２の仮想ノードＩＡ−２−２の割当時刻範囲に対応して複製される。
同様に、ノードＡ−１のデータ解析部１０３は、複製を生成するノードの選定において、仮想ノードＩＡ−１−３に対応する割当時刻範囲にあるデータの複製先として、自身（仮想ノードＩＡ−１−３）の割当時刻範囲に対して時計回りの方向において隣接するノードＡ−３の仮想ノードＩＡ−３−２を選定する。これにより、仮想ノードＩＡ−２−２と仮想ノードＩＡ−１−３との割当時刻範囲に含まれれるノードＡ−１のデータＥがノードＡ−３の仮想ノードＩＡ−３−２の割当時刻範囲に対応して複製される。
【００８３】
また、ノードＡ−１のデータ解析部１０３は、複製を生成するノードの選定において、仮想ノードＩＡ−１−４に対応する割当時刻範囲にあるデータの複製先として、自身（仮想ノードＩＡ−１−４）の割当時刻範囲に対して時計回りの方向において隣接するノードＡ−２の仮想ノードＩＡ−２−３を選定する。これにより、仮想ノードＩＡ−３−２と仮想ノードＩＡ−１−４との割当時刻範囲に含まれれるノードＡ−１のデータＧがノードＡ−２の仮想ノードＩＡ−２−３の割当時刻範囲に対応して複製される。
同様に、ノードＡ−１のデータ解析部１０３は、複製を生成するノードの選定において、仮想ノードＩＡ−１−５に対応する割当時刻範囲にあるデータの複製先として、自身（仮想ノードＩＡ−１−５）の割当時刻範囲に対して時計回りの方向において隣接するノードＡ−２の仮想ノードＩＡ−２−４を選定する。これにより、仮想ノードＩＡ−２−３と仮想ノードＩＡ−１−５との割当時刻範囲に含まれれるノードＡ−１のデータＫ及びデータＪの各々がノードＡ−２の仮想ノードＩＡ−２−４の割当時刻範囲に対応して複製される。
【００８４】
上述した複製作成の処理により、ノードＡ−１のデータ解析部１０３は、後述する図１９に示すように、ノードＡ−１に記憶されているデータＣ、データＥ、データＧ、データＪ、データＫ及びデータＯの内、データＣ、データＧ、データＪ、データＫ、データＯそれぞれの複製をノードＡ−２に対して作成し、一方、データＥの複製をノードＡ−３に対して作成する。このとき、仮想ノードＡ−１のデータ解析部１０３は、第１の実施形態と同様に、ノードＡ−１及びノードＡ−２の各々の稼働率から、ノードＡ−２に複製を作成したデータの取得率を算出し、算出した取得率が予め設定した取得率閾値以上か否かの判定を行う。
【００８５】
ここで、ノードＡ−１のデータ解析部１０３は、ノードＡ−１及びノードＡ−２の各々の稼働率から取得率を１−（１−０．９）×（１−０．８）＝０．９８（すなわち、９８％）として求める。ノードＡ−１のデータ解析部１０３は、取得率が９８％であり、取得率閾値９５％以上であるため、データＣ、データＧ、データＪ、データＫ、データＯそれぞれの複製の作成先はノードＡ−２のみとする。また、同様に、ノードＡ−１のデータ解析部１０３は、ノードＡ−１及びノードＡ−３の各々の稼働率から取得率を１−（１−０．９）×（１−０．７）＝０．９７（すなわち、９７％）として求める。ノードＡ−１のデータ解析部１０３は、取得率が９７％であり、取得率閾値９５％以上であるため、データＥの複製の作成先はノードＡ−３のみとする。
【００８６】
図１９は、仮想ノードを用いたコンシステントハッシュ法により、ノードＡ−１、ノードＡ−２及びノードＡ−３の各々に記憶されているデータとそのデータの複製先とを説明する図である。ノードＡ−１のデータベース１０６に記憶されているデータデータＣ、データＥ、データＧ、データＪ、データＫ及びデータＯの内、データＣ、データＧ、データＪ、データＫ、データＯがノードＡ−２に対して複製され、データＣがノードＡ−３に複製されることが示されている。また、ノードＡ−２のデータベース１０６に記憶されているデータＡ、データＤ、データＨ、データＩ及びデータＬの内、データＡ及びデータＬがノードＡ−３に複製され、データＡ、データＤ、データＨ、データＩ、データＬがノードＡ−２に複製されていることが示されている。また、ノードＡ−３のデータベース１０６に記憶されているデータＢ、データＦ、データＭ及びデータＮの全てがノードＡ−１に複製されていることが示されている。
【００８７】
図１６に戻り、ノードＡ−２のデータ解析部１０３は、複製を生成するノードの選定において、仮想ノードＩＡ−２−１に対応する割当時刻範囲にあるデータの複製先として、自身（仮想ノードＩＡ−２−１）の割当時刻範囲に対して時計回りの方向において隣接するノードＡ−３の仮想ノードＩＡ−３−１を選定する。これにより、仮想ノードＩＡ−１−１と仮想ノードＩＡ−２−１との割当時刻範囲に含まれれるノードＡ−２のデータＡがノードＡ−３の仮想ノードＩＡ−３−１の割当時刻範囲に対応して複製される。
同様に、ノードＡ−２のデータ解析部１０３は、複製を生成するノードの選定において、仮想ノードＩＡ−２−２に対応する割当時刻範囲にあるデータの複製先として、自身（仮想ノードＩＡ−２−２）の割当時刻範囲に対して時計回りの方向において隣接するノードＡ−１の仮想ノードＩＡ−１−３を選定する。これにより、仮想ノードＩＡ−１−２と仮想ノードＩＡ−２−２との割当時刻範囲に含まれれるノードＡ−２のデータＤがノードＡ−１の仮想ノードＩＡ−１−３の割当時刻範囲に対応して複製される。
【００８８】
また、ノードＡ−２のデータ解析部１０３は、複製を生成するノードの選定において、仮想ノードＩＡ−２−３に対応する割当時刻範囲にあるデータの複製先として、自身（仮想ノードＩＡ−２−３）の割当時刻範囲に対して時計回りの方向において隣接するノードＡ−１の仮想ノードＩＡ−１−５を選定する。これにより、仮想ノードＩＡ−１−４と仮想ノードＩＡ−２−３との割当時刻範囲に含まれれるノードＡ−２のデータＨ及びデータＩの各々がノードＡ−１の仮想ノードＩＡ−１−５の割当時刻範囲に対応して複製される。
同様に、ノードＡ−２のデータ解析部１０３は、複製を生成するノードの選定において、仮想ノードＩＡ−２−４に対応する割当時刻範囲にあるデータの複製先として、自身（仮想ノードＩＡ−２−４）の割当時刻範囲に対して時計回りの方向において隣接するノードＡ−３の仮想ノードＩＡ−３−３を選定する。これにより、仮想ノードＩＡ−１−５と仮想ノードＩＡ−２−４との割当時刻範囲に含まれれるノードＡ−２のデータＬがノードＡ−３の仮想ノードＩＡ−３−３の割当時刻範囲に対応して複製される。
【００８９】
上述した複製作成の処理により、ノードＡ−２のデータ解析部１０３は、図１９に示すように、ノードＡ−２に記憶されているデータＡ、データＤ、データＨ、データＩ及びデータＬの内、データＡ、データＬそれぞれの複製をノードＡ−３に対して作成し、一方、データＡ、データＤ、データＨ、データＩ、データＬの複製をノードＡ−３に対して作成する。このとき、ノードＡ−２のデータ解析部１０３は、第１の実施形態と同様に、ノードＡ−２及びノードＡ−３の各々の稼働率から、ノードＡ−３に複製を作成したデータの取得率を算出し、算出した取得率が予め設定した取得率閾値以上か否かの判定を行う。
【００９０】
ここで、ノードＡ−２のデータ解析部１０３は、ノードＡ−２及びノードＡ−３の各々の稼働率から取得率を１−（１−０．８）×（１−０．７）＝０．９４（すなわち、９４％）として求める。ノードＡ−１のデータ解析部１０３は、取得率が９４％であり、取得率閾値９５％未満であるため、データＡ、データＬそれぞれを、次に隣接するノードＡ−１を複製の作成先として設定する。これにより、ノードＡ−２のデータ解析部１０３は、データＡ、データＬの取得率を再計算し、１−（１−０．８）×（１−０．７）×（１−０．９）＝０．９９４（すなわち、９９．４％）として求める。これにより、ノードＡ−２のデータ解析部１０３は、データＡ、データＬそれぞれの取得率が９５％以上となったため、データＡ、データＬそれぞれの複製先として、ノードＡ−３とノードＡ−１との各々を選定する。ここで、データＬは、次に隣接するノードＡ−１の仮想ノードＩＡ−１−１の割当時刻範囲にも対応して複製される。
また、同様に、ノードＡ−２のデータ解析部１０３は、ノードＡ−２及びノードＡ−１の各々の稼働率から取得率を１−（１−０．８）×（１−０．９）＝０．９８（すなわち、９８％）として求める。ノードＡ−１のデータ解析部１０３は、取得率が９８％であり、取得率閾値９５％以上であるため、データＤ、データＨ、データＩの各々の複製の作成先はノードＡ−１のみとする。
【００９１】
また、ノードＡ−３のデータ解析部１０３は、複製を生成するノードの選定において、仮想ノードＩＡ−３−１に対応する割当時刻範囲にあるデータの複製先として、自身（仮想ノードＩＡ−３−１）の割当時刻範囲に対して時計回りの方向において隣接するノードＡ−１の仮想ノードＩＡ−１−２を選定する。これにより、仮想ノードＩＡ−２−１と仮想ノードＩＡ−３−１との割当時刻範囲に含まれれるノードＡ−３のデータＣがノードＡ−１の仮想ノードＩＡ−２−２の割当時刻範囲に対応して複製される。
同様に、ノードＡ−３のデータ解析部１０３は、複製を生成するノードの選定において、仮想ノードＩＡ−３−２に対応する割当時刻範囲にあるデータの複製先として、自身（仮想ノードＩＡ−３−２）の割当時刻範囲に対して時計回りの方向において隣接するノードＡ−１の仮想ノードＩＡ−１−４を選定する。これにより、仮想ノードＩＡ−２−２と仮想ノードＩＡ−３−２との割当時刻範囲に含まれれるノードＡ−３のデータＦがノードＡ−１の仮想ノードＩＡ−１−４の割当時刻範囲に対応して複製される。
【００９２】
また、ノードＡ−３のデータ解析部１０３は、複製を生成するノードの選定において、仮想ノードＩＡ−３−３に対応する割当時刻範囲にあるデータの複製先として、自身（仮想ノードＩＡ−３−３）の割当時刻範囲に対して時計回りの方向において隣接するノードＡ−１の仮想ノードＩＡ−１−１を選定する。これにより、仮想ノードＩＡ−２−４と仮想ノードＩＡ−３−３との割当時刻範囲に含まれれるノードＡ−３のデータＭ及びデータＮの各々がノードＡ−１の仮想ノードＩＡ−１−１の割当時刻範囲に対応して複製される。
ノードＡ−３のデータ解析部１０３は、ノードＡ−３及びノードＡ−１の各々の稼働率から取得率を１−（１−０．９）×（１−０．７）＝０．９７（すなわち、９７％）として求める。ノードＡ−１のデータ解析部１０３は、取得率が９７％であり、取得率閾値９５％以上であるため、データＢ、データＦ、データＭ、データＮの各々の複製の作成先はノードＡ−１のみとする。
【００９３】
図２０は、レンジキーの最小値と最大値との間の時刻範囲を円周上に写像して配置した仮想ノードにおいて、ノードＡ−３が無反応状態である場合における、ノードＡ−３に記憶されているデータの復旧を説明する図である。図１６において、ノードＡ−１の仮想ノードは、「□」で示されており、仮想ノードＩＡ−１−１から仮想ノードＩＡ−１−５の各々の５個である。また、ノードＡ−２の仮想ノードは、「△」で示されており、仮想ノードＩＡ−２−１から仮想ノードＩＡ−２−４の各々の４個である。ノードＡ−３の仮想ノードは、「◇」で示されており、仮想ノードＩＡ−３−１から仮想ノードＩＡ−３−３の各々の３個である。
【００９４】
この図２０において、ノードＡ−３が故障するか取り外されたかして、他のネットワークＮＷ上のノードからの問い合わせに対してノードＡ−３からの反応が無くなった場合、ノードＡ−３のデータの複製が生成されているノードＡ−１においてノードＡ−３のデータが復旧される。すなわち、仮想ノードＩＡ−２−１と仮想ノードＩＡ−３−１との割当時刻範囲におけるノード３のデータＢは、仮想ノードＩＡ−１−２の対応する割当時刻範囲が仮想ノードＩＡ−３−１の割当時刻範囲を含むように変更されるため、ノードＡ−１の記憶するデータとなる。仮想ノードＩＡ−１−２が対応する割当時刻範囲は、仮想ノードＡ−３−１から仮想ノードＩＡ−１−２までの割当時刻範囲に対し、仮想ノードＩＡ−２−１から仮想ノードＩＡ−３−１までの割当時刻範囲が加わり、仮想ノードＩＡ−２−１から仮想ノードＩＡ−１−２までの割当時刻範囲となる。これにより、ノードＡ−１は、データＢをノードＡ−３の複製から自身のデータへと、第１の実施形態と同様に変更する。
【００９５】
また、仮想ノードＩＡ−１−３と仮想ノードＩＡ−３−２との割当時刻範囲におけるノード３のデータＦは、仮想ノードＩＡ−１−４の対応する割当時刻範囲が仮想ノードＩＡ−３−２の割当時刻範囲を含むように変更されるため、ノードＡ−１の記憶するデータとなる。仮想ノードＩＡ−１−４が対応する割当時刻範囲は、仮想ノードＡ−３−２から仮想ノードＩＡ−１−４までの割当時刻範囲に対し、仮想ノードＩＡ−１−３から仮想ノードＩＡ−３−２までの割当時刻範囲が加わり、仮想ノードＩＡ−１−３から仮想ノードＩＡ−１−４までの割当時刻範囲となる。これにより、ノードＡ−１は、データＦをノードＡ−３の複製から自身のデータへと変更する。
【００９６】
また、仮想ノードＩＡ−２−４と仮想ノードＩＡ−３−３との割当時刻範囲におけるノード３のデータＭ及びデータＮの各々は、仮想ノードＩＡ−１−１の対応する割当時刻範囲が仮想ノードＩＡ−３−３の割当時刻範囲を含むように変更されるため、ノードＡ−１の記憶するデータとなる。仮想ノードＩＡ−１−１が対応する割当時刻範囲は、仮想ノードＡ−３−３から仮想ノードＩＡ−１−１までの割当時刻範囲に対し、仮想ノードＩＡ−２−４から仮想ノードＩＡ−３−３までの割当時刻範囲が加わり、仮想ノードＩＡ−２−４から仮想ノードＩＡ−１−１までの割当時刻範囲となる。これにより、ノードＡ−１は、データＭ及びデータＮの各々をノードＡ−３の複製から自身のデータへと変更する。
【００９７】
図２１は、ノード３が無反応状態となった場合に、ノードＡ−１がノードＡ−３のデータの複製からノードＡ−３のデータを復旧する処理を説明する図である。図２１に示されるように、ノードＡ−１には、自身の管理するデータＣ、データＥ、データＧ、データＪ、データＫ及びデータＯ以外に、ノード２のデータＡ，データＤ、データＨ、データＩ、データＬの複製と、ノード３のデータＢ、データＦ、データＭ、データＮの複製が記憶されている。
ノードＡ−１のデータ解析部１０３は、生死の問い合わせに対するノード３からの返答が無いことが確認された場合、ノード３のデータＢ、データＦ、データＭ、データＮの各々の複製を自身の担当するデータに変更することで、ノード３のデータＢ、データＦ、データＭ、データＮそれぞれを復旧する。
【００９８】
図２２は、ノードＡ−１がノードＡ−３のデータの複製を、自身の担当するデータに変更した後に、新たに担当するデータの複製を他のノードに作成する処理を説明する図である。ノードＡ−１のデータ解析部１０３は、新たに担当するデータとしたデータＢ、データＦ、データＭ、データＮの各々の複製をノードＡ−２において生成する。
すなわち、ノードＡ−１のデータ解析部１０３は、複製を生成するノードの選定において、仮想ノードＩＡ−１−１に対応する割当時刻範囲にあるデータの複製先として、時計回りの方向において隣接するノードＡ−２の仮想ノードＩＡ−２−１を選定する。これにより、仮想ノードＩＡ−２−４と仮想ノードＩＡ−３−３との割当時刻範囲に含まれれるノードＡ−１のデータＭ及びデータＮの各々がノードＡ−２の仮想ノードＩＡ−２−１の割当時刻範囲に対応して複製される。
【００９９】
また、ノードＡ−１のデータ解析部１０３は、複製を生成するノードの選定において、仮想ノードＩＡ−１−２に対応する割当時刻範囲にあるデータの複製先として、自身（仮想ノードＩＡ−１−２）の割当時刻範囲に対して時計回りの方向において隣接するノードＡ−２の仮想ノードＩＡ−２−２を選定する。これにより、仮想ノードＩＡ−２−１と仮想ノードＩＡ−３−１との割当時刻範囲に含まれれるノードＡ−１のデータＢがノードＡ−２の仮想ノードＩＡ−２−２の割当時刻範囲に対応して複製される。
同様に、ノードＡ−１のデータ解析部１０３は、複製を生成するノードの選定において、仮想ノードＩＡ−１−４に対応する割当時刻範囲にあるデータの複製先として、自身（仮想ノードＩＡ−１−４）の割当時刻範囲に対して時計回りの方向において隣接するノードＡ−２の仮想ノードＩＡ−２−３を選定する。これにより、仮想ノードＩＡ−１−３と仮想ノードＩＡ−３−２との割当時刻範囲に含まれれるノードＡ−１のデータＦがノードＡ−２の仮想ノードＩＡ−２−３の割当時刻範囲に対応して複製される。
【０１００】
そして、ノードＡ−１のデータ解析部１０３は、ノードＡ−１及びノードＡ−２の各々の稼働率から取得率を１−（１−０．９）×（１−０．８）＝０．９８（すなわち、９８％）として求める。ノードＡ−１のデータ解析部１０３は、取得率が９８％であり、取得率閾値９５％以上であるため、新たに担当するデータＢ、データＦ、データＭ、データＮそれぞれの複製の作成先はノードＡ−２のみとする。
また、ノードＡ及びノードＢの各々のデータ解析部１０３は、すでに担当しているデータそれぞれについては、他のノードに対して複製を生成するなどの処理は行わない。また、ノードＡ及びノードＢの各々のデータ解析部１０３は、無反応状態となったノードの履歴により、そのノードが担当していたデータが復旧されたノードを、自身の割当時刻範囲に対して時計回りの方向に隣接するノードであると検出することができ、無反応状態となったノードのデータのアクセス先を容易に求めることが可能となる。
【０１０１】
上述したように、本実施形態によれば、ネットワークＮＷに新たなノードが接続されると、各ノード間で新たに参加したノードの情報を含む参加ノード情報及びインデックステーブルを共有することができるため、新たに参加したノードのデータをデータ管理システム１内の全てのノードで共有することができる。これにより、本実施形態によれば、任意にネットワークに対して接続あるいは取り外しから可能なノードの記憶媒体を、システム内におけるデータの蓄積に有効に利用することが可能となる。
また、本実施形態によれば、キーバリューストアの方式を用いているため、データ管理システム１におけるノード全てで同一のデータ形式を用いるため、特定のノードを経由してデータ変換を行う必要がなくなる。これにより、本実施形態によれば、ネットワークＮＷに接続されているいずれのノードからも、データ管理システム１に記憶されているデータを、そのノードをアクセスして参照することができる。
【０１０２】
また、本実施形態によれば、複製によりデータを複数のノード間において共有しているため、いずれを取り外したとしてもデータが喪失される（読み出せなくなる）ことがないため、任意にネットワークＮＷに対するノードの接続及び取り外しができる。すなわち、ネットワークＮＷにデータ管理システム１において管理するデータを保持したノードが新たに接続された場合、この新たなノードのデータの共有が複数のノードで行われるため、新たなノードのデータを記憶する一つのノードが取り外された場合、あるいは故障によりいずれかのノードが無反応状態となった場合に、このデータが読み出せなくなったノードのデータが複製を有する他のノードにおいて復旧されるため、データが読み出せなくなったノードのデータが失われることがない。
【０１０３】
また、本実施形態においては、一つのノードに対して複数の仮想ノードを発生させるハッシュ関数を用い、レンジキーの最小値と最大値とを円状に連結した円の円周上に各ノードの仮想ノードが配置される。そして、自身に記憶するデータの複製を作成する他のノードの選定は、所定のノードの仮想ノードの各々を複製元のノードとして、自身のノードに対応する他の仮想ノードを除き、この複製元の仮想ノードに対して時計回り方向に隣接する順番に行う。これにより、本実施形態によれば、ネットワークＮＷに接続されるノードの増減があった場合に、データを復旧あるいは移動する際、データの移動の処理にかかる負荷を最小限に抑制することができる。
【０１０４】
なお、本発明における図２のデータ管理部１０の各部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりデータの管理の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ホームページ提供環境（あるいは表示環境）を備えたＷＷＷシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【０１０５】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【０１０６】
１…データ管理システム
１０…データ管理部
１０１…表示部
１０２…表示データ作成部
１０３…データ解析部
１０４…データ読み書き部
１０５…データ通信部
【図１】
2016218787.tif 000003
【図２】
2016218787.tif 000004
【図３】
2016218787.tif 000005
【図４】
2016218787.tif 000006
【図５】
2016218787.tif 000007
【図６】
2016218787.tif 000008
【図７】
2016218787.tif 000009
【図８】
2016218787.tif 000010
【図９】
2016218787.tif 000011
【図１０】
2016218787.tif 000012
【図１１】
2016218787.tif 000013
【図１２】
2016218787.tif 000014
【図１３】
2016218787.tif 000015
【図１４】
2016218787.tif 000016
【図１５】
2016218787.tif 000017
【図１６】
2016218787.tif 000018
【図１７】
2016218787.tif 000019
【図１８】
2016218787.tif 000020
【図１９】
2016218787.tif 000021
【図２０】
2016218787.tif 000022
【図２１】
2016218787.tif 000023
【図２２】
2016218787.tif 000024