(58)【調査した分野】(Int.Cl.,DB名)
ネットワークに対してノードを接続あるいは取り外し可能に運用するネットワークシステムについて、キーに対応したデータ構造を用いて前記ネットワークに接続される複数のノードに対してデータを分散させて、蓄積データとして蓄積を行うデータ管理システムにおいて、
前記ノードが、
新たに前記ネットワークに接続された際に、前記データを蓄積する前記ノードとなるために用いるノード情報を、前記ネットワークにすでに接続されている他の前記ノードに対して供給するデータ解析部を備えており、
前記キーは前記蓄積データが測定された時間を含み、前記ノード情報が前記ノードの処理能力及び稼働率を含み、
前記データ解析部が、
所定の閾値以上の稼働率の前記ノードを前記蓄積データを保存するノードとして選択し、
前記蓄積データの測定が行われる時間の範囲を示す時刻範囲を前記処理能力に対応して分割することにより、測定された時間によって前記蓄積データを割り当てるための割当時刻範囲を、選択されたノード毎に設定する
ことを特徴とするデータ管理システム。
ネットワークに対してノードを接続あるいは取り外し可能に運用するネットワークシステムについて、キーに対応したデータ構造を用いて前記ネットワークに接続される複数のノードに対してデータを分散させて、蓄積データとして蓄積を行うデータ管理方法において、
前記ノードにおいて、
データ解析部が、新たに前記ネットワークに接続された際に、前記データを蓄積する前記ノードとなるために用いるノード情報を、前記ネットワークにすでに接続されている他の前記ノードに対して供給するデータ解析過程を含み、
前記キーは前記蓄積データが測定された時間を含み、前記ノード情報が前記ノードの処理能力及び稼働率を含み、
前記データ解析部が、
所定の閾値以上の稼働率の前記ノードを前記蓄積データを保存するノードとして選択し、
前記蓄積データの測定が行われる時間の範囲を示す時刻範囲を前記処理能力に対応して分割することにより、測定された時間によって前記蓄積データを割り当てるための割当時刻範囲を、選択されたノード毎に設定する
ことを特徴とするデータ管理方法。
【発明を実施するための形態】
【0019】
本発明のデータ管理システムは、ネットワークに対してノードを接続あるいは取り外し可能に運用するネットワークシステムにおいて、このネットワークシステムに接続される複数のノードに対してデータを分散させて蓄積する際、キーバリューストアのデータ構造によりデータの蓄積の管理を行う(キーバリュー型データベースを活用したデータの管理を行う)。これにより、本発明のデータ管理システムは、任意に端末をノードとしてネットワークに接続した場合、予めネットワークに接続されていたノードと同様に、ノード情報を他のノードに提供してデータの蓄積を行うことも含めて、ネットワークに参加させ、また取り外した場合、このノードに蓄積されていたデータを他のノードにおいて復旧させることより、任意にネットワークに対して接続あるいは取り外しを可能としている。
【0020】
<第1の実施形態>
以下、本発明の第1の実施形態について、図面を参照して説明する。
図1は、本発明の第1の実施形態によるデータ管理システム1の構成例を示すブロック図である。本実施形態におけるデータ管理システム1は、記憶媒体(蓄積媒体)としてデータベース(DB:database)を有する、サーバA−1及びB−1と、パーソナルコンピュータA−2及びB−2と、携帯端末A−3及びA−4との各々を備えている。また、サーバA−1及びB−1と、パーソナルコンピュータA−2及びB−2との各々は、ネットワークNWに対して接続されている。また、携帯端末A−3及びA−4の各々は、パーソナルコンピュータA−2を介してネットワークNWに対して接続されている。
【0021】
携帯端末A−3及びA−4の各々は、例えばタブレット型コンピュータであり、プラント内に設けられた測定器P−1からP−3の各々から、測定器P−1からP−3の各々が測定したデータを読み込む。このとき、携帯端末A−3及びA−4の各々は、それぞれ蓄積媒体DBにデータを一旦蓄積する。本実施携帯のデータ管理システムにおいては、ネットワークの各ノード間で送受信する、あるいは蓄積媒体に蓄積するデータ形式をキーバリュー(Key-Value)形式として、キーバリューストアの方式によりデータ管理を行う。
【0022】
サーバA−1及びB−1と、パーソナルコンピュータA−2及びB−2と、携帯端末A−3及びA−4との各々(以下、総称してノードと示すこともある)は、データを管理するデータ管理部(不図示)が備えられている。
図2は、本実施形態におけ各ノードに設けられたデータ管理部10の構成例を示す図である。データ管理部10は、表示部101、表示データ作成部102、データ解析部103、データ読み書き部104、データ通信部105、データベース106の各々を備えている。
【0023】
表示部101は、ノード対して行わせる処理の内容を選択したり、文字入力を行う画像の表示、また読み出し及び書き込みを行うデータの入力操作及び表示を行う。表示データ作成部102は、表示部101に対して表示する文字を含む画像を生成する。例えば、表示データ作成部102は、表示部101に対して表示するデータベースから読み出されたデータや測定器P−1などから読み込んだデータの文字列や、操作を選択する入力画面の画像を生成する。
【0024】
データ解析部103は、ノードの各々が新たにネットワークNWに接続された際に、データを蓄積するノードとなるため、データの書き込み及び読み出しを行う先のノードを抽出するために用いるノード情報を、ネットワークNWにすでに接続されている他のノードに対して供給する。また、データ解析部103は、ネットワークNW内のノードの各々に蓄積データを蓄積するために書き込む、あるいは蓄積されている蓄積データを読み出すためにネットワークNWに接続された際、読み出す蓄積データのキーとノードの各々のノード情報とにより、蓄積データを書き込むあるいは読み出すノードを抽出する(詳細は後述する)。
【0025】
図3は、ネットワークNWに接続され、データ管理システム1に参加しているノードのノード情報が記載された参加ノード情報を示す図である。各ノード毎にレコード(行方向のデータ列)が形成されており、ノードID(identification)に対応し、パーティションキー、処理能力、稼働率の各々が記憶されている。ノードIDは、ノードを識別する情報であり、例えば本実施形態においては符号を用いている。パーティションキーは、大規模なデータを多くのノードにより管理する際、管理を行い易くし、ネットワークNW内のトラフィックの増大を抑制する目的で、ノードを複数のパーティションに分割するために任意に設定されるものであり、省略しても良い。処理能力は、データベース106の容量の大きさ及びノードの読み書きのスピードで決定されている。稼働率は、データ管理システム1の動作している時間に対して、ノードがネットワークNWに接続されて、データ管理システム1に参加している時間の割合を示す。例えば、ネットワークNWに対して常時接続されるノードは稼働率が100であり、ネットワークNWから切り離されている時間が長く、短時間しかネットワークNWに接続されないノードは10と設定される。
【0026】
図4は、検索用インデックスを示すインデックステーブルの一例を示す図である。検索用インデックスは、例えば、データの各々に個別に設けられたキーとして、パーティションキーとレンジキーとから構成されている。パーティションキーは、
図3におけるパーティション個別に設けられたキーである。レンジキーは、データが測定器で測定された日時を示している。すなわち、本実施形態においては、測定された日時が測定されたデータを検索するキーであるレンジキーとして用いる。
【0027】
図2に戻り、データ読み書き部104は、データ通信部105を介してデータの読み出しを要求する読出信号が入力されると、読出信号に含まれるキーに対応したデータをデータベース106から読み出し、読み出しを要求したノードに対してデータ通信部105を介して出力する。また、データ読み書き部104は、データ通信部105を介してデータの書き込みを要求する書込信号が入力されると、書込信号に含まれるキーに対応させて入力されたデータをデータベース106に書き込んで記憶させる。
【0028】
ここで、
図5及び
図6を用いて、携帯端末A−3がデータをデータ管理システム1で保存する際にネットワークNWに接続され、新たなノードとしてデータ管理システム1に参加する処理の説明を行う。
図5は、携帯端末A−3がデータをデータ管理システム1で保存する際にネットワークNWに接続され、新たなノードとしてデータ管理システム1に参加する処理の動作例を示すフローチャートである。
図6は、
図1に対応した図であり、
図5のフローチャートの処理を説明する図である。ここで、サーバA−1及びB−1と、パーソナルコンピュータA−2及びB−2と、携帯端末A−4の各々は、すでにネットワークNWに接続され、データ管理システム1に参加している。
【0029】
ステップS101:
携帯端末A−3は、ユーザの操作により、測定器P−1から、測定器P−1が測定したデータを吸い上げる(入力する)。そして、この吸い上げたデータをデータ管理システム1内に記憶させるため、携帯端末A−3は、ユーザの操作により、パーソナルコンピュータA−2を介してネットワークNWに接続される。
【0030】
ステップS102:
パーソナルコンピュータA−2のデータ解析部103は、携帯端末A−3が接続されると、携帯端末A−3に対して、データベース106に格納されている参加ノード情報と、検索用インデックスとを読み出す。そして、パーソナルコンピュータA−2のデータ解析部103は、読み出したノード情報と検索用インデックスとの各々を携帯端末A−3に対して出力する。
これにより、携帯端末A−3のデータ解析部103は、パーソナルコンピュータA−2から供給されるノード情報と検索用インデックスが記載されたインデックステーブルとの各々を取得する。そして、携帯端末A−3のデータ解析部103は、参加ノード情報に自身のノード情報を加えて、データベース106に対して書き込んで記憶させる。
【0031】
ステップS103:
携帯端末A−3のデータ解析部103は、自身のノード情報を加えた参加ノード情報を、データ通信部105を介して、他のノードであるサーバA−1及びB−1と、パーソナルコンピュータA−2及びB−2と、携帯端末A−4の各々に対して出力する。
【0032】
ステップS104:
そして、サーバA−1及びB−1と、パーソナルコンピュータA−2及びB−2の各々において、データ解析部103は、新たに携帯端末A−3のノード情報を加えた参加ノード情報を、データベース106に対して書き込んで記憶させる。これにより、携帯端末A−3のノード情報が含まれる参加ノード情報は、データ管理システム1におけるノードの各々により共有される。
【0033】
ステップS105:
次に、携帯端末A−3のデータ解析部103は、自身の保持するデータを蓄積するノード、すなわちデータの書込先を求める。ここで、携帯端末A−3のデータ解析部103は、パーソナルコンピュータA−2に対して、保存先の算出条件を要求する。
これにより、パーソナルコンピュータA−2のデータ解析部103は、データベース106から保存先の算出条件を読み出し、読み出した保存先の算出(選択)条件を、携帯端末A−3に対して出力する。
【0034】
図7は、データの保存先の算出条件が記載された算出条件テーブルの構成例を示す図である。算出条件(選択)として、例えば一つは、「稼働率10%以下のノードにデータ保存はさせない」ことである。この時点で、稼働率が10%以下の携帯端末A−3及びA−4は除外されることになる。算出条件として、例えば他の一つは、「ノードの処理能力の高い順に能力の比率でレンジキーの時刻情報を元にデータを分散させる」ことである。本実施携帯としては、パーティションAのパーソナルコンピュータA−2を介して、ネットワークNWに接続されたため、携帯端末A−3のデータもパーティションAのノードに接続される。サーバA−1及びパーソナルコンピュータA−2の各々は、稼働率が100%であるため、データの保存先として選定されることになる。
【0035】
図8は、データの保存先として選択されたノードの各々におけるデータの保存量の設定を説明する図である。サーバA−1は処理能力が100であり、パーソナルコンピュータA−2は処理能力が50である。このため、データ管理システム1におけるパーティションAで蓄積するデータは、サーバA−1とパーソナルコンピュータA−2との各々で、2:1の割合で分散して記憶される。すなわち、本実施形態においては、蓄積されるデータの測定が行われる時刻の範囲、すなわちレンジキーの時間が取り得る時刻の範囲である時刻範囲(時間幅)として00:00から24:00までの時間においてデータが測定される。サーバA−1とパーソナルコンピュータA−2との各々は、この2:1の割合で測定されたデータの蓄積を行う。このため、データの測定が行われる時刻範囲を、2:1の割当時刻範囲に分割している。サーバA−1とパーソナルコンピュータA−2との各々は、データが測定された時間が自身に割り当てられた割当時刻範囲に含まれる場合に、その時間に測定されたデータの蓄積を行う。
したがって、サーバA−1は、時刻範囲を処理能力の割合で分割した割当時刻範囲である00:00から16:00までの時間が割り当てられるため、この割当時刻範囲に含まれる時間を測定した時間として含むレンジキーのデータを保存する。一方、サーバA−2は、時刻範囲を処理能力の割合で分割した割当時刻範囲である16:00から24:00までの割当時刻範囲が割り当てられるため、この割当時刻範囲に含まれる時間を測定した時間として含むレンジキーのデータを保存する。
【0036】
図5に戻り、携帯端末A−3のデータ解析部103は、
図7の算出(選択)条件の一つである「稼働率10%以下のノードにデータ保存はさせない」ことから、データの保存先として携帯端末A−3及びA−4を除外し、保存先としてサーバA−1及びパーソナルコンピュータA−2を選択する。また、携帯端末A−3のデータ解析部103は、算出条件の一つである「ノードの処理能力の高い順に能力の比率でレンジキーの時刻情報を元にデータを分散させる」に対応させ、サーバA−1及びパーソナルコンピュータA−2の処理能力である100:50(=2:1)に基づいて、レンジキーの時刻範囲である00:00から24:00において、サーバA−1の記憶する割当時刻範囲を00:00から16:00までとし、パーソナルコンピュータA−2の記憶する割当時刻範囲を16:00から24:00までとする。
【0037】
そして、携帯端末A−3のデータ解析部103は、自身の保持しているレンジキーの時間を確認し、サーバA−1及びパーソナルコンピュータA−2の各々の割当時刻範囲に各データのレンジキーの時間が含まれるかを検出する。そして、携帯端末A−3のデータ解析部103は、レンジキーが2015−01−01−01:00及び2015−01−02−12:00のデータの保存先をサーバA−1とし、レンジキーが2015−01−02−22:00のデータの保存先をパーソナルコンピュータA−2とする。
【0038】
ステップS106:
携帯端末A−3のデータ解析部103は、レンジキーが2015−01−01−01:00及び2015−01−01−12:00のデータをサーバA−1へ出力(送信)する。また、携帯端末A−3のデータ解析部103は、レンジキーが2015−01−01−22:00のデータをパーソナルコンピュータA−2に出力する。
これにより、サーバA−1のデータ読み書き部104は、供給されるレンジキーが2015−01−01−01:00及び2015−01−02−12:00のデータを、それぞれのレンジキーと対応させてデータベース106に対して書き込んで記憶させる。同様に、パーソナルコンピュータA−2のデータ読み書き部104は、供給されるレンジキーが2015−01−02−22:00のデータを、このレンジキーと対応させてデータベース106に対して書き込んで記憶させる。
【0039】
ステップS107:
また、携帯端末A−3のデータ解析部103は、インデックステーブルに対して、新たにサーバA−1及びパーソナルコンピュータA−2の各々のレンジキーを書き込み、この更新したインデックステーブルを、パーソナルコンピュータA−2に対し、データ通信部105を介して出力する。
そして、パーソナルコンピュータA−2のデータ解析部103は、供給される更新されたインデックステーブルをデータベース106に対して書き込んで記憶させるとともに、サーバA−1、携帯端末A−4、サーバB−1、パーソナルコンピュータB−2の各々に対して出力する。
【0040】
ステップS108:
サーバA−1、携帯端末A−4、サーバB−1、パーソナルコンピュータB−2の各々データ解析部103は、供給される更新されたインデックステーブルをそれぞれデータベース106に対して書き込んで記憶させる。
これにより、更新されたインデックステーブルは、データ管理システム1のネットワークNWに接続に接続されているノードの全てにおいて、インデックステーブルにおけるインデックス情報が共有される。
【0041】
図9は、データ管理システム1内における各ノードのデータベース106において記憶されるパーティションキー及びレンジキーからなるキー(Key)部分とデータとの対応関係を示す図である。
図9において、キー部分は、パーティションキー及びレンジキーの各々から構成されているが、すでに説明したようにネットワークに接続されるノードをパーティションに分割する必要が無い場合、パーティションキーを用いずレンジキーのきでキー部分を構成するようにしても良い。この
図9におけるキー部分の情報がインデックステーブル(
図4)によって、データ管理システム1内で共有される。
【0042】
図10及び
図11を用いて、携帯端末A−3がデータを読み出す際にネットワークNWに接続され、新たなノードとしてデータ管理システム1に参加する処理の説明を行う。
図10は、携帯端末A−3がネットワークNWに接続され、新たなノードとしてデータ管理システム1に参加する処理の動作例を示すフローチャートである。
図6は、
図1に対応した図であり、
図10のフローチャートの処理を説明する図である。ここで、サーバA−1及びB−1と、パーソナルコンピュータA−2及びB−2と、携帯端末A−4の各々は、すでにネットワークNWに接続され、データ管理システム1に参加している。
【0043】
ステップS201:
測定器P−1が過去に測定したデータを、データ管理システム1内から読み出すため、携帯端末A−3は、ユーザの操作により、パーソナルコンピュータA−2を介して、ネットワークNWに接続される。
【0044】
ステップS202:
パーソナルコンピュータA−2のデータ解析部103は、携帯端末A−3が接続されると、携帯端末A−3に対して、データベース106に格納されている参加ノード情報と、検索用インデックスとを読み出す。そして、パーソナルコンピュータA−2のデータ解析部103は、読み出したノード情報と検索用インデックスとの各々を携帯端末A−3に対して出力する。
これにより、携帯端末A−3のデータ解析部103は、パーソナルコンピュータA−2から供給されるノード情報と検索用インデックスが記載されたインデックステーブルとの各々を取得する。そして、携帯端末A−3のデータ解析部103は、参加ノード情報に自身のノード情報を加えて、データベース106に対して書き込んで記憶させる。
【0045】
ステップS203:
携帯端末A−3のデータ解析部103は、自身のノード情報を加えた参加ノード情報を、データ通信部105を介して、他のノードであるサーバA−1及びB−1と、パーソナルコンピュータA−2及びB−2と、携帯端末A−4の各々に対して出力する。
【0046】
ステップS204:
そして、サーバA−1及びB−1と、パーソナルコンピュータA−2及びB−2の各々において、データ解析部103は、新たに携帯端末A−3のノード情報を加えた参加ノード情報を、データベース106に対して書き込んで記憶させる。これにより、携帯端末A−3のノード情報が含まれる参加ノード情報は、データ管理システム1におけるノードの各々により共有される。
【0047】
ステップS205:
ユーザが携帯端末A−3の表示部101に表示されている入力欄に対して、データを読み出すかを示す必要情報として、検索範囲を示す日時情報を入力する。
これにより、携帯端末A−3のデータ解析部103は、データの読み出し要求を受け付け、入力されたレンジキーにおける検索範囲を抽出する。
【0048】
ステップS206:
携帯端末A−3のデータ解析部103は、抽出した検索範囲に含まれる時間を有するレンジキーをインデックステーブルから検出する。
【0049】
ステップS207:
次に、携帯端末A−3のデータ解析部103は、ユーザが入力した検索範囲のレンジキーのデータが記憶されているノード、すなわちデータの読み出しを要求するノードを求める。ここで、携帯端末A−3のデータ解析部103は、パーソナルコンピュータA−2に対して、保存先の算出条件を要求する。
これにより、パーソナルコンピュータA−2のデータ解析部103は、データベース106から保存先の算出条件を読み出し、読み出した保存先の算出(選択)条件を、携帯端末A−3に対して出力する。
【0050】
携帯端末A−3のデータ解析部103は、
図7の算出(選択)条件の一つである「稼働率10%以下のノードにデータ保存はさせない」ことから、データの保存先として携帯端末A−3及びA−4を除外し、保存先としてサーバA−1及びパーソナルコンピュータA−2を選択する。また、携帯端末A−3のデータ解析部103は、算出条件の一つである「ノードの処理能力の高い順に能力の比率でレンジキーの時刻情報を元にデータを分散させる」に対応させ、サーバA−1及びパーソナルコンピュータA−2の処理能力である100:50(=2:1)に基づいて、レンジキーの時刻範囲である00:00から24:00において、サーバA−1の記憶する割当時刻範囲を00:00から16:00までとし、パーソナルコンピュータA−2の記憶する割当時刻範囲を16:00から24:00までとする。
【0051】
そして、携帯端末A−3のデータ解析部103は、読み出そうとしているレンジキーの時間を確認し、サーバA−1及びパーソナルコンピュータA−2のいずれの割当時刻範囲に、読み出すデータ各々のレンジキーの時間が含まれるかを検出する。そして、携帯端末A−3のデータ解析部103は、レンジキーが2015−01−01−01:00、2015−01−01−06:00、2015−01−02−12:00及び2015−01−02−18:00のデータの保存先をサーバA−1と抽出(算出)し、レンジキーが2015−01−02−22:00のデータの保存先をパーソナルコンピュータA−2と抽出(算出)する。
【0052】
ステップS208:
携帯端末A−3のデータ解析部103は、レンジキーが2015−01−01−01:00、2015−01−01−06:00、2015−01−02−12:00及び2015−01−02−18:00のデータを、サーバA−1に対して読み出しするように要求する。また、携帯端末A−3のデータ解析部103は、レンジキーが2015−01−02−22:00のデータを、パーソナルコンピュータA−2に対して読み出しするように要求する。
【0053】
これにより、サーバA−1のデータ読み書き部104は、供給されるレンジキーが2015−01−01−01:00、2015−01−01−06:00、2015−01−02−12:00及び2015−01−02−18:00のデータを、それぞれのレンジキーに対応してデータベース106から読み出し、データ通信部105を介して携帯端末A−3に対して送信する。同様にパーソナルコンピュータA−2のデータ読み書き部104は、供給されるレンジキーが2015−01−02−22:00のデータを、このレンジキーと対応しデータベース106から読み出し、データ通信部105を介して携帯端末A−3に対して送信する。
ステップS209:
そして、携帯端末A−3の表示部101は、供給されたレンジキーが2015−01−02−22:00のデータを、自身の表示画面に表示させる。
【0054】
図12及び
図13を用いて、ノードからデータが読み出せない状態となった場合、他のノードからデータの読み出せなくなったデータを読み出すため、他のノードに複製を生成する処理について以下に説明する。すなわち、本実施形態においては、任意にノードをネットワークNWから取り外す運用を前提としている。これにより、取り外すノードが記憶しているデータが読み出せなく無くなる場合が生じる。このため、取り外されたノードに記憶されているデータを、このデータの複製を有する他のノードにおいて復旧させ、取り外されたノードのデータを、複製を有するノードにおいて読み出るようにしている。
図12は、データ管理システム1のノード間における複製の作成処理の動作例を示すフローチャートである。
図13は、データ管理システム1のノード間における複製の作成処理の動作例を示す図である。
【0055】
ここで、
図1において、サーバA−1と、パーソナルコンピュータA−2と、携帯端末A−3及びA−4の各々は、ネットワークNWに接続され、データ管理システム1に参加している。また、サーバA−1は、処理能力が80であり、稼働率が90%である。パーソナルコンピュータA−2は、処理能力が60であり、稼働率が90%である。携帯端末A−3は、処理能力が50であり、稼働率が80%である。携帯端末A−4は、処理能力が50であり、稼働率が80%である。
以下の説明においては、ノード(サーバ)A−1が他のノード(パーソナルコンピュータ)A−2、ノード(携帯端末)A−3及びノード(携帯端末)A−4を複製を作成する対象とした場合を説明する。
【0056】
ステップS301:
サーバA−1のデータ解析部103は、データベース106から参加ノード情報を読み出し、この参加ノード情報から他のノードであるパーソナルコンピュータA−2、携帯端末A−3及びA−4の各々の処理能力を検出する。サーバA−1のデータ解析部103は、パーソナルコンピュータA−2(処理能力:60)、携帯端末A−3(処理能力:50)及びA−4(処理能力:50)の各々の処理能力の比を、6:5:5と算出する。そして、サーバA−1のデータ解析部103は、複製を行いたいノードを除いたノードの各々に対して、レンジキーの割当時刻範囲を割り当てる。
【0057】
このとき、サーバA−1のデータ解析部103は、処理能力の比で24時間を分割すると、パーソナルコンピュータA−2に9時間の割当時刻範囲、携帯端末A−3に7.5時間の割当時刻範囲、携帯端末A−4に7.5時間の割当時刻範囲となる。これにより、サーバA−1のデータ解析部103は、パーソナルコンピュータA−2に対し、00:00から09:00までの時間に含まれるレンジキーのデータの複製を保持させ、携帯端末A−3に対し、09:00から16:30までの時間に含まれるレンジキーのデータの複製を保持させ、携帯端末A−4に対し、16:30から24:00までの時間に含まれるレンジキーのデータを保持させる。
【0058】
ステップS302:
サーバA−1のデータ解析部103は、参加ノード情報から自身以外の他のノードであるパーソナルコンピュータA−2、携帯端末A−3及びA−4の各々の稼働率を検出する。そして、サーバA−1のデータ解析部103は、複製先の稼働率から取得率を算出する。ここで、サーバA−1のデータ解析部103は、サーバA−1の保持する割当時刻範囲00:00から08:00までのデータの複製を生成させるノードがパーソナルコンピュータA2であるため、自身の稼働率90%とパーソナルコンピュータA−2の稼働率90%から、いずれか一つが稼働している確率を取得率として、1−(1−(一方の稼働率))×(1−(他方の稼働率))の式に、自身とパーソナルコンピュータA−2との稼働率を代入し、1−(1−0.9)×(1−0.9)=0.99(すなわち、99%)を算出する。
【0059】
また、サーバA−1のデータ解析部103は、データの複製を生成させるノードがパーソナルコンピュータA2及び携帯端末A−3の各々である場合、取得率は、1−(1−(一方の稼働率))×(1−(他方の稼働率))×(1−(他方の稼働率))の式に、自身とパーソナルコンピュータA−2と携帯端末A−3との稼働率を代入し、1−(1−0.9)×(1−0.9)×(1−0.8)=0.998(すなわち、99.8%)を算出する。
【0060】
ステップS303:
サーバA−1のデータ解析部103は、自身のノードの稼働率と、データの複製先であるパーソナルコンピュータA2の稼働率から求めた取得率を、予め設定した取得率閾値と比較する。そして、サーバA−1のデータ解析部103は、取得率が設定値である上記取得率閾値以上の場合に、処理をステップS304へ進め、一方、取得率が取得率閾値未満である場合に、処理をステップS305へ進める。ここで、取得率閾値は、対象となるノードに記憶されているデータを読み出すことができる割合を示し、ユーザがデータの読み出しの重要性に対応させて適時、任意の数値を設定する。
【0061】
ステップS304:
次に、サーバA−1のデータ解析部103は、複製指示を示す制御信号とともに、自身の保持しているデータを、複製先のノード、例えばパーソナルコンピュータA−2に対して送信する。
そして、複製先のノード、例えばパーソナルコンピュータA−2のデータ読み書き部104は、データベース106に対してデータの複製を書き込んで記憶させる。このとき、パーソナルコンピュータA−2のデータ読み書き部104は、複製であり自身がアクセスされて読み出しを行うものではないことを示す複製フラグを、データの複製に対して付与する。また、このとき、パーソナルコンピュータA−2のデータ読み書き部104は、複製したデータの各々に対して、いずれのノードの複製であるかを示すノードフラグを付して記憶させる。
【0062】
あるいは、データベース106を自身の記憶するデータのデータ領域と、他のノードのデータの複製を記憶する複製データ領域とに分離して、自身の記憶するデータをデータ領域に書き込み、他のノードの複製したデータを複製データ領域に書き込む構成としても良い。この場合、データの複製もとのノードを示す識別情報を各複製データ領域に付与する。
上述した処理により、複製の対象となるノードであるサーバA−1のデータを、複製を保持させるノード、例えばパーソナルコンピュータA−2に複製する処理を終了する。
【0063】
ステップS305:
サーバA−1のデータ解析部103は、参加ノード情報にを参照して、パーソナルコンピュータA−2以外のノードを検索し、携帯端末A−3及びA−4の各々を抽出する。そして、サーバA−1のデータ解析部103は、処理能力の比が50:50=1:1であるため、処理能力の比で24時間を分割すると、携帯端末A−3に12時間の割当時刻範囲、携帯端末A−4に12時間の割当時刻範囲となる。これにより、サーバA−1のデータ解析部103は、携帯端末A−3に対し、00:00から12:00までの時間に含まれるレンジキーのデータの複製を保持させ、携帯端末A−4に対し、12:00から24:00までの時間に含まれるレンジキーのデータを保持させる。ここで、サーバA−1のデータ解析部103は、自身が記憶するレンジキーの範囲が00:00から08:00であるため、00:00から12:00までのデータの複製を担当するノードとして携帯端末A−3を選択して設定する。そして、サーバA−1のデータ解析部103は、処理をステップS302へ進める。
【0064】
図14及び
図15を用いて、ノードからデータが読み出せない状態となった場合、他のノードに生成された複製のデータを用いて、他のノードからデータの読み出せるようにしてデータを復旧する処理について以下に説明する。すなわち、本実施形態においては、任意にノードをネットワークNWから取り外す運用を前提としている。すでに述べたように、取り外すノードが記憶しているデータが読み出せなく無くなる場合が生じる。このため、取り外されたノード(あるいは故障したノード)に記憶されているデータを、このデータの複製を有する他のノードにおいて復旧させ、取り外されたノードのデータを、複製を有するノードにおいて読み出るようにしている。
【0065】
図14は、データ管理システム1のノード間における複製からデータを復旧する処理の動作例を示すフローチャートである。
図15は、データ管理システム1のノード間における複製のデータから読み出せなくなったノードが記憶するデータの復旧の処理の動作例を示す図である。
また、本実施形態においては、各ノード間においてハートビートの処理などにより、ノードの各々の死活監視を行いそれぞれのノードの生死を互いに確認し合っている。
【0066】
ステップS401:
パーソナルコンピュータA−2のデータ解析部103は、例えば、ハートビートの処理により、サーバA−1からの応答がなく、サーバA−1が無反応状態(ネットワークNWから外されたか、あるいは故障したかのいずれかの状態を示す)ことを検出する。
【0067】
ステップS402:
パーソナルコンピュータA−2のデータ解析部103は、サーバA−1が無反応状態となったことを示す情報をネットワークNWに接続されているノードの全て、すなわち参加ノード情報におけるサーバA−1及び自身以外の各々のノードに対して出力する。
これにより、例えば、携帯端末A−3及びA−4の各々は、パーソナルコンピュータA−2からの通知により、サーバA−1が無反応状態となったことを認識する。このとき、各ノードは、参加ノード情報の無反応となったノードであるサーバA−1に対して無反応状態であることを示すフラグを付与するように構成しても良い。
上述した処理により、ネットワークNWに接続されているサーバA−1以外のノードの全てにおいて、すなわち、パーソナルコンピュータA−2、携帯端末A−3及びA−4の各々において、サーバA−1が無反応状態であるという情報を共有する。
【0068】
ステップS403:
パーソナルコンピュータA−2、携帯端末A−3及びA−4の各々のノードのデータ解析部103は、サーバA−1の記憶するレンジキーの割当時刻範囲を、すでに説明したように、稼働率及び処理能力により求めることができる。そして、パーソナルコンピュータA−2、携帯端末A−3及びA−4の各々のノードのデータ解析部103は、自身が記憶している複製のレンジキーの時間を確認し、サーバA−1の割当時刻範囲に含まれるものが有るか否かにより、サーバA−1のデータの複製が記憶されているか否かの判定を行う。
【0069】
また、パーソナルコンピュータA−2、携帯端末A−3及びA−4の各々のノードのデータ解析部103は、上述した複製したデータに付与されたいるノードフラグあるいは複製データ領域に付与されている識別情報により、無反応状態のサーバA−1が記憶するデータの複製の有無を検出する。そして、例えば、パーソナルコンピュータA−2のデータ解析部103は、サーバA−1の記憶するデータの複製が自身のデータベース106に書き混まれて記憶されていることを検出する。
【0070】
ステップS404:
パーソナルコンピュータA−2のデータ解析部103は、自身に記憶されているサーバA−1のデータA、データB及びデータCの複製のデータを、自身のデータとすることで、サーバA−1のデータA、データB及びデータCの復旧を行う。このとき、パーソナルコンピュータA−2のデータ解析部103は、データA、データB及びデータCに付与されているノードのノードフラグをパーソナルコンピュータA−2のノードフラグに変更することによりデータの復旧を行う。あるいは、パーソナルコンピュータA−2のデータ解析部103は、複製データ領域に記憶されているデータA、データB及びデータCの複製を、自身のデータ領域に対して移動させることによりデータの復旧を行う。
【0071】
ステップS405:
また、パーソナルコンピュータA−2、携帯端末A−3及びA−4の各々のノードのデータ解析部103は、
図12のフローチャートに従って、自身のデータの複製の分散先を再度求める。
【0072】
ステップS406:
パーソナルコンピュータA−2、携帯端末A−3及びA−4の各々のデータ解析部103は、それぞれのデータを求められた分散先のノードに分散する。
これにより、パーソナルコンピュータA−2、携帯端末A−3及びA−4の各々のデータ解析部103により、データの取得率を取得閾値以上としたまま、データ管理システム1全体が復旧される。
【0073】
上述したように、本実施形態によれば、ネットワークNWに新たなノードが接続されると、各ノード間で新たに参加したノードの情報を含む参加ノード情報及びインデックステーブルを共有することができるため、新たに参加したノードのデータをデータ管理システム1内の全てのノードで共有することができる。これにより、本実施形態によれば、任意にネットワークに対して接続あるいは取り外しから可能なノードの記憶媒体を、システム内におけるデータの蓄積に有効に利用することが可能となる。
また、本実施形態によれば、キーバリューストアの方式を用いているため、データ管理システム1におけるノード全てで同一のデータ形式を用いるため、特定のノードを経由してデータ変換を行う必要がなくなる。これにより、本実施形態によれば、ネットワークNWに接続されているいずれのノードからも、データ管理システム1に記憶されているデータを、そのノードをアクセスして参照することができる。
【0074】
また、本実施形態によれば、複製によりデータを複数のノード間において共有しているため、いずれを取り外したとしてもデータが喪失される(読み出せなくなる)ことがないため、任意にネットワークNWに対するノードの接続及び取り外しができる。すなわち、ネットワークNWにデータ管理システム1において管理するデータを保持したノードが新たに接続された場合、この新たなノードのデータの共有が複数のノードで行われるため、新たなノードのデータを記憶する一つのノードが取り外された場合、あるいは故障によりいずれかのノードが無反応状態である場合に、このデータが読み出せなくなったノードのデータが複製を有する他のノードにおいて復旧されるため、データが読み出せなくなったノードのデータが失われることがない。
【0075】
<第2の実施形態>
第2の実施形態において、データ管理システム1の構成は第1の実施形態と同様であり、以下異なる処理について説明する。第2の実施形態においては、レンジキーにおける時間に応じたデータの保存先であるノードを、コンシステントハッシュ法のアルゴリズムにより、データ解析部103がハッシュ関数を用いて算出することで設定している。本実施形態におけるコンシステントハッシュ法は、ハッシュ値のバラツキに応じて各ノードが扱うデータ量が不均等になることを抑制するため、ハッシュ値として仮想ノードを用いている。仮想ノードは、実体と同一のノードを指す複数の仮想的なノードを示している。すなわち、本実施形態においては、
図16に示すように、データ解析部103が、一つのノードについて、複数の仮想ノードとして割当時刻範囲を作成し、レンジキーの時刻範囲上に写像させて分布させることにより、ノード毎の扱うデータ量の偏りを分散している。以下説明する仮想ノードの割当時刻範囲としてのハッシュ関数によるハッシュ値の算出、及び複製を作成するノードの選定の処理は、各ノードのデータ解析部103がコンシステントハッシュ法のアルゴリズムにより行う。
【0076】
図16は、レンジキーの最小値と最大値との間の時刻範囲を円の円周上に写像することで配置し、かつこの円の円周上(以下、単に円周上)にハッシュ値として各ノードの格納する割当時刻範囲を仮想ノードとして配置するハッシュ関数を説明する図である。
図16において、データ解析部103は、レンジキーの時刻範囲において最小値である00:00とレンジキーの最大値である24:00との間の時刻範囲を、00:00と24:00とは同一として、円周上に写像して配置している。また、本実施形態におけるハッシュ関数は、各ノードの処理能力に対応した数の仮想ノードに対応した割当時刻範囲をハッシュ値として、
図16のレンジキーの時刻範囲を示す円周上に出力する。
【0077】
図17は、ネットワークNWに接続され、データ管理システム1に参加しているノードのノード情報が記載された参加ノード情報である。各ノード毎にレコード(行方向のデータ列)が形成されており、ノードID(identification)に対応し、処理能力、稼働率の各々が記憶されている。ノードIDは、ノードを識別する情報であり、例えば本実施形態においては符号を用いている。処理能力は、データベース106の容量の大きさ及びノードの読み書きのスピードで決定されている。稼働率は、データ管理システム1の動作している時間に対して、ノードがネットワークNWに接続されて、データ管理システム1に参加している時間の割合を示す。例えば、ネットワークNWに対して常時接続されるノードは稼働率が100であり、ネットワークNWから切り離されている時間が長く、短時間しかネットワークNWに接続されないノードは10と設定される。
図17から、ノードA−1は処理能力が100であり、稼働率が90である。また、ノードA−2は処理能力が80であり、稼働率が80である。ノードA−3は処理能力が60であり、稼働率が70である。
【0078】
図18は、本実施形態の説明に用いるデータとこのデータに対応するレンジキーとの対応を説明するインデックステーブルを示す図である。データAからデータOの各々は、それぞれ2015−01−01−02:00、…、2015−01−01−23:00に測定されたデータである。各データは、00:00から24:00の間に測定されている。
【0079】
図16に戻り、参加ノードテーブルから、参加しているノードA−1、A−2及びA−3の各々の処理能力の比が100:80:60=5:4:3である。このため、ハッシュ関数は、ノードA−1の仮想ノードを5個のハッシュ値として出力し、ノードA−2の仮想ノードを4個のハッシュ値として出力し、ノードA−3の仮想ノードを3個のハッシュ値として出力する。
図16において、ノードA−1の仮想ノードは、「□」で示されており、仮想ノードIA−1−1から仮想ノードIA−1−5の各々の5個である。また、ノードA−2の仮想ノードは、「△」で示されており、仮想ノードIA−2−1から仮想ノードIA−2−4の各々の4個である。ノードA−3の仮想ノードは、「◇」で示されており、仮想ノードIA−3−1から仮想ノードIA−3−3の各々の3個である。
【0080】
各仮想ノード間の時間のレンジキーのデータは、時計回りの方向において最初の仮想ノードに対応するノードに記憶されることになる。例えば、仮想ノードIA−1−1と仮想ノードIA−2−1との間にあるレンジキーが2015−01−01−02:00のデータAは、仮想ノードIA−2−1に対応するノードA−2に記憶される。同様に、仮想ノードIA−2−2と仮想ノードIA−1−3との間にあるレンジキーが2015−01−01−07:00のデータEは、仮想ノードIA−1−3に対応するノードA−1に記憶される。
【0081】
図1に戻り、仮想ノードを用いたことにより、自身に記憶するデータの複製を作成する他のノードの選定は、所定のノードの仮想ノードの各々を複製元のノードとして、自身のノードに対応する他の仮想ノードを除き、この複製元の仮想ノードに対して時計回り方向に隣接する順番に行う。例えば、ノードA−1のデータ解析部103は、複製を生成するノードの選定において、仮想ノードIA−1−1に対応する割当時刻範囲にあるデータの複製先として、時計回りの方向において隣接するノードA−2の仮想ノードIA−2−1を選定する。これにより、仮想ノードIA−3−3と仮想ノードIA−1−1との割当時刻範囲に含まれれるノードA−1のデータOがノードA−2の仮想ノードIA−2−1の割当時刻範囲に対応して複製される。
【0082】
また、ノードA−1のデータ解析部103は、複製を生成するノードの選定において、仮想ノードIA−1−2に対応する割当時刻範囲にあるデータの複製先として、自身(仮想ノードIA−1−2)の割当時刻範囲に対して時計回りの方向において隣接するノードA−2の仮想ノードIA−2−2を選定する。これにより、仮想ノードIA−3−1と仮想ノードIA−1−2との割当時刻範囲に含まれれるノードA−1のデータCがノードA−2の仮想ノードIA−2−2の割当時刻範囲に対応して複製される。
同様に、ノードA−1のデータ解析部103は、複製を生成するノードの選定において、仮想ノードIA−1−3に対応する割当時刻範囲にあるデータの複製先として、自身(仮想ノードIA−1−3)の割当時刻範囲に対して時計回りの方向において隣接するノードA−3の仮想ノードIA−3−2を選定する。これにより、仮想ノードIA−2−2と仮想ノードIA−1−3との割当時刻範囲に含まれれるノードA−1のデータEがノードA−3の仮想ノードIA−3−2の割当時刻範囲に対応して複製される。
【0083】
また、ノードA−1のデータ解析部103は、複製を生成するノードの選定において、仮想ノードIA−1−4に対応する割当時刻範囲にあるデータの複製先として、自身(仮想ノードIA−1−4)の割当時刻範囲に対して時計回りの方向において隣接するノードA−2の仮想ノードIA−2−3を選定する。これにより、仮想ノードIA−3−2と仮想ノードIA−1−4との割当時刻範囲に含まれれるノードA−1のデータGがノードA−2の仮想ノードIA−2−3の割当時刻範囲に対応して複製される。
同様に、ノードA−1のデータ解析部103は、複製を生成するノードの選定において、仮想ノードIA−1−5に対応する割当時刻範囲にあるデータの複製先として、自身(仮想ノードIA−1−5)の割当時刻範囲に対して時計回りの方向において隣接するノードA−2の仮想ノードIA−2−4を選定する。これにより、仮想ノードIA−2−3と仮想ノードIA−1−5との割当時刻範囲に含まれれるノードA−1のデータK及びデータJの各々がノードA−2の仮想ノードIA−2−4の割当時刻範囲に対応して複製される。
【0084】
上述した複製作成の処理により、ノードA−1のデータ解析部103は、後述する
図19に示すように、ノードA−1に記憶されているデータC、データE、データG、データJ、データK及びデータOの内、データC、データG、データJ、データK、データOそれぞれの複製をノードA−2に対して作成し、一方、データEの複製をノードA−3に対して作成する。このとき、仮想ノードA−1のデータ解析部103は、第1の実施形態と同様に、ノードA−1及びノードA−2の各々の稼働率から、ノードA−2に複製を作成したデータの取得率を算出し、算出した取得率が予め設定した取得率閾値以上か否かの判定を行う。
【0085】
ここで、ノードA−1のデータ解析部103は、ノードA−1及びノードA−2の各々の稼働率から取得率を1−(1−0.9)×(1−0.8)=0.98(すなわち、98%)として求める。ノードA−1のデータ解析部103は、取得率が98%であり、取得率閾値95%以上であるため、データC、データG、データJ、データK、データOそれぞれの複製の作成先はノードA−2のみとする。また、同様に、ノードA−1のデータ解析部103は、ノードA−1及びノードA−3の各々の稼働率から取得率を1−(1−0.9)×(1−0.7)=0.97(すなわち、97%)として求める。ノードA−1のデータ解析部103は、取得率が97%であり、取得率閾値95%以上であるため、データEの複製の作成先はノードA−3のみとする。
【0086】
図19は、仮想ノードを用いたコンシステントハッシュ法により、ノードA−1、ノードA−2及びノードA−3の各々に記憶されているデータとそのデータの複製先とを説明する図である。ノードA−1のデータベース106に記憶されているデータデータC、データE、データG、データJ、データK及びデータOの内、データC、データG、データJ、データK、データOがノードA−2に対して複製され、データCがノードA−3に複製されることが示されている。また、ノードA−2のデータベース106に記憶されているデータA、データD、データH、データI及びデータLの内、データA及びデータLがノードA−3に複製され、データA、データD、データH、データI、データLがノードA−2に複製されていることが示されている。また、ノードA−3のデータベース106に記憶されているデータB、データF、データM及びデータNの全てがノードA−1に複製されていることが示されている。
【0087】
図16に戻り、ノードA−2のデータ解析部103は、複製を生成するノードの選定において、仮想ノードIA−2−1に対応する割当時刻範囲にあるデータの複製先として、自身(仮想ノードIA−2−1)の割当時刻範囲に対して時計回りの方向において隣接するノードA−3の仮想ノードIA−3−1を選定する。これにより、仮想ノードIA−1−1と仮想ノードIA−2−1との割当時刻範囲に含まれれるノードA−2のデータAがノードA−3の仮想ノードIA−3−1の割当時刻範囲に対応して複製される。
同様に、ノードA−2のデータ解析部103は、複製を生成するノードの選定において、仮想ノードIA−2−2に対応する割当時刻範囲にあるデータの複製先として、自身(仮想ノードIA−2−2)の割当時刻範囲に対して時計回りの方向において隣接するノードA−1の仮想ノードIA−1−3を選定する。これにより、仮想ノードIA−1−2と仮想ノードIA−2−2との割当時刻範囲に含まれれるノードA−2のデータDがノードA−1の仮想ノードIA−1−3の割当時刻範囲に対応して複製される。
【0088】
また、ノードA−2のデータ解析部103は、複製を生成するノードの選定において、仮想ノードIA−2−3に対応する割当時刻範囲にあるデータの複製先として、自身(仮想ノードIA−2−3)の割当時刻範囲に対して時計回りの方向において隣接するノードA−1の仮想ノードIA−1−5を選定する。これにより、仮想ノードIA−1−4と仮想ノードIA−2−3との割当時刻範囲に含まれれるノードA−2のデータH及びデータIの各々がノードA−1の仮想ノードIA−1−5の割当時刻範囲に対応して複製される。
同様に、ノードA−2のデータ解析部103は、複製を生成するノードの選定において、仮想ノードIA−2−4に対応する割当時刻範囲にあるデータの複製先として、自身(仮想ノードIA−2−4)の割当時刻範囲に対して時計回りの方向において隣接するノードA−3の仮想ノードIA−3−3を選定する。これにより、仮想ノードIA−1−5と仮想ノードIA−2−4との割当時刻範囲に含まれれるノードA−2のデータLがノードA−3の仮想ノードIA−3−3の割当時刻範囲に対応して複製される。
【0089】
上述した複製作成の処理により、ノードA−2のデータ解析部103は、
図19に示すように、ノードA−2に記憶されているデータA、データD、データH、データI及びデータLの内、データA、データLそれぞれの複製をノードA−3に対して作成し、一方、データA、データD、データH、データI、データLの複製をノードA−3に対して作成する。このとき、ノードA−2のデータ解析部103は、第1の実施形態と同様に、ノードA−2及びノードA−3の各々の稼働率から、ノードA−3に複製を作成したデータの取得率を算出し、算出した取得率が予め設定した取得率閾値以上か否かの判定を行う。
【0090】
ここで、ノードA−2のデータ解析部103は、ノードA−2及びノードA−3の各々の稼働率から取得率を1−(1−0.8)×(1−0.7)=0.94(すなわち、94%)として求める。ノードA−1のデータ解析部103は、取得率が94%であり、取得率閾値95%未満であるため、データA、データLそれぞれを、次に隣接するノードA−1を複製の作成先として設定する。これにより、ノードA−2のデータ解析部103は、データA、データLの取得率を再計算し、1−(1−0.8)×(1−0.7)×(1−0.9)=0.994(すなわち、99.4%)として求める。これにより、ノードA−2のデータ解析部103は、データA、データLそれぞれの取得率が95%以上となったため、データA、データLそれぞれの複製先として、ノードA−3とノードA−1との各々を選定する。ここで、データLは、次に隣接するノードA−1の仮想ノードIA−1−1の割当時刻範囲にも対応して複製される。
また、同様に、ノードA−2のデータ解析部103は、ノードA−2及びノードA−1の各々の稼働率から取得率を1−(1−0.8)×(1−0.9)=0.98(すなわち、98%)として求める。ノードA−1のデータ解析部103は、取得率が98%であり、取得率閾値95%以上であるため、データD、データH、データIの各々の複製の作成先はノードA−1のみとする。
【0091】
また、ノードA−3のデータ解析部103は、複製を生成するノードの選定において、仮想ノードIA−3−1に対応する割当時刻範囲にあるデータの複製先として、自身(仮想ノードIA−3−1)の割当時刻範囲に対して時計回りの方向において隣接するノードA−1の仮想ノードIA−1−2を選定する。これにより、仮想ノードIA−2−1と仮想ノードIA−3−1との割当時刻範囲に含まれれるノードA−3のデータCがノードA−1の仮想ノードIA−2−2の割当時刻範囲に対応して複製される。
同様に、ノードA−3のデータ解析部103は、複製を生成するノードの選定において、仮想ノードIA−3−2に対応する割当時刻範囲にあるデータの複製先として、自身(仮想ノードIA−3−2)の割当時刻範囲に対して時計回りの方向において隣接するノードA−1の仮想ノードIA−1−4を選定する。これにより、仮想ノードIA−2−2と仮想ノードIA−3−2との割当時刻範囲に含まれれるノードA−3のデータFがノードA−1の仮想ノードIA−1−4の割当時刻範囲に対応して複製される。
【0092】
また、ノードA−3のデータ解析部103は、複製を生成するノードの選定において、仮想ノードIA−3−3に対応する割当時刻範囲にあるデータの複製先として、自身(仮想ノードIA−3−3)の割当時刻範囲に対して時計回りの方向において隣接するノードA−1の仮想ノードIA−1−1を選定する。これにより、仮想ノードIA−2−4と仮想ノードIA−3−3との割当時刻範囲に含まれれるノードA−3のデータM及びデータNの各々がノードA−1の仮想ノードIA−1−1の割当時刻範囲に対応して複製される。
ノードA−3のデータ解析部103は、ノードA−3及びノードA−1の各々の稼働率から取得率を1−(1−0.9)×(1−0.7)=0.97(すなわち、97%)として求める。ノードA−1のデータ解析部103は、取得率が97%であり、取得率閾値95%以上であるため、データB、データF、データM、データNの各々の複製の作成先はノードA−1のみとする。
【0093】
図20は、レンジキーの最小値と最大値との間の時刻範囲を円周上に写像して配置した仮想ノードにおいて、ノードA−3が無反応状態である場合における、ノードA−3に記憶されているデータの復旧を説明する図である。
図16において、ノードA−1の仮想ノードは、「□」で示されており、仮想ノードIA−1−1から仮想ノードIA−1−5の各々の5個である。また、ノードA−2の仮想ノードは、「△」で示されており、仮想ノードIA−2−1から仮想ノードIA−2−4の各々の4個である。ノードA−3の仮想ノードは、「◇」で示されており、仮想ノードIA−3−1から仮想ノードIA−3−3の各々の3個である。
【0094】
この
図20において、ノードA−3が故障するか取り外されたかして、他のネットワークNW上のノードからの問い合わせに対してノードA−3からの反応が無くなった場合、ノードA−3のデータの複製が生成されているノードA−1においてノードA−3のデータが復旧される。すなわち、仮想ノードIA−2−1と仮想ノードIA−3−1との割当時刻範囲におけるノード3のデータBは、仮想ノードIA−1−2の対応する割当時刻範囲が仮想ノードIA−3−1の割当時刻範囲を含むように変更されるため、ノードA−1の記憶するデータとなる。仮想ノードIA−1−2が対応する割当時刻範囲は、仮想ノードA−3−1から仮想ノードIA−1−2までの割当時刻範囲に対し、仮想ノードIA−2−1から仮想ノードIA−3−1までの割当時刻範囲が加わり、仮想ノードIA−2−1から仮想ノードIA−1−2までの割当時刻範囲となる。これにより、ノードA−1は、データBをノードA−3の複製から自身のデータへと、第1の実施形態と同様に変更する。
【0095】
また、仮想ノードIA−1−3と仮想ノードIA−3−2との割当時刻範囲におけるノード3のデータFは、仮想ノードIA−1−4の対応する割当時刻範囲が仮想ノードIA−3−2の割当時刻範囲を含むように変更されるため、ノードA−1の記憶するデータとなる。仮想ノードIA−1−4が対応する割当時刻範囲は、仮想ノードA−3−2から仮想ノードIA−1−4までの割当時刻範囲に対し、仮想ノードIA−1−3から仮想ノードIA−3−2までの割当時刻範囲が加わり、仮想ノードIA−1−3から仮想ノードIA−1−4までの割当時刻範囲となる。これにより、ノードA−1は、データFをノードA−3の複製から自身のデータへと変更する。
【0096】
また、仮想ノードIA−2−4と仮想ノードIA−3−3との割当時刻範囲におけるノード3のデータM及びデータNの各々は、仮想ノードIA−1−1の対応する割当時刻範囲が仮想ノードIA−3−3の割当時刻範囲を含むように変更されるため、ノードA−1の記憶するデータとなる。仮想ノードIA−1−1が対応する割当時刻範囲は、仮想ノードA−3−3から仮想ノードIA−1−1までの割当時刻範囲に対し、仮想ノードIA−2−4から仮想ノードIA−3−3までの割当時刻範囲が加わり、仮想ノードIA−2−4から仮想ノードIA−1−1までの割当時刻範囲となる。これにより、ノードA−1は、データM及びデータNの各々をノードA−3の複製から自身のデータへと変更する。
【0097】
図21は、ノード3が無反応状態となった場合に、ノードA−1がノードA−3のデータの複製からノードA−3のデータを復旧する処理を説明する図である。
図21に示されるように、ノードA−1には、自身の管理するデータC、データE、データG、データJ、データK及びデータO以外に、ノード2のデータA,データD、データH、データI、データLの複製と、ノード3のデータB、データF、データM、データNの複製が記憶されている。
ノードA−1のデータ解析部103は、生死の問い合わせに対するノード3からの返答が無いことが確認された場合、ノード3のデータB、データF、データM、データNの各々の複製を自身の担当するデータに変更することで、ノード3のデータB、データF、データM、データNそれぞれを復旧する。
【0098】
図22は、ノードA−1がノードA−3のデータの複製を、自身の担当するデータに変更した後に、新たに担当するデータの複製を他のノードに作成する処理を説明する図である。ノードA−1のデータ解析部103は、新たに担当するデータとしたデータB、データF、データM、データNの各々の複製をノードA−2において生成する。
すなわち、ノードA−1のデータ解析部103は、複製を生成するノードの選定において、仮想ノードIA−1−1に対応する割当時刻範囲にあるデータの複製先として、時計回りの方向において隣接するノードA−2の仮想ノードIA−2−1を選定する。これにより、仮想ノードIA−2−4と仮想ノードIA−3−3との割当時刻範囲に含まれれるノードA−1のデータM及びデータNの各々がノードA−2の仮想ノードIA−2−1の割当時刻範囲に対応して複製される。
【0099】
また、ノードA−1のデータ解析部103は、複製を生成するノードの選定において、仮想ノードIA−1−2に対応する割当時刻範囲にあるデータの複製先として、自身(仮想ノードIA−1−2)の割当時刻範囲に対して時計回りの方向において隣接するノードA−2の仮想ノードIA−2−2を選定する。これにより、仮想ノードIA−2−1と仮想ノードIA−3−1との割当時刻範囲に含まれれるノードA−1のデータBがノードA−2の仮想ノードIA−2−2の割当時刻範囲に対応して複製される。
同様に、ノードA−1のデータ解析部103は、複製を生成するノードの選定において、仮想ノードIA−1−4に対応する割当時刻範囲にあるデータの複製先として、自身(仮想ノードIA−1−4)の割当時刻範囲に対して時計回りの方向において隣接するノードA−2の仮想ノードIA−2−3を選定する。これにより、仮想ノードIA−1−3と仮想ノードIA−3−2との割当時刻範囲に含まれれるノードA−1のデータFがノードA−2の仮想ノードIA−2−3の割当時刻範囲に対応して複製される。
【0100】
そして、ノードA−1のデータ解析部103は、ノードA−1及びノードA−2の各々の稼働率から取得率を1−(1−0.9)×(1−0.8)=0.98(すなわち、98%)として求める。ノードA−1のデータ解析部103は、取得率が98%であり、取得率閾値95%以上であるため、新たに担当するデータB、データF、データM、データNそれぞれの複製の作成先はノードA−2のみとする。
また、ノードA及びノードBの各々のデータ解析部103は、すでに担当しているデータそれぞれについては、他のノードに対して複製を生成するなどの処理は行わない。また、ノードA及びノードBの各々のデータ解析部103は、無反応状態となったノードの履歴により、そのノードが担当していたデータが復旧されたノードを、自身の割当時刻範囲に対して時計回りの方向に隣接するノードであると検出することができ、無反応状態となったノードのデータのアクセス先を容易に求めることが可能となる。
【0101】
上述したように、本実施形態によれば、ネットワークNWに新たなノードが接続されると、各ノード間で新たに参加したノードの情報を含む参加ノード情報及びインデックステーブルを共有することができるため、新たに参加したノードのデータをデータ管理システム1内の全てのノードで共有することができる。これにより、本実施形態によれば、任意にネットワークに対して接続あるいは取り外しから可能なノードの記憶媒体を、システム内におけるデータの蓄積に有効に利用することが可能となる。
また、本実施形態によれば、キーバリューストアの方式を用いているため、データ管理システム1におけるノード全てで同一のデータ形式を用いるため、特定のノードを経由してデータ変換を行う必要がなくなる。これにより、本実施形態によれば、ネットワークNWに接続されているいずれのノードからも、データ管理システム1に記憶されているデータを、そのノードをアクセスして参照することができる。
【0102】
また、本実施形態によれば、複製によりデータを複数のノード間において共有しているため、いずれを取り外したとしてもデータが喪失される(読み出せなくなる)ことがないため、任意にネットワークNWに対するノードの接続及び取り外しができる。すなわち、ネットワークNWにデータ管理システム1において管理するデータを保持したノードが新たに接続された場合、この新たなノードのデータの共有が複数のノードで行われるため、新たなノードのデータを記憶する一つのノードが取り外された場合、あるいは故障によりいずれかのノードが無反応状態となった場合に、このデータが読み出せなくなったノードのデータが複製を有する他のノードにおいて復旧されるため、データが読み出せなくなったノードのデータが失われることがない。
【0103】
また、本実施形態においては、一つのノードに対して複数の仮想ノードを発生させるハッシュ関数を用い、レンジキーの最小値と最大値とを円状に連結した円の円周上に各ノードの仮想ノードが配置される。そして、自身に記憶するデータの複製を作成する他のノードの選定は、所定のノードの仮想ノードの各々を複製元のノードとして、自身のノードに対応する他の仮想ノードを除き、この複製元の仮想ノードに対して時計回り方向に隣接する順番に行う。これにより、本実施形態によれば、ネットワークNWに接続されるノードの増減があった場合に、データを復旧あるいは移動する際、データの移動の処理にかかる負荷を最小限に抑制することができる。
【0104】
なお、本発明における
図2のデータ管理部10の各部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりデータの管理の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ホームページ提供環境(あるいは表示環境)を備えたWWWシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
【0105】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。