(57)【要約】  多量多種のデータを対象とする場合であっても、データの格納先の分散性能と、データ取得時のアクセス性能とを同時に満足する。本発明による受付ノードは、データ格納要求またはデータ取得要求を受け付けると、データの格納先のデータサーバを決定する受付ノードであって、指定されたデータのキーと、指定された時刻にマスクを適用して得られるマスク時刻とを用いて、新しいキーを生成するキー生成手段１００１と、キー生成手段１００１によって生成された新キーを用いて、データの格納先のデータサーバを決定する宛先ノード計算手段１００２とを備える。
2014199553.tif 000002
【特許請求の範囲】
【請求項１】
データ格納要求またはデータ取得要求を受け付けると、データの格納先のデータサーバを決定する受付ノードであって、
指定されたデータのキーと、指定された時刻にマスクを適用して得られるマスク時刻とを用いて、新しいキーを生成するキー生成手段と、
前記キー生成手段によって生成された新しいキーを用いて、データの格納先のデータサーバを決定する宛先ノード計算手段とを備えた
ことを特徴とする受付ノード。
【請求項２】
データのキーと時刻とが入力されると、前記時刻に適用させるマスクを生成するマスク生成手段を備え、
前記マスク生成手段は、所定の情報に対応づけて、生成するマスクに関する情報を規定した情報であるマスク生成ルールを保持し、前記マスク生成ルールに基づいて、前記時刻に適用させるマスクを生成する
請求項１に記載の受付ノード。
【請求項３】
マスク生成ルールは、データのキー値に関する情報と、生成するマスクに関する情報とを対応づけた情報を含み、
前記マスク生成手段は、前記マスク生成ルールに基づいて、データのキー値に応じて異なるマスクを生成する
請求項２に記載の受付ノード。
【請求項４】
マスク生成ルールは、入力される情報から特定される静的な情報に関する情報と、生成するマスクに関する情報とを対応づけた情報を含み、
前記マスク生成手段は、前記マスク生成ルールに基づいて、入力された情報から特定した静的な情報に応じて異なるマスクを生成する
請求項２または請求項３に記載の受付ノード。
【請求項５】
マスク生成ルールは、運用中に内容が変動する情報であって入力される情報から特定できない動的な情報に関する情報と、生成するマスクに関する情報とを対応づけた情報を含み、
前記マスク生成手段は、前記マスク生成ルールに基づいて、動的な情報に応じて異なるマスクを生成する
請求項２から請求項４のうちのいずれか１項に記載の受付ノード。
【請求項６】
生成したマスクに関する情報を記憶するマスク情報記憶手段を備え、
前記マスク生成手段は、データ格納要求時に、動的な情報に応じて異なるマスクを生成した場合には、前記マスク情報記憶手段に、入力されたデータのキーと時刻とから生成したマスクを再現できる情報を記憶させ、
前記マスク生成手段は、データ取得要求時に、生成すべきマスクが動的な情報に応じて異なるマスクである場合には、前記マスク情報記憶手段に記憶されている情報に基づいて、入力された時刻に対して適用させるマスクを生成する
請求項５に記載の受付ノード。
【請求項７】
宛先ノード計算手段は、前記キー生成手段によって生成された新しいキーを所定のハッシュ関数に入力して得られたハッシュ値と、各データサーバの識別子を所定のハッシュ関数に入力して得られたハッシュ値とを比較して、所定の割り当て方法によりデータの格納先のデータサーバを決定する
請求項１から請求項６のうちのいずれか１項に記載の受付ノード。
【請求項８】
データを記憶するデータ記憶手段を備えた１つ以上のデータサーバと、１つ以上の受付ノードとを備え、
前記受付ノードの各々は、
指定されたデータのキーと、指定された時刻にマスクを適用して得られるマスク時刻とを用いて、新しいキーを生成するキー生成手段と、
前記キー生成手段によって生成された新しいキーを用いて、データの格納先のデータサーバを特定する宛先ノード計算手段とを含む
ことを特徴とするデータ管理システム。
【請求項９】
受付ノードが、
データ格納要求またはデータ取得要求を受け付けると、
指定されたデータのキーと、指定された時刻にマスクを適用して得られるマスク時刻とを用いて、新しいキーを生成し、
生成された新しいキーを用いて、データの格納先のデータサーバを特定する
ことを特徴とするデータ管理方法。
【請求項１０】
コンピュータに、
指定されたデータのキーと、指定された時刻にマスクを適用して得られるマスク時刻とを用いて、新しいキーを生成するキー生成処理、および
キー生成処理で生成された新しいキーを用いて、データの格納先のデータサーバを特定する宛先ノード計算処理
を実行させるためのデータ管理用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを分散させて管理するデータ管理システム、それに用いられる受付ノード、データ管理方法およびデータ管理用プログラムに関する。
【背景技術】
【０００２】
実世界の数万、数十万台のスマートフォンやセンサなどから、時々刻々と発生するデータを収集し、それを分析して価値を生み出すシステムの実現が望まれている。このようなシステムは、一般にＣＰＳ（Cyber-Physical System ）と呼ばれている。【０００３】
ＣＰＳの構築にあたり、収集データの蓄積、参照を効率的に行えるストレージシステムが必要となる。【０００４】
ストレージシステムにおいて、大量のデータの取り扱いや高速なデータアクセスを実現するために、複数のサーバや記憶装置（ＨＤＤ）にデータを分散させることが行われている。【０００５】
例えば、データを複数のハードディスクに分けて同時に書き込むストライピングと呼ばれるデータの書き込み方法がある。ストライピングは、ハードディスクの領域をストライプサイズと呼ばれる一定サイズのブロックで分割し、その領域に対するアクセスをディスク間で同時並列的に行う方法である。一度にアクセスするデータのサイズがストライプサイズより大きい場合には、複数のハードディスクへのアクセスを同時並列に行えるため、データアクセスが高速化される。【０００６】
また、例えばデータを複数のサーバに分散して割り当てる技術に、コンシステントハッシュ法（Consistent hashing）と呼ばれるアルゴリズムがある。コンシステントハッシュ法は、ハッシュ空間をリング上に配置して、割り当て先となる各サーバの識別子等をキーにして算出したハッシュ値（特別なハッシュ値）のリング上の位置と、割り当てたいデータの識別子等をキーにして算出したハッシュ値のリング上の位置とに基づいて、データの割り当て先とするサーバを決定する方法である。各サーバに対応する特別なハッシュ値のリング上の位置に応じて、各特別なハッシュ値すなわち各サーバが担当するハッシュ値の範囲が定まる。データの割り当て先を求めたい場合は、データの識別子等をキーにして算出したハッシュ値と各サーバに対応する特別なハッシュ値とを比較して、例えばリング上の位置関係においてデータのハッシュ値と同じ位置または右回りで最も近い位置にいる特別なハッシュ値を探せばよい。なお、上記例は、各特別なハッシュ値が右回りで各ハッシュ値を担当していく割り当て方法が適用された例であるが、ハッシュ値の割り当て方法はこの限りではない。コンシステントハッシュ法を利用すれば、サーバの追加や削除があったときにその影響範囲を抑えることができるという利点がある。【０００７】
特許文献１には、コンシステントハッシュ法を利用した情報格納検索装置の例が記載されている。【０００８】
また、特許文献２には、センサネットによる観測データなど、継続的に生成される時系列データをリアルタイムに処理するために、時間軸上の近接関係に基づいて個別の現象に対応したデータ集合を抽出する方法が記載されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１１−２５８１１５号公報
【特許文献２】特開２００９−００９３０４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
一般に、複数のサーバにデータを分散して割り当てる場合、各サーバに割り当てられるデータ量を均一にしたいという要求がある。サーバあたりの保持データ量が不均一であると、負荷の分散が効果的に行えないためである。【００１１】
各サーバに割り当てられるデータ量を均一にするために、例えば、ストライピングのように、決まったデータ量ごとに格納先のサーバが変わるように各データの格納先を決定する方法が考えられる。しかし、この方法ではデータの格納先がデータ流量によって変わるので、ある時刻にあるセンサから発生したデータを取得したい場合に、そのデータがどこに格納されているかを知るための仕組みが別途必要となる。例えば、データの識別子とデータの格納先とを対応づけて保持する機構が必要となる。【００１２】
そこで、データとデータの格納先との間に一定の対応関係を持たせられるよう、センサの識別子をデータのキーにして、データの格納先を割り当てる方法を考える。この方法によれば、同一の識別子を持つデータはすべて同じ１つのサーバに割り当てられるので、データの取得時にセンサ識別子から容易に割り当て先サーバを特定できる。【００１３】
しかし、上記方法ではセンサ間でのデータ発生量の差がある場合に、サーバあたりの保持データ量が不均一となり、負荷の分散が効果的に行えないという問題が生じる。また、特定サーバに同じセンサからのデータが集中するため、あるセンサに関して取得したいデータが大量にある場合に、複数サーバから並列にデータにアクセスすることによる高速化が行えないという問題もある。【００１４】
そこで、センサの識別子と時刻を結合したものをキーにして分散する方法を考える。この方法では、１件１件のセンサデータに対して異なるキーが生成されるので、その都度データが分散されることになる。しかし、この方法はサーバあたりの保持データ量は均一化されるが、あるセンサ識別子の特定の時刻周辺のまとまった量のデータを取得しようとした場合に、アクセス性能が低下するという問題が生じる。同じセンサ識別子であっても時刻が異なると、生成されるキーが異なるために異なるサーバに格納されることが考えられる。すると、特定の時刻周辺のまとまった量のデータを取得したい場合であっても、各時刻について各々格納先を特定してサーバにアクセスしなければならず、サーバへのアクセス回数が増えてしまう。【００１５】
さらに、ハッシュを用いたデータアクセスの場合、範囲指定によるデータ取得がさらに非効率になるという問題がある。これは、時刻の範囲指定でデータを取得する際、指定された範囲に含まれるすべての時刻に対して、センサの識別子を結合させたキーを用いてデータの取得要求をしなければならず、時刻の数だけ各サーバへのアクセス回数が増えるからである。【００１６】
例えば、センサデータはセンサ識別子、時刻、センサの測定値などから構成される。センサは時々刻々と測定値を発生させるため、分散ストレージシステムには同一のセンサ識別子を持ち、時刻、測定値などが異なるデータが格納される。また、分散ストレージシステムにはセンサ識別子の異なるデータも格納される。さらに、各センサが発生させるデータの量はセンサ種別、センサの位置、時間帯など様々な要因によって偏りがあることも考えられる。【００１７】
このようなＣＰＳにおいて時々刻々と発生する多量多種のセンサデータを格納する分散ストレージシステムを考えた場合、データの格納先の分散性能と、データ取得時のアクセスの効率化とを同時に満たすことは難しい問題であった。【００１８】
なお、特許文献２に記載されている方法は、発生した時系列データをリアルタイムに処理する場合のデータの抽出方法であって、時間軸上の近接関係に基づく部分データ列を順次切り分けることしかしていない。そこには、時刻情報を加工して、データ発生量に偏りのあるようなセンサデータを複数のサーバに均一に格納できるようにしよう、また大量のデータを取得する場合にも並列化による効率化を図れるようにしようといったことは何ら考慮されていない。【００１９】
本発明は、これらの問題点を解決するためになされたものであり、時々刻々と発生し、センサ毎、時刻毎などにより発生量が異なるような多量多種のセンサデータを対象とする場合であっても、データの格納先の分散性能と、データ取得時のアクセス性能とを同時に満足させることができるデータ管理システム、受付ノード、データ管理方法及びデータ管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明による受付ノードは、データ格納要求またはデータ取得要求を受け付けると、データの格納先のデータサーバを決定する受付ノードであって、指定されたデータのキーと、指定された時刻にマスクを適用して得られるマスク時刻とを用いて、新しいキーを生成するキー生成手段と、キー生成手段によって生成された新しいキーを用いて、データの格納先のデータサーバを決定する宛先ノード計算手段とを備えたことを特徴とする。【００２１】
また、本発明によるデータ管理システムは、データを記憶するデータ記憶手段を備えた１つ以上のデータサーバと、１つ以上の受付ノードとを備え、受付ノードの各々は、指定されたデータのキーと、指定された時刻にマスクを適用して得られるマスク時刻とを用いて、新しいキーを生成するキー生成手段と、キー生成手段によって生成された新しいキーを用いて、データの格納先のデータサーバを特定する宛先ノード計算手段とを含むことを特徴とする。【００２２】
また、本発明によるデータ管理方法は、受付ノードが、データ格納要求またはデータ取得要求を受け付けると、指定されたデータのキーと、指定された時刻にマスクを適用して得られるマスク時刻とを用いて、新しいキーを生成し、生成された新しいキーを用いて、データの格納先のデータサーバを特定することを特徴とする。【００２３】
また、本発明によるデータ管理用プログラムは、コンピュータに、指定されたデータのキーと、指定された時刻にマスクを適用して得られるマスク時刻とを用いて、新しいキーを生成するキー生成処理、およびキー生成処理で生成された新しいキーを用いて、データの格納先のデータサーバを特定する宛先ノード計算処理を実行させることを特徴とする。
【発明の効果】
【００２４】
本発明は、以上のように構成されることにより、時々刻々と発生し、センサ毎、時刻毎などにより発生量が異なるような多量多種のセンサデータを対象とする場合であっても、データの格納先の分散性能と、データ取得時のアクセス性能とを同時に満足するという優れた効果を有する。
【図面の簡単な説明】
【００２５】
【図１】第１の実施形態のデータ管理システムの構成例を示すブロック図である。
【図２】受付ノード１０の機能構成例を示すブロック図である。
【図３】受付ノード１０の動作の概略を示すフローチャートである。
【図４】データ格納時にデータの格納先を決定する動作の処理フローを示すフローチャートである。
【図５】データ格納時におけるマスク生成処理の処理フローを示すフローチャートである。
【図６】直接指定のデータ取得時におけるマスク生成処理の処理フローを示すフローチャートである。
【図７】範囲指定のデータ取得時におけるデータの格納先の決定動作の一例を示すフローチャートである。
【図８】範囲指定のデータ取得時におけるマスク生成処理の処理フローを示すフローチャートである。
【図９】第２の実施形態のデータ管理システムの構成例を示すブロック図である。
【図１０】第２の実施形態の受付ノード１０の機能構成例を示すブロック図である。
【図１１】本発明による受付ノードの最小の構成例を示すブロック図である。
【図１２】本発明によるデータ管理システムの最小の構成例を示すブロック図である。
【発明を実施するための形態】
【００２６】
実施形態１．
以下、本発明の実施形態を図面を参照して説明する。図１は、本発明の第１の実施形態のデータ管理システムの構成例を示すブロック図である。図１に示すデータ管理システムは、１つ以上の受付ノード１０と、１つ以上のデータサーバ２０とを備えている。少なくとも各受付ノード１０は、通信ネットワークを介して各データサーバ２０と相互に接続されている。
【００２７】
なお、図１には、「受付ノード１，受付ノード２，・・・，受付ノードｍ」や「データサーバ１，データサーバ２，・・・，データサーバｎ」として示されているように、ｍ個の受付ノード１０と、ｎ個のデータサーバ２０とを備える例が示されているが、受付ノード１０の数およびデータサーバ２０の数は１つ以上あればよい。
【００２８】
また、図１には、本システムに対してデータの格納要求を行うノード（以下、格納要求ノードという）の一例として、２個のセンサ３０が示されているが、格納要求ノードはセンサに限らない。また、格納要求ノードの数はいくつであってもよい。また、図１では、センサ３０と受付ノード１０とが１対１に対応づけられる例が示されているが、センサ（格納要求ノード）と受付ノードとの対応関係は限定されない。例えば、センサと受付ノードとが、Ｎ対１で対応づけられてもよいし、１対Ｎで対応づけられてもよいし、Ｎ対Ｎで対応づけられてもよい。換言すると、複数のセンサに対して１つの受付ノードが割り当てられていてもよいし、１つのセンサに対して複数の受付ノードが割り当てられていてもよいし、複数のセンサに対して複数の受付ノードが割り当てられていてもよい。また、相手方が固定であってもよいし、その都度選択可能としてもよい。
【００２９】
また、図１には、本システムに対してデータの取得要求を行うノード（以下、取得要求ノードという）の一例として、分析アプリケーション４０が示されているが、取得要求ノードは分析アプリケーションに限らない。また、取得要求ノードの数はいくつであってもよい。また、取得要求ノードと受付ノードとの対応関係も限定されない。
【００３０】
データサーバ２０は、データを記憶するデータ記憶手段２０１を有し、受付ノード１０から送付されるデータをデータ記憶手段２０１に記憶する。また、データサーバ２０は、受付ノード１０からの要求に応じてデータ記憶手段２０１に記憶しているデータを読み出して、要求元の受付ノード１０に送付する。データサーバ２０は、例えば、ハードディスクドライブ、不揮発性メモリ、揮発性メモリ、ＳＳＤ（Solid State Drive）等と、通信インタフェースとを備えたストレージサーバであってもよい。
【００３１】
受付ノード１０は、データサーバ２０にデータを適切に分散させるための各種処理を行う。受付ノード１０は、例えば、プログラムに従って動作するＣＰＵ（Central Processing Unit）と、各種記憶装置（ハードディスクドライブ、不揮発性メモリ、揮発性メモリ、ＳＳＤ等）と、データサーバ２０、格納要求ノードおよび取得要求ノードとの通信インタフェースとを備えた情報処理装置であってもよい。データサーバ２０、格納要求ノードおよび取得要求ノードとの通信インタフェースは、共通であっても、個別に備えてもよい。
【００３２】
図２は、受付ノード１０の機能構成例を示すブロック図である。図２に示すように、受付ノード１０は、マスク生成手段１０１と、キー生成手段１０２と、宛先ノード計算手段１０３と、マスク情報記憶手段１０４とを有していてもよい。
【００３３】
マスク生成手段１０１は、データのキーと時刻とが入力されると、後述するマスク生成ルール１０１１に基づいて、入力された時刻に適用するマスクを生成し、キー生成手段１０２に提供する。なお、ここでいう「マスクの生成」には、記憶されているマスクの中から１のマスクを特定し、取得することも含む。
【００３４】
マスク生成手段１０１が提供するマスクは、例えば、ビットマスクであってもよい。なお、マスクはビットマスクに限られない。本発明では、時刻に適用するマスクとして、少なくとも適用前に比べてデータの粒度（データ全体でどれだけ多くのパターンを表現できるかの度合い）を下げられるような情報の加工または変換を行う具体的な方法や手段が具体的に提供されればよい。マスクは、例えば、特定の時間範囲に含まれる時刻が同じ値となるような情報の加工を行うものであってもよい。具体例として、例えば、３０秒以下を切り捨てるといった時刻の粒度を下げるような情報の加工を行うものであってもよい。なお、マスクはこのような時刻の端数処理（丸め）を行うものに限らない。例えば、同じ月の同じ日の同じ時間帯に含まれる時刻が同じ値になるように時刻情報を変換するものであってもよい。また、変換後の値は時刻を表現するものでなくてもよい。例えば、時系列上の各時刻を複数のグループに分類し、各グループに属する時刻が各々そのグループの代表値を示すように時刻情報を変換するものであってもよい。この場合、入力された時刻に対して、当該時刻が属するグループの代表値に変換する変換モジュール等を、マスクとして提供してもよい。時刻のパターン数に対してグループの数が少なければデータの粒度は下げられる。なお、まとめて取得されることが多いと予想されるデータ群が同じグループに属するようにグループ化されることが好ましい。例えば、特定の近傍時刻が同じグループに属するようにする。
【００３５】
また、入力される時刻のデータ形式は問わない。例えば、年月日時分秒を各々予め定められた桁を用いて示す数値データや、ある基準時からの秒数を表す数値データであってもよい。また、数値データに限られず、年月日時分秒を所定の形式で表わす文字データであってもよい。文字データの場合であっても、マスクによってデータの粒度が下げられればよい。なお、本実施形態では、時刻として、データの発生時刻または受付時刻が入力されるものとする。
【００３６】
マスク生成ルール１０１１は、入力される情報を基に、どのようなマスクを生成するかを規定する情報であって、例えば、データのキー値に関する情報（例えば、キー値そのものやその範囲を示す情報等）と、生成するマスクに関する情報（例えば、マスクそのものや予め用意されているマスクを特定するための識別子、時刻の変換規則を示す情報等）とを対応づけた情報であってもよい。また、例えば時刻に関する情報（例えば、時刻の範囲を示す情報、時間帯等）と、生成するマスクに関する情報とを対応づけた情報であってもよい。また、データのキー値、時刻といった入力される情報を直接指定する以外にも、システムの構成に関する情報（ノード数等）や、入力されるデータのキー値から特定されるデータの発生源に関連する情報（センサの種別、センサの位置等）や、入力される時刻におけるシステムの状況を示す情報（データの流量、システムの負荷等）などを用いることも可能である。なお、本システムは、必要に応じてデータの流量やシステムの負荷などを計測する手段を備える。以下、マスク生成ルール１０１１に、生成するマスクに関する情報と対応づけられて登録される情報をまとめて、「マスクの生成条件」という場合がある。マスクの生成条件は、２以上の要素を組み合わせてもよい。
【００３７】
マスク生成手段１０１は、このようなマスク生成ルール１０１１に基づいて、例えば、データのキー値に応じて異なるマスクを生成したり、データ発生時の時間帯に応じて異なるマスクを生成したり、システムの構成やセンサの種別、センサの位置などに応じて異なるマスクを生成したり、データの流量やシステムの負荷などに応じて異なるマスクを生成することができる。なお、マスク生成ルール１０１１には、上記例に限らず、データの発生パターンおよびデータの取得パターンに応じて格納先ノードの切り替えが行われるように、マスクの生成条件とマスクの情報とを登録する。
【００３８】
また、マスク生成手段１０１は、データ格納時に、マスク生成ルール１０１１に従って、運用中に内容が変動する情報であって要求時のクエリ内容である元キーおよび時刻からは分からない情報（以下、動的な情報という。）に応じて異なるマスクを生成した場合には、生成したマスクの情報を、そのときの入力情報とともに、マスク情報記憶手段１０４に記憶させる。そして、マスク生成手段１０１は、データ取得時に、生成すべきマスクが動的な情報に応じて異なるマスクであれば、マスク情報記憶手段１０４に記憶されているマスク情報の中から該当するマスクを取得して提供する。具体的には、マスク生成手段１０１は、入力されたデータのキーおよび時刻を用いて、マスク情報記憶手段１０４に記憶されているデータのキーおよび時刻を検索し、同じ内容の入力情報で過去に生成したマスクの情報が登録されていれば、その情報を基に過去に生成したマスクと同じマスクを提供する。
【００３９】
キー生成手段１０２は、データのキーと時刻が入力されると、入力された時刻にマスク生成手段１０１から提供されるマスクを適用してマスク時刻を得て、得られたマスク時刻とデータのキーとを結合して新たなキーを生成する。以下、キー生成手段１０２が生成したキーと、入力されるデータのキーとを区別するために、入力されるデータのキーを「元キー」といい、キー生成手段１０２が生成したキーを「新キー」という場合がある。
【００４０】
宛先ノード計算手段１０３は、キー生成手段１０２によって生成された新キーを基に所定の処理を行い、データの格納先のデータサーバ２０を決定する。以下、データの格納先のデータサーバ２０を、宛先ノードという場合がある。宛先ノード計算手段１０３は、例えば、キー生成手段１０２によって生成された新キーを所定のハッシュ関数に入力し、得られたハッシュ値を基に、コンシステントハッシュ法を用いて宛先ノードを特定してもよい。
【００４１】
マスク情報記憶手段１０４は、マスク生成手段１０１からの要求に応じて、マスクの情報を記録し、また記憶されているマスクの情報を提供する。なお、マスク生成ルール１０１１が、動的な情報に応じて異なるマスクを生成させるようなルールを含まない場合は、マスク情報記憶手段１０４は省略可能である。
【００４２】
本実施形態において、マスク生成手段１０１、キー生成手段１０２、宛先ノード計算手段１０３は、例えばプログラムに従って動作するＣＰＵによって実現される。また、マスク情報記憶手段１０４は、例えば、記憶装置によって実現される。
【００４３】
次に、本実施形態の動作を説明する。図３は、本実施形態のデータ管理システムの受付ノード１０の動作の概略を示すフローチャートである。図３に示すように、受付ノード１０が外部からデータのキー（元キー）と時刻を指定したデータ格納要求またはデータ取得要求を受け付けると（ステップＳ１−１）、まずマスク生成手段１０１が、時刻に適用させるマスクを生成する（ステップＳ１−２）。
【００４４】
次いで、キー生成手段１０２が、指定された時刻にマスク生成手段１０１によって生成されたマスクを適用し、得られたマスク時刻と指定されたデータの元キーとを結合して新キーを生成する（ステップＳ１−３）。
【００４５】
次いで、宛先ノード計算手段１０３が、キー生成手段１０２によって生成された新キーを用いて所定の処理を行い、宛先ノードを特定する（ステップＳ１−４）。そして、特定した宛先ノードに、受け付けた要求を転送する（ステップＳ１−５）。
【００４６】
データサーバ２０では、受付ノード１０から送付された要求がデータ格納要求であれば、要求に付されたデータを、該要求に付された元キーと時刻の情報とともにデータ記憶手段２０１に記憶し、処理結果を返信する。また、データサーバ２０は、受付ノード１０から送付された要求がデータ取得要求であれば、該要求に付された元キーと時刻の情報を基にデータ記憶手段２０１から要求されたデータを読み出し、読み出したデータを含む処理結果を返信する。
【００４７】
要求先のデータサーバ２０から処理結果を受け取ると、受付ノード１０は受け取った処理結果を要求元のノードに返す（ステップＳ１−６）。
【００４８】
次に、具体例を用いて受付ノード１０の動作をより詳細に説明する。以下では、３つのセンサから発生されるデータに対してデータの格納先を決定する動作を、データ格納時とデータ取得時に分けて説明する。
【００４９】
センサの識別子をそれぞれＳｅｎｓｏｒＡ、ＳｅｎｓｏｒＢ、ＳｅｎｓｏｒＣとし、これらを元キーとして、データの分散を行う。また、それぞれのセンサに対して、以下のようなマスク生成ルール１０１１が保持されているものとする。
【００５０】
［マスク生成ルール］
・ＳｅｎｓｏｒＡに対しては、固定的なルールとして、常に時刻の１分以下を切り捨てるマスクを用いる
・ＳｅｎｓｏｒＢに対しては、時間帯によって変動するルールとして、データ量が少ないと想定される午前中は時刻の３０分以下を切り捨て、データ量が多いと想定される午後は時刻の１分以下を切り捨てるマスクを用いる
・ＳｅｎｓｏｒＣに対しては、データ流量（ある時間単位内に到着したデータの数）によって変動するルールとして、データ流量が１０件／分未満なら時刻の１０分以下を切り捨て、１０件／分以上なら時刻の１分以下を切り捨てるマスクを用いる。
【００５１】
まず、図４、図５を参照して、データ格納時にデータの格納先を決定する動作について、ＳｅｎｓｏｒＡ、ＳｅｎｓｏｒＢ、ＳｅｎｓｏｒＣの順で説明する。
【００５２】
図４は、データ格納時にデータの格納先を決定する動作の処理フローを示すフローチャートである。なお、図４に示す動作は、図３のステップＳ１−２〜Ｓ１−４に相当する。また、図５は、データ格納時におけるマスク生成処理の処理フローを示すフローチャートである。なお、図５に示すマスク生成処理は、図４のステップＳ２−２によって開始される。
【００５３】
［ＳｅｎｓｏｒＡのデータ格納］
今、データ格納要求時の入力情報として、（センサ識別子、時刻）＝（ＳｅｎｓｏｒＡ、２０１３／０２／１２／１０：１０：０２）を含むデータが、キー生成手段１０２に入力されたとする（図４のステップＳ２−１）。なお、入力される時刻はセンサが付与したものでも、受付ノード１０やその他の中継ノード等で付加されたものでもよい。また、時刻の粒度は、上記例より荒い場合も細かい場合も想定される。
【００５４】
キー生成手段１０２は、まずマスク生成手段１０１に、時刻に適用するマスクを要求して、該マスクを取得する（図４のステップＳ２−２）。
【００５５】
キー生成手段１０２がマスクの要求をすると、マスク生成手段１０１には、（センサ識別子、時刻）＝（ＳｅｎｓｏｒＡ、２０１３／０２／１２／１０：１０：０２）が入力される（図５のステップＳ３−１）。
【００５６】
マスク生成手段１０１は、マスク生成ルール１０１１に基づき、センサ識別子に対するマスクが動的な情報から生成されるものであるか否かを判定する（図５のステップＳ３−２）。本例では、センサ識別子ＳｅｎｓｏｒＡに対するマスクは、常に時刻の１分以下を切り捨てるマスクとして静的に決められているため、入力時刻に対して１分以下を切り捨てるデータ変換を行うマスクを生成し、処理結果とともにキー生成手段１０２に返却する（図５のステップＳ３−５）。
【００５７】
キー生成手段１０２では、マスク生成手段１０１からマスクを得ると、得たマスクを入力された時刻に適用する（図４のステップＳ２−３）。本例では、マスク適用によってマスク時刻「２０１３／０２／１２／１０：１０：００」を得る。
【００５８】
次いで、キー生成手段１０２は、元キーとマスク時刻とを結合し、新キーを生成する（図４のステップＳ２−４）。結合方法は、例えば、センサ識別子とマスク時刻を単純にバイト列として連結させる方法などが挙げられる。
【００５９】
次いで、宛先ノード計算手段１０３が、新キーを所定のハッシュ関数にかけることによって、宛先ノードを特定する（図４のステップＳ２−５，Ｓ２−６）。新キーから宛先ノードを特定する方法には、コンシステントハッシュ法などを用いることができる。
【００６０】
このような処理によって、センサ識別子と時刻とから宛先ノードを得る。本例によれば、以後（センサ識別子、時刻）＝（ＳｅｎｓｏｒＡ、２０１３／０２／１２／１０：１０：０３），（センサ識別子、時刻）＝（ＳｅｎｓｏｒＡ、２０１３／０２／１２／１０：１０：０４），・・・，（センサ識別子、時刻）＝（ＳｅｎｓｏｒＡ、２０１３／０２／１２／１０：１０：５９）を含むデータを受信した場合に、これらデータに対して同一の新キーおよび宛先ノードを得ることができる。このため、周辺時刻のデータを同じ宛先ノードに格納することができる。
【００６１】
また、時刻が２０１３／０２／１２／１０：１１：００以降のデータに関しては、異なる新キーおよび宛先ノードとなり、データ分散が行える。
【００６２】
［ＳｅｎｓｏｒＢのデータ格納］
次いで、元キーがＳｅｎｓｏｒＢの場合を説明する。今、データ格納要求時の入力情報として、（センサ識別子、時刻）＝（ＳｅｎｓｏｒＢ、２０１３／０２／１２／１０：１０：０２）を含むデータがキー生成手段１０２に入力されたとする（図４のステップＳ２−１）。
【００６３】
キー生成手段１０２は、ＳｅｎｓｏｒＡのときと同様、マスク生成手段１０１に時刻に適用するマスクを要求して、該マスクを取得する（図４のステップＳ２−２）。
【００６４】
本例では、マスク生成手段１０１には（センサ識別子、時刻）＝（ＳｅｎｓｏｒＢ、２０１３／０２／１２／１０：１０：０２）が入力される（図５のステップＳ３−１）。
【００６５】
マスク生成手段１０１は、ＳｅｎｓｏｒＡのときと同様、マスク生成ルール１０１１に基づき、センサ識別子に対するマスクが動的な情報から生成されるものであるか否かを判定する（図５のステップＳ３−２）。本例では、センサ識別子ＳｅｎｓｏｒＢに対するマスクは、入力時刻が午前か午後かというデータ格納時の時刻情報から分かる情報、すなわち静的な情報により決定される。入力時刻は午前であるため、マスク生成手段１０１は、入力時刻に対して３０分以下を切り捨てるデータ変換を行うマスクを生成し、処理結果とともにキー生成手段１０２に返却する（図５のステップＳ３−５）。
【００６６】
キー生成手段１０２では、マスク生成手段１０１からマスクを得ると、得たマスクを入力された時刻に適用する（図４のステップＳ２−３）。本例では、マスク適用によってマスク時刻「２０１３／０２／１２／１０：００：００」を得る。
【００６７】
以後は、ＳｅｎｓｏｒＡのデータ格納時の処理と同様である（図４のステップＳ２−４〜Ｓ２−６）。
【００６８】
このような処理によって、センサ識別子と時刻とから宛先ノードを得る。本例によれば、以後（センサ識別子、時刻）＝（ＳｅｎｓｏｒＢ、２０１３／０２／１２／１０：１０：０３），（センサ識別子、時刻）＝（ＳｅｎｓｏｒＢ、２０１３／０２／１２／１０：１０：０４），・・・，（センサ識別子、時刻）＝（ＳｅｎｓｏｒＢ、２０１３／０２／１２／１０：２９：５９）を含むデータを受信した場合に、これらデータに対して同一の新キーおよび宛先ノードを得ることができる。このため、周辺時刻のデータを同じ宛先ノードに格納することができる。
【００６９】
また、時刻が２０１３／０２／１２／１０：３０：００以降のデータに関しては、異なる新キーおよび宛先ノードとなり、データ分散が行える。
【００７０】
また、時刻が午後になれば、ＳｅｎｓｏｒＡの場合と同じように１分単位で新キーの値が変わるので、これにより１分単位でデータを分散させることができる。
【００７１】
［ＳｅｎｓｏｒＣのデータ格納］
次いで、元キーがＳｅｎｓｏｒＣの場合を説明する。今、データ格納要求時の入力情報として、（センサ識別子、時刻）＝（ＳｅｎｓｏｒＣ、２０１３／０２／１２／１０：１０：０２）を含むデータがキー生成手段１０２に入力されたとする（図４のステップＳ２−１）。
【００７２】
キー生成手段１０２は、ＳｅｎｓｏｒＡのときと同様、マスク生成手段１０１に時刻に適用するマスクを要求して、該マスクを取得する（図４のステップＳ２−２）。
【００７３】
本例では、マスク生成手段１０１には（センサ識別子、時刻）＝（ＳｅｎｓｏｒＣ、２０１３／０２／１２／１０：１０：０２）が入力される（図５のステップＳ３−１）。
【００７４】
マスク生成手段１０１は、ＳｅｎｓｏｒＡのときと同様、マスク生成ルール１０１１に基づき、センサ識別子に対するマスクが動的な情報から生成されるものであるか否かを判定する（図５のステップＳ３−２）。本例では、センサ識別子ＳｅｎｓｏｒＣに対するマスクは、データ流量という動的な情報で決定される。今、データ流量は１０件／分であったとする。すると、マスク生成手段１０１は、入力時刻に対して１０分以下を切り捨てるデータ変換を行うマスクを生成し、処理結果とともにキー生成手段１０２に返却する（図５のステップＳ３−３）。
【００７５】
なお、データ流量の計測方法は特に限定しないが、一例として、ＳｅｎｓｏｒＣからのデータを受け付ける受付ノード１０を固定しておき、データが到着する毎にデータ流量を計算する方法などが挙げられる。
【００７６】
また、本例では、マスク生成手段１０１は、センサ識別子、時刻、マスク値をマスク情報記憶手段１０４に記録する（図５のステップＳ３−４）。なお、マスク情報記憶手段１０４に記録する情報は必ずしも上記の情報である必要はない。データの取得時に、入力される元キーと時刻とから当該マスクを再現できる情報であればよい。例えば、本例の場合には、ルール識別子と時刻とマスク値の組や、センサ識別子と時刻とデータ流量の組を記憶してもよい。
【００７７】
キー生成手段１０２では、マスク生成手段１０１からマスクを得ると、得たマスクを入力された時刻に適用する（図４のステップＳ２−３）。本例では、マスク適用によってマスク時刻「２０１３／０２／１２／１０：１０：００」を得る。
【００７８】
以後は、ＳｅｎｓｏｒＡのデータ格納時の処理と同様である（図４のステップＳ２−４〜Ｓ２−６）。
【００７９】
このような処理によって、センサ識別子と時刻とから宛先ノードを得る。本例によれば、以後、データ流量が１０件／分未満のままであれば、（センサ識別子、時刻）＝（ＳｅｎｓｏｒＣ、２０１３／０２／１２／１０：１０：０３），（センサ識別子、時刻）＝（ＳｅｎｓｏｒＣ、２０１３／０２／１２／１０：１０：０４），・・・，（センサ識別子、時刻）＝（ＳｅｎｓｏｒＣ、２０１３／０２／１２／１０：０９：５９）を含むデータに対して同一の新キーおよび宛先ノードを得ることができる。また、データ流量が１０件／分以上になれば、それ以後データ流量が１０件／分未満に再度切り替わるまで、１分単位で新キーの値を変化させられる。このように本例によれば、データ流量が多ければ１分単位でデータを分散させ、データ流量が少なければ１０分単位でデータを分散させるといったデータ流量に応じてデータ分散させる時間単位を変化させることができる。これにより、時間毎にデータ流量が異なる場合であっても各サーバのデータ量の均一化が図れる。
【００８０】
以上のように、本実施形態によれば、近傍の時刻に発生したデータの格納先をまとめつつ、複数のデータサーバにデータを分散させて格納することができるだけでなく、マスク生成ルールに基づいて時刻に適用するマスクの値を変えられるので、データの取得パターンに応じて細かに分散の設定ができる。従って、センサ間や時間帯によってデータの発生量に偏りがある場合であっても、マスク生成ルールにおいて時間帯や他の因子に応じてマスクの値を変動させる設定を与えてやれば、偏りを平滑化できる。
【００８１】
次に、データ取得時にデータの格納先を決定する動作について、ＳｅｎｓｏｒＡ、ＳｅｎｓｏｒＢ、ＳｅｎｓｏｒＣの順で説明する。以下ではまず、取得対象とするデータが元キーと時刻とにより直接指定される場合のデータ取得動作を説明する。なお、取得対象とするデータが元キーと時刻とにより範囲指定される場合のデータ取得動作については後述する。
【００８２】
［直接指定のデータ取得］
図６は、直接指定によるデータ取得時におけるマスク生成処理の処理フローを示すフローチャートである。取得対象とするデータの時刻が直接指定された場合の、データの格納先を決定する動作は、マスク取得処理以外はデータ格納時と同じでよい。
【００８３】
［ＳｅｎｓｏｒＡのデータ取得］
今、データ取得要求時の入力情報として、（センサ識別子、時刻）＝（ＳｅｎｓｏｒＡ、２０１３／０２／１２／１０：１０：０２）が、キー生成手段１０２に入力されたとする（図４のステップＳ２−１）。なお、入力される時刻はデータ取得要求から得られるものとする。また、時刻の粒度は、上記例より荒い場合も細かい場合も想定される。
【００８４】
本例の場合、マスク生成手段１０１には、（センサ識別子、時刻）＝（ＳｅｎｓｏｒＡ、２０１３／０２／１２／１０：１０：０２）が入力される（図６のステップＳ４−１）。
【００８５】
マスク生成手段１０１は、マスク生成ルール１０１１に基づき、センサ識別子に対するマスクが動的な情報から生成されるものであるか否かを判定する（図６のステップＳ４−２）。本例では、センサ識別子ＳｅｎｓｏｒＡに対するマスクは、常に時刻の１分以下を切り捨てるマスクとして静的に決められている。このため、マスク生成手段１０１は、入力時刻に対して１分以下を切り捨てるデータ変換を行うマスクを生成し、処理結果とともにキー生成手段１０２に返却する（図６のステップＳ４−４）。
【００８６】
キー生成手段１０２では、マスク生成手段１０１からマスクを得ると、得たマスクを入力された時刻に適用する（図４のステップＳ２−３）。本例では、マスク適用によってマスク時刻「２０１３／０２／１２／１０：１０：００」を得る。
【００８７】
次いで、キー生成手段１０２は、データ格納時と同じ方法により元キーとマスク時刻とを結合して、新キーを生成する（図４のステップＳ２−４）。
【００８８】
次いで、宛先ノード計算手段１０３が、新キーを所定のハッシュ関数にかけることによって、宛先ノードを特定する（図４のステップＳ２−５，Ｓ２−６）。新キー値が同じであれば、本ステップで得る宛先ノードは、データ格納時に得る宛先ノードと同じである。
【００８９】
このような処理により、センサ識別子と時刻から、取得対象のデータを格納している宛先ノードを得ることができる。なお、本例で得られた宛先ノード（データサーバ２０）には、データ格納時に元キー「ＳｅｎｓｏｒＡ」および時刻「２０１３／０２／１２／１０：１０：００」〜「２０１３／０２／１２／１０：１０：５９」を指定したデータが格納されている可能性がある。本例では、宛先ノードとされたデータサーバ２０にアクセスする際に、入力された元キーと時刻の情報を指定することにより、所望のデータを得ることができる。
【００９０】
［ＳｅｎｓｏｒＢのデータ取得］
次いで、元キーがＳｅｎｓｏｒＢの場合を説明する。今、データ取得要求時の入力情報として、（センサ識別子、時刻）＝（ＳｅｎｓｏｒＢ、２０１３／０２／１２／１０：１０：０２）が、キー生成手段１０２に入力されたとする（図４のステップＳ２−１）。
【００９１】
本例の場合、マスク生成手段１０１には、（センサ識別子、時刻）＝（ＳｅｎｓｏｒＢ、２０１３／０２／１２／１０：１０：０２）が入力される（図６のステップＳ４−１）。
【００９２】
マスク生成手段１０１は、マスク生成ルール１０１１に基づき、センサ識別子に対するマスクが動的な情報から生成されるものであるか否かを判定する（図６のステップＳ４−２）。本例では、センサ識別子ＳｅｎｓｏｒＢに対するマスクは、入力時刻が午前か午後かという静的な情報により決定される。入力時刻は午前であるため、マスク生成手段１０１は、入力時刻に対して３０分以下を切り捨てるデータ変換を行うマスクを生成し、処理結果とともにキー生成手段１０２に返却する（図６のステップＳ４−４）。
【００９３】
キー生成手段１０２では、マスク生成手段１０１からマスクを得ると、得たマスクを入力された時刻に適用する（図４のステップＳ２−３）。本例では、マスク適用によってマスク時刻「２０１３／０２／１２／１０：００：００」を得る。
【００９４】
以後は、ＳｅｎｓｏｒＡのデータ取得時の処理と同様である（図４のステップＳ２−４〜Ｓ２−６）。
【００９５】
このような処理により、センサ識別子と時刻から、取得対象のデータを格納している宛先ノードを得ることができる。なお、本例で得られた宛先ノードには、データ格納時に元キー「ＳｅｎｓｏｒＢ」および時刻「２０１３／０２／１２／１０：００：００」〜「２０１３／０２／１２／１０：２９：５９」を指定したデータが格納されている可能性がある。本例では、宛先ノードとされたデータサーバ２０にアクセスする際に、入力された元キーと時刻の情報を指定することにより、所望のデータを得ることができる。
【００９６】
［ＳｅｎｓｏｒＣのデータ取得］
次いで、元キーがＳｅｎｓｏｒＣの場合を説明する。今、データ取得要求時の入力情報として、（センサ識別子、時刻）＝（ＳｅｎｓｏｒＣ、２０１３／０２／１２／１０：１０：０２）が、キー生成手段１０２に入力されたとする（図４のステップＳ２−１）。
【００９７】
本例の場合、マスク生成手段１０１には、（センサ識別子、時刻）＝（ＳｅｎｓｏｒＣ、２０１３／０２／１２／１０：１０：０２）が入力される（図６のステップＳ４−１）。
【００９８】
マスク生成手段１０１は、マスク生成ルール１０１１に基づき、センサ識別子に対するマスクが動的な情報から生成されるものであるか否かを判定する（図６のステップＳ４−２）。本例では、センサ識別子ＳｅｎｓｏｒＣに対するマスクは、データ流量という動的な情報により決定される。このため、マスク生成手段１０１はマスク情報記憶手段１０４から入力された元キーおよび時刻の組をキーにしてデータ格納時に用いられたマスクを取得し、処理結果とともにキー生成手段１０２に返却する（図６のステップＳ４−３）。本例では、上述した（ＳｅｎｓｏｒＣ、２０１３／０２／１２／１０：１０：０２）のデータ格納時に生成されたマスクの情報が記憶されているものとする。マスク生成手段１０１は、元キーと時刻の組から当該マスクの情報を取得し、処理結果とともにキー生成手段１０２に返却すればよい。
【００９９】
このとき、マスク生成手段１０１は、マスク情報記憶手段１０４に同じ元キーで同じ時刻を指定したデータに用いたマスクの情報がなければ、該当データなしを示す処理結果を返却してもよい。また、マスク生成手段１０１は、そのような場合に、設定により、近隣の時刻を指定したデータに用いたマスクの情報を返すようにしてもよい。本例では、マスク情報記憶手段１０４から、データ格納時に（ＳｅｎｓｏｒＣ、２０１３／０２／１２／１０：１０：０２）を含むデータに対して用いられたマスクの情報を取得した結果、入力時刻に対して１０分以下を切り捨てるデータ変換を行うマスクが提供される。
【０１００】
キー生成手段１０２では、マスク生成手段１０１からマスクを得ると、得たマスクを入力された時刻に適用する（図４のステップＳ２−３）。本例では、マスク適用によってマスク時刻「２０１３／０２／１２／１０：１０：００」を得る。
【０１０１】
以後は、ＳｅｎｓｏｒＡのデータ取得時の処理と同様である（図４のステップＳ２−４〜Ｓ２−６）。
【０１０２】
このような処理により、センサ識別子と時刻から、取得対象のデータを格納している宛先ノードを得ることができる。なお、本例で得られた宛先ノードには、データ格納時のデータ流量に応じて、元キー「ＳｅｎｓｏｒＣ」および時刻「２０１３／０２／１２／１０：１０：００」〜「２０１３／０２／１２／１０：１０：５９」を指定したデータ、または、データ格納時に元キー「ＳｅｎｓｏｒＣ」および時刻「２０１３／０２／１２／１０：１０：００」〜「２０１３／０２／１２／１０：１９：５９」を指定したデータが格納されている可能性がある。本例では、宛先ノードとされたデータサーバ２０にアクセスする際に、入力された元キーと時刻の情報を指定することにより、所望のデータを得ることができる。
【０１０３】
［範囲指定のデータ取得］
図７は、範囲指定によるデータ取得時にデータの格納先を決定する動作の一例を示すフローチャートである。また、図８は、範囲指定によるデータ取得時におけるマスク生成処理の処理フローを示すフローチャートである。なお、図８に示すマスク生成処理は、図７のステップＳ５−２によって開始される。以下、範囲指定によるデータ取得時におけるデータの格納先を決定する動作について、ＳｅｎｓｏｒＡを例に説明する。
【０１０４】
［ＳｅｎｓｏｒＡの範囲指定のデータ取得］
今、ある受付ノード１０に、センサ識別子＝ＳｅｎｓｏｒＡのデータで、時刻が２０１３／０２／１２／１０：１０：００から２０１３／０２／１２／１１：５９：５９の間に含まれるデータに対する範囲データ取得要求があったとする。
【０１０５】
このような場合、キー生成手段１０２には、データ取得要求時の入力情報として、例えば（センサ識別子、時刻）＝（ＳｅｎｓｏｒＡ、２０１３／０２／１２／１０：１０：００）〜（ＳｅｎｓｏｒＡ、２０１３／０２／１２／１１：５９：５９）が入力される（図７のステップＳ５−１）。
【０１０６】
キー生成手段１０２は、まずマスク生成手段１０１に、指定された時刻範囲に適用するマスク群を要求して、該マスク群を得る（図７のステップＳ５−２）。
【０１０７】
キー生成手段１０２がマスク群の要求をすると、マスク生成手段１０１には、（センサ識別子、時刻）＝（ＳｅｎｓｏｒＡ、２０１３／０２／１２／１０：１０：００〜２０１３／０２／１２／１１：５９：５９）が入力される（図８のステップＳ６−１）。
【０１０８】
マスク生成手段１０１は、マスク生成ルール１０１１に基づき、センサ識別子に対するマスクが動的な情報から生成されるものであるか否かを判定する（図８のステップＳ６−２）。本例では、センサ識別子ＳｅｎｓｏｒＡに対するマスクは、常に時刻の１分以下を切り捨てるマスクとして静的に決められている。このため、マスク生成手段１０１は、入力時刻に対して１分以下を切り捨てるデータ変換を行うマスクを生成し、処理結果とともにキー生成手段１０２に返却する（図８のステップＳ６−４）。
【０１０９】
ここでは、時刻範囲に含まれる各時刻に対して適用されうる全てのマスクを返却する。なお、本例では、入力された時刻範囲に含まれる各時刻に対して同一のマスクを適用すればよいため、マスク生成手段１０１は、１つのマスクを返却すればよい。また、例えば午前／午後のようにマスクの適用先とされる時間範囲が決まっている場合には適用先とされる時間範囲の情報とともにマスクを返却すればよい。
【０１１０】
キー生成手段１０２では、マスク生成手段１０１からマスク群を得ると、得たマスク群を用いて境界マスク時刻を取得する（図７のステップＳ５−３）。ここで、境界マスク時刻を、提供されたマスク群を時刻範囲内のすべての時刻に対して適用した際に得られるマスク時刻群のうち、重複を排除したものと定義する。本例では、常に入力時刻に対して１分以下を切り捨てるマスクを得るため、境界マスク時刻として、２０１３／０２／１２／１０：１０：００から２０１３／０２／１２／１１：５９：００までの１分おきの時刻であって計１１０通りの時刻を得る。
【０１１１】
次いで、キー生成手段１０２は、データ格納時と同じ方法により元キーと各境界マスク時刻とを結合して、新キー群を生成する（図７のステップＳ５−４）。本例では、１１０通りの境界マスク時刻が得られることから、１１０通りの新キーが生成される。
【０１１２】
次いで、宛先ノード計算手段１０３が、新キー群を各々所定のハッシュ関数にかけることによって、宛先ノード群を特定する（図７のステップＳ５−５〜Ｓ５−６）。新キーから宛先ノードの特定方法は、データ格納時と同様でよい。
【０１１３】
このような処理によって、センサ識別子と時刻範囲とから、取得対象のデータを格納している宛先ノード群を得る。受付ノード１０は、得られた宛先ノード群に含まれる各データサーバ２０に対して、指定された元キーおよび時刻範囲を指定したデータ取得要求を行えばよい。そのようにすれば、所望のデータを効率よく得ることができる。なぜなら、同じデータサーバ２０に格納されている同じセンサから近傍時刻に発生したデータをまとめて取得することができるからである。
【０１１４】
以上、例としてＳｅｎｓｏｒＡの範囲データ取得について説明したが、図７および図８に示した処理手順により、マスクルールの異なるＳｅｎｓｏｒＢやＳｅｎｓｏｒＣに対する範囲データ取得も同様に行える。
【０１１５】
［ＳｅｎｓｏｒＢの範囲指定のデータ取得］
なお、ＳｅｎｓｏｒＢの場合、時刻が２０１３／０２／１２／１０：１０：００から２０１３／０２／１２／１１：５９：５９の間に含まれるデータに対する範囲データ取得要求に対して、マスク生成手段１０１では、例えばマスク群として以下に示すようなマスクの情報を提供すればよい。すなわち、範囲指定に含まれる時刻は全て午前であるので、３０分以下を切り捨てるデータ変換を行うマスクを返却すればよい。
【０１１６】
また、キー生成手段１０２では、そのようなマスク群を得て、以下に示すような境界マスク時刻を得ればよい。すなわち、入力時刻に対して３０分以下を切り捨てるマスクを得るので、境界マスク時刻として、２０１３／０２／１２／１０：１０：００から２０１３／０２／１２／１１：３０：００までの３０分おきの時刻であって計４通りの時刻を得る。
【０１１７】
なお、仮に時刻範囲が２０１３／０２／１２／１０：１０：００から２０１３／０２／１２／１３：５９：５９であった場合には、マスク生成手段１０１では、２０１３／０２／１２／１０：１０：００から２０１３／０２／１２／１１：５９：５９までの午前の時刻に対して３０分以下を切り捨てるデータ変換を行うマスクと、２０１３／０２／１２／１２：００：００から２０１３／０２／１２／１３：５９：５９までの午後の時刻に対して１分以下を切り捨てるデータ変換を行うマスクとを返却すればよい。
【０１１８】
また、キー生成手段１０２では、そのようなマスク群を得て、以下に示すような境界マスク時刻を得ればよい。すなわち、境界マスク時刻として、２０１３／０２／１２／１０：１０：００から２０１３／０２／１２／１１：３０：００までの３０分おき時刻であって４通りの時刻と、２０１３／０２／１２／１２：００：００から２０１３／０２／１２／１３：５９：００までの１分おきの時刻であって１２０通りの時刻とを併せた合計１２４通りの時刻を得ればよい。
【０１１９】
［ＳｅｎｓｏｒＣの範囲指定のデータ取得］
なお、ＳｅｎｓｏｒＣの場合、マスク生成手段１０１は、例えばマスク群として以下に示すような処理を行って該当するマスクの情報を提供すればよい。すなわち、マスク生成手段１０１は、マスク情報記憶手段１０４から入力された元キーおよび範囲指定に含まれる各時刻の組に対してデータ格納時に用いられたマスクを検索し、得られたマスクの情報から特定したマスクと、該マスクが適用される時刻の情報とを対応付けたものを返却すればよい（図８のステップＳ６−３）。なお、適用先の時刻が決まっている場合には、適用先の時刻の情報とともにマスクの情報を返却してもよい。
【０１２０】
例えば、マスク生成手段１０１は、マスク情報記憶手段１０４から、センサ識別子がＳｅｎｓｏｒＣかつ、時刻が２０１３／０２／１２／１０：１０：００〜２０１３／０２／１２／１１：２９：５９のデータに対して、データ流量が１０件／分未満であったため、時刻の１０分以下を切り捨てるデータ変換を行うマスクを生成した旨の情報を得るとともに、センサ識別子がＳｅｎｓｏｒＣかつ、時刻が２０１３／０２／１２／１１：３０：００〜２０１３／０２／１２／１１：５９：５９のデータに対して、データ流量が１０件／分以上であったため、時刻の１分以下を切り捨てるデータ変換を行うマスクを生成した旨の情報を得たとする。そのような場合には、マスク生成手段１０１は、２０１３／０２／１２／１０：１０：００〜２０１３／０２／１２／１１：２９：５９の間の時刻に対して、１０分以下を切り捨てるデータ変換を行うマスクと、２０１３／０２／１２／１１：３０：００〜２０１３／０２／１２／１１：５９：５９の間の時刻に対して、１分以下を切り捨てるデータ変換を行うマスクとを返却してもよい。なお、データが発生していない時刻があればマスクの適用先とする時刻から除外すればよい。
【０１２１】
キー生成手段１０２では、そのようなマスク群を得て、以下に示すような境界マスク時刻を得ればよい。すなわち、本例では、境界マスク時刻として、２０１３／０２／１２／１０：１０：００から２０１３／０２／１２／１１：２０：００までの１０分おきの時刻であって計８通りの時刻と、２０１３／０２／１２／１１：３０：００から２０１３／０２／１２／１１：５９：００までの１分おきの時刻であって計３０通りの時刻とを併せた合計３８通りの時刻を得ればよい。
【０１２２】
以上のように、本実施形態によれば、サーバあたりの保持データ量を均一化できるとともに、ある元キーを含む特定の時刻周辺のまとまったデータをアクセスする際に、サーバへのアクセス回数を減らすことができるので、データの格納先の分散性能と、データ取得時のアクセスの効率化とを同時に満足できる。
【０１２３】
なお、上記説明では、センサ識別子、時間帯、データ流量に応じてマスクを変動させる例を示したが、マスクの変動例はこの限りではない。例えば、システムの構成情報に含まれるデータサーバ２０の台数に応じてマスクを変動させてもよい。例えば、データサーバ２０が１０台の時と１００台の時とがあった場合に、１００台の時にはより頻繁に格納先を切り替えられるようにマスク時刻の時間幅を狭く、すなわち切り捨てる時間の間隔を短くするような例が挙げられる。
【０１２４】
また、例えばセンサ種別に応じてマスクを変動させてもよい。例えば、頻繁にデータを生成する加速度センサ等からのデータであれば、マスク時刻の時間幅を狭くして、より早く格納先のデータサーバ２０が切り替わるようにし、データをあまり生成しない温度センサ等からのデータであれば、マスク時刻の時間幅を広くして、１つのデータサーバ２０に格納されるデータ量を多くするなどの例が挙げられる。
【０１２５】
また、例えばセンサの設置場所に応じてマスクを変動させてもよい。例えば、人を感知するセンサなどの場合、頻繁にデータを生成する街中等に設置されたセンサからのデータであれば、マスク時刻の時間幅を狭くして、より早く格納先のデータサーバ２０が切り替わるようにし、データをあまり生成しない郊外等に設置されたセンサからのデータであれば、マスク時刻の時間幅を広くして、１つのデータサーバ２０に格納されるデータ量を多くするなどの例が挙げられる。
【０１２６】
実施形態２．
次に、本発明の第２の実施形態について図面を参照して説明する。図９は、本発明の第２の実施形態のデータ管理システムの構成例を示すブロック図である。図９に示すデータ管理システムは、図１に示す第１の実施形態に比べて、ロードバランサ５０を備えている点が異なる。なお、図９には、１つのロードバランサ５０を備える例が示されているが、ロードバランサ５０は２つ以上あってもよい。
【０１２７】
多量のセンサデータを取り扱うためには、受付ノード１０へのアクセスも分散させるのが好ましい。本実施形態では、ロードバランサ５０がその役割を担う。すなわち、外部から受付ノード１０へのアクセスを分散させる。
【０１２８】
ロードバランサ５０は、例えば、ラウンドロビンでアクセス先とする受付ノード１０を決定することにより、受付ノード１０へのアクセスを分散させてもよい。例えば、ロードバランサ５０は、格納要求ノードや取得要求ノードからのアクセスを受け付け、当該アクセスの要求元ノードに、アクセス先として決定した受付ノード１０の情報を返す、または、受け付けたアクセスを、アクセス先として決定した受付ノード１０に中継するなどの処理を行う。
【０１２９】
本実施形態では、各受付ノード１０間で、データを処理するためのマスク情報を共有する仕組みが必要となる。図１０は、本実施形態の受付ノード１０の機能構成例を示すブロック図である。図１０に示すように、本実施形態の受付ノード１０は、さらに、マスク情報共有手段１０５を備えていてもよい。
【０１３０】
マスク情報共有手段１０５は、他の受付ノード１０との間で、データを処理するためのマスク情報を共有するための処理を行う。マスク情報共有手段１０５は、例えば、他の受付ノード１０やシステムが備える共有データベース（図示省略）に問い合わせをして、自ノードが保持していないマスク生成ルールや動的な情報に応じて生成したマスクの情報を取得する。
【０１３１】
マスク生成手段１０１は、必要に応じてマスク情報共有手段１０５を介して、マスク生成ルールや動的な情報に応じて生成したマスクの情報を取得する。なお、マスク情報共有手段１０５は、さらに定期的に周りの受付ノード１０に問い合わせるなどして、マスク生成ルールおよびマスク情報記憶手段１０４に記憶されるマスクの情報を更新してもよい。
【０１３２】
また、上述のＳｅｎｓｏｒＣからのデータのように、動的な情報に基づいて決定されるマスクを用いる場合、そのようなデータを特定の受付ノード１０に割り当てる機能をロードバランサ５０が備えるか、または受付ノード１０間でデータ流量などの動的な情報を共有する仕組みを有するものとする。なお、ロードバランサ５０が所定時間内のデータの発生回数などを計測して共有データベースに登録し、各受付ノード１０が共有データベースに登録されている情報を基に各々データ流量を計算してもよい。
【０１３３】
他の点に関しては第１の実施形態と同様である。
【０１３４】
以上のように、本実施形態によれば、受付ノード１０へのアクセスも分散できるため、第１の実施形態に比べてさらに効率よくデータを処理できる。
【０１３５】
次に、本発明による受付ノードの最小構成について説明する。図１１は、本発明による
受付ノードの最小の構成例を示すブロック図である。
【０１３６】
図１１に示すように、本発明による受付ノードは、最小の構成要素として、キー生成手段１００１と、宛先ノード計算手段１００２とを備える。
【０１３７】
図１１に示す最小構成の受付ノードでは、キー生成手段１００１（例えば、キー生成手段１０１）は、指定されたデータのキーと、指定された時刻にマスクを適用して得られるマスク時刻とを用いて、新しいキーを生成する。
【０１３８】
また、宛先ノード計算手段１００２（例えば、宛先ノード計算手段１０３）は、キー生成手段１００１によって生成された新しいキーを用いて、データの格納先のデータサーバを決定する。
【０１３９】
従って、最小構成の受付ノードによれば、データの元キーと、時刻情報よりもデータの粒度の小さいマスク時刻とを用いて新たなキーを生成するので、時間に依りつつも様々な時間幅や時間のパターンで格納先のサーバを切り替えることができ、それによりデータの格納先の分散性能と、データ取得時のアクセス性能とを同時に満足させることができる。
【０１４０】
また、図１２は、本発明によるデータ管理システムの最小の構成例を示すブロック図である。図１２に示すように、本発明によるデータ管理システムは、最小の構成要素として、１つ以上のデータサーバ２００と、１つ以上の受付ノード１００とを備える。
【０１４１】
図１３に示す最小構成のデータ管理システムでは、データサーバ２００は、データを記憶するデータ記憶手段を含む。
【０１４２】
また、受付ノード１００は、キー生成手段１００１と、宛先ノード計算手段１００２とを含む。なお、キー生成手段１００１および宛先ノード計算手段１００２は、上述のものと同じでよい。
【０１４３】
従って、最小構成のデータ管理システムによれば、受付ノード１００がデータの元キーと、時刻情報よりもデータの粒度の小さいマスク時刻とを用いて新たなキーを生成するので、時間に依りつつも様々な時間幅や時間のパターンで格納先のサーバを切り替えることができ、それによりデータの格納先の分散性能と、データ取得時のアクセス性能とを同時に満足させることができる。
【０１４４】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１４５】
また、上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１４６】
（付記１）データ格納要求またはデータ取得要求を受け付けると、データの格納先のデータサーバを決定する受付ノードであって、指定されたデータのキーと、指定された時刻にマスクを適用して得られるマスク時刻とを用いて、新しいキーを生成するキー生成手段と、キー生成手段によって生成された新しいキーを用いて、データの格納先のデータサーバを決定する宛先ノード計算手段とを備えたことを特徴とする受付ノード。
【０１４７】
（付記２）データのキーと時刻とが入力されると、時刻に適用させるマスクを生成するマスク生成手段を備え、マスク生成手段は、所定の情報に対応づけて、生成するマスクに関する情報を規定した情報であるマスク生成ルールを保持し、マスク生成ルールに基づいて、時刻に適用させるマスクを生成する付記１に記載の受付ノード。
【０１４８】
（付記３）マスク生成ルールは、データのキー値に関する情報と、生成するマスクに関する情報とを対応づけた情報を含み、マスク生成手段は、マスク生成ルールに基づいて、データのキー値に応じて異なるマスクを生成する付記２に記載の受付ノード。
【０１４９】
（付記４）マスク生成ルールは、入力される情報から特定される静的な情報に関する情報と、生成するマスクに関する情報とを対応づけた情報を含み、マスク生成手段は、マスク生成ルールに基づいて、入力された情報から特定した静的な情報に応じて異なるマスクを生成する付記２または付記３に記載の受付ノード。
【０１５０】
（付記５）マスク生成ルールは、運用中に内容が変動する情報であって入力される情報から特定できない動的な情報に関する情報と、生成するマスクに関する情報とを対応づけた情報を含み、マスク生成手段は、マスク生成ルールに基づいて、動的な情報に応じて異なるマスクを生成する付記２から付記４のいずれかに記載の受付ノード。
【０１５１】
（付記６）生成したマスクに関する情報を記憶するマスク情報記憶手段を備え、マスク生成手段は、データ格納要求時に、動的な情報に応じて異なるマスクを生成した場合には、マスク情報記憶手段に、入力されたデータのキーと時刻とから生成したマスクを再現できる情報を記憶させ、マスク生成手段は、データ取得要求時に、生成すべきマスクが動的な情報に応じて異なるマスクである場合には、マスク情報記憶手段に記憶されている情報に基づいて、入力された時刻に対して適用させるマスクを生成する付記５に記載の受付ノード。
【０１５２】
（付記７）宛先ノード計算手段は、キー生成手段によって生成された新しいキーを所定のハッシュ関数に入力して得られたハッシュ値と、各データサーバの識別子を所定のハッシュ関数に入力して得られたハッシュ値とを比較して、所定の割り当て方法によりデータの格納先のデータサーバを決定する付記１から付記６のいずれかに記載の受付ノード。
【０１５３】
（付記８）データを記憶するデータ記憶手段を備えた１つ以上のデータサーバと、１つ以上の受付ノードとを備え、各受付ノードは、指定されたデータのキーと、指定された時刻にマスクを適用して得られるマスク時刻とを用いて、新しいキーを生成するキー生成手段と、キー生成手段によって生成された新しいキーを用いて、データの格納先のデータサーバを特定する宛先ノード計算手段とを含むデータ管理システム。
【０１５４】
（付記９）受付ノードが、データ格納要求またはデータ取得要求を受け付けると、指定されたデータのキーと、指定された時刻にマスクを適用して得られるマスク時刻とを用いて、新しいキーを生成し、生成された新しいキーを用いて、データの格納先のデータサーバを特定することを特徴とするデータ管理方法。
【０１５５】
（付記１０）受付ノードが、予め所定の情報に対応づけて、生成するマスクに関する情報を規定した情報であるマスク生成ルールを保持しておき、データのキーと時刻とが入力されると、マスク生成ルールに基づいて、時刻に適用させるマスクを生成し、生成されたマスクを指定された時刻に適用してマスク時刻を得る付記９に記載のデータ管理方法。
【０１５６】
（付記１１）マスク生成ルールには、データのキー値に関する情報と、生成するマスクに関する情報とを対応づけた情報が含まれており、受付ノードが、マスク生成ルールに基づいて、データのキー値に応じて異なるマスクを生成する付記１０に記載のデータ管理方法。
【０１５７】
（付記１２）マスク生成ルールには、入力される情報から特定される静的な情報に関する情報と、生成するマスクに関する情報とを対応づけた情報が含まれており、受付ノードが、マスク生成ルールに基づいて、入力された情報から特定した静的な情報に応じて異なるマスクを生成する付記１０または付記１１に記載のデータ管理方法。
【０１５８】
（付記１３）マスク生成ルールには、運用中に内容が変動する情報であって入力される情報から特定できない動的な情報に関する情報と、生成するマスクに関する情報とを対応づけた情報が含まれており、受付ノードが、マスク生成ルールに基づいて、動的な情報に応じて異なるマスクを生成する付記１０から付記１２のいずれかに記載のデータ管理方法。
【０１５９】
（付記１４）受付ノードが、データ格納要求時に、動的な情報に応じて異なるマスクを生成した場合には、所定のマスク情報記憶手段に、入力されたデータのキーと時刻とから生成したマスクを再現できる情報を記憶させ、データ取得要求時に、生成すべきマスクが動的な情報に応じて異なるマスクである場合には、マスク情報記憶手段に記憶されている情報に基づいて、入力された時刻に対して適用させるマスクを生成する付記１３に記載のデータ管理方法。
【０１６０】
（付記１５）受付ノードが、キー生成手段によって生成された新しいキーを所定のハッシュ関数に入力して得られたハッシュ値と、各データサーバの識別子を所定のハッシュ関数に入力して得られたハッシュ値とを比較して、所定の割り当て方法によりデータの格納先のデータサーバを決定する付記９から付記１４のいずれかに記載のデータ管理方法。
【０１６１】
（付記１６）コンピュータに、指定されたデータのキーと、指定された時刻にマスクを適用して得られるマスク時刻とを用いて、新しいキーを生成するキー生成処理、およびキー生成処理で生成された新しいキーを用いて、データの格納先のデータサーバを特定する宛先ノード計算処理を実行させるためのデータ管理用プログラム。
【０１６２】
（付記１７）コンピュータに、データのキーと時刻とが入力されると、時刻に適用させるマスクを生成するマスク生成処理を実行させ、マスク生成処理で、所定の情報に対応づけて、生成するマスクに関する情報を規定した情報であるマスク生成ルールを保持し、マスク生成ルールに基づいて、時刻に適用させるマスクを生成させる付記１６に記載のデータ管理用プログラム。
【０１６３】
（付記１８）マスク生成ルールは、データのキー値に関する情報と、生成するマスクに関する情報とを対応づけた情報を含み、コンピュータに、マスク生成処理で、マスク生成ルールに基づいて、データのキー値に応じて異なるマスクを生成させる付記１７に記載のデータ管理用プログラム。
【０１６４】
（付記１９）マスク生成ルールは、入力される情報から特定される静的な情報に関する情報と、生成するマスクに関する情報とを対応づけた情報を含み、コンピュータに、マスク生成処理で、マスク生成ルールに基づいて、入力された情報から特定した静的な情報に応じて異なるマスクを生成させる付記１７または付記１８に記載のデータ管理用プログラム。
【０１６５】
（付記２０）マスク生成ルールは、運用中に内容が変動する情報であって入力される情報から特定できない動的な情報に関する情報と、生成するマスクに関する情報とを対応づけた情報を含み、コンピュータに、マスク生成処理で、マスク生成ルールに基づいて、動的な情報に応じて異なるマスクを生成させる付記１７から付記１９のいずれかに記載のデータ管理用プログラム。
【０１６６】
（付記２１）コンピュータに、マスク生成処理で、データ格納要求時に、動的な情報に応じて異なるマスクを生成した場合には、所定のマスク情報記憶手段に、入力されたデータのキーと時刻とから生成したマスクを再現できる情報を記憶させ、データ取得要求時に、生成すべきマスクが動的な情報に応じて異なるマスクである場合には、所定のマスク情報記憶手段に記憶されている情報に基づいて、入力された時刻に対して適用させるマスクを生成させる付記２０に記載のデータ管理用プログラム。
【０１６７】
（付記２２）コンピュータに、宛先ノード計算処理で、生成された新しいキーを所定のハッシュ関数に入力して得られたハッシュ値と、各データサーバの識別子を所定のハッシュ関数に入力して得られたハッシュ値とを比較して、所定の割り当て方法によりデータの格納先のデータサーバを決定させる付記１６から付記２１のいずれかに記載のデータ管理用プログラム。
【０１６８】
この出願は、２０１３年６月１４日に出願された日本特許出願２０１３−１２５５５０を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【０１６９】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用の可能性】
【０１７０】
本発明は、センサデータに限らず、多量に発生するデータを効率よく分散化させる用途に好適に適用可能である。
【符号の説明】
【０１７１】
１０、１００  受付ノード
１０１  マスク生成手段
１０１１  マスク生成ルール
１０２、１００１  キー生成手段
１０３、１００２  宛先ノード計算手段
１０４  マスク情報記憶手段
１０５  マスク情報共有手段
２０、２００  データサーバ
２０１、２００１  データ記憶手段
３０  センサ
４０  分析アプリケーション
５０  ロードバランサ
【図１】
2014199553.tif 000003
【図２】
2014199553.tif 000004
【図３】
2014199553.tif 000005
【図４】
2014199553.tif 000006
【図５】
2014199553.tif 000007
【図６】
2014199553.tif 000008
【図７】
2014199553.tif 000009
【図８】
2014199553.tif 000010
【図９】
2014199553.tif 000011
【図１０】
2014199553.tif 000012
【図１１】
2014199553.tif 000013
【図１２】
2014199553.tif 000014
【国際調査報告】
2014199553.tif 000015
2014199553.tif 000016
2014199553.tif 000017
2014199553.tif 000018