(57)【要約】  より高効率かつ高信頼度のデータの記憶及びアクセスを容易にする、コンピュータ・ネットワーク・インフラストラクチャ内のデータ・オブジェクトを管理するためのコンピュータによって実現される方法及びシステムを提供する。例示的な方法は、記憶リソース毎に物理識別子を確立する工程を含み得る。記憶リソース毎の複数の一意の仮想識別子が物理識別子に基づいて生成される。複数の一意の仮想識別子が、全てのノードにアクセス可能なコンシステント・リング名前空間に記憶される。記憶リソースに記憶される対象のデータ・オブジェクトの位置に関連付けられたオブジェクト識別子が生成される。オブジェクト識別子がコンシステント・リング名前空間にマッピングされる。方法は更に、データ・オブジェクトを位置特定し、データ・オブジェクトにアクセスするためにコンピュータ・ネットワークにおける何れのノードからコンシステント・リング名前空間を経由することも可能にする工程も含み得る。
2015512551.tif 000002
【特許請求の範囲】
【請求項１】
１つ又は複数の記憶リソースを各ノードが備える複数のノードを備えるコンピュータ・ネットワーク・インフラストラクチャ内のデータ・オブジェクトを管理する方法であって、
記憶リソース毎に物理識別子を確立する工程と、
記憶リソース毎に複数の一意の仮想識別子を前記物理識別子に基づいて生成する工程であって、前記複数の一意の仮想識別子は全てのノードにアクセス可能なコンシステント・リング名前空間に記憶される対象である工程と、
記憶リソースに記憶される対象のデータ・オブジェクトの位置に関連付けられたオブジェクト識別子を生成する工程と、
前記オブジェクト識別子を前記コンシステント・リング名前空間にマッピングする工程と、
前記データ・オブジェクトを位置特定し、前記データ・オブジェクトにアクセスするために前記コンピュータ・ネットワーク・インフラストラクチャ内の何れかのノードから前記コンシステント・リング名前空間を経由することを可能にする工程と
を含む方法。
【請求項２】
請求項１記載の方法であって、前記物理識別子が、汎用一意記憶リソース識別子から生成されたハッシュ値である方法。
【請求項３】
請求項１記載の方法であって、前記物理識別子が、前記記憶リソース製造モデル及びシリアル番号の組み合わせから生成されたハッシュ値である方法。
【請求項４】
請求項１記載の方法であって、前記複数の仮想識別子は、手作業で、又はプログラムで、特定の分布を実現するよう生成される方法。
【請求項５】
請求項４記載の方法であって、前記複数の一意の仮想識別子を生成する工程は、前記記憶リソースに関連付けられた前記物理識別子にハッシュ・チェイニングを適用して、個々の記憶リソースに関連付けられた任意の数の仮想識別子を生成する工程を含む方法。
【請求項６】
請求項４記載の方法であって、前記複数の一意の仮想識別子を生成する工程は、前記物理識別子にオフセットを加えて、前記コンシステント・リング名前空間周りの仮想識別子間の相対距離を生成する方法。
【請求項７】
請求項４記載の方法であって、前記複数の一意の仮想識別子を生成する工程は、前記コンシステント・リング名前空間の特定の比例した所有を実現するために前記コンシステント・リング名前空間上のその他の仮想識別子の間での相対分離を含む方法。
【請求項８】
請求項４記載の方法であって、前記複数の一意の仮想識別子を生成する工程は、前記記憶リソースに関連付けられたネットワーク・アドレスにハッシュ・チェイニングを適用する工程に基づく方法。
【請求項９】
請求項４記載の方法であって、前記複数の一意の仮想識別子を生成する工程は、前記記憶リソースのバス位置及びネットワーク・アドレスの組み合わせにハッシュ・チェイニングを適用する工程に基づく方法。
【請求項１０】
請求項４記載の方法であって、前記複数の一意の仮想識別子を生成する工程は、前記物理識別子のような周知の開始値でシードされた疑似ランダム分布に基づく方法。
【請求項１１】
請求項１記載の方法であって、前記複数の一意の仮想識別子は、任意の数の一意の仮想識別子が前記コンシステント・リング名前空間にわたってマッピングされるように生成される方法。
【請求項１２】
請求項１記載の方法であって、生成された一意の仮想識別子の数は、前記コンピュータ・ネットワーク・インフラストラクチャ内の記憶リソースの数と同じか、又は該数よりも大きい方法。
【請求項１３】
請求項１記載の方法であって、単一の記憶リソースに関係した前記コンシステント・リング名前空間上のマッピングされた一意の仮想識別子の数は、前記コンピュータ・ネットワーク・インフラストラクチャにおける記憶リソ―スの相対容量に関連付けられる方法。
【請求項１４】
請求項１記載の方法であって、前記コンシステント・リング名前空間上のマッピングされた一意の仮想識別子の数は、前記コンピュータ・ネットワーク・インフラストラクチャにおける記憶リソ―スの性能に関係する方法。
【請求項１５】
請求項１記載の方法であって、前記コンシステント・リング名前空間上のマッピングされた一意の仮想識別子の数は、データ・オブジェクトを記憶するための前記記憶リソースの相対使用可能容量に基づいて経時的に変更される方法。
【請求項１６】
請求項１記載の方法であって、データ・オブジェクト識別子は、前記データから生成されたハッシュ値である方法。
【請求項１７】
請求項１記載の方法であって、データ・オブジェクト・レプリカの前記記憶リソースは、前記コンシステント・リング名前空間における前記マッピングされた仮想識別子の位置に基づいて書き込まれる方法。
【請求項１８】
請求項１７記載の方法であって、複数のデータ・オブジェクト・レプリカを生成し、リングウォークを行って別々の仮想識別子を見つけることにより、別々の記憶リソースに、前記生成された複数のデータ・オブジェクト・レプリカを記憶する工程を更に含む方法。
【請求項１９】
請求項１８記載の方法であって、前記記憶リソースは、前記データ・オブジェクト・レプリカについて前記コンピュータ・ネットワーク・インフラストラクチャにおいて別々のノードを使用する旨の選好に基づいて選択される方法。
【請求項２０】
請求項１８記載の方法であって、前記記憶リソースは、前記データ・オブジェクト・レプリカについて同じノードにおいて別々の記憶リソースを使用する旨の選好に基づいて選択される方法。
【請求項２１】
請求項１８記載の方法であって、前記記憶リソースは、データ・オブジェクト・レプリカを首尾良く記憶することが可能でない場合に前記リングウォークの順序において飛ばされる方法。
【請求項２２】
請求項１７記載の方法であって、複数のデータ・オブジェクト・レプリカを生成し、別々の記憶リソースに前記生成された複数のデータ・オブジェクト・レプリカを記憶する工程を更に含む方法。
【請求項２３】
請求項２２記載の方法であって、データ・オブジェクト・レプリカの数は、前記コンピュータ・ネットワーク・インフラストラクチャのポリシー要件又は記憶リソースの数に基づいた複製因子に対応する方法。
【請求項２４】
請求項２２記載の方法であって、前記データ・オブジェクト・レプリカの数は、前記コンピュータ・ネットワークのポリシー又は構成に基づいて動作中に動的に適合させることが可能な複製因子に対応する方法。
【請求項２５】
請求項１記載の方法であって、前記コンシステント・リング名前空間の経由を可能にする工程は、前記データ・オブジェクトを取り出すための記憶リソースを決定するために記憶リソース識別子を、コンシステント・リング名前空間を通じてたどる工程を含む方法。
【請求項２６】
請求項１記載の方法であって、記憶リソースが前記コンピュータ・ネットワーク・インフラストラクチャに追加されると、前記コンシステント・リング名前空間内の一意の仮想識別子を再マッピングする工程を更に含む方法。
【請求項２７】
請求項１記載の方法であって、何れかの記憶リソースの利用可能な容量が変更されると、前記コンシステント・リング名前空間内の一意の仮想識別子を再マッピングする工程を更に含む方法。
【請求項２８】
請求項１記載の方法であって、記憶リソースが前記コンピュータ・ネットワーク・インフラストラクチャから除去される場合、前記コンシステント・リング名前空間内の一意の仮想識別子の除去を更に含む方法。
【請求項２９】
請求項２８記載の方法であって、少なくとも１つのノード又は少なくとも１つの記憶リソースの追加又は除去に鑑みて、前記コンシステント・リング名前空間が変更された後に、別々の記憶リソースにデータ・オブジェクトを再配分する工程を更に含む方法。
【請求項３０】
請求項２９記載の方法であって、現在の記憶リソースから新たな記憶リソースへのデータ・オブジェクトの再配分は、再マッピングされた前記コンシステント・リング名前空間に基づく方法。
【請求項３１】
請求項２９記載の方法であって、データ・オブジェクトが、新たな利用可能な記憶リソースに複製され、別のデータ・オブジェクト・レプリカを記憶リソースから除去することが可能であり、前記データ・オブジェクトの複製因子がなお維持される方法。
【請求項３２】
請求項２９記載の方法であって、記憶リソースが前記コンピュータ・ネットワーク・インフラストラクチャから除去されると、前記データ・オブジェクトが、リングウォークの順序で、前記コンピュータ・ネットワーク・インフラストラクチャにおいてなお利用可能な後続の記憶リソースに複製される方法。
【請求項３３】
請求項２９記載の方法であって、性能及び再構成の向上のために前記コンピュータ・ネットワーク・インフラストラクチャにおける記憶リソースの予備容量を使用するために前記複製因子を超え得る方法。
【請求項３４】
１つ又は複数の記憶リソースを各ノードが備える複数のノードを備えるコンピュータ・インフラストラクチャ内のデータ・オブジェクトを管理するシステムであって、
記憶リソース毎に物理識別子を確立するよう構成された物理識別子モジュールと、
記憶リソース毎に複数の一意の仮想識別子を前記物理識別子に基づいて生成する工程を行うよう構成された仮想識別子モジュールであって、前記複数の一意の仮想識別子は全てのノードにアクセス可能なコンシステント・リング名前空間に記憶される対象である仮想識別子モジュールと、
記憶リソースに記憶される対象のデータ・オブジェクトの位置に関連付けられたオブジェクト識別子を生成するよう構成されたオブジェクト識別子モジュールと、
前記オブジェクト識別子を前記コンシステント・リング名前空間にマッピングするよう構成されたマッピング・モジュールと、
前記データ・オブジェクトを位置特定し、前記データ・オブジェクトにアクセスするために、前記コンピュータ・ネットワーク・インフラストラクチャにおける何れのノードからも前記コンシステント・リング名前空間を経由する工程を可能にするよう構成された経由モジュールと
を備えるシステム。
【請求項３５】
請求項３４記載のシステムであって、前記物理識別子が、汎用一意記憶リソース識別子から生成されたハッシュ値であるシステム。
【請求項３６】
請求項３４記載のシステムであって、前記物理識別子が、前記記憶リソース製造モデル及びシリアル番号の組み合わせから生成されたハッシュ値であるシステム。
【請求項３７】
請求項３４記載のシステムであって、前記複数の仮想識別子は、手作業で、又はプログラムで、特定の分布を実現するよう生成されるシステム。
【請求項３８】
請求項３７記載のシステムであって、前記複数の一意の仮想識別子を生成する工程は、前記記憶リソースに関連付けられた前記物理識別子にハッシュ・チェイニングを適用して、個々の記憶リソースに関連付けられた任意の数の仮想識別子を生成する工程を含むシステム。
【請求項３９】
請求項３７記載のシステムであって、前記複数の一意の仮想識別子を生成する工程は、前記物理識別子にオフセットを加えて、前記コンシステント・リング名前空間周りの仮想識別子間の相対距離を生成するシステム。
【請求項４０】
請求項３７記載のシステムであって、前記複数の一意の仮想識別子を生成する工程は、前記コンシステント・リング名前空間の特定の比例した所有を実現するために前記コンシステント・リング名前空間上のその他の仮想識別子の間での相対分離を含むシステム。
【請求項４１】
請求項３７記載のシステムであって、前記複数の一意の仮想識別子を生成する工程は、前記記憶リソースに関連付けられたネットワーク・アドレスにハッシュ・チェイニングを適用する工程に基づくシステム。
【請求項４２】
請求項３７記載のシステムであって、前記複数の一意の仮想識別子を生成する工程は、前記記憶リソースのバス位置及びネットワーク・アドレスの組み合わせにハッシュ・チェイニングを適用する工程に基づくシステム。
【請求項４３】
請求項３７記載のシステムであって、前記複数の一意の仮想識別子を生成する工程は、前記物理識別子のような周知の開始値でシードされた疑似ランダム分布に基づくシステム。
【請求項４４】
請求項３４記載のシステムであって、前記複数の一意の仮想識別子は、任意の数の一意の仮想識別子が前記コンシステント・リング名前空間にわたってマッピングされるように生成されるシステム。
【請求項４５】
請求項３４記載のシステムであって、生成された一意の仮想識別子の数は、前記コンピュータ・ネットワーク・インフラストラクチャ内の記憶リソースの数と同じか、又は該数よりも大きいシステム。
【請求項４６】
請求項３４記載のシステムであって、単一の記憶リソースに関連した前記コンシステント・リング名前空間上のマッピングされた一意の仮想識別子の数は、前記コンピュータ・ネットワーク・インフラストラクチャにおける記憶リソ―スの相対容量に関連付けられるシステム。
【請求項４７】
請求項３４記載のシステムであって、前記コンシステント・リング名前空間上のマッピングされた一意の仮想識別子の数は、前記コンピュータ・ネットワーク・インフラストラクチャにおける記憶リソ―スの性能に関係するシステム。
【請求項４８】
請求項３４記載のシステムであって、前記コンシステント・リング名前空間上のマッピングされた一意の仮想識別子の数は、データ・オブジェクトを記憶するための記憶リソースの相対容量に基づいて経時的に変更されるシステム。
【請求項４９】
請求項３４記載のシステムであって、データ・オブジェクト識別子は、前記データから生成されたハッシュ値であるシステム。
【請求項５０】
請求項３４記載のシステムであって、データ・オブジェクト・レプリカの前記記憶リソースは、前記コンシステント・リング名前空間における前記マッピングされた仮想識別子の位置に基づいて書き込まれるシステム。
【請求項５１】
請求項５０記載のシステムであって、複数のデータ・オブジェクト・レプリカを生成し、リングウォークを行って別々の仮想識別子を見つけることにより、別々の記憶リソースに、前記生成された複数のデータ・オブジェクト・レプリカを記憶する工程を更に含むシステム。
【請求項５２】
請求項５１記載のシステムであって、前記記憶リソースは、前記データ・オブジェクト・レプリカについて前記コンピュータ・ネットワーク・インフラストラクチャにおいて別々のノードを使用する旨の選好に基づいて選択されるシステム。
【請求項５３】
請求項５１記載のシステムであって、前記記憶リソースは、前記データ・オブジェクト・レプリカについて同じノードにおいて別々の記憶リソースを使用する旨の選好に基づいて選択されるシステム。
【請求項５４】
請求項５１記載のシステムであって、前記記憶リソースは、データ・オブジェクト・レプリカを首尾良く記憶することが可能でない場合に前記リングウォークの順序において飛ばされるシステム。
【請求項５５】
請求項５１記載のシステムであって、データ・オブジェクト・レプリカの数は、前記コンピュータ・ネットワーク・インフラストラクチャのポリシー要件又は記憶リソースの数に基づいた複製因子に対応するシステム。
【請求項５６】
請求項５１記載のシステムであって、データ・オブジェクト・レプリカの数は、
前記コンピュータ・ネットワークのポリシー又は構成に基づいて動作中に動的に適合させることが可能な複製因子に対応するシステム。
【請求項５７】
請求項３４記載のシステムであって、前記コンシステント・リング名前空間の経由を可能にする工程は、前記データ・オブジェクトを取り出すための記憶リソースを決定するために記憶リソース識別子までコンシステント・リング名前空間を通じてたどる工程を含むシステム。
【請求項５８】
請求項３４記載のシステムであって、前記記憶リソースが前記コンピュータ・ネットワーク・インフラストラクチャに追加されると、前記コンシステント・リング名前空間内の一意の仮想識別子を再マッピングするよう構成された再マッピング・モジュールを更に備えるシステム。
【請求項５９】
請求項５８記載のシステムであって、前記再マッピング・モジュールは、何れかの記憶リソースの利用可能な容量が変更されると、前記コンシステント・リング名前空間内の一意の仮想識別子を再配分するよう構成されたシステム。
【請求項６０】
請求項５８記載のシステムであって、前記再マッピング・モジュールは、前記記憶リソースが前記コンピュータ・ネットワーク・インフラストラクチャから除去されると、前記コンシステント・リング名前空間内の一意の仮想識別子を除去するよう構成されたシステム。
【請求項６１】
請求項６０記載のシステムであって、前記再マッピング・モジュールは、少なくとも１つのノード又は少なくとも１つの記憶リソースの追加又は除去に鑑みて、前記コンシステント・リング名前空間が変更された後に、別々の記憶リソースにデータ・オブジェクトを再配分するよう構成されたシステム。
【請求項６２】
請求項６１記載のシステムであって、現在の記憶リソースから新たな記憶リソースへのデータ・オブジェクトの再配分は、再マッピングされた前記コンシステント・リング名前空間に基づくシステム。
【請求項６３】
請求項６１記載のシステムであって、データ・オブジェクトが、新たな利用可能な記憶リソースに複製された後、別のデータ・オブジェクト・レプリカを記憶リソースから除去することが可能であり、前記データ・オブジェクトの複製因子がなお維持されるシステム。
【請求項６４】
請求項６１記載のシステムであって、記憶リソースが前記コンピュータ・ネットワーク・インフラストラクチャから除去されると、前記データ・オブジェクトが、リングウォークの順序で、前記コンピュータ・ネットワーク・インフラストラクチャにおいてなお利用可能な後続の記憶リソースに複製されるシステム。
【請求項６５】
請求項６１記載のシステムであって、性能及び再構成の向上のために前記コンピュータ・ネットワーク・インフラストラクチャにおける記憶リソースの予備容量を使用するために前記複製因子を超え得るシステム。
【請求項６６】
命令を記憶させた、一時的でないプロセッサ読み取り可能な媒体であって、１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、
記憶リソース毎に物理識別子を確立させ、
記憶リソース毎に複数の一意の仮想識別子を前記物理識別子に基づいて生成する工程であって、前記複数の一意の仮想識別子は全てのノードにアクセス可能なコンシステント・リング名前空間に記憶される対象である工程を行わせ、
記憶リソースに記憶される対象のデータ・オブジェクトの位置に関連付けられたオブジェクト識別子を生成させ、
前記オブジェクト識別子を前記コンシステント・リング名前空間にマッピングさせ、前記データ・オブジェクトを位置特定し、前記データ・オブジェクトにアクセスするために前記コンピュータ・ネットワーク・インフラストラクチャ内の何れかのノードから前記コンシステント・リング名前空間を経由することも可能にさせる、一時的でないプロセッサ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般に、リソースの編成に関し、特に、コンシステント・リング名前空間を利用するコンピューティング・ネットワーク・インフラストラクチャにおけるデータの記憶及び編成に関する。
【背景技術】
【０００２】
本セクションにおいて説明する手法は、追求し得るが、必ずしも、先行して考え出されたか、又は追求された訳でない手法である。したがって、別途明記しない限り、本セクションにおいて説明する手法の何れも、単に本セクションに含められていることにより、従来技術としてみなされると解すべきでない。
【０００３】
コンピューティング・システムでは、データは種々の態様で記憶され、取り出される。過去の手法の一部には、データベースにおいて使用されるリレーショナル・データベース及びファイル・システムにおいて使用される階層的名前空間がある。
【０００４】
別の手法は、全てのオブジェクトに、一意の識別子が与えられ、上記オブジェクトに関連付けられたデータを取り出すために上記識別子が使用されるオブジェクト記憶インタフェースの「フラットな」名前空間であり得る。前述のタイプのインタフェースは、データを取り出すためにいくつかのクライアントがオブジェクト識別子を計算すればよいに過ぎない分散コンピューティング・システムにおいて一般的である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
オブジェクト・ベースの記憶システムは、記憶及び取り出しの、最も空間効率が高い態様で、オブジェクトの属性を定義し、オブジェクトを編成することが可能である。その場合、前述のオブジェクトはコンピュータ・ネットワーク内の複数のノード間で配分させる。既存の手法は、ネットワーク化されたノードの名前空間を介してデータ・オブジェクト位置を経由する簡単かつ高速なやり方を提供するものでない。通常、データ・オブジェクトのアクセスには、ノード（例えば、ハード・ドライブ）のルックアップ及び特定のノード上に記憶されたデータ・オブジェクトのルックアップを含む２つの動作が必要である。前述の手法は、特にコンピューティング・ネットワークに多数のノードが関係する場合に、時間がかかり、非効果的である。
【課題を解決するための手段】
【０００６】
本概要は、詳細な説明において以下に更に説明する単純な形態における概念の選択肢を紹介するために記載している。本概要は、特許請求の範囲記載の主題の主要な構成又は必須の構成を識別することを意図するものでなく、特許請求の範囲記載の範囲を定めるうえでの助けとして使用されることを意図するものでもない。
【０００７】
本明細書及び特許請求の範囲記載の種々の実施例及び原理によれば、従来技術の課題は、高効率並びに高信頼度のデータの記憶及びアクセスを容易にするコンピュータ・ネットワーク・インフラストラクチャ内のデータ・オブジェクトを管理する方法及びシステムによって解決される。
【０００８】
一局面によれば、複数のノードを含むコンピュータ・ネットワーク・インフラストラクチャ内のデータ・オブジェクトを管理する方法を提供する。ネットワークの各ノードは１つ又は複数の記憶リソースを含み得る。方法は記憶リソース毎に物理識別子を確立する工程を含み得る。記憶リソース毎の複数の一意の仮想識別子は物理識別子に基づいて生成される。複数の一意の仮想識別子はノード全てについてアクセス可能なコンシステント・リング名前空間に記憶される。記憶リソースに記憶される対象のデータ・オブジェクトの位置に関連付けられたオブジェクト識別子も生成される。オブジェクト識別子はコンシステント・リング名前空間にマッピングされる。方法は更に、データ・オブジェクトを位置特定し、データ・オブジェクトにアクセスするためにコンピュータ・ネットワーク内の何れかのノードからもコンシステント・リング名前空間を経由することを可能にする工程を更に含み得る。
【０００９】
種々の実施例によれば、複数の一意の仮想識別子の生成は、記憶リソースに関連付けられた物理識別子にコンシステント・ハッシングを適用する工程を含み得る。物理識別子は、少なくとも記憶リソース識別子のハッシュ関数であり得る。データ・オブジェクト識別子は、データ長及びデータのハッシュ関数であり得る。生成された一意の仮想識別子の数は、コンピュータ・ネットワーク・インフラストラクチャ内の記憶リソースと同じか、又はそれよりも多い。単一のノードに関する生成された一意の仮想識別子の数も、ノードの記憶リソースの相対サイズに関連付けることが可能である。コンシステント・リング名前空間は、１つ又は複数のデータ・オブジェクト・レプリカ、及び記憶リソースの関連付けられた一意の仮想識別子に関連付けることが可能である。
【００１０】
方法は、更に、複数のデータ・オブジェクト・レプリカを生成し、コンピュータ・ネットワーク・インフラストラクチャにおける別々のノード上の別々の記憶リソースにそれらを記憶する工程を含み得る。データ・オブジェクト・レプリカの数は複製因子に対応し得、複製因子はコンピュータ・ネットワーク・インフラストラクチャのポリシー要件又は記憶リソースの数に基づいて適合し得る。コンシステント・リング名前空間を経由することを可能にする工程は、データ・オブジェクトの位置を判定するために、コンシステント・リング名前空間を介して記憶リソース識別子へたどる工程を含み得る。複数の一意の仮想識別子は、任意の数の一意の仮想識別子をコンシステント・リング名前空間にわたって配分させるようなやり方で生成することが可能である。方法は更に、ノードがコンピュータ・ネットワーク・インフラストラクチャに追加され、又はコンピュータ・ネットワーク・インフラストラクチャから除去された場合に、又は、何れかの記憶リソースの利用可能な容量が変更された場合に、コンシステント・リング名前空間内で、一意の仮想識別子を再配分させる工程を更に含み得る。方法は更に、少なくとも１つのノード又は少なくとも１つの記憶リソースの追加又は除去に鑑みてリング名前空間が変更された後に、別々のノードにデータ・オブジェクトを再配分させる工程も含み得る。
【００１１】
別の局面によれば、複数のノードを備えるコンピュータ・ネットワーク・インフラストラクチャ内のデータ・オブジェクトを管理するシステムが提供される。システムは、記憶リソース毎に物理識別子を確立するよう構成された物理識別子モジュールと、全てのノードにアクセス可能なコンシステント・リング名前空間に記憶された一意の複数の仮想識別子により、記憶リソース毎の一意の複数の仮想識別子を物理識別子に基づいて生成するよう構成された仮想識別子モジュールとを含み得る。システムは更に、記録リソースに記憶される対象のデータ・オブジェクトの位置に関連付けられたオブジェクト識別子を生成するよう構成されたオブジェクト識別子モジュールを更に含み得る。システムは、コンシステント・リング名前空間にオブジェクト識別子をマッピングするよう構成されたマッピング・モジュールを含み得る。システムは更に、データ・オブジェクトを位置特定し、データ・オブジェクトにアクセスするためにコンピュータ・ネットワーク内の何れのノードからもコンシステント・リング名前空間を経由することを可能にするよう構成された経由モジュールも含み得る。
【００１２】
種々の実施例によれば、システムは、複数のデータ・オブジェクト・レプリカを生成し、別々の記憶リソースに記憶するよう構成されたレプリカ生成器を更に含み得る。更に、システムは、ノードがコンピュータ・ネットワーク・インフラストラクチャに追加され、又はコンピュータ・ネットワーク・インフラストラクチャから除去された場合に、又は、記憶リソースの利用可能な容量が変更された場合に、コンシステント・リング名前空間内で、一意の仮想識別子を再配分させるよう構成された再配分モジュールを含み得る。
【００１３】
更に別の局面によれば、記憶させた命令を有するプロセッサ読み取り可能な媒体を提供する。命令は、１つ又は複数のプロセッサによって実行されると、１つ又は複数のプロセッサに、記憶リソース毎に物理識別子を確立させ、ノード全てにアクセス可能なコンシステント・リング名前空間に記憶された複数の一意の仮想識別子により、記憶リソース毎の複数の一意の仮想識別子を物理識別子に基づいて生成させ、記憶リソースに記憶される対象のデータ・オブジェクトの位置に関連付けられたオブジェクト識別子を生成させ、オブジェクト識別子をコンシステント・リング名前空間にマッピングさせ、データ・オブジェクトを位置特定し、データ・オブジェクトにアクセスするためにコンピュータ・ネットワーク内の何れかのノードからもコンシステント・リング名前空間を経由することを可能にさせ得る。
【００１４】
上記及び関連した目的を達成するために、１つ又は複数の局面は、以降、詳細に説明し、特許請求の範囲において特定した構成を含む。以下の明細書、特許請求の範囲、及び図面は１つ又は複数の局面の特定の例証的な構成を詳細に記載する。しかし、前述の構成は、種々の局面の原理を使用し得る種々のやり方のうちのいくつかを示しているに過ぎず、本明細書は、前述の局面及び均等物全てを含めることが意図されている。
【００１５】
実施例は、添付図面の図において限定でなく、例示の目的で例証しており、同じ参照符号は同様な構成要素を示している。
【図面の簡単な説明】
【００１６】
【図１】コンピュータ・ネットワーク・インフラストラクチャの単純化された構造を示す図である。
【図２】コンピュータ・ネットワーク・インフラストラクチャの単純化された構造を示す図である。
【図３】物理リング名前空間、及びコンシステント・リング名前空間のグラフィカル表現を示す図である。
【図４】データ・オブジェクト・レプリカを記憶するための場所と、物理名前空間及びコンシステント・リング名前空間とのグラフィカル表現を示す図である。
【図５】単一のノード内の別々の記憶リソースにデータ・オブジェクト・レプリカを記憶する単純化された処理を示す図である。
【図６】別々の複数のノード内の別々の記憶リソースにデータ・オブジェクト・レプリカを記憶する単純化された処理を示す図である。
【図７】１つのノードへの書き込み処理中に記憶リソースを飛ばす例示的な単純化された処理を示す図である。
【図８】複数のノードへの書き込み処理中に記憶リソースを飛ばす例示的な単純化された処理を示す図である。
【図９】コンシステント・リング名前空間において所有の変更をもたらす新たな記憶リソースの追加の例示的な表現を示す図である。
【図１０】コンシステント・リング名前空間において所有の変更をもたらす記憶リソースの除去の例示的な表現を示す図である。
【図１１】名前空間マネージャを示す図である。
【図１２】コンピュータ・ネットワーク・インフラストラクチャ内のデータ・オブジェクトを管理する方法を示すプロセス・フロー図である。
【図１３】本明細書及び特許請求の範囲記載の方法論の何れかの１つ又は複数をマシンに行わせるための命令の組を実行することが可能なコンピュータ・システムの例示的な電子的形態におけるマシンのコンピューティング装置の概略図表現を示す図である。
【発明を実施するための形態】
【００１７】
以下の詳細な説明は、詳細な説明の一部を構成する添付図面への参照を含む。図面は、例示的な実施例による例証を示す。「実施例」としても本明細書及び特許請求の範囲において表す前述の例示的な実施例は、当業者が本願の主題を実施することを可能にするために十分詳細に説明している。実施例を組み合わせることが可能であり、他の実施例を利用することが可能であり、又は、特許請求の範囲記載の範囲から逸脱しない限り、構造的な変更、論理的な変更、及び電気的な変更を行うことが可能である。したがって、以下の詳細な説明は限定的な意味で解されないものであり、その範囲は、特許請求の範囲及びその均等物によって定められる。
【００１８】
本明細書及び特許請求の範囲記載の手法及び原理は、コンピュータ・ネットワーク・インフラストラクチャ内のデータ・オブジェクトを管理する、コンピュータによって実現される方法及びシステムに関する。コンピュータ・ネットワーク・インフラストラクチャは、種々のデータ・オブジェクトを記憶し、他のノードからのそれらへのアクセスを可能にするための記憶リソースをそれぞれが有する複数のノードを含む。更に、単一のノードの記録リソースは、１つ又は複数のハード・ドライブ、ソリッド・ステート・ドライブ、又は、ＲＡＭ（ランダムアクセス・メモリ）、フラッシュ、若しくはＲＯＭ（リードオンリ・メモリ）などの他のメモリ装置を含み得る。各データ・オブジェクトには、当該オブジェクトへの経路を経由することを可能にする特定のノードの名前空間に記憶することが可能な一意の識別子が与えられ得る。
【００１９】
本開示は、コンピュータ・ネットワーク・インフラストラクチャにおいて所望のデータ・オブジェクトの記憶リソースを位置特定するためにコンシステント・リング名前空間を各ノードが使用することを可能にするノード全ての上にコンシステント・リング名前空間を提供する。コンシステント・リング名前空間は、クラスタ内の単一であり、かつ共通の名前空間であり、前述のクラスタの構成員であるノード全てについてデータ・オブジェクトの位置を指定する役目を担う。本明細書及び特許請求の範囲記載の種々の実施例によれば、コンシステント・リング名前空間は、名前空間に記憶された複数のデータ・オブジェクト識別子がデータ・オブジェクト及びその位置を識別し得るように、種々のノード及びそれらの対応する記憶リソースを指定するよう仮想識別子によって分離し得る。よって、データ・オブジェクトを位置特定するために（すなわち、コンシステント・リング名前空間を介してデータ・オブジェクト識別子をルックアップするために）必要な単一の動作のみが存在している。これは、別のノードに記憶された所望のデータ・オブジェクトを何れのモードも潔く位置特定することを可能にする。すなわち、コンシステント・リング名前空間が提供され、ネットワーク内の全てのノードにアクセス可能であり、各ノードは、他のノードに配置されたデータ・オブジェクトをルックアップし、他のノードに配置されたデータ・オブジェクトにアクセスし得る。よって、データの位置を求めて単一のノードを調べる必要はなく、クラスタの分散ルックアップ・アルゴリズムが提供される。
【００２０】
オブジェクト識別子は、「コンシステント・ハッシング」の原理に基づいて生成される。一般に、コンシステント・ハッシングは、アレイ・スロットの数の変動により、Ｋ／ｎ個の鍵のみをマッピングし直させ、Ｋが鍵の数であり、ｎがスロットの数である特別な種類のハッシングである。これにより、メモリ・リソースの数又は容量などのパラメータの組が経時的に変動する状態においてコンシステント・ハッシングが理想的になる。同様に、これにより、ネットワーク内のノード全ての識別子の集中化された状態を維持する必要がなくなり、データ・アクセス速度を増加させることが可能である。
【００２１】
コンシステント・ハッシング結果は、コンピュータ・ネットワーク・インフラストラクチャにおける記憶リソース、ノード、及びデータ・オブジェクトを見つけるサーチ・アルゴリズムを容易にするようリング上にマッピングし得る。例えば、「時計回り」又は「反時計回り」のサーチにより、コンシステント・リング名前空間を使用して、予測可能な順序で記憶リソース全てが見つかる。これにより、全てのノードが、同じ「リングウォーク（ｒｉｎｇｗａｌｋ）」アルゴリズムを使用し、コンシステント・リング名前空間上の同じ順序で識別子を位置特定することが可能になる。しかし、何れのタイプの名前空間を使用することも可能であり得る。
【実施例】
【００２２】
以下では、複数のノードを備えるコンピュータ・ネットワーク・インフラストラクチャ内のデータ・オブジェクトの管理に関する種々の実施例の詳細な説明を提供する。
【００２３】
次に図面を参照するに、図１は、種々の実施例によるコンピュータ・ネットワーク・インフラストラクチャ１００の単純化された構造を示す。コンピュータ・ネットワーク・インフラストラクチャ１００は、複数のノード１２０を相互接続するネットワーク１１０を含む。同様に、各ノード１２０は、データ・オブジェクトを記憶するために複数の記憶リソース１３０を含み得る。各ノード１２０内のリソースを編成するために物理名前空間を使用することが可能である。各ノード１２０は、ネットワーク・アドレスを維持する何れかの適切なネットワーキング・エレメントであり得、他のノード１２０にデータ・オブジェクトを記憶し、他のノード１２０とデータ・オブジェクトを共有することが可能である。一例では、ノード１２０は、コンピュータ、サーバ、ラップトップ、タブレット・コンピュータ、ポータブル・コンピューティング装置、ＰＤＡ（携帯情報端末）、ハンドヘルド型セルラ電話機、携帯電話機、スマートフォン、シン・クライアント、又はネットワーク１１０を介したデータの通信に適した何れかの他の電子コンピューティング装置を表し得る。更に、各ノード１２０は、ハード・ディスク・ドライブ、ＳＳＤ、ＲＡＭ、ＲＯＭ、フラッシュ・メモリ等などの複数の記憶リソース１３０を含み得る。
【００２４】
ネットワーク１１０は、インターネット、又は装置間でデータを通信することができる何れかの他のネットワークを含み得る。適切なネットワークには、例えば、ローカル・イントラネット、ＰＡＮ（パーソナル・エリア・ネットワーク）、ＬＡＮ（ローカル・エリア・ネットワーク）、ＷＡＮ（ワイド・エリア・ネットワーク）、ＭＡＮ（メトロポリタン・エリア・ネットワーク）、仮想プライベート・ネットワーク（ＶＰＮ）、ストレージ・エリア・ネットワーク（ＳＡＮ）、フレーム・リレイ接続、高度インテリジェント・ネットワーク（ＡＩＮ）接続、同期光ネットワーク（ＳＯＮＥＴ）接続、ディジタルＴ１、Ｔ３、Ｅ１、又はＥ３回線、ディジタル・データ・サービス（ＤＤＳ）接続、ＤＳＬ（ディジタル加入者線）接続、イーサネット（登録商標）接続、ＩＳＤＮ（統合サービス・ディジタル・ネットワーク）回線、Ｖ．９０、Ｖ．３４、若しくはＶ．３４ｂｉｓアナログ・モデム接続などのダイアルアップ・ポート、ケーブル・モデム、ＡＴＭ（非同期転送モード）接続、又はＦＦＤＩ（ファイバ分散データ・インタフェース）若しくはＣＤＤＩ（銅線分散データ・インタフェース）接続のうちの何れか１つ若しくは複数を含み、又は、上述のうちの何れか１つ若しくは複数とインタフェースし得る。更に、通信は、ＷＡＰ（無線アプリケーション・プロトコル）、ＧＰＲＳ（汎用パケット無線サービス）、ＧＳＭ（登録商標）（ジーエスエム）、ＣＤＭＡ（符号分割多元アクセス）若しくはＴＤＭＡ（時分割多元アクセス）、セルラ電話機ネットワーク、ＧＰＳ（全地球測位システム）、ＣＤＰＤ（セルラ・ディジタル・パケット・データ）、ＲＩＭ（リサーチ・イン・モーション社）のデュプレックス・ページング・ネットワーク、ブルートゥース（登録商標）無線、又はＩＥＥＥ８０２．１１ベースの無線周波数ネットワークを含む種々の無線ネットワークの何れかへのリンクも含み得る。
【００２５】
図２は、種々の実施例による、コンピュータ・ネットワーク・インフラストラクチャ１００の単純化された構造を示す。図に示すように、複数の記憶リソース１３０を有する各ノード１２０は、物理名前空間２００と関連付けることが可能である。物理名前空間２００は、各ノード１２０内の記憶リソースを編成するために使用される。物理名前空間２００はリングとして編成することが可能である一方、各要素は対応する記憶リソースの位置を指定するための記憶識別子２０５を表し得る。
【００２６】
オブジェクト識別子は、記憶されたデータ・オブジェクト全てについて、コンシステント名前空間２１０がハッシュ鍵・値対を提供するようなハッシュ関数によって計算される。一例では、オブジェクト識別子は
【００２７】
【表１】
2015512551.tif 000003
のように表し得る。
【００２８】
種々の実施例では、何れの暗号ハッシング・アルゴリズムもハッシュ関数として使用することが可能である。例えば、以下に説明するコンシステント・ハッシングに適した分布をもたらすので、ＭＤ５又はＳＨＡ−１暗号アルゴリズムを使用することが可能である。
【００２９】
図２を引き続き参照するに、コンシステント名前空間２１０は、ノード１２０全ての記憶リソース１３０全てを管理するために利用することが可能であり、データ・オブジェクトの位置特定、アドレス指定、アクセス、データ・オブジェクトの下での動作の実行等の役目を担い得る。
【００３０】
コンシステント名前空間２１０は、リング名前空間として実現することが可能である。コンシステント名前空間２１０の要素は仮想識別子２２０である。一連の仮想識別子２１５が単一の記憶リソース１３０から導き出される。一連の仮想識別子２１５のうちの仮想識別子２２０はそれぞれ、以下に説明するように仮想識別子のハッシュ値に基づいてコンシステント・リング２１０にマッピングされる。よって、コンシステント名前空間２１０は少なくとも１つのノード１２０によってアクセスすることが可能であり、よって、前述のノード１２０は、オブジェクト識別子を判定し、データ・オブジェクト・レプリカを判定するための種々のマッピング機能を行い、又は、必要に応じて、何れかの他のアルゴリズム・ルックアップ動作を行うことが可能である。前述のアルゴリズムはコンシステント名前空間２１０を経由するためであり、何れかのノード１２０内の実際のオブジェクトの記憶と無関係であるということを特筆したい。
【００３１】
上述のように、コンシステント名前空間２１０上の仮想識別子２２０は、記憶リソース１３０の物理識別子に適用されるハッシング・アルゴリズムの助けによって生成することが可能である。前述の処理は次のように表すことが可能である。
【００３２】
記憶リソース１３０の位置は、
【００３３】
【表２】
2015512551.tif 000004
のアルゴリズムにより、記憶リソース１３０の一意の識別子から鍵を生成することにより、コンシステント名前空間２１０にマッピングされる。ここで、ｄｉｓｋ．ｕｕｉｄ及びｄｉｓｋ．ｕｕｉｄｌｅｎｇｔｈは記憶リソースの汎用一意識別子を表す。
【００３４】
これは暗号ハッシング関数であるので、コンシステント・リング名前空間上の位置を予測することは可能でなく、よって、識別子は、コンシステント・リング名前空間上で互いに比較的近いことがあり得る。前述の不確実性を補うために、「仮想」識別子の連鎖を生成することが可能であり、「仮想」識別子の連鎖は、リング名前空間上の特定の空間の所有を確立することが可能である。仮想識別子は、
【００３５】
【表３】
2015512551.tif 000005
のハッシュ関数によって表し得る。
【００３６】
よって、仮想識別子は、全て、物理識別子に基づいたハッシュ関数の連鎖として生成される。統計的には、より多くの識別子が生成されることにより、記憶リソース毎の適当な量に、コンシステント・リング名前空間の所有が「平滑化される」はずである。
【００３７】
図３は、例示的な実施例による、物理名前空間３００及びコンシステント名前空間２１０のグラフィカル表現を示す図である。前述の図に示すように、仮想識別子２２０は、識別子のコンシステントな分布をもたらすようコンシステント名前空間２１０にわたってランダムに分布し得る。一意の仮想識別子は、その数がネットワーク１１０における記憶リソースの数と同じか又はそれより多くなるように生成される。単一のノード１２０に関する生成された一意の仮想識別子の数は更に、このノード１２０の記憶リソース１３０の相対サイズに関連付けることが可能である。
【００３８】
種々の実施例によれば、複数の仮想識別子Ｖｉｒｔｕａｌ．ＩＤｉを使用することにより、図３に示すように、物理識別子の仮想識別子２２０との時計回り（又は反時計回り）の比較を使用した、コンシステント名前空間２１０におけるデータ・オブジェクト３１０のサーチが可能になる。
【００３９】
一般に、データ・オブジェクト・レプリカの位置をサーチするための選択肢が２つ存在している。第１の選択肢は、コンシステント・リング名前空間にわたって「リングウォーク」を行い、仮想データ識別子を物理データ識別子にマッピングすることにより、次の位置を位置特定することである。結果として生じるオブジェクト・レプリカ位置は単純かつ例示的なやり方で図４に示し、ここで、Ｏ１、Ｏ２、及びＯ３はデータ・オブジェクト・レプリカの位置を表す。データ・オブジェクト・レプリカの位置の決定は以下のように、例えば、擬似コードで表すことが可能である。
【００４０】
【表４】
2015512551.tif 000006
2015512551.tif 000007
2015512551.tif 000008
2015512551.tif 000009
2015512551.tif 000010
データ・オブジェクト・レプリカ位置をサーチするための別の選択肢は、物理名前空間リング上である。これは、物理名前空間上の記憶識別子２０５に仮想識別子２２０をマッピングすることによって実現される。レプリカ位置はその場合、レプリカの次の記憶リソースを判定するために時計回りで物理名前をウォークすることによって判定される。
【００４１】
一般に、上記アルゴリズムは、何れかのノード１２０が、オブジェクトを記憶すべき何れかのデータ・オブジェクト及び関連付けられたレプリカの位置を計算することを可能にする。何れかのデータ・オブジェクトの実際の書き込み動作は、記憶リソース１３０の利用可能な容量、ノード１２０の動作状態、及び名前空間の算出外で考慮に入れる必要がある何れかの他の属性に依存する。
【００４２】
以下では、データ・オブジェクトの書き込み及び読み出し、並びに再平衡化アルゴリズムを含む、名前空間にわたって行われる通常の動作について述べる。
【００４３】
書き込みアルゴリズム
書き込みアルゴリズムの目標は、第１にデータ・オブジェクト・レプリカを別々のノードの記憶リソースに配布し、第２に、可能な限り、データ・オブジェクト・レプリカを維持するよう潔くフォールバックを行うことである。このことは、単一の記憶リソースの障害により、データ・オブジェクトの唯一のコピーが失われないようにデータ・オブジェクトが別々の記憶リソースに書き込まれることを保証する。ノードの数がデータ・オブジェクト・レプリカの数と少なくとも同じか、又はそれより多いものである限り、書き込みアルゴリズムは更に、（レプリカの数−１）個のノードに障害が生じ得ることを保証する。
【００４４】
記憶リソース１３０へのデータ・オブジェクト書き込みは、コンシステント名前空間２１０上のデータ・オブジェクト位置によって定められるデータ・オブジェクト・レプリカの組を使用する。レプリカの数が、ネットワーク・インフラストラクチャ１００におけるノード１２０の数よりも多い場合、書き込みアルゴリズムは、複製因子を実現するために先行して使用されたものと同じノードにデータ・オブジェクトを記憶する。上記複製は、前述の再使用ノード１２０内の別個の記憶リソース１３０を効率的に選ぶよう低下し得る。
【００４５】
図５は、例示的な実施例による、単一のノード１２０内の別々の記憶リソース１３０にデータ・オブジェクト・レプリカ５１０がどのようにして記憶されるかについての単純化されたやり方を示す。しかし、一部の他の実施例では、２つ以上のノードの別々の記憶リソースへのデータ・オブジェクト・レプリカの記憶の信頼度がより高いことがあり得る。前述の手法は、より高いフォールト・トレランスの実現に寄与し得る。図６はこの手法を示す。特に、２つのノード１２０の別々の記憶リソース１３０に３つのデータ・オブジェクト・レプリカ５１０を記憶する単純化された例示的な処理を表す。
【００４６】
書き込みアルゴリズムの別の属性は、永久的な記憶にコミットされているデータ・オブジェクトをもう扱うことが可能でない状態になるように特定の記憶リソース１３０の容量が変動する状況を扱うというものである。よって、書き込みアルゴリズムは、所望の複製因子が満たされるまでリソース記憶装置の「連鎖」を下る。複製因子は、種々の、別個の記憶リソース１３０に記憶される対象のデータ・オブジェクト・レプリカ５１０の数を表す任意の値、又は予め定められた値であり得る。例えば、図５及び図６では、複製因子は３に等しい。複製因子は、コンピュータ・ネットワーク・インフラストラクチャ１００の何れかの既存のポリシー要件、又は記憶リソース１３０の数に基づいて適合させ得る。
【００４７】
一般に、所定の複製因子に基づいて、データ・オブジェクト・レプリカ５１０の位置のリストを生成することが可能である。更に、記憶リソース１３０は、書き込みアルゴリズム中に処理される「書き込み条件」ステートメントを生成し得る。書き込み条件ステートメントは、（限定された自由空間を有している、順不同である、現在使用されていない等であり得るので）特定の記憶リソース１３０へのデータ・オブジェクト・レプリカ５１０の記憶が阻止され得る。よって、前述の記憶リソース１３０は書き込み処理中に飛ばし得る。図７は、書き込み処理中に記憶リソース１３０を飛ばす例示的な単純化されたやり方を示す。より具体的には、「ドライブ１，３」は、データが満杯であり、よって、飛ばされる。
【００４８】
更に、特定のノード１２０は、上記ノードが含む記憶リソース１３０に記憶されたデータ・オブジェクト・レプリカ５１０を既に有している場合、飛ばすことが可能である。よって、特定のノード１２０がデータ・オブジェクト・レプリカ５１０を有する場合、ノード１２０は飛ばされ、それにより、フォールト・トレランスが高くなる。前述の処理は図８に示す。図８では、記憶リソース「１，２」が既にデータ・オブジェクト・レプリカ５１０を有するので、記憶リソース「１，３」が飛ばされることを示す。記憶リソース「１，３」及び「１，２」は同じノードに関する。
【００４９】
既にデータ・オブジェクト・レプリカ５１０を有している場合の書き込み処理中にノード１２０又はリソース記憶装置１３０を飛ばすアルゴリズムは、
【００５０】
【表５】
2015512551.tif 000011
2015512551.tif 000012
の例示的な擬似コードによって表すことが可能である。
【００５１】
読み出しアルゴリズム
上述のように、書き込みアルゴリズムは、複製因子が満たされるまで保存動作を再試行する。これは、首尾良く行われると、データ・オブジェクトの複製が最終的にノード内の物理記憶リソース上に存在することになることを意味している。よって、読み出しアルゴリズムの保証された手法は、物理識別子全てを走査し、データ・オブジェクトの複製を取り出すというものである。よって、読み出しアルゴリズムは、ネットワーク・インフラストラクチャ内のノード全てを検査し得る。各ノードはノード内のそれぞれの物理記憶リソースに関連付けられているので、多くの場合、ネットワーク・インフラストラクチャ内の物理記憶リソースそれぞれの検査は必要でない。
【００５２】
オブジェクトへのアクセスに使用される読み出しアルゴリズムは、
【００５３】
【表６】
2015512551.tif 000013
2015512551.tif 000014
の例示的な擬似コードとして表すことが可能である。
【００５４】
種々の実施例によれば、読み出しアルゴリズムは更に、ネットワーク・インフラストラクチャにおけるロード・バランスのための先行動作からの「ヒント」も使用し得る。例えば、記憶リソースに障害が生じた場合、それは、データ・オブジェクトが、ネットワーク・インフラストラクチャにおける他の場所に複製されているということを示し、障害が生じた記憶リソース上のオブジェクトのサーチは、読み出し中、飛ばし得る。よって、書き込み障害、読み出し障害、及び再平衡化を信号として使用して、飛ばした記憶リソースのリストを再計算し得る。前述の特定の処理は、
【００５５】
【表７】
2015512551.tif 000015
2015512551.tif 000016
の例示的な擬似コードによって表すことが可能である。
【００５６】
再平衡化アルゴリズム
コンシステント名前空間２１０の分布の平衡は、新たな記憶リソースがネットワーク・インフラストラクチャに追加され、又は、ネットワーク・インフラストラクチャから除去されるにつれ、又は、特定の記憶リソースの利用可能な容量が変更された場合に変動する。如何なるイベントが前述の変動をもたらすものであっても、コンシステント名前空間２１０は、所望の複製因子を満たすためにデータ・オブジェクト及びその対応する識別子を再平衡化させる必要がある。更に、コンシステント名前空間２１０はデータ・マイグレーションに鑑みて頻繁に変動し得、各変動により、データ・オブジェクトに対して再平衡化アルゴリズムを行うことが必要となり得る。よって、例えば少なくとも１つのノード１２０又は少なくとも１つの記憶リソース１３０の追加又は除去に鑑みて、コンシステント名前空間２１０が変更された後に、別々のノードに対するデータ・オブジェクトの再配分を可能にする再平衡化アルゴリズムを使用し得る。
【００５７】
図９は、所有する記憶リソースにデータ・オブジェクトが移動するような、コンシステント名前空間２１０における所有の変動をもたらす、ドライブ「Ｄ」として表す新たな記憶リソース１３０の追加の例示的な表現を示す。コンシステント名前空間に追加された仮想識別子は、ドライブ「Ｄ」の所有を表す。
【００５８】
所有の変動の結果は、現在、仮想識別子「Ｄ」によって所有されているドライブ「Ａ」上又はドライブ「Ｃ」上の何れかのデータ・オブジェクトが、新たな所有者として仮想識別子「Ｄ」から読み出される。よって、ドライブ「Ｄ」を含むノードは、データ・オブジェクトのレプリカ位置からデータを移動する。同じ名前空間経由アルゴリズムを使用してルックアップすることが可能であるからである。反復リング名前空間はなお、そのままの状態にあるので、このことは、新たな所有者のデータ・オブジェクトの遅延読み出しを可能にする。
【００５９】
再平衡化アルゴリズムには更に、記憶リソースの除去という課題への対応が関係する。記憶リソースがネットワークから除去されると、コンシステント名前空間は再平衡化を必要とする。図１０は、コンシステント名前空間２１０において所有の変動をもたらす、ドライブ「Ｃ」として表す記憶リソース１３０の除去の例示的な表現を示す。ドライブの除去の結果、データ・オブジェクトは、所定の複製因子を維持するよう移動させる。図に示すように、データ・オブジェクトの所有は、反時計回りに移る。
【００６０】
所有の変動は、追加状態及び除去状態の何れについても生じ得るので、前述の状態変動中にコンシステント名前空間２１０の再平衡化に対応するようノード１２０からのスケジューリング・アルゴリズムを確立することが可能である。前述のアルゴリズムは、経時的にオブジェクトを移動させるための単純な読み出し意味論に依存するよりも、所有の変動中のコンシステント名前空間２１０のよりすばやいコンバージェンスにとって必須であり得る。
【００６１】
コンシステント名前空間２１０内の所有は、新たな仮想識別子の存在によって調節することが可能である。よって、（図９に示すように、）ドライブ「Ｄ」が追加された後に、仮想識別子「Ｄ０」をそれ自体によって考慮に入れることは、コンシステント名前空間２１０におけるレプリカへの変更を示す。これは、「Ｄ０」が現在、所有する範囲に先行してあった何れかのオブジェクトを見つけるためにコンシステント名前空間２１０の先行する所有者に対してクエリが構成されることを可能にする。単純化されたクエリを、
レプリカ１：何れかのオブジェクト∈｛Ｄ０，Ａ１−１｝を求めてＣ１を有するノードに問い合わせる
レプリカ２：何れかのオブジェクト∈｛Ｃ１，Ｄ０−１｝を求めてＣ１を有するノードに問い合わせる
レプリカ３：何れかのオブジェクト∈｛Ｂ１，Ｃ１−１｝を求めてＢ１を有するノードに問い合わせる
レプリカ４：何れかのオブジェクト∈｛Ｂ０，Ｂ１−１｝を求めてＢ０を有するノードに問い合わせる
レプリカ５：何れかのオブジェクト∈｛Ａ０，Ｂ０−１｝を求めてＡ０を有するノードに問い合わせる
レプリカ６：何れかのオブジェクト∈｛Ｃ０，Ａ０−１｝を求めてＣ０を有するノードに問い合わせる
レプリカ７：何れかのオブジェクト∈｛Ａ１，Ｃ０−１｝を求めてＡ１を有するノードに問い合わせる
のように構成することが可能である。
【００６２】
これは、全ての主所有者が、範囲の組内のデータ・オブジェクト全てを戻させることを前提とする。これは、記憶リソース１３０が満杯であり、書き込みアルゴリズムがデータ・オブジェクトを記憶し、複製因子を満たすよう、次に利用可能な記憶リソース１３０に進む場合、該当しない。前述の挙動を補うために、アルゴリズムは、クラスタ内の全てのノード１２０に問い合わせなければならない。これは。
【００６３】
レプリカ１−各ノード毎に、何れかのオブジェクト∈｛Ｄ０，Ａｌ−１｝を求める
レプリカ２−各ノード毎に、何れかのオブジェクト∈｛Ｃ１，Ｄ０−１｝を求める
レプリカ３−各ノード毎に、何れかのオブジェクト∈｛Ｂ１，Ｃ１−１｝を求める
レプリカ４−各ノード毎に、何れかのオブジェクト∈｛Ｂ０，Ｂ１−１｝を求める
レプリカ５−各ノード毎に、何れかのオブジェクト∈｛Ａ０，Ｂ０−１｝を求める
レプリカ６−各ノード毎に、何れかのオブジェクト∈｛Ｃ０，Ａ０−１｝を求める
レプリカ７−各ノード毎に、何れかのオブジェクト∈｛Ａ１，Ｃ０−１｝を求める
に示すように行うことが可能である。前述のアルゴリズムは、コンシステント名前空間２１０の「リングウォーク」を行い、オブジェクト・レプリカ全てについて全てのノードに問い合わせ、又は、期待されたデータ・オブジェクト・レプリカにわたって反復し、ネットワーク・インフラストラクチャの特性及び再平衡化アルゴリズムの所望の負荷性能に基づいて複数回、リングウォークを行うことが可能である。更に、前述のクエリは、通常の読み出し動作と同時に実行し、コンシステント・リング名前空間に対して再平衡をもたらし得る。
【００６４】
所有の変動の例示的な擬似コード・アルゴリズムは例えば、
【００６５】
【表８】
2015512551.tif 000017
2015512551.tif 000018
として表現することが可能である。
【００６６】
再平衡アルゴリズムが、ノードのデータ・オブジェクトの記憶されたインデクス、及び、次いで、データの実際の移動を問い合わせることにより、ネットワーク・インフラストラクチャに対して負荷をもたらし得るということが当業者に分かるものである。前述の動作は、一ノードに達する代わりにコンシステント名前空間２１０にわたって作業を分離することが可能であるように上記シナリオにおいて異なっているように示している。しかし、システムに対するトラフィックの即時バーストを避けるために、指数関数的バックオフ・アルゴリズムを再平衡中に使用して即時のデータ移動を避けるべきである。
【００６７】
一部の実施例では、指数関数的なバックオフ遅延の算出は、再平衡化アルゴリズムの開始をオフセットするために使用することが可能である。遅延の計算は、
【００６８】
【数１】
2015512551.tif 000019
の式を使用して、ネットワークの何れかの共有状態の一致を避けるために個々に各ノードに対して行うことが可能である。
【００６９】
遅延の算出のための例示的な疑似アルゴリズムは、
【００７０】
【表９】
2015512551.tif 000020
2015512551.tif 000021
として表現することが可能である。
【００７１】
図１１は、例示的な実施例による名前空間マネージャ１１００を示す。名前空間マネージャ１１００は、複数のノードを有するコンピュータ・ネットワーク・インフラストラクチャ１００内のデータ・オブジェクトを管理する、コンピュータによって実現される方法の使用に適している。図に示すように、名前空間マネージャ１１００は、物理識別子モジュール１１１０と、仮想識別子モジュール１１２０と、オブジェクト識別子モジュール１１３０と、マッピング・モジュール１１４０と、経由モジュール１１５０と、レプリカ生成器１１６０と、再配分モジュール１１７０とを備える。
【００７２】
物理識別子モジュール１１１０は、ネットワーク１１０の何れかのノード１２０の記憶リソースの物理識別子を確立するよう構成することが可能である。そうした物理識別子は、上述しており、一般に、記憶リソースの汎用一意識別子にわたる暗号ハッシング関数のハッシュ値を表す。
【００７３】
仮想識別子モジュール１１２０は、ノード１２０の記憶リソース１３０毎に複数の一意の仮想識別子を物理識別子に基づいて生成するよう構成することが可能である。上述したように、複数の一意の仮想識別子は、全てのノードにアクセス可能なコンシステント・リング名前空間に記憶することが可能である。複数の一意の仮想識別子を、ハッシュ・チェイニングの原理に基づいて生成することが可能であり、ハッシュ長、及び物理識別子モジュール１１１０によって算出された物理識別子に基づき得る。更に、コンシステント・リング名前空間にわたってランダムに、かつ一様に分布するように複数の一意の仮想識別子を生成することが可能である。
【００７４】
オブジェクト識別子モジュール１１３０は、何れかのノード１２０の記憶リソース１３０に記憶される対象のデータ・オブジェクトのオブジェクト識別子を生成するよう構成することが可能である。オブジェクト識別子は、オブジェクト・データにわたって計算されたハッシュ関数であり得る。オブジェクト識別子は、ノード１２０の何れかに記憶された場合に、全てのデータ・オブジェクト（例えば、ファイル又は複数のファイルなどのファイル・システム・オブジェクト）又はその一部について生成し得る。
【００７５】
マッピング・モジュール１１４０は、コンシステント・リング名前空間にオブジェクト識別子モジュール１１３０によって生成されるようなオブジェクト識別子をマッピングするよう構成することが可能である。マッピング手順は、本明細書及び特許請求の範囲記載の書き込み、読み出し、再平衡化、及び他のアルゴリズムの原理に対応し得る。
【００７６】
経由モジュール１１５０は、特定のデータ・オブジェクトを位置特定し、上記特定のデータ・オブジェクトにアクセスするために何れかのノード１２０からコンシステント名前空間２１０をネットワーク１１０のノード１２０に関連付けられたコンピューティング装置が経由することを可能にするよう構成し得る。
【００７７】
レプリカ生成器１１６０は、複数のデータ・オブジェクト・レプリカを生成し、現在のアプリケーション及び要件に応じて、同じノード１２０又はいくつかのノード１２０の別々の記憶リソース１３０に記憶するよう構成し得る。データ・オブジェクト・レプリカは、ノード１２０毎にアクセス可能なコンシステント名前空間２１０に記憶することが可能である。データ・オブジェクト・レプリカの数と、その生成及び記憶のポリシーは予め定めることが可能である。例えば、データ・オブジェクト・レプリカの数は、別々のノード１２０の数、及び／又は別々の記憶リソース１３０を規定し得る所定の複製因子に対応し得る。
【００７８】
再配分モジュール１１７０は、ノード１２０がネットワーク１１０に追加され、若しくはネットワーク１１０から除去され、又は、記憶リソース１３０の利用可能な容量が特定のノード１２０内で変更された場合にコンシステント名前空間２１０内の一意の仮想識別子２２０を再配分するよう構成することが可能である。上述のように、仮想識別子の配分の目的は、データ・オブジェクトのアドレス指定の高速化を容易にするためにコンシステント名前空間２１０内の識別子の幾分一貫した分布を得ることである。
【００７９】
図１２はコンピュータ・ネットワーク・インフラストラクチャ１００内のデータ・オブジェクトを管理する方法１２００を示すプロセス・フロー図である。方法１２００は、ハードウェア（例えば、専用ロジック、プログラマブル・ロジック、及びマイクロコード）、（汎用コンピュータ・システム上若しくは専用マシン上で実行されるソフトウェアなどの）ソフトウェア、又はそれぞれの組み合わせを含み得るロジックによって行い得る。例示的な一実施例では、処理ロジックは名前空間マネージャ１１００に存在し、名前空間マネージャ１１００の種々のモジュールが方法１２００を行うことが可能である。上記モジュールの例は仮想であり得、モジュールによって実行される命令は実際に、名前空間マネージャ１１００によって取り出し、実行し得る。種々のモジュールが、本明細書及び特許請求の範囲記載の種々の工程の一部又は全部を行うよう構成し得るが、より少ない、又はより多いモジュールを提供し、種々の実施例の範囲内になお収まり得る。
【００８０】
図１２に示すように、ネットワーク１１０にわたって共有されるデータ・オブジェクトの記憶処理に関係する記憶リソース１３０毎に物理識別子モジュール１１１０が物理識別子を確立する動作１２１０で始まり得る。
【００８１】
動作１２２０では、仮想識別子モジュール１１２０は、先行する動作において生成された物理識別子に基づいて記憶リソース１３０毎に複数の一意の仮想識別子２２０を生成する。一般に、複数の前述の仮想識別子が、動作１２１０において生成された物理識別子へのコンシステント・ハッシング手順の適用に照らして生成される。生成された仮想識別子２２０は、全てのノード１２０にアクセス可能なコンシステント名前空間２１０に記憶することが可能である。
【００８２】
動作１２３０では、オブジェクト識別子モジュール１１３０は、記憶リソース１３０に記憶された１つ又は複数のデータ・オブジェクトの１つ又は複数のオブジェクト識別子を生成する。前述のオブジェクト識別子は、データ・オブジェクトの記憶リソース位置に関連付けることが可能である。
【００８３】
動作１２４０では、マッピング・モジュール１１４０はオブジェクト識別子のコンシステント名前空間２１０へのマッピングを行う。マッピングされたオブジェクト識別子は、前述のデータ・オブジェクトを位置特定し、前述のデータ・オブジェクトにアクセスするためにネットワーク１１０のノード１２０にわたるリングウォーク・アルゴリズムへの入力を定める。
【００８４】
次の動作１２５０では、経由モジュール１１５０は、データ・オブジェクトを位置特定し、データ・オブジェクトにアクセスするためにネットワーク１１０内の何れのノード１２０からもコンシステント名前空間２１０を経由することを可能にする。前述の動作はコンシステント名前空間２１０を経由することを容易にし、更に、前述の動作には、特定のデータ・オブジェクトを位置特定するための、オブジェクト識別子を記憶する特定の物理名前空間２００へのコンシステント名前空間２１０を介したナビゲーション、又は上記ナビゲーションを可能にすることが関係し得る。
【００８５】
図１３は、本明細書及び特許請求の範囲記載の方法論の何れかの１つ又は複数のマシンに行わせるための命令の組を実行し得るコンピュータ・システム１３００の例示的な電子的形態におけるマシンのコンピューティング装置の概略図を示す。種々の例示的な実施例では、マシンはスタンドアロン装置として動作するか、又は他のマシンに接続（例えば、ネットワーク化）することが可能である。ネットワーク化された展開では、マシンは、クライアントサーバ・ネットワーク環境におけるサーバ又はクライアント・マシンとして、又は、ピアツーピア（若しくは分散）ネットワーク環境におけるピア・マシンとして動作することが可能である。マシンは、パソコン（ＰＣ）、タブレットＰＣ、セットトップ・ボックス（ＳＴＢ）、ＰＤＡ、セルラ電話機、ディジタル・カメラ、ポータブル音楽プレイヤ（例えば、動画像専門家グループ・オーディオ・レイヤ３（ＭＰ３）プレイヤなどのポータブル・ハード・ドライブ・オーディオ装置）、ウェブ家電製品、ネットワーク・ルータ、スイッチ、ブリッジ、又は、当該マシンによって行われる対象の動作を規定する（シーケンシャル又はその他の）命令の組を実行することができる何れかのマシンであり得る。更に、単一のマシンのみを示しているが、「マシン」の語は更に、本明細書及び特許請求の範囲記載の方法論の何れか１つ又は複数を行うための命令の組（若しくは複数の組）を個々に、又は一緒に実行するマシンの何れかの収集物を含むと解される。
【００８６】
例示的なコンピュータ・システム１３００は、バス１３１０を介して互いに通信し合う１つ又は複数のプロセッサ１３０２、ハード・ディスク・ドライブ１３０４、主メモリ１３０６、及びスタティック・メモリ１３０８を含む。コンピュータ・システムは更に、ネットワーク・インタフェース装置１３１２を含み得る。ハード・ディスク・ドライブ１３０４は、本明細書及び特許請求の範囲記載の方法論又は機能の何れか１つ又は複数を実施するか、又は上記何れか１つ又は複数によって利用される命令１３２２の１つ又は複数の組を記憶するマシン読み取り可能な媒体１３２０を含み得る。命令１３２２は更に、コンピュータ・システム１３００によるその実行中に主メモリ１３０６内に、及び／又はプロセッサ１３０２内に全体的に、若しくは少なくとも部分的に存在し得る。主メモリ１３０６及びプロセッサ１３０２も、マシン読み取り可能な媒体を構成する。
【００８７】
マシン読み取り可能な媒体１３２０が単一の媒体であるとして例示的な実施例に示しているが、「マシン読み取り可能な媒体」の語は、命令の１つ又は複数の組を記憶する単一の媒体又は複数の媒体（例えば、中央データベース若しくは分散データベース、並びに／又は関連付けられたキャッシュ及びサーバ）を含むと解されるものとする。「マシン読み取り可能な媒体」の語は更に、マシンによる実行のための命令の組を記憶し、コード化し、若しくは収容することができ、又は、本出願の方法論の何れか１つ又は複数をマシンに行わせ、又は、前述の命令の組によって利用され、若しくは、前述の命令の組に関連付けられるデータ構造を収容することができる何れかの媒体を含むよう解されるものとする。「マシン読み取り可能な媒体」の語はよって、ソリッドステート・メモリ、光媒体、及び磁気媒体に限定されないが、それらを含むよう解されるものとする。前述の媒体は、限定列挙でないが、ハード・ディスク、フロッピー（登録商標）・ディスク、ＮＡＮＤ又はＮＯＲフラッシュ・メモリ、ディジタル・ビデオ・ディスク、ＲＡＭ、ＲＯＭ等を含み得る。
【００８８】
本明細書及び特許請求の範囲記載の例示的な実施例は、コンピュータ上に、ハードウェアに、又はソフトウェア及びハードウェアの組み合わせにインストールされたコンピュータ実行可能な命令（例えば、ソフトウェア）を備える動作環境において実現することが可能である。コンピュータ読み取り可能な命令は、コンピュータ・プログラミング言語で記述することが可能であり、又は、ファームウェア・ロジックで実施することが可能である。認知された標準に準拠したプログラミング言語で記述された場合、前述の命令は、種々のハードウェア・プラットフォーム上、及び種々のオペレーティング・システムとのインタフェースに対して実行することが可能である。限定列挙でないが、本願の方法を実現するためのコンピュータ・ソフトウェア・プログラムは、例えば、Ｃ、ゴー（Ｇｏ）、パイソン（Ｐｙｔｈｏｎ）若しくは他のコンパイラ、アセンブラ、インタープリタ、又は他のコンピュータの言語若しくはプラットフォームなどの何れかの数の適切なプログラミング言語で記述することが可能である。
【００８９】
このようにして、データ記憶媒体においてデータを管理するコンピュータによって実現された方法及びシステムについて説明している。実施例を特定の例示的な実施例を参照して説明してきたが、本発明のより広い趣旨及び範囲から逸脱しない限り、種々の修正及び変更を前述の例示的な実施例に対して行うことが可能である。よって、明細書及び添付図面は、制限的意味合いというよりもむしろ例証的意味合いでとらえられるものとする。
【図１】
2015512551.tif 000022
【図２】
2015512551.tif 000023
【図３】
2015512551.tif 000024
【図４】
2015512551.tif 000025
【図５】
2015512551.tif 000026
【図６】
2015512551.tif 000027
【図７】
2015512551.tif 000028
【図８】
2015512551.tif 000029
【図９】
2015512551.tif 000030
【図１０】
2015512551.tif 000031
【図１１】
2015512551.tif 000032
【図１２】
2015512551.tif 000033
【図１３】
2015512551.tif 000034
【国際調査報告】
2015512551.tif 000035