(57)【要約】  複数のオブジェクト（ＯＢＪ）を個々の配置先に配置する際に、係る配置先毎に配置すべきＯＢＪの数量のおおよそのバランスを、比較的簡単な処理構成によって決定することができ、且つ配置先が増減した際においても、移動が必要なＯＢＪを最小限に抑制することができるオブジェクト配置装置等が開示される。  ＯＢＪ配置装置１０は、  空間ＷＳの一部をなす部分空間ＰＳが割り付けられた複数次元空間を示し、且つ互いに異なる識別子情報１１を与えられた場合は相互関係を略有しない空間指定情報１５を、配置先１４に配置すべき注目ＯＢＪに固有な情報に基づいて生成された当該識別子情報に基づいて生成する空間指定情報生成機能２２と、  ＯＢＪを配置可能な個々の配置先を識別する配置先指定情報１７と、前記部分空間を表す部分空間情報とが関連付けされた対応情報１２を、前記空間指定情報に基づいて参照し、その空間指定情報が、前記対応情報に含まれる部分空間情報を指し示すと判断した際、該指し示した特定の部分空間情報が前記対応情報において関連付けされている特定の配置先識別子に対応する配置先に、前記注目ＯＢＪを配置するよう決定する配置先決定機能２４とを備える。
2013132779.tif 000002
【特許請求の範囲】
【請求項１】
自装置が扱う空間の一部をなす部分空間が割り付けられた複数次元空間を示すと共に、互いに異なる識別子情報を与えられた場合は相互関係を略有しない空間指定情報を、配置先に配置すべき注目オブジェクトに固有な情報に基づいて生成された該識別子情報に基づいて生成する空間指定情報生成手段と、
オブジェクトを配置可能な個々の配置先を識別する配置先識別子と、前記部分空間を表す部分空間情報とが関連付けされた対応情報を、前記空間指定情報に基づいて参照し、その空間指定情報が、前記対応情報に含まれる部分空間情報を指し示すと判断した際には、該指し示した特定の部分空間情報が前記対応情報において関連付けされている特定の配置先識別子に対応する配置先に、前記注目オブジェクトを配置するよう決定する配置先決定手段と、
を備えることを特徴とするオブジェクト配置装置。
【請求項２】
前記配置先決定手段は、
前記空間指定情報が、前記対応情報に含まれる部分空間情報を指し示さないと判断する度に、前記空間指定情報生成手段に新たな空間指定情報の生成を指示すると共に、生成された新たな空間指定情報に基づいて、該新たな空間指定情報が前記対応情報に含まれる部分空間情報を指し示すか否かの判断を、前記注目オブジェクトを配置すべき配置先を決定するまで繰り返す
ことを特徴とする請求項１記載のオブジェクト配置装置。
【請求項３】
前記複数次元空間における次元数は、少なくとも、前記オブジェクトを表す複数種類の情報の種類数と同じである
ことを特徴とする請求項１または２記載のオブジェクト配置装置。
【請求項４】
前記空間指定情報生成手段は、
前記複数次元空間において空間軸をなすところの、前記オブジェクトの属性を特徴付ける特徴量を参照することにより、前記空間指定情報を生成する際の空間の範囲を限定する
ことを特徴とする請求項１乃至請求項３の何れかに記載のオブジェクト配置装置。
【請求項５】
前記空間指定情報生成手段は、
前記複数次元空間において少なくとも２つの空間軸をなすところの、互いに異なる複数の疑似乱数を参照することにより、前記空間指定情報を生成する際の空間の範囲を限定する
ことを特徴とする請求項１乃至請求項４の何れかに記載のオブジェクト配置装置。
【請求項６】
前記配置先決定手段は、
前記空間指定情報として、同一の情報が入力されるのに応じて同一の空間指定情報を繰り返し生成可能な空間指定情報生成手段と、
前記空間指定情報生成手段によって生成された前記空間指定情報に基づいて、前記対応情報を参照することにより、前記空間指定情報が前記対応情報に含まれる部分空間情報を指し示すか否かを判断し、その判断によって前記空間指定情報が指し示す特定の部分空間情報を検出した際には、その特定の部分空間情報が前記対応情報において関連付けされている特定の配置先識別子に対応する配置先に、前記注目オブジェクトを配置するよう判断する判断手段とを含む
ことを特徴とする請求項１乃至請求項５の何れかに記載のオブジェクト配置装置。
【請求項７】
前記空間指定情報が指し示すことができる空間を変更することが可能であり、
前記配置先決定手段は、
前記変更の前に前記空間指定情報生成手段が出力する個々の空間指定情報のうち、前記変更の後に前記空間指定情報生成手段が出力する空間指定情報は、前記変更の後に前記空間指定情報生成手段が出力する個々の空間指定情報の順番を維持する
ことを特徴とする請求項１乃至請求項６の何れかに記載のオブジェクト配置装置。
【請求項８】
前記対応情報を自装置に備え、
前記配置先決定手段は、
前記対応情報に関連付けされた部分空間情報の更新によって、前記空間を変更する
ことを特徴とする請求項７記載のオブジェクト配置装置。
【請求項９】
前記配置先決定手段が生成する空間指定情報が指し示すことができる空間は、全ての前記部分空間を内包する
ことを特徴とする請求項１乃至請求項８の何れかに記載のオブジェクト配置装置。
【請求項１０】
前記空間指定情報生成手段が、生成する副空間指定情報が指し示すことができる空間が互いに異なる複数の副空間指定情報生成手段を含み、該複数の副空間指定情報生成手段において、第ｎの副空間指定情報生成手段が生成する第ｎの副空間指定情報が指し示すことができる空間は、その空間より広い空間を指し示すことが可能な第（ｎ＋１）の副空間指定情報生成手段が生成する第（ｎ＋１）の副空間指定情報が指し示すことができる空間に内包された関係をなす場合に、
前記空間指定情報生成手段は、
前記複数の副空間指定情報生成手段のうち、生成する空間が最も広い副空間指定情報生成手段から順に空間指定情報を生成する過程において、
生成された副空間指定情報が、次に副空間指定情報を生成すべき副空間指定情報生成手段が生成する副空間指定情報が指し示すことができる空間に含まれていない場合、或いは、次に副空間指定情報を生成すべき副空間指定情報生成手段が存在しない場合には、前記生成された副空間指定情報を、前記空間指定情報として選択する
ことを特徴とする請求項９記載のオブジェクト配置装置。
【請求項１１】
前記配置先決定手段は、
前記空間の一部を、前記空間指定情報が略一様な分布確率で指し示す
ことを特徴とする請求項１乃至請求項１０の何れかに記載のオブジェクト配置装置。
【請求項１２】
前記オブジェクトは、処理であって、
前記配置先決定手段は、
前記処理が実行される配置先を決定する
ことを特徴とする請求項１乃至請求項１１の何れかに記載のオブジェクト配置装置。
【請求項１３】
前記配置先は、ストレージであって、
前記オブジェクトは、
前記ストレージに格納される数値データおよび特定の処理が記述されたソフトウェアプログラムの少なくとも何れかを構成するオブジェクトデータである
ことを特徴とする請求項１乃至請求項１１の何れかに記載のオブジェクト配置装置。
【請求項１４】
前記オブジェクトは、物品であって、
前記配置先決定手段によって決定された配置先に前記物品を仕分けるよう決定する
ことを特徴とする請求項１乃至請求項１１の何れかに記載のオブジェクト配置装置。
【請求項１５】
オブジェクト配置装置が扱う空間の一部をなす部分空間が割り付けられた複数次元空間を示すと共に、互いに異なる識別子情報を与えられた場合は相互関係を略有しない空間指定情報を、配置先に配置すべき注目オブジェクトに固有な情報に基づいて生成された該識別子情報に基づいて生成し、
オブジェクトを配置可能な個々の配置先を識別する配置先識別子と、前記部分空間を表す部分空間情報とが関連付けされた対応情報を、前記空間指定情報に基づいて参照し、
前記空間指定情報が、前記対応情報に含まれる部分空間情報を指し示すと判断した際には、該指し示した特定の部分空間情報が前記対応情報において関連付けされている特定の配置先識別子に対応する配置先に、前記注目オブジェクトを配置するよう決定する
ことを特徴とするオブジェクト配置方法。
【請求項１６】
前記空間指定情報が、前記対応情報に含まれる部分空間情報を指し示さないと判断する度に、新たな空間指定情報を生成し、
前記生成した新たな空間指定情報に基づいて、該新たな空間指定情報が前記対応情報に含まれる部分空間情報を指し示すか否かの判断を、前記注目オブジェクトを配置すべき配置先を決定するまで繰り返す
ことを特徴とする請求項１５記載のオブジェクト配置方法。
【請求項１７】
前記複数次元空間における次元数を、少なくとも、前記オブジェクトを表す複数種類の情報の種類数と同じにする
ことを特徴とする請求項１５または１６記載のオブジェクト配置方法。
【請求項１８】
前記空間指定情報を生成するに際して、
前記複数次元空間において空間軸をなすところの、前記オブジェクトの属性を特徴付ける特徴量を参照することにより、前記空間指定情報を生成する際の空間の範囲を限定する
ことを特徴とする請求項１５乃至請求項１７の何れかに記載のオブジェクト配置方法。
【請求項１９】
前記空間指定情報を生成するに際して、
前記複数次元空間において少なくとも２つの空間軸をなすところの、互いに異なる複数の疑似乱数を参照することにより、前記空間指定情報を生成する際の空間の範囲を限定する
ことを特徴とする請求項１５乃至請求項１８の何れかに記載のオブジェクト配置方法。
【請求項２０】
前記空間指定情報が指し示すことができる空間を変更可能とし、
前記配置先の決定に際して、
前記変更の前に生成した個々の空間指定情報のうち、前記変更の後に生成した空間指定情報は、前記変更の後に生成した個々の空間指定情報の順番を維持する
ことを特徴とする請求項１５乃至請求項１９の何れかに記載のオブジェクト配置方法。
【請求項２１】
自装置が扱う空間の一部をなす部分空間が割り付けられた複数次元空間を示すと共に、互いに異なる識別子情報を与えられた場合は相互関係を略有しない空間指定情報を、配置先に配置すべき注目オブジェクトに固有な情報に基づいて生成された該識別子情報に基づいて生成する空間指定情報生成機能と、
オブジェクトを配置可能な個々の配置先を識別する配置先識別子と、前記部分空間を表す部分空間情報とが関連付けされた対応情報を、前記空間指定情報に基づいて参照し、その空間指定情報が、前記対応情報に含まれる部分空間情報を指し示すと判断した際には、該指し示した特定の部分空間情報が前記対応情報において関連付けされている特定の配置先識別子に対応する配置先に、前記注目オブジェクトを配置するよう決定する配置先決定機能とを、コンピュータに実行させる
ことを特徴とするコンピュータ・プログラム。
【請求項２２】
前記配置先決定機能として、
前記空間指定情報が、前記対応情報に含まれる部分空間情報を指し示さないと判断する度に、前記空間指定情報生成機能に新たな空間指定情報の生成を指示すると共に、生成された新たな空間指定情報に基づいて、該新たな空間指定情報が前記対応情報に含まれる部分空間情報を指し示すか否かの判断を、前記注目オブジェクトを配置すべき配置先を決定するまで繰り返す処理を、前記コンピュータに実行させる
ことを特徴とする請求項２１記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データや物品などのオブジェクトを、特定の配置先に最適に配置する技術分野に関する。
【背景技術】
【０００２】
記憶対象のデータ（以下、「オブジェクトデータ」と称する）を複数のストレージに記憶（格納）する場合、そのオブジェクトデータを略一様（均等）に分散した状態で、個々のストレージに記憶する技術が提案されている。このような技術によれば、係る複数のストレージへの同時アクセスを行うことにより、当該オブジェクトデータへのアクセス性能が向上する。しかしながら、複数のストレージに分散記憶したオブジェクトデータにアクセスする際、オブジェクトデータを記憶しているストレージの状態を調べる方法が問題になる。【０００３】
オブジェクトデータを記憶しているストレージの状態を調べる方法としては、次の２つの方法が考えられる。【０００４】
１つ目の方法は、オブジェクトデータとストレージとの対応関係をテーブルによって保持しておき、データアクセスに際して、そのテーブルを参照することによってオブジェクトデータを記憶しているストレージを調べる方法である。【０００５】
２つ目の方法では、まず、オブジェクトデータとストレージとの対応関係を、そのオブジェクトデータに固有の情報（以下、「メタデータ」と称する）に基づく特定のアルゴリズムを用いて決定しておく。そして、係る２つ目の方法では、データアクセスに際して、当該アルゴリズムにメタデータを入力することにより、注目するオブジェクトデータが記憶されているストレージを調べる。【０００６】
上述した１つ目の方法（テーブル参照を用いる方法）では、オブジェクトデータとストレージとの対応関係を保持するテーブルを、オブジェクトデータとストレージとの対応を調べる可能性がある全ての機器が記憶しなければならない。【０００７】
一方、上述した２つ目の方法（アルゴリズムを用いる方法）は、情報処理装置を用いてアルゴリズムを実行することにより、オブジェクトデータを記憶すべきストレージを決定する。このため、係る２つ目の方法では、そのオブジェクトデータとストレージとの対応関係を保持するテーブルを記憶する必要はない。但し、係る２つ目の方法では、データアクセスに際して複数のストレージへの同時アクセスの性能向上が十分発揮されるように、オブジェクトデータを十分に分散した状態で個々のストレージに記憶するアルゴリズムが必要である。また、係る２つ目の方法では、ストレージ台数が増減する可能性がある場合、ストレージ台数の増減に対応したオブジェクトデータとストレージとの対応を演算するアルゴリズムが必要になる。ここで、係る２つ目の方法を開示する関連技術としては、特許文献１及び特許文献２がある。【０００８】
また、オブジェクトデータを複数のストレージに記憶（格納）する場合、オブジェクトデータと、そのオブジェクトデータを記憶したストレージとの対応関係（対応状態）を管理することが問題になる。オブジェクトデータをストレージに対して高速に読み書きするためには、注目するオブジェクトデータが記憶されている特定のストレージを高速に判定する必要がある。係るオブジェクトデータとそのオブジェクトデータが記憶された特定のストレージとの対応関係をアルゴリズムによって決定する方法は、高いスケーラビリティを持つ。このため、係る２つ目の方法は、上述した１つ目の方法（テーブル参照を用いる方法）と比較して優れている。【０００９】
但し、上述した２つ目の方法（アルゴリズムを用いる方法）を採用する場合は、ストレージの増減に際して、複数のストレージ間で移動するオブジェクトデータの数量（個数：amount of numbers）が問題になる。なぜなら、ストレージが増減した際に、移動対象となるオブジェクトデータが多い場合には、処理性能が低下するためである。【００１０】
そこで近年においては、ストレージが増減した際に、最小限のオブジェクトデータの移動によって、オブジェクトデータとストレージとの対応関係を、アルゴリズムによって判定可能な状態を維持することが可能な技術が提案されている。このような技術によれば、ストレージを容易に追加、或いは削除することができる。しかしながら、このような技術においては、各ストレージが記憶するオブジェクトデータの数量のバランス（以下、「比」或いは「分散の度合い」とも称する場合がある）を柔軟に調整することが求められる。【００１１】
そこで、上述した２つ目の方法においては、ストレージが増減した際に最小限のオブジェクトデータの移動によってオブジェクトデータとストレージとの対応関係をアルゴリズムによって判定可能な状態を維持可能である共に、更に、各ストレージが記憶するオブジェクトデータの数量のおおよそのバランスを調整できる技術が提案されている。このような技術としては、非特許文献１及び特許文献３に記載された方法が提案されている。【００１２】
図２０は、本願出願に先立って存在する非特許文献１に記載された関連技術を説明する図である。図２０には、既知のオブジェクトデータとストレージとの対応関係を、そのオブジェクトデータに関するメタデータに基づいて決定するシステムの一例として、システム６００が示されている。システム６００は、係るメタデータを用いて、当該オブジェクトデータを記憶するストレージを決定する。【００１３】
即ち、システム６００において、ハッシュ演算機能６０１は、各ストレージ６１０に対して、オブジェクトデータ及びそのメタデータのうちのメタデータ（オブジェクトデータメタデータ）６１２と、ストレージ及びそのメタデータのうちのメタデータ（ストレージメタデータ）６１４とに基づいてハッシュ演算を行うことにより、ハッシュ６１５を得る。【００１４】
ここで、オブジェクトデータメタデータ６１２は、当該オブジェクトデータを特定するために与えられた識別子であって、アドレス、オブジェクト名、ディレクトリ名、或いはファイル名などの情報である。ストレージメタデータ６１４は、当該ストレージを特定するために与えられた識別子であって、アドレス、通信ネットワーク上の名前、デバイス名、デバイス番号など機器もしくは仮想的な媒体を特定する情報である。【００１５】
次に重み付け機能６０２は、各ストレージ６１０のハッシュ６１５と、各ストレージ６１０が記憶できるオブジェクトデータの数量に基づいて設定したストレージの重み情報とを掛け合わせることにより、重み付きハッシュ６１８を得る。【００１６】
そして、最大ハッシュ判定機能６０３は、当該各ストレージ６１０に関して求めた重み付きハッシュ６１８の中で最も値が大きな最大ハッシュ６１９を判定する。最後に、ストレージ対応判断機能６０４は、最大ハッシュ６１９に対応する特定のストレージ６１０を決定し、当該最大ハッシュ６１９に対応するストレージ６１０に関するストレージ識別情報６２０を出力する。【００１７】
上述した関連技術によれば、ストレージの重み情報を変更することにより、各ストレージ６１０が記憶するオブジェクトデータの数量のおおよそのバランス（比）を変更することができる。また、係る関連技術によれば、ストレージ６１０が増減した際に最小限のオブジェクトデータの移動によって、オブジェクトデータとストレージ６１０との対応関係をアルゴリズムによって求められる状態を維持することができる。【００１８】
また、本願出願に先だって存在する関連技術として、例えば、非特許文献２がある。非特許文献２には、複数のストレージにオブジェクトデータが分散配置された状態においてストレージが増減した際に、最小限のオブジェクトデータの移動によってオブジェクトデータとストレージとの対応関係をアルゴリズムによって判定できる状態を維持することができる技術が提案されている。非特許文献２においても各ストレージに記憶するオブジェクトデータの数量のおおよそのバランスを決定することができる。【００１９】
また、本願出願に先だって存在する関連技術として、特許文献３には、ファイルネームをシードとして乱数値（疑似乱数値）を求め、その乱数値をキーとしてマップを検索する処理が記載されている。このマップには、乱数値とサーバとが関連付けされている。特許文献３においては、係るマップを参照しながら、注目する乱数値に対応するサーバが見つかるまで、新たに求めた乱数値を利用して係る検索を繰り返すことにより、複数のサーバからなるサーバプールの中から、特定のサーバを選択する技術が記載されている。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】特開２００３−２１６４７４号公報
【特許文献２】特開２００８−１８１３５８号公報
【特許文献３】ＵＳ２００９／０１６５０１７Ａ１
【非特許文献】
【００２１】
【非特許文献１】“ＣＲＵＳＨ：ｃｏｎｔｒｏｌｌｅｄ，  ｓｃａｌａｂｌｅ，ｄｅｃｅｎｔｒａｌｉｚｅｄ  ｐｌａｃｅｍｅｎｔ  ｏｆ  ｒｅｐｌｉｃａｔｅｄ  ｄａｔａ，”  Ｓａｇｅ  Ａ．  Ｗｅｉｌ，  Ｓｃｏｔｔ  Ａ．  Ｂｒａｎｄｔ，  Ｅｔｈａｎ  Ｌ．  Ｍｉｌｌｅｒ，  Ｃａｒｌｏｓ  Ｍａｌｔｚａｈｎ，  ２００６
【非特許文献２】“Ｃｏｎｓｉｓｔｅｎｔ  ｈａｓｈｉｎｇ  ａｎｄ  ｒａｎｄｏｍ  ｔｒｅｅｓ：  ｄｉｓｔｒｉｂｕｔｅｄ  ｃａｃｈｉｎｇ  ｐｒｏｔｏｃｏｌｓ  ｆｏｒ  ｒｅｌｉｅｖｉｎｇ  ｈｏｔ  ｓｐｏｔｓ  ｏｎ  ｔｈｅ  Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ”，  Ｄａｖｉｄ  Ｋａｒｇｅｒ，  Ｅｒｉｃ  Ｌｅｈｍａｎ，  Ｔｏｍ  Ｌｅｉｇｈｔｏｎ，  Ｍａｔｔｈｅｗ  Ｌｅｖｉｎｅ，  Ｄａｎｉｅｌ  Ｌｅｗｉｎ，  Ｒｉｎａ  Ｐａｎｉｇｒａｈｙ，  １９９７
【発明の概要】
【発明が解決しようとする課題】
【００２２】
しかしながら、非特許文献１に記載された手法では、個々のストレージ６１０が記憶するオブジェクトの個数のバランス（比）を決めるストレージの重み情報を、係るストレージの増減と共に調整する必要がある。即ち、非特許文献１に記載された手法においては、オブジェクトの配置先の増減が発生する度に、当該個々の配置先に記憶するオブジェクトの数量の比に基づいて、ストレージの重みを設定する必要がある。このため、係る手法によっては、処理構成が複雑になる。【００２３】
そして、上述した特許文献１，２および非特許文献２に記載された手法においては、各配置先間における記憶すべきオブジェクトの数量のバランス（比、分散の度合い）を細かく決定することはできない。また、特許文献3に記載された手法には、スケーラビリティと効率性との両立性に問題がある。【００２４】
そこで、本発明は、複数のオブジェクトを個々の配置先に配置する際に、係る配置先毎に配置すべきオブジェクトの数量のおおよそのバランスを、比較的簡単な処理構成によって決定することができ、且つ配置先が増減した際においても、移動が必要なオブジェクトを最小限に抑制することができるオブジェクト配置装置等を提供することを主たる目的とする。
【課題を解決するための手段】
【００２５】
上記の目的を達成すべく、本発明に係るオブジェクト配置装置は、以下の構成を備えることを特徴とする。【００２６】
即ち、係るオブジェクト配置装置は、
自装置が扱う空間の一部をなす部分空間が割り付けられた複数次元空間を示すと共に、互いに異なる識別子情報を与えられた場合は相互関係を略有しない空間指定情報を、配置先に配置すべき注目オブジェクトに固有な情報に基づいて生成された該識別子情報に基づいて生成する空間指定情報生成手段と、
オブジェクトを配置可能な個々の配置先を識別する配置先識別子と、前記部分空間を表す部分空間情報とが関連付けされた対応情報を、前記空間指定情報に基づいて参照し、その空間指定情報が、前記対応情報に含まれる部分空間情報を指し示すと判断した際には、該指し示した特定の部分空間情報が前記対応情報において関連付けされている特定の配置先識別子に対応する配置先に、前記注目オブジェクトを配置するよう決定する配置先決定手段と、
を備えることを特徴とする。【００２７】
また、本発明の他の見地において、本発明に係るオブジェクト配置方法は、以下の構成を有することを特徴とする。【００２８】
即ち、係るオブジェクト配置方法は、
オブジェクト配置装置が扱う空間の一部をなす部分空間が割り付けられた複数次元空間を示すと共に、互いに異なる識別子情報を与えられた場合は相互関係を略有しない空間指定情報を、配置先に配置すべき注目オブジェクトに固有な情報に基づいて生成された該識別子情報に基づいて生成し、
オブジェクトを配置可能な個々の配置先を識別する配置先識別子と、前記部分空間を表す部分空間情報とが関連付けされた対応情報を、前記空間指定情報に基づいて参照し、
前記空間指定情報が、前記対応情報に含まれる部分空間情報を指し示すと判断した際には、該指し示した特定の部分空間情報が前記対応情報において関連付けされている特定の配置先識別子に対応する配置先に、前記注目オブジェクトを配置するよう決定する
ことを特徴とする。【００２９】
尚、同目的は、上記の各構成を有するオブジェクト配置装置またはオブジェクト配置方法を、コンピュータによって実現するコンピュータ・プログラム、及びそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００３０】
本発明によれば、複数のオブジェクトを個々の配置先に配置する際に、係る配置先毎に配置すべきオブジェクトの数量のおおよそのバランスを、比較的簡単な処理構成によって決定することができ、且つ配置先が増減した際においても、移動が必要なオブジェクトを最小限に抑制することができることができる。
【図面の簡単な説明】
【００３１】
【図１】図１は、本発明の模範的な実施形態に係るオブジェクト配置装置の構成を示すブロック図である。
【図２】図２は、本発明の模範的な第１の実施形態におけるオブジェクトデータ配置装置の構成を示すブロック図である。
【図３Ａ】図３Ａは、本発明の第１の実施形態に係る部分空間−ストレージ対応表を例示する図である。
【図３Ｂ】図３Ｂは、本発明の第１の実施形態に係る部分空間−ストレージ対応表を例示する図である。
【図４】図４は、本発明の第１の実施形態に係るオブジェクトデータ配置装置によるオブジェクトデータの配置動作を説明する図である。
【図５】図５は、本発明の第１の実施形態に係るオブジェクトデータ配置装置により、図４に示した配置状態から、ストレージを追加した場合の動作を説明する図である。
【図６】図６は、本発明の第１の実施形態に係るオブジェクトデータ配置装置により、図４に示した配置状態から、ストレージが削減された場合の動作を説明する図である。
【図７】図７は、本発明の第１の実施形態に係るオブジェクトデータ配置装置が実行するオブジェクトデータの配置処理を示すフローチャートである。
【図８】図８は、本発明の第１の実施形態に係るオブジェクトデータ配置装置を、２次元空間に適用する場合について例示的に説明する図である。
【図９Ａ】図９Ａは、本発明の第１の実施形態に係るオブジェクトデータ配置装置を、３次元空間に適用する場合について例示的に説明する図である。
【図９Ｂ】図９Ｂは、本発明の第１の実施形態に係るオブジェクトデータ配置装置を、３次元空間に適用する場合について例示的に説明する図である。
【図１０】図１０は、本発明の模範的な第２の実施形態におけるオブジェクトデータ配置装置の構成を示すブロック図である。
【図１１】図１１は、本発明の第２の実施形態に係るオブジェクトデータ配置装置が実行するオブジェクトデータの配置処理を示すフローチャートである。
【図１２】図１２は、第２の実施形態の変形例に係る３つの空間指定情報演算機能の動作を説明する図である。
【図１３】図１３は、本発明の第３の実施形態に係るオブジェクト送り先決定装置の構成を示すブロック図である。
【図１４】図１４は、本発明の第３の実施形態に係るオブジェクト送り先決定装置が実行するオブジェクトの送り先決定処理を示すフローチャートである。
【図１５】図１５は、本発明の第３の実施形態に係る貯蔵物の保存先決定システムの構成を示すブロック図である。
【図１６Ａ】図１６Ａは、本発明の第４の実施形態に係るシステム環境のバリエーションを例示的に説明する図である。
【図１６Ｂ】図１６Ｂは、本発明の第４の実施形態に係るシステム環境のバリエーションを例示的に説明する図である。
【図１７】図１７は、本発明の第１乃至第４の実施形態およびそれらの変形例に係るクライアントまたはストレージのハードウェア構成を例示的に説明する図である。
【図１８】図１８は、本発明の第２の実施形態に係る実施例としてのストレージシステムの構成を示す図である。
【図１９】図１９は、本発明の第２の実施形態に係る実施例としてのストレージシステムにおける部分空間とストレージノードとの対応表を表す図である。
【図２０】図２０は、本願出願に先立って存在する非特許文献１に記載された関連技術を説明する図である。
【発明を実施するための形態】
【００３２】
次に、本発明を模範的に実施する形態について図面を参照して詳細に説明する。尚、以下に説明する実施形態は、特許請求の範囲に係る発明を限定することはなく、また実施形態の中で説明されている構成の組み合わせの全てが発明の解決機能に必須であるとは限らない。
【００３３】
図１は、本発明の模範的な実施形態に係るオブジェクト配置装置の構成を示すブロック図であり、以下に説明する各実施形態およびその変形例、並びに実施例に共通する概念を表す。
【００３４】
図１において、オブジェクト配置装置１０は、複数のオブジェクト（不図示）の配置先を、複数の配置先（Ａ，Ｂ，Ｃ，・・・ｎ）１４の中から決定する装置である。このオブジェクト配置装置１０は、空間指定情報生成機能２２と、配置先決定機能２４とを有する。オブジェクト配置装置１０は、識別子情報１１と、対応情報１２とを参照可能である。ここで、識別子情報１１は、オブジェクトが個別に有する固有な情報に基づいて生成された情報（例えばメタデータ）である。対応情報１２については後述する。
【００３５】
空間指定情報生成機能２２は、識別子情報１１を用いて、互いに異なる当該識別子情報を基に生成された場合には相互関係を略有しない空間指定情報１５を生成する。ここで、空間指定情報１５における、「互いに異なる識別子情報から生成された場合には相互関係を略有しない」、という関係について補足する。この関係は、例えば、識別子情報Ａを基に空間指定情報Ａが順次生成される一方で、識別子情報Ｂを基に空間指定情報Ｂが順次生成されると仮定した場合、生成された空間指定情報Ａ群と、空間指定情報Ｂ群とは、相互関係を略有しないという関係である。
【００３６】
配置先決定機能２４は、対応情報１２と、空間指定情報生成機能２２によって生成された空間指定情報１５とを用いて、注目するオブジェクトの配置先を決定する。
【００３７】
対応情報１２は、配置先識別子ＡＩＤと、部分空間ＰＳとが予め関連付けされた情報である。この配置先識別子ＡＩＤは、配置先１４を識別（特定）可能な情報（例えば、特定のストレージを表す識別子）である。
【００３８】
ここで、部分空間ＰＳと、空間指定情報１５とについて説明する。本実施形態において、全ての部分空間ＰＳは、空間（全体空間）WＳに含まれている。空間WＳには、１次元空間（直線）、２次元空間（例えば後述する図８）、３次元空間（例えば後述する図９Ａ及び図９Ｂ）、並びに更に多次元空間など様々な空間を採用することができる。但し、空間WＳには、複数次元空間を採用することにより、１次元空間を採用する場合と比較して、実装に際して様々な利点を享受することができる。
【００３９】
係る空間WＳとしては、連続な空間、不連続な空間、ユークリッド空間、非ユークリッド空間など様々な空間を採用することができる。単純な例としては、数直線をなす座標軸を１次元空間と想定した場合、数直線をなす座標軸は、空間WＳの一例である。そして、係る数直線上の整数の値、或いは、係る数直線上に不連続に割り付けられた数値範囲を表す個々の線分は、部分空間ＰＳを表す。
【００４０】
また、係る空間WＳの別の例として、２次元空間の場合は、連続なユークリッド空間を採用することができる。係る２次元空間の場合、空間WＳは、例えば、２次元空間をなす２本の座標軸上にそれぞれ設定された実数値によって特定される点、或いは、当該２本の座標軸上に不連続に割り付けられた数値範囲を表す個々の線分によって区画される矩形領域は、部分空間ＰＳを表す。そして、空間指定情報１５は、このような各種次元空間（全体空間領域）WＳに含まれる（割り付けられた）部分空間（部分的な空間領域）ＰＳの特定に使用する情報である。
【００４１】
空間領域WＳ内に割り付けられた個々の部分空間ＰＳは、上記の通り空間指定情報１５によって特定可能であって、且つ配置先識別子ＡＩＤが関連付けされるので、その配置先識別子ＡＩＤに対応する配置先１４を特定可能である。そして、個々の部分空間ＰＳの大きさは、対応する配置先１４に配置することができるオブジェクトの数量（個数）に応じて、空間WＳ内に占める大きさが異なる。この大きさの違いは、個々の部分空間ＰＳに配置することができるオブジェクトの数量のバランス（比）に対応する。
【００４２】
オブジェクト配置装置１０において、配置先決定機能２４は、上記の如く空間指定情報生成機能２２が生成した空間指定情報（現在注目する空間指定情報）１５を基に対応情報１２を参照することにより、当該対応情報１２に含まれる部分空間ＰＳを、その空間指定情報１５が指し示しているか否か判定する。
【００４３】
そして、上記の判定の結果、係る現在注目する空間指定情報１５が何れの部分空間ＰＳも指し示さない場合、配置先決定機能２４は、空間指定情報生成機能２２に対して新たな空間指定情報１５の生成を指示する再計算命令１６を与える。一方、上記の判定の結果、係る現在注目する空間指定情報１５が何れかの部分空間ＰＳを指し示すことを検出した場合、配置先決定機能２４は、検出した部分空間ＰＳに関連付けされている配置先識別子ＡＩＤを、当該対応情報１２を参照することによって特定する。そして、配置先決定機能２４は、特定した配置先識別子ＡＩＤに対応する配置先１４を、当該オブジェクトの配置先として決定したことを表す配置先指定情報１７を出力する。
【００４４】
ここで、空間指定情報１５が部分空間ＰＳを指し示すという言葉の意味について解説する。本実施形態において、「指し示す」とは、空間指定情報１５が指定する０次元以上の空間に部分空間ＰＳが存在することを意味する。即ち、空間指定情報１５が指定する０次元以上の空間に部分空間ＰＳが１個存在する場合、空間指定情報１５は、当該部分空間ＰＳを指し示す。空間指定情報１５が指し示す０次元以上の空間に複数の部分空間ＰＳが存在する場合、配置先決定機能２２は、任意のアルゴリズムなどを実行することによって、それら複数の部分空間ＰＳのうち何れか１つを選択する。係る選択に採用可能なアルゴリズムなどに関しては、現在では一般的な手法を採用することができるので、本実施形態における詳細な説明は省略する。
【００４５】
尚、識別子情報１１と対応情報１２とは、外部より設定されても、オブジェクト配置装置１０が自ら生成してもよい。
【００４６】
以上説明したオブジェクト配置装置１０によれば、複数のオブジェクトを個々の配置先に配置する際に、係る配置先毎に配置すべきオブジェクトの数量のおおよそのバランスを、比較的簡単な処理構成によって決定することができ、且つ配置先が増減した際においても、移動が必要なオブジェクトを最小限に抑制することができる。
【００４７】
尚、本願の以下の説明において、配置先を決定すべきオブジェクトに関して採り得る識別子情報（本実施形態では識別子情報１１）を基に生成される空間指定情報（本実施形態では空間指定情報１５）は、０次元以上の空間の集合を指し示すことが可能である。そして、以下の説明においては、係る指し示された空間の集合を、「指定空間ＤＳ」と称することとする。
【００４８】
＜第１の実施形態＞
図２は、本発明の模範的な第１の実施形態におけるオブジェクトデータ配置装置の構成を示すブロック図である。
【００４９】
オブジェクトデータ配置装置１００は、配置先としてのストレージ１１６に対して、オブジェクト（配置対象）としてのデータ（オブジェクトデータ）の配置先を決定する装置である。本実施形態において、オブジェクトデータは、ストレージ１１６に格納される数値データおよび特定の処理（プロセス、機能、アルゴリズム）が記述されたソフトウェアプログラム（コンピュータ・プログラム）の少なくとも何れかを構成する。
【００５０】
本実施形態において、ストレージ１１６は、図２に概念的に示す通り複数存在する。ストレージ１１６は、物理的に存在する複数のストレージが通信線によって接続された場合、物理的に存在するストレージ内部に、複数の仮想ストレージが構成される場合、或いはそれらを組み合わせた構成をも含む（以下の実施形態においても同様である）。
【００５１】
オブジェクトデータ配置装置１００は、オブジェクトデータに固有の識別子情報であるメタデータに基づいて、特定の演算によって、複数のストレージ１１６の中から、注目するオブジェクトデータを記憶（格納）すべきストレージを決定する。係るメタデータは、例えば、アドレス、オブジェクト名、ディレクトリ名、もしくはファイル名などの情報である。係るメタデータは、本実施形態に係るオブジェクトデータ及びそのメタデータ１１０に含まれ、上述した実施形態（図１）における識別子情報１１に対応する。
【００５２】
但し、本実施形態に係るオブジェクトデータ配置装置１００は、ハッシュをシード（初期値）とする乱数（疑似乱数）の生成を繰り返すのではなく、ハッシュをシード（初期値）とする空間指定情報１１５の生成を繰り返す。本実施形態において、この繰り返し行われる空間指定情報１１５の生成は、生成された空間指定情報に対応する部分空間ＰＳを指し示す空間指定情報１１５を、空間指定情報演算機能１０３が出力するまで繰り返し行われる。ここで、空間指定情報１１５は、上述した実施形態（図１）における空間指定情報１５に対応する。
【００５３】
本実施形態において以下に詳細に説明する手法によれば、ストレージ数が変更された場合において、オブジェクトデータを記憶するストレージ１１６の変更が最小限に抑えられる。ここで、ストレージ数とは、例えば、複数のストレージ１１６が物理的に存在する場合には、それらストレージ１１６の台数を表し、仮想ストレージの場合は、物理ストレージの仮想的な区分けを表す。
【００５４】
また、本実施形態に係るオブジェクトデータ配置装置１００によれば、比較的単純な処理構成により、各配置先間に記憶するオブジェクトの個数のおおよそのバランス（比）を柔軟に設定することができる。
【００５５】
オブジェクトデータ配置装置１００は、大別して、ハッシュ演算機能１０１と、ストレージ決定機能１０２とを備える。そして、ストレージ決定機能１０２は、空間指定情報演算機能１０３と、空間指示判定機能（判断機能）１０４とを含む。オブジェクトデータ配置装置１００は、部分空間−ストレージ対応表１０５と、必要に応じて特徴量１０６とを参照可能である（詳細は後述する）。ここで、ストレージ決定機能１０２は、上述した実施形態（図１）におけるオブジェクト配置装置１０に対応する。部分空間−ストレージ対応表１０５は、上述した実施形態（図１）における対応情報１２に対応する。
【００５６】
本実施形態において、オブジェクトデータ及びそのメタデータ１１０は、オブジェクトデータ配置装置１００の外部においてセットで取り扱われることとする。このデータは、例えば、ストレージ１１６に対する書き込み命令が外部装置において発行されるのに応じて、オブジェクトデータ配置装置１００に入力される。
【００５７】
尚、オブジェクトデータ及びそのメタデータ１１０のうち、少なくともメタデータを参照可能であれば、係るオブジェクトデータ自体は、オブジェクトデータ配置装置１００には入力されず、オブジェクトデータ配置装置１００が決定した最適なストレージ１１６に直接提供されるシステム構成であってもよい。また、オブジェクトデータ配置装置１００において、係るオブジェクトデータを基に当該オブジェクトデータのメタデータを生成する装置構成を採用してもよい。
【００５８】
ハッシュ演算機能１０１は、オブジェクトデータ及びそのメタデータ１１０のうち、当該メタデータに基づいてハッシュ演算を行うことにより、ハッシュ（ハッシュ値）１１１を出力する。ハッシュ演算機能１０１によるハッシュ演算には、係るメタデータをそのまま出力する、もしくは適当な加工を施してから出力する演算など、現在では一般的な手法を採用することができる。ここで、ハッシュ１１１は、注目するオブジェクトデータに固有な情報であるメタデータに基づいて生成された空間指定情報の一例である。
【００５９】
ストレージ決定機能１０２は、少なくとも、ハッシュ１１１と部分空間情報１１４とに基づいて、以下に説明する処理手順を実行することにより、ストレージ識別情報１１７を出力する。その際、ストレージ決定機能１０２は、ハッシュ１１１及び部分空間情報１１４だけでなく、特徴量１０６をも参照してもよい。この特徴量１０６は、オブジェクトデータ及びそのメタデータ１１０のうち、当該オブジェクトデータの種類（属性）に応じて特定されるところの、当該オブジェクトデータの特徴を表す情報であり、数値化が可能であれば各種の情報を採用することができる。尚、特徴量１０６については、本実施形態の説明の最後に説明を加える。
【００６０】
以下の説明においては、説明の便宜上から、オブジェクトデータ配置装置１００が取り扱う空間ＷＳ及びその部分空間ＰＳを、１次元空間に適用した例について説明する。但し、本実施形態を例に説明する本発明は、１次元空間には限定されず、２次元以上の複数次元空間にも適用可能である。複数次元の場合における処理構成としては、以下に説明する１次元空間における処理を、例えば、当該複数次元をなす各次元について個別に行うと共に、それら各次元における条件を同時に満足する値（情報）を選択する装置構成等を想定することができる。
【００６１】
部分空間情報１１４は、部分空間−ストレージ対応表１０５の参照によって得られる情報である。ここで、図３Ａ及び図３Ｂを参照して、部分空間情報１１４及び部分空間−ストレージ対応表１０５について説明する。
【００６２】
図３Ａ及び図３Ｂは、本発明の第１の実施形態に係る部分空間−ストレージ対応表を例示する図である。図３Ａ及び図３Ｂに概念的に例示するように、部分空間−ストレージ対応表１０５には、同表左列に示す０次元以上の空間における部分空間ＰＳを表す部分空間情報１１４と、同表右列に示すストレージ識別情報（ストレージ識別子（ＩＤ））１１７とが関連付けされている。ここで、部分空間情報１１４は、図１を参照して上述した識別子情報１２に相当する。ストレージ識別情報１１７は、図１を参照して上述した配置先指定情報１７に相当する。
【００６３】
そして、図３Ａに例示される個々の部分空間情報１１４が含まれる空間ＷＳは、１次元の連続した空間である。即ち、個々の部分空間情報（部分空間ＰＳ）１１４は、係る１次元空間ＷＳ内に割り付けられた範囲（領域）であり、ストレージ識別情報と１対１に関連付けされている。
【００６４】
但し、個々の部分空間情報１１４とストレージ識別情報１１７とは、１対１に関連付けされていなくてもよい。即ち、図３Ｂに示す例において、部分空間情報の範囲が５〜５．６及び７〜７．７には、ストレージ識別情報１１７として、同一のストレージＩＤ（＝５）が関連付けられている。このように、部分空間−ストレージ対応表１０５では、部分空間情報（１１４）によって表される範囲（領域）の異なる複数の部分空間ＰＳに対して、ストレージ識別情報（１１７）によって同一のストレージを割り付けることも可能である。より具体的に、本実施形態では、例えば、ストレージＩＤ＝５に対応するストレージ（１１６）が、他のストレージ（１１６）と比較して記憶容量が大きい場合、図３Ｂに示した如く複数の部分空間ＰＳを割り当てることができる。
【００６５】
従って、本実施形態によれば、ストレージＩＤ＝５に対応するストレージに記憶するオブジェクトデータの個数を、他のストレージに記憶するオブジェクトデータの個数よりも多くすることができる。このことを換言すれば、本実施形態に係るオブジェクトデータ配置装置１００は、特定のストレージに記憶するオブジェクトデータの個数と、他のストレージに記憶するオブジェクトデータの個数とのおおよそのバランス（比）を、部分空間−ストレージ対応表１０５によって容易に決定することができる。
【００６６】
即ち、上述した部分空間−ストレージ対応表１０５を用いれば、オブジェクトデータ配置装置１００は、配置先である複数のストレージ１１６の記憶（格納）容量が互いに著しく異なる場合であっても、個々のストレージの記憶容量を考慮したオブジェクトデータの最適な配置を行うことができる。尚、上述した図３Ｂに示す例とは逆に、ストレージ識別情報１１７が複数のストレージ機器の領域を指すことも可能である。
【００６７】
尚、部分空間−ストレージ対応表１０５は、適当なタイミングにおいて、オブジェクトデータ配置装置１００の外部より設定しても、或いは、オブジェクトデータ配置装置１００が自ら生成してもよい。或いは、部分空間−ストレージ対応表１０５は、オブジェクトデータ配置装置１００のユーザが図２には不図示のＵＩ（ユーザ・インタフェース）を用いてオブジェクトデータ配置装置１００に登録してもよい。
【００６８】
ストレージ決定機能１０２において、空間指定情報演算機能１０３は、ハッシュ１１１をシード（初期値）として用いて、空間指定情報１１５を発生する。空間指定情報１１５は、オブジェクトデータ配置装置１００が採用する空間ＷＳ上の０次元以上の空間などを指定する情報である。空間指定情報１１５の例としては、当該空間ＷＳ上の０次元空間（点）を指定する単数の数（例えば、空間が１次元の場合）、もしくは複数の数（例えば、空間が２次元以上の場合、更には、空間指定情報１１５が線、領域、空間、多次元空間の場合）などが考えられる。
【００６９】
空間指定情報演算機能１０３は、発生する空間指定情報１１５に略規則性を持たず、再現性のある空間指定情報群を発生する。ここでは、説明を容易にするため、空間指定情報演算機能１０３は、発生する空間指定情報１１５に略規則性を持たず、再現性のある数列であって、その数列をなす個々の数値は実数である数列を発生すると仮定する。この場合、空間指定情報演算機能１０３は、実数が連続した１次元空間上の点の位置を指定する。
【００７０】
ここで、空間指定情報演算機能１０３が採用するアルゴリズムには、同一のシードの場合には同一の空間指定情報群を発生するアルゴリズムであれば、任意のアルゴリズムを採用可能である。但し、好ましくは、空間指定情報演算機能１０３には、空間ＷＳの一部を略一様に指定することが可能な空間指定情報１１５を発生するアルゴリズムを採用することができる（以下に説明する各実施形態においても同様である）。その理由は、出力される空間指定情報１１５が略一様な分布確率によって空間を指定しない場合、各ストレージ１１６に対応する部分空間情報１１４が指し示す部分空間ＰＳの大きさの差異を利用することによっては、当該各ストレージ間において記憶されるオブジェクトデータの数量のバランスを調整することが困難になるからである。
【００７１】
即ち、本実施形態によれば、空間ＷＳの一部を、より一様な分布確率によって指定することを前提条件として、当該各ストレージ１１６に対応する部分空間情報１１４が指し示す部分空間ＰＳの大きさの差異を利用することにより、当該各ストレージ間において記憶されるオブジェクトデータの個数のおおよそのバランスを、より正確に調整することができる。
【００７２】
また、空間指定情報１１５の指定空間ＤＳは、全ての部分空間ＰＳを内包する（含む）状態が成立しているとよい。このような状態が成立する場合、当該各ストレージに対応する部分空間情報１１４が指し示す部分空間ＰＳの大きさの違いを用いることにより、当該各ストレージ間において記憶されるオブジェクトデータの個数のおおよそのバランスを調整することができる。一方、係る内包状態が成立しない場合は、上記のような当該各ストレージ間において記憶されるオブジェクトデータの数量のバランスを調整することは困難である。
【００７３】
ストレージ決定機能１０２において、空間指示判定機能１０４は、空間指定情報演算機能１０３から入手した空間指定情報１１５が、部分空間−ストレージ対応表１０５に含まれる部分空間ＤＳを指し示すか否かを、部分空間情報１１４に基づいて判定する。係る判定の結果、空間指定情報１１５が指し示す当該部分空間ＤＳが部分空間−ストレージ対応表１０５に存在する場合、空間指示判定機能１０４は、部分空間−ストレージ対応表１０５から検出したストレージ識別情報１１７を出力する。これにより、本実施形態に係るオブジェクトデータ配置装置１００は、注目するオブジェクトデータを、ストレージ識別情報１１７に対応するストレージＩＤを持つストレージ１１６に配置すべきことを決定することができる。
【００７４】
一方、係る判定の結果、部分空間−ストレージ対応表１０５に含まれる部分空間ＤＳを空間指定情報１１５が指し示さない場合、空間指示判定機能１０４は、再計算命令１１３を、空間指定情報演算機能１０３に送ることにより、空間指定情報演算機能１０３に対して、新たな空間指定情報（次の空間指定情報）１１５の生成を命令する。
【００７５】
空間指定情報１１５が部分空間−ストレージ対応表１０５に含まれる部分空間ＤＳを指し示す場合において、指し示される部分空間を必ず１つになるように構成しても、或いは、複数の部分空間ＤＳから何れか１つを選択する構成であってもよい。複数の部分空間DSから１つの部分空間を選択するアルゴリズムには、現在では一般的な手法を採用することができるので、本実施形態における詳細な説明は省略する。
【００７６】
次に、上述した装置構成を有するオブジェクトデータ配置装置１００の動作について、図４、図５乃至図６を参照して、より具体的に説明する。
【００７７】
図４は、本発明の第１の実施形態に係るオブジェクトデータ配置装置によるオブジェクトデータの配置動作を説明する図である。図４に示す例は、オブジェクトデータ配置装置１００が、１６個の空（から）のストレージ（ストレージＩＤ＝０〜１５）１１６に、まず初期状態として、１６個のオブジェクトデータ（ＤＡＴＡ０〜ＤＡＴＡ１５）を配置した状況を示す。これら１６個のストレージ１１６は、空間内の位置を１個の実数で表現する１次元空間ＷＳ内に、数値範囲を有する部分空間ＰＳとして予め割り付けられていることとする。
【００７８】
ここで、上記割り付けの具体例としては、例えば、１６個のストレージ１１６のうち、ストレージＩＤがＩＤ＝０〜６である７つのストレージ１１６には、該ストレージのＩＤ（識別子）を表す番号を数値として当該１次元空間ＷＳ（数直線）上に置き換えた位置（即ち、０，１，・・・６）を始点として、その始点から数値が大きくなる方向に０．４増分した位置を終点とする部分空間ＰＳがそれぞれ割り当てられていることとする。
【００７９】
そして、１６個のストレージ１１６のうち、ストレージＩＤがＩＤ＝７〜１５である残り９つのストレージ１１６には、該ストレージのＩＤ（識別子）を表す番号を数値として当該１次元空間ＷＳ（数直線）上に置き換えた位置（即ち、７，８，・・・１５）を始点として、その始点から数値が大きくなる方向に０．８増分した位置を終点とする部分空間ＰＳがそれぞれ割り付けられていることとする。
【００８０】
上記のような割り付けが行われた場合、空間指定情報演算機能１０３の指定空間ＤＳが、係る１６個のストレージ１１６に個々に割り付けられた部分空間ＰＳを内包している環境において、係る１次元空間ＷＳ（数直線）に個々に割り当てられた個々の線分の長さは、当該個々のストレージ１１６の記憶容量を表す。そして、係る環境において、ストレージＩＤがＩＤ＝７〜１５である各ストレージは、ストレージＩＤがＩＤ＝０〜６である各ストレージと比較して２倍の記憶容量を有することを表す。
【００８１】
図４に示す具体例の説明に戻る。空間指定情報演算機能１０３は、一例として０から３１までの実数である乱数をランダムに出力する。出力された乱数が個々のストレージ１１６に割り当てられた部分空間ＰＳを指し示す場合、空間指示判定機能１０４は、部分空間−ストレージ対応表１０５を参照することによって、対応するストレージが存在すると判定する。即ち、図４において、「１回目」、「２回目」、「３回目」なる記載は、空間指定情報演算機能１０３が繰り返し実数である乱数（空間指定情報）を生成する際に、ｋ回目（この例では１≦ｋ≦３）に出力した空間指定情報の出力結果（１１５）を指す。
【００８２】
図４に示す表において、「判定結果」は、空間指示判定機能１０４による判定結果を表す。図４において、対応するストレージが存在すると判定された場合は「ＯＫ」、存在しないと判定された場合は「ＮＧ」、判定に使用されなかった場合は「ＮＯＰ」と記載することとする。そして、図４に示す右端欄は、ストレージ決定機能１０２（オブジェクトデータ配置装置１００）としての出力結果（ストレージ識別情報１１７）であり、個々の数字は、１５個のストレージのストレージＩＤを表す。
【００８３】
例えば、ＤＡＴＡ０を参照すると、１回目の乱数出力値＝０．３であるから、上述した１次元空間ＷＳの割り付け例を採用する場合、ストレージＩＤ＝０なるストレージに対応する数値範囲は０から０．４である。従って、係る１回目の乱数出力値は、ストレージＩＤ＝０なるストレージに対応する部分空間ＰＳを指し示す。このため、判定結果は、図４に示す通り「ＯＫ」である。即ち、ＤＡＴＡ０なるオブジェクトの配置先は、ストレージＩＤ＝０に対応する特定のストレージ１１６である。
【００８４】
次に、ＤＡＴＡ６を参照すると、１回目の乱数出力値＝１０．６であるから、上述した１次元空間ＷＳの割り付け例を採用する場合、判定結果は「ＮＧ」であり、２回目の乱数出力値＝５．１であるから、判定結果は「ＯＫ」である。このため、ＤＡＴＡ６の配置先は、ストレージＩＤ＝５に対応するストレージである。
【００８５】
そして、同様な処理構成により、ＤＡＴＡ８及び１３の場合は、２回目までの乱数出力値が「ＮＧ」であり、３回目の乱数出力値は漸く「ＯＫ」と判断されている。このため、ＤＡＴＡ８及び１３の場合、空間指示判定機能１０４は、図４に示すように、ストレージＩＤ＝１１，９に対応するストレージが配置先と判定する。
【００８６】
次に、オブジェクトを記憶可能なストレージが追加された場合について論じる。
【００８７】
各ストレージ１１６が、予め指定した割合（バランス、比）を保ちながらオブジェクトデータを記憶している状況を考える。この状況において、新たにストレージが加わった場合、その新たに加わったストレージを含めて、個々のストレージが当該予め指定した割合を保ちながらオブジェクトデータを記憶している状況を維持する必要がある。そのためには、オブジェクトデータを未だ記憶していない新たに加わったストレージに、その他のストレージに既に記憶されているオブジェクトデータの一部を移動しなければならない。この場合、既存のストレージ間における格納済みのオブジェクトデータの移動は発生せず、当該新たに加わったストレージのみに最小限のオブジェクトデータが移動することにより、係る割合が維持することができれば理想的である。
【００８８】
尚、当該各ストレージ１１６が記憶するオブジェクトデータ件数の当該各ストレージ間における割合（バランス、比）の指定は、例えば、空間ＷＳ内に個々の部分空間ＰＳを割り付ける際に行えばよい。そして、係る部分空間ＰＳの割り付けは、部分空間−ストレージ対応表１０５の登録が挙げられる。より具体的に、本実施形態において、係る割合（バランス、比）の指定や変更（更新）は、例えば、当該各ストレージ１１６の動作状況を監視しているユーザ（オペレータ）や外部装置が、部分空間−ストレージ対応表１０５の登録内容を変更（更新）することによって実現すればよい。そしてこの変更（更新）のタイミングとしては、例えば、システム開発やメンテナンス時、ストレージ１１６の追加、削減などのイベントが想定される。
【００８９】
オブジェクトデータ配置装置１００によれば、ストレージ（１１６）がｍ台からｎ台（但し、ｍ＜ｎ）に増加した後に、対応する部分空間ＰＳが存在することが空間指示判定機能１０４によって判定されるべき空間指定情報１１５のうち、ストレージがｍ台のときから既に存在していた各ストレージに対応する部分空間ＰＳを指し示す空間指定情報１１５は、ストレージがｍ台のときのまま変化しない。
【００９０】
その理由は、本実施形態において、空間指定情報演算機能１０３は、同一のハッシュ１１１に対応するオブジェクトデータに対しては同一の空間指定情報１１５を出力する性質を有する。この性質のため、空間指定情報演算機能１０３は、ｍ台からｎ台に増加する前から既に存在していた各ストレージに対応する部分空間ＰＳを指し示す空間指定情報１１５が出力される前に、当該各ストレージ以外の、ｍ台のときに既に存在していた他のストレージに対応する部分空間ＰＳを指し示す空間指定情報１１５を出力することはないからである。
【００９１】
このことを換言すれば、ｍ台のときに既に存在していた各ストレージとは異なる他のストレージに対応する部分空間ＰＳを指し示す空間指定情報１１５を空間指定情報演算機能１０３が出力するのであれば、それは、ｍ台のときに何れかのストレージに格納されていたオブジェクトデータが別のストレージに変更される状況が生じることを意味する。この状況は、当該ストレージ間におけるオブジェクトデータの余計な移動が生じることを意味するので好ましくなく、本実施形態によれば回避可能である。
【００９２】
但し、空間指定情報演算機能１０３は、ストレージがｍ台のときに存在した各ストレージに対応する部分空間ＰＳを指し示す空間指定情報１１５を出力する前に、ストレージがｍ台のときには存在しなかった他のストレージに対応する部分空間ＰＳを指し示す空間指定情報１１５を出力する可能性はある。
【００９３】
即ち、本実施形態においては、ストレージの台数が増加した場合、対応する部分空間ＰＳが存在すると空間指示判定機能１０４において判定されるべき空間指定情報１１５のうち、新たに加わったストレージに対応する部分空間ＰＳを指し示す空間指定情報１１５のみに変更が生じ、元々存在していたストレージに対応する部分空間ＰＳを指し示す空間指定情報１１５は変化しない。これは、ストレージが増加した際に移動が生じるオブジェクトデータが最小限であることを意味する。また、ストレージが増加した後、各ストレージが記憶するオブジェクトデータの数量は、各ストレージに対応する部分空間ＰＳの広さにほぼ比例する。
【００９４】
次に、ストレージ１１６の台数が減少した場合について論じる。
【００９５】
予め指定された割合で各ストレージがオブジェクトデータを保持している状況を考える。係る状況において、特定のストレージが減少する場合、その特定のストレージを除く当該各ストレージが、係る指定された割合でオブジェクトデータを保持する状況を維持するためには、削減対象である当該特定のストレージが保持していたオブジェクトデータを、残りのストレージ（即ち、削減対象ではないストレージ）に移動しなければならない。このとき、既存のストレージ間においては既に格納されているオブジェクトデータの移動が発生せず、削減対象である当該特定のストレージに格納されていたオブジェクトデータのみが当該残りのストレージに移動（分散配置）する処理を実現できれば、最小限のデータ移動により係る予め指定された割合が維持されることになるので理想的である。
【００９６】
オブジェクトデータ配置装置１００によれば、ｎ台からｍ台（ｍ＜ｎ）にストレージが減少する前に、対応する部分空間ＰＳが存在すると空間指示判定機能１０４において判定されるべき空間指定情報１１５のうち、減少後には存在しなくなる特定のストレージに対応する部分空間ＰＳを指し示す空間指定情報１１５のみに変更が生じる。その理由は、ｍ台のストレージが残った際に、存在しなくなった当該特定のストレージに対応する部分空間ＰＳを指し示す空間指定情報１１５に対して、空間指示判定機能１０４は、対応する部分空間が存在しないと判定するからである。即ち、本実施形態において、ｍ台に減少したストレージに対応する部分空間を指し示す空間指定情報１１５は、減少前のｎ台のストレージに対応する部分空間を指し示す空間指定情報１１５のまま変化しない。
【００９７】
より具体的には、ストレージがｍ台に減少する前に、対応する部分空間が存在すると空間指示判定機能１０４によって判定されるべき空間指定情報１１５のうち、削除された当該特定のストレージに対応する部分空間ＰＳを指し示す空間指定情報１１５のみに変更が生じ、ストレージがｎ台のときから既に存在していたストレージであって、ｍ台への減少後にも残存するストレージに対応する部分空間ＰＳを指し示す空間指定情報１１５は変化しない。これは、ストレージが減少した際に移動が生じるオブジェクトデータが最小限であることを意味する。また、ストレージが減少した後、各ストレージが記憶するオブジェクトデータの数量は、各ストレージに対応する部分空間ＰＳの広さにほぼ比例する。
【００９８】
つまり、本実施形態によれば、ストレージ１１６が増減する際に、影響を受けるオブジェクトデータを最小限に抑制できる理想的な動作を実現できる。また、本実施形態によれば、移動後のオブジェクトデータは、ストレージ台数の増加あるいは減少した後に存在する各ストレージに対して予め指定されたバランス（比）に近い状態で分散配置される。
【００９９】
ここで、上述したストレージ１１６の台数が増加する場合と、減少する場合とについて、図５及び図６を参照して具体的な例を説明する。
【０１００】
図５は、本発明の第１の実施形態に係るオブジェクトデータ配置装置により、図４に示した配置状態から、ストレージを追加した場合の動作を説明する図である。即ち、図５に示す例では、１６個目の新たなストレージ（この例ではストレージＩＤ＝１５に対応するストレージ１１６）を追加すべく、その新たなストレージに対応する部分空間ＰＳ（部分空間情報）が、部分空間−ストレージ対応表１０５に追加されたと判定された場合のオブジェクトデータ配置装置１００の動作を表す。
【０１０１】
ストレージＩＤ＝１５なるストレージに対応する部分空間ＰＳは、本実施形態における上述した各ストレージに関する部分空間ＰＳの割り付け方と同様に、空間領域ＷＳを表す実数の数直線上において、１５を始点として、＋０．８増分した位置を終点とする線分として割り当てられる。即ち、部分空間−ストレージ対応表１０５には、ストレージＩＤ＝１５に対して、部分空間情報１５．０〜１５．８が関連付けされる。
【０１０２】
図５に示す表の基本的な見方は、上述した図４の場合と同様である。そして、図５において、図４に示す状態から変更があった箇所は、変更前の状況と変更後の状況とを矢印で結んで表している。即ち、図５によれば、ＤＡＴＡ８とＤＡＴＡ１３とは、新たに割り当てられたストレージ（部分空間１５に相当するストレージＩＤ＝１５）に移動する。
【０１０３】
このように、オブジェクトデータ配置装置１００は、部分空間−ストレージ対応表１０５の内容が前回参照したときと異なる内容に更新されたことを認識する必要がある。そして、オブジェクトデータ配置装置１００は、空間指定情報１１５の生成と、その空間指定情報が指し示す部分空間ＰＳが存在するか否かの判定を繰り返す。そして、オブジェクトデータ配置装置１００は、注目する空間指定情報１１５が新たな部分空間ＰＳを指し示していることを確認した場合、当該部分空間に対応するストレージを、配置先を決定済みのオブジェクトデータの新たな配置先であると判断する。
【０１０４】
図６は、本発明の第１の実施形態に係るオブジェクトデータ配置装置により、図４に示した配置状態から、ストレージが削減された場合の動作を説明する図である。即ち、図６に示す例では、ストレージＩＤ＝１２に対応するストレージ１１６を削減すべく、そのストレージに対応する部分空間ＰＳが部分空間−ストレージ対応表１０５から削除されたと判定された場合のオブジェクトデータ配置装置１００の動作を表す。
【０１０５】
図６の基本的な見方も、上述した図４及び図５の場合と同様である。但しこの場合は、当初１５台だったストレージから１台削除されて１４台になる。図６において、図４に示す状態から変更があった箇所は、図５の場合と同様に矢印を用いて表されている。即ち、図６によれば、削除対象のストレージ（ストレージＩＤ＝１２）に記憶されていた２つのオブジェクトデータ（ＤＡＴＡ１とＤＡＴＡ７）は、記憶するストレージが変更されることを表している。
【０１０６】
このように、オブジェクトデータ配置装置１００は、部分空間−ストレージ対応表１０５の内容が、前回参照したときと異なる内容に更新されたことを認識する必要がある。そして、オブジェクトデータ配置装置１００は、空間指定情報１１５の生成と、その空間指定情報が指し示す部分空間ＰＳが存在するか否かの判定を繰り返す。そして、オブジェクトデータ配置装置１００は、注目する空間指定情報１１５が新たな部分空間を指し示していることを確認した場合、当該部分空間に対応するストレージを、配置先を決定済みのオブジェクトデータの新たな配置先であると判断する。
【０１０７】
次に、上述した本実施形態に係る一連の動作を実現すべく、オブジェクトデータ配置装置１００が実行するオブジェクトデータの配置処理について、図７を参照して説明する。
【０１０８】
図７は、本発明の第１の実施形態に係るオブジェクトデータ配置装置が実行するオブジェクトデータの配置処理を示すフローチャートである。ここで、オブジェクトデータ配置装置１００がコンピュータ（情報処理装置）によって実現される場合、以下に説明する各ステップの処理は、そのコンピュータのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が実行することになる（詳細は図１７を参照して後述する）。
【０１０９】
ステップＳ２０１：ハッシュ演算機能１０１は、注目するオブジェクトデータ及びそのメタデータ１１０のうち、当該メタデータに基づいてハッシュ演算を行うことにより、ハッシュ１１１を得る。ここで、注目するオブジェクトデータとは、記憶すべきストレージを決定する必要のあるオブジェクトデータである（以下同様）。そして、係るメタデータは、アドレス、オブジェクト名、ディレクトリ名、もしくはファイル名などの、当該メタデータに対応するオブジェクトデータに固有の情報である。そして、ハッシュ演算機能１０１は、ハッシュ１１１を、空間指定情報演算機能１０３に与える。
【０１１０】
ステップＳ２０２：空間指定情報演算機能１０３は、取得したハッシュ１１１をシード（初期値）に設定すると共に、そのシードを用いて空間指定情報１１５を発生する。そして、空間指定情報演算機能１０３は、空間指定情報１１５を、空間指示判定機能１０４に与える。
【０１１１】
ステップＳ２０３：空間指示判定機能１０４は、部分空間−ストレージ対応表１０５から送られてきた情報１１４を参照することにより、空間指定情報１１５が指し示す部分空間が、部分空間−ストレージ対応表１０５の中に存在するか否かを判断する。
【０１１２】
ステップＳ２０２にて生成した空間指定情報１１５が部分空間−ストレージ対応表１０５に存在する部分空間を指し示さない場合（ステップＳ２０３にてＮＯ）、処理はステップＳ２０２に戻される。そして空間指定情報演算機能１０３は、新たに次の空間指定情報１１５を発生する。
【０１１３】
一方、ステップＳ２０２にて生成した空間指定情報１１５が部分空間−ストレージ対応表１０５に存在する部分空間を指し示す場合（ステップＳ２０３にてＹＥＳ）、空間指示判定機能１０４は、空間指定情報１１５が指し示す部分空間に関連付けされているストレージ識別情報（ストレージＩＤ）１１７を出力する。即ち、ストレージ識別情報１１７は、当該注目するオブジェクトデータを記憶すべきストレージ１１６を特定する情報である。
【０１１４】
ところで、オブジェクトデータ配置装置１００が扱う空間領域ＷＳ及び部分空間ＰＳが複数次元空間である場合について説明する。図３Ａ及び図３Ｂ、並びに図７を参照して上述した例では、説明を容易にすべく、空間領域ＷＳ及び部分空間ＰＳが１次元空間の場合について説明した。しかしながら、本実施形態を例に説明する本発明は、係る１次元空間には限定されず、複数次元にも適用可能である。この点について、図８、図９Ａ及び図９Ｂを参照して説明する。
【０１１５】
図８は、本発明の第１の実施形態に係るオブジェクトデータ配置装置を、２次元空間に適用する場合について例示的に説明する図である。図８に示す２次元空間（２次元座標）において、横軸は特徴量（上述した特徴量１０６）、縦軸は乱数である。この２次元空間（ＷＳ）には、複数の２次元部分空間（ＰＳ）Ａ乃至Ｋが割り付けられている。
【０１１６】
より具体的には、係る２次元空間上に例えば図８に示す如く複数の部分空間ＰＳを配置した場合、空間指定情報演算機能１０３は、注目するオブジェクトデータに関して出力すべき空間指定情報１１５を、当該２次元（２軸）のパラメータに基づいて決定する。即ち、この場合の空間指定情報１１５において、当該２次元のうち１次元については、当該注目するオブジェクトデータに関する特徴量１０６に基づいて、図８に例示する数値範囲０．０〜１．０を参照することによって決定される。そして、残りの１次元については、当該注目するオブジェクトデータのストレージＩＤ（配置先識別子ＡＩＤ）をシードとした乱数に基づいて決定される。この例において空間指定情報演算機能１０３が生成する乱数が採り得る数値範囲は、例えば、図８に示す如く０〜４である。即ち、空間指定情報演算機能１０３は、当該２次元空間WSに割り付けられた何れかの部分空間ＰＳを指し示すまで乱数の発生を繰り返す。
【０１１７】
そして、図８に示す例において、特徴量＝０．５なるオブジェクトデータは、必ず部分空間Ｂに対応するストレージ１１６に配置される。特徴量＝０．３なるオブジェクトデータは、部分空間Ｂまたは部分空間Ｆに対応するどちらかのストレージ１１６に同じ確率で配置される。
【０１１８】
また、図８に示す例において、特徴量＝０．７なるオブジェクトデータは、部分空間Ｃ，ＧもしくはＪに対応するストレージ１１６に同じ確率で配置される。例えば、部分空間Ｃに対応するストレージ１１６が配置対象から除外された場合は、係る２次元空間ＷＳから部分空間Ｃが消滅する。この場合、オブジェクトデータ配置装置１００は、消滅した部分空間Ｃに対応するストレージに格納されていたオブジェクトデータを、部分空間Ｇまたは部分空間Ｊに対応するストレージに移動する。そして、係る移動に際して、移動対象であるオブジェクトデータは、部分空間Ｇに対応するストレージまたは部分空間Jに対応するストレージに同じ確率で配置される。このような場合も、本実施形態に係るオブジェクトデータ配置装置１００によれば、移動するオブジェクトデータは最小限に抑制することができる。
【０１１９】
そして、特徴量＝０．９なるオブジェクトデータは、図８に破線で示す部分空間Ｌが追加される以前は、部分空間Ｄまたは部分空間Ｈに対応するストレージに同じ確率で配置される。その後、部分空間Ｌに対応するストレージが配置対象として追加された場合、図８に示す２次元空間ＷＳには、係る部分空間Ｌが新たに割り付けられる。これにより、部分空間Ｄまたは部分空間Ｈに対応するストレージに格納されていたオブジェクトデータの一部は、部分空間Ｌに対応するストレージに移動することになる。その際、移動対象となったオブジェクトデータは、３つの部分空間Ｄ，Ｈ，Ｌにそれぞれ対応するストレージに同じ確率で配置される。
【０１２０】
即ち、空間指定情報演算機能１０３は、複数次元空間において空間軸をなすところの、オブジェクトの属性を特徴付ける特徴量１０６を参照することにより、本実施形態によれば、空間指定情報１１５を生成する際の空間の範囲を限定（規定）することができる。
【０１２１】
上記２次元の場合においても部分空間ＰＳの割り付けの変更は、部分空間−ストレージ対応表１０５の登録内容の変更（更新）によって実現すればよい。このように、本実施形態に係るオブジェクトデータ配置装置１００は、２次元空間を扱う場合においても、上述したように、ストレージの増減に対処することができることが判る。
【０１２２】
即ち、図４乃至図６を参照して説明した例から判るように、空間ＷＳが1次元空間の場合、配置対象であるオブジェクトの種類には関係なく、1次元の数直線に割り付けられた線分の長さが表す部分空間ＰＳの大きさに応じた処理（即ち、オブジェクトデータの配置）が行われる。これに対して、図８に例示した如くストレージ（配置先）を表す部分空間ＰＳを乱数軸および特徴量軸からなる２次元空間に割り付けた場合は、空間指定情報１１５の生成に際して（即ち、何れかの部分空間ＰＳを選択するに際して）、更に、特徴量（１０６）を利用することができる。これは、空間指定情報演算機能１０３が空間指定情報１１５を生成するに際して、個々の部分空間ＰＳの大きさだけでなく、更に、配置対象であるオブジェクトの種類（属性）に応じて限定した一部の部分空間ＰＳを対象にできることを表す。このことを換言すれば、空間指定情報１１５の生成（即ち、何れかの部分空間の選択）に際して、処理対象を適宜限定できることを表すので、オブジェクトデータ配置装置１００としての処理効率を向上することができる訳である。
【０１２３】
尚、図８を参照して説明した例では、２次元空間をなす２軸のうち一方を特徴量に割り当てた構成を説明した。しかしながら、本発明は、係る構成には限定されず、複数種類の特徴量を複数の軸に割り当てた複数次元空間にも適用可能である。
【０１２４】
次に、空間ＷＳとして３次元空間を採用すると共に、その３次元空間をなす３軸のうち２軸を乱数とした場合について説明する。
【０１２５】
図９Ａ及び図９Ｂは、本発明の第１の実施形態に係るオブジェクトデータ配置装置を、３次元空間に適用する場合について例示的に説明する図である。即ち、図９Ａ及び図９Ｂに分けて示す３次元空間（３次元座標）ＷＳにおいて、図９Ａに示すＸ−Ｙ平面は、Ｘ軸は乱数Ａ（第１乱数）、Ｙ軸は乱数Ｂ（第２乱数）であり、紙面手前方向は＋Ｚ軸方向である。一方、図９Ｂに示すＹ−Ｚ平面は、Ｙ軸は係る乱数Ｂ、Ｚ軸は特徴量（１０６）であり、紙面手前方向は＋Ｘ軸方向である。
【０１２６】
図９Ａに例示するように、係るＸ−Ｙ平面は、同図に２種類の斜線で表す通り２つの領域（Ｉ，ＩＩ）に区画されている。そして、係る３次元空間ＷＳには、図９Ｂに示すＹ−Ｚ平面において、部分空間ＰＳとしてＡ乃至Ｆが割り付けられている。即ち、係る部分空間Ａ乃至Ｆは、Ｘ軸方向には当該Ｙ−Ｚ平面に示した当該複数の部分空間（Ａ乃至Ｆ）の割り付け状態が平行移動した態様で広がっていることとする。
【０１２７】
このような３次元空間をオブジェクトデータ配置装置１００が採用する場合において、当初、乱数Ａ及びＢの組み合わせをなすＸ−Ｙ平面上には、１つの領域Ｉだけが設定されていたと仮定する。この場合、空間指定情報演算機能１０３は、当該領域Ｉの区画から外れる値を算出した場合、新たに次の乱数を生成することとする。
【０１２８】
そしてこの場合において、注目するオブジェクトの特徴量が０．５の場合を考えると、このオブジェクトは、図９Ｂに示すように、部分空間Ａまたは部分空間Ｂに対応するストレージ１１６に配置される。係る配置に際して、部分空間Ａに対応するストレージに配置される可能性は、部分空間Ｂに対応するストレージに配置される可能性の２倍である。この可能性（確率）の違いは、上述した通り当初は領域ＩだけがＸ−Ｙ平面上に指定されていたと仮定する前提において、係る領域Ｉがなす非対称な形状であることに起因する。
【０１２９】
次に、係る領域Ｉに加え、図９Ａに示すＸ−Ｙ平面に、更に領域ＩＩが設定された場合を考える。この場合、空間指定情報演算機能１０３は、当該領域Ｉ及び領域ＩＩの区画から外れる値を算出した場合、新たに次の乱数を生成することとする。この場合も上述した当該注目するオブジェクトの特徴量が０．５の場合を考えると、当該オブジェクトは、前述した例と同様に部分空間Ａまたは部分空間Ｂに対応するストレージ１１６に配置される。但し、この場合、Ｘ−Ｙ平面に設定された領域Ｉと領域ＩＩとがなす合成領域は、矩形形状をなすから、当該オブジェクトが部分空間Ａに対応するストレージに配置される可能性と、部分空間Ｂに対応するオブジェクトに配置される可能性とは同じになる。
【０１３０】
そして、上述した如く領域Ｉから領域（Ｉ＋ＩＩ）に乱数の採り得る数値範囲が変化した場合に、その変化に伴って配置先のストレージが変更されるオブジェクトの数量は、以下の通りである。
【０１３１】
即ち、領域Ｉのみが設定されていた場合において、部分空間Ａに対応するストレージに配置されるオブジェクトの数量は、部分空間Ｂに対応するストレージに配置されるオブジェクトの数量のほぼ２倍の状態である。その後、領域Ｉに加えて領域ＩＩが設定されるのに応じて、部分空間Ａに対応するストレージに配置されるオブジェクトの数量と、部分空間Ｂに対応するストレージに配置されるオブジェクトの数量とはほぼ同じ状態となる。本実施形態において、オブジェクトデータ配置装置１００は、係る状態を実現するために必要な最小限の数量のオブジェクトを移動することを決定可能である。
【０１３２】
上述したように、オブジェクトデータ配置装置１００において複数次元空間ＷＳを扱う場合において、乱数軸を1軸ではなく多数軸にした場合、次のような利点がある。
【０１３３】
即ち、乱数軸が1軸である装置構成の場合、空間指定情報演算機能１０３は、全ての乱数を同じ確率で発生することしかできない。そのため、係る装置構成において、ストレージ１１６に記憶するオブジェクトデータの数量を変更しようとする場合は、当該1次元の乱数軸に割り付けられている部分空間ＰＳの大きさ（ストレージの記憶容量に対応する数値範囲の長さ）を変更する選択肢しかない。これに対して、乱数軸が複数軸である装置構成の場合、オブジェクトデータ配置装置１００は、当該複数の乱数軸によって形成される複数次元空間のうち、空間指定情報演算機能１０３が空間指定情報１１５の生成のために参照する空間領域（乱数の再計算を将来しない空間領域）の区画を、図９Ａに示したＸ−Ｙ平面上の領域Ｉから領域（Ｉ＋ＩＩ）への変更の如く変更することができる。この変更は、当該複数次元を表現可能に構成した部分空間−ストレージ対応表１０５の変更（更新）によって容易に実現可能である。また、図３Ａ及び図３Ｂに例示した１次元空間の場合における部分空間−ストレージ対応表１０５を、複数次元を表現可能に装置に実装すること自体は、比較的簡単な構成変更によって、処理負担（処理コスト）の増大を招来することなく実現できる。
【０１３４】
従って、乱数軸を複数軸とする装置構成によれば、算出された乱数を採用する範囲を容易且つ柔軟に変更できるので、空間指示判定機能１０４が採用すべき空間指定情報１１５の生成確率を、乱数の値に応じて変更することができる。このことは、互いに異なる複数種類の評価指標を、比較的簡単な構成変更によってオブジェクトデータ配置装置１００に採用するできることを表す。そして、係る装置構成を採用するオブジェクトデータ配置装置１００は、ストレージ１１６の記憶領域の大きさを変更することなく、そのストレージに記憶するオブジェクトデータの数量を変更可能であることを表す。即ち、本実施形態によれば、空間指定情報演算機能１０３は、複数次元空間において少なくとも２つの空間軸をなすところの、互いに異なる複数の疑似乱数を参照することにより、空間指定情報１１５を生成する際の空間の範囲を限定（規定）することができる。
【０１３５】
ところで、このような複数次元空間を利用する実装例としては、例えば、配置先に配置すべきオブジェクトが、例えば、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）等のセンサ出力の場合が想定される。この場合、係るセンサ出力は、位置情報（地図情報）を含むので、その位置情報自体が複数次元空間における特定の位置を表す。そこで、このような場合には、オブジェクト配置装置１０（オブジェクトデータ配置装置１００）自体が、係る複数次元空間（ＷＳ）を扱うことができれば、個々のオブジェクトが有する次元と同じ次元のままで、当該個々のオブジェクトを、オブジェクト配置装置（オブジェクトデータ配置装置）が採用している空間（ＷＳ）内の部分空間（ＰＳ）として割り当てることができる。
【０１３６】
即ち、説明を容易にすべく上述した１次元空間を採用するオブジェクト配置装置１０，オブジェクトデータ配置装置１００を用いて、例えば２次元情報からなるオブジェクトを配置する場合、当該１次元空間内の部分空間に個々のオブジェクトを割り当てる処理に先だって、当該個々のオブジェクトを表す２次元情報を、１次元情報に変換する処理が必要である。更に実装の態様によっては、配置先の決定結果を表す１次元情報を、２次元情報に変換する処理が必要である。このことは、一連の処理に余分な時間を要し、処理負担（処理コスト）が大きいことを表す。
【０１３７】
これに対して、当該個々のオブジェクトを表す２次元情報を、そのまま２次元空間内の部分空間ＰＳとして割り当てられる装置構成の場合は、係る余分な処理負担が生じることはない。このため、係る装置構成によれば、オブジェクトデータ配置装置の構成を、簡素に実現することがでると共に、オブジェクトを柔軟且つ高速に配置することができる。このことは、オブジェクトが２次元情報で表される場合に限定される効果ではない。即ち、係る効果は、配置先を決定すべきオブジェクトがｎ次元情報の場合（ｎ≧１）には、当該ｎ次元情報をそのまま割り当てられる複数次元空間を扱うオブジェクトデータ配置装置を採用することによって享受できる。より具体的に、複数次元空間における次元数は、少なくとも、オブジェクトを表す複数種類の情報の種類数と同じとすればよい。
【０１３８】
以上説明した第１の実施形態に係るオブジェクトデータ配置装置１００によれば、複数のオブジェクトを個々のストレージ１１６（配置先）に配置する際に、係る配置先毎に配置すべきオブジェクトの数量のおおよそのバランスを、比較的簡単な処理構成によって決定することができ、且つ配置先が増減した際においても、移動が必要なオブジェクトを最小限に抑制することができる。
【０１３９】
即ち、オブジェクトデータ配置装置１００のストレージ決定機能１０２において、空間指定情報演算機能１０３は、空間指定情報１１５の生成を繰り返すことが可能である。空間指示判定機能１０４は、部分空間−ストレージ対応表１０５を参照しながら、当該生成された空間指定情報１１５と、部分空間−ストレージ対応表１０５に含まれる部分空間とを比較する。そして、空間指示判定機能１０４は、係る空間指定情報が指し示す部分空間を検出するのに応じて、当該部分空間に関連付けされているストレージＩＤに対応するストレージを、オブジェクトデータの配置先であると判断する。
【０１４０】
従って、例えば、「背景技術」欄において説明した特許文献１，２や非特許文献１及び２に記載された技術と比較して、本実施形態によれば、比較的簡単な装置構成によって、各ストレージに格納するオブジェクトデータの個数のおおよそのバランス（比）を設定することができる。また、本実施形態によれば、特許文献３に記載された手法と比較して、スケーラビリティと効率性とを良好に両立することが可能になる。よって、本実施形態に係る手法によれば、例えば、記憶容量が異なるストレージを組み合わせて分散ストレージを実現するシステムにおいても、簡単な構成を用いて、記憶容量の無駄がないようにオブジェクトデータを配置することができる。
【０１４１】
（第１の実施形態の変形例）
上述した第１の実施形態においては、単一の部分空間−ストレージ対応表１０５を用いたがその限りではない。即ち、オブジェクトデータ配置装置１００を基礎として、複数の部分空間−ストレージ対応表を条件に応じて使い分ける装置構成も想定することができる。
【０１４２】
より具体的には、例えば、アドレスによってオブジェクトデータの保存先を変えたい場合がある。即ち、アドレスに応じてパーティションが設けられており、そのパーティション毎に、オブジェクトデータを記憶すべきストレージ群を変更するシステムが想定される。そのような場合は、複数の数−ストレージ対応表のうち、アドレスに応じて、使用する数−ストレージ対応表を切り替える態様が想定される。
【０１４３】
或いは、Ｋｅｙ−Ｖａｌｕｅ  Ｓｔｏｒｅにおいて、Ｋｅｙの範囲毎に記憶するストレージ群を変更する場合に、各Ｋｅｙの範囲毎に、数−ストレージ対応表を変更する等の態様も想定される。即ちこの場合、ストレージ決定機能１０２は、複数の数−ストレージ対応表を参照可能であって、オブジェクトデータに関する情報に基づいて、それらの数−ストレージ対応表のうち、当該情報に対応する数−ストレージ対応表を参照することにより、オブジェクトデータを配置すべきストレージを決定する。
【０１４４】
ここで、複数の部分空間−ストレージ対応表を使い分ける具体例として、オブジェクトデータの保護レベルを考慮した具体例について説明する。
【０１４５】
即ち、必要とされる保護レベルが、オブジェクトデータによって異なる場合がある。このような場合は、ストレージによって異なるＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）方式のレベルを設定することができる。そして、必要な保護レベルが高いオブジェクトデータは、多重化度の高いＲＡＩＤ方式を設定したストレージに保存することができる。一方、必要な保護レベルが低いオブジェクトデータは、多重化度の低いＲＡＩＤ方式を設定したストレージに保存することができる。この場合、図３Ａ及び図３Ｂに示した部分空間−ストレージ対応表１０５の代わりに、例えば、２種類の部分空間−ストレージ対応表（以下、「第１の対応表」、「第２の対応表」と称する）を用意する。
【０１４６】
即ち、第１の対応表には、多重化度の高いＲＡＩＤ方式を設定したストレージ（ストレージ識別情報）と、部分空間とが関連付けされる。一方、第２の対応表には、多重化度の低いＲＡＩＤ方式を設定したストレージ（ストレージ識別情報）と、部分空間とが関連付けされる。このような複数の部分空間−ストレージ対応表を使い分ける態様によれば、オブジェクトデータに必要とされる保護レベルに合った配置処理が実現する。
【０１４７】
以下、オブジェクトデータの保護レベルを考慮するオブジェクトデータ配置装置の動作について、図７に示すフローチャートを改めて参照して説明する。
【０１４８】
まず、ハッシュ演算機能１０１は、注目するオブジェクトデータ及びそのメタデータ１１０のうち、当該メタデータに基づいてハッシュ演算を行うことにより、ハッシュ１１１を得る（ステップＳ２０１）。本変形例において、係るメタデータには、対応するオブジェクトデータの保護レベルが含まれる。空間指定情報演算機能１０３は、ハッシュ１１１をシード（初期値）に設定すると共に、そのシードを用いて空間指定情報１１５を発生する（ステップＳ２０２）。
【０１４９】
そして、空間指示判定機能１０４は、係るメタデータを元に、第１の対応表及び第２の対応表のうち、当該メタデータに対応する何れか一方の部分空間−ストレージ対応表を選択する。そして、空間指示判定機能１０４は、選択した部分空間−ストレージ対応表から得られる部分空間情報１１４を参照することにより、空間指定情報演算機能１０３から取得した空間指定情報１１５が指し示す部分空間が、当該メタデータに対応する何れか一方の部分空間−ストレージ対応表の中に存在するか否かを判断する（ステップＳ２０３）。
【０１５０】
ステップＳ２０２にて生成した空間指定情報１１５が、ステップＳ２０３にて選択した部分空間−ストレージ対応表に存在する部分空間を指し示さない場合（ステップＳ２０３にてＮＯ）、処理はステップＳ２０２に戻される。そして空間指定情報演算機能１０３は、次の空間指定情報１１５を発生する。
【０１５１】
一方、ステップＳ２０２にて生成した空間指定情報１１５が、ステップＳ２０３にて選択した部分空間−ストレージ対応表に存在する部分空間を指し示す場合（ステップＳ２０３にてＹＥＳ）、空間指示判定機能１０４は、空間指定情報１１５が指し示す部分空間に関連付けされているストレージ識別情報（ストレージＩＤ）を、ストレージ識別情報１１７として出力する。これにより、注目するオブジェクトデータが記憶されるストレージが決定される。
【０１５２】
尚、空間指定情報１１５として使用する情報としては、空間上の座標を示す単数もしくは複数の数（例えば、整数、実数など様々な種類の数）や識別子の他にも、空間上の領域、部分空間を示す単数もしくは複数の数（例えば、整数、実数など様々な種類の数）や識別子など様々なものが考えられる。また、空間指定情報１１５を生成する空間指定情報演算機能１０３には、同じメタデータを持つデータに対しては常に同じ空間指定情報を発生し、発生する空間指定情報がお互いに相関しない（相関の度合いが小さい）のであれば様々な演算機能（演算モジュール）を採用することができる。
【０１５３】
また、本実施形態では、上記の通りハッシュをシードとして利用する構成を例に説明した。しかしながら、本発明は、係る構成には限定されず、例えば、アドレスを利用して管理されているストレージであれば、そのアドレスをシードとして利用してもよい。
【０１５４】
＜第２の実施形態＞
次に、上述した第１の実施形態に係るオブジェクトデータ配置装置１００を基本とする第２の実施形態について説明する。以下の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第１の実施形態と同様な構成についての重複する説明は省略する。
【０１５５】
上述した第１の実施形態は、部分空間−ストレージ対応表１０５に登録された全ての部分空間ＰＳが、空間指定情報演算機能１０３の指定空間ＤＳに内包されていることを前提とした。これに対して本実施形態は、このような前提に限定されない手法について説明する。
【０１５６】
図１０は、本発明の模範的な第２の実施形態におけるオブジェクトデータ配置装置の構成を示すブロック図である。
【０１５７】
オブジェクトデータ配置装置２０００は、配置先としてのストレージ３３０に対して、オブジェクト（配置対象）としてのデータ（オブジェクトデータ）の配置先を決定する装置である。本実施形態においても、オブジェクトデータは、ストレージ３３０に格納される数値データおよび特定の処理（プロセス、機能、アルゴリズム）が記述されたソフトウェアプログラムの少なくとも何れかを構成する。
【０１５８】
オブジェクトデータ配置装置２０００は、大別して、ハッシュ演算機能３０１と、ストレージ決定機能３２０とを備えており、空間指定情報−ストレージ対応表３０５と、特徴量３０６とを参照可能である。ハッシュ演算機能３０１、空間指定情報−ストレージ対応表３０５、並びに特徴量３０６は、上述した第１の実施形態におけるハッシュ演算機能１０１、空間指定情報−ストレージ対応表１０５、並びに特徴量１０６と同様な構成を採用することができるので、本実施形態における重複する説明は省略する。
【０１５９】
ストレージ決定機能３２０は、空間指定情報演算機能３２１と、空間指示判定機能（判定機能）３０９とを含む。本実施形態においても、空間指定情報演算機能３２１は、第１の実施形態において空間指定情報演算機能１０３が空間指定情報１１５を生成したのと同様に、空間指定情報３１５を出力する。但し、本実施形態において空間指定情報演算機能３２１は、空間指定情報演算機能３２１は、複数の副（サブ）空間指定情報演算機能３０２（Ａ），３０６（Ｂ）を有しており、これらの空間指定情報演算機能が出力する空間指定情報３０２１，３０６１の何れかを、空間指定情報１１５として出力する（詳細は後述する）。
【０１６０】
空間指示判定機能３０９は、空間指定情報演算機能３２１から入手した空間指定情報３１５が、部分空間−ストレージ対応表３０５に含まれる部分空間ＤＳを指し示すか否かを、部分空間情報３１４に基づいて判定する。そして、係る判定の結果、空間指定情報３１５が指し示す当該部分空間ＤＳが部分空間−ストレージ対応表３０５に存在する場合、空間指示判定機能３０９は、部分空間−ストレージ対応表３０５から検出したストレージ識別情報３１７を出力する。これにより、注目するオブジェクトデータは、複数のストレージ３３０のうち、当該ストレージ識別情報３１７に対応するストレージ３３０に格納される。一方、係る判定の結果、空間指定情報３１５が何れの部分空間ＤＳも指し示さない場合、空間指示判定機能３０９は、再計算命令３１３を、空間指定情報演算機能３２１に送る。
【０１６１】
空間指定情報演算機能３２１が出力する空間指定情報３１５は、空間指定情報演算機能３２１が取り扱う指定空間ＤＳが変更されるに際して、次のような条件を満たす。
【０１６２】
即ち、指定空間ＤＳが変更される前に空間指定情報演算機能３２１が出力する個々の空間指定情報３１５のうち、係る指定空間ＤＳの変更後に空間指定情報演算機能３２１が出力する空間指定情報３１５は、係る変更後に空間指定情報演算機能３２１が出力する個々の空間指定情報３１５の順番を維持した状態で含まれる。尚、指定空間ＤＳの変更は、外部装置やユーザによる指示に応じて変更してもよい。
【０１６３】
この条件に関連して、空間指定情報演算機能３２１は、複数の副（サブ）空間指定情報演算機能を有している。即ち、空間指定情報演算機能３２１は、本実施形態において、図１０に示す如く、一例として、２つの空間指定情報演算機能（Ａ）３０２と空間指定情報演算機能（Ｂ）３０６とを有しており、これらを利用して空間指定情報３１５を生成する。
【０１６４】
本実施形態において、オブジェクトデータ及びそのメタデータ３１０は、例えば、ストレージ３３０に対する書き込み命令が外部装置において発行されるのに応じて、オブジェクトデータ配置装置２０００に入力される。オブジェクトデータ配置装置２０００は、オブジェクトデータ及びそのメタデータ３１０のうち少なくとも当該メタデータを入手可能な構成であればよい。
【０１６５】
ハッシュ演算機能３０１は、入手したメタデータ３１０に基づいてハッシュ演算を行うことにより、２つのハッシュ３１１ａ，３１１ｂを出力する。ハッシュ演算には、メタデータ３１０をそのまま出力する、もしくは加工してから出力する演算を採用することができる。ここで、ハッシュ３１１ａ，３１１ｂは、当該メタデータに基づいて生成された空間指定情報３１５（本実施形態では空間指定情報３０２１，３０６１の何れか）の生成に使用可能な情報の一例である。このメタデータとしては、例えば、アドレス、オブジェクト名、ディレクトリ名、もしくはファイル名などが想定される。
【０１６６】
空間指定情報演算機能（Ａ）３０２は、ハッシュ３１１ａをシード（初期値）として用いて、空間指定情報（Ａ）３０２１を発生する。一方、空間指定情報演算機能（Ｂ）３０６は、ハッシュ３１１ｂをシードとして用いて、空間指定情報（Ｂ）３０６１を発生する。但し、空間指定情報演算機能（Ｂ）３０６の指定空間ＤＳは、空間指定情報演算機能（Ａ）３０３の指定空間ＤＳを内包する。空間指定情報演算機能（Ａ）３０２が生成する空間指定情報（Ａ）３０２１と、空間指定情報演算機能（Ｂ）３０６が生成する空間指定情報（Ｂ）３６１とは、相互関係を略有しない。
【０１６７】
但し、本実施形態に係るオブジェクトデータ配置装置２０００においては、空間指定情報演算機能（Ｂ）３０６の指定空間ＤＳが、部分空間−ストレージ対応表３０５に登録されている部分空間ＤＳを内包していない場合を考慮していない。この点が考慮された装置構成に関しては、図１２を参照して後述する。
【０１６８】
部分空間−ストレージ対応表３０５は、上述した第１の実施形態における部分空間−ストレージ対応表１０５と同様な構成を有する。よって、部分空間−ストレージ対応表３０５に登録されているストレージ情報は、第１の実施形態において上述した場合と同様に、ストレージ機器と１対１に対応している必要はない。
【０１６９】
ストレージ決定機能３２０は、部分空間−ストレージ対応表３０５に登録されている部分空間情報（部分空間ＤＳ）が、空間指定情報演算機能（Ａ）３０２の指定空間に内包されている場合、空間指定情報３１５としての空間指定情報（Ａ）３０２１に対応するストレージが存在するか否かを判断する。
【０１７０】
ここで、以下の説明で採用するところの、「空間指定情報Ｘに対応するストレージが存在するかを判断（判定）する」、なる表現について定義する。この表現は、参照すべき部分空間−ストレージ対応表３０５に関連付けされている部分空間ＰＳの中に、当該空間指定情報Ｘが指し示す部分空間ＰＳがあるか否かを判断する処理と、その判断で当該空間指定情報Ｘが指し示す部分空間ＰＳが存在する場合に、該空間指定情報が指し示す部分空間ＰＳに関連付けされているストレージ３３０が存在すると判断する処理とを表す（以下の実施形態においても同様である）。
【０１７１】
そして、存在しないと判断した場合、ストレージ決定機能３２０は、空間指定情報演算機能（Ａ）３０２による空間指定情報（Ａ）３０２１の発生をやり直す。一方、存在すると判断した場合、ストレージ決定機能３２０は、空間指定情報（Ａ）３０２１が指し示す部分空間ＤＳに対応するストレージ３３０を識別可能な情報として、ストレージ識別情報３１７を出力する。
【０１７２】
一方、ストレージ決定機能３２０は、部分空間−ストレージ対応表３０５に登録されている部分空間ＰＳが、空間指定情報演算機能（Ａ）３０２が取り扱う指定空間ＤＳに内包されていない場合、空間指定情報演算機能（Ｂ）３０６により、空間指定情報（Ｂ）３０６１を生成する。
【０１７３】
そして、ストレージ決定機能３２０は、空間指定情報演算機能（Ａ）３０２が取り扱う指定空間ＤＳと、空間指定情報３１５としての空間指定情報（Ｂ）３０２１とを比較する。この比較の結果、空間指定情報（Ｂ）３０２１が空間指定情報演算機能（Ａ）３０２の指定空間に内包されていない場合、ストレージ決定機能３２０は、空間指定情報（Ｂ）３０２１に対応するストレージ３３０が存在するか判断する。そして、存在しないと判断した場合、ストレージ決定機能３２０は、空間指定情報演算機能（Ｂ）３０６による空間指定情報（Ｂ）３０６１の発生からやり直す。一方、存在すると判断した場合、ストレージ決定機能３２０は、空間指定情報（Ｂ）３０６１が指し示す部分空間ＤＳに対応するストレージ３３０を識別可能な情報として、ストレージ識別情報３１７を出力する。
【０１７４】
そして、残るケースとして、空間指定情報（Ｂ）３０６１が空間指定情報演算機能（Ａ）３０２の指定空間ＤＳに内包されている場合が考えられる。この場合、空間指定情報演算機能（Ａ）３０２は、空間指定情報（Ａ）３０２１を生成し、ストレージ決定機能３２０は、係る空間指定情報（Ａ）３０２１が指し示す部分空間ＰＳに対応するストレージ３３０が存在するか否かを判定する。そして、存在しないと判断した場合、ストレージ決定機能３２０は、空間指定情報演算機能（Ｂ）３０６による空間指定情報（Ｂ）３０６１の生成からやり直す。一方、存在すると判断した場合、ストレージ決定機能３２０は、空間指定情報（Ａ）３０２１が指し示す部分空間ＤＳに対応するストレージ３３０を識別可能な情報として、ストレージ情報３１７を出力する。
【０１７５】
次に、上述した本実施形態に係る一連の動作を実現すべく、オブジェクトデータ配置装置２０００が実行するオブジェクトデータの配置処理について、図１１を参照して説明する。以下に説明する処理は、部分空間−ストレージ対応表３０５に登録されている部分空間ＰＳが、空間指定情報演算機能（Ａ）３０２の指定空間ＤＳに内包されず、且つ空間指定情報演算機能（Ｂ）３０６の指定空間ＤＳに内包されることを前提としている。
【０１７６】
図１１は、本発明の第２の実施形態に係るオブジェクトデータ配置装置が実行するオブジェクトデータの配置処理を示すフローチャートである。ここで、オブジェクトデータ配置装置２０００がコンピュータによって実現される場合、以下に説明する各ステップの処理は、そのコンピュータのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が実行することになる（詳細は図１７を参照して後述する）。
【０１７７】
ステップＳ４０１：ハッシュ演算機能３０１は、注目するオブジェクトデータ及びそのメタデータ３１０のうち、当該メタデータに基づいてハッシュ演算を行うことにより、ハッシュ（Ａ）３１１ａとハッシュ（Ｂ）３１１ｂとを得る。そして、ハッシュ演算機能３０１は、ハッシュ（Ａ）３１１ａを空間指定情報演算機能（Ａ）３０２に、ハッシュ（Ｂ）３１１ｂを空間指定情報演算機能（Ｂ）３０６に与える。
【０１７８】
ステップＳ４０２：空間指定情報演算機能（Ａ）３０２は、取得したハッシュ（Ａ）３１１ａをシード（初期値）に設定し、空間指定情報演算機能（Ｂ）３０６は、取得したハッシュ（Ｂ）３１１ｂをシード（初期値）に設定する。
【０１７９】
ステップＳ４０３：空間指定情報演算機能（Ｂ）３０６は、空間指定情報（Ｂ）３０６１を発生する。
【０１８０】
ステップＳ４０４：空間指示判定機能３０９は、ステップＳ４０３にて得られた空間指定情報（Ｂ）３０６１が、空間指定情報演算機能（Ａ）３０２の指定空間ＤＳに含まれているか判断する。この判断の結果、空間指定情報（Ｂ）３１５が空間指定情報演算機能（Ａ）３０２の指定空間に内包されている場合（ステップＳ４０４にてＹＥＳ）、空間指示判定機能３０９は、再計算命令３１３を空間指定情報演算機能３２１に与え、処理をステップＳ４０５に進める。一方、空間指定情報（Ｂ）３１５が空間指定情報演算機能（Ａ）３０２の指定空間に内包されていない場合（ステップＳ４０４にてＮＯ）、空間指示判定機能３０９は、処理をステップＳ４０６に進める。
【０１８１】
ステップＳ４０５：空間指定情報演算機能（Ａ）３０２は、空間指定情報（Ａ）３０２１を発生する。このとき空間指定情報演算機能３２１は、発生した空間指定情報（Ａ）３０２１を空間指定情報３１５として空間指示判定機能３０９に与え、処理をステップＳ４０７に進める。
【０１８２】
ステップＳ４０６：ステップＳ４０４における判断結果に応じて、空間指定情報演算機能３２１は、空間指定情報（Ｂ）３０６１を空間指定情報３１５として空間指示判定機能３０９に与え、処理をステップＳ４０７に進める。
【０１８３】
ステップＳ４０７：空間指示判定機能３０９は、空間指定情報３１５（即ち、空間指定情報３０２１，３０６１の何れか）が部分空間−ストレージ対応表３０５に登録されている部分空間ＰＳを指し示しているか否か判断する。空間指示判定機能３０９は、指し示していると判断した場合（ステップＳ４０７にてＹＥＳ）は処理をステップＳ４０８に進め、指し示していないと判断した場合（ステップＳ４０７にてＮＯ）は処理をステップＳ４０３に戻す。
【０１８４】
ステップＳ４０８：空間指示判定機能３０９は、空間指定情報３１５が指し示す部分空間ＰＳに対応するストレージ３３０を識別可能な情報として、ストレージ識別情報３１７を出力する。
【０１８５】
尚、上述した本実施形態では、２つの空間指定情報演算機能３０２，３０６に対して異なるハッシュ３１１ａ，３１１ｂを採用する場合について説明した。しかしながら、空間指定情報演算機能（Ａ）３０２と空間指定情報演算機能（Ｂ）３０６とが同じハッシュを入力した場合においても相互関係を略有しない空間指定情報を出力する場合には、これら２つの空間指定情報演算機能３０２，３０６に対して同じハッシュ値を入力してもよい。
【０１８６】
（第２の実施形態の変形例）
ところで、図１０及び図１１を参照して説明したオブジェクトデータの配置処理は、部分空間−ストレージ対応表３０５に部分空間ＰＳとして登録されている全ての部分空間ＰＳが、空間指定情報演算機能（Ｂ）３０６の指定空間ＤＳには内包される場合を前提とした。そこで、以下に説明する変形例では、係る前提（前提条件）による制約を受けない装置構成（処理構成）について、図１２を参照して説明する。
【０１８７】
即ち、本変形例では、部分空間−ストレージ対応表３０５に登録されている部分空間ＰＳが、空間指定情報演算機能（Ｂ）３０６の指定空間ＤＳに内包されなくなった場合は、オブジェクトデータ配置装置２０００（ストレージ決定機能３２０）に、更に、第３の空間指定情報演算機能（空間指定情報演算機能Ｃ）を加える。この場合において、空間指定情報演算機能Ｃの指定空間ＤＳは、部分空間−ストレージ対応表３０５に登録されている部分空間ＰＳを内包している。
【０１８８】
図１２は、第２の実施形態の変形例に係る３つの空間指定情報演算機能の動作を説明する図である。ここでは、部分空間−ストレージ対応表３０５に登録されている部分空間ＰＳは、説明の便宜上から１次元空間である数直線である場合を例に説明する。この場合、空間指定情報３１５は、当該数直線上の１点を１つの実数で表現するとする。
【０１８９】
図１２に示す横軸は、３つの空間指定情報演算機能（Ａ，Ｂ，Ｃ）が発生する空間指定情報（実数）を数直線で表している。また、各横軸の上に示される帯状の範囲は、当該各空間指定情報演算機能が発生可能な空間指定情報（実数）の値域を表す。ここで、値域とは、ある値から他の値までの値の範囲である。そして、各帯状の範囲のうち、斜線を付した範囲は、対応する空間指定情報演算機能が発生する実数が、ストレージの判定に際して採用される範囲を表す。
【０１９０】
本変形例に係るオブジェクトデータ配置装置は、図１２に例示すような空間指定情報の発生範囲を有する３つの空間指定情報演算機能を有する。そして、係る３つの空間指定情報演算機能は、以下のように動作する。
【０１９１】
（１）空間指定情報演算機能（Ｃ）が発生する空間指定情報が指し示す０次元以上の空間が、空間指定情報演算機能（Ｂ）の指定空間ＤＳに内包されない場合は、空間指定情報演算機能（Ｃ）が発生した空間指定情報を用いて、対応するストレージがあるか否かが判定される。
【０１９２】
（２）空間指定情報演算機能（Ｃ）が発生する空間指定情報が指し示す０次元以上の空間が、空間指定情報演算機能（Ｂ）の指定空間ＤＳに内包される場合は、空間指定情報演算機能（Ｂ）により空間指定情報が発生される。
【０１９３】
（３）空間指定情報演算機能（Ｂ）が発生する空間指定情報が指し示す０次元以上の空間が、空間指定情報演算機能（Ａ）の指定空間ＤＳに内包されない場合は、空間指定情報演算機能（Ｂ）が発生した空間指定情報を用いて、対応するストレージがあるか否かが判定される。
【０１９４】
（４）空間指定情報演算機能（Ｂ）が発生する空間指定情報が指し示す０次元以上の空間が、空間指定情報演算機能（Ａ）の指定空間ＤＳに内包される場合は、空間指定情報演算機能（Ａ）により空間指定情報が発生され、空間指定情報演算機能（Ａ）が発生した空間指定情報を用いて、対応するストレージがあるか否かが判定される。
【０１９５】
次に、上述した３つの空間指定情報演算機能を利用する場合の、オブジェクトデータの配置処理について、図１１に示すフローチャートと比較しながら説明する。
【０１９６】
空間指定情報演算機能（Ｃ）は、空間指定情報演算機能（Ｃ）のためのハッシュをシード（初期値）に設定する。この処理は、ステップＳ４０２に相当する。そして、空間指定情報演算機能（Ｃ）は、空間指定情報（Ｃ）を発生し、発生した空間指定情報（Ｃ）を空間指示判定機能３０９に与える。この処理は、ステップＳ４０３に相当する。
【０１９７】
ストレージ３３０を決定する際、空間指示判定機能３０９は、空間指定情報（Ｃ）が空間指定情報演算機能（Ｂ）３０６の指定空間ＤＳに内包されない場合、空間指定情報（Ｃ）が指し示す部分空間ＰＳが存在するか判定する。この判定で部分空間ＰＳが存在しないと判定された場合、処理は空間指定情報演算機能（Ｃ）による空間指定情報（Ｃ）の発生に戻る。この処理は、ステップＳ４０７及びその後のステップＳ４０３に相当する。
【０１９８】
一方、係る判定で部分空間ＰＳが存在すると判定された場合、ストレージ決定機能３２０は、空間指定情報（Ｃ）が指し示す部分空間ＰＳに対応するストレージ識別情報（ストレージＩＤ）３１７を出力する。この処理は、ステップＳ４０７及びステップＳ４０８に相当する。
【０１９９】
また、空間指定情報（Ｃ）が空間指定情報演算機能（Ｂ）３０６の指定空間ＤＳに内包される場合、空間指定情報演算機能（Ｂ）３０６は、空間指定情報（Ｂ）を生成し、この空間指定情報（Ｂ）が空間指定情報演算機能（Ａ）３０２の指定空間ＤＳに内包されるか否か判定する。この処理は、ステップＳ４０５及びその後のステップＳ４０７に相当する。
【０２００】
そして、ストレージ決定機能３２０（空間指示判定機能３０９）は、空間指定情報３１５としての空間指定情報（Ｂ）が空間指定情報演算機能（Ａ）３０２の指定空間に内包されない場合、空間指定情報（Ｂ）が指し示す部分空間ＰＳが存在するか判定する。この処理は、ステップＳ４０６及びステップＳ４０７に相当する。この判定で部分空間ＰＳが存在しないと判定された場合、処理は、空間指定情報演算機能（Ｃ）による空間指定情報（Ｃ）の発生に戻る。この処理は、ステップＳ４０７及びその後のステップＳ４０３に相当する。
【０２０１】
一方、係る判定で部分空間ＰＳが存在すると判定された場合、ストレージ決定機能３２０は、空間指定情報（Ｂ）が指し示す部分空間ＰＳに対応するストレージ識別情報（ストレージＩＤ）３１７を出力する。この処理は、ステップＳ４０７及びステップＳ４０８に相当する。
【０２０２】
空間指定情報（Ｂ）が空間指定情報演算機能（Ａ）３０２の指定空間に内包される場合、空間指定情報演算機能（Ａ）３０２は空間指定情報（Ａ）３１２を生成し、空間指定情報（Ａ）が指し示す部分空間が存在するか判定する。この処理は、ステップＳ４０５及びその後のステップＳ４０７に相当する。この判定で部分空間が存在しないと判定された場合、処理は空間指定情報演算機能（Ｃ）による空間指定情報（Ｃ）の発生に戻る。この処理は、ステップＳ４０７及びステップＳ４０８に相当する。
【０２０３】
一方、係る判定で部分空間が存在すると判定された場合、ストレージ決定機能３２０は、空間指定情報（Ａ）が指し示す部分空間に対応するストレージ情報（ストレージＩＤ）３１７を出力する。この処理は、ステップＳ４０７及びステップＳ４０８に相当する。
【０２０４】
ここで、本変形例に係る処理構成を、一般化して説明する。この場合、オブジェクトデータ配置装置は、指定空間ＤＳがお互いに異なる複数の空間指定情報演算機能を備える。係る複数の空間指定情報演算機能において、範囲番号ｎ（但しｎは自然数）を持つ空間指定情報演算機能の指定空間ＤＳは、範囲番号（ｎ＋１）を持つ空間指定情報演算機能の指定空間ＤＳに内包された関係がある。全ての空間指定情報演算機能は異なるハッシュを入力するなどすることにより、相互関係を略有しない空間指定情報を出力する。
【０２０５】
そして上記装置構成の場合、空間指示判定機能（３０９）は、
（Ｉ）最も大きな範囲番号をp、次に大きな範囲番号をqとし、
（ＩＩ）範囲番号pを持つ空間指定情報演算機能が生成した空間指定情報が、範囲番号ｑを持つ空間指定情報演算機能の指定空間ＤＳに内包されないときは、当該空間指定情報と部分空間（部分空間−ストレージ対応表（３０５）に登録されている部分空間）ＰＳとを比較すると共に、当該空間指定情報が部分空間ＰＳを指し示す場合には、該部分空間に関連付けされているストレージ識別情報（ストレージＩＤ）３１７に対応するストレージ３３０を、注目するオブジェクトデータの配置先であると判断し、指し示さない場合には空間指定情報の生成及び前記（Ｉ）からやり直す一方で、
（ＩＩＩ）値域番号ｐを持つ空間指定情報演算機能が生成した空間指定情報が、範囲番号ｑを持つ空間指定情報演算機能の指定空間ＤＳに内包される場合は、ｐを１減算すると共にｑを１減算し、その減算の結果、ｑが０ではない場合は前記（ＩＩ）を繰り返し、ｑが０の場合は範囲番号１を持つ空間指定情報演算機能が生成した空間指定情報と部分空間ＰＳとを比較すると共に、空間指定情報が部分空間ＰＳを指し示している場合は、該部分空間に関連付けされているストレージ識別情報（ストレージＩＤ）３１７に対応するストレージ３３０を、注目するオブジェクトデータの配置先である判断し、一致しない場合には空間指定情報の生成を前記（Ｉ）からやり直す。
【０２０６】
このとき、最も大きな範囲番号を持つ空間指定情報演算機能の指定空間ＤＳは、部分空間ＰＳを内包しているとよい。
【０２０７】
以上説明した本変形例から判るように、部分空間−ストレージ対応表３０５に登録されている部分空間ＰＳに、現状備えられている複数の空間指定情報演算機能の指定空間ＤＳに内包されない部分空間ＰＳがある場合、上述した構成と同様に、新たに、指定空間ＤＳが全ての部分空間−ストレージ対応表３０５に登録されている部分空間ＰＳを内包する空間指定情報演算機能を設けるとよい。
【０２０８】
このような第２の実施形態およびその変形例によれば、上述した第１の実施形態と同様に、オブジェクトデータを記憶するストレージ３３０が増減する場合であっても、少ない演算量で、最小限度のオブジェクトデータの移動により、各ストレージに設定したおおよそのバランス（比）に応じた個数のオブジェクトデータを記憶する状態を維持することができる。また、係る第２の実施形態およびその変形例によれば、各ストレージに配置するオブジェクトデータの個数のバランス（比）を、比較的簡単に設定することができる。
【０２０９】
従って、関連技術として説明した非特許文献１及び２，特許文献１，２に記載された技術と比較して、上述した第２の実施形態およびその変形例に係る手法は、各ストレージに配置するオブジェクトデータの個数のおおよその比を比較的柔軟に設定することができる。また、本実施形態によれば、特許文献３に記載された手法と比較して、スケーラビリティと効率性とを良好に両立することが可能になる。このため、例えば、記憶容量が異なる複数のストレージを組み合わせて分散ストレージを実現するシステムにおいても、係る本実施形態及びその変形例によれば、簡単に、且つ各ストレージに記憶領域の無駄な消費が生じないように、個々のオブジェクトデータを配置することができる。
【０２１０】
更に、本実施形態およびその変形例によれば、第１の実施形態において前提とされていた条件（即ち、空間指定情報演算機能（１０３）が扱う指定空間ＳＤが、部分空間−ストレージ対応表（１０５）に登録された部分空間を内包すること）による制約を受けることなく、現実的且つ効率的なオブジェクトデータ配置装置を実現することができる。
【０２１１】
即ち、第１の実施形態においては、空間指定情報演算機能１０３が扱う指定空間ＤＳを、部分空間−ストレージ対応表１０５に含まれる部分空間ＰＳが占める範囲よりも広く設定し過ぎた場合、空間指示判定機能１０４は、空間指定情報演算機能１０３が生成した空間指定情報１１５に対応ストレージが存在しないと判断する可能性が高くなる。この場合、計算時間が長くなるため、単一の空間指定情報演算機能（１０３）が扱う指定空間ＤＳを広く設定し過ぎる装置構成（処理構成）は望ましくない。
【０２１２】
これに対して上述した第２の実施形態およびその変形例によれば、取り扱う指定空間ＤＳが異なる複数の空間指定情報演算機能を利用することにより、部分空間−ストレージ対応表３０５に使用される部分空間ＰＳが占める範囲が広くなる可能性がある場合であっても、計算時間の短縮を実現することができる。
【０２１３】
尚、上述した各実施形態及び変形例において、オブジェクトデータを配置先毎に指定されたバランス（比）におおよそ応じた数量だけ配置するためには、１データとして取り扱われるオブジェクトデータの大きさは均一であることが望ましいがその限りではない。
【０２１４】
また、オブジェクトデータを、取扱単位に基づいて分解する場合は、メタデータをハッシュし、そのハッシュに基づいて、当該オブジェクトデータの取扱単位毎に、ハッシュなどによって空間指定情報演算機能のシードを生成する形態などを採用してもよい。また、係るオブジェクトデータの取扱単位毎に、メタデータと各取扱単位を識別する識別子をハッシュすることによって空間指定情報演算機能のシードを生成する形態などを採用してもよい。
【０２１５】
また、上述した各実施形態及び変形例において、１つのオブジェクトデータを多重化して記憶したい場合がある。この場合、ストレージ（１１６，３３０）を外部より指定された数量だけ指定する機能をオブジェクトデータ配置装置（１００，２０００）に設け、指定した複数のストレージに、同一のオブジェクトデータを配置する態様を採用することができる。この際、使用する各ストレージの記憶容量の違いを表現するためなどの理由により、部分空間−ストレージ対応表（１０５，３０５）において、１つのストレージに複数の部分空間ＰＳが対応している可能性がある。そのため、異なるストレージで格納する必要がある場合は、単一のストレージに対応した部分空間ＰＳを判定するためのテーブルもしくはアルゴリズムなどを用いて、ストレージ決定機能（１０２，３２０）によって複数の空間指定情報が、異なるストレージと対応する部分空間を指し示すことを確認すればよい。
【０２１６】
また、上記構成と同様な更なる変形例として、異なるストレージ間において、例えば、ＲＡＩＤ５によるデータ保護を行いたい場合がある。そこで、本変形例では、複数の関連するオブジェクトデータを、お互いに異なる複数のストレージに格納すべく、複数のストレージを指定する機能を、オブジェクトデータ配置装置（１００，２０００）に設け、指定した複数のストレージに、複数の関連するオブジェクトを配置してもよい。その際、ストレージの記憶容量の違いを表現するためなどの理由により、部分空間−ストレージ対応表（１０５，３０５）において、１つのストレージに複数の部分空間ＰＳが対応している可能性がある。そのため、異なるストレージを用いて格納する必要がある場合は、単一のストレージに対応した部分空間ＰＳを判定するためのテーブルもしくはアルゴリズムなどを用いるとよい。そしてこの場合は、当該関連するオブジェクトデータに対して、ストレージ決定機能（１０２，３２０）によって発生した空間指定情報が指し示す部分空間ＰＳが、異なるストレージと対応する部分空間であることを確認すればよい。このような態様によれば、ストレージ決定機能（１０２，３２０）によって発生した空間指定情報（１１５，３１５）が指し示す部分空間ＰＳの組み合わせを制限することにより、関連性のある複数のオブジェクトデータを、異なるストレージに分散配置することができる。
【０２１７】
また、上述した各実施形態及び変形例においては、配置先としてのストレージ（１１６，３３０）に対応する部分空間ＰＳを指し示す空間指定情報（１１５，３１５）が得られるまで、空間指定情報演算機能は、空間指定情報の発生を繰り返す。このため、場合によっては、オブジェクトデータを配置すべきストレージが決定されるまでに時間を要してしまう虞がある。そこで、このような事態を回避すべく、所定回数だけ空間指定情報を発生してもストレージに対応する部分空間を指し示す空間指定情報を得られない場合、対応するストレージがある部分空間ＰＳの中から何れかを、乱数によって選ぶ態様を採用してもよい。
【０２１８】
また、更なる変形例として、ストレージ（１１６，３３０）を決定する際に、メタデータとストレージとが関連付けされたテーブルを利用してもよい。この場合、まず、そのテーブルを参照することによってストレージが決定できる場合、該当するストレージが決定される。そして、当該テーブルの参照によってはストレージが決定できない場合は、上述した各実施形態に係る配置処理によってストレージを決定すればよい。このような態様によれば、例えば、高速にアクセスしたいオブジェクトデータは、特別に高速に動作するストレージに配置する一方で、その他のオブジェクトデータは、上述した各実施形態に係る配置処理を適用する、という装置構成（処理構成）が実現する。
【０２１９】
また、更なる変形例として、オブジェクトデータをストレージ（１１６，３３０）に記憶する際に、複数の部分（部分オブジェクトデータ）に分割した状態で記憶してもよい。その場合、個々の部分オブジェクトデータ自身は、固有の識別子を持たない。そこで、このような形態の場合は、以下のような処理を加えるとよい。即ち、係る変形例では、部分オブジェクトデータが持つ識別子を、ハッシュなどの計算機能によって計算することにより、当該個々の部分オブジェクトデータにそれぞれに一意に定まる識別子を付与する構成が考えられる。例えば、識別子Ａを持つオブジェクトデータＢを３つの部分オブジェクトデータ（Ｂ１，Ｂ２，Ｂ３）に分割してからストレージに記憶する場合を考える。この場合、単純には、例えば、係る３つの部分オブジェクトデータの固有の識別子（サブ情報）を以下のように付与し、それら固有の識別子を上述した各実施形態におけるメタデータとして採用すればよい。
【０２２０】
・部分ファイルＢ１：  識別子Ａに０を加えた情報、
・部分ファイルＢ２：  識別子Ａに１を加えた情報、
・部分ファイルＢ３：  識別子Ａに２を加えた情報。
【０２２１】
即ち、本変形例において、ハッシュ演算機能（１０１，３０１）は、オブジェクトデータＢが有する１つの固有な情報（識別子Ａ）に基づいて、部分オブジェクト毎に固有なサブ情報を生成すると共に、そのサブ情報に基づいて、部分オブジェクト毎にハッシュを生成する。ストレージ決定機能（１０２，３２０）は、係る部分オブジェクト毎に生成したハッシュを用いて空間指定情報を生成し、部分空間−ストレージ対応表（１０５，３０５）を参照しながら、部分空間と、該空間指定情報とを比較する。そして、ストレージ決定機能（１０２，３２０）は、空間指定情報が部分空間を指し示している場合は、当該部分空間に関連付けされているストレージ識別情報に対応するストレージを、部分オブジェクトの配置先であると判断する。
【０２２２】
また、更なる変形例として、複数の空間を使用する場合が考えられる。この場合、それぞれの空間に部分空間ＰＳが存在する可能性がある。この際、空間指定情報（１１５，３１５）を生成する際に、オブジェクトデータの識別子に基づいて、前記空間を指定し、前記指定した空間に対応する空間指定情報を生成すればよい。また、係る空間指定情報に基づき、該空間指定情報が指し示す単数もしくは複数の空間を選択し、当該空間上の部分空間をオブジェクトデータの配置先を決定するために使用することができる。
【０２２３】
ところで、上述した各実施形態及び変形例においては、オブジェクトデータの配置先として、データを記憶するストレージ（１１６，３３０）を想定した。そして、オブジェクトデータは、数値データおよび特定の処理（プロセス、機能、アルゴリズム）が記述されたソフトウェアプログラムの少なくとも何れかを構成すると仮定した。但し、上述した各実施形態及び変形例を例として説明した本発明の適用範囲は、係る各実施形態及び変形例には限定されない。具体的には、例えば、オブジェクトは、処理（命令、プロセス、機能、プログラムコード、アルゴリズム等）であることが想定される。そしてこの場合、当該オブジェクトの配置先は、当該処理が実行されるプロセッサやＩＰコア（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ  Ｃｏｒｅ）などの演算実行環境（処理実行環境）である。
【０２２４】
上述した各実施形態及び変形例を適用例として説明した本発明を、配置先である演算実行環境に適用する実施形態の場合には、例えば、複数のサーバ間における負荷分散（ロードバランシング）などの処理効率を改善することができる。
【０２２５】
更に、本発明は、以下に説明する第３の実施形態から明らかなように、物理的に存在するオブジェクトとして、荷物などの物品である場合にも適用可能である。
【０２２６】
＜第３の実施形態＞
以下、本発明の模範的な第３の実施形態について、図１３乃至図１４を参照して説明する。
【０２２７】
図１３は、本発明の第３の実施形態に係るオブジェクト送り先決定装置の構成を示すブロック図である。
【０２２８】
本実施形態において、オブジェクト送り先決定装置９００（以下、「装置９００」と略称する場合がある）は、送り先（住所など）を決定すべきオブジェクト（荷物などの物品）の識別子が入力されるのに応じて、そのオブジェクトの送り先を決定する。
【０２２９】
装置９００は、同じ送り先が登録されている状態では同じ識別子に対して同じ送り先を出力する。装置９００は、全ての送り先に関して、送り先毎に予め指定された比（度合い、バランス）におおよそ対応した確率で、個々のオブジェクトの送り先を決定する。
【０２３０】
また、装置９００は、送り先が追加された場合、或いは送り先が削除された場合においても、追加された送り先を含む全ての送り先、或いは削除された送り先を除く全ての送り先に関して、送り先毎に予め指定された比（度合い、バランス）におおよそ対応した確率で、個々のオブジェクトの送り先を決定する特性を維持する。
【０２３１】
このような装置９００によれば、送り先が追加または削除されるのに応じて、送り先を変更しなければならない場合であっても、送り先を変更すべきオブジェクトの発生を、最小限に抑えることができる。
【０２３２】
以下、オブジェクト送り先決定装置９００について詳細に説明する。装置９００は、大別して、識別子入力機能９０１、ハッシュ演算機能９０２、送り先決定機能９０３、送り先入力機能９０６、部分空間−送り先対応表９０７、及び送り先出力機能９０８を備える。送り先決定機能９０３は、空間指定情報演算機能９０４と、空間指示判定機能９０５とを含む。
【０２３３】
識別子入力機能９０１は、オブジェクトを識別するための識別子を、外部から入手することができる。識別子入力機能９０１は、取得した識別子を、識別子９１０としてハッシュ演算機能９０２に渡す。ここで、識別子９１０は、オブジェクトに固有な情報である。識別子入力機能９０１としては、キーボード、マウスなどのユーザ・インタフェース（マンマシンインタフェース）や、バーコード、郵便番号、或いは発送番号などを表す入力画像を解析する画像処理装置などが想定される。また、識別子入力機能９０１は、信号線を介して外部装置から識別子を取得する通信インタフェースであってもよい。
【０２３４】
装置９００は、オブジェクトを送ることが可能な送り先として同じ送り先が設定されている場合、同じ識別子が入力されるのに応じて、同じ送り先を決定する。このため、異なる送り先を得たい場合には、装置９００に対して、異なる識別子を設定する必要がある。
【０２３５】
ハッシュ演算機能９０２は、識別子９１０に基づいてハッシュ演算を行うことにより、ハッシュ９１１を出力する。ハッシュ演算には、識別子９１０をそのまま出力する、もしくは加工してから出力する演算を採用することができる。ここで、ハッシュ９１１は、オブジェクトに固有な情報（識別子９１０）に基づいて生成された空間指定情報の一例である。
【０２３６】
配置先決定機能としての送り先決定機能９０３は、ハッシュ演算機能９０２から入手したハッシュ９１１と、部分空間−送り先対応表９０７から得られる部分空間情報９１４とに基づいて、オブジェクトの送り先情報９１７を出力する。
【０２３７】
空間指定情報演算機能９０４は、ハッシュ９１１をシード（初期値）として空間指定情報を発生する。空間指定情報演算機能９０４は、発生した空間指定情報を空間指定情報９１２として、空間指示判定機能９０５に送る。ここで、空間指定情報の発生のために空間指定情報演算機能９０４に採用すべきアルゴリズムは、異なるシードが入力された場合は相関性の低い空間指定情報を発生し、同一のシードの場合には、同一の空間指定情報を発生するアルゴリズムであれば任意のアルゴリズムを採用することができる。但し、第１の実施形態でも上述したように、空間ＷＳの一部を空間指定情報が略一様な分布確率で指し示すアルゴリズムが望ましい。
【０２３８】
空間指示判定機能９０５は、空間指定情報演算機能９０４から入手した空間指定情報９１２と、部分空間−送り先対応表９０７から入手した部分空間情報９１４に基づいて、その空間指定情報９１２が指し示す部分空間ＰＳが、部分空間−送り先対応表９０７に存在するか判断する。この判断の結果、空間指定情報９１２が指し示す部分空間ＰＳが存在する場合、空間指示判定機能９０５は、その部分空間ＰＳに対応する送り先を、注目するオブジェクトの送り先を表す送り先情報９１７として出力する。一方、空間指定情報９１２が指し示す部分空間ＰＳが存在しない場合、空間指示判定機能９０５は、空間指定情報演算機能９０４に対して、再計算命令９１３を発行することにより、次の空間指定情報９１２の発生を命令する。
【０２３９】
送り先入力機能９０６は、送り先情報、送り先追加命令、送り先削除命令などを外部から取得するのに応じて、それらの情報や命令を、送り先変更命令９１５として、部分空間−送り先対応表９０７へ送る。ここで、送り先入力機能９０６としては、例えば、キーボード、マウスなどのユーザ・インタフェース（マンマシン・インタフェース）や、信号線を介して外部装置から情報や命令を取得する通信インタフェースが想定される。
【０２４０】
部分空間−送り先対応表９０７には、部分空間ＰＳと、その部分空間に対応する送り先情報（送り先識別子）とが関連付けされた状態で登録される。部分空間−送り先対応表９０７には、第１の実施形態における部分空間−ストレージ対応表（図３Ａ及び図３Ｂ）と同様なデータ構成を採用することができる。
【０２４１】
部分空間−送り先対応表９０７は、適当なタイミングにおいて、装置９００の外部より設定、或いは更新される（装置９００が自ら生成してもよい）。
【０２４２】
即ち、送り先変更命令９１５により、送り先入力機能９０６から、送り先の追加命令が送られる場合がある。この場合、送り先変更命令９１５には、追加すべき送り先を表す送り先情報が含まれる。そして、部分空間−送り先対応表９０７には、対応する部分空間が新たに割り当てられると共に、部分空間と、送り先変更命令９１５に含まれていた送り先情報とが関連付けされた状態で登録される。
【０２４３】
或いは、送り先変更命令９１５により、送り先入力機能９０６から、送り先の削除命令が送られる場合がある。この場合、送り先変更命令９１５には、削除すべき送り先を表す送り先情報が含まれる。そして、係る削除命令に含まれる送り先情報に一致する送り先情報と、それに対応する部分空間ＰＳとが、部分空間−送り先対応表９０７から削除される。尚、送り先との対応を削除した部分空間ＰＳは、送り先の追加命令が新たに送られてきたときに、その追加命令に含まれる送り先に対応する部分空間ＰＳとして再利用してもよい。
【０２４４】
或いはまた、送り先変更命令９１５により、送り先入力機能９０６から、送り先の変更命令が送られる場合がある。この場合、送り先変更命令９１５には、変更前の送り先を表す送り先情報と、変更後の送り先を表す送り先情報とが含まれる。そして、係る送り先変更命令に含まれる変更前後の送り先情報を利用して、部分空間−送り先対応表９０７に登録されている送り先が変更される。尚、送り先情報は、送り先と１対１の対応になっている必要はない。即ち、部分空間−送り先対応表９０７には、複数の部分空間に対して、同一の送り先情報が関連付けされてもよい。或いは、同一の部分空間が、複数の送り先をグループとして指し示しても良い。
【０２４５】
送り先出力機能９０８は、装置９００を利用する対象（対象装置など）にオブジェクトの送り先を出力する。送り先出力機能９０８の態様は、装置９００を利用する対象に依存する。
【０２４６】
次に、本実施形態に係るオブジェクト送り先決定装置９００の処理について説明する。
【０２４７】
図１４は、本発明の第３の実施形態に係るオブジェクト送り先決定装置が実行するオブジェクトの送り先決定処理を示すフローチャートである。ここで、装置９００がコンピュータによって実現される場合、以下に説明する各ステップの処理は、そのコンピュータのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が実行することになる（詳細は図１７を参照して後述する）。
【０２４８】
ステップＳ１００１：まず、事前の準備として、送り先入力機能９０６は、送り先の情報を受け取り、その情報を、送り先変更命令９１５として部分空間−送り先対応表９０７へ送る。部分空間−送り先対応表９０７では、各送り先に対応する部分空間ＰＳが付与され、部分空間ＰＳと送り先情報との対応関係が記録される。記憶する送り先の情報は、装置９００の出力を受け取る対象が、オブジェクトの送り先を決定可能な情報である必要がある。
【０２４９】
ステップＳ１００２：送り先の決定処理が開始されるのに応じて、識別子入力機能９０１は、送り先を決定すべきオブジェクトの識別子を取得すると共に、取得した識別子を、識別子９１０としてハッシュ演算機能９０２へ送る。
【０２５０】
ステップＳ１００３：ハッシュ演算機能９０２は、識別子９１０に基づくハッシュ演算によってハッシュ９１１を得る。ハッシュ演算機能９０２の演算は、識別子９１０をそのまま出力する、或いはハッシュ関数によって演算するなど様々な演算が考えられる。ハッシュ９１１は、空間指定情報演算機能９０４に送られ、空間指定情報生成のためのシード（初期値）となる。
【０２５１】
ステップＳ１００４：空間指定情報演算機能９０４は、ハッシュ９１１をシードとして空間指定情報９１２を発生する。
【０２５２】
ステップＳ１００５：空間指示判定機能９０５は、部分空間−送り先対応表９０７を参照することにより、空間指定情報９１２が指し示す部分空間ＰＳが存在するかを判断する。空間指定情報９１２が指し示す部分空間ＰＳが存在しない場合、処理はステップＳ１００４に戻される。この場合、空間指定情報演算機能９０４は、次の空間指定情報（９１２）を発生する。
【０２５３】
ステップＳ１００６：空間指示判定機能９０５は、空間指定情報９１２が指し示す部分空間ＰＳが存在する場合、部分空間−送り先対応表９０７の参照によって取得した送り先情報を、送り先情報９１７として、送り先出力機能９０８へ送る。送り先出力機能９０８は、装置９００を利用する対象に、オブジェクトの送り先を出力する。送り先出力機能９０８は、装置９００を利用する対象に依存する。
【０２５４】
次に、上述したオブジェクト送り先決定装置９００を利用した貯蔵物（荷物）の保存先決定システムについて説明する。
【０２５５】
図１５は、本発明の第３の実施形態に係る貯蔵物の保存先決定システムの構成を示すブロック図である。貯蔵物の保存先決定システム３０００は、ベルトコンベア内の貯蔵物１１０１、貯蔵物識別子読み取り機１１０２、保存先情報データベース（ＤＢ）１１０３、貯蔵物の保存先ラベル印刷機１１０４、及びオブジェクト送り先決定装置９００を備える。
【０２５６】
貯蔵物識別子読み取り機１１０２は、ベルトコンベア内を流れる貯蔵物（荷物）１１０１に付与された固有の識別子（バーコード、郵便番号、或いは発送番号など）を、光学式スキャンや画像処理等を利用することによって読み取る装置である。貯蔵物識別子読み取り機１１０２は、読み取った識別子を、装置９００（識別子入力機能９０１）に設定する。以下の説明では、処理対象となる貯蔵物１１０１を、注目する貯蔵物と称する。
【０２５７】
保存先情報データベース（ＤＢ）１１０３には、保存先決定システム３０００が取り扱う貯蔵物（荷物）を保存する可能性のある複数の保存先を表す情報（保存先情報）が予め記憶されている。装置９００（送り先入力機能９０６）は、保存先情報データベース１１０３を参照することにより、識別子に対応した保存先情報（送り先）を取得する。
【０２５８】
オブジェクト送り先決定装置９００（送り先決定機能９０３）は、注目する貯蔵物の識別子と、部分空間−送り先対応表９０７から得られる部分空間情報９１４とに基づいて、図１４を参照して上述した手順によって、当該注目する貯蔵物の保存先（送り先）を決定する。ここで、注目する貯蔵物の識別子は、貯蔵物識別子読み取り機１１０２から入手した情報である。部分空間情報９１４は、保存先情報データベース１１０３からの保存先情報によって適宜更新される部分空間−送り先対応表９０７から得られる情報である。
【０２５９】
保存先ラベル印刷機１１０４は、装置９００（送り先出力機能９０８）から取得した送り先情報（保存先情報）に応じて、ベルトコンベア内を流れる貯蔵物１１０１であるところの、注目する貯蔵物に対して、保存先を印刷する装置である。
【０２６０】
上述したシステム構成により、保存先決定システム３０００によれば、ベルトコンベアを流れる貯蔵物（注目する貯蔵物）の識別子に基づいて、その貯蔵物の保存先（送り先）を判定すると共に、判定した保存先を表すラベルを、当該貯蔵物に印刷することができる。その際、保存先決定システム３０００によれば、複数の貯蔵物（オブジェクト）を個々の保存先（送り先、配置先）に配置する際に、係る保存先毎に配置すべき貯蔵物の数量のおおよそのバランスを、比較的簡単な処理構成によって決定することができ、且つ保存先が増減した際においても、移動が必要な貯蔵物を最小限に抑制することができる。
【０２６１】
＜第４の実施形態＞
次に、第１乃至第３の実施形態において上述したオブジェクト配置装置（オブジェクト送り先決定装置）が実行されるシステム環境（ハードウェア環境）について、図１６Ａ及びＢを参照して説明する。
【０２６２】
上述したように、各実施形態における装置は、コンピュータによって実現することができる。この場合、係る装置の機能は、ソフトウェアプログラムを、係るコンピュータのＣＰＵが実行することによって実現される。但し、複数のストレージ（ストレージ群）が利用されるシステム環境においては、係る装置の機能を設ける場所に様々なバリエーションが想定される。
【０２６３】
図１６Ａ及びＢは、本発明の第４の実施形態に係るシステム環境のバリエーションを例示的に説明する図である。
【０２６４】
図１６Ａに示す例では、複数のクライアントによって構成されるクライアント群５００と、複数のストレージによって構成されるストレージ群５１０とが、ハブ（ＨＵＢ）５２０を介して、通信線５３０によって接続されている。そして、この例において、オブジェクト配置装置（オブジェクト送り先決定装置）の機能は、図１６Ａに斜線で示すように、クライアント群５００に設けられている。
【０２６５】
一方、図１６Ｂに示す例では、複数のクライアントによって構成されるクライアント群５５０と、複数のストレージによって構成されるストレージ群５６０とが、ハブ（ＨＵＢ）５７０を介して、通信線５８０によって接続されている。そして、この例において、オブジェクト配置装置（オブジェクト送り先決定装置）の機能は、図１６Ｂに斜線で示すように、ストレージ群５６０に設けられている。
【０２６６】
ここで、ストレージ群５１０、５６０は、物理的に複数のストレージによって構成される場合、単一のストレージ内に設けられた複数の仮想ストレージである場合、並びにそれらの組み合わせである。
【０２６７】
このように、第１乃至第３の実施形態及びこれらの変形例において上述したオブジェクト配置装置（オブジェクト送り先決定装置）を実現するに際しては、実行される環境を柔軟に選択することができる。
【０２６８】
（ハードウェア構成）
そして、上述した各実施形態において図面に示した各機能は、ソフトウェアプログラムの機能単位（ソフトウェアモジュール）と捉えることができる。この場合のハードウェア環境の一例を、図１７を参照して説明する。
【０２６９】
図１７は、本発明の第１乃至第４の実施形態およびそれらの変形例に係るクライアントまたはストレージのハードウェア構成を例示的に説明する図である。即ち、図１７は、図１６Ａ及びＢに示したストレージまたはクライアントを実現可能なコンピュータの構成であって、上述した各実施形態における各機能を実現可能なハードウェア環境を表す。
【０２７０】
図１７に示したハードウェアは、ＣＰＵ４１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４３、ハードディスク（記憶装置）４４を備え、これらの構成がバス（通信線）４５を介して接続された一般的なコンピュータである。ここで、係るハードウェアがストレージの場合、ハードディスク４４自体が上述した実施形態におけるストレージとして機能する場合も想定される。
【０２７１】
そして、上述した各実施形態を例に説明した本発明は、図１７に示したハードウェアに対して、その説明において参照したブロック構成図（図１、図２、図１０、図１３、図１５）、或いはフローチャート（図７、図１１、図１４）に記載した各ステップの機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、当該ハードウェアのＣＰＵ４１に読み出して実行することによって達成される。また、当該装置内に供給されたコンピュータ・プログラムは、読み書き可能な一時記憶デバイスとしてのメモリ（４２）またはハードディスク装置（４４）等の不揮発性の、コンピュータ読み取り可能な記憶デバイスに格納すれば良い。
【０２７２】
また、前記の場合において、当該ハードウェア内へのコンピュータ・プログラムの供給方法は、ＣＤ−ＲＯＭ等の各種記録媒体を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等のように、現在では一般的な手順を採用することができる。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコード或いは、そのコードが格納された記憶媒体によって構成されると捉えることができる。
【０２７３】
但し、第１乃至第３の実施形態およびこれらの変形例において上述したオブジェクトデータ配置装置（オブジェクト送り先決定装置）は、専用のハードウェア、或いは、物理的または仮想的に分散した実行環境を実現するコンピュータ（コンピュータ・システム）によって実現してもよい。
【０２７４】
（実施例）
次に、上述した第２の実施形態に係るオブジェクトデータ配置装置２０００を適用可能な具体例について説明する。本実施例においても、係るオブジェクトデータ配置装置を実現可能なコンピュータのハードウェア資源（環境）は、上述した図１７に例示する装置構成を採用することとする。
【０２７５】
図１８は、本発明の第２の実施形態に係る実施例としてのストレージシステムの構成を示す図である。図１８に示すストレージシステムは、上述した各実施形態におけるオブジェクトデータ配置装置２０００に対して、５台のストレージノード（１０００ａ乃至１０００ｅ）が、オブジェクト１０００を読み書き可能に接続されている構成を例示する。ここで、これらのストレージノード（１０００ａ乃至１０００ｅ）は、例えば、物理的に別体であり、例えば、通信ネットワーク上に適宜分散して配置されているとする。但し、これらのストレージノードは、例えば、ハードディスク４４の内部に仮想的に構成されていてもよい。
【０２７６】
本実施例において、ストレージノード１０００ａ乃至１０００ｅは、例えば、図１８及び以下の示す通りの記憶容量（最大記憶容量）を有することとする。即ち、
・ストレージノード１０００ａ：  １．０ [ＴｅｒａＢｙｔｅｓ]、
・ストレージノード１０００ｂ：  ０．５ [ＴｅｒａＢｙｔｅｓ]、
・ストレージノード１０００ｃ：  ０．７ [ＴｅｒａＢｙｔｅｓ]、
・ストレージノード１０００ｄ：  １．８ [ＴｅｒａＢｙｔｅｓ]、
・ストレージノード１０００ｅ：  ０．２ [ＴｅｒａＢｙｔｅｓ]。
【０２７７】
本実施例では、空間ＷＳの一例として、１次元の連続した空間を用いる。この１次元空間上において、個々の位置は、実数値によって表現される。
【０２７８】
図１９は、本発明の第２の実施形態に係る実施例としてのストレージシステムにおける部分空間とストレージノードとの対応表（部分空間−ストレージノード対応表１１００）を表す図である。
【０２７９】
即ち、図１８及び図１９に示すように、ストレージノード１０００ａは、当該一次元空間上の０から１（１は含まない）の部分空間（ＰＳ）Ａに対応する。ストレージノード１０００ｂは、当該一次元空間上の１から１．５（１．５は含まない）の部分空間（ＰＳ）Ｂに対応する。ストレージノード１０００ｃは、当該一次元空間上の２から２．７（２．７は含まない）の部分空間（ＰＳ）Ｃに対応する。ストレージノード１０００ｄは、当該一次元空間上の３から４（４は含まない）の部分空間（ＰＳ）Ｄに対応する。そして、ストレージノード１０００ｄは、当該一次元空間上の３から４（４は含まない）の部分空間（ＰＳ）Ｄと、同空間上の５から５．８（５．８は含まない）の部分空間（ＰＳ）Ｆとに対応する。
【０２８０】
本実施例において、空間指定情報演算機能３２１は、−１．０から８．０までの実数を生成し、２つの空間指定情報演算機能３０２，３０６（副空間指定情報演算機能ＡおよびＢ）を含む。
【０２８１】
副空間指定情報演算機能Ａ（３０２）は、０．０から４．０までの実数を生成する。副空間指定情報演算機能Ｂ（３０６）は、−１．０から８．０までの実数を生成する。つまり、副空間指定情報演算機能Ａが取り扱う指定空間ＤＳは、０．０から４．０までの実数が指し示す空間である。副空間指定情報演算機能Ｂが取り扱う指定空間ＤＳは、−１．０から８．０までの実数が指し示す空間である。即ち、本実施例において、副空間指定情報演算機能Ｂが取り扱う指定空間ＤＳは、副空間指定情報演算機能Ａが取り扱う指定空間ＤＳを内包する。このことを換言すると、本実施例において、副空間指定情報演算機能Ｂが取り扱う指定空間ＤＳは最も広く、副空間指定情報演算機能Ａが取り扱う指定空間ＤＳは、副空間指定情報演算機能Ｂが取り扱う指定空間ＤＳの次に広い範囲（領域）を有する空間である。
【０２８２】
識別子情報“ａ”を持つオブジェクトデータＡを、オブジェクトデータ配置装置２０００に入力した場合について述べる。
【０２８３】
まず、ハッシュ演算機能３０１は、オブジェクトデータＡに関する識別子情報“ａ”に文章列“Ａ”または文章列“Ｂ”を追加し、ハッシュを計算する。文章列“Ａ”を追加して計算したハッシュをハッシュＡとし、文章列“Ｂ”を追加して計算したハッシュをハッシュＢとする。
【０２８４】
次に、空間指定情報演算機能３２１は、空間指定情報３１５を生成する。図１０を参照して上述したように、空間指定情報演算機能３２１は、副空間指定情報演算機能Ａ（３０２）が生成する空間指定情報（副空間指定情報）３０２１または副空間指定情報演算機能Ｂ（３０６）が生成する空間指定情報（副空間指定情報）３０６１の何れかを、空間指定情報３１５を出力する。
【０２８５】
より具体的に、空間指定情報演算機能３２１において、まず、本実施例において最も指定空間ＤＳが広い副空間指定情報演算機能Ｂにより、ハッシュＢをシードとして用いて、副空間指定情報３０６１を生成する。ここでは、生成した副空間指定情報が３．０であると仮定する。この場合、３．０なる値は、副空間指定情報演算機能Ａが取り扱う指定空間ＤＳ（０．０〜４．０）に含まれる。このため、副空間指定情報演算機能Ａは、ハッシュＡをシードとして用いて、副空間指定情報３０２１を生成する。ここでは、生成された副空間指定情報が１．７であると仮定する。本実施例では、副空間指定情報演算機能Ａよりも狭い指定空間ＤＳを取り扱う他の副空間指定情報演算機能は存在しないため、係る副空間指定情報演算機能Ａが生成した１．７なる副空間指定情報３０２１が空間指定情報３１５として選択される。
【０２８６】
次に、空間指示判定機能３０９は、空間指定情報３１５が指し示す部分空間ＤＳが存在するか否かを判定する。即ち、空間指示判定機能３０９は、１．７なる空間指定情報３１５を基に、図１９に例示する部分空間−ストレージノード対応表１１００（３０５）を参照する。その結果、空間指示判定機能３０９は、１．７なる空間指定情報３１５が指し示す部分空間は存在しないと認識する。このため、空間指示判定機能３０９は、空間指定情報演算機能３２１に対して、再計算命令３１３を送信することにより、新たに空間指定情報３１５を生成するよう指示する。
【０２８７】
次に、係る指示に応じて、空間指定情報演算機能３２１において、副空間指定情報演算機能Ｂにより、副空間指定情報３０６１として６．２が生成されたと仮定する。この場合、６．２なる副空間指定情報３０６１は、副空間指定情報演算機能Ａが取り扱う指定空間ＤＳ（０．０〜４．０）に含まれない。このため、係る副空間指定情報演算機能Ｂが生成した６．２なる副空間指定情報３０６１が空間指定情報３１５として選択される。
【０２８８】
空間指示判定機能３０９は、この場合も上述した手順と同様に、６．２なる空間指定情報３１５を基に部分空間−ストレージノード対応表１１００（３０５）を参照し、この場合、係る空間指定情報は何れの部分空間も指し示さないことを認識する。このため、空間指示判定機能３０９は、空間指定情報演算機能３２１に対して、再計算命令３１３を送信する。
【０２８９】
そして、係る指示に応じて、空間指定情報演算機能３２１において、副空間指定情報演算機能Ｂにより、副空間指定情報３０６１として２．９が生成されたと仮定する。この場合、２．９なる副空間指定情報３０６１は、副空間指定情報演算機能Ａが取り扱う指定空間ＤＳ（０．０〜４．０）に含まる。このため、副空間指定情報演算機能Ａによって副空間指定情報３０２１が０．４なる値が生成されたと仮定する。本実施例では、副空間指定情報演算機能Ａが最も狭い指定空間ＤＳを扱うので、係る副空間指定情報演算機能Ａが生成した０．４なる副空間指定情報３０２１が空間指定情報３１５として選択される。
【０２９０】
空間指示判定機能３０９は、この場合も上述した手順と同様に、０．４なる空間指定情報３１５を基に部分空間−ストレージノード対応表１１００（３０５）を参照し、この場合、部分空間Ａ（０．０〜１．０）に関連付けされているストレージノード１０００ａを検出する。このため、空間指示判定機能３０９は、ストレージノード１０００ａに対応するストレージ識別情報３１７を出力する。即ち、オブジェクトデータ配置装置２０００は、オブジェクトデータＡを、ストレージノード１０００ａに配置する。
【０２９１】
ここで、副空間指定情報演算機能Ａ及びＢが略一様な分布確率で副空間指定情報（３０２１，３０６１）を生成する場合、空間指定情報演算機能３２１が出力する空間指定情報３１５も略一様になる。即ち、出力される空間指定情報３１５が略一様な分布確率であって、且つ空間指定情報演算機能３２１が取り扱う指定空間ＤＳが全ての部分空間ＰＳを内包するとき、各配置先（本実施例においてはストレージノード１０００ａ乃至１０００ｅ）が、あるオブジェクト１０００の配置先として選ばれる可能性は、各配置先に対応する部分空間ＰＳの広さ（大きさ）に略比例する。
【０２９２】
ストレージノードの追加：
ここで、上述した本実施例において、０．３[ＴｅｒａＢｙｔｅｓ]の記憶容量を持つストレージノード１０００ｆを、オブジェクトデータ配置装置２０００に新たに追加し、これにより、ストレージノード１００ｆを空間ＷＳ上の６から６．３（６．３は含まない）の部分空間（ＰＳ）Ｆとして、部分空間−ストレージノード対応表１１００（３０５）に新たに対応付けられた場合を考える。
【０２９３】
この場合、ストレージノード１０００ｆに対応する部分空間Ｆが追加されたことにより、個々のオブジェクトデータを記憶するストレージノードが変更になる可能性がある。このため、オブジェクトデータ配置装置２０００は、それらオブジェクトノードを記憶するストレージノードを再度計算する。ここでも、識別子情報“ａ”を持つオブジェクトデータＡを配置すべきストレージノードを演算する場合を考える。
【０２９４】
この場合も、まず、ハッシュ演算機能３０１は、オブジェクトデータＡに関する識別子情報“ａ”に文章列“Ａ”または文章列“Ｂ”を追加し、ハッシュを計算する。文章列“Ａ”を追加して計算したハッシュをハッシュＡとし、文章列“Ｂ”を追加して計算したハッシュをハッシュＢとする。
【０２９５】
次に、空間指定情報演算機能３２１は、上述した例と同様な手順により、空間指定情報３１５を生成する。
【０２９６】
即ち、指定空間ＤＳが最も広い副空間指定情報演算機能Ｂが生成した副空間指定情報３０６１が３．０であると仮定する。この場合、部分空間−ストレージノード対応表１１００には新たな部分空間Ｆが追加されているも、上述した場合と同様な処理の流れにより、空間指示判定機能３０９は、結果として、空間指定情報演算機能３２１に対して再計算命令３１３を送信する。これにより、新たな空間指定情報３１５の生成が開始される。
【０２９７】
次に、係る指示に応じて、副空間指定情報演算機能Ｂにより、副空間指定情報３０６１として６．２が生成されたと仮定する。この場合、上述した例と同様に、６．２なる値は、副空間指定情報演算機能Ａが取り扱う指定空間ＤＳ（０．０〜４．０）に含まれないため、係る副空間指定情報演算機能Ｂが生成した６．２なる副空間指定情報３０６１が空間指定情報３１５として選択される。
【０２９８】
そして、空間指示判定機能３０９は、空間指定情報演算機能３２１から入手した６．２なる空間指定情報３１５に基づいて、上記の如く部分空間Ｆが追加された部分空間−ストレージノード対応表１１００を参照する。これにより、空間指示判定機能３０９は、６．２が含まれる部分空間Ｆ（６．０〜６．３）に関連付けされているストレージノード１０００ｆを検出する。よって、オブジェクトデータ配置装置２０００は、オブジェクトデータＡを、ストレージノード１０００ｆに移動する。
【０２９９】
本実施例に係るオブジェクトデータ配置装置２０００では、配置先（ストレージノード）が追加された場合、追加した配置先にのみオブジェクトデータが移動する。係るオブジェクトデータ配置装置２０００において、空間指定情報演算機能３２１が有する２つの副空間指定情報演算機能Ａ及びＢは、それぞれ略一様な分布確率をなす副空間指定情報（３０２１，３０６１）を生成する。そして、これらの副空間指定情報演算機能が取り扱う指定空間ＤＳが全ての部分空間ＰＳを内包する場合は、追加した配置先を含め、各配置先が選ばれる可能性は、当該各配置先に対応する部分空間の広さ（大きさ）に略比例するという性質がある。
【０３００】
このような性質を、配置先（ストレージノード）が追加された場合においても維持するためには、上述した空間指定情報演算機能３２１のように、係る追加後の部分空間−ストレージノード対応表３０５（１１００）に含まれる部分空間ＰＳのうち、当該追加前に生成する副空間指定情報（３０２１，３０６１）が、当該変更前に生成する副空間指定情報の順番を維持すると共に、当該追加前の副空間指定情報を生成可能な副空間指定情報演算機能（Ａ及びＢ）を備えることが必要である。
【０３０１】
ストレージノードの削除：
次に、オブジェクトデータ配置装置２０００からストレージノード１０００ｆが削除された場合を考える。即ち、この場合、部分空間−ストレージノード対応表３０５は、部分空間Ｆの削除に応じて、図１９に示す部分空間−ストレージノード対応表１１００の状態に戻っている。この場合も、個々のオブジェクトデータを記憶するストレージノードが変更になる可能性があるため、オブジェクトデータ配置装置２０００は、それらオブジェクトノードを記憶するストレージノードを再度計算する。
【０３０２】
ここでも、識別子情報“ａ”を持つオブジェクトデータＡを配置するストレージノードを演算する場合を考える。ハッシュ演算機能３０１は、上述した場合と同様に、オブジェクトデータＡに関する識別子情報“ａ”に基づいて、ハッシュＡ及びハッシュＢを生成する。
【０３０３】
次に、空間指定情報演算機能３２１は、上述した例と同様な手順により、空間指定情報３１５を生成する。この場合、ストレージノード１０００ｆの削除に応じて部分空間−ストレージノード対応表３０５が元の状態（図１９）に戻っているので、副空間指定情報演算機能Ｂが生成した副空間指定情報３０６１が３．０の場合、６．２の場合において、最終的に空間指示判定機能３０９が出力する結果は、上述した元の場合とそれぞれ同じとなる。
【０３０４】
そして、空間指定情報３１５の再計算に際して、副空間指定情報演算機能Ｂによって副空間指定情報３０６１として２．９なる値が生成された場合は、副空間指定情報演算機能Ａによって副空間指定情報３０２１として生成された値が０．４の場合、係る０．４が空間指定情報３１５として選択される。これにより、空間指示判定機能３０９は、この場合も上述した手順と同様に、０．４なる空間指定情報３１５を基に、図１９に示す状態に戻った部分空間−ストレージノード対応表１１００（３０５）を参照し、この場合、部分空間Ａ（０．０〜１．０）に関連付けされているストレージノード１０００ａを検出する。このため、空間指示判定機能３０９は、ストレージノード１０００ａに対応するストレージ識別情報３１７を出力する。即ち、オブジェクトデータ配置装置２０００は、オブジェクトデータＡを、ストレージノード１０００ｆの削除に応じて、ストレージノード１０００ａに移動する。
【０３０５】
本実施例に係るオブジェクトデータ配置装置２０００では、配置先（ストレージノード）が削除された場合、削除された配置先に配置されていたオブジェクトデータのみが移動する。係るオブジェクトデータ配置装置２０００において、空間指定情報演算機能３２１が有する２つの副空間指定情報演算機能Ａ及びＢは、それぞれ略一様な分布確率をなす副空間指定情報（３０２１，３０６１）を生成する。そして、これらの副空間指定情報演算機能が取り扱う指定空間ＤＳが全ての部分空間ＰＳを内包する場合は、削除された配置先を除く残りの各配置先が選ばれる可能性は、当該各配置先に対応する部分空間の広さ（大きさ）に略比例するという性質がある。
【０３０６】
このような性質を、配置先（ストレージノード）が削除された場合においても維持するためには、上述した空間指定情報演算機能３２１のように、係る削除後の部分空間−ストレージノード対応表１１００（３０５）に含まれる部分空間ＰＳのうち、当該削除前に生成する副空間指定情報（３０２１，３０６１）が、当該削除前に生成する副空間指定情報の順番を維持すると共に、当該削除前の副空間指定情報を生成可能な副空間指定情報演算機能（Ａ及びＢ）を備えることが必要である。
【０３０７】
以上、本発明を、上述した模範的な各実施形態、これらの変形例、そして上記実施例に適用した例として説明した。しかしながら、本発明の技術的範囲は、上述した各実施形態に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更又は改良を加えることが可能であることは明らかである。そのような場合、係る変更又は改良を加えた新たな実施形態も、本発明の技術的範囲に含まれ得る。そしてこのことは、特許請求の範囲に記載した事項から明らかである。
【０３０８】
即ち、本発明は、上述した実施形態及びそれらの変形例には限定されない。本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【０３０９】
この出願は、２０１２年３月９日に出願された日本出願特願２０１２−０５２８００を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０３１０】
１０    オブジェクト配置装置
１１    識別子情報
１２    対応情報
１４    配置先
１５    空間指定情報
１６，１１３，３１３，９１３    再計算命令
１７    配置先指定情報
２２    空間指定情報生成機能
２４    配置先決定機能
４１    ＣＰＵ
４２    ＲＯＭ
４３    ＲＡＭ
４４    ハードディスク（記憶装置）
４５    バス（通信線）
１００，２０００    オブジェクトデータ配置装置
１０１，３０１，６０１    ハッシュ演算機能
１０２，３２０    ストレージ決定機能
１０３，３２１    空間指定情報演算機能
１０４，３０９，９０５    空間指示判定機能
１０５，３０５    部分空間−ストレージ対応表
１０６，３０６    特徴量
１１０，３１０    オブジェクトデータ及びそのメタデータ
１１１，３１１ａ，３１１ｂ，６１５，９１１    ハッシュ（ハッシュ値）
１１４，３１４，９１４    部分空間情報
１１５，３１５，９１２    空間指定情報
１１６，３３０，６１０    ストレージ
１１７，３１７    ストレージ識別情報
３０１    ハッシュ演算機能
３０２    空間指定情報演算機能（副空間指定情報演算機能）Ａ
３０６    空間指定情報演算機能（副空間指定情報演算機能）Ｂ
５００，５５０    クライアント群
５１０，５６０    ストレージ群
５２０，５７０    ハブ（ＨＵＢ）
５３０，５８０    通信線
６００    システム
６０２    重み付け機能
６０３    最大ハッシュ判定機能
６０４    ストレージ対応判断機能
６１２    オブジェクトデータメタデータ
６１４    ストレージメタデータ
６１８    重み付きハッシュ
６１９    最大ハッシュ
６２０    ストレージ識別情報
９００    オブジェクト送り先決定装置
９０１    識別子入力機能
９０２    ハッシュ演算機能
９０３    送り先決定機能
９０４    空間指定情報演算機能
９０６    送り先入力機能
９０７    部分空間−送り先対応表
９０８    送り先出力機能
９１０    識別子
９１５    送り先変更命令
９１７    オブジェクトの送り先情報
１０００    オブジェクト
１０００ａ、１０００ｂ、１０００ｃ、１０００ｄ、１０００ｅ、１０００ｆ    ストレージノード
１１０１    ベルトコンベア内の貯蔵物
１１０２    貯蔵物識別子読み取り機
１１０３    保存先情報データベース（ＤＢ）
１１０４    貯蔵物の保存先ラベル印刷機
１１００    部分空間−ストレージノード対応表
３０００    貯蔵物の保存先決定システム
３０２１，３０６１    副空間指定情報
【図１】
2013132779.tif 000003
【図２】
2013132779.tif 000004
【図３Ａ】
2013132779.tif 000005
【図３Ｂ】
2013132779.tif 000006
【図４】
2013132779.tif 000007
【図５】
2013132779.tif 000008
【図６】
2013132779.tif 000009
【図７】
2013132779.tif 000010
【図８】
2013132779.tif 000011
【図９Ａ】
2013132779.tif 000012
【図９Ｂ】
2013132779.tif 000013
【図１０】
2013132779.tif 000014
【図１１】
2013132779.tif 000015
【図１２】
2013132779.tif 000016
【図１３】
2013132779.tif 000017
【図１４】
2013132779.tif 000018
【図１５】
2013132779.tif 000019
【図１６Ａ】
2013132779.tif 000020
【図１６Ｂ】
2013132779.tif 000021
【図１７】
2013132779.tif 000022
【図１８】
2013132779.tif 000023
【図１９】
2013132779.tif 000024
【図２０】
2013132779.tif 000025
【国際調査報告】
2013132779.tif 000026
2013132779.tif 000027