初めに、図1を用いて一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
上述のように、非特許文献1で開示された方法では、システム内に存在しない配置先を考慮していないので、オブジェクトの配置先が存在しない場合は、そのアクセス性能が悪化する場合がある。そのため、システムに存在しない配置先が指定された場合であっても、アクセス性能の悪化を防止するオブジェクト配置装置、オブジェクト配置方法及びプログラムが、望まれる。
そこで、一例として図1に示すオブジェクト配置装置400を提供する。図1に示すオブジェクト配置装置400は、システム内に存在する第1の配置先に関する第1の識別子を組織化した第1の要素ベクトルと、システム内に存在しない第2の配置先に関する第2の識別子を組織化した第2の要素ベクトルと、に基づいてオブジェクトの配置先を探査する配置先探査部401を備えている。
図1に示すオブジェクト配置装置400は、それぞれがユニークな識別子を持っており、この識別子に基づいてオブジェクトの配置先を決定する。さらに、システム内に存在する第1の配置先に関する識別子を組織化した第1の要素ベクトルと、システム内に存在しない第2の配置先に関する識別子を組織化した第2の要素ベクトルと、に基づいて、オブジェクトの配置先を探査する。ここで、識別子とは、識別子間で小さい・大きい、又は、近い・遠い、の判定が可能な情報とする。
さらに、第1及び第2の識別子を組織化して、第1及び第2の要素ベクトルを算出する。ここで、識別子の組織化とは、システム内に存在する配置先の総数に基づいて、識別子を階層化する。さらに、階層化したレベル毎に配置先に隣接する他の配置先を抽出することを意味する。組織化の後は、各階層のレベル毎に、目的とする配置先に近いと考えられる他の配置先を選択し、このような配置先を移動先とすることで、効率的にオブジェクトの配置先を探査する。その際に、システム内に存在する配置先に関する情報(第1の識別子)だけではなく、システム内に存在しない配置先に関する情報(第2の識別子)を用いることで、システム内に存在しない配置先が、オブジェクトを記憶している配置先として指定された場合であっても、直ちに指定された配置先はシステム内に存在しない配置先であると確定できる。
即ち、システム内に存在しない配置先に関する情報に限って配置先を探査するとするならば、システム内に存在しない配置先が指定された場合には、存在しない配置先が存在するのであれば確実にその情報を記憶している、存在しない配置先の隣のオブジェクト記憶装置に移動しなければ、システム内に指定された配置先は存在しないと確定することができない。しかし、システム内に存在しない配置先に関する情報を予め用意しておくことで、指定された配置先はシステム内に存在しない配置先であると迅速に決定することができる。その結果、システムに存在しない配置先が指定された場合であっても、アクセス性能の悪化を防止することができる。
次に、各実施形態に共通する事項についてより具体的に説明する。
なお、オブジェクトの配置先(又は、オブジェクト配置装置)としてはストレージ装置を想定し、以下の説明をする。
ここで、図2に示すストレージ装置1(オブジェクト配置装置)を複数含むことでオブジェクトを記憶するシステムを構成することができる(図3参照)。図3に示すように、オブジェクトデータを記憶するシステムは複数のストレージ装置から構成され、各ストレージ装置は固有の識別子を備えている。図3に示すシステムにおいて、同じ識別子を持つオブジェクトデータは、常に同じストレージ装置に記憶されるものとする。
図2に示すストレージ装置1は、識別子入力部2と、記憶ストレージ決定部3と、移動先ストレージ決定部4と、隣接ストレージ記憶部5と、隣接非存在ストレージ記憶部6と、通信部7と、データ記憶部8と、を備えている。
識別子入力部2は、オブジェクトデータの識別子を受け付ける。
記憶ストレージ決定部3は、オブジェクトデータを記憶するストレージ装置を決定する。記憶ストレージ決定部3は、後述の配置先決定部に相当する。
移動先ストレージ決定部4は、アクセス命令によって指定されたオブジェクトデータを記憶するストレージ装置、又は、アクセス命令によって指定されたオブジェクトデータを記憶するストレージ装置の識別子により近い識別子を持つストレージ装置の判定を行う。移動先ストレージ決定部は、上述の配置先探査部401に相当する。
移動先ストレージ決定部4が判定した結果、アクセス命令を受け付けたストレージ装置自身がオブジェクトデータを記憶している場合は、データ記憶部8を使用してオブジェクトデータにアクセスし、アクセス命令を発行したストレージ装置に結果を返答する。
移動先ストレージ決定部4が判定した結果、他のストレージ装置がオブジェクトデータを記憶していると判断した場合には、通信部7を使用して、アクセス命令を移動先ストレージ決定部4で判定したストレージ装置に転送する。反対に、他のストレージ装置の移動先ストレージ決定部4が判定した結果を使用する場合もある。
移動先ストレージ決定部4は、隣接ストレージ記憶部5が記憶している隣接ストレージ情報と、隣接非存在ストレージ記憶部6が記憶している隣接非存在ストレージ情報と、を参照することができる。移動先ストレージ決定部4は、これらの隣接ストレージ情報及び隣接非存在ストレージ情報に基づいて、アクセス命令の転送先となるストレージ装置を判定する。なお、隣接ストレージ情報及び隣接非存在ストレージ情報については後述する。
移動先ストレージ決定部4は、隣接ストレージ情報と隣接非存在ストレージ情報に基づいて、最も効率良くオブジェクトデータを記憶しているストレージ装置に移動できるストレージ装置を転送先ストレージとして判定する。なお、最も効率良くオブジェクトデータを記憶しているストレージ装置に移動できるストレージ装置の判定方法には、以下の方法が考えられる。ただし、このような方法に限定する趣旨ではない。
初めに、隣接非存在ストレージ情報のみを用いてオブジェクトデータを記憶しているストレージ装置に近接し、最終的に隣接ストレージ情報を用いてオブジェクトデータを記憶しているストレージ装置に移動する。又は、当初から隣接ストレージ情報及び隣接非存在ストレージ情報の双方を用いて、オブジェクトデータを記憶しているストレージ装置に移動する。
なお、隣接ストレージ情報と隣接非存在ストレージ情報を外部より受け付けても、上述のようにストレージ装置内部で生成しても良い。
隣接ストレージ記憶部5は、システム内に存在するストレージ装置の一部又は全ての情報を、隣接ストレージ情報として記憶している。なお、システムのスケーラビリティを考慮すると、隣接ストレージ記憶部5が記憶する情報はシステム内に存在するストレージ装置の一部である場合が多い。
上述のように、システム内に存在する全てのストレージ装置は、番号などの固有の識別子を持っている。この固有の識別子を用いて、全てのストレージ装置の中から記憶するストレージ装置を選択する方法は以下のようなものが考えられる。しかし、これらの方法に限定する趣旨ではない。
全てのストレージ装置の中から記憶するストレージ装置を選択は、テーブルで管理しているストレージ装置の中から、容量がより大きなストレージ装置など予め定められた基準に従って選択する。又は、テーブルで管理しているストレージ装置の中から識別子をシードとした乱数により決定する方法等、予め定められたアルゴリズムに従って選択する。
隣接非存在ストレージ記憶部6は、システム内には対応するストレージ装置が存在しない識別子と、その識別子を管理するストレージ装置の組み合わせの一部又は全てと、を隣接非存在ストレージ情報として記憶している。即ち、隣接ストレージ情報とは、システム内に存在するストレージ装置に関する情報であり、隣接非存在ストレージ情報とは、ストレージシステム内には対応するストレージ装置が存在しない識別子と、その識別子を管理するストレージ装置に関する情報である。
なお、識別子を管理するストレージ装置が存在しない場合に記憶する情報の選択には、識別子の上限と下限が輪状に繋がっているとする方法が考えられる。該識別子を管理しているストレージ装置が持つ識別子が識別子の上限を超える場合は、識別子の下限に最も近い識別子を持つストレージ装置を選択する。該識別子を管理しているストレージ装置が持つ識別子が識別子の下限を下回る場合は、識別子の上限に最も近い識別子を持つストレージ装置を選択する。しかし、このような方法に限定する主旨ではない。また、対応するストレージ装置が存在しない識別子と、その識別子を管理しているストレージ装置の組み合わせから、記憶する状態の組み合わせを選択することも考えられる。
このように、システム内に存在するストレージ装置に関する情報(隣接ストレージ情報)と、システム内に存在しないストレージ装置に関する情報(隣接非存在ストレージ情報)と、を併せて記憶する構成にすることで、アクセス命令が目的とするオブジェクトデータを記憶しているストレージ装置により少ないホップ数で到達することができる。
さらに、システム内に存在しないストレージ装置の識別子が、識別子の取り得る範囲で密に設定されている場合に、システム内に存在しないストレージ装置に関する情報を用いる利点が顕著になる。識別子が密に設定されている場合には、システム内に存在するストレージ装置の数は、システム内に存在しないストレージ装置の数よりも大幅に多いことを意味する。このような状況下で、システム内に存在しないストレージ装置が記憶ストレージとして指定された場合、数の多いシステム内に存在するストレージ装置の識別子を使って記憶ストレージが存在しないことを確定するよりも、数の少ないシステム内に存在しないストレージ装置の識別子を使って確定させる方が、より効率的であることは明白である。より具体的には、非特許文献1等で開示された方法では、O(log(ストレージ装置数))のオーダーのホップ数が必要になるのに対し、O(log(対応するノードが存在しない識別子の数))と略等しいオーダーのホップ数が必要となる。
次に、オブジェクトデータの配置及び探査について具体的に説明する。
ここでは、システム内に存在するストレージ装置に関する情報のみを使用して、転送先のストレージ装置を決定するストレージ装置について説明する。
図4は、ストレージ装置10の内部構成の一例を示す図である。
ストレージ装置10は、識別子を用いて、外部から受け付けたオブジェクトデータを記憶する記憶ストレージを決定する。
ストレージ装置10は、ストレージ数記憶部101と、検索レベル決定部102と、要素ベクトル決定部103と、隣接ストレージ決定部104と、隣接ストレージ記憶部105と、識別子入力部106と、記憶ストレージ決定部107と、移動先ストレージ決定部108と、通信部109と、データ記憶部110とから構成されている。
ストレージ数記憶部101は、システム内に存在するストレージ装置の数を計数し、記憶する。
検索レベル決定部102は、システム内に存在するストレージ装置の数から検索レベルを計算する。検索レベルは、上述の階層化における階層数に相当する。
要素ベクトル決定部103は、検索レベル決定部102が算出した検索レベルに基づいて、ストレージ装置10の要素ベクトルを計算する。
隣接ストレージ決定部104は、隣接ストレージ記憶部105に記憶させる隣接ストレージ情報を生成する。
隣接ストレージ記憶部105は、隣接ストレージ決定部104が生成した隣接ストレージ情報を記憶する。
識別子入力部106は、オブジェクトデータのオブジェクトデータ識別子、又は、オブジェクトデータを記憶している記憶ストレージの情報を受け付ける。
記憶ストレージ決定部107は、記憶ストレージの情報を受け取らなかった場合に、オブジェクトデータ識別子等に基づいて記憶ストレージを決定する。
移動先ストレージ決定部108は、オブジェクトデータをストレージ装置10自身で記憶しているか否かを判定する。記憶していない場合は、隣接ストレージ記憶部105に記憶している隣接ストレージ情報と記憶ストレージの情報と、からアクセス命令の転送先ストレージを決定する。
通信部109は、他のストレージ装置や外部装置と通信を行う。なお、図4では、通信部109は、移動先ストレージ決定部108から情報を受け取るため、移動先ストレージ決定部108と接続されているが、必要に応じてストレージ装置10内部の他の各部と情報の送受信が可能であるものとする。
データ記憶部110は、オブジェクトデータを記憶する。
次に、ストレージ装置10における記憶ストレージの決定方法について説明する。
図5は、ストレージ装置10における記憶ストレージの決定方法の一例を示すフローチャートである。ストレージ数記憶部101には、オブジェクトデータを記憶することができるストレージ装置数SNOが記憶されている。
ステップS01では、検索レベル決定部102において、ストレージ装置数SNOの2を底とした対数を計算する。さらに、計算結果の小数点以下を切り上げ、1を減算する。その結果を、第1の検索レベルLev01とする。第1の検索レベルLev01が負の値の場合は、第1の検索レベルLev01を0とする。
ステップS02では、要素ベクトル決定部103において、ストレージ識別子SIDからハッシュ値を計算する。なお、ストレージ識別子SIDとは、ストレージ識別子SID同士との関係において、ストレージ識別子SIDが小さい・大きい、又は、近い・遠いといった判断が可能な情報である。そのような情報としては、昇順又は降順に並んだ整数が考えられる。
ハッシュ値の計算結果を2進数表記で、第1の検索レベルLev01に相当する桁数を持つように剰余計算を行う。剰余計算の結果を第1の要素ベクトルVC01とする。
ステップS03では、隣接ストレージ決定部104において、アルゴリズムAを用いて隣接ストレージを決定する。アルゴリズムAについては後述する。
ステップS04では、隣接ストレージ記憶部105において、隣接ストレージ決定部104が決定した隣接ストレージの情報を記憶する。
次に、ストレージ装置10における転送先ストレージの決定方法について説明する。初めに、識別子入力部106で、アクセス命令を通じてオブジェクトデータ識別子を受け付ける。さらに、記憶ストレージ決定部107において、オブジェクトデータ識別子に基づきオブジェクトデータを記憶する記憶ストレージを決定する。記憶ストレージの決定方法については、後述の実施例において説明する。
そして、移動先ストレージ決定部108において、ストレージ装置10自身は記憶ストレージではないことを確認し、アルゴリズムBを用いて、ストレージ装置10と記憶ストレージの間にあり、記憶ストレージに最も近い隣接ストレージを選択する。その際に、隣接ストレージ記憶部105で記憶している隣接ストレージに関する情報を使用する。アルゴリズムBについては後述する。
アルゴリズムBで選択する隣接ストレージには、オブジェクトデータを記憶する記憶ストレージも含まれている可能性がある。そこで、ストレージ装置10自身が記憶ストレージである場合は、データ記憶部110に記憶しているオブジェクトデータにアクセスし、必要に応じてアクセス命令を発行した装置に情報を返答する。アルゴリズムBで隣接ストレージを選択した場合には、移動先ストレージ決定部108が通信部109を使用して、アルゴリズムBで選択した隣接ストレージにアクセス命令を転送する。
次に、アルゴリズムAについて説明する。
アルゴリズムAは、第1の検索レベル毎に隣接ストレージを選択するためのアルゴリズムである。アルゴリズムAは上述の組織化に相当する処理である。
図6は、アルゴリズムAを説明するためのフローチャートの一例である。
第1の検索レベルLev01の値が0である場合には、ストレージ装置10と隣り合うことを示しているストレージ装置の記憶を行う(ステップS101)。その際の判断に、ストレージ識別子SIDを用いる。即ち、ストレージ識別子SIDに整数を採用したとすれば、ストレージ装置10のストレージ識別子の値の前後のストレージ識別子SIDを持つストレージ装置の記憶を行う。
なお、第1の検索レベルLev01の値が0である場合にはLev01(0)と表記し、同様に第1の検索レベルLev01の値が1である場合にはLev01(1)、第1の検索レベルLev01の値がnである場合にはLev01(n)、と以後表記する。
次に、Lev01(1)について、ストレージ装置10が持つ第1の要素ベクトルVC01の上位1桁が同じストレージ装置の中であって、ストレージ識別子SIDがストレージ装置10自身と隣り合うストレージ装置を記憶する(ステップS102)。
このように、Lev01(n)では第1の要素ベクトルVC01の上位(n)桁が同じストレージ装置の中であって、ストレージ識別子SIDがストレージ装置10と隣り合うストレージ装置を記憶する(ステップS10n)。
なお、ストレージ識別子SIDの下限に最も近いストレージ装置まで第1の要素ベクトルVC01の上位(n)桁が同じストレージが見つからない場合は、より下限に近いストレージ装置を示すストレージ識別子SIDを持つストレージ装置が存在しないことを記憶する。又は、ストレージ識別子SIDの上限と下限が輪状に繋がっていると考え、隣り合うストレージ装置を記憶することもできる。このことは、ストレージ識別子SIDが上限に最も近いストレージ装置まで第1の要素ベクトルVC01の上位(n)桁が同じストレージ装置が見つからない場合も同様である。
次に、アルゴリズムAによる隣接ストレージの判定の具体例を示す。
図7は、アルゴリズムAを説明するための図である。
図7には、ストレージ装置がノードA乃至ノードFまで6台含まれているものとする。6台のストレージ装置が存在するため、第1の検索レベルLev01は2となる。ノードA乃至ノードFまでの各ストレージ装置は、それぞれがストレージ識別子SIDとしてのノード番号を持っており、第1の検索レベルLev01が2であるので2桁の第1の要素ベクトルVC01が計算される。この計算を、ノードCを例に取って説明する。
Lev01(0)では、ノードCに隣接するストレージ装置を記憶するのでノードB及びノードDが記憶される。
Lev01(1)では、第1の要素ベクトルVC01の上位1桁が同じであり、かつ、隣接するストレージ装置を記憶するので、ストレージ識別子SIDが下限に近い側には隣接ストレージが存在しないこと、及びノードEを記憶する。
Lev01(2)では、第1の要素ベクトルVC01の上位2桁が同じであり、かつ、隣接するストレージ装置を記憶するので、ストレージ識別子SIDが下限に近い側には隣接ストレージが存在しないこと、及びノードFを記憶する。
本例では第1の要素ベクトルVC01の上位から指定した桁数一致することを判定条件としているが、これに限定するものではなく、第1の要素ベクトルVC01の下位から指定した桁数一致することを判定条件とする方法なども考えられる。
以上が、アルゴリズムAの説明である。
次に、アルゴリズムBについて説明する。
アルゴリズムBでは、あるストレージ装置から指定した別のストレージ装置へ移動する際に、第1の検索レベルLev01の高い順に、指定したストレージ装置、又は、指定したストレージ装置の手前のストレージ装置を記憶しているか否かを判定する。そして、最も高い第1の検索レベルLev01で記憶している指定したストレージ装置の手前のストレージ装置へ移動する。ここで、指定したストレージ装置の手前のストレージ装置には指定したストレージ装置自身を含む。このような移動を繰り返すことにより、指定したストレージ装置へ移動することが可能になる。
[第1の実施形態]
次に、第1の実施形態について、図面を用いてより詳細に説明する。
本実施形態に係るストレージ装置20の動作の概略は、ストレージ装置10と略同一である。即ち、ストレージ装置20はオブジェクトデータを記憶すると共に、外部から受け付けたアクセス命令を処理する。ストレージ装置20自身でオブジェクトデータを記憶していない場合には、他のストレージ装置にアクセス命令を転送する。
なお、この際の転送は、ストレージ装置20よりもオブジェクトデータを記憶しているストレージ装置により近いストレージ装置に対して行う。ストレージ装置が互いに近い・遠い、を判断するためにストレージ識別子SIDを本実施形態においても使用する。ストレージ識別子SIDを使用した転送先のストレージ装置を決定する手順については後述する。
また、本実施形態に係るストレージ装置20においても、オブジェクトデータと対になるオブジェクトデータ識別子を使用する。オブジェクトデータ識別子は、オブジェクトデータと対になって定まる情報であり、オブジェクトデータを一意に定める役割を持つ。
ここで、外部からストレージ装置20に対してアクセス命令が発行されると、アクセス命令及びオブジェクトデータ識別子が、複数のストレージ装置から構成されるシステムに入力される。上述のように、ストレージ装置20自身が、アクセス命令の指定するオブジェクトデータを記憶していなければ、ストレージ装置20よりもオブジェクトデータを記憶しているストレージにより近いストレージにアクセス命令を転送する。
このことは、上述のストレージ装置10においても同様である。しかし、本実施形態に係るストレージ装置20では、転送先のストレージ装置を決定する際に、システム内に存在するストレージ装置に関する情報だけではなく、対応するストレージ装置が存在しないストレージ識別子SID及びストレージ識別子SIDを管理するストレージ(以下、管理ストレージと呼ぶ)の情報も利用する。この点が、システムの内部に存在するストレージ装置の情報のみを用いるストレージ装置10とは異なる点である。
図8は、本実施形態に係るストレージ装置20の内部構成の一例を示す図である。図8において図4と同一構成要素には、同一の符号を表し、その説明を省略する。
ストレージ装置20は、ストレージ数記憶部101と、第1検索レベル決定部102aと、第1要素ベクトル決定部103aと、隣接ストレージ決定部104と、隣接ストレージ記憶部105と、識別子入力部106と、記憶ストレージ決定部107と、移動先ストレージ決定部108と、通信部109と、データ記憶部110と、非存在ストレージ数記憶部201と、第2検索レベル決定部202と、第2要素ベクトル決定部203と、隣接非存在ストレージ決定部204と、隣接非存在ストレージ記憶部205から構成されている。なお、第1検索レベル決定部102aと検索レベル決定部102、第1要素ベクトル決定部103aと要素ベクトル決定部103、はそれぞれ同一とする。そのため、第1検索レベル決定部102a及び第1要素ベクトル決定部103aに関する説明は省略する。
非存在ストレージ数記憶部201は、識別子は存在するが対応するストレージがない非存在ストレージ識別子NONSIDの数を記憶する。
第2検索レベル決定部202は、非存在ストレージ識別子NONSIDの数に基づいて第2の検索レベルLev02を計算する。
第2要素ベクトル決定部203は、ストレージ装置20の非存在ストレージ識別子NONSIDの第2の要素ベクトルVC02を計算する。
隣接非存在ストレージ決定部204は、隣接非存在ストレージ記憶部205に記憶させる非存在ストレージ識別子NONSIDを生成する。
隣接非存在ストレージ記憶部205は、非存在ストレージ識別子NONSIDと、非存在ストレージ識別子NONSIDを管理するストレージ装置に関する情報である隣接非存在ストレージ情報を記憶する。
図8においても、通信部109は移動先ストレージ決定部108と接続されているが、必要に応じてストレージ装置20内の他の各部と情報の送受信が可能であるものとする。
次に、ストレージ装置20の動作について説明する。
ストレージ装置20は、オブジェクトデータを記憶すると共に、外部から受け付けたアクセス命令を処理する。ストレージ装置20の実行するアクセス命令の処理には2つの場面が考えられる。
第1に、ストレージ装置20自身がオブジェクトデータを記憶しており、アクセス命令に従った処理(ライト処理又はリード処理)を実行し、実行結果を、アクセス命令を発行した装置等に返答する場合である。
第2に、ストレージ装置20自身ではオブジェクトデータを記憶しておらず、オブジェクトデータを記憶している他のストレージ装置にアクセス命令を転送する場合である。この際の転送は、ストレージ装置20よりもオブジェクトデータを記憶しているストレージ装置により近いストレージ装置に対して行う。ストレージ識別子及び転送先のストレージを決定する手順については後述する。
また、オブジェクトデータと対になるオブジェクトデータ識別子が存在する。オブジェクトデータ識別子は、オブジェクトデータを記憶しているストレージ装置を明示する。外部からアクセス命令がストレージ装置20に入力されると共に、オブジェクトデータ識別子も入力される。
オブジェクトデータ識別子は、識別子入力部106を介してストレージ装置20に入力される。ストレージ装置20の記憶ストレージ決定部107において、オブジェクトデータ識別子に基づき、記憶ストレージを決定する。
さらに、記憶ストレージに関する情報は、移動先ストレージ決定部108に入力される。また、システム内に含まれる他のストレージ装置からアクセス命令が転送されてくる場合もある。この場合には、既に記憶ストレージは決定されており、アクセス命令と共に記憶ストレージに関する情報が転送されてくる。
そのため、記憶ストレージに関する情報は、識別子入力部106及び記憶ストレージ決定部107を介して移動先ストレージ決定部108に入力されることになる。
移動先ストレージ決定部108は、ストレージ装置20自身が、目的とするオブジェクトデータを記憶しているか否かを判定する。その際の判定には、隣接ストレージ記憶部105に記憶している隣接ストレージ情報と、隣接非存在ストレージ記憶部205に記憶している隣接非存在ストレージ情報と、記憶ストレージに関する情報と、を使用する。
ストレージ装置20自身がオブジェクトデータを記憶している場合には、データ記憶部110にアクセスし、オブジェクトデータを、アクセス命令の発行元であるストレージ装置又は外部装置に返答する。
ストレージ装置20がオブジェクトデータを記憶していない場合には、通信部109を介して、移動先ストレージ決定部108が決定した転送先ストレージに対し、アクセス命令及び記憶ストレージに関する情報を転送する。
続いて、隣接非存在ストレージ情報の記憶アルゴリズム、転送先ストレージの決定アルゴリズムについて説明する。なお、隣接ストレージ情報の記憶アルゴリズムについては、既に説明を行ったのでさらなる説明は省略する。
初めに、隣接非存在ストレージ情報の記憶アルゴリズムについて説明する。
図9は、隣接非存在ストレージ情報の記憶アルゴリズムの一例を示すフローチャートである。
ステップS11では、第2検索レベル決定部202において、第2の検索レベルLev02を算出する。非存在ストレージ数記憶部201では、非存在ストレージ識別子NONSIDの数を示す非存在ストレージ数NONSNOを記憶している。第2検索レベル決定部202は、この非存在ストレージ数NONSNOの2を底とした対数を計算した後、小数点以下を切り上げ、さらに、1を減算して、第2の検索レベルLev02を算出する。算出された第2の検索レベルLev02が負の値の場合には、第2の検索レベルLev02は0とする。
なお、連続する非存在ストレージ識別子NONSIDは、一塊の非存在ストレージ識別子NONSIDとして考える。つまり、非存在ストレージ識別子NONSIDが連続していたとしても、非存在ストレージ識別子NONSIDが他の非存在ストレージ識別子NONSIDを代表する。
ステップS12では、第2要素ベクトル決定部203において、第2の要素ベクトルVC02を算出する。
第2要素ベクトル決定部203は、非存在ストレージ識別子NONSIDのハッシュ値を計算する。計算したハッシュ値を2進数表記し、第2の検索レベルLev02に相当する桁数を持つように剰余計算を行った結果を第2の要素ベクトルVC02とする。
ステップS13では、隣接非存在ストレージ決定部204において、隣接非存在ストレージ情報を決定する。その際に、隣接非存在ストレージ決定部204ではアルゴリズムCにより、隣接非存在ストレージ情報を決定する。アルゴリズムCについては後述する。
ステップS14では、隣接非存在ストレージ記憶部205に隣接非存在ストレージ情報を記憶する。
続いて、アルゴリズムCについて説明する。
アルゴリズムCは、アルゴリズムAと同様に、上述の組織化に相当する処理である。アルゴリズムCは、隣接非存在ストレージを第2の検索レベルLev02毎に決定していく。その際、上述のとおり、非存在ストレージ識別子NONSIDが連続する場合には一塊の非存在ストレージ識別子NONSIDとして取り扱う。つまり、1つの非存在ストレージ識別子NONSIDが連続する他の非存在ストレージ識別子NONSIDを代表する。
ここで、代表する非存在ストレージ識別子NONSIDを選択する方法には、様々な方法が考えられるが、本実施形態では、ストレージ装置20のストレージ識別子SIDからみて最も外側(最も遠い)に存在する非存在ストレージ識別子NONSIDを、代表する非存在ストレージ識別子NONSIDと定める。
非存在ストレージ識別子NONSIDの第2の要素ベクトルVC02は、非存在ストレージ識別子NONSIDからハッシュ値を計算し、2進数表記で第2の検索レベルLev02に相当する桁数を持つように剰余計算を行った結果である。
さらに、非存在ストレージ識別子NONSIDを管理する管理ストレージは、ストレージ装置20を基点として非存在ストレージ識別子NONSIDの1つ外側のストレージ識別子1067を持つストレージ装置とする。
ここで、管理ストレージが存在しない場合もあるが、そのような場合には管理ストレージが存在しないことを記憶する。又は、ストレージ識別子SIDの上限と下限が輪状に繋がっていると考えて、1つ外側のストレージ識別子SIDを持つ管理ストレージを記憶することも可能である。
図10は、アルゴリズムCの処理内容の一例を示すフローチャートである。
ステップS201では、Lev02(0)について、隣接非存在ストレージを判定する。本ステップでは、ストレージ装置20のストレージ識別子SIDよりも小さく、かつ、ストレージ装置20のストレージ識別子SIDに最も近い非存在ストレージ識別子NONSIDと、この非存在ストレージ識別子NONSIDを管理する管理ストレージを記憶する。
さらに、ストレージ装置20のストレージ識別子SIDよりも大きく、かつ、ストレージ装置20のストレージ識別子SIDに最も近い非存在ストレージ識別子NONSIDと、この非存在ストレージ識別子NONSIDを管理する管理ストレージを記憶する。
ステップS202では、Lev02(1)について、隣接非存在ストレージを判定する。Lev02(1)では、ストレージ装置20と第2要素ベクトルの上位1桁が同じ非存在ストレージ識別子NONSIDであって、ストレージ装置20のストレージ識別子SIDよりも小さく、かつ、ストレージ装置20のストレージ識別子SIDに最も近い非存在ストレージ識別子NONSID及びその管理ストレージを記憶する。
さらに、ストレージ装置20のストレージ識別子SIDよりも大きく、かつ、ストレージ装置20のストレージ識別子SIDに最も近い非存在ストレージ識別子NONSIDとその管理ストレージを記憶する。
ステップS20nでは、Lev02(n)について、ストレージ装置20と第2の要素ベクトルVC02の上位(n)桁が同じ非存在ストレージ識別子NONSIDであって、ストレージ装置20のストレージ識別子SIDよりも小さく、かつ、ストレージ装置20のストレージ識別子SIDに最も近い非存在ストレージ識別子NONSID及びその管理ストレージを記憶する。
さらに、ストレージ装置20のストレージ識別子SIDよりも大きく、かつ、ストレージ装置20のストレージ識別子SIDに最も近い非存在ストレージ識別子NONSID及びその管理ストレージを記憶する。
なお、ストレージ識別子SIDの限界に至るまで、第2の要素ベクトルVC02の上位(n)桁がストレージ装置20と同じ非存在ストレージ識別子NONSIDを検索したが発見できない場合には、非存在ストレージ識別子NONSIDとその管理ストレージが存在しないことを記憶する。又は、ストレージ識別子SIDの上限と下限が輪状に繋がっていると考え、最も近い非存在ストレージ識別子NONSIDとその管理ストレージを記憶することも可能である。
また、非存在ストレージ識別子NONSIDを記憶する際には、代表する非存在ストレージ識別子NONSIDだけではなく、一塊として扱った他の非存在ストレージ識別子NONSIDを記憶する。
本例では第2の要素ベクトルVC02の上位から指定した桁数一致することを判定条件としているが、これに限定するものではなく、第2の要素ベクトルVC02の下位から指定した桁数一致することを判定条件とする方法なども考えられる。
次に、アルゴリズムCによる隣接ストレージの判定の具体例を説明する。
図11は、アルゴリズムCを説明するための図である。
図11では、ストレージ識別子SIDとして、連続した0から7までの整数からなるストレージ番号が用いられている。ノードAには0、ノードBには1、ノードCには3、ノードDには4、ノードEには7がそれぞれストレージ番号として割り当てられている。
ストレージ番号のうち、2、5、6は対応するノードが存在せず、これらの番号は非存在ストレージ識別子NONSIDとなる。ここでは、ノードCの隣接非存在ストレージ情報について考える。
非存在ストレージ識別子NONSIDの2を管理する管理ストレージはノードBである。また、非存在ストレージ識別子NONSIDの5と6は連続しているので、一塊の非存在ストレージ識別子NONSIDと考えることができる。従って、代表する非存在ストレージ識別子NONSIDは6と定まり、管理ストレージはノードEである。
非存在ストレージ識別子NONSIDは2と6であるため、第2の検索レベルLev02は0となる(非存在ストレージ識別子NONSIDの5と6は連続するため6が代表する)。
非存在ストレージ識別子NONSIDの2のハッシュ値を計算し、剰余計算したものが、非存在ストレージ識別子NONSIDの2の第2の要素ベクトルVC02となる。しかし、第2の検索レベルLev02が0であるため、第2の要素ベクトルVC02は存在しないことになる。ノードCと、非存在ストレージ識別子NONSIDの5及び6にも、第2の要素ベクトルVC02は存在しない。
Lev02(0)ではノードCと隣接し、非存在ストレージ識別子NONSIDを選択するので、非存在ストレージ識別子NONSIDの2及びそれに対応する管理ノードBが、隣接非存在ストレージ情報として選択される。同時に、非存在ストレージ識別子NONSIDの5と6に対応する管理ノードEが隣接非存在ストレージ情報として選択される。
以上が、アルゴリズムCについての説明である。
なお、オブジェクトデータには、数値データやアルゴリズム等の所定の処理が記述されたプログラムなどが考えられる。さらに、本実施形態に係るストレージ装置20を含むシステムは、物理的に複数のストレージ装置が存在し、通信線により接続されているものとして説明したが、これに限定する趣旨ではない。ストレージ装置内部に複数の仮想ストレージ装置が構成される場合や、複数のストレージ装置が存在し、さらに内部で仮想ストレージ装置を構成している場合も含む。このことは、以下の実施形態においても同様である。
本実施形態によれば、オブジェクトデータを複数のストレージ装置に分散して記憶するシステムにおいて、対応するストレージ装置が存在しない非存在ストレージ識別子NONSIDが少ない場合に、システム内に存在するストレージ識別子SIDの情報のみを用いてオブジェクトデータを記憶するストレージに到達する方法と比較して、少ないホップ数でオブジェクトデータを記憶するストレージ装置にアクセスすることができる。
この際に、ストレージ装置が追加して記憶しなければならない情報は対応するストレージ装置が存在しないストレージ識別子の数の対数のオーダーである。よって、本実施形態に係る手法によれば、例えば、大規模なデータセンタのように膨大なストレージ装置を対象とするシステムであっても、少ない情報を記憶するだけで、少ないホップ数でオブジェクトデータを記憶しているストレージ装置にアクセスすることができる。
[実施例]
次に、ストレージ装置20の構成及び動作を具体例と共に説明する。
図12は、第1の実施形態に係るストレージ装置20のハードウエア構成の一例を示す図である。図12は、ストレージ装置20を実現可能なコンピュータの一構成例であって、第1の実施形態における各機能を実現可能なハードウエア環境を表す。
図12に示すハードウエア構成は、CPU(Central Processing Unit)301と、ROM(Read Only Memory)302と、RAM(Random Access Memory)303と、ハードディスク(記憶装置)304と、通信インターフェイス305から構成されている。これらの各構成要素は、バスを介して相互に接続されている。
ここで、ハードディスク304自体が第1の実施形態におけるストレージ装置として機能する場合も想定される。そして、フローチャート等(図5、図6、図9、図10)を用いて説明した機能は、そのような機能を実現可能なプログラムの供給を受けた後、そのプログラムを、CPU301に読み出して実行することによって達成される。また、当該装置内に供給されたプログラムは、読み書き可能なRAM302やハードディスク304に格納することも可能である。
また、プログラムの供給方法は、CD−ROM等の各種記憶媒体を介してインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等の方法を用いることができる。そして、このような場合において、プログラムのコード或いは記憶媒体により提供される。但し、第1の実施形態において説明したストレージ装置20は専用のハードウエアによって実現しても良い。
図13は、ストレージシステムに5台のストレージ20a乃至20eが含まれていることを示している。
5台のストレージ装置は、それぞれ識別子としてのストレージ番号を持っている。ストレージ20aはストレージ番号として1、ストレージ20bはストレージ番号として3、ストレージ20cはストレージ番号として4、ストレージ20dはストレージ番号として6、ストレージ20eはストレージ番号として7、をそれぞれ持つものとする。
初めに、隣接ストレージ情報の計算を行う(図14参照)。ストレージ数は5であるので、第1の検索レベルLev01は2である。次に、各ストレージのストレージ番号からハッシュ値を算出した結果を4で剰余演算すると、第1の要素ベクトルVC01の2進数表記が求めることができる。
その結果、ストレージ20aの第1の要素ベクトルVC01は01、ストレージ20bの第1の要素ベクトルVC01は10、ストレージ20cの第1の要素ベクトルVC01は00、ストレージ20dの第1の要素ベクトルVC01は01、ストレージ20eの第1の要素ベクトルVC01は11となる。
次に、隣接ストレージ情報の決定にあたり、第1の検索レベルLev01が0の場合について考える。
ストレージ20aは、ストレージ20a自身よりもストレージ番号が小さいストレージが存在しないこと、及び、ストレージ20bを記憶する。ストレージ20bは、ストレージ20aとストレージ20cを記憶する。ストレージ20cは、ストレージ20bとストレージ20dを記憶する。ストレージ20dは、ストレージ20cとストレージ20eを記憶する。ストレージ20eはストレージ20dとストレージ20e自身よりもストレージ番号が大きいストレージが存在しないことを記憶する。
次に、第1の検索レベルLev01が1の場合について考える。
ストレージ20aは、ストレージ20a自身よりもストレージ番号が小さいストレージが存在しないこと、及び、ストレージ20cを記憶する。ストレージ20bは、ストレージ20b自身よりもストレージ番号が小さいストレージが存在しないこと、及び、ストレージ20eを記憶する。ストレージ20cは、ストレージ20aとストレージ20dを記憶する。ストレージ20dは、ストレージ20cとストレージ20d自身よりもストレージ番号が大きいストレージが存在しないことを記憶する。ストレージ20eは、ストレージ20bとストレージ20eよりもストレージ番号が大きいストレージが存在しないことを記憶する。
続いて、第1の検索レベルLev01が2の場合について考える。
ストレージ20aは、ストレージ20a自身よりもストレージ番号が小さいストレージが存在しないこと、及びストレージ20dを記憶する。ストレージ20bは、ストレージ20b自身よりもストレージ番号が小さいストレージが存在しないこと、及び、ストレージ20bよりもストレージ番号が大きいストレージが存在しないことを記憶する。ストレージ20cは、ストレージ20c自身よりもストレージ番号が小さいストレージが存在しないこと、及び、ストレージ20cよりもストレージ番号が大きいストレージが存在しないことを記憶する。ストレージ20dは、ストレージ20a、及び、ストレージ20d自身よりもストレージ番号が大きいストレージが存在しないことを記憶する。ストレージ20eは、ストレージ20e自身よりもストレージ番号が小さいストレージが存在しないこと、及びストレージ20eよりもストレージ番号が大きいストレージが存在しないことを記憶する。
次に、隣接非存在ストレージ情報の計算について説明する。
図15は、隣接非存在ストレージ情報の計算を説明するための図である。図14におけるストレージ番号は0から7の整数である。また、非存在ストレージ数NONSNOは3であるので、第2の検索レベルLev02は1となる。さらに、各ストレージ装置のストレージ番号と、各非存在ストレージの非存在ストレージ番号のハッシュ値を計算した結果を2で剰余演算すると、第2の要素ベクトルVC02を求めることができる。その結果、非存在ストレージ番号0は1、ストレージ番号1は0、非存在ストレージ番号2は0、ストレージ番号3は1、ストレージ番号4は0、非存在ストレージ番号5は1、ストレージ番号6は1、ストレージ番号7は1、がそれぞれ求まる。
次に、隣接非存在ストレージ情報を決定する。
初めに、第2の検索レベルLev02が0の場合について考える。
ストレージ20aは、非存在ストレージ番号0と、その非存在ストレージを管理するストレージが存在しないこと(0よりも小さいストレージ番号を持つストレージがないこと)と、非存在ストレージ番号2とその非存在ストレージ番号を管理するストレージ20bと、を記憶する。ストレージ20bは、非存在ストレージ番号2とその非存在ストレージを管理するストレージ20aと、非存在ストレージ番号5とその非存在ストレージを管理するストレージ20dと、を記憶する。ストレージ20cは、非存在ストレージ番号2とその非存在ストレージを管理するストレージ20aと、非存在ストレージ番号5とその非存在ストレージを管理するストレージ20dを記憶する。ストレージ20dは、非存在ストレージ番号5とその非存在ストレージを管理するストレージ20cと、ストレージ20d自身のストレージ番号よりも非存在ストレージ番号が大きい非存在ストレージが存在しないことを記憶する。ストレージ20eは、非存在ストレージ番号5とその非存在ストレージを管理するストレージ20cと、ストレージ20e自身のストレージ番号よりも非存在ストレージ番号が大きい非存在ストレージが存在しないことを記憶する。
続いて、第2の検索レベルLev02が1の場合について考える。
ストレージ20aは、非存在ストレージ番号2とその非存在ストレージを管理するストレージ20bと、ストレージ20a自身のストレージ番号よりも非存在ストレージ番号が小さい非存在ストレージが存在しないことを記憶する。ストレージ20bは、非存在ストレージ番号0とその非存在ストレージを管理するストレージが存在しないことと、非存在ストレージ番号5とその非存在ストレージ番号を管理するストレージ20dを記憶する。ストレージ20cは、非存在ストレージ番号2とその非存在ストレージを管理するストレージ20aと、ストレージ20c自身のストレージ番号よりも非存在ストレージ番号が大きい非存在ストレージが存在しないことを記憶する。ストレージ20dは、非存在ストレージ番号5とその非存在ストレージを管理するストレージ20cと、ストレージ20d自身のストレージ番号よりも非存在ストレージ番号が大きい非存在ストレージが存在しないことを記憶する。ストレージ20eは、非存在ストレージ番号5とその非存在ストレージを管理するストレージ20cと、ストレージ20e自身のストレージ番号よりも非存在ストレージ番号が大きい非存在ストレージが存在しないことを記憶する。
以上より、各ストレージが記憶する他のストレージ装置の情報数は、(log(ストレージ装置数)の小数点以下を切り上げた数)のオーダーとなる。また、各ストレージが記憶する他の隣接非存在ストレージの情報数は(log(隣接非存在ストレージ装置数)の小数点以下を切り上げた数)のオーダーとなる。
なお、複数のストレージ装置20を含むストレージシステムでは、次のように、オブジェクトデータを記憶するストレージ装置を決定することができる。
オブジェクトデータの識別子からハッシュ値を計算し、ハッシュ値をストレージ番号が取れる最大の数に1を加えた数で剰余計算した結果と同じストレージ番号を持つストレージ装置の存在を確認する。
このようなストレージ装置が存在する場合は、そのストレージ装置にオブジェクトデータを記憶し、そのようなストレージ装置が存在しない場合はハッシュ値からさらにハッシュ値を計算し、ストレージ番号が取れる最大の数に1を加えた数での剰余計算を、存在するストレージ番号と同じ値を出力するまで繰り返す。
例えば、ストレージ20eが、オブジェクトデータ識別子を持つオブジェクトデータをストレージシステムに記憶させるアクセス命令を発行した場合について考える。オブジェクトデータ識別子からハッシュ値を計算し、ストレージ番号が取れる最大の数に1を加えた数で剰余計算した結果は0であったとする。
この場合には、ストレージ番号0を持つストレージ装置が存在することを確認する。ストレージ20eは、ストレージ20e自身がストレージ番号0を持つストレージではないことを確認した後、ストレージ20eが持つ非存在ストレージ番号の中にストレージ番号0が含まれていないことを確認する。
さらに、ストレージ20eが持つストレージ番号及び非存在ストレージ番号であって、ストレージ番号0とストレージ番号7の間にあり、かつ、最もストレージ番号0に近い番号を選択する。この場合には、ストレージ番号3を持つ、ストレージ20bが選択される。従って、アクセス命令をストレージ20bに転送する。
アクセス命令を受信したストレージ20bは、ストレージ20b自身がストレージ番号0を持つストレージ装置ではないことを確認した後、ストレージ20bが持つ非存在ストレージ番号にストレージ番号0が含まれていることを確認する。このことにより、ストレージ番号0を持つストレージが存在しないことが確認できる。オブジェクトデータ識別子のハッシュ結果から、さらに、ハッシュ値を計算し、ストレージ番号が取れる最大の数に1を加えた数での剰余計算をする。その結果が5であったとする。
すると、ストレージ20bはストレージ20b自身がストレージ番号5を持つストレージ装置ではないことを確認した後、ストレージ20bが持つ非存在ストレージ番号にストレージ番号5が含まれることを確認する。このことにより、ストレージ番号5を持つストレージ装置が存在しないことが確認できる。
そのため、オブジェクトデータ識別子のハッシュ結果から、さらにハッシュ値を計算し、ストレージ番号が取れる最大の数に1を加えた数での剰余計算をする。その結果が1であったとする。
すると、ストレージ20bはストレージ20b自身がストレージ番号1を持つストレージ装置ではないことを確認した後、ストレージ20bが持つ非存在ストレージ番号にストレージ番号1が含まれないことを確認する。そして、ストレージ20bが持つストレージ番号と非存在ストレージ番号の中であって、ストレージ番号1とストレージ番号3の間にあり、最もストレージ番号1に近い番号を選ぶ。
この場合、ストレージ番号1を持つストレージ20aが選択される。従って、アクセス命令はストレージ20aに転送される。次に、ストレージ20aはストレージ20a自身がストレージ番号1であることを確認する。その結果、オブジェクトデータを記憶するストレージはストレージ20aと判定され、ストレージ20aはアクセス命令を実行する。
[第2の実施形態]
続いて、第2の実施形態について図面を参照して詳細に説明する。
図16は、本実施形態に係るストレージ装置30の内部構成の一例を示す図である。図16において図8と同一構成要素には、同一の符号を表し、その説明を省略する。
ストレージ装置30は、ストレージ装置又は他の装置が発行したアクセス命令を受信して、アクセス命令のアクセス先のオブジェクトデータを記憶する場合はアクセス命令を実行する。
オブジェクトデータを記憶しない場合は、予め決められたアルゴリズムに基づいてアクセス命令を他のストレージ装置に転送する。なお、本実施形態においても、オブジェクトデータは、ストレージ装置30に格納される数値データ及び所定の処理(プロセス、機能、アルゴリズム)が記述されたソフトウェアプログラムの少なくともいずれかを構成するものとする。
第1の実施形態に係るストレージ装置20とストレージ装置30の相違点は、記憶ストレージ決定部107aにおける記憶ストレージの選択処理と、移動先ストレージ決定部108aにて実行するアルゴリズムである。ストレージ装置30の記憶ストレージ決定部107aは、システム内に存在しないストレージ装置を記憶ストレージとして選択する可能性がある。
また、移動先ストレージ決定部108aにて実行するアルゴリズムをアルゴリズムDとする。ストレージ装置30では、記憶ストレージ決定部107aが、システム内に存在しない記憶ストレージを選択する可能性があり、そのような場合に、記憶ストレージの選択を再度実行し、システム内に存在する記憶ストレージを選択するまで処理を繰り返す記憶先ストレージ決定方法を使用する。
ここで、アルゴリズムDについて説明する。
アルゴリズムDは、記憶ストレージが存在することが確認されている場合と確認されていない場合で処理が異なるアルゴリズムである。
図17は、アルゴリズムDを説明するためのフローチャートの一例である。
ステップS301において、記憶ストレージが存在することが確認されているか否かを判定する。存在が確認されていれば、ステップS302に遷移する。存在が確認されていなければ、ステップS303に遷移する。
ステップS302では、隣接ストレージ情報及び隣接非存在ストレージ情報に含まれるストレージ装置から、ストレージ識別子が、アルゴリズムDを実行しているストレージ装置30のストレージ識別子と記憶ストレージのストレージ識別子の間にあり、かつ、記憶ストレージのストレージ識別子に最も近いストレージ識別子を持つストレージ装置を選択する。この際、記憶ストレージを転送先ストレージとして選択する場合がある。
ステップS303では、隣接非存在ストレージ情報に記憶ストレージが含まれているか否かを判定する。記憶ストレージが含まれている場合には、ステップS304に遷移する。記憶ストレージが含まれていない場合には、ステップS305に遷移する。
ステップS304は、隣接非存在ストレージ情報に記憶ストレージが含まれている、つまり、記憶ストレージが存在しないことを確認した場合の処理である。ステップS304では、記憶ストレージ決定部107aに、記憶ストレージ再計算命令を返して処理を戻す。その後、記憶ストレージ決定部107aに、次の記憶ストレージを出力させ、移動先ストレージ決定部108aの処理を再度実行する。
ステップS305は、隣接非存在ストレージ情報に記憶ストレージが含まれていないことを確認した場合の処理である。ステップS305では、上述の記憶ストレージが存在することが確認されている場合の処理と同様の処理を実行する(ステップS302と同様の処理を実行する)。
このような第2の実施形態によれば、上述した第1の実施形態と同様に、複数のストレージ装置に分散してオブジェクトデータを記憶する環境、かつ、対応するストレージ装置が存在しない識別子が少ない環境において、対応するストレージ装置が存在する識別子の情報のみを用いてオブジェクトデータを記憶するストレージ装置に到達する関連技術として実施例で説明した非特許文献1に記載された方法と比較して、より少ないホップ数でオブジェクトデータを記憶するストレージにアクセスすることができる。
また、この際に、ストレージ装置が追加して記憶しなければならない情報は、対応するストレージ装置が存在しない識別子の数の対数のオーダーである。よって、本実施形態に係る方法によれば、例えば、大規模なデータセンタのように膨大なストレージ装置を対象とするシステムであっても、少ない記憶情報、かつ、少ないホップ数でオブジェクトデータを記憶しているストレージ装置にアクセスすることができる。
さらに、第2の実施形態ではオブジェクトデータを記憶するストレージ装置を選択するアルゴリズムが一時的に存在しないストレージ装置を選択する可能性があるアルゴリズムである場合でも少ないホップ数でオブジェクトデータを記憶しているストレージ装置にアクセスすることができる。
ところで、上述した第1及び第2の実施形態においては、オブジェクトデータの配置先として、データを記憶するストレージ装置を想定した。そして、オブジェクトデータは、数値データ及び所定の処理(プロセス、機能、アルゴリズム)が記述されたソフトウェアプログラムの少なくともいずれかを構成すると仮定した。しかし、この範囲に限定する趣旨ではない。例えば、オブジェクトデータは、処理(命令、プロセス、機能、プログラムコード、アルゴリズム等)であっても良い。この場合、当該オブジェクトの配置先は、当該処理が実行されるプロセッサやIPコア(Intellectual Property Core)などの演算実行環境(処理実行環境)である。
さらに、配置先である演算実行環境に適用する実施形態の場合には、例えば、複数のサーバ間における負荷分散(ロードバランシング)などの処理効率を改善することができる。
また、オブジェクトデータを物理的な実体のあるものと置き換え、ストレージ装置を物理的な実体のあるものの送り先もしくは保管場所と置き換えることも可能である。さらに、オブジェクトデータの配置先として複数のストレージ装置が選択されることも考えられる。
最後に、好ましい形態を要約する。
(形態1)上記第1の視点に係るオブジェクト配置装置のとおりである。
(形態2)前記配置先探査部は、前記第1の識別子に関する情報の一部と、前記第2の識別子に関する情報の一部と、を用いてオブジェクトの配置先を探査するオブジェクト配置装置。
(形態3)さらに、前記第1及び第2の識別子に基づいて、オブジェクトの配置先を決定する配置先決定部を備え、前記配置先決定部は、オブジェクトの配置先として、前記第2の配置先が指定された場合には、オブジェクトの配置先の指定と、オブジェクトの配置先の存在確認と、を繰り返すことで、前記第1の配置先を指定するオブジェクト配置装置。
(形態4)前記配置先決定部は、オブジェクトの配置先として指定された数の配置先を指定すると共に、複数の前記配置先にオブジェクトを配置するオブジェクト配置装置。
(形態5)前記オブジェクトは、予め定められた情報処理であって、前記配置先決定部は、前記情報処理が実行される実行先を決定するオブジェクト配置装置。
(形態6)オブジェクトの配置先はストレージ装置であり、前記オブジェクトは、前記ストレージ装置に格納される数値データ及び所定の処理が記述されたソフトウェアプログラムの少なくとも何れかを構成するオブジェクトデータであるオブジェクト配置装置。
(形態7)前記オブジェクトは物品であって、前記配置先決定部によって決定された配置先に物品を仕分けるよう決定するオブジェクト配置装置。
(形態8)上記第2の視点に係るオブジェクト配置方法のとおりである。
(形態9)前記配置先探査工程は、前記第1の識別子に関する情報の一部と、前記第2の識別子に関する情報の一部と、を用いてオブジェクトの配置先を探査するオブジェクト配置方法。
(形態10)さらに、前記第1及び第2の識別子に基づいて、オブジェクトの配置先を決定する配置先決定工程を含み、前記配置先決定工程は、オブジェクトの配置先として、前記第2の配置先が指定された場合には、オブジェクトの配置先の指定と、オブジェクトの配置先の存在確認と、を繰り返すことで、前記第1の配置先を指定するオブジェクト配置方法。
(形態11)上記第3の視点に係るプログラムのとおりである。
(形態12)前記配置先探査処理は、前記第1の識別子に関する情報の一部と、前記第2の識別子に関する情報の一部と、を用いてオブジェクトの配置先を探査するプログラム。
(形態13)さらに、前記第1及び第2の識別子に基づいて、オブジェクトの配置先を決定する配置先決定処理を含み、前記配置先決定処理は、オブジェクトの配置先として、前記第2の配置先が指定された場合には、オブジェクトの配置先の指定と、オブジェクトの配置先の存在確認と、を繰り返すことで、前記第1の配置先を指定するプログラム。
本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。