(57)【要約】【課題】高い信頼性・可用性を確保しながら、オブジェクト間の重複排除効果を得られるようにする。【解決手段】各ノード２０-iのオブジェクトアクセス部２８４は、クライアント端末３０から登録が要求されたオブジェクトを識別するためのツリー部及びコンテンツ部から構成されるオブジェクトＩＤにおけるツリー部に対して自身のノードＩＤが最も近接している場合、当該オブジェクトを自身のオブジェクト記憶部２７に登録する。オブジェクトＩＤ設定部３１１は、新規作成されたオブジェクトのオブジェクトＩＤにおけるツリー部として当該オブジェクトの代表値を設定し、オブジェクトＩＤ設定部３１２は、更新後のオブジェクトのオブジェクトＩＤにおけるツリー部として更新前のオブジェクトにおけるツリー部の値を設定する。【選択図】      図３
2010272011.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ固有のノードＩＤを持つ複数のノードから構成されるオーバーレイネットワークと、前記オーバーレイネットワークを利用するクライアント端末とを備えたオーバーレイネットワークシステムにおいて、
前記複数のノードの各々は、
オブジェクトを登録するためのオブジェクト記憶手段と、
前記クライアント端末から新規登録または更新登録が要求された新規作成されたまたは更新後のオブジェクトが登録されるべき登録先ノードが前記ノード自身であるかを、当該オブジェクトを識別するためのツリー部及びコンテンツ部から構成されるオブジェクトＩＤにおける前記ツリー部に対して、前記ノード自身のノードＩＤが最も近接しているかに基づいて判定する判定手段と、
前記ノード自身が前記登録先ノードであると判定された場合、前記要求されたオブジェクトを前記オブジェクトＩＤに対応付けて前記ノード自身の前記オブジェクト記憶手段に登録するオブジェクトアクセス手段とを具備し、
前記複数のノードの各々または前記クライアント端末は、
前記新規作成されたオブジェクトのオブジェクトＩＤを設定する第１のオブジェクトＩＤ設定手段であって、当該オブジェクトＩＤにおける前記ツリー部として当該新規作成されたオブジェクトに固有の値である代表値を設定する第１のオブジェクトＩＤ設定手段と、
前記更新後のオブジェクトのオブジェクトＩＤを設定する第２のオブジェクトＩＤ設定手段であって、当該オブジェクトＩＤにおける前記ツリー部として更新前のオブジェクトのオブジェクトＩＤにおけるツリー部の値を設定する第２のオブジェクトＩＤ設定手段とを具備する
ことを特徴とするオーバーレイネットワークシステム。
【請求項２】
前記第１のオブジェクトＩＤ設定手段は、前記新規作成されたオブジェクトの前記代表値を当該新規作成されたオブジェクトのオブジェクトＩＤにおける前記コンテンツ部としても設定し、
前記第２のオブジェクトＩＤ設定手段は、前記更新後のオブジェクトに固有の値である代表値を当該更新後のオブジェクトのオブジェクトＩＤにおける前記コンテンツ部として設定する
ことを特徴とする請求項１記載のオーバーレイネットワークシステム。
【請求項３】
前記複数のノードの各々は、前記要求されたオブジェクトが前記新規作成されたオブジェクトである場合、当該新規作成されたオブジェクトのオブジェクトＩＤと少なくとも前記ツリー部が同一のオブジェクトＩＤを持つオブジェクトが前記オブジェクト登録手段に既に登録されている状態を第１のオブジェクトＩＤ衝突として検出し、前記要求されたオブジェクトが前記更新後のオブジェクトである場合、当該更新後のオブジェクトと同一のオブジェクトＩＤが前記オブジェクト登録手段に既に登録されている状態を第２のオブジェクトＩＤ衝突として検出する衝突検出手段を更に具備し、
前記オブジェクトアクセス手段は、前記衝突検出手段によって前記第１のオブジェクトＩＤ衝突または前記第２のオブジェクトＩＤ衝突が検出された場合、前記要求されたオブジェクトの登録を失敗として処理する
ことを特徴とする請求項２に記載のオーバーレイネットワークシステム。
【請求項４】
前記複数のノードの各々は、第１の再構成手段及び第２の再構成手段を更に具備し、
前記オブジェクトＩＤにおける前記ツリー部及び前記コンテンツ部は、いずれも、代表値部及び非代表値部から構成され、
前記第１のオブジェクトＩＤ設定手段は、前記新規作成されたオブジェクトのオブジェクトＩＤにおける前記ツリー部及び前記コンテンツ部のそれぞれ前記代表値部として当該オブジェクトの前記代表値を設定し、かつ、前記ツリー部及び前記コンテンツ部のそれぞれ前記非代表値部として任意の値を設定し、
前記第２のオブジェクトＩＤ設定手段は、前記更新後のオブジェクトのオブジェクトＩＤにおける前記コンテンツ部の前記代表値部及び前記非代表値部としてそれぞれ当該更新後のオブジェクトの前記代表値及び任意の値を設定し、
前記判定手段は、前記オブジェクトＩＤにおける前記ツリー部の前記代表値部に対して、前記ノードＩＤが最も近接しているかを判定し、
前記第１の再構成手段は、前記衝突検出手段によって前記第１のオブジェクトＩＤ衝突が検出された場合、前記新規作成されたオブジェクトのオブジェクトＩＤにおける前記ツリー部の前記非代表値部の値を、前記ノード自身の前記オブジェクト記憶手段に既登録の全オブジェクトのオブジェクトＩＤのうち当該新規作成されたオブジェクトのオブジェクトＩＤと前記ツリー部の代表値部の値が同一のオブジェクトＩＤの集合に対して前記非代表値部が重複しない値に再構成し、
前記第２の再構成手段は、前記衝突検出手段によって前記第２のオブジェクトＩＤ衝突が検出された場合、前記更新後のオブジェクトのオブジェクトＩＤにおける前記コンテンツ部の前記非代表値部の値を、前記ノード自身の前記オブジェクト記憶手段に既登録の全オブジェクトのオブジェクトＩＤのうち当該更新後のオブジェクトのオブジェクトＩＤと前記ツリー部の値が同一でかつ前記コンテンツ部の前記代表値部の値が同一のオブジェクトＩＤの集合に対して前記非代表値部が重複しない値に再構成し、
前記オブジェクトアクセス手段は、前記衝突検出手段によって前記第１のオブジェクトＩＤ衝突が検出された場合、前記第１の再構成手段による再構成後のオブジェクトＩＤに対応付けて、前記新規作成されたオブジェクトを前記オブジェクト記憶手段に登録し、前記衝突検出手段によって前記第２のオブジェクトＩＤ衝突が検出された場合、前記第２の再構成手段による再構成後のオブジェクトＩＤに対応付けて、前記更新後のオブジェクトを前記オブジェクト記憶手段に登録する
ことを特徴とする請求項３記載のオーバーレイネットワークシステム。
【請求項５】
前記第１のオブジェクトＩＤ設定手段は、前記新規作成されたオブジェクトのオブジェクトＩＤにおける前記ツリー部及び前記コンテンツ部のそれぞれ非代表値部に同一の任意の値を設定し、
前記第１の再構成手段は、前記新規作成されたオブジェクトのオブジェクトＩＤにおける前記ツリー部の前記非代表値部の値を再構成した場合、当該オブジェクトＩＤにおける前記コンテンツ部の前記非代表値部の値も、前記再構成後の前記非代表値部の値に再構成する
ことを特徴とする請求項４記載のオーバーレイネットワークシステム。
【請求項６】
それぞれ固有のノードＩＤを持つ複数のノードから構成されるオーバーレイネットワークと、前記オーバーレイネットワークを利用するクライアント端末とを備えたオーバーレイネットワークシステムにおいて、
前記複数のノードの各々は、
オブジェクトを登録するためのオブジェクト記憶手段と、
前記クライアント端末から新規登録または更新登録が要求された新規作成されたまたは更新後のオブジェクトが登録されるべき登録先ノードが前記ノード自身であるかを、当該オブジェクトを識別するためのツリー部及びコンテンツ部から構成されるオブジェクトＩＤにおける前記ツリー部に対して、前記ノード自身のノードＩＤが最も近接しているかに基づいて判定する判定手段と、
前記ノード自身が前記登録先ノードであると判定された場合、前記要求されたオブジェクトを前記オブジェクトＩＤに対応付けて前記ノード自身の前記オブジェクト記憶手段に登録するオブジェクトアクセス手段とを具備し、
前記複数のノードの各々または前記クライアント端末は、
前記新規作成されたオブジェクトのオブジェクトＩＤを設定する第１のオブジェクトＩＤ設定手段であって、当該オブジェクトＩＤにおける前記ツリー部として、既登録の全オブジェクトのオブジェクトＩＤと前記ツリー部が異なる値を設定する第１のオブジェクトＩＤ設定手段と、
前記更新後のオブジェクトのオブジェクトＩＤを設定する第２のオブジェクトＩＤ設定手段であって、当該オブジェクトＩＤにおける前記ツリー部として更新前のオブジェクトのオブジェクトＩＤにおけるツリー部の値を設定する第２のオブジェクトＩＤ設定手段とを具備する
ことを特徴とするオーバーレイネットワークシステム。
【請求項７】
前記第１のオブジェクトＩＤ設定手段は、前記新規作成されたオブジェクトのオブジェクトＩＤにおける前記コンテンツ部として任意の値を設定し、
前記第２のオブジェクトＩＤ設定手段は、前記更新後のオブジェクトのオブジェクトＩＤにおける前記コンテンツ部として、既登録の全オブジェクトのオブジェクトＩＤのうち当該更新後のオブジェクトのオブジェクトＩＤと前記ツリー部の値が同一のオブジェクトＩＤの集合に対して前記コンテンツ部が重複しない値に設定する
ことを特徴とする請求項６記載のオーバーレイネットワークシステム。
【請求項８】
それぞれ固有のノードＩＤを持つ複数のノードから構成されるオーバーレイネットワークと、前記オーバーレイネットワークを利用するクライアント端末とを備えたオーバーレイネットワークシステムに適用される、前記クライアント端末から新規登録または更新登録が要求された新規作成されたまたは更新後のオブジェクトを前記複数のノードのうちのいずれかのノードのオブジェクト記憶手段に登録するためのオブジェクト登録方法において、
前記クライアント端末から新規登録が要求された前記新規作成されたオブジェクトを識別するためのツリー部及びコンテンツ部から構成されるオブジェクトＩＤを、前記複数のノードのいずれかまたは当該クライアント端末自身が設定するステップであって、当該オブジェクトＩＤにおける前記ツリー部として前記新規作成されたオブジェクトに固有の値である代表値を設定するステップと、
前記クライアント端末から更新登録が要求された前記更新後のオブジェクトを識別するためのツリー部及びコンテンツ部から構成されるオブジェクトＩＤを、前記オーバーレイネットワークを構成するノードまたは前記クライアント端末自身が設定するステップであって、当該オブジェクトＩＤにおける前記ツリー部として更新前のオブジェクトのオブジェクトＩＤにおけるツリー部の値を設定するステップと、
前記オーバーレイネットワークを構成するノードが前記新規登録または前記更新登録の要求に応じて、要求された新規作成されたまたは更新後のオブジェクトが登録されるべき登録先ノードが前記ノード自身であるかを、当該オブジェクトのオブジェクトＩＤにおける前記ツリー部に対して、前記ノード自身のノードＩＤが最も近接しているかに基づいて判定するステップと、
前記ノード自身が前記登録先ノードであると判定された場合、前記ノード自身が前記要求されたオブジェクトを前記オブジェクトＩＤに対応付けて前記ノード自身の前記オブジェクト記憶手段に登録するステップと
を具備することを特徴とするオブジェクト登録方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノードから構成されるオーバーレイネットワークを備えたオーバーレイネットワークシステムに係り、特に、オブジェクトをノードと対応付けて登録するのに好適なオーバーレイネットワークシステム及び同システムにおけるオブジェクト登録方法に関する。
【背景技術】
【０００２】
昨今、ピアツーピア（Ｐ２Ｐ）モデル（ブローカーレスモデル）を利用して構築されるオーバーレイネットワークシステムの研究開発が盛んに行われている。この研究成果として、例えば、カルフォルニア大学バークレー校（ＵＣＢ）を中心としたＴａｐｅｓｔｒｙ（タペストリ）（非特許文献１参照）、マイクロソフト社を中心としたＰａｓｔｒｙ（ペストリ）（非特許文献２参照）、マサチューセッツ工科大学（ＭＩＴ）を中心としたＣｈｏｒｄ（コード）（非特許文献３参照）などが知られている。
【０００３】
これらの研究成果は、複数の「ノード」でオーバーレイネットワークのリンクを構成し、オーバーレイネットワークを構成するノード群の中からノードを選択して、このノードにアクセスするための様々な手法を提案している。ノードへのアクセスは、ファイルなどのデータである「オブジェクト」を登録、或いは、このノードに登録されている「オブジェクト」を参照する（取り出す）ために行われる。
【０００４】
これらの手法に共通する技術の１つとして、ＣｏｎｓｉｓｔｅｎｔＨａｓｈｉｎｇ（コンシステントハッシング）が知られている。ＣｏｎｓｉｓｔｅｎｔＨａｓｈｉｎｇは、以下の第１乃至第３の処理から構成される。
【０００５】
１）第１の処理
第１の処理は、オーバーレイネットワークを構成する全てのノードのアドレスのハッシュ値と、そのオーバーレイネットワークに登録されるオブジェクト自体のハッシュ値とを、例えばＳＨＡ１のようなハッシュ関数を用いて算出する処理である。ノードのアドレスは例えばＩＰ（Internet Protocol）アドレスやホスト名であり、オブジェクトは、例えばファイルであれば、ファイル名やファイルのデータ自体である。
【０００６】
２）第２の処理
第２の処理は、第１の処理で得られたノードのハッシュ値及びオブジェクトのハッシュ値を、それぞれ、ノードＩＤ及びオブジェクトＩＤとして設定する処理である。
【０００７】
３）第３の処理
第３の処理は、オブジェクトを、当該オブジェクトのオブジェクトＩＤに最も「近い」ノードＩＤを持つノードに登録する処理である。
【０００８】
このように、ＣｏｎｓｉｔｅｎｔＨａｓｈｉｎｇとは、ノードとオブジェクトを同じ空間にマップして、オブジェクトを、その空間上で当該オブジェクトに「近い」位置にあるノードに登録するという技術である。
【０００９】
オーバーレイネットワークに登録されているオブジェクトを探すには、そのオブジェクトのオブジェクトＩＤに最も「近い」ノードＩＤを持つノードを尋ねればよい。このＩＤの「近さ」を定義する方法は種々知られている。
【００１０】
例えば非特許文献３に記載されている方法では、ノードのＩＰアドレスのハッシュ値がノードＩＤとして、オブジェクト自体のハッシュ値がオブジェクトＩＤとして、それぞれ定義される。この方法では、取り得る全てのＩＤ（０からＮ＝２m−１までの２m個のＩＤ、但しｍはハッシュ関数のビット長）を収容できるリングの上に、それぞれのＩＤが当てはめられる。このリング上で、２つのＩＤが時計回りでどれだけ離れているかによって、当該２つのＩＤの近さが測られる。２m個のＩＤを収容できるリングは、ｍビットのリングと呼ばれる。
【００１１】
ここで、非特許文献３に記載されたＣｏｎｓｉｓｔｅｎｔＨａｓｈｉｎｇ（以下、従来技術と称する）の動作を、例を用いて説明する。図２２は、オーバーレイネットワーク１００を含む一般的なオーバーレイネットワークシステムを示す。オーバーレイネットワーク１００は、３ビットのリングを用いて実現される。図２２において、オーバーレイネットワーク１００上の実線の丸印は、当該オーバーレイネットワーク１００のＩＤ空間にノードＩＤが割り当てられているノードを示し、破線の丸印は、当該オーバーレイネットワーク１００のＩＤ空間にノードＩＤが割り当てられていないノードを示す。丸印の近傍には、対応するノードのノードＩＤ（１桁の数値）と、当該ノードのアドレス（ＩＰアドレス）とが表記されている。
【００１２】
図２２の例では、オーバーレイネットワーク１００のＩＤ空間に、ノードＩＤがそれぞれ０，１，３，４，６及び７のノードが割り当てられている。また、値が０，１，３，４，６及び７のノードＩＤを、それぞれ、ＩＤ０，ＩＤ１，ＩＤ３，ＩＤ４，ＩＤ６及びＩＤ７と表記する。このように、オーバーレイネットワーク１００は、ノードＩＤがＩＤ０，ＩＤ１，ＩＤ３，ＩＤ４，ＩＤ６及びＩＤ７の６つのノードにより構成されている。
【００１３】
図２２の例において、ＩＤ０に最も近いノードＩＤはＩＤ０で、次にＩＤ０に近いノードＩＤはＩＤ１である。一方、ＩＤ７に最も近いノードＩＤはＩＤ７である。ＩＤ７の次にＩＤ７に近いノードＩＤはＩＤ０であり、ＩＤ６ではないことに注意されたい。オーバーレイネットワーク１００に様々なオブジェクトＩＤのオブジェクトを登録する場合、当該オブジェクトと当該オブジェクトが登録されるノードとの関係は、次のようになる。ここで、記号「→」の左側はオブジェクトを、右側は当該オブジェクトが登録されるノードを表す。また、ノードＩＤがＩＤ０，ＩＤ１，ＩＤ３，ＩＤ４，ＩＤ６及びＩＤ７のノードを、それぞれ、ノード“０”，“１”，“３”，“４”，“６”及び“７”と称する。
【００１４】
オブジェクトＩＤがＩＤ１のオブジェクト→ノード“１”
オブジェクトＩＤがＩＤ２のオブジェクト→ノード“３”
オブジェクトＩＤがＩＤ３のオブジェクト→ノード“３“
オブジェクトＩＤがＩＤ４のオブジェクト→ノード“４”
オブジェクトＩＤがＩＤ５のオブジェクト→ノード“６”
オブジェクトＩＤがＩＤ６のオブジェクト→ノード“６”
オブジェクトＩＤがＩＤ７のオブジェクト→ノード“７”
オブジェクトＩＤがＩＤ０のオブジェクト→ノード“０”
上述のＣｏｎｓｉｓｔｅｎｔＨａｓｈｉｎｇを用いてオブジェクトを登録するようなオーバーレイネットワークシステムのアイデアの応用は様々である。例えば、映像などの比較的サイズの大きいデータを配信するためのキャッシュシステムや、メタデータサーバを持たないストレージシステムなどが検討されている。  
また、上述のＴａｐｅｓｔｒｙ、Ｐａｓｔｒｙ及びＣｈｏｒｄについては、例えば特許文献１にも記載されている。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００４−２６６７９６号公報
【非特許文献】
【００１６】
【非特許文献１】Ben Y. Zhao, Ling Huang, Jeremy Stribling, Sean C. Rhea, Anthony D. Joseph, and John D. Kubiatowicz, “Tapestry: A Resilient Global-scale Overlay for Service Deployment”, IEEE Journal on Selected Areas in Communications, Vol 22, No. 1, (2004)
【非特許文献２】A. Rowstron and P. Druschel, “Storage management and caching in PAST, a large-scale, persistent peer-to-peer storage utility”, 18th ACM SOSP’01, Lake Louise, Alberta, Canada, (2001)
【非特許文献３】Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, and Hari Balakrishnan, “Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications”, ACM SIGCOMM 2001, (2001)
【発明の概要】
【発明が解決しようとする課題】
【００１７】
一般に、第１のデータと第２のデータとの間で重複する部分があるとき、この重複する部分のデータ（以下、重複データと称する）を例えばポインタで置き換えることにより、重複データを持たないようにしながらデータを記憶装置に格納する技術が知られている。この技術によれば、記憶装置内で重複データを排除することができるため、記憶装置内の限られた空き物理容量の中で、より多くのデータ、或いは、より大きなサイズのデータを登録することができる。また、この技術を利用することで、互いが重複度の高いデータを格納している２つの記憶装置間でのデータ同期を高速に行うことができる。更に、重複データ排除の仕組みの実装方法によっては、スナップショット・クローンイメージの作成機能を容易に提供することも可能である。
【００１８】
上述のような記憶装置内においてデータの重複部分を排除して記憶する技術は、「重複排除」や「Ｄｅ−Ｄｕｐｅ」などとして知られている。これに関し、昨今、ストレージベンダ各社が様々な技術・製品を発表している。
【００１９】
さて、データの重複は、オーバーレイネットワークをストレージシステムとして適用する場合にも、考慮する必要がある。そこで、重複排除を、オーバーレイネットワークに登録したオブジェクトとオブジェクトの間で行うことを考える。
【００２０】
従来技術では、オーバーレイネットワークにオブジェクトを登録するときには、オブジェクトに固有の値（つまりオブジェクトの代表値）がオブジェクトＩＤとして設定される。このオブジェクトの代表値には、一般に当該オブジェクトのハッシュ値が用いられる。そして、オブジェクトＩＤに最も近いノードＩＤを持つノードに、オブジェクトが登録される。
【００２１】
一般にデータが重複する部分は、あるオブジェクトを更新する際に、その更新前後のオブジェクト間で生じやすい。一方、従来技術では、オブジェクトのハッシュ値がオブジェクトＩＤとして設定される。このため、更新後のオブジェクトのオブジェクトＩＤは、更新前のオブジェクトのオブジェクトＩＤとは異なるのが一般的である。このような場合、更新前後のオブジェクトは、複数のノードに分散して登録される可能性が高く、ノード内での重複排除だけでは高い効果は得られない。
【００２２】
そこで複数のノードにまたがってオブジェクトの重複排除を行うことが考えられる。しかし、このような重複排除を実現することは、以下のような理由から困難である。  
まず更新前後のオブジェクトが、複数のノードにまたがって、かつ重複排除された形で配置されているものとする。このような状態では、複数のノードの１つが機能を停止したときに、当該複数のノードのうちの別のノードに登録されている別のオブジェクトまで影響を受ける。その理由は、複数のノードにまたがってのオブジェクトの重複排除により、これらのオブジェクトの間で依存関係ができるためである。
【００２３】
このため、ストレージシステムとして構築されたオーバーレイネットワークから任意のオブジェクトを削除するときには、そのオブジェクトとの間で重複排除が行われたオブジェクトへの影響を考慮する必要がある。具体的には、複数のノードにまたがってオブジェクトを削除する処理を行わなければならなくなる。しかし、このような分散環境でのリソース削除を実現するためには、一般的に、例えば分散ゴミ収集問題のような、アトミック性・一貫性に関する高度な問題を解決しなければならない。
【００２４】
また、オブジェクトのデータを複数の断片（セグメント）に分割し各セグメントをオブジェクトとみなしてオーバーレイネットワーク上に登録する手法も知られている。しかしこの手法では、セグメントが複数のノードに断片化して登録されるため、あるノードが機能を停止して一部のセグメントが欠損した状態となると、オブジェクト全体に影響が及ぶ。つまり、オーバーレイネットワーク全体としての信頼性・可用性が低下する。しかも、オブジェクトを登録または削除する動作に対して、セグメント間での一貫性を考慮しなければならなくなるため、システム設計が複雑になる。
【００２５】
本発明は上記事情を考慮してなされたものでその目的は、高い信頼性・可用性を確保しながら、オブジェクト間の重複排除効果を得ることができるオーバーレイネットワークシステム及び同システムにおけるオブジェクト登録方法を提供することにある。
【課題を解決するための手段】
【００２６】
本発明の１つの観点によれば、それぞれ固有のノードＩＤを持つ複数のノードから構成されるオーバーレイネットワークと、前記オーバーレイネットワークを利用するクライアント端末とを備えたオーバーレイネットワークシステムが提供される。前記複数のノードの各々は、オブジェクトを登録するためのオブジェクト記憶手段と、前記クライアント端末から新規登録または更新登録が要求された新規作成されたまたは更新後のオブジェクトが登録されるべき登録先ノードが前記ノード自身であるかを、当該オブジェクトを識別するためのツリー部及びコンテンツ部から構成されるオブジェクトＩＤにおける前記ツリー部に対して、前記ノード自身のノードＩＤが最も近接しているかに基づいて判定する判定手段と、前記ノード自身が前記登録先ノードであると判定された場合、前記要求されたオブジェクトを前記オブジェクトＩＤに対応付けて前記ノード自身の前記オブジェクト記憶手段に登録するオブジェクトアクセス手段とを具備する。前記複数のノードの各々または前記クライアント端末は、前記新規作成されたオブジェクトのオブジェクトＩＤを設定する第１のオブジェクトＩＤ設定手段であって、当該オブジェクトＩＤにおける前記ツリー部として当該新規作成されたオブジェクトに固有の値である代表値を設定する第１のオブジェクトＩＤ設定手段と、前記更新後のオブジェクトのオブジェクトＩＤを設定する第２のオブジェクトＩＤ設定手段であって、当該オブジェクトＩＤにおける前記ツリー部として更新前のオブジェクトのオブジェクトＩＤにおけるツリー部の値を設定する第２のオブジェクトＩＤ設定手段とを具備する。
【発明の効果】
【００２７】
本発明によれば、更新後のオブジェクトは更新前のオブジェクトを保持しているノード内に登録される。このため、同一ノード内に登録されている更新前後のオブジェクトのデータに類似性があるときには、当該ノード内でデータの重複排除を行うことができ、高い信頼性・可用性を確保しながら、オブジェクト間の重複排除効果を得ることができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の一実施形態に係るオーバーレイネットワークシステムの構成を示すブロック図。
【図２】ノードのハードウェア構成を示すブロック図。
【図３】ノードと、当該ノードにアクセス可能なクライアント端末の機能構成を示すブロック図。
【図４】ノードの構成記憶部に格納されている構成情報のデータ構造例を示す図。
【図５】同実施形態で適用されるオブジェクトの新規登録動作における情報の流れを示す図。
【図６】同実施形態で適用されるオブジェクトの新規登録動作におけるクライアント端末側の処理手順を示すフローチャート。
【図７】同実施形態で適用されるオブジェクトの新規登録・更新登録動作におけるノード側の処理手順を示すフローチャート。
【図８】同実施形態で適用されるハッシュ値の衝突を招くときのオブジェクトの新規登録動作における情報の流れを示す図。
【図９】同実施形態で適用されるオブジェクトの更新登録動作における情報の流れを示す図。
【図１０】同実施形態で適用されるオブジェクトの更新登録動作におけるクライアント端末側の処理手順を示すフローチャート。
【図１１】同実施形態で適用されるハッシュ値の衝突を招くときのオブジェクトの更新登録動作における情報の流れを示す図。
【図１２】同実施形態で適用されるオブジェクトの参照動作における情報の流れを示す図。
【図１３】同実施形態の変形例で適用されるオブジェクトの新規登録動作における情報の流れを示す図。
【図１４】同変形例で適用されるオブジェクトの新規登録動作におけるクライアント端末側の処理手順を示すフローチャート。
【図１５】同変形例で適用されるオブジェクトの新規登録動作におけるノード側の処理手順を示すフローチャート。
【図１６】同変形例で適用されるオブジェクトの新規登録動作における情報の流れを示す図。
【図１７】同変形例で適用されるオブジェクトの更新登録動作における情報の流れを示す図。
【図１８】同変形例で適用されるオブジェクトの更新登録動作におけるクライアント端末側の処理手順を示すフローチャート。
【図１９】同変形例で適用されるオブジェクトの更新登録動作におけるノード側の処理手順を示すフローチャート。
【図２０】同変形例で適用されるオブジェクトＩＤの衝突を招くときのオブジェクトの更新登録動作における情報の流れを示す図。
【図２１】同変形例で適用されるオブジェクトの参照動作における情報の流れを示す図。
【図２２】オーバーレイネットワークを含む一般的なオーバーレイネットワークシステムを示す図。
【発明を実施するための形態】
【００２９】
以下、本発明の実施の形態につき図面を参照して説明する。  
＜オーバーレイネットワークシステムの構成＞
図１は本発明の一実施形態に係るオーバーレイネットワークシステムの構成を示すブロック図である。図１において、オーバーレイネットワーク１０は、ノードＩＤがＩＤ０，ＩＤ１，ＩＤ３，ＩＤ４，ＩＤ６及びＩＤ７の６つのノード２０-0，２０-1，２０-3，２０-4，２０-6及び２０-7により構成されている。図１に示されるように、ノード２０-0，２０-1，２０-3，２０-4，２０-6及び２０-7によって構成されるオーバーレイネットワーク１０の論理的なネットワーク構成は、非特許文献３に記載されているようなリング状である。図１では、オーバーレイネットワーク１０を構成するノード２０-0，２０-1，２０-3，２０-4，２０-6及び２０-7は、実線の丸印で表されている。
【００３０】
本実施形態では、オーバーレイネットワーク１０上での「距離」が、任意の２つのＩＤが当該オーバーレイネットワーク１０のリング上において時計回りでどれだけ離れているかによって表される。本実施形態で適用される距離算定規則に従えば、図１では、例えば、ＩＤ３とＩＤ５との距離は２であり、ＩＤ３とＩＤ２との距離は７である。ＩＤ３に対して、ＩＤ５はＩＤ６よりも「近く」、ＩＤ２はＩＤ６よりも「遠い」。但し、図１のオーバーレイネットワークシステムの例では、ノードＩＤがそれぞれＩＤ２及びＩＤ５の２つのノード２０-2及び２０-5は、オーバーレイネットワーク１０を構成していない。これらのノード２０-2及び２０-5は、図１では破線の丸印で表されている。なお、「距離」の定義（距離算定規則）は、上記実施形態に限定されるものではない。
【００３１】
オーバーレイネットワーク１０を構成するノード２０-0，２０-1，２０-3，２０-4，２０-6及び２０-7と、オーバーレイネットワーク１０を構成していないノード２０-2及び２０-5と、クライアント端末３０とは、物理的には、アンダーレイネットワークに接続されている。アンダーレイネットワークはＩＰ（Internet Protocol）により構築される物理的なネットワークを指し、オーバーレイネットワーク１０はアンダーレイネットワークの上位に構築される論理的なネットワークを指す。
【００３２】
図１において、実線の丸印及び破線の丸印の近傍には、対応するノードＩＤを示す１桁の数値が表記されている。また、図１において、実線の丸印の近傍には、対応するノードのアドレスも表記されている。本実施形態では、ノードのアドレスには、当該ノードのアンダーレイネットワーク上のＩＰアドレスが用いられる。また図１には、ノード２０-3及び２０-7がそれぞれ保持している構成情報４０-3及び４０-7が示されている。なお、図１では省略されているが、ノード２０-0，２０-1，２０-4及び２０-5も、構成情報４０-3または４０-7に相当する構成情報を保持している。
【００３３】
＜ノードのハードウェア構成＞
図２は、ノード２０-i（ｉ＝０，１，…７）のハードウェア構成を示すブロック図である。ノード２０-iは図１に示されるノード２０-0，２０-1，２０-3，２０-4，２０-6及び２０-7だけでなく、オーバーレイネットワーク１０を構成していないノード２０-2及び２０-5をも指す。
【００３４】
本実施形態において、ノード２０-iは、他のノード２０-iと連携することにより、オーバーレイネットワーク１０を構成することが可能なコンピュータである。図１の例では、ノード２０-0，２０-1，２０-3，２０-4，２０-6及び２０-7が連携することにより、オーバーレイネットワーク１０を構成している。オーバーレイネットワーク１０は、ノード２０-iによるオブジェクトの登録や、登録済みオブジェクトの参照を実現する。
【００３５】
ノード２０-iは、処理ユニット２１と、主記憶装置２２と、補助記憶装置２３と、通信機構２４と、入出力装置２５とを含む。補助記憶装置２３は例えばハードディスクドライブを用いて構成される。補助記憶装置２３には、プログラム２３０が格納されたコンピュータ読み取り可能な記憶媒体２３１が装着されている。プログラム２３０は、主として、ノード２０-iがクライアント端末３０から要求されたオブジェクトの新規登録動作、更新登録動作または参照動作を行うのに用いられる。通信機構２４は、他のノードとＩＰアドレスを用いて通信する。
【００３６】
＜ノードとクライアント端末の機能構成＞
図３は、ノード２０-iと、当該ノード２０-iにアクセス可能なクライアント端末３０の機能構成を示すブロック図である。  
ノード２０-iは、通信機構２４と、要求受付部２６と、オブジェクト記憶部２７と、制御部２８とを含む。
【００３７】
要求受付部２６は、クライアント端末３０とノード２０-iとの間の当該ノード２０-iのインタフェイスをなす。要求受付部２６は、クライアント端末３０から送られるオブジェクトの登録または参照を指示する要求（以下、登録・参照要求と称する）を受信する。要求受付部２６は、クライアント端末３０からの登録・参照要求に対する制御部２８からの応答を当該クライアント端末３０に返す。
【００３８】
オブジェクト記憶部２７は、オブジェクトを登録するのに用いられる記憶部である。オブジェクト記憶部２７は、例えば、図２に示すノード２０-i内の補助記憶装置２３の記憶領域を用いて実現される。
【００３９】
制御部２８は、ノード２０-iの要求受付部２６で受信された登録・参照要求、またはノード２０-iの通信機構２４で受信された他のノードによって中継された登録・参照要求に基づいて、当該要求の実行のための制御を行う。具体的には制御部２８は、登録・参照要求のノード間ルーティング、オブジェクト記憶部２７へのオブジェクトの新規登録、オブジェクト記憶部２７へのオブジェクトの更新登録、またはオブジェクト記憶部２７に登録されているオブジェクトの参照を制御する。これらの詳細については後述する。
【００４０】
制御部２８は、構成記憶部２８１、構成管理部２８２、ルーティング部２８３及びオブジェクトアクセス部２８４を含む。  
構成記憶部２８１は、オーバーレイネットワーク１０の構成を管理するのに必要な構成情報４０-iを記憶するのに用いられる。構成記憶部２８１は、例えば、図２に示される主記憶装置２２の所定記憶領域を用いて構成される。構成管理部２８２は、構成記憶部２８１に格納されている構成情報４０-iに基づいて、オーバーレイネットワーク１０の構成を管理する。
【００４１】
ルーティング部２８３は、要求受付部２６で受信された登録・参照要求、または通信機構２４で受信された他のノードによって中継された登録・参照要求に基づいて、ルーティングを実行する。本実施形態におけるルーティングとは、登録・参照要求で指定されたオブジェクトの登録・参照先のノードのアドレスを取得するための処理を指す。このルーティングは、構成情報４０-iを参照することによって行われる。
【００４２】
ルーティング部２８３は、選択・判定部２８３ａ及び中継部２８３ｂを含む。選択・判定部２８３ａは、登録・参照要求で指定されたオブジェクトの登録・参照先のノードを、当該オブジェクトのオブジェクトＩＤ及び構成情報４０-iに基づいて選択し、当該選択したノードがノード２０-i自身（自ノード）であるかを判定する。中継部２８３ｂは、選択・判定部２８３ａによって選択されたノードがノード２０-i自身（自ノード）でないと判定された場合に、登録・参照要求を当該選択されたノードに中継する。
【００４３】
オブジェクトアクセス部２８４は、オブジェクト記憶部２７へのオブジェクトの新規登録もしくは更新登録、またはオブジェクト記憶部２７に登録されているオブジェクトの参照を行う。オブジェクトアクセス部２８４は、衝突検出部２８４ａと、再構成部２８４ｂ及び２８４ｃとを含む。但し、再構成部２８４ｂ及び２８４ｃは、本実施形態では用いられず、後述する変形例で用いられるものとする。
【００４４】
本実施形態において、各ノード２０-iに含まれている構成管理部２８２、ルーティング部２８３及びオブジェクトアクセス部２８４は、図２に示されるノード２０-i内の処理ユニット２１が、記憶媒体２３１に格納されているプログラム２３０を当該ノード２０-i内の主記憶装置２２に読み込んで実行することにより実現される機能モジュールである。しかし、構成管理部２８２、ルーティング部２８３及びオブジェクトアクセス部２８４の少なくとも１つがハードウェアとして実現されてもよい。
【００４５】
クライアント端末３０は、オーバーレイネットワーク１０を利用してオブジェクトの登録・参照を行う主体となるコンピュータである。クライアント端末３０は、ノード２０-iと同様のハードウェア構成を有するものとする。クライアント端末３０は、例えば機能モジュールとしてのユーザプログラム実行部３１及び登録・参照要求処理部３２を含む。
【００４６】
ユーザプログラム実行部３１は、オブジェクトを登録または参照する動作（以下、登録・参照動作と称する）を要求するためのユーザプログラムを実行する。ユーザプログラム実行部３１は、登録・参照要求処理部３２を介して、オーバーレイネットワーク１０へのオブジェクトの新規登録もしくは更新登録、またはオーバーレイネットワーク１０に登録されているオブジェクトの参照を行う。
【００４７】
ユーザプログラム実行部３１は、オブジェクトＩＤ設定部３１１及び３１２を含む。オブジェクトＩＤ設定部３１１は、オーバーレイネットワーク１０へのオブジェクトの新規登録時に、当該オブジェクトを識別するためのＩＤであるオブジェクトＩＤを設定する第１のオブジェクトＩＤ設定部として機能する。オブジェクトＩＤ設定部３１２は、オーバーレイネットワーク１０へのオブジェクトの更新登録時、つまり更新後のオブジェクトの登録時に、当該更新後のオブジェクトを識別するためのオブジェクトＩＤを設定する第２のオブジェクトＩＤ設定部として機能する。
【００４８】
登録・参照要求処理部３２は、ユーザプログラム実行部３１によって発行される登録・参照要求をノード２０-iに送信する一方、当該登録・参照要求に対するノード２０-iからの応答を受信してユーザプログラム実行部３１に転送するための要求・応答転送処理を行う。
【００４９】
図３には、クライアント端末３０のユーザプログラム実行部３１によって登録・参照要求が発行された場合の、当該登録・参照要求の流れが矢印Ａ１で示されている。また図３には、登録・参照要求に対する応答の流れが矢印Ａ２で示されている。
【００５０】
＜構成情報＞
図４は、ノード２０-iの構成記憶部２８１に格納されている構成情報４０-iのデータ構造例を示す。構成情報４０-iは、ノード情報４１-i及びネットワーク構成情報４２-iから構成される。  
ノード情報４１-iは、当該ノード情報４１-iを含む構成情報４０-iを保持するノード２０-i自身（以下、自ノードと称する）に関する情報である。構成情報４０-iを保持するノード２０-iはオーバーレイネットワーク１０に参加しており、当該オーバーレイネットワーク１０の一構成要素である。ノード情報４１-iは、例えば、ビット数ｍ、ノードＩＤ及びアドレスから構成される。
【００５１】
アドレスは、自ノードに固有のアドレスである。本実施形態においてアドレスは、自ノードのＩＰアドレスである。図４に示される構成情報４０-iはｉが７の例、つまりノード２０-7（ｉ＝７）が保持する構成情報４０-7の例を示しており、アドレスは当該ノード２０-7のＩＰアドレス「１９２．１６８．０．１」である。  
ノードＩＤは、自ノードに固有のＩＤである。本実施形態においてノードＩＤには、従来技術と同様に、自ノードのアドレスのハッシュ値が用いられる。
【００５２】
ビット数ｍは、オーバーレイネットワーク１０を構成する各ノードのノードＩＤのビット数を示す。このビット数ｍにより、オーバーレイネットワーク１０を構成可能なノードの数の上限が決まる。つまり、オーバーレイネットワーク１０を構成するノードのノードＩＤとして取り得る値の範囲が決まる。また、ビット数ｍは、後述するようにオブジェクトＩＤの範囲にも関係する。本実施形態では、ｍは３である。この場合、ノードＩＤとして取り得る値の範囲は、０から７（２m−１＝２3−１＝７）である。
【００５３】
ネットワーク構成情報４２-iは、オーバーレイネットワーク１０の論理的な構成を示す情報である。ネットワーク構成情報４２-iは、例えば、オーバーレイネットワーク１０を構成する全てのノードについて、当該ノードのノードＩＤ及びアドレス対から構成される。ネットワーク構成情報４２-iは更に、オーバーレイネットワーク１０を構成していないものの、当該オーバーレイネットワーク１０を構成可能なノードのノードＩＤ及び「ｎｕｌｌ」を示すアドレスの対を含む。このノードＩＤ及び「ｎｕｌｌ」を示すアドレスの対における「ｎｕｌｌ」は、対応するノードＩＤを持つノードがオーバーレイネットワーク１０上に存在せず、当該オーバーレイネットワーク１０を構成していないことを示す。
【００５４】
本実施形態では、ノード２０-iが保持する構成情報４０-iは、オーバーレイネットワーク１０の構築に当たって、管理者が例えば当該ノード２０-iの入出力装置２５を操作することによって、当該ノード２０-iの構成記憶部２８１に格納されるものとする。この操作は、オーバーレイネットワーク１０を構成すべき全てのノード２０-iに対して行われる。つまり本実施形態では、オーバーレイネットワーク１０を構成すべき各ノード２０-iに、当該ノード２０-iに固有のノード情報４１-iを含む構成情報４０-iを、管理者の操作により事前に登録しておくものとする。また、この操作がクライアント端末３０を用いて行われてもよい。また、オーバーレイネットワーク１０を構成する各ノード２０-iが相互に通信を行うことにより構成情報４０-iを自律的に生成し、生成された構成情報４０-iが対応するノード２０-iに登録される構成とすることも可能である。
【００５５】
＜オーバーレイネットワークシステム上でのオブジェクトの取り扱い＞
従来技術によって実現されるオーバーレイネットワークシステムは、オーバーレイネットワークを構成するノード群の中から、各々のＣｏｎｓｉｓｔｅｎｔＨａｓｈｉｎｇのアルゴリズムに基づいてノードを選出して、そのノードを対象にオブジェクトを登録するための登録機能と、そのノードを対象にオブジェクトを参照するための参照機能とを提供するのが一般的である。
【００５６】
登録機能によれば、オブジェクトをオーバーレイネットワークに入力することにより、当該オーバーレイネットワークを構成するノードに当該オブジェクトが登録される。この登録機能は、登録されるオブジェクトを識別するためのオブジェクトＩＤを得る機能を有する。  
参照機能によれば、登録済みのオブジェクトのオブジェクトＩＤをオーバーレイネットワークに入力することにより、当該オブジェクトＩＤを持つオブジェクトが取得される。
【００５７】
従来技術では、オブジェクトのオブジェクトＩＤとして、当該オブジェクト自体または当該オブジェクトの「名前」のハッシュ値が設定される。そして、オブジェクトに設定されたオブジェクトＩＤと、オーバーレイネットワークを構成するノードのノードＩＤとの間で、従来技術に固有のＣｏｎｓｉｓｔｅｎｔＨａｓｈｉｎｇアルゴリズムに基づいて、オブジェクトの登録先ノードが決定される。
【００５８】
これに対して本実施形態では、従来技術にはない、２つの技術的な特徴がある。  
第１の技術的特徴は、オブジェクトを登録するための機能が、新規登録機能と更新登録機能の２種類より構成される点である。  
新規登録機能は従来技術における登録機能に相当する。新規登録機能によれば、新規作成されたオブジェクトをオーバーレイネットワークに入力することにより、当該オーバーレイネットワークを構成するノードに当該オブジェクトが登録される。この新規登録機能は、登録されたオブジェクトを識別するためのオブジェクトＩＤを得る機能を有する。
【００５９】
更新登録機能によれば、既に登録されている更新前のオブジェクトのオブジェクトＩＤと、更新後のオブジェクトとをオーバーレイネットワークに入力することにより、更新前のオブジェクトが登録されているノードに更新後のオブジェクトも登録される。この更新後のオブジェクトの登録を、更新登録と称する。ここで、更新前のオブジェクトは、新規登録されたオブジェクト、または以前に更新登録されたオブジェクトである。更新登録機能は、更新登録されるべき更新後のオブジェクトを識別するためのオブジェクトＩＤを得る機能を有する。
【００６０】
第２の技術的特徴は、オブジェクトのオブジェクトＩＤを生成して当該オブジェクトに設定するためのオブジェクトＩＤ設定機能にある。本実施形態におけるオブジェクトＩＤ設定機能の特徴は、新規登録と更新登録との違いを考慮してオブジェクトＩＤを生成・設定することにある。このために、オブジェクトＩＤは、後述する「ツリー部」と「コンテンツ部」とから構成される。
【００６１】
本実施形態においては、これらの特徴により、詳細を後述するように、更新前後のオブジェクトを同じノードに登録できる。オブジェクトの重複部分は更新前後のオブジェクト間で生じやすい。このため、更新前後のオブジェクトを同一のノードに登録することによって、同じノード内に閉じて更新前後のオブジェクトの重複排除を行うことができる。また、従来技術と異なり、更新前後のオブジェクトを複数のノードで連携して管理する必要がないため、より高い信頼性・可用性を得ながら、オブジェクト間の重複排除を効果的に実現することができる。
【００６２】
次に、オブジェクトＩＤの設定方法、オブジェクト登録先ノードの選択方法及びオブジェクトの登録・参照動作について、順次説明する。
【００６３】
＜オブジェクトＩＤの設定方法＞
本実施形態では、オブジェクトＩＤのツリー部及びコンテンツ部の値が取り得る範囲は、ノードＩＤと等しいものとする。つまり、本実施形態においては、オブジェクトＩＤのツリー部及びコンテンツ部の値が取り得る範囲は、いずれも０から７（＝２m−１＝２3−１＝７）である。
【００６４】
ここで、オブジェクトＩＤが設定されるオブジェクトをオブジェクト“ｏｂｊ”で表し、オブジェクト“ｏｂｊ”のオブジェクトＩＤをオブジェクトＩＤ“ＯＩＤ”で表す。オブジェクトＩＤ“ＯＩＤ”のツリー部及びコンテンツ部の値を、それぞれＯＩＤt及びＯＩＤcで表し、オブジェクトＩＤ“ＯＩＤ”をＯＩＤ＝｛ＯＩＤt，ＯＩＤc｝の形式で表す。例えばＯＩＤ＝｛２，５｝とは、ツリー部の値が２、コンテンツ部の値が５であるオブジェクトＩＤ“ＯＩＤ”を示す。なお、オブジェクトＩＤ“ＯＩＤ”のツリー部及びコンテンツ部を、それぞれＯＩＤt及びＯＩＤcで表すこともある。
【００６５】
本実施形態では、新規登録されるオブジェクトのオブジェクトＩＤを構成するツリー部及びコンテンツ部の各値は、クライアント端末３０のオブジェクトＩＤ設定部３１１によって当該オブジェクトのハッシュ値から生成される。ハッシュ値の生成には、例えばＳＨＡ１やＭＤ５のようなハッシュ関数が用いられる。このハッシュ関数は、オーバーレイネットワーク１０を構成する全てのノードと、クライアント端末３０との間で共通である。このハッシュ関数を用いて生成されるハッシュ値のビット長は、ノードＩＤのビット長と等しいとする。なお、新規登録されるオブジェクトに固有の値（つまりオブジェクトから生成される当該オブジェクトの代表値）であれば、当該オブジェクトのハッシュ値以外の値を、当該オブジェクトのオブジェクトＩＤを構成するツリー部及びコンテンツ部の各値に用いても構わない。
【００６６】
＜オブジェクト登録先ノードの選択方法＞
本実施形態では、オーバーレイネットワーク１０上でのオブジェクト“ｏｂｊ”の登録先のノードとして、オブジェクトＩＤ“ＯＩＤ”のツリー部の値ＯＩＤtに対して最も近いノードＩＤを持つノードが選択される。このようなノードを、オブジェクト“ｏｂｊ”の「ｓｕｃｃｅｓｓｏｒ」と定義する。オーバーレイネットワーク１０を構成する全てのノード２０-iの選択・判定部２８３ａは、この規則に基づいてオブジェクトの登録先ノードを決定して選択する。
【００６７】
図１のオーバーレイネットワークシステムにおいては、オブジェクトＩＤ“ＯＩＤ”のコンテンツ部の値がｘであるものとすると、それぞれ、ＯＩＤ＝｛３，ｘ｝，ＯＩＤ＝｛２，ｘ｝，ＯＩＤ＝｛７，ｘ｝であるオブジェクトＩＤのオブジェクトの登録先ノード「ｓｕｃｃｅｓｓｏｒ」は、次のようになる。
【００６８】
オブジェクトＩＤ｛３，ｘ｝のオブジェクトのｓｕｃｃｅｓｓｏｒ
＝ノードＩＤが３（ＩＤ３）のノード（アドレス１０．０．０．１）
オブジェクトＩＤ｛２，ｘ｝のオブジェクトのｓｕｃｃｅｓｓｏｒ
＝ノードＩＤが３（ＩＤ３）のノード（アドレス１０．０．０．１）
オブジェクトＩＤ｛７，ｘ｝のオブジェクトのｓｕｃｃｅｓｓｏｒ
＝ノードＩＤが７（ＩＤ７）のノード（アドレス１９２．１６８．０．１）
前述したように、ノードＩＤがｙ（ＩＤｙ）のノードは、ノード“ｙ”と称される。そこで以降の説明では、ノードＩＤがｙ（ＩＤｙ）のノードをノード“ｙ”と表記することもある。例えば「ノード“３”」は「ノードＩＤが３のノード」を示し、「ノード“７”」は「ノードＩＤが７のノード」を示す。
【００６９】
＜オブジェクトの登録・参照動作＞
本実施形態では、オブジェクトを登録するための登録動作として、新規登録機能による新規登録動作と、更新登録機能による更新登録動作とが用意されている。新規登録動作及び更新登録動作の特徴は、同じノードに更新前後のオブジェクトが登録されるようにするために、上述のようなオブジェクトＩＤの設定方法を適用することにある。これによって、更新前後のオブジェクトの重複排除をより容易に実現できる。
【００７０】
・オブジェクトの新規登録動作
まず、図１のオーバーレイネットワークシステムにおいてオブジェクト“ｏｂｊ”を新規登録するときの動作を、図５乃至図７を参照して説明する。図５は、オブジェクトの新規登録動作における情報の流れを示す図、図６はオブジェクトの新規登録動作におけるクライアント端末側の処理手順を示すフローチャート、図７はオブジェクトの新規登録・更新登録動作におけるノード側の処理手順を示すフローチャートである。
【００７１】
クライアント端末３０のオブジェクトＩＤ設定部３１１は、新規登録されるべきオブジェクト“ｏｂｊ”のハッシュ値ｈ（ｏｂｊ）を計算し（ステップ６０１）、このハッシュ値ｈ（ｏｂｊ）を、図５において矢印５０１で示すように、当該オブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”におけるツリー部ＯＩＤtの値及びコンテンツ部ＯＩＤcの値として設定する（ステップ６０２）。この例では、ＯＩＤ＝｛ＯＩＤt，ＯＩＤc｝＝｛２，２｝であったとする。なお、以降の説明では、オブジェクトＩＤ“ＯＩＤ”を、オブジェクトＩＤ｛ＯＩＤt，ＯＩＤc｝と表記することもある。
【００７２】
ユーザプログラム実行部３１は、オブジェクトＩＤ“ＯＩＤ”が設定されたオブジェクト“ｏｂｊ”をオーバーレイネットワーク１０に新規登録するための新規登録要求を発行する（ステップ６０３）。このステップ６０３において、新規登録要求は、クライアント端末３０の登録・参照要求処理部３２によって、オーバーレイネットワーク１０を構成するノード群のうちの任意のノード２０-iに送信される。ここでは新規登録要求が、図５において矢印５０２で示すように、ノード２０-7（ノード“７”）に送信されたものとする。新規登録要求は、オブジェクト“ｏｂｊ”及びオブジェクトＩＤ“ＯＩＤ”を含む。ここでは、ＯＩＤ＝｛ＯＩＤt，ＯＩＤc｝＝｛２，２｝である。
【００７３】
クライアント端末３０からノード２０-7に送信された新規登録要求は、当該ノード２０-7の要求受付部２６で受信されて、制御部２８に渡される。すると制御部２８では、ルーティング部２８３の選択・判定部２８３ａが、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”におけるツリー部の値ＯＩＤtと、構成記憶部２８１に格納されている構成情報４０-7のネットワーク構成情報４２-7とに基づき、当該ネットワーク構成情報４２-7から、オブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒとなるノードのアドレスを選択する（ステップ７０１）。オブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒとなるノードは、ネットワーク構成情報４２-7によって示される、オーバーレイネットワーク１０を構成しているノード群のうち、オブジェクトＩＤ“ＯＩＤ”のツリー部の値ＯＩＤtに最も近いノードＩＤを持つノードである。本実施形態のようにＯＩＤt＝２の場合、ノードＩＤが３のノードであるノード２０-3（ノード“３”）のアドレスが選択される。
【００７４】
選択・判定部２８３ａは、選択されたアドレスのノード２０-3が自ノードであるかを判定する（ステップ７０２）。本実施形態のように自ノードでない場合（ステップ７０２のＮｏ）、ルーティング部２８３の中継部２８３ｂは選択されたアドレスのノード２０-3宛てに、クライアント端末３０からの新規登録要求を通信機構２４を介して図５において矢印５０３で示すように送信する（ステップ７０３）。このような送信を中継送信と呼ぶ。また中継送信を行うノードを中継ノードと呼ぶ。
【００７５】
ノード２０-7によってノード２０-3に中継送信された新規登録要求は、当該ノード２０-3の通信機構２４で受信されて、制御部２８に渡される。するとノード２０-3では、選択・判定部２８３ａが、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”におけるツリー部の値ＯＩＤtに基づき、構成記憶部２８１に格納されている構成情報４０-7のネットワーク構成情報４２-7から、オブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒとなるノードのアドレスを選択する（ステップ７０１）。ここでは、ノード２０-3が選択される。
【００７６】
選択・判定部２８３ａは、選択されたノード２０-3が自ノードであるかを判定する（ステップ７０２）。本実施形態のように自ノードである場合（ステップ７０２のＹｅｓ）、選択・判定部２８３ａは、自ノードが、要求されたオブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒであることを確認する。
【００７７】
するとノード２０-3の衝突検出部２８４ａは、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”（ここではオブジェクトＩＤ｛２，２｝）と同一のオブジェクトＩＤを持つオブジェクトが、当該オブジェクトＩＤに対応付けて自ノードのオブジェクト記憶部２７に登録されているかを調べる（ステップ７０４，７０５）。もし、オブジェクトＩＤ“ＯＩＤ”と同一のオブジェクトＩＤを持つオブジェクトが未だ登録されていないことが確認できたならば（ステップ７０５のＮｏ）、ノード２０-3のオブジェクトアクセス部２８４は、要求されたオブジェクト“ｏｂｊ”をオブジェクトＩＤ“ＯＩＤ”に対応付けて、図５において矢印５０４で示すようにオブジェクト記憶部２７に登録する（ステップ７０６）。
【００７８】
すると、ノード２０-3の制御部２８は新規登録要求の送信元のノード２０-7（つまり中継ノード２０-7）に対し、通信機構２４を介して、図５において矢印５０５で示すように登録成功の応答を返す（ステップ７０７）。この応答は、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”を含む。
【００７９】
ノード２０-7の制御部２８は、ノード２０-3から返された登録成功の応答を通信機構２４を介して受信する。するとノード２０-7の制御部２８は新規登録要求の送信元のクライアント端末３０に対し、要求受付部２６を介して、図５において矢印５０６で示すように登録成功の応答（オブジェクトＩＤ“ＯＩＤ”）を返す。
【００８０】
クライアント端末３０は、ノード２０-7に新規登録要求を送信すると（ステップ６０３）、当該要求に対する応答を待つ（ステップ６０４）。この状態で、ノード２０-7からクライアント端末３０に登録成功の応答が返されると、クライアント端末３０は当該登録成功の応答を受信する。
【００８１】
・オブジェクトの新規登録動作（ハッシュ衝突あり）
本実施形態では、オブジェクトを新規登録する際に設定されるオブジェクトＩＤのツリー部及びコンテンツ部の値には、当該オブジェクトＩＤを持つオブジェクト（つまりコンテンツ）のハッシュ値（代表値）が用いられる。このため、ハッシュ衝突が起きると、異なるオブジェクトの間でオブジェクトＩＤが衝突する。この場合、一方のオブジェクトである既登録のオブジェクトが他方のオブジェクトである新規登録されるべきオブジェクトで上書きされてしまう。
【００８２】
そこで本実施形態では、要求されたオブジェクトのハッシュ値（オブジェクトＩＤ）と当該オブジェクトとは異なる既登録のオブジェクトのハッシュ値（オブジェクトＩＤ）との衝突を検出することにより、登録要求をエラーとして処理する手法を適用している。このハッシュ値の衝突を招くときの新規登録動作について、前述したハッシュ値の衝突を招かないときの新規登録動作と相違する点を中心に、図７のフローチャートに加えて、図８のオブジェクトの新規登録動作における情報の流れを示す図を参照して説明する。なお、図８において、図５と等価な部分には同一参照符号を付してある。
【００８３】
今、ノード２０-3の制御部２８が、ノード２０-7によって中継送信されたクライアント端末３０からの新規登録要求を通信機構２４を介して受信したものとする。そして、自ノード（ノード２０-3）が、要求されたオブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒであることが、ノード２０-3のルーティング部２８３によって確認されたものとする（ステップ７０２のＹｅｓ）。また、ノード２０-3のオブジェクト記憶部２７には、図８に示すように、オブジェクトＩＤが｛２，２｝のオブジェクト“ｏｂｊｘ”が登録されているものとする。
【００８４】
この場合、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”（ＯＩＤ＝｛２，２｝）と同一のオブジェクトＩＤ（ＩＤ“ｏｂｊｘ”）を持つオブジェクト“ｏｂｊｘ”が、当該オブジェクトＩＤ（ＩＤ“ｏｂｊｘ”）に対応付けて既にオブジェクト記憶部２７に登録されていることが、ノード２０-3の衝突検出部２８４ａによって確認される（ステップ７０５のＹｅｓ）。
【００８５】
すると衝突検出部２８４ａは、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”（ＯＬＤ＝｛ＯＩＤt，ＯＩＤc｝＝｛２，２｝）に基づいて、オブジェクト記憶部２７から当該オブジェクトＩＤ“ＯＩＤ”を持つオブジェクト“ｏｂｊｘ”を読み込む（ステップ７０８）。このステップ７０８において衝突検出部２８４ａは、要求されたオブジェクト“ｏｂｊ”が読み込んだオブジェクト“ｏｂｊｘ”と同一であるかを調べるために、図８において矢印８０１で示すように、両オブジェクトを比較する。そして衝突検出部２８４ａは、オブジェクト比較の結果に基づき、要求されたオブジェクト“ｏｂｊ”が読み込んだオブジェクト“ｏｂｊｘ”と同一であるかを判定する（ステップ７０９）。
【００８６】
もし、両オブジェクトが同一でないと判定した場合（ステップ７０９のＮｏ）、衝突検出部２８４ａは異なるオブジェクトのハッシュ値（オブジェクトＩＤ）が衝突していることを検出したと判定する。この場合、ノード２０-3の制御部２８は、新規登録要求の送信元のノード２０-7に対し、通信機構２４を介して、図８において矢印８０２で示すようにエラー発生（ハッシュ衝突）の応答を返す（ステップ７１０）。
【００８７】
ノード２０-7の制御部２８は、ノード２０-3から返されたエラー発生の応答を通信機構２４を介して受信する。するとノード２０-7の制御部２８は新規登録要求の送信元のクライアント端末３０に対し、要求受付部２６を介して、図５において矢印８０３で示すようにエラー発生の応答を返す。  
クライアント端末３０は、ノード２０-7から返されたエラー発生の応答を受け取る。
【００８８】
一方、両オブジェクトが同一であると判定した場合（ステップ７０９のＹｅｓ）、オブジェクトアクセス部２８４は、異なるオブジェクトのハッシュ値（オブジェクトＩＤ）の衝突ではないことを確認する。このように、要求されたオブジェクト“ｏｂｊ”と同一のオブジェクトが既にオブジェクト記憶部２７に登録されている場合、オブジェクトアクセス部２８４は当該オブジェクト“ｏｂｊ”をオブジェクト記憶部２７に登録する動作を行わない。この状態で、ノード２０-3の制御部２８は、オブジェクトアクセス部２８４によってオブジェクト“ｏｂｊ”がオブジェクト記憶部２７に登録された場合と同様に、新規登録要求の送信元のノード２０-7に対して登録成功の応答を返す（ステップ７０７）。
【００８９】
本実施形態では、オブジェクト“ｏｂｊ”の新規登録を要求するクライアント端末３０のオブジェクトＩＤ設定部３１１が、当該オブジェクト“ｏｂｊ”のハッシュ値を計算して、当該ハッシュ値に基づいて当該オブジェクト“ｏｂｊ”のオブジェクトＩＤを設定している。しかし、これらの処理が必ずしもクライアント端末３０のオブジェクトＩＤ設定部３１１で行われる必要はない。例えば中継ノードまたは新規登録先ノード（ｓｕｃｃｅｓｓｏｒ）にオブジェクトＩＤ設定部３１１に相当するオブジェクトＩＤ設定部を設け、当該中継ノードまたは新規登録先ノードのオブジェクトＩＤ設定部でオブジェクトＩＤを設定してもよい。なお、新規登録先ノードでオブジェクト“ｏｂｊ”のオブジェクトＩＤを設定する場合、中継ノードは、当該中継ノードの選択・判定部２８３ａによる新規登録先ノードの選択を可能とするために、オブジェクト“ｏｂｊ”のハッシュ値を計算して、当該ハッシュ値をオブジェクト“ｏｂｊ”のオブジェクトＩＤにおけるツリー部として設定する必要がある。
【００９０】
また本実施形態では、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”と同一のオブジェクトＩＤを持つオブジェクトが既にオブジェクト記憶部２７に登録されているかを衝突検出部２８４ａが確認することによって（ステップ７０４，７０５）、ハッシュ値の衝突が検出される。しかし本実施形態では、新規登録されるオブジェクトのオブジェクトＩＤにおけるツリー部及びコンテンツ部には、いずれも当該オブジェクトのハッシュ値が用いられる。このため、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”と少なくともツリー部が同一のオブジェクトＩＤを持つオブジェクトが既にオブジェクト記憶部２７に登録されているかを衝突検出部２８４ａが確認することによって、ハッシュ値の衝突が検出される構成であっても構わない。
【００９１】
・オブジェクトの更新登録動作
次に、図１のオーバーレイネットワークシステムにおいてオブジェクト“ｏｂｊ”を更新登録するときの動作を、新規登録動作と相違する点を中心に、図７のフローチャートに加えて、図９及び図１０を参照して説明する。図９はオブジェクトの更新登録動作における情報の流れを示す図、図１０はオブジェクトの更新登録動作におけるクライアント端末側の処理手順を示すフローチャートである。
【００９２】
クライアント端末３０のユーザプログラム実行部３１が、図９において矢印９０１で示されるように、オブジェクト“ｏｂｊp”をオブジェクト“ｏｂｊ”に更新したものとする。するとユーザプログラム実行部３１のオブジェクトＩＤ設定部３１２は、オブジェクト“ｏｂｊ”の更新登録のために、当該更新登録されるべきオブジェクト“ｏｂｊ”（つまり更新後のオブジェクト“ｏｂｊ”）のハッシュ値ｈ（ｏｂｊ）を計算する（ステップ１０１）。
【００９３】
次にオブジェクトＩＤ設定部３１２は、更新前のオブジェクト“ｏｂｊp”のオブジェクトＩＤ“ＯＩＤp”におけるツリー部ＯＩＤptの値を、図９において矢印９０２で示されるように、更新後のオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”におけるツリー部ＯＩＤtの値として設定する（ステップ１０２）。このステップ１０２においてオブジェクトＩＤ設定部３１２は、計算されたハッシュ値ｈ（ｏｂｊ）を、更新後のオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”におけるコンテンツ部ＯＩＤcの値として、図９において矢印９０２で示されるように設定する。このように本実施形態では、更新前のオブジェクトのオブジェクトＩＤのツリー部の値が、更新後のオブジェクトのオブジェクトＩＤのツリー部の値として継承される。このため、オブジェクトのオブジェクトＩＤのツリー部の値は、更新前後で変化しない。これに対し、更新後のオブジェクトのオブジェクトＩＤのコンテンツ部の値には、当該更新後のオブジェクトのハッシュ値が用いられる。このため、オブジェクトのオブジェクトＩＤのコンテンツ部の値は、一般に更新前後で異なる。
【００９４】
図９の例では、更新前のオブジェクト“ｏｂｊp”のオブジェクトＩＤ“ＯＩＤp”が｛２，２｝であったのに対して、更新後のオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”が｛２，６｝に設定される。
【００９５】
クライアント端末３０のユーザプログラム実行部３１は、オブジェクトＩＤ“ＯＩＤ”が設定されたオブジェクト“ｏｂｊ”をオーバーレイネットワーク１０に更新登録するための更新登録要求を発行する（ステップ１０３）。このステップ１０３において、更新登録要求は、クライアント端末３０の登録・参照要求処理部３２によって、図９において矢印９０３で示されるように、オーバーレイネットワーク１０を構成するノード群のうちの任意のノード２０-iに送信される。図９の例では、任意のノードノード２０-iはノード２０-7である。更新登録要求は、オブジェクト“ｏｂｊ”及びオブジェクトＩＤ“ＯＩＤ”（ＯＩＤ＝｛ＯＩＤt，ＯＩＤc｝＝｛２，６｝）を含む。
【００９６】
クライアント端末３０からノード２０-7に送信された更新登録要求は、当該ノード２０-7の要求受付部２６で受信されて、制御部２８に渡される。すると制御部２８では、ルーティング部２８３の選択・判定部２８３ａが、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”におけるツリー部の値ＯＩＤtに基づき、構成記憶部２８１に格納されている構成情報４０-7のネットワーク構成情報４２-7から、オブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒとなるノードのアドレスを選択する（ステップ７０１）。本実施形態のようにＯＩＤt＝２の場合、ノードＩＤが３のノードであるノード２０-3（ノード“３”）が選択される。
【００９７】
ルーティング部２８３の中継部２８３ｂは、選択・判定部２８３ａによって選択されたノード２０-3が本実施形態のように自ノードでない場合（ステップ７０２のＮｏ）、クライアント端末３０からの更新登録要求を通信機構２４を介して、図９において矢印９０４で示すように当該ノード２０-3に中継送信する（ステップ７０３）。
【００９８】
ノード２０-7によってノード２０-3に中継送信された更新登録要求は、当該ノード２０-3で受信される。するノード２０-3の選択・判定部２８３ａは、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”におけるツリー部の値ＯＩＤtに基づき、構成情報４０-7のネットワーク構成情報４２-7から、オブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒとなるノードのアドレスを選択する（ステップ７０１）。ここでは、ノード２０-3自身のアドレスが選択される。
【００９９】
選択・判定部２８３ａは、選択されたノード２０-3が自ノードであると判定することにより（ステップ７０２のＹｅｓ）、自ノードが、要求されたオブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒであることを確認する。この場合、ノード２０-3の衝突検出部２８４ａは、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”（ここではオブジェクトＩＤ｛２，６｝）と同一のオブジェクトＩＤを持つオブジェクトが、当該オブジェクトＩＤに対応付けて自ノードのオブジェクト記憶部２７に登録されているかを調べる（ステップ７０４，７０５）。つまり衝突検出部２８４ａは、オブジェクトＩＤ“ＯＩＤ”と重複するオブジェクトＩＤを持つオブジェクトが自ノードに登録されているかを調べる。
【０１００】
もし、オブジェクトＩＤ“ＯＩＤ”と同一のオブジェクトＩＤを持つオブジェクトが未だ登録されていないことが確認されたならば（ステップ７０５のＮｏ）、ノード２０-3のオブジェクトアクセス部２８４は、要求されたオブジェクト“ｏｂｊ”を、図９において矢印９０５で示すようにオブジェクト記憶部２７に登録する（ステップ７０６）。
【０１０１】
このように本実施形態においては、オブジェクト“ｏｂｊp”の更新後のオブジェクト“ｏｂｊ”は、オブジェクトＩＤのツリー部の値がオブジェクト“ｏｂｊp”のそれと同一に設定されるため、オブジェクト“ｏｂｊp”が登録されているノード２０-3に登録される。しかも、更新後のオブジェクト“ｏｂｊ”は、オブジェクトＩＤのコンテンツ部の値が、オブジェクト“ｏｂｊp”のそれと異なることから、基本的にはオブジェクト“ｏｂｊp”に上書きされるおそれはない。
【０１０２】
オブジェクト“ｏｂｊ”がノード２０-3のオブジェクト記憶部２７に登録されると、ノード２０-3はノード２０-7に対して、図９において矢印９０６で示すように登録成功の応答（オブジェクトＩＤ“ＯＩＤ”）を返す（ステップ７０７）。  
ノード２０-7は登録成功の応答を受信すると、図９において矢印９０７で示すように登録成功の応答（オブジェクトＩＤ“ＯＩＤ”）をクライアント端末３０に返す。
【０１０３】
・オブジェクトの更新登録動作（ハッシュ衝突あり）
本実施形態では、オブジェクトの更新登録動作においても、オブジェクトの新規登録動作の場合と同様に、要求されたオブジェクト“ｏｂｊ”のハッシュ値（オブジェクトＩＤ）と当該オブジェクトとは異なる既登録のオブジェクト“ｏｂｊｘ”のハッシュ値（オブジェクトＩＤ）との衝突を図７のフローチャートに従って検出することにより、登録要求をエラーとして処理する手法を適用している。これにより、既登録のオブジェクト“ｏｂｊｘ”が、当該オブジェクト“ｏｂｊｘ”とは異なる要求されたオブジェクト“ｏｂｊ”で上書きされるのを防止できる。
【０１０４】
図１１に、ハッシュ値の衝突を招くときのオブジェクトの更新登録動作における情報の流れを示す。図１１において、図９と等価な部分には同一参照符号を付してある。  
図１１の例では、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”（ＯＬＤ＝｛ＯＩＤt，ＯＩＤc｝＝｛２，６｝）と同一のオブジェクトＩＤを持つオブジェクト“ｏｂｊｘ”が、既にオブジェクト記憶部２７に登録されている（ステップ７０５のＹｅｓ）。この例では、ノード２０-3の衝突検出部２８４ａは、図１１において矢印１１１で示すようにオブジェクト“ｏｂｊ”及び“ｏｂｊｘ”を比較することにより（ステップ７０８）、両オブジェクトが同一でないことを確認する（ステップ７０９のＮｏ）。
【０１０５】
この場合、ノード２０-3はノード２０-7に対し、図１１において矢印１１２で示すようにエラー発生（ハッシュ衝突）の応答を返す（ステップ７１０）。するとノード２０-7は、図１１において矢印１１３で示すようにエラー発生（ハッシュ衝突）の応答をクライアント端末３０に返す。
【０１０６】
本実施形態によれば、オーバーレイネットワークシステムにおけるオブジェクトの登録を、新規登録と更新登録とに分け、それぞれでオブジェクトＩＤの設定方法、つまり「ツリー部」と「コンテンツ部」の設定方法に工夫を持たせている。特に、更新後のオブジェクトのオブジェクトＩＤにおけるツリー部として、更新前のオブジェクトのオブジェクトＩＤにおけるツリー部の値を継承している。これによって、更新前後のオブジェクトを同じノードに登録することができる。オブジェクトの重複部分は更新前後のオブジェクト間で生じやすい。このため、更新前後のオブジェクトを同じノードに登録することにより、当該更新前後のオブジェクトのデータに類似性があるときには、更新前後のオブジェクト間で重複排除を行う効果は大きい。
【０１０７】
従来技術では、更新前後のオブジェクトが複数のノード間で分散して登録されることになる。このため、従来技術において更新前後のオブジェクト間で重複排除を行うためには、ノード間での複雑な連携動作が必要となる。これに対して本実施形態では、更新前後のオブジェクトを同じノードに登録することができるため、そのノード内でオブジェクトの重複排除を行えばよい。よって本実施形態によれば、従来技術と比較して、より高い信頼性・可用性を得ながら、オブジェクト間の重複排除を実現することができる。なお、同じノードに登録されたオブジェクト間の重複排除は周知の技術を用いて容易に実現できるため、当該重複排除の具体的な説明は省略する。
【０１０８】
本実施形態では、オブジェクト“ｏｂｊ”の更新登録を要求するクライアント端末３０のオブジェクトＩＤ設定部３１２が、当該オブジェクト“ｏｂｊ”のハッシュ値を計算し、当該ハッシュ値と更新前のオブジェクト“ｏｂｊp”のオブジェクトＩＤ“ＯＩＤp”におけるツリー部ＯＩＤptの値とに基づいて当該オブジェクト“ｏｂｊ”のオブジェクトＩＤを設定している。しかし、これらの処理が必ずしもクライアント端末３０のオブジェクトＩＤ設定部３１２で行われる必要はない。例えば中継ノードまたは更新登録先ノード（ｓｕｃｃｅｓｓｏｒ）にオブジェクトＩＤ設定部３１２に相当するオブジェクトＩＤ設定部を設け、当該中継ノードまたは更新登録先ノードのオブジェクトＩＤ設定部でオブジェクトＩＤを設定してもよい。この場合、クライアント端末３０から中継ノードに送信される更新登録要求に、更新前のオブジェクト“ｏｂｊp”のオブジェクトＩＤ“ＯＩＤp”における少なくともツリー部の値ＯＩＤptを含める必要がある。また、更新登録先ノードでオブジェクト“ｏｂｊ”のオブジェクトＩＤを設定する場合、中継ノードはクライアント端末３０から受信した更新登録要求に含まれているツリー部の値ＯＩＤptを、オブジェクト“ｏｂｊ”のオブジェクトＩＤにおけるツリー部の値ＯＩＤtとして用いれば良い。
【０１０９】
本実施形態では、オブジェクトの新規登録動作で設定されるオブジェクトＩＤのツリー部及びコンテンツ部の値には、当該オブジェクト（つまりコンテンツ）のハッシュ値が用いられる。しかし、ツリー部の値に必ずしもオブジェクトのハッシュ値（代表値）を用いる必要はなく、例えば既登録のオブジェクトのオブジェクトＩＤのツリー部とは重複しない値を用いてもよい。同様に、コンテンツ部の値に必ずしもオブジェクトのハッシュ値を用いる必要はなく、任意の値を用いてもよい。
【０１１０】
また本実施形態では、オブジェクトの更新登録動作で設定されるオブジェクトＩＤのコンテンツ部の値には、当該オブジェクトのハッシュ値が用いられる。しかし、コンテンツ部の値に必ずしもオブジェクトのハッシュ値を用いる必要はなく、既登録のオブジェクトのうちツリー部が同一のオブジェクトＩＤの集合に対して、コンテンツ部が重複しない値を用いてもよい。
【０１１１】
・オブジェクトの参照動作
次に、図１のオーバーレイネットワークシステムにおいてオブジェクト“ｏｂｊ”を参照するときの動作を、図１２のオブジェクトの参照動作における情報の流れを示す図を参照して簡単に説明する。
【０１１２】
今、クライアント端末３０が、参照されるべきオブジェクトｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”を、図１２において矢印１２１で示すように、例えばユーザの操作に従って入力したものとする。するとクライアント端末３０は、オブジェクトＩＤ“ＯＩＤ”を持つオブジェクトｏｂｊ”を参照するための参照要求を、オーバーレイネットワーク１０を構成するノード群のうちの任意のノード２０-iに送信する。ここでは、参照要求が、図１２において矢印１２２で示すように、ノード２０-7（ノード“７”）に送信されたものとする。参照要求は、オブジェクトＩＤ“ＯＩＤ”を含む。ここでは、ＯＩＤ＝｛ＯＩＤt，ＯＩＤc｝＝｛２，２｝であるものとする。
【０１１３】
クライアント端末３０により送信された参照要求はノード２０-7で受信される。すると、ノード２０-7の選択・判定部２８３ａは、当該参照要求に含まれているオブジェクトＩＤ“ＯＩＤ”におけるツリー部の値ＯＩＤt（＝２）をもとに、ネットワーク構成情報４２-7からオブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒとなるノードのアドレスを選択する。ここでは、ノード２０-3（ノード“３”）のアドレスが選択される。ノード２０-7の中継部２８３ｂは、選択されたアドレスのノード２０-3宛てに、図１２において矢印１２３で示すように参照要求を中継送信する。
【０１１４】
ノード２０-3は、ノード２０-7により中継送信された参照要求を受信すると、オブジェクトＩＤ“ＯＩＤ”におけるツリー部の値ＯＩＤt（＝２）をもとに、自身が当該オブジェクトＩＤ“ＯＩＤ”を持つオブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒであることを確認する。ノード２０-3は、自身がｓｕｃｃｅｓｓｏｒであると確認できた場合、オブジェクトＩＤ“ＯＩＤ”を持つオブジェクト“ｏｂｊ”が、当該オブジェクトＩＤ“ＯＩＤ”に対応付けて当該ノード２０-3のオブジェクト記憶部２７に登録されているかを判定する。
【０１１５】
図１２の例では、オブジェクト“ｏｂｊ”は、ノード２０-3のオブジェクト記憶部２７に登録されている。この場合、ノード２０-3は、図１２において矢印１２４で示すようにオブジェクト“ｏｂｊ”を読み出す。そしてノード２０-3は、参照成功の応答を、図１２において矢印１２５で示すようにノード２０-7に返す。この参照成功の応答は、読み出したオブジェクト“ｏｂｊ”を含む。
【０１１６】
ノード２０-7はノード２０-3から返された参照成功の応答（オブジェクト“ｏｂｊ”）を受信すると、参照成功の応答（オブジェクト“ｏｂｊ”）を、図１２において矢印１２６で示すようにクライアント端末３０に返す。クライアント端末３０は、ノード２０-7から返された参照成功の応答（オブジェクト“ｏｂｊ”）を受信する。
【０１１７】
［変形例］
次に、上記実施形態の変形例について説明する。  
上記実施形態では、ハッシュ衝突により異なるオブジェクトの間でオブジェクトＩＤが衝突したことが検出された場合には、エラーとして処理される。そこで上記実施形態の変形例の特徴は、異なるオブジェクトの間でオブジェクトＩＤが衝突するのを回避する仕組みを提供することにある。
【０１１８】
＜オブジェクトＩＤの構成＞
オブジェクトＩＤは、上記実施形態と同様にツリー部及びコンテンツ部より構成される。本変形例で適用されるオブジェクトＩＤが上記実施形態と相違する点は、オブジェクトＩＤのツリー部及びコンテンツ部の各々が、いずれも、代表値部及び非代表値部から構成されることである。ツリー部及びコンテンツ部の各代表値部が取り得る値の範囲は、オーバーレイネットワーク１０を構成する各ノードのノードＩＤが取り得る値の範囲と等しいものとする。つまり、本変形例においては、オブジェクトＩＤのツリー部及びコンテンツ部の各代表値部が取り得る値の範囲は、０から７（２m−１＝２3−１＝７）である。これに対し、非代表値部が取り得る値の範囲については特に定められていない。
【０１１９】
本変形例では、オブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”は、
ＯＩＤ＝｛ＯＩＤt，ＯＩＤc｝
＝｛ＯＩＤthOIDts，ＯＩＤchOIDcs｝
ＯＩＤt…ツリー部の値
ＯＩＤth…ツリー部の代表値部の値
ＯＩＤtsツリー部の非代表値部の値
ＯＩＤc…コンテンツ部の値
ＯＩＤch…コンテンツ部の代表値部の値
ＯＩＤcs…コンテンツ部の非代表値部の値
のように表わされる。
【０１２０】
例えば、オブジェクトＩＤが｛１2，３4｝であるとは、
ツリー部の代表値部の値が１
ツリー部の非代表値部の値が２
コンテンツ部の代表値部の値が３
コンテンツ部の非代表値部の値が４
であることを示す。
【０１２１】
＜オブジェクトＩＤの設定方法＞
本変形例では、オブジェクトを新規登録する際に設定されるオブジェクトＩＤのツリー部及びコンテンツ部の各代表値部の値は、当該オブジェクトのハッシュ値から生成される。ハッシュ値の生成には、例えばＳＨＡ１やＭＤ５のようなハッシュ関数が用いられる。このハッシュ関数は、オーバーレイネットワーク１０を構成する全てのノードと、クライアント端末３０との間で共通である。
【０１２２】
＜オブジェクト登録先ノードの選択方法＞
本変形例では、オーバーレイネットワーク１０上でのオブジェクト“ｏｂｊ”の登録先のノードとして、オブジェクトＩＤ“ＯＩＤ”におけるツリー部の代表値部の値ＯＩＤthに対して最も近いノードＩＤを持つノードが選択される。このようなノードを、オブジェクト“ｏｂｊ”の「ｓｕｃｃｅｓｓｏｒ」と定義する。オーバーレイネットワーク１０を構成する全てのノードは、この規則に基づいてオブジェクトの登録先ノードを決定する。
【０１２３】
図１のオーバーレイネットワークシステムにおいては、オブジェクトＩＤ“ＯＩＤ”のコンテンツ部の値がｘ、ツリー部の非代表値部の値がｙであるものとすると、それぞれ、ＯＩＤ＝｛３y，ｘ｝，ＯＩＤ＝｛２y，ｘ｝，ＯＩＤ＝｛７y，ｘ｝であるオブジェクトＩＤのオブジェクトの登録先ノード「ｓｕｃｃｅｓｓｏｒ」は、次のようになる。
【０１２４】
オブジェクトＩＤ｛３y，ｘ｝のオブジェクトのｓｕｃｃｅｓｓｏｒ
＝ノード“３”（アドレス１０．０．０．１）
オブジェクトＩＤ｛２y，ｘ｝のオブジェクトのｓｕｃｃｅｓｓｏｒ
＝ノード“３”（アドレス１０．０．０．１）
オブジェクトＩＤ｛７y，ｘ｝のオブジェクトのｓｕｃｃｅｓｓｏｒ
＝ノード“７”（アドレス１９２．１６８．０．１）
＜オブジェクトの登録・参照動作＞
次に、本変形例におけるオブジェクトの登録と参照の動作について説明する。オブジェクトの登録動作については、上記実施形態と同様に、新規登録動作と更新登録動作とに分けて説明する。
【０１２５】
・オブジェクトの新規登録動作
まず、図１のオーバーレイネットワークシステムにおいてオブジェクト“ｏｂｊ”を新規登録するときの動作を、図１３乃至図１５を参照して説明する。図１３はオブジェクトの新規登録動作における情報の流れを示す図、図１４はオブジェクトの新規登録動作におけるクライアント端末側の処理手順を示すフローチャート、図１５はオブジェクトの新規登録動作におけるノード側の処理手順を示すフローチャートである。
【０１２６】
クライアント端末３０のオブジェクトＩＤ設定部３１１は、新規登録されるべきオブジェクト“ｏｂｊ”のハッシュ値ｈ（ｏｂｊ）を計算する（ステップ１４１）。オブジェクトＩＤ設定部３１１は、このハッシュ値ｈ（ｏｂｊ）に基づいて、オブジェクト“ｏｂｊ”の仮のオブジェクトＩＤ（以下、仮オブジェクトＩＤと称する）“ＴＯＩＤ”を次のように設定する（ステップ１４２）。
【０１２７】
まずオブジェクトＩＤ設定部３１１は、仮オブジェクトＩＤ“ＴＯＩＤ”におけるツリー部の代表値部の値ＴＯＩＤth及びコンテンツ部の代表値部の値ＴＯＩＤchとして、いずれもオブジェクト“ｏｂｊ”のハッシュ値ｈ（ｏｂｊ）を設定する。またオブジェクトＩＤ設定部３１１は、仮オブジェクトＩＤ“ＴＯＩＤ”におけるツリー部の非代表値部の値ＴＯＩＤts及びコンテンツ部の非代表値部の値ＴＯＩＤcsとして、いずれも任意の値、例えば“０”を設定する。この例では、ＴＯＩＤ＝｛ＴＯＩＤt，ＴＯＩＤc｝＝｛ＴＯＩＤthTOIDts，ＴＯＩＤchTOIDcs｝＝｛２0，２0｝であったとする。この場合、オブジェクト“ｏｂｊ”の仮オブジェクトＩＤ“ＴＯＩＤ”、つまり仮オブジェクトＩＤ｛ＴＯＩＤt，ＴＯＩＤc｝として、図１３において矢印１３１で示すように、｛２0，２0｝が設定される。
【０１２８】
クライアント端末３０のユーザプログラム実行部３１は、仮オブジェクトＩＤ“ＴＯＩＤ”が設定されたオブジェクト“ｏｂｊ”をオーバーレイネットワーク１０に新規登録するための新規登録要求を発行する（ステップ１４３）。このステップ１４３において、新規登録要求は、クライアント端末３０の登録・参照要求処理部３２によって、オーバーレイネットワーク１０を構成するノード群のうちの任意のノード２０-iに送信される。ここでは新規登録要求が、図１３において矢印１３２で示すように、ノード２０-7（ノード“７”）に送信されたものとする。新規登録要求は、オブジェクト“ｏｂｊ”及び仮オブジェクトＩＤ“ＴＯＩＤ”を含む。ここでは、ＴＯＩＤ＝｛ＴＯＩＤt，ＴＯＩＤc｝＝｛ＴＯＩＤthTOIDts，ＴＯＩＤchTOIDcs｝＝｛２0，２0｝である。
【０１２９】
クライアント端末３０からノード２０-7に送信された新規登録要求は、当該ノード２０-7の要求受付部２６で受信されて、制御部２８に渡される。すると制御部２８では、ルーティング部２８３の選択・判定部２８３ａが、要求されたオブジェクト“ｏｂｊ”の仮オブジェクトＩＤ“ＴＯＩＤ”におけるツリー部の代表値部の値ＴＯＩＤthと、構成記憶部２８１に格納されている構成情報４０-7のネットワーク構成情報４２-7とに基づき、当該ネットワーク構成情報４２-7から、オブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒとなるノードのアドレスを選択する（ステップ１５１）。オブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒとなるノードは、ネットワーク構成情報４２-7によって示される、オーバーレイネットワーク１０を構成しているノード群のうち、仮オブジェクトＩＤ“ＴＯＩＤ”におけるツリー部の代表値部の値ＴＯＩＤthに最も近いノードＩＤを持つノードである。本変形例のようにＴＯＩＤth＝２の場合、ノードＩＤが３のノードであるノード２０-3（ノード“３”）のアドレスが選択される。
【０１３０】
選択・判定部２８３ａによって選択されたアドレスのノード２０-3が本変形例のように自ノードでない場合（ステップ１５２のＮｏ）、ノード２０-3の中継部２８３ｂは選択されアドレスのノード２０-3宛てに、クライアント端末３０からの新規登録要求を図１３において矢印１３３で示すように中継送信する（ステップ１５３）。このノード２０-3宛てに中継送信された新規登録要求は、当該ノード２０-3で受信される。
【０１３１】
するとノード２０-3のルーティング部２８３は、中継送信された新規登録要求で要求されたオブジェクト“ｏｂｊ”におけるツリー部の代表値部の値ＴＯＩＤthに基づき、自ノードが、要求されたオブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒであることを確認する（ステップ１５２のＹｅｓ）。この場合、ノード２０-3の衝突検出部２８４ａは、要求されたオブジェクト“ｏｂｊ”の仮オブジェクトＩＤ“ＴＯＩＤ”とツリー部の値が同一のオブジェクトＩＤを持つオブジェクトが、“当該オブジェクトＩＤに対応付けて自ノードのオブジェクト記憶部２７に登録されているかを調べる（ステップ１５４，１５５）。本変形例では、仮オブジェクトＩＤ“ＴＯＩＤは｛２0，２0｝であることから、ツリー部の値が“２0”であるオブジェクトＩＤを持つオブジェクトが、ノード２０-3のオブジェクト記憶部２７に登録されているかが調べられる。
【０１３２】
図１３の例では、ツリー部の値が“２0”であるオブジェクトＩＤを持つオブジェクトは、ノード２０-3のオブジェクト記憶部２７に登録されていないものとする（ステップ１５５のＮｏ）。この場合、ノード２０-3の再構成部（第１の再構成部）２８４ｂは、仮オブジェクトＩＤ“ＴＯＩＤ”＝｛２0，２0｝をオブジェクトＩＤ“ＯＩＤ”＝｛２0，２0｝として設定する（ステップ１５６）。ノード２０-3のオブジェクトアクセス部２８４は要求されたオブジェクト“ｏｂｊ”を、この設定されたオブジェクトＩＤ“ＯＩＤ”に対応付けて、図１３において矢印１３４で示すようにオブジェクト記憶部２７に登録する（ステップ１５７）。
【０１３３】
すると、ノード２０-3の制御部２８はノード２０-7に対し、要求受付部２６を介して、図１３において矢印１３５で示すように新規登録成功の応答を返す（ステップ１５８）。この応答は、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”（ＯＩＤ＝｛２0，２0｝）を含む。
【０１３４】
ノード２０-7の制御部２８は、ノード２０-3から返された新規登録成功の応答を通信機構２４を介して受信する。するとノード２０-7の制御部２８は新規登録要求の送信元のクライアント端末３０に対し、要求受付部２６を介して、図１３において矢印１３６で示すように新規登録成功の応答（オブジェクトＩＤ“ＯＩＤ”＝｛２0，２0｝）を返す。
【０１３５】
クライアント端末３０は、ノード２０-7から返される新規登録成功の応答（オブジェクトＩＤ“ＯＩＤ”＝｛２0，２0｝）を受信する。
【０１３６】
・オブジェクトの新規登録動作（オブジェクトＩＤの衝突あり）
本変形例では、オブジェクトＩＤのツリー部及びコンテンツ部の各代表値部の値には、当該オブジェクトＩＤを持つオブジェクト（コンテンツ）のハッシュ値（代表値）が用いられる。また、ツリー部及びコンテンツ部の各非代表値部の値には、任意の値が用いられる。このため、異なるオブジェクトの間でオブジェクトＩＤが衝突する可能性がある。
【０１３７】
そこで本変形例では、新規登録が要求されたオブジェクトのオブジェクトＩＤと当該オブジェクトとは異なる既登録のオブジェクトのオブジェクトＩＤとの衝突（更に詳細には、ツリー部の衝突）が新規登録先ノード（ｓｕｃｃｅｓｓｏｒ）の衝突検出部２８４ａによって検出されると、要求されたオブジェクトのオブジェクトＩＤにおけるツリー部の非代表値部の値を再構成部２８４ｂが再選択することにより、オブジェクトＩＤの衝突を回避する手法を適用している。このようにオブジェクトＩＤの衝突を回避することにより、要求されたオブジェクトを確実に登録可能とする。
【０１３８】
以下、オブジェクトＩＤの衝突を招くときの新規登録動作について、前述したオブジェクトＩＤの衝突を招かないときの新規登録動作と相違する点を中心に、図１５のフローチャートに加えて、図１６のオブジェクトの新規登録動作における情報の流れを示す図を参照して説明する。なお、図１６において、図１３と等価な部分には同一参照符号を付してある。
【０１３９】
今、ノード２０-3の制御部２８が、ノード２０-7によって中継送信されたクライアント端末３０からの新規登録要求を通信機構２４を介して受信したものとする。そして、自ノード（ノード２０-3）が、要求されたオブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒであることが、ノード２０-3のルーティング部２８３によって確認されたものとする（ステップ１５２のＹｅｓ）。また、ノード２０-3のオブジェクト記憶部２７には、図１６に示すように、オブジェクトＩＤが｛２0，２0｝のオブジェクト“ｏｂｊｘ”が登録されているものとする。
【０１４０】
この場合、要求されたオブジェクト“ｏｂｊ”の仮オブジェクトＩＤ“ＴＯＩＤ”（ＴＯＩＤ＝｛２0，２0｝）とツリー部の値が同一のオブジェクトＩＤ（ＩＤ“ｏｂｊｘ”）を持つオブジェクト“ｏｂｊｘ”が、“当該オブジェクトＩＤ（ＩＤ“ｏｂｊｘ”）に対応付けて自ノードのオブジェクト記憶部２７に登録されていること、つまりオブジェクトＩＤ（ツリー部）の衝突が、図１６において矢印１６１で示すように、ノード２０-3の衝突検出部２８４ａによって確認される（ステップ１５５のＹｅｓ）。
【０１４１】
するとノード２０-3の再構成部２８４ｂは、オブジェクト記憶部２７に登録されているオブジェクトの群の中から、オブジェクトＩＤにおけるツリー部の代表値部の値が、要求されたオブジェクト“ｏｂｊ”の仮オブジェクトＩＤ“ＴＯＩＤ”のそれと同一のオブジェクトの集合を特定する（ステップ１５９）。ここでは、オブジェクトＩＤにおけるツリー部の代表値部の値が“２”のオブジェクトの集合が特定される。
【０１４２】
次に再構成部２８４ｂは、特定されたオブジェクトの集合に含まれる各オブジェクトのオブジェクトＩＤにおけるツリー部の非代表値部の値に基づき、非代表値部が取り得る値の範囲（ここでは０〜７）の中から、当該オブジェクトの集合の中でツリー部の非代表値部の値として未だ使用されていない値ＮＯＩＤtsを選択する（ステップ１５Ａ）。ここでは、“０”が使用中であることから、ＮＯＩＤts＝１が選択されたものとする。
【０１４３】
次に再構成部２８４ｂは、仮オブジェクトＩＤ“ＴＯＩＤ”と選択した値ＮＯＩＤts（＝１）とに基づいて、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”（ＯＩＤ＝｛ＯＩＤt，ＯＩＤc｝＝｛ＯＩＤthOIDts，ＯＩＤchOIDcs｝を、
ＯＩＤth＝ＴＯＩＤth＝２
ＯＩＤts＝ＮＯＩＤts＝１
ＯＩＤc＝ＴＯＩＤc＝ＴＯＩＤchTOIDcs＝２0
のように設定する（ステップ１５Ｂ）。
【０１４４】
このように、オブジェクトＩＤ“ＯＩＤ”におけるツリー部の代表値部の値ＯＩＤth及びオブジェクトＩＤ“ＯＩＤ”におけるコンテンツ部の値ＯＩＤcには、それぞれ、仮オブジェクトＩＤ“ＴＯＩＤ”におけるツリー部の代表値部の値ＴＯＩＤth（＝２）及び仮オブジェクトＩＤ“ＴＯＩＤ”におけるコンテンツ部の値ＴＯＩＤc（＝２0）が継承される。一方、オブジェクトＩＤ“ＯＩＤ”におけるツリー部の非代表値部の値ＯＩＤtsには、ステップ１５Ｂで選択された値ＮＯＩＤts（＝１）が用いられる。これにより、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”として、図１６において矢印１６２で示すように｛２1，２0｝が設定される。
【０１４５】
この場合、オブジェクトアクセス部２８４は、要求されたオブジェクト“ｏｂｊ”をステップ１５Ｂで設定されたオブジェクトＩＤ“ＯＩＤ”に対応付けて、図１６において矢印１６３で示すようにオブジェクト記憶部２７に登録する（ステップ１５７）。以降の動作は、図１６において矢印１６４及び１６５で示すように、新規登録成功の応答がオブジェクトＩＤ“ＯＩＤ”として｛２1，２0｝を含む以外、オブジェクトＩＤの衝突が検出されなかった場合と同様である。
【０１４６】
このように本変形例においては、オブジェクトの新規登録先ノードにおいてオブジェクトＩＤ（ツリー部）の衝突を検出したときには、新規登録が要求されたオブジェクトのオブジェクトＩＤが再構成される。更に詳細には、オブジェクトＩＤのツリー部の非代表値部の値が再構成される。これにより、オブジェクトＩＤの衝突を回避しながら、要求されたオブジェクトを確実に登録することができる。
【０１４７】
本変形例では、オブジェクト“ｏｂｊ”の新規登録を要求するクライアント端末３０のオブジェクトＩＤ設定部３１１が、当該オブジェクト“ｏｂｊ”のハッシュ値を計算して、当該ハッシュ値に基づいて当該オブジェクト“ｏｂｊ”の仮オブジェクトＩＤを設定している。しかし、これらの処理が必ずしもクライアント端末３０のオブジェクトＩＤ設定部３１１で行われる必要はなく、例えば中継ノードまたは新規登録先ノード（ｓｕｃｃｅｓｓｏｒ）で行われてもよい。なお、新規登録先ノードでオブジェクト“ｏｂｊ”のオブジェクトＩＤを設定する場合、中継ノードは、中継ノードの選択・判定部２８３ａによる新規登録先ノードの選択を可能とするために、オブジェクト“ｏｂｊ”のハッシュ値を計算して、当該ハッシュ値をオブジェクト“ｏｂｊ”の仮オブジェクトＩＤにおけるツリー部として設定する必要がある。
【０１４８】
・オブジェクトの更新登録動作
次に、図１のオーバーレイネットワークシステムにおいてオブジェクト“ｏｂｊ”を更新登録するときの動作を、新規登録動作と相違する点を中心に、図１５のフローチャートに加えて、図１７乃至図１９を参照して説明する。図１７はオブジェクトの更新登録動作における情報の流れを示す図、図１８はオブジェクトの更新登録動作におけるクライアント端末側の処理手順を示すフローチャート、図１９はオブジェクトの更新登録動作におけるノード側の処理手順を示すフローチャートである。
【０１４９】
クライアント端末３０のユーザプログラム実行部３１が、図１７において矢印１７１で示されるように、オブジェクト“ｏｂｊp”をオブジェクト“ｏｂｊ”に更新したものとする。するとユーザプログラム実行部３１のオブジェクトＩＤ設定部３１２は、オブジェクト“ｏｂｊ”の更新登録のために、当該更新登録されるべきオブジェクト“ｏｂｊ”（つまり更新後のオブジェクト“ｏｂｊ”）のハッシュ値ｈ（ｏｂｊ）を計算する（ステップ１８１）。オブジェクトＩＤ設定部３１２は、このハッシュ値ｈ（ｏｂｊ）に基づいて、オブジェクト“ｏｂｊ”の仮オブジェクトＩＤ“ＴＯＩＤ”を次のように設定する（ステップ１８２）。
【０１５０】
まずオブジェクトＩＤ設定部３１２は、仮オブジェクトＩＤ“ＴＯＩＤ”におけるツリー部の代表値部の値ＴＯＩＤth及び非代表値部の値ＴＯＩＤtsとして、更新前のオブジェクト“ｏｂｊp”が持つオブジェクトＩＤ“ＯＩＤp”におけるツリー部の代表値部の値ＯＩＤpth及び非代表値部の値ＯＩＤptsを、それぞれ設定する。ここで、更新前のオブジェクト“ｏｂｊp”が持つオブジェクトＩＤ“ＯＩＤp”は図１７に示されるように｛２0，２0｝であるものとすると、更新後のオブジェクト“ｏｂｊ”に設定される仮オブジェクトＩＤ“ＴＯＩＤ”のツリー部には、図１７において矢印１７２で示されるように、オブジェクトＩＤ“ＯＩＤp”のツリー部の値２0が継承される。
【０１５１】
またオブジェクトＩＤ設定部３１２は、仮オブジェクトＩＤ“ＴＯＩＤ”のコンテンツ部の代表値部ＴＯＩＤchとして、計算されたハッシュ値ｈ（ｏｂｊ）を設定する。またオブジェクトＩＤ設定部３１２は、仮オブジェクトＩＤ“ＴＯＩＤ”におけるコンテンツ部の非代表値部ＴＯＩＤcsとして、任意の値、例えば“０”を設定する。ここで、更新後のオブジェクト“ｏｂｊ”のハッシュ値ｈ（ｏｂｊ）は“６”であるものとすると、更新後のオブジェクト“ｏｂｊ”に設定される仮オブジェクトＩＤ“ＴＯＩＤ”のコンテンツ部の値には、図１７において矢印１７２で示されるように“６0”が用いられる。つまり、更新後のオブジェクト“ｏｂｊ”の仮オブジェクトＩＤ“ＴＯＩＤ”として、｛２0，６0｝が設定される。
【０１５２】
このように本変形例では、更新前のオブジェクトのオブジェクトＩＤのツリー部の値が、更新後のオブジェクトの仮オブジェクトＩＤのツリー部の値として継承される。これに対し、更新後のオブジェクトのオブジェクトＩＤのコンテンツ部の代表値部及び非代表値部の値には、それぞれ、当該更新後のオブジェクトのハッシュ値及び任意の値が用いられる。これにより図１７の例では、更新前のオブジェクト“ｏｂｊp”のオブジェクトＩＤ“ＯＩＤp”が｛２0，２0｝であったのに対して、更新後のオブジェクト“ｏｂｊ”の仮オブジェクトＩＤ“ＴＯＩＤ”が｛２0，６0｝に設定される。
【０１５３】
するとクライアント端末３０は、オブジェクト“ｏｂｊ”及び仮オブジェクトＩＤ“ＴＯＩＤ”（ＴＯＩＤ＝｛ＴＯＩＤt，ＴＯＩＤc｝＝｛ＴＯＩＤthTOIDts，ＴＯＩＤchTOIDcs｝＝｛２0，６0｝）を含む更新登録要求を、オーバーレイネットワーク１０を構成するノード群のうちの任意のノード２０-i、例えばノード２０-7に、図１７において矢印１７３で示されるように送信する（ステップ１８３）。
【０１５４】
クライアント端末３０からノード２０-7に送信された更新登録要求は、当該ノード２０-7の要求受付部２６で受信されて、制御部２８に渡される。すると制御部２８では、ルーティング部２８３の選択・判定部２８３ａが、要求されたオブジェクト“ｏｂｊ”の仮オブジェクトＩＤ“ＴＯＩＤ”におけるツリー部の代表値部の値ＴＯＩＤthに基づき、構成記憶部２８１に格納されている構成情報４０-7のネットワーク構成情報４２-7から、オブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒとなるノードのアドレスを選択する（ステップ１９１）。本変形例のようにＴＯＩＤth＝２の場合、ノードＩＤが３のノードであるノード２０-3（ノード“３”）が選択される。
【０１５５】
ルーティング部２８３の中継部２８３ｂは、選択・判定部２８３ａによって選択されたノード２０-3が本変形例のように自ノードでない場合（ステップ１９２のＮｏ）、クライアント端末３０からの更新登録要求を通信機構２４を介して、図１７において矢印１７４で示すように当該ノード２０-3に中継送信する（ステップ１９３）。
【０１５６】
ノード２０-7によってノード２０-3に中継送信された更新登録要求は、当該ノード２０-3で受信される。するノード２０-3の選択・判定部２８３ａは、要求されたオブジェクト“ｏｂｊ”の仮オブジェクトＩＤ“ＴＯＩＤ”におけるツリー部の代表値部の値ＴＯＩＤthに基づき、構成情報４０-7のネットワーク構成情報４２-7から、オブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒとなるノードのアドレスを選択する（ステップ１９１）。ここでは、ノード２０-3自身のアドレスが選択される。
【０１５７】
選択・判定部２８３ａは、選択されたノード２０-3が自ノードであると判定することにより（ステップ１９２のＹｅｓ）、自ノードが、要求されたオブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒであることを確認する。この場合、ノード２０-3の衝突検出部２８４ａは、要求されたオブジェクト“ｏｂｊ”の仮オブジェクトＩＤ“ＴＯＩＤ”と同一のオブジェクトＩＤを持つオブジェクトが、当該オブジェクトＩＤに対応付けて自ノードのオブジェクト記憶部２７に登録されているかを調べる（ステップ１９４，１９５）。本変形例では、仮オブジェクトＩＤ“ＴＯＩＤ”は｛２0，６0｝である。このため、オブジェクトＩＤが｛２0，６0｝のオブジェクトが、ノード２０-3のオブジェクト記憶部２７に既に登録されているか、つまりオブジェクトＩＤとしての｛２0，６0｝が重複しているかが調べられる。
【０１５８】
図１７の例では、オブジェクトＩＤが｛２0，６0｝のオブジェクトは、ノード２０-3のオブジェクト記憶部２７に登録されていないものとする（ステップ１９５のＮｏ）。この場合、ノード２０-3の再構成部（第２の再構成部）２８４ｃは、仮オブジェクトＩＤ“ＴＯＩＤ”＝｛２0，６0｝をオブジェクトＩＤ“ＯＩＤ”＝｛２0，６0｝として設定する（ステップ１９６）。するとノード２０-3のオブジェクトアクセス部２８４は、要求されたオブジェクト“ｏｂｊ”をオブジェクトＩＤ“ＯＩＤ”に対応付けて、図１７において矢印１７５で示すようにオブジェクト記憶部２７に登録する（ステップ１９７）。
【０１５９】
オブジェクト“ｏｂｊ”が登録されると、ノード２０-3の制御部２８はノード２０-7に対し、要求受付部２６を介して、図１７において矢印１７６で示すように更新登録成功の応答を返す（ステップ１９８）。この応答は、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”（ＯＩＤ＝｛２0，６0｝）を含む。
【０１６０】
ノード２０-7の制御部２８は、ノード２０-3から返された更新登録成功の応答を通信機構２４を介して受信する。するとノード２０-7の制御部２８は更新登録要求の送信元のクライアント端末３０に対し、要求受付部２６を介して、図１７において矢印１７７で示すように更新登録成功の応答（オブジェクトＩＤ“ＯＩＤ”＝｛２0，６0｝）を返す。
【０１６１】
クライアント端末３０は、ノード２０-7から返される更新登録成功の応答（オブジェクトＩＤ“ＯＩＤ”＝｛２0，６0｝）を受信する。
【０１６２】
・オブジェクトの更新登録動作（オブジェクトＩＤの衝突あり）
本変形例では、更新後のオブジェクトのオブジェクトＩＤにおけるコンテンツ部の代表値部の値には、当該更新後のオブジェクトの（コンテンツ）のハッシュ値（代表値）が用いられ、当該コンテンツ部の非代表値部の値には、任意の値が用いられる。このため更新前後で、異なるオブジェクトの間でオブジェクトＩＤが衝突する可能性がある。
【０１６３】
そこで本変形例では、更新登録が要求されたオブジェクトのオブジェクトＩＤと当該オブジェクトとは異なる既登録のオブジェクトのオブジェクトＩＤとの衝突が更新登録先ノード（ｓｕｃｃｅｓｓｏｒ）の衝突検出部２８４ａによって検出されると、要求されたオブジェクトのオブジェクトＩＤにおけるコンテンツ部の非代表値部の値を再構成部２８４ｃが再選択することにより、オブジェクトＩＤの衝突を回避する手法を適用している。
【０１６４】
以下、オブジェクトＩＤの衝突を招くときの更新登録動作について、前述したオブジェクトＩＤの衝突を招かないときの更新登録動作と相違する点を中心に、図１９のフローチャートに加えて、図２０のオブジェクトの更新登録動作における情報の流れを示す図を参照して説明する。なお、図２０において、図１７と等価な部分には同一参照符号を付してある。
【０１６５】
今、ノード２０-3の制御部２８が、ノード２０-7によって中継送信されたクライアント端末３０からの更新登録要求を通信機構２４を介して受信したものとする。そして、自ノード（ノード２０-3）が、要求されたオブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒであることが、ノード２０-3のルーティング部２８３によって確認されたものとする（ステップ１９２のＹｅｓ）。また、ノード２０-3のオブジェクト記憶部２７には、図２０に示すように、オブジェクトＩＤが｛２0，６0｝のオブジェクト“ｏｂｊｘ”が登録されているものとする。
【０１６６】
このような例では、要求されたオブジェクト“ｏｂｊ”の仮オブジェクトＩＤ“ＴＯＩＤ”（ＴＯＩＤ＝｛２0，６0｝）と同一のオブジェクトＩＤ（ＩＤ“ｏｂｊｘ”）を持つオブジェクト“ｏｂｊｘ”が、“当該オブジェクトＩＤ（ＩＤ“ｏｂｊｘ”）に対応付けて自ノードのオブジェクト記憶部２７に登録されていること、つまりオブジェクトＩＤの衝突が、図２０において矢印２０１で示すように、ノード２０-3の衝突検出部２８４ａによって確認される（ステップ１９５のＹｅｓ）。
【０１６７】
するとノード２０-3の再構成部２８４ｃは、オブジェクト記憶部２７に登録されているオブジェクトの群の中から、オブジェクトＩＤにおけるツリー部の値が、要求されたオブジェクト“ｏｂｊ”の仮オブジェクトＩＤ“ＴＯＩＤ”におけるツリー部の値ＴＯＩＤt（＝６0）と同一で、かつ、オブジェクトＩＤにおけるコンテンツ部の代表値部の値が、当該仮オブジェクトＩＤ“ＴＯＩＤ”におけるコンテンツ部の代表値部の値ＴＯＩＤch（＝０）と同一のオブジェクトの集合を特定する（ステップ１９９）。ここでは、オブジェクトＩＤにおける、ツリー部の値が“２0”で、かつ、コンテンツ部の代表値部の値が“６”のオブジェクトの集合が特定される。
【０１６８】
次に再構成部２８４ｃは、特定されたオブジェクトの集合に含まれる各オブジェクトのオブジェクトＩＤにおけるコンテンツ部の非代表値部の値に基づき、非代表値部が取り得る値の範囲（ここでは０〜７）の中から、当該オブジェクトの集合の中でコンテンツ部の非代表値部の値として未だ使用されていない値ＮＯＩＤcsを選択する（ステップ１９Ａ）。ここでは、“０”が使用中であることから、ＮＯＩＤcs＝１が選択されたものとする。
【０１６９】
すると再構成部２８４ｃは、仮オブジェクトＩＤ“ＴＯＩＤ”と選択した値ＮＯＩＤcs（＝１）とに基づいて、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”（ＯＩＤ＝｛ＯＩＤt，ＯＩＤc｝＝｛ＯＩＤthOIDts，ＯＩＤchOIDcs｝を、
ＯＩＤt＝ＴＯＩＤt＝２0
ＯＩＤch＝ＴＯＩＤch＝６
ＯＩＤcs＝ＮＯＩＤcs＝１
のように設定する（ステップ１９Ｂ）。
【０１７０】
このように、オブジェクトＩＤ“ＯＩＤ”におけるツリー部の値ＯＩＤt及びオブジェクトＩＤ“ＯＩＤ”におけるコンテンツ部の代表値部の値ＯＩＤchには、それぞれ、仮オブジェクトＩＤ“ＴＯＩＤ”におけるツリー部の値ＴＯＩＤt（＝２0）及び仮オブジェクトＩＤ“ＴＯＩＤ”におけるコンテンツ部の代表値部の値ＴＯＩＤch（＝６）が継承される。一方、オブジェクトＩＤ“ＯＩＤ”におけるコンテンツ部の非代表値部の値ＯＩＤcsには、ステップ１９Ｂで選択された値ＮＯＩＤcs（＝１）が用いられる。これにより、要求されたオブジェクト“ｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”として、図２０において矢印２０２で示すように｛２0，６1｝が設定される。
【０１７１】
この場合、ノード２０-3のオブジェクトアクセス部２８４は、要求されたオブジェクト“ｏｂｊ”をステップ１９Ｂで設定されたオブジェクトＩＤ“ＯＩＤ”に対応付けて、図２０において矢印２０３で示すようにオブジェクト記憶部２７に登録する（ステップ１９７）。以降の動作は、図２０において矢印２０４及び２０５で示すように、更新登録成功の応答がオブジェクトＩＤ“ＯＩＤ”として｛２0，６1｝を含む以外、オブジェクトＩＤの衝突が検出されなかった場合と同様である。
【０１７２】
このように本変形例においては、オブジェクトの更新登録先ノードにおいてオブジェクトＩＤの衝突を検出したときには、更新登録が要求されたオブジェクトのオブジェクトＩＤが再構成される。更に詳細には、オブジェクトＩＤのコンテンツ部の非代表値部の値が再構成される。これにより、オブジェクトＩＤの衝突を回避しながら、要求されたオブジェクトを確実に登録することができる。
【０１７３】
本変形例では、オブジェクト“ｏｂｊ”の更新登録を要求するクライアント端末３０のオブジェクトＩＤ設定部３１２が、当該オブジェクト“ｏｂｊ”のハッシュ値を計算して、当該ハッシュ値と更新前のオブジェクト“ｏｂｊp”のオブジェクトＩＤ“ＯＩＤp”とに基づいて当該オブジェクト“ｏｂｊ”の仮オブジェクトＩＤ“ＴＯＩＤ”を設定している。しかし、これらの処理が必ずしもクライアント端末３０のオブジェクトＩＤ設定部３１２で行われる必要はなく、例えば中継ノードまたは更新登録先ノード（ｓｕｃｃｅｓｓｏｒ）で行われてもよい。この場合、クライアント端末３０から中継ノードに送信される更新登録要求に、更新前のオブジェクト“ｏｂｊp”のオブジェクトＩＤ“ＯＩＤp”における少なくともツリー部の値ＯＩＤpt（＝｛ＯＩＤpth，ＯＩＤpts｝）を含める必要がある。また、更新登録先ノードでオブジェクト“ｏｂｊ”の仮オブジェクトＩＤ“ＴＯＩＤ”を設定する場合、中継ノードはクライアント端末３０から受信した更新登録要求に含まれているツリー部の値ＯＩＤpt（＝｛ＯＩＤpth，ＯＩＤpts｝）を、オブジェクト“ｏｂｊ”の仮オブジェクトＩＤ“ＴＯＩＤ”におけるツリー部の値ＴＯＩＤt（＝｛ＴＯＩＤth，ＴＯＩＤts｝）として用いれば良い。
【０１７４】
・オブジェクトの参照動作
次に、図１のオーバーレイネットワークシステムにおいてオブジェクト“ｏｂｊ”を参照するときの動作を、図２１のオブジェクトの参照動作における情報の流れを示す図を参照して簡単に説明する。
【０１７５】
今、クライアント端末３０が、参照されるべきオブジェクトｏｂｊ”のオブジェクトＩＤ“ＯＩＤ”を、図２１において矢印２１１で示すように、例えばユーザの操作に従って入力したものとする。するとクライアント端末３０は、オブジェクトＩＤ“ＯＩＤ”を持つオブジェクトｏｂｊ”を参照するための参照要求を、オーバーレイネットワーク１０を構成するノード群のうちの任意のノード２０-iに送信する。ここでは、参照要求が、図２１において矢印２１２で示すように、ノード２０-7（ノード“７”）に送信されたものとする。参照要求は、オブジェクトＩＤ“ＯＩＤ”を含む。ここでは、ＯＩＤ＝｛ＯＩＤt，ＯＩＤc｝＝｛ＯＩＤthOIDts，ＯＩＤchOIDcs｝＝｛２0，２0｝であるものとする。
【０１７６】
ノード２０-7は、クライアント端末３０により送信された参照要求を受信すると、当該参照要求に含まれているオブジェクトＩＤ“ＯＩＤ”におけるツリー部の代表値部の値ＯＩＤthOIDts（＝２）をもとに、ネットワーク構成情報４２-7からオブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒとなるノードのアドレスを選択する。ここでは、ノード２０-3（ノード“３”）のアドレスが選択される。ノード２０-7は、選択したアドレスのノード２０-3宛てに、図２１において矢印２１３で示すように参照要求を中継送信する。
【０１７７】
ノード２０-3は、ノード２０-7により中継送信された参照要求を受信すると、オブジェクトＩＤ“ＯＩＤ”におけるツリー部の代表値部の値ＯＩＤthOIDts（＝２）をもとに、自身が当該オブジェクトＩＤ“ＯＩＤ”を持つオブジェクト“ｏｂｊ”のｓｕｃｃｅｓｓｏｒであることを確認する。ノード２０-3は、自身がｓｕｃｃｅｓｓｏｒであると確認できた場合、オブジェクトＩＤ“ＯＩＤ”を持つオブジェクト“ｏｂｊ”が、当該オブジェクトＩＤ“ＯＩＤ”に対応付けて当該ノード２０-3のオブジェクト記憶部２７に登録されているかを判定する。
【０１７８】
図２１の例では、オブジェクト“ｏｂｊ”は、ノード２０-3のオブジェクト記憶部２７に登録されている。この場合、ノード２０-3は、図２１において矢印２１４で示すようにオブジェクト“ｏｂｊ”を読み出す。そしてノード２０-3は、参照成功の応答を、図２１において矢印２１５で示すようにノード２０-7に返す。この参照成功の応答は、読み出したオブジェクト“ｏｂｊ”を含む。
【０１７９】
ノード２０-7はノード２０-3から返された参照成功の応答（オブジェクト“ｏｂｊ”）を受信すると、参照成功の応答（オブジェクト“ｏｂｊ”）を、図２１において矢印２１６で示すようにクライアント端末３０に返す。クライアント端末３０は、ノード２０-7から返された参照成功の応答（オブジェクト“ｏｂｊ”）を受信する。
【０１８０】
本変形例によれば、オーバーレイネットワークシステムにおけるオブジェクトの登録を、新規登録と更新登録とに分け、それぞれで特徴あるオブジェクトＩＤの設定手法を適用する一方、オブジェクトＩＤの衝突を回避する仕組みを適用することにより、オブジェクトＩＤの衝突を回避しながら、更新前後のオブジェクトを同じノードに登録することができる。このため従来技術と異なって、更新前後のオブジェクトを複数のノードで連携して管理する必要がなく、同じノード内に閉じて更新前後のオブジェクトの重複排除を行うことができる。これによって従来技術と比較して、オブジェクトＩＤの衝突を回避しながら、信頼性・可用性をより高めてオブジェクト間の重複排除を実現できる。
【０１８１】
本変形例では、新規登録されるオブジェクトのオブジェクトＩＤにおけるツリー部及びコンテンツ部の代表値部には、当該オブジェクトのハッシュ値（代表値）が用いられるものの、当該ツリー部及びコンテンツ部の非代表値部には任意の値が用いられる。また、オブジェクトＩＤの衝突が発生した場合には、ツリー部の非代表値部のみが再設定される。このため、新規登録されるオブジェクトのオブジェクトＩＤにおけるツリー部及びコンテンツ部の値は異なる可能性がある。このような場合、新規登録されたオブジェクトと更新登録されたオブジェクトとを、そのオブジェクトＩＤから判別できない。
【０１８２】
そこで、新規登録される（新規作成された）オブジェクトのオブジェクトＩＤにおけるツリー部及びコンテンツ部のそれぞれ非代表値部に同一の任意の値を設定し、オブジェクトのオブジェクトＩＤにおけるツリー部の非代表値部の値を再構成した場合には、当該オブジェクトＩＤにおけるコンテンツ部の非代表値部の値も、当該再構成後の非代表値部の値に再構成するようにしてもよい。このようにすると、新規登録されるオブジェクトのオブジェクトＩＤは、ツリー部とコンテンツ部の値が同じになる。このため、新規登録されたオブジェクトと更新登録されたオブジェクトとを、そのオブジェクトＩＤのツリー部とコンテンツ部の値が同じであるかによって判別することができる。
【０１８３】
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
【符号の説明】
【０１８４】
１０…オーバーレイネットワーク、２０-0〜２０-7，２０-i…ノード、３０…クライアント端末、２１…処理ユニット、２２…主記憶装置、２３…補助記憶装置、２４…通信機構、２５…入出力装置、２６…要求受付部、２７…オブジェクト記憶部、２８…制御部、３０…クライアント端末、３１…ユーザプログラム実行部、３２…登録・参照要求処理部、４０-3，４０-7，４０-i…構成情報、４１…ノード情報、４２…ネットワーク構成情報、２８１…構成記憶部、２８２…構成管理部、２８３…ルーティング部、２８３ａ…選択・判定部、２８３ｂ…中継部、２８４…オブジェクトアクセス部、２８４ａ…衝突検出部、２８４ｂ…再構成部（第１の再構成部）、２８４ｃ…再構成部（第２の再構成部）、３１１…オブジェクトＩＤ設定部（第１のオブジェクトＩＤ設定部）、３１２…オブジェクトＩＤ設定部（第２のオブジェクトＩＤ設定部）。
【図１】
2010272011.tif 000003
【図２】
2010272011.tif 000004
【図３】
2010272011.tif 000005
【図４】
2010272011.tif 000006
【図５】
2010272011.tif 000007
【図６】
2010272011.tif 000008
【図７】
2010272011.tif 000009
【図８】
2010272011.tif 000010
【図９】
2010272011.tif 000011
【図１０】
2010272011.tif 000012
【図１１】
2010272011.tif 000013
【図１２】
2010272011.tif 000014
【図１３】
2010272011.tif 000015
【図１４】
2010272011.tif 000016
【図１５】
2010272011.tif 000017
【図１６】
2010272011.tif 000018
【図１７】
2010272011.tif 000019
【図１８】
2010272011.tif 000020
【図１９】
2010272011.tif 000021
【図２０】
2010272011.tif 000022
【図２１】
2010272011.tif 000023
【図２２】
2010272011.tif 000024