特許第5967673号(P5967673)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ コンピュヴェルデ アクチエボラグの特許一覧

<>
  • 特許5967673-データメンテナンス用の方法 図000002
  • 特許5967673-データメンテナンス用の方法 図000003
  • 特許5967673-データメンテナンス用の方法 図000004
  • 特許5967673-データメンテナンス用の方法 図000005
  • 特許5967673-データメンテナンス用の方法 図000006
  • 特許5967673-データメンテナンス用の方法 図000007
  • 特許5967673-データメンテナンス用の方法 図000008
  • 特許5967673-データメンテナンス用の方法 図000009
  • 特許5967673-データメンテナンス用の方法 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5967673
(24)【登録日】2016年7月15日
(45)【発行日】2016年8月10日
(54)【発明の名称】データメンテナンス用の方法
(51)【国際特許分類】
   G06F 12/00 20060101AFI20160728BHJP
   G06F 17/30 20060101ALI20160728BHJP
【FI】
   G06F12/00 545A
   G06F12/00 531D
   G06F17/30 110C
   G06F17/30 419B
【請求項の数】9
【全頁数】17
(21)【出願番号】特願2014-527640(P2014-527640)
(86)(22)【出願日】2012年8月29日
(65)【公表番号】特表2014-529814(P2014-529814A)
(43)【公表日】2014年11月13日
(86)【国際出願番号】EP2012066739
(87)【国際公開番号】WO2013030217
(87)【国際公開日】20130307
【審査請求日】2014年6月24日
(31)【優先権主張番号】13/224,415
(32)【優先日】2011年9月2日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】514049531
【氏名又は名称】コンピュヴェルデ アクチエボラグ
【氏名又は名称原語表記】Compuverde AB
(74)【代理人】
【識別番号】110001302
【氏名又は名称】特許業務法人北青山インターナショナル
(72)【発明者】
【氏名】ベルンボ,ステファン
(72)【発明者】
【氏名】メランデル,クリスティアン
(72)【発明者】
【氏名】パーション,ロイェル
(72)【発明者】
【氏名】ペッテション,グスタフ
【審査官】 篠塚 隆
(56)【参考文献】
【文献】 国際公開第2010/046393(WO,A1)
【文献】 特開2004−5491(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/00
17/30
(57)【特許請求の範囲】
【請求項1】
データ記憶システムにおいてデータを維持するための方法において、前記データ記憶システムが、通信ネットワークによって相互接続されたデータ記憶ノード(15)を含み、前記方法が、
第1のデータ項目に対する要求を前記複数の記憶ノードの少なくとも1つにマルチキャストによって送信すること(41)において、前記第1のデータ項目が、前記記憶システムに記憶された第2のデータ項目への参照を含む、送信することと、
前記複数の記憶ノードの少なくとも1つの記憶ノードから前記第1のデータ項目を受信すること(43)と
前記第2のデータ項目に対する要求を前記複数の記憶ノードのサブセットにマルチキャストによって送信すること(41)において、前記サブセットが、前記第1のデータ項目に含まれる前記参照に基づいて決定される、送信することと、
を含み、
前記第1のデータ項目が第1の一意キーに関連付けられ、前記第2のデータ項目が第2の一意キーに関連付けられ、前記第1及び第2の一意キーのそれぞれがクラスタアドレス及びデータ項目識別子を含み、
前記クラスタアドレスが、前記システム内における前記記憶ノードのサブセットを識別し、汎用一意識別子、すなわちUUIDである前記データ項目識別子が、前記記憶ノードのサブセット上に記憶されたデータ項目を識別し、前記第2のデータ項目が前記受信された第1のデータ項目からの前記一意キーに基づいて識別されることを特徴とする方法。
【請求項2】
請求項に記載の方法において、前記第1及び第2の要求をアプリケーションプログラミングインターフェース、すなわちAPIから送信することを更に含むことを特徴とする方法。
【請求項3】
請求項に記載の方法において、前記APIが、前記記憶システムと通信するサーバ上で実行されることを特徴とする方法。
【請求項4】
請求項に記載の方法において、前記APIが、前記記憶システム内の記憶ノード上で実行されることを特徴とする方法。
【請求項5】
請求項に記載の方法において、前記第1のデータ項目が、前記APIで受信され、前記第1の一意キーが、前記APIにおいて識別されることを特徴とする方法。
【請求項6】
請求項1に記載の方法において、前記第2のデータ項目が、第3のデータ項目への参照を含むことを特徴とする方法。
【請求項7】
請求項1に記載の方法において、前記第2のデータ項目が、ペイロードデータを含むことを特徴とする方法。
【請求項8】
請求項に記載の方法において、前記ペイロードデータが、画像ファイルであることを特徴とする方法。
【請求項9】
通信ネットワークを介して相互接続された他のデータ記憶ノードを含むデータ記憶システムにおけるデータ記憶ノードにおいて、当該データ記憶ノードが、
前記通信ネットワークを介して通信するように構成された通信インターフェースと、
アプリケーションプログラミングインターフェース、すなわちAPI(23)において、
第1のデータ項目に対する要求を、前記通信インターフェースを介して複数の記憶ノードにマルチキャストによって送信するように、
前記通信インターフェースを介して前記複数の記憶ノードの少なくとも1つの記憶ノードから前記第1のデータ項目を受信し、前記第1のデータ項目が、前記記憶システムに記憶された第2のデータ項目への参照を含むように、
前記第1のデータ項目に含まれる前記参照に基づいて、前記第2のデータ項目に対する要求を送信する相手の前記複数の記憶ノードのサブセットを決定するように、
前記第2のデータ項目に対する前記要求を前記複数の記憶ノードの前記サブセットにマルチキャストによって送信するように構成されたアプリケーションプログラミングインターフェースと、
を特徴とし、
前記第1のデータ項目が第1の一意キーに関連付けられ、前記第2のデータ項目が第2の一意キーに関連付けられ、前記第1及び第2の一意キーのそれぞれがクラスタアドレス及びデータ項目識別子を含み、
前記クラスタアドレスが、前記システム内における前記記憶ノードのサブセットを識別し、汎用一意識別子、すなわちUUIDである前記データ項目識別子が、前記記憶ノードサブセット上に記憶されたデータ項目を識別し、前記第2のデータ項目が前記受信された第1のデータ項目からの前記一意キーに基づいて識別されることを特徴とするデータ記憶ノード。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、複数のデータ記憶ノードを含むデータ記憶システムにおけるデータにアクセスし、データを書き込み、且つデータを削除する装置及び方法に関し、方法は、データ記憶システムにおけるサーバ及び/又は記憶ノードにおいて利用され得る。本開示は、更に、かかる方法を実行できる記憶ノード又はサーバに関する。
【背景技術】
【0002】
かかる方法は、米国特許出願公開第2005/0246393 A1号明細書に開示されている。この方法は、地理的に異なる場所における複数の記憶センタを使用可能なシステム用に開示されている。記憶データに関する情報を維持するために、分散オブジェクト記憶マネージャが含まれても良い。
【発明の概要】
【0003】
かかるシステムに関連する1つの問題は、単純であるが堅固で信頼できるデータメンテナンスをどのように達成するかということである。
【課題を解決するための手段】
【0004】
通信ネットワークによって相互接続されたデータ記憶ノードを含むデータ記憶システムにおいてデータを維持する方法が開示される。方法は、第1のデータ項目に対する要求を複数の記憶ノードに送信することを含んでも良い。第1のデータ項目は、記憶システムに記憶された第2のデータ項目への参照を含んでも良い。方法はまた、少なくとも1つの記憶ノードから第1のデータ項目を受信すること、及び/又は例えば第1のデータ項目に含まれる参照に基づいて、第2のデータ項目に対する要求を複数の記憶ノードに送信することを含んでも良い。
【0005】
実施形態において、仮想ディレクトリ構造が、構造化されていない方法でファイルが記憶される記憶システムにおいて実現されても良い。
【0006】
第1及び第2のデータエンティティに対する要求は、マルチキャストによって送信されても良い。
【0007】
例えば、マルチキャストを利用することによって、多くの記憶ノードが、容易にアクセスされ得る。
【0008】
第1及び第2のデータ項目は、第1及び第2の一意キーによって識別されても良い。
【0009】
実施形態において、記憶システムにおけるファイルは、システムにおけるそれらの位置に関係なく、直接アクセスされ得る。
【0010】
第1及び第2の一意キーは、システム内における前記記憶ノードのサブセットを指し示すクラスタアドレス、及び/又は記憶ノードのサブセット内におけるデータ項目を識別するデータ項目識別子を含んでも良い。データ項目への参照は、一意キーを含んでも良い。
【0011】
実施形態において、方法は、大きな記憶システム、例えば何百又は何千もの記憶ノードを含む記憶システムにおいて実行されても良い。
【0012】
方法は、アプリケーションプログラミングインターフェースAPIから第1及び第2の要求を送信することを含んでも良い。
【0013】
例えば、記憶ノードにアクセスするために共通APIを利用することによって、方法は、多くのプラットホーム上で容易に実行され得る。
【0014】
APIは、記憶ノードと通信するサーバ上で実行されても良い。
【0015】
実施形態において、方法は、例えば、記憶ノードの維持に責任を負わなくても良い第三者によって設けられた専用装置上で実行されても良い。
【0016】
APIは、記憶ノードで実行されても良い。
【0017】
例示的な実施形態において、記憶ノードにおいてAPIを実行することによって、記憶システムへのアクセスポイントの数が増加されるようにすることが可能になる。
【0018】
方法は、APIが、受信された第1のデータ項目から、第2のデータ項目を識別する一意キーを検索することを含んでも良い。
【0019】
例えば、第2のデータ項目用の一意識別子は、一意識別子の表示が第1のデータ項目に含まれている場合に、容易に検索可能であり得る。
【0020】
方法は、第1のデータ項目を識別するキーをAPIにおいて受信することを含んでも良い。
【0021】
実施形態において、1つ又は複数のディレクトリ構造が、同時に実現されても良い。
【0022】
第2のデータ項目は、第3のデータ項目への参照を含んでも良い。
【0023】
例えば、実施形態において、多数のレベルを備えたディレクトリ構造が、実現されても良い。
【0024】
第2のデータ項目は、画像などのペイロードデータを含んでも良い。
【0025】
例えば、ペイロードデータを備えたデータファイルは、(例えばサブフォルダに記憶された)ディレクトリ構造の一部であっても良い。
【0026】
第1のデータ項目は、ユニキャストによって送信されても良い。
【0027】
例えば、ユニキャストを利用することによって、データ項目は、帯域幅を効率的に利用する方法で転送され得る。
【0028】
実施形態によれば、通信ネットワークによって相互接続されたデータ記憶ノードを含むデータ記憶システムにおいてデータを維持する方法は、サーバ及び/又はデータ記憶ノードにおいて実行されても良い。方法は、第1のデータ項目を少なくとも1つの記憶ノードに記憶することを含んでも良い。方法はまた、少なくとも1つの記憶ノードに記憶された第2のデータ項目を更新することを含んでも良い。例えば、第2のデータ項目は、第1のデータ項目への参照を第2のデータ項目に追加によって更新されても良い。第2のデータ項目の更新は、第2のデータ項目のコピーを記憶する少なくとも1つの記憶ノードに要求を送信することを含んでも良い。要求は、その少なくとも1つの記憶ノードが、第1のデータ項目への参照を第2のデータ項目に追加することを命令及び/又は要求しても良い。
【0029】
実施形態において、新しい項目は、例えば新しい項目への参照をディレクトリ構造における他の項目に追加することによって、ディレクトリ構造に容易に追加され得る。
【0030】
実施形態によれば、データを維持するための方法は、データ記憶システムに含まれるサーバ又はデータ記憶ノードにおいて実行されても良い。データ記憶ノードは、通信ネットワークによって相互接続されても良い。方法は、少なくとも1つの記憶ノードに記憶された第1のデータ項目を削除することを含んでも良い。方法はまた、第2のデータ項目における第2のデータ項目への参照を削除することによって、少なくとも1つの記憶ノードに記憶された第2のデータ項目を更新することを含んでも良い。
【0031】
例示的な実施形態において、ディレクトリ構造における項目は、例えば項目への参照を削除することによって容易に削除され得る。
【0032】
実施形態によれば、データ記憶システムは、通信ネットワークによって相互接続されたデータ記憶ノードを含んでも良い。サーバ又はノードは、アプリケーションプログラミングインターフェースAPIを含んでも良く、且つ第1のデータ項目に対する要求を複数の記憶ノードに送信するように構成されても良い。第1のデータ項目は、記憶システムに記憶された第2のデータ項目への参照を含んでも良い。少なくとも1つの記憶ノードは、第1のデータ項目をAPIに送信するように構成されても良い。API及び/又は記憶ノード若しくはサーバは、第1のデータ項目に含まれる参照に基づいて、第2のデータ項目に対する要求を複数の記憶ノードに送信するように更に構成されても良い。
【0033】
例えば、仮想ディレクトリ構造は、構造化されていない方法でファイルが記憶される記憶システムにおいて実現されても良い。
【0034】
開示される実施形態の他の目的、特徴及び利点は、以下の詳細な開示から、添付の特許請求の範囲から、同様に図面から明らかになり得る。
【0035】
一般に、特許請求の範囲において用いられる全ての用語は、本明細書において明示的に別段の定義がなされていなければ、当該技術分野におけるそれらの通常の意味に従って解釈されるべきである。「a/an/the[要素、装置、コンポーネント、手段、ステップ等]」への全ての言及は、明示的に別段の言明がなければ、前記要素、装置、コンポーネント、手段、ステップ等の少なくとも1つの例を指すものとしてオープンに解釈されるべきである。本明細書で開示されるどんな方法のステップも、明示的な言明がなければ、開示された正確な順序で実行される必要はない。
【0036】
開示される実施形態の上記の、同様に追加の目的、特徴、及び利点は、添付の図面への参照と共に、以下の例示的で非限定的な詳細な説明を通して一層良く理解されよう。図面において、同じ参照数字は、同様の要素に使用される可能性がある。
【図面の簡単な説明】
【0037】
図1図1は、例示的な記憶システムの概略図である。
図2図2は、記憶システムに記憶された多数のデータ項目の例示的な概略ブロック図である。
図3図3は、例示的なデータ項目識別子の概略ブロック図である。
図4図4は、データを検索するための例示的な方法の概略ブロック図である。
図5a図5aは、記憶システムにおける異なるエンティティ間の例示的な通信の実例である。
図5b図5bは、記憶システムにおける異なるエンティティ間の例示的な通信の実例である。
図5c図5cは、記憶システムにおける異なるエンティティ間の例示的な通信の実例である。
図6図6は、データを記憶するための例示的な方法の概略ブロック図である。
図7図7は、データを削除するための例示的な方法の概略ブロック図である。
【発明を実施するための形態】
【0038】
開示される方法及びシステムの詳細な実施形態が、図面に関連して説明され得る。本開示は、複数の記憶ノードを含む分散データ記憶システムに関する。システムの例示的な構造及びそれが使用され得るコンテキストが、図1に概説されている。
【0039】
ユーザコンピュータ1が、例えばインターネット3を介して、サーバ7を走行するアプリケーション5にアクセスしても良い。従って、本明細書で示されているように、ユーザコンテキストは、クライアントサーバ構成であっても良い。しかしながら、開示されるデータ記憶システムが、例えば他の通信方法を利用する他の構成においてもまた有用であり得ることに留意されたい。
【0040】
図示の事例において、2つのアプリケーション5、9がサーバ7上を走行しても良い。しかしながら、もちろん、任意の数のアプリケーションが、サーバ7上を走行しても良い。各アプリケーションは、分散データ記憶システム13に関連するインターフェースを提供し得る、且つサーバ上を走行するアプリケーションからの要求、例えば書き込み及び読み出し要求をサポートできるAPI(アプリケーションプログラミングインターフェース)11を有しても良い。データは、2011年4月21日出願の米国特許出願第13/125,524号明細書に詳細に説明されている方法を用いて、記憶システムから読み出し、且つそこに書き込んでも良く、その特許出願の内容は、これによって、参照により本明細書に援用される。従って、データの読み出し及び書き込み方法は、本明細書において更に詳細には説明されなくても良い。アプリケーションの観点からは、データ記憶システム13からの読み出し又はそこへの書き込み情報は、任意の他のタイプの記憶ソリューション、例えばファイルサーバ又はハードドライブを用いるのと同じに見える可能性がある。
【0041】
各API11は、データ記憶システム13における記憶ノード15と通信しても良く、記憶ノードは、互いに通信しても良い。代替又は追加として、記憶ノード15の1つ又は複数は、上記で開示されたような要求をサポートするためのAPI23を含んでも良い。これらの通信は、TCP(伝送制御プロトコル)及びUDP(ユーザデータグラムプロトコル)に基づいても良い。また、他の通信プロトコルを利用しても良い。
【0042】
分散データ記憶システムのコンポーネントは、記憶ノード15及び記憶ノード15にアクセス可能なサーバ7におけるAPI11であっても良い。本開示は、サーバ7及び記憶ノード15において実行される方法に関連して説明され得る。これらの方法は、主に、サーバ及び記憶ノード上でそれぞれ実行されるソフトウェア/ハードウェア組み合わせインプリメンテーションとして具体化されても良い。サーバ及び記憶ノードの動作は、全体的な分散データ記憶システムの動作及び特性を一緒に決定しても良い。
【0043】
図1において、サーバ7は、記憶ノード15とは別個の、記憶システム13のメンバとして示されているが、サーバ7が、サーバ機能を含む記憶ノードであっても良いことに留意されたい。
【0044】
記憶ノード15は、典型的には、多数の機能ブロックを設けられたファイルサーバによって具体化されても良い。従って、記憶ノードは、例えば、RAID(独立ディスクの冗長アレイ)として任意選択的に構成された多数の内部ハードドライブ(例えば統合ドライブエレクトロニクス(IDE)、シリアルアドバンストテクノロジアタッチメント(SATA)などを介して接続された)又は外部ハードドライブ(例えば、ユニバーサルシリアルバス(USB)、ファイアワイヤ、ブルートゥースなどを介して接続された)を含み得る記憶媒体17を含んでも良い。しかしながら、他のタイプの記憶媒体が、同様に考えられる。
【0045】
各記憶ノード15は、ノードリスト、即ち、その記憶ノードセット又はグループにおける全ての記憶ノードのIPアドレスを含むノードリストを含んでも良い。グループにおける記憶ノードの数は、少数から何百又は何千の記憶ノードまで異なっても良い。
【0046】
記憶媒体17は、収集対象19の形態をした1つ若しくは複数のデータ項目19、21、又はデータファイル21の形態をしたペイロードデータを記憶しても良い。収集対象19は、参照セットを含んでも良い。参照は、記憶システムに記憶された1つ又は複数のデータファイル、例えばデータファイル21への参照であっても良い。参照はまた、記憶システムに記憶された別の収集対象19への参照であっても良い。参照は、記憶ノード15の記憶位置に対するポインタ(例えばメモリアドレス)を含んでも良い。参照は、参照される収集対象又はデータファイルの識別子を含んでも良い。
【0047】
以下でより詳細に開示されるように、収集対象19は、記憶システムにおいて構造化層を実現するために使用されても良い。収集対象19において参照されるデータファイル21は、かかるインプリメンテーションにおいて、構造において記憶されたデータファイルを表しても良い。収集対象19において参照される追加収集対象19は、かかるインプリメンテーションにおいて、ディレクトリに記憶されたサブディレクトリを表しても良い。
【0048】
収集対象19は、所定のフォーマットを有するデータ対象として具体化されても良い。データ対象は、それがAPIによって解釈されるバイナリファイルであっても良いという意味で、記憶媒体17のファイルシステムにおける特別なファイルであっても良い。例において、データ対象は、記憶媒体17のファイルシステムにおける標準データファイルであっても良い。データ対象は、例えば、参照される収集対象19及び/又はデータファイル21を示すプレーンテキストファイルであっても良い。データ対象は、ファイル21と同じ、ファイルシステムのルーチンを用いて、読み取り可能であっても良い。
【0049】
図2は、一実施形態に従って収集対象19aを概略的に示す。収集対象19aは、関連する収集対象識別子20aを有しても良い。識別子20aは、例えば、汎用一意識別子(UUID)であっても良い。収集対象識別子20aは、収集対象19aのヘッダに含まれても良い。しかしながら、収集対象識別子20aは、例えば収集対象19aに含まれるのではなく、記憶ノード15に維持されるレジスタに記憶されても良い。例において、UUID及び/又は記憶ノード15に維持されるレジスタは、例えば収集対象19aが見つけられることになるメモリアドレスを指し示すことによって、収集対象19aを収集対象識別子20aと関連付けても良い。従って、収集対象19aは、第1の一意キーによって識別される第1のデータ項目を形成しても良い。
【0050】
収集対象19aは、例えばストリングの形態で、別の収集対象19bの識別子20bを備えたフィールド22aを含んでも良い。収集対象19aは、収集対象19bへの参照を含んでも良い。収集対象19bは、収集対象19aと同じ記憶ノード上に、又は収集対象19aとは別の記憶ノード上に記憶されても良い。記憶システムは、収集対象19bの位置を特定してアクセスするために、フィールド22aにおける識別子20bを利用しても良い。従って、収集対象19bは、第2の一意キーによって識別される第2のデータ項目を形成しても良い。
【0051】
一実施形態において、多数のネットワークにわたる大きな記憶システムを実現するために、データ項目識別子20a−dは、2つのデータ要素を含んでも良い。図3を参照すると、第1のデータ要素30は、データ項目(収集対象19a−c又はデータファイル21a)が位置するクラスタを識別可能なクラスタID31であっても良い。クラスタアドレスは、マルチキャストアドレス32であっても良い。マルチキャストアドレス32は、データ項目に対する要求を特定のクラスタに送るために、APIによって利用されても良い。第2のデータ要素33は、クラスタ内のデータ項目19a−dを識別する一意番号35によって形成されたデータ項目ID34であっても良い。一意番号35は、定義された長さ、例えば128ビットを備えた番号であっても良く、又は長さは、変化しても良い。一意番号35は、多数のビットを含んで、多数のデータ項目をクラスタ内で一意に識別できるようにしても良い。この配置によって、一クラスタにおける収集要素は、別のクラスタにおける別の収集要素又はデータファイルを参照し得る。換言すれば、第1及び第2の一意キーは、システム内における記憶ノードのサブセットを指し示すクラスタアドレス、及び記憶ノードのサブセット内におけるデータ項目を識別するデータ項目識別子を含んでも良い。
【0052】
再び図1及び2に参照すると、サーバ7は、例えば、特定の識別子(例えば識別子20a)に関連する収集対象(例えば収集対象19a)を記憶する記憶ノード15を示すレジスタを含んでも良い。別の例において、収集対象19aは、米国特許出願第13/125,524号明細書に開示されている読み出し方法を用いて位置を特定されても良い。簡潔に言えば、この読み出し方法によれば、サーバ7又は記憶ノード15は、複数の記憶ノード15にマルチキャストメッセージを送信しても良い。マルチキャストメッセージは、所望の収集対象19aの識別子20aを含んでも良い。各記憶ノード15は、マルチキャストメッセージの受信に応じて、前記識別子を有する収集対象のために、自らの記憶媒体17を走査しても良い。見つかった場合に、記憶ノード15は、それが、求められている対象を記憶していることをマルチキャストメッセージの発信者に応答して知らせても良い。次に、収集対象19aは、収集対象19aを記憶する応答記憶ノード15に送信されたユニキャスト要求によってアクセスされても良い。
【0053】
本実施形態によれば、マルチキャスト通信は、複数の記憶ノードと同時に通信するために使用されても良い。マルチキャスト又はIPマルチキャストによって、本明細書では、マルチキャストアプリケーション用に取っておいても良いIPアドレスにメッセージを送信することによって達成され得るポイントツーマルチポイント通信が意味される。例えば、メッセージ、例えば要求は、かかるIPアドレス(例えば244.0.0.1)に送信されても良く、多くの受信サーバが、そのIPアドレスへの申込者として登録されても良い。受信サーバのそれぞれは、それ自体のIPアドレスを有しても良い。ネットワークにおけるスイッチが、244.0.0.1に向けられたメッセージを受信した場合に、スイッチは、そのメッセージを、申込者として登録された各サーバのIPアドレスに転送しても良い。
【0054】
原則として、単一のサーバが、マルチキャストアドレスへの申込者として登録されても良く、その場合に、ポイントツーポイント通信が、達成され得る。しかしながら、この開示のコンテキストにおいて、かかる通信は、マルチキャスト方式が用いられるので、やはりマルチキャスト通信と考えられ得る。
【0055】
本実施形態によれば、ユニキャスト通信は、単一の受信者との通信を指しても良い。ユニキャスト通信は、ネットワークの関係者によって開始されても良く、単一の特定の受信者に向けられても良い。
【0056】
収集対象19aに加えて、収集対象19bは、第3の収集対象19cの識別子20cを備えたフィールド22bを含んでも良い。収集対象19cは、データファイル21aの識別子20dを備えたフィールド22cを含んでも良い。換言すれば、収集対象19a−cのどれでも(又は例えば収集対象19a−cのそれぞれ)が、第3のデータ項目への参照を含む第2のデータ項目を表しても良く、データファイル21aは、ペイロードデータ、例えば画像を含む第2のデータ項目を表しても良い。
【0057】
ルート収集対象として収集対象19aを指定することによって、収集対象19aは、記憶システムのルートディレクトリ19aを表しても良い。同様に、収集対象19bは、ルートディレクトリ19aのサブディレクトリ19bを表しても良い。収集対象19cは、サブディレクトリ19bのサブディレクトリを表しても良い。データファイル21aは、サブディレクトリ19cに記憶されたデータファイルを表しても良い。このように、収集対象19a−cは、階層記憶構造を定義しても良い。構造は、ディレクトリツリーと呼ばれても良い。
【0058】
図4及び5a−cを参照すると、記憶ノード15に記憶されたファイル19、21にアクセスするために、ディレクトリ構造を解析するための方法が開示され得る。
【0059】
ディレクトリ構造の出発点は、所定のルートキーであっても良い。例えば、記憶ノード15のどれも、ルートキーを含んでも良い。このキーは、記憶クラスタの外部に記憶されても良く、且つディレクトリ構造における第1のデータ項目(例えば収集対象19a)を識別するために用いられても良い。記憶クラスタは、ユーザが、同じ記憶クラスタ内に記憶された多数の個別ディレクトリ構造を有することができるようにする多数のルートキーを有しても良い。ディレクトリ構造は、いくつかの記憶クラスタにわたっても良い。ルートキーは、クラスタ内に記憶されたディレクトリ構造を示す外部情報と一緒に記憶されも良い。
【0060】
ブロック40において、サーバ7は、ルートキーを受信しても良く、ルートキーは、第1のデータ項目19、21を識別しても良く、且つ記憶システム内のファイルを識別する一意識別子をAPI11に伝達しても良い。例において、API23は、記憶ノード15において実行されても良く、ルートキーは、サーバ7ではなく記憶ノード15で受信されても良い。
【0061】
ブロック41において、サーバ7におけるAPI11は、ルートキーによって識別されたデータ項目(例えば収集対象19a)に対する要求を、記憶システムにおける記憶ノード15a−e又はノードのサブセットにマルチキャストしても良い。例えば、マルチキャストメッセージは、例えば図3に関連して開示されたデータ項目識別子構成を用いて、特定のクラスタに送信されても良い。一実施形態によれば、ルートキーによって識別されたデータ項目(例えば収集対象19a)は、それが、システムによって使用され得る追加メタデータを含んでも良いという意味で、特定のデータ項目であっても良い。かかるデータの例は、ディレクトリ構造における項目へのアクセス許可に関する情報、あるデータ項目をどこに(例えば、ソリッドステートドライブ(SSD)など、迅速なアクセスを備えた記憶ノード上に)記憶するかの情報等であっても良い。
【0062】
ブロック42において、記憶ノード15a−eは、マルチキャストメッセージの受信に応じて、ルートキーにおけるデータ項目ID34によって識別されるデータ項目の位置を特定しようとして、自らのそれぞれの記憶媒体17を走査しても良い。
【0063】
説明のために、ノード15b及び15eが、データ項目ID34によって識別されるデータ項目の位置を特定することが、この例において仮定されても良い。ブロック43において、データ項目を見つけたノード15b、15eは、どの他のノード15b、15d、15eが、ノード15b、15eにおけるデータ項目及び現在の実行負荷(例えば、ノードがどれくらい忙しいか、ノードがどれほど多数の要求を受信したか、どれだけの空き空間がノード上にあるか等)に関する情報を用いて応答しても良い。要求されたデータ項目は、複数の記憶ノード15b、15d、15eに記憶されている可能性があり、APIは、ノード15b、15d、15eから受信された情報を収集しても良く、且つAPIが、データ項目の検索のためにどのノードを選択するかに関する決定し得る前に、APIが、データ項目を含むリストされた記憶ノード15b、15d、15eの50%超から応答を受信するまで、待っても良い。決定は、最低の実行負荷を有するどのノードに基づいても良い。
【0064】
ブロック44において、API11は、特定のファイルに対するユニキャスト要求を、選択された記憶ノードに送信しても良い。この例において、説明のために、記憶ノード15bが選択されることが仮定されても良い。API11は、記憶ノード15bからデータ項目を検索しても良い。API11は、選択されたノード15bとの読み出し又は通信障害の場合には、ファイルのコピーを記憶する全ての記憶ノード15b、15d、15eのリストを維持しても良い。エラーが発生した場合に、API11は、リストにおいて次善のノードを明白に選択し、読み出し動作を継続しても良い。
【0065】
ブロック45において、APIは、検索されたデータ項目の内容を解釈しても良い。ディレクトリ構造が追加のレベルを含む場合に、検索されるデータ項目は、収集対象19bであっても良い。そうならば、API11は、ディレクトリ構造における別の収集対象19cを指す識別子20bを含み得るフィールド22bを読み出しても良い。例えば、APIは、第2のデータ項目、例えば収集対象19bを識別する一意キー、即ち識別子20bを、受信された第1のデータ項目、例えば収集対象19aから検索しても良い。次に、プロセスは、ブロック41に戻っても良く、且つディレクトリ構造の解析を継続しても良い。従って、第1及び第2の要求の両方とも、アプリケーションプログラミングインターフェースAPIから送信されても良い。プロセスは、ディレクトリ構造における最後の対象、例えばデータファイル21a、即ちそのファイルにおいてプロセスが、46で終了し得るデータファイル21aが識別され検索されてしまうまで、継続しても良い。別の例において、API11は、更新要求、例えばディレクトリ構造における対象に対応するデータ項目におけるデータを変更又は連結するコマンドを、識別された対象に送信しても良い。
【0066】
例として、データファイル21が、ディレクトリ構造のルートに位置することがあり得る。かかる場合に、プロセスは、一回ループされても良い。何故なら、最初に検索された収集対象19aが、データファイル21aへの参照を含み得るからである。データファイル21aへの参照を含むことに加えて、検索された収集対象がまた、収集対象19bなどの他のデータ項目への参照を含んでも良いことが強調される。
【0067】
従って、上記によれば、方法は、ファイルにアクセスするために通信ネットワークによって相互接続されたデータ記憶ノードを含むデータ記憶システムにおいて実行されても良い。方法は、第1のデータ項目19、21(例えば収集対象19a)に対する要求を、複数の記憶ノード15a−eに送信することを含んでも良い。第1のデータ項目は、記憶システムに記憶された第2のデータ項目(例えばデータファイル21a又は収集対象19b)への参照を含んでも良い。方法は、少なくとも1つの記憶ノード15bから第1のデータ項目を受信すること、及び第2のデータ項目に対する要求を、第1のデータ項目に含まれる参照に基づいて複数の記憶ノード15a−eに送信することを含んでも良い。
【0068】
実例として、図2を参照すると、APIは、ディレクトリ構造における経路を解決するために、参照されたエンベロープを再帰的に読み出して解釈しても良い。例えば、APIは、構造化された経路におけるファイルを表す非構造化キーを識別しても良い。例えば、記憶システムにアクセスするユーザは、経路
「/Documents/Sample_Pictures/Blue_Hills.jpg」
を解決したいと思うかも知れない。
【0069】
図2において、収集対象19aは、(一意キー20aによって識別される)ルートキー「/」を表しても良く、識別子22aは、(一意キー20bによって識別される)フォルダ「Documents/」を表す収集対象19bへの参照を含んでも良い。収集対象19bにおける識別子22bは、フォルダ「Sample_Pictures/」を表す収集対象19cへの参照を含んでも良い。最後に、収集対象19cにおける識別子22cは、ファイル「Blue_Hills.jpg」用のペイロードデータを含むデータファイル21aへの参照を含んでも良い。従って、収集対象における参照を再帰的に読み出すことによって、仮想ファイル構造が、非構造化記憶システムにおいて生成され得る。
【0070】
図6及び5a−cを参照すると、ファイル19、21を記憶ノード15に作成するためにディレクトリ構造を解析するための方法が開示されている。
【0071】
図4に開示されているシステムと同様に、ディレクトリ構造の出発点は、所定のルートキーである。ルートキーは、任意のキーであっても良く、システムの全体を通して多数のルートキーがあっても良い。このキーは、記憶クラスタの外部に記憶されても良く、且つディレクトリ構造における第1のデータ項目(例えば収集対象19a)を識別するために使用されても良い。
【0072】
ブロック60において、サーバ7は、ルートキーを受信しても良く、且つ記憶システム内のファイルを識別する一意識別子をAPIに伝達しても良い。
【0073】
ブロック61において、API11は、上記の方法に従って、所望のデータ項目への経路を解決しても良い。
【0074】
ブロック63において、サーバ7におけるAPI11は、例えば図3に関連して開示されたデータ項目識別子構成を用いて、識別子を含むデータ項目(例えば収集対象19c)を記憶するための要求を、記憶システムにおける全ての記憶ノード15a−eに、又は例えば特定のクラスタ内におけるノードのサブセットにマルチキャストしても良い。
【0075】
ブロック63において、記憶ノード15−eは、マルチキャストメッセージの受信に応じて、データ項目ID34がまだ使用されていないことを検証しても良い。
【0076】
ブロック64において、その特定の識別子を備えた既存ファイルを見つけられない記憶ノード15−eは、記憶ノードにおける自由な記憶空間、記憶ノードが走行しているハードウェアの使用年数の表示、現在のCPU負荷、並びに/又は緯度、経度、及び高度等の形態をした記憶ノード15−eの地理的位置を示し得る受信確認で応答しても良い。
【0077】
ブロック65において、API11は、マルチキャスト要求に応答した記憶ノードから返されたデータに基づいて、3つの記憶ノード(例えば記憶ノード15a、15b及び15e)を選択しても良い。3つの最も適切なノードが選択されると、API11は、データ項目を記憶する要求を3つのノードに同時に送信しても良い。選択されたノード15a、15b、15eの1つへのデータ項目の転送中にエラーが発生した場合に、例えば選択されたノードの50%超が動作可能である限り、動作は継続する。
【0078】
ブロック66において、ディレクトリ構造で1レベル高いデータ項目(例えば第1のデータ項目−収集対象19b)における識別子フィールド22bは、上記による読み出し方法に従い第1のデータ項目を検索することによって、又は例えばサーバが第1のデータ項目の識別子をキャッシュした場合には、第1のデータ項目に直接アクセスすることによって、記憶されたデータ項目(例えば収集対象19c)への参照を用いて更新されても良い。
【0079】
システムにおけるデータ完全性を向上させるために、上記の方法は、データ項目が記憶された後だが、しかし第1のデータ項目が更新される前に、全ての記憶ノードとの通信が失われるであろう場合に、データ項目を記憶する前に第1のデータ項目を検索する動作で補足されても良い。この手順によって、ひとたび記憶ノードとの通信が再開された場合に、APIは、更新手順を再開し得る。
【0080】
従って、上記によれば、方法は、通信ネットワークによって相互接続されたデータ記憶ノードを含むデータ記憶システム内の様々な装置において実行されても良い。方法は、第1のデータ項目を少なくとも1つの記憶ノードに記憶することと、第1のデータ項目への参照を第2のデータ項目に追加することによって、少なくとも1つの記憶ノードに記憶された第2のデータ項目を更新することと、を含んでも良い。
【0081】
図7及び5a−cを参照すると、記憶ノード15におけるファイル19、21を削除するためにディレクトリ構造を解析する方法が開示されている。
【0082】
図4に関連する開示と同様に、ディレクトリ構造の出発点は、所定の、しかし任意のルートキーであっても良い。このキーは、記憶クラスタの外部に記憶されても良く、且つディレクトリ構造における第1のデータ項目(例えば収集対象19a)を識別するために使用されても良い。
【0083】
ブロック70において、サーバ7は、ルートキーを受信しても良く、且つ記憶システム内のファイルを識別する一意識別子をAPIに伝達しても良い。
【0084】
ブロック71において、API11は、上記の方法に従って、所望のデータ項目への経路を解決しても良い。
【0085】
ブロック72において、サーバ7におけるAPI11は、例えば図3に関連して開示されたデータ項目識別子構成を用いて、識別子を含むデータ項目(例えば収集対象19c)の位置に関する問い合わせを、記憶システムにおける記憶ノード15a−eに、又は例えば特定のクラスタ内におけるノードのサブセットにマルチキャストしても良い。
【0086】
ブロック73において、記憶ノード15a−eは、マルチキャストメッセージの受信に応じて、データ項目ID34によって識別されたデータ項目の位置を特定するために、自らのそれぞれの記憶媒体17を走査しても良い。
【0087】
ブロック74において、データ項目の位置を特定したノードは、そのデータ項目を記憶している可能性がある他のノードに関する情報及びノードにおける現在の実行負荷と共に応答しても良い。要求されたデータ項目は、複数の記憶ノードに記憶されている可能性がある。APIは、ノードから受信された情報を収集しても良く、且つデータ項目の削除のためにどのノードを選択するかを決定する前に、データ項目を含むリストされた記憶ノードの50%超からAPIが応答を受信するまで、待っても良い。
【0088】
ブロック75において、API11は、特定のファイル(例えば収集対象19c)を削除するユニキャスト要求を、選択された記憶ノードに送信しても良い。
【0089】
ブロック76において、ディレクトリ構造において1レベル高いデータ項目(例えば収集対象19b)における識別子フィールド22bは、削除されたデータ項目(例えば収集対象19c)への参照を削除することによって更新されても良い。更新は、上記の読み出し方法に従って第1のデータ項目を検索することによって、及び/又は例えばサーバが第1のデータ項目の識別子をキャッシュした場合に、第1のデータ項目に直接アクセスすることによって行われても良い。削除されるデータ項目が、ディレクトリ構造において何レベルも下位に位置する場合に、削除動作は、i)第1のデータ項目を削除すること、及びii)第1のデータ項目への参照を削除することによって第2のデータ項目を更新することを追加して、図4に関連して開示された方法として表現され得る。
【0090】
従って、データ削除方法は、通信ネットワークによって相互接続されたデータ記憶ノードを含むデータ記憶システムにおいて実行されても良い。方法は、少なくとも1つの記憶ノードに記憶された第1のデータ項目を削除することを含んでも良い。方法はまた、第2のデータ項目における第1のデータ項目への参照を削除することによって、少なくとも1つの記憶ノードに記憶された第2のデータ項目を更新することを含んでも良い。
【0091】
収集対象19は、データファイルと同様の方法で処理され維持されても良い。これは、例えばどんなサブディレクトリもなしに、又は単一のディレクトリ内において、平坦記憶構造にデータを記憶できるようにする。仮想階層記憶構造が、参照を含む収集対象19を他の収集対象19及び/又はデータファイル21に追加することによって生成されても良い。それは、収集対象19の異なるセットを使用することによって、同じデータが、いくつかの異なる仮想階層記憶構造において組織化され得るようにさえする。
【0092】
データセキュリティの理由で、記憶システムに記憶されたいくらか又は全ての情報(例えば収集対象19及び/又はデータファイル21)は、記憶システムにおいて冗長的に記憶されても良い。収集対象19a−c及びデータファイル21aは、2つ以上の記憶ノード15に記憶されても良い。収集対象又はデータファイルの各インスタンスは、同じ識別子に関連付けられても良い。かかる場合に、上記の読み出し方法は、収集対象を記憶する各記憶ノードからの応答を結果としてもたらし得る。従って、冗長的に記憶された収集対象は、収集対象を記憶する記憶ノードの1つ又は全てから検索されても良い。
【0093】
開示された方法及びシステムを例示するいくつかの実施形態を説明した。しかしながら、当業者によって容易に理解されるように、本明細書で説明される方法及びプロダクトによる上記の実施形態に加えて他の実施形態が、等しく可能である。前述の例は、限定的であるようには意図されてなく、保護の範囲は、添付の特許請求の範囲によって定義されることになる。
図1
図2
図3
図4
図5a
図5b
図5c
図6
図7