JP2009522659A - ウェブサービスクライアントインターフェースを有する分散型ストレージシステム - Google Patents

ウェブサービスクライアントインターフェースを有する分散型ストレージシステム Download PDF

Info

Publication number
JP2009522659A
JP2009522659A JP2008548792A JP2008548792A JP2009522659A JP 2009522659 A JP2009522659 A JP 2009522659A JP 2008548792 A JP2008548792 A JP 2008548792A JP 2008548792 A JP2008548792 A JP 2008548792A JP 2009522659 A JP2009522659 A JP 2009522659A
Authority
JP
Japan
Prior art keywords
predetermined
keymap
storage
node
web service
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008548792A
Other languages
English (en)
Other versions
JP5047988B2 (ja
JP2009522659A5 (ja
Inventor
バーミューレン,アラン・エイチ
アトラス,アラン・ビイ
バース,デイビッド・エム
コーミー,ジョン・デイビッド
フィッシュマン,エイミ・ケイ
ソレンソン,ジェイムズ・クリストファ・サード
ワグナー,エリック・エム
Original Assignee
アマゾン・テクノロジーズ・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アマゾン・テクノロジーズ・インコーポレーテッド filed Critical アマゾン・テクノロジーズ・インコーポレーテッド
Publication of JP2009522659A publication Critical patent/JP2009522659A/ja
Publication of JP2009522659A5 publication Critical patent/JP2009522659A5/ja
Application granted granted Critical
Publication of JP5047988B2 publication Critical patent/JP5047988B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

分配型、ウェブサービスに基づくストレージシステム。システムは、ウェブサービスプロトコルに従い、所定のデータオブジェクトにアクセスする為の所定のクライアント要求、オブジェクトに対応するキー値を含む要求を受信するよう構成される、ウェブサービスインターフェースを含む。また該システムは、各複製がそれぞれの固有のロケータ値を介してアクセス可能であるオブジェクトの複製を保存するように構成されるストレージノードと、各オブジェクトに対するそれぞれのキーマップエントリを保存するように構成されるキーマップインスタンスと、を含む。所定のオブジェクトについては、それぞれのキーマップエントリは、オブジェクトの複製と対応するキー値及び各ロケータ値を含む。コーディネータは、ウェブサービスインターフェースから所定のクライアント要求を受信し、キー値に対応するロケータ値を認識する為に応答可能にキーマップインスタンスにアクセスし、特定のロケータ値については、対応するストレージノードから対応する複製を取り出してもよい。

Description

本発明はデータストレージシステム、より具体的には、ウェブサービスとしてストレージへのアクセスを提供するように構成されるストレージシステムに関連する。
多くの異なるコンピュータアプリケーションは、様々な種類のアプリケーションデータの持続的保存のために、あるストレージ媒体に依存する。例えば、一般的なオフィスアプリケーションおよびマルチメディアアプリケーションは、中でも、文書、集計表、静止画像、音声及びビデオデータなどの様々な種類やフォーマットのアプリケーションデータを作成し、使用する。このようなデータは頻繁に、ユーザが繰り返しアクセス又は使用できるように保存される。例えば、ユーザは、一定期間にわたり多くの文書又は他のデータを保存し、作業することを希望する場合があり、必要な時に予想できる状態で、データを速やかに使用できることを望む場合がある。
従来のコンピュータ関係システムにおいて、持続的なアプリケーションデータの保存のためにアプリケーションによって使用されるストレージ媒体は、光学又は半導体ストレージデバイスも使用されるが、最も一般的には磁気固定ドライブ又は「ハードドライブ」である。このようなデバイスは、アプリケーションを実行するコンピュータシステム内に統合されているか、あるいはローカルの周辺インターフェース又はネットワークを介してそのシステムにアクセス可能である。一般的に、アプリケーションストレージとしての役割をするデバイスは、ファイルシステムインターフェースなど、ストレージアクセスを必要とする様々なアプリケーションへの一貫したストレージインターフェースを提供するためのデバイスレベルでの動作を管理する、オペレーティングシステムによって管理される。
この従来型モデルのアプリケーションストレージには、いくつかの限界が存在する。第1に、概して従来型モデルは、アプリケーションデータのアクセス性を制限する。例えば、アプリケーションデータが、特定のコンピュータシステムのローカルハードドライブに保存される場合、他のシステムで実行されているアプリケーションからアクセス不可能である。データがネットワークでアクセス可能なデバイスに保存される場合でも、周辺ネットワーク外のシステムで実行するアプリケーションは、そのデバイスにアクセスすることが不可能である場合がある。例えば、セキュリティ上の理由で、企業の外部のシステムが企業内のシステム又はリソース情報にアクセスできないように、企業は一般にローカルエリアネットワーク(LAN)へのアクセスを制限する。したがって、携帯デバイス上(例えば、ノート型又は手持ちサイズコンピュータ、個人情報端末、携帯電話デバイスなど)で実行するアプリケーションは、固定されたシステム又はネットワークに持続的に関連するデータへのアクセスに困難となる場合がある。
また従来のアプリケーションストレージモデルも、保存されたデータの信頼性を十分に確認することができない場合がある。例えば、従来のオペレーティングシステムは、一般的に初期設定で1つのストレージデバイス上に1つのアプリケーションデータのコピーを保存し、データの冗長性が望まれる場合に、ユーザ又はアプリケーションに自らのアプリケーションデータのコピーを作成し管理することを要求する。個々のストレージデバイス又は第三者のソフトウェアがある程度の冗長性を提供する場合もあるが、アプリケーションが利用可能なストレージリソースがアプリケーション装置よって大いに異なるため、これらの特徴はアプリケーションにとって一貫して利用可能ではない場合がある。またオペレーティングシステム介在の従来のストレージモデルも、プラットフォームを越えるデータへのアクセス性を制限してもよい。例えば、異なるオペレーティングシステムは、異なる、互換性のないフォーマットで同一アプリケーション用のデータを保存する場合があり、1つのプラットフォーム上(例えばオペレーティングシステム及び基礎をなすコンピュータシステムハードウェア)で実行しているアプリケーションのユーザが、異なるプラットフォーム上で実行しているアプリケーションによって保存されたデータにアクセスすることが困難である場合がある。
分散型、ウェブサービス系のストレージシステムの様々な実施態様を開示する。一実施態様に従い、システムは、ウェブサービスプロトコルに従い、データオブジェクトにアクセスするためのクライアント要求を受け取るように構成されるウェブサービスインターフェースを含んでいる。所定のデータオブジェクトへのアクセスのための所定のクライアント要求は、所定のデータオブジェクトと対応するキー値を含んでいる。また該システムは、データオブジェクトの複製を保存するように構成される多くのストレージノードを含み、各複製はそれぞれのロケータ値を介しアクセス可能であり、ロケータ値はそれぞれシステム内で固有である。該システムは、データオブジェクトのそれぞれに対するそれぞれのキーマップエントリを保存するように構成されるキーマップインスタンスをさらに含んでもよく、それぞれのキーマップエントリは、所定のデータオブジェクトのそれぞれの保存された複製に対応するキー値及び各ロケータ値を含む。また該システムは、ウェブサービスインターフェースからデータオブジェクトにアクセスするためのクライアント要求を受け取るように構成されるコーディネータをさらに含んでもよい。所定のクライアント要求に応じて、コーディネータはキー値に対応する1つ以上のロケータ値を認識するためにキーマップインスタンスにアクセスするように構成され、特定のロケータ値に対しては、対応する複製を取り出すために対応するストレージノードにアクセスするように設定されてもよい。
該システムの特定の実装において、該ウェブサービスインターフェースは、ウェブサービスプロトコルに従い、データオブジェクトを保存するためのクライアント要求を受け取るようにさらに設定されてもよく、特定のデータオブジェクトを保存するための特定のクライアント要求は本特定データオブジェクトと対応するキー値を含む。該コーディネータは、ウェブサービスインターフェースからデータオブジェクトを保存するためのクライアント要求を受け取るようにさらに設定されてもよく、特定のクライアント要求に応じて、該コーディネータは1つ以上の対応するストレージノードへ特定のデータオブジェクトの1つ以上の複製を保存するように設定されてもよい。特定のデータオブジェクトの所定の複製を保存することに応じて、所定のストレージノードは、コーディネータに、所定の複製に対応するロケータ値を返すように設定されてもよい。
本発明は、種々の修正及び代替形態が可能であるが、その特定の実施形態は図面によって一例として示され、本願に詳述される。しかしながら、図面及び詳細な説明は、本発明に開示される特定の形態に制限することを意図せず、逆に、添付の請求項によって定義される本発明の精神及び範囲内に含まれるすべての修正、同等物、及び代替手段を扱うことを理解されたい。
序文
コンピュータアプリケーションが地理的に分散されるばかりでなく、さらにデータ集中的になるにつれ、アプリケーションデータへの信頼性のある、位置独立型のアクセスの必要性が増加する。例えば、オーサリング、ストレージ、再生アプリケーションなどのマルチメディアアプリケーションは、マルチメディアコンテンツの質と量が向上するにつれ、データストレージ量の増大を必要とする。さらに、データを保存するデバイスの位置に関係ない様々な場所からアプリケーションデータにアクセスすることが望ましい場合がある。例えば、多くのコンピュータがディスク系の相当な量のストレージを含むが、これらのストレージに一貫した便利な方法で遠隔からアクセスすることは、技術上及び安全上の困難をもたらす。
個々のコンピュータを、単独で個々の内部ストレージリソース又はプロビジョニングローカルネットワーク系のストレージリソース(例えば、ネットワーク接続ストレージ(NAS)、ストレージ・エリア・ネットワーク(SAN)など)に依存するように構成されることとは対照的に、インターネット接続データストレージサービスは、例えば、ウェブサービス(WS)プロトコルなどのインターネット系のプロトコルを介し、クライアントに包括的なストレージサービスを提供するように設定されてもよい。ウェブサービスプロトコルなどのインターネット系プロトコルは、一般的に基礎をなすソフトウェア又はハードウェア上で独立して機能するため、一般的にプラットフォーム独立型である。したがって、ウェブサービスとしてデータストレージ機能を提供することは、アプリケーションのホストシステム又はローカルネットワークに実装されるストレージリソースから独立した任意の大きさのストレージへ多くの異なる種類のアプリケーションが直接アクセスすることを可能にする可能性がある。さらに、ウェブサービスアクセス可能ストレージは、一般的にインターネットアクセスを提供する任意の場所からでもアクセス可能であってもよい。ウェブサービスアクセス可能ストレージは、異なるデバイス又はアプリケーションによる共有データへのリモートアクセス、実行中の個々のアプリケーションによる幅広く分散されたデータへのリモートアクセス、共同で作業する分散したユーザ間のデータへのアクセス及びデータの共有、分散したユーザへのアプリケーション結果データの配布、及び多くのその他の同様の機能などの多数の異なるコンピュータ機能の実装を容易にし得る。
以下の論考において、ウェブサービス系ストレージシステムにおいて使用されてもよい、可能なデータストレージモデルの一実施形態を説明する。続いて、データストレージモデルに従いストレージサービスを提供するように構成されてもよいストレージサービスシステムを開示し、その様々な要素を詳しく説明する。
ストレージサービスユーザインターフェース及びストレージモデルの概略
ウェブサービスなどの、サービスとしてのデータストレージをユーザに提供するためのストレージモデルの一実施形態を図1に示す。図示されたモデルにおいて、ストレージサービスインターフェース10は、ストレージサービスに対する対顧客又は対ユーザインターフェースとして提供される。インターフェース10によってユーザに提示されるモデルに従い、ストレージサービスは、インターフェース10を介して任意の数のバケット20a−nとして体系化されてもよい。各バケット20は、任意の数のオブジェクト30a−nを保存するように設定されてもよく、ストレージサービスのユーザによって特定されるデータを入れ替わりに保存してもよい。
以下にさらに詳しく述べるように、一部の実施形態において、ストレージサービスインターフェース10は、ウェブサービスモデルに従い、ストレージサービスとそのユーザ間の情報のやり取りをサポートするように設定されてもよい。例えば、一実施形態において、インターフェース10は、例えばhttp://storageservice.domain.comなどのUniform Resource Locator(URL)を有するウェブサービスエンドポイントとして、クライアントによってアクセス可能であってもよく、サービスクライアントによって作成されたウェブサービスコールは処理対象となる場合がある。一般的に言えば、ウェブサービスは、Hypertext Transport Protocol(HTTP)又は他の適切なプロトコルのバージョンなどの、1つ以上のインターネット系のアプリケーション層データ転送プロトコルを含む要求インターフェースを介し、要求するクライアントが使用できるように作られた、あらゆる種類のコンピュータサービスを示すことができる。
ウェブサービスは、様々な許可サービスプロトコルを使用し、様々なアーキテクチャ形式で実装されてもよい。例えば、Representational State Transfer(REST)形式のウェブサービスアーキテクチャにおいて、ウェブサービスコールに関するパラメータ(例えば、要求されるサービスの種類を特定すること、ユーザ資格、操作すべきユーザデータ、など)は、HTTP GET又はPUT命令など、ウェブサービスエンドポイントに対するウェブサービスコールを呼び出すデータ転送命令に対するパラメータとして特定されてもよい。一部の実装において、各ウェブサービスコールが、外部状態情報を参照することなくそのコールを処理するために必要なすべての情報を含んでいる場合があるため、REST形式ウェブサービスアーキテクチャは処理状態を把握しない。REST形式ウェブサービスアーキテクチャとは対照的に、文書系又はメッセージ系ウェブサービスアーキテクチャは、ウェブサービスエンドポイントに送信され、解読され、エンドポイントによって作動し得る文書としてウェブサービスコールに関するパラメータ及びデータをコード化してもよい。例えば、eXtensibleMarkupLanguage(XML)又は他の適切なマークアップ言語のバージョンを、ウェブサービス要求文書をフォーマット化するために使用してもよい。一部の実施形態において、要求文書をフォーマット化するために使用されるマークアップ言語を、要求の処理を制御するパラメータの範囲を定めるが、他の実施形態において、マークアップ言語のある特徴は、それ自体(例えば、あるタグ)要求処理の態様を直接制御してもよい。さらに、一部の実施形態において、結果として得られる文書は、例えば、エンドポイントによるウェブサービス要求の処理を容易にするために、Simple Object Access Protocol(SOAP)のバージョンなどの他のプロトコル内にカプセル化されてもよい。
他のプロトコルが、さらにウェブサービスアーキテクチャの様々な実施形態内で用いられてもよい。例えば、WebServicesDescriptionLanguage(WSDL)のバージョンは、潜在的クライアントにインターフェースで接続する要求を公開するためにウェブサービスエンドポイントによって用いられる。ウェブサービスエンドポイントは、Universal Description,Discovery and Integration(UDDI)プロトコルのバージョンなどのディレクトリプロトコルを通じ、ウェブサービスを潜在的クライアントに知らせる場合がある。ウェブサービスインターフェースを介するコンピュータサービスの規定に関係する多くの他の種類のプロトコルが存在する場合があり、あらゆる所定のウェブサービス実装は当該プロトコルのあらゆる適切な組み合せを使用してもよい。
一部の実施形態において、インターフェース10は、ウェブサービスインターフェースの代わり、又はウェブサービスインターフェースに加えて、ウェブサービスインターフェース以外のインターフェースをサポートしてもよいことに留意されたい。例えば、企業は、異なる種類のインターフェース(例えば、企業のイントラネットに対してカスタマイズされた、独自のインターフェース)を使用するであろう企業内のユーザのみならず、ウェブサービスプロトコルを介しサービスにアクセスするであろう企業外部のクライアントによって使用されるストレージサービスを実装してもよい。一部の実施形態において、インターフェース10は、それを介してストレージサービスのあらゆるユーザがサービスにアクセスできるようなインターフェースで接続する様々な種類のそれぞれのプロトコルをサポートしてもよい。他の実施形態において、インターフェースの異なる例は、異なるインターフェースアプローチのために提供されてもよい。一部の実施形態において、クライアントとの情報のやり取り(例えば、サービス要求の受け取り及びサービス要求への応答)を取り扱うことに関係するインターフェース10のこれらの態様は、ストレージサービス(例えば、バケット及びオブジェクトの階層へのサービスの体系)の一般的なアーキテクチャを実装するこれらの態様から独立して実施されてもよいことに留意されたい。このような一部の実施形態において、図2の説明とともに、さらに以下に詳しく説明するように、クライアントの情報のやり取り(例えば、ウェブサービスプロトコルを介した)のインターフェース10の一部は、企業の内部などの特定のユーザによって迂回されてもよい。
図1に示すように、インターフェース10は、ストレージサービスユーザにバケット20へのアクセスを提供する。一般的に言えば、バケット20はストレージサービスのユーザと関連するオブジェクト名前領域のルートとして機能してもよい。例えば、バケット20はファイルシステムディレクトリ又はフォルダに類似していてもよい。一部の実施形態において、また個々のバケット20は、ストレージサービスの使用量計算の基準となる場合がある。例えば、ユーザは請求目的のために1つ以上のバケット20と関連付けられる場合があり、ユーザは、これらのバケット20によって設定された名前領域内に階層的に備わるストレージリソース(例えば、ストレージオブジェクト30)の使用に対して請求されてもよい。
図で示した実施形態において、バケット20a−nのそれぞれは、各アクセスポリシー23a−nのみならず、関連するメタデータ21a−nを含む。一般的に言えば、メタデータ21が、所定のバケット20の態様又は性質を表現するために使用される。例えば、メタデータ21は、バケット作成日を識別する情報、その作成者の身元情報、バケットがそれに関連する任意のオブジェクト30を有するか否かの情報、その他の適切な情報を含んでいてもよい。一部の実施形態において、メタデータ21は、バケット20に関連するオブジェクト30の合計サイズ、バケット20及び/又はその関連するオブジェクト30に関するユーザのアクセス履歴、バケット20に関連する請求履歴、又は、バケット20の現行又はこれまでの使用に関係する他の適切な情報などの、バケット20の使用特性を示す情報を含んでもよい。一実施形態において、各バケット20は、ストレージサービスによって、ユーザによって、又は自動的に特定される、それぞれの固有の識別子と関連してもよい。固有の識別子は、メタデータ21内、又はバケット20の別個の性質、又はフィールドとして保存されてもよい。一部の実施形態において、所定のバケット20は、明確な参照、ポインタ、又は他の所定のバケット20と関連するオブジェクト30と対応する情報を含まなくてもよい。むしろ、以下に更に詳しく説明するように、オブジェクト30の位置及び選択は、キーマップとして本書で言及する別個のマッピング設備の使用を通じて実行されてもよい。
アクセスポリシー23は、バケット20に関連するオブジェクト30へのアクセスを制御するために必要なあらゆる情報を含む。アクセスポリシー23は、バケット20及びその関連するオブジェクト30へアクセスすることが許可された1人又は複数のクライアント、及びどのくらいの役割でアクセスするかを識別する情報を含んでもよい。例えば、アクセスポリシー23は、1人以上のクライアントのために、ユーザ識別子及び/又は認証読み取りを許可されているかをさらに特定する。アクセスポリシー23は、初期設定又はグループ指向規定(例えば、汎用読み取りアクセスを許可するがオブジェクト30への書き込みアクセスを特定のクライアント又はクライアントグループに制限することによって)、又はあらゆる他の望ましいセキュリティモデルをさらに実行してもよい。
図で示した実施形態において、所定のバケット20は、1つ以上のオブジェクト30と関連され、各オブジェクトはそれぞれのメタデータ31及びデータ33を含んでもよい。一般的に言えば、オブジェクト30のデータ33はあらゆる一連のビットと対応してもよい。オブジェクト30内に保存されるビットによって表されるデータの種類は、ストレージサービスに透過的であってもよい。すなわち、ビットはテキストデータ、実行可能プログラムコード、音声、ビデオ、又は画像データ、又はあらゆる他の種類のデジタルデータを表し、ストレージサービスは、オブジェクト30を保存し操作することにおいて、これらの様々なデータの種類のうちから必ずしも識別することはない。一部の実施形態において、データ33のサイズは固定上限(例えば1ギガバイト(GB))に限られてもよいが、他の実施形態において、オブジェクト30は、ストレージサービスに使用可能な物理的ストレージリソースのみに従いサイズの拡大を許可してもよい。
バケット21に関連するメタデータ21と同様に、メタデータ31は、対応するオブジェクト30についてあらゆる望ましい記述的な情報を保存するように設定されてもよい。例えば、メタデータ31は対応するオブジェクト30が作成された日付及び/又は時間、オブジェクト30のサイズ、オブジェクト30によって保存されたデータ33の種類(例えば、MultipurposeInternetMailExtensions(MIME)基準によって識別されるデータの種類)、又はあらゆる他の種類の記述的情報についての情報を含んでもよい。一部の実施形態において、メタデータ31は、アクセスポリシー情報(例えば、オブジェクト30に対して様々なユーザが有してもよいアクセスの種類を示す許可情報)、オブェクト費用情報(例えば、オブジェクト30と関連する請求割合又は履歴)、又は、オブジェクト30に起因するあらゆる他の適切な情報又は情報の種類の組み合せのみならず、オブジェクト30と対応するユーザ対話をしめす使用情報又は履歴情報を保存してもよい。一部の実施形態において、クライアントはメタデータ31として保存されるオブジェクトデータと共にメタデータを提供してもよいが、他の事例においては、メタデータ31は、ストレージサービス特徴(例えば、図2に示され、以下に説明されるストレージサービスシステム)を管理するシステムによって作成されるメタデータを含んでもよい。メタデータ31の一部、全部、又はいずれでもないものが、メタデータの種類、クライアントのアクセス権の特定の規定、又は他の適切な要因にしたがって、オブジェクト30へのアクセス権を有するクライアントにアクセス可能であってもよい。
一実施形態において、個々のオブジェクト30は、情報の2つの相異なるアイテム、キー又はロケータの、いずれかを使用するストレージサービスシステム内で識別されてもよい。一般的に言えば、キー及びロケータは異なる手段で解釈してもよいが、キー及びロケータは、全体としてのストレージサービスシステムの名前領域の内容内で解釈されてもよい英数字文字列又は他の種類の記号をそれぞれに含んでもよい。一実施形態において、キーは、特定のバケット20(例えば、新規オブジェクトを保存するためのクライアントからの要求に応じて)内に対応するオブジェクト30が作成された時にクライアントによって特定されてもよい。ユーザによってキーが特定されない場合、キーは、ストレージサービスシステムによって新規オブジェクト30に割り当てられる。そのような実施形態において、特定のバケット20のオブジェクト30と関連する各それぞれのキーは、そのバケット20の名前領域内固有であることが求められる場合がある。一般的に言うと、キーは、対応するオブジェクトがストレージサービスシステム内に存在する限り、クライアントが、対応するオブジェクト30にアクセスする際に介する有効な識別子として存続してもよい。
所定のバケット20内で、キーは、従来のオペレーティングシステムのファイルシステムに共通のファイルディレクトリ、又はフォルダ名前領域と類似の階層的オブジェクト名前領域を作成するために使用されてもよい。例えば、クライアントは、固有の識別子050739517を有する特定のバケット20へのアクセス権を読み込む、又は書き込むオブジェクトを与えられてもよい。一実施形態において、クライアントは、バケット内でオブジェクトと対応するバケット名前領域内のキーを作成するために、http://storageservice.domain.com/050739517へウェブサービスコールを発行してもよい。例えば、クライアントは、「My Documents/Email/message.txt」というキーを使用するこの特定のバケット内でオブジェクト30が作成されることを特定してもよく、このようなオブジェクト30は、アドレス
http://storageservice.domain.com/050739517/MyDocuments/Email/message.txt
へのウェブサービスコールを使用してアクセスされてもよい。
一部の実施形態において、キーによって暗示される階層的構造は、オブジェクトストレージの基礎をなす階層に必ずしも反映されなくてもよいことに留意されたい。例えば、一実施形態において、所定のバケット20と関連するオブジェクト30は、オブジェクト30と関連するキーが階層を暗示しているにもかかわらず、ストレージサービスシステム内で平滑な、非階層な形で保存されてもよい。すなわち、このような実施形態において、バケット20は、他のバケット20を階層的に含まなくてもよい。しかしながら、他の実施形態において、他のバケット20内のバケット20の階層的包含は、オブジェクトキーによって暗示される階層に対して直接一致する必要はないが、バケットのいかなる当該階層がサポートされてもよい。
一実施形態において、キーによって識別されたオブジェクト30へアクセスするためのクライアントによる要求は、要求されたオブジェクト30の基礎をなすデータ33が取り出される又は修正される前に、クライアント認証手順、アクセス制御チェック、及び/又はマッピング過程(以下にさらに詳しく説明するような)を受ける場合がある。例えば、クライアントは、クライアントの身元を証明するためにパスワード又は他の資格を提供することを要求される場合があり、一度識別されると、要求されるバケット20と関連するアクセス制御パラメータは、識別されたクライアントが要求されたキーへのアクセスを保証する十分な権限が与えられているかどうかを判断するために評価されてもよい。それに反して、ストレージサービスシステムは、キーよりもむしろロケータによってオブジェクト30にアクセスする代替の方法をサポートしてもよい。一般的に言うと、ロケータは、ストレージサービスシステムに既知のすべてのオブジェクト30の中から、オブジェクト30の世界的に固有の識別子を表してもよい。すなわち、キーが、特定のバケット20と関連する名前領域に対して固有であってもよいが、ロケータはすべてのバケット20内のすべてのオブジェクト30の世界的名前領域内で固有であってもよい。例えば、ロケータは、他のロケータの中で固有であるべきストレージサービスシステムによって作成される英数文字列を含んでもよい。さらに以下に詳しく説明するように、一部の実施形態において、オブジェクト30の複数インスタンスは、例えば、データ冗長性及びフォルトトレランスを増加するために、ストレージサービスシステムを実装するために使用された物理的ストレージデバイスの全体を通じて複製されてもよい。そのような実施形態において、固有のロケータは、所定のオブジェクト30の各複製されたインスタンスに対して存在してもよい。
一部の実施形態において、キーは、オブジェクト30がストレージサービスシステム内に存在する限り、オブジェクト30へのアクセスに有効でありつづけることが保証されてもよく、当該保証はそのオブジェクト30のあらゆる所定のロケータに適応されてもよく、又は適応されなくてもよい。例えば、オブジェクト30の複製されたインスタンス(又は複製)が、異なる物理的なストレージの位置(例えば、その基礎となるストレージ媒体の障害又は置換によって)に移動する場合、その新規の位置におけるオブジェクト30の移動したインスタンスと対応する他のロケータが作成され、使用されることがあったとしても、特定のインスタンスを参照するロケータは有効ではなくなってもよい。キー及びロケータ間の関係における更なる詳細は、キーマップシステムコンポーネントの操作についての論考で提供される。
キー系対ロケータ系オブジェクトアクセスの例として、オブジェクト30は、上記キーによって参照され、http://storageservice.domain.com/050739517/My Documents/Email/message.txtは、ストレージサービスシステム内に保存される1つ以上のインスタンスを有することがあり、その1つは、http://storageservice.domain.com/locator/3859C89A208FDB5Aという形式のロケータによって識別されてもよい。
この特定の実施形態において、オブジェクト30に対するキー参照は特定のバケット20に関連して表現されるが、ロケータ参照は、世界的ロケータ空間(他の種類のロケータコード化又は形式が用いられてもよいが)内の128ビットの16進絶対数として表現されることに留意されたい。一実施形態において、ロケータに命令されたクライアント発行のウェブサービス要求は、すべての認証、アクセス権、翻訳、又はキー系のウェブサービス要求に適応されてもよい他のステップのいくつか、又はすべてを回避してもよい。処理のより少ない層のため、一部のかかる実施形態において、ロケータ系の要求はキー系の要求よりも更に早く処理されてもよい。しかしながら、セキュリティ対策は、ロケータ系要求のために回避されることがあり、クライアントは、敏感なオブジェクト30が改ざんされていないことの個人的保証を(例えば、ロケータの送信及び受信において暗号化された、又は他の方法を使用し)提供する必要がある場合がある。さらに、ロケータの持続は保証されないため(例えば、上記記載のオブジェクトインスタンスの移動の場合)、ロケータ系オブジェクトアクセスの操作を選択するクライアントは、例えば、プリエンプティブ系において、又は存在するロケータがもはや有効ではないことを発見することに応じて新規ロケータを取得することによって、ロケータが使用中に無効になる可能性を許容することが必要となってもよい。
クライアントのストレージの必要性及び上記の注意点によって、ロケータ系アクセスは、キー系アクセスに関連してより一層の処理能力(例えば、ウェブサービス要求処理の待ち時間及び処理量において)を提供してもよい。例えば、クライアントは、特に敏感でない頻繁にアクセスされるオブジェクト30を参照するためにロケータ系アクセスを使用することを選択してもよい。一部の実施形態において、ロケータ系アクセスは個々のオブジェクト30に基づき不可能であることがあり、したがって、当該のオブジェクトにアクセスすることを望むクライアントに、キー系要求を使用し、当該の要求と関連するあらゆる認証及びアクセス権制御を提出するように強制することに留意されたい。しかしながら、ロケータ系アクセスが可能になったオブジェクト30に対しても、有効なロケータを保持しない悪意のある、又は機能不良のクライアントは、あらゆる所定のオブジェクト30にうまくアクセスする任意の可能性だけを有してもよい。このような可能性は、大規模ロケータ名前領域、ロケータを作成する安全技術(例えば、オブジェクトデータの安全ハッシュの使用)、又は他の適切な技術の使用を通じて任意に防ぐことができる。
ストレージシステムアーキテクチャ及び実装
図1に示すようなウェブサービス系のストレージサービスを実装するように設定されてもよい、ストレージサービスシステムアーキテクチャの一実施形態を図2に示す。図で示した実施形態において、多くのストレージクライアント50a−nは、ネットワーク60を介してウェブサービスプラットフォーム100と情報をやり取りするように設定されてもよい。ウェブサービスプラットフォーム100は、ストレージサービスコーディネータ120(又は単に、コーディネータ120)の1つ以上のインスタンスとインターフェースで接続するように設定されてもよく、ストレージサービスコーディネータは、1つ以上のキーマップインスタンス140及びビットストアノード160とインターフェースで入れ替わりに接続してもよい。さらに、レプリケータ180は、レプリケータキーマップインスタンス190のみならず、ビットストアノード160とインターフェースで接続するように設定されてもよい。コーディネータ120とレプリケータ180の両方は、ノードピッカー130とインターフェースで接続してもよい。図で示した実施形態において、ノードピッカー130、キーマップ140、ビットストアノード160及びレプリケータキーマップ190の各インスタンスは、発見及び障害検出デーモン(DFDD)110のそれぞれのインスタンスと関連してもよい。所定のコンポーネントの1つ以上のインスタンスが存在する場合には、以下で言及するコンポーネントは単数又は複数のいずれかであってもよい。しかしながら、いずれの形式の使用も他方を不可能にすることを意図しない。
様々な実施形態において、図2に示すコンポーネントは、コンピュータハードウェア(例えば、マイクロプロセッサ、又はコンピュータシステム)、又はこれらの技術の組み合せによって指示が直接、又は非直接実行可能である場合、コンピュータハードウェア内で直接実装されてもよい。例えば、図2のコンポーネントは、図29に示すコンピュータシステムの実施形態、及び以下に説明するようなコンピュータ関係のノード(又は単にノード)の多くを含む分散型システムによって実装されてもよい。さまざまな実施形態において、所定のストレージサービスシステムコンポーネントの機能性は、特定のノード又はいくつかのノードに渡って分散されることによって実装されてもよい。一部の実施形態において、所定のノードは、1つ以上のストレージサービスシステムコンポーネントの機能性を実装してもよい。図2のコンポーネントの一般的な機能性の概略及び図3に示すようなストレージサービスシステムの典型的な物理的配置に続き、特定のストレージシステムコンポーネントの一部の実施形態を図4から図28に説明とともに以下に提供する。
一般的に言えば、ストレージクライアント50は、ネットワーク60を介するウェブサービスプラットフォーム100にウェブサービス要求を提出するように構成されるクライアントのあらゆる種類を網羅する。例えば、所定のストレージクライアント50は、ウェブブラウザの適切なバージョン、又はプラグインモジュール、又はウェブブラウザによって提供される実行可能環境に対する、又は環境内の拡張子を実行するように構成される、他の種類のコードモジュールを含んでもよい。あるいは、ストレージクライアント50は、データベースアプリケーション、メディアアプリケーション、オフィスアプリケーション又は持続的ストレージリソースを使用するあらゆる他のアプリケーションなどのアプリケーションを網羅してもよい。一部の実施形態において、当該アプリケーションは、すべての種類のウェブ系データに対する完全なブラウザサポートを必ずしも実装することのない、ウェブサービス要求を作成し、処理するための十分なプロトコルサポート(例えば、HypertextTransferProtocol(HTTP)の適切なバージョンに対する)を含んでもよい。すなわち、ストレージクライアント50は、ウェブサービスプラットフォーム100と直接対話するように構成されるアプリケーションでもよい。以下に説明するように、ストレージクライアント50は、RepresentationalStateTransfer(REST)形式ウェブサービスアーキテクチャ、文書系、又はメッセージ系ウェブサービスアーキテクチャ、又は他の適切なウェブサービスアーキテクチャに従いウェブサービス要求を作成するように設定されてもよい。
他の実施形態において、ストレージクライアント50は、これらのアプリケーションに透過的である方法における他のアプリケーションに対しウェブサービス系ストレージへのアクセスを提供するように設定されてもよい。例えば、ストレージクライアント50は、上記に記載されるストレージモデルの適切な改良型に従い、ストレージを提供するためにオペレーティングシステム又はファイルシステムを統合するように設定されてもよい。しかしながら、オペレーティングシステム、又はファイルシステムは、ファイル、ディレクトリ、及び/又はフォルダの従来型ファイルシステム階層などの、アプリケーションに対する異なるストレージインターフェースを提示してもよい。このような実施形態において、アプリケーションは、図1のストレージシステムサービスモデルを使用するように修正される必要がなくてもよい。代わりに、ウェブサービスプラットフォーム100へのインターフェース接続の詳細は、オペレーティングシステム環境内で実行されるアプリケーションに代行して、ストレージクライアント50及びオペレーティングシステム、又はファイルシステムによって統合されてもよい。
ストレージクライアント50は、ネットワーク60を介するウェブサービスプラットフォーム100へのウェブサービス要求を送り、応答を受信してもよい。様々な実施形態において、ネットワーク60は、クライアント50とプラットフォーム100間のウェブ系の通信を確立するために必要なネットワーキングハードウェア及びプロトコルのあらゆる適切な組み合せを網羅してもよい。例えば、ネットワーク60は、インターネットを集合的に実装する様々な電気通信網及びサービスプロバイダを概して網羅する。ネットワーク60は、公共又は私的ワイアレスネットワークのみならず、ローカルエリアネットワーク(LAN)又は広域エリアネットワーク(WAN)などの私的ネットワークを含んでもよい。例えば、所定のクライアント50及びウェブサービスプラットフォーム100の両方は、独自の内部ネットワークを有する企業内においてそれぞれ支給されてもよい。そのような実施形態において、ネットワーク60は、インターネットとウェブサービスプラットフォーム100間のみならず、所定のクライアント50とインターネット間におけるネットワーキングリンクを確立するために必要な、ハードウェア(例えば、モデム、ルータ、スイッチ、負荷分散装置、プロキシ、サーバなど)及びソフトウェア(例えば、プロトコルスタック、会計ソフトウェア、ファイアーウォール/セキュリティソフトウェアなど)を含んでもよい。一部の実施形態において、ストレージクライアント50は、公的インターネットよりはむしろ私的ネットワークを使用してウェブサービスプラットフォーム100と通信してもよいことに留意されたい。例えば、クライアント50は、ストレージサービスシステムとして同一の企業内で支給されてもよい。そのような場合、クライアント50は、私的ネットワーク60の全体を通じてプラットフォーム100に通信してもよい。このような場合、クライアント50は、私的ネットワーク60全体を通じてプラットフォーム100と通信してもよい(例えば、公的にアクセス可能でない、インターネットベースのコミュニケーションプロトコルを使用してもよいLAN、又はWAN)。
一般的に言うと、ウェブサービスプラットフォーム100は、ストレージサービスシステムによって保存されるオブジェクト30にアクセスするための要求のような、ウェブサービス要求を受信し、処理するように構成される、1つ以上のエンドポイントを実装するように設定されてもよい。例えば、ウェブサービスプラットフォーム100は、前述の例において使用されたエンドポイントであるhttp://storageservice.domain.comを実装するように構成されるハードウェア及び/又はソフトウェアを含んでもよく、このようなエンドポイントに命令されたHTTP系ウェブサービス要求は適切に受信され処理される。一実施形態において、ウェブサービスプラットフォーム100は、クライアント50からウェブサービス要求を受信し、それをコーディネータ120、又は処理のためのストレージサービスシステムの他のコンポーネントへ転送するように構成されるサーバシステムとして実装されてもよい。他の実施形態において、ウェブサービスプラットフォーム100は、大規模ウェブサービス要求プロセス負荷を動的に管理するように構成される、負荷バランシング及び他の要求管理特徴を実装する多くの別個のシステム(例えば、クラスタトポロジーにおいて)として設定されてもよい。
様々な実施形態において、ウェブサービスプラットフォーム100は、上記に詳述されるように、REST形式、又は、文書系(例えば、SOAP系)の種類のウェブサービス要求をサポートするように設定されてもよい。1つの特定の実施形態において、プラットフォーム100は、ストレージサービスシステムによって管理されるエンティティの様々な操作をサポートする、特定のウェブサービスアプリケーションプログラミングインターフェース(API)を実装するように設定されてもよい。例えば、プラットフォーム100によって実装されるAPIは、バケット20又はオブェクト30のリスト(フィルタパターン又は基準に従い任意にフィルタされる)、バケット20又はオブジェクト30のデータ又はメタデータの取り出し、及びバケット20又はオブジェクト30の作成又は削除を含む、バケット又はオブジェクト上の基本的なクライアント操作をサポートしてもよい。一部の実施形態において、APIは、複数のバケット20又はオブジェクト30に対する操作のバッチアプリケーションなどの、さらに洗練されたクライアント操作をサポートしてもよい。
クライアントのウェブサービス要求のためのアドレス可能なエンドポイントとして機能することに加え、一部の実施形態において、ウェブサービスプラットフォーム100は、様々なクライアント管理特徴を実装してもよい。例えば、プラットフォーム100は、要求するクライアント50の身元を追跡し、クライアント要求の数及び/又は頻度、クライアント50に代行して保存された、又は取り出されたオブジェクト30のサイズ、クライアント50によって使用された全体的なストレージ回線容量、クライアント50によって要求されたストレージのクラス、又はあらゆる他の測定可能なクライアント使用パラメータなどの、ストレージリソースを含む、ウェブサービスのクライアント使用の計測及び会計を統合してもよい。プラットフォーム100は、財務会計及び請求システムをさらに実装、又はクライアント使用活動の報告及び請求のための外部システムによって要求又は処理される使用データのデータ系を維持してもよい。
一部の実施形態において、プラットフォーム100は、クライアント50から受信した要求の割合及び種類を反映する評価指数、当該要求によって使用された回線容量、当該要求に対する遅延処理手続きシステム、システムコンポーネント使用(例えば、ストレージサービスシステム内のネットワーク回線容量及び/又はストレージ使用)、要求の結果によりエラーの割合及び種類、要求されたオブジェクト30の特徴(例えば、サイズ、データの種類など)、又はあらゆる他の適切な評価指標をなどの様々なストレージサービスシステム操作評価指標を収集及び/又は監視するように設定されてもよい。このような実施形態において、プラットフォーム100は、例えば、平均超過時間として、又は様々な分析に従ってもよい特定のデータポイントとして、当該評価指数を総計に収集するように設定されてもよい。様々な実施形態において、当該の評価指数は、クライアント50に可視である、又は不可視であってもよい方法でシステムの能力を試験又は監視するために用いられてもよい。例えば、一実施形態において、当該評価指数は、システムコンポーネントを調整、及び維持するためのシステム管理者によって使用されてもよいが、他の実施形態において、当該評価指数(又は当該評価指数と同等の一部)は、ストレージサービスシステムの使用を当該クライアントが監視できるようにクライアント50に使用可能にされてもよい。
一部の実施形態において、プラットフォーム100は、ユーザ認証及びアクセス制御手順をさらに実装してもよい。例えば、所定のバケット20と関連する特定のオブジェクト30へアクセスするための所定のウェブサービス要求について、プラットフォーム100は、要求に関連するクライアント50が、所定のバケット20及び特定のオブジェクト30へのアクセスする権限が与えられているかどうかを確かめるように設定されてもよい。プラットフォーム100は、例えば、身元、パスワード、又は所定のバケット20に関連する資格者に対する他の資格の評価すること、特定のオブジェクト30への許可できる操作を指定する、アクセス制御リストに対する特定のオブジェクト30に対し要求されたアクセスを評価することにより、当該権限を判断してもよい。クライアント50が、バケット20へのアクセスをする、又はオブジェクト30に要求された操作(例えば、クライアント50が、読み込みアクセス特権のみを有するオブジェクト30の書き込みを試みる)を行う十分な資格を有しない場合、プラットフォーム100は、例えば、要求するクライアント50にエラー状態を示す応答を返すことにより、対応するウェブサービス要求を拒否してもよい。一部の実施形態において、各バケット20及びオブジェクト30は、そのバケット又はオブジェクトにアクセスすることを統制する、関連するアクセス制御規定を有してもよいことを考慮されたい。当該アクセス制御規定は、メタデータ21又は31内にアクセス制御情報の記録又はリストとして、あるいはメタデータ21及び31から別個のデータ構造として保存されてもよい。
一部の実施形態において、図2のシステムのようなストレージサービスシステムは、任意サイズのオブジェクト30をサポートしてもよいが、他の実施形態において、オブジェクト30は、チャンクサイズ(chunk size)ともいわれる、ある最大サイズを強制されることもある。このような一部の実施形態において、クライアントが、キーと関連して保存すべきデータを提供し、そのデータがチャンクサイズを上回る場合、プラットフォーム100は、チャンクサイズに従い、データを2つ以上のチャンクに分配するように設定されてもよい。一実施形態において、プラットフォーム100は、関連するキー値を有するそれぞれのオブジェクト30として各チャンクを作成するように設定されてもよい。プラットフォーム100は、クライアント提供キーを参照するアクセスのための要求が行われた場合、元のクライアントデータが、チャンクから再構築されることが出来るような方法で、クライアント提供キーの機能として各チャンクに対するキー値を作成してもよい。例えば、プラットフォーム100は、クライアントデータからNチャンクを作成するように構成され、クライアント提供キーに対し、Nの相異なるパターンを付加することによってこれらのチャンクのためのN対応キーを作成し、Nの相異なるパターンは、Nチャンクが作成されたのと同一の順序で辞書編集的に順序付けられてもよい。Nチャンクのそれぞれは、以下に説明する技術を使用する相異なるオブジェクト30として管理され、元のデータは、クライアント提供キーがプレフィックスであるようなキー値を有するすべてのオブジェクト30をリストすることによって、またこれらのオブジェクトをリストされた順序で取り出すことによって作成されてもよい。一部の実施形態において、個々のチャンクは、他のチャンクを阻害することなくアクセスされ、修正され、又は取り除かれることがあり、1つの大きいオブジェクト30としてのデータを維持することに関係してシステムの能力を改善してもよい。一部の実施形態において、クライアント50は、それが提供するデータオブジェクトをチャンクに分割すべきかどうかを指定することを許可されてもよい。
図2に示すストレージサービスシステムコンポーネントの多くと同様に、他のコンポーネントからのウェブサービスプラットフォーム100の機能性を分離することは、ストレージサービスシステムの保守管理及び全体的な拡張性を改善してもよい。例えば、付加的なハードウェア及びソフトウェア供給源は、他のタスクに割り振られた供給源の付加的なウェブサービス処理負荷を独立して維持する為に特に提供されてもよい。さらに、プラットフォーム100と関連するあらゆる供給源の障害の影響は、その特定の機能領域の範囲内にとどめられる場合があり、したがって、障害の隔離と解決を容易にする。しかしながら、一部の実施形態において、プラットフォーム100の機能性は、他のコンポーネントにおいて統合されてもよいことを考慮されたい。例えば、コーディネータ120は、プラットフォーム100と関連するタスクを含むように設定されてもよい。
ウェブサービスプラットフォーム100は、クライアント50がストレージサービスシステムの特徴にアクセスすることを通じ、プライマリインターフェースを示すが、当該特徴にたいする唯一のインターフェースを示す必要がないことに留意されたい。例えば、一部の実施形態において、コーディネータ120は、ウェブサービスインターフェースから相異してもよい代替APIをサポートするように設定されてもよい。このような代替APIは、例えば、企業の内部のクライアントが迂回ウェブサービスプラットフォーム100に対するストレージシステムを提供することを可能にするために使用されてもよい。ある事例において、プラッットフォーム100の会計及び/又は信任は、管理クライアントなどの内部クライアントに必要がなくてもよい。
コーディネータ120は、ウェブサービスプラットフォーム100及びストレージサービスシステムの他のコンポーネントとの間の行動を協調させるように設定されてもよい。一実施形態において、コーディネータ120の主要な義務は、これらのオブジェクト30に命令されたウェブサービス要求に応じ、オブェクト30に対するオブェクトデータ33及びメタデータ31の読み込み及び書き込み動作の指示を含んでもよい。例えば、以下に詳しく説明するように、オブェクト読み込みアクセスは、所定のオブジェクト30の複製が保存される、ビットストアノード160を示すロケータを取り出すために、キーマップインスタンス140へのアクセスを行うことに続き、要求されたデータを読み込むために特定のビットストアノード160へアクセスすることを行うことを必要としてもよい。同様に、オブジェクト作成及び修正は、必要であれば、作成又は修正されたロケータを反映するために、様々なビットストアノード160へオブジェクト30の多数の複製を保存し、キーマップインスタンス140を更新することを必要としてもよい。一部の実施形態において、コーディネータ120は、キーマップインスタンス140及びビットストアノード160へのこれらの読み込み及び書き込み操作を行うように構成されてもよい。しかしながら、一部の実施形態において、コーディネータ120は、作成又は修正時点においてオブジェクト30の所望の複製の全数を作成することを行わなくてもよいことに留意されたい。さらに以下に詳しく説明するように、一部の実施形態において、オブジェクト30に対する書き込み操作は、コーディネータ120が、そのオブジェクト30の複製のある数の書き込み(たとえば、2つの複製)を完了した時に終了したと見なされてもよい。さらに、このオブジェクト30の複製は、レプリケータ180による帯域外又は非同期操作によって完了されてもよい。すなわち、このような実施形態において、オブジェクト作成又は修正操作の帯域内又は同期部分は影響されたオブェクト30の複製の合計所望数より少ない作成物を含んでもよい。コーディネータ120は、キーマップインスタンス140、ビットストアノード160、及び他のシステムコンポーネントから相異なるコンポーネントとして示されるが、一部の実施形態において、コーディネータ120のインスタンスについて、他のシステムコンポーネント(例えば、単独のコンピュータシステムによって実行されるソフトウェアコンポーネントとして)と共に実装されることは可能であるという点に留意されたい。したがって、本書の定義は、コーディネータ120がビットストアノード160、キーマップインスタンス140、又は別のコンポーネントへデータを保存し、又はそこからデータを取り出すことに言及してもよいが、一部の実施形態において、このような処理は共有コンピューティングシステム供給源内で起こってもよいことを理解されたい。
図1に関し、上記に記載されるとおり、一部の実施形態において、ストレージサービスシステムは、バケット系のストレージモデルを含むことがあり、様々なオブジェクト30のためのキーが、管理(例えば、会計、請求)、セキュリティ、又はその他の目的のためにバケット20内にグループ分けされてもよい。一実施形態において、コーディネータ120は、クライアント50からのウェブサービス要求に応じ、様々なバケット関連の操作を処理するように設定されてもよい。例えば、コーディネータ120は、以下のバケット操作のいくつか、又はすべてを行うように設定されてもよい。
−バケットの作成:バケット20のための新しいバケットネームを作成及び保存する。
−非空バケットの削除:関連するメタデータ21を含む所定のバケット20、及び所定のバケット20内のオブジェクト30と関連するすべてのキーを削除する。
−空バケットの削除:所定のバケット20と関連するオブェクト30のキーがない場合のみ、所定のバケット20及び関連するメタデータ21を削除し、それ以外はエラー状態を返す。
−バケットの書き込み:存在するバケット20にデータを書き込む(例えば、メタデータ21)。
−バケットキーのリストアップ:所定のバケット20(パターン、正規表現、ワイルドカードなどに従い任意に保存され、又はフィルタされた)と関連するオブジェクト30のキーをリストする。
−バケットのリストアップ:所定の加入者(例えば、ユーザ又はクライアント50)と関連するバケットをリストする。
一部の実施形態において、コーディネータ120は、コリジョン作成の低い確率を有する適切な乱数アルゴリズムを使用し、新しく作成されたバケット20に対する識別子を作成するように設定されてもよい。他の実施形態において、コーディネータ120は、例えば、バケット作成に対するクライアント要求における存在するバケット識別子に関し、固有性に対する要求された識別子を調べることによって、クライアント特定バケット識別子をサポートするように設定されてもよい。
上記に記載されるように、オブジェクト30のインスタンスは、例えば、オブジェクトデータが、あらゆる所定のノード160又はそれと関連するインフラストラクチャの障害をしのぐ可能性を増加させるために、所定のノード160又は異なるビットストアノード160に複製されてもよい。ストレージサービスシステム内のオブジェクトの複製は、以下のように、ノードピッカー130及びレプリケータ180による図示した実施形態で扱われてもよい管理及び最適化のためのいくつもの機会を呈する。
コーディネータ120がオブジェクト30を書き込む要求を受け取る時、コーディネータは、書き込みが完了したことを表す前にノード160の所定の数にオブジェクト30を相応して書き込んでもよい。しかしながら、書き込まれるべきオブジェクト30に対するノード160の数と特定の選択は、異なるストレージ規定検討の数によって異なる場合がある。例えば、書き込み操作が完了したことが見なされる前に、オブジェクト30の複製のある最低数(例えば、2つ又は3つ)がうまく書き込まれることを要求することは、可能性のある障害を考慮すると、書き込みデータが永続的であるためには賢明である場合がある。しかしながら、複製の最低数を保存するために選ばれたノード160が、障害の異なる可能な場所又は領域から分散されることを確実にすることも望ましい場合がある。例えば、同一のデータセンタに位置付けられるノード160は、地理的に隔てられたノード160よりも同時に(例えば、自然災害、電力障害などの壊滅的な障害によって)機能しなくなる可能性が高い。
一般的にストレージノード選択論理といわれることもあるノードピッカー130は、コーディネータ120及びレプリケータ180によってアクセス可能なサービスとして構成されることがあり、一実施形態において、様々なストレージ規定を満たすようなオブジェクト読み込み及び書き込み操作のためにノード160の選択のためのアルゴリズムを実装してもよい。例えば、上記に概説したオブジェクト30の書き込みの場合において、ノードピッカー130は書き込みプラン、又はオブジェクト30を書き込むべきノード160の特定の配列を構築するために操作してもよい。特定の書き込みプランを立てることにおいて、ノードピッカー130は、書き込みプランが成功の妥当な可能性を有することを確実にするように設定されてもよく、例えば、書き込みプランで特定されたノード160は、実際に操作可能であり、オブジェクト30を受け入れるために使用可能である十分なストレージリソースを有することが期待され、完了した場合、その書き込みプランは、書き込み操作に関連するすべてのストレージ規定を満たす。書き込みストレージ規定の例は以下を含む。
−永続性規定:書き込みプランがうまく完了した場合、オブジェクト30のインスタンスは、少なくともN相違ノード160に保存される。
−領域多様性規定:可能であれば、書き込みプランは、少なくともM相違領域間に分散されるノード160を含む。
−ローカル性規定:可能であれば、書き込みプランは、要求するコーディネータ120にたいしてローカルである領域のノード160に、選択(例えば、数で)を与える。
−負荷平衡規定:ノード160間の書き込み要求トラフィックを均一にするよう試みる(例えば、「ホットノード」を避けるために)。
−空間平衡規定:ノード160間の保存供給源容量の使用を均一にするよう試みる。
−最低コスト連鎖規定:書き込みプランにおけるノード書き込み操作の配列の合計コスト(例えば、ネットワーク遅延)を最小限にするよう試みる。
様々な実施形態において、ノードピッカー130は、所定の書き込みプランを立てる時、これらの規定のいくつか又はすべて、又はリストアップされない他の規定を考慮に入れることに留意されたい。さらに、異なる規定が、異なる優先事項によって重要性を増す場合がある。例えば、一実施形態において、持続性規定は、他の規定が最善努力系で満たされることがある一方、すべての書き込みプランが満たされなければならない義務的規定であってもよい。一部の事例において、一部のストレージ規定は他と拮抗してもよい。例えば、異なる領域間にオブジェクトインスタンスの幅広い分散を助ける領域多様性規定は、概して特定の領域内にオブジェクトインスタンスをローカル化するローカル性規定に反する。オブジェクトインスタンスの数が十分に大きい場合、両規定を満たすことが可能である場合がある。例えば、オブジェクト30の5つのインスタンスが作成された場合、要求するコーディネータ120にローカル的である2つのインスタンスを2つの相異なる領域に保存し、3つのインスタンスを3番目の相異なる領域に保存し、したがって、ローカル性規定及び領域多様性規定の両方を満たすことが可能である場合がある。書き込みプランを特定するすべての規定を満たすことが不可能でなければ、ノードピッカー130は、満たされるこれらの規定を優先させるよう試み、最善書き込みプランを作成し、又はオブジェクト書き込みが十分に行われないことを示す要求するコーディネータ120に対するエラー表示を返してもよい。
また一部の実施形態において、ノードピッカー130は、読み込みオブジェクト30のコーディネータ120を援助してもよい。例えば、オブジェクト読み込み操作は、もともと、又は最も最近に書いた要求されたオブジェクト30で一部のコーディネータ以外のコーディネータ120によって要求されてもよい。したがって、書き込んでいるコーディネータ120に関連しローカルで保存されてもよいオブジェクト30のインスタンスは、読み込んでいるコーディネータ120に関連してローカルではなくてもよい。ノードピッカー130は、読み込んでいるコーディネータ120に使用可能の読み込み操作を提供し得るノード160を識別するように設定されてもよい。例えば、ノードピッカー130は、読み込んでいるコーディネータ120に最も近い(例えば、地理的距離又はネットワークトポロジーに関して)ノード160、又は最も高い読み込み回線容量を提供するノード160(例えば最小負荷ノード160又はストレージハードウェアのより高い能力クラスを有するノード160)を識別してもよく、又はノードピッカー130は、オブジェクト30を読み込むノード160を選択するための他の性能基準を使用してもよい。他の実施形態において、コーディネータ120の読み込みに関する読み込みの操作を最適化するよりは、ノードピッカー130は、全体としての(例えば、広域読み込みスループットを最大限にするために)性能を最適化するために、同時読み込み操作を広域的にプランしてもよい。
書き込みプランを立て、オブジェクト読み込み操作に関連してコーディネータ120に通知するために、ノードピッカー130は、例えば、操作状態及び利用可能な供給源に関して、ノード160の状態を監視するように設定されてもよい。一実施形態において、ノードピッカー130は、現在操作可能なストレージサービスシステム内のノード160を識別するために、DFDD110(以下に説明する)のインスタンスと交流しあうように構成されてもよい。ノードピッカー130が操作可能ノード160に気付くと、これらのノ−ドに、それぞれが利用可能な供給源(例えば、ストレージ容量)を確実にするためにクエリを行ってもよい。ノード160の操作状態及び供給源状態は時間と共に変化してもよいため、一部の実施形態において、ノードピッカー130はしばしばDFDD110を介し、操作状態の情報を新しくし、これに伴うノード160がこの供給源状態情報を新しくすることを集計してもよい。一部の例において、ノードピッカー130は、ノード160の状態の完全な同期視野を有しない場合があることに留意されたい。例えば、ノードピッカー130によって使用可能であると思われる特定のノード160は、実際には状態情報の最近の更新のために機能しない場合がある。このような例において、ノードピッカー130は、コーディネータ120によって完了されることが可能である場合がある読み込み、又は書き込みプランを保証することが不可能である場合がある。コーディネータ120が、ノードピッカー130によって特定されるノード160へアクセスできない場合、関連の操作は機能しない場合があり、そっくりそのままコーディネータ120によって再度試みられるか、又はコーディネータ120は、ノードピッカー130が要求されたプランを改訂することを交渉してもよい。一部の事例において、義務的規定を満たすことが以前可能であるが、書き込みプランにおいて特定されるノード160の障害が、任意の又は最善努力のストレージ規定のみに影響を及ぼす場合、書き込みプランを完了することが可能であってもよい。このような一部の実施形態において、レプリケータ180は、以下に説明するように、暫く経ってから満たされなかったストレージ規定を満たすための試みをするように設定されてもよい。
一部の実施形態において、ノードピッカー130の複数のインスタンスは、ストレージサービスシステムにわたって分散されてもよい。例えば、ノードピッカー130のそれぞれのインスタンスは、コーディネータ120の各インスタンス用に分散してもよい。ノードピッカー130は、APIを介し、コーディネータ120(及び、レプリケータ180)からアクセスされてもよいサービスとして分散されてもよく、この構造は必須ではない。他の実施形態において、ノードピッカー130の機能性は、コーディネータ120及び/又はレプリケータ180のインスタンス内に直接合体されてもよい。
上記に記載されるように、オブジェクトデータの信頼性及び利用可能性は、ストレージデバイスシステムにわたるオブジェクト30を複製することによって増加してもよい。例えば、地理的に分散されたシステム内でオブジェクト30のインスタンス又は複製を分散することは、当該クライアントに近い一部のオブジェクトインスタンスを利用可能に配置することによって、当該オブジェクト30へアクセスを試みる同様に分散されたクライアント50の機能を改善してもよい。(オブジェクトの複製の内容において、「インスタンス」及び「複製」の用語は本書において同義的に使用される場合があることに留意されたい。)さらに、オブジェクト複製は、特定のオブジェクトインスタンスの破壊に起因するデータ損失の可能性を概して減少してもよい。しかしながら、所定の時における一部の実施形態においては、オブジェクト30の有効な複製の数は、複製の所望の数又は目標とする数よりも少なくてもよい。例えば、ストレージサービスシステムに全体にわたり複製ストレージ規定を実行することは、各オブジェクト30の複製の特定の目標数(例えば、又は他の適切な数)がいかなる所定の時においても存在することを特定してもよい。しかしながら、所定のオブジェクト30について、有効な複製の実際の数は、様々な理由で目標の数より少ない場合がある。例えば、これまで有効な複製は、それが保存されたデバイスの障害のため、アクセス不可能になる場合がある。代わりに、一部の実施形態において、コーディネータ120によって書き込まれたオブジェクト30のインスタンスの数は、そのオブジェクト30のための複製の目標の数よりも少なくてもよい。例えば、上記に記載されるように、インスタンスは、ノードピッカー130によって特定される書き込みプランに従い書き込まれてもよく、目標の数よりも少ないインスタンスを要求する持続性規定を考慮に入れてもよい。
一実施形態において、レプリケータ180は、各オブジェクト30の有効な複製の数が目標の数を満たすかどうか(例えば、判断が下される時点において、複製の数が、少なくとも目標の数であるかどうか)決定するために、オブジェクト30を調べるために操作されてもよい。具体的には、一実施形態において、レプリケータ180は、各オブジェクト30のインスタンスの数及び場所を特定する記録に渡り、継続して反復するように設定されてもよい。例えば、レプリケータ180は、以下に詳しく説明するキーマップインスタンス140のように、オブジェクトキーと複製されたオブジェクトインスタンスを識別する対応するロケータ間のマッピングを保存するように設定されてもよい、レプリケータキーマップ190を参照してもよい。(他の実施形態において、レプリケータ180は、キーマップの専用インスタンスよりは、1つのキーマップインスタンス140を参照してもよい。)一部の実施形態において、複数のレプリケータ180は、キーマップ空間の異なる部分を同時に調査するように設定されてもよく、ストレージサービスシステムによって管理されるすべてのオブジェクト30の状態を調べるために必要とされる全体の時間を削減してもよい。
レプリケータ180が、所定のオブジェクト30に対する有効な複製の目標とする数が満たされないと判断する場合、所定のオブジェクト30への書き込み操作を行うコーディネータ120と同様の方法で、レプリケータは所定のオブジェクト30の追加的な複製を書き込むように設定されてもよい。例えば、レプリケータ180は、上記に記載されるように、付加的レプリケータの作成のための書き込みプランを取得するためにノードピッカー130とインターフェースで接続してもよい。代わりに、レプリケータ180は、オブジェクト複製を作成するための規定を反映する、独自のアルゴリズムを実行してもよい。一部の実施形態において、レプリケータ180は、付加的な複製が要求される状態下によって、オブジェクト30のための複製を作成する異なる優先事項と一致してもよい。例えば、レプリケータキーマップ190にリストされたロケータの目標の数よりも少ない数を有するオブジェクト30は、コーディネータ120によって最近書き込まれた場合がある。反対に、いくつかが無効であるロケータの目標とする数を有するオブジェクト30は、根本的なストレージの障害を提示している場合がある。規定の問題として、レプリケータ180は、後者の事例の前に前者の事例を、訂正することを試みてもよく、その逆もまた同様である。代わりに、レプリケータ180は、該状態を生じさせる特定の状況に関わらず、この状態に遭遇する場合はいつでも、有効な複製の目標とする数よりも少ない数を有するあらゆるオブジェクト30のための付加的な複製を作成することを試みてもよい。
上記に記載されるように、オブジェクト30の全体的な信頼性は、例えば、異なる領域又はデータセンタ内に、オブジェクトデータの複製を保存することによって増加してもよい。しかしながら、一部の実施形態において、各複製は、オブジェクトデータの正確なコピーと対応する必要がないことに留意されたい。一実施形態において、オブジェクト30は、オブジェクトデータが、すべての作成された部分を使用しなくても再度作成できる、冗長するコード化スキーム(パリティ、エラー訂正又は他のスキームなど)に従い多くの部分又は「破片」に分割されてもよい。例えば、オブジェクト30からN部分を作成するために様々なスキームを使用することで、オブジェクトデータは、コード化スキームに従い、部分の任意のN−1、N部分の任意の過半数、又は部分の他の組み合せから再度作成されてもよい。このような実施形態において、オブジェクト30の複製は、作成された部分、又は部分の一部の組み合せと対応してもよい。このような方法は、オブジェクトデータの複数の完成したコピーを保存することに比べ、データストレージ要求を減少すると同時に、効果的なフォルトトレランスを提供してもよい。しかしながら、一部の実施形態において、冗長するコード化技術は、オブジェクトデータの完成した複製との組み合せにおいても使用される場合があることに留意されたい。例えば、オブジェクトデータの複数の個々の完成したコピーは、上記に記載されるように、適切な冗長のコード化技術に従い、決定された複数部分のそれぞれの収集物としてノード160間に保存されてもよい。最後に、一部の実施形態において、一部のオブジェクト30は、複製又はフォルトトレランスのいかなる度合いをも有して保存される必要がないことに留意されたい。例えば、ストレージクラスの説明とともに以下に説明するように、クライアントは、フォルトトレランスの高い程度を特定するストレージクラスについておそらく低コストである、ある程度の又は全く程度を有しないフォルトトレランスを特定するストレージクラスに従いオブジェクト30が保存されることを要求してもよい。
一般的に言えば、キーマップインスタンス140は、オブジェクト30のキーと特定のインスタンスのロケータ、又はオブジェクト30の複製間の関係の記録を提供してもよい。このような記録を保存することにおいては、キーマップインスタンス140は、オブジェクト30がストレージシステム内に複製された度合いも反映する(例えば、いくつのオブジェクト30のインスタンスが存在するか、どのようにそれらが参照される場合があるか)。ビットストアノード160は、概して、ロケータによって識別されるオブジェクト30の個々のインスタンスのためのストレージを提供してもよい。しかしながら。所定のノード160は、あらゆる他のノード160に関するインスタンスの状態、又は対応するオブジェクト30のインスタンスのロケータ及びキーとの間の関係に気付かないことがある。すなわち、一般的に言うと、キーマップインスタンス140によって維持される状態情報は、ビットストアノード160に透過的であることがある。DFDD110は、コーディネータ120及びレプリケータ180などのDFDD110のクライアントが正確であるが、遅延の可能性が一部の検出された状態のビューを得るために、ノード160及び/又はキーマップインスタンス140(及び、実行されている場合、レプリケータキーマップ190)の操作状態についての状態情報を検出し通信する操作をしてもよい。これらのコンポーネントは、以下にさらに詳しく取り扱う。
図2のストレージサービスシステムアーキテクチャの一部のコンポーネントの物理的展開を示す一実施形態を、図3に示す。図示した実施形態において、データセンタ300は、2つの領域である310a−bを含んで示される。さらに、領域310c−dがデータセンタ300の外部から示され、領域310a−dは、ネットワーク60を介して相互接続されている。領域310a−dのそれぞれは、それぞれコーディネータインスタンス120a−dを含む。さらに領域310a−dは、図3に示されない、図2の他のコンポーネントのみならず、様々な組み合せのビットストアノード160及びキーマップインスタンス140を含んでもよい。例えば、領域310aは4つのビットストアノード160を含み、領域310bは3つのビットストアノード160及びキーマップインスタンス140を含み、領域310cは2つのビットストアノード160を含み、領域310dは1つのビットストアノード160及び1つのキーマップインスタンス140を含む。
上記に記載されるように、一実施形態において、領域310a−dのそれぞれは、障害から独立している、又はほとんど相関しない場所と考えられてもよい。すなわち、障害が起こっているいかなる所定の領域310の可能性は、いかなる他の所定の領域310の障害の可能性から独立している、又は相関しないか、又は障害の可能性の相関性はしきい値量よりも低い場合がある。例えば、2つの領域310は、同時に障害をきたす可能性が10%以下を示す。障害の相関関係又は独立性は、あらゆる適切な統計的又は確率的な技術を使用して測定され、様々な方法で実行されてもよい。例えば、領域310は、物理的に分割されるか、又は独立したユーティリティーグリッドへ接続されてもよく、これはおそらく1つの領域310に影響をおよぼす大災害が、他に影響を及ぼさないようにする。同様に、データセンタ300内で、相異なる領域310は、1つの領域310が別の領域310の障害に関わらず、操作を継続することを可能にするために機能してもよい、独立したバックアップ電力源、ネットワーク接続、又は他の冗長性供給源を有してもよい。
一部の実施形態において、それぞれの障害の可能性間における、小さいがゼロではない相関間関係を有する2つの領域310は、障害の独立した可能性を有するとして依然と言われることもあることに留意されたい。例えば、バックアップ電力源、冷却などのためのしっかりとした、独立したシステムをそれぞれ有するにもかかわらず、所定のデータセンタ300内の2つの領域310は、非常に大規模の大災害(例えば、データセンタ300の全体を破壊するに十分な爆発)の場合における同時障害の影響を受けやすい場合がある。しかしながら、これらの2つの領域310が同時に機能しなくなるのに十分である事象の可能性は、非常に少なく、実用的な目的として、該2つの領域310は、障害の独立した可能性を有すると言える場合がある。
領域310は、階層の付加的レベルを含んでもよい(本書に示されない)。例えば、一実施形態において、あらゆる適切な領域体系が用いられる場合があるが、領域310は、ビットストアノード160などの、個々のノードにさらに細分化され、ラックに細分化されてもよい。一般的に言えば、領域310は、該領域内で展開されるストレージサービスコンポーネントを実装するために十分なコンピューティング供給源を含んでもよい。例えば、各ビットストアノード160は、図4から図9の説明とともに以下に説明するような様々なハードウェア及びソフトウェアコンポーネントを含む場合が一部の独立したコンピュータシステムとして実装されてもよい。同様に、各キーマップインスタンス140は、図10から図22の説明とともに以下に説明するような構成の多くのコンピュータシステムを介して実装されてもよい。
一部の実施形態において、ウェブサービスプラットフォーム100、コーディネータ120、ノードピッカー130、レプリケータ180、及びDFDD110などのコンポーネントは、コンポーネントが展開される各領域310内の個別のコンピューティング供給源を介して実装されてもよい。例えば、これらのコンポーネントのそれぞれは、それぞれの計算システムによって実行可能なインストラクション及びデータの1組として実装されてもよい。代わりに、これらのコンポーネントのいくつか、又はすべては、1つ以上の計算システムで同時に実行する場合が一部の過程として実装されてもよい。一部の実施形態において、これらのコンポーネントのいくつか、又はすべてを実装するために使用されるコンピューティング供給源は、ビットストアノード160又はキーマップインスタンス140を実装するために使用されるこれらの供給源を共有してもよい。例えば、計算システムは、コーディネータ120機能性のみならず、キーマップ140機能性の一部分の、両方を実装するように設定されてもよい。一般的に言えば、個々の領域310内で展開されるコンピューティング供給源にわたる図2のコンポーネントのあらゆる適切なセグメント化が、用いられる場合がある。図3に示すように、異なる領域310は、ストレージシステムコンポーネントの異なる組み合せを含む場合があり、示された実施形態は、制限することよりもむしろ実例となることを意図したものであることに留意されたい。
さらに、異なるストレージサービスシステムコンポーネントは、通信プロトコルのあらゆる適切な種類に従い、通信してもよい。例えば、図2の一部のコンポーネントが個別のアプリケーション又は実行可能な過程として実装される時、これらはオペレーティングシステム、又はプラットフォーム(例えば、遠隔手続きコール、キュー、メールボックス、ソケットなど)によって、提供される場合がある標準のプロセス間の通信を互いに使用して、又は標準の、又は独自のプラットフォーム独立型通信プロトコルの使用によって通信してもよい。当該プロトコルは、ハンドシェイク/肯定応答、エラー検出及び訂正、又は通信コンポーネントに要求される、又は望まれる場合があるその他の通信特徴の任意のレベルをサポートしてもよい、処理状態を把握する、又は処理状態を把握しないプロトコルを含んでもよい。例えば、1つのストレージサービスシステムの実施形態において、コンポーネント間通信の実質的程度は、Transmission Control Protocol(TCP)、User Datagram Protocol(UDP)、又は同様の標準の、又は独自の輸送プロトコルのバージョンなどの、適切なインターネット輸送層プロトコルを使用して実装されてもよい。しかしながら、ストレージサービスシステムコンポーネント間の通信は、プロトコル抽象化のより高い層にプロトコルを使用して実装される場合があることも考慮にされたい。例えば、クライアント50とウェブサービスインターフェース100間の通信のように、ストレージサービスシステムコンポーネント間の通信は、例えば、HTTP上のウェブサービスコールのような、アプリケーション層プロトコルを使用して実行されてもよい。
ビットストア構造
上記に論じるように、図2に示すストレージサービスシステムアーキテクチャにおいて、ビットストアノード160は、概してストレージサービスシステムによって管理されるオブジェクト30に対するストレージを提供するために動作してもよい。ビットストアノード160の1つの例示的な実施形態を図4に示す。図で示された実施形態において、ビットストアノード160は、ストレージリパッカー163及び論理ファイルインプット/アウトプット(I/O)マネージャー165とインターフェースで接続するように構成されるストレージノード管理(SNM)コントローラ161を含む。マネージャー165は、ファイルシステム167とインターフェースで接続するように構成され、入れ替わりに1つ以上のストレージデバイス169を管理するように構成される。様々な実施形態において、コントローラ161、ストレージレパッカー163、論理ファイルI/Oマネージャー165、又はファイルシステム167のいずれかは、コンピュータ接続可能媒体に保存され、以下に説明する機能を実行するためにコンピュータによって実行可能であってもよいインストラクションとして実装されてもよい。代わりに、これらのコンポーネントのいずれかは、専用のハードウェアサーキット、又はデバイスによって実装されてもよい。
一実施形態において、SNMコントローラ161は、APIに従い、活動を実現するためにノード160の他のコンポーネントの活動を協調するのみならず、ノード160のクライアントに対するオブジェクトストレージAPIを提供するように設定されてもよい。例えば、コントローラ120は、SNMコントローラ161によってもたらされるAPIを介し、所定のノード160へのオブジェクト30の保存する、及び所定のノード160からのオブジェクト30の取り出すように設定されてもよい。API管理が本願でSNMコントローラ161の特徴として説明されるが、一部の実施形態において、ノード160のAPI処理機能はモジュールに、あるいは、SNMコントローラ161から相異なるコンポーネントに実装される場合があることを考慮されたい。
オブジェクトストレージAPIは、オブジェクトを格納、取得、及び解放する操作をサポートしてもよい。1つのこのような実施形態において、総称的に保存操作、又は書き込み操作といわれることもある、オブジェクト格納操作は、操作の引数又はパラメータとしてオブジェクト30のデータ及び/又はメタデータを特定してもよい。所定のノード160が完了次第、以下にさらに詳しく説明するように、ストレージサービスシステム全体に渡って保存される他のオブジェクト30のすべてに対して取り出す所定のノード160のオブジェクトインスタンスを個別に識別してもよい、格納操作は、保存されたオブジェクト30と対応するクライアントロケータを要求するクライアントに返してもよい。
反対に、総称的に読み込み、又は取り出し操作と言われることもある、オブジェクト取得操作は、パラメータとして、オブジェクト30のロケータを特定してもよい。完了次第、取得操作は、特定されたロケータと対応するオブジェクトデータ及び/又はメタデータを、要求するクライアントに返してもよい。一部の実施形態において、該取得操作は、オブジェクトデータ、メタデータ、又はその両方がクライアントに対して返されるべきかどうかを要求するクライアントが特定することが出来るパラメータをサポートしてもよい。
取得操作のように、総称的に削除、又は除去操作と言われることもある、オブジェクト解放操作は、パラメータとしてオブジェクト30のロケータを特定してもよい。しかしながら、完了次第、解放操作は、参照されるオブジェクト30とあらかじめ関連してストレージリソースを解放してもよく、当該供給源は他のオブジェクト30を保存するために使用されてもよい。一実施形態において、ロケータが解放されると、ロケータに対するそれに続く取得操作は一定期間続くか、又は続かなくてもよい。すなわち、解放操作は、再使用のためのストレージリソースを解放する場合が一部のノード160に対する信号としての役割を示す場合があるが、ノード160がそうすることを直ちに試みない、また通知を試みない場合には、クライアントとの当該の再使用を同期化してもよい。したがって、解放に続くオブジェクト30へのアクセスのためのクライアントによる持続的な試みは、任意の期間にわたり継続される場合があり、それに続いてオブジェクト30は予告無しにアクセス不可能になる場合がある。他の実施形態において、ノード160はオブジェクトデータが依然として使用可能であるか否かに関わらず、あらかじめ解放されたロケータへのクライアントのアクセスを妨げるように設定されてもよい。
様々な実施形態において、取得及び解放操作は、あらゆる適切なプロトコルに従い、他のパラメータを使用する及び/又は様々な状態、エラー又は他の表示を返すことがあることに考慮されたい。例えば、格納操作は、保存されるべき要求されたオブジェクト30に対するノード160に不十分な供給源がある場合、あるいは、何らかの他の理由で格納が完了されない場合、エラー状態を返すことがある。一部の実施形態において、ノード160のオブジェクトストレージAPIは、他の操作を含んでもよいことを考慮されたい。例えば、APIは、複製操作をサポートすることによってオブジェクト複製の作成を容易にするように設定されてもよい。一実施形態において、目的とするノード160に保存すべきオブジェクト30のデータを供給する代わりに、要求するクライアントが異なるノード160にそのオブジェクト30のロケータを特定することを除き、複製操作は、格納操作と同様に行われてもよい。目標とするノード160は、オブジェクトデータ及び/又はメタデータを得るために、特定されたノード160と交流し、目標とするノードと関連するオブジェクトのロケータをクライアントに返してもよい。他の実施形態において、ノード160は、オブジェクト30での他の適切な操作をサポートしてもよい。
上記に記載されるように、格納、取得、及び解放操作を実装する、一部の実施形態において、存在するオブジェクト30は同一の場所で改訂されない場合があることに留意されたい。むしろ、オブジェクト30のインスタンスは、修正されたデータを含む新規インスタンスを書き込んだ後に、存在するインスタンスを解放することによって効果的に修正されてもよい。このような手段は、例えば、オブジェクト30への修正のレンダリングが元のサイズよりも小さい、又は大きいことが生じた場合、フラグメンテーションの削減又はオブジェクト再配置によって、ノード160の根本的な管理層の実装を簡素化してもよい。ウェブサービスプラットフォーム100に関して以下にさらに詳しく説明するように、一部の実施形態において、ストレージサービスシステムは、ラージオブジェクトをチャンクに分割し、各チャンクは相異なるオブジェクト30として管理されてもよい。この手段は、再書込みが必要なことがあるチャンクの範囲を制限することによって頻繁に修正されてもよいラージオブジェクトを処理することにおいて、ノード160の機能を改善してもよい。しかしながら、他の実施形態において、ノード160は、今説明した再書込みの解放手段を通じるよりはむしろ、所定の位置に、オブジェクト30の修正をサポートするために必要なこれらの特徴を含んでもよいことを考慮されたい。
図示した実施形態において、論理ファイルI/Oマネージャー165(又は、単にマネージャー165)は、オブジェクト30が備わっている場合がある1つ以上の論理的連続ストレージ空間を、SNMコントローラ161及びリパッカー163にもたらすために、根本的なデバイス、又はファイルシステム特徴に仮想化するように設定されてもよい。例えば、所定のオブジェクト30は、オフセットからのストレージ空間内及び範囲内のオフセット(例えば、データ及びメタデータを含むオブジェクトサイズに関して)に従い、論理ストレージ空間内に位置されてもよい。そのような論理ストレージ空間を提供することによって、マネージャー165は、当該根本的ストレージの実装の詳細に関わらず、SNMコントローラ161に対する根本的なストレージの均一の視野をもたらす場合がある。
論理ストレージ空間内でオブジェクト30へアクセスすることを容易にするために、一実施形態において、マネージャー165は、各オブジェクト30をノード160に保存するためのオブジェクトインデックス値(オブジェクトインデックスとしても言及される)を指定するように設定されてもよい。一般的に言えば、あらゆる所定のオブジェクト30のインデックスは、所定のノード160内で固有であってもよい。例えば、一実施形態において、オブジェクトインデックスは、オブジェクト30がノード160に保存される場合には常に、カウンタを増加し、オブジェクトインデックスとしての結果として得られたカウンタ値によって得られてもよい。(複数のオブジェクト書き込み操作が同時に進行することができる実施形態において、カウンタ増加は、例えば、シリアライゼーションを通じて、オブジェクトインデックス値が、一定の予想可能な形に指定されることを確実にするために、同期化されてもよい。)64ビットの符号なし整数などの、十分に大きいカウンタ値は、例えば、実用的な目的のために、各オブジェクト30が固有のインデックス値を指定されることを確実にしてもよい。このようなカウンタは、例えば、264オブジェクトが保存された後一周してもよく、その後前もって作成されたインデックス値を繰り返してもよい。しかしながら、カウンタが一周した後にノード160内に所定のインデックス値を前もって指定されたオブジェクト30が依然として存在するということは極めて可能性が低いように、コリジョンの可能性は非常に低い。オブジェクトインデックスを指定するためのあらゆる他の適切な方法も用いられる場合があることに留意されたい。以下に説明するように、オブジェクトインデックス値は、特定のオブジェクト30を参照するためのコーディネータ120、又はノード160の他のクライアントによって使用されるロケータ値を決定するために、ノード160の固有の識別子との組み合せで使用されてもよい。
マネージャー165は、オブジェクト30が、オブジェクトアクセスを容易にする方法で論理ストレージ空間内に位置される場所についての情報を体系化するために、上記に記載される固有のオブジェクトインデックス値を使用するように設定されてもよい。例えば、図5の上部に示すように、一実施形態において、マネージャー165は、オブジェクトインデックス値を介してすぐにアクセスできるように体系化されるテーブル、又は同様のデータ構造を保存するように設定されてもよい。図示した実施形態において、インデックステーブル500は、多くのエントリ510を含んでもよく、エントリのそれぞれは、オブジェクトインデックスフィールド、オフセットフィールド、オブジェクトサイズフィールド、メタデータサイズフィールド、及び周期的冗長検査(CRC)フィールドを含む多くのフィールドを含んでもよい。図5の下部に示すように、いくつかの例示的なオブジェクト30について、エントリ510のオフセットフィールドは、論理ストレージ空間内の対応するオブジェクト30の開始位置を特定してもよく、オブジェクトサイズ及びメタデータサイズフィールドは、オフセット位置からオブジェクトデータ及びメタデータを拡張する程度を特定してもよい。図示した実施形態において、他の実施形態においてこの順序は反対になる場合があるが、オブジェクトデータは、オブジェクトメタデータの上位である。CRCフィールドは、周期的冗長検査アルゴリズム又は他の適切な種類のチェックサム、又はハッシュアルゴリズムの結果、保存されてもよい。CRCフィールドに最初に保存される値は、オブジェクト30が最初にノード160に保存された時に計算されてもよい。それに続いて、オブジェクト30がアクセスされると、同一のアルゴリズムがオブジェクトデータ及び又はメタデータ、及び保存されたCRCフィールド値と比較した結果値に適応されてもよい。比較が不一致の結果になった場合、保存されたデータの整合性に障害が起きた可能性がある。他の実施形態において、エントリ510は、付加的な、又はこれら示されたものから異なるフィールドを含んでもよいことに留意されたい。例えば、CRCフィールドは省略されるか、又はどこかに実装されてもよい。さらに、オブジェクトデータ及びメタデータの固定位置は、関連のオフセットに加えて、又はそれに代わって保存されてもよい。
リパッカー163は、オブジェクト30が解放される時、及びその関連するストレージリソースが再要求された時に現れるギャップを除くための論理オブジェクトストレージ空間で操作するように設定されてもよい。一実施形態において、リパッカー163は、前回の解放操作によって解放されているSNMコントローラ161及び/又はマネージャー165によってマークされているオブジェクト30を識別するために、論理オブジェクトストレージ空間(例えば、一定期間又は継続的に)スキャンするように設定されてもよい。リパッカー163は、解放されたオブジェクト30の除去を反映するために更新すべき解放されたオブジェクト30のインデックスの後に現れるインデックスを伴うこれらオブジェクト30のエントリ510をもたらしてもよく、これらのオブジェクト30が、論理オブジェクトストレージ空間の元の位置にむかって移動する効果的な結果となる場合がある。例えば、図5の下部のオブジェクトNが解放された場合、リパッカー163は、オブジェクトN+1の新規のオフセットフィールドとして、オブジェクトNのオフセットフィールドを反映するために更新されるべきオブジェクトN+1と対応するエントリ510をもたらすために操作してもよい。リパッカー163は、削除されるべきオブジェクトNに関連するエントリ510をもたらしてもよく、移動を反映するためにオブジェクトN+1に続くオブジェクトのオフセットを更新してもよい。一実施形態において、マネージャー165は、オブェクトデータ及びメタデータの対応する移動を、論理オブジェクトストレージ空間及び/又はストレージデバイス169の根本を成すフィールド又は構造内におこさせるように動作してもよい。
一部の実施形態において、マネージャー165は、異なる種類のハードウェア及びソフトウェアを含む複数の異なる実行プラットフォーム上で実行するように設定されてもよい。このような一部の実施形態において、抽象概念の1つ以上の付加的な層は、SNMコントローラ161及びそのクライアントにマネージャー165によってもたらされる論理オブジェクトストレージ空間の間に存在してもよい。例えば、図示した実施形態において、マネージャー165は、ファイルシステム167によって管理される1つ以上の物理的ファイルとしての論理オブジェクトストレージ空間を実装するように設定されてもよい。一般的に言うと、ファイルシステム167は、様々な種類の物理的ストレージデバイス169を、本願において物理的ファイルとして言及される論理単位にデータを保存する論理ストレージデバイスに体系化するように設定されてもよい。ファイルシステム167によって管理される論理ストレージデバイスは、事実上、階層的であってもよい。例えば、ファイルシステム167は、物理的ファイルを保存し、それにアクセスするために誘導される場合があるディレクトリ、又はフォルダの階層をサポートしてもよい。一般的にいえば、ファイルシステム167は、所定の物理的ファイルと、物理的ファイルの対応するデータ及び/又はメタデータが保存されるストレージデバイス169の位置間の関係を追跡し、管理するように設定されてもよい。したがって、一実施形態において、マネージャー165は、ファイルシステム167によって配置される1つ以上の物理的ファイルに対する論理的オブジェクトストレージ空間のマッピングを管理してもよい。入れ替わりに、ファイルシステム167は、ストレージデバイス169のアドレス可能な位置に対するこれらの物理的ファイルのマッピングを管理してもよい。
根本を成すデバイス169の管理のための異なる特徴を提供する、あらゆる所定のオペレーティングシステムは、様々な異なるファイルシステム167をサポートしてもよいが、ファイルシステム167は、オペレーティングシステム内で概して統合されてもよい。例えば、様々なバージョンのMicrosoftWindows(登録商標)オペレーティングシステムは、FAT32(FileAllocationTable−32)及びFAT16ファイルシステムのみならず、NTファイルシステム(NTFS)などのファイルシステムをサポートする。様々なバージョンのLinuxandUnix(登録商標)オペレーティングシステムは、ext/ext2ファイルシステム、NetworkFileSystem(NFS)、ReiserFileSystem(ReiserFS)、FastFileSystem(FFS)、その他多数のファイルシステムをサポートしてもよい。一部の第三者ソフトウェアベンダーは、例えば、VERITAS(登録商標)FileSystem(VxFS)などの様々なコンピューティングプラットフォームとの統合のための独自のファイルシステムを提供してもよい。異なるファイルシステムは、根本を成すストレージデバイス169の管理のため、様々な特徴のためのサポートを提供してもよい。例えば、一部のファイルシステム167は、デバイスミラーリング、ストライピング、スナップショッティング、又は他の種類の仮想化特徴のためのサポートを提供してもよい。
一部の実施形態において、マネージャー165とストレージデバイス169間に依然として抽象概念のさらなる層が存在してもよい。例えば、一部の実施形態において、ボリュームマネージャー層は、ファイルシステム167とストレージデバイス169の間に提供されてもよく、上述の仮想化特長のいくつか、あるいはすべてを行うように設定されてもよい。代わりに、特定のストレージデバイス169は、ハードディスクドライブの独立した配列、又は仮想化コントローラを含む他のデバイスとして設定されてもよい。上記に記載されるように、ボリュームマネージャーによって、又はファイルシステム167内でサポートされてもよい仮想化マッピングと同様に、内部で、仮想化コントローラは、ディスクドライブへデバイスのストレージアドレス空間の複雑なマッピングを任意にサポートしてもよいが、仮想化コントローラは、単一の物理的デバイスとして、ファイルシステム167にディスクドライブをもたらすように構成されてもよい。一部の実施形態においては、示した抽象概念の層よりも少ない場合があることにも留意されたい。例えば、一部の実施形態において、マネージャー165は、ファイルシステム167を使用することなく、例えば、未加工の物理的デバイスとしてのストレージデバイス169と直接交流するように設定されてもよい。
一般的に言えば、ストレージデバイス169は、ファイルシステム167及び/又はマネージャー165によってサポートされてもよいストレージデバイスのあらゆる適切な種類を含んでもよい。ストレージデバイス169は、Small Computer System Interface(SCSI)デバイス、又はAT Attachment ProgrammingInterface(ATAPI)デバイス(Integrated Drive Electronics(IDE)デバイスとしても知られる)ようなハードディスクドライブデバイスを一般に含んでもよい。しかしながら、ストレージデバイス169は、磁気、又は光学媒体系のデバイス、ソリッドステート大容量記憶装置(例えば、不揮発性の、又は「フラッシュ」メモリ系のデバイス)、磁気テープなどを含む、あらゆる種類の大容量記憶デバイスを網羅してもよい。さらに、ストレージデバイス169は、Universal Serial Bus又はIEEE1394/Firewire(登録商標)基準のバージョンに準拠するインターフェースなど、上述のものに加え、あらゆる適切なインターフェース種を通じてサポートされてもよい。
上記に記載されるように、ストレージサービスシステム内に保存されるオブジェクト30のあらゆる所定のインスタンスについて、対応するロケータは、該システム内のすべてのノード160にわたるインスタンスを個別に識別してもよい。一実施形態において、ロケータは、個別の識別子、又はオブジェクトインスタンスが保存されるノード160と対応する、「ノードID」のみならず、マネージャー165によってオブジェクトに指定される、連結、組み合せ、又は、オブジェクトインデックス値の他の機能として作成されてもよい。例えば、上記に記載されるように、64ビットオブジェクトインデックス値は、128ビットロケータを生じる64ビットノードIDと組み合わせてもよい。様々な実施形態において、ロケータを形成するために、より少ない、又は大きい数のビットが用いられてもよいが、このようなロケータは、264と同数の固有ノード160が264と同数の固有のオブジェクトインスタンスを保存することを可能にする。
一実施形態において、ノードIDは、タイムスタンプ、又はデートスタンプを有する、所定のノード160と対応する、InternetProtocol(IP)アドレスなどの、固有のネットワークアドレスの連結、又は結合を通じて形成されてもよい。例えば、ノード160は、IPアドレスが指定された時点を反映するタイムスタンプと、又はIPアドレスが有効であるとわかっている間の時点との結合において、そのIPアドレスに従い(例えば、ノードスタートアップ/初期設定において、又はノードIDが指定された時点で、さもなければ、初期設定の間に)、ノードIDを指定されてもよい。一般的に言えば、同一のIPアドレス空間に所属する2つの相異なるノード160は、いかなる所定の時において、同一のIPアドレスを有効に指定されることはない。したがって、ノードのIPアドレスとタイムスタンプの値の結合は、そのノードに固有の識別子を生じてもよい。例えば、32ビットのIPアドレスは、他のビット幅も用いられてもよいが、上述の64ビットノードIDを生じるために、32ビットのタイムスタンプ(例えば、一部の共通の参照時間のため、それは経過した秒数を示す)と連結、又は結合されてもよい。ノードIPアドレスに頼らない固有のノードIDを指定するために、他の技術が使用されてもよいことを考慮されたい。例えば、ネームサーバなどの中央局は、上記に記載されるように、ノード160内のオブジェクトインデックス値の指定と同様に、ノードIDの固有性を保証する方法での要求におけるノードIDを委任してもよい。
ノードIDがノードIPアドレスから派生したノードIDで一部の実施形態において、該ノードIDは、いかなる時にもノード160の現在のIPアドレスを反映しなくてもよいことに留意されたい。例えば、ノードIDは、ノード160が初期化されるまで存続するが、ノードのIPアドレスは、ノードIDの作成に続いて変更されるか、又は再指定されてもよい。また、一部の実施形態において、ノードIDは、ストレージクライアント50又は他の悪意のあるエンティティが実際のノードIPアドレスを決定するためにロケータを解読することから防ぐために、決定的な方法でハッシュされ、暗号化され、又は分かりにくくなる場合がある。
図4のノード160の実施形態に関する取得、格納、及び解放操作の例示的な実施形態の操作は、図6から図8に示される。最初から図6までに言及して、取得操作は、該操作がコーディネータ120又は他のクライアントからノード160で受信される、ブロック600で始まってもよい。例えば、コーディネータ120は、上記に記載されるように、ノードID及びオブェクトインデックス値を含む特定のロケータに取得操作を発行してもよい。該ノードIDは、例えば、ノードIDが目標とするノード160の現在のIPアドレスを反映する場合、適切なノード160に対して取得操作を直接送るために使用されてもよい。代わりに、以下に説明するように、DFDD110などのディレクトリサービスが、ノードIDを、取得操作が適切なノード160に送られることを通じるアドレス可能なエンドポイント又は目的地に分解するために用いられてもよい。
ノード160によって受信されると、取得操作は、ノード160の論理オブジェクトストレージ空間内の目標とされるオブジェクトインスタンスの範囲を識別するために処理されてもよい(ブロック602)。例えば、コントローラ161は、取得操作を受信し、それをマネージャー165へ伝えてもよい。入れ替わりに、マネージャー165は、論理オブジェクトストレージ空間内の所望のオブジェクトインスタンスの位置を得るために取得操作がインデックステーブル500にアクセスすることによって参照される、ロケータのオブジェクトインデックス部分を使用してもよい。例えば、マネージャー165は、オフセットからオブジェクトインスタンスの長さのみならず、オブジェクトインスタンスが開始する、論理オブジェクトストレージ空間にオフセットを得てもよい。一部の実施形態において、取得操作は、オブジェクトデータ、メタデータ、又はその両方が要望されるかを特定してもよい。そのような実施形態において、マネージャー165は、要求データと関連し、論理オブジェクトストレージ範囲を決定してもよい。例えば、オブジェクトデータ及びメタデータの両方が要望される場合、マネージャー165は、取り出すべきオブジェクトオフセットからの範囲を決定するために、オブジェクトデータサイズ及びメタデータサイズの両方を使用してもよい。上記に述べたように、他の実施形態において、オブジェクトインスタンスのためのストレージ範囲は、論理オブジェクトストレージ空間内の関連するオフセットよりは、固定位置を通じるなどして、異なる方法でマネージャー165によって保存、及び管理されてもよい。
論理オブジェクトストレージ空間内のオブジェクト範囲は、物理的ファイルストレージ空間内の1つ以上の対応するファイル内のエクステントにマップ化されてもよい(ブロック604)。例えば、マネージャー165は、論理オブジェクトストレージ空間を、ファイルシステム167によって管理される1つ以上のファイルにマップし、例えば、読み込まれるべき指定されたファイル内のロケータ、又はオフセットのみならず、1つ以上のファイルネームを反映することによって、所望のオブジェクト範囲と対応するデータを得るために、ファイルシステム167に適切なファイルアクセス操作を発行してもよい。他の実施形態において、コントローラ161は、マネージャー165によって管理される論理ブロックストレージ空間を迂回するように設定されてもよく、代わりに、ファイルシステム167によって管理される物理ファイルと直接交流してもよいことを考慮されたい。
物理的ファイルへの参照は、デバイス関連要求(ブロック606)に対してマップ化されてもよい。例えば、ファイルシステム167は、論理ブロックアドレス(LBA)又はデバイス形状(例えば、シリンダ、トラック、セクタ及び/又はヘッド)に特定のアドレスなど、ストレージデバイス169のアドレス可能な位置を特定するための1つ以上の読み込み要求を作成するように設定されてもよい。上記に述べたように、一部の実施形態において、マネージャー165は、ファイルシステム167を迂回し、ストレージデバイス169を直接管理するように設定されてもよい。
要求されたオブジェクトデータは、ストレージデバイス169(ブロック608)から取り出され、要求するクライアント(ブロック610)へ返されてもよい。例えば、取り出されたデータは、図4に階層的に示される要求を通じたバックアップを通過されてもよく、又は、要求するクライアントへの輸送のために、ストレージデバイス169、又はファイルシステム167からコントローラ161へ直接返されてもよい。
図7に示すように、一実施形態において、図6のブロック600について上記の記載と同様の方法で、操作が、コーディネータ120、又は他のクライアントからノード160で受信される時、格納操作はブロック700で開始されてもよい。例えば、コーディネータ120は、ノードピッカー130によって作成される書き込みプランにおいて特定されるノード160に対して格納操作を発行してもよい。取得操作とは対照的に、格納操作は、保存されるべきオブジェクトデータ及び/又はメタデータを含んでもよく、任意に、データ及び/又はメタデータの長さを指定する付加的なパラメータを含んでもよい。
ノード160によって受信されると、格納操作は、論理オブジェクトストレージ空間内のオブジェクトインスタンスのためのストレージ範囲を指定するために処理されてもよい(ブロック702)。一実施形態において、マネージャー165は、オブジェクトインデックス値を新規オブジェクトインスタンスに指定し、インデックステーブル500を新規オブジェクトインスタンスのオフセットを特定する新規エントリ510に記録するように設定されてもよい。例えば、新規エントリのオフセットは、インデックスの最高値を有する存在するオブジェクトインスタンスのストレージ範囲(例えば、オフセット及び長さ)に関連して決定されてもよい。新規オブジェクトインスタンスのデータ及び/又はメタデータの長さが格納操作に対するパラメータとして特定されない場合、マネージャー165、又はコントローラ161は、新規エントリ510における含有としてこれらを計算するように設定されてもよい。
論理オブジェクトストレージ空間内の新規に指定されたストレージ範囲は、物理的ファイルストレージ空間内の1つ以上の対応するファイル内のエクステントに対しマップ化されてもよい(ブロック704)。例えば、新規オブジェクトインスタンスに対して指定された範囲は、1つ以上の存在する物理的ファイルの最後に加えられてもよく、そうでない場合は、存在する、又は新規に割り振られた物理的ファイル内に位置されてもよい。物理ファイル範囲は、例えば、取得操作について上記の記載と同様の方法で、ファイルシステム167によってストレージデバイス範囲にマップ化されてもよく(ブロック706)、オブジェクトインスタンスデータ及び/又はメタデータは、ストレージデバイス169に保存されてもよい(ブロック708)。
データ及び/又はメタデータがうまくストレージデバイス169に書き込まれたことを確認すると、保存されたオブジェクトインスタンスに対応するロケータが、要求するクライアントに返されてもよい(ブロック710)。例えば、マネージャー165は、ノード160のノードIDに作成されたオブジェクトインデックス値を加えるように設定されてもよく、物理的ファイル書き込み操作が無事に完了するファイルシステム167からの表示に際しオブジェクトロケータとして結果値を返してもよい。
図8に示すように、一実施形態において、図6のブロック600について上記の記載と同様の方法で、操作がコーディネータ120、又は他のクライアントからノード160で受信されるとき、解放操作は、ブロック800で開始されてもよい。解放された操作は、他の実施形態において、他の引数も提供されるが、解放されるべきオブジェクトインスタンスのロケータを単に特定してもよい。
取得操作のように、ノード160によって受信されると、解放操作は、ノード160の論理オブジェクトストレージ空間内の目標とされるオブジェクトインスタンスの範囲を識別するために処理されてもよい(ブロック802)。例えば、コントローラ161は、解放操作を受信し、それをマネージャー165へ伝えてもよい。入れ替わりに、マネージャー165は、参照されるオブジェクトインスタンスの対応するエントリ510を識別するために、解放操作がインデックステーブル500にアクセスすることによって参照される、ロケータのオブジェクトインデックス部分を使用してもよい。参照されるオブジェクトは、解放されたとしてマークされてもよい(ブロック804)。例えば、マネージャー165は、エントリがもはや有効ではないことを表す、負の数のような不正値に対し、オフセット、又は別のフィールドエントリ510を設定するように設定されてもよい。肯定応答が、オブジェクトが解放されたことを示す要求するクライアントに返されてもよい(ブロック806)。
上記に記載されるように、オブジェクトインスタンスと関連するストレージリソースは、オブジェクトインスタンスが解放された時に他の使用のために直ちに解放、再要求、又は再配分されてもよい。むしろ、一実施形態において、これらの供給源は、解放操作がこれらを再要求することに関し、非同期的に操作する独立過程まで存続してもよい。図9は、例えばストレージリパッカー163によって実装されてもよいような、当該の過程の一実施形態の操作を示す。ブロック900において、ノード160に保存された、特定のオブジェクトインスタンスに対応するオブジェクトインデックスエントリが選択されてもよい。例えば、リパッカー163は、エントリに保存されたオブジェクトインデックス値に従い、配列の順序で、インデックステーブル500からインデックスエントリ510を選択するように構成さてもよい。それに続いて、選択されたエントリは、対応するオブジェクトインスタンスが解放されたかどうかを決定するために調査されてもよい(ブロック902)。例えば、リパッカー163は、フィールドが、負の数値、又はある他の値などの、対応するオブジェクトインスタンスが解放されたことを示す値を設定したかどうかを確かめるために、オフセットフィールド、又は別のフィールドを調べてもよい。
選択されたオブジェクトが解放されていない場合、操作は、別のオブジェクトが選択されるブロック900に戻って続行されてもよい。選択されたオブジェクトが解放された場合、論理オブジェクトストレージ空間は、解放されたオブジェクト(ブロック904)と対応するストレージリソースに再要求するために、再圧縮されてもよい。例えば、リパッカー163は、第1の当該オブジェクトインスタンスのオフセットが解放されたオブジェクトのオフセットに設定され、次の当該オブジェクトインスタンスのオフセットがデータサイズの機能として設定され、メタデータサイズと第1の当該オブジェクトインスタンスのオフセット、など、論理オブジェクトストレージ空間内の解放されたオブジェクトに続く、これらのオブジェクトインスタンスのインデックスエントリ510を調整するように設定されてもよい。しかしながら、一部の実施形態において、解放されたオブジェクトインスタンスに続くオブジェクトインスタンスのすべてが、新規オブジェクトが調査のために選択される前に再圧縮される必要があるわけではない。例えば、再圧縮は、接触する各オブジェクトが、それが調査のために選択される時に圧縮されるように、オブジェクト選択と交互配置してもよい。
一部の実施形態において、マネージャー165は、論理オブジェクトストレージ空間の再圧縮に応じて物理的ファイルストレージ空間内で、同様の再圧縮、又は圧密操作を行ってもよい。例えば、マネージャー165は、論理オブジェクトデータ範囲が、異なる物理的ファイルデータ範囲に再マップ化されることを生じてもよい。同様に、一部の実施形態において、ファイルシステム167は、物理的ファイルストレージ空間の再圧縮に応じてストレージデバイス169間で、類似の再圧縮、又は圧密操作を行ってもよい。他の実施形態において、物理的ファイルストレージ空間、又はストレージデバイスそれ自体の再圧縮は、リパッカー163によって開始される論理オブェクトストレージ空間再圧縮を独立して発生してもよい。例えば、ファイルシステム167は、マップ化されたデバイスストレージエクステントが、ストレージデバイスのアクセス傾向に関連して、ほとんど、又は完全に連続的であるような、デバイスストレージエクステントへの物理的ファイルストレージエクステントのマッピングを再配置することによって、ストレージデバイスに保存された物理的ファイルを最適化するように構成されてもよい。
論理オブジェクトストレージ空間の圧縮に続き、解放されたオブジェクトに対応するインデックスエントリが削除され(ブロック906)、操作は、別のオブジェクトが選択されるブロック900から継続されてもよい。上記に述べたように、一部の実施形態において、複数オブジェクトが選択された場合「オンザフライ」で再圧縮が発生してもよく、オブジェクトを再配置するために要求される操作の数を最小限にするため、論理オブジェクトストレージ空間の全体的な稼働率を改善してもよい。
一部の実施形態において、ノード160によってサポートされてもよい取得、格納、解放、又は他の操作のいずれかは、要求するクライアントに関する様々な種類のハンドシェイク、肯定応答、又はエラー処理プロトコルをサポートしてもよいことに留意されたい。例えば、クライアントが操作に対し、不正な形式での要求を要求する場合(例えば、必要なパラメータを供給することを怠る)、又はノード160が、操作を十分に完了できない場合(例えば、それが格納操作を引き受けるのに不十分な供給源を有する)、ノード160が要求するクライアントにエラー表示を返してもよい。このような表示は障害状態の性質のため、特定の詳細を含む、又は含まなくてもよい。
一実施形態において、コーディネータ120は、複数の操作が共通のデータを有してもよいが、操作によって目的とされる各それぞれのノード160に対する操作を独立して伝えるように設定されてもよい。例えば、書き込みプランに従い、複数のノード160にオブジェクト30が書き込まれる格納操作の事例において、コーディネータ120は、各特定のノード160と独立して通信してもよい。しかしながら、他の実施形態において、複数目的地ノード160に意図された共通データ及び/又はパラメータを有する操作は、連鎖されてもよい。一実施形態において、コーディネータ120、又は他のクライアントは、受信者リストなど、操作のパラメータにおける各受信者を特定することによって、連鎖操作を先導してもよい。操作において示唆される複数の受信者は、初期設定によって連鎖を示してもよく、又は別のパラメータが、操作が連鎖されていることをマークするために使用されてもよい。コーディネータ120、又は他のクライアントが、操作に特定される最初の目的地ノード160の1つに連鎖操作を伝えることによって先導してもよい。
連鎖操作を受け取る際に、ノード160は、操作を処理し、それを操作において特定される別の目的地ノード160の1つに転送してもよい。当該の転送に先立ち、受け手ノード160は、受け手を示し、循環転送を避けるために、操作に含まれる目的地リストからそれ自体を取り除いてもよい。操作は、受け手ノードの処理と同時に転送されてもよい。代わりに、転送は、受け手ノードの無事な処理の完了を条件としてもよい。一部の実施形態において、連鎖操作は、受信者が操作内で示される順序で受信者に伝えられてもよい。他の実施形態において、ノード160は、例えば、残っている目的地のどれが一番近いか、最低負荷であるか、又は、いくつかの他の選択基準を満たすかを決定することによって、動的に次の受信者を選択してもよい。一部の実施形態において、連鎖、及び非連鎖操作の組み合せは、コーディネータ120、又は他のクライアントによって作成されてもよいことに留意されたい。例えば、同一のデータが、6つの相異なるノード160行きである格納操作の目標である場合、コーディネータ120は、6つの目的地ノード、又はそれぞれが3つの目的地ノードを特定する2つの連鎖操作を特定する、単一連鎖操作を作成してもよい。コーディネータ120が、各それぞれの目的地ノード160に独立して伝える、6つの非連鎖操作の作成を含む、他の組み合せも可能である。
キーマップ構造
上記に記載されるように、様々なビットストアノード160は、オブジェクト30のインスタンスのためのストレージを提供するように設定されてよい。ノード160は、個別に冗長、又はデータセキュリティのためのあらゆる特定のサポートを提供しなくてもよく、実際に、一部の実施形態において、ノード160は、オープンソースのオペレーティングシステム(例えば、Linux)を作動する包括的なコンピュータプラットフォームを使用し、安価な、商品ハードドライブ(例えば、ATAPI/DEハードドライブ)を介してストレージを提供することで実装されてもよい。このような実施形態において、個々のシステムは特にフォルトトレラントでなくてもよい。むしろ、データセキュリティ及び冗長は、上記に記載されるように、多くのノード160に渡るオブジェクト30の複製を通じて提供されてもよい。
前に論述したように、所定のオブジェクト30は、ストレージクライアントによって特定されてもよいキーと対応してもよい。所定のオブジェクト30の個々のインスタンスは、ストレージサービスシステム内に含まれるノード160の収集物にわたり、これらインスタンスを固有に識別してもよいそれぞれのロケータに対応してもよい。一実施形態において、ストレージサービスシステム内に展開される各キーマップインスタンス140は、所定のオブジェクト30のためのキー及びすべての対応するロケータと、ノード160間に保存されたその複製されたインスタンスとの間の関係、又はマップを保存し、維持するように設定されてもよい。以下の論考において、どのようにキーマップインスタンス140の特定の実施形態が実装されてもよいかの説明に続き、キーマップインスタンス140の様々な実施形態の一般的な特徴及び機能性を論述する。
一実施形態において、所定のキーマップインスタンス140は、1つ以上のテーブル、又はあらゆる他の適切な種類のデータ構造内の様々なキーと関連するロケータ間の関係の詳細を保存するように設定されてもよい。例えば、図10に示す一実施形態において、キーマップインスタンス140は、多くのエントリ144を有するキーマップデータ構造142を含む。各エントリは、関連する記録148のみならず、それぞれのキー146を含む。一部の実施形態において、以下にさらに詳しく説明するように、エントリ144を体系化するために使用されるデータ構造の体系は複雑であってもよい。しかしながら、機能的な見地から、キーマップインスタンス140は一般的に、所定のキー144とその対応する記録148との間に、1対1のテーブル型の関係を維持してもよい。
記録148は、概して、所定のキー144と対応するロケータを含んでよいが、他の情報を含んでもよい。例えば、記録148の一実施形態は以下のように設定されてもよい。
struct KeyRecord {
int16_t version;
int16_t storageClass;
int64_t creationDate;
int64_t objectSize;
uint32_t crc32;
int8_t numLocators;
struct locator {
int64_t nodeID;
int64_t objectIndex;
} replicas [];

このデータ構造例は、Cプログラミング言語の構文を使用して表現されるが、あらゆる適切な言語、表現、又は形式を使用して実装されてもよい。記録148の他の実施形態は、これら示されたものよりもさらに多い、さらに少ない、又は異なるフィールドを含んでもよい。一部の例では、記録148は、一部の種のUnixファイルシステムに用いられるアイノード構造に対するストレージ空間の体系化における記録148の相似の目的で示す、「アイノード」といわれることもある。しかしながら、該文脈中の「アイノード」という用語の使用は、ファイルシステム、又は他のストレージ文脈内のアイノードの実装、又は使用の特定の詳細を引き合いに出すことを意図しない。
上記の実施形態において、記録148は、7つの特定の要素を含む。16ビットバージョンの要素は、記録148の形式に特定である、個別の識別値を保存するために使用されてもよい。例えば、異なる種類の記録148は、キーマップインスタンス140の異なる実装に使用されてもよく、一部の実施形態において、所定のキーマップインスタンス140内に保存される記録148は、異種であってもよい。バージョン要素は、記録148の異なるバージョン間で区別するために使用されてもよく、記録の他の要素が適切に解読され、使用されてもよい。
16ビットstorageClass要素は、記録148と対応するオブジェクト30のストレージクラスの表示を保存するために使用されてもよい。ストレージクラスは、次の項にさらに詳しく述べる。一般的に言えば、オブジェクトの所定のストレージクラスは、所定のストレージクラスの他のメンバーに共通であってもよいストレージ特徴及び/又はポリシーを識別してもよいが、他のストレージクラスのメンバーからは異なってもよい。例えば、「高信頼性」ストレージクラス及び「低信頼性」ストレージクラスは、ストレージサービスシステムの所定の実装のために定義されてもよい。高信頼性ストレージクラスのメンバーであるオブジェクト30は、低信頼性ストレージクラスのメンバーであるオブジェクト30のより高い程度にたいして複製されてもよく、したがって、おそらく、低信頼性ストレージクラスのメンバーにたいして見積もられたものよりも高い使用コストと引き換えに、個々の複製の損失に対する敏感性を減少してもよい。多くの他の可能なストレージクラスの種類及び組み合せが可能であり、考慮される。
64ビットcreationDate要素は、対応するオブジェクト30がストレージサービスシステム内に作成された日付及び時間の表示を保存するために使用されてもよい。この要素は、あらゆる適切な方法に形式化されてもよい。例えば、日付及び時間は、共通の基準点のため、要素内の相異なるフィールドとして、又は経過時間単位の数(例えば、秒、ミリ秒など)を表す単一の数として明示的にコード化されてもよい。一部の実施形態において、最近の修正要素は、他の実施形態において、記録148内の相異なる要素として含まれてもよいが、creationDate要素は、対応するオブジェクト30のいかなる局面の最近の修正の日付及び時間を示すように構成される、付加的なフィールドを含んでもよい。
64ビットobjectSize要素は、例えば、バイトで、対応するオブジェクトのサイズの表示を保存するために使用されてもよい。一部の実施形態において、この要素は、他の実施形態において、これらは相異なるフィールドとして保存されてもよいが、オブジェクトデータ及びメタデータの両方のサイズを反映してもよい。32ビットcrc32要素は、あらゆる適切なチェックサムアルゴリズムに従い、オブジェクトデータ及び/又はメタデータのための計算された周期的冗長検査(CRC)チェックサムの表示を保存するために使用されてもよい。例えば、チェックサムは、変造、又は改ざんに対するデータ整合性を立証するために含まれてもよい。他の実施形態において、オブジェクトデータ及び/又はメタデータから計算されたあらゆる適切な種類の、ハッシュ、又は署名は、CRCチェックサムに加えて、又はそれに代わって使用されてもよい。
8ビットnumLocators要素は、複製[]配列内の記録148内に含まれるロケータの数の表示を保存するために使用されてもよい。この配列内で、各ロケータは、64ビットオブジェクトインデックス値のみならず、64ビットノードID要素として保存され、ビットストアノード160の構造の論考で上記に記載されるように作成されてもよい。一部の実施形態において、ロケータは、複製[]配置内に単一要素として保存されてもよい。
一実施形態において、キーマップインスタンス140は、提供されるAPIをサポートするために必要なこれらの機能を実行するのみならず、コーディネータ120などの、キーマップクライアントに対してキーマップAPIを提供するように設定されてもよい。例えば、コントローラ120は、キーマップインスタンス140によって管理されるエントリ144と関連する記録148上で、保存、取り出し、削除、又は他の操作を行うために、APIを使用するように設定されてもよい。上記に記載されるようにノード160によってサポートされてもよいオブジェクトインスタンス上の操作と類似して、一実施形態において、キーマップAPIは、キーマップエントリ144上の格納、取得、及び削除操作をサポートしてもよい。このような一実施形態において、キーマップ保存操作、又はキーマップ書き込み操作として総称的に言及されてもよい、キーマップエントリ格納操作は、キーマップエントリ144内に保存されるべきキー146及び記録148を特定してもよい。一実施形態において、エントリ144が既に存在するキー146を特定する格納操作は、存在するエントリ144に関連する記録148を、格納操作の引数、又はパラメータとして特定される記録と置き換えてもよい。所定のキーマップインスタンス140が完了次第、キーマップ格納操作は、例えば、操作が成功、又は失敗したか、任意の種類の障害が生じたか(もしある場合)などの、状態表示を要求するクライアントに返してもよい。一部の実施形態において、キーマップ格納操作が存在するエントリ144の再配置の結果になった場合、キーマップインスタンス140は、要求するクライアントに対するエントリ144の前回値を返すように設定されてもよい。
総称的にキーマップ読み込み、又は取り出し操作といわれることもあるキーマップエントリ取得操作は、一実施形態において、パラメータとしてキーを特定してもよい。完了次第、キーマップ取得操作は、当該のエントリが存在する場合、要求されるキーに関連するキーマップエントリ144の記録148を要求するクライアントに返してもよい。対応するエントリ144が存在しない場合は、その要旨が要求するクライアントに返されてもよい。
一実施形態において、キーマップエントリ削除操作は、要求するクライアントが、エントリに記録を書き込むことを特定する必要がない場合を除き、格納操作と同様に行われるように設定されてもよい。所定のキーマップインスタンス140が完了次第、キーマップ削除操作は、キーマップ格納操作と同様の状態表示を要求するクライアントに返してもよい。格納操作のように、一部の実施形態において、キーマップインスタンス140は、要求するクライアントに対する削除されたエントリ144の前回値を返すように設定されてもよい。
キーマップAPIは、様々な実施形態において、他の種類の操作をサポートしてもよい。例えば、キーマップAPIは、キーマップエントリの管理において、キーマップクライアントを援助する操作をサポートしてもよい。一実施形態において、キーマップAPIは、要求するクライアントによって特定されるいくつかの基準と一致する、キー146を有するこれらのエントリ144を識別するように設定されてもよいリスト操作を支持してもよい。例えば、リスト操作は、クライアントが、操作に対するパラメータとしての文字列、又はパターンを特定できてもよい。所定のキーマップインスタンス140が完了次第、リスト操作は、要求するクライアントに、特定された文字列、又はパターンを満たすこれらのキー146のリストを返してもよい。一実施形態において、キー146は、キー146の適切なプレフィックスである場合にのみ、所定の文字列を満たしてもよい(例えば、文字列のすべての文字について、文字列のN番目文字がキーのN番目文字と一致する)。他の実施形態において、キー146は、文字列が、キー146内のいかなる場所において見つかる場合、所定の文字列を満たしてもよい。
リスト操作は、一部の実施形態において、他のパラメータをサポートしてもよい。例えば、リスト操作は、要求するクライアントが、返されるべき一致数の限度を特定出来てもよい。さらに、要求するクライアントは、例えば、検索すべきキー146が当てはまるオープンエンド、又はクローズエンドの辞書式範囲内で、検索するキー146に対する制約を特定してもよい。一部の実施形態において、キーマップインスタンス140は、リスト操作基準を満たすキー146のみならず、記録148を返すように設定されてもよい。また、一部の実施形態において、キーマップAPIは、リスト操作として、同一の種類のパラメータ及び実行動作をサポートしてもよい、カウント操作をサポートしてもよい。しかしながら、要求するクライアントによって提供される基準を満たすこれらのキー146及び/又は記録148を返す代わりに、カウント操作は、これらの基準を満たすキーの数を返してもよい(例えば、対応するリスト操作によって返されるであろうキーの数)。またキーマップAPIは、上記に説明されない他の操作もサポートしてもよいことに留意されたい。
一部の状況において、異なるキーマップクライアントは、同一のキーマップエントリ144を修正することを求める場合がある。例えば、様々なクライアント、又はシステムによる操作に応じ、2つの異なるコーディネータ120は、所定の記録148の内容を同時に変更することを試みてよく(例えば、複製のロケータを追加、削除、又は修正するために)、又はもう一方が対応するエントリ144を削除することを試みる一方、1つが記録148を修正することを試みてもよい。所定のキーマップエントリ144への同時要求を解決するための一貫した方法を提供するために、一実施形態において、キーマップAPIは、キーマップ状態を更新、又は修正する(例えば、キーマップ格納及び削除操作)少なくともこれらのキーマップ操作が、キーマップ操作に対するパラメータとしての配列番号を提供することを必要としてもよい。キーマップインスタンス140は、配列番号を比較すること(例えば、数的に、又は辞書編集的に)、及び比較に基づく操作の1つを継続的に選定することによって、エントリ144に対する相反する更新を解決するように設定されてもよい。一部の実施形態において、以下にさらに詳しく説明するように、同期化の回復のために、提供される配列番号は、修正された記録148と共に、修正されたキーマップエントリ144に保存されてもよい。
例えば、キーマップクライアントは、タイムスタンプに基づいて配列番号を作成してもよい。一実施形態において、当該のタイムスタンプは、以下のように形式化された64ビット数を含んでもよい。タイムスタンプのビット63は、ゼロに設定さてもよい(例えば、タイムスタンプが署名された、又は署名されない番号であるかどうかの混乱を避けるため)。ビット62:32は、参照時から経過した秒の数を含んでもよい(例えば、1970年1月1日午前零時、グリニッジ標準時、Unix及びLinuxの多くのバージョンによって用いられる参照時間)。ビット31:22は、最終秒から経過したミリ秒の数を含んでもよい。ビット21:0は、実質的に無作為に作成されたビットを包含してもよい。他の実施形態において、タイムスタンプは、フィールドの異なる幅、又は種類に基づいて作成されてもよい。代わりに、キーマップクライアントは、配列番号を作成するための、全く異なる基準を用いてもよい。提供される配列番号の解像度が高ければ、同一のキーマップエントリ144に対する異なるキーマップクライアントによって提供される、異なる配列番号間のコリジョンの可能性は低い場合がある。しかしながら、コリジョンが発生する場合、キーマップインスタンス140は、あらゆる適切な、一貫した技術を使用してコリジョンを解決するように設定されてもよい。
多くの実施形態において、マッピングキーにおいて、ロケータに対するキーマップインスタンス140の抽象的機能性の動作は、比較的直接的である。例えば、上記に記載されるように、キーマップインスタンス140の一実施形態によってサポートされる基礎的な操作の一式は、記録148内に含まれるキー146とロケータとの間の関係を反映するエントリ144を操るように構成される、格納、取得、及び削除操作を含んでもよい。しかしながら、ストレージサービスシステム内のキーマップ機能性の実装は多くの困難をもたらす場合がある。とりわけ、ストレージサービスシステムが、多数のクライアントに代行して、膨大な数のオブジェクト30をサポートする場合(例えば、ストレージの合計でテラバイト(TB)、又はペタバイト(EB)になる数百万、又は数十億、又はそれ以上のオブジェクト30)、同様に容量を拡大するために、キーマップの実装が必要となる場合がある。しかしながら、単独のコンピュータシステム内のキーマップに含まれる全情報を示す、十分なシステムメモリ供給源を実装することは可能でない、又は経済的に実現可能でない場合がある。さらに、フォルトトレランス及び増加するキーマップクライアント要求のための処理スループットについて、キーマップデータの複数の複製が、ストレージサービスシステム内に分散される方法で展開されてもよい。しかしながら、キーマップデータの複製は、例えば、1つの複製が修正される一方、もう1つがアクセスされる場合、キーマップ同期化及び一貫性問題につながる場合がある。
キーマップ機能性の拡張性は、キーマップインスタンス140内の階層のレベルを導入することによって改善されてもよい。このような階層の一実施形態は、図11A〜Dに示す。図11Aにおいて、例のキーマップ配置1100が示される。上記に記載されるように、例えば、図3に関し、一部のストレージサービスシステムの実施形態において、複数のキーマップインスタンス140が、例えば、異なるデータセンタ300又は領域310に、システム全体にわたり分散されてもよい。概して、キーマップインスタンスの収集物は、展開といわれることもある。一部の実施形態において、他の実施形態においては、システムは、キーマップの階層の付加的なレベル下に統合される複数のキーマップ展開1100を含んでもよいが、ストレージサービスシステムは、システム内に支給されるすべてのキーマップインスタンス140を含む、単一のキーマップ展開1100を網羅してもよい。
図示した実施形態において、展開1100は、キーマップインスタンス140a〜cを含み、例えば、以下にさらに詳しく述べるようにインスタンス同期プロトコルに従い、それぞれは他とキーマップ情報を交換するように構成される。示すように、各キーマップインスタンス140は、互いに通信しあうように構成される多くのホスト400を含む。例えば、キーマップインスタンス140aは、ホスト400a〜cを含み、キーマップインスタンス140bは、ホスト400d〜gを含み、キーマップインスタンス140cは、ホスト400h〜jを含む。一般的に言えば、各ホスト400は、コンピュータシステム及び関連するソフトウェアを含んでもよく、プロセッサ、システムメモリ、ストレージデバイス、ネットワーキングインタフェース、又は他の適切なコンポーネントなどの要素を含んでもよい。例えば、ホスト400としての役割を果たすように構成されるコンピュータシステム、又はノードの一実施形態は、図29の説明とともに論考される。
一般的に、各キーマップインスタンス140は、ストレージサービスシステム内に保存されるすべてのオブジェクト30について、キーマップ階層を指数化し、管理するために使用されるあらゆる他のデータのみならず、キーマップエントリ144を含む、キーマップデータの完全な表現を維持するように設定されてもよい。キーマップインスタンス140内で、キーマップデータはホスト400にわたって分散されてもよく、個々のホスト400はキーマップデータの一部の部分(おそらく冗長)を保存してもよい。図11Aに、ただわずかのホスト400が示されるが、他の実施形態において、各キーマップインスタンス140は、あらゆる適切な数のホスト140を有してもよいことに留意されたい。例えば、一部の大規模な実装において、数ダース、又はことによると数100のホスト140が、キーマップインスタンス140に含まれてもよい。一部の実施形態において、所定のキーマップインスタンス140のためのホスト400は、所定の領域310、又はデータセンタ300内にローカライズされるが、他の実施形態において、このようなホスト400は、異なる領域310、又はデータセンタ300間に分散されてもよいことを考慮されたい。さらに、ホスト400が、一部の実施形態においてキーマップ関連機能性のみを実装するように構成されるが、他の実施形態において、ホスト400は、ストレージサービスシステムの他の要素に関連する機能性を実装してもよい。例えば、一実施形態において、様々なホスト400の1つは、ビットストアノード160として設定されてもよく、したがって、オブジェクトデータのみならず、キーマップデータも保存してもよい。
図11Bは、さらに詳しくキーマップインスタンス140aの例示的な実施形態を示す。図示した実施形態において、キーマップインスタンス140a内の各ノード400a〜cは、それぞれのパーティションインデックス410a〜c及び任意の数のブリック415を含む。一般的に言えば、ブリック415は、キーマップインスタンス140内の中間キーマップデータ構造と対応してもよい。一部の実施形態において、図12の説明とともに以下にさらに詳しく述べるように、キーマップデータは、ブリック415の間でパーティションに分割されてもよく、キーマップインスタンス140内のパーティションの複製が、ブリックレベルで起こってもよい。パーティションインデックス410は、キーマップ操作の間に1つ以上の特定のブリックの処理の選択を容易にするために、ブリック415を指数化方式にするように設定されてもよい。例えば、パーティションインデックス410は、ツリー、又は別の適切なデータ構造として設定されてもよい。一実施形態において、キーマップインスタンス140内のさらに深い指数レベルのみならず、パーティションインデックス410は、次に来る項に詳しく説明する、層別不平衡ツリー、又はトライ構造として言及するデータ向上の特定の種類の一部分として設定されてもよい。図示した実施形態において、キーマップインスタンス140は、さらにキーマップコーディネータ412を含む。一般的に言えば、キーマップコーディネータ412は、さらに詳しく以下に説明する、キーマップアクセス管理、コンテント管理、及び同期化方法、又はプロトコルなどを実装するように設定されてもよい。キーマップコーディネータ412は、ホスト400から区別して説明されるが、一部の実施形態において、1つ以上のホスト400内の処理、又は各要素として実装される場合があることに留意されたい。一部の実施形態において、パーティションインデックス410は、ホスト400内に別々に実装されるよりはむしろ、キーマップコーディネータ412内に実装される場合があることも留意されたい
図11Cは、ブリック415a〜nを含む、ホスト400aの例示的な実施形態を示す。示すように、各ブリック415a〜nは、任意の数のブロック425のみならず、それぞれのブロックインデックス420a〜nを含む。一般的に言えば、ブロック425は、キーマップインスタンス140内で、ブリック415と類似するが、抽象概念のブリックレベルに対して下位である、中間キーマップデータ構造と対応してもよい。パーティションインデックス410と類似して、ブロックインデックス420は、ブリック415内のブロック425の指数化のために構成されるあらゆる適切なデータ構造であってもよい。例えば、ブロックインデックス420は、一実施形態において、層別不平衡ツリーの部分として設定されてもよい。
図11Dに示すように、一実施形態において、ブロック425は、選択のためにインデックスエントリ144を構成するエントリインデックス430のみならず、個々のキーマップエントリ144a〜nの任意の数を含むように設定されてもよい。前に説明したように、各エントリ144a〜nは、それぞれの記録148a〜nのみならず、それぞれのキー146a〜nの表示を含んでもよい。
図11A〜Dに示す実施形態のキーマップインスタンス140とキーマップエントリ144との間の階層層間における関係は、図12に要約する。複数のキーマップインスタンス140を含む抽象概念の展開レベルにおいて、特定のキーマップインスタンス140は、抽象概念のインスタンスレベルでパーティションインデックス410を参照してもよい。参照されるパーティションインデックス410は、特定のエントリ144と対応する1つのブリック、又は複数のブリック415を識別してもよい。例えば、図示した実施形態において、すべてのキーマップエントリは、相異なるブリック415と対応する3つの相異なるパーティションによって複製されてもよい。入れ替わりに、所定のブリックは、ブロックインデックス420を介し、特定のブロック425(図12にイは示されない)を参照してもよく、参照されるブロックは、エントリインデックス430を介して特定のエントリ144を参照してもよい。キーマップが、図12に示されるように階層の実装を使用して実装されるが、他の実装も可能であることに留意されたい。大まかに言えば、キーマップインスタンス140は、記録148を有するキー144と関連するあらゆる適切な技術を使用して実装されてもよい。例えば、一実施形態において、キーマップインスタンス140は、従来のデータ系、又は他の種類の構造化指数を使用して実装されてもよい。
図12の実施形態における階層層のいくつかは、他の層が拡張性を提供する様に設定されてもよいが、冗長性を提供するように設定されてもよい(例えば、パーティションレベルでブリック415の複製のみならず、展開レベル内でキーマップインスタンス140の複製)。例えば、複数の相異なるレベルにわたる指数化の分散は(例えば、パーティションインデックス410、ブロックインデックス420、及びエントリインデックス430)、キーマップ展開内で指数化されるエントリの数が増加する場合、インデックスの各部分が管理可能な方法で増えることを可能にすることで、データ構造の拡大を容易にしてもよい。他の実施形態において、異なる冗長、及び非冗長レベルの組み合せのみならず、さらなる、又はより少ない階層が用いられてもよいことに留意されたい。
オブジェクト30のように、キーマップ階層の層内の複製の使用は、個々の複製の損失に対する敏感性を減少すること初期設定トレランスを改善してもよい。しかしながら、修正が発生した場合、キーマップデータの複製を同期化する試みがなされない場合、キーマップの正しい(例えば、最も現在の)状態はあいまいになる場合があり、代わりに予測不可能な、又は誤ったシステム操作につながる場合がある。一部の実施形態において、キーマップデータの複製された部分は、更新が、各複製に関して永久に検証可能な形で完成されるまで、キーマップクライアントに完了が報告されなくてもよい、アトミック、又はトランザクションセマンティクスを使用する厳密に同期の方法で更新されてもよい。アトミック更新セマンティクスが、キーマップデータを非一貫性の状態に更新する可能性を最小限にする、またさらには排除してもよいが、アトミック更新の操作は、かなりの規模の分散された環境で、大幅に機能性が低下する場合がある。例えば、キーマップデータの複製が広範囲に分散された場合、更新操作を完了するために必要とされる全体的な時間を決定付ける最も低速の複製では、クライアントから見た複製アクセスの遅延は大幅に異なる場合がある。さらに、1つの複製が失敗した場合、厳密なアトミック更新セマンティクスは、障害が訂正されるまでクライアントを引き止めることを生じる場合があり、クライアントに対する受け入れ難い遅延につながる場合がある。
アトミックプロトコルよりも、より良いクライアント操作を提供し得る他の種類の同期プロトコルは、キーマップ階層内に用いられてもよい。一部の実施形態において、特定のキーマップインスタンス140内の複製に関して一部の種の同期プロトコルが採用されてもよい(例えば、図12に示すような、特定のレベルにおける複製)、ハイブリッド同期の方法が実装されてもよいが、別の種類のプロトコルが、キーマップ展開内において異なるキーマップインスタンス140を同期化するために採用されてもよい。このようなハイブリッド方法は、キーマップ階層内の異なるレベルの複製の使用動学に対して、同期の諸経費を、さらに明確に調整させることを可能にしてもよい。
例えば、キーマップデータアクセスは、特定のエントリ144に対して反復される要求は、別のキーマップインスタンス140に対するよりはむしろ、特定のキーマップインスタンス140(例えば、地理的、ネットワークトポロジー、又は別の適切な基準において、要求するクライアントに最も近いインスタンス)に向けられる、参照の局所性を示してもよい。すなわち、所定のキーマップインスタンス140内のキーマップデータの複製が、異なるキーマップインスタンス140における対応するキーマップデータよりはむしろ、所定のクライアントによってアクセスされてもよいということになる場合がある。同様に、一部の実施形態において、所定のキーマップインスタンス140内の複製は、相異なるキーマップインスタンス140を同期するために使用されるプロトコルよりもさらに迅速に収束するように(例えば、複製間の変更を広める)設定されてもよいプロトコルを使用して、同期化されてもよい。
一実施形態において、所定のキーマップインスタンス140内のキーマップデータ複製の同期化は、適切なバージョンの定数プロトコルを使用して行われてもよい。一般的に言えば、定数プロトコルに従い操作されるキーマップデータの複製の更新、又は修正(キーマップエントリ格納及び削除操作を含む)は、少なくとも定数の数の複製に関して修正が永久的に(例えば、完全に、及び持続的に)行われた時に、要求するクライアントに関して完了すると見なされてもよい。同様に、定数プロトコルに従い行われるキーマップエントリ取得操作は、同一のデータが、少なくとも定数の数の複製から読み込まれた時に完了すると見なされてもよい。一部の実施形態において、定数の数は、存在する複製の数の単純過半数として定義されてもよいが、他の実施形態において、任意の程度の圧倒的多数が用いられてもよい。定数プロトコル操作は、定数要求が満たされない場合は完了しない場合があることに留意されたい。しかしながら、複製の定数の数が複製の合計数よりも少ない場合、所定の定数プロトコル操作が失敗する可能性は、定数よりも複製間での一致を事実上必要とするアトミックプロトコル操作よりも低い場合がある。本願に説明されるもの以外の定数プロトコルは、キーマップインスタンス140によって採用されてもよい。例えば、Paxosなどの複数相コミットプロトコル、又は2相コミットは、定数種キーマップのセマンティクスに用いられる場合があることに留意されたい。
定数プロトコルに従った読み込み及び更新操作の通常の操作手順において、例えば、通信障害、又は複製の根本をなす供給源の障害により、各複製に更新が伝えることに失敗する可能性がある。一実施形態において、複製間における不一致は、読み込み操作の間に検出され、修復されてもよい。とりわけ、キーマップエントリ取得操作の間に、特定のエントリ144の異なる複製間で異なる値が検出された場合、キーマップ格納操作は、違いを調整するために作成されてもよい。一実施形態において、格納操作の基準として使用されるエントリ144は、異なる値読み込み間におけるタイムスタンプと関連する最新の(例えば、数的に、又は辞書編集的に最も高い)エントリであってもよい。したがって、複製間の相違は、相違の修復のための相異なる過程、又は操作を必要とすることなく、例えば、キーマップエントリ取得操作が処理される場合、「オンザフライ」で解決されてもよい。
定数プロトコルの実装を構成するキーマップインスタンス140の実施形態に関するキーマップエントリ格納、取得、削除、及びリスト操作の例示的な実施形態の操作は、図13から図14に示される。様々な実施形態において、これらの方法は、例えば、キーマップインスタンス140内に含まれる1つ以上のホスト400内に設定されてもよい、又は図11Bに示すキーマップコーディネータ412のような、キーマップインスタンス140内の別個の過程、又はシステムとして構成される、キーマップコーディネータ処理内に実装されてもよい。最初から図13までに言及して、キーマップエントリ格納操作は、該操作がコーディネータ120又は他のキーマップクライアントからキーマップインスタンス140で受信される時、ブロック1300で始まってもよい。例えば、特定のオブジェクト30の対応するオブジェクトインスタンスを特定のビットストアノード160に保存することに応じ、コーディネータ120は、保存されたオブジェクトインスタンスのロケータを反映するためのオブジェクト30のエントリ144を更新するため、キーマップエントリ格納操作を作成してもよい。
キーマップインスタンス140の階層は、キーマップエントリ格納操作と対応する複製を識別するために誘導さてもよい(ブロック1302)。例えば、図12の実施形態について、パーティションインデックス410は、どのブリック415が、重要なオブジェクト30と対応するエントリ144を複製するかを決定するように設定されてもよい。続いて、個々の格納操作が、識別された複製に指示されてもよい(ブロック1304)。各格納操作について、キーマップインスタンス140の残存する階層は、対応するエントリ144へのアクセス及び修正を誘導されてもよい(ブロック1306)。例えば、所定のブリック415内でブロックインデックス420及びエントリインデックス430は、特定されたエントリ144にアクセスするために横断されてもよい。エントリ144の所定の複製が無事に書き込まれると、対応する格納操作が成功を表示する(ブロック1308)。エントリ144の目標とするそれぞれの複製の個々の格納操作は、同時に行われてもよい。同様に、ブロック1306〜1308の複数のインスタンスは平行に示される。
個々の複製格納操作の成功表示は、複製の定数の数が無事に更新されたかを決定するために監視されてもよい(ブロック1310)。例えば、3つの複製を含む実施形態において、キーマップエントリ格納操作の完了のための複製の定数の数は、2であってよい。複製の定数の数が無事に更新された場合、要求されたキーマップエントリ格納操作が完了した表示は、要求するクライアントに返されてよい(ブロック1312)。そうでない場合、監視が続いてもよい。一部の実施形態において、キーマップエントリ格納操作が、処理の開始後特定の期間内に完了しない場合、操作は終了され、エラー表示が要求するクライアントに返される、タイムアウトが強制されてもよい。他の実施形態において、キーマップエントリ格納操作は、それが完了するまで永久に保留を維持してもよい。
一実施形態において、キーマップエントリ削除操作は、格納操作の特別な場合として実装されてもよい。このような実施形態においてキーエントリ144は、削除センチネル又はフラッグフィールドを構成する付加的なフィールドを含んでもよく、削除操作は、削除フィールドをアサートされた状態(例えば、「1」などの特定の値をフィールドに設定することによって)に設定するように構成される、格納操作として実行されてもよい。アサートされた削除フィールドを有するこれらのエントリ144は、将来のキーマップ操作中に無視されてもよい。このような一部の実施形態において、アサートされた削除フィールドを有するこれらのエントリ144を消去するためにキーマップインスタンス144を通じて独立して反復されるように設定されてもよい。他の実施形態において、当該エントリ144は、過去のキーマップ動作のログとして永久に保持されてもよい。
キーマップエントリ格納操作の方法の一実施形態は、図14に示す。操作は、取得操作が、コーディネータ120又は他のキーマップクライアントからキーマップインスタンス140で受信される時、ブロック1400で始まってもよい。例えば、特定のキーと対応するオブジェクトデータに対するストレージクライアント50からの要求に応じて、ノードピッカー130又はコーディネータ120は、特定のキーと対応するロケータを取得するためにキーマップエントリ取得操作を作成し、それによってビットストアノード160が、前項に説明されるようにオブジェクトデータを取り出すためにアクセスされてもよい。
キーマップエントリ格納操作のように、キーマップインスタンス140の階層は、キーマップエントリ取得操作と対応する複製を識別するために誘導さてもよい(ブロック1402)。続いて、個々の取得操作が、識別された複製に指示されてもよい(ブロック1404)。各取得操作について、キーマップインスタンス140の残存する階層は、対応するエントリ144へのアクセス及び取り出しを誘導されてもよい(ブロック1406)。エントリ144の所定の複製が無事に取り出されると、対応する取得操作は成功を表示してもよい(ブロック1408)。上記、及び図13に示す個々の格納操作のように、個々のエントリ144のそれぞれの複製を目標とする取得操作は、同時に行われてもよく、ブロック1406〜1408は、同様に平行で示される。
個々の複製取得操作の成功表示は、複製の定数の数が無事に読み込まれたかを決定するために監視されてもよい(ブロック1410)。そうでない場合、付加的な複製が読み込まれるまで監視が続いてもよい。キーマップエントリ格納操作について上記に記載されるように、一部の実施形態において、キーマップエントリ取得操作は、定数の数の複製が無事に読み込まれるまで永久に待機してもよい。他の実施形態において、キーマップエントリ取得操作は、一定期間の後、タイムアウトになってもよく、エラー表示後及び/又はその時点で利用可能な最良のデータ(例えば、最も最近のタイムスタンプを有する複製データ)が、要求するクライアントに返されてもよい。
複製の定数の数が無事に読み込まれた場合、取り出された複製の内容が異なるかどうか決定されてもよい(ブロック1412)。例えば、要求されたエントリ144の各複製の全部は、他の取り出された複製のそれぞれと比較されるか、又はエントリ144のあるフィールドのみ(例えば、記録148のあるフィールド)比較されてもよい。該比較に使用された基準に従い、取り出された複製間に相違がない場合、取り出されたデータは、キーマップエントリ取得操作が完了したことの表示とともに、要求するクライアントに返されてもよい(ブロック1414)。
複製間の相違が存在する場合、選択基準に従い、複製の1つが選択されてもよい(ブロック1416)。例えば、該基準は、最も高いタイムスタンプ値を有する複製が選択される、各複製のタイムスタンプ値を考慮することを含んでもよい。キーマップエントリ格納操作は、選択された複製のデータを使用して開始されてもよい(ブロック1418)。例えば、格納操作は、上記に記載されるように図13に従い行われてもよい。格納操作の結果として、初めに要求されたエントリ144の複製の定数の数は、選択された複製の内容で書き込まれてもよく、将来の取得操作が、複製間の不一致に遭遇するのをを減少する。格納操作に続き、選択された複製のデータが、キーマップ取得操作が完了した表示と共に、要求するクライアントに返されてよい(ブロック1414)。一部の実施形態において、複製間で検出された不一致の場合の取得操作の完了は、不一致を解決するための開始された格納操作の完了を条件としてもよいが、他の実施形態において、取得操作は、カットして生じる格納操作が完了したかどうかに関係なく、完了したことを要求するクライアントに表示する
上記に記載されるように、一部の実施形態において、キーマップAPIは、検索パターンなど、一部の基準を満たすキーマップエントリ144のこれらのキー146を示すように構成される、キーマップエントリリスト又はカウント操作をサポートしてもよい。一実施形態において、リスト及び/又はカウント操作は、キーマップエントリ取得操作の特別な場合として実装されてもよく、所定のリスト、又はカウント操作の基準を満たす各エントリ144について、対応するキーマップエントリ取得操作が行われてもよい。しかしながら、定数プロトコルに従い、複数の複製からエントリデータ(例えば、記録148)を実際に取り出すことの付加的な諸経費は、キーマップエントリリスト、又はカウント操作に不必要である場合がある。したがって、一部の実施形態において、定数プロトコルに関係するキーマップエントリ取得操作のこれらのステップは、キーマップエントリリスト、又はカウント操作から省略されてもよい。例えば、所定のエントリのすべての複製を識別し、ブロック1402〜1404の各複製のための個々の取得操作を作成するよりはむしろ、リスト、又はカウント操作について、単一の複製は(例えばブリック415)任意の選択されてもよく、その対応する階層が、リスト、又はカウント操作基準を満たす各エントリ144を識別するために誘導されてもよい。該基準を満たす結果として得られるエントリ144について、結果として得られるエントリ144の対応するキー146、又はカウントは、図14の定数関係の処理部分を回避して、要求するクライアントに返されてもよい(例えば、ブロック1410〜1418)。
一部の実施形態において、キーマップインスタンス140は、インデックスエントリ144に対して使用された様々なデータ構造に加え、キャッシュを実装してもよい。例えば、キャッシュは、頻繁に使用されるエントリ144のキーに命令されたキーマップ操作が、対応するエントリ144に直接アクセスするために、インデックスデータ構造の誘導を回避することを可能にしてもよく、キーマップエントリ取得操作の性能を改善してもよい。さらに、キャッシュは、普及した、頻繁にアクセスされるキーに関連するホスト400を、キーマップ要求トラフィックによって過負荷になることから防ぐ助けとなってもよい。例えば、キーマップキャッシュがホスト400の間に分散される一実施形態において、キーのコピーは、キーのためのインデックスデータ構造を維持するホスト400よりも異なるホストでキャッシュされてもよい。ホスト400の間でキャッシュするキーのこのような分散に関わらず、キー処理作業負荷は、ホスト400の間でさらに均一に分けられてよい。
一実施形態において、キーマップキャッシュは、キーそのものよりも、キー148のハッシュによって保存及びインデックス化されるように設定されてもよい。データハッシュは、不均衡インデックスデータ構造の論考と共にさらに以下に詳しく説明するように、キーマップキャッシュ内で管理することがさらに容易であるような、キー148などの、確定された長さのデータ構造において、様々な長さのデータを表すための効果的な技術を構成してもよい。さらに、様々なハッシュアルゴリズムは、当初は均一に分散されていない場合があるデータ(例えば、共通するデータの多量の部分を有するキー148の一式)のための均一に分散されたハッシュ値を作成してもよく、ホスト400間におけるキーマップキャッシュデータの一定の分散を容易にしてもよい。一部の実施形態において、エントリ144の内容は、対応するクー148のハッシュされた値と共にキーマップキャッシュに保存されてもよい。他の実施形態において、エントリ144それ自体の内容よりはむしろ、エントリ144のためのポインタ、又は他の参照情報が保存されてもよい。
一般的に言えば、キーマップキャッシュを含むキーマップ実施形態において、キーマップエントリ格納及び取得操作は、上記説明に対するわずかな修正をともなって行われてもよい。一実施形態において、キーマップエントリ取得操作は、取得操作が、キャッシュのデータ常駐から情報提供されることができるかどうかを決定するために、最初にキャッシュを参考にしてもよい。所得操作は、読み込みのための定数プロトコルに移る前に、キャッシュからの応答のために一定量の時間待機してもよい。キャッシュが、定数プロトコル読み込みが開始された後に値を返した場合、キャッシュからの値読み込みが処理され、対応するエントリ144が返され、定数プロトコル読み込みが終了されてもよい。キャッシュから値が返されない場合、定数プロトコル読み込み操作からのエントリ144読み込み、又は当該のエントリ144に対するポインタは、対応するキー情報と共にキーマップキャッシュにインストールされてもよい。
一般的に言えば、キャッシュを含むキーマップ実施形態におけるエントリ格納操作は、同一のキャッシュエントリを修正するために、複数の格納操作を同時に試みることを妨げるためにロックされ、又は他の一貫性プロトコルが採用されることを除き、上記に記載されるように実質的に行われてもよい。一実施形態において、キーマップエントリ操作は、書き込みのための定数プロトコルを開始する前に、キー148と対応するキャッシュエントリをロックすることを試みるように設定されてもよい。ロック要求が成功したキャッシュからの応答を受け取ると(例えば、エントリに他にロックが存在しないため、又はキャッシュに対応するエントリがないため)、定数プロトコルを続行してもよい。定数プロトコルに従い納操作が完了した後、ロックが解放され、新規エントリデータがキャッシュにインストールされてもよい。
一部の実施形態において、今しがた説明したように、キーマップエントリ格納及び取得操作のための定数プロトコルは、キーマップエントリ状態を更新するための強一致性モデルを実装してもよい。すなわち、定数プロトコルは、特定のキーに対する格納操作が、完了するときにクライアントに認識されるとそれに続く取得操作が、取得操作が続行された時点において、各複製が更新されてない場合でも、最も最近格納されたデータを返すことを保証してもよい。
格納及び削除操作などの、キーマップ操作は、特定のキーマップインスタンス140にたいして命令され、その特定のキーマップインスタンス140内のエントリ144の状態は、時間と共に変わってもよい。したがって、それらを調整する試みがないと、展開内の異なるキーマップインスタンス140は、時間と共に相違、又は不一致になる傾向がある場合がある。たった1つのストレージサービスクライアント50が、所定のオブジェクト30を参照する場合、またそれを同一のキーマップインスタンス140を介して行う場合、当該の相違は実用上の影響を有さない場合がある。しかしながら、複数のストレージサービスクライアント50が、異なるキーマップインスタンス140を介して同一のキーを参照する場合、当該の不一致は、クライアント50が、同一の時点において、異なるキーマップ状態及び/又はオブジェクトデータの異なるバージョンを観察する結果となる場合がある。
前に説明したように、アトミックプロトコル、又は定数プロトコルのような強一致性プロトコルは、クライアントが複製の不一致を観察することを効果的に防ぐために、又は当該の不一致が起こることを完全に防ぐために、複製を更新する時に用いられることがある。しかしながら、異なる複製のアクセス待ち時間が異なる分散された状況において、時々多量の強一致性プロトコルが非常に高い操作コストを有してもよい。例えば、アトミックプロトコル、又は定数プロトコルについて、操作完了に必要とされる時間は、それぞれ、すべての複製の最も遅いもの、又は複製の定数の数の最も遅いものに関して、操作を完了するために必要とされる時間の機能であってもよい。さらに、強一致性プロトコルがないことにおいて、クライアントに対して複製の不一致が可視になることの見込みは(例えば、ストレージサービスクライアント50が古くなったキーマップ、又はオブジェクトデータを得ることの可能性)、概して、アクセスされた複製がまだ更新を反映しない期間内に、クライアントが複製にアクセスすることの見込み機能であってもよい。
多くのオブジェクト30について、この後者の見込みは低くてもよい。例えば、一部の例において、大部分のオブジェクト30は、特定のキーマップインスタンス140を介する単一のクライアント50によってアクセスされてもよいストレージサービスシステムによって管理され、この場合、不一致は、クライアントの観点からは現実的な価値を無くす場合がある。複数のクライアント50からアクセスされてもよいオブジェクト50について、観察できる不一致は、依然として可能性が低い。例えば、2つのキーマップインスタンス140は、例えば、10秒間の期間、特定のキーに関して不一致である。しかしながら、不一致の期間に関してアクセスが行われない場合(例えば、対応するオブジェクト30のアクセス間の持続時間が不一致の期間よりも長い場合)、又は行われるアクセスがさらに最近更新されたキーマップインスタンス140に命令された場合(例えば、キーの状態を最後に更新したクライアント50が、同一のキーマップインスタンス140を介するキーを参照するための次である場合)、不一致はクライアント50に目立った影響を有さない場合がある。したがって、一部の実施形態において、キーマップインスタンス140は、キーマップインスタンス140を一貫した状態に収束するよう努める緩やかな同期プロトコルを採用してもよいが、いかなる時において、キーマップインスタンス140の間にある程度の不一致を与える場合がある。この様な同期プロトコルは、厳密な同期化が必要でないような、大部分のクライアント50に対して、よりよい全体的な機能を提供してもよい。一部の実施形態において、共有されるオブジェクト30のためのキーマップデータの厳密なアクセス同期化を必要とするクライアント50は、すべてのクライアント50が厳密な同期化の義務を課すことを要求することなく、クライアントの間で付加的なプロトコルを実装してもよい。例えば、特定のオブジェクト30の1組へのアクセスを共有するクライアント50の1組は、キーマップデータへのアクセスを調整するセマフォ、又は他の分散されたロック技術を採用してもよい。
一部の実施形態において、キーマップインスタンス140の間の緩やかな同期プロトコルは、同期化過程の異なる態様を独立して実行する、異なる同期化タスクの組み合せを含んでもよい。図15A〜Bは、2つの相異なる同期化タスク、図15Aに示す更新伝播タスクと、アンチエントロピー、又は図15Bに示す設定調整タスクを含む、緩やかな同期プロトコルの操作の方法の一実施形態を示す。図15Aに最初に言及して、1つのキーマップインスタンス140に更新するブロック1500で始まる操作が検出されてもよい。例えば、キーマップインスタンス140は、上記に記載されるように、定数プロトコルに従い、キーマップエントリ格納、又は削除操作を受信し、完了してもよい。
キーマップ更新を処理したキーマップインスタンス140は、ストレージサービスシステム内でプロビジョニングされたそれぞれの他のキーマップインスタンス140に対する更新操作を転送してもよい(ブロック1504)。例えば、キーマップインスタンス140aがキーマップエントリ格納操作を処理した場合、キーマップインスタンス140bと140cに引数、パラメータなどを含む操作を転送してもよい。一実施形態において、転送は照合、又は認識なしで行われてもよい。例えば、キーマップ更新操作を処理したキーマップインスタンスは、転送された操作がその送り先で受信されかたどうかを照合すること、又はそれが受信されていない場合には操作を再送信することを試みること無しで互いのキーマップインスタンスに操作を転送することを一度だけ試みる、「ファイアー・アンド・フォーゲット」プロトコルを使用する操作を転送してもよい。この様な転送は、源を発するキーマップインスタンス140から複数のキーマップインスタンス140への同時送信、源を発するキーマップインスタンス140から他のインスタンスへの配列転送、ツリー系方策などの、あらゆる適切な転送方策を使用して生じてもよい。
転送された操作を受け取るこれらの関連するホスト400は、更新操作をローカルで実行してもよい(ブロック1506)。例えば、ホスト400fが、ホスト400aから転送されたキーマップエントリ格納操作を無事に受信した場合、それはあらゆるキーマップクライアントから操作を受信したかのように操作を実行してもよい。ホスト400fで格納操作が無事に完了した場合、その結果として、キーマップインスタンス140aと140bは、格納操作に関して同期化されてもよい。
一般的に言えば、ホスト400間における転送するキーマップ更新操作は、大多数の場合成功する。したがって、このような操作を転送することを伴う諸経費を最小限にすることは、大多数の事例において、キーマップインスタンス140間における同期化を達成するために必要とされる時間及び/又は回線容量を削減する。例えば、転送過程から、肯定応答、又は他の種類の照合プロトコル、又はハンドシェイクを消去することは、さらに大きな程度の同期化トラフィックを伴う、キーマップ実装のさらに大きい規模をサポートすることなど、他のユーザのための伝達回線容量を自由にする。多くの例において、キーマップ展開を通じてキーマップ更新を展開するために必要とされる時間は(例えば、所定のキーマップエントリ144の複製の不一致の可能性のウィンドウと概して対応してもよい)、ホスト400と関連する操作を転送するために必要とされる伝達の遅延、ホスト400が転送された操作を適応する為に必要とされる処理の遅延を制限してもよい。しばしば、この合計時間は、秒の順序、又は秒の分数であってもよい。
しかしながら、一部の例において、ホスト400間におけるキーマップ更新操作の転送は失敗する場合がある。例えば、伝達リンクの障害は、別のホストから1つのホスト400へ達し得ないことを伝える場合があり、又は転送された操作の損失、不完全化、又は輸送中に破損することを生じる場合がある。代わりに、送り先ホスト400は、例えば、一時的なハードウェア又はソフトウェアの問題のため、適切に転送された更新操作を受信し、又は正しく処理することに失敗する場合がある。一実施形態のように、転送されたキーマップ更新操作が、目的とされるホスト400によって無事に受信され、処理されたことを照合する、又は確かめるために、源を発するホスト400の部分になにも試みがなされない場合、個々の操作の転送の失敗は、あるエントリ144に関するキーマップインスタンス140間における不一致の結果になる場合がある。
同様に、一実施形態において、キーマップインスタンス140間における緩やかな同期プロトコルは、上記に記載されるように、及び図15Bに示すように、アンチエントロピー、又は設定調整タスクを含んでもよい。このタスクは、概して、タスクの操作は、異なるキーマップインスタンス140間における相違点を減少し、類似点を増加する役割を果たす場合があり、したがって、適切に同期化されたインスタンスに対する更新伝播の無作為な、又は体系的な障害によってもたらされることがある、キーマップインスタンス140間における全体的なエントロピーの減少となる、「アンチエントロピー」タスクといわれることもある。図示した実施形態において、操作はブロック1510で始まり、開始しているキーマップインスタンス140が、特定のパーティションの調整を行う、別のキーマップインスタンス140を無作為に選択し、異なるホスト400における
開始しているキーマップインスタンス140は選択されたキーマップインスタンス140を有するインスタンス内のパーティションについての情報を交換してもよい(ブロック1512)。例えば、2つのキーマップインスタンス140内の特定のホスト400は、各インスタンス内で維持されるパーティションインデックス410のコピーを交換し、入れ替わりに各インスタンス内のこれらのブリック415を識別するように設定されてもよい。
交換されたパーティション情報に基づき、開始しているキーマップインスタンス140は、2つのインスタンスのパーティション間での一致を識別してもよく(ブロック1514)、選択されたキーマップインスタンス140内の対応するパーティションを有する源を発するキーマップインスタンス140内の各パーティションを調整してもよい(ブロック1516)。例えば、前に説明したように、所定のキーマップインスタンス140内の各パーティションは、多くのブリック415に渡って複製されてもよい。一実施形態において、開始しているキーマップインスタンス140は、パーティション間の相違を調整するために、パーティション内の特定のブリック415が(「リードブリック」といわれることもある)選択されたキーマップインスタンス140内の対応するパーティションの対応するブリック、又は「ピア」ブリック415と通信することを命令するように設定されてもよい。一実施形態において、2つのブリック415の調整は、ブリックが各ブリック415に含まれるキーマップエントリ144の相違についての情報を交換することを伴い、各キーマップインスタンス140内の最も現在の情報を展開することを伴ってもよい。例えば、1つのブリック415が、タイムスタンプ情報に基づき、エントリ144のバージョンがピアブリック415よりもさらに現在のものであることを決定する場合、ブリックはエントリデータからピアブリック415に対して通信してもよい。それに続き、ピアブリック415は、エントリ144のそのコピーを更新するために、キーマップエントリ格納操作(例えば、上記に詳しく説明した定数プロトコルに従い)を行ってもよい。
2つのキーマップインスタンス140間のパーティション調節が完了すると、操作は、調整操作が、別のランダムキーマップインスタンス140に関し再び開始されるブロック1510から継続されてもよい。様々な実施形態において、各キーマップインスタンス140は、予め所定の、又は動的に決定された間隔でこの課程を実行するように設定されてもよい。例えば、調整は、1分に1回の静的割合、又はランダム確率分布、又は他の統計的確率分布に従い決定される間隔で起こってもよい。一部の実施形態において、ある数のキーマップアクセスが起こった後に、又はある個々の1つにアクセスした後に、キーマップエントリの種類、又はグループが検出された後に調整が行われてもよい。
一般的に言えば、図15A〜Bに示す更新伝播及び調整の設定又はアンチエントロピーの方法は、補足的な方法で行われてもよい。大部分の状況下において、更新伝播は、展開内において異なるキーマップインスタンス140を満足に同期化してもよい。キーマップの不一致が更新伝播の障害によりもたらされるこれらのインスタンスにおいて、アンチエントロピータスクは、当該の不一致を調整するために概して行われてもよい。一部の実施形態において、アンチエントロピータスクの実行は、2つのキーマップインスタンス140がその全体において正確に同期化されることを保証しない場合があることに留意されたい。しかしながら、一実施形態において、アンチエントロピータスクは、その実行が2つのキーマップインスタンス140間の不一致の程度を増加しないことを保証するために実装されてもよい。したがって、度重なるアプリケーションの全体に渡って、アンチエントロピータスクは、キーマップインスタンス140の収束を容易にしてもよい。アンチエントロピータスクの一実施形態におけるさらなる詳細は、キーマップインスタンス140が実装されてもよいデータ構造の特定の実施形態の説明とともに以下に提供される。
図2に示し、上記で論考したように、一部の実施形態において、ストレージサービスシステムは、他のキーマップインスタンス140に加え、レプリケータキーマップインスタンス190を含んでもよい。一実施形態において、レプリケータキーマップインスタンス190は、上記に記載されるとおり、キーマップインスタンス140と基本的にあらゆる点で等しく構成され、上記で論考したように、プロトコルを使用してキーマップ同期化に関与してもよい。しかしながら、この様な実施形態において、レプリケータインスタンス190は、コーディネータ120、又は他のキーマップクライアントよりはむしろレプリケータ180の役目をするように設定されてもよい。一部の状況において、他のキーマップインスタンス140から分離するレプリケータキーマップインスタンス190は、概してキーマップ能力を改善してもよい。例えば、レプリケータ180は、オブジェクト30の複製のヘルス状態及び数をチェックするためにキーマップを通じて反復する、相当量のキーマップ要求トラフィックを作成してもよい。ストレージサービスクライアント50の要求を代行して作成されたキーマップトラフィックと混合されると、レプリケータキーマップトラフィックは、応答時間、又は他のクライアント50に関するサービスの質の目安にマイナスの影響を与える場合がある。それに反して、戦況のキーマップインスタンス190を使用するためにレプリケータ180を構成することは、クライアント作成のトラフィックから内部で作成されたキーマップトラフィックを分離させてもよい。加えて、このような分離は、その大部分のクライアントの要求に従い、各種類のキーマップインスタンスを増やすことを実装することをより可能にする。例えば、レプリケータキーマップインスタンス190の実装は、いかなる所定のキーマップ操作の遅延を最小にするためよりはむしろ、多数の同時キーマップ操作の処理を容易にするように設定され、キーマップインスタンス140は、サービスの質基準の異なる組み合わせのために最適化される。しかしながら、この方法におけるキーマップインスタンスの分離は必要ではなく、一部の実施形態対において、レプリケータ180は、専用のレプリケータキーマップインスタンス190よりはむしろ、キーマップインスタンス140のクライアントであってもよいことに留意されたい。
一実施形態において、レプリケータキーマップインスタンス190は、クライアント50によるストレージサービスシステム供給源の使用の会計を容易にするように設定されてもよい。具体的に、レプリケータキーマップインスタンス190は、対応するオブジェクト30に対する請求、又は他の金融責任を負うそれぞれのエンティティを示す付加的なデータを有する、キーマップインスタンス140によって保存されたエントリ144を増やすように構成されてもよい。例えば、図16に示した実施形態において、レプリケータキーマップエントリ194が示される。 entry 194 may function identically to entries 144 with respect to the structure and hierarchy of keymap instances 140レプリケータキーマップインスタンス190内において、エントリ194は、キーマップインスタンスの構造及び階層に関して、エントリ144に対してあらゆる点で等しく機能してもよい。しかしながら、具体的な実施形態において、エントリ194は、付加的なフィールド、バケットID196を含む。一般的に言えば、バケットID196は、キー146に対応するオブジェクト30を含むバケット20の識別子の表示を含んでもよい。当該識別子は、例えば、上記に記載されるようにオブジェクト30を保存するためのバケット20を作成するためにクライアント50からの要求に応じる、ウェブサービスインターフェース100又はコーディネータ120によって定義されてもよい。他の実施形態において、会計情報は、レプリケータキーマップインスタンス190のエントリ内だけを反映する必要はないことに留意されたい。例えば、一実施形態において、一部の、又はすべてのキーマップインスタンス140のキーマップエントリ144は、例えば、記録148、又はキー146内の付加的なフィールドとして、バケットID196の表示を保存するように設定されてもよい。
上記に記載されるように、オブジェクト30とバケット20との間の関係は、キーマップインスタンス140の全体的な操作に対し、透過的であってもよい。しかしながら、もし、この関係が一般的に静的である場合、レプリケータキーマップエントリ194を介して明示的に関連するバケット20及びオブジェクト30は、クライアント50の会計及び請求を容易にする場合がある。例えば、各オブジェクト30と関連するバケット20のためのウェブサービスインターフェース100を明示的に要求するよりはむしろ、会計過程(レプリケータ180、又は別のモジュールに含まれてもよい、又はシステム内の相異なるボジュール内に実装されてもよい)は、バケットID196に従い、レプリケータキーマップエントリ194をソートするように設定されてもよい。当該のソートが完了すると、特定のバケットIDと関連するすべてのキー146は容易に明らかになる。記録148内に表示されたように対応するオブジェクト30のサイズは、バケットID196に関連する全体のストレージリソースの使用を決定するために合計される。さらに、特定のオブジェクト30と関連するストレージのクラスなど、オブジェクト30の他の特徴が配慮されてもよい。供給源の使用が、適切な請求モデルに従い通貨に定めされてもよい。
様々な実施形態において、レプリケータキーマップエントリ194は、様々な内部システム管理、又は会計タスクを容易にしてもよいバケット196のかわりに、又はそれに加えて他のフィールドを含んでもよい。レプリケータキーマップインスタンス190が他のキーマップインスタンス140から相異なる実施形態において、当該付加的なフィールドのストレージコストはレプリケータキーマップインスタンス190を構成してもよいことに留意されたい。しかしながら、専用のレプリケータキーマップインスタンス190を欠く実施形態において、キーマップインスタンス140のエントリ144は当該付加的なフィールドを含むために増大されてもよい。
層別不平衡データ構造
前に説明したように、一部の実施形態において、ストレージサービスシステムは、例えば、数十億又はそれ以上の、非常に多いオブジェクト30の数をサポートするために増やしてもよい。したがって、このような実施形態において、各キーマップインスタンス140は、管理するための同様の数のエントリ144を有するであろう。一部の実施形態において、キーマップインスタンス140は、前項で論考したキーマップエントリリスト、及びカウント操作などの、様々な種類のソート化及び/又はグループ化操作をサポートしてもよい。さらに、一貫したキーマップ操作をサポートするために、各キーマップインスタンス140によって管理される多くのキーは、上記に記載されるように他のキーマップインスタンス140の間で同期化される必要があってもよい。
多くの状況において、キーマップインスタンス140によって提供されたキーマップ機能性は、全体的なストレージサービスシステムの操作の中心である。例えば、クライアント50がオブジェクト30の特定のインスタンスに対してロケータ系のアクセスを行わないことを選ぶ場合、キーマップインスタンス140はクライアント50によって操作される各キー系のオブジェクトアクセスを仲介してもよい。したがって、クライアント50によって見られるストレージサービスシステムの操作は、アクセスするキーマップインスタンス140及びキーマップエントリ144の処理の効率及び速度に直接左右される場合がある。言い換えると、キーマップインスタンス140の性能は、図12の実施形態の、パーティションインデックス410、ブロックインデックス420、エントリインデックス430を実装するために使用されるデータ構造などの、エントリ144をインデックス化し、体系化するデータ構造に直接左右される。
大規模のキーマップ実装において、ソート化及び同期操作をサポートするためのインデックスデータ構造を設計することは、相当量の課題をもたらす場合がある。例えば、データ系など、大量のデータのインデックス化を必要とする従来のアプリケーションは、Bツリー、又は他の種類の平衡ツリーなどの従来の平衡データ構造をしばしば用いる。一般的に言えば、キーマップエントリ144などの、所定の数量のデータアイテムをインデックス化するために使用する場合、平衡データ構造アルゴリズムは、管理するべきアイテムの数量に従い、平衡データ構造にわたって、データアイテムを分散する試みをする。例えば、所定の10000のキーマップエントリ144をインデックス化するためには、平衡データ構造アルゴリズムは、エントリが1グループおよそ1000のエントリの10のグループに分割されるような、エントリ144の間の区切り点を選ぶ試みをしてもよい。平衡データ構造アルゴリズムは、例えば、およそ1000のエントリの各グループを、それぞれおよそ200のエントリの5つの下位グループに再分割する、各グループ内に平衡した階層のさらなるレベルを作ってもよい。データアイテムが平衡データ構造に加えられ、データ構造から削除されると、データ構造内のグループ及び/又は下位グループは不平衡となる場合がある。したがって、従来の平衡データ構造アルゴリズムは、グループ間でデータアイテムを再配置することによって、付加的なグループを作ること、及び/又は階層の付加的なレベルを作ることによって、データ構造を再平衡する。このような再平衡は、データアイテムが加えられ、又は削除された場合、「オンザフライ」が行われる、又はある数のデータアイテム修正が行われたあと、又は最後の再平衡から一定期間が経過した後に「オンザフライ」が起こる場合がある。
平衡の取れた方法においてデータを分離することの長所によって、平衡データ構造は、予測可能な、データ構造内でのいかなる所定のデータアイテムのおよそ一定のアクセス遅延をもたらしてもよく、多数のデータアイテムをインデックス化することが必要である、大規模の実装において望ましい場合がある。しかしながら、例えば、上記に記載されるように緩やかな同期化モデルを使用することは、平衡データ構造の分散されたインスタンスを効果的に調整、又は同期化することは特に困難である場合がある。具体的には、平衡データ構造のインスタンスが独立して修正された場合、各インスタンス内でデータアイテムをグループに分割する区切り点が不一致になる場合がある。その結果、異なる平衡データ構造インスタンスのグループ又は下位グループ間のデータアイテムメンバーシップに関して、直接の一致がない場合がある。2つの当該インスタンスを調整するためには、2つのインスタンスの全体を徹底的に比較することが必要であることがあり、各インスタンスインデックスが多数のデータアイテムである場合は非常に時間がかかる場合がある。
数量に従いデータアイテムをグループ間に分散する平衡データ構造の代替として、一部の実施形態において、キーマップインスタンス140のインデックスデータ構造は、各グループ内のデータアイテム間の一部の関係に従い、グループ間でデータアイテムを分散する、非平衡データ構造(トライとしても言及される)を実装するように設定されてもよい。具体的には、キーマップインスタンス140は、対応するキー146のプレフィックスに従い、エントリ144をインデックス化するように設定されてもよい。例として、対応する、大文字と小文字を区別しない英数字キー146を有する600のキーマップエントリ144が存在する事例を考慮されたい。これらの600のエントリの平衡インデックスは、それぞれ200のエントリの3つの平衡グループのエントリに分割されるであろう。それに反して、一実施形態において、非平衡インデックスは、aからlまでの文字で始まるこれらのエントリが、第1のグループに割り当てられ、mからxの文字で始まるこれらのエントリが第2のグループに割り当てられ、y又はzの文字又は数字0〜9で始まるこれらのエントリが第3のグループに割り当てられる、3つの英数字グループを定義するであろう。
エントリ144は、非平衡インデックスのグループにわたって不均一に分散されてもよい。例えば、第1のグループに300のエントリ、第2のグループに250のエントリ、そして第3のグループにわずか50のエントリがある場合がある。しかしながら、いかなる所定のエントリ144について、非平衡の特定のグループにおける所定のエントリ144のメンバーシップは、いかなる特定のグループにおける多くのエントリ144に依存することなく、その対応するキー146の機能であってもよい。したがって、非均衡印デックする2つが、同一のグループ定義を維持する場合、各グループは、一方のグループに依存することなく、独立して同期化されてもよい。例えば、2つのインスタンス間におけるa〜lグループは、mからxグループ及びyから9グループから独立して同期化されてもよい。それに反して、上記に記載されるように、エントリ144の同一の組の平衡インデックスの2つのインスタンスの同期化は、すべてのグループにわたるすべてのエントリを考慮することを必要とする場合がある。
多くのデータアイテムをインデックス化するための非平衡データ構造の使用を示す1つの例を、図17に示す。図示した実施形態において、非平衡インデックス200(又は、単にインデックス200)は、プレフィックス「al」で始まる多くの文字値をインデックス化するための階層的な方法に配置される、多くのノード210aを含む。例えば、インデックス化された値は、キーマップインスタンス140の様々なエントリ144のキー146と対応してもよい。インデックス200内の各ノード210は、インデックス化されるデータアイテムと直接一致してよい、又は一致しなくてよい関連するタグ値を含む。図示した実施形態において、楕円で描かれたノードは、対応するデータアイテムを有しないインデックス200の内部ノードと対応してもよいが、長方形で描かれたノードは、インデックス化されたデータアイテムと対応してもよい。したがって、例えば、ノード210aは文字列「al」と対応し、インデックス200内の多くの他のノ−ドと関係するが、文字列「al」と対応する実際のキー146は存在しない場合がある。それに反して、「alicia」というタグを有するノード210nは、同一の文字列を特定するキー146と対応してもよい。内部ノード210と非内部ノード210との間の相違は、ノード210の状態を明示的に反映してよく、又は反映しなくてもよい。
以下に説明するように、一部の実施形態において、非平衡データ構造は、他の複数のインデックスの1つのインデックスとして構成されてもよい。このような一部の実施形態において、インデックス200の第1のインスタンス内のデータアイテムは、別のインデックス200のルートノード210であってもよく、第1のインデックス200内の対応するノード210は、非内部ノードと見なされる場合がある。すなわち、一部の実施形態において、所定のインデックス200の非内部ノード210は、所定のインデックス200の外部である、エントリ144、又は別のインデックス200のルートノードなど、データ値と関連するいかなるノード210として概して定義される場合がある。同様に、所定のインデックス200の内部ノードは、所定のインデックス200内の他のノード210のみを参照してもよく、エントリ144、又は所定のインデックス200から異なる他のインデックス200とのあらゆる関連を担ってもよい。また、図17に示すように、非内部ノード210は、リーフノード(例えば、さらに低い階層レベルで、他のノードを参照しないノード)である必要はないことに留意されたい。
様々な実施形態において、各ノード210は、様々な情報を暗号化してもよい。ノード内でコード化されてもよい様々なデータフィールドを示す、ジェネリックノード210の一実施形態を、図18に示す。具体的な実施形態において、ノード210は、タグフィールド212、カウントフィールド214、フィンガープリントフィールド216、及び1つ以上のポインタフィールド218を含む。概して、タグ212は、以下にさらに詳しく説明するように、インデックス200をトラバースする又は操る過程で使用されてもよい、所定のノード210と対応する値を保存するように設定されてもよい。一部の実施形態において、タグ212は、インデックス200内のすべてのノード間からノード210を独自に識別してもよい。また、一部の実施形態において、所定のノード210のタグ212は、インデックス200内の所定のノード210のすべての直接の先祖であるタグ212に、プレフィックスとして含んでもよい。すなわち、所定のノード210のタグ212は、その所定のノードの直接の親ノード210のタグに対する一部の値を加えることを通じて決定されてもよい。例えば、タグ、「alicia」を有する、図17のノード210nを考慮されたい。ノード210nの直接の先祖ノード210l、210k、及び210aのそれぞれは、ノード210nのタグの適切なプレフィックスを形成するタグ(それぞれ「alic」、「ali」及び「al」)を有する。
図17に示すように、あるノード210は、インデックス200の階層のさらに下方で、1つ以上の子、又は子孫ノード210を参照する。一実施形態において、ポインタフィールド218は、所定のノード210から別のノード210へ、ポインタ、又は参照を反映するデータを保存するように設定されてもよい。例えば、所定のポインタフィールド218は、メモリアドレス空間などの、アドレス空間内で参照されたノード210の位置を識別するアドレスを含んでもよい。また、所定のポインタフィールド218は、参照されたノード210に関する付加的なタグ情報を含んでもよい。例えば、図17に示すように、子孫ノード210への所定のノード210からの各アークは、所定のノード210のタグ212によって形成されるプレフィックスとは異なる子孫ノード210のタグ212の第1の文字をラベルされる。一実施形態において、この付加的なタグ情報は、参照されたノード210に対するポインタと共に、対応するポインタフィールド218内に保存されてもよい。例えば、ノード210aに含まれるポインタフィールド218は、対応するタグデータ、「a」、「e」、「f」、「i」、及び「z」のみならず、ノード210b、210g、210j、210k、及び210tに対する参照をそれぞれ含んでもよい。
図12に関連して上記に記載されるように、インデックス200のようなインデックスは、選択のためにキーマップエントリ144などのデータアイテムを体系化するために使用されてもよい。一部の実施形態において、非内部ノード210のポインタフィールド218(すなわち、インデックス化されたデータアイテムに直接マップするノード210)も、キーマップエントリ144、ブロック425、又はブリック415などの、対応するデータアイテムに対するポインタを含んでもよい。一部の実施形態において、以下にさらに詳しく説明するように、インデックス200のような、非平衡インデックスは、1つのインデックス200の非内部ノード210が、別のインデックス200を参照してもよいような、階層的に実装されてもよい。インデックス化されたデータアイテムを参照するポインタフィールド218は、ポインタフィールド218の異なる種類のために異なるコード化を使用することなどの、あらゆる適切な技術によって、別のノード210を参照するポインタフィールド218から区別されてもよい。例えば、前の段落内で説明したように、子孫ノード210に対するアークに関連するタグ情報がポインタフィールド218内でコード化された実施形態において、空タグは、子孫ノード210への参照から、インデックス化されたデータへの参照を区別するために使用されてもよい。
所定のノード210について、カウントフィールド214及びフィンガープリントフィールド216は、所定のノード210の真下のノード210の状態を参照するように設定されてもよい。一実施形態において、カウント214は、所定のノード210の子孫(例えば、階層的に間下にある)であるすべてのノードのカウントを保存するように設定されてもよい。例えば、図17のノード210kは、その真下に、インデックス200内で8つの他のノード210を有する。同様に、そのカウント214は、あらゆる適切なコード化又は形式を使用する、8つの値を表示してもよい。
様々な実施形態において、所定のノード210のフィンガープリントフィールド216は、所定のノード210の階層的に真下にあるノード210のデータの一部分で行われたハッシュの値標示(例えば、適切なハッシュアルゴリズムの結果)を保存するように設定されてもよい。例えば、所定のノード210のフィンガープリントフィールド216は、所定のノード210の子孫であるすべてのノード210のタグ212のハッシュの合計を反映してもよい。代わりに、フィンガープリントフィールド216は、トラバーサル(例えば、横型トラバーサル、又は縦型トラバーサル)の特定の、一貫した順序に従い、子孫ノード210のタグ212の連結のハッシュを反映してもよい。他の実施形態において、タグ212のそばのノード210の他のフィールドは、ハッシュ化に関与してもよい。一部の実施形態において、所定のノード210と関連するデータは、それ自体のフィンガープリントフィールド216内で反映されてもよいが、他の実施形態において、所定のノード210のフィンガープリントフィールド216は、その子孫ノードに基づいて厳密に決定されてもよい。記述の一貫性について、本願で使用した所定のノード210のフィンガープリントは、所定のノード210の少なくとも一部の子孫ノードの機能であるハッシュ値を参照してもよいが、所定のノード210のハッシュは、子孫ではなく、所定のノード210のみと関連するデータの機能である、ハッシュ値を参照してもよい。
一般的に言えば、ハッシュアルゴリズムは、2つのハッシュ値が異なる場合、2つのハッシュ値が作成された元のソースデータ値も何らかの方法で違わなければならない、小さい、一般的に固定された長さのハッシュ値の上に、あるいは任意の長さの所定のソースデータ値をマップするように設定されてもよい。ハッシュアルゴリズムは、一般的に1対1の機能ではなく、2つのハッシュ値間のアイデンティティは、元のソースデータ値間のアイデンティティを必ずしも暗示しない。しかしながら、ハッシュアルゴリズムの一部のクラスについて、同一のハッシュ値を与えられた元のソースデータ値間のアイデンティティは、とりわけ、冗長のある程度を示すソースデータ値について、統計的に定量化できる確率、又は信頼度内である可能性がある場合がある。ハッシュアルゴリズムの異なる種類は、署名、フィンガープリント、又はチェックサムアルゴリズムと言われることもある。ハッシュアルゴリズムのいかなる適切な種類は、あらゆる適切なバージョンのMessage Digest5(MD5)アルゴリズム、又は、SHA−1、SHA−256、SHA−512などのようなSecure Hash Algorithm(SHA)を含む、制限されない例を手段として、フィンガープリントフィールド216に保存されるハッシュ値を作成するために用いられてもよいことを意図する。
前項に記載のように、キーマップインスタンス140で行われる基本的な操作は、操作に対するパラメータとして特定されるキーと対応するエントリ144をそれぞれ保存し及び取り出す、格納及び取得操作を含んでもよい。一部の実施形態において、キーマップインスタンス140内の様々なインデックスは、インデックス200などの非平衡インデックスとして実装されてもよい。
多数のデータアイテムをインデックス化する場合、キーマップインスタンス140で共通する場合があるように、すベてのデータアイテムのためのインデックス200の1つのインスタンスを使用することは、実用的でないであろう。例えば、1つの大きなインデックスは、インデックスを処理するシステムのメモリに完全に収まらない場合があり、インデックスに左右される操作の能力にマイナスに影響を与える場合がある。一部の実施形態において、大きなインデックスは、層別の、非平衡データ構造、又は層別インデックスを使用して実装されてもよい。一般的に言えば、層別インデックス内で、インデックス200の複数のインスタンスは、階層的に識別されてもよく、階層が上であるインスタンスは、他のインデックス200をインデックス化してもよく、階層が下であるインデックスは、特定のエントリ144、又は他のエンティティ(例えば、ブロック425、又はブリック415)をインデックス化してもよい。
層別インデックスの一実施形態を図19に示す。図示した実施形態において、層別インデックス220は、5つのインデックス200a〜eを含む。インデックス200aは、ノード210u〜xを含み、各ノードはインデックス200b〜eのうちの1つのそれぞれのルートノードを参照する、非内部ノードである。代わりに、インデックス200b〜eは、図17に示されたノード210a〜tの様々なものをそれぞれ含む。層別インデックス220の一部の実施形態において、インデックス200aのような、上位インデックスは、メモリ、キャッシュ、又はシステム処理インデックスの別の上位メモリ階層に属するように設定されてもよいが、インデックス200b〜eなどの下位インデックスは、ディスク、又は別の当該メモリ階層の下位に主として属してもよい。このような実施形態において、下位インデックスは、例えば、ページングタイプの技術を使用して、必要があれば、メモリ階層の下位から上位に再配置されてもよい。多数のデータアイテムのインデックスの階層的なパーティションをサポートすることによって、層別インデックス220は、システム供給源をさらに効率的、効果的に使用できる。
例えば、前述のページング技術を使用して、層別インデックス220の頻繁に使用されたインデックス200は、容量が限られるが一般的にアクセスすることが速い上位のメモリ階層に保存されてもよいが、それほど頻繁に使用されないインデックス200は、上位よりは大きなストレージ容量を有するが一般的にアクセスすることが遅い下のメモリ階層位に保存されてもよい。一部の実施形態において、ノード210が、層別インデックス220内でインデックス200に加えられると、個々のインデックス200は、目的とするサイズ(インデックスに実装するシステム上のディスクブロック、又はメモリページなど)を超えて増大する場合があることを考慮されたい。このような実施形態において、所定のインデックス200が目的とするサイズを超えて増加した場合、2つ以上のインデックスインスタンスに分割されてもよい。当該の分割の実行過程において、ノード210は、新規インデックスインスタンスを説明するために必要であるものとして上位インデックス200に加えられてもよい。
キーマップエントリの格納又は取得操作に応じて、層別、又は非層別非平衡インデックスは、特定のキーが、インデックス200内のノード210と対応するかどうかを決定するためにトラバースされてもよい。非平衡インデックストラバーサルの方法の一実施形態を図20に示す。図示した実施形態において、インデックス内でキー値を検索する(検索値としても言及される)ブロック2000で開始する操作を、例えば、関連するキーマップ操作を介して、特定する。それに続き、インデックスのルートノード210(例えば、親ノードを有さないノード210)が選択される(ブロック2002)。
選択されたノード210について、ノードの対応するタグ値212は、タグ値が、検索値と正確に一致するか、検索値のプレフィックスであるか、又はそのいずれでもないかどうかを決定するために検索値に対して比較される(ブロック2004)。選択されたノード210のタグ値212が検索値と一致する場合、選択されたノード210は、内部、又は非内部ノードであるかどうか決定するために調査される(ブロック2006〜2008)。例えば、ポインタ218又は選択されたノード210の他の内容は、ノードが、エントリ144、又はインデックス200の別のインスタンスなどのインデックス200によってインデックス化されたデータ値を参照するかを決定するために調査されてもよい。選択されたノード210が内部ノードである場合、以下に説明するようにインデックス不足が生じる場合がある(ブロック2022)。
選択されたノード210が非内部ノードである場合、選択されたノード210によって参照されたデータ値は取り出される(ブロック2010)。層別非平衡データ構造をサポートする実施形態において、一部のデータ構造インスタンスは、他のデータ構造インスタンスをインデックス化してもよく、取り出されたデータ値はエントリ144、又はインデックス200の別のインスタンスのルートノードのいずれかと対応してもよい。取り出されたデータ値がエントリ144である場合、インデックストラバーサルが完了され、取り出されたエントリ144は、トラバーサルを始めたキーマップ操作に従い、処理されてもよい(ブロック2012−2014)。例えば、開始しているキーマップ操作が取得操作の場合、取り出されたエントリ144が取得操作の結果として返されてもよい。例えば、開始しているキーマップ操作が格納操作の場合、取り出されたエントリ144が、格納操作で特定されたパラメータに従い修正されてもよい。
取り出されたデータ値が、エントリ144と対応しない場合、図示した実施形態において、それは別のインデックス200のルートノード210と対応してもよい。同様にこのルートノード210が選択されてもよく(ブロック2012、2016)、操作は、新規に選択されたインデックス200のトラバーサルであるブロック2004から処理されてもよい。したがって、一実施形態において、図20の方法の実行は、検索値と対応するノード210の存在又は不足が断定的に決定されるまで続いてもよい。
ブロック2006に戻って、選択されたノード210のタグ212が検索値と一致しないが、検索値のプレフィックスである場合、選択されたノード210の子孫は、どの子孫も検索値と対応するかを判断するために調査されてもよい(ブロック2018)。そうである場合、対応する子孫ノード210は選択されてもよく(ブロック2020)、操作はブロック2004から処理されてもよい。一実施形態において、選択されたノード210のポインタ218は、選択されたノード210のタグ212と共に取得された時、付加的なタグ情報が特定のポインタ218と関連しているか、また検索値のプレフィックスを形成する(又は完全に一致する)かどうか決定するために調査されてもよい。例えば、図17に言及して、ノード210aのタグ「al」は、「alibaba」の検索値のプレフィックスであると決定されてもよい。さらに、対応するポインタ218によって代表されてもよい、ノード210aからノード210kのアークは、付加的なタグ情報「i」と関連する。このタグ情報は、ノード210aのタグ「al」に添付されると、検索値のプレフィックスでもある、値「ali」を形成する。したがって、ノード210kは、将来のトラバーサルのために選択されてもよい。
ブロック2018に戻って、検索値と対応する選択されたノード210の子孫がない場合、検索値は、インデックス200内で対応するエントリ144を持たず、インデックス不足としても言及される(ブロック2022)。該インデックス不足は、インデックストラバーサルを始めたキーマップ操作の種類に従い処理されてもよい(ブロック2024)。例えば、キーマップエントリ取得操作は、要求するクライアントに不足の適切な状態表示標示を返すことによって処理してもよい。対照的に、キーマップエントリ格納操作は、選択されたノード210の子孫としてインデックスに保存されるエントリ144と対応する新規ノード210を挿入することによって、インデックス不足を処理してもよい。例えば、新規ノード210が作成されてもよく、その様々なフィールドが、保存されるエントリ144のために適切に設定されてもよく、新規ノード210に対するポインタ218が、選択されたノード210内に保存されてもよい。新規ノード210がインデックス200に付加された場合、又は存在するノード210が修正された場合、付加された、又は修正されたノード210のすべての先祖ノード210のカウントフィールド214及びフィンガープリントフィールド216は、変更を反映するために更新されてもよい。
ブロック2006に戻って、選択されたノード210のタグ212が検索値と一致せず、検索値のプレフィックスである場合、インデックス不足が生じる場合があり、ブロック2022から処理が続けられる。一部の例において、この事例は、選択されたノード210がインデックス200のルートノードである時に生じる場合がある。同様に、一実施形態において、この新規ノード210をインデックス200に付加することは、検索値及び存在するルートノード210(この場合、選択されたノード210)のタグ212の両方に共通のプレフィックスであるタグ212を有する新規ルートノード210を作成することを含む。(一部の例において、新規ノード210の共通のプレフィックスは、あらゆる値のための有効なプレフィックスとして解釈される、空値である場合がある。)新規ルートノード210は、子孫として、選択されたノード210を参照するように設定されてもよい。必要な場合、付加的なノード210は、検索値と対応し、新規ルートノード210の付加的な子孫として構成されるために作成されてもよい。
一部の実施形態において、インデックスの不足は、選択されたノード210のタグ212が検索値と一致せず、検索値のプレフィックスでない場合、階層的非平衡インデックス200をトラバースする間、ただちに生じなくてもよいことに留意されたい。一実施形態において、これらの事例に遭遇した場合、選択されたノード210が親を有する場合、親ノード210が選択される。親ノード210が別のインデックス200を参照する非内部ノードである場合、参照されたインデックス200のルートノード210が選択されてもよく、処理はブロック2004から続いてもよい。そうでなければ、インデックスの不足が生じる場合がある。(しかしながら、この事例は他のインデックス200をインデックス化しない非階層的、内蔵型インデックス200には生じなくてもよいことに留意されたい。)この事の例として、検索値が「alice」である図19の階層的インデックスを考慮されたい。インデックス200aのトラバーサルが、タグ「ali」を有するノード210wに処理されてもよい。ノード210wは、「ali」と共に検索値のプレフィックスを形成する、関連するタグ情報「c」をもつ子孫ノード210xに対するポインタを有するため、ノード210xが選択されてもよい。しかしながら、ノード210xのタグは、一致しない、検索値のプレフィックスでない、「alicia」である。したがって、トラバーサルは、インデックス200cを参照する非内部ノードである、ノード210w(ノード210xの親)に戻ってもよい。同様に、トラバーサルは、ノード210kに対して、そして最終的に検索値と一致するタグ212を有する、ノード210mに対して続いてもよい。
様々な実施形態において、非平衡インデックス200、又は階層的非平衡インデックス220は、キーマップインスタンス140内のキーマップエントリ144をインデックス化するために使用されてもよい。例えば、階層的インデックス220は、1つ以上のパーティションインデックス410、ブロックインデックス420、又はエントリインデックス430、又はキーマップインスタンス140内に実装される、あらゆる他のインデックスのレベルを実装するために用いられてもよい。上記に論考のように、異なるキーマップインスタンス140は、緩やかな同期プロトコルが用いられる場合、普通の操作の方法において相違、又は不一致になってもよい。一部の実施形態において、キーマップインスタンス140は、インデックス構造、又はインデックス化された内容の相違を識別するために、一貫した順序で(例えば、縦型、又は横型検索順序)、それぞれのインデックスデータ構造の各ノードをトラバースする、包括的なプロトコルを使用して同期化されてもよい。しかしながら、インデックスデータ構造内の、キーの数、及びカウントの含有及び/又は累積したハッシュ情報よりは、むしろキー情報に従ったデータの分散などの、上記に記載される非平衡インデックスの様々な特徴は、さらにコンピュータ的に効率的な同期化アルゴリズムの実装を容易にしてもよい。
前に説明したアンチエントロピー設定の調整プロトコルの多くの可能なバージョンは、キーマップインスタンス140によって実装された、非平衡で、多分満たされたインデックスの使用を意図する。このようなプロトコルの一実施形態の説明は、例えば、他の事例にわたりある事例を最適にするために選択することで、又はプロトコルの一般的なステップを行うために、アルゴリズムの1つ、又は別の特定の種類又はクラスを使用することを選択することで、一般的なプロトコルの予期される変化は、異なる実装の優先順位を提示し得ることが既知であるが、以下のとおりである。したがって、説明された実施形態は、制限することよりはむしろ実例として意図されたものである。
一実施形態において、非平衡インデックス200、又は階層的非平衡インデックス220の異なるインスタンスを調整するように構成されるアンチエントロピープロトコルは、様々な種類のメッセージのインスタンス間の交換を含んでもよい。アンチエントロピープロトコルの一実施形態に基づいてもよい例示的なメッセージの1組は、DATAメッセージ、REQUESTメッセージ、HASHメッセージ、FILTERメッセージ、及びFINGERPRINTメッセージを含んでもよい。これらの各メッセージのそれぞれの実施形態の一般的な機能は、メッセージが、アンチエントロピープロトコルの実施形態を実装するためにどのように使用されてよいかの論考に続いて、以下に説明される。以下の論考において、当該キーマップインスタンスが、上記に記載された特徴のどれかを含む、非平衡インデックス200の1つ以上のインスタンス、又は層別非平衡インデックス220を実装してもよいことが理解されるが、参照が、キーマップインスタンス140間のデータの交換になされてもよい。
DATAメッセージは、1つのキーマップインスタンス140から別のキーマップインスタンスへ、1つ以上のインデックスノード210においてのデータを伝えるために使用されてもよい。一実施形態において、DATAメッセージは、所定のノード210と関連するタグ212のみを伝えるように設定されてもよいが、他の実施形態において、DATAメッセージは、所定のノード210と関連する他のフィールドを伝えてもよい。一部の実施形態において、所定のノード210が非内部ノードである場合、DATAメッセージは、所定のノード210と関連するデータアイテムのすべて、又は一部分を含んでもよい(例えば、エントリ144、又は別のインデックス200のルートノード210についての情報)。
HASHメッセージは、所定のノード210のフィールド、又は所定のノード210と関連するデータアイテムを明示的に伝えることなく、1つのキーマップインスタンス140から別のキーマップインスタンスへ、1つ以上のインデックスノード210についての情報を伝えるために使用されてもよい。一実施形態において、HASHメッセージは、適切なアルゴリズムに従い計算された所定のノード210のハッシュのみならず、所定のノード210と関連するタグ212を伝えるように設定されてもよい。一部の実施形態において、所定のノード210のハッシュは、所定のノード210と関連するデータアイテム(例えば、キーマップエントリ144)を反映してもよいが、所定のノード210のあらゆる子孫を除外してもよい。
REQUESTメッセージは、1つ以上のノード210に関連する情報のための要求を伝えるために使用されてもよい。一実施形態において、REQUESTメッセージは、1つ以上のタグプレフィックス値を伝えるように設定されてもよい。それに応じて、要求するインスタンスは、伝えられたタグプレフィックス値が実際にプレフィックスである、タグ212を有するこれらのノード210についての情報を受け取ることを期待してもよい。所定のノード210について、受信した情報は、所定のノード210の対応するフィールドの内容及び/又は所定のノード210と対応するデータアイテム(例えば、キーマップエントリ144)を含んでもよい。一部の実施形態において、特定のタグプレフィックス値によって定義された結果空間内の値、又は値の範囲などは、タグプレフィックス値のために返された結果から除外されるべきであることを特定することによって、REQUESTメッセージは、要求されたプレフィックス値のさらなる必要条件をサポートしてもよい。例えば、REQUESTメッセージは、プレフィックス「alexe」又は「alexj」とこれらのノード210を除き、タグプレフィックス値「alex」と一致するすべてのノード210についての情報が返されるべきであることを特定してもよい。
今説明したメッセージは、個々のノード210の粒度のレベルで一般的に行われてもよい。しかしながら、キーマップインスタンス140間の相違が概して小さい場合(例えば、少数のノード210に伝えられた)、同期化過程が、一度に複数のノード210の状態を素早く確かめるために容易にしてもよい。一実施形態において、FINGERPRINT及びFILTERメッセージは、ノード210の総計についての情報を伝達するように設定されてもよい。とりわけ、一実施形態において、FINGERPRINTメッセージは、1つのキーマップインスタンス140から別のキーマップインスタンスへ、タグ212とともに、ノード210のフィンガープリントフィールド216を伝えるように設定されてもよい。上記に記載されるように、所定のノード210のフィンガープリントフィールド216は、所定のノード210の子孫の機能として決定されるハッシュ値を保存するように設定されてもよい。したがって、異なるキーマップインスタンス140のそれぞれのノード210のフィンガープリントフィールド216が等しい場合、それぞれのノード210の子孫の配列及び内容が同一であることがほぼ確実であり得る(使用されたハッシュアルゴリズムの特徴によって)。すなわち、それぞれのノード210から下に向かっていくキーマップインスタンス140の部分が同期化されることは、ほぼ確実である。
フィンガープリントの使用は、相当数のノード210を含むキーマップインスタンスの140が同期化されたか否かの素早い判断を可能にする。しかしながら、対応する一部が同期化されてないことを示しているフィンガープリントは、概してどのように該部分が異なるかについてのさらなる詳細を提供しなくてもよい。一実施形態において、FILTERメッセージは、第1のキーマップインスタンス140から、第2のキーマップインスタンス140へ、特定のプレフィックス値に対応するノード210の数をコード化するフィルタ値を伝えるように設定されてもよい。第2のインスタンスは、ある場合は、どの第2のインスタンスのノード210が、第1のインスタンスに存在していないかを確認するために、プレフィックス値に対応する自体のノード210をテストするための受信したフィルタ値を使用してもよい。
一実施形態において、データ値の1組をフィルタ値に回復可能にコード化するあらゆる適切なフィルタリング技術が採用されてもよいことが考慮されるが、FILTERメッセージから伝えられたフィルタ値は、Bloomフィルタであってもよい。一般的に言えば、値の1組のBloomフィルタ(例えば、ノード210)は、Mが整数である、Mビットと対応してもよい。Bloomフィルタに、あらゆる値がコード化される前は、最初の値はゼロであってもよい。すなわち、フィルタのすべてのビットは、アサート停止状態であってもよい。Bloomフィルタは、それぞれが範囲[0、M−1]内の値でコード化されるべき値をマップする、フィルタ内でコード化すべき各値を、k独立ハッシュ機能の各1組に通すことによって投入されてもよい。各kの結果として得られるハッシュ値について、Bloomフィルタ内で対応するビットはアサートされる(例えば、論理1値に設定する)。M及びkは、偽陽性(以下に論考)の所望の可能性のみならず、Bloomフィルタ内でコード化されるべき値の数及び種類に従い、設計パラメータとして選択されてもよい。例えば、8のハッシュ機能を使用する1024ビットBloomフィルタにおいて、各ハッシュ機能は、アサートされるべきフィルタの1024ビットの特定の1つを特定する対応する10ビットハッシュ値を生成してもよい。
所定の値がBloomフィルタにコード化されたかどうかをテストするために、値は、フィルタをコード化するために使用されたk独立ハッシュ機能の同一の組を通り、フィルタ値の結果として得られたkビットが調査される。フィルタの結果として得られたkビットのどれもアサートされない場合、テスト値はフィルタ内で全くコード化されない。すべてのフィルタの結果として得られたkビットがアサートされる場合、テスト値はフィルタ内でコード化されても、されなくてもよい。すなわち、テスト値は、フィルタ内で最初にコード化されているか、又は偽陽性であってもよい。一部の実施形態において、ハッシュ機能は、所定の値の1組が、フィルタ内で無事にコード化される時に同一の偽陽性値が作成される可能性を低くするために、Bloomフィルタが作成された各別々の場合において無作為に、又は自然発生的に作成された(例えば、現在のシステム時間の機能として)ソルト、又はシード値でパラメータ化されてもよい。
したがって、例えば、第1のキーマップインスタンス140は、Bloomフィルタの中のプレフィックスPと対応するノード{A,B,C,D,E}の組をコード化してもよく、FILTERメッセージを使用する第2のキーマップインスタンス140に対してフィルタを伝えてもよい。第2のキーマップインスタンス140において、ノード{A,B,X,Y,Z}の1組は、プレフィックスPと対応してもよい。第2のキーマップインスタンス140は、フィルタに対する各ノードをテストしてもよく、ノードA、B、及びXがフィルタでコード化されたが、ノードY及びZはフィルタで全くコード化されなかったことを決定してもよい。したがって、第2のキーマップインスタンス140は、第1のキーマップインスタンス140にノードY及びZが存在しないことを正しく結論づけてもよく、ノードA、B及びXが、Xが偽陽性である、第1のキーマップインスタンス140におそらく存在することを結論付けてもよい。その結果、第2のキーマップインスタンス140は、ノードY及びZについての情報を、第1のキーマップインスタンス140に伝えるための行動をとってもよい。
DATA、HASH、REQUEST、FINGERPRINT及びFILTERメッセージが実装され、あらゆる適切なプロトコル、又はAPIに従い伝えられてもよく、メッセージを解読及び適切に処理するために必要なあらゆる付加的な情報のみならず、上記に記載されるように、情報を伝えるように構成されるフィールド、又はパラメータの様々な種類を含んでもよいことを考慮されたい。一実施形態において、メッセージは、メッセージに含まれる所定のタグ値について、送信するキーマップインスタンスが、それぞれ、得られたデータ、及び必要なデータパラメータとして言及される、対応するデータ、又は必要な対応するデータのいずれかを有するかどうかを示す、付加的なパラメータを含んでもよい。例えば、キーマップインスタンス140が、タグ「al」と、いくつかの数の子孫を有するノード210のためにFINGERPRINTメッセージを送信する場合、インスタンスは、「al」によって定義されたプレフィックス空間内にいくつかのノード210を有することを示す、得られたデータパラメータを含んでもよい。またインスタンスは、例えば、「al」によって定義されたプレフィックス空間のコピーが、不完全であると考えられる場合、必要なデータパラメータを含んでもよい。一部の実施形態において、DATA又はHASHメッセージは、必要なデータパラメータを明示的に特定してもよい一方、FILTER又はREQUESTメッセージは明示的に得られデータパラメータを特定するが、得られたデータパラメータは、DATA及びHASHメッセージに潜在してもよいが、必要なデータパラメータは、FILTER及びREQUESTメッセージに潜在してもよい。一実施形態においてFILTERメッセージは、必要なデータパラメータ、又は得られたデータパラメータの少なくとも1つを特定することが要求されてもよい。
一実施形態において、2つのキーマップインスタンスによって実行されたアンチエントロピープロトコルは、2つのインスタンスが互いに接点を確率する時に開始してもよい。各インスタンスは、その両方がいくつかのデータを持ち、欠くことを仮定してもよい。同様に、各インスタンスは、インスタンスのルートノード210のタグ212及びフィンガープリント216を特定し、得られたデータ及び必要なデータパラメータを含む、FINGERPRINTメッセージを他のインスタンスへ送信してもよい。例えば、層的非平衡インデックス220を用いるキーマップインスタンス140の実施形態において、ルートノード210は、親ノード、又は上位のインデックス200を持たないインデックス200内に、親ノードを持たないノード210と対応してもよい。
FINGERPRINTメッセージ処理の方法の一実施形態を、図21に示した。図示した実施形態において、操作は、FINGERPRINTメッセージが、メッセージ送信側から受信されたブロック2100で開始する。例えば、第1のキーマップインスタンス140は、タグ値、フィンガープリント、及び1つ以上の得られたデータ、又は必要なデータパラメータを含むFINGERPRINTメッセージを、第2のキーマップインスタンス140に伝えてもよい。FINGERPRINTメッセージが受信された後、メッセージ受信部のインデックスは、受信したタグ値が、対応するタグフィールド212のプレフィックスである(又は正確に一致する)ノード210が存在するかどうかを識別するために、トラバースされてもよい(ブロック2102)。例えば、キーマップインスタンス140のインデックスは、図20の方法を使用する、又は本願の適切な改良型を使用するルートノードから始まってトラバースされてもよい。
受信したタグ値がプレフィックスでない、又はいかなるノード210のタグフィールド212の正確な一致でない場合、FINGERPRINTメッセージによって参照されたノードと対応するノード210は、メッセージ受信部に存在しなくてもよい。同様に、受信部は、最初に受信したFINGERPRINTメッセージに含まれるタグ値を特定する送信側に、REQUESTメッセージをメッセージ送信側に伝えることによって応答してもよい(ブロック2104)。一実施形態において、REQUESTメッセージの処理は、以下に詳しく説明するように続行されてもよい。一部の実施形態において、REQUESTメッセージは、受信されたFINGERPRINTメッセージが得られたデータパラメータを示す場合のみに伝えられてもよい。
一部の実施形態において、アンチエントロピープロトコルの操作の間に交換された個々のメッセージの完了は、付加的なメッセージが、所定のメッセージが無事に完了することに応じて作成されたかどうかに左右される。すなわち、一部の実施形態において、個々のメッセージを処理することは、他のメッセージに関して、処理状況を把握しない、非同期方法で生じてもよい。本願に記載される例示的な実施形態の論考において、この処理状況を把握しない、非同期モデルが仮定される。したがって、REQUESTメッセージが作成された後、FINGERPRINTメッセージの処理は、それ自体が完了と見なされてもよい(ブロック2106)。しかしながら、このモデルは、アンチエントロピープロトコルの一般的な操作にとって絶対に必要ではなく、他の実施形態において、いかなる所定のメッセージは、下位に作成されたメッセージとの、又は所定のメッセージへの応答において、同期化を遮断、待機、又は維持してもよい。例えば、明示的なハンドシェイク、肯定応答、再試行、又は他の種類のプロトコルは、1つのメッセージから別のメッセージへの完了の状態を伝えるために、一部の実施形態に用いられてもよい。
受信されたタグ値が、メッセージ受信部で特定のノード210のタグ212のプレフィックス、又は一致として対応する場合は、受信されたフィンガープリント値は、2つのフィンガープリントが一致するかどうかを決定するために、特定のノード210のフィンガープリントフィールド216と比較されてもよい(ブロック2108)。一致する場合、メッセージ送信側とメッセージ受信側が、受信されたタグ値に関して同期化されることがほぼ確実(例えば、異なるデータから作成されているにもかかわらず、衝突する、又は同一の値を有する、2つのフィンガープリントを作るために使用する、フィンガープリントアルゴリズムの可能性に従い)である。例えば、プレフィックスとしての受信されたタグ値を有するいかなるノード210が、FINGERPRNTメッセージが送信されたキーマップインスタンス140及び、メッセージが受信されたキーマップインスタンス140内と同一の状態である。したがって、FINGERPRINTメッセージに応じて作成された付加的なメッセージはなくてもよく、メッセージは完了と見なされる(ブロック2106)。
フィンガープリントが一致しない場合、メッセージ送信側とメッセージ受信側は、受信されたタグ値に関して同期化しておらず、送信側と受信側の状態が共に近くなるようにするためには付加的な作業が必要とされる場合がある。上記に記載されるように、FILTERメッセージは、送信側があるノード210についての特定の情報を受信側と通信することを可能にするのに役立ってもよい。しかしながら、一部の実施形態において、妥当な偽陽性割合を保ちながらFILTERメッセージにコード化されてもよいノード210の数は、あるしきい値に限られてもよい。子孫ノード210の数が、受信されたタグ値と一致するメッセージ受信側ノード210でしきい値を超える場合、FILTERメッセージを送信する前に付加的なFINGERPRINTメッセージの処理を行うことはさらに効率的であり得る。
したがって、図示した実施形態において、フィンガープリントが一致しない場合、メッセージ受信側の特定のノード210のカウントフィールドが、FILTERメッセージ処理のしきい値を超えるかどうか決定するために調査される(ブロック2110)。超える場合、メッセージ受信側は、受信されたタグ値がプレフィックスである特定のノード210の子に従い、受信されたタグ値と対応するインデックス範囲の一部を細分化するように設定されてもよい(ブロック2112)。各子ノード210について、メッセージ受信側は、それぞれの子ノード210のタグ212及びフィンガープリントフィールド216を特定して、最初のメッセージ送信側に、対応するFINGERPRINTメッセージを送り返すように設定されてもよい(ブロック2114)。さらに、例えば、特定のノード210の子によって示されたような、受信されたタグ値と対応するインデックス範囲の一部に格差がある場合、メッセージ受信側は、格差と対応するタグ値にたいして1つ以上のREQUESTメッセージを送るように設定される(ブロック2116)。受信されたFINGERPRINTメッセージの処理は、そこで完了と見なされてもよい(ブロック2118)。一実施形態において、上記の行動に加え、受信されたタグプレフィックス値が特定のノード210の完全な一致である場合、特定のノード210に対応するHASHメッセージは、メッセージ送信側に返されてもよい。
例えば、図17に示すように、メッセージ受信側のインデックス200の特定のノード210aは、タグ「al」、及び対応するタグ「alan」、「alex」、「alfred」、「ali」及び「alz」を有する子を有してもよい。これは、メッセージ受信側が、「alb」、「alc」又は「ald」で始まるであろうノード210についてではなく、「alan」及び「alex」で始まるノード210についてのある情報を有することを示唆する。同時に、メッセージ受信側は、子のタグ間の格差に対するREQUESTメッセージのみならず、ノード210aの各ノードに対するFINGERPRINTメッセージを伝えてもよい。負のREQUEST構文がサポートされる実施形態において、メッセージ受信側は、特定のノードの子と対応するタグ以外のタグに対するREQUESTメッセージを伝えてもよい。例えば、メッセージ受信側は、「alan」、「alex」、「alfred」、「ali」及び「alz」とプレフィックスであるタグ以外のタグに対してREQUESTメッセージを送ってもよい。
特定のノード210のカウント値が処理しているFILTERメッセージのしきい値を超えない場合、また、受信されたFINGERPRINTメッセージが、得られたデータパラメータを含む場合、メッセージ送信側は、メッセージ受信側に存在しないノード210についての特定の情報を有してもよい。同様に、メッセージ受信側は、特定のノード210の子孫である各ノード210をフィルタ(例えば、上記載のBloomフィルタ)にコード化する、FILTERメッセージを送るように設定されてもよい(ブロック2120〜2122)。例えば、図17に言及して、特定のノードが、ノード2101と対応する場合、各ノード210m〜qをコード化するBloomフィルタは、FILTERメッセージを介して作成され、返されてもよい。図示した実施形態において、得られたデータパラメータが最初のFINGERPRINTメッセージに含まれていなかった場合、それぞれのFINGERPRINTメッセージは、FILTERメッセージの代わりに、特定のノード210の各子に対して作成され、メッセージ送信側に返されてもよい(ブロック2124)。これらのFINGERPRINTメッセージは、得られたデータパラメータを含んでもよい。この事例において、以下のFILTER又はFINGERPRINTメッセージの作成のいずれかは、受信されたFINGERPRINTメッセージの処理が完了してもよい(ブロック2118)。
FILTERメッセージ処理の方法の一実施形態を、図22に示す。図示された実施形態において、操作は、例えば、上記に記載されるように、FINGERPRINTメッセージに応じて、タグ値及びフィルタ値を含むFILTERメッセージがメッセージ送信側から受信されるブロック2200で始まる。FILTERメッセージが受信されると、メッセージ受信側のインデックスは、図21に関して上記の記載と同様の方法で、受信されたタグ値(例えば、受信されたタグ値がプレフィックスである、又は一致する)と対応するノード特定のノード210を識別するためにトラバースされる(ブロック2202)。一部の実施形態において、FILTERメッセージが別のメッセージに応じて作成される場合、受信されたタグ値と対応するノード210は概して存在する。
メッセージ受信者は、それがある場合には、フィルタ値にコード化されないノード210を識別するために、FILTERメッセージに提供されたフィルタ値に対する特定のノード210の各子孫をテストしてもよい(ブロック2204)。フィルタ値にコード化されないメッセージ受信側の各ノード210について、対応するDATAメッセージが、メッセージ送信側に返されてもよい(ブロック2206)。FINGERPRINTメッセージの処理は、そこで完了と見なされてもよい(ブロック2208)。上記に記載されるように、FILTERメッセージに用いられるフィルタアルゴリズムの種類及び形態によって、偽陽性が生じる場合がある。すなわち、メッセージ受信側は、実際にはそうでない時に、ノード210のあるものがフィルタ値にコード化されており、したがって、メッセージ送信側と同一の状態を呈すると誤って結論付ける場合がある。したがって、アンチエントロピープロトコルの1ラウンドは、各ノード210に関して同期化になる2つのキーマップインスタンス140の結果にならなくてもよい。しかしながら、多くの実施形態において、アンチエントロピープロトコルの1ラウンドは、インスタンスがさらに相違するようになることを引き起こさなくてもよく、異なるインスタンス、及び使用されるアルゴリズムの特徴の程度によって、(例えば、フィルタのコード化のためのしきい値に定められた偽陽性の確率)プロトコルの反復のアプリケーションが、可能性のある程度を伴ういくらかのラウンド内で収束することが期待されてもよい。
一部の実施形態において、HASH、REQUEST、及びDATAメッセージの処理は、FILTER及びFINGERPRINTメッセージよりもかなり単純である。一実施形態において、HASHメッセージ受信側は、メッセージに含まれるタグ値と対応するノード210を識別する試みをしてもよく、識別されたノード210の対応するハッシュ値を計算してもよい。受信されたハッシュ値が、計算されたハッシュ値と一致する場合、識別されたノード210は、メッセージ送信側で対応するノード210とすでに同期化していてもよい。そうでない場合、受信されたタグ値を含むREQUESTメッセージは、送信側がさらに最新のデータバージョンを取得するために返される。
REQUESTメッセージの処理は、一実施形態において、例えば、上記に記載される非平衡インデックス誘導技術を使用して、メッセージに含まれた受信されたタグ値が一致する、又は対応するタグ値212のプレフィックスである各ノード210を識別するメッセージ受信側を、単に含んでもよい。各識別されたノード210について、上記に記載されるように構成された、対応するDATAメッセージは、メッセージ送信側に返されてもよい。一実施形態において、受信されたDATAメッセージの処理は、メッセージ受信側で、メッセージに示されたタグ値と対応するノード210が存在するかどうかを識別することを含んでもよい。存在しない場合、対応するノード210が、メッセージから抽出されたデータと共に作成され、投入されてもよい。存在する場合、存在するノード210及び/又はその対応するデータ値に関連するデータは、メッセージから抽出されたデータと置き換えられてもよい。一部の実施形態において、存在するノード210のデータは、受信されたデータがさらに最新のものである場合にのみ置き換えられてもよい。例えば、DATAメッセージは、メッセージ送信側でノード210と対応するエントリ144の内容を含んでもよく、エントリ144は、受信されたエントリ144が存在するエントリ144よりもさらに最新であるかどうかを確かめるために、メッセージ受信側で対応するタイムスタンプ情報と比較してもよい、タイムスタンプ情報を含んでもよい。最新である場合、受信されたエントリ144は、存在するエントリ144を置き換えてもよい。
図21の一般的な同期プロトコルのバリエーションは可能であり、考えられる。例えば、一定の長さを有するパケットを使用して行われるキーマップインスタンス間の伝達の実施形態において、回線容量使用は、特定のノード210と対応する1つのFINGERPRINTメッセージというよりはむしろ、1パケット内の複数のノード210のための複数のFINGERPRINTメッセージを伝えることによって、改善されてもよい。当該のパケットを受け取るインスタンスは、送信側とさらにメッセージを交換する必要なく、送信者と一致しないインデックス200の特定の1つを速やかに見分けることが出来てもよい。例えば、第1のFINGERPRINTメッセージが一致しない場合、受信側は、パケットの送信側に対するREQUEST、FILTER、又は他のメッセージを発行する前に、パケット内で、他のFINGERPRINTメッセージを考慮してもよい。そうすることで、受信者は、相違をデータの特定の部分に絞ることが出来、すでに同期化されているデータ構造の他の部分に関するメッセージを交換するための不必要なネットワークトラフィックを削減してもよい。
概して、アンチエントロピープロトコル及び/又は更新伝播プロトコルを使用するキーマップインスタンス調整の実行のための上記に記載されるいずれかの方法、又は技術は、インスタンス内のキーマップインスタンス140、又は個々のホスト400のレベルで操作されるように構成されるキーマップコーディネータ過程によって、実装されてもよいことを意図する。非平衡データ構造のためのアンチエントロピープロトコルを実装するための、前述の方法及び技術の多くの変更は可能であり、企図され、上記の論考は、限定的というよりは実例であることが意図される。例えば、他と頻繁に伝達する一部のエンティティを介するプロトコルの一般的なクラス、ネットワーク全体を通じて情報を分散するために無作為に選択されたエンティティは、ゴシップ系プロトコルとして言及されてもよく、ゴシップ系のプロトコルの他の技術、又は態様は、キーマップインスタンス140間のアンチエントロピープロトコルの使用に用いられてもよい。様々な実施形態において、上記に記載される実例同期化メッセージ(又は、他の適切なメッセージ)は、異なる特徴を有する同期プロトコルをもたらす異なる様式に組み合わされてもよい。
さらに、図17〜22に関し、上記に記載される層的インデックス化データ構造及び同期化技術がキーマップインスタンス140内で使用するための効果的なデータ構造の実装の内容で論考されてきたが、当該データ構造及び同期化技術は、速やかなアクセスのためにインデックス化されてもよい、大量のデータのあらゆるアプリケーションに用いられてもよいことを意図したものである。当該のアプリケーションは、図2のシステムのような、オブジェクトストレージシステムを必ずしも含む必要はないが、データインデックス化が適用できる、データ系システム、検索システム、又はあらゆる他のアプリケーションを含んでもよい。
様々な実施形態において、本願に説明された事例の無作為な作成、又は選択のいかなる種類の実装は、乱数、又は自称発生のためのいかなる適切なアルゴリズム、又は技術を用いてもよいことを留意したい。多くの場合、無作為の方法を実装するコンピュータ技術は、純粋に無作為な結果を生まず、むしろ擬似乱数の結果を生む場合がある。例えば、擬似乱数アルゴリズムは、確率的に無作為な結果を作成するように構成される決定論的な過程を特定してもよい。本願で使用されるように、「無作為」又は「実質的に無作為」データの作成は、純粋に無作為データ供給源のみならず、あらゆる適切な擬似乱数コンピュータ技術を含むことを意図するものである。
ストレージサービスコンポーネント検出及び管理
ストレージサービスシステムの大規模な、極めて分散された実装において、システム全体にわたって分散された図2に示す多くの様々なシステムコンポーネントがあってもよい。例えば、ビットストアノード160、コーディネータ120、及びキーマップインスタンス140の数百、又は数千の例がある場合がある。このような規模の分散型システムの状態を管理することは、実用的な課題をもたらす。例えば、特定のシステムコンポーネントの異なるインスタンスは、計画されたメンテナンス、コンポーネントに依存するコンピュータ供給源の障害、機能に反してコンポーネントを孤立させる伝達障害、又は他の理由のため、いかなる時に稼動しない場合がある。さらに、新しい、又は以前のコンポーネントの非稼動は、任意の、又は予想不可能な時にある事例において稼動に戻る場合がある。
一実施形態において、発見、障害、及び検出デーモン(DFDD)110は、ストレージサービスシステムの様々な関連するコンポーネントの状態をそれぞれ監視するように構成され、当該の状態に関して互いに伝達しあうように構成され、当該のクライアントが、キーマップ、又はビットストア操作などの、システム操作を実行するために使用されてもよい、利用可能なシステムコンポーネントを識別してもよいことを通じるインターフェースでDFDDクライアントアプリケーションを提供するように設定されてもよい。概して、DFDD110は、他のコンポーネントに代わって、ストレージサービスシステムコンポーネントの現在の状態の一様にアクセス可能なビューを提供するように設定されてもよい。すなわち、他の、類似しないコンポーネントとの状態情報の直接の伝達のために構成された、複数の異なるインターフェースを有するストレージサービスシステムの様々なコンポーネントを構成するよりはむしろ、当該の情報を提供し、それに依存する各コンポーネントは、基本的なDFDDインターフェースを介してDFDD110のインスタンスと伝達するように設定されてもよい。一部の実施形態において、DFDD110は、オペレーティングシステムによって管理される環境内で行われるように構成される、デーモン過程として実装されてもよい。しかしながら、他の実施形態において、DFDD110は、オペレーティングシステム、又は他のコンポーネントに依存、又は従属する必要なく、本願に記載される機能性を実装するように構成される、独立した、又は自立したハードウェア、又はソフトウェア媒体として、実装されてもよい。
一般的に言えば、DFDD110のインスタンスによって発見、及び監視されるように構成される、ストレージサービスシステムコンポーネントの各インスタンスは、アプリケーションインスタンスといわれることもある。例えば、操作状態、又は所定のビットストアノード160のヘルス状態は、所定のビットストアノード160によって実行されるために構成されるSNMコントローラ161のインスタンスによって示されてもよい。したがって、SNMコントローラ161は、ビットストアアプリケーションインスタンスと対応してもよい。同様に、キーマップインスタンス140の操作状態は、キーマップインスタンス内の1つ以上のホスト400で実行されるために構成されるキーマップマネージャーのインスタンスによって示されてもよい。各キーマップマネージャーインスタンスは、キーマップアプリケーションインスタンスと対応してもよい。他の種類のアプリケーションインスタンスも可能であり、考えられる。例えば、一実施形態において、1つ以上のストレージサービスシステムコンポーネントが展開されたものを介する各コンピュータシステムは、プロセッサ、メモリ、ディスク、入力/出力(I/O)、又は他のシステム供給源の使用などの、システム特定の操作状態の詳細を検出し、報告するように構成される、ホスト監視アプリケーションインスタンスを含んでもよい。一部の実施形態において、DFDD110の各インスタンスは、それ自体アプリケーションインスタンスとして設定されてもよい。すなわち、DFDDインスタンスは、他のアプリケーションインスタンスの状態に加えて、それ自体、操作状態を監視するように設定されてもよい。
ストレージサービスシステム内で、アプリケーションインスタンスは、一般的にアプリケーション名で識別され、それぞれのアプリケーションインスタンス識別子(ID)によって固有に識別されてもよい。例えば、特定のアプリケーション名は、「キーマップ−マネージャー」、「ビットストア−マネージャー」、「ホスト−マネージャー」、又は別の適切な名前などの、アプリケーションインスタンスの包括的な種類を識別する文字列を含んでもよいが、アプリケーションインスタンスIDは、アプリケーション名前領域内で特定のインスタンスを固有に識別する文字列を含んでもよい。一部の実施形態において、アプリケーションインスタンスIDは、「キーマップ−マネージャー−4AB8D945」などの、アプリケーション名を明示的に含んでもよい。アプリケーションインスタンスIDのための他の適切な形式も用いられてもよい。一実施形態において、DFDD110の所定のインスタンスは、それぞれの状況情報を有する、多くのアプリケーションインスタンス(例えば、名前及びインスタンスIDを介して)を関連させるように設定されてもよい。例えば、図23に示す実施形態において、DFDD110は、それぞれがアプリケーション名112及びインスタンスID113とインスタンス状況情報114を結びつける、多くのエントリ111を含む。一部の実施形態においてDFDD110は、状態情報114と、所定のアプリケーション名112及びインスタンスID113との異なる種類の関連づけを反映するための1つ以上のテーブルを用いてもよいが、他の実施形態において、DFDD110は、ツリー、上記に記載されるような非平衡インデックス、又は所定のアプリケーションと対応する状態情報間の関連付けを暗示するあらゆる他の適切な種類のデータ構造を用いてもよい。
一部の実施形態において、アプリケーションインスタンスIDは、粒度の任意のレベルのそれ自体の名前領域を含んでもよいことに留意されたい。例えば、一実施形態において、所定のキーマップアプリケーションインスタンスIDは、<マップ名>/<インスタンス>/<エンドポイント>形式の場合がある。<マップ名>という用語は、所定のキーマップ展開と概して対応してもよい、キーエントリ関連付けの特定のキーマップ辞書を識別してもよい。(キーマップアプリケーションインスタンスが、異なるキーマップ展開をDFDD110の同一のインスタンス内で管理することは可能である。)<インスタンス>という用語は、固有の文字列によって、キーマップインスタンス140内の特定のホスト400を識別してもよい。<エンドポイント>という用語は、識別されたホスト400(例えば、特異的な過程)で実行する多くの機能的に同一のキーマップアプリケーションの1つを識別してもよい。アプリケーションインスタンスID内の他の複雑な名前領域は、可能であり、考えられる。
DFDD110によってアプリケーションインスタンスと関連する状態情報は、様々な異なる種類の情報を含んでもよい。一実施形態において、DFDD110は、DFDD110によって管理されるすべての種類のアプリケーションインスタンスに共通であってもよい、広域状態情報である、状態情報114内に保存されるように設定されてもよい。例えば、さらに以下に詳しく説明するように、一部の実施形態において、DFDD110は、状態の1組の間の考えられる移行のみならず、アプリケーションインスタンスの広域操作状況(又は、単に広域状態)の1組を定義する、広域操作状態マシンを実装してもよい。このような実施形態において、DFDD110によって管理された各アプリケーションインスタンスは、いかなる時に、広域状態の組の特定の1つと関連してもよく、所定のアプリケーションインスタンスのための広域状態は、アプリケーションインスタンスのマシン、及び動作に従い、時間と共に変化してもよい。
アプリケーションインスタンスの広く異なる種類に共通してもよい、広域状態情報に加えて、一部の実施形態において、状態情報114は、特定のアプリケーションインスタンス又はインスタンスの種類に特定されてもよく、又はカスタマイズされる場合がある操作状態情報を反映してもよい。例えば、アプリケーションインスタンスが、特定のビットストアノード160のビットストアマネージャーと対応する場合、その状態情報114は、その特定のノードで利用可能なストレージリソースの量、これらの供給源の該種類(例えば、高性能、低性能など)、又はビットストアノードの該内容に特有である、あらゆる他の関連する状態情報を含んでもよい。同様に、特定のキーマップインスタンス140のキーマップマネージャーに対応するアプリケーションインスタンスについては、その状態情報は、特定のキーマップインスタンス、使用される、又は利用可能なキーマップストレージリソース、又は、他の関連するキーマップ状態情報によって管理されるエントリ144の数についての情報を含んでもよい。一部の実施形態において、どのアプリケーションインスタンス特有の状態情報を対応するDFDDエントリ111内に含むかという選択は、DFDDクライアントの要求に従い決定されてもよい。例えば、いくつかの選択肢から特定のビットストア又はキーマップアプリケーションを選択することにおいて、コーディネータ120又はノードピッカー130を援助するために使用できてもよい状態情報は、これらのアプリケーションインスタンスのDFDDエントリ111内に含まれてもよい。
一部の実施形態において、アプリケーションインスタンスの状態情報114は、どのようにDFDDクライアントがインスタンスへアクセスするかについての情報も含んでもよい。例えば、状態情報114は、DFDDクライアントが、アプリケーションインスタンスとの連絡を通じて確立してもよい、インターネットプロトコル(IP)アドレス及びポート番号を含んでもよい。一部のアプリケーションインスタンスは、ウェブサービスインターフェース、出版/購読型インターフェース、又は他の適切なインターフェースなどの他の種類のインターフェースをサポートしてもよい。このような実施形態において、出版/購読チャネルを購読するための、又はアプリケーションインスタンスとの通信を確立するために必要な別の種類の処置を行うために、状態情報114はURL、又はDFDDクライアントがウェブサービスコールを実行するために必要な他の情報を含んでもよい。一部の実施形態において、アプリケーションインスタンスアクセス情報に加えて、又はその代わりに、状態情報114は、ストレージサービスシステム内に物理的に位置付けられている場所についての情報を含んでもよい。例えば、状態情報114は、特定のアプリケーションインスタンスが対応する、データセンタ300、又は領域310の識別子を含んでもよい。
上記に記載されるように、一部の実施形態において、DFDD110は、所定のアプリケーションインスタンスが通常に操作しているか、したがって、使用できるか、又は異常な状態にあるかどうかを一般用語で示してもよい、個々のアプリケーションインスタンスのための広域状態情報を維持してもよい。一実施形態において、DFDD110のインスタンスによって監視するように構成された各アプリケーションインスタンスは、(必ずしもではないが)多くの場合、数秒、又は数分などの通常の間隔で、DFDD110へその状態を報告するように設定されてもよい。このような報告は「ハートビート」と言われることもある。ハートビート報告は、あらゆる適切なプロトコルに従い(例えば、TCP/IPメッセージとして、ウェブサービスコールとして、又は他の基準、又は所有者メッセージプロトコルに従って)通信されてもよく、情報の内容によって様々であってもよい。最小限の例として、所定のアプリケーションインスタンスは、所定のインスタンスに対応するアプリケーション名及びアプリケーションインスタンスIDを単に含むDFDD110に対するハートビートを提出してもよい。他の事例において、所定のアプリケーションインスタンスは、ローカル供給源利用の特定の状態などの、ハートビートにおける付加的な状態情報を含んでもよい。一部の実施形態において、アプリケーションインスタンスは、ハートビートを送信する前に、それ自体の機能状態を確認するために、あるレベルの自己診断、又は自己照合を実行するように設定されてもよいが、他の実施形態において、アプリケーションインスタンスは、いかなる自己評価に依存することなく、ハートビートを送信してもよい。
一般的に言えば、予想通りに、アプリケーションインスタンスが、DFDD110へハートビートを送信している場合、それは通常に操作しているという理にかなった可能性がある。ハートビートがある期間にわたって中断されなければならない場合、アプリケーションインスタンスに異常があるという理にかなった可能性がある。図24は、ハートビートアクティビティ及び/又は他のパラメータの機能として、各アプリケーションインスタンスのためにDFDD110によって維持されてもよい広域状態マシンの一実施形態を示す。図示した実施形態において、新規のアプリケーションインスタンスは、NEW状態でオンライン化され、例えば、間もなく操作を開始し、DFDD110のインスタンスの存在を知らせ、アプリケーション名、アプリケーションインスタンスID、及び対応するエントリ111を使用するために、DFDD110に必要なあらゆる他の情報を提供する。新規のアプリケーションインスタンスが安定し、通常の操作を開始すると、OK状態に入る。様々な実施形態において、NEWからOK状態への移行は、時間の機能(例えば、アプリケーションインスタンスの種類に基づいた初期設定時間)、アプリケーションインスタンス自己報告、管理者介入、又はこれら、又は他の要素の組み合せであってもよい。
図示した実施形態において、インスタンスのDFDD110への最後のハートビートが障害しきい値Tfail未満であるため、アプリケーションインスタンスは、時間が経過した間、OK状態を維持してもよい。例えば、DFDD110は、対応するインスタンスから受信した各ハートビートに増加された各アプリケーションインスタンスのためのカウンタを維持してもよく、Tfailが経過する前にその値が変更するかどうかを確かめるためにそれぞれのカウンタ(例えば、カウントダウン時間)を監視してもよい。一部の実施形態において、以下に説明するように、当該の状態のなかで相違がある場合があるが、OK(及び、あるいはNEW)以外の広域状態は、異常な操作状態、又は障害状態として概して言及される場合がある。
アプリケーションインスタンスのための最後のハートビートから時間Tfailが経過した場合、その広域状態は、INCOMMUNICADOへ移行してもよい。図示した実施形態において、INCOMMUNICADOは、アプリケーションインスタンスに異常があるが、永久に障害があることを断定的に決定されていないことを示す過渡状態として機能してもよい。例えば、アプリケーションインスタンスは、一時的に行き詰まる、又はハングアップする場合があり、DFDD110へのハートビートメッセージは、遅延される、又は失われる場合があり、又は以下にさらに詳しく説明するように、DFDD110の一例は、アプリケーションインスタンスの現在の状態に関してDFDD110の別のインスタンスと同期化しない場合がある。ハートビートがINCOMMUNICADO状態のアプリケーションインスタンスから受信される場合、インスタンスはOK状態へ逆移行してもよい。一部の実施形態において、DFDDクライアントは、自身のリスクでINCOMMUNICADO状態にあるアプリケーションインスタンスを使用することを選んでもよい。
アプリケーションインスタンスが、INCOMMUNICADO状態から自然に回復しない場合、インスタンスに影響しているさらに深刻な問題がある場合がある。図示した実施形態において、2つの予想される障害のシナリオが生じる場合がある。FAIL状態によって示すように、個々のアプリケーションインスタンスは、例えば、個々のインスタンスをホストしている根本を成すコンピュータ供給源の障害によって、分離に失敗する場合がある。あるいは、アプリケーションインスタンスは、NETWORK SPLIT状態によって示すように、インスタンスとDFDD110との間のネットワーク通信の喪失のために機能しない場合がある。例えば、アプリケーションインスタンスは、互いにストレージサービスシステムの部分を隔絶する通信障害のため、他ではなく、DFDD110の一部のインスタンスに対して操作可能であり、アクセス可能であってもよい。
所定のアプリケーションインスタンス障害が隔絶されている、又はネットワークスプリットのためあるかどうかを確実に決定するのは困難である場合がある。一部の実施形態において、DFDD110は、アプリケーションインスタンスが、INCOMMUNICADO状態からFAIL状態、又はNETWORK SPLIT状態へ移行すべきかどうかの決定をするための利用可能な情報の様々な種類を考慮にいれる、それぞれ発見的な基準Hfail及びHnetsplitを用いてもよい。例えば、該基準は、所定のアプリケーションインスタンスが、別の障害状態に移行する前に、少なくともしきい値量の時間TheuristicにわたってINCOMMUNICADO状態であることを必要としてもよい。さらに、該基準は、所定のアプリケーションインスタンスとしての、同一の領域310、又はデータセンタ300と、供給源を共有する、又はそれに属する他のアプリケーションインスタンスもINCOMMUNICADO、FAIL又はNETWORK SPLIT状態であるかどうかを考慮に入れてもよい。例えば、所定のアプリケーションインスタンスとしての同一のIPアドレス上に、又は同一の領域310、又はデータセンタ300内の別のアドレス上に位置する別のアプリケーションインスタンスがOKである場合、所定のアプリケーションインスタンスの障害は隔絶されている可能性がある場合がある。それに反して、複数のアプリケーションインスタンスがOKではない場合、とりわけ、アプリケーションインスタンス状態が地理、又はネットワークトポロジーに従いクラスタ化された場合に、ネットワークスプリットのシナリオである可能性がある場合がある。一部の実施形態において、DFDD110は、障害の本質を決定するための消極的に受信した状態情報を使用することに加えて、障害の疑いのあるアプリケーションインスタンスを問い合わせるように設定されてもよい。一部の実施形態において、発見的な基準は、アプリケーションインスタンスが、あるしきい値の可能性(例えば、50%可能性より高い、90%可能性より高い、など)に従い、確率的に機能不全の可能性があるかどうかを決定するように設定されてもよい。
発見的な基準によって、機能不全のアプリケーションインスタンスは、FAIL状態、又はNETWORK SPLIT状態のいずれかに移行してもよい。一部の実施形態において、ハートビートが受信された場合、これらの状態のいずれかからOK状態に戻る移行をしてもよいが、他の実施形態において、これらの状態のいずれか、又はその両方は回復可能であってもよい。INCOMMUNICADO状態にあるアプリケーションインスタンスは、障害の可能性に機能的、又は回復可能であることが想定される場合があるが、FAIL又はNETWORK SPLIT状態にあるアプリケーションインスタンスは、機能不全であることが予想される場合がある(一部の実施形態において、回復の可能性を有する)。概して、DFDDクライアントは、これらの障害状態のいずれにおいても、これらのアプリケーションインスタンスを選択することを避けてもよい。一部の実施形態において、DFDD110は、これらの障害状態のいずれにおいてのアプリケーションインスタンスについての情報を、クライアントから隠すように設定されてもよい。
図示した実施形態において、アプリケーションインスタンスは、FORGOTTEN状態に進める前に、それぞれTclean及びTrecover期間に、FAIL又はNETWORK SPLIT状態にとどまってもよい。例えば、FAILのある事例において、機能不全のアプリケーションインスタンスと関連する供給源は、回復、又は分析の目的のために一定期間保存されてもよい。可能な場合、当該の供給源(例えば、ビットストアノード160のストレージリソース)は、新規のアプリケーションインスタンスとして再展開するために初期化されてもよい。NETWORK SPLIT状態のある事例において、機能不全のアプリケーションインスタンスのないシステム操作を続けるかどうかに関連する決定をする必要がある場合があり、機能不全がある場合、どのような回復処置がとられるべきかを決定する必要がある場合がある(例えば、残存するアプリケーションインスタンスの間でオブジェクトの複製を再生成することなど)。一部の実施形態において、機能不全のアプリケーションインスタンスは、当該の回復処置が完了するまで、FORGOTTEN状態を通過しなくてもよい。
アプリケーションインスタンスのFORGOTTEN状態は、DFDD110内で明確に表されなくてもよい。むしろ、一部の実施形態において、DFDD110からのDFDDエントリ111などの、アプリケーションインスタンスの存在する状態情報の削除によってマークされてもよい。一般に、ある例において、アプリケーションの新規のインスタンスは、NEW状態を介してフォーガットンインスタンスへ割り当てられた同一の供給源を使用して初期化されてもよいが、アプリケーションインスタンスは、FORGOTTEN状態から回復しなくてもよい。一部の実施形態において、FORGOTTEN状態にある間に、アプリケーションインスタンスが自然にハートビートの送信を再開しなければならない場合、DFDD110は、インスタンスが忘れられた(例えば、有効なエントリ111ともはや対応しない)ことを認識してもよく、インスタンスに操作を中止する、又はリセットする、又はそれ自体を再初期化することを指示してもよい。
一部の実施形態において、広域状態の移行を考慮に入れる経験則及び移行時間のパラメータは、アプリケーションインスタンスの異なる種類に対して異なってもよく、これらのパラメータの一部、あるいはすべては、DFDDクライアントによって調整されてもよいことに留意されたい。また、DFDDクライアントは、概してDFDD110のインスタンスを所定のアプリケーションインスタンスの現在の広域状態を確かめるために問い合わせるが、一部の実施形態において、DFDD110は、出版/購読状態の変更通知モデルをサポートしてもよい。例えば、DFDDクライアントは、クライアントが、特定のアプリケーションインスタンス、又はインスタンスの組の広域状態変更のすべての、又はある種の通知を受けたいということを、購読過程を介してDFDD110へ通知してもよい。このような状態変更を検出する際に、DFDD110は、購読するDFDDクライアントに対して変更のメッセージ表示を伝えてもよい。
しばしば、アプリケーションインスタンスは、アプリケーションインスタンスに最も近いDFDD110のインスタンスへ、ハートビート情報を送信するように設定されてもよい。例えば、一部の実施形態において、アプリケーションインスタンスが、単にホストのローカルIPアドレスを参照すること及びアプリケーションインスタンスDFDD通信のために用意される既知のIPポートを使用することによって、DFDD110のローカルインスタンスへ直ちにアクセスできるように、DFDD110のインスタンスは、1つ以上の他のアプリケーションインスタンスをホストするように構成される各コンピュータシステムで提供されることがある。しかしながら、アプリケーションインスタンスが、他ではなく、DFDD110の一部のインスタンスへその状態を報告し、その状態を同期化するためのある取り組みがない場合、DFDD110の展開されたインスタンスは不一致になってもよい。
一部の実施形態において、DFDD110のインスタンス間の不一致は、ゴシップ系のプロトコルなどのキーマップインスタンス140に関する上記に記載されるものと類似の同期プロトコルを使用して対処されてもよい。しかしながら、多くの事例において、DFDD110のインスタンスによって集合的に管理されるDFDDエントリ111の数は、キーマップインスタンス140によって管理されるキーマップエントリ144の数よりも実質的に少なくてもよい。この事例の場合、簡素化された調整プロトコルがDFDD110のインスタンスを同期化するために使用されてもよい。このようなゴシップ系のプロトコルの一実施形態の操作の方法は、図25に示す。図示した実施形態において、開始しているキーマップインスタンスとしても言及される、DFDD110の1つのインスタンスであるブロック2500で始まる操作は、同期化のためにDFDD110の別のピアインスタンスをランダムに選択する。一部の実施形態において、開始するDFDDインスタンスは、開始しているDFDDインスタンスの状態情報に従い、現在機能不全状態にある(例えば、NETWORK SPLIT)これらのDFDDインスタンスの中からピアDFDDインスタンスを時には故意に選択してもよい。開始しているDFDDインスタンスが明らかに機能不全であるピアインスタンスとの連絡及び同期化に成功する場合、明らかな機能不全からの回復が容易になってもよい。
開始しているインスタンスは、そのエントリ111に反映されるアプリケーションインスタンスの識別する情報のハッシュ値を計算してもよい(例えば、アプリケーションインスタンス名及びID、及びおそらくエンドポイント、又は他の識別する情報をハッシュすることによって)(ブロック2502)。ハッシュ値は、例えば、MD5アルゴリズムなどのあらゆる適切なハッシュアルゴリズムに従い決定されてもよい。開始しているインスタンスは、現在のアプリケーションインスタンス状態情報の保存されたリストと共に、ピアインスタンスへ、計算されたハッシュ値を伝えてもよい(例えば、ハートビートカウント、広域状態情報及び/又は状態情報114に含まれるあらゆる他の情報)(ブロック2504)。状態情報のリストは、開始しているインスタンス及びピアインスタンスの両方に一貫したリストを作成する、あらゆる基準に従い保存されてもよい。例えば、該リストは、アプリケーションインスタンス名及び/又はIDに従い保存されてもよい。
上記に記載されるように、一部の実施形態において、アプリケーションインスタンスと関連する状態情報は、ハートビートメッセージ内に含まれるハートビートカウントから派生してもよいことに留意されたい。同様に、一部の実施形態において、DFDDインスタンスは、アプリケーションインスタンスのためのハートビートカウント情報を交換してもよく、他のDFDDインスタンスから直接に状態情報を受け取るよりはむしろ、受信したハートビートカウント情報からアプリケーションインスタンスの状態情報を派生してもよい。したがって、一実施形態において、所定のDFDDインスタンスは、その情報が特定のアプリケーションインスタンスから直接に受信されたか、又は同期プロトコルを介して別のDFDDインスタンスから非直接的に受信されたかに関わらず、受信されたハートビートカウント情報に基づいて、特定のアプリケーションインスタンスの状態を(例えば、図24の状態マシンに従い)更新するように設定されてもよい。このような実施形態において、DFDDインスタンス間の状態情報を操作するアプリケーションインスタンスの同期化は、同期プロトコルの操作を簡略化してもよいアプリケーションインスタンスの特定の広域操作状態(例えば、OK、INCOMMUNICADOなど)を、直接交換することなく、ハートビート情報の同期化を伴ってもよい。
状態情報のハッシュ値及びリストの受信に応じて、ピアインスタンスは、開始しているインスタンスによって行われるものと一致する方法で、それ自体のアプリケーションインスタンスの識別する情報のハッシュ値を計算し(ブロック2506)、結果として得られたハッシュ値と、開始しているインスタンスから受信されたハッシュ値とを比較する(ブロック2508)。2つの値が一致する場合、開始しているインスタンスとピアインスタンスの両方が、アプリケーションインスタンスの同一の組と一致するエントリ111を有することが高確率である。ピアインスタンスは、状態情報の受信したリストを走査し、適切であれば受信したリストからそのエントリ111を更新する(ブロック2510)。例えば、受信したリストのハートビートカウント、又はタイムスタンプが、ピアエントリ111の1つに保存されたものよりも大きい、又はより最近である場合、該ピアは、受信されたリストの状態情報からエントリ111を更新してもよい。一部の実施形態において、ピアインスタンスは、開始しているインスタンスからのリスト受信と同時か、それに続いてのいずれかで、同様の処理のための開始しているインスタンスへ、状態情報の独自のリストを送り返してもよい。
ハッシュ値が一致しない場合、少なくとも1つのエントリ111で、ピア及び開始しているインスタンスに既知のアプリケーションインスタンスの組が異なることがあり得る。同様に、ピアインスタンスは、開始しているインスタンスに既知のエントリ111の完全なダンプを要求してもよい(これらエントリ111の状態情報114にちょうど対立する形で)(ブロック2512)。ピアインスタンスは、欠けていたあらゆるエントリ111を加え、残存するエントリ111の状態を同期化してもよい(ブロック2514)。上記のように、一部の実施形態において、ピアインスタンスは、開始しているインスタンスからのダンプ受信と同時か、それに続いてのいずれかで、開始しているインスタンスへそのエントリ111の完全なダンプを送り返してもよい。
一部の実施形態において、システム内に存在するDFDD110の各インスタンスは、一定間隔で、説明した同期プロトコル、又は本願の適切な改良型を繰り返し実行するように設定されてもよいことに考慮されたい。例えば、プロトコルは、およそ定期的に1秒間隔、又はあらゆる他の適切な間隔で、DFDD110のインスタンスによって実行されてもよい。さらに、一部の実施形態において、DFDD110のインスタンスは、およそ同一の間隔で同期プロトコルを実行してもよいが、その時々で、DFDD110のインスタンスの部分のみがプロトコルを開始する場合がある、異なる相は、互いに関連してオフセットであってもよい。
一部の実施形態において、DFDD110のインスタンスは、単にストレージサービスシステム内に定義されているアプリケーションインスタンスではなく、あらゆる分散型システム内のあらゆる種類のアプリケーションインスタンスの状態情報を調整、及び通信する操作に使用される場合があることに留意されたい。また、一部の実施形態において、異なるグループのDFDDインスタンスは、異なるアプリケーションインスタンスの状態情報を管理してもよい。このような一部の実施形態において、グループは、同一グループのメンバーであり、DFDD同期化の条件として、識別子が一致することを要求するDFDD110のインスタンスに共通識別子を割り当てることによって、互いを識別してもよい。例えば、ストレージサービスシステムのアプリケーションインスタンスを管理するDFDDインスタンスは、ストレージサービスシステムと関連していない、その他のアプリケーションインスタンスの状態を管理するように設定されているDFDDインスタンスと異なる識別子を有してもよく、同一識別子を有するそれらのDFDDインスタンスのみが、図25の同期プロトコルに従い、互いに情報を交換してもよい。
一部の実施形態において、DFDDグループ識別子は、同一システム内に存在するアプリケーションインスタンスの異なる設定を識別するために使用されてもよい。例えば、「製品」識別子に対応するDFDD110のインスタンスのある組は、ストレージサービスシステム、又は別の分散型システムの製品バージョンを管理するために配置されてもよく、製品システムに対応するアプリケーションインスタンスの組を示す場合があり、一方、別の「テスト」識別子に対応するDFDD110のインスタンスの組は、アプリケーションインスタンス及び状態の異なる組に対応するシステムのテストバージョンを管理するために配置されてもよい。一部の例では、いずれかのシステムバージョンに対応するアプリケーションインスタンス及び/又はDFDDインスタンスは、同一の基礎システムリソース上(例えば、同一コンピュータシステム上)で実行されてもよいが、それらの異なるDFDDグループ識別子の長所によって、互いに透過的に行われる場合があることに留意されたい。例えば、図25に示されるプロトコルのような同期プロトコルの実行中に、DFDDインスタンスは、同一グループのメンバーであるかどうかを最初に判断し(例えば、グループ識別子を交換することによって)、この判断を条件とする後続の同期化ステップを実行し、従ってグループ間のアプリケーションインスタンスの状態情報の分離を促進してもよい。
前述のDFDD110のインスタンスを同期化するためのゴシップ系プロトコルは、ストレージサービスシステム全域に渡る既存のアプリケーションインスタンスの動作状態の配布を助長するだけでなく、その他のシステムコンポーネントによる新しいアプリケーションインスタンスの発見も促進する場合があることに留意されたい。例えば、一度新しいアプリケーションインスタンスが初期化され、DFDD110のインスタンスと連絡を取る(例えば、システム上で局所的に動作しているインスタンス上で新しいアプリケーションインスタンスが初期化された)と、新しいインスタンスに対応する新しいエントリ111が作成されてもよい。新しいエントリ111が作成されたDFDD110のインスタンスが、DFDD110の様々なその他のインスタンスでその状態を同期化する際、新しいエントリ111は、システム全体に伝播されてもよい。様々な目的(例えば、新しいオブジェクト30を保存する、又はキーマップエントリ140を更新する)のためのアプリケーションインスタンスを識別するために、DFDD110に問い合わせるDFDDクライアントは、あらゆる既存のものばかりでなく、新しいアプリケーションインスタンスに関する状態情報を提供されてもよい。
上記に記載される実施例において、障害検出及び発見に関係するアプリケーションインスタンスの状態変更は、アプリケーションインスタンスの一部又はこれらのインスタンスを参照するDFDDクライアントの干渉なしに、システム全体に伝播されてもよい。つまり、所定のアプリケーションインスタンスは、どのようにハートビート情報をDFDD110の1つのインスタンスに伝達するかのみを知っていればよい。システム内のDFDD110のすべてのインスタンス、その他のアプリケーションインスタンス、又は当該の所定のアプリケーションインスタンスを起動する様々なクライアントの知識を有する必要はない。同様に、DFDDクライアントは、システム内のその他のクライアント、又はすべてのアプリケーションあるいはDFDDインスタンスの独立した知識を有する必要はなく、クライアントは、システム内で使用可能なリソースの状態に関する合理的に最新の情報を獲得するために情報をやり取りする、DFDD110のインスタンスに依存してもよい。その他のアプリケーションインスタンスを要求せずに、アプリケーションインスタンスの状態を変更すること、又はクライアントにそのような変更を即座に知らせることを可能にすることより、DFDD110は、ストレージサービスシステムの拡張性を促進してもよい。
ストレージクラス
ストレージサービスシステムの一部の実施形態において、オブジェクト30は、それらの複製レベル、領域310に渡る複製の分散、複製が保存されているストレージリソースの種類、及び/又はその他のシステム機能あるいはポリシーに関して一様に取り扱われる場合がある。例えば、システムは、同一回数だけ、同一番号の異なる領域310に、各オブジェクト30を複製することを試みる場合がある。しかし、異なるクライアント50は、異なるオブジェクト30に対して、異なるストレージ要件を有してもよい。例えば、1つのクライアント50は、初期ストレージポリシーが提供し得る信頼性の程度よりも高い信頼性で特定のオブジェクト30を保存する(例えば、数及び複製の分散に関して)ことを望む一方、別のクライアント50は初期設定レベルの信頼性でさえ必要としない場合がある。あるいは、クライアント50は、可能な信頼性の費用で、オブジェクトの複製が分散する領域310の数を制限することによって、オブジェクトの書き込み性能を向上することを希望する場合がある。
同様に、一実施形態において、図2のようなストレージサービスシステムは、オブジェクト30のストレージクラスをサポートするように設定されてもよい。一般的にいうと、所定のオブジェクト30のストレージクラスは、当該所定のオブジェクト30に関するサービスレベル合意書(SLA)に影響を与えるあらゆるストレージサービスシステム機能又は特徴の組を指定してもよい。サービスレベル合意書は、一般的に、クライアントから受け取る、ある対価(例えば、料金又はその他の対価の適切な種類)と引き換えに、サービスプロバイダがクライアントに提供するサービスに対する保証又は期待を反映してもよい。例えば、ストレージサービスシステムにより管理されるオブジェクト30のSLAは、様々なレベルのオブジェクトの信頼性、可用性、アクセス機能(例えば、待ち時間、バンド幅)、料金又はサービス率、あるいはクライアントのオブジェクト30とのやり取りにおける、あらゆるその他の測定可能な態様を指定してもよい。一部の実施形態において、ストレージクラスは、SLA特性(例えば、以下に記載されるオブジェクトの複製の数及び配布)の特定のサブセットのみを指定してもよいが、他の実施形態において、ストレージクラスは所定のオブジェクト30に関して、SLA合意のすべての定義された態様を網羅する総合的なSLAと直接対応してもよい。
一実施形態において、ストレージサービスシステムは、それぞれが特定の定義されたSLA特性を有する、ストレージクラスの固定組を定義する場合があり、クライアント50は、特定のオブジェクト30と特定のストレージクラスを関連付けることを選択してもよい。例えば、初期ストレージクラスは、オブジェクト30が少なくとも3回、少なくとも2つの異なる領域310に複製されるように指定してもよい。高信頼性ストレージクラスは、オブジェクト30が少なくとも5回、少なくとも3つの異なる領域310に複製されるように指定してもよい。予算ストレージクラスは、オブジェクト30の1つの複製が単一領域310に保存されるように指定してもよい。ローカルストレージクラスは、オブジェクト30が少なくとも3回、単一領域310に複製されるように指定してもよい。その他の実施形態において、ストレージサービスシステムは、その他の特徴を有するストレージクラスを定義する、又はクライアント50が、ストレージポリシー(例えば、ノードピッカー130に関して上記に記載されるような)の組み合せを指定することにより、所定のオブジェクト30のストレージクラスをカスタマイズすることを可能にする。
上記に記載されるように、SLA特性は、複製の数及び複製が分散されるべき領域の数を越えて拡張してもよい。一実施形態において、特定のストレージクラスのSLA特性は、特定のストレージクラスに関連するオブジェクト30に対する期待処理待ち時間の指示を含む場合がある。例えば、1つのストレージクラスは、所定の費用で低期待処理待ち時間を指定してもよいが、別のストレージクラスは、より低コストで高期待処理待ち時間を指定してもよい。異なるレベルの期待処理待ち時間が、様々な方法で実装されてもよい。例えば、所定のコーディネータ120の観点から、いくつかのノード160は、ノード160と所定のコーディネータ120の近接ノード160で利用可能なリソースのレベル及び種類、ノード160の処理負荷、又はその他の関連した要因により、他より短いアクセス待ち時間を示すことができる。従って、所定のストレージクラスにより指定されるその他のSLA特性によりもたらされる制約に従い、一部の実施形態において、コーディネータ120及び/又はノードピッカー130は、より短い期待処理待ち時間を指定するストレージクラスのオブジェクト30に対して、より短いアクセス待ち時間を示すノード160を選択するように設定されてもよい。その他の実施形態において、コーディネータ120は、オブジェクト30に関連するストレージクラスの期待処理待ち時間に従い、オブジェクト30に対するクライアントのアクセス要求の処理に優先順位をつけるように設定されてもよい。例えば、コーディネータ120は、低期待処理待ち時間を有するストレージクラスを支持し、処理にバイアスをかける一方、高期待処理待ち時間を有するストレージクラスの要求が、最終的には確実に完了するように設定されている、異なるキュー又はその他の処理制御、あるいはデータ構造を実装してもよい。
ストレージクラスは、オブジェクト30が最初にストレージサービスシステムに保存される時点で、クライアント50により指定されてもよい。あるいは、一部の実施形態において、クライアント50は、オブジェクト30がストレージサービスシステム内に存在する間のいずれの時点で、オブジェクト30に関するストレージクラスを変更してもよい。オブジェクト30が最初に保存される時点で、クライアント50によりストレージクラスが指定されていない場合、上記に記載されるような初期ストレージクラスが使用される。上記に記載されるように、一部の実施形態において、オブジェクト30のストレージクラスは、オブジェクト30のキーに関連するキーマップ記録148内に保存されてもよい。そのような実施形態において、コーディネータ120及び/又はレプリケータ180は、オブジェクト30の既存の複製を保存、複製、及び維持する際に、オブジェクト30のストレージクラスを考慮するように設定されてもよい。クライアント50は、異なるストレージクラスに関連するオブジェクト30に対して、異なる使用料を請求される場合があることが考慮される。例えば、高信頼性ストレージクラスは、一般的によりシステムリソースを使用する場合があり、一方、予算ストレージクラスは、より少ないリソースを使用してもよい。従って、所定のサイズのオブジェクト30において、クライアント50は、前者のストレージクラスを使用するオブジェクト30の保存に対してはより多く、後者に対してはより少なく請求される。
ストレージサービスシステム内のストレージクラスの動作方法の一実施形態を、図26に図示する。図示される実施形態において、動作は、クライアント50が特定のオブジェクト30と関連するストレージクラスを指定するブロック2600から始まる。続いて、ストレージクラスは、ストレージサービスシステム(ブロック2602)内において、特定のオブジェクト30と永続的に関連付けられる。例えば、ストレージクラスの指示は、クライアント50の代わりに、コーディネータ120によって、特定のオブジェクト30に関連するデータ構造内、例えばキーマップ記録148に保存される。オブジェクト30に関連するオブジェクトデータの状態は、そして指定されたストレージクラスの特性に従って設定される(ブロック2604)。例えば、ストレージクラスが、領域310内のオブジェクトの複製の数及び/又は分散に対して特定の要件を指定する場合、コーディネータ120及び/又はレプリケータ180は、特定のオブジェクト30に関連するストレージシステムの結果的に生じる状態が、ストレージクラスの要件を満たすように、必要な複製を作成及び分散するように動作する。一部の実施形態において、レプリケータ180は、オブジェクト30に対するストレージクラス要件が長い間確実に維持されるように設定されてもよい。例えば、複製が機能しなくなった場合、レプリケータ180は障害を検出し、さらなる複製を作成するように設定されてもよい。
一部の実施形態において、所定のストレージクラスにより指定されるストレージ特性は、ビットストアノード160を介して利用可能な異なる種類のストレージリソースの識別を含む場合がある。例えば、一部の実施形態において、いくつかのビットストアノード160は、他より高性能なストレージデバイスを含む、又はそれぞれのビットストアノード160は、高性能及び低性能なデバイスの組み合せを含む場合がある。そのような実施形態において、ストレージクラスは、そのクラスに関連するオブジェクト30に対して、どちらか一方のデバイスを使用するように指定してもよい。
動的複製
上記に記載されるように、一部の実施形態において、ノードピッカー130は、特定のオブジェクト30の複製が書き込まれるべき特定のビットストアノード160を識別する書き込みプランを作成するように設定されてもよい。そのような書き込みプランは、一度書き込みプランが、例えばコーディネータ120などによって導入されると、例えば特定のオブジェクト30に関する様々な書き込みポリシーが満たされるように作成されてもよい。例えば、書き込みプランにより指定されるノード160の数は、特定のオブジェクト30の複製の最小要求数、複製を分散する異なる領域310の最小数、又はあらゆるその他のストレージポリシー配慮に従い、決定されてもよい。
一部の実施形態において、ノードピッカー130は、ノード160の現行状態を考慮することなく、予測可能な手順に従い、ノード160を連続して選択する静的方法にて、書き込みプランを作成するように設定されてもよい。例えば、ノードピッカー130は、文字列複製のためにノード160の同一組を連続して選択する、又はラウンドロビン法で沢山のノード160を回転してもよい。しかし、大規模な実装において、ストレージサービスシステムは、様々な時点において大幅に異なる状態で動作し得る、多くのノード160を含む場合がある。例えば、いくつかのノード160は動作不能であり、その他は動作しているが要求アクティビティにより飽和状態であるか、又は使用可能なリソースが少ない、そしてその他は比較的遊休状態又は十分な使用可能リソースを有してもよい。
さらに、異なるノード160は、それぞれの任意のコーディネータ120又はノードピッカー130から、異なるレベルの通信費用を提示してもよい。例えば、コーディネータ120と同一の領域310又はデータセンタ300内に存在するノード160は、ローカルで応答時間の短いネットワーク接続を介して、アクセス可能であってもよい。一方、コーディネータ120とは異なる領域310又はデータセンタ300に存在するノード160は、ローカルノード160より大幅に長い待ち時間を示すことができる。さらに、一部の実施形態において、領域310間又はデータセンタ300間の通信は、ローカル通信とは異なる経済費用モデルの通信ネットワークにおいて行われる場合がある。例えば、領域310内での通信は、データ転送において、使用量に基づく請求のない、十分なバンド幅を有するプライベートローカルエリアネットワーク(LAN)において行われる場合がある。一方、データセンタ300間の通信は、専用通信設備、公共インターネット、プライベート広域ネットワーク(WAN)設備、又はその他の長距離通信ネットワークなどの設備において行われる場合がある。これらの設備は、一般的にLAN設備よりバンド幅に制限がある場合があり、一部の例において、LAN通信には適用されない利用費用(例えば、ピーク又は合計バンド幅使用量に基づく)が第三者により請求されてもよい。
様々なノード160の両方の動作状態及びこれらのノードの通信費用は、長期に渡り、変動してもよい。例えば、ある時点において動作している、又は遊休状態のノード160は、後に動作不能又は使用中になる場合があり、またその逆も同様である。同様に、待ち時間及び/又は経済費用などの通信費用は、ある期間において高くなり、その他では低くなる(例えば、ピーク時対ピーク時以外の利用量)場合がある。この変動のため、ある時点において効率的で低コストな書き込みプランは、大幅に効率が低く、高コストである、また別の時点(例えば、書き込みプランに指定されているノード160が使用中になる、通信が遅くなる、又は動作不能になる場合)において、実行不可能でさえある場合もある。
従って、一部の実施形態において、ノードピッカー130は、任意のオブジェクト30の書き込み複製に対する任意の書き込みプランを、ノード160の現行状態情報に従い、動的に決定するよう設定されてもよい。一般的に言うと、動的に決定される書き込みプランは、ノード160の監視可能な動的状態情報を考慮してもよい。すなわち、動的に決定される書き込みプランは、時間とともに変化するノードの状態情報の機能として作成されてもよい。従って、任意のオブジェクト30の動的に決定される書き込みプランは、ノード160の状態から独立して決定されてもよい、静的に作成される書き込みプランと比較し、ノード160の基礎状態情報により、時間とともにそれ自身を変化してもよい。
上記に記載されるように、多くの異なる種類の状態情報は、書き込みプランの動的作成に考慮されてもよい。一般的に、ノード160の状態情報は、任意のノード160に関する状態情報、及びそれを介して任意のノード160にアクセス可能な通信リソースに関する状態情報(例えば、ネットワークリソース)を含む場合がある。様々な実施形態において、任意のノード160に関する状態情報は、任意のノード160(又はノードに関連するアプリケーションインスタンス)がOKであるかどうか、隔離されているか、又は上記に記載されるようなDFDD110により示されるその他の動作状態などの、任意のノードの動作状態を含む場合がある。任意のノード160に関する状態情報は、動作状態情報より詳細な任意のノード160の行動を示す場合がある負荷状態情報も含む場合がある。例えば、様々な実施形態において、負荷状態情報は、任意のノード160に対応するプロセッサ利用レベル、メモリ利用レベル、ストレージデバイス利用レベル、ストレージデバイス入力/出力バンド幅利用レベル、又はネットワークインターフェースのバンド幅利用レベル、又はノード動作のいずれのその他の計測可能な局面を示すことができる。上記に記載されるように、一部の実施形態において、動作状態情報に加え、負荷状態情報は、DFDD110を介して入手可能であってもよい。
ネットワーク費用情報とも称される場合がある通信リソース状態情報は、任意のノード160への1つ以上の通信経路の状態に関するいずれの適切な情報を含む場合がある。様々な実施形態において、ネットワーク費用情報は、任意のノード160への及び/又はからのメッセージの伝達に関連するネットワーク通信待ち時間を示す場合があり、時間(秒、ミリ秒など)、ネットワークホップ数(例えば、メッセージを伝達するためのルーティングステップ数)、又は別の適切な測定基準により表されてもよい。一実施形態において、ネットワーク費用情報は、任意のノード160との通信に利用可能な利用可能バンド幅(例えば、データ転送率)の指示を含む場合がある。別の実施形態において、ネットワーク費用情報は、任意のノード160とのネットワーク通信に関係する経済費用の指示を含む場合がある。例えば、そのような費用は、ある量のデータの転送又は受信に対して請求される率、又はいずれのその他のネットワーク通信に適切な費用又は率モデルにより表されてもよい。
ノードピッカー130は、通常、オブジェクト30の書き込みプランの動的な決定において、ノード160の状態情報のいずれの適切な機能を使用してもよい。一部の実施形態において、ノードピッカー130により導入されるストレージポリシー(前述のストレージポリシーの追加又は代わりであってもよい)は、特定のオブジェクト30に対する書き込みプランに含めることが可能である、ノード160を制約する状態情報に対するガイドライン又は要件を指定してもよい。様々な実施形態において、これらのポリシーは、オブジェクト30の特定の組(例えば、特定のストレージクラス又はバケットに含まれており、共通鍵プレフィックスを有する、又は組のメンバーであると表示されている、オブジェクト)に対して全体的に(例えば、すべてのオブジェクト30に対して)、又は個別のオブジェクト30(例えば、オブジェクト30に関する特定のポリシーを指定するクライアントへの応答として)に対して、あるいはいずれの適切なこれらの組み合せで適用されてもよい。一実施例において、特定のストレージクラスは、いくつかの最小数の複製は、いくつかの最大通信待ち時間以下を示すことを要求するストレージポリシーを指定してもよい。同様に、このストレージクラスのオブジェクト30への書き込みプランの作成において、ノードピッカー130は、指定される最大通信待ち時間を満たすかどうかに従い、少なくともいくつかのノード160を選択するように設定されてもよい。
一部の実施形態において、ノードピッカー130は、ノード状態情報における様々な種類の最適化に従い、書き込みプランを作成するようにも設定されてもよい。例えば、特定の最大ネットワーク費用又はその他の書き込みプランに関連する費用を指定する代わりに、ストレージポリシーは、特定の時間において利用可能なリソース間で費用が最小限化されることを指定してもよい。同様に、ノードピッカー130は、例えば、低ネットワーク通信又はその他の関連費用を有するノード160を選択することによって、書き込みプランに関連する1つ以上の費用を最小化するように設定されてもよい。一部の実施形態において、そのような最小化は、その他のノード状態情報要件を指定するその他のストレージポリシーなどの、その他の制約の存在下において起こる場合がある。
さらに、一部の実施形態において、いくつかのノード状態情報は、予測可能な形で時間とともに変化することに留意されたい。例えば、データセンタ300間のネットワーク通信に関連するバンド幅費用は、明確な料金表に従い、変化する。一部の実施形態において、書き込みプランに関連する費用を最小化することは、特定の時間帯に関連する費用に基づき、書き込みプランのすべて又は一部が実行されるべき時間帯を識別することを含む場合がある。例えば、ノードピッカー130は、遠隔データセンタ300と通信するためのバンド幅が、将来のある時点において現時点より安価になることを判断する場合があり、さらに遠隔データセンタ300に存在するノード160を含む書き込みプランの費用は、遠隔データセンタを対象とする少なくともそれらのストレージ作業を、特定の将来時に実行することで最小化できる可能性があることを判断する。このプロセスの1つの起こりうる結果は、ノードピッカー130により作成される書き込みプランが、任意のオブジェクト30のいくつか(又は場合によりすべて)の複製の作成は、特定の将来時まで延期されるべきであるということを示す場合があることである。
多くの異なるストレージポリシーを特定のオブジェクト30に適用することは可能である。さらに、ある場合において、特定のオブジェクト30に関連する各ストレージポリシーを満たす1つの書き込みプランを作成することは不可能である場合がある。例えば、特定のオブジェクト30に関連するストレージポリシーは、複製の最小数を、最小数の異なる領域310に渡り、保存し、配布することを指定してもよい。しかし、オブジェクト30に対して、書き込みプランが作成された時点では、ノードピッカー130が実行中の領域310は、一時的通信障害により、その他の領域310から一時的に隔離されてもよい。従って、対応するストレージポリシーを満たしつつ、複製をその他の領域310に正常に配布することは、少なくとも一時的に不可能である場合がある。
一実施形態において、ノードピッカー130は、オブジェクト30に対する書き込みプランを、書き込みプランが満たすストレージポリシーの数を最大化するという原則において、動的に決定するように設定されてもよい。次善条件の存在下において、これは、ストレージポリシーを満たすために「最善努力」を示す書き込みプランをもたらす場合がある。例えば、今記載した特定のシナリオにおいて、通信障害のため、領域別ポリシーは満たせない場合があるが、最小複製ポリシーは、特定のオブジェクト310の要求される最小数の複製を、ローカル領域310内に保存することで、満たされてもよい。一部の実施形態において、ストレージポリシーの最大化は、様々な抑制化で行われる場合がある。例えば、それらが満たされない場合、書き込みプランは決定されず、クライアントのオブジェクトを保存するという要求は、失敗する可能性があるというような、いくつかのストレージポリシーは、義務として認識されてもよい。その他のストレージポリシーは、選好関係又は重み付けを有する場合があり、例えば、最大化プロセスにおいて、低い選好ストレージポリシーの中から、より高い選好ストレージポリシーが選択されてもよい。別の実施形態において、ストレージポリシーの選択は、結果として生じるストレージプランにより満たされるストレージポリシーの数の代わりに、又はそれへの追加として、結果として生じるストレージプランの合計重み(満たされるストレージポリシーの重みに基づき決定される)を最大化することにより実行されてもよい。
オブジェクト30に対する書き込みプランを動的に決定するための様々な技術は、オブジェクト30が最初に保存される際、単独で実行する必要はないことに留意されたい。上記に記載されるように、一部の実施形態において、レプリケータ180は、オブジェクト30の複製がアクセス可能であるかどうかを決定するために、オブジェクト30に対応するキーマップエントリ144を調査するように設定されてもよい。特定のオブジェクト30のいずれの複製もアクセス可能でない場合、レプリケータ180は、さらなる複製を作成するために使用されてもよい、新しい書き込みプランをノードピッカー130から要求するように設定されてもよい。新しい書き込みプランは、上記に記載される技術のいずれの適切な組み合せを使用するノードピッカー130により、動的に決定されてもよい。さらに、一部の実施形態において、レプリケータ180は、オブジェクト30の様々なストレージポリシーへの順守をより広く監視するように設定されてもよい。例えば、レプリケータ180は、オブジェクト30の既存の複製の組が、最小複製ポリシー、又はいずれのその他の適切なポリシーの組に加え、領域別ポリシーを満たすかどうかを判断するように設定されてもよい。そのような一実施形態において、レプリケータ180が、特定のオブジェクト30の既存の複製により満たされているポリシーの数が、基準値より少ないと判断する場合、レプリケータ180は、上記に記載されるように、満たされるストレージポリシーが最大になるように動的に決定される新しいストレージプランをノードピッカー130から要求してもよい。別の実施形態において、レプリケータ180は、特定の義務ストレージポリシーが満たされないという判断に伴い、又は満たされるストレージポリシーの合計重みが基準値を下回るという判断に伴い、新しいストレージプランを要求してもよい。
図27は、ビットストアノード160の現行状態情報に従い、データオブジェクトの1つ以上の複製を保存するための書き込みプランを動的に決定する方法の一実施形態を図示する。図示される実施形態において、操作は、任意のオブジェクト30を保存するというクライアントの要求が受け取られるブロック2700から始まる。一実施形態において、そのような要求は、上記に詳細が記載されるウェブサービスインターフェース100を介して、ウェブサービスプロトコルに従い受け取られる場合がある。
続いて、ビットストアノード160の現行状態情報に従い、任意のオブジェクト30の複製を保存するための書き込みプランが動的に決定される(ブロック2702)。例えば、ノードピッカー130は、任意のオブジェクト30に適用されてもよい様々なストレージポリシーに従い、書き込みプランを決定するように設定されている場合があり、当該ポリシーは、ノードの動作状態、ノードの負荷状態情報、ネットワーク通信費用、又は上記に詳細に記載されるような、いずれのその他の適切な状態情報などの、いずれの適切な現行状態情報を考慮する。さらに、上記に記載されるように、一部の実施形態において、動的な書き込みプランの決定は、書き込みプランに関連する費用を最小化すること、又は書き込みプランにより満たされるストレージポリシーの重み又は数を最大化することなどによる、状態情報又はストレージポリシーに関する最適化を含む場合がある。
任意のオブジェクト30の複製は、そして動的に決定された書き込みプランに従い、1つ以上のビットストアノード160に保存される(ブロック2704)。例えば、コーディネータ120は、上記に記載されるように、書き込みプランに指定されるそれぞれのビットストアノード160に対する操作を設置するビットストアオブジェクトを作成するように設定されてもよい。一部の実施形態において、書き込みプランのいくつかのストレージ操作は、上記に記載されるように、その他の操作とは異なる時間に実行されてもよい。
前述のように、一部の実施形態において、書き込みプランは、1つ以上の複製がビットストアノード160に渡り既に保存されているオブジェクト30に対して動的に決定されてもよい。図28は、そのような方法の一実施形態を図示する。図示される実施形態において、操作は、任意のオブジェクト30の1つ以上の既存の複製が調査されるブロック2800から始まる。例えば、上記に記載されるように、レプリケータ180の一実施形態は、任意のオブジェクト30の既存の複製がアクセス可能であるか、及び/又は任意のオブジェクト30の既存の複製がどの程度オブジェクトに関連するストレージポリシーを満たすかどうかを判断するように設定されてもよい。
任意のオブジェクト30の複製の調査を受けて、1つ以上のさらなる複製を作成する必要があると判断されてもよい(ブロック2802)。例えば、既存の複製は、故障しているか、又は別の理由でアスセス不可となり、複製の最小数を下回っている場合がある。あるいは、既存の複製の状態は、1つ以上のストレージポリシーに対して不十分である場合がある。続いて、任意のオブジェクト30のさらなる複製を保存するための書き込みプランは、ビットストアノード160の現行状態情報に従い、動的に決定される(ブロック2804)。そのような書き込みプランは、前述と同様に、又はいずれの適切なその変更に従い、決定されてもよい。一部の実施形態において、任意のオブジェクト30のさらなる複製を作成する必要がないと判断される場合、書き込みプランは決定されない場合があることに留意されたい。
任意のオブジェクト30の複製は、そして動的に決定された書き込みプラン(ブロック2806)に従い、1つ以上のビットストアノード160に保存される。例えば、レプリケータ180は、上記に記載されるように、書き込みプランに指定されるそれぞれのビットストアノード160に対して操作を設置するビットストアオブジェクトを作成するように設定されているか、又は単に任意のオブジェクト30の既存の複製を保存する1つ以上のノード160を、書き込みプランに指定されるノード160の1つ以上に直接それらの複製をコピーしてもよい。
例示的なコンピュータシステムの実施形態
一部の実施形態において、上記に記載されるいずれの方法又は技術は、プログラムのインストラクション及びコンピュータアクセス可能な媒体を介して保存、又は伝達することが可能なデータとして実装されてもよい。そのような方法又は技術は、例えば、ストレージクライアント50、ウェブサービスプラットフォーム100、DFDD110、コーディネータ120、ノードピッカー130、キーマップインスタンス140、ビットストアノード160、レプリケータ180、及び/又はレプリケータキーマップ190を含む場合があるが、制限はない。そのような方法又は技術は、図6〜9、13〜15、20〜22、及び25〜28に図示されているいずれの方法ならびにその適切な変更をさらに含む場合がある。そのようなプログラムのインストラクションは、上記に記載される特定の方法又は一部の方法などの特定のコンピュータ機能を実行し、より一般的なオペレーティングシステムの機能性、アプリケーションの機能性、及び/又はいずれのその他の適切な機能を提供するために、実行されてもよい。一部の実施形態において、上記に記載されるコンポーネント又は方法は、異なるその他の実施形態において、これらの示されているものより少ないエンティティに組み込まれる、又は機能性はコンポーネント又は方法に渡り、上記に記載される分割とは異なる形で分割されてもよい。
コンピュータアクセス可能な媒体を含むコンピュータシステムの例示的な一実施形態を図29に図示する。そのようなシステムは、ノードとも称される場合がある。前述のように、一実施形態において、上記に記載されるいずれの様々なストレージシステムコンポーネントは、多くのノードを渡り分散されている場合があり、そのような任意のコンポーネントは、1つ以上のノードにより実装されている、又はいくつかのノードに渡り分割されてもよい。一部の実施形態において、ノードは単一ストレージサービスシステムコンポーネントの機能を排他的に実装してもよいが、その他の実施形態において、ノードは、いくつかの異なるシステムコンポーネントのすべて、又は部分的な機能性を実装してもよい。図示される実施形態において、コンピュータシステム2900は、入力/出力(I/O)インターフェース2930を介してシステムメモリ2920と対になっている1つ以上のプロセッサ2910を含む。コンピュータシステム2900は、I/Oインターフェース2930と対になっているネットワークインターフェース2940をさらに含む。
様々な実施形態において、コンピュータシステム2900は、1つのプロセッサ2910を含むユニプロセッサシステム、又はいくつかのプロセッサ2910(例えば、2つ、4つ、8つ、又は別の適切な数)を含むマルチプロセッサシステムであってもよい。プロセッサ2910は、命令を実行する能力を有する、任意の適切なプロセッサであってもよい。例えば、様々な実施形態において、プロセッサ2910は、x86、PowerPC、SPARC、又はMIPS ISA、あるいはその他の適切なISAなどの様々な命令組アーキテクチャ(ISA)を実装する汎用、又は内蔵プロセッサであってもよい。マルチプロセッサシステムにおいて、それぞれのプロセッサ2910は、必ずではないが、通常、同一ISAを実装する。
システムメモリ2920は、プロセッサ2910によりアクセス可能に命令及びデータを保存するように設定されてもよい。様々な実施形態において、システムメモリ2920は、静的ランダムアクセスメモリ(SRAM)、同期動的RAM(SDRAM)、非揮発性/フラッシュ型メモリ、又はいずれのその他の種類のメモリなど、いずれの適切なメモリ技術を使用し、実装されてもよい。図示される実施形態において、上記に詳細を記載する、いずれのこれらのストレージサービスシステムコンポーネント及びその他の機能などの所望の機能を実装するプログラムのインストラクション及びデータは、システムメモリ2920内にコード2925として保存されることを示す。
一実施形態においてI/Oインターフェース2930は、ネットワークインターフェース2940又はその他の周辺インターフェースを含む、プロセッサ2910、システムメモリ2920、及びデバイス内のいずれの周辺装置間のI/Oトラフィックを調整するように設定されてもよい。一部の実施形態において、I/Oインターフェース2930は、いずれの必要なプロトコル、タイミング調節、又はその他のあるコンポーネント(例えば、システムメモリ2920)からのデータ信号を別のコンポーネント(例えば、プロセッサ2910)での使用に適切なフォーマットに変換するためのデータ変換を実行してもよい。一部の実施形態において、I/Oインターフェース2930は、例えば、周辺装置相互接続(PCI)バス標準又はユニバーサルシリアルバス(USB)標準の異型などの様々な種類の周辺装置のバスを通じて接続されたデバイスのサポートを含む場合がある。一部の実施形態において、I/Oインターフェース2930の機能は、例えば、ノースブリッジ及びサウスブリッジなど、2つ以上の分離したコンポーネントに分割されてもよい。また、一部の実施形態において、システムメモリ2920に対するインターフェースなどの、I/Oインターフェース2930の機能性の一部又はすべては、プロセッサ2910に直接組み込まれている場合がある。
ネットワークインターフェース2940は、コンピュータシステム2900とネットワークに接続されたその他のデバイス、例えばその他のコンピュータシステムなどとのデータ交換が可能になるように設定されてもよい。様々な実施形態において、ネットワークインターフェース2940は、有線又は無線の一般的なデータネットワーク、例えば、イーサネット(登録商標)ワークのいずれの適切な種類、アナログ音声ネットワーク又はデジタルファイバー通信ネットワークなどの電気通信/電話ネットワーク、ファイバーチャネルSANなどのストレージ領域ネットワーク、又はその他のいずれの適切な種類のネットワーク又はプロトコルなどを介して、通信をサポートしてもよい。
一部の実施形態において、システムメモリ2920は、上記に記載されるように、プログラムのインストラクション及びデータを保存するように設定されたコンピュータアクセス可能媒体の一実施形態であってもよい。しかし、その他の実施形態において、プログラムのインストラクション及び/又はデータは、異なる種類のコンピュータアクセス可能媒体から受け取る、へ送る、上に保存してもよい。一般的に、コンピュータアクセス可能媒体は、例えば、I/Oインターフェース2930を介してコンピュータシステム2900と対になっているディスク又はCD/DVD−ROMなどの磁気又は光学媒体などのストレージ媒体あるいはメモリ媒体を含む場合がある。またコンピュータアクセス可能媒体は、コンピュータシステム2900の一部の実施形態に、システムメモリ2920又は別の種類のメモリとして含まれている場合がある、RAM(例えばSDRAM、DDR SDRAM、RDRAM、SRAMなど)、ROM、などのいずれの揮発性又は非揮発性媒体を含む場合もある。コンピュータアクセス可能媒体を介して保存されたプログラムのインストラクション及びデータは、転送媒体、又は電気、電磁気、又はネットワーク及び/又はネットワークインターフェース2940を介して実装されている無線リンクなどの通信媒体を介して伝送される場合があるデジタル信号などの信号により、転送されてもよい。
上記の実施形態は、相当な詳細を記載したが、多数の変更及び修正は、一度上記の開示が完全に理解されると、当技術分野に精通する者により明らかになるであろう。以下の特許請求の範囲は、すべてのそのような変更及び修正を包含することが意図される。
ウェブサービスとしてユーザにストレージを提示するためのストレージモデルの一実施形態を示すブロック図である。 ストレージサービスシステムのアーキテクチャの一実施形態を示すブロック図である。 ストレージシステムコンポーネントの物理的配置の一実施形態を示すブロック図である。 ストレージノードの一実施形態を示すブロック図である。 ストレージノード内のデータオブジェクトを体系化するように構成されるデータストラクチャの一実施形態を示すブロック図である。 オブジェクト取得操作を実行する方法の一実施形態を示す工程図である。 オブジェクト格納操作を実行する方法の一実施形態を示す工程図である。 オブジェクト解放操作を実行する方法の一実施形態を示す工程図である。 オブジェクトストレージ空間を再圧縮する方法の一実施形態を示す工程図である。 キーマップインスタンスデータ構造の一組の一実施形態を示すブロック図である。 キーマップインスタンスの階層的実装の一実施形態を示す。 キーマップインスタンスの階層的実装の一実施形態を示す。 キーマップインスタンスの階層的実装の一実施形態を示す。 キーマップインスタンスの階層的実装の一実施形態を示す。 キーマップインスタンス内の階層的層間における関係を要約するブロック図である。 キーマップエントリ格納操作を実行する方法の一実施形態を示す工程図である。 キーマップエントリが取得操作を実行する方法の一実施形態を示す工程図である。 更新伝播を使用してキーマップインスタンスを同期化する方法の一実施形態を示す工程図である。 アンチエントロピープロトコルを使用してキーマップインスタンスを同期化する方法の一実施形態を示す工程図である。 レプリケータキーマップエントリの一実施形態を示すブロック図である。 不均衡インデックスデータ構造の一実施形態を示す。 不均衡データ構造において使用するためのインデックスノードの一実施形態を示す。 層別インデックスデータ構造の一実施形態を示す。 不均衡インデックスデータ構造をトラバースするための方法の一実施形態を示す工程図である。 FINGERPRINTアンチエントロピープロトコルメッセージを処理する方法の一実施形態を示す工程図である。 FILTERアンチエントロピープロトコルメッセージを処理するための方法の一実施形態を示す工程図である。 発見及び障害検出デーモン(DFDD)の一実施形態を示す。 DFDDインスタンスによって維持してもよい大域操作状態マシンの一実施形態を示す。 ゴシッププロトコルに従ったDFDDインスタンスを同期化するための方法の一実施形態を示す工程図である。 ストレージサービスシステム内のストレージクラスの操作方法の一実施形態を示す工程図である。 ストレージノードの現在の情報に従い、データオブジェクトの1つ以上の複製を保存するための書き込みプランを動的に決定する方法の一実施形態を示す工程図である。 1つ以上の複製が既にストレージノード間に保存されているオブジェクトに関係する書き込みプランを動的に決定する一実施形態を示す工程図である。 コンピュータシステムの例示的な実施形態を示す工程図である。

Claims (75)

  1. ウェブサービスプロトコルに従い、データオブジェクトにアクセスするためのクライアント要求を受信するように構成されるウェブサービスインターフェースであって、前記データオブジェクトの所定の1つにアクセスするための前記クライアント要求の所定の1つが、前記所定のデータオブジェクトに対応するキー値を含む、ウェブサービスインターフェースと、
    前記データオブジェクトを保存するように構成される複数のストレージノードであって、前記複製のそれぞれは、それぞれのロケータ値を介してアクセス可能であり、前記ロケータ値のそれぞれは、前記システム内で固有である、複数のストレージノードと、
    前記データオブジェクトのそれぞれに対するそれぞれのキーマップエントリを保存するように構成させるキーマップインスタンスであって、前記所定のデータオブジェクトに対し、前記それぞれのキーマップエントリが、前記キー値と、前記所定のデータオブジェクトのそれぞれの保存された複製と対応している各ロケータ値を含む、キーマップインスタンスと、
    前記ウェブサービスインターフェースから前記データオブジェクトにアクセスするための前記クライアント要求を受信するように構成されるコーディネータであって、前記所定のクライアント要求に応じて、前記コーディネータは前記キー値に対応する1つ以上のロケータ値を認識するために、前記キーマップインスタンスにアクセスし、特定の前記1つ以上のロケータ値については、対応する複製を取り出すために対応するストレージノードにアクセスするように構成される、コーディネータと、
    を実装するように構成される、複数の計算ノード
    を含む、システム。
  2. 前記対応する複製の取り出しに続いて、前記コーディネータが前記所定のクライアント要求に従い、クライアントに前記ウェブサービスインターフェースを介して、前記対応する複製を伝達するようにさらに構成される、請求項1に記載のシステム。
  3. 前記ウェブサービスインターフェースは、前記対応する複製を取り出す前に、さらに前記所定のクライアント要求が、前記所定のデータオブジェクトへアクセスするのに十分な特権を有するかどうかを判断し、前記所定のクライアント要求が十分な権利が与えられていない場合には、前記所定のクライアント要求を拒否するようにさらに構成される、請求項1に記載のシステム。
  4. 前記ウェブサービスインターフェースは、前記ウェブサービスプロトコルに従い、データオブジェクトを保存するためにクライアント要求を受信するようにさらに構成され、前記データオブジェクトの特定の1つを保存するための前記クライアント要求の特定の1つは、前記特定データに対応するキー値を含む、請求項1に記載のシステム。
  5. 前記ウェブサービスインターフェースは、前記特定データオブジェクトを保存するための料金を判断するようにさらに構成される、請求項4に記載のシステム。
  6. 前記コーディネータは、前記ウェブサービスインターフェースからのデータオブジェクトを保存するための前記クライアント要求を受信するようにさらに構成され、前記特定のクライアント要求に応じて、前記コーディネータは前記特定のデータオブジェクトの1つ以上の複製を1つ以上の対応するストレージノードに保存するように構成され、前記特定のデータオブジェクトの所定の複製の保存に応じて、前記ストレージノードの所定の1つは、前記コーディネータへ前記所定の複製に対応するロケータ値を返すように構成される、請求項4に記載のシステム。
  7. 前記コーディネータは、前記キーマップインスタンスに、前記所定の複製に対応する前記ロケータ値を含むための前記特定データオブジェクトに対応する前記それぞれのキーマップエントリの更新を指示するようにさらに構成される、請求項5に記載のシステム。
  8. 前記特定のデータオブジェクトの前記1つ以上の複製が保存される、前記1つ以上の対応するストレージノードは、ストレージ規定に従って選択される、請求項5に記載のシステム。
  9. 前記ストレージ規定は、前記コーディネータが前記特定のデータオブジェクトを保存するための前記特定のクライアント要求が完了することを示す前に、対応するストレージノードへ永久に保存されたことを示すために必要となる多くの複製を特定する、請求項8に記載のシステム。
  10. 前記ストレージ規定は、生成される前記特定のデータオブジェクトの所望の複製の数をさらに特定する、請求項9に記載のシステム。
  11. 前記所望の複製の数は前記複製の数を上回る、請求項10に記載のシステム。
  12. 前記複数の計算ノードは、前記キーマップエントリの所定の1つに対して、前記所定のキーマップエントリのそれぞれのロケータ値に対応する各複製が、アクセス可能かどうかの判断をするために、前記キーマップインスタンスの前記それぞれのキーマップエントリを調査するように構成されるレプリケータをさらに実装するように構成される、請求項10に記載のシステム。
  13. 前記所定のキーマップエントリについて、前記所定のキーマップエントリのそれぞれのロケータ値に対応するアクセス可能な複製の数が、前記複製の所望の数よりも少ない場合、前記リプリケータは、前記複製の所望の数を満たすために十分である付加的な複製を作成するようにさらに構成される、請求項12に記載のシステム。
  14. 前記複数のストレージノードは複数の領域に分散され、前記ストレージ規定は、前記コーディネータが前記特定のデータオブジェクトを保存するための前記特定のクライアント要求が完了することを示す前に、前記1つ以上の複製が永久に保存されることを示すことが必要となる最少数の領域を特定する、請求項8に記載のシステム。
  15. 前記複数の領域の任意の2つの領域間において、ストレージノードの不具合の可能性の相関関係がしきい値未満である、請求項14に記載のシステム。
  16. 前記ストレージ規定は、可能な場合、前記1つ以上の複製のうちの少なくとも1つが、前記領域の所定のものに位置するストレージノードに書き込まれることをさらに特定し、前記コーディネータも前記所定の領域に位置する、請求項14に記載のシステム。
  17. 前記複数のストレージノードは複数の領域に分散され、前記ストレージ規定は、可能な場合、前記1つ以上の複製のうちの少なくとも1つが、前記領域の所定のものに位置するストレージノードに書き込まれることを特定する、請求項8に記載のシステム。
  18. 前記ストレージ規定に従い、前記所定の領域が、前記特定のクライアント要求に関連した、前記所定の領域とクライアント間における通信の遅延時間を最小限にするために選択される、請求項17に記載のシステム。
  19. 前記所定のデータオブジェクトに対応する前記キー値は、前記ウェブサービスインターフェースを介し、クライアントによって特定される、請求項1に記載のシステム。
  20. 前記ウェブサービスインターフェースによって受信された前記所定のデータオブジェクトへのアクセスのための前記クライアント要求のうちの特定の1つは、前記所定のデータオブジェクトの特定の複製に対応する特定のロケータ値を含む、請求項1に記載のシステム。
  21. 前記ウェブサービスインターフェースからのアクセスのための前記特定のクライアント要求の受信に応じて、前記コーディネータは、前記キーマップインスタンスにアクセスすることなく、前記特定のロケータ値を介し、対応するストレージノードから前記特定の複製を取り出すようにさらに構成される、請求項20に記載のシステム。
  22. 前記ウェブサービスプロトコルが、RepresentationalStateTransfer(REST)ウェブサービスモデルを実行する、請求項1に記載のシステム。
  23. 前記ウェブサービスプロトコルに従い前記所定のクライアント要求を受信するために、前記ウェブサービスインターフェースは、HypertextTransferProtocol(HTTP)のバージョンに従いフォーマット化された要求を受信するようにさらに構成される、請求項22に記載のシステム。
  24. 前記所定のクライアント要求の内容は、eXtensibleMarkupLanguage(XML)のバージョンに従いフォーマット化されたパラメータとして前記要求に含まれる、請求項23に記載のシステム。
  25. 前記ウェブサービスプロトコルは、文書ベースウェブサービスモデルを実行する、請求項1に記載のシステム。
  26. 前記ウェブサービスプロトコルに従い、前記所定のクライアント要求を受信するために、前記ウェブサービスインターフェースは、SimpleObjectAccessProtocol(SOAP)のバージョンに従い、カプセル化した文書の受信をするようにさらに構成され、前記所定のクライアント要求の内容は、前記文書に含まれ、XMLのバージョンに従いフォーマットされる、請求項25に記載のシステム。
  27. 前記キーマップインスタンスは、階層的に配置された複数のインデックスノードを含み、それぞれが関連するタグ値を有する、インデックスデータ構造内に保存されたキーマップエントリを索引付けするようにさらに構成され、前記保存されたキーマップエントリのそれぞれは、前記インデックスノードのそれぞれの1つと対応し、所定の対応するインデックスノードを有する前記所定のキーマップエントリについては、前記所定の対応するインデックスノードの各上位と関連する各タグ値が、前記所定のキー値のプレフィックスである、請求項1に記載のシステム。
  28. ウェブサービスプロトコルに従ってウェブサービスインターフェースを介しデータオブジェクトにアクセスするためのクライアント要求を受信するステップであって、前記データオブジェクトの所定の1つにアクセスするための前記クライアント要求の所定の1つは、前記所定データオブジェクトに対応するキー値を含む、ステップと、
    複数のストレージノード上に前記データオブジェクトの複製を保存するステップであって、前記複製のそれぞれは、それぞれのロケータ値を介してアクセス可能であり、前記ロケータ値のそれぞれは、前記システム内で固有である、ステップと、
    前記データオブジェクトのそれぞれに対するそれぞれのキーマップエントリを保存するステップであって、前記任意データオブジェクトについては、前記それぞれのキーマップエントリは、前記クライアント特定キー値と、前記所定のデータオブジェクトのそれぞれの保存された複製に対応するそれぞれのロケータ値を含む、ステップと、
    前記任意クライアント要求の受信に応じて、前記キー値に対応する1つ以上のロケータ値を認識するために、前記それぞれのキーマップエントリにアクセスするステップであって、前記1つ以上のロケータ値の特定の1つについては、対応するストレージノードにアクセスし、対応する複製を取り出すステップと、
    を備える、方法。
  29. 前記所定のクライアント要求に従い、前記取り出した対応する複製を、前記ウェブサービスインターフェースを介し、クライアントに送信するステップをさらに備える、請求項28に記載の方法。
  30. 前記対応する複製を取り出す前に、前記所定のクライアント要求が、前記所定のデータオブジェクトにアクセスするための十分な特権を有するかどうかを判断するステップと、前記所定のクライアント要求が十分な特権をもたない場合には、前記所定のクライアント要求を拒否するステップと、を備える、請求項28に記載の方法。
  31. さらに
    前記ウェブサービスプロトコルに従い前記ウェブサービスインターフェースを介しデータオブジェクトを保存するためのクライアント要求を受信するステップであって、前記データオブジェクトの特定の1つを保存するための前記クライアント要求の特定の1つは、前記特定データオブジェクトに対応するキー値を含む、ステップ、
    をさらに備える、請求項28に記載の方法。
  32. 前記特定のデータオブジェクトを保存するための料金を判断するステップを備える、請求項31に記載の方法。
  33. さらに
    前記特定クライアント要求に応じて、前記特定のデータオブジェクトの1つ以上の複製を1つ以上の対応するストレージノードに保存するステップと、
    前記特定データオブジェクトの所定の複製を前記ストレージノードの所定の1つに保存するステップに応じ、前記所定の複製に対応するロケータ値を受信するステップと、
    を備える、請求項31に記載の方法。
  34. 前記所定の複製に対応する前記ロケータ値を含むために、前記特定のデータオブジェクトに対応する前記それぞれのキーマップエントリを更新するステップをさらに備える、請求項33に記載の方法。
  35. ストレージ規定に従い、前記特定のデータオブジェクトの前記1つ以上の複製が保存される、前記1つ以上の対応するストレージノードを選択するステップをさらに備える、請求項33に記載の方法。
  36. 前記ストレージ規定は、前記コーディネータが、前記特定のデータオブジェクトを保存する前記特定のクライアント要求が完了することを示す前に、対応するストレージノードに永久に保存されることを示すために必要となる多くの複製を特定する、請求項35に記載の方法。
  37. 前記ストレージ規定は、生成される前記特定のデータオブジェクト所望の複製の数をさらに特定する、請求項36に記載の方法。
  38. 前記所望の複製の数は前記複製の数を上回る、請求項37に記載の方法。
  39. 前記それぞれのキーマップエントリが、前記キーマップエントリの所定の1つについて、前記所定のキーマップエントリのそれぞれのロケータ値に対応する各複製がアクセス可能であるかを調査するステップをさらに備える、請求項37に記載の方法。
  40. 前記所定のキーマップエントリについて、前記所定のキーマップエントリのそれぞれのロケータ値に対応するアクセス可能な複製の数が、前記複製の所望の数未満である場合、前記複製の所望の数を満たすために十分である付加的な複製を生成するステップをさらに備える、請求項39に記載の方法。
  41. 前記複数のストレージノードは複数の領域間に分散され、前記ストレージ規定は、前記コーディネータが、前記特定のデータオブジェクトを保存する前記特定のクライアント要求が完了することを示す前に、前記1つ以上の複製が、永久に保存されることを示すことが必要とされる最少数の領域を特定する、請求項35に記載の方法。
  42. 前記複数の領域の任意の2つの領域間において、ストレージノードの不具合の可能性の相関関係がしきい値未満である、請求項41に記載の方法。
  43. 前記ストレージ規定は、可能な場合、前記1つ以上の複製のうちの少なくとも1つが、前記領域の所定のものに位置するストレージノードに書き込まれることをさらに特定し、前記コーディネータも、前記所定の領域に位置する、請求項41に記載の方法。
  44. 前記複数のストレージノードは複数の領域間で分散され、前記ストレージ規定は、可能な場合、前記1つ以上の複製のうちの少なくとも1つが、前記領域の所定のものに位置するストレージノードに書き込まれることを特定する、請求項35に記載の方法。
  45. 前記特定のクライアント要求に関連する前記所定の領域とクライアント間の伝達の遅延を最小限にするために、前記所定の領域は前記ストレージ規定に従い選択される、請求項44に記載の方法。
  46. 前記所定のデータオブジェクトに対応する前記キー値は、前記ウェブサービスインターフェースを介して特定される、請求項28に記載の方法。
  47. 前記ウェブサービスインターフェースによって受信した前記所定のデータオブジェクトへアクセスするための前記クライアント要求の特定の1つは、前記所定のデータオブジェクトの特定の複製に対応する特定のロケータ値を含む、請求項28に記載の方法。
  48. 前記ウェブサービスインターフェースからのアクセスのための前記特定のクライアント要求の受信に応じ、前記それぞれのキーマップエントリのどれにもアクセスすることなく前記特定のロケータ値を介し、対応するストレージノードから前記特定の複製を取り出すステップをさらに備える、請求項47に記載の方法。
  49. 前記ウェブサービスプロトコルは、RepresentationalStateTransfer(REST)ウェブサービスモデルを実装する、請求項28に記載の方法。
  50. 前記ウェブサービスプロトコルに従って、前記所定クライアント要求を受信するステップは、HypertextTransferProtocol(HTTP)のバージョンに従いフォーマット化された要求を受信するステップを含む、請求項49に記載の方法。
  51. 前記所定クライアント要求の内容は、eXtensibleMarkupLanguage(XML)のバージョンに従ってフォーマット化されたパラメータとして前記要求に含まれる、請求項49に記載の方法。
  52. 前記ウェブサービスプロトコルは、文書ベースウェブサービスモデルを実装する、請求項28に記載の方法。
  53. 前記ウェブサービスプロトコルに従って、前記所定のクライアント要求を受信するステップは、SimpleObjectAccessProtocol(SOAP)のバージョンに従いカプセル化された文書を受信するステップを含み、前記所定のクライアント要求の内容は、前記文書に含まれ、XMLのバージョンに従ってフォーマット化される、請求項52に記載の方法。
  54. 前記データオブジェクトのそれぞれに対する、前記それぞれのキーマップエントリを保存するステップは、階層的に配置された複数のインデックスノードを含み、それぞれが関連するタグ値を有するインデックスデータ構造内の前記キーマップエントリに索引をつけるステップを備え、各前記キーマップエントリのそれぞれは、前記インデックスノードのそれぞれに対応し、前記所定の対応するインデックスノードを有する前記キーマップエントリの所定の1つに対し、前記所定の対応するインデックスノードの各上位と関連する各タグ値は、前記所定キー値のプレフィックスである、請求項28に記載の方法。
  55. インストラクションを備えるコンピュータにアクセス可能な媒体であって、前記インストラクションは、
    データオブジェクトへアクセスするためのクライアント要求を処理するステップであって、前記データオブジェクトにアクセスするための前記クライアント要求は、ウェブサービスプロトコルに従い、ウェブサービスインターフェースを介して受信され、前記データオブジェクトの所定の1つへアクセスするための前記クライアント要求の所定の1つは、前記所定のデータオブジェクトに対応するキー値を含む、ステップと、
    複数のストレージノード上に前記データオブジェクトの複製を保存することを指示するステップであって前記ロケータ値のそれぞれは、前記システム内で個別であるステップと、
    前記データオブジェクトのそれぞれに対するそれぞれのキーマップエントリを保存することを指示するステップであって、前記所定のデータオブジェクトについては、前記それぞれのキーマップエントリは、前記クライアント特定キー値と、前記所定のデータオブジェクトのそれぞれの保存された複製に対応するそれぞれのロケータ値とを含むステップと、
    を、実行することが可能であり、
    前記所定のクライアント要求を処理するステップは、前記キー値に対応する1つ以上のロケータ値を認識するための前記それぞれのキーマップエントリへアクセスするステップを含み、前記1つ以上の特定の1つについては、対応するストレージノードにアクセスし、対応する複製を取り出すステップを含む、
    インストラクションを備える、コンピュータにアクセス可能な媒体。
  56. 前記インストラクションは、
    データオブジェクトを保存するためのクライアント要求を処理するステップであって、データオブジェクトを保存するための前記クライアント要求は、前記ウェブサービスプロトコルに従い前記ウェブサービスインターフェースを介して受信され、前記データオブジェクトの前記特定の1つを保存するための前記クライアント要求の特定の1つは、前記特定のデータオブジェクトに対応するキー値を含むステップ
    を、さらに実行することが可能である、請求項55に記載のコンピュータにアクセス可能な媒体。
  57. 前記インストラクションは、前記特定のデータオブジェクトを保存するための料金を判断するステップをさらに実行することが可能である、請求項56に記載のコンピュータ接続可能媒体。
  58. 前記インストラクションは、
    前記特定のクライアント要求に応じて、前記特定のデータオブジェクトの1つ以上の複製を、1つ以上の対応するストレージノードへ保存するステップと、
    前記特定のデータオブジェクトの所定の複製を前記ストレージノードの所定の1つに保存するステップに応じ、前記所定の複製に対応するロケータ値を受信するステップ、
    を、さらに実行することが可能である、請求項56に記載のコンピュータにアクセス可能な媒体。
  59. 前記インストラクションは、前記所定の複製に対応する前記ロケータ値を含むために、前記特定データオブジェクトに対応する前記それぞれのキーマップエントリを更新する指示を行うことをさらに実行することが可能である、請求項57に記載のコンピュータ接続可能媒体。
  60. 前記インストラクションは、ストレージ規定に従い、前記特定のデータオブジェクトの前記1つ以上の複製が保存される、前記1つ以上の対応するストレージノードを選択する指示をさらに実行することが可能である、請求項58に記載のコンピュータアクセス可能媒体。
  61. 前記ストレージ規定は、前記コーディネータが、前記特定のデータオブジェクトを保存する前記特定のクライアント要求が完了することを示す前に、対応するストレージノードに永久に保存されることを示すことが必要とされる複製の数を特定する、請求項60に記載のコンピュータアクセス可能媒体。
  62. 前記ストレージ規定は、生成される前記特定データオブジェクトの所望の複製の数をさらに特定する、請求項61に記載のコンピュータアクセス可能媒体。
  63. 前記複製の所望の数は前記複製の数を上回る、請求項62に記載のコンピュータアクセス可能媒体。
  64. 前記複数のストレージノードは複数の領域間に分散され、前記ストレージ規定は、前記コーディネータが前記特定のデータオブジェクトを保存する前記特定のクライアント要求が完了することを示す前に、前記1つ以上の複製が、永久に保存されることを示すことが必要とされる、最少数の領域を特定する、請求項60に記載のコンピュータアクセス可能媒体。
  65. 前記複数の領域の任意の2つの領域間における、ストレージノードの不具合の可能性の相関関係はしきい値未満である、請求項64に記載のコンピュータアクセス可能媒体。
  66. 前記ストレージ規定は、可能な場合、前記1つ以上の複製のうちの少なくとも1つが、前記領域の所定のものに位置するストレージノードに書き込まれることを特定し、前記コーディネータも、前記所定の領域に位置する、請求項64に記載のコンピュータアクセス可能媒体。
  67. 前記複数のストレージノードは、複数の領域間で分散され、可能な場合、前記ストレージ規定は、前記1つ以上の複製のうちの少なくとも1つが、前記領域の所定のものに位置するストレージノードに書き込まれることを特定する、請求項60に記載のコンピュータアクセス可能媒体。
  68. 前記所定の領域と前記特定のクライアント要求に関連するクライアント間の伝達遅延を最小限にするために、前記所定の領域は前記ストレージ規定に従って選択される、請求項67に記載のコンピュータアクセス可能媒体。
  69. 前記所定のデータオブジェクトにアクセスするための前記クライアント要求の特定の1つは、前記所定のデータオブジェクトの特定の複製に対応する特定のロケータ値を含む、請求項55に記載のコンピュータアクセス可能媒体。
  70. 前記インストラクションは、
    アクセスのための前記特定のクライアント要求に応じ、前記それぞれのキーマップエントリのいずれにもアクセスすることなく、前記特定のロケータ値を介した、対応するストレージノードからの前記特定の複製の取り出し
    を、さらに実行することが可能である、請求項69に記載のコンピュータにアクセス可能な媒体。
  71. 前記ウェブサービスプロトコルは、RepresentationalStateTransfer(REST)ウェブサービスモデルを実装する、請求項55に記載のコンピュータアクセス可能媒体。
  72. 前記ウェブサービスプロトコルに従って前記所定のクライアント要求を受信するステップは、HypertextTransferProtocol(HTTP)のバージョンに従いフォーマット化された要求を受信するステップを含む、請求項71に記載のコンピュータアクセス可能媒体。
  73. 前記所定のクライアント要求の内容は、eXtensibleMarkupLanguage(XML)のバージョンに従いフォーマット化されたパラメータとして前記要求に含まれる、請求項72に記載のコンピュータアクセス可能媒体。
  74. 前記ウェブサービスプロトコルは、文書ベースウェブサービスモデルを実装する、請求項55に記載のコンピュータアクセス可能媒体。
  75. 前記ウェブサービスプロトコルに従って前記所定のクライアント要求を受信するステップは、SimpleObjectAccessProtocol(SOAP)のバージョンに従いカプセル化された文書を受信するステップを含み、前記所定のクライアント要求の内容は、前記文書に含まれ、XMLのバージョンに従ってフォーマット化される、請求項74に記載のコンピュータアクセス可能媒体。
JP2008548792A 2005-12-29 2006-11-30 ウェブサービスクライアントインターフェースを有する分散型ストレージシステム Active JP5047988B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US75472605P 2005-12-29 2005-12-29
US60/754,726 2005-12-29
US11/371,304 2006-03-08
US11/371,304 US7716180B2 (en) 2005-12-29 2006-03-08 Distributed storage system with web services client interface
PCT/US2006/061431 WO2008069811A1 (en) 2005-12-29 2006-11-30 Distributed replica storage system with web services interface

Publications (3)

Publication Number Publication Date
JP2009522659A true JP2009522659A (ja) 2009-06-11
JP2009522659A5 JP2009522659A5 (ja) 2010-01-21
JP5047988B2 JP5047988B2 (ja) 2012-10-10

Family

ID=38225941

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008548792A Active JP5047988B2 (ja) 2005-12-29 2006-11-30 ウェブサービスクライアントインターフェースを有する分散型ストレージシステム

Country Status (8)

Country Link
US (8) US7716180B2 (ja)
EP (1) EP1977346A1 (ja)
JP (1) JP5047988B2 (ja)
KR (4) KR101542707B1 (ja)
CN (1) CN103353867B (ja)
CA (1) CA2637218C (ja)
MX (1) MX2008008604A (ja)
WO (1) WO2008069811A1 (ja)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013508810A (ja) * 2009-10-16 2013-03-07 シマンテック コーポレーション 効率的なファイル保存のための複数のインデックスを有する重複排除ストレージシステム
JP2013127748A (ja) * 2011-12-19 2013-06-27 Fujitsu Ltd 情報処理装置、データ記憶方法及びプログラム
JP2014053050A (ja) * 2009-10-26 2014-03-20 Amazon Technologies Inc 複製されたデータインスタンスのプロビジョニングおよび管理
KR101479957B1 (ko) 2010-09-24 2015-01-08 인텔 코포레이션 리플레이 공격에 대한 보호를 갖는 메모리 암호화를 위한 트위크 가능한 암호화 모드
JP2015507268A (ja) * 2011-12-27 2015-03-05 ソリッドファイア インコーポレイテッド クライアント使用状況およびシステムメトリクスに基づく比例的なサービス品質
JP2015176203A (ja) * 2014-03-13 2015-10-05 沖電気工業株式会社 データベースシステム、データベースサーバ、データベースサーバプログラム、データベースクライアント、及びデータベースクライアントプログラム
US9342574B2 (en) 2011-03-08 2016-05-17 Nec Corporation Distributed storage system and distributed storage method
JP2016515731A (ja) * 2013-03-20 2016-05-30 アマゾン テクノロジーズ インコーポレイテッド レプリケーションターゲットサービス
US9609060B2 (en) 2011-08-02 2017-03-28 Nec Corporation Distributed storage system and method
JP2017516237A (ja) * 2014-05-21 2017-06-15 オラクル・インターナショナル・コーポレイション 分散データグリッドにおける分散データ構造をサポートするためのシステムおよび方法
US9705888B2 (en) 2009-03-31 2017-07-11 Amazon Technologies, Inc. Managing security groups for data instances
JP2017529625A (ja) * 2014-09-23 2017-10-05 アマゾン テクノロジーズ インコーポレイテッド 共有フォルダ及び共有ファイルの同期
US9806978B2 (en) 2009-10-26 2017-10-31 Amazon Technologies, Inc. Monitoring of replicated data instances
US10127149B2 (en) 2009-03-31 2018-11-13 Amazon Technologies, Inc. Control service for data management
US10162715B1 (en) 2009-03-31 2018-12-25 Amazon Technologies, Inc. Cloning and recovery of data volumes
US10282231B1 (en) 2009-03-31 2019-05-07 Amazon Technologies, Inc. Monitoring and automatic scaling of data volumes
US10860439B2 (en) 2009-10-26 2020-12-08 Amazon Technologies, Inc. Failover and recovery for replicated data instances
US10977226B2 (en) 2009-10-07 2021-04-13 Amazon Technologies, Inc. Self-service configuration for data environment
WO2022044459A1 (ja) 2020-08-24 2022-03-03 富士フイルム株式会社 情報処理装置、情報処理方法、及び情報処理プログラム

Families Citing this family (828)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3831695A1 (de) * 1988-09-17 1990-03-22 Hoechst Ag Elaiophylinderivate, verfahren zu ihrer herstellung ihre verwendung als arzneimittel und sie enthaltende arzneimittel
US20050210101A1 (en) * 1999-03-04 2005-09-22 Universal Electronics Inc. System and method for providing content, management, and interactivity for client devices
US7468934B1 (en) * 1999-07-12 2008-12-23 Ez4Media, Inc. Clock with link to the internet
US7130616B2 (en) * 2000-04-25 2006-10-31 Simple Devices System and method for providing content, management, and interactivity for client devices
EP1466435B1 (en) 2002-01-08 2019-05-22 Seven Networks, LLC Secure transport for mobile communication network
US7363346B2 (en) * 2002-09-07 2008-04-22 Appistry, Inc. Reliably storing information across multiple computers such as in a hive of computers
US7917468B2 (en) 2005-08-01 2011-03-29 Seven Networks, Inc. Linking of personal information management data
US7853563B2 (en) 2005-08-01 2010-12-14 Seven Networks, Inc. Universal data aggregation
US8468126B2 (en) * 2005-08-01 2013-06-18 Seven Networks, Inc. Publishing data in an information community
US8010082B2 (en) 2004-10-20 2011-08-30 Seven Networks, Inc. Flexible billing architecture
US7441271B2 (en) 2004-10-20 2008-10-21 Seven Networks Method and apparatus for intercepting events in a communication system
US7706781B2 (en) 2004-11-22 2010-04-27 Seven Networks International Oy Data security in a mobile e-mail service
FI117152B (fi) 2004-12-03 2006-06-30 Seven Networks Internat Oy Sähköpostiasetusten käyttöönotto matkaviestimelle
US7877703B1 (en) 2005-03-14 2011-01-25 Seven Networks, Inc. Intelligent rendering of information in a limited display environment
US8438633B1 (en) 2005-04-21 2013-05-07 Seven Networks, Inc. Flexible real-time inbox access
WO2006136660A1 (en) 2005-06-21 2006-12-28 Seven Networks International Oy Maintaining an ip connection in a mobile network
US8392400B1 (en) 2005-12-29 2013-03-05 Amazon Technologies, Inc. Method and apparatus for stress management in a searchable data service
US7801912B2 (en) 2005-12-29 2010-09-21 Amazon Technologies, Inc. Method and apparatus for a searchable data service
US7716180B2 (en) 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
US7496667B2 (en) * 2006-01-31 2009-02-24 International Business Machines Corporation Decentralized application placement for web application middleware
US7526451B2 (en) * 2006-02-03 2009-04-28 Motorola, Inc. Method of transferring digital rights
US7769395B2 (en) 2006-06-20 2010-08-03 Seven Networks, Inc. Location-based operations and messaging
US20070214314A1 (en) * 2006-03-07 2007-09-13 Reuter James M Methods and systems for hierarchical management of distributed data
US8122087B2 (en) * 2006-03-21 2012-02-21 Aol Inc. Matching engine for comparing data feeds with user profile criteria
US7707136B2 (en) * 2006-03-31 2010-04-27 Amazon Technologies, Inc. System and method for providing high availability data
US7835578B2 (en) * 2006-04-19 2010-11-16 Sarnoff Corporation Automated video-to-text system
US8150805B1 (en) * 2006-06-30 2012-04-03 Symantec Operating Corporation Consistency interval marker assisted in-band commands in distributed systems
US7962499B2 (en) 2006-08-18 2011-06-14 Falconstor, Inc. System and method for identifying and mitigating redundancies in stored data
US8095531B2 (en) * 2006-10-03 2012-01-10 Salesforce.Com, Inc. Methods and systems for controlling access to custom objects in a database
US8010565B2 (en) * 2006-10-16 2011-08-30 Dell Products L.P. Enterprise rack management method, apparatus and media
US8316227B2 (en) * 2006-11-01 2012-11-20 Microsoft Corporation Health integration platform protocol
US8417537B2 (en) * 2006-11-01 2013-04-09 Microsoft Corporation Extensible and localizable health-related dictionary
US20080104012A1 (en) * 2006-11-01 2008-05-01 Microsoft Corporation Associating branding information with data
US8533746B2 (en) 2006-11-01 2013-09-10 Microsoft Corporation Health integration platform API
US20080104617A1 (en) * 2006-11-01 2008-05-01 Microsoft Corporation Extensible user interface
WO2008056599A1 (fr) * 2006-11-09 2008-05-15 Nec Corporation Système de distribution de données poste à poste, procédé de distribution de données poste à poste et programme de distribution de données poste à poste
KR101221672B1 (ko) * 2006-11-30 2013-01-14 재단법인서울대학교산학협력재단 데이터 동기화 시스템
CN1996847B (zh) * 2006-12-27 2010-05-19 中国科学院上海技术物理研究所 基于协作网格的图像及多媒体数据通信与存储系统
US20080201338A1 (en) * 2007-02-16 2008-08-21 Microsoft Corporation Rest for entities
US20080263103A1 (en) 2007-03-02 2008-10-23 Mcgregor Lucas Digital asset management system (DAMS)
JP2008234445A (ja) * 2007-03-22 2008-10-02 Brother Ind Ltd コンテンツ分散保存システム、複製データ取得方法、ノード装置、及びノード処理プログラム
JP4702314B2 (ja) * 2007-03-23 2011-06-15 ブラザー工業株式会社 コンテンツ分散保存システム、ノード装置、ノード処理プログラム、及びコンテンツデータ取得方法
US8640215B2 (en) * 2007-03-23 2014-01-28 Microsoft Corporation Secure isolation of application pools
US8095618B2 (en) * 2007-03-30 2012-01-10 Microsoft Corporation In-memory caching of shared customizable multi-tenant data
US8768898B1 (en) * 2007-04-26 2014-07-01 Netapp, Inc. Performing direct data manipulation on a storage device
US7853669B2 (en) 2007-05-04 2010-12-14 Microsoft Corporation Mesh-managing data across a distributed set of devices
US20080281863A1 (en) * 2007-05-10 2008-11-13 Hewlett-Packard Development Company, L.P. Repository system and method
ATE429119T1 (de) * 2007-05-18 2009-05-15 Sap Ag Verfahren und system zum schutz einer nachricht vor einem xml-angriff beim austausch in einem verteilten und dezentralisierten netzwerksystem
US8805425B2 (en) 2007-06-01 2014-08-12 Seven Networks, Inc. Integrated messaging
US8693494B2 (en) 2007-06-01 2014-04-08 Seven Networks, Inc. Polling
KR100936240B1 (ko) * 2007-09-03 2010-01-12 전자부품연구원 Soap 오퍼레이션을 이용한 컨텐츠 질의방법
US8515988B2 (en) * 2007-09-24 2013-08-20 Microsoft Corporation Data paging with a stateless service
US20090083441A1 (en) * 2007-09-24 2009-03-26 Microsoft Corporation Synchronization of web service endpoints in a multi-master synchronization environment
US8959085B2 (en) * 2007-10-10 2015-02-17 Yahoo! Inc. Playlist resolver
US7836018B2 (en) * 2007-10-24 2010-11-16 Emc Corporation Simultaneously accessing file objects through web services and file services
JP5504165B2 (ja) * 2007-10-24 2014-05-28 イーエムシー コーポレイション データファイルオブジェクトへのアクセス方法、クライアント装置、プログラム、およびシステム
US9413825B2 (en) * 2007-10-31 2016-08-09 Emc Corporation Managing file objects in a data storage system
US9122397B2 (en) * 2007-10-26 2015-09-01 Emc Corporation Exposing storage resources with differing capabilities
US8176084B2 (en) * 2007-11-26 2012-05-08 International Business Machines Corporation Structure based storage, query, update and transfer of tree-based documents
US9027030B2 (en) 2007-11-29 2015-05-05 Red Hat, Inc. Commit-one-phase distributed transactions with multiple starting participants
US7849223B2 (en) * 2007-12-07 2010-12-07 Microsoft Corporation Virtually synchronous Paxos
US8364181B2 (en) 2007-12-10 2013-01-29 Seven Networks, Inc. Electronic-mail filtering for mobile devices
US9002828B2 (en) 2007-12-13 2015-04-07 Seven Networks, Inc. Predictive content delivery
US8793305B2 (en) 2007-12-13 2014-07-29 Seven Networks, Inc. Content delivery to a mobile device from a content service
US7962583B2 (en) * 2007-12-13 2011-06-14 International Business Machines Corporation Dynamically adding partitions to be distributed directory setup with no downtime
US8533384B2 (en) 2007-12-27 2013-09-10 Sandisk Enterprise Ip Llc Flash memory controller garbage collection operations performed independently in multiple flash memory groups
US8498417B1 (en) 2007-12-27 2013-07-30 Emc Corporation Automation of coordination of encryption keys in a SAN based environment where an encryption engine, device management, and key management are not co-located
US8799681B1 (en) 2007-12-27 2014-08-05 Emc Corporation Redundant array of encrypting disks
US8588425B1 (en) 2007-12-27 2013-11-19 Emc Corporation Encryption key recovery in the event of storage management failure
US8236476B2 (en) 2008-01-08 2012-08-07 International Business Machines Corporation Multiple exposure photolithography methods and photoresist compositions
US8107921B2 (en) 2008-01-11 2012-01-31 Seven Networks, Inc. Mobile virtual network operator
US9122422B2 (en) * 2008-01-17 2015-09-01 International Business Machines Corporation Representing models in systems development lifecycle (SDLC) tools using a network of internet resources
US9177551B2 (en) * 2008-01-22 2015-11-03 At&T Intellectual Property I, L.P. System and method of providing speech processing in user interface
US8862657B2 (en) 2008-01-25 2014-10-14 Seven Networks, Inc. Policy based content service
US20090193338A1 (en) 2008-01-28 2009-07-30 Trevor Fiatal Reducing network and battery consumption during content delivery and playback
US20090210461A1 (en) * 2008-02-14 2009-08-20 Mcchord Austin Network Attached Storage System and Method
US20090210400A1 (en) * 2008-02-15 2009-08-20 Microsoft Corporation Translating Identifier in Request into Data Structure
US9935919B2 (en) * 2008-02-25 2018-04-03 Ca, Inc. Directory partitioned system and method
US7949624B2 (en) * 2008-02-26 2011-05-24 Honeywell International Inc. Apparatus and method for hierarchical decomposition of planning, scheduling, and other decision-making problems
US9830278B1 (en) 2008-03-06 2017-11-28 EMC IP Holding Company LLC Tracking replica data using key management
US8065327B2 (en) 2008-03-15 2011-11-22 Microsoft Corporation Management of collections of websites
US20090234858A1 (en) * 2008-03-15 2009-09-17 Microsoft Corporation Use Of A Single Service Application Instance For Multiple Data Center Subscribers
US8572033B2 (en) * 2008-03-20 2013-10-29 Microsoft Corporation Computing environment configuration
US9298747B2 (en) 2008-03-20 2016-03-29 Microsoft Technology Licensing, Llc Deployable, consistent, and extensible computing environment platform
US20090241134A1 (en) * 2008-03-24 2009-09-24 Microsoft Corporation Remote storage service api
US9317255B2 (en) 2008-03-28 2016-04-19 Microsoft Technology Licensing, LCC Automatic code transformation with state transformer monads
US8989388B2 (en) * 2008-04-02 2015-03-24 Cisco Technology, Inc. Distribution of storage area network encryption keys across data centers
US8103628B2 (en) * 2008-04-09 2012-01-24 Harmonic Inc. Directed placement of data in a redundant data storage system
US9619295B1 (en) 2008-05-21 2017-04-11 Qualcomm Incorporated Distributed system for application processing
US8417679B1 (en) 2008-05-21 2013-04-09 Translattice, Inc. Fast storage writes
US8346824B1 (en) 2008-05-21 2013-01-01 Translattice, Inc. Data distribution system
US8352421B2 (en) * 2008-05-28 2013-01-08 Red Hat, Inc. Recording distributed transactions using probabalistic data structures
US8745502B2 (en) * 2008-05-28 2014-06-03 Snibbe Interactive, Inc. System and method for interfacing interactive systems with social networks and media playback devices
JP5392254B2 (ja) * 2008-05-30 2014-01-22 日本電気株式会社 データベースシステム、データベース管理方法、データベース構造およびコンピュータプログラム
WO2009144941A1 (ja) * 2008-05-30 2009-12-03 日本電気株式会社 データベースシステム、データベース管理方法、データベース構造およびコンピュータプログラム
US8787947B2 (en) 2008-06-18 2014-07-22 Seven Networks, Inc. Application discovery on mobile devices
US8078158B2 (en) 2008-06-26 2011-12-13 Seven Networks, Inc. Provisioning applications for a mobile device
US8732265B2 (en) * 2008-06-27 2014-05-20 Microsoft Corporation Reconciliation and remediation with communication archives
US7869383B2 (en) * 2008-07-24 2011-01-11 Symform, Inc. Shared community storage network
US8108502B2 (en) * 2008-07-24 2012-01-31 Symform, Inc. Storage device for use in a shared community storage network
CN101334797B (zh) * 2008-08-04 2010-06-02 中兴通讯股份有限公司 一种分布式文件系统及其数据块一致性管理的方法
US7831682B2 (en) * 2008-08-08 2010-11-09 Amazon Technologies, Inc. Providing a reliable backing store for block data storage
CN103645953B (zh) 2008-08-08 2017-01-18 亚马逊技术有限公司 向执行中的程序提供对非本地块数据存储装置的可靠访问
US8543713B2 (en) * 2008-08-19 2013-09-24 Apple Inc. Computing environment arranged to support predetermined URL patterns
US8245246B2 (en) * 2008-09-09 2012-08-14 International Business Machines Corporation Method, system, and computer program product for implementing a web service interface
US20100070360A1 (en) * 2008-09-13 2010-03-18 At&T Intellectual Property I, L.P. System and method for creating a speech search platform for coupons
US8073887B2 (en) * 2008-10-09 2011-12-06 International Business Machines Corporation Representational state transfer (REST) service import editor
US8909759B2 (en) 2008-10-10 2014-12-09 Seven Networks, Inc. Bandwidth measurement
US8949915B2 (en) * 2008-10-20 2015-02-03 At&T Intellectual Property Ii, Lp System and method for delivery of Video-on-Demand
SE533007C2 (sv) 2008-10-24 2010-06-08 Ilt Productions Ab Distribuerad datalagring
US9137209B1 (en) * 2008-12-10 2015-09-15 Amazon Technologies, Inc. Providing local secure network access to remote services
US8429444B2 (en) * 2008-12-18 2013-04-23 Scality, S.A. Multipurpose storage system based upon a distributed hashing mechanism with transactional support and failover capability
US8239395B2 (en) 2008-12-26 2012-08-07 Sandisk Il Ltd. Storage device presenting to hosts only files compatible with a defined host capability
US20100169395A1 (en) * 2008-12-26 2010-07-01 Sandisk Il Ltd. Device and method for filtering a file system
US8943409B2 (en) * 2008-12-26 2015-01-27 Sandisk Il Ltd. Storage device managing playable content
US8166067B2 (en) * 2008-12-26 2012-04-24 Sandisk Il Ltd. Method and apparatus for providing access to files based on user identity
US8266107B2 (en) * 2009-03-11 2012-09-11 International Business Machines Corporation Method for mirroring a log file by threshold driven synchronization
JP5446378B2 (ja) * 2009-03-30 2014-03-19 日本電気株式会社 ストレージシステム
US8307003B1 (en) 2009-03-31 2012-11-06 Amazon Technologies, Inc. Self-service control environment
US8296419B1 (en) 2009-03-31 2012-10-23 Amazon Technologies, Inc. Dynamically modifying a cluster of computing nodes used for distributed execution of a program
US8060792B2 (en) * 2009-03-31 2011-11-15 Amazon Technologies, Inc. Monitoring and automated recovery of data instances
US8886586B2 (en) * 2009-05-24 2014-11-11 Pi-Coral, Inc. Method for making optimal selections based on multiple objective and subjective criteria
US20100299447A1 (en) * 2009-05-25 2010-11-25 Nilesh Anant Salvi Data Replication
US8886804B2 (en) * 2009-05-26 2014-11-11 Pi-Coral, Inc. Method for making intelligent data placement decisions in a computer network
US20100312749A1 (en) * 2009-06-04 2010-12-09 Microsoft Corporation Scalable lookup service for distributed database
US8407190B2 (en) 2009-06-30 2013-03-26 Commvault Systems, Inc. Performing data storage operations with a cloud environment, including containerized deduplication, data pruning, and data transfer
US8290904B2 (en) 2009-07-27 2012-10-16 International Business Machines Corporation Preventing transfer and duplication of redundantly referenced objects across nodes of an application system
US8639724B1 (en) * 2009-07-31 2014-01-28 Amazon Technologies, Inc. Management of cached object mapping information corresponding to a distributed storage system
US8521771B1 (en) 2009-07-31 2013-08-27 Amazon Technologies, Inc. Management of class-associated object mapping information corresponding to a distributed storage system
US8621182B1 (en) 2009-07-31 2013-12-31 Amazon Technologies, Inc. Management of object mapping information corresponding to a distributed storage system
US8285925B1 (en) 2009-07-31 2012-10-09 Amazon Technologies, Inc. Management of object mapping information corresponding to a distributed storage system
US8316213B1 (en) 2009-07-31 2012-11-20 Amazon Technologies, Inc. Management of object mapping information corresponding to a distributed storage system
US9049182B2 (en) * 2009-08-11 2015-06-02 Novell, Inc. Techniques for virtual representational state transfer (REST) interfaces
WO2011023134A1 (en) * 2009-08-28 2011-03-03 Beijing Innovation Works Technology Company Limited Method and system for managing distributed storage system through virtual file system
EP2476052A4 (en) 2009-09-09 2016-05-11 Varonis Systems Inc DATA MANAGEMENT AT ENTERPRISE LEVEL
US10229191B2 (en) * 2009-09-09 2019-03-12 Varonis Systems Ltd. Enterprise level data management
US8364636B2 (en) * 2009-09-14 2013-01-29 International Business Machines Corporation Real time data replication
US8381025B2 (en) * 2009-09-30 2013-02-19 Cleversafe, Inc. Method and apparatus for dispersed storage memory device selection
US8479078B2 (en) * 2009-10-30 2013-07-02 Cleversafe, Inc. Distributed storage network for modification of a data object
US20110119462A1 (en) * 2009-11-19 2011-05-19 Ocz Technology Group, Inc. Method for restoring and maintaining solid-state drive performance
US8346722B2 (en) * 2009-11-23 2013-01-01 Sap Ag Replica placement strategy for distributed data persistence
US8578038B2 (en) * 2009-11-30 2013-11-05 Nokia Corporation Method and apparatus for providing access to social content
US9110912B2 (en) * 2009-12-07 2015-08-18 Symantec Corporation Storage systems and methods
US20110153644A1 (en) * 2009-12-22 2011-06-23 Nokia Corporation Method and apparatus for utilizing a scalable data structure
US8892677B1 (en) 2010-01-29 2014-11-18 Google Inc. Manipulating objects in hosted storage
US8341118B2 (en) * 2010-02-09 2012-12-25 Google Inc. Method and system for dynamically replicating data within a distributed storage system
US8380659B2 (en) 2010-02-09 2013-02-19 Google Inc. Method and system for efficiently replicating data in non-relational databases
US8615485B2 (en) * 2010-02-09 2013-12-24 Google, Inc. Method and system for managing weakly mutable data in a distributed storage system
US8874523B2 (en) * 2010-02-09 2014-10-28 Google Inc. Method and system for providing efficient access to a tape storage system
US8352424B2 (en) 2010-02-09 2013-01-08 Google Inc. System and method for managing replicas of objects in a distributed storage system
US9305069B2 (en) * 2010-02-09 2016-04-05 Google Inc. Method and system for uploading data into a distributed storage system
US8423517B2 (en) * 2010-02-09 2013-04-16 Google Inc. System and method for determining the age of objects in the presence of unreliable clocks
US8862617B2 (en) * 2010-02-09 2014-10-14 Google Inc. System and method for replicating objects in a distributed storage system
US20110196900A1 (en) * 2010-02-09 2011-08-11 Alexandre Drobychev Storage of Data In A Distributed Storage System
WO2011100366A2 (en) * 2010-02-09 2011-08-18 Google Inc. System and method for managing replicas of objects in a distributed storage system
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US8396873B2 (en) * 2010-03-10 2013-03-12 Emc Corporation Index searching using a bloom filter
EP2372570B1 (en) * 2010-03-30 2019-06-19 Telefonaktiebolaget LM Ericsson (publ) Secure and flexible access to electronic documents in databases
US8868487B2 (en) 2010-04-12 2014-10-21 Sandisk Enterprise Ip Llc Event processing in a flash memory-based object store
US9164554B2 (en) 2010-04-12 2015-10-20 Sandisk Enterprise Ip Llc Non-volatile solid-state storage system supporting high bandwidth and random access
US9047351B2 (en) 2010-04-12 2015-06-02 Sandisk Enterprise Ip Llc Cluster of processing nodes with distributed global flash memory using commodity server technology
US8700842B2 (en) 2010-04-12 2014-04-15 Sandisk Enterprise Ip Llc Minimizing write operations to a flash memory-based object store
US8856593B2 (en) * 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US8438244B2 (en) 2010-04-19 2013-05-07 Microsoft Corporation Bandwidth-proportioned datacenters
US8533299B2 (en) 2010-04-19 2013-09-10 Microsoft Corporation Locator table and client library for datacenters
US9454441B2 (en) 2010-04-19 2016-09-27 Microsoft Technology Licensing, Llc Data layout for recovery and durability
US8447833B2 (en) 2010-04-19 2013-05-21 Microsoft Corporation Reading and writing during cluster growth phase
US8181061B2 (en) 2010-04-19 2012-05-15 Microsoft Corporation Memory management and recovery for datacenters
US9170892B2 (en) 2010-04-19 2015-10-27 Microsoft Technology Licensing, Llc Server failure recovery
US9813529B2 (en) 2011-04-28 2017-11-07 Microsoft Technology Licensing, Llc Effective circuits in packet-switched networks
US8996611B2 (en) * 2011-01-31 2015-03-31 Microsoft Technology Licensing, Llc Parallel serialization of request processing
WO2011133440A1 (en) * 2010-04-19 2011-10-27 Greenbytes, Inc. A method of minimizing the amount of network bandwidth needed to copy data between data deduplication storage systems
EP2387200B1 (en) 2010-04-23 2014-02-12 Compuverde AB Distributed data storage
US8375066B2 (en) 2010-04-26 2013-02-12 International Business Machines Corporation Generating unique identifiers
EP2564346B1 (en) * 2010-04-28 2018-09-26 Hewlett-Packard Enterprise Development LP Protecting the information encoded in a bloom filter using encoded bits of data
US20110270841A1 (en) * 2010-04-28 2011-11-03 Cisco Technology, Inc. Distributed Tag-Based Correlation Engine
US20120016901A1 (en) * 2010-05-18 2012-01-19 Google Inc. Data Storage and Processing Service
US8601263B1 (en) * 2010-05-18 2013-12-03 Google Inc. Storing encrypted objects
US9015126B2 (en) * 2010-05-22 2015-04-21 Nokia Corporation Method and apparatus for eventually consistent delete in a distributed data store
US10296596B2 (en) 2010-05-27 2019-05-21 Varonis Systems, Inc. Data tagging
CN108920502B (zh) 2010-05-27 2021-11-23 瓦欧尼斯系统有限公司 数据分类
US9355109B2 (en) * 2010-06-11 2016-05-31 The Research Foundation For The State University Of New York Multi-tier caching
US9002924B2 (en) 2010-06-17 2015-04-07 Microsoft Technology Licensing, Llc Contextual based information aggregation system
US8621269B2 (en) * 2010-06-22 2013-12-31 Cleversafe, Inc. Identifying a slice name information error in a dispersed storage network
US8560698B2 (en) * 2010-06-27 2013-10-15 International Business Machines Corporation Allocating unique identifiers using metadata
US8666939B2 (en) 2010-06-28 2014-03-04 Sandisk Enterprise Ip Llc Approaches for the replication of write sets
US8825745B2 (en) 2010-07-11 2014-09-02 Microsoft Corporation URL-facilitated access to spreadsheet elements
US8838783B2 (en) 2010-07-26 2014-09-16 Seven Networks, Inc. Distributed caching for resource and mobile network traffic management
EP3407673B1 (en) 2010-07-26 2019-11-20 Seven Networks, LLC Mobile network traffic coordination across multiple applications
GB2495877B (en) 2010-07-26 2013-10-02 Seven Networks Inc Distributed implementation of dynamic wireless traffic policy
GB2500333B (en) 2010-07-26 2014-10-08 Seven Networks Inc Mobile application traffic optimization
AU2011293350B2 (en) 2010-08-24 2015-10-29 Solano Labs, Inc. Method and apparatus for clearing cloud compute demand
US8392368B1 (en) 2010-08-27 2013-03-05 Disney Enterprises, Inc. System and method for distributing and accessing files in a distributed storage system
US8768981B1 (en) 2010-08-27 2014-07-01 Disney Enterprises, Inc. System and method for distributing and accessing files in a distributed storage system
US8290919B1 (en) * 2010-08-27 2012-10-16 Disney Enterprises, Inc. System and method for distributing and accessing files in a distributed storage system
US8549004B2 (en) * 2010-09-30 2013-10-01 Hewlett-Packard Development Company, L.P. Estimation of unique database values
US20120102453A1 (en) * 2010-10-21 2012-04-26 Microsoft Corporation Multi-dimensional objects
JP5822452B2 (ja) * 2010-10-22 2015-11-24 株式会社インテック ストレージサービス提供装置、システム、サービス提供方法、及びサービス提供プログラム
CN103620576B (zh) * 2010-11-01 2016-11-09 七网络公司 适用于移动应用程序行为和网络条件的缓存
WO2012060995A2 (en) 2010-11-01 2012-05-10 Michael Luna Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
WO2012061437A1 (en) 2010-11-01 2012-05-10 Michael Luna Cache defeat detection and caching of content addressed by identifiers intended to defeat cache
US8326985B2 (en) 2010-11-01 2012-12-04 Seven Networks, Inc. Distributed management of keep-alive message signaling for mobile network resource conservation and optimization
US8843153B2 (en) 2010-11-01 2014-09-23 Seven Networks, Inc. Mobile traffic categorization and policy for network use optimization while preserving user experience
WO2012060997A2 (en) 2010-11-01 2012-05-10 Michael Luna Application and network-based long poll request detection and cacheability assessment therefor
US9330196B2 (en) 2010-11-01 2016-05-03 Seven Networks, Llc Wireless traffic management system cache optimization using http headers
US8484314B2 (en) 2010-11-01 2013-07-09 Seven Networks, Inc. Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
US9060032B2 (en) 2010-11-01 2015-06-16 Seven Networks, Inc. Selective data compression by a distributed traffic management system to reduce mobile data traffic and signaling traffic
US8635280B2 (en) * 2010-11-04 2014-01-21 Hitachi, Ltd. Method for utilizing heterogeneous storage systems by cooperating with server side storage software
CN103404193B (zh) 2010-11-22 2018-06-05 七网络有限责任公司 调校数据传输以优化为通过无线网络的传输建立的连接
US8589479B2 (en) * 2010-11-22 2013-11-19 Infosys Limited Distributed registry for device discovery using quorum consensus protocol
EP3422775A1 (en) 2010-11-22 2019-01-02 Seven Networks, LLC Optimization of resource polling intervals to satisfy mobile device requests
US10108500B2 (en) 2010-11-30 2018-10-23 Red Hat, Inc. Replicating a group of data objects within a storage network
US9311374B2 (en) * 2010-11-30 2016-04-12 Red Hat, Inc. Replicating data objects within a storage network based on resource attributes
US8335761B1 (en) * 2010-12-02 2012-12-18 Emc International Company Replicating in a multi-copy environment
US8473775B1 (en) * 2010-12-14 2013-06-25 Amazon Technologies, Inc. Locality based quorums
US9020900B2 (en) * 2010-12-14 2015-04-28 Commvault Systems, Inc. Distributed deduplicated storage system
CN103299295A (zh) * 2010-12-20 2013-09-11 瑞典爱立信有限公司 对等网络中的搜索
US8504535B1 (en) * 2010-12-20 2013-08-06 Amazon Technologies, Inc. Erasure coding and redundant replication
US8650156B1 (en) 2010-12-23 2014-02-11 Amazon Technologies, Inc. System and method for fetching the latest versions of stored data objects
US8849825B1 (en) * 2010-12-23 2014-09-30 Amazon Technologies, Inc. System and method for clustering distributed hash table entries
US9043782B2 (en) * 2010-12-28 2015-05-26 Microsoft Technology Licensing, Llc Predictive software streaming
WO2012092261A2 (en) * 2010-12-29 2012-07-05 Citrix Systems, Inc. Systems and methods for multi-level tagging of encrypted items for additional security and efficient encrypted item determination
GB2501416B (en) 2011-01-07 2018-03-21 Seven Networks Llc System and method for reduction of mobile network traffic used for domain name system (DNS) queries
US8639786B2 (en) * 2011-01-07 2014-01-28 Red Hat, Inc. Consistency domains for replication in distributed computing
US9311135B2 (en) * 2011-01-18 2016-04-12 Scality, S.A. Method for generating universal objects identifiers in distributed multi-purpose storage systems
US20120209998A1 (en) * 2011-02-11 2012-08-16 Nokia Corporation Method and apparatus for providing access to social content based on membership activity
JP5589205B2 (ja) * 2011-02-23 2014-09-17 株式会社日立製作所 計算機システム及びデータ管理方法
US8510267B2 (en) 2011-03-08 2013-08-13 Rackspace Us, Inc. Synchronization of structured information repositories
US8554951B2 (en) 2011-03-08 2013-10-08 Rackspace Us, Inc. Synchronization and ordering of multiple accessess in a distributed system
US8712975B2 (en) * 2011-03-08 2014-04-29 Rackspace Us, Inc. Modification of an object replica
US8538926B2 (en) 2011-03-08 2013-09-17 Rackspace Us, Inc. Massively scalable object storage system for storing object replicas
US9767098B2 (en) 2012-08-08 2017-09-19 Amazon Technologies, Inc. Archival data storage system
US9563681B1 (en) 2012-08-08 2017-02-07 Amazon Technologies, Inc. Archival data flow management
US9213709B2 (en) 2012-08-08 2015-12-15 Amazon Technologies, Inc. Archival data identification
US9251097B1 (en) 2011-03-22 2016-02-02 Amazon Technologies, Inc. Redundant key management
US9218217B1 (en) 2011-03-28 2015-12-22 Google Inc. Opportunistic job processing in distributed computing resources with an instantiated native client environment with limited read/write access
US9384199B2 (en) 2011-03-31 2016-07-05 Microsoft Technology Licensing, Llc Distributed file system
US11418580B2 (en) * 2011-04-01 2022-08-16 Pure Storage, Inc. Selective generation of secure signatures in a distributed storage network
US8874515B2 (en) 2011-04-11 2014-10-28 Sandisk Enterprise Ip Llc Low level object version tracking using non-volatile memory write generations
US8825720B1 (en) * 2011-04-12 2014-09-02 Emc Corporation Scaling asynchronous reclamation of free space in de-duplicated multi-controller storage systems
WO2012145541A2 (en) 2011-04-19 2012-10-26 Seven Networks, Inc. Social caching for device resource sharing and management
KR101544485B1 (ko) * 2011-04-25 2015-08-17 주식회사 케이티 클라우드 스토리지 시스템에서 복수개의 복제본을 분산 저장하는 방법 및 장치
GB2496537B (en) 2011-04-27 2014-10-15 Seven Networks Inc System and method for making requests on behalf of a mobile device based on atmoic processes for mobile network traffic relief
WO2012149434A2 (en) 2011-04-27 2012-11-01 Seven Networks, Inc. Detecting and preserving state for satisfying application requests in a distributed proxy and cache system
US8806223B2 (en) * 2011-05-03 2014-08-12 Douglas Norman Crowe System and method for management of encrypted data
US20120284231A1 (en) * 2011-05-06 2012-11-08 International Business Machines Corporation Distributed, asynchronous and fault-tolerant storage system
US8433681B2 (en) * 2011-05-12 2013-04-30 Dell Products L.P. System and method for managing replication in an object storage system
US9396290B2 (en) * 2011-06-09 2016-07-19 Cloudian Holdings, Inc. Hybrid data management system and method for managing large, varying datasets
US8706782B2 (en) * 2011-06-12 2014-04-22 International Business Machines Corporation Self-contained placement of data objects in a data storage system
CN102833281B (zh) * 2011-06-15 2018-01-09 中兴通讯股份有限公司 一种分布式自增计数的实现方法、装置及系统
US8843502B2 (en) 2011-06-24 2014-09-23 Microsoft Corporation Sorting a dataset of incrementally received data
US8595267B2 (en) 2011-06-27 2013-11-26 Amazon Technologies, Inc. System and method for implementing a scalable data storage service
US8601000B1 (en) 2011-06-27 2013-12-03 Amazon Technologies, Inc. System and method for conditionally updating an item with attribute granularity
US8572091B1 (en) 2011-06-27 2013-10-29 Amazon Technologies, Inc. System and method for partitioning and indexing table data using a composite primary key
US8732517B1 (en) 2011-06-30 2014-05-20 Amazon Technologies, Inc. System and method for performing replica copying using a physical copy mechanism
US9052831B1 (en) 2011-06-30 2015-06-09 Amazon Technologies, Inc. System and method for performing live partitioning in a data store
US10877669B1 (en) 2011-06-30 2020-12-29 Amazon Technologies, Inc. System and method for providing a committed throughput level in a data store
US20130013888A1 (en) * 2011-07-06 2013-01-10 Futurewei Technologies, Inc. Method and Appartus For Index-Based Virtual Addressing
US8825985B2 (en) * 2011-07-14 2014-09-02 Dell Products L.P. Data transfer reduction in scale out architectures
US8601276B2 (en) * 2011-07-27 2013-12-03 Hewlett-Packard Development Company, L.P. Managing access to a secure content-part of a PPCD following introduction of the PPCD into a workflow
US8984581B2 (en) 2011-07-27 2015-03-17 Seven Networks, Inc. Monitoring mobile application activities for malicious traffic on a mobile device
US8538920B2 (en) * 2011-08-08 2013-09-17 Hewlett-Packard Development Company, L.P. System and method for storage service
KR20130020050A (ko) * 2011-08-18 2013-02-27 삼성전자주식회사 로컬리티 센서티브 해시의 버킷 구간 관리 장치 및 그 방법
US8682942B1 (en) 2011-08-23 2014-03-25 Amazon Technologies, Inc. System and method for performing object-modifying commands in an unstructured storage service
US9910904B2 (en) * 2011-08-30 2018-03-06 International Business Machines Corporation Replication of data objects from a source server to a target server
US8645978B2 (en) 2011-09-02 2014-02-04 Compuverde Ab Method for data maintenance
US8769138B2 (en) 2011-09-02 2014-07-01 Compuverde Ab Method for data retrieval from a distributed data storage system
US8997124B2 (en) 2011-09-02 2015-03-31 Compuverde Ab Method for updating data in a distributed data storage system
US8650365B2 (en) 2011-09-02 2014-02-11 Compuverde Ab Method and device for maintaining data in a data storage system comprising a plurality of data storage nodes
US9626378B2 (en) 2011-09-02 2017-04-18 Compuverde Ab Method for handling requests in a storage system and a storage node for a storage system
US9021053B2 (en) 2011-09-02 2015-04-28 Compuverde Ab Method and device for writing data to a data storage system comprising a plurality of data storage nodes
US8176283B1 (en) * 2011-09-26 2012-05-08 Google Inc. Permissions of objects in hosted storage
US9462466B2 (en) 2011-09-29 2016-10-04 Israel L'Heureux Gateway router supporting session hand-off and content sharing among clients of a local area network
US9197600B2 (en) 2011-09-29 2015-11-24 Israel L'Heureux Smart router
US8949371B1 (en) * 2011-09-29 2015-02-03 Symantec Corporation Time and space efficient method and system for detecting structured data in free text
US8930320B2 (en) * 2011-09-30 2015-01-06 Accenture Global Services Limited Distributed computing backup and recovery system
KR101862700B1 (ko) * 2011-10-11 2018-05-31 삼성전자주식회사 휴대용 단말기의 메타데이터 데이터베이스 복사를 이용한 멀티미디어 공유장치 및 방법
US11700412B2 (en) 2019-01-08 2023-07-11 Universal Electronics Inc. Universal voice assistant
US11451618B2 (en) 2014-05-15 2022-09-20 Universal Electronics Inc. Universal voice assistant
US11792185B2 (en) 2019-01-08 2023-10-17 Universal Electronics Inc. Systems and methods for associating services and/or devices with a voice assistant
WO2013074665A1 (en) 2011-11-14 2013-05-23 Google Inc. Data processing service
US8918503B2 (en) 2011-12-06 2014-12-23 Seven Networks, Inc. Optimization of mobile traffic directed to private networks and operator configurability thereof
WO2013086214A1 (en) 2011-12-06 2013-06-13 Seven Networks, Inc. A system of redundantly clustered machines to provide failover mechanisms for mobile traffic management and network resource conservation
CN102609278B (zh) * 2011-12-06 2015-07-08 北京航空航天大学 软件分发方法和装置
US9277443B2 (en) 2011-12-07 2016-03-01 Seven Networks, Llc Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol
US9009250B2 (en) 2011-12-07 2015-04-14 Seven Networks, Inc. Flexible and dynamic integration schemas of a traffic management system with various network operators for network traffic alleviation
US8861354B2 (en) 2011-12-14 2014-10-14 Seven Networks, Inc. Hierarchies and categories for management and deployment of policies for distributed wireless traffic optimization
US9832095B2 (en) 2011-12-14 2017-11-28 Seven Networks, Llc Operation modes for mobile traffic optimization and concurrent management of optimized and non-optimized traffic
US20130159511A1 (en) 2011-12-14 2013-06-20 Seven Networks, Inc. System and method for generating a report to a network operator by distributing aggregation of data
US8918675B2 (en) 2011-12-19 2014-12-23 Microsoft Corporation Rectifying corrupt sequence values in distributed systems
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9003021B2 (en) 2011-12-27 2015-04-07 Solidfire, Inc. Management of storage system access based on client performance and cluser health
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US8909202B2 (en) 2012-01-05 2014-12-09 Seven Networks, Inc. Detection and management of user interactions with foreground applications on a mobile device in distributed caching
US20140223026A1 (en) * 2012-01-10 2014-08-07 Intel Corporation Flow control mechanism for a storage server
US20130179481A1 (en) * 2012-01-11 2013-07-11 Tonian Inc. Managing objects stored in storage devices having a concurrent retrieval configuration
US8930312B1 (en) 2012-01-17 2015-01-06 Amazon Technologies, Inc. System and method for splitting a replicated data partition
US9116862B1 (en) 2012-01-17 2015-08-25 Amazon Technologies, Inc. System and method for data replication using a single master failover protocol
US9069827B1 (en) 2012-01-17 2015-06-30 Amazon Technologies, Inc. System and method for adjusting membership of a data replication group
US8843441B1 (en) 2012-01-17 2014-09-23 Amazon Technologies, Inc. System and method for maintaining a master replica for reads and writes in a data store
WO2013116856A1 (en) 2012-02-02 2013-08-08 Seven Networks, Inc. Dynamic categorization of applications for network access in a mobile network
WO2013116852A1 (en) 2012-02-03 2013-08-08 Seven Networks, Inc. User as an end point for profiling and optimizing the delivery of content and data in a wireless network
US8868711B2 (en) * 2012-02-03 2014-10-21 Microsoft Corporation Dynamic load balancing in a scalable environment
US9852010B2 (en) 2012-02-03 2017-12-26 Microsoft Technology Licensing, Llc Decoupling partitioning for scalability
US10860384B2 (en) 2012-02-03 2020-12-08 Microsoft Technology Licensing, Llc Managing partitions in a scalable environment
US9330107B1 (en) * 2012-02-08 2016-05-03 Google Inc. System and method for storing metadata for a file in a distributed storage system
US9189484B1 (en) * 2012-02-23 2015-11-17 Amazon Technologies, Inc. Automatic transcoding of a file uploaded to a remote storage system
GB201203558D0 (en) * 2012-02-29 2012-04-11 Qando Service Inc Delivering data over a network
US9135064B2 (en) 2012-03-07 2015-09-15 Sandisk Enterprise Ip Llc Fine grained adaptive throttling of background processes
US9094309B2 (en) 2012-03-13 2015-07-28 International Business Machines Corporation Detecting transparent network communication interception appliances
US8918392B1 (en) * 2012-03-29 2014-12-23 Amazon Technologies, Inc. Data storage mapping and management
US8930364B1 (en) 2012-03-29 2015-01-06 Amazon Technologies, Inc. Intelligent data integration
US8935203B1 (en) 2012-03-29 2015-01-13 Amazon Technologies, Inc. Environment-sensitive distributed data management
US8832234B1 (en) 2012-03-29 2014-09-09 Amazon Technologies, Inc. Distributed data storage controller
US9628438B2 (en) * 2012-04-06 2017-04-18 Exablox Consistent ring namespaces facilitating data storage and organization in network infrastructures
US8812695B2 (en) 2012-04-09 2014-08-19 Seven Networks, Inc. Method and system for management of a virtual network connection without heartbeat messages
US10263899B2 (en) 2012-04-10 2019-04-16 Seven Networks, Llc Enhanced customer service for mobile carriers using real-time and historical mobile application and traffic or optimization data associated with mobile devices in a mobile network
CN103377069A (zh) * 2012-04-26 2013-10-30 东方有线网络有限公司 一种基于日志文件写入外挂nas实现虚拟化计算部署的新方法
US11487707B2 (en) * 2012-04-30 2022-11-01 International Business Machines Corporation Efficient file path indexing for a content repository
US9317511B2 (en) * 2012-06-19 2016-04-19 Infinidat Ltd. System and method for managing filesystem objects
US8504519B1 (en) 2012-06-27 2013-08-06 Dropbox, Inc. Determining a preferred modified version from among multiple modified versions for synchronized files
US9672274B1 (en) * 2012-06-28 2017-06-06 Amazon Technologies, Inc. Scalable message aggregation
WO2014011216A1 (en) 2012-07-13 2014-01-16 Seven Networks, Inc. Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications
US8935221B1 (en) 2012-07-25 2015-01-13 Amazon Technologies, Inc. Object loss reporting in a data storage system
US10528262B1 (en) * 2012-07-26 2020-01-07 EMC IP Holding Company LLC Replication-based federation of scalable data across multiple sites
US9300569B2 (en) * 2012-07-31 2016-03-29 Cisco Technology, Inc. Compressing data packet routing information using bloom filters
US9092441B1 (en) 2012-08-08 2015-07-28 Amazon Technologies, Inc. Archival data organization and management
US9250811B1 (en) 2012-08-08 2016-02-02 Amazon Technologies, Inc. Data write caching for sequentially written media
US9225675B2 (en) 2012-08-08 2015-12-29 Amazon Technologies, Inc. Data storage application programming interface
US9830111B1 (en) 2012-08-08 2017-11-28 Amazon Technologies, Inc. Data storage space management
US10120579B1 (en) 2012-08-08 2018-11-06 Amazon Technologies, Inc. Data storage management for sequentially written media
US8805793B2 (en) 2012-08-08 2014-08-12 Amazon Technologies, Inc. Data storage integrity validation
US9354683B2 (en) 2012-08-08 2016-05-31 Amazon Technologies, Inc. Data storage power management
US8959067B1 (en) 2012-08-08 2015-02-17 Amazon Technologies, Inc. Data storage inventory indexing
US9904788B2 (en) 2012-08-08 2018-02-27 Amazon Technologies, Inc. Redundant key management
US9652487B1 (en) 2012-08-08 2017-05-16 Amazon Technologies, Inc. Programmable checksum calculations on data storage devices
US9779035B1 (en) 2012-08-08 2017-10-03 Amazon Technologies, Inc. Log-based data storage on sequentially written media
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9778856B2 (en) 2012-08-30 2017-10-03 Microsoft Technology Licensing, Llc Block-level access to parallel storage
US9137690B2 (en) * 2012-09-18 2015-09-15 Tektronix, Inc. Multiple protocol session record mapper
US20140089619A1 (en) * 2012-09-27 2014-03-27 Infinera Corporation Object replication framework for a distributed computing environment
US10157124B1 (en) * 2012-09-28 2018-12-18 EMC IP Holding Company, LLC Method, apparatus, and system for managing data storage with an application programming interface
US9161258B2 (en) 2012-10-24 2015-10-13 Seven Networks, Llc Optimized and selective management of policy deployment to mobile clients in a congested network to prevent further aggravation of network congestion
US8959301B2 (en) * 2012-11-09 2015-02-17 International Business Machines Corporation Accessing data in a storage system
US9209973B2 (en) * 2012-11-20 2015-12-08 Google Inc. Delegate authorization in cloud-based storage system
US9112809B2 (en) * 2012-11-21 2015-08-18 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for controlling utilization in a horizontally scaled software application
US9727522B1 (en) 2012-12-14 2017-08-08 Amazon Technologies, Inc. Multi-tenant storage service object lifecycle management using transition job objects
US9052942B1 (en) 2012-12-14 2015-06-09 Amazon Technologies, Inc. Storage object deletion job management
US9658983B1 (en) * 2012-12-14 2017-05-23 Amazon Technologies, Inc. Lifecycle support for storage objects having multiple durability levels specifying different numbers of versions
US9063946B1 (en) * 2012-12-14 2015-06-23 Amazon Technologies, Inc. Backoff-based scheduling of storage object deletions
US9002805B1 (en) * 2012-12-14 2015-04-07 Amazon Technologies, Inc. Conditional storage object deletion
US9355060B1 (en) 2012-12-14 2016-05-31 Amazon Technologies, Inc. Storage service lifecycle policy transition management
US9417917B1 (en) 2012-12-14 2016-08-16 Amazon Technologies, Inc. Equitable resource allocation for storage object deletion
US9307493B2 (en) 2012-12-20 2016-04-05 Seven Networks, Llc Systems and methods for application management of mobile device radio state promotion and demotion
US9277010B2 (en) * 2012-12-21 2016-03-01 Atlantis Computing, Inc. Systems and apparatuses for aggregating nodes to form an aggregated virtual storage for a virtualized desktop environment
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9015123B1 (en) * 2013-01-16 2015-04-21 Netapp, Inc. Methods and systems for identifying changed data in an expandable storage volume
US9576141B2 (en) * 2013-01-22 2017-02-21 Amazon Technologies, Inc. Access controls on the use of freeform metadata
US9530020B2 (en) * 2013-01-22 2016-12-27 Amazon Technologies, Inc. Use of freeform metadata for access control
AU2014209475B2 (en) * 2013-01-22 2016-10-13 Amazon Technologies, Inc. Use of freeform metadata for access control
US10341281B2 (en) * 2013-01-22 2019-07-02 Amazon Technologies, Inc. Access control policies associated with freeform metadata
US9271238B2 (en) 2013-01-23 2016-02-23 Seven Networks, Llc Application or context aware fast dormancy
US8874761B2 (en) 2013-01-25 2014-10-28 Seven Networks, Inc. Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
KR101474320B1 (ko) * 2013-02-04 2014-12-18 아주대학교산학협력단 위치기반 컨텐츠를 위한 위치기반 컨텐츠 중심 네트워킹 방법
US10558581B1 (en) 2013-02-19 2020-02-11 Amazon Technologies, Inc. Systems and techniques for data recovery in a keymapless data storage system
DE102013101863A1 (de) * 2013-02-26 2014-08-28 Fujitsu Technology Solutions Intellectual Property Gmbh Hochverfügbares Hauptspeicher-Datenbanksystem, Arbeitsverfahren und deren Verwendungen
EP2962218B1 (en) * 2013-02-27 2021-04-07 Hitachi Vantara LLC Decoupled content and metadata in a distributed object storage ecosystem
US9954843B2 (en) * 2013-02-28 2018-04-24 Microsoft Technology Licensing, Llc Web ticket based upon a symmetric key usable for user authentication
JP2014170491A (ja) * 2013-03-05 2014-09-18 Fuji Xerox Co Ltd 中継装置、システム及びプログラム
US9326185B2 (en) 2013-03-11 2016-04-26 Seven Networks, Llc Mobile network congestion recognition for optimization of mobile traffic
US10313345B2 (en) 2013-03-11 2019-06-04 Amazon Technologies, Inc. Application marketplace for virtual desktops
US9148350B1 (en) 2013-03-11 2015-09-29 Amazon Technologies, Inc. Automated data synchronization
US10142406B2 (en) 2013-03-11 2018-11-27 Amazon Technologies, Inc. Automated data center selection
US9002982B2 (en) * 2013-03-11 2015-04-07 Amazon Technologies, Inc. Automated desktop placement
US20140279946A1 (en) * 2013-03-12 2014-09-18 Futurewei Technologies, Inc. System and Method for Automatic Integrity Checks in a Key/Value Store
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US10740323B1 (en) * 2013-03-15 2020-08-11 Nuodb, Inc. Global uniqueness checking in distributed databases
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
CN104050201B (zh) * 2013-03-15 2018-04-13 伊姆西公司 用于多租户分布式环境中的数据管理的方法和设备
US11176111B2 (en) 2013-03-15 2021-11-16 Nuodb, Inc. Distributed database management system with dynamically split B-tree indexes
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US20190005261A1 (en) * 2013-04-01 2019-01-03 International Business Machines Corporation Secure shared vault with encrypted private indices
US10366072B2 (en) * 2013-04-05 2019-07-30 Catalogic Software, Inc. De-duplication data bank
US9330158B1 (en) * 2013-05-20 2016-05-03 Amazon Technologies, Inc. Range query capacity allocation
US9471657B1 (en) * 2013-05-20 2016-10-18 Amazon Technologies, Inc. Range query capacity allocation
US10963431B2 (en) * 2013-06-11 2021-03-30 Red Hat, Inc. Storing an object in a distributed storage system
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9559900B1 (en) * 2013-06-13 2017-01-31 Amazon Technologies, Inc. Dedicated endpoints for network-accessible services
US9304815B1 (en) * 2013-06-13 2016-04-05 Amazon Technologies, Inc. Dynamic replica failure detection and healing
IN2013MU02097A (ja) * 2013-06-20 2015-06-05 Tata Consultancy Services Ltd
US10158579B2 (en) 2013-06-21 2018-12-18 Amazon Technologies, Inc. Resource silos at network-accessible services
US10623243B2 (en) 2013-06-26 2020-04-14 Amazon Technologies, Inc. Management of computing sessions
US10686646B1 (en) 2013-06-26 2020-06-16 Amazon Technologies, Inc. Management of computing sessions
US10862731B1 (en) * 2013-06-27 2020-12-08 EMC IP Holding Company LLC Utilizing demonstration data based on dynamically determining feature availability
US10078683B2 (en) 2013-07-02 2018-09-18 Jpmorgan Chase Bank, N.A. Big data centralized intelligence system
US9065765B2 (en) 2013-07-22 2015-06-23 Seven Networks, Inc. Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9253514B2 (en) * 2013-07-25 2016-02-02 Alcatel Lucent Requests for emergency services through an IPTV network
US10116762B2 (en) * 2013-08-06 2018-10-30 Walmart Apollo, Llc System and method for storing and processing web service requests
US10419572B2 (en) * 2013-08-06 2019-09-17 Walmart Apollo, Llc Caching system and method
US9336265B2 (en) 2013-08-06 2016-05-10 Wal-Mart Stores, Inc. System and method for processing web service transactions using timestamp data
US10803015B2 (en) 2013-08-06 2020-10-13 Walmart Apollo, Llc Caching system and method
US10250579B2 (en) * 2013-08-13 2019-04-02 Alcatel Lucent Secure file transfers within network-based storage
US11422907B2 (en) 2013-08-19 2022-08-23 Microsoft Technology Licensing, Llc Disconnected operation for systems utilizing cloud storage
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9361221B1 (en) 2013-08-26 2016-06-07 Sandisk Technologies Inc. Write amplification reduction through reliable writes during garbage collection
US10120868B2 (en) * 2013-09-04 2018-11-06 Red Hat, Inc. Outcast index in a distributed file system
US9313274B2 (en) * 2013-09-05 2016-04-12 Google Inc. Isolating clients of distributed storage systems
US9430775B2 (en) 2013-09-17 2016-08-30 Responsys, Inc. System and method for analyzing and tuning a marketing program
US9648040B1 (en) * 2013-09-19 2017-05-09 Amazon Technologies, Inc. Authorization check using a web service request
US10203904B1 (en) * 2013-09-24 2019-02-12 EMC IP Holding Company LLC Configuration of replication
US9442700B2 (en) 2013-09-30 2016-09-13 MuleSoft, Inc. API notebook tool
JP2015072629A (ja) * 2013-10-03 2015-04-16 富士通株式会社 データ処理プログラム及びデータ処理方法
US9703814B1 (en) * 2013-10-15 2017-07-11 Amazon Technologies, Inc. Local key-value database synchronization
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9560173B2 (en) * 2013-10-22 2017-01-31 Vmware, Inc. Techniques for improving SYN cache performance
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US10635644B2 (en) 2013-11-11 2020-04-28 Amazon Technologies, Inc. Partition-based data stream processing framework
US9720989B2 (en) 2013-11-11 2017-08-01 Amazon Technologies, Inc. Dynamic partitioning techniques for data streams
US9276959B2 (en) * 2013-11-11 2016-03-01 Amazon Technologies, Inc. Client-configurable security options for data streams
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US20150150068A1 (en) * 2013-11-22 2015-05-28 Mediamind Technologies Ltd. Method and system for cross-channel media assets management
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
CN103581339A (zh) * 2013-11-25 2014-02-12 广东电网公司汕头供电局 基于云计算的存储资源分配监控处理方法
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
US9747353B2 (en) * 2013-12-10 2017-08-29 Sap Se Database content publisher
US9438506B2 (en) * 2013-12-11 2016-09-06 Amazon Technologies, Inc. Identity and access management-based access control in virtual networks
US9251109B2 (en) * 2013-12-20 2016-02-02 EXILANT Technologies Private Limited Communication with accessories
US10592475B1 (en) 2013-12-27 2020-03-17 Amazon Technologies, Inc. Consistent data storage in distributed computing systems
US9519696B1 (en) 2014-01-07 2016-12-13 Amazon Technologies, Inc. Data transformation policies
US10331895B1 (en) * 2014-01-07 2019-06-25 Amazon Technologies, Inc. Forced data transformation policy
GB2522432A (en) * 2014-01-23 2015-07-29 Locpin Ltd Computer system and method
US9798631B2 (en) 2014-02-04 2017-10-24 Microsoft Technology Licensing, Llc Block storage by decoupling ordering from durability
US9331994B2 (en) 2014-02-07 2016-05-03 Bank Of America Corporation User authentication based on historical transaction data
US9223951B2 (en) 2014-02-07 2015-12-29 Bank Of America Corporation User authentication based on other applications
US9313190B2 (en) 2014-02-07 2016-04-12 Bank Of America Corporation Shutting down access to all user accounts
US9208301B2 (en) 2014-02-07 2015-12-08 Bank Of America Corporation Determining user authentication requirements based on the current location of the user in comparison to the users's normal boundary of location
US9647999B2 (en) * 2014-02-07 2017-05-09 Bank Of America Corporation Authentication level of function bucket based on circumstances
US9213814B2 (en) 2014-02-07 2015-12-15 Bank Of America Corporation User authentication based on self-selected preferences
US9317674B2 (en) 2014-02-07 2016-04-19 Bank Of America Corporation User authentication based on fob/indicia scan
US9185101B2 (en) 2014-02-07 2015-11-10 Bank Of America Corporation User authentication based on historical user behavior
US9390242B2 (en) 2014-02-07 2016-07-12 Bank Of America Corporation Determining user authentication requirements based on the current location of the user being within a predetermined area requiring altered authentication requirements
US9965606B2 (en) 2014-02-07 2018-05-08 Bank Of America Corporation Determining user authentication based on user/device interaction
US9286450B2 (en) 2014-02-07 2016-03-15 Bank Of America Corporation Self-selected user access based on specific authentication types
US9305149B2 (en) * 2014-02-07 2016-04-05 Bank Of America Corporation Sorting mobile banking functions into authentication buckets
US9213974B2 (en) 2014-02-07 2015-12-15 Bank Of America Corporation Remote revocation of application access based on non-co-location of a transaction vehicle and a mobile device
US9185117B2 (en) 2014-02-07 2015-11-10 Bank Of America Corporation User authentication by geo-location and proximity to user's close network
US9317673B2 (en) 2014-02-07 2016-04-19 Bank Of America Corporation Providing authentication using previously-validated authentication credentials
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9721248B2 (en) 2014-03-04 2017-08-01 Bank Of America Corporation ATM token cash withdrawal
US9600817B2 (en) 2014-03-04 2017-03-21 Bank Of America Corporation Foreign exchange token
US9721268B2 (en) 2014-03-04 2017-08-01 Bank Of America Corporation Providing offers associated with payment credentials authenticated in a specific digital wallet
US9406065B2 (en) 2014-03-04 2016-08-02 Bank Of America Corporation Customer token preferences interface
US9600844B2 (en) 2014-03-04 2017-03-21 Bank Of America Corporation Foreign cross-issued token
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
JP2015179444A (ja) * 2014-03-19 2015-10-08 株式会社東芝 データ受信装置、データ受信方法、およびコンピュータプログラム
CN104954411A (zh) * 2014-03-31 2015-09-30 腾讯科技(深圳)有限公司 分布式系统共享网络资源的方法、终端及系统
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US10956050B2 (en) 2014-03-31 2021-03-23 Sandisk Enterprise Ip Llc Methods and systems for efficient non-isolated transactions
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US10372685B2 (en) 2014-03-31 2019-08-06 Amazon Technologies, Inc. Scalable file storage service
US9916356B2 (en) 2014-03-31 2018-03-13 Sandisk Technologies Llc Methods and systems for insert optimization of tiered data structures
US10264071B2 (en) 2014-03-31 2019-04-16 Amazon Technologies, Inc. Session management in distributed storage systems
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US10025873B2 (en) 2014-04-18 2018-07-17 Walmart Apollo, Llc System and method for storing and processing database requests
US10069914B1 (en) 2014-04-21 2018-09-04 David Lane Smith Distributed storage system for long term data storage
US10516732B2 (en) * 2014-05-05 2019-12-24 Datadirect Networks, Inc. Disconnected ingest in a distributed storage system
US10496671B1 (en) * 2014-05-05 2019-12-03 EMC IP Holding Company LLC Zone consistency
US11445011B2 (en) 2014-05-15 2022-09-13 Universal Electronics Inc. Universal voice assistant
US10063625B2 (en) * 2014-05-15 2018-08-28 Universal Electronics Inc. System and method for appliance detection and app configuration
US10528536B1 (en) * 2014-05-19 2020-01-07 Amazon Technologies, Inc. Managing data object versions in a storage service
US10503713B1 (en) 2014-05-19 2019-12-10 Amazon Technologies, Inc. Criterion-based retention of data object versions
CN104007938B (zh) * 2014-05-29 2017-04-05 华为技术有限公司 在存储网络中的键值生成方法及装置
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
WO2016006223A1 (ja) * 2014-07-11 2016-01-14 日本電気株式会社 配置装置、配置方法及び配置プログラムを記憶する記録媒体
CN107077691B (zh) 2014-07-14 2021-07-13 甲骨文国际公司 用于确定数据库高速缓存命中的基于年龄的策略
US10565611B2 (en) 2014-07-18 2020-02-18 Oracle International Corporation Controlling real-time execution of internet communication campaigns with parameterizable flow control structures
US10277414B2 (en) 2014-07-18 2019-04-30 Oracle International Corporation Communication gateway services in a networked message distribution system
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US9560136B2 (en) * 2014-08-07 2017-01-31 Sap Se High speed communication protocol
US9860314B2 (en) * 2014-08-19 2018-01-02 Ciena Corporation Data synchronization system and methods in a network using a highly-available key-value storage system
WO2016027455A1 (ja) * 2014-08-21 2016-02-25 日本電気株式会社 情報処理装置、データ処理方法、及び、記録媒体
US9792315B2 (en) 2014-08-21 2017-10-17 Dropbox, Inc. Multi-user search system with methodology for bypassing instant indexing
US9723064B1 (en) * 2014-09-02 2017-08-01 Amazon Technologies, Inc. Hybrid quorum policies for durable consensus in distributed systems
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US10122687B2 (en) 2014-09-14 2018-11-06 Sophos Limited Firewall techniques for colored objects on endpoints
US9965627B2 (en) 2014-09-14 2018-05-08 Sophos Limited Labeling objects on an endpoint for encryption management
US9537841B2 (en) * 2014-09-14 2017-01-03 Sophos Limited Key management for compromised enterprise endpoints
CN105491094B (zh) * 2014-09-24 2019-12-17 腾讯科技(深圳)有限公司 处理http请求的方法及装置
WO2016051512A1 (ja) 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
US9672248B2 (en) 2014-10-08 2017-06-06 International Business Machines Corporation Embracing and exploiting data skew during a join or groupby
JP6492172B2 (ja) * 2014-10-14 2019-03-27 アイディーエーシー ホールディングス インコーポレイテッド Icnネットワークにおいてipデバイスのアンカリング
WO2016061658A1 (en) * 2014-10-20 2016-04-28 Tsx Inc. Database updating with latency tolerance
US9870368B2 (en) * 2014-10-27 2018-01-16 Cohesity, Inc. Concurrent access and transactions in a distributed file system
US10244038B2 (en) * 2014-11-03 2019-03-26 Jive Communications, Inc. Coordinative datacenter processing in a network-based communication system
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US10073730B1 (en) * 2014-11-19 2018-09-11 Amazon Technologies, Inc. Single quorum verification of erasure coded data
US20160147458A1 (en) * 2014-11-25 2016-05-26 Samsung Electronics Co., Ltd. Computing system with heterogeneous storage and method of operation thereof
US10277522B1 (en) * 2014-11-26 2019-04-30 Amazon Technologies, Inc. Automated association of computing resources with resource creators for usage allocation
US9753936B1 (en) * 2014-12-01 2017-09-05 Amazon Technologies, Inc. Metering data in distributed storage environments
US10282371B1 (en) * 2014-12-02 2019-05-07 Western Digital Technologies, Inc. Object storage device with probabilistic data structure
US10887253B1 (en) * 2014-12-04 2021-01-05 Amazon Technologies, Inc. Message queuing with fan out
US9917810B2 (en) 2014-12-09 2018-03-13 Oracle International Corporation Common aggregator framework for SMS aggregators
US10769023B1 (en) * 2014-12-17 2020-09-08 Amazon Technologies, Inc. Backup of structured query language server to object-based data storage service
US9959274B2 (en) * 2014-12-19 2018-05-01 Amazon Technologies, Inc. Volume-level redundancy coding techniques for sequential transfer optimized storage devices
US9525672B2 (en) * 2014-12-19 2016-12-20 Amazon Technologies, Inc. Multi-faceted compute instance identity
US10909069B2 (en) * 2015-01-05 2021-02-02 Iguazio Systems Ltd. Service oriented data management and architecture
EP3248106A4 (en) * 2015-01-20 2018-09-12 Ultrata LLC Distributed index for fault tolerant object memory fabric
US20180004430A1 (en) * 2015-01-30 2018-01-04 Hewlett Packard Enterprise Development Lp Chunk Monitoring
US9183303B1 (en) 2015-01-30 2015-11-10 Dropbox, Inc. Personal content item searching system and method
US9384226B1 (en) 2015-01-30 2016-07-05 Dropbox, Inc. Personal content item searching system and method
US10599621B1 (en) 2015-02-02 2020-03-24 Amazon Technologies, Inc. Distributed processing framework file system fast on-demand storage listing
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US20160239499A1 (en) * 2015-02-12 2016-08-18 Red Hat, Inc. Object Creation Based on Copying Objects Corresponding to Similar Entities
US10146806B2 (en) * 2015-02-12 2018-12-04 Oracle International Corporation Adaptive resolution hsitogram
CN105991720B (zh) * 2015-02-13 2019-06-18 阿里巴巴集团控股有限公司 配置变更方法、设备及系统
US10505862B1 (en) * 2015-02-18 2019-12-10 Amazon Technologies, Inc. Optimizing for infrastructure diversity constraints in resource placement
US10970285B2 (en) * 2015-02-26 2021-04-06 Red Hat, Inc. Grid topology change in a distributed data grid when iterating on the contents of the data grid
US10650011B2 (en) 2015-03-20 2020-05-12 International Business Machines Corporation Efficient performance of insert and point query operations in a column store
US9922064B2 (en) 2015-03-20 2018-03-20 International Business Machines Corporation Parallel build of non-partitioned join hash tables and non-enforced N:1 join hash tables
US10303791B2 (en) 2015-03-20 2019-05-28 International Business Machines Corporation Efficient join on dynamically compressed inner for improved fit into cache hierarchy
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9967093B2 (en) * 2015-03-25 2018-05-08 Intel Corporation Techniques for securing and controlling access to data
US9715502B1 (en) * 2015-03-25 2017-07-25 Amazon Technologies, Inc. Distributed data migration using chunking
US10831736B2 (en) 2015-03-27 2020-11-10 International Business Machines Corporation Fast multi-tier indexing supporting dynamic update
US10108653B2 (en) 2015-03-27 2018-10-23 International Business Machines Corporation Concurrent reads and inserts into a data structure without latching or waiting by readers
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US10963430B2 (en) 2015-04-01 2021-03-30 Dropbox, Inc. Shared workspaces with selective content item synchronization
US9922201B2 (en) 2015-04-01 2018-03-20 Dropbox, Inc. Nested namespaces for selective content sharing
US10540329B2 (en) * 2015-04-23 2020-01-21 Datadirect Networks, Inc. Dynamic data protection and distribution responsive to external information sources
US10026070B2 (en) 2015-04-28 2018-07-17 Solano Labs, Inc. Cost optimization of cloud computing resources
US10169125B2 (en) * 2015-05-29 2019-01-01 International Business Machines Corporation Re-encoding data in a dispersed storage network
US9998150B1 (en) * 2015-06-16 2018-06-12 Amazon Technologies, Inc. Layered data redundancy coding techniques for layer-local data recovery
US10270475B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Layered redundancy coding for encoded parity data
US10977128B1 (en) 2015-06-16 2021-04-13 Amazon Technologies, Inc. Adaptive data loss mitigation for redundancy coding systems
US10270476B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Failure mode-sensitive layered redundancy coding techniques
US10298259B1 (en) 2015-06-16 2019-05-21 Amazon Technologies, Inc. Multi-layered data redundancy coding techniques
US10311020B1 (en) 2015-06-17 2019-06-04 Amazon Technologies, Inc. Locality-sensitive data retrieval for redundancy coded data storage systems
US9853662B1 (en) 2015-06-17 2017-12-26 Amazon Technologies, Inc. Random access optimization for redundancy coded data storage systems
US10009044B1 (en) * 2015-06-17 2018-06-26 Amazon Technologies, Inc. Device type differentiation for redundancy coded data storage systems
US9838041B1 (en) * 2015-06-17 2017-12-05 Amazon Technologies, Inc. Device type differentiation for redundancy coded data storage systems
US9825652B1 (en) 2015-06-17 2017-11-21 Amazon Technologies, Inc. Inter-facility network traffic optimization for redundancy coded data storage systems
US9866242B1 (en) 2015-06-17 2018-01-09 Amazon Technologies, Inc. Throughput optimization for redundancy coded data storage systems
US9838042B1 (en) 2015-06-17 2017-12-05 Amazon Technologies, Inc. Data retrieval optimization for redundancy coded data storage systems with static redundancy ratios
US10623258B2 (en) * 2015-06-22 2020-04-14 Arista Networks, Inc. Data analytics on internal state
US10162704B1 (en) 2015-07-01 2018-12-25 Amazon Technologies, Inc. Grid encoded data storage systems for efficient data repair
US10394762B1 (en) 2015-07-01 2019-08-27 Amazon Technologies, Inc. Determining data redundancy in grid encoded data storage systems
US10089176B1 (en) 2015-07-01 2018-10-02 Amazon Technologies, Inc. Incremental updates of grid encoded data storage systems
US9998539B1 (en) 2015-07-01 2018-06-12 Amazon Technologies, Inc. Non-parity in grid encoded data storage systems
US10108819B1 (en) 2015-07-01 2018-10-23 Amazon Technologies, Inc. Cross-datacenter extension of grid encoded data storage systems
US10198311B1 (en) 2015-07-01 2019-02-05 Amazon Technologies, Inc. Cross-datacenter validation of grid encoded data storage systems
US9904589B1 (en) 2015-07-01 2018-02-27 Amazon Technologies, Inc. Incremental media size extension for grid encoded data storage systems
US9959167B1 (en) 2015-07-01 2018-05-01 Amazon Technologies, Inc. Rebundling grid encoded data storage systems
WO2017023385A2 (en) * 2015-07-07 2017-02-09 Private Machines Inc. Secure searchable and shareable remote storage system and method
US10402372B2 (en) 2015-07-27 2019-09-03 Sas Institute Inc. Distributed data storage grouping
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US10846115B1 (en) * 2015-08-10 2020-11-24 Amazon Technologies, Inc. Techniques for managing virtual instance data in multitenant environments
CN105208141A (zh) * 2015-08-19 2015-12-30 魅族科技(中国)有限公司 一种设备编码处理方法和服务器
US10248678B2 (en) * 2015-08-25 2019-04-02 International Business Machines Corporation Enabling placement control for consistent hashing-based object stores
US10153918B2 (en) 2015-08-27 2018-12-11 Nicira, Inc. Joining an application cluster
US10462011B2 (en) * 2015-08-27 2019-10-29 Nicira, Inc. Accessible application cluster topology
US10122626B2 (en) 2015-08-27 2018-11-06 Nicira, Inc. Self-managed overlay networks
US9928141B1 (en) 2015-09-21 2018-03-27 Amazon Technologies, Inc. Exploiting variable media size in grid encoded data storage systems
US10127243B2 (en) 2015-09-22 2018-11-13 International Business Machines Corporation Fast recovery using self-describing replica files in a distributed storage system
US11386060B1 (en) * 2015-09-23 2022-07-12 Amazon Technologies, Inc. Techniques for verifiably processing data in distributed computing systems
US9940474B1 (en) 2015-09-29 2018-04-10 Amazon Technologies, Inc. Techniques and systems for data segregation in data storage systems
US10148588B1 (en) * 2015-09-30 2018-12-04 EMC IP Holding Company LLC Partitioned performance: using resource account aggregates to throttle at the granular level
US10133764B2 (en) 2015-09-30 2018-11-20 Sandisk Technologies Llc Reduction of write amplification in object store
EP3151481B1 (en) * 2015-09-30 2019-11-06 Ricoh Company, Ltd. Communication terminal, communication system, and output method
US10216748B1 (en) 2015-09-30 2019-02-26 EMC IP Holding Company LLC Segment index access management in a de-duplication system
US10158623B2 (en) 2015-09-30 2018-12-18 International Business Machines Corporation Data theft deterrence
US9825956B2 (en) * 2015-10-06 2017-11-21 Netflix, Inc. Systems and methods for access permission revocation and reinstatement
US10375054B2 (en) 2015-10-06 2019-08-06 Netflix, Inc. Securing user-accessed applications in a distributed computing environment
US9697269B2 (en) 2015-10-29 2017-07-04 Dropbox, Inc. Content item block replication protocol for multi-premises hosting of digital content items
US10691718B2 (en) 2015-10-29 2020-06-23 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US9641539B1 (en) 2015-10-30 2017-05-02 Bank Of America Corporation Passive based security escalation to shut off of application based on rules event triggering
US9619165B1 (en) 2015-10-30 2017-04-11 Sandisk Technologies Llc Convertible leaf memory mapping
US9820148B2 (en) 2015-10-30 2017-11-14 Bank Of America Corporation Permanently affixed un-decryptable identifier associated with mobile device
US10021565B2 (en) 2015-10-30 2018-07-10 Bank Of America Corporation Integrated full and partial shutdown application programming interface
US9729536B2 (en) 2015-10-30 2017-08-08 Bank Of America Corporation Tiered identification federated authentication network system
US10127266B2 (en) 2015-11-03 2018-11-13 International Business Machines Corporation Scalable virtual namespace and semantic policy management for object storage
US10452681B1 (en) * 2015-11-30 2019-10-22 Amazon Technologies, Inc. Replication group pools for fast provisioning
US10733201B1 (en) * 2015-11-30 2020-08-04 Amazon Technologies, Inc. Dynamic provisioning for data replication groups
US10567499B1 (en) 2015-12-02 2020-02-18 Amazon Technologies, Inc. Unsupervised round robin catch up algorithm
US10489230B1 (en) 2015-12-02 2019-11-26 Amazon Technologies, Inc. Chaining log operations in data replication groups
US11640410B1 (en) 2015-12-02 2023-05-02 Amazon Technologies, Inc. Distributed log processing for data replication groups
US10394789B1 (en) 2015-12-07 2019-08-27 Amazon Technologies, Inc. Techniques and systems for scalable request handling in data processing systems
US10642813B1 (en) 2015-12-14 2020-05-05 Amazon Technologies, Inc. Techniques and systems for storage and processing of operational data
US9785495B1 (en) 2015-12-14 2017-10-10 Amazon Technologies, Inc. Techniques and systems for detecting anomalous operational data
US10248793B1 (en) 2015-12-16 2019-04-02 Amazon Technologies, Inc. Techniques and systems for durable encryption and deletion in data storage systems
US10180912B1 (en) 2015-12-17 2019-01-15 Amazon Technologies, Inc. Techniques and systems for data segregation in redundancy coded data storage systems
US10324790B1 (en) 2015-12-17 2019-06-18 Amazon Technologies, Inc. Flexible data storage device mapping for data storage systems
US10235402B1 (en) 2015-12-17 2019-03-19 Amazon Technologies, Inc. Techniques for combining grid-encoded data storage systems
US10102065B1 (en) 2015-12-17 2018-10-16 Amazon Technologies, Inc. Localized failure mode decorrelation in redundancy encoded data storage systems
US10127105B1 (en) 2015-12-17 2018-11-13 Amazon Technologies, Inc. Techniques for extending grids in data storage systems
US10924543B1 (en) 2015-12-18 2021-02-16 Amazon Technologies, Inc. Deployment strategy for maintaining integrity of replication groups
US10372926B1 (en) * 2015-12-21 2019-08-06 Amazon Technologies, Inc. Passive distribution of encryption keys for distributed data stores
US10015274B2 (en) * 2015-12-31 2018-07-03 International Business Machines Corporation Enhanced storage clients
US9537952B1 (en) 2016-01-29 2017-01-03 Dropbox, Inc. Apparent cloud access for hosted content items
US10289340B2 (en) 2016-02-23 2019-05-14 Sandisk Technologies Llc Coalescing metadata and data writes via write serialization with device-level address remapping
US10747676B2 (en) 2016-02-23 2020-08-18 Sandisk Technologies Llc Memory-efficient object address mapping in a tiered data structure
US10185658B2 (en) 2016-02-23 2019-01-22 Sandisk Technologies Llc Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes
KR101648568B1 (ko) * 2016-03-09 2016-08-16 주식회사 티맥스 소프트 분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 방법 및 이를 사용한 분산 시스템
US10592336B1 (en) 2016-03-24 2020-03-17 Amazon Technologies, Inc. Layered indexing for asynchronous retrieval of redundancy coded data
US10061668B1 (en) 2016-03-28 2018-08-28 Amazon Technologies, Inc. Local storage clustering for redundancy coded data storage system
US10678664B1 (en) 2016-03-28 2020-06-09 Amazon Technologies, Inc. Hybridized storage operation for redundancy coded data storage systems
US10366062B1 (en) 2016-03-28 2019-07-30 Amazon Technologies, Inc. Cycled clustering for redundancy coded data storage systems
US20220164840A1 (en) 2016-04-01 2022-05-26 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10460367B2 (en) 2016-04-29 2019-10-29 Bank Of America Corporation System for user authentication based on linking a randomly generated number to the user and a physical item
CN107346315B (zh) * 2016-05-06 2020-10-27 曲立东 对象数据关联索引系统及该系统的构建与应用方法
US12052289B2 (en) 2016-06-10 2024-07-30 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11336697B2 (en) * 2016-06-10 2022-05-17 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US12045266B2 (en) 2016-06-10 2024-07-23 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10268635B2 (en) 2016-06-17 2019-04-23 Bank Of America Corporation System for data rotation through tokenization
US10331561B1 (en) 2016-06-29 2019-06-25 Emc Corporation Systems and methods for rebuilding a cache index
US10055351B1 (en) 2016-06-29 2018-08-21 EMC IP Holding Company LLC Low-overhead index for a flash cache
US10146438B1 (en) 2016-06-29 2018-12-04 EMC IP Holding Company LLC Additive library for data structures in a flash memory
US10037164B1 (en) 2016-06-29 2018-07-31 EMC IP Holding Company LLC Flash interface for processing datasets
US10089025B1 (en) 2016-06-29 2018-10-02 EMC IP Holding Company LLC Bloom filters in a flash memory
US10261704B1 (en) 2016-06-29 2019-04-16 EMC IP Holding Company LLC Linked lists in flash memory
US10521311B1 (en) 2016-06-30 2019-12-31 Amazon Technologies, Inc. Prioritized leadership for data replication groups
US10565227B1 (en) 2016-08-31 2020-02-18 Amazon Technologies, Inc. Leadership lease protocol for data replication groups
US10650621B1 (en) 2016-09-13 2020-05-12 Iocurrents, Inc. Interfacing with a vehicular controller area network
US11150995B1 (en) 2016-09-13 2021-10-19 Amazon Technologies, Inc. Node placement for replication groups
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US12013895B2 (en) 2016-09-26 2024-06-18 Splunk Inc. Processing data using containerized nodes in a containerized scalable environment
US11860940B1 (en) 2016-09-26 2024-01-02 Splunk Inc. Identifying buckets for query execution using a catalog of buckets
US11106734B1 (en) 2016-09-26 2021-08-31 Splunk Inc. Query execution using containerized state-free search nodes in a containerized scalable environment
US11461334B2 (en) 2016-09-26 2022-10-04 Splunk Inc. Data conditioning for dataset destination
US11620336B1 (en) 2016-09-26 2023-04-04 Splunk Inc. Managing and storing buckets to a remote shared storage system based on a collective bucket size
US11562023B1 (en) 2016-09-26 2023-01-24 Splunk Inc. Merging buckets in a data intake and query system
US11003714B1 (en) 2016-09-26 2021-05-11 Splunk Inc. Search node and bucket identification using a search node catalog and a data store catalog
US11023463B2 (en) 2016-09-26 2021-06-01 Splunk Inc. Converting and modifying a subquery for an external data system
US20180089324A1 (en) 2016-09-26 2018-03-29 Splunk Inc. Dynamic resource allocation for real-time search
US11593377B2 (en) 2016-09-26 2023-02-28 Splunk Inc. Assigning processing tasks in a data intake and query system
US11126632B2 (en) 2016-09-26 2021-09-21 Splunk Inc. Subquery generation based on search configuration data from an external data system
US11163758B2 (en) 2016-09-26 2021-11-02 Splunk Inc. External dataset capability compensation
US11604795B2 (en) 2016-09-26 2023-03-14 Splunk Inc. Distributing partial results from an external data system between worker nodes
US10956415B2 (en) 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US11874691B1 (en) 2016-09-26 2024-01-16 Splunk Inc. Managing efficient query execution including mapping of buckets to search nodes
US11550847B1 (en) 2016-09-26 2023-01-10 Splunk Inc. Hashing bucket identifiers to identify search nodes for efficient query execution
US11222066B1 (en) 2016-09-26 2022-01-11 Splunk Inc. Processing data using containerized state-free indexing nodes in a containerized scalable environment
US11580107B2 (en) 2016-09-26 2023-02-14 Splunk Inc. Bucket data distribution for exporting data to worker nodes
US11281706B2 (en) 2016-09-26 2022-03-22 Splunk Inc. Multi-layer partition allocation for query execution
US11416528B2 (en) 2016-09-26 2022-08-16 Splunk Inc. Query acceleration data store
US10984044B1 (en) 2016-09-26 2021-04-20 Splunk Inc. Identifying buckets for query execution using a catalog of buckets stored in a remote shared storage system
US11321321B2 (en) 2016-09-26 2022-05-03 Splunk Inc. Record expansion and reduction based on a processing task in a data intake and query system
US11599541B2 (en) 2016-09-26 2023-03-07 Splunk Inc. Determining records generated by a processing task of a query
US10795884B2 (en) 2016-09-26 2020-10-06 Splunk Inc. Dynamic resource allocation for common storage query
US11294941B1 (en) 2016-09-26 2022-04-05 Splunk Inc. Message-based data ingestion to a data intake and query system
US11567993B1 (en) 2016-09-26 2023-01-31 Splunk Inc. Copying buckets from a remote shared storage system to memory associated with a search node for query execution
US11314753B2 (en) 2016-09-26 2022-04-26 Splunk Inc. Execution of a query received from a data intake and query system
US11615104B2 (en) 2016-09-26 2023-03-28 Splunk Inc. Subquery generation based on a data ingest estimate of an external data system
US11663227B2 (en) 2016-09-26 2023-05-30 Splunk Inc. Generating a subquery for a distinct data intake and query system
US11232100B2 (en) 2016-09-26 2022-01-25 Splunk Inc. Resource allocation for multiple datasets
US10726009B2 (en) * 2016-09-26 2020-07-28 Splunk Inc. Query processing using query-resource usage and node utilization data
US11586627B2 (en) 2016-09-26 2023-02-21 Splunk Inc. Partitioning and reducing records at ingest of a worker node
US10353965B2 (en) 2016-09-26 2019-07-16 Splunk Inc. Data fabric service system architecture
US11442935B2 (en) 2016-09-26 2022-09-13 Splunk Inc. Determining a record generation estimate of a processing task
US11269939B1 (en) 2016-09-26 2022-03-08 Splunk Inc. Iterative message-based data processing including streaming analytics
US11250056B1 (en) 2016-09-26 2022-02-15 Splunk Inc. Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system
US10977260B2 (en) 2016-09-26 2021-04-13 Splunk Inc. Task distribution in an execution node of a distributed execution environment
US10776355B1 (en) 2016-09-26 2020-09-15 Splunk Inc. Managing, storing, and caching query results and partial query results for combination with additional query results
US11243963B2 (en) 2016-09-26 2022-02-08 Splunk Inc. Distributing partial results to worker nodes from an external data system
US11137980B1 (en) 2016-09-27 2021-10-05 Amazon Technologies, Inc. Monotonic time-based data storage
US10496327B1 (en) 2016-09-28 2019-12-03 Amazon Technologies, Inc. Command parallelization for data storage systems
US10437790B1 (en) 2016-09-28 2019-10-08 Amazon Technologies, Inc. Contextual optimization for data storage systems
US10810157B1 (en) 2016-09-28 2020-10-20 Amazon Technologies, Inc. Command aggregation for data storage operations
US11204895B1 (en) 2016-09-28 2021-12-21 Amazon Technologies, Inc. Data payload clustering for data storage systems
US11281624B1 (en) 2016-09-28 2022-03-22 Amazon Technologies, Inc. Client-based batching of data payload
US10657097B1 (en) 2016-09-28 2020-05-19 Amazon Technologies, Inc. Data payload aggregation for data storage systems
US10614239B2 (en) 2016-09-30 2020-04-07 Amazon Technologies, Inc. Immutable cryptographically secured ledger-backed databases
US10678856B1 (en) * 2016-09-30 2020-06-09 EMC IP Holding Company LLC System and method to represent physical data pointers of movable data library
CN107959695B (zh) * 2016-10-14 2021-01-29 北京国双科技有限公司 一种数据传输方法及装置
RU2646312C1 (ru) * 2016-11-14 2018-03-02 Общество с ограниченной ответственностью "ИБС Экспертиза" Интегрированный программно-аппаратный комплекс
WO2018093595A1 (en) 2016-11-15 2018-05-24 Wal-Mart Stores, Inc. System and method for managing retail product inventory
US10296764B1 (en) 2016-11-18 2019-05-21 Amazon Technologies, Inc. Verifiable cryptographically secured ledgers for human resource systems
US11269888B1 (en) 2016-11-28 2022-03-08 Amazon Technologies, Inc. Archival data storage for structured data
US20180173745A1 (en) * 2016-12-21 2018-06-21 At&T Intellectual Property I, L.P. Systems and methods to achieve sequential consistency in replicated states without compromising performance in geo-distributed, replicated services
US11210134B2 (en) * 2016-12-27 2021-12-28 Western Digital Technologies, Inc. Atomic execution unit for object storage
US10209901B2 (en) * 2017-01-04 2019-02-19 Walmart Apollo, Llc Systems and methods for distributive data storage
US11210270B2 (en) * 2017-03-09 2021-12-28 Microsoft Technology Licensing, Llc Mapping storage across storage providers
US10521344B1 (en) 2017-03-10 2019-12-31 Pure Storage, Inc. Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems
US11356445B2 (en) 2017-03-28 2022-06-07 Amazon Technologies, Inc. Data access interface for clustered devices
US10621055B2 (en) 2017-03-28 2020-04-14 Amazon Technologies, Inc. Adaptive data recovery for clustered data devices
US10530752B2 (en) 2017-03-28 2020-01-07 Amazon Technologies, Inc. Efficient device provision
US10282115B2 (en) * 2017-04-13 2019-05-07 International Business Machines Corporation Object synchronization in a clustered system
WO2018207352A1 (ja) * 2017-05-12 2018-11-15 株式会社野村総合研究所 データ管理システム
US10701154B2 (en) 2017-05-22 2020-06-30 Microsoft Technology Licensing, Llc Sharding over multi-link data channels
US10469616B2 (en) 2017-06-09 2019-11-05 Red Hat, Inc. Data driven bin packing implementation for data centers with variable node capabilities
CN107295080B (zh) * 2017-06-19 2020-12-18 北京百度网讯科技有限公司 应用于分布式服务器集群的数据存储方法和服务器
US10313480B2 (en) 2017-06-22 2019-06-04 Bank Of America Corporation Data transmission between networked resources
US10511692B2 (en) 2017-06-22 2019-12-17 Bank Of America Corporation Data transmission to a networked resource based on contextual information
US10524165B2 (en) 2017-06-22 2019-12-31 Bank Of America Corporation Dynamic utilization of alternative resources based on token association
US11860855B1 (en) 2017-06-23 2024-01-02 Amazon Technologies, Inc. Storage service supporting data transformations
US10789301B1 (en) * 2017-07-12 2020-09-29 Groupon, Inc. Method, apparatus, and computer program product for inferring device rendered object interaction behavior
US10362105B1 (en) * 2017-07-31 2019-07-23 Amazon Technologies, Inc. Generating probalistic data structures in gossip protocols
US11989194B2 (en) 2017-07-31 2024-05-21 Splunk Inc. Addressing memory limits for partition tracking among worker nodes
US11921672B2 (en) 2017-07-31 2024-03-05 Splunk Inc. Query execution at a remote heterogeneous data store of a data fabric service
EP3669286A4 (en) 2017-08-15 2021-06-23 NUODB Inc. DIVISION OF INDEX INTO DISTRIBUTED DATABASES
US10860346B2 (en) * 2017-08-15 2020-12-08 Sap Se Server-side internationalization framework for web applications
US10922303B1 (en) * 2017-08-17 2021-02-16 Amazon Technologies, Inc. Early detection of corrupt data partition exports
US10579633B2 (en) * 2017-08-31 2020-03-03 Micron Technology, Inc. Reducing probabilistic filter query latency
US10789267B1 (en) 2017-09-21 2020-09-29 Amazon Technologies, Inc. Replication group data management
US11151137B2 (en) 2017-09-25 2021-10-19 Splunk Inc. Multi-partition operation in combination operations
US10896182B2 (en) 2017-09-25 2021-01-19 Splunk Inc. Multi-partitioning determination for combination operations
CN107659653B (zh) * 2017-09-29 2020-09-25 北京邮电大学 Ndn网络测量数据缓存方法、装置、电子设备及存储介质
US11048679B2 (en) 2017-10-31 2021-06-29 Oracle International Corporation Adaptive resolution histogram on complex datatypes
US10558533B2 (en) * 2017-12-07 2020-02-11 Red Hat, Inc. Reducing service disruptions in a micro-service environment
CN108196916B (zh) * 2017-12-18 2020-06-12 广州视源电子科技股份有限公司 一种对接口进行参数校验的方法及其装置、存储介质和电子设备
US10762294B2 (en) * 2017-12-29 2020-09-01 Dassault Systèmes Americas Corp. Universally unique resources with no dictionary management
CN111634160B (zh) * 2018-01-09 2022-06-10 深圳市道通科技股份有限公司 与轮胎压力监测系统建立通信连接的方法、其装置及电子设备
US10671709B2 (en) * 2018-01-22 2020-06-02 Intuit, Inc. Data isolation in distributed hash chains
US11144513B1 (en) * 2018-02-09 2021-10-12 Amazon Technologies, Inc. Policy based management for key-value pairs
US11128530B2 (en) * 2018-03-29 2021-09-21 Hewlett Packard Enterprise Development Lp Container cluster management
US11334543B1 (en) 2018-04-30 2022-05-17 Splunk Inc. Scalable bucket merging for a data intake and query system
US11269679B2 (en) * 2018-05-04 2022-03-08 Microsoft Technology Licensing, Llc Resource-governed protocol and runtime for distributed databases with consistency models
WO2019227217A1 (en) * 2018-05-31 2019-12-05 Hardy-Francis Enterprises Inc. Systems and methods for indexing and searching data
US11256815B2 (en) * 2018-06-12 2022-02-22 Western Digital Technologies, Inc. Object storage system with secure object replication
US11461203B2 (en) * 2018-07-10 2022-10-04 Here Data Technology Systems and methods of handling node failure in a distributed data storage using multi-layer consistent hashing
US10956375B2 (en) * 2018-07-12 2021-03-23 EMC IP Holding Company LLC Shuffling file digests stored in data stores of a distributed file system
CN110740048B (zh) * 2018-07-18 2022-09-27 广东亿迅科技有限公司 一种基于iOS网络的网络请求处理方法及装置
US11115490B2 (en) * 2018-07-31 2021-09-07 EMC IP Holding Company LLC Host based read cache for san supporting NVMEF with E2E validation
US11216420B2 (en) * 2018-07-31 2022-01-04 Nutanix, Inc. System and method for high replication factor (RF) data replication
US11134055B2 (en) * 2018-08-02 2021-09-28 Memverge, Inc. Naming service in a distributed memory object architecture
US11061609B2 (en) * 2018-08-02 2021-07-13 MemVerge, Inc Distributed memory object method and system enabling memory-speed data access in a distributed environment
US10951395B2 (en) * 2018-08-20 2021-03-16 Fujitsu Limited Data fetching in data exchange networks
EP3850493A4 (en) 2018-09-10 2022-06-08 GigaIO Networks, Inc. METHOD AND APPARATUS FOR HIGH SPEED DATA BUS CONNECTION AND TISSUE MANAGEMENT
US11003491B1 (en) * 2018-09-21 2021-05-11 Amazon Technologies, Inc. Optimizing background tasks based on forecast data
US11392610B2 (en) 2018-10-05 2022-07-19 Red Hat, Inc. Scalable object storage with intelligent replication
US11005775B2 (en) 2018-10-08 2021-05-11 EMC IP Holding Company LLC Resource allocation using distributed segment processing credits
US11201828B2 (en) 2018-10-08 2021-12-14 EMC IP Holding Company LLC Stream allocation using stream credits
US10768851B2 (en) * 2018-10-30 2020-09-08 EMC IP Holding Company LLC Instant-ready active-active storage nodes
US11082493B2 (en) * 2018-11-16 2021-08-03 Arm Limited Distributed memory system, device and process
US11625273B1 (en) 2018-11-23 2023-04-11 Amazon Technologies, Inc. Changing throughput capacity to sustain throughput for accessing individual items in a database
CN111258772B (zh) * 2018-12-01 2022-08-09 阿里巴巴集团控股有限公司 服务调用信息处理方法、装置及系统
US11665757B2 (en) 2019-01-08 2023-05-30 Universal Electronics Inc. Universal audio device pairing assistant
US11776539B2 (en) 2019-01-08 2023-10-03 Universal Electronics Inc. Voice assistant with sound metering capabilities
US10922229B2 (en) 2019-03-11 2021-02-16 Microsoft Technology Licensing, Llc In-memory normalization of cached objects to reduce cache memory footprint
US11055016B2 (en) * 2019-04-29 2021-07-06 EMC IP Holding Company LLC Method and system for prioritizing critical data object storage during backup operations
US11416159B2 (en) * 2019-04-29 2022-08-16 EMC IP Holding Company LLC Method and system for prioritizing critical data object storage during backup operations
WO2020220216A1 (en) 2019-04-29 2020-11-05 Splunk Inc. Search time estimate in data intake and query system
US11715051B1 (en) 2019-04-30 2023-08-01 Splunk Inc. Service provider instance recommendations using machine-learned classifications and reconciliation
US10997178B2 (en) * 2019-06-11 2021-05-04 Sap Se Implicit partitioning
CN110334823B (zh) * 2019-06-17 2022-04-05 北京大米科技有限公司 预约方法、装置、电子设备及介质
US11388136B2 (en) 2019-06-18 2022-07-12 Nutanix, Inc. Dynamic distributed service location discovery
CN110366049B (zh) * 2019-08-05 2021-03-23 杭州当虹科技股份有限公司 一种流式视频完整性保护方法
CN114761940A (zh) * 2019-08-28 2022-07-15 斯巴达系统公司 用于生成电子数据记录的审计跟踪的方法、设备和计算机可读介质
CN111580742B (zh) * 2019-08-30 2021-06-15 上海忆芯实业有限公司 使用加速器处理读(Get)/Put(写)请求的方法及其信息处理系统
US20210075745A1 (en) * 2019-09-10 2021-03-11 GigaIO Networks, Inc. Methods and apparatus for improved polling efficiency in network interface fabrics
US11403247B2 (en) 2019-09-10 2022-08-02 GigaIO Networks, Inc. Methods and apparatus for network interface fabric send/receive operations
US11231876B2 (en) * 2019-09-24 2022-01-25 Western Digital Technologies, Inc. Initial data placement in hybrid object storage system
US11593288B2 (en) 2019-10-02 2023-02-28 GigalO Networks, Inc. Methods and apparatus for fabric interface polling
US11494380B2 (en) 2019-10-18 2022-11-08 Splunk Inc. Management of distributed computing framework components in a data fabric service system
US11392528B2 (en) 2019-10-25 2022-07-19 Cigaio Networks, Inc. Methods and apparatus for DMA engine descriptors for high speed data systems
US11570247B2 (en) 2019-11-08 2023-01-31 Goodblock Technologies, Inc. Resilient distributed storage system
CN111125002B (zh) * 2019-11-15 2023-10-27 卢万龙 一种基于分布式存储的数据备份归档方法和系统
US11290531B2 (en) 2019-12-04 2022-03-29 Dropbox, Inc. Immediate cloud content item creation from local file system interface
CN111212105B (zh) * 2019-12-09 2023-04-18 国网江苏省电力有限公司电力科学研究院 一种风光储数据远程安全传输方法及系统
US11922222B1 (en) 2020-01-30 2024-03-05 Splunk Inc. Generating a modified component for a data intake and query system using an isolated execution environment image
US11258854B2 (en) 2020-01-31 2022-02-22 Bank Of America Corporation Data sharding for transmission over a high generation cellular network
CN113285816B (zh) * 2020-02-19 2022-10-28 华为技术有限公司 一种基于键值配置的控制请求发送方法、装置和系统
US11816004B2 (en) * 2020-02-28 2023-11-14 EMC IP Holding Company LLC Systems and methods for file level prioritization during multi-object data restores
US11210288B2 (en) 2020-05-12 2021-12-28 Coupang Corp. Systems and methods for reducing database query latency
JP2021190150A (ja) * 2020-06-02 2021-12-13 キオクシア株式会社 メモリシステム及びメモリコントローラ
US11853264B2 (en) * 2020-06-29 2023-12-26 Rubrik, Inc. Aggregating metrics in file systems using structured journals
CN113934361B (zh) * 2020-06-29 2024-05-03 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
US11797528B2 (en) 2020-07-08 2023-10-24 OneTrust, LLC Systems and methods for targeted data discovery
US11747996B2 (en) * 2020-08-05 2023-09-05 Dropbox, Inc. System and methods for implementing a key-value data store
CN111970349B (zh) * 2020-08-07 2022-06-24 中国建设银行股份有限公司 基于远程过程调用的通讯系统、方法、装置、设备及介质
JPWO2022038873A1 (ja) * 2020-08-21 2022-02-24
JPWO2022044458A1 (ja) * 2020-08-24 2022-03-03
US11593017B1 (en) 2020-08-26 2023-02-28 Pure Storage, Inc. Protection of objects in an object store from deletion or overwriting
US11687833B2 (en) * 2020-08-27 2023-06-27 Google Llc Data management forecasting from distributed tracing
US11620182B2 (en) 2020-08-31 2023-04-04 Bank Of America Corporation System for resolution of technical issues using computing system-specific contextual data
CN112118118B (zh) * 2020-09-14 2022-08-02 泰康保险集团股份有限公司 基于反熵算法的指令通知消息广播方法及装置
US11356120B1 (en) * 2020-09-15 2022-06-07 Amazon Technologies, Inc. Hierarchical erasure coding for multi-region storage
US11928228B2 (en) * 2020-09-25 2024-03-12 EMC IP Holding Company LLC Facilitating an object protocol based access of data within a multiprotocol environment
CN112182134B (zh) * 2020-09-30 2024-04-30 北京超图软件股份有限公司 一种业务系统时空数据库的构建方法及装置
US11704313B1 (en) 2020-10-19 2023-07-18 Splunk Inc. Parallel branch operation using intermediary nodes
WO2022159901A1 (en) 2021-01-25 2022-07-28 OneTrust, LLC Systems and methods for discovery, classification, and indexing of data in a native computing system
US11775348B2 (en) 2021-02-17 2023-10-03 OneTrust, LLC Managing custom workflows for domain objects defined within microservices
CN115114038A (zh) * 2021-03-19 2022-09-27 北京图森智途科技有限公司 用于进程间通信的方法、相关的计算设备及存储介质
US11538480B1 (en) * 2021-03-30 2022-12-27 Amazon Technologies, Inc. Integration of speech processing functionality with organization systems
US20220318252A1 (en) * 2021-04-06 2022-10-06 Datastax, Inc. Data streaming between nodes of a database system
US11562078B2 (en) 2021-04-16 2023-01-24 OneTrust, LLC Assessing and managing computational risk involved with integrating third party computing functionality within a computing system
CA3223309A1 (en) * 2021-06-18 2022-12-22 James Douglas Beecham Security driver external functions
CN113656683B (zh) * 2021-07-12 2024-08-23 北京旷视科技有限公司 订阅数据推送方法、装置、系统、电子设备及存储介质
US20230019064A1 (en) * 2021-07-14 2023-01-19 Vmware, Inc. Methods and systems for resolving dependencies of a data center model
US12072939B1 (en) 2021-07-30 2024-08-27 Splunk Inc. Federated data enrichment objects
US11936935B2 (en) 2021-08-09 2024-03-19 Charter Communications Operating, Llc Adaptive bitrate streaming time shift buffer
US12074962B2 (en) 2021-08-10 2024-08-27 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for dividing and encrypting data
US11989501B1 (en) * 2021-09-03 2024-05-21 Zoox, Inc. Binary object buffers encoding format
US11803569B2 (en) 2021-10-05 2023-10-31 Procore Technologies, Inc. Computer system and method for accessing user data that is distributed within a multi-zone computing platform
US20230137747A1 (en) * 2021-10-28 2023-05-04 Alchemi Data Management, Inc. Detection, isolation, and mitigation of attacks on a file system
US20230325378A1 (en) * 2022-04-08 2023-10-12 Google Llc Online Migration From An Eventually Consistent System To A Strongly Consistent System
US12019548B2 (en) 2022-04-18 2024-06-25 Samsung Electronics Co., Ltd. Systems and methods for a cross-layer key-value store architecture with a computational storage device
US12045262B2 (en) 2022-08-10 2024-07-23 Discover Financial Services Reconciliation systems and methods for unbounded streams
WO2024035825A1 (en) * 2022-08-10 2024-02-15 Discover Financial Services Reconciliation systems and methods for unbounded streams
US20240080186A1 (en) * 2022-09-07 2024-03-07 Google Llc Random Trigger for Automatic Key Rotation
US11956331B2 (en) * 2022-09-08 2024-04-09 Nokia Solutions And Networks Oy System and method for cache synchronization among network gateways in networks such as software defined networks
CN118093686A (zh) * 2022-11-21 2024-05-28 华为云计算技术有限公司 基于数据仓库系统的数据处理方法和数据仓库系统
CN116560859B (zh) * 2023-07-11 2023-09-22 恒辉信达技术有限公司 一种基于云计算的访问设备资源分配方法及相关装置
CN117194298B (zh) * 2023-09-18 2024-05-31 上海鸿翼软件技术股份有限公司 一种控制方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000026782A1 (en) * 1998-11-03 2000-05-11 Sun Microsystems Limited File server system
EP1160692A2 (en) * 2000-05-30 2001-12-05 Lucent Technologies Inc. Internet archive service providing persistent access to web resources

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US528750A (en) * 1894-11-06 watson
US4714992A (en) 1985-11-26 1987-12-22 International Business Machines Corporation Communication for version management in a distributed information service
US5202968A (en) * 1988-03-30 1993-04-13 Kabushiki Kaisha Toshiba Expansion system
US5202986A (en) * 1989-09-28 1993-04-13 Bull Hn Information Systems Inc. Prefix search tree partial key branching
US5287500A (en) * 1991-06-03 1994-02-15 Digital Equipment Corporation System for allocating storage spaces based upon required and optional service attributes having assigned piorities
US6453325B1 (en) * 1995-05-24 2002-09-17 International Business Machines Corporation Method and means for backup and restoration of a database system linked to a system for filing data
US6901433B2 (en) * 1995-06-07 2005-05-31 Microsoft Corporation System for providing users with a filtered view of interactive network directory obtains from remote properties cache that provided by an on-line service
US5758359A (en) * 1996-10-24 1998-05-26 Digital Equipment Corporation Method and apparatus for performing retroactive backups in a computer system
US5963944A (en) * 1996-12-30 1999-10-05 Intel Corporation System and method for distributing and indexing computerized documents using independent agents
US6079028A (en) * 1997-04-23 2000-06-20 Lucent Technologies Inc. Fault tolerant architectures for continuous media servers
JPH1197882A (ja) 1997-09-18 1999-04-09 Optec Dai Ichi Denko Co Ltd 機能性材料
US6226743B1 (en) * 1998-01-22 2001-05-01 Yeda Research And Development Co., Ltd. Method for authentication item
US6192405B1 (en) * 1998-01-23 2001-02-20 Novell, Inc. Method and apparatus for acquiring authorized access to resources in a distributed system
US6353878B1 (en) * 1998-08-13 2002-03-05 Emc Corporation Remote control of backup media in a secondary storage subsystem through access to a primary storage subsystem
JP2000132441A (ja) * 1998-10-23 2000-05-12 Nec Corp 分散データベースシステム、処理装置及びデータベースアクセス方法
US6279007B1 (en) * 1998-11-30 2001-08-21 Microsoft Corporation Architecture for managing query friendly hierarchical values
US6920537B2 (en) * 1998-12-31 2005-07-19 Emc Corporation Apparatus and methods for copying, backing up and restoring logical objects in a computer storage system by transferring blocks out of order or in parallel
US6381605B1 (en) * 1999-05-29 2002-04-30 Oracle Corporation Heirarchical indexing of multi-attribute data by sorting, dividing and storing subsets
US6463454B1 (en) * 1999-06-17 2002-10-08 International Business Machines Corporation System and method for integrated load distribution and resource management on internet environment
US6351776B1 (en) * 1999-11-04 2002-02-26 Xdrive, Inc. Shared internet storage resource, user interface system, and method
US6408298B1 (en) * 1999-12-15 2002-06-18 Microsoft Corporation Methods and systems for copying and moving across virtual namespaces
US6862623B1 (en) * 2000-04-14 2005-03-01 Microsoft Corporation Capacity planning for server resources
US6922685B2 (en) * 2000-05-22 2005-07-26 Mci, Inc. Method and system for managing partitioned data resources
US7171654B2 (en) * 2000-05-25 2007-01-30 The United States Of America As Represented By The Secretary Of The Navy System specification language for resource management architecture and corresponding programs therefore
US7529834B1 (en) * 2000-06-02 2009-05-05 Hewlett-Packard Development Company, L.P. Method and system for cooperatively backing up data on computers in a network
US20020049760A1 (en) * 2000-06-16 2002-04-25 Flycode, Inc. Technique for accessing information in a peer-to-peer network
US6505200B1 (en) * 2000-07-06 2003-01-07 International Business Machines Corporation Application-independent data synchronization technique
US20020078461A1 (en) * 2000-12-14 2002-06-20 Boykin Patrict Oscar Incasting for downloading files on distributed networks
US7401125B1 (en) 2000-10-10 2008-07-15 Ricoh Corporation System, computer program product and method for managing documents
US6961728B2 (en) * 2000-11-28 2005-11-01 Centerboard, Inc. System and methods for highly distributed wide-area data management of a network of data sources through a database interface
US20020080888A1 (en) * 2000-12-22 2002-06-27 Li Shu Message splitting and spatially diversified message routing for increasing transmission assurance and data security over distributed networks
US6704886B1 (en) * 2001-01-25 2004-03-09 Emc Corporation Data backup system having independent data restore execution
US20020138559A1 (en) * 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
US20020147929A1 (en) * 2001-04-10 2002-10-10 Rose Mark E. Access control for distributed content servers
US6772172B2 (en) * 2001-04-27 2004-08-03 Sun Microsystems, Inc. Method, system, program, and computer readable medium for indexing object oriented objects in an object oriented database
US6832248B1 (en) 2001-05-10 2004-12-14 Agami Systems, Inc. System and method for managing usage quotas
US20040230572A1 (en) * 2001-06-22 2004-11-18 Nosa Omoigui System and method for semantic knowledge retrieval, management, capture, sharing, discovery, delivery and presentation
US7403987B1 (en) * 2001-06-29 2008-07-22 Symantec Operating Corporation Transactional SAN management
US20030028543A1 (en) * 2001-08-01 2003-02-06 Dusberger Dariusz T. Image storage and reference using a URL
US20030046357A1 (en) * 2001-08-30 2003-03-06 International Business Machines Corporation Intelligent content placement in a distributed computing network
US7092977B2 (en) * 2001-08-31 2006-08-15 Arkivio, Inc. Techniques for storing data based upon storage policies
CA2404550C (en) * 2001-09-21 2010-02-09 Corel Corporation System and method for web services packaging
US20030088659A1 (en) * 2001-11-08 2003-05-08 Susarla Hanumantha Rao System and method for distributed state management
US6910075B2 (en) * 2001-11-14 2005-06-21 Emc Corporation Dynamic RDF groups
US20030154381A1 (en) * 2002-02-12 2003-08-14 Pervasive Security Systems, Inc. Managing file access via a designated place
US7287033B2 (en) * 2002-03-06 2007-10-23 Ori Software Development, Ltd. Efficient traversals over hierarchical data and indexing semistructured data
US7178163B2 (en) * 2002-11-12 2007-02-13 Microsoft Corporation Cross platform network authentication and authorization model
US7293286B2 (en) * 2003-02-20 2007-11-06 Bea Systems, Inc. Federated management of content repositories
JP2004295464A (ja) * 2003-03-27 2004-10-21 Hitachi Ltd 計算機システム
JP4149315B2 (ja) * 2003-06-12 2008-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーション バックアップシステム
US20050065879A1 (en) * 2003-09-18 2005-03-24 Convergys Information Management Group, Inc. System and method for web service billing
US20050097286A1 (en) * 2003-10-30 2005-05-05 Magnus Karlsson Method of instantiating data placement heuristic
JP4313650B2 (ja) * 2003-11-07 2009-08-12 株式会社日立製作所 ファイルサーバ、冗長度回復方法、プログラム及び記録媒体
US7698428B2 (en) * 2003-12-15 2010-04-13 International Business Machines Corporation Apparatus, system, and method for grid based data storage
US8825591B1 (en) * 2003-12-31 2014-09-02 Symantec Operating Corporation Dynamic storage mechanism
US20050202392A1 (en) * 2004-01-30 2005-09-15 Allen J. V. Web service api for student information and course management systems
US20050172323A1 (en) * 2004-01-30 2005-08-04 Microsoft Corporation Television web services
US8015211B2 (en) * 2004-04-21 2011-09-06 Architecture Technology Corporation Secure peer-to-peer object storage system
US7634566B2 (en) * 2004-06-03 2009-12-15 Cisco Technology, Inc. Arrangement in a network for passing control of distributed data between network nodes for optimized client access based on locality
US7778984B2 (en) * 2004-11-19 2010-08-17 Microsoft Corporation System and method for a distributed object store
US7317907B2 (en) * 2005-01-31 2008-01-08 Research In Motion Limited Synchronizing server and device data using device data schema
US8473569B2 (en) * 2005-02-18 2013-06-25 Texas Instruments Incorporated Apparatus and method for consumer-oriented distribution of information processing capability
US7546297B2 (en) * 2005-03-14 2009-06-09 Microsoft Corporation Storage application programming interface
US8856068B2 (en) * 2005-04-12 2014-10-07 International Business Machines Corporation Replicating modifications of a directory
US7584226B2 (en) * 2005-05-24 2009-09-01 International Business Machines Corporation System and method for peer-to-peer grid based autonomic and probabilistic on-demand backup and restore
US7631011B2 (en) * 2005-07-29 2009-12-08 Microsoft Corporation Code generation patterns
US7716180B2 (en) 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
US7801912B2 (en) * 2005-12-29 2010-09-21 Amazon Technologies, Inc. Method and apparatus for a searchable data service
US7647329B1 (en) * 2005-12-29 2010-01-12 Amazon Technologies, Inc. Keymap service architecture for a distributed storage system
US7702640B1 (en) 2005-12-29 2010-04-20 Amazon Technologies, Inc. Stratified unbalanced trees for indexing of data items within a computer system
KR100793820B1 (ko) * 2005-12-30 2008-01-21 고려대학교 산학협력단 그리드 객체지향 프로그래밍 미들웨어 시스템을 적용한웹서비스 획득방법 및 웹 서비스 제공방법
KR100892313B1 (ko) * 2006-05-04 2009-04-08 엘지전자 주식회사 장치 관리에서 연결성 관리객체 향상 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000026782A1 (en) * 1998-11-03 2000-05-11 Sun Microsystems Limited File server system
EP1160692A2 (en) * 2000-05-30 2001-12-05 Lucent Technologies Inc. Internet archive service providing persistent access to web resources
JP2002055869A (ja) * 2000-05-30 2002-02-20 Lucent Technol Inc ウェブ資源に対して恒久的アクセスを提供するインターネットアーカイブサービス

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11132227B2 (en) 2009-03-31 2021-09-28 Amazon Technologies, Inc. Monitoring and automatic scaling of data volumes
US10761975B2 (en) 2009-03-31 2020-09-01 Amazon Technologies, Inc. Control service for data management
US11385969B2 (en) 2009-03-31 2022-07-12 Amazon Technologies, Inc. Cloning and recovery of data volumes
US10282231B1 (en) 2009-03-31 2019-05-07 Amazon Technologies, Inc. Monitoring and automatic scaling of data volumes
US11379332B2 (en) 2009-03-31 2022-07-05 Amazon Technologies, Inc. Control service for data management
US11550630B2 (en) 2009-03-31 2023-01-10 Amazon Technologies, Inc. Monitoring and automatic scaling of data volumes
US10798101B2 (en) 2009-03-31 2020-10-06 Amazon Technologies, Inc. Managing security groups for data instances
US11914486B2 (en) 2009-03-31 2024-02-27 Amazon Technologies, Inc. Cloning and recovery of data volumes
US10127149B2 (en) 2009-03-31 2018-11-13 Amazon Technologies, Inc. Control service for data management
US10225262B2 (en) 2009-03-31 2019-03-05 Amazon Technologies, Inc. Managing security groups for data instances
US9705888B2 (en) 2009-03-31 2017-07-11 Amazon Technologies, Inc. Managing security groups for data instances
US11770381B2 (en) 2009-03-31 2023-09-26 Amazon Technologies, Inc. Managing security groups for data instances
US10162715B1 (en) 2009-03-31 2018-12-25 Amazon Technologies, Inc. Cloning and recovery of data volumes
US10977226B2 (en) 2009-10-07 2021-04-13 Amazon Technologies, Inc. Self-service configuration for data environment
JP2013508810A (ja) * 2009-10-16 2013-03-07 シマンテック コーポレーション 効率的なファイル保存のための複数のインデックスを有する重複排除ストレージシステム
US10860439B2 (en) 2009-10-26 2020-12-08 Amazon Technologies, Inc. Failover and recovery for replicated data instances
US11477105B2 (en) 2009-10-26 2022-10-18 Amazon Technologies, Inc. Monitoring of replicated data instances
US11714726B2 (en) 2009-10-26 2023-08-01 Amazon Technologies, Inc. Failover and recovery for replicated data instances
US9806978B2 (en) 2009-10-26 2017-10-31 Amazon Technologies, Inc. Monitoring of replicated data instances
JP2014053050A (ja) * 2009-10-26 2014-03-20 Amazon Technologies Inc 複製されたデータインスタンスのプロビジョニングおよび管理
KR101479957B1 (ko) 2010-09-24 2015-01-08 인텔 코포레이션 리플레이 공격에 대한 보호를 갖는 메모리 암호화를 위한 트위크 가능한 암호화 모드
US9342574B2 (en) 2011-03-08 2016-05-17 Nec Corporation Distributed storage system and distributed storage method
US9609060B2 (en) 2011-08-02 2017-03-28 Nec Corporation Distributed storage system and method
JP2013127748A (ja) * 2011-12-19 2013-06-27 Fujitsu Ltd 情報処理装置、データ記憶方法及びプログラム
JP2015507268A (ja) * 2011-12-27 2015-03-05 ソリッドファイア インコーポレイテッド クライアント使用状況およびシステムメトリクスに基づく比例的なサービス品質
JP2016515731A (ja) * 2013-03-20 2016-05-30 アマゾン テクノロジーズ インコーポレイテッド レプリケーションターゲットサービス
US10592106B2 (en) 2013-03-20 2020-03-17 Amazon Technologies, Inc. Replication target service
JP2015176203A (ja) * 2014-03-13 2015-10-05 沖電気工業株式会社 データベースシステム、データベースサーバ、データベースサーバプログラム、データベースクライアント、及びデータベースクライアントプログラム
JP2017516237A (ja) * 2014-05-21 2017-06-15 オラクル・インターナショナル・コーポレイション 分散データグリッドにおける分散データ構造をサポートするためのシステムおよび方法
JP2020161152A (ja) * 2014-05-21 2020-10-01 オラクル・インターナショナル・コーポレイション 分散データグリッドにおける分散データ構造をサポートするためのシステムおよび方法
JP2017529625A (ja) * 2014-09-23 2017-10-05 アマゾン テクノロジーズ インコーポレイテッド 共有フォルダ及び共有ファイルの同期
US10482067B2 (en) 2014-09-23 2019-11-19 Amazon Technologies, Inc. Synchronization of shared folders and files
WO2022044459A1 (ja) 2020-08-24 2022-03-03 富士フイルム株式会社 情報処理装置、情報処理方法、及び情報処理プログラム

Also Published As

Publication number Publication date
KR101381014B1 (ko) 2014-04-04
CN103353867B (zh) 2018-08-14
WO2008069811A1 (en) 2008-06-12
US20100174731A1 (en) 2010-07-08
US11895188B2 (en) 2024-02-06
US20200028912A1 (en) 2020-01-23
KR20140025580A (ko) 2014-03-04
US9009111B2 (en) 2015-04-14
KR101542707B1 (ko) 2015-08-06
US8185497B2 (en) 2012-05-22
KR20140110035A (ko) 2014-09-16
US20110161293A1 (en) 2011-06-30
CA2637218C (en) 2017-02-14
CN103353867A (zh) 2013-10-16
KR101434128B1 (ko) 2014-08-26
US11394778B2 (en) 2022-07-19
US20120226712A1 (en) 2012-09-06
US20130212165A1 (en) 2013-08-15
US9166863B2 (en) 2015-10-20
KR20080091171A (ko) 2008-10-09
US20220360627A1 (en) 2022-11-10
US20070156842A1 (en) 2007-07-05
JP5047988B2 (ja) 2012-10-10
US20160044108A1 (en) 2016-02-11
US7716180B2 (en) 2010-05-11
MX2008008604A (es) 2008-12-18
CA2637218A1 (en) 2008-06-12
KR20130101587A (ko) 2013-09-13
EP1977346A1 (en) 2008-10-08
US10432721B2 (en) 2019-10-01
KR101490090B1 (ko) 2015-02-04
US7904423B2 (en) 2011-03-08

Similar Documents

Publication Publication Date Title
US11895188B2 (en) Distributed storage system with web services client interface
US10652076B2 (en) Dynamic application instance discovery and state management within a distributed system
US10210167B1 (en) Multi-level page caching for distributed object store
US8185614B2 (en) Systems, methods, and apparatus for identifying accessible dispersed digital storage vaults utilizing a centralized registry
US20210165768A1 (en) Replication Barriers for Dependent Data Transfers between Data Stores
WO2021112909A1 (en) Managing replication state for deleted objects
Sacerdoti Performance and Fault Tolerance in the StoreTorrent Parallel Filesystem
Apostolopoulos George Parissis

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091130

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120124

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120424

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120502

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120524

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120619

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120718

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150727

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5047988

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250