(57)【要約】  複数のデータ記憶ノードにオブジェクトデータを均一に分散して格納するとともに、オブジェクトデータの特徴に応じてオブジェクトデータを一部のデータ記憶ノードに偏在させることを課題とする。複数のオブジェクトデータは、それぞれ、データ座標によって特徴付けられるとともにデータ識別子によって一意に識別され、複数のデータ記憶ノードは、それぞれ、データ座標と同一の空間におけるノード座標を割り当てられ、複数のオブジェクトデータは、オブジェクトデータのデータ座標からの距離が相対的に短いノード座標を割り当てられたデータ記憶ノードを複数のデータ記憶ノードの中から第１のデータ記憶ノードとして複数選択した後、複数の第１のデータ記憶ノードの中からオブジェクトデータのデータ識別子に基づいて決定したデータ記憶ノードに、それぞれ記憶される。（図１）
2012124178.tif 000002
【特許請求の範囲】
【請求項１】
複数のオブジェクトデータを分散して記憶する複数のデータ記憶ノードを備え、
前記複数のオブジェクトデータは、それぞれ、データ座標によって特徴付けられるとともにデータ識別子によって一意に識別され、
前記複数のデータ記憶ノードは、それぞれ、前記データ座標と同一の空間におけるノード座標を割り当てられ、
前記複数のオブジェクトデータは、オブジェクトデータを特徴付けるデータ座標からの距離が相対的に短いノード座標を割り当てられたデータ記憶ノードを前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして複数選択した後、該複数の第１のデータ記憶ノードの中から該オブジェクトデータを識別するデータ識別子に基づいて決定したデータ記憶ノードに、それぞれ記憶されることを特徴とする分散記憶システム。
【請求項２】
前記複数のオブジェクトデータのそれぞれを特徴付けるデータ座標、および、前記複数のデータ記憶ノードのそれぞれに割り当てられたノード座標は、前記複数のオブジェクトデータを定量的に評価する複数の評価軸を座標軸とするユークリッド空間における座標であることを特徴とする、請求項１に記載の分散記憶システム。
【請求項３】
オブジェクトデータからの距離が所定の距離以内のノード座標を割り当てられたデータ記憶ノードを前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして複数選択することを特徴とする、請求項１または２に記載の分散記憶システム。
【請求項４】
オブジェクトデータからの距離が短いノード座標を割り当てられたデータ記憶ノードを該距離の短いものから順に所定の数だけ前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして選択することを特徴とする、請求項１ないし３のいずれか１項に記載の分散記憶システム。
【請求項５】
オブジェクトデータを識別するデータ識別子をシードとして生成した複数の擬似乱数を前記複数の第１のデータ記憶ノードのそれぞれに割り当てるとともに、該オブジェクトデータのデータ座標と前記複数の第１のデータ記憶ノードのそれぞれに割り当てられたノード座標との距離に応じて算出されたウェイトに、割り当てられた擬似乱数を掛け合わせた値が最大のデータ記憶ノードを前記複数の第１のデータ記憶ノードの中から抽出し、抽出したデータ記憶ノードを該オブジェクトデータを格納すべきデータ記憶ノードとして決定することを特徴とする、請求項１ないし４のいずれか１項に記載の分散記憶システム。
【請求項６】
前記ウェイトは、前記複数のオブジェクトデータのそれぞれを特徴付けるデータ座標と、前記複数のデータ記憶ノードのそれぞれに割り当てられたノード座標との距離が短くなるに従って増大することを特徴とする、請求項５に記載の分散記憶システム。
【請求項７】
前記複数のデータ記憶ノードは、それぞれ、前記複数のオブジェクトデータを特徴付けるデータ座標の分布に応じてノード座標が割り当てられていることを特徴とする、請求項１ないし６のいずれか１項に記載の分散記憶システム。
【請求項８】
前記複数のデータ記憶ノードにオブジェクトデータを書き込むとともに、前記複数のデータ記憶ノードに記憶されたオブジェクトデータを読み出すクライアントノードをさらに備えていることを特徴とする、請求項１ないし７のいずれか１項に記載の分散記憶システム。
【請求項９】
前記クライアントノードは、オブジェクトデータを特徴付けるデータ座標からの距離が相対的に短いノード座標を割り当てられたデータ記憶ノードを前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして複数選択するとともに、該複数の第１のデータ記憶ノードの中から該オブジェクトデータのデータ識別子に基づいて決定したデータ記憶ノードに、該オブジェクトデータを書き込むことを特徴とする、請求項８に記載の分散記憶システム。
【請求項１０】
前記クライアントノードは、オブジェクトデータを特徴付けるデータ座標からの距離が相対的に短いノード座標を割り当てられたデータ記憶ノードを前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして複数選択するとともに、選択した複数の第１のデータ記憶ノードに対して該オブジェクトデータの読み出し命令を送出することを特徴とする、請求項８または９に記載の分散記憶システム。
【請求項１１】
前記クライアントノードは、オブジェクトデータを特徴付けるデータ座標からの距離が相対的に短いノード座標を割り当てられたデータ記憶ノードを前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして複数選択するとともに、該複数の第１のデータ記憶ノードの中から該オブジェクトデータを識別するデータ識別子に基づいて決定したデータ記憶ノードに対して、該オブジェクトデータの読み出し命令を送出することを特徴とする、請求項８または９に記載の分散記憶システム。
【請求項１２】
データ座標によって特徴付けられるとともにデータ識別子によって一意に識別される複数のオブジェクトデータを分散して記憶する分散記憶方法であって、
前記データ座標と同一の空間におけるノード座標を複数のデータ記憶ノードのそれぞれに割り当てる工程と、
前記複数のオブジェクトデータのそれぞれを特徴付けるデータ座標からの距離が相対的に短いノード座標を割り当てられたデータ記憶ノードを、前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして複数選択する工程と、
前記複数の第１のデータ記憶ノードの中から前記複数のオブジェクトデータのそれぞれを識別するデータ識別子に基づいて決定したデータ記憶ノードに、該オブジェクトデータを記憶させる工程と、を含むことを特徴とする分散記憶方法。
【請求項１３】
前記複数のオブジェクトデータのそれぞれを特徴付けるデータ座標、および、前記複数のデータ記憶ノードのそれぞれに割り当てられたノード座標は、前記複数のオブジェクトデータを定量的に評価する複数の評価軸を座標軸とするユークリッド空間における座標であることを特徴とする、請求項１２に記載の分散記憶方法。
【請求項１４】
オブジェクトデータからの距離が所定の距離以内のノード座標を割り当てられたデータ記憶ノードを前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして複数選択する工程を含むことを特徴とする、請求項１２または１３に記載の分散記憶方法。
【請求項１５】
オブジェクトデータからの距離が短いノード座標を割り当てられたデータ記憶ノードを該距離の短いものから順に所定の数だけ前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして選択する工程を含むことを特徴とする、請求項１２ないし１４のいずれか１項に記載の分散記憶方法。
【請求項１６】
オブジェクトデータのデータ識別子をシードとして生成した複数の擬似乱数を前記複数の第１のデータ記憶ノードのそれぞれに割り当てる工程と、
前記オブジェクトデータのデータ座標と前記複数の第１のデータ記憶ノードのそれぞれに割り当てられたノード座標との距離に応じて算出されたウェイトに、割り当てられた擬似乱数を掛け合わせた値が最大のデータ記憶ノードを前記複数の第１のデータ記憶ノードの中から抽出する工程と、
抽出したデータ記憶ノードを、前記オブジェクトデータを格納すべきデータ記憶ノードとして決定する工程と、を含むことを特徴とする、請求項１２ないし１５のいずれか１項に記載の分散記憶方法。
【請求項１７】
前記複数のオブジェクトデータを特徴付けるデータ座標の分布に応じて、前記複数のデータ記憶ノードのそれぞれにノード座標を割り当てる工程を含むことを特徴とする、請求項１２ないし１６のいずれか１項に記載の分散記憶方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１１−０５８３４０号（２０１１年３月１６日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、分散記憶システムおよび分散記憶方法に関し、特に、処理対象である多数のデータを多数のノードを用いて記憶する分散記憶システムおよび分散記憶方法に関する。
【背景技術】
【０００２】
分散記憶システムにおいては、処理対象であるデータ（以下、「オブジェクトデータ」という。）を、複数の記憶ノードに分散した状態で大量に記憶する。ここで、記憶ノードとは、オブジェクトデータを記憶するストレージ等の装置をいう。【０００３】
分散記憶システムにおいては、多数の記憶ノードがオブジェクトデータを記憶する。この際、記憶ノードとその記憶ノードが記憶しているオブジェクトデータの対応を管理する方法が問題となる。これまでに、少数の固定された管理ノードによって、記憶ノードとその記憶ノードが記憶しているオブジェクトデータの対応を管理する手法が提案されている。しかし、このような手法によると、管理ノードがボトルネックとなりやすく、スケーラビリティに乏しい等の問題がある。これらの問題を克服するために、多数の管理ノードで対応を管理するシステムが提案されている。かかるシステムによると、オブジェクトデータを記憶する記憶ノードを制御するための処理が１台もしくは少数台の固定的な管理ノードに集中することはないため、より効率的に多数の記憶ノードにデータを分散記憶することができる。【０００４】
集中的に制御を行う固定的な管理ノードを持たないシステムの場合、オブジェクトデータを記憶した記憶ノードをテーブルに記録して管理することは困難となる。オブジェクトデータを記憶した記憶ノードを記録したテーブルは、オブジェクトデータの数が増えるに従って非常に大きなテーブルとなり、大きなテーブルを多数の管理ノードで同期して管理することは困難となるからである。【０００５】
そこで、オブジェクトデータを記憶する記憶ノードをアルゴリズムによって判断する手法が提案されている。オブジェクトデータの識別子などのデータの情報を元に、アルゴリズムによってオブジェクトデータを記憶する記憶ノードを決定することにより、大きなテーブルを多数の管理ノードで同期する必要がなくなり、多数のオブジェクトデータを取り扱うことができる。【０００６】
特願２０１０−１８４１０９号（以下「特許文献１」という。）、非特許文献１および非特許文献２は、上述のとおり、システム全体を集中的に制御する固定的な管理ノードを用いることなく、アルゴリズムによって、オブジェクトデータを多数の記憶ノードに記憶する手法を提案している。【０００７】
図８は、本発明に関連する分散記憶システムのシステム構成を例示する図である。図８に示す分散記憶システム１００は、上述した固定的な管理ノードを用いない分散記憶システムを例示している。【０００８】
分散記憶システム１００は、複数の記憶ノード１０１とクライアントノード１１０を備えている。記憶ノード１０１は、クライアントノード１１０の読み込み命令を受けて、その記憶ノード１０１が記憶しているオブジェクトデータを読み出す命令を実行し、命令を出したクライアントノード１１０へオブジェクトデータを返すとともに、クライアントノード１１０の書き込み命令を受けて、クライアントノード１１０から送出されたオブジェクトデータの書き込み命令を実行し、オブジェクトデータを記憶する。【０００９】
ここで、図８に示した分散記憶システム１００において、一例として、データ識別子０００００１を持つオブジェクトデータを読み込む処理を実行する場合について説明する。この処理では、予め各記憶ノード１０１にユニークな番号を割り振っておく。ここで、すべてのクライアントノード１１０は、すべての記憶ノード１０１の情報と記憶ノード１０１に振られた番号を記憶する記憶テーブル１１１を持つものとする。図９は、記憶テーブル１１１を一例として示す。【００１０】
処理が始まると、まず、クライアントノード１１０は、データ識別子０００００１をシード（乱数の種）として、記憶テーブル１１１に記憶している記憶ノード１０１に振られたすべての番号を等しい確率で発生する疑似乱数を生成する。疑似乱数を生成するアルゴリズムとして、同一のシードであれば同一の乱数列を生成するようなアルゴリズムを使用する。記憶ノード１０１に振られた番号と同一の疑似乱数が生成されるまで、疑似乱数の生成を繰り返す。記憶ノード１０１に振られた番号と同一の疑似乱数が生成された場合には、その疑似乱数に対応する番号を割り振られた記憶ノード１０１にアクセス命令を送出する。次に、疑似乱数に対応する番号を割り振られた記憶ノード１０１は、受け付けたアクセス命令を実行し、オブジェクトデータを得る。最後に、記憶ノード１０１は、オブジェクトデータをクライアントノード１１０へ送り、読み込み処理が完了する。【００１１】
分散記憶システム１００では、オブジェクトデータは記憶ノード１０１にほぼ均等に分散する。また、分散記憶システム１００に対して記憶ノード１０１を追加した場合、または、分散記憶システム１００から記憶ノード１０１を削減した場合には、最小限のオブジェクトデータの移動により、ほぼ均等な分散を維持することができる。【００１２】
このように、上述した手法によると、システム全体を集中的に制御する固定的な特定ノードを用いることなく、アルゴリズムによって、オブジェクトデータを多数の記憶ノード１０１に記憶することができる。すなわち、上述したシステム構成によれば、多数の記憶ノード１０１で均等に分散してオブジェクトデータを記憶することができる。また、上述したシステム構成によれば、記憶ノード１０１の台数が変化した場合においても、柔軟に対処することができる。
【先行技術文献】
【非特許文献】
【００１３】
【非特許文献１】Ｄａｖｉｄ  Ｋａｒｇｅｒ，Ｅｒｉｃ  Ｌｅｈｍａｎ，Ｔｏｍ  Ｌｅｉｇｈｔｏｎ，Ｍａｔｔｈｅｗ  Ｌｅｖｉｎｅ，Ｄａｎｉｅｌ  Ｌｅｗｉｎ，Ｒｉｎａ  Ｐａｎｉｇｒａｈｙ，“Ｃｏｎｓｉｓｔｅｎｔ  ｈａｓｈｉｎｇ  ａｎｄ  ｒａｎｄｏｍ  ｔｒｅｅｓ：  ｄｉｓｔｒｉｂｕｔｅｄ  ｃａｃｈｉｎｇ  ｐｒｏｔｏｃｏｌｓ  ｆｏｒ  ｒｅｌｉｅｖｉｎｇ  ｈｏｔ  ｓｐｏｔｓ  ｏｎ  ｔｈｅ  Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ，”１９９７．
【非特許文献２】Ｓａｇｅ  Ａ．  Ｗｅｉｌ，Ｓｃｏｔｔ  Ａ．  Ｂｒａｎｄｔ，Ｅｔｈａｎ  Ｌ．  Ｍｉｌｌｅｒ，Ｃａｒｌｏｓ  Ｍａｌｔｚａｈｎ，“ＣＲＵＳＨ：Ｃｏｎｔｏｒｏｌｌｅｄ，Ｓｃａｌａｂｌｅ，Ｄｅｃｅｎｔｒａｌｉｚｅｄ  Ｐｌａｃｅｍｅｎｔ  ｏｆ  Ｒｅｐｌｉｃａｔｅｄ  Ｄａｔａ，”２００６．
【発明の概要】
【発明が解決しようとする課題】
【００１４】
上記の特許文献および非特許文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者によってなされたものである。【００１５】
特許文献１、非特許文献１および非特許文献２に記載された手法では、個々のオブジェクトデータを分類することなく記憶ノードに記憶している。このとき、記憶ノード上で特定の性質を持つオブジェクトデータを処理する場合には、多数の記憶ノードからその記憶ノードへオブジェクトデータを集める必要がある。記憶ノードの台数が多くなるに従って、特定のノードへオブジェクトデータを収集するための処理が膨大となる。【００１６】
したがって、オブジェクトデータの性質に基づいてオブジェクトデータを記憶する記憶ノードを決定することにより、同一または類似の性質を有するオブジェクトデータを少数の記憶ノードに偏らせて記憶することを実現し、複数の記憶ノードを集中的に管理および制御する特定ノードを用いない分散処理環境において、各記憶ノードにほぼ均等にオブジェクトを分散させつつ、特定の性質を持つオブジェクトデータを処理する際に処理をするオブジェクトデータを持つ記憶ノードを限定できるようにすることが望まれる。【００１７】
特に、複数のデータ記憶ノードにオブジェクトデータを均一に分散して格納するとともに、オブジェクトデータの特徴に応じてオブジェクトデータを一部のデータ記憶ノードに偏在させることが課題となる。本発明の目的は、かかる課題を解決する分散記憶システムおよび分散記憶方法を提供することにある。
【課題を解決するための手段】
【００１８】
本発明の第１の視点に係る分散記憶システムは、
複数のオブジェクトデータを分散して記憶する複数のデータ記憶ノードを備え、
前記複数のオブジェクトデータは、それぞれ、データ座標によって特徴付けられるとともにデータ識別子によって一意に識別され、
前記複数のデータ記憶ノードは、それぞれ、前記データ座標と同一の空間におけるノード座標を割り当てられ、
前記複数のオブジェクトデータは、オブジェクトデータを特徴付けるデータ座標からの距離が相対的に短いノード座標を割り当てられたデータ記憶ノードを前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして複数選択した後、該複数の第１のデータ記憶ノードの中から該オブジェクトデータを識別するデータ識別子に基づいて決定したデータ記憶ノードに、それぞれ記憶される。【００１９】
本発明の第２の視点に係る分散記憶方法は、
データ座標によって特徴付けられるとともにデータ識別子によって一意に識別される複数のオブジェクトデータを分散して記憶する分散記憶方法であって、
前記データ座標と同一の空間におけるノード座標を複数のデータ記憶ノードのそれぞれに割り当てる工程と、
前記複数のオブジェクトデータのそれぞれを特徴付けるデータ座標からの距離が相対的に短いノード座標を割り当てられたデータ記憶ノードを、前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして複数選択する工程と、
前記複数の第１のデータ記憶ノードの中から前記複数のオブジェクトデータのそれぞれを識別するデータ識別子に基づいて決定したデータ記憶ノードに、該オブジェクトデータを記憶させる工程と、を含む。
【発明の効果】
【００２０】
本発明に係る分散記憶システムおよび分散記憶方法によると、複数のデータ記憶ノードにオブジェクトデータを均一に分散して格納するとともに、オブジェクトデータの特徴に応じて、オブジェクトデータを一部のデータ記憶ノードに偏在させることができる。
【図面の簡単な説明】
【００２１】
【図１】本発明に係る分散記憶システムの構成を概略的に示すブロック図である。
【図２】第１の実施形態に係る分散記憶システムの構成を概略的に示すブロック図である。
【図３】第１の実施形態に係る分散記憶システムの構成を示すブロック図である。
【図４】第１の実施形態に係る分散記憶システムの構成を示すブロック図である。
【図５】第１の実施形態に係る分散記憶システムにおいて、メタデータ記憶ノードがデータ記憶ノードを判定する処理を示すフローチャートである。
【図６】第２の実施形態に係る分散記憶システムの全体構成を概念的に説明する図である。
【図７】実施形態およびその実施例に係る分散記憶システム、或いはその分散記憶システムを構成するノードを実行可能なハードウェア構成を例示的に説明する図である。
【図８】本発明に関連する分散記憶システムのシステム構成を例示する図である。
【図９】図８の記憶テーブル１１１の記憶内容を一例として示す図である。
【発明を実施するための形態】
【００２２】
はじめに、本発明の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
【００２３】
図１を参照すると、分散記憶システム（７０）は、複数のオブジェクトデータを分散して記憶する複数のデータ記憶ノード（７１ａ〜７１ｃ）を備えている。なお、図１には、一例として３つのデータ記憶ノード（７１ａ〜７１ｃ）を示したが、データ記憶ノードの個数は図示の態様に限定されない。
【００２４】
複数のオブジェクトデータは、それぞれ、データ座標によって特徴付けられるとともにデータ識別子によって一意に識別される。また、複数のデータ記憶ノード（７１ａ〜７１ｃ）は、それぞれ、データ座標と同一の空間におけるノード座標を割り当てられている。さらに、オブジェクトデータは、オブジェクトデータを特徴付けるデータ座標からの距離が相対的に短いノード座標を割り当てられたデータ記憶ノードを複数のデータ記憶ノード（７１ａ〜７１ｃ）の中から第１のデータ記憶ノードとして複数選択した後（例えば、７１ａ、７１ｂ）、複数の第１のデータ記憶ノード（７１ａ、７１ｂ）の中からオブジェクトデータを識別するデータ識別子に基づいて決定したデータ記憶ノード（例えば、７１ａ）に記憶される。
【００２５】
ここで、複数のオブジェクトデータのそれぞれを特徴付けるデータ座標、および、複数のデータ記憶ノード（７１ａ〜７１ｃ）のそれぞれに割り当てられたノード座標は、複数のオブジェクトデータを定量的に評価する複数の評価軸を座標軸とするユークリッド空間における座標としてもよい。
【００２６】
また、オブジェクトデータからの距離が所定の距離以内のノード座標を割り当てられたデータ記憶ノードを複数のデータ記憶ノード（７１ａ〜７１ｃ）の中から第１のデータ記憶ノードとして複数選択するようにしてもよい。さらに、オブジェクトデータからの距離が短いノード座標を割り当てられたデータ記憶ノードを該距離の短いものから順に所定の数だけ複数のデータ記憶ノード（７１ａ〜７１ｃ）の中から第１のデータ記憶ノードとして選択するようにしてもよい。
【００２７】
また、オブジェクトデータを識別するデータ識別子をシードとして生成した複数の擬似乱数を複数の第１のデータ記憶ノード（例えば、７１ａ、７１ｂ）のそれぞれに割り当てるとともに、該オブジェクトデータのデータ座標と複数の第１のデータ記憶ノード（７１ａ、７１ｂ）のそれぞれに割り当てられたノード座標との距離に応じて算出されたウェイトに、割り当てられた擬似乱数を掛け合わせた値が最大のデータ記憶ノードを複数の第１のデータ記憶ノード（７１ａ、７１ｂ）の中から抽出し、抽出したデータ記憶ノード（例えば、７１ａ）を該オブジェクトデータを格納すべきデータ記憶ノードとして決定するようにしてもよい。ここで、ウェイトは、複数のオブジェクトデータのそれぞれを特徴付けるデータ座標と、複数のデータ記憶ノード（７１ａ〜７１ｃ）のそれぞれに割り当てられたノード座標との距離が短くなるに従って増大することが好ましい。
【００２８】
また、複数のデータ記憶ノード（７１ａ〜７１ｃ）は、それぞれ、複数のオブジェクトデータを特徴付けるデータ座標の分布に応じてノード座標が割り当てられていることが好ましい。例えば、データ座標の分布密度が高い領域に対して、高い確率でノード座標を割り当てるようにしてもよい。
【００２９】
図１を参照すると、分散記憶システム（７０）は、複数のデータ記憶ノード（７１ａ〜７１ｃ）にオブジェクトデータを書き込むとともに、複数のデータ記憶ノード（７１ａ〜７１ｃ）に記憶されたオブジェクトデータを読み出すクライアントノード（７２）をさらに備えていてもよい。クライアントノード（７２）は、オブジェクトデータを特徴付けるデータ座標からの距離が相対的に短いノード座標を割り当てられたデータ記憶ノードを複数のデータ記憶ノード（７１ａ〜７１ｃ）の中から第１のデータ記憶ノードとして複数選択するとともに（例えば、７１ａ、７１ｂ）、複数の第１のデータ記憶ノード（７１ａ、７１ｂ）の中から該オブジェクトデータのデータ識別子に基づいて決定したデータ記憶ノード（例えば、７１ａ）に、該オブジェクトデータを書き込むことが好ましい。
【００３０】
また、クライアントノード（７２）は、オブジェクトデータを特徴付けるデータ座標からの距離が相対的に短いノード座標を割り当てられたデータ記憶ノードを複数のデータ記憶ノード（７１ａ〜７１ｃ）の中から第１のデータ記憶ノードとして複数選択するとともに（例えば、７１ａ、７１ｂ）、選択した複数の第１のデータ記憶ノード（７１ａ、７２ｂ）に対して該オブジェクトデータの読み出し命令を送出するか、または、オブジェクトデータを特徴付けるデータ座標からの距離が相対的に短いノード座標を割り当てられたデータ記憶ノードを複数のデータ記憶ノード（７１ａ〜７１ｃ）の中から第１のデータ記憶ノードとして複数選択するとともに（例えば、７１ａ、７１ｂ）、複数の第１のデータ記憶ノード（７１ａ、７１ｂ）の中から該オブジェクトデータを識別するデータ識別子に基づいて決定したデータ記憶ノード（例えば、７１ａ）に対して、該オブジェクトデータの読み出し命令を送出することが好ましい。
【００３１】
本発明に係る分散記憶システムによると、複数ノードを集中的に管理および制御する特定ノードを用いない分散処理環境において、オブジェクトデータをそれぞれの性質に基づいて分散しつつ、各ノードにほぼ均等に分散して記憶することができ、また、オブジェクトデータのデータ識別子と該オブジェクトデータのデータの性質を表す複数の数値化された指標（データ座標）から該オブジェクトデータを記憶するノードを特定することができ、さらに、オブジェクトデータのデータの性質を表す複数の数値化された指標（データ座標）から該オブジェクトデータを記憶するノードを一部のノードに限定することができる。
【００３２】
なお、本発明において、下記の形態が可能である。
［形態１］
上記第１の視点に係る分散記憶システムのとおりである。
［形態２］
前記複数のオブジェクトデータのそれぞれを特徴付けるデータ座標、および、前記複数のデータ記憶ノードのそれぞれに割り当てられたノード座標は、前記複数のオブジェクトデータを定量的に評価する複数の評価軸を座標軸とするユークリッド空間における座標であってもよい。
［形態３］
オブジェクトデータからの距離が所定の距離以内のノード座標を割り当てられたデータ記憶ノードを前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして複数選択するようにしてもよい。
［形態４］
オブジェクトデータからの距離が短いノード座標を割り当てられたデータ記憶ノードを該距離の短いものから順に所定の数だけ前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして選択するようにしてもよい。
［形態５］
オブジェクトデータを識別するデータ識別子をシードとして生成した複数の擬似乱数を前記複数の第１のデータ記憶ノードのそれぞれに割り当てるとともに、該オブジェクトデータのデータ座標と前記複数の第１のデータ記憶ノードのそれぞれに割り当てられたノード座標との距離に応じて算出されたウェイトに、割り当てられた擬似乱数を掛け合わせた値が最大のデータ記憶ノードを前記複数の第１のデータ記憶ノードの中から抽出し、抽出したデータ記憶ノードを該オブジェクトデータを格納すべきデータ記憶ノードとして決定するようにしてもよい。
［形態６］
前記ウェイトは、前記複数のオブジェクトデータのそれぞれを特徴付けるデータ座標と、前記複数のデータ記憶ノードのそれぞれに割り当てられたノード座標との距離が短くなるに従って増大するようにしてもよい。
［形態７］
前記複数のデータ記憶ノードは、それぞれ、前記複数のオブジェクトデータを特徴付けるデータ座標の分布に応じてノード座標が割り当てられていてもよい。
［形態８］
分散記憶システムは、前記複数のデータ記憶ノードにオブジェクトデータを書き込むとともに、前記複数のデータ記憶ノードに記憶されたオブジェクトデータを読み出すクライアントノードをさらに備えていてもよい。
［形態９］
前記クライアントノードは、オブジェクトデータを特徴付けるデータ座標からの距離が相対的に短いノード座標を割り当てられたデータ記憶ノードを前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして複数選択するとともに、該複数の第１のデータ記憶ノードの中から該オブジェクトデータのデータ識別子に基づいて決定したデータ記憶ノードに、該オブジェクトデータを書き込むようにしてもよい。
［形態１０］
前記クライアントノードは、オブジェクトデータを特徴付けるデータ座標からの距離が相対的に短いノード座標を割り当てられたデータ記憶ノードを前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして複数選択するとともに、選択した複数の第１のデータ記憶ノードに対して該オブジェクトデータの読み出し命令を送出するようにしてもよい。
［形態１１］
前記クライアントノードは、オブジェクトデータを特徴付けるデータ座標からの距離が相対的に短いノード座標を割り当てられたデータ記憶ノードを前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして複数選択するとともに、該複数の第１のデータ記憶ノードの中から該オブジェクトデータを識別するデータ識別子に基づいて決定したデータ記憶ノードに対して、該オブジェクトデータの読み出し命令を送出するようにしてもよい。
［形態１２］
上記第２の視点に係る分散記憶方法のとおりである。
［形態１３］
前記複数のオブジェクトデータのそれぞれを特徴付けるデータ座標、および、前記複数のデータ記憶ノードのそれぞれに割り当てられたノード座標は、前記複数のオブジェクトデータを定量的に評価する複数の評価軸を座標軸とするユークリッド空間における座標であってもよい。
［形態１４］
分散記憶方法は、オブジェクトデータからの距離が所定の距離以内のノード座標を割り当てられたデータ記憶ノードを前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして複数選択する工程を含んでいてもよい。
［形態１５］
分散記憶方法は、オブジェクトデータからの距離が短いノード座標を割り当てられたデータ記憶ノードを該距離の短いものから順に所定の数だけ前記複数のデータ記憶ノードの中から第１のデータ記憶ノードとして選択する工程を含んでいてもよい。
［形態１６］
分散記憶方法は、オブジェクトデータのデータ識別子をシードとして生成した複数の擬似乱数を前記複数の第１のデータ記憶ノードのそれぞれに割り当てる工程と、
前記オブジェクトデータのデータ座標と前記複数の第１のデータ記憶ノードのそれぞれに割り当てられたノード座標との距離に応じて算出されたウェイトに、割り当てられた擬似乱数を掛け合わせた値が最大のデータ記憶ノードを前記複数の第１のデータ記憶ノードの中から抽出する工程と、
抽出したデータ記憶ノードを、前記オブジェクトデータを格納すべきデータ記憶ノードとして決定する工程と、を含んでいてもよい。
［形態１７］
分散記憶方法は、前記複数のオブジェクトデータを特徴付けるデータ座標の分布に応じて、前記複数のデータ記憶ノードのそれぞれにノード座標を割り当てる工程を含んでいてもよい。
【００３３】
＜実施形態１＞
第１の実施形態に係る分散記憶システムについて、図面を参照して説明する。図２は、本実施形態に係る分散記憶システム４０の構成を概略的に示すブロック図である。図２は（ａ）、（ｂ）の２つの図を含む。図３は、本実施形態に係る分散記憶システム４０のうち、各ノードの内部構成を示すブロック図である。図４は、本実施形態に係る分散記憶システム４０のうち各ノードの詳細を示すブロック図である。
【００３４】
図２ないし図４に示す分散記憶システム４０は、複数のデータを分散記憶するシステムである。分散記憶システム４０は、データ記憶ノード３０にほぼ均等にデータを記憶するとともに、データの性質を表す複数の数値化された指標に応じて偏らせて、データ記憶ノード３０にデータを記憶する。
【００３５】
本実施形態においても、上述の背景技術と同様に、処理対象であるデータを、「オブジェクトデータ」と呼ぶ。オブジェクトデータは、例えば、数値データ、所定の処理（プロセス、機能、アルゴリズム）が記述されたソフトウェアプログラム（コンピュータプログラム）等であってもよい。
【００３６】
図２（ａ）を参照すると、分散記憶システム４０は、複数のクライアントノード１０、複数のメタデータ記憶ノード２０、および、複数のデータ記憶ノード３０を備えている。本実施形態に係るクライアントノード１０、メタデータ記憶ノード２０およびデータ記憶ノード３０は、互いに通信可能に接続されている。
【００３７】
次に、クライアントノード１０、メタデータ記憶ノード２０およびデータ記憶ノード３０について説明する。
【００３８】
図２（ａ）を参照すると、クライアントノード１０は、アクセスするオブジェクトデータのデータ識別子から、該データ識別子に対応するメタデータを記憶するメタデータ記憶ノード２０を判定する。そして、該メタデータ記憶ノード２０へデータ識別子とアクセス命令を送出する。
【００３９】
メタデータ記憶ノード２０は、クライアントノード１０から送出されたデータ識別子とアクセス命令を受信する。次に、メタデータ記憶ノード２０は、該データ識別子と該データ識別子に対応するメタデータを元に、所定のルール（後述）に基づいてオブジェクトデータを持っているデータ記憶ノード３０を選択する。次に、メタデータ記憶ノード２０は、選択したデータ記憶ノード３０へデータ識別子とアクセス命令を送出する。「メタデータ」は、オブジェクトデータの特徴を複数の指標で評価して数値化したデータを含む。すなわち、本実施形態において、データ識別子とメタデータとは必ずしも一致しない。
【００４０】
データ記憶ノード３０は、メタデータ記憶ノード２０から送出されたデータ識別子とアクセス命令を受信する。次に、データ記憶ノード３０は、該データ識別子に対応するオブジェクトデータ、データ識別子とメタデータをクライアントノード１０に返す。
【００４１】
また、別のアクセス方法として、以下のアクセス方法を用いてもよい。
【００４２】
図２（ｂ）を参照すると、クライアントノード１０は、メタデータと対応するオブジェクトデータを持っている可能性があるデータ記憶ノード３０をルールに基づいて選択し、選択したデータ記憶ノード３０へメタデータとアクセス命令を送出する。このとき、複数のデータ記憶ノード３０が選択され得る。
【００４３】
データ記憶ノード３０は、クライアントノード１０から送出されたメタデータとアクセス命令を受信し、該メタデータに対応するオブジェクトデータ、データ識別子およびメタデータをクライアントノード１０に返す。このとき、データ記憶ノード３０は、メタデータに対応するオブジェクトデータを保持していない場合、または、メタデータに対応するオブジェクトデータを複数保持している場合があり得る。
【００４４】
本実施形態では、説明の便宜上、分散記憶システム４０が、図２（ａ）のように３種類のノードを備えている場合について説明する。ただし、本発明は図２ないし図４に例示する構成に限定されるものではなく、例えば、仮想マシン環境において、これらのノードの全部または一部の機能を実現してもよい。なお、分散記憶システム４０を実現するためのハードウェア構成の具体例については、図７を参照して後述する。
【００４５】
Ｉ．データを読み込む場合
分散記憶システム４０において、データを読み込む場合の動作の詳細について、図面を参照して説明する。
【００４６】
「クライアントノード１０」
図４を参照すると、クライアントノード１０は、メタデータ記憶ノード判定部１１、データ識別子送信部１２、ノード情報記憶部１３、データ記憶ノード判定部１４、メタデータ送信部１５、および、データ受信部１６を備えている。
【００４７】
まず、図２（ａ）に示すように、クライアントノード１０がデータ識別子を用いてオブジェクトデータを得る場合について説明する。メタデータ記憶ノード判定部１１は、オブジェクトデータのデータ識別子と、ノード情報記憶部１３が記憶しているメタデータ記憶ノード２０のノード番号から、データ識別子に対応するデータ識別子とメタデータとの組み合わせを記憶しているメタデータ記憶ノード２０を判定する。次に、データ識別子送信部１２は、該メタデータ記憶ノード２０へデータ識別子とアクセス命令を送信する。該データ識別子に対応するデータ識別子とメタデータとの組み合わせを記憶するメタデータ記憶ノード２０を、メタデータ記憶ノード判定部１１が判定する方法として、さまざまな方法を採用することができる。例えば、特許文献１、非特許文献１または非特許文献２に記載された方法を採用することができる。
【００４８】
次に、クライアントノード１０がメタデータからオブジェクトデータを得る場合について説明する。データ記憶ノード判定部１４は、メタデータに含まれるデータ座標と、ノード情報記憶部１３が記憶しているノード座標から、後述のアルゴリズムＢを用いて、オブジェクトデータを記憶している可能性があるデータ記憶ノード３０を判定する。次に、メタデータ送信部１５は、該データ記憶ノード３０へメタデータとアクセス命令を送出する。ノード座標の座標軸として、データ座標の座標軸と同一のものが用いられる。ノード座標が持つ座標データの指定方法については、後述する。
【００４９】
データ受信部１６は、データ記憶ノード３０から送出されたオブジェクトデータ、データ識別子、メタデータを受信する。
【００５０】
「メタデータ記憶ノード２０」
図４を参照すると、メタデータ記憶ノード２０は、データ識別子受信部２１、メタデータ記憶部２２、メタデータ判定部２３、ノード情報記憶部２４、ノード判定部２５、および、データ識別子送信部２６を備えている。
【００５１】
データ識別子受信部２１は、クライアントノード１０から送出されたデータ識別子とアクセス命令を受信する。メタデータ記憶部２２は、該データ識別子に対応するメタデータを記憶している。
【００５２】
メタデータ判定部２３は、データ識別子に対応するメタデータをメタデータ記憶部２２から受信して、ノード判定部２５へ送出する。メタデータは、メタデータに対応するオブジェクトデータを様々な評価軸で評価した結果を数値化したデータ座標を含む。オブジェクトデータを評価する評価軸として、個々のシステムに依存して、様々な評価軸が用いられる。ここでは、用いるべき評価軸を特に限定しない。
【００５３】
ノード判定部２５は、受信したデータ識別子に対応するメタデータと、ノード情報記憶部２４が記憶しているノード情報から、受信したデータ識別子の送信先のデータ記憶ノード３０を、後述のアルゴリズムＡに基づいて選択する。ノード情報は、データ記憶ノード３０のノード座標、ノード番号およびノードアクセス情報を含む。ノード番号は、各データ記憶ノードに固有の番号である。
【００５４】
次に、データ識別子送信部２６は、選択したデータ記憶ノード３０へデータ識別子とアクセス命令を送出する。
【００５５】
「データ記憶ノード３０」
図４を参照すると、データ記憶ノード３０は、データ識別子受信部３１、データ記憶部３２、データ判定部３３、データ送信部３４、メタデータ受信部３５、および、メタデータ判定部３６を備えている。
【００５６】
データ識別子受信部３１は、メタデータ記憶ノード２０からデータ識別子とアクセス命令を受信する。データ記憶部３２は、受信したデータ識別子に対応するオブジェクトデータ、データ識別子およびメタデータを記憶している。
【００５７】
データ判定部３３は、受信したデータ識別子に対応するオブジェクトデータおよびメタデータを、データ記憶部３２から取得する。
【００５８】
次に、データ送信部３４は、オブジェクトデータ、データ識別子およびメタデータをクライアントノード１０へ送出する。
【００５９】
また、メタデータ受信部３５は、クライアントノード１０からメタデータを受信する。この場合、メタデータ判定部３６は、受信したメタデータに対応するオブジェクトデータおよびデータ識別子をデータ記憶部３２から取得する。このとき、データ記憶部３２は、受信したメタデータに対応するオブジェクトデータおよびデータ識別子を記憶していない場合、または、複数記憶している場合がある。次に、データ送信部３４は、オブジェクトデータ、データ識別子およびメタデータをクライアントノード１０へ送出する。ここでは、クライアントノード１０へオブジェクトデータ、データ識別子およびメタデータを送出するものとしたが、クライアントノード１０へ返す情報としては、これらに制限されない。
【００６０】
「アルゴリズムＡ」
図５は、アルゴリズムＡのフローチャートである。
【００６１】
オブジェクトデータのデータ座標とデータ記憶ノード３０のノード座標を「空間」に展開した場合のオブジェクトデータとデータ記憶ノード３０の距離を計算し、オブジェクトデータから距離が近い順に「予め決められたルール」でデータ記憶ノード３０を選択する（ステップＳ１）。
【００６２】
「空間」として、一例として、評価軸を直交する軸とする多次元ユークリッド空間を用いることができる。また、「予め決められたルール」として、選択するデータ記憶ノード３０の数を限定するルール、距離を限定するルール、選択するデータ記憶ノード３０の数と距離両方を限定するルール等の様々なルールを採用することができる。また、ルールに合ったデータ記憶ノード３０を選択する際、オブジェクトデータとすべてのデータ記憶ノード３０の距離を計算する代わりに、距離を計算するデータ記憶ノード３０を限定する方法を用いることもできる。
【００６３】
次に、距離からウェイトを計算する（ステップＳ２）。距離が近いほど、ウェイトは大きくなる。距離からウェイトを計算する方法として、一例として、距離の逆数をウェイトとする方法を用いることができる。
【００６４】
次に、オブジェクトデータのデータ識別子をシードとして乱数を生成し、ステップＳ１で選択したデータ記憶ノード３０へ割り当てる（ステップＳ３）。乱数を生成する方法として、シードが同一であれば同一の乱数を発生する疑似乱数生成方法を用いる。ここでは、Ｎ番目に発生した乱数を、Ｎのノード番号を持つデータ記憶ノード３０に割り当てる。
【００６５】
次に、データ記憶ノード３０に割り当てた乱数に、各データ記憶ノード３０のウェイトを掛けて、ウェイト調整後乱数を求める（ステップＳ４）。
【００６６】
次に、ウェイト調整後乱数の中で最も大きなウェイト調整後乱数を探し、最も大きなウェイト調整後乱数を持つデータ記憶ノード３０を選択する（ステップＳ５）。
【００６７】
アルゴリズムＡによると、ウェイトに応じた偏りを持たせた上で、オブジェクトデータを記憶するデータ記憶ノード３０を選択できる。すなわち、データ座標が近いオブジェクトデータは、ノード座標が同一または近い限られたデータ記憶ノード３０に記憶される。また、同一のオブジェクトデータのデータ識別子およびデータ座標と、データ記憶ノード３０のノード座標およびノード番号とが与えられた場合には、つねに、同一のデータ記憶ノード３０が選択される。さらに、データ記憶ノード３０を追加または削除した場合に、データ記憶ノード３０の選択が変更されるオブジェクトデータの数を最小限に抑えることができる。
【００６８】
「アルゴリズムＢ」
アルゴリズムＢは、アルゴリズムＡのステップＳ１と同様である。メタデータに含まれるデータ座標とデータ記憶ノード３０のノード座標を「空間」に展開したときのメタデータとデータ記憶ノード３０の距離を計算し、メタデータから近い順に「予め決められたルール」でデータ記憶ノード３０を選択する。
【００６９】
「空間」として、一例として、評価軸を直交する軸とする多次元ユークリッド空間を用いることができる。また、「予め決められたルール」として、選択するデータ記憶ノード３０の数を限定するルール、距離を限定するルール、選択するデータ記憶ノード３０の数と距離両方を限定するルール等の様々なルールを採用することができる。また、ルールにあったデータ記憶ノード３０を選択する際、メタデータとすべてのデータ記憶ノード３０の距離を計算する代わりに、計算が必要なデータ記憶ノード３０を限定する方法を用いることもできる。
【００７０】
「データ記憶ノード３０のノード座標の決定方法」
データ記憶ノード３０のノード座標は、任意に設定し得る。しかし、オブジェクトデータのデータ座標と、データ記憶ノード３０のノード座標を空間に展開した場合に、より多くのオブジェクトデータが存在する空間の近くにより多くのデータ記憶ノード３０が存在するときに、各データ記憶ノード３０が記憶するオブジェクトデータの数がより均等になる。
【００７１】
より多くのオブジェクトデータが存在する空間の近くにより多くのデータ記憶ノード３０を配置する方法として、様々な方法を採用することができる。例えば、予めオブジェクトデータが存在するようになる可能性が高い空間の近くに多くのデータ記憶ノード３０を配置するようにノード座標を調整するようにしてもよい。また、記憶しているオブジェクトデータの数が少ないデータ記憶ノード３０の空間上の位置をより多くのオブジェクトデータが存在する空間上の位置の近くに移動するために、データ記憶ノード３０のノード座標を変更するようにしてもよい。さらに、データ記憶ノード３０を追加する際、オブジェクトデータが多く存在する空間上の位置の近くにデータ記憶ノード３０を追加するようにしてもよい。
【００７２】
ＩＩ．データを書き込む場合
分散記憶システム４０において、データを書き込む場合の動作の詳細について、図面を参照して説明する。
【００７３】
「クライアントノード１０」
クライアントノード１０がデータ識別子およびメタデータを用いてオブジェクトデータを書き込む場合には、メタデータ記憶ノード判定部１１は、データ識別子とノード情報記憶部１３が記憶しているメタデータ記憶ノード２０のノード番号から、該データ識別子に対応するメタデータを記憶することになるメタデータ記憶ノード２０を判定する。次に、データ識別子送信部１２は、該メタデータ記憶ノード２０へオブジェクトデータ、データ識別子、メタデータ、および、アクセス命令を送出する。
【００７４】
「メタデータ記憶ノード２０」
データ識別子受信部２１は、クライアントノード１０からオブジェクトデータ、データ識別子、メタデータ、および、アクセス命令を受信する。次に、データ識別子とメタデータをメタデータ記憶部２２に記憶する。また、データ識別子とメタデータをノード判定部２５へ送出する。ノード判定部２５は、データ識別子、メタデータとノード情報記憶部２４により記憶しているノード情報から、アルゴリズムＡに基づいて、データ識別子、メタデータおよびアクセス命令の送信先のデータ記憶ノード３０を選択する。次に、データ識別子送信部２６は、選択したデータ記憶ノード３０へ、オブジェクトデータ、データ識別子、メタデータおよびアクセス命令を送出する。
【００７５】
「データ記憶ノード３０」
データ識別子受信部３１は、オブジェクトデータ、データ識別子、メタデータ、および、アクセス命令を受信する。次に、データ記憶部３２は、オブジェクトデータ、データ識別子およびメタデータを記憶する。
【００７６】
本実施形態に係る分散記憶システム４０によると、任意に設定した評価軸による評価が近いオブジェクトデータを同一または限定したデータ記憶ノード３０に記憶することができる。すなわち、オブジェクトデータのデータ座標、データ記憶ノード３０のノード座標から、オブジェクトデータを記憶するデータ記憶ノード３０を限定することができる。また、オブジェクトデータのメタデータを記憶するメタデータ記憶ノード２０を、データ識別子とデータ記憶ノード３０のノード番号から特定することができる。さらに、オブジェクトデータを記憶しているデータ記憶ノード３０を、データ識別子、オブジェクトデータのデータ座標、データ記憶ノード３０のノード座標およびノード番号から特定することができる。すなわち、オブジェクトデータのデータ識別子から、効率よくオブジェクトデータを記憶するデータ記憶ノード３０を特定することができる。
【００７７】
また、ノード座標を調整することにより、オブジェクトデータをデータ記憶ノード３０にほぼ均等に分布させることもできる。したがって、本実施形態によると、複数ノードを集中的に管理および制御する特定ノードを用いない分散処理環境において、識別子を元にしたデータへの直接アクセスおよびデータの評価による範囲指定による範囲アクセスのいずれも効率よく実現することができ、データの性質に応じてデータを一部のノードに偏らせつつ、すべてのノードにほぼ均等にデータを分散させることができる。
【００７８】
なお、本実施形態では、説明の便宜上、クライアントノード１０によるメタデータ記憶ノード２０の選択、および、選択されたメタデータ記憶ノード２０によるデータ記憶ノード３０の選択において、いずれの場合にも１つのノードを選択するものとした。しかし、選択するノードの数は１つに制限されない。例えば、メタデータ記憶ノード２０またはデータ記憶ノード３０がミラー構成を採用する場合には、上述の分散記憶システム４０において、ミラー構成を採る複数のノードを選択するようにしてもよい。この場合には、選択されたミラー構成を採る複数のノードのうちのいずれのノードが今回の動作時点におけるプライマリーノードであるかを判断するための情報を、ノード間において共有するようにすればよい。
【００７９】
＜実施形態２＞
第１の実施形態の変形例として、第２の実施形態に係る分散記憶システムについて、図面を参照して説明する。
【００８０】
図６は、本実施形態に係る分散記憶システム６０の構成を示すブロック図である。図６を参照すると、分散記憶システム６０は、複数のデータ記憶ノード５０を備えている。データ記憶ノード５０は、データ識別子受信部５１、データ判定部５２、データ記憶部５３、データ送信部５４、メタデータ受信部５５、および、メタデータ判定部５６を備えている。
【００８１】
データ記憶ノード５０は、データ識別子受信部５１を介して、クライアントノード（非図示）またはデータ記憶ノード５０からデータ識別子を持ったアクセス命令を受け取ると、以下の動作を行う。
【００８２】
データ識別子に対応するオブジェクトデータとメタデータを持つ場合には、データ判定部５２は、データ識別子に対応するオブジェクトデータとメタデータをデータ記憶部５３から読み込み、データ送信部５４を介して、オブジェクトデータ、データ識別子およびメタデータを、アクセス命令を出したクライアントノード（非図示）へ返す。
【００８３】
データ識別子に対応するメタデータを持つ場合には、データ判定部５２は、データ識別子に対応するメタデータをデータ記憶部５３から読み込み、該データ識別子と該メタデータに対応するオブジェクトデータを持つデータ記憶ノード５０を判定し、データ送信部５４を介して、データ識別子およびアクセス命令を該データ記憶ノード５０へ転送する。データ判定部５２は、該データ識別子と該メタデータに対応するオブジェクトデータを持つデータ記憶ノード５０を判定する際、第１の実施形態におけるノード判定部２５が用いるアルゴリズムＡを使用する。
【００８４】
一方、データ識別子に対応するメタデータを持っていない場合には、データ判定部５２は、データ識別子に対応するメタデータを持つデータ記憶ノード５０を判定し、データ送信部５４を介して、データ識別子およびアクセス命令を該データ記憶ノード５０へ転送する。データ判定部５２は、該データ識別子に対応するメタデータを持つデータ記憶ノード５０を判定する際、第１の実施形態におけるメタデータ記憶ノード判定部１１で用いた処理と同様に、多様な処理を採用することができる。
【００８５】
データ記憶ノード５０は、メタデータ受信部５５を介して、クライアントノード（非図示）からメタデータのみを持ったアクセス命令を受け取ると、以下の動作を行う。
【００８６】
メタデータ判定部５６は、クライアントノード（非図示）から受信したメタデータに対応するオブジェクトデータを持つ可能性があるデータ記憶ノード５０を選択し、選択したデータ記憶ノード５０へメタデータおよびアクセス命令を送出する。メタデータ判定部５６は、オブジェクトデータを持つ可能性があるデータ記憶ノード５０を選択する際、アルゴリズムＢを用いる。このとき、複数のデータ記憶ノード５０が選択され得る。
【００８７】
データ記憶ノード５０は、メタデータ受信部５５を介して、他のデータ記憶ノード５０からメタデータのみを持ったアクセス命令を受け取ると、以下の動作を行う。
【００８８】
メタデータ判定部５６は、データ記憶部５３から受信したメタデータに対応するオブジェクトデータとデータ識別子を読み込み、データ送信部５４を介して、オブジェクトデータ、データ識別子およびメタデータを、アクセス命令を送ったクライアントノード（非図示）へ返す。また、データ記憶ノード５０は、メタデータに対応するオブジェクトデータを記憶していない場合には、クライアントノード（非図示）へ、オブジェクトデータを持っていないことを返すようにしてもよいし、何らの情報も返さないようにしてもよい。さらに、データ記憶ノード５０がメタデータに対応するオブジェクトデータを複数記憶している場合には、クライアントノード（非図示）へ複数のオブジェクトデータを返す。
【００８９】
本実施形態に係る分散記憶システム６０によると、任意に設定した評価軸による評価が近いオブジェクトデータを同一または限定したデータ記憶ノード５０に記憶することができる。すなわち、オブジェクトデータのデータ座標、データ記憶ノード５０のノード座標から、オブジェクトデータを記憶するデータ記憶ノード５０を限定することができる。また、オブジェクトデータのメタデータを記憶するデータ記憶ノード５０を、データ識別子から特定することができる。さらに、オブジェクトデータを記憶しているデータ記憶ノード５０を、オブジェクトデータのデータ識別子およびデータ座標、ならびに、データ記憶ノード５０のノード座標およびノード番号から特定することができる。すなわち、オブジェクトデータのデータ識別子から、効率よくオブジェクトデータを記憶するデータ記憶ノード５０を特定することができる。
【００９０】
また、ノード座標を調整することにより、オブジェクトデータのデータ記憶ノード５０への分布を均等に近づけることができる。したがって、本実施形態によると、複数ノードを集中的に管理および制御する特定ノードを用いない分散処理環境において、データの識別子を元にしたデータへの直接アクセスおよびデータの評価による範囲指定による範囲アクセスのいずれも効率よく実現することができ、データの性質に応じてデータを一部のノードに偏らせつつ、すべてのノードにほぼ均等にデータを分散させることができる。
【実施例】
【００９１】
第１の実施形態に係る分散記憶システム４０を、具体的な実施例に即して説明する。本実施例では、分散記憶システム４０を、多数の人名を身長および体重情報を元に分散して記憶する場合に適用する。【００９２】
本実施例に係る分散記憶システム４０は、クライアントノード１０からアクセスする分散記憶システムである。多数の人を対象として、人名をオブジェクトデータとして記憶する。また、データ識別子として人の管理番号を使用し、メタデータのデータ座標として、身長および体重をそれぞれ評価した数値を使用する。メタデータ記憶ノード２０は、データ識別子を元に分散してデータ識別子およびメタデータを記憶する。また、データ記憶ノード３０は、メタデータを元に偏よらせつつ、オブジェクトデータ、データ識別子およびメタデータを分散記憶する。【００９３】
まず、人の管理番号を元に、人名を得る方法について説明する。【００９４】
クライアントノード１０のメタデータ記憶ノード判定部１１は、アクセスする人の管理番号に対応する身長および体重をそれぞれ評価した数値の組み合わせを記憶しているメタデータ記憶ノード２０を判定する。次に、データ識別子送信部１２は、該メタデータ記憶ノード２０へ人の管理番号とアクセス命令を送出する。【００９５】
メタデータ記憶ノード２０のデータ識別子受信部２１は、人の管理番号およびアクセス命令を受信する。次に、メタデータ判定部２３は、メタデータ記憶部２２に記録されている人の管理番号と身長および体重をそれぞれ評価した数値の組み合わせから、受信した人の管理番号に対応する、身長および体重をそれぞれ評価した数値の組み合わせを取得する。次に、ノード判定部２５は、人の管理番号、身長および体重をそれぞれ評価した数値の組み合わせ、ならびに、ノード情報記憶部２４に記録されているノード座標およびノード番号から、人名を記憶しているデータ記憶ノード３０を判定する。次に、データ識別子送信部２６は、人名を記憶していると判定されたデータ記憶ノード３０へ管理番号およびアクセス命令を送出する。【００９６】
データ記憶ノード３０のデータ識別子受信部３１は、管理番号を受信する。次に、データ判定部３３は、受信した管理番号に対応する、データ記憶部３２で記憶している管理番号、身長および体重をそれぞれ評価した数値との組み合わせ、ならびに、人名を取得する。次に、データ送信部３４は、管理番号、身長および体重をそれぞれ評価した数値の組み合わせ、ならびに、人名をクライアントへ送信する。【００９７】
次に、身長および体重をそれぞれ評価した数値の組み合わせを元に、人名を取得する方法について説明する。【００９８】
クライアントノード１０のデータ記憶ノード判定部１４は、身長および体重をそれぞれ評価した数値の組み合わせ、ならびに、ノード情報記憶部１３が記憶しているノード座標から、該身長および体重をそれぞれ評価した数値の組み合わせに対応する人名を保存しているデータ記憶ノード３０の候補を取得する。次に、メタデータ送信部１５は、身長および体重をそれぞれ評価した数値の組み合わせ、ならびに、アクセス命令を該データ記憶ノード３０へ送出する。【００９９】
データ記憶ノード３０のメタデータ受信部３５は、身長および体重をそれぞれ評価した数値の組み合わせとアクセス命令を受信する。次に、メタデータ判定部３６は、受信した身長および体重をそれぞれ評価した数値の組み合わせに対応する、データ記憶部３２に記録された管理番号、身長および体重をそれぞれ評価した数値の組み合わせ、ならびに、人名を取得する。次に、データ送信部３４は、管理番号、身長および体重をそれぞれ評価した数値の組み合わせ、ならびに、人名をクライアントへ送信する。【０１００】
本実施例において、クライアントノード１０は、アクセスしたい人の管理番号を用いることにより、該管理番号に対応する身長および体重をそれぞれ評価した数値の組み合わせを記憶していているメタデータ記憶ノード２０へダイレクトにアクセスすることができる。また、メタデータ記憶ノード２０は、アクセスしたい人の管理番号、ならびに、該管理番号に対応する身長および体重をそれぞれ評価した数値の組み合わせを用いることにより該管理番号に対応する人名を記憶しているデータ記憶ノード３０へダイレクトにアクセスすることができる。さらに、クライアントノード１０は、アクセスしたい身長および体重をそれぞれ評価した数値の組み合わせを用いることにより、該身長および体重をそれぞれ評価した数値の組み合わせに対応する管理番号と人名を記憶している可能性があるデータ記憶ノード３０を限定することができ、該データ記憶ノード３０へダイレクトにアクセスすることができる。【０１０１】
また、ノード座標を適切に調整することにより、各データ記憶ノード３０が記憶する管理番号、身長および体重をそれぞれ評価した数値の組み合わせ、ならびに、人名の個数の分布を均等に近づけることができる。【０１０２】
（ハードウェア構成例）
第１の実施形態に係る分散記憶システム４０、および、第２の実施形態に係る分散記憶システム６０の各部は、ソフトウェアプログラムのモジュールとして実現し得る。図７を参照して、この場合におけるハードウェア構成について説明する。【０１０３】
図７は、分散記憶システム４０、６０、または、分散記憶システムを構成するノードを実現するハードウェアの構成を一例として示すブロック図である。すなわち、図７は、図２、図３および図４に示した分散記憶システム４０、または、図６に示した分散記憶システム６０の全部または一部のノードを実現するコンピュータの構成を示す。図７に示すハードウェア構成により、分散記憶システム４０および分散記憶システム６０の各部の機能を実現し得る。【０１０４】
図７を参照すると、ハードウェアは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９３、ハードディスクドライブ（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）９４、および、外部装置との通信インタフェース（Ｉ／Ｆ：Ｉｎｔｅｒｆａｃｅ）９５を備え、これらはバス（通信線）９６を介して接続されている。ここで、図７に示したハードウェアがデータ記憶ノード（ストレージ）３０の場合には、ＨＤＤ９４自体が上述の実施形態および実施例におけるデータ記憶ノード３０として機能するようにしてもよい。【０１０５】
また、上述の実施形態および実施例は、ブロック図（図２ないし図４）またはフローチャート（図５）の機能を実現可能なコンピュータプログラムを図７のハードウェアに供給した後、そのコンピュータプログラムを当該ハードウェアのＣＰＵ９１に読み出して実行することによって達成するようにしてもよい。このとき、供給されたコンピュータプログラムは、読み書き可能なＲＡＭ９３またはＨＤＤ９４等の記憶デバイスに格納するようにしてもよい。【０１０６】
また、上記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法として、ＣＤ−ＲＯＭ等の各種記録媒体を介して当該装置内にインストールする方法を採用してもよい。また、インターネット等の通信回線を介して外部よりダウンロードする方法を採用してもよい。さらに、このような場合には、本発明は、コンピュータプログラムのコード自体、または、これを記録した記憶媒体として提供することもできる。【０１０７】
また、上述の実施形態および実施例では、オブジェクトデータの分散配置に関して、本発明を適応する場合について説明した。しかし、オブジェクトデータのみならず、プログラム等のアルゴリズムの分散実行、または、物理的な実体を持つオブジェクトの分散配置などにも、本発明を適用することができる。【０１０８】
本発明によると、複数ノードを集中的に管理および制御する特定ノードを用いない分散記憶環境において、分散記憶を効率よく実現することができる。本発明に係る分散記憶システムは、複数のデータ記憶ノードを備える。このシステムにおいて、前記データ記憶ノードは、接続されている前記複数のデータ記憶ノードの接続情報と、オブジェクトデータの識別子とメタデータに基づいて、前記複数のデータ記憶ノードの中から特定のデータ記憶ノードを選択し、選択した特定のデータ記憶ノードに該オブジェクトデータを記憶する。このとき、該オブジェクトデータのメタデータを元に、前記複数のデータ記憶ノードの中から該オブジェクトデータを記憶する可能性があるデータ記憶ノードを限定することができる。【０１０９】
また、本発明に係る分散記憶システムは、クライアントノードと、該クライアントノードに接続された複数のデータ記憶ノードとを備えた分散記憶システムである。【０１１０】
ここで、前記クライアントノードは、データ記憶ノードに、オブジェクトデータの識別子または該オブジェクトデータのデータの性質を表す複数の数値化された指標（メタデータ）を持つアクセス命令を送信する手段を有し、
前記データ記憶ノードは、該アクセス命令が持つ、オブジェクトデータの識別子と、該オブジェクトデータのデータの性質を表す複数の数値化された指標と、接続されている前記複数のデータ記憶ノードの接続情報と、該データ記憶ノードに設定された複数の数値化された指標に基づいて、前記複数のデータ記憶ノードの中から特定のデータ記憶ノードを選択し、該データ記憶ノードに前記アクセス命令を転送する手段と、
該アクセス命令が持つ、オブジェクトデータの識別子と、接続されている前記複数のデータ記憶ノードの接続情報に基づいて、前記複数のデータ記憶ノードの中から特定のデータ記憶ノードを選択し、該データ記憶ノードに前記アクセス命令を転送する手段と、
該アクセス命令が持つ、オブジェクトデータのデータの性質を表す複数の数値化された指標と、接続されている前記複数のデータ記憶ノードの接続情報と、該データ記憶ノードに設定された前記複数の数値化された指標に基づいて、前記複数のデータ記憶ノードの中から限定したデータ記憶ノードを選択し、該データ記憶ノードに前記アクセス命令を転送する手段と、
前記データ記憶ノードが記憶するオブジェクトデータを読み込み、前記クライアントノードに送信する手段と、を有し、
前記データ記憶ノードが記憶するオブジェクトデータを変更することができ、
前記データ記憶ノードに設定された前記複数の数値化された指標を予め調整するもしくは変更することにより、前記データ記憶ノードが記憶するオブジェクトデータを変更するようにしてもよい。【０１１１】
また、前記クライアントノードは、オブジェクトデータの識別子と、接続されている前記複数のデータ記憶ノードの接続情報と、該データ記憶ノードに設定された前記複数の数値化された指標に基づいて、前記複数のデータ記憶ノードの中から特定のデータ記憶ノードを選択する手段と、
該データ記憶ノードに、オブジェクトデータの識別子を持つアクセス命令を送信する手段と、
オブジェクトデータのデータの性質を表す複数の数値化された指標と、接続されている前記複数のデータ記憶ノードの接続情報と、該データ記憶ノードに設定された前記複数の数値化された指標に基づいて、前記複数のデータ記憶ノードの中から限定したデータ記憶ノードを選択する手段と、
該データ記憶ノードに、オブジェクトデータの識別子を持つアクセス命令を送信する手段と、を有し、
前記データ記憶ノードは、該アクセス命令が持つ、オブジェクトデータの識別子と、それに対応するデータの性質を表す複数の数値化された指標と、接続されている前記複数のデータ記憶ノードの接続情報と、該データ記憶ノードに設定された前記複数の数値化された指標に基づいて、前記複数のデータ記憶ノードの中から特定のデータ記憶ノードを選択し、該データ記憶ノードに前記アクセス命令を転送する手段と、
前記データ記憶ノードが記憶するオブジェクトデータを読み込み、前記クライアントノードに送信する手段と、を有し、
データ記憶ノードが記憶するオブジェクトデータを変更することができ、
前記データ記憶ノードに設定された前記複数の数値化された指標を予め調整または変更することにより、前記データ記憶ノードが記憶するオブジェクトデータを変更するようにしてもよい。【０１１２】
また、上記の各構成の分散記憶システムに対応する分散処理方法によっても、本発明の効果を奏することができる。さらに、上記の各構成を有する分散記憶システム、並びに対応する装置を、コンピュータによって実現するコンピュータプログラム、および、そのコンピュータプログラムが格納されているコンピュータ読み取り可能な記憶媒体によっても、本発明の効果を奏することができる。【０１１３】
本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。【０１１４】
なお、上記実施形態の一部又は全部は、以下の付記として記載することができるものであるが、これらに限定されるものではない。【０１１５】
（付記１）複数のデータ記憶ノードを備える分散記憶システムであって、
複数の指標によって特徴付けられるオブジェクトデータがあり、
前記オブジェクトデータの識別子と複数の前記データ記憶ノードの固有の番号などの識別子と重み付け情報から一意に前記オブジェクトデータを記憶する前記データ記憶ノードを決定するアルゴリズムがあるとき、
前記オブジェクトデータの各指標の値と前記データ記憶ノードの情報から前記データ記憶ノードの重み付けを算出し、
前記オブジェクトデータの識別子と前記データ記憶ノードの識別子と前記データ記憶ノードの重み付けから、前記アルゴリズムを用いて一意に前記オブジェクトデータの前記データ記憶ノードを決定することを特徴とする分散記憶システム。【０１１６】
（付記２）前記アルゴリズムは、前記オブジェクトデータの各指標の値と前記データ記憶ノードの情報から選択する可能性がある前記データ記憶ノードを限定することを特徴とする、付記１に記載の分散記憶システム。【０１１７】
（付記３）前記データ記憶ノードの情報は、前記オブジェクトデータの各指標と１対１で対応する数値であることを特徴とする、付記１または２に記載の分散記憶システム。【０１１８】
（付記４）前記データ記憶ノードの情報は、前記オブジェクトデータの各指標の数値の分布に応じて変化することを特徴とする、付記３に記載の分散記憶システム。【０１１９】
（付記５）前記データ記憶ノードの重み付けは、前記オブジェクトデータの各指標および前記オブジェクトデータの各指標と１対１で対応する前記データ記憶ノードの情報を座標軸とする空間上に、前記オブジェクトデータの各指標の値および前記データ記憶ノードのオブジェクトデータの各指標と１対１で対応する値を空間上の位置として、前記オブジェクトデータおよび前記データ記憶ノードを配置したときの、前記オブジェクトデータと前記データ記憶ノードとの空間的な距離であることを特徴とする、付記３または４に記載の分散記憶システム。【０１２０】
（付記６）前記オブジェクトデータの各指標および前記オブジェクトデータの各指標と１対１で対応するデータ記憶ノードの情報を座標軸とする空間は、座標軸が直交するユークリッド空間であることを特徴とする、付記５に記載の分散記憶システム。【０１２１】
（付記７）前記アルゴリズムは、
重み付けと固有の番号を有するデータ記憶ノードと、識別子を有するオブジェクトデータとがある場合に、
前記オブジェクトデータの識別子をシードとする疑似乱数発生関数によって疑似乱数を発生し、
前記データ記憶ノードの固有の番号と同じ順番に発生した前記乱数を前記データ記憶ノードの乱数とし、
前記データ記憶ノードの乱数に前記重み付けを掛けた値を前記データ記憶ノードの重み付き乱数とし、
前記データ記憶ノードの重み付き乱数が最も大きい前記データ記憶ノードを、前記オブジェクトデータを記憶するノードとすることを特徴とする、付記１ないし６のいずれか１に記載の分散記憶システム。【０１２２】
（付記８）複数のアルゴリズム実行手段を備える分散実行システムであって、
複数の指標によって特徴付けられるアルゴリズムがあり、
前記アルゴリズムの識別子と複数の前記アルゴリズム実行手段の固有の番号などの識別子と重み付け情報から一意に前記アルゴリズムを実行する前記アルゴリズム実行手段を決定する実行手段決定アルゴリズムがあるとき、
前記アルゴリズムの各指標の値と前記アルゴリズム実行手段の情報から前記アルゴリズム実行手段の重み付けを算出し、
前記アルゴリズムの識別子と前記アルゴリズム実行手段の識別子と前記アルゴリズム実行手段の重み付けから前記実行手段決定アルゴリズムを用い一意に前記アルゴリズムを実行する前記アルゴリズム実行手段を決定する、ことを特徴とするアルゴリズム実行手段決定方法。【０１２３】
（付記９）複数の物理的な実体を持つデータ記憶ノードを備える分散保管システムであって、
複数の指標によって特徴付けられる物理的な実体を持つオブジェクトがあり、
前記物理的な実体を持つオブジェクトの識別子と複数の物理的な実体を持つデータ記憶ノードの固有の番号などの識別子と重み付け情報から一意に前記物理的な実体を持つオブジェクトを保管する前記物理的な実体を持つデータ記憶ノードを決定するアルゴリズムがあるとき、
前記物理的な実体を持つオブジェクトの各指標の値と前記物理的な実体を持つデータ記憶ノードの情報から前記物理的な実体を持つデータ記憶ノードの重み付けを算出し、
前記物理的な実体を持つオブジェクトの識別子と前記物理的な実体を持つデータ記憶ノードの識別子と前記物理的な実体を持つデータ記憶ノードの重み付けから前記アルゴリズムを用い一意に前記物理的な実体を持つオブジェクトの前記物理的な実体を持つデータ記憶ノードを決定することを特徴とする、物理的な実体を持つデータ記憶ノード決定方法。
【符号の説明】
【０１２４】
１０    クライアントノード
１１    メタデータ記憶ノード判定部
１２    データ識別子送信部
１３    ノード情報記憶部
１４    データ記憶ノード判定部
１５    メタデータ送信部
１６    データ受信部
２０    メタデータ記憶ノード
２１    データ識別子受信部
２２    メタデータ記憶部
２３    メタデータ判定部
２４    ノード情報記憶部
２５    ノード判定部
２６    データ識別子送信部
３０    データ記憶ノード
３１    データ識別子受信部
３２    データ記憶部
３３    データ判定部
３４    データ送信部
３５    メタデータ受信部
３６    メタデータ判定部
４０    分散記憶システム
５０    データ記憶ノード
５１    データ識別子受信部
５２    データ判定部
５３    データ記憶部
５４    データ送信部
５５    メタデータ受信部
５６    メタデータ判定部
６０    分散記憶システム
７０    分散記憶システム
７１ａ〜７１ｃ    データ記憶ノード
７２    クライアントノード
９０    ノード
９１    ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）
９２    ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）
９３    ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）
９４    ハードディスクドライブ（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）
９５    通信インタフェース（Ｉ／Ｆ：Ｉｎｔｅｒｆａｃｅ）
９６    バス
１００    分散記憶システム
１０１    記憶ノード
１１０    クライアントノード
１１１    記憶テーブル
【図１】
2012124178.tif 000003
【図２】
2012124178.tif 000004
【図３】
2012124178.tif 000005
【図４】
2012124178.tif 000006
【図５】
2012124178.tif 000007
【図６】
2012124178.tif 000008
【図７】
2012124178.tif 000009
【図８】
2012124178.tif 000010
【図９】
2012124178.tif 000011
【国際調査報告】
2012124178.tif 000012
2012124178.tif 000013
2012124178.tif 000014
2012124178.tif 000015