(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-02
(54)【発明の名称】地理的に分散されたハイブリッドクラウドクラスタ
(51)【国際特許分類】
G06F 11/20 20060101AFI20240326BHJP
G06F 16/182 20190101ALI20240326BHJP
G06F 9/50 20060101ALI20240326BHJP
G06F 3/06 20060101ALI20240326BHJP
H04L 67/1095 20220101ALI20240326BHJP
【FI】
G06F11/20 669
G06F16/182
G06F9/50 150Z
G06F3/06 301X
G06F3/06 304F
H04L67/1095
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023559138
(86)(22)【出願日】2021-04-15
(85)【翻訳文提出日】2023-09-26
(86)【国際出願番号】 US2021027383
(87)【国際公開番号】W WO2022220830
(87)【国際公開日】2022-10-20
(81)【指定国・地域】
(71)【出願人】
【識別番号】520155228
【氏名又は名称】ヒタチ ヴァンタラ エルエルシー
(74)【代理人】
【識別番号】110000279
【氏名又は名称】弁理士法人ウィルフォート国際特許事務所
(72)【発明者】
【氏名】マンジャナサ, ソウミャ
(72)【発明者】
【氏名】マンジュナス, ニベディタ
【テーマコード(参考)】
5B034
【Fターム(参考)】
5B034CC04
(57)【要約】
いくつかの例では、第1地理的ロケーションの複数の計算装置のうちの計算装置は、データを複数のパーティションに分割してもよい。例えば、第1地理的ロケーションの少なくとも2つの計算装置は、複数のパーティションのうちの第1パーティションのデータのコピーを維持し、第1パーティションに関連する周期的ハートビート通信を交換してもよい。計算装置は、第2地理的ロケーションの計算装置が、第1パーティションを維持する第1ロケーションの計算装置より低いアクセス負荷頻度を有すると判定してもよい。計算装置は、第2地理的ロケーションにある計算装置に第1パーティションのデータを移行して、第2地理的ロケーションの少なくとも2つの計算装置に第1パーティションのデータを維持させ、第1パーティションに関連する周期的ハートビート通信を交換させてもよい。
【特許請求の範囲】
【請求項1】
システムであって、
第1地理的ロケーションの複数の計算装置であって、前記第1地理的ロケーションから離れた第2地理的ロケーションの複数の計算装置とネットワークを介して通信可能な複数の計算装置を備え、
前記第1地理的ロケーションの前記計算装置のうちの少なくとも1つは、
メタデータを複数のパーティションに分割することであって、前記メタデータは、ストレージロケーションに格納されたオブジェクトデータに対応し、前記第1地理的ロケーションの前記複数の計算装置のうちのリーダ計算装置及び少なくとも1つのフォロワ計算装置は、前記複数のパーティションのうちの第1パーティションに含まれる前記メタデータのコピーを保持し、前記リーダ計算装置及び前記少なくとも1つのフォロワ計算装置は、前記第1パーティションに関連する周期的ハートビート通信を交換する、ことと、
前記第2地理的ロケーションの少なくとも1つの計算装置が、前記第1地理的ロケーションにある前記リーダ計算装置又は前記少なくとも1つのフォロワ計算装置のうちの少なくとも1つより低いアクセス負荷頻度を有すると判定することと、
前記第2地理的ロケーションの前記計算装置のうちの少なくとも1つに前記第1パーティションの前記データを移行することであって、前記第2地理的ロケーションのリーダ計算装置及び少なくとも1つのフォロワ計算装置は、前記第1パーティションの前記メタデータの前記コピーを維持し、前記第1パーティションに関連する周期的ハートビート通信を交換する、ことと
を含む動作を実行するように構成される、システム。
【請求項2】
前記動作は、
前記第2地理的ロケーションの前記計算装置のうちの1つからのデータ構造を受信することであって、前記データ構造は、前記第2地理的ロケーションの前記計算装置のうちの1つ以上におけるアクセス負荷頻度を示す、ことと、
前記受信されたデータ構造に少なくとも部分的に基づいて、前記第2地理的ロケーションの前記少なくとも1つの計算装置がより低いアクセス負荷頻度を有すると判定することと
を更に含む、請求項1に記載のシステム。
【請求項3】
前記動作は、
1つ以上の追加の地理的ロケーションからの1つ以上の追加のデータ構造をそれぞれ受信することと、
前記第1地理的ロケーション、前記第2地理的ロケーション、及び前記1つ以上の追加の地理的ロケーションで維持されているパーティションのパーティション情報を含む複合データ構造を生成することと
を更に含む、請求項2に記載のシステム。
【請求項4】
前記動作は、
前記第1パーティションの前記データを移行することの前に、前記第1パーティション及び第3パーティションを得るように第2パーティションを分割することと、
前記第2パーティションの前記分割後に前記第1パーティションの前記データを移行することと
を更に含む、請求項1に記載のシステム。
【請求項5】
前記第1パーティション及び前記第3パーティションを得るように前記第2パーティションを前記分割することは、前記第2パーティションのキースペース範囲に少なくとも部分的に基づいて前記第2パーティションを分割することに少なくとも部分的に基づく、請求項1に記載のシステム。
【請求項6】
前記ネットワークは広域ネットワークである、請求項1に記載のシステム。
【請求項7】
前記第2地理的ロケーションの前記計算装置に前記第1パーティションの前記データを移行することの前に、データの書き込みを防ぐように前記第1パーティションをロックすることと、
前記リーダ計算装置及び前記少なくとも1つのフォロワ計算装置が、前記第1パーティションの前記データの前記コピーを維持するという指示を受信することと、
前記第1地理的ロケーションの前記リーダ計算装置に、前記第1パーティションの前記データの前記コピーを削除する命令を送信することと
を更に含む、請求項1に記載のシステム。
【請求項8】
前記動作は、
前記第1パーティションの前記データを移行することの前に、その第2地理的ロケーションにある少なくとも1つの計算装置に移行要求を送信することと、
前記移行要求に応じて、前記第2地理的ロケーションの前記リーダ計算装置に関連付けられた識別子を受信することと
を更に含む、請求項1に記載のシステム。
【請求項9】
前記動作は、
前記移行要求に応じて受信された前記識別子に少なくとも部分的に基づいて、前記第1地理的ロケーションの前記リーダ計算装置に、前記第2地理的ロケーションにある前記リーダ計算装置に前記第1パーティションの前記データのスナップショットを送信させることによって、前記第1パーティションの前記データを移行すること
を更に含む、請求項1に記載のシステム。
【請求項10】
前記オブジェクトデータは、広域ネットワークを介してアクセス可能な1つ以上のネットワークストレージロケーションに格納される、請求項1に記載のシステム。
【請求項11】
前記第1第2地理的ロケーションに少なくとも2つのフォロワ計算装置があり、前記リーダ計算装置及び前記少なくとも2つのフォロワが、前記第1パーティションに関連する周期的ハートビート通信を交換する、請求項1に記載のシステム。
【請求項12】
方法であって、
第1地理的ロケーションの複数の計算装置のうちの計算装置によって、データを複数のパーティションに分割することであって、前記第1地理的ロケーションの少なくとも2つの計算装置は、前記複数のパーティションの第1パーティションの前記データのコピーを維持し、前記第1パーティションに関連する周期的ハートビート通信を交換する、ことと、
第2地理的ロケーションにある少なくとも1つの計算装置が、前記データの前記コピーを維持する前記第1地理的ロケーションの前記計算装置のうちの少なくとも1つより低いアクセス負荷頻度を有すると判定することと、
前記第2地理的ロケーションにある少なくとも1つの計算装置に前記第1パーティションの前記データの前記コピーを移行して、前記第2地理的ロケーションの少なくとも2つの計算装置に前記第1パーティションの前記データの前記コピーを維持させ、前記第1パーティションに関連する周期的ハートビート通信を交換りさせることと
を含む、方法。
【請求項13】
前記第2地理的ロケーションの前記計算装置のうちの1つからのデータ構造を受信することであって、前記データ構造は、前記第2地理的ロケーションの前記計算装置のうちの1つ以上におけるアクセス負荷頻度を示す、ことと、
前記受信されたデータ構造に少なくとも部分的に基づいて、前記第2地理的ロケーションの前記少なくとも1つの計算装置がより低いアクセス負荷頻度を有すると判定することと
を更に含む、請求項13に記載の方法。
【請求項14】
第1地理的ロケーションの計算装置の1つ以上のプロセッサによって実行されると、前記計算装置を動作を実行するように構成する命令を格納する、1つ以上の非一時的コンピュータ可読媒体であって、
前記動作は、
データを複数のパーティションに分割することであって、前記第1地理的ロケーションの少なくとも2つの計算装置は、前記複数のパーティションの第1パーティションの前記データのコピーを維持し、前記第1パーティションに関連する周期的ハートビート通信を交換する、ことと、
第2地理的ロケーションにある少なくとも1つの計算装置が、前記第1パーティションの前記データの前記コピーを維持する前記第1地理的ロケーションの前記計算装置のうちの少なくとも1つより低いアクセス負荷頻度を有すると判定することと、
前記第2地理的ロケーションにある少なくとも1つの計算装置に前記第1パーティションの前記データの前記コピーを移行して、前記第2地理的ロケーションの少なくとも2つの計算装置に前記第1パーティションの前記データの前記コピーを維持させ、前記第1パーティションに関連する周期的ハートビート通信を交換させることと
を含む、1つ以上の非一時的コンピュータ可読媒体。
【請求項15】
前記動作は、 前記第2地理的ロケーションにある前記計算装置のうちの1つからのデータ構造を受信することであって、前記データ構造が、前記第2地理的ロケーションにある前記計算装置のうちの1つ以上におけるアクセス負荷頻度を示す、ことと、
前記受信されたデータ構造に少なくとも部分的に基づいて、前記第2地理的ロケーションの前記少なくとも1つの計算装置がより低いアクセス負荷頻度を有すると判定することと
を更に含む、請求項14に記載の1つ以上の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データストレージの技術分野に関する。
【背景技術】
【0002】
データは、データにアクセスしたりデータを格納したりするユーザが効率的にアクセスできるようにするために複数の地理的ロケーションに広げられるとがある。加えて、パブリッククラウドストレージの出現により、一部のデータをパブリッククラウドストレージに格納し、他のデータをプライベートクラウドやローカルストレージに保持することによって、複数のデータセンタを維持するコストを削減することが可能である。加えて、ストレージのユーザは、ユーザ自身の地理的に分散されたストレージロケーション、並びにパブリッククラウドストレージロケーションに広げられるともあるデータへのシームレスなアクセスを望んでいる。例えば、計算装置のクラスタが、効率的且つシームレスなストレージサービスをユーザに提供するために使用されることも多い。いくつかのクラスタ化されたシステムは、クラスタの他のメンバ及び他のクラスタリソースを監視するためなど、クラスタのメンバ間でやりとりされる周期的ハートビート通信信号に依拠し得る。しかしながら、クラスタ化されたシステム内のリソースを監視するため、またハートビートの損失に対処するために周期的ハートビート通信を用いる基本的な技法は、通常、インターネットなどの広域ネットワーク(WAN)に拡張されない。
【発明の概要】
【課題を解決するための手段】
【0003】
いくつかの実装形態は、データを複数のパーティションに分割する、第1地理的ロケーションにある複数の計算装置うちの計算装置を含む。例えば、第1地理的ロケーションにある少なくとも2つの計算装置は、複数のパーティションのうちの第1パーティションのデータのコピーを保持してもよく、第1パーティションに関連する周期的ハートビート通信をやりとりしてもよい。第1ロケーションにある計算装置は、第2地理的ロケーションにある計算装置が、第1パーティションを保持する第1ロケーションにある計算装置スより低いアクセス負荷頻度を有すると判定してもよい。計算装置は、第2地理的ロケーションにある計算装置に第1パーティションのデータを移行して、第2地理的ロケーションにある少なくとも2つの計算装置に第1パーティションのデータを保持させ、第1パーティションに関連する周期的ハートビート通信を交換してもよい。
【図面の簡単な説明】
【0004】
添付の図面を参照しながら、詳細な説明を記載する。図面では、参照数字の最も左にある桁は、その参照数字が最初に登場する図面を示す。異なる図面において同じ参照番号を使用することは、類似又は同一の項目又は特徴を示す。
【0005】
【
図1】
図1は、いくつかの実装形態に係るメタデータを格納及び管理可能なシステムの例示的な論理配置を示す。
【0006】
【
図2】
図2は、いくつかの実装形態に係る非均質ストレージシステムにデータ及びメタデータを格納可能な地理的に分散されたシステムの例示的なアーキテクチャを示す。
【0007】
【
図3】
図3は、いくつかの実装形態に係るパーティショングループの例示的な論理構成を示すブロック図である。
【0008】
【
図4】
図4は、いくつかの実装形態に係るシステムにおけるパーティション調整の一例を示すブロック図である。
【0009】
【
図5】
図5は、いくつかの実装形態に係るパーティション分割の一例を示す図である。
【0010】
【
図6】
図6は、いくつかの実装形態係る複合パーティションマップの例示的なデータ構造を示す。
【0011】
【
図7】
図7は、いくつかの実装形態に係るパーティション分割の実行例を示す。
【0012】
【
図8】
図8は、いくつかの実装形態に係るパーティション分割後の移行の一例を示す。
【0013】
【
図9】
図9は、いくつかの実装形態に係るパーティション分割及び移行の完了後の時の状態の一例を示す。
【0014】
【
図10】
図10は、いくつかの実装形態に係る負荷分散のための例示的な擬似コードを示す。
【0015】
【
図11】
図11は、いくつかの実装形態に係るパーティション分割及び負荷分散のための例示的なプロセスを示すフロー図である。
【0016】
【
図12】
図12は、本明細書で説明されるシステムの機能の少なくとも一部を実装するために使用され得るサービス計算装置のコンポーネントの選択例を示す。
【発明を実施するための形態】
【0017】
本明細書におけるいくつかの例は、複数のクラウドシステム、複数のサイト、及び複数の地理的ロケーションにわたる複数のノードを有するクラスタをデプロイすることができるハイブリッドクラウド構造を含む分散コンピュータシステムのための技法及び配置に関する。更に、いくつかの実装形態は、WANを介した複数の地理的ロケーションにわたる大規模クラスタ内の可用性を維持するための効率的なソリューションを含んでもよい。例えば、本明細書のシステムは、1つ以上のネットワークロケーションにある様々な異なるストレージサービスに渡るバックアップ及びデータ移動を可能にすることなどにより、ハイブリッドクラウドシステムに渡ってデータを同期させて、ストレージのユーザにコスト管理の柔軟性を提供してもよい。例えば、本明細書で開示されるハイブリッドクラウドシステムでは、システムは、データを格納及び同期するために、様々な異なるサービス提供エンティティから利用可能なネットワークストレージを採用してもよい。
【0018】
いくつかの例は、クラスタ管理サービス及びデータ管理サービスに使用される演算、ネットワーク、及びストレージを分離することなどにより、システムのリソース及び管理を分離する。同様に、本明細書におけるいくつかの例は、データ及びメタデータの管理サービスの分離を含む。その結果、データは、そのデータに関連するメタデータが格納されるストレージロケーションとは全く異なるストレージロケーションに格納されてもよい。このことは、対応するデータが格納される場所に関係なく、メタデータをすべて1つのロケーションに、又は代替的に多くのロケーションに分散して格納することを可能にする。
【0019】
本明細書における実装形態は、データに関連付けられたメタデータを、地理的ロケーションに分散されたパーティションに分離することによって動作するメタデータ管理レイヤを含む。例えば、各パーティションはパーティショングループとして動作してもよく、例えば、そこに、データ保護及び高可用性を提供するために、システムに渡る異なる計算装置(「ノード」とも呼ばれる)に格納される、メタデータの同じパーティションの少なくとも3以上のコピーがあり得る。いくつかのケースでは、同じパーティショングループのメンバが、互いの可用性を監視するために、またハートビート応答又はその欠如に基づいて措置を取るために、ハートビート通信を周期的に互いに送信する。しかしながら、例えば、インターネット等のWANを介してハートビート通信を送信することは、断続的な待ち時間、応答時間の遅延、又はハートビート通信を遅延させたり別の仕方で干渉したりするように生じ得る他のネットワークの問題などに起因して、問題になり得る。したがって、これらの問題を回避するために、本明細書におけるいくつかの例は、クラスタ自体(例えば、メタデータデータベース全体を含み得るもの)が複数の分散された地理的ロケーションに広がり得るとしても、同じ地理的にロケーション内のノードにハートビート通信の使用を制限し得る、メタデータパーティショングループのための設定基準を含んでもよい。
【0020】
本明細書におけるいくつかの例は、メタデータストレージ及びデータストレージのそれぞれについて別々の監視及び管理を提供することなどによって、メタデータストレージ及びデータストレージを分離することを含んでもよい。例えば、本明細書におけるシステムは、メタデータノードを監視及び管理することとは別に、データノードを監視するためのクラスタ監視を含んでもよい。更に、いくつかの例では、メタデータは、本明細書においてパーティションと呼ばれる、容易に管理可能なより小さな独立したセグメントに分割されてもよい。例えば、パーティションは、各パーティションに含まれるメタデータの少なくとも3つのコピーを作成することによって、また同じパーティションの各コピーが異なるノードに分散されることを確保することによって、高可用性且つ冗長に作られてもよい。上述のように、ノードは、1以上のパーティションを管理する物理又は仮想マシン計算装置などの計算装置であってもよい。更に、本明細書におけるノードは、例えば、「パーティショングループ」と呼ばれ得る、同じパーティションを管理する同じグループ、にあるそれぞれのノード間でハートビート通信を用いて互いに監視してもよい。
【0021】
本明細書におけるパーティションが、特定のサイズを超えるまで大きくなった場合、例えば、パーティションを管理するそれぞれのノードのパフォーマンスが低下し得るほどに大きくなった場合、又は閾値サイズより大きい場合など、パーティションは2つ以上のパーティションに分割されてもよい。パーティションが分割されると、いくつかの例では、ホットスポットを避けるためなど、結果として生じるパーティションのうちの1つ以上が異なるロケーションに移動されてもよい。例えば、分割の結果として得られたパーティションは、ローカル調整サービスによって、移動可能な候補としてマークされてもよい。パーティション識別子(ID)は、分割のためにオリジナルの親パーティションを選択するために使用された基準などに基づいて、優先キューに格納されてもよい。ローカル調整サービスは、クラスタに加わっているシステムにおけるそれぞれのノードのその時の負荷に少なくとも部分的に基づいて、パーティションを移動させるロケーションを決定してもよい。
【0022】
一例として、調整サービスは、地理的ロケーションに分散されたすべてのシステムから受信された複数のパーティションマップから組み立てられた複合パーティションマップを参照して、最も負荷の軽いロケーションを判定してもよい。すべてのロケーションの負荷が等しい場合、特定のロケーションがランダムに選択されてもよい。例えば、各地理的ロケーションにおける各調整サービスは、それぞれ、そのロケーションに固有の(例えば、それぞれの終端におけるゲートウェイの数に対する)負荷情報を保持してもよい。特定のロケーションにおいて閾値負荷量に到達した場合、そのロケーションにおける調整サービスは、そのロケーションからパーティションのうちの1つ以上をオフロードする候補を見つける要求をすべての調整サービスに送信してもよい。
【0023】
他の調整サービスから受信された、パーティションを移行するための要求は、キューに入れられ、到着の順序に基づいてサービス提供される。特定の調整サービスが、特定のパーティションのオフロードを受けるための移行先となることを受諾した場合、移行を受け入れる対応するロケーションは、ロックされ、他の調整サービスからの追加の負荷分散要求を受け取らないように構成されてもよい。ロックされた状態は、遠隔の調整サービス、及び/又は特定の調整サービスにパーティションをその時に転送しているノードのIDを含んでもよい。更に、パーティションが異なる地理的ロケーションに移動される場合、本明細書における実装形態は、ハートビートがWANを介して送信される必要がなく、同じローカルシステム(例えば、ローカルエリアネットワーク(LAN)内に含まれ続けるように、そのパーティションのすべてのコピーが同じ地理的ロケーションに移動されることを確保してもよい。パーティションの移行を受け入れる特定の地理的ロケーションにおける特定の調整サービスのロックされた状態は、移行されるパーティションのためのすべてのコピーが完全に移行された後に、それぞれの調整サービスから削除されてもよい。
【0024】
本明細書におけるいくつかの例では、各地理的ロケーションにある各システムが、メタデータゲートウェイサービスを提供し、またネットワークを介して1つ以上のネットワークストレージシステムと通信してもよい。例えば、第1ネットワークストレージシステムは、第1ストレージプロトコル及び/又はソフトウェアスタックを採用する第1サービスプロバイダによって提供されてもよく、第2ネットワークストレージシステムは、第1ストレージプロトコル/スタックなどとは異なる第2ストレージプロトコル及び/又はソフトウェアスタックを採用する第2サービスプロバイダによって提供されてもよい。システムは、オブジェクトを受信し、第1ネットワークストレージシステム、第2ネットワークストレージシステムなどにおいて、オブジェクトのためのストレージロケーションを決定してもよい。システムは、オブジェクトの受信及び格納に基づいてメタデータデータベースを更新してもよい。
【0025】
複数の非均質システムを渡ってデータ及びメタデータを格納及び同期することは困難であり得る。例えば、これらの非均質システムで使用されるソフトウェアスタックは、異なるエンティティによって構成及び制御され得る。更に、複製に特有の変化は、様々な異なるシステムのすべてにおいて、必ずしも望ましいように機能するとは限らない。それにもかかわらず、本明細書におけるいくつかの例は、複数の異なる地理的ロケーションに分散された複数のパブリック及びプライベートクラウド計算装置を含み得るハイブリッドクラウドトポロジ上に何兆ものオブジェクトを格納するように拡張可能である。
【0026】
議論を進めるために、いくつかの例示的な実装形態は、メタデータの格納を管理するための複数の地理的に分散されたシステムの環境において説明される。しかしながら、本明細書における実装形態は、提供される特定の例に限定されるものではなく、本明細書の開示を検討すれば当業者に明らかになるように、他のタイプのコンピューティングシステムアーキテクチャ、他のタイプのストレージ環境、他のストレージプロバイダ、他のタイプのクライアント構成、他のタイプのデータなどに拡張され得る。
【0027】
図1は、いくつかの実装形態に係るメタデータを格納及び管理可能なシステム100の例示的な論理配置を示している。上述のように、本明細書におけるいくつかの例では、オブジェクトデータは、オブジェクトデータに対応するメタデータとは全く異なるストレージロケーションに格納されてもよい。更に、メタデータは、いくつかのケースでは、まとまってクラスタとして機能し得る複数の分散された地理的ロケーションに渡って広がるメタデータデータベースに格納されてもよい。
【0028】
図示の例では、第1システム102(1)は、地理的ロケーションAに設置され、メタデータのゲートウェイなどの複数のメタデータソース104(1)、104(2)、及び104(3)などを含む。加えて、第1システム102(1)は、地理的ロケーションAとは異なる地理的ロケーションであり得る地理的ロケーションBに設置された第2システム102(2)と、1以上のネットワーク106を介して通信可能であってもよい。第2システム102は、複数のメタデータソース104(4)、104(5)、及び104(6)を含んでもよい。更に、本例では2つのシステム102が示されているが、本明細書における実装形態は、何兆ものデータオブジェクトを格納することができる非常に大規模なシステムまで拡張可能であるため、本明細書における実装形態は、いかなる特定の数のシステム102又は地理的ロケーションにも限定されるものではない。更に、各システム102において3つのメタデータソース104が示されているが、他の例では各システムに関連付けられた多数のメタデータソース104があってもよい。
【0029】
加えて、システム102(1)、102(2)、...は、1つ以上のネットワークを介してユーザ装置108と通信可能であってもよい。例えば、各ユーザ装置108は、デスクトップ、ラップトップ、タブレット計算装置、モバイルデバイス、スマートフォン、ウェアラブルデバイス、端末、及び/又はネットワークを介してデータを送信することができる他の任意のタイプの計算装置など、任意の適切なタイプの計算装置であってもよい。ユーザ112は、それぞれのユーザアカウント、又はユーザログイン認証情報などを通じて、ユーザ装置108に関連付けられてもよい。更に、ユーザ装置108は、1以上のネットワーク106を介して、別個のネットワークを介して、又は任意の他の適切なタイプの通信接続を介して、システム102と通信可能であってもよい。
【0030】
いくつかの例では、第1システム102(1)への地理的近接性などに基づいて第1システム102(1)にアクセスするユーザ112の第1グループ114、及び第2システム102(2)への地理的近接性などに基づいて第2システム102(2)にアクセスするユーザ112の第2グループ116などが存在してもよい。上述のように、いくつかのケースでは、ユーザ112がそれぞれのユーザ112に物理的に近いメタデータゲートウェイにアクセスできるようにすることにより、それぞれのユーザの地理的ロケーションから地理的により遠いシステム102にアクセスする場合と比較して、待ち時間を短縮し得る。
【0031】
各メタデータソース104は、格納されたデータに対応するメタデータを格納及び提供するように構成され得る1以上の物理又は仮想計算装置(「ノード」とも呼ばれる)を含んでもよい。例えば、ユーザ112は、オブジェクトデータなどのデータをシステム102に格納し、いくつかの例では、格納されたデータにアクセス、格納されたデータを検索、変更、更新、削除、又は移行してもよい。いくつかのケースでは、ユーザ112によって格納されたデータは、1以上のデータストレージロケーション118に格納されてもよい。例えば、データストレージロケーション118は、パブリックネットワークストレージ(例えば、パブリッククラウドストレージ)、プライベートネットワークストレージ(例えば、プライベートクラウドストレージ)、ローカルストレージ(例えば、それぞれのシステム102に対してローカルで提供されるストレージ)、及び/又は他のプライベート若しくはパブリックストレージオプションのうちの1以上を含んでもよい。
【0032】
1以上のネットワーク106は、インターネットなどの広域ネットワーク、イントラネットなどのローカルエリアネットワーク(LAN)、セルラネットワークなどの無線ネットワーク、Wi-Fiなどのローカル無線ネットワーク、及び/又はBLUETOOTH(登録商標)などの近距離無線通信、ファイバチャネル、光ファイバ、イーサネット、又は他の任意のそのようなネットワークを含む有線ネットワーク、直接有線接続、又はこれらの任意の組み合わせを含む、任意の適切なネットワークを含んでもよい。したがって、1以上のネットワーク106は、有線通信技術及び/又は無線通信技術の両方を含んでもよい。このような通信に使用されるコンポーネントは、ネットワークのタイプ、選択された環境、又はその両方に少なくとも部分的に依存し得る。このようなネットワークを介して通信するためのプロトコルは周知であるため、本明細書では詳しく論じない。したがって、システム102、メタデータソース104、ユーザ装置108、及びデータストレージロケーション118は、有線接続又は無線接続、及びそれらの組み合わせを使用して、1以上のネットワーク106を介して通信可能である。
【0033】
図示の例では、メタデータソース104によって格納されたメタデータは、複数のパーティション(
図1に示さず)に分割されてもよい。各パーティションはグループとして動作してもよく、例えば、冗長性保護及び高可用性を提供するために、同じシステム内の異なるノードに分散される、同じパーティションの少なくとも3以上のコピーがあってもよい。現在の設計では、同じパーティショングループのメンバは、互いの可用性を監視するために、またハートビート応答に基づいて1以上の措置を取るために、ハートビート通信120を周期的に互いに送信してもよい。例えば、ハートビート通信120は、200ms毎、500ms毎、1秒毎、又は2秒毎など、リーダノードからそのフォロワノードに周期的に送信され得る空のメッセージ、又はハートビートインジケータを伴うメッセージなどであってもよい。いくつかのケースでは、1以上のフォロワノードが閾値時間内にハートビートメッセージ120を受信しない場合、フォロワノードは、RAFTアルゴリズムなどに基づいてコンセンサスを確立することなどによって、新しいリーダノードを選択するプロセスを開始してもよい。上述のように、WANを介してハートビート通信を維持することは禁止も同然であり得るため、本明細書における例は、複数のシステム102が、本来、複数の異なる地理的ロケーションにデータを分散させるためのクラスタ構成を形成し得るとしても、ハートビート通信が同じ地理的ロケーション(例えば、同じLAN)に制限されるようなサイズ及びロケーションを含むいくつかの形成基準を用いて形成されるメタデータパーティショングループを含んでもよい。
【0034】
図2は、いくつかの実装形態に係る非均質ストレージシステムにデータ及びメタデータを格納可能な地理的に分散されたシステム200の例示的なアーキテクチャを示す。いくつかの例では、システム200は、
図1に関して上で論じたシステム100に対応してもよい。本例のシステム200は、互いに地理的に分散された第1システム102(1)、第2システム102(2)、第3システム102(3)、...などを含む。加えて、本例では、第1システム102(1)の構成の詳細が説明されるが、第2システム102(2)、第3システム102(3)などの構成も同様であってもよい。
【0035】
第1システム102(1)は、複数のサービス計算装置202(1)、202(2)、202(3)、...などを含み、そのうちの少なくともいくつかが、1以上のネットワーク106を介して、第1プロバイダネットワークストレージシステム204(1)、第2プロバイダネットワークストレージシステム204(2)、...などの複数のネットワークストレージシステムと通信することができる。上述のように、いくつかのケースでは、ネットワークストレージシステム204の各プロバイダは、他のプロバイダとは無関係な異なるエンティティであってもよい。商用ネットワークストレージプロバイダの例をいくつか挙げると、AMAZON WEB SERVICES、MICROSOFT AZURE、GOOGLE CLOUD、IBM CLOUD、及びORACLE CLOUDが挙げられる。ネットワークストレージシステム204は、いくつかの例では「クラウドストレージ」又は「クラウドベースのストレージ」と呼ばれてもよく、いくつかのケースではサービス計算装置202において利用可能であり得るローカルストレージよりもギガバイトあたり低コストのストレージソリューションを可能にしてもよい。追加的又は代替的に、いくつかの例では、ストレージプロバイダは、例えば、サービス計算装置202、システム102などに関連付けられた特定のユーザ、又はエンティティなどにのみアクセスを提供するためなどの、プライベート又は他の専有ストレージプロバイダであってもよい。専有システムの例は、HITACHI CONTENT PLATFORMの構成を含んでもよい。
【0036】
サービス計算装置202は、ネットワーク106を介して、1以上のユーザ計算装置108及び1以上の管理者計算装置210と通信可能である。いくつかの例では、サービス計算装置202は、任意の数の仕方で具現化され得る1以上のサーバを含んでもよい。例えば、サービス計算装置202のプログラム、他の機能コンポーネント、及びデータストレージの少なくとも一部分は、少なくとも1つサーバ、例えば、サーバのクラスタ、サーバファーム、データセンタ、クラウドホスト型コンピューティングサービスなどで実装されてもよいが、他のコンピュータアーキテクチャが追加的又は代替的に使用されてもよい。サービス計算装置202の更なる詳細については、
図12を参照して以下に論じる。加えて、サービス計算装置202は、1以上のネットワーク207を介して互いに通信可能であってもよい。いくつかのケースでは、1以上のネットワーク207は、LAN、ローカルイントラネット、直接接続、又はローカル無線ネットワークなどであってもよい。
【0037】
サービス計算装置202は、ユーザ装置108を介してユーザ112にストレージ管理サービス及びデータ管理サービスをそれぞれ提供するように構成されてもよい。いくつかの非限定的な例として、ユーザ112は、会社、企業、組織、政府機関、又は学術機関などのための機能を実行するユーザを含み、機能は、いくつかの例では、非常に大量のデータの格納を含んでもよい。それにもかかわらず、本明細書における実装形態は、システム200、及び本明細書で説明される他のシステム及び配置の特定の使用法又は応用にも限定されるものではない。
【0038】
各ユーザ装置108は、ネットワークストレージシステム204上に格納するためのユーザデータを送信するため、及び/又はデータ命令218などを通じてネットワークストレージシステム204からの格納されたデータを受信するためなど、サービス計算装置202のうちの1以上で実行可能なユーザウェブアプリケーション216と通信するためなど、ユーザ装置108上で実行され得るユーザアプリケーション214のそれぞれのインスタンスを含んでもよい。いくつかのケースでは、アプリケーション214は、ブラウザを含んでもよく又はブラウザを介して動作してもよいが、他のケースでは、アプリケーション214は、1以上のネットワーク106を介してユーザウェブアプリケーション216との通信を可能にする通信機能を有する任意の他のタイプのアプリケーションを含んでもよい。
【0039】
システム200のいくつかの例では、ユーザ112は、それぞれのユーザ装置108が通信しているサービス計算装置202にデータを格納し、サービス計算装置202からデータを受信してもよい。したがって、サービス計算装置202は、ユーザ112及びそれぞれのユーザ装置108にストレージを提供してもよい。定常状態動作において、サービス計算装置202と周期的に通信するユーザ108がいてもよい。
【0040】
加えて、管理者装置210は、デスクトップ、ラップトップ、タブレット計算装置、モバイルデバイス、スマートフォン、ウェアラブルデバイス、端末、及び/又はネットワークを介してデータを送信することができる他の任意のタイプの計算装置など、任意の適切なタイプの計算装置であってよい。管理者220は、それぞれの管理者アカウント、又は管理者ログイン認証情報などを通じて、管理者装置210に関連付けられてもよい。更に、管理者装置210は、1以上のネットワーク106、207を介して、別個のネットワークを介して、又は任意の他の適切なタイプの通信接続を介して、サービス計算装置202と通信可能であってもよい。
【0041】
各管理者装置210は、システム200を管理するための管理命令を送信するため、並びにネットワークストレージシステム204上に格納するための管理データを送信するため、及び/又は管理命令226などを通じてネットワークストレージシステム204からの格納された管理データを受信するためなど、サービス計算装置202のうちの1以上で実行可能な管理ウェブアプリケーション224と通信するためなど、管理者装置210上で実行され得る管理者アプリケーション222のそれぞれのインスタンスを含んでもよい。いくつかのケースでは、管理者アプリケーション222は、ブラウザを含んでもよく又はブラウザを介して動作してもよいが、他のケースでは、管理者アプリケーション222は、1以上のネットワーク106を介して管理ウェブアプリケーション224との通信を可能にする通信機能を有する任意の他のタイプのアプリケーションを含んでもよい。
【0042】
サービス計算装置202は、データ同期動作232を用いてネットワークストレージシステム204に格納されるデータを送信するため、及びネットワークストレージシステム204又はローカルストレージから要求されたデータを取得するためなど、ネットワークストレージシステム204へのアクセスを提供し得るストレージプログラム230を実行してもよい。加えて、ストレージプログラム230は、データ保持期間、データ保護レベル、データ複製などを管理するなどのために、システム200によって格納されたデータを管理してもよい。
【0043】
サービス計算装置202は、メタデータデータベース(DB)234を更に含んでもよく、メタデータデータベース(DB)234は、パーティション240と呼ばれる複数のメタデータDB部分に分割されてもよく、複数のサービス計算装置202に渡って分散されてもよい。例えば、メタデータDB234に含まれるメタデータは、ネットワークストレージシステム204に格納されたオブジェクトデータ236とシステム102においてローカルに格納されたローカルオブジェクトデータ237とを管理するために使用されてもよい。メタデータDB234は、個々のオブジェクトに関する情報、個々のオブジェクトへのアクセスの方法、オブジェクトのストレージ保護レベル、ストレージ保持期間、オブジェクト所有者情報、オブジェクトサイズ、オブジェクトタイプなど、オブジェクトデータ236に関する多数のメタデータを含んでもよい。更に、メタデータゲートウェイプログラム238は、新しいオブジェクトの格納、古いオブジェクトの削除、オブジェクトの移行などに応じてメタデータDB234を更新するだけではなく、データへのアクセス要求に応答する、新しいパーティション240を作成する、異なる地理的ロケーションにあるシステム102間で調整サービスを提供するなどのために、メタデータDB234を管理及び維持してもよい。
【0044】
図3は、いくつかの実装形態に係るパーティショングループ300の例示的な論理構成を示すブロック図である。パーティショングループ300は、第1サービス計算装置202(1)(第1ノード)と、第2サービス計算装置202(2)(第2ノード)と、第3サービス計算装置202(3)(第3ノード)とを含んでもよい。本例では、パーティショングループ300は、メタデータデータベース部分304を含む第1パーティション302に関する。上述のように、システムに複数のパーティションが存在してもよく、それぞれは上で論じたメタデータデータベース134の異なる部分を含んでもよい。メタデータデータベース134が大きくなると、大きくなりすぎたパーティションは、複数の新しいパーティションに分割されてもよい。更に、ハートビート通信306は、第1パーティション302に関するパーティショングループ300のメンバ間で交換されてもよい。
【0045】
パーティショングループ300は、
図2に関して上で論じたシステム200に含まれてもよい。メタデータデータベース134全体は、それぞれのキーを使用して配置可能なメタデータ項目を含む大きな論理スペースに類似してもよい。いくつかの例では、キーは、それぞれのメタデータ項目へのデータパスの暗号ハッシュ、又はユーザによって提供される他の任意の関連する入力であってもよい。メタデータのキースペース範囲は、採用されるキーの幅に部分的に依存してもよい。適切な例は、256ビットを含み、したがって0~2256の範囲を提供するSHA-256キーをふくんでもよい。
【0046】
一例として、メタデータは、(0~2256)のメタデータスペースをより小さな管理可能な範囲、例えば0~228、228~256などに分割することにより管理されてもよい。範囲のサイズは、設定可能であり、より小さいサイズ又はより大きいサイズに動的に変更されてもよい。上述のように、各パーティションは、そのパーティションのパーティショングループを構成する利用可能なノードのセットに渡って広がる特定の数の冗長コピーに複製されてもよい。一般に、3つのコピーは、リーダとして選択又は他の仕方で指定されるパーティショングループにおける3つのノードのうちの1つのノードで高可用性のアクティブグループを形成するには十分であり、パーティショングループにおける残りの2つのノードはフォロワとして指定される。例えば、与えられたパーティションにおけるデータの読み取り及び書き込みはすべて、それぞれのパーティショングループのリーダノードを介して実行されてもよい。リーダノードは、パーティショングループ内のデータの一貫性及び冗長性を維持するために、フォロワノードのそれぞれを更新した状態に保ち、フォロワノードのそれぞれに複製が行われることを確保するように構成されてもよい。いくつかの例では、本明細書におけるシステムは、リーダ選択のためのコンセンサスプロトコルを採用してもよい。適切なコンセンサスアルゴリズムの例は、RAFTアルゴリズムを含んでもよい。各パーティションのリーダノード及びフォロワノードは独立に動作してもよく、システム内の他のパーティションを認識する必要はない。したがって、パーティション全体の障害はシステム内の他のパーティションに影響しない。
【0047】
上述のように、パーティショングループにおけるリーダ及びフォロワは、周期的ハートビート306を介して互いに通信及び監視してもよい。更に、システムにおけるノードは、複数のパーティションを含んでもよく、パーティション毎に異なるノードのセットでパーティショングループを形成してもよい。
【0048】
加えて、メタデータデータベース134におけるメタデータは、ユーザ定義スキーマ(
図3に示さず)のセットとして編成されてもよい。各スキーマは、それぞれのスキーマに基づいて異なる成長パターンに適応するために、独自のキースペースを用いて区分されてもよい。例えば、システムにおけるオブジェクトの数は、ユーザの数又はフォルダ(いくつかの例ではバケットとも呼ばれる)の数とは非常に異なって大きくなってもよい。
【0049】
図4は、いくつかの実装形態に係るシステム200におけるパーティション調整の一例を示すブロック図である。例えば、パーティション調整サービス402は、地理的に分散されたシステム102のそれぞれのシステム102内で実行されてもよい。例えば、第1システム102(1)は第1調整サービス402(1)を含み、第2システム102(2)は第2調整サービス402(2)を含み、第3システム102(3)は第3調整サービス402(3)を含んでもよいなどである。一例として、それぞれの各調整サービス402は、それぞれのシステム102に含まれるサービス計算装置202の1つでのメタデータゲートウェイプログラム238の実行によって提供されてもよい。
【0050】
調整サービス402は、404に示すように、それが実行されるそれぞれのシステム102でのパーティションの作成、パーティションの分割、パーティションの削除、及びパーティションのバランス調整を管理してもよい。調整サービス402は、地理的に分散されたシステム102の他のシステムからのパーティション情報を受信することによってだけでなく、それが実行されるそれぞれのシステム102におけるすべてのパーティションのグローバルビューを構築してもよい。
【0051】
例えば、図示の例では、第1調整サービス402(1)は、地理的ロケーションAにある第1システム102(1)全体を介してすべてのリーダノードから情報を収集することにより、第1パーティションマップ406を構築してもよい。本例では、4つのサービス計算装置202(1)~202(4)が存在し、これらのそれぞれは3つのパーティションをそれぞれ管理する。特に、第1サービス計算装置202(1)は、第1パーティション408と、第2パーティション410と、第4パーティション412とを含む。第2サービス計算装置202(2)は、第1パーティション408と、第3パーティション414と、第4パーティション412とを含む。第3サービス計算装置202は、第1パーティション408と、第2パーティション410と、第3パーティション414とを含む。第4サービス計算装置202は、第2パーティション410と、第3パーティション414と、第4パーティション412とを含む。
【0052】
サービス計算装置202(1)~202(4)は、それぞれのパーティションにメタデータを格納するため、またそれぞれのサービス計算装置202によって管理されるそれぞれのパーティションからのメタデータを取得するためのメタデータゲートウェイプログラム238のインスタンスをそれぞれ実行することなどにより、メタデータゲートウェイサービス416を提供してもよい。更に、各パーティションにおけるそれぞれのパーティショングループのリーダ及びフォロワは、それぞれのパーティションに関して周期的ハートビートを介して互いに通信及び監視してもよい。ハートビート通信のいくつかの例が示されており、第1パーティション408及び第4パーティション412に関する第1サービス計算装置202(1)と第2サービス計算装置202(2)との間のハートビート通信420と、第3パーティション414及び第4パーティション412に関する第2サービス計算装置202(2)と第4サービス計算装置202(4)との間のハートビート通信422と、第2パーティション410及び第3パーティション414に関する第4サービス計算装置202(4)と第3サービス計算装置202(3)との間のハートビート通信424と、第1パーティション408及び第2パーティション410に関する第3サービス計算装置202(3)と第1サービス計算装置202(1)との間のハートビート通信426とを含む。
【0053】
更に、サービス計算装置202(1)~202(4)間の他のハートビート通信は、説明を明確にするために示していない。したがって、本例では、第1システム102(1)における各ノードは、複数のパーティションを含んでもよく、パーティション408~414毎に異なるノードのセットを有するパーティショングループを形成してもよい。
【0054】
上述のように、第1調整サービス402(1)は、サービス計算装置202(1)~202(4)からのパーティション情報を取得して、第1パーティションマップ406を構築してもよい。例示的なパーティションマップについては、
図6を参照して以下に論じる。加えて、第1調整サービス402(1)は、第2システム102(2)における第2調整サービス402(2)、及び第3システム102(3)における第3調整サービス402(3)などの遠隔の調整サービスと相互作用して、地理的に分散されたシステム200全体に関する複合パーティションマップ430を構築して、他の地理的ロケーションにおけるすべてのシステム102(2)、102(3)、...からのそれぞれのパーティションマップを受信してもよい。例えば、第1調整サービス402は、第2調整サービス402(2)からの第2パーティションマップ432、及び第3調整サービス402(3)から第3パーティションマップ434を受信してもよい。引き換えに、第1調整サービス402(1)は、第1パーティションマップ406を第2調整サービス402及び第3調整サービス402に送信してもよい。同様に、第2調整サービス402(2)及び第3調整サービス402(3)は、それぞれパーティションマップ432及び434を交換してもよい。したがって、地理的に分散された各システム102は、独自の複合パーティションマップ430を構築してもよい。
【0055】
それぞれのメタデータ調整サービス402(1)、402(2)、402(3)、...は、それぞれローカルシステム102(1)、102(2)、102(3)、...においていつパーティションを分割するかを決定するために実行されてもよい。例えば、調整サービス402は、それぞれのシステム102におけるパーティションのサイズを常に監視し、いつパーティションを分割するかを決定するためにサイズ閾値を使用してもよい。加えて、パーティションが分割された後、調整サービス402は、複合パーティションマップ430を採用して、パフォーマンスを最適化するために、様々な異なる地理的ロケーションにあるシステム102に渡ってパーティションを再調整してもよい。異なる地理的ロケーション間のWANを介した効率的な情報交換を可能にするために、各システム102は、調整サービス402のインスタンスをローカルで実行してもよい。各地理的ロケーションにおいて実行される調整サービス402は、サービス計算装置202上でメタデータゲートウェイプログラム238の別々のインスタンスを実行することによって提供されるローカルメタデータゲートウェイサービスと通信し、負荷分散のために分割し、移動を開始するためにコマンドを適切な時間に送信する。各調整サービス402は、そのロケーションのパーティションマップを地理内の他のロケーションのものと周期的に交換する軽量メッセージングプロトコルを採用してもよい。
【0056】
加えて、パーティションは複数の地理的ロケーションに渡って広がってもよいため、いくつかの例では、すべての地理的ロケーションへの接続性が、地理的ロケーションのうちの1つに届いた要求を満たすのに十分に利用可能であることが確保されてもよい。一例として、地理的ロケーションAにある第1システム102(1)に、例えば、地理的ロケーションBにある第2システム102(2)に格納されているパーティションの要求が届いた場合を仮定する。例えば、要求がメタデータゲートウェイサービス416によって受信されたとする。メタデータゲートウェイサービス416は、まず、要求がその時のロケーションに存在するキースペース範囲(すなわち、パーティション)にマップされるか否かを確認することを試みてもよい。利用不可能である場合、メタデータゲートウェイサービス416は、第1調整サービス402(1)に相談して、要求に関連するパーティションの地理的ロケーションを判定してもよい。識別されると、メタデータゲートウェイサービス416は、ターゲットパーティションのパーティション情報を一時的にキャッシュして、受信され得る後続の要求の効率的なルックアップを可能にしてもよい。例えば、メタデータゲートウェイサービス416は、その後、そのパーティションキースペース範囲についてリモートメタデータゲートウェイサービス440又は442に直接問い合わせることによってエントリをルックアップし、ルックアップが正常に完了したときにエンドユーザに応答してもよい。
【0057】
図5は、いくつかの実装形態に係るパーティション分割の一例500を示す図である。いくつかの例は、弾力的且つ拡張可能な成長のために、動的なパーティション分割を採用してもよい。例えば、すべてのデータがデプロイ時に取り込まれるとは限らない。その結果、システムは、パーティションの小さなセット、例えば、第1パーティション502(1)などの少なくとも1つパーティションから開始してもよい。取り込まれたデータ量が増えるにつれて、パーティションが分割されてもよく、パーティションの数はデータ量が拡張されると増加してもよい。
【0058】
図示の例において、504に示すように、最初、第1パーティション502(1)にN個のオブジェクトに関するメタデータ(MD)があると仮定する。オブジェクト(及び結果として得られるメタデータ)の数が増え続けると、調整サービスは、506に示すように、第1パーティション502(1)を分割することを決定してもよい。したがって、第1パーティション502(1)におけるメタデータは、第2パーティション502(2)と第3パーティション502(3)とに分割されてもよい。例えば、508に示すように、次に、2N個のオブジェクトに対するメタデータ(MD)があると仮定する。加えて、オブジェクトの数及び対応するメタデータは時間と共に増加し続けるため、510に示すように、少なくとも第2パーティション502(2)は分割され、第4パーティション502(4)及び第5パーティション502(5)を生成してもよい。512に示すように、次に、約4N個のオブジェクトに関するメタデータ(MD)があると仮定する。加えて、オブジェクト及びメタデータの数は時間と共に増加し続けるため、510に示すように、少なくとも第3パーティション502(3)は分割され、第6パーティション502(6)及び第7パーティション502(7)を生成し、516に示すように、次に、メタデータの量が約6N個のオブジェクトに関するメタデータと等しくなり得る。このように、パーティションは、システムのデータの量及びリソースが増加するにつれて分割及び拡張され続けてもよい。
【0059】
図6は、いくつかの実装形態に係る複合パーティションマップ430の例示的なデータ構造を示している。本例では、複合パーティションマップ430は、パーティションID602と、キースペース名604と、キースペース範囲606と、ノードマップ608と、パーティションサイズ610と、ロケーションID612と、アクセス負荷頻度614とを含む。パーティションID602は、個々のパーティションを識別し得る。キースペース名604は、個々のキースペースを識別し得る。キースペース範囲606は、各パーティションの各キースペース範囲の開始ハッシュ値及び終了ハッシュ値を識別し得る。ノードマップ608は、各パーティションのそれぞれのパーティショングループに含まれるサービス計算装置202のそれぞれを識別し得、サービス計算装置202のうちのどれがパーティショングループのリーダであるかを更に識別し得る。本例では、計算装置のIPアドレスが、それぞれのノードを識別するために使用されるが、他の例では、他の任意のシステム一意識別子が使用されてもよい。パーティションサイズ610は、各パーティションのその時のサイズをメガバイト単位などで示し得る。ロケーションID612は、識別されたパーティションのそれぞれの地理的ロケーションを識別し得る。
【0060】
アクセス負荷頻度614は、パーティションの負荷と呼ばれることもあり、直近の単位時間内、例えば、1時間毎、6時間毎、12時間毎、1日毎、数日毎、1週間毎などに受信されたデータアクセス要求の数を示してもよい。一例として、各クライアントコールにおいて各パーティションに対して行われた内部コールの回数は、パーティションのそれぞれにおけるアクセス負荷頻度を決定するための指標として収集されてもよい。このアクセス頻度の指標は、ロケーション及びパーティションサイズと共に、システム全体のパーティションバランスを考慮するための追加の属性として使用されてもよい。例えば、上述のように、パーティションは一般にキースペース内の範囲である。特定のキースペース範囲がホットパスを形成する場合、追加して以下で論じるバランス調整アルゴリズムは、システムに、このキースペース範囲のパーティションを分割させ、新しいパーティションのうちの少なくとも1つを異なる物理ノード(これは、本明細書で追加して論じる他のバランス調整基準に基づいて決定されてもよい)に移動させて、物理ノードの負荷をバランスする。
【0061】
例えば、複合パーティションマップ430は、パーティションID602及びロケーションIDにしたがって各パーティションを識別し、パーティションを含む地理的に分散されたシステム102(1)、102(2)、102(3)、...のそれぞれからの、上で論じたシステム200におけるパーティションのすべてを含んでもよい。更に、
図4に関して上で論じた個々のシステムパーティションマップ406、432、434などは、複合パーティションマップ430と同様のデータ構造を有してもよいが、それぞれのローカルシステム102に含まれるパーティションに関するパーティションID602及び対応する情報604~612のみを含んでもよい。
【0062】
上述のように、
図4に関して、調整サービス402の個々のインスタンスは、それぞれのローカルシステム102で保持されているパーティションをいつ分割するかを決定するために、パーティションマップ430、又はそのシステム102(1)、102(2)、102(3)のそれぞれのローカルパーティションマップ406、432、434にそれぞれ依拠してもよい。一例として、調整サービス402はパーティションのサイズを主な基準として決定してもよい。したがって、パーティションのサイズが閾値サイズを超えた場合、調整サービスは、パーティションを2つのパーティションに分割すべきであると判定してもよい。加えて、調整サービス402はまた、パーティションキースペースのアクセス率が指定された期間についての閾値を超えた場合、パーティションを分割してもよい。例えば、特定のパーティションのアクセス負荷頻度614、又はサービス計算装置202のうちの特定の1つによってホストされるパーティションの数が、指定された期間にわたって閾値を超えた場合、サービス計算装置202は、過負荷になり得、したがって、1以上のパーティションは分割され、他の計算装置に移行され得る。パーティションを分割して移行する決定はまた、サービス計算装置202のうちのそれぞれの装置で利用可能な残りのストレージスペースの量にも基づいてもよい。
【0063】
選択されたパーティションを分割するための分割動作は、最初、それぞれのローカルパーティションマップを更新するだけとなる。次いで、分割されたパーティションに対応するメタデータは、システム200における利用可能なリソースに応じて、同じ地理的ロケーション又は異なる地理的ロケーションのいずれかで、異なるサービス計算装置202にその後移行されてもよい。更新されたローカルパーティションマップは、地理的に分散されたシステムの負荷分散のためのデータ移行の要求と共に、システム200の他の地理的ロケーションにおける他の調整サービスに送信されてもよい。
図10及び
図11に関して追加して以下で論じるパーティションバランス調整アルゴリズムは、分割されたパーティションが移行されるべきシステム102及び地理的ロケーションを決定するために実行されてもよい。
【0064】
図7は、いくつかの実装形態に係るパーティション分割の実行例700を示す。
図7はパーティションの初期分割を示し、
図8及び
図9は、複数のロケーションに渡るデータの移行及びリバランスを完了するために実行された、その後の追加動作を示す。
図7の例は、地理的に離れた2つのシステム、すなわち地理的ロケーションAにある第1システム102(1)と地理的ロケーションBにある第2システム102(2)とを示す。
図7の例は、分割が実行される前の第1システム102(1)に関する第1ローカルパーティションマップ部分702と、分割が実行された後の第1ローカルパーティションマップ部分702(1)とを更に示す。
図7は、分割が実行される前、及びデータが第2システム102(2)に移行される前の第2システム102(2)に関するローカルパーティションマップ部分704を更に含む。
【0065】
本例では、ローカルパーティションマップ部分は、それぞれのローカルパーティションマップ部分702、702(1)、704にリストされたパーティションのいずれかによって分割閾値に到達されたか否かを示す列706を含む。708に示すように、パーティションID「1」の分割閾値は到達されている。分割閾値に到達されたか否かを判定するための基準の例は、
図6に関して上で論じられ、
図10及び
図11に関して更に以下で論られる。例えば、ローカル調整サービス402(1)は、パーティション1に関して分割閾値は到達されたと判定してもよく、この判定に基づいて、調整サービス402は、パーティション1を2つの新しいパーティション、すなわち、パーティション3及びパーティション4に分割してもよい。更に、調整サービス402(1)は、リーダノード、すなわち本例では「ノード1」に分割通知を送信して、リーダノードに分割を通知してもよい。分割がリーダノードによって確認された後、調整サービス402(1)は、分割を実行するためにパーティションマップ702を更新してもよく、その結果、新しいパーティション3及び4がパーティションマップ702(1)に追加され、パーティション1がパーティションマップ702(1)から削除される。加えて、調整サービス402(1)は、パーティション4をロケーションBにある第2システム102(2)に移行することを決定してもよく、地理的ロケーションBにある第2システム102(2)における調整サービス402(2)に移行要求710を送信してもよい。例えば、移行要求は、更新されたマップ部分702(1)を含んでもよい。
【0066】
図8は、いくつかの実装形態に係るパーティション分割後の移行例800を示す。例えば、
図8は、パーティション分割後の次のバランスのステップを示し、これは、本例では、パーティション4の第2システム102(2)への移行である。例えば、調整サービス402は、すべての地理的ロケーションにおける利用可能なリソースを考慮しながら、システム200におけるパーティションがシステム200におけるすべての地理的ロケーションにわたってバランスされることを確保するように構成されてもよい。
【0067】
図7に関して上述したように、第1調整サービス402(1)は第2調整サービス402(2)に移行要求を送信してもよい。これに応じて、第2移行サービス402(2)は、典型的には移行要求の受諾を含み得る移行応答802を送信してもよい。例えば、移行要求の受諾は、パーティション4が移行される第2システム102(2)における移行先ノードの識別を含んでもよい。例えば、識別された移行先ノードは、地理的ロケーションBにおける第2システム102(2)における新しいパーティショングループのリーダノードとなる(本例ではノード10)。
【0068】
地理的ロケーションAにおける第1調整サービス402(1)が、地理的ロケーションBにおける第2調整サービス402(2)からの移行要求の受諾と移行先ノードの識別情報とを受信すると、地理的ロケーションAにおける第1調整サービス402(1)は、地理的ロケーションAにおけるパーティション4に関するリーダノード(すなわち、本例ではノード1)が第2調整サービス402(2)によって指定された移行先ノード(ノード10)への移行を開始することを要求してもよい。次いで、地理的ロケーションAにあるリーダノードは、パーティション4のスナップショット804を移行先ノードに移行してもよい。パーティション4は、スナップショットが取られ移行される間、変更を受けないようにロックされてもよい。スナップショット804の移行は、いくつかの例では、リーダノード間でのみ行われてもよい。その後、スナップショット804を受信すると、移行先リーダノード(ノード10)は、第2システム102(2)内にコピーを作成して、パーティション4のコピーをパーティショングループに属する他のノード、例えば、本例ではノード9及び11に提供してもよい。パーティションマップ部分704(1)は、移行後の第2システム102(2)のパーティションマップ情報を示す。
【0069】
図9は、いくつかの実装形態に係るパーティション分割及び移行の完了後の時の状態の一例900を示す。本例では、パーティションが地理的ロケーションA及びBにおいてバランスされた後のその時の状態が示されている。例えば、移行先リーダノード(ノード10)が、パーティション4のコピーが地理的ロケーションBにおいて作成されたことを確認した後、地理的ロケーションAにおける第1調整サービス402(1)は、ロックを解除し、パーティションマップ部分702(2)を更新して、変更を反映し、分割及び移行後のロケーションAにおけるパーティションのその時の状態を示す。加えて、パーティションマップ部分704(3)は、地理的ロケーションAからの分割及び移行完了後の地理的ロケーションBにおけるパーティション4のその時の状態を示す。
【0070】
各地理的ロケーションにおける調整サービス402は、その地理的ロケーションにおける各パーティションのコピー数が常に特定のコピー数を満たすようにすることを確保する役割を果たす。この数が減ることは、障害が発生した場合にデータの可用性が損なわれ得る状態にシステムを置くこととなる。このため、調整サービス402は、各パーティショングループのすべてのメンバの最後に受信されたハートビート時間を周期的に監視し、リーダノードから収集してもよい。パーティションのコピーを格納している特定のノードが、閾値期間を超えて非アクティブになっているようにみえる場合、調整サービスはパーティション修復シーケンスをトリガしてもよい。例えば、パーティション修復シーケンスは、非アクティブノードを、それが属するパーティショングループから削除することと、それぞれのリーダから同じ地理的ロケーション内の利用可能なアクティブノードへのパーティションのスナップショットのコピーをトリガすることとを含んでもよい。同じ地理的ロケーション内に利用可能なアクティブノードがない場合、調整サービス402は、そのパーティションのすべてのコピーを、パーティションを受け取るのに十分な容量を有する健康なノードを十分な数含む異なる地理的ロケーションに移行することを試みてもよい。
【0071】
図10は、いくつかの実装形態に係る負荷分散のための例示的な擬似コード1000を示す。例えば、上述のように、システム102は、パーティション分割後などに、パーティションを移行するロケーションを識別するために負荷分散アルゴリズムを実行してもよい。例えば、負荷分散アルゴリズム1000は、メタデータゲートウェイプログラム238に含まれ、メタデータゲートウェイプログラム238の実行中に提供される調整サービス402の一部として実行されてもよい。
【0072】
パーティションが分割されると、システムは、ホットスポット化を避けるために、新しいパーティションのうちの少なくとも1つを、異なる地理的ロケーションにある異なる計算装置に移動することを試みてもよい。パーティションは、ローカル調整サービス402によって、移動の可能な候補としてマークされてもよい。パーティションIDは、分割基準に基づいて優先キューに格納されてもよい。ローカル調整サービス402は、各地理的ロケーションにおける最近のアクセス負荷頻度を判定することなどに基づいて、パーティションを移動する地理的ロケーションを決定してもよい。例えば、1002に示すように、調整サービスは、システム200におけるすべての地理的ロケーションから受信されたパーティションマップから組み立てられた複合パーティションマップ430にアクセスして、最も負荷の軽い(例えば、ある期間にわたって最も少ないデータアクセス要求を示す最も低いアクセス負荷頻度を有する)地理的ロケーションを決定する。或いは、すべての地理的ロケーションが等しく負荷がかかっている場合、特定の地理的ロケーションはランダムに、ラウンドロビンによって、又は他の適切な技法を用いて選択されてもよい。
【0073】
いくつかのケースでは、各ローカル調整サービス402は、例えば、メタデータのパーティションを処理する計算ノードの数に対して、そのロケーションに固有の負荷情報を維持してもよい。特定の地理的ロケーションにおいて閾値アクセス負荷頻度が到達された場合、ローカル調整サービス402は、他の地理的ロケーションにおけるすべての他の調整サービス402に、少なくとも1つのパーティションをオフロードする候補を見つけるための要求を送信してもよい。要求は、各受信ロケーションにおいてキューに入れられ、到着の順序に基づいてサービス提供されてもよい。
【0074】
ターゲットとされた移行先地理的ロケーションのローカル調整サービス402が特定のパーティションのオフロードの移行先となることを受諾した場合、その移行先ロケーションはローカル調整サービス402によってロックされてもよく、他の調整サービス402からの追加の負荷分散要求を受け付けない。ロック状態は、移行が受信される遠隔の調整サービスのIDを参照してもよい。1004に示すように、pパーティションのコピーが選択された移行先ノードに移行される。次いで、移行先ノードは、ハートビートがローカルシステム102内に含まれ続けるように、パーティションを更に2つのローカルノードに複製してもよい。移行及び複製の完了後、ロケーションロック状態はローカル調整サービスから削除され、移行元ロケーションは移行元ノードからパーティションのコピーを削除してもよい。
【0075】
図11は、いくつかの実装形態に係るパーティション分割及び負荷分散のための例示的なプロセス1100を示すフロー図である。プロセスは、動作のシーケンスを表す論理フロー図におけるブロックの集合として示されており、動作の一部又は全部は、ハードウェア、ソフトウェア、又はそれらの組み合わせで実装されてもよい。ソフトウェアの文脈において、ブロックは、1つ以上のプロセッサによって実行されると、記載された動作を実行するようにプロセッサをプログラムする、1以上のコンピュータ可読媒体に格納されたコンピュータ実行可能命令を表してもよい。一般に、コンピュータ実行可能命令は、特定の機能を実行したり、特定のデータタイプを実装したりするルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。ブロックが説明されている順序は、限定として解釈されるべきではない。説明されるブロックの任意の数は、プロセス又は代替的なプロセスを実施するために、任意の順序で、及び/又は並列に組み合わされてよく、またブロックのすべてが実行される必要はない。議論の目的のために、プロセスは、本明細書において例で説明される環境、フレームワーク、及びシステムを参照して説明されるが、プロセスは、他の多種多様な環境、フレームワーク、及びシステムで実装されてもよい。
図11の例では、プロセス1100は、1以上のサービス計算装置202が、
図10に関して上で論じた負荷分散アルゴリズムの実行を含むメタデータゲートウェイプログラム238を実行することによって、少なくとも部分的に実行され得る。
【0076】
1102において、システムはローカル調整サービスを実行してもよい。例えば、各地理的ロケーションにある各システムは、他の地理的ロケーションで実行される調整サービスの他のインスタンスと通信可能な調整サービスのインスタンスをローカルで実行し得る。
【0077】
1104において、システムはパーティションを分割するか否かを判定してもよい。例えば、上で論じたように、システムは、パーティションが閾値パーティションサイズを超えたか否か、閾値アクセス負荷頻度に基づいて、パーティションを維持するノードグループにおけるノードが過負荷であるか否か、及び/又はパーティションを維持するノードグループにおけるノードに利用可能な残りのストレージ容量が閾値最小値を下回ったか否かなどの1以上の考慮事項に基づいて、パーティションを分割するか否かを判定してもよい。パーティションを分割する準備ができた場合、プロセスは1106に進む。パーティションを分割する準備ができていない場合、プロセスは1108に進む。
【0078】
1106において、システムは、1104で識別されたパーティションを分割してもよい。例えば、調整サービスは、識別されたパーティションに割り当てられたキー値を、ローカルパーティションマップにおける2つの新しいパーティションの間で分割することによって、ローカルパーティションマップを更新してもよい。
【0079】
1108において、システムは、地理的に分散されたシステムで最も過負荷のノード及び最も低負荷のノードを判定してもよい。一例として、システムは、複合パーティションマップを参照して、システムにおいてどのノードが最も低負荷のノードであり、どのノードが最も過負荷のノードであるかを判定してもよい。
【0080】
1110において、システムは、パーティションをその時に保持しているノードよりも低負荷である他のノードが存在する場合、移行するパーティションを選択してもよい。
【0081】
1112において、システムは、最も低負荷のノードを有する地理的ロケーションにおける調整サービスに移行要求を送信してもよい。例えば、移行要求は、最も低負荷のノードを有する地理的ロケーションにあるシステムに選択されたパーティションを移行するように要求してもよい。
【0082】
1114において、システムは、移行要求が受諾されたか否かを判定してもよい。例えば、移行要求が受諾された場合、受諾メッセージは、パーティション移行を受けるリーダノードとして機能する移行先ノードの識別子を含んでもよい。移行要求が受諾された場合、プロセスは1118に進む。移行要求が受諾されなかった場合、プロセスは1116に進む。
【0083】
1116において、移行要求が拒否された場合、システムは別の移行要求を低負荷のノードを有する別の地理的ロケーションに送信してもよい。例えば、システムは、次の移行要求を受信するために最も低負荷のノードを有する次の地理的ロケーションを選択してもよい。
【0084】
1118において、移行要求が受諾された場合、システムは、選択されたパーティションをロックし、選択されたパーティションを移行先リーダノードに移行する命令を移行元リーダノードに送信してもよい。例えば、パーティションは、移行が行われている間、データの書き込みからロックされたままであり得、受けた書き込み、削除などは、移行が完了した後に、パーティションを更新するために移行先ノードに転送されてもよい。
【0085】
1120において、システムは、移行先調整サービスからの移行及び複製の確認を受信してもよい。例えば、移行先ノードは、受信されたパーティションを、移行先ノードと共にパーティショングループを構成する少なくとも2つの追加のノードに複製してもよい。この複製の完了後、移行先調整サービスは移行元システムに移行完了通知を送信してもよい。
【0086】
1122において、システムは、移行元リーダノード及びパーティショングループにおける他のノードに、選択されたパーティションを削除する命令を送信してもよい。したがって、選択されたパーティションは、移行元システムにおけるノードから削除されてもよい。
【0087】
本明細書で説明される例示的なプロセスは、議論を進めるために提供されたプロセスの例に過ぎない。本明細書の開示を検討すれば、多数の他の変形形態が当業者には明らかになるであろう。更に、本明細書の開示は、プロセスを実行するための適切なフレームワーク、アーキテクチャ、及び環境のいくつかの例を記載しているが、本明細書における実装形態は、示し論じた特定の例に限定されるものではない。更に、本開示は、説明したように、また図面に示したように、様々な例示的な実装形態を提供する。しかしながら、本開示は、本明細書で説明し図示した実装形態に限定されるものではなく、当業者に知られている、又は知られることになる他の実装形態にも拡張し得る。
【0088】
図12は、本明細書で説明されるシステムの機能の少なくとも一部を実装するために使用され得るサービス計算装置202の選択されたコンポーネント例を示している。サービス計算装置202は、任意の数の仕方で具現化され得る1以上のサーバ又は他のタイプの計算装置を含んでもよい。例えば、サーバの場合、プログラム、他の機能コンポーネント、及びデータは、単一のサーバ、サーバのクラスタ、サーバファーム又はデータセンタ、クラウドホスト型コンピューティングサービスなどに実装されてもよいが、他のコンピュータアーキテクチャが追加的又は代替的に使用されてもよい。複数のサービス計算装置202は、一緒に配置されても別個に配置されてもよく、例えば、仮想サーバ、サーババンク、及び/又はサーバファームとして編成されてもよい。説明された機能は、単一のエンティティ又は企業のサーバによって提供されてもよいし、複数の異なるエンティティ又は企業のサーバ及び/又はサービスによって提供されてもよい。
【0089】
図示の例において、サービス計算装置202は、1以上のプロセッサ1202、1以上のコンピュータ可読媒体1204、及び1以上の通信インターフェース1206を含む、又はそれらに関連付けられてもよい。各プロセッサ1202は、単一の処理ユニットであってもよいし、複数の処理ユニットであってもよく、単一若しくは複数の演算ユニット、又は複数の処理コアを含んでもよい。プロセッサ1202は、1以上の中央処理ユニット、マイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタルシグナルプロセッサ、ステートマシン、論理回路、及び/又は動作命令に基づいて信号を操作する任意のデバイスとして実装されてもよい。一例として、プロセッサ1202は、本明細書で説明されるアルゴリズム及びプロセスを実行するように具体的にプログラム又は構成された任意の適切なタイプの1以上のハードウェアプロセッサ及び/又は論理回路を含んでもよい。プロセッサ1202は、コンピュータ可読媒体1204に格納されたコンピュータ可読命令をフェッチして実行するように構成されてもよく、この命令は、本明細書で説明された機能を実行するようにプロセッサ1202をプログラムしてもよい。
【0090】
コンピュータ可読媒体1204は、揮発性メモリ及び不揮発性メモリ、並びに/又はコンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報を格納するための任意のタイプの技術で実装された取り外し可能及び取り外し不可能な媒体を含んでもよい。例えば、コンピュータ可読媒体1204は、限定されるものではないが、RAM、ROM、EEPROM、フラッシュメモリ、若しくは他のメモリ技術、光ストレージ、ソリッドステートストレージ、磁気テープ、磁気ディスクストレージ、ストレージアレイ、ネットワーク接続ストレージ、ストレージエリアネットワーク、クラウドストレージ、又は所望の情報を格納するために使用され得、また計算装置によってアクセスされ得る任意の他の媒体を含んでもよい。サービス計算装置202の構成によっては、コンピュータ可読媒体1204は、言及される場合、エネルギー、キャリア信号、電磁波、及び/又は信号自体などの媒体を非一時的コンピュータ可読が除外する限りにおいて、有形の非一時的コンピュータ可読媒体であってもよい。いくつかのケースでは、コンピュータ可読媒体1204はサービス計算装置202と同じ場所にあってもよいが、他の例では、コンピュータ可読媒体1204はサービス計算装置202から部分的に離れていてもよい。例えば、いくつかのケースでは、コンピュータ可読媒体1204は、
図2に関して上で論じたネットワークストレージシステム204におけるストレージの一部を含んでもよい。
【0091】
コンピュータ可読媒体1204は、プロセッサ1202によって実行可能な任意の数の機能コンポーネントを格納するために使用されてもよい。多くの実装形態において、これらの機能コンポーネントは、プロセッサ1202によって実行可能であり、実行されると、本明細書においてサービス計算装置202に属する動作を実行するようにプロセッサ1202を具体的にプログラムする命令又はプログラムを含む。コンピュータ可読媒体1204に格納された機能コンポーネントは、ユーザウェブアプリケーション216、管理ウェブアプリケーション224、ストレージプログラム230、及びメタデータゲートウェイプログラム238を含んでもよく、これらのそれぞれは、1以上のコンピュータプログラム、アプリケーション、実行可能コード、又はそれらの一部を含んでもよい。更に、本例ではこれらのプログラムを一緒に図示しているが、使用中、これらのプログラムの一部又は全部が別々のサービス計算装置202で実行されてもよい。
【0092】
加えて、コンピュータ可読媒体1204は、本明細書で説明される機能及びサービスを実行するために使用されるデータ、データ構造、及び他の情報を格納してもよい。例えば、コンピュータ可読媒体1204は、パーティション240を含み得るメタデータデータベース234を格納してもよい。加えて、コンピュータ可読媒体はローカルオブジェクトデータ237であってもよい。更に、本例ではこれらのデータ構造を一緒に図示しているが、使用中、これらのデータ構造の一部又は全部が別々のサービス計算装置202によって格納されてもよい。サービス計算装置202はまた、プログラム、ドライバなど、及び機能コンポーネントによって使用又は生成されるデータを含み得る、他の機能コンポーネント及びデータを含み、又はこれらを保持してもよい。更に、サービス計算装置202は、他の多くの論理コンポーネント、プログラムコンポーネント、及び物理コンポーネントを含んでもよく、これらのうちの上述したものは、本明細書における議論に関連する例に過ぎない。
【0093】
1以上の通信インターフェース1206は、1以上のネットワーク106及び207などを介して、様々な他のデバイスとの通信を可能にするための1以上のソフトウェアコンポーネント及びハードウェアコンポーネントを含んでもよい。例えば、通信インターフェース1206は、本明細書の他の箇所で追加的に列挙されるように、LAN、インターネット、ケーブルネットワーク、セルラネットワーク、無線ネットワーク(例えば、Wi-Fi)及び有線ネットワーク(例えば、ファイバチャネル、光ファイバ、イーサネット)、直接接続、並びにBLUETOOTH(登録商標)などの近距離通信などのうちの1つ以上を介した通信を可能にしてもよい。
【0094】
本明細書で説明される様々な命令、方法、及び技法は、コンピュータ可読媒体に格納され、本明細書におけるプロセッサによって実行されるコンピュータプログラム及びアプリケーションなど、コンピュータ実行可能命令の一般的な文脈で考えてもよい。一般に、プログラム及びアプリケーションという用語は同義で使用されてもよく、特定のタスクを実行したり特定のデータタイプを実装したりするための命令、ルーチン、モジュール、オブジェクト、コンポーネント、データ構造、実行可能コードなどを含んでもよい。これらのプログラム、アプリケーションなどは、ネイティブコードとして実行されてもよいし、仮想マシン又は他のジャストインタイムコンパイル実行環境などでダウンロードされて実行されてもよい。一般に、プログラム及びアプリケーションの機能は、様々な実装形態において所望に応じて組み合わされたり、分散されたりしてもよい。これらのプログラム、アプリケーション、及び技法の実装形態は、コンピュータ記憶媒体に格納されてもよいし、何らかの形態の通信媒体を介して送信されてもよい。
【0095】
主題は、構造的特徴及び/又は方法論的行為に特化した表現で記載されてきたが、添付の請求項に定義される主題は、必ずしも記載された具体的な特徴又は行為に限定されるものではないことと理解される。むしろ、具体的な特徴及び行為は、請求項を実施するための例示的な形態として開示されている。
【国際調査報告】