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