JP6509204B2 - シャードのオンライン追加によるナイーブなクライアント側シャーディング - Google Patents

シャードのオンライン追加によるナイーブなクライアント側シャーディング Download PDF

Info

Publication number
JP6509204B2
JP6509204B2 JP2016523825A JP2016523825A JP6509204B2 JP 6509204 B2 JP6509204 B2 JP 6509204B2 JP 2016523825 A JP2016523825 A JP 2016523825A JP 2016523825 A JP2016523825 A JP 2016523825A JP 6509204 B2 JP6509204 B2 JP 6509204B2
Authority
JP
Japan
Prior art keywords
shards
shard
data item
amount
change
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.)
Active
Application number
JP2016523825A
Other languages
English (en)
Other versions
JP2016524255A5 (ja
JP2016524255A (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 JP2016524255A publication Critical patent/JP2016524255A/ja
Publication of JP2016524255A5 publication Critical patent/JP2016524255A5/ja
Application granted granted Critical
Publication of JP6509204B2 publication Critical patent/JP6509204B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

著作権表示
この特許文献の開示の一部は、著作権保護の対象となる資料を含む。この特許文献または特許開示は特許商標庁の特許ファイルまたは記録に記載されているため、著作権保有者は、何人によるその複写複製に対して異議はないが、その他の場合にはいかなるときも全ての著作権を保有する。
関連出願の相互参照、優先権主張
本願は、米国特許法第119条に基づいて、「NAIVE, CLIENT-SIDE SHARDING WITH ONLINE ADDITION OF SHARDS(シャードのオンライン追加によるナイーブなクライアント側シャーディング)」と題される2013年6月28日に出願された米国仮特許出願番号第61/841,045号の優先権を主張し、その内容全体は引用によって本明細書に援用され、「NAIVE, CLIENT SIDE SHARDING WITH ONLINE ADDITION OF SHARDS(シャードのオンライン追加によるナイーブなクライアント側シャーディング)」と題される2014年3月26日に出願された米国特許出願番号第14/226,557号の優先権を主張し、その内容全体は引用によって本明細書に援用される。
背景
データベースシャードのシステムでは、記録または行または文書などのデータ項目は、シャード(shard)と呼ばれる複数の別々の独立したデータベースに分散されることができる。このようなシステムでは、データ項目は、一般に、シャード間で重複せず、重複することが許可されない。したがって、このようなシステムでは、いかなる所与の時点においてもいくつかのシャードのうちの1つにのみ特定のデータ項目が位置することになる。いくつかのシャードのうちのどれが当該特定のデータ項目を含んでいるかをクライアントが判断するために、クライアントは、当該特定のデータ項目を一義的に特定するデータ項目のプライマリキーをハッシュ関数に入力することができる。ハッシュ関数は、プライマリキーに基づいて、当該特定のデータ項目が現在格納されているシャードのアイデンティティを計算する。例えば、ハッシュ関数は、数値プライマリキーをシステム内のシャードの量で除算し、次いで剰余(基本的にはモジュロ演算)を、当該特定のデータ項目を含むシャードのための識別子であると考えてもよい。一般に、このようなハッシュ関数を用いて、各々のデータ項目が格納されることになるシャードを最初の段階で判断することにより、データ項目が比較的均一にシャードに分散される。
特定のデータ項目が位置するシャードをクライアントが特定すると、クライアントは、当該データ項目に対して読取、削除または更新動作などの動作を実行し得る。通常、シャードシステムは、多数のクライアントに同時に対応し、これらのクライアントの各々が、互いに非同期的に別々のデータ項目に対して動作を実行することができる。場合によっては、複数のクライアントが、意図せずに、同一のデータ項目に対して同時に動作を実行しようと試みる可能性がある。この状況が制限なく発生することが許可されると、データ項目が破損して、シャードシステムの状態が一貫性のないものになる可能性がある。1つのアプローチでは、複数のクライアントが同一のデータ項目に対して同時に動作を実行しないことを保証するために、特定のデータ項目に対して動作を実行しようとするクライアントは、まず、当該特定のデータ項目に対する排他的ロックを取得するよう要求され得る。各々のデータ項目は、別々のロックに関連付けられ得る。別のクライアントが特定のデータ項目に対する排他的ロックをすでに保持している場合には、クライアントは、当該排他的ロックを取得することが妨げられ、このような状況下では、排他的ロックを取得しようとするクライアントは、ロックを保持しているクライアントが排他的ロックを解放するのを待たなければならない。クライアントが特定のデータ項目に対する排他的ロックを保持している間は、当該クライアントのみが当該特定のデータ項目に対して動作を実行することができる。クライアントは、特定のデータ項目に対する動作の実行を終了すると、特定のデータ項目に対する排他的ロックを解放し、それによって、他のクライアントが特定のデータ項目にアクセスできるようになり得る。
シャードシステム内に格納されるデータの量が増大するにつれて、システム内に存在するシャードの容量が、システムに格納されることになる全てのデータを収容するのに不十分になる可能性がある。そのような状況下では、1つ以上の新たなシャードをシステムに追加することが望ましいであろう。新たなシャードの追加は、新たなデータベースを収容および管理するために新たなハードウェア計算および記憶装置を追加することを含み得る。シャード間でクライアントアクセス負荷のバランスをとろうと試みて、どのシャードのサブセットもクライアント要求を偏って課されないようにするために、システムへの新たなシャードの追加は、増大したシャードの群の中でシステムの格納されたデータ項目を再分配することを促進させることができる。当該再分配イベントまたはリバランシングイベントは、1つのシャードに以前に格納されたデータ項目を別のシャードに、すなわち必ずしもそうではないが場合によっては新たに追加されたシャードに、リロケート(re-locate)させ得る。1つのアプローチでは、リバランシングプロセスは、移動されるべきデータ項目に対する排他的ロックを取得し得る。データ項目に対する排他的ロックを取得した後に、リバランシングプロセスは、それらのデータ項目を古いシャードから、それらのデータ項目のための宛先であると修正ハッシュ関数によって判断された新たなシャードに移動させ得る。データ項目を移動させた後に、リバランシングプロセスは、それらのデータ項目に対する排他的ロックを解放し得る。
排他的ロックが存在している限り、それらの使用にはいくつかの欠点が伴っていた。1つの欠点は、データ項目の排他的ロックがプロセスによって保持されている間は他のプロセスが当該データ項目にアクセスできないというものである。したがって、上記のロックを使用したリバランシングアプローチでは、クライアントは、リバランシングイベントが進行している間はシャードシステムに対して動作を実行することがたいていできない可能性があり、リバランシングプロセスがデータ項目に対する排他的ロックを保持している間はどのクライアントも当該排他的ロックを取得することができない。リバランシングイベントが進行していなかったとしても、同時的な複数のクライアントアクセスから保護するためのクライアントのロックの取得、維持および解放に関わるオーバーヘッドが相当であり、厄介である可能性がある。リバランシングイベントの影響を無視したとしても、シャードシステム内でロックを使用することは、システムの効率および性能にマイナスの影響を及ぼし得る。恐らくなお悪いことに、シャードシステム内の不測の障害により、(例えばクライアントまたはリバランシングプロセスであり得る)ロックを保持しているプロセスがフリーズするか、またはそうでなければ適切に機能しなくなる可能性がある。このような状況下では、あるタイマが期限切れになり、その時に非機能的プロセスが終了し得えて、保持していたロックが強制的に解放されるまで、非機能的なプロセスは、特定のデータ項目に対する排他的ロックを保有し得る。その結果、クライアントおよびリバランシングプロセスを含む他のプロセスは、当該特定のデータ項目に対する所期のタスクを進める前に、タイマが期限切れになるのを待たざるを得ない。特に特定のデータ項目に対して実行されるべき動作が、複数の別々のデータ項目に対して実行されるべき動作の厳密に順序付けられたシーケンス内の1つのステップにすぎない場合には、このような待機の強制は、シャードシステム全体の性能を著しく劣化させる可能性がある。しばしば動作が実行される必要がある順序によって課される依存性は、これらの種類の問題を次々に発生させる可能性がある。
本発明の実施例に係る、複数のデータベースシャードに分散されたデータ項目に複数のクライアントがアクセスできるスケーラブルなシャードシステムの例を示すブロック図である。 本発明の実施例に係る、さまざまな時点においてシステムが存在し得るさまざまな状態およびそれらの状態間の起こり得る遷移を示す状態図である。 本発明の実施例に係る、リバランシング状態にある間に追加動作を実行するための技術の例を示すフロー図である。 本発明の実施例に係る、リバランシング状態にある間に更新動作を実行するための技術の例を示すフロー図である。 本発明の実施例に係る、リバランシング状態にある間に削除動作を実行するための技術の例を示すフロー図である。 本発明の実施例に係る、リバランシング状態にある間に取得動作を実行するための技術の例を示すフロー図である。 本発明の実施例に係る、リバランシング状態にある間に取得動作を実行するための技術の例を示すフロー図である。 本発明の実施例に係る、(最初に)リバランシング状態にある間にリバランシング動作を実行するための技術の例を示すフロー図である。 本発明の実施例に係る、リバランシング状態にある間にクエリ動作を実行するための技術の例を示すフロー図である。 実施例のうちの1つを実現するための分散システムの簡略化された図である。 本開示の実施例に係る、実施例のシステムの構成要素によって提供されるサービスをクラウドサービスとして供給することができるシステム環境の構成要素の簡略化されたブロック図である。 本発明のさまざまな実施例を実現することができるコンピュータシステムの例を示す図である。
詳細な説明
以下の説明には、説明の目的で、本発明の実施例を完全に理解できるようにするために具体的な詳細が記載されている。しかし、これらの具体的な詳細がなくても本発明を実施できることは明らかであろう。
本発明の実施例によれば、複数のクライアントは、当該クライアントが排他的ロックを使用することなく、互いに非同期的にシャードシステム内のデータ項目に対して動作を実行することが可能となる。さらに、本発明の実施例によれば、システム内のシャードの量の変化(追加または差し迫った除去)に起因してデータ項目をシャードセットの中で自動的に再分配するリバランシングイベントは、クライアントが排他的ロックを使用することなく実行されることができる。また、本発明の実施例では、クライアントは、リバランシングプロセスがシステム全体にわたるリバランシングイベント中に非同期的にデータ項目のうちの少なくともいくつかを再分配している間でさえ、シャードシステム内のデータ項目のうちの少なくともいくつかに対して動作を実行し続けることができる。これらの特徴を提供するプログラムコードは、シャードサーバではなく、もっぱらクライアントに位置し得る。これらの利点は全て、シャードシステム内のデータ整合性を犠牲にすることなく得られることができる。
ケーラブルなシャードシステムの例
図1は、本発明の実施例に係る、複数のデータベースシャードに分散されたデータ項目に複数のクライアントがアクセスできるスケーラブルなシャードシステム100の例を示すブロック図である。シャードシステム100は、クライアント102A〜Nと、シャード104A〜Nとを含む。システム100内のクライアントおよびシャードの量は、可変である。シャード104A〜Nの各々は、システム100内のその他のシャードを意識する必要がない別々の独立したデータベースであってもよい。例えば、シャード104A〜Nの各々は、別々のデータベースサーバと、リレーショナルデータベースとを含んでいてもよい。本明細書では具体的な例としてデータベースが記載されているが、本発明の実施例は、データベース以外のさまざまな種類のデータリポジトリ(例えば、ライトウェイト・ディレクトリ・アクセス・プロトコル(Lightweight Directory Access Protocol:LDAP)ディレクトリ、フラットファイル、連想記憶装置など)に適用可能である。クライアント102A〜Nの各々は、互いに独立して動作できる別々の計算システムであってもよい。例えば、クライアント102A〜Nは、デスクトップコンピュータ、ラップトップコンピュータ、モバイル機器などであってもよい。
クライアント102A〜Nは、ネットワーク106を介してシャード104A〜Nと相互作用し得る。ネットワーク106は、ローカルエリアネットワーク(local area network:LAN)、広域ネットワーク(wide area network:WAN)および/またはインターネットであってもよく、またはこれらを含んでいてもよい。ネットワーク106を介した通信は、イーサネット(登録商標)、伝送制御プロトコル/インターネットプロトコル(Transmission Control Protocol/Internet Protocol:TCP/IP)、ハイパーテキスト転送プロトコル(Hypertext Transfer Protocol:HTTP)、シンプル・オブジェクト・アクセス・プロトコル(Simple Object Access Protocol:SOAP)、オープン・データベース・コネクティビティ(Open Database Connectivity:ODBC)などの一連のネットワーク通信プロトコルを介して達成可能である。クライアント102A〜Nの各々は、特定のデータ項目のプライマリキーに基づいて、当該特定のデータ項目が格納されていたまたは格納されることになるシャード104A〜Nの中の特定のシャードのアイデンティティを計算するためにハッシュ関数を利用するソフトウェアプログラムの別々のインスタンスを実行し得る。このようなデータ項目は、類似の属性セットについて異なる値を有する別々の記録であってもよい。少なくとも一実施例では、このようなデータ項目は、1つ以上のリレーショナルデータベーステーブル内の別々の行としてシャード104A〜N内に格納され得る。リバランシングイベント中にシステム100に適用可能な下記の非常に特殊な例外により、各々のデータ項目は、いかなる特定の時点においてもシャード104A〜Nのうちの1つにのみ位置する。場合によっては、リバランシングイベントは、さまざまなデータ項目をあるシャードから別のシャードにリロケートさせ得る。本発明の実施例では、リバランシングイベント中にクライアントが動作を実行することに関わるアクティビティのシーケンスは、リバランシングイベント以外で発生する「通常の」システム状態の間にクライアントが同一タイプの動作を実行することに関わるアクティビティのシーケンスとは異なり得る。
一般に、シャード104A〜Nのうちの特定のシャードにすでに格納されているデータ項目に対して動作を実行するために、クライアント102A〜Nのうちの特定のクライアントは、まず、(例えばハッシュ関数に基づいて)当該データ項目が現在格納されているシャードを判断し得る。リバランシングイベント中に、特定のクライアントは、特定のクライアントがデータ項目の正しいコピー上で動作することを保証するため、すなわち特定のクライアントのアクティビティに非同期的にデータ項目がリロケートまたは削除されたかもしれない可能性を補償するために、確認を行い得る。通常のシステム状態の間は、データ項目の1つのコピーのみがシステム100内のどこかに存在し得るが、リバランシングイベント中は、データ項目の複数のコピー、すなわち異なるバージョンがシステム100内に一時的に存在することが起こり得る。これらの確認を行う際、特定のクライアントは、各々のデータ項目の各々のコピーとともに格納されるバージョン情報(以下でより詳細に説明)を利用することができる。少なくとも部分的にこのようなバージョン情報に基づいて、特定のクライアントは、データ項目が最も新しく配置されたシャードに格納されたデータ項目のコピーに対して、動作が、実行される場合には実行されることを保証することができる。リバランシングイベント中に特定のクライアントが動作を実行することは、データ項目の別のコピーが以前に存在していたシャードとは別のシャード上にデータ項目の新たなコピーを作成することを含み得る。実施例では、動作は、データ項目に対して1つ以上の命令を実行することを含み得る。例えば、このような命令は、クエリ言語命令の形態をとってもよく、構造化クエリ言語(Structured Query Language:SQL)命令は、1つの具体的な可能性にすぎない。特定のクライアントがデータ項目の最新のコピーに対して動作を実行した後、データ項目がもはや存在すべきでないシャードからデータ項目の古い旧式のバージョンを除去するためにクリーンアップ動作が実行され得る。一般に、システム100内のデータ整合性は、クライアント102A〜Nがロックを使用することなく、このようにして維持されることができる。
本発明の実施例によれば、シャードをシステム100に追加(またはシステム100から除去)できるので、システム100はスケーラブルである。シャード104A〜Nの量の変化は、システム100内でリバランシングイベントを生じさせ得る。リバランシングイベント中に、リバランシングプロセスは、古い量の代わりにシャードの新たな量に基づいて各々のデータ項目のプライマリキーをリハッシュし、それによって、リバランシングイベントの終了時点で当該データ項目が位置しているべき(異なっているまたは同一の)シャードのアイデンティティを判断し得る。次いで、リバランシングプロセスは、以下でより詳細に説明する技術を用いてデータ項目をシャードからシャードにリロケートし得る。当該リロケーションは、リバランシングイベント以外ではシステム100内に存在しないであろうデータ項目のコピーを作成および削除することを含み得る。リバランシングプロセスは、クライアント102A〜Nで実行されるソフトウェアに非同期的に実行され得る。有益なことに、クライアント102A〜Nは、少なくとも部分的にリバランシング動作中にクライアント102A〜Nが実行するアクティビティのシーケンスを調整することによって、リバランシング動作中にデータ項目に対して動作を実行し続けることができる。
バージョンおよびトゥームストーン(tombstone)属性
上記のように、本発明の実施例では、特定のデータ項目の各コピーは、バージョン情報に関連付けて格納されることができる。実施例では、このようなバージョン情報は、システム100においてリバランシングイベントが生じるたびにインクリメントされるシステム全体にわたるバージョン番号の形態をとってもよい。したがって、例えば、既存のデータ項目のバージョン番号が3であり、かつ、リバランシングイベント中に異なるシャード上にデータ項目の新たなコピーが作成された時点でシステムの現在のバージョン番号が4であれば、当該データ項目の新たなコピーは、バージョン番号4を有することになる。リバランシングイベント中に存在し得るデータ項目の2つの別々のコピーのバージョン情報を調べることによって、クライアントは、どのコピーがより新しいバージョンであるかを判断することができ、当該コピーに対して動作を実行することができる。また、リバランシングイベント中に存在し得るデータ項目の2つの別々のコピーのバージョン情報を調べることによって、リバランシングプロセスは、どのコピーがより古いバージョンであり、そのため当該コピーが位置しているシャードから除去されるべきであるかを判断することができる。
クライアントが実行する動作は、シャードからデータ項目を削除することを含み得る。実施例では、クライアントがデータ項目に対して削除動作を実行することは、当該データ項目が位置していたシャードから当該データ項目の全ての痕跡を即座に除去することはない。その代わりに、実施例では、各々のデータ項目は、「トゥームストーン」と呼ばれる属性を有し、その値が真(当該シャード上のデータ項目の当該コピーが削除された場合)または偽(当該シャード上のデータ項目の当該コピーが削除されなかった場合)に設定され得る。データ項目のトゥームストーン属性を「真」に設定することにより、データ項目がシャード上に無いことがリバランシングイベントの一部としての削除または別のシャードへの移動によるものである可能性がある場合に起こり得る曖昧な状況が回避される。実施例では、(クライアントではなく)リバランシングプロセスのみが、シャードからデータ項目を完全に除去することを許可される。
システム状態遷移
上記のように、さまざまな時点において、システム100はリバランシングイベントを実行している状態にある可能性があり、または、システム100はこのようなリバランシングイベント以外の状態にある可能性がある。また、上記のように、クライアント102A〜Nがリバランシングイベント中にデータ項目に対する動作の一部として実行するアクティビティのシーケンスは、リバランシングイベントが生じていない状態の間にクライアント102A〜Nが同一タイプの動作の一部として実行するアクティビティのシーケンスとは異なり得る。簡単な態様で考えると、システム100がリバランシングイベントを受けていない間に存在する「通常」状態の間は、クライアント102A〜Nは、ある種の不整合性から保護する防護策が無い可能性がある単純で高効率の「ナイーブな」技術を用いてデータ項目に対して動作を実行し得る。対照的に、システム100がリバランシングイベントを受けている間に存在する状態の間は、クライアント102A〜Nは、このような防護策を課すより複雑でより慎重な技術を用いて同一タイプの動作を実行し得る。このような防護策は、リバランシングイベント以外では不要であるかもしれないが、リバランシングイベント中は好適であろう。
図2は、本発明の実施例に係る、さまざまな時点においてクライアント102A〜Nが存在し得るさまざまな状態200およびそれらの状態間の起こり得る遷移を示す状態図である。状態200は、通常状態202と、リバランス移行状態204と、リバランシング状態206と、クリーンアップ移行状態208と、クリーンアップ状態210と、リバランス解放状態212とを含み得る。一実施例では、クライアント102A〜Nは、通常状態202およびリバランシング状態206中にのみ、シャード104A〜N内に格納されたデータ項目に対して動作を実行することを許可され、通常状態202およびリバランシング状態206は、クライアント102A〜Nが大部分の時間属する状態である可能性が高い。クライアント102A〜Nは通常は同一の状態にあるが、以下の説明から分かるように、それらのクライアントのそれぞれは、状態遷移中には少しの間異なる状態にあってもよい。
実施例によれば、クライアント102A〜Nは、通常状態202において初期化し得る。クライアント102A〜Nは、通常状態202にある間に新たな動作を開始し得る。通知機構は、1つ以上のシャードがシステム100に追加されたこと、または1つ以上のシャードがシステム100から除去される予定であることをクライアント102A〜Nの各々に通知し得る。このような通知に応答して、クライアント102A〜Nの各々は、ペンディング状態の動作が完了するのを待機し得て、次いで、当該クライアントは、リバランス移行状態204に遷移し得る。クライアント102A〜Nは、リバランス移行状態204にある間は新たな動作を開始することはなく、クライアント102A〜Nは、実行されるべき動作をキューに入れ得る。全てのクライアント102A〜Nがリバランス移行状態204に遷移すると、クライアント102A〜Nの各々は、リバランシング状態206に遷移し得る。クライアント102A〜Nがリバランシング状態206に入ると、リバランシングプロセスは、ソースシャードから宛先シャードにデータ項目を移動させることを行い得る。本発明の実施例では、当該時点以降に新たなデータ項目コピーが関連付けられることになる現在のバージョン番号は、クライアント102A〜Nがリバランシング状態206に入り次第、インクリメントされ得る。クライアント102A〜Nは、リバランシング状態206にある間に新たな動作(場合によっては、キューに入れられた動作を含む)を開始し得る。リバランシングプロセスがリロケートされるべき全てのデータ項目を移動させると、通知機構は、この事実をクライアント102A〜Nの各々に通知し得る。このような通知に応答して、クライアント102A〜Nの各々は、ペンディング状態の動作が完了するのを待機し得て、次いで、当該クライアントは、クリーンアップ移行状態208に遷移し得る。クライアント102A〜Nは、クリーンアップ移行状態208にある間は新たな動作を開始することはなく、クライアント102A〜Nは、実行されるべき動作をキューに入れ得る。全てのクライアント102A〜Nがクリーンアップ移行状態208に遷移すると、クライアント102A〜Nの各々は、クリーンアップ状態210に遷移し得る。クライアント102A〜Nがクリーンアップ状態210に入ると、リバランシングプロセスは、いかなるシャード上にももはや存在すべきでないデータ項目コピーをシャードから除去することを行い得る。実施例では、クライアント102A〜Nがクリーンアップ状態210にある間に、リバランシングプロセスは、「真」のトゥームストーン属性値を有する全てのデータ項目コピーをシャードから除去し得る。また、実施例では、クライアント102A〜Nがクリーンアップ状態210にある間に、リバランシングプロセスは、システムの現在のバージョン番号よりも小さなバージョン番号属性値を有する全てのデータ項目コピーをシャードから除去し得る。クライアント102A〜Nは、クリーンアップ状態210にある間は新たな動作を開始することはなく、クライアント102A〜Nは、実行されるべき動作をキューに入れ得る。リバランシングプロセスが除去されるべき全てのデータ項目コピーを除去すると、通知機構は、この事実をクライアント102A〜Nの各々に通知し得る。このような通知に応答して、クライアント102A〜Nの各々は、リバランス解放状態212に遷移し得る。クライアント102A〜Nは、リバランス解放状態212にある間は新たな動作を開始することはなく、クライアント102A〜Nは、実行されるべき動作をキューに入れ得る。全てのクライアント102A〜Nがリバランス解放状態212に遷移すると、クライアント102A〜Nの各々は、通常状態202に戻り得る。クライアント102A〜Nは、通常状態202にある間に新たな動作(場合によっては、キューに入れられた動作を含む)を開始し得る。
上記のように、クライアント102A〜Nがリバランシング状態206にある間に、クライアント102A〜Nは、クライアント102A〜Nが通常状態202にある間に同一タイプの動作を実行するであろう態様よりも慎重な態様で動作を実行し得る。クライアント102A〜Nがリバランシング状態206にある間に動作を実行し得る態様は、シャードからシャードにデータ項目をリロケートしている可能性があるリバランシングプロセスの同時的な非同期的実行、すなわち通常状態202では存在しない懸案事項にもかかわらず、データ整合性を保証することができる。リバランシング状態206にある間にこのより慎重な整合性を保証する態様でさまざまな異なるタイプの動作を実行するための技術について、以下で説明する。
追加動作
図3は、本発明の実施例に係る、リバランシング状態にある間に追加動作を実行するための技術300の例を示すフロー図である。技術300は、特定の順序で実行される特定のアクティビティを含むように示されているが、本発明の代替的な実施例は、追加のアクティビティ、より少ない数のアクティビティまたは異なるアクティビティを有する技術を含んでいてもよい。クライアント102A〜Nはいずれも、技術300を実行することができる。ブロック302において、クライアントは、シャード量の変化の前に特定のデータ項目が位置していたであろうソースシャードのアイデンティティを判断し得る。この判断は、例えば古いシャード量を法として特定のデータ項目のプライマリキーを計算することによって実現されてもよい。ブロック304において、クライアントは、シャード量の変化の後に当該特定のデータ項目が位置することになる宛先シャードのアイデンティティを判断し得る。この判断は、例えば新たなシャード量を法として特定のデータ項目のプライマリキーを計算することによって実現されてもよい。ブロック306において、クライアントは、ソースシャードのアイデンティティが宛先シャードのアイデンティティと同一であるか否かを判断し得る。アイデンティティが同一であれば、制御はブロック308に進む。そうでなければ、制御はブロック310に進む。
ブロック308において、クライアントは、追加動作を実行するための通常のナイーブな高効率の標準的な態様で特定のデータ項目を宛先シャードに追加し得る。この時点で、技術300は終了する。
代替的に、ブロック310において、クライアントは、特定のデータ項目のプライマリキーを有するデータ項目がソースシャード上にすでに存在しているか否かを判断し得る。特定のデータ項目のプライマリキーを有するデータ項目がソースシャード上にすでに存在していれば、制御はブロック312に進む。そうでなければ、制御はブロック314に進む。
ブロック312において、クライアントは、特定のデータ項目が、シャードシステムにすでに存在しているデータ項目と重複していると結論付け得て、追加動作を実行することを控え得る。クライアントは、重複のために追加動作が阻止されたことをユーザに知らせ得る。この時点で、技術300は終了する。
代替的に、ブロック314において、クライアントは、(a)特定のデータ項目のプライマリキーおよび(b)「真」のトゥームストーン属性値を両方とも有するデータ項目が宛先シャード上にすでに存在しているか否かを判断し得る。(a)特定のデータ項目のプライマリキーおよび(b)「真」のトゥームストーン属性値を両方とも有するデータ項目が宛先シャード上にすでに存在していれば、制御はブロック316に進む。そうでなければ、制御はブロック320に進む。
ブロック316において、アトミックアクションの一部として、クライアントは、特定のデータ項目の属性値を、(宛先シャード上の)特定のデータ項目のプライマリキーを有するデータ項目の属性値に割り当て得る。この割り当ては、基本的には、宛先シャード上に存在しているデータ項目を更新する。クライアントは、システムの現在のバージョン番号をデータ項目のバージョン番号属性に割り当て得る。ブロック318において、同一のアトミックアクションの一部として、クライアントは、(宛先シャード上の)特定のデータ項目のプライマリキーを有するデータ項目のトゥームストーン属性値を「偽」に設定し得る。実施例では、ブロック316の属性値割り当ては、ブロック318のアクティビティによって達成される結果と同一の結果を達成する。なぜなら、特定のデータ項目のトゥームストーン属性値は、割り当ての前にすでに「偽」であるからである。クライアントは、追加動作が成功したことをユーザに知らせ得る。この時点で、技術300は終了する。
代替的に、ブロック320において、クライアントは、特定のデータ項目を宛先シャードに挿入し得る。クライアントは、システムの現在のバージョン番号を特定のデータ項目のバージョン番号属性に割り当て得る。クライアントは、追加動作が成功したことをユーザに知らせ得る。この時点で、技術300は終了する。本発明の実施例では、ブロック314〜320のアクティビティは、単一のアトミック動作として実行される。
更新動作
図4は、本発明の実施例に係る、リバランシング状態にある間に更新動作を実行するための技術400の例を示すフロー図である。技術400は、特定の順序で実行される特定のアクティビティを含むものとして示されているが、本発明の代替的な実施例は、追加のアクティビティ、より少ない数のアクティビティまたは異なるアクティビティを有する技術を含んでいてもよい。クライアント102A〜Nはいずれも、技術400を実行することができる。ブロック402において、クライアントは、シャード量の変化の前に特定のデータ項目が位置していたであろうソースシャードのアイデンティティを判断し得る。この判断は、例えば古いシャード量を法として特定のデータ項目のプライマリキーを計算することによって実現されてもよい。ブロック404において、クライアントは、シャード量の変化の後に当該特定のデータ項目が位置することになる宛先シャードのアイデンティティを判断し得る。この判断は、例えば新たなシャード量を法として特定のデータ項目のプライマリキーを計算することによって実現されてもよい。ブロック406において、クライアントは、ソースシャードのアイデンティティが宛先シャードのアイデンティティと同一であるか否かを判断し得る。アイデンティティが同一であれば、制御はブロック408に進む。そうでなければ、制御はブロック410に進む。
ブロック408において、クライアントは、更新動作を実行するための通常のナイーブな高効率の標準的な態様で宛先シャード上の特定のデータ項目を更新し得る。この時点で、技術400は終了する。
代替的に、ブロック410において、クライアントは、特定のデータ項目のプライマリキーを有するデータ項目がソースシャード上にすでに存在しているか否かを判断し得る。特定のデータ項目のプライマリキーを有するデータ項目がソースシャード上にすでに存在していれば、制御はブロック416に進む。そうでなければ、制御はブロック422に進む。
ブロック416において、クライアントは、特定のデータ項目のプライマリキーを有するデータ項目が宛先シャード上にすでに存在しているか否かを判断し得る。特定のデータ項目のプライマリキーを有するデータ項目が宛先シャード上にすでに存在していれば、制御はブロック418に進む。そうでなければ、制御はブロック420に進む。
ブロック418において、クライアントは、特定のデータ項目の属性値を、(宛先シャード上の)特定のデータ項目のプライマリキーを有するデータ項目の属性値に割り当て得る。この割り当ては、基本的には、宛先シャード上に存在しているデータ項目を更新する。クライアントは、システムの現在のバージョン番号をデータ項目のバージョン番号属性に割り当て得る。クライアントは、更新動作が成功したことをユーザに知らせ得る。この時点で、技術400は終了する。
代替的に、ブロック420において、クライアントは、特定のデータ項目を宛先シャードに挿入し得る。クライアントは、システムの現在のバージョン番号を特定のデータ項目のバージョン番号属性に割り当て得る。クライアントは、更新動作が成功したことをユーザに知らせ得る。この時点で、技術400は終了する。
代替的に、ブロック422において、クライアントは、(a)特定のデータ項目のプライマリキーおよび(b)「偽」のトゥームストーン属性値を両方とも有するデータ項目が宛先シャード上にすでに存在しているか否かを判断し得る。(a)特定のデータ項目のプライマリキーおよび(b)「偽」のトゥームストーン属性値を両方とも有するデータ項目が宛先シャード上にすでに存在していれば、制御はブロック418に進む。そうでなければ、制御はブロック428に進む。
代替的に、ブロック428において、クライアントは、更新動作を実行することを控え得る。クライアントは、(更新すべきデータ項目がなかったので)更新動作が失敗したことをユーザに知らせ得る。この時点で、技術400は終了する。
削除動作
図5は、本発明の実施例に係る、リバランシング状態にある間に削除動作を実行するための技術500の例を示すフロー図である。技術500は、特定の順序で実行される特定のアクティビティを含むものとして示されているが、本発明の代替的な実施例は、追加のアクティビティ、より少ない数のアクティビティまたは異なるアクティビティを有する技術を含んでいてもよい。クライアント102A〜Nはいずれも、技術500を実行することができる。ブロック502において、クライアントは、シャード量の変化の前に特定のデータ項目が位置していたであろうソースシャードのアイデンティティを判断し得る。この判断は、例えば古いシャード量を法として特定のデータ項目のプライマリキーを計算することによって実現されてもよい。ブロック504において、クライアントは、シャード量の変化の後に当該特定のデータ項目が位置することになる宛先シャードのアイデンティティを判断し得る。この判断は、例えば新たなシャード量を法として特定のデータ項目のプライマリキーを計算することによって実現されてもよい。ブロック506において、クライアントは、ソースシャードのアイデンティティが宛先シャードのアイデンティティと同一であるか否かを判断し得る。アイデンティティが同一であれば、制御はブロック508に進む。そうでなければ、制御はブロック510に進む。
ブロック508において、クライアントは、削除動作を実行するための通常のナイーブな高効率の標準的な態様で宛先シャード上の特定のデータ項目を削除し得る。この時点で、技術500は終了する。
代替的に、ブロック510において、アトミックアクションの一部として、クライアントは、特定のデータ項目のプライマリキーを有するデータ項目がソースシャード上にすでに存在しているか否かを判断し得る。特定のデータ項目のプライマリキーを有するデータ項目がソースシャード上にすでに存在していれば、制御はブロック512に進む。そうでなければ、制御はブロック516に進む。
ブロック512において、アトミックアクションの一部として、クライアントは、特定のデータ項目を宛先シャードに更新/挿入し得る。更新/挿入は、(1)プライマリキーによって特定されるオブジェクトがデータベース(すなわち宛先シャード)に存在しない場合には挿入として定義され、または(2)プライマリキーによって特定されるオブジェクトがデータベース(すなわち宛先シャード)に存在する場合には更新として定義される。ブロック514において、アトミックアクションの一部として、クライアントは、特定のデータ項目のトゥームストーン属性の値を「真」に設定し得る。クライアントは、システムの現在のバージョン番号を特定のデータ項目のバージョン番号属性に割り当て得る。クライアントは、削除動作が成功したことをユーザに知らせ得る。この時点で、技術500は終了する。
代替的に、ブロック516において、クライアントは、特定のデータ項目のプライマリキーを有するデータ項目が宛先シャード上にすでに存在しているか否かを判断し得る。特定のデータ項目のプライマリキーを有するデータ項目が宛先シャード上にすでに存在していれば、制御はブロック518に進む。そうでなければ、制御はブロック520に進む。
ブロック518において、クライアントは、(宛先シャード上の)データ項目のトゥームストーン属性の値を「真」に設定し得る。クライアントは、システムの現在のバージョン番号をデータ項目のバージョン番号属性に割り当て得る。クライアントは、削除動作が成功したことをユーザに知らせ得る。この時点で、技術500は終了する。
代替的に、ブロック520において、クライアントは、削除動作を実行することを控え得る。クライアントは、(削除すべきデータ項目がなかったので)削除動作が失敗したことをユーザに知らせ得る。この時点で、技術500は終了する。
取得動作
図6A〜図6Bは、本発明の実施例に係る、リバランシング状態にある間に取得動作を実行するための技術600の例を示すフロー図である。実施例では、取得動作は、クライアント指定のプライマリキーを有するデータ項目の属性値を読取って、返し得る。技術600は、特定の順序で実行される特定のアクティビティを含むものとして示されているが、本発明の代替的な実施例は、追加のアクティビティ、より少ない数のアクティビティまたは異なるアクティビティを有する技術を含んでいてもよい。クライアント102A〜Nはいずれも、技術600を実行することができる。まず図6Aを参照して、ブロック602において、クライアントは、シャード量の変化の前に指定のプライマリキーを有する特定のデータ項目が位置していたであろうソースシャードのアイデンティティを判断し得る。この判断は、例えば古いシャード量を法として指定のプライマリキーを計算することによって実現されてもよい。ブロック604において、クライアントは、シャード量の変化の後に当該指定のプライマリキーを有する特定のデータ項目が位置することになる宛先シャードのアイデンティティを判断し得る。この判断は、例えば新たなシャード量を法として指定のプライマリキーを計算することによって実現されてもよい。ブロック606において、クライアントは、ソースシャードのアイデンティティが宛先シャードのアイデンティティと同一であるか否かを判断し得る。アイデンティティが同一であれば、制御はブロック608に進む。そうでなければ、制御はブロック610に進む。
ブロック608において、クライアントは、取得動作を実行するための通常のナイーブな高効率の標準的な態様で宛先シャード上の指定のプライマリキーを有する特定のデータ項目に対して取得動作を実行し得る。この時点で、技術600は終了する。
代替的に、ブロック610において、クライアントは、指定のプライマリキーを有するデータ項目が宛先シャード上にすでに存在しているか否かを判断し得る。指定のプライマリキーを有するデータ項目が宛先シャード上にすでに存在していれば、制御はブロック612に進む。そうでなければ、制御はブロック618に進む。
ブロック612において、クライアントは、宛先シャード上の指定のプライマリキーを有するデータ項目が「真」のトゥームストーン属性値を有しているか否かを判断し得る。宛先シャード上の指定のプライマリキーを有するデータ項目が「真」のトゥームストーン属性値を有していれば、制御はブロック614に進む。そうでなければ、制御はブロック616に進む。
ブロック614において、クライアントは、取得動作を実行することを控え得る。クライアントは、(指定のプライマリキーを有するデータ項目が見つけられなかったので)取得動作が失敗したことをユーザに知らせ得る。この時点で、技術600は終了する。
代替的に、ブロック616において、クライアントは、宛先シャード上の指定のプライマリキーを有するデータの属性値を読取り得る。クライアントは、これらの属性値をユーザに提示して、同時に、取得動作が成功したことを知らせ得る。この時点で、技術600は終了する。
代替的に、ブロック618において、クライアントは、指定のプライマリキーを有するデータ項目がソースシャード上にすでに存在しているか否かを判断し得る。指定のプライマリキーを有するデータ項目がソースシャード上にすでに存在していれば、制御はブロック620に進む。そうでなければ、制御は図6Bのブロック626に進む。
代替的に、ブロック620において、クライアントは、ソースシャード上の指定のプライマリキーを有するデータ項目が「真」のトゥームストーン属性値を有しているか否かを判断し得る。ソースシャード上の指定のプライマリキーを有するデータ項目が「真」のトゥームストーン属性値を有していれば、制御はブロック622に進む。そうでなければ、制御はブロック624に進む。
ブロック622において、クライアントは、取得動作を実行することを控え得る。クライアントは、(指定のプライマリキーを有するデータ項目が見つけられなかったので)取得動作が失敗したことをユーザに知らせ得る。この時点で、技術600は終了する。
代替的に、ブロック624において、クライアントは、ソースシャード上の指定のプライマリキーを有するデータの属性値を読取り得る。クライアントは、これらの属性値をユーザに提示して、同時に、取得動作が成功したことを知らせ得る。この時点で、技術600は終了する。
ここで図6Bを参照して、代替的に、ブロック626において、クライアントは、指定のプライマリキーを有するデータ項目が宛先シャード上に現在存在しているか否かを(再び)判断し得る。(例えばリバランシングプロセスが当該データ項目を宛先シャードに新しく移動させた結果として)指定のプライマリキーを有するデータ項目が宛先シャード上に現在存在していれば、制御はブロック628に進む。そうでなければ、制御はブロック630に進む。
ブロック628において、クライアントは、宛先シャード上の指定のプライマリキーを有するデータ項目が「真」のトゥームストーン属性値を有しているか否かを判断し得る。宛先シャード上の指定のプライマリキーを有するデータ項目が「真」のトゥームストーン属性値を有していれば、制御はブロック630に進む。そうでなければ、制御はブロック632に進む。
ブロック630において、クライアントは、取得動作を実行することを控え得る。クライアントは、(指定のプライマリキーを有するデータ項目が見つけられなかったので)取得動作が失敗したことをユーザに知らせ得る。この時点で、技術600は終了する。
代替的に、ブロック632において、クライアントは、宛先シャード上の指定のプライマリキーを有するデータの属性値を読取り得る。クライアントは、これらの属性値をユーザに提示して、同時に、取得動作が成功したことを知らせ得る。この時点で、技術600は終了する。
リバランシング動作
図7は、本発明の実施例に係る、クライアント102A〜Nが(最初に)リバランシング状態にある間にリバランシング動作を実行するための技術700の例を示すフロー図である。技術700は、特定の順序で実行される特定のアクティビティを含むものとして示されているが、本発明の代替的な実施例は、追加のアクティビティ、より少ない数のアクティビティまたは異なるアクティビティを有する技術を含んでいてもよい。リバランシングプロセスは、クライアント102A〜Nによる他のタイプの動作の実行に非同期的に技術700を実行し得る。
ブロック702において、システムの現在のバージョン番号がインクリメントされる。ブロック704において、リバランシングプロセスは、バージョン番号属性値がシステムの現在のバージョン番号よりも小さいデータ項目を任意のシャードが依然として含んでいるか否かを判断し得る。バージョン番号属性値がシステムの現在のバージョン番号よりも小さい特定のデータ項目をあるシャードが含んでいれば、制御はブロック706に進む。そうでなければ、リバランシングプロセスは、この特定のリバランシングイベントのためのデータ項目のリロケーションを終了し、制御はブロック714に進む。
ブロック706において、リバランシングプロセスは、シャード量の変化の後に当該特定のデータ項目が位置することになる宛先シャードのアイデンティティを判断し得る。この判断は、例えば新たなシャード量を法として特定のデータ項目のプライマリキーを計算することによって実現されてもよい。ブロック708において、リバランシングプロセスは、特定のデータ項目が現在位置しているソースシャードのアイデンティティが宛先シャードのアイデンティティと同一であるか否かを判断し得る。アイデンティティが同一であれば、制御はブロック710に進む。そうでなければ、制御はブロック712に進む。
ブロック710において、リバランシングプロセスは、システムの現在のバージョン番号を特定のデータ項目のバージョン番号属性に割り当て得る。このような状況下では、特定のデータ項目は、異なるシャードにリロケートされる必要はない。制御はブロック704に戻る。
代替的に、ブロック712において、リバランシングプロセスは、特定のデータ項目を宛先シャードに挿入し得る。一実施例では、起こり得るコンフリクトを無視することができる。リバランシングプロセスは、システムの現在のバージョン番号を特定のデータ項目のバージョン番号属性に割り当て得る。重要なことに、実施例では、ブロック716および718のアクティビティが実行されるまで、特定のデータ項目の古いコピーがソースシャード上に残っている可能性がある。制御はブロック704に戻る。
代替的に、ブロック714において、リバランシングプロセスは、リバランシングプロセスがデータ項目のリロケーションを終了した時点で実行されていた(例えばクライアント102A〜Nからの)任意のクエリが、シャード(例えばシャード104A〜N)のうちのいずれかに対して現在実行されているか否かを判断し得る。リバランシングプロセスがデータ項目のリロケーションを終了した時点で実行されていた少なくとも1つのクエリが、少なくとも1つのシャードに対して現在実行されていれば、制御はブロック714に戻る。そうでなければ、制御はブロック716に進む。
データ項目リロケーションの終了時点でペンディングであった全てのクエリが完了した後、ブロック716において、リバランシングプロセスは、バージョン番号属性値がシステムの現在のバージョン番号よりも小さい全てのデータ項目コピーを全てのシャードから除去し得る。ブロック718において、リバランシングプロセスは、トゥームストーン属性値が「真」である全てのデータ項目コピーを全てのシャードから除去し得る。実施例では、ブロック716および718のアクティビティは、図2に関連して上記したクリーンアップ局面210中に実行可能である。
クエリ動作
図8は、本発明の実施例に係る、リバランシング状態にある間にクエリ動作を実行するための技術800の例を示すフロー図である。技術800は、特定の順序で実行される特定のアクティビティを含むものとして示されているが、本発明の代替的な実施例は、追加のアクティビティ、より少ない数のアクティビティまたは異なるアクティビティを有する技術を含んでいてもよい。例えば、クライアント102A〜Nはいずれも、技術800を実行することができる。技術800は、技術700と同時に実行可能である。ブロック802において、シャード104A〜Nの各々の特定のシャードについて、クエリ指定のフィルタリング基準を満たす特定のシャードのデータ項目が全て、当該特定のシャードについての別々の事前結果キューに入れられ得る。各々のこのような事前結果キューは、空の状態で開始し得る。したがって、シャード104A〜Nの各々について、別々の事前結果キューが投入され得る。ブロック804において、シャード104A〜Nの各々の特定のシャードについて、当該特定のシャードの事前結果キュー内に含まれるデータ項目が、少なくとも部分的にそれらのデータ項目のプライマリキーに基づいて、分類され得る。その結果、例えば、各々の事前結果キューは、当該事前結果キューにおけるデータ項目のうちの最小のプライマリキーを有するデータ項目が当該事前結果キューの先頭にあることができるように分類されるデータ項目を含み得る。ブロック806において、全てのシャードの事前結果キューが空であるか否かについて判断がなされ得る。全てのシャードの事前結果キューが空であれば、制御はブロック818に進む。そうでなければ、制御はブロック808に進む。
ブロック808において、現在のところ各々のシャードの事前結果キューのトップにあるデータ項目のセットから、当該セットにおけるデータ項目の中で最小のプライマリキーを有する1つ以上のデータ項目のサブセットが選択され得る。ブロック810において、ブロック808において選択された1つ以上のデータ項目のサブセットから、最大のバージョン番号属性値を有する特定のデータ項目が選択され得る。ブロック812において、特定のデータ項目のトゥームストーン属性値が「偽」であるか否かについて判断がなされ得る。特定のデータ項目のトゥームストーン属性値が「偽」であれば、制御はブロック814に進む。そうでなければ、制御はブロック816に進む。
ブロック814において、特定のデータ項目が最終結果セットに追加され得る。最終結果セットは、空の状態で開始し得る。制御はブロック816に進む。ブロック816において、(特定のデータ項目自体を含む)特定のデータ項目と同一のプライマリキーを有する全てのデータ項目コピーが、全てのシャードの事前結果キューから除去され得る。この除去は、場合によっては、他のデータ項目をそれらのキューのうちの1つ以上のトップに上昇させる可能性がある。制御はブロック806に戻る。
代替的に、ブロック818において、最終結果セットにおけるデータ項目が、クエリ動作の最終結果として返され得る。
ハードウェアの概要
図9は、実施例のうちの1つを実現するための分散システム900の簡略化された図を示す。示されている実施例では、分散システム900は、1つ以上のクライアント計算装置902,904,906および908を含み、当該1つ以上のクライアント計算装置902,904,906および908は、ウェブブラウザ、専有のクライアント(例えばオラクルフォームズ)などのクライアントアプリケーションを1つ以上のネットワーク910を介して実行および動作させるように構成されている。サーバ912は、ネットワーク910を介して、遠く離れたクライアント計算装置902,904,906および908と通信可能に結合され得る。
さまざまな実施例では、サーバ912は、システムの1つ以上の構成要素によって提供される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。いくつかの実施例では、これらのサービスは、ウェブベースのサービスもしくはクラウドサービスとして、またはソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)モデルのもとで、クライアント計算装置902,904,906および/または908のユーザに供給されてもよい。そして、クライアント計算装置902,904,906および/または908を動作させるユーザは、1つ以上のクライアントアプリケーションを利用して、サーバ912と相互作用して、これらの構成要素によって提供されるサービスを利用し得る。
図に示されている構成では、システム900のソフトウェアコンポーネント918,920および922は、サーバ912上に実装されるように示されている。また、他の実施例では、システム900の構成要素のうちの1つ以上および/またはこれらの構成要素によって提供されるサービスは、クライアント計算装置902,904,906および/または908のうちの1つ以上によって実現されてもよい。その場合、クライアント計算装置を動作させるユーザは、1つ以上のクライアントアプリケーションを利用して、これらの構成要素によって提供されるサービスを使用し得る。これらの構成要素は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実現されてもよい。分散システム900とは異なり得るさまざまな異なるシステム構成が可能であることが理解されるべきである。したがって、図に示されている実施例は、実施例のシステムを実現するための分散システムの一例であり、限定的であるよう意図したものではない。
クライアント計算装置902,904,906および/または908は、手持ち式携帯機器(例えばiPhone(登録商標)、携帯電話、iPad(登録商標)、計算タブレット、パーソナルデジタルアシスタント(personal digital assistant:PDA))またはウェアラブル装置(例えばグーグルグラス(登録商標)ヘッドマウントディスプレイ)であってもよく、当該装置は、マイクロソフト・ウィンドウズ・モバイル(登録商標)などのソフトウェアを実行し、および/または、iOS、ウィンドウズ・フォン、アンドロイド、ブラックベリー10、パームOSなどのさまざまなモバイルオペレーティングシステムを実行し、インターネット、eメール、ショート・メッセージ・サービス(short message service:SMS)、ブラックベリー(登録商標)、または使用可能な他の通信プロトコルである。クライアント計算装置は、汎用パーソナルコンピュータであってもよく、当該汎用パーソナルコンピュータは、一例として、マイクロソフトウィンドウズ(登録商標)、アップルマッキントッシュ(登録商標)および/またはリナックス(登録商標)オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む。クライアント計算装置は、ワークステーションコンピュータであってもよく、当該ワークステーションコンピュータは、例えばGoogle Chrome OSなどのさまざまなGNU/リナックスオペレーティングシステムを含むがこれらに限定されるものではないさまざまな市販のUNIX(登録商標)またはUNIXライクオペレーティングシステムのうちのいずれかを実行する。代替的に、またはさらに、クライアント計算装置902,904,906および908は、シン・クライアントコンピュータ、インターネットにより可能なゲームシステム(例えばキネクト(登録商標)ジェスチャ入力装置を有するまたは持たないマイクロソフトXボックスゲーム機)、および/または、ネットワーク910を介して通信が可能なパーソナルメッセージング装置などのその他の電子装置であってもよい。
例示的な分散システム900は、4個のクライアント計算装置を有するように示されているが、任意の数のクライアント計算装置がサポートされてもよい。センサを有する装置などの他の装置が、サーバ912と相互作用してもよい。
分散システム900におけるネットワーク910は、さまざまな市販のプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者になじみのある任意のタイプのネットワークであってもよく、当該プロトコルは、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、アップルトークなどを含むが、これらに限定されるものではない。単に一例として、ネットワーク910は、イーサネット、トークンリングなどに基づくものなどのローカルエリアネットワーク(LAN)であってもよい。ネットワーク910は、広域ネットワークおよびインターネットであってもよい。ネットワーク910は、仮想ネットワークを含んでいてもよく、当該仮想ネットワークは、仮想プライベートネットワーク(virtual private network:VPN)、イントラネット、エクストラネット、公衆交換電話網(public switched telephone network:PSTN)、赤外線ネットワーク、無線ネットワーク(例えば米国電気電子学会(Institute of Electrical and Electronics:IEEE)902.11の一連のプロトコル、ブルートゥース(登録商標)および/またはその他の無線プロトコルのうちのいずれかのもとで動作するネットワーク)、および/またはこれらの任意の組み合わせ、および/または他のネットワークを含むが、これらに限定されるものではない。
サーバ912は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例として、PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント式サーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な構成および/または組み合わせで構成され得る。さまざまな実施例では、サーバ912は、上記の開示に記載されている1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。例えば、サーバ912は、本開示の実施例に係る上記の処理を実行するためのサーバに対応してもよい。
サーバ912は、上記のもののうちのいずれか、および、任意の市販のサーバオペレーティングシステムを含むオペレーティングシステムを実行し得る。また、サーバ912は、HTTP(ハイパーテキスト転送プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(共通ゲートウェイインターフェース)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまなさらなるサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行し得る。例示的なデータベースサーバは、オラクル社、マイクロソフト社、サイベース社、IBM社(International Business Machines)などから市販されているものを含むが、これらに限定されるものではない。
いくつかの実現例では、サーバ912は、クライアント計算装置902,904,906および908のユーザから受信されたデータフィードおよび/またはイベント更新を分析および統合するための1つ以上のアプリケーションを含み得る。一例として、データフィードおよび/またはイベント更新は、1つ以上の第三者情報源および連続的なデータストリームから受信されるツイッター(登録商標)フィード、フェースブック(登録商標)更新またはリアルタイム更新を含み得るが、これらに限定されるものではなく、センサデータアプリケーション、金融ティッカ、ネットワーク性能測定ツール(例えばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通モニタリングなどに関連するリアルタイムイベントを含み得る。また、サーバ912は、クライアント計算装置902,904,906および908の1つ以上の表示装置を介してデータフィードおよび/またはリアルタイムイベントを表示するための1つ以上のアプリケーションを含み得る。
また、分散システム900は、1つ以上のデータベース914および916を含み得る。データベース914および916は、さまざまな場所に存在し得る。一例として、データベース914および916の1つ以上は、サーバ912にローカルな(および/または存在する)非一時的な記憶媒体に存在していてもよい。代替的に、データベース914および916は、サーバ912から遠く離れていて、ネットワークベースまたは専用の接続を介してサーバ912と通信してもよい。一組の実施例では、データベース914および916は、記憶領域ネットワーク(storage-area network:SAN)に存在していてもよい。同様に、サーバ912に起因する機能を実行するための任意の必要なファイルが、サーバ912上にローカルに、および/または、リモートで適宜格納されていてもよい。一組の実施例では、データベース914および916は、SQLフォーマットコマンドに応答してデータを格納、更新および検索するように適合された、オラクル社によって提供されるデータベースなどのリレーショナルデータベースを含み得る。
図10は、本開示の実施例に係る、実施例のシステムの1つ以上の構成要素によって提供されるサービスをクラウドサービスとして供給することができるシステム環境1000の1つ以上の構成要素の簡略化されたブロック図である。示されている実施例では、システム環境1000は、クラウドサービスをホストするクラウドインフラストラクチャシステム1002と相互作用するようにユーザによって使用され得る1つ以上のクライアント計算装置1004,1006および1008を含む。クライアント計算装置は、クラウドインフラストラクチャシステム1002によって提供されるサービスを使用するためにクラウドインフラストラクチャシステム1002と相互作用するようにクライアント計算装置のユーザによって使用され得る、ウェブブラウザ、専有のクライアントアプリケーション(例えばオラクルフォームズ)または他のアプリケーションなどのクライアントアプリケーションを動作させるように構成され得る。
図に示されているクラウドインフラストラクチャシステム1002は、示されている構成要素とは他の構成要素を有していてもよいということが理解されるべきである。さらに、図に示されている実施例は、本発明の実施例を組み込むことができるクラウドインフラストラクチャシステムの一例にすぎない。いくつかの他の実施例では、クラウドインフラストラクチャシステム1002は、図に示されているものよりも多いまたは少ない数の構成要素を有していてもよく、2つ以上の構成要素を組み合わせてもよく、または構成要素の異なる構成または配置を有していてもよい。
クライアント計算装置1004,1006および1008は、902,904,906および908について上記したものと類似の装置であってもよい。
例示的なシステム環境1000は3個のクライアント計算装置を有するように示されているが、任意の数のクライアント計算装置がサポートされてもよい。センサを有する装置などの他の装置が、クラウドインフラストラクチャシステム1002と相互作用してもよい。
ネットワーク1010は、クライアント1004,1006および1008とクラウドインフラストラクチャシステム1002との間のデータの通信およびやりとりを容易にし得る。各々のネットワークは、ネットワーク910について上記したものを含むさまざまな市販のプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者になじみのある任意のタイプのネットワークであってもよい。
クラウドインフラストラクチャシステム1002は、サーバ912について上記したものを含み得る1つ以上のコンピュータおよび/またはサーバを備え得る。
特定の実施例では、クラウドインフラストラクチャシステムによって提供されるサービスは、オンラインデータ記憶およびバックアップソリューション、ウェブベースのeメールサービス、ホスト型オフィススイートおよびドキュメントコラボレーションサービス、データベース処理、管理技術サポートサービスなどの、クラウドインフラストラクチャシステムのユーザがオンデマンドで利用可能な多数のサービスを含み得る。クラウドインフラストラクチャシステムによって提供されるサービスは、そのユーザのニーズを満たすように動的にスケーリング可能である。クラウドインフラストラクチャシステムによって提供されるサービスの具体的なインスタンス化は、本明細書では「サービスインスタンス」と称される。一般に、インターネットなどの通信ネットワークを介してクラウドサービスプロバイダのシステムからユーザが利用可能な任意のサービスは、「クラウドサービス」と称される。通常、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なっている。例えば、クラウドサービスプロバイダのシステムがアプリケーションを提供してもよく、ユーザは、インターネットなどの通信ネットワークを介してオンデマンドで当該アプリケーションを注文および使用してもよい。
いくつかの例では、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、記憶装置、ホスト型データベース、ホスト型ウェブサーバ、ソフトウェアアプリケーションへの保護されたコンピュータネットワークアクセス、またはクラウドベンダによってユーザに提供されるかもしくはそうでなければ当該技術分野において公知の他のサービスを含み得る。例えば、サービスは、インターネットを介したクラウド上のリモート記憶装置へのパスワードによって保護されたアクセスを含み得る。別の例として、サービスは、ネットワーク化された開発者による私的使用のためのウェブサービスベースのホスト型リレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダのウェブサイト上でホストされるeメールソフトウェアアプリケーションへのアクセスを含み得る。
特定の実施例では、クラウドインフラストラクチャシステム1002は、セルフサービスの、サブスクリプションベースの、弾性的にスケーラブルな、信頼性のある、高可用性の、安全な態様で顧客に配信される一連のアプリケーション、ミドルウェアおよびデータベースサービス提供品を含み得る。このようなクラウドインフラストラクチャシステムの一例は、本譲受人によって提供されるオラクルパブリッククラウドである。
さまざまな実施例では、クラウドインフラストラクチャシステム1002は、クラウドインフラストラクチャシステム1002によって供給されるサービスへの顧客のサブスクリプションを自動的にプロビジョニング、管理および追跡するように適合され得る。クラウドインフラストラクチャシステム1002は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。例えば、クラウドインフラストラクチャシステム1002が、(例えばオラクル社によって所有される)クラウドサービスを販売する組織によって所有され、一般大衆またはさまざまな産業企業がサービスを利用できるパブリッククラウドモデルのもとでサービスが提供されてもよい。別の例として、クラウドインフラストラクチャシステム1002が単一の組織のためだけに運営され、当該組織内の1つ以上のエンティティにサービスを提供し得るプライベートクラウドモデルのもとでサービスが提供されてもよい。また、クラウドインフラストラクチャシステム1002およびクラウドインフラストラクチャシステム1002によって提供されるサービスが、関連のコミュニティ内のいくつかの組織によって共有されるコミュニティクラウドモデルのもとでクラウドサービスが提供されてもよい。また、2つ以上の異なるモデルの組み合わせであるハイブリッドクラウドモデルのもとでクラウドサービスが提供されてもよい。
いくつかの実施例では、クラウドインフラストラクチャシステム1002によって提供されるサービスは、ソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)カテゴリ、プラットフォーム・アズ・ア・サービス(Platform as a Service:PaaS)カテゴリ、インフラストラクチャ・アズ・ア・サービス(Infrastructure as a Service:IaaS)カテゴリ、またはハイブリッドサービスを含むサービスの他のカテゴリのもとで提供される1つ以上のサービスを含み得る。顧客は、サブスクリプションオーダーによって、クラウドインフラストラクチャシステム1002によって提供される1つ以上のサービスを注文し得る。次いで、クラウドインフラストラクチャシステム1002は、顧客のサブスクリプションオーダーにおけるサービスを提供するために処理を実行する。
いくつかの実施例では、クラウドインフラストラクチャシステム1002によって提供されるサービスは、アプリケーションサービス、プラットフォームサービスおよびインフラストラクチャサービスを含み得るが、これらに限定されるものではない。いくつかの例では、アプリケーションサービスは、SaaSプラットフォームを介してクラウドインフラストラクチャシステムによって提供されてもよい。SaaSプラットフォームは、SaaSカテゴリに分類されるクラウドサービスを提供するように構成され得る。例えば、SaaSプラットフォームは、一体化された開発およびデプロイメントプラットフォーム上で一連のオンデマンドアプリケーションを構築および配信するための機能を提供し得る。SaaSプラットフォームは、SaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。SaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムで実行されるアプリケーションを利用することができる。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、アプリケーションサービスを取得することができる。さまざまな異なるSaaSサービスが提供されてもよい。例としては、大規模組織のための販売実績管理、企業統合およびビジネスの柔軟性のためのソリューションを提供するサービスが挙げられるが、これらに限定されるものではない。
いくつかの実施例では、プラットフォームサービスは、PaaSプラットフォームを介してクラウドインフラストラクチャシステムによって提供されてもよい。PaaSプラットフォームは、PaaSカテゴリに分類されるクラウドサービスを提供するように構成され得る。プラットフォームサービスの例としては、組織(オラクル社など)が既存のアプリケーションを共有の共通のアーキテクチャ上で統合することを可能にするサービス、および、プラットフォームによって提供される共有のサービスを活用する新たなアプリケーションを構築する機能を挙げることができるが、これらに限定されるものではない。PaaSプラットフォームは、PaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、クラウドインフラストラクチャシステムによって提供されるPaaSサービスを取得することができる。プラットフォームサービスの例としては、オラクルJavaクラウドサービス(Java Cloud Service:JCS)、オラクルデータベースクラウドサービス(Database Cloud Service:DBCS)などが挙げられるが、これらに限定されるものではない。
PaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムによってサポートされるプログラミング言語およびツールを利用することができ、デプロイされたサービスを制御することもできる。いくつかの実施例では、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービル(例えばオラクルフージョンミドルウェアサービス)およびJavaクラウドサービスを含み得る。一実施例では、データベースクラウドサービスは、組織がデータベースリソースをプールしてデータベースクラウドの形態でデータベース・アズ・ア・サービスを顧客に供給することを可能にする共有のサービスデプロイメントモデルをサポートし得る。ミドルウェアクラウドサービスは、クラウドインフラストラクチャシステムにおいてさまざまなビジネスアプリケーションを開発およびデプロイするために顧客にプラットフォームを提供し得て、Javaクラウドサービスは、クラウドインフラストラクチャシステムにおいてJavaアプリケーションをデプロイするために顧客にプラットフォームを提供し得る。
さまざまな異なるインフラストラクチャサービスは、クラウドインフラストラクチャシステムにおけるIaaSプラットフォームによって提供されてもよい。インフラストラクチャサービスは、記憶装置、ネットワークなどの基本的な計算リソース、ならびに、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客のための他の基礎的な計算リソースの管理および制御を容易にする。
また、特定の実施例では、クラウドインフラストラクチャシステム1002は、クラウドインフラストラクチャシステムの顧客にさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース1030を含み得る。一実施例では、インフラストラクチャリソース1030は、PaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するための、サーバ、記憶装置およびネットワーキングリソースなどのハードウェアの事前に一体化された最適な組み合わせを含み得る。
いくつかの実施例では、クラウドインフラストラクチャシステム1002におけるリソースは、複数のユーザによって共有され、デマンド当たり動的に再割り振りされ得る。また、リソースは、異なる時間帯におけるユーザに割り振られ得る。例えば、クラウドインフラストラクチャシステム1030は、第1の時間帯におけるユーザの第1の組が規定の時間にわたってクラウドインフラストラクチャシステムのリソースを利用することができ、次いで、異なる時間帯に位置するユーザの別の組への同一のリソースの再割り振りを可能にし、それによってリソースの利用を最大化することができる。
特定の実施例では、クラウドインフラストラクチャシステム1002の異なる構成要素またはモジュール、および、クラウドインフラストラクチャシステム1002によって提供されるサービス、によって共有されるいくつかの内部共有サービス1032が提供され得る。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、インテグレーションサービス、企業リポジトリサービス、企業マネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性・バックアップおよび回復サービス、クラウドサポートを可能にするためのサービス、eメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されるものではない。
特定の実施例では、クラウドインフラストラクチャシステム1002は、クラウドインフラストラクチャシステムにおけるクラウドサービス(例えばSaaS、PaaSおよびIaaSサービス)の包括的管理を提供し得る。一実施例では、クラウド管理機能は、クラウドインフラストラクチャシステム1002によって受信された顧客のサブスクリプションをプロビジョニング、管理および追跡などするための機能を含み得る。
一実施例では、図に示されているように、クラウド管理機能は、オーダー管理モジュール1020、オーダーオーケストレーションモジュール1022、オーダープロビジョニングモジュール1024、オーダー管理およびモニタリングモジュール1026、ならびにアイデンティティ管理モジュール1028などの1つ以上のモジュールによって提供され得る。これらのモジュールは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他の適切な構成および/もしくは組み合わせであってもよい1つ以上のコンピュータおよび/またはサーバを含み得て、またはそれらを用いて提供され得る。
例示的な動作1034において、顧客は、クラウドインフラストラクチャシステム1002によって提供される1つ以上のサービスを要求し、クラウドインフラストラクチャシステム1002によって供給される1つ以上のサービスのサブスクリプションについてオーダーを行うことによって、クライアント装置1004,1006または1008などのクライアント装置を用いてクラウドインフラストラクチャシステム1002と相互作用し得る。特定の実施例では、顧客は、クラウドユーザインターフェース(User Interface:UI)、すなわちクラウドUI1012、クラウドUI1014および/またはクラウドUI1016にアクセスして、これらのUIを介してサブスクリプションオーダーを行い得る。顧客がオーダーを行ったことに応答してクラウドインフラストラクチャシステム1002によって受信されたオーダー情報は、顧客および顧客がサブスクライブする予定のクラウドインフラストラクチャシステム1002によって供給される1つ以上のサービスを特定する情報を含み得る。
オーダーが顧客によって行われた後、オーダー情報は、クラウドUI1012,1014および/または1016を介して受信される。
動作1036において、オーダーは、オーダーデータベース1018に格納される。オーダーデータベース1018は、クラウドインフラストラクチャシステム1018によって動作され、かつ、他のシステム要素と連携して動作されるいくつかのデータベースのうちの1つであってもよい。
動作1038において、オーダー情報は、オーダー管理モジュール1020に転送される。いくつかの例では、オーダー管理モジュール1020は、オーダーの確認および確認時のオーダーの予約などのオーダーに関連するビリングおよびアカウンティング機能を実行するように構成され得る。
動作1040において、オーダーに関する情報は、オーダーオーケストレーションモジュール1022に通信される。オーダーオーケストレーションモジュール1022は、顧客によって行われたオーダーのためのサービスおよびリソースのプロビジョニングをオーケストレートするためにオーダー情報を利用し得る。いくつかの例では、オーダーオーケストレーションモジュール1022は、オーダープロビジョニングモジュール1024のサービスを用いてサブスクライブされたサービスをサポートするためにリソースのプロビジョニングをオーケストレートし得る。
特定の実施例では、オーダーオーケストレーションモジュール1022は、各々のオーダーに関連付けられるビジネスプロセスの管理を可能にし、ビジネス論理を適用してオーダーがプロビジョニングに進むべきか否かを判断する。動作1042において、新たなサブスクリプションについてのオーダを受信すると、オーダーオーケストレーションモジュール1022は、リソースを割り振って当該サブスクリプションオーダーを満たすのに必要とされるそれらのリソースを構成するための要求をオーダープロビジョニングモジュール1024に送る。オーダープロビジョニングモジュール1024は、顧客によってオーダーされたサービスのためのリソースの割り振りを可能にする。オーダープロビジョニングモジュール1024は、クラウドインフラストラクチャシステム1000によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするために使用される物理的実装層との間にあるレベルの抽象化を提供する。したがって、オーダーオーケストレーションモジュール1022は、サービスおよびリソースが実際に実行中にプロビジョニングされるか、事前にプロビジョニングされて要求があったときに割り振られる/割り当てられるのみであるかなどの実装の詳細から分離させることができる。
動作1044において、サービスおよびリソースがプロビジョニングされると、提供されたサービスの通知が、クラウドインフラストラクチャシステム1002のオーダープロビジョニングモジュール1024によってクライアント装置1004,1006および/または1008上の顧客に送られ得る。
動作1046において、顧客のサブスクリプションオーダーが、オーダー管理およびモニタリングモジュール1026によって管理および追跡され得る。いくつかの例では、オーダー管理およびモニタリングモジュール1026は、使用される記憶量、転送されるデータ量、ユーザの数、ならびにシステムアップ時間およびシステムダウン時間などのサブスクリプションオーダーにおけるサービスについての使用統計を収集するように構成され得る。
特定の実施例では、クラウドインフラストラクチャシステム1000は、アイデンティティ管理モジュール1028を含み得る。アイデンティティ管理モジュール1028は、クラウドインフラストラクチャシステム1000におけるアクセス管理および認可サービスなどのアイデンティティサービスを提供するように構成され得る。いくつかの実施例では、アイデンティティ管理モジュール1028は、クラウドインフラストラクチャシステム1002によって提供されるサービスを利用したい顧客についての情報を制御し得る。このような情報は、このような顧客のアイデンティティを認証する情報、および、それらの顧客がさまざまなシステムリソース(例えばファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に対してどのアクションを実行することを認可されるかを記載する情報を含み得る。また、アイデンティティ管理モジュール1028は、各々の顧客についての説明的情報、ならびに、どのようにしておよび誰によって当該説明的情報がアクセスおよび変更され得るかについての情報の管理を含み得る。
図11は、本発明のさまざまな実施例を実現することができる例示的なコンピュータシステム1100を示す。システム1100は、上記のコンピュータシステムのうちのいずれかを実現するために使用され得る。図に示されているように、コンピュータシステム1100は、バスサブシステム1102を介していくつかの周辺サブシステムと通信する処理ユニット1104を含む。これらの周辺サブシステムは、処理加速ユニット1106と、I/Oサブシステム1108と、記憶サブシステム1118と、通信サブシステム1124とを含み得る。記憶サブシステム1118は、有形のコンピュータ読取可能な記憶媒体1122と、システムメモリ1110とを含む。
バスサブシステム1102は、コンピュータシステム1100のさまざまな構成要素およびサブシステムに、意図されたように互いに通信させるための機構を提供する。バスサブシステム1102は、単一のバスとして概略的に示されているが、バスサブシステムの代替的な実施例は、複数のバスを利用してもよい。バスサブシステム1102は、メモリバスまたはメモリコントローラ、周辺バス、およびさまざまなバスアーキテクチャのうちのいずれかを使用するローカルバスを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。例えば、このようなアーキテクチャは、IEEE P1386.1標準に合わせて製造されたメザニンバスとして実現可能な、業界標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、拡張ISA(Enhanced ISA:EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association:VESA)ローカルバスおよび周辺機器相互接続(Peripheral Component Interconnect:PCI)バスを含み得る。
1つ以上の集積回路(例えば従来のマイクロプロセッサまたはマイクロコントローラ)として実現可能な処理ユニット1104は、コンピュータシステム1100の動作を制御する。処理ユニット1104には、1つ以上のプロセッサが含まれ得る。これらのプロセッサは、単一コアまたはマルチコアプロセッサを含み得る。特定の実施例では、処理ユニット1104は、各々の処理ユニットに含まれる単一またはマルチコアプロセッサを有する1つ以上の独立した処理ユニット1132および/または1134として実現されてもよい。また、他の実施例では、処理ユニット1104は、2つのデュアルコアプロセッサを単一のチップに組み入れることによって形成されるクアッドコア処理ユニットとして実現されてもよい。
さまざまな実施例では、処理ユニット1104は、プログラムコードに応答してさまざまなプログラムを実行し得て、同時に実行される複数のプログラムまたはプロセスを維持し得る。任意の所与の時点において、実行されるべきプログラムコードのうちのいくつかまたは全ては、プロセッサ1104および/または記憶サブシステム1118に存在し得る。好適なプログラミングを通じて、プロセッサ1104は、上記のさまざまな機能を提供し得る。また、コンピュータシステム1100は、デジタル信号プロセッサ(digital signal processor:DSP)、特殊用途プロセッサなどを含み得る処理加速ユニット1106を含み得る。
I/Oサブシステム1108は、ユーザインターフェース入力装置と、ユーザインターフェース出力装置とを含み得る。ユーザインターフェース入力装置は、キーボード、マウスまたはトラックボールなどのポインティング装置、タッチパッドまたはタッチスクリーンを含み得て、これらは、音声コマンド認識システム、マイクロホンおよび他のタイプの入力装置とともに、ディスプレイ、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、オーディオ入力装置に組み込まれている。ユーザインターフェース入力装置は、例えば、ジェスチャおよび話されたコマンドを用いてナチュラルユーザインターフェースを介してユーザがマイクロソフトXbox(登録商標)360ゲームコントローラなどの入力装置を制御して入力装置と相互作用することを可能にするマイクロソフトキネクト(登録商標)モーションセンサなどのモーション検知および/またはジェスチャ認識装置を含み得る。また、ユーザインターフェース入力装置は、ユーザから眼球運動(例えば撮影および/またはメニュー選択を行っている間の「まばたき」)を検出して、当該眼球ジェスチャを入力装置への入力として変換するグーグルグラス(登録商標)まばたき検出器などの眼球ジェスチャ認識装置を含み得る。また、ユーザインターフェース入力装置は、ユーザが音声コマンドを介して音声認識システム(例えばSiri(登録商標)ナビゲータ)と相互作用することを可能にする音声認識検知装置を含み得る。
また、ユーザインターフェース入力装置は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、およびスピーカなどのオーディオ/ビジュアル装置、デジタルカメラ、デジタルカムコーダ、携帯型メディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線検出装置を含み得るが、これらに限定されるものではない。また、ユーザインターフェース入力装置は、例えば、コンピュータ断層撮影、磁気共鳴画像化、位置発光断層撮影、医療用超音波検査装置などの医療用画像化入力装置を含み得る。また、ユーザインターフェース入力装置は、例えばMIDIキーボード、デジタル楽器などのオーディオ入力装置を含み得る。
ユーザインターフェース出力装置は、ディスプレイサブシステム、表示灯、またはオーディオ出力装置などの非視覚的ディスプレイなどを含み得る。ディスプレイサブシステムは、陰極線管(cathode ray tube:CRT)、液晶ディスプレイ(liquid crystal display:LCD)またはプラズマディスプレイを使用するものなどのフラットパネルディスプレイ、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という用語の使用は、コンピュータシステム1100からの情報をユーザまたは他のコンピュータに出力するための全ての可能なタイプの装置および機構を含むよう意図されている。例えば、ユーザインターフェース出力装置は、モニタ、プリンタ、スピーカ、ヘッドホン、自動車のナビゲーションシステム、プロッタ、音声出力装置およびモデムなどの、テキスト、グラフィックスおよびオーディオ/ビデオ情報を視覚的に伝えるさまざまな表示装置を含み得るが、これらに限定されるものではない。
コンピュータシステム1100は、現在のところシステムメモリ1110内に位置しているように示されているソフトウェア要素を備える記憶サブシステム1118を備え得る。システムメモリ1110は、処理ユニット1104上でロード可能および実行可能なプログラム命令と、これらのプログラムの実行中に生成されるデータとを格納し得る。
コンピュータシステム1100の構成およびタイプに応じて、システムメモリ1110は、揮発性(ランダムアクセスメモリ(random access memory:RAM)など)であってもよく、および/または、不揮発性(リードオンリメモリ(read-only memory:ROM)、フラッシュメモリなど)であってもよい。一般に、RAMは、処理ユニット1104がすぐにアクセス可能なデータおよび/またはプログラムモジュール、および/または、処理ユニット1104によって現在動作および実行されているデータおよび/またはプログラムモジュールを収容する。いくつかの実現例では、システムメモリ1110は、スタティックランダムアクセスメモリ(static random access memory:SRAM)またはダイナミックランダムアクセスメモリ(dynamic random access memory:DRAM)などの複数の異なるタイプのメモリを含み得る。いくつかの実現例では、始動中などにコンピュータシステム1100内の要素間で情報を転送することを助ける基本ルーチンを含む基本入力/出力システム(basic input/output system:BIOS)が、一般にROMに格納され得る。一例としておよび非限定的に、システムメモリ1110は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(relational database management system:RDBMS)などを含み得るアプリケーションプログラム1112、プログラムデータ1114およびオペレーティングシステム1116も示す。一例として、オペレーティングシステム1116は、マイクロソフトウィンドウズ(登録商標)、アップルマッキントッシュ(登録商標)および/もしくはリナックスオペレーティングシステムのさまざまなバージョン、さまざまな市販のUNIX(登録商標)もしくはUNIXライクオペレーティングシステム(さまざまなGNU/リナックスオペレーティングシステム、Google Chrome(登録商標)OSなどを含むが、これらに限定されるものではない)、ならびに/または、iOS、ウィンドウズ(登録商標)フォン、アンドロイド(登録商標)OS、ブラックベリー(登録商標)11OSおよびパーム(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムを含み得る。
また、記憶サブシステム1118は、いくつかの実施例の機能を提供する基本的なプログラミングおよびデータ構造を格納するための有形のコンピュータ読取可能な記憶媒体を提供し得る。プロセッサによって実行されたときに上記の機能を提供するソフトウェア(プログラム、コードモジュール、命令)が記憶サブシステム1118に格納され得る。これらのソフトウェアモジュールまたは命令は、処理ユニット1104によって実行され得る。また、記憶サブシステム1118は、本発明に従って使用されるデータを格納するためのリポジトリを提供し得る。
また、記憶サブシステム1110は、コンピュータ読取可能な記憶媒体1122にさらに接続可能なコンピュータ読取可能な記憶媒体リーダ1120を含み得る。ともにおよび任意に、システムメモリ1110と組み合わせて、コンピュータ読取可能な記憶媒体1122は、コンピュータ読取可能な情報を一時的および/または永久に収容、格納、送信および検索するための記憶媒体に加えて、リモートの、ローカルの、固定されたおよび/または取外し可能な記憶装置を包括的に表わし得る。
また、コードまたはコードの一部を含むコンピュータ読取可能な記憶媒体1122は、当該技術分野において公知のまたは使用される任意の適切な媒体を含み得て、当該媒体は、情報の格納および/または送信のための任意の方法または技術において実現される揮発性および不揮発性の、取外し可能および取外し不可能な媒体などであるが、これらに限定されるものではない記憶媒体および通信媒体を含む。これは、RAM、ROM、電子的消去・プログラム可能ROM(electronically erasable programmable ROM:EEPROM)、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(digital versatile disk:DVD)、または他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または他の有形のコンピュータ読取可能な媒体などの有形のコンピュータ読取可能な記憶媒体を含み得る。また、これは、データ信号、データ送信などの無形のコンピュータ読取可能な媒体、または、所望の情報を送信するために使用可能でありかつ計算システム1100によってアクセス可能なその他の媒体を含み得る。
一例として、コンピュータ読取可能な記憶媒体1122は、取外し不可能な不揮発性磁気媒体から読取るまたは当該媒体に書込むハードディスクドライブ、取外し可能な不揮発性磁気ディスクから読取るまたは当該ディスクに書込む磁気ディスクドライブ、ならびに、CD ROM、DVDおよびブルーレイ(登録商標)ディスクまたは他の光学式媒体などの取外し可能な不揮発性光学ディスクから読取るまたは当該ディスクに書込む光学式ディスクドライブを含み得る。コンピュータ読取可能な記憶媒体1122は、ジップ(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(universal serial bus:USB)フラッシュドライブ、セキュアデジタル(secure digital:SD)カード、DVDディスク、デジタルビデオテープなどを含み得るが、これらに限定されるものではない。また、コンピュータ読取可能な記憶媒体1122は、フラッシュメモリベースのSSD、企業向けフラッシュドライブ、ソリッドステートROMなどの不揮発性メモリに基づくソリッドステートドライブ(solid-state drive:SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMなどの揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(magnetoresistive RAM:MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDを含み得る。ディスクドライブおよびそれらの関連のコンピュータ読取可能な媒体は、コンピュータ読取可能な命令、データ構造、プログラムモジュールおよび他のデータの不揮発性記憶装置をコンピュータシステム1100に提供し得る。
通信サブシステム1124は、他のコンピュータシステムおよびネットワークとのインターフェースを提供する。通信サブシステム1124は、他のシステムからデータを受信したり、コンピュータシステム1100から他のシステムにデータを送信するためのインターフェースの役割を果たす。例えば、通信サブシステム1124は、コンピュータシステム1100がインターネットを介して1つ以上の装置に接続することを可能にし得る。いくつかの実施例では、通信サブシステム1124は、(例えば3G、4GまたはEDGE(enhanced data rates for global evolution)などの携帯電話技術、高度データネットワーク技術を用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(radio frequency:RF)トランシーバコンポーネント、WiFi(IEEE802.11ファミリ標準または他のモバイル通信技術またはそれらの任意の組み合わせ)、全地球測位システム(global positioning system:GPS)レシーバコンポーネント、および/または、他のコンポーネントを含み得る。いくつかの実施例では、通信サブシステム1124は、無線インターフェースに加えて、または無線インターフェースの代わりに、有線ネットワーク接続(例えばイーサネット)を提供し得る。
また、いくつかの実施例では、通信サブシステム1124は、コンピュータシステム1100を使用し得る1人以上のユーザを代表して、構造化されたおよび/または構造化されていないデータフィード1126、イベントストリーム1128、イベント更新1130などの形態で入力通信を受信し得る。
一例として、通信サブシステム1124は、ツイッター(登録商標)フィード、フェースブック(登録商標)更新、リッチ・サイト・サマリ(Rich Site Summary:RSS)フィードなどのウェブフィードなどのデータフィード1126をリアルタイムでソーシャルネットワークおよび/または他の通信サービスのユーザから受信し、および/または、1つ以上の第三者情報源からリアルタイム更新を受信するように構成され得る。
また、通信サブシステム1124は、連続的なデータストリームの形態でデータを受信するように構成され得て、当該データは、連続的である場合もあれば本質的に明確な端部を持たない状態で境界がない場合もあるリアルタイムイベントのイベントストリーム1128および/またはイベント更新1130を含み得る。連続的なデータを生成するアプリケーションの例としては、例えばセンサデータアプリケーション、金融ティッカ、ネットワーク性能測定ツール(例えばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通モニタリングなどを含み得る。また、通信サブシステム1124は、構造化されたおよび/または構造化されていないデータフィード1126、イベントストリーム1128、イベント更新1130などを、コンピュータシステム1100に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに出力するように構成され得る。
コンピュータシステム1100は、手持ち式携帯機器(例えばiPhone(登録商標)携帯電話、iPad(登録商標)計算タブレット、PDA)、ウェアラブル装置(例えばグーグルグラス(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラックまたはその他のデータ処理システムを含むさまざまなタイプのうちの1つであってもよい。
コンピュータおよびネットワークの絶え間なく変化し続ける性質のために、図に示されているコンピュータシステム1100の説明は、特定の例として意図されているにすぎない。図に示されているシステムよりも多くのまたは少ない数の構成要素を有する多くの他の構成が可能である。例えば、ハードウェア、ファームウェア、(アプレットを含む)ソフトウェア、または組み合わせにおいて、カスタマイズされたハードウェアも使用されてもよく、および/または、特定の要素が実装されてもよい。さらに、ネットワーク入力/出力装置などの他の計算装置への接続が利用されてもよい。本明細書で提供される開示および教示に基づいて、当業者は、さまざまな実施例を実現するための他の手段および/または方法を理解するであろう。上記の明細書では、本発明の局面は、その具体的な実施例を参照して記載されているが、本発明はこれに限定されるものではないことを当業者は認識するであろう。上記の発明のさまざまな特徴および局面は、個々にまたは一緒に使用されてもよい。さらに、実施例は、明細書のより広い精神および範囲から逸脱することなく、本明細書に記載されているものを越えたどのような環境およびアプリケーションでも利用可能である。したがって、明細書および図面は、限定的ではなく例示的であるものとみなされるべきである。

Claims (19)

  1. コンピュータによって実行される方法であって、
    複数シャードシステム内のシャードの量の変化が生じたことを判断するステップと、
    前記シャードの量の変化の判断に応答して、クライアントを通常状態からリバランシング状態に遷移させるステップとを備え、前記通常状態において、クライアントは前記複数シャードシステムに格納された複数のデータ項目に対して、所定タイプの動作を第1の態様で実行し、前記リバランシング状態において、前記クライアントは前記複数シャードシステムに格納された前記複数のデータ項目に対して、前記所定タイプの動作を第2の態様で実行し、前記第2の態様は前記第1の態様とは異なっており、前記リバランシング状態において、前記クライアントは前記データ項目のいずれに対する1つ以上の排他的ロックを取得することなく前記所定タイプの動作を実行し、前記リバランシング状態において、前記所定タイプの動作は、前記複数シャードシステム内の第1のシャードおよび前記複数シャードシステム内の第2のシャードに基づいて実行され、前記第1のシャードは、前記シャードの量の変化前において、前記第1のシャード内の第1のメモリ位置に格納されたデータ項目を含み、当該データ項目は前記複数のデータ項目の1つであり、前記第2のシャードは、前記シャードの量の変化後において、前記第2のシャード内の第2のメモリ位置に格納されたデータ項目を含み、
    前記クライアントが前記リバランシング状態にある間に、前記複数のデータ項目の1つ以上のデータ項目について、1つ以上のソースシャードとは異なる1つ以上の宛先シャードを決定するステップを備え、前記1つ以上のソースシャードは、前記クライアントが前記通常状態から前記リバランシング状態に遷移する前の前記通常状態において、当該1つ以上のデータ項目を格納していたものであり、
    前記クライアントが前記リバランシング状態にある間に、前記1つ以上のデータ項目を前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動させるステップを備える、コンピュータによって実行される方法。
  2. 前記1つ以上のデータ項目が前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動されている間に、前記クライアントが、排他的ロックを取得することなく、前記1つ以上のデータ項目の移動とは非同期的に、データ項目に対して前記所定タイプの動作を前記第2の態様で実行するステップをさらに備える、請求項1に記載のコンピュータによって実行される方法。
  3. 前記シャードの量の変化に続いて、前記複数シャードシステム内の前記シャードの量に少なくとも部分的に基づいて、前記データ項目のプライマリキーをハッシュすることによって、前記1つ以上のデータ項目について、前記1つ以上の宛先シャードを決定するステップと、
    前記1つ以上のデータ項目が前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動されたとの判断に応答して、前記クライアントを前記リバランシング状態から前記通常状態に遷移させるステップとをさらに備える、請求項1または2に記載のコンピュータによって実行される方法。
  4. 前記1つ以上のデータ項目が前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動されている間に、前記クライアントが、プライマリキーを有する第1のデータ項目に対して、追加の動作を前記第2の態様で実行するステップをさらに備え、前記追加の動作は、少なくとも部分的に、
    前記シャードの量の変化前の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化前に前記第1のデータ項目が格納された特定のソースシャードを判断することと、
    前記シャードの量の変化後の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化後に前記第1のデータ項目が追加されることになる特定の宛先シャードを判断することと、
    前記特定のソースシャード上のデータ項目のいずれもが前記第1のデータ項目のプライマリキーを有していないことを判断することと、
    前記特定の宛先シャード上のデータ項目のいずれもが真のトゥームストーン属性値および前記第1のデータ項目のプライマリキーを有していないことを判断することと、
    前記第1のデータ項目を前記特定の宛先シャードに挿入することと、によって実行される、請求項1〜3のいずれか1項に記載のコンピュータによって実行される方法。
  5. 前記1つ以上のデータ項目が前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動されている間に、前記クライアントが、プライマリキーを有する第1のデータ項目に対して、追加の動作を前記第2の態様で実行するステップをさらに備え、前記追加の動作は、少なくとも部分的に、
    前記シャードの量の変化前の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化前に前記第1のデータ項目が格納された特定のソースシャードを判断することと、
    前記シャードの量の変化後の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化後に前記第1のデータ項目が追加されることになる特定の宛先シャードを判断することと、
    前記特定のソースシャード上のデータ項目のいずれもが前記第1のデータ項目のプライマリキーを有していないことを判断することと、
    前記特定の宛先シャード上の第2のデータ項目が真のトゥームストーン属性値および前記第1のデータ項目のプライマリキーを有していることを判断することと、
    前記第1のデータ項目の属性値を前記第2のデータ項目の1つ以上の属性に割り当てることと、
    前記第2のデータ項目のトゥームストーン属性値を偽に設定することと、によって実行される、請求項1〜4のいずれか1項に記載のコンピュータによって実行される方法。
  6. 前記1つ以上のデータ項目が前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動されている間に、前記クライアントが、プライマリキーを有する第1のデータ項目に対して、更新タイプの動作を前記第2の態様で実行するステップをさらに備え、
    前記更新タイプの動作は、少なくとも部分的に、
    前記シャードの量の変化前の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化前に前記第1のデータ項目が格納された特定のソースシャードを判断することと、
    前記シャードの量の変化後の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化後に前記第1のデータ項目が位置することになる特定の宛先シャードを判断することと、
    前記特定のソースシャード上のデータ項目のいずれもが前記第1のデータ項目のプライマリキーを有していないことを判断することと、
    前記特定の宛先シャード上の第2のデータ項目が偽のトゥームストーン属性値および前記第1のデータ項目のプライマリキーを有していることを判断することと、
    前記第1のデータ項目の属性値を前記第2のデータ項目の1つ以上の属性に割り当てることと、によって実行される、請求項1〜5のいずれか1項に記載のコンピュータによって実行される方法。
  7. 前記1つ以上のデータ項目が前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動されている間に、前記クライアントが、プライマリキーを有する第1のデータ項目に対して、更新タイプの動作を前記第2の態様で実行するステップをさらに備え、前記更新タイプの動作は、少なくとも部分的に、
    前記シャードの量の変化前の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化前に前記第1のデータ項目が格納された特定のソースシャードを判断することと、
    前記シャードの量の変化後の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化後に前記第1のデータ項目が位置することになる特定の宛先シャードを判断することと、
    前記特定のソースシャード上の第2のデータ項目が前記第1のデータ項目のプライマリキーおよび偽のトゥームストーン属性値を有していることを判断することと、
    前記特定の宛先シャード上の第3のデータ項目が前記第1のデータ項目のプライマリキーを有していることを判断することと、
    前記第1のデータ項目の属性値を前記第3のデータ項目の1つ以上の属性に割り当てることと、
    前記第3のデータ項目のバージョン番号を前記第2のデータ項目のバージョン番号とは異なる値に設定することと、によって実行される、請求項1〜6のいずれか1項に記載のコンピュータによって実行される方法。
  8. 前記1つ以上のデータ項目が前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動されている間に、前記クライアントが、プライマリキーを有する第1のデータ項目に対して、更新タイプの動作を前記第2の態様で実行するステップをさらに備え、前記更新タイプの動作は、少なくとも部分的に、
    前記シャードの量の変化前の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化前に前記第1のデータ項目が格納された特定のソースシャードを判断することと、
    前記シャードの量の変化後の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化後に前記第1のデータ項目が位置することになる特定の宛先シャードを判断することと、
    前記特定のソースシャード上の第2のデータ項目が前記第1のデータ項目のプライマリキーおよび偽のトゥームストーン属性値を有していることを判断することと、
    前記特定の宛先シャード上のデータ項目のいずれもが前記第1のデータ項目のプライマリキーを有していないことを判断することと、
    前記第2のデータ項目のバージョン番号とは異なるバージョン番号を有する前記第1のデータ項目を前記特定の宛先シャードに挿入することと、によって実行される、請求項1〜7のいずれか1項に記載のコンピュータによって実行される方法。
  9. 前記1つ以上のデータ項目が前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動されている間に、前記クライアントが、プライマリキーを有する第1のデータ項目に対して、削除タイプの動作を前記第2の態様で実行するステップをさらに備え、前記削除タイプの動作は、少なくとも部分的に、
    前記シャードの量の変化前の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化前に前記第1のデータ項目が格納された特定のソースシャードを判断することと、
    前記シャードの量の変化後の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化後に前記第1のデータ項目が位置することになる特定の宛先シャードを判断することと、
    前記特定のソースシャード上の第2のデータ項目が前記第1のデータ項目のプライマリキーを有していることを判断することと、
    前記第2のデータ項目のバージョン番号とは異なるバージョン番号を有する前記第1のデータ項目を前記特定の宛先シャードに更新/挿入することと、
    前記特定の宛先シャード上の前記第1のデータ項目のトゥームストーン属性値を真に設定することと、によって実行される、請求項1〜8のいずれか1項に記載のコンピュータによって実行される方法。
  10. 前記1つ以上のデータ項目が前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動されている間に、前記クライアントが、プライマリキーを有する第1のデータ項目に対して、削除タイプの動作を前記第2の態様で実行するステップをさらに備え、前記削除タイプの動作は、少なくとも部分的に、
    前記シャードの量の変化前の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化前に前記第1のデータ項目が格納された特定のソースシャードを判断することと、
    前記シャードの量の変化後の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化後に前記第1のデータ項目が位置することになる特定の宛先シャードを判断することと、
    前記特定のソースシャード上のデータ項目のいずれもが前記第1のデータ項目のプライマリキーを有していないことを判断することと、
    前記特定の宛先シャード上の第2のデータ項目が前記第1のデータ項目のプライマリキーを有していることを判断することと、
    前記第2のデータ項目のトゥームストーン属性値を真に設定することと、によって実行される、請求項1〜9のいずれか1項に記載のコンピュータによって実行される方法。
  11. 前記1つ以上のデータ項目が前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動されている間に、前記クライアントが、プライマリキーに対して取得タイプの動作を前記第2の態様で実行するステップをさらに備え、前記取得タイプの動作は、少なくとも部分的に、
    前記シャードの量の変化前の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化前に前記プライマリキーを有するデータ項目が格納された特定のソースシャードを判断することと、
    前記シャードの量の変化後の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化後に前記プライマリキーを有するデータ項目が位置することになる特定の宛先シャードを判断することと、
    前記特定の宛先シャード上の第1のデータ項目が前記プライマリキーおよび偽のトゥームストーン属性値を有していることを判断することと、
    前記第1のデータ項目の属性値を読取ることと、によって実行される、請求項1〜10のいずれか1項に記載のコンピュータによって実行される方法。
  12. 前記1つ以上のデータ項目が前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動されている間に、前記クライアントが、プライマリキーに対して取得タイプの動作を前記第2の態様で実行するステップをさらに備え、前記取得タイプの動作は、少なくとも部分的に、
    前記シャードの量の変化前の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化前に前記プライマリキーを有するデータ項目が格納された特定のソースシャードを判断することと、
    前記シャードの量の変化後の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化後に前記プライマリキーを有するデータ項目が位置することになる特定の宛先シャードを判断することと、
    前記特定の宛先シャード上のデータ項目が前記プライマリキーを有していないことを判断することと、
    前記特定のソースシャード上の第1のデータ項目が前記プライマリキーおよび偽のトゥームストーン属性値を有していることを判断することと、
    前記第1のデータ項目の属性値を読取ることと、によって実行される、請求項1〜11のいずれか1項に記載のコンピュータによって実行される方法。
  13. 前記1つ以上のデータ項目が前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動されている間に、前記クライアントが、プライマリキーに対して取得タイプの動作を前記第2の態様で実行するステップをさらに備え、前記取得タイプの動作は、少なくとも部分的に、
    前記シャードの量の変化前の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化前に前記プライマリキーを有するデータ項目が格納された特定のソースシャードを判断することと、
    前記シャードの量の変化後の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化後に前記プライマリキーを有するデータ項目が位置することになる特定の宛先シャードを判断することと、
    前記特定の宛先シャード上のデータ項目が前記プライマリキーを有していないことを第1の時点で判断することと、
    前記特定のソースシャード上のデータ項目が前記プライマリキーを有していないことを判断することと、
    前記特定の宛先シャード上の第1のデータ項目が前記プライマリキーおよび偽のトゥームストーン属性値を有していることを第2の時点で判断することと、
    前記第1のデータ項目の属性値を読取ることと、によって実行される、請求項1〜12のいずれか1項に記載のコンピュータによって実行される方法。
  14. 前記1つ以上のデータ項目を前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動させるステップは、
    システム全体にわたるバージョン番号をインクリメントするステップと、
    前記システム全体にわたるバージョン番号よりも小さなバージョン番号を有する各々の第1のデータ項目について、前記シャードの量の変化後の前記複数シャードシステム内のシャードの量に少なくとも部分的に基づいて、前記シャードの量の変化後に前記第1のデータ項目が位置することになる第1の宛先シャードを判断するステップと、
    (a)前記システム全体にわたるバージョン番号よりも小さなバージョン番号を有し、(b)前記シャードの量の変化後に第2のデータ項目が位置することになる第2の宛先シャードとは異なるソースシャード上に位置する各々の第2のデータ項目について、前記システム全体にわたるバージョン番号を有する前記第2のデータ項目のコピーを前記第2の宛先シャードに挿入するステップと、
    (a)前記システム全体にわたるバージョン番号よりも小さなバージョン番号を有し、(b)前記シャードの量の変化後に第3のデータ項目が位置することになる第3の宛先シャード上にすでに位置している各々の第3のデータ項目について、前記第3のデータ項目のバージョン番号を前記システム全体にわたるバージョン番号に変化させるステップとを備える、請求項1〜13のいずれか1項に記載のコンピュータによって実行される方法。
  15. 前記1つ以上のデータ項目を前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動させるステップは、システム全体にわたるバージョン番号をインクリメントするステップを備え、
    前記1つ以上のデータ項目の移動が完了した時点で前記複数シャードシステム内の1つ以上のシャードに対してペンディングになっているクエリセットを判断するステップと、
    前記クエリセットにおける全てのクエリが終了するのを待機するステップと、
    前記クエリセットにおける全てのクエリが終了した後に、前記システム全体にわたるバージョン番号とは異なるバージョン番号属性値を有する全てのデータ項目コピーを前記複数シャードシステム内の全てのシャードから除去するステップと、
    前記クエリセットにおける全てのクエリが終了した後に、真のトゥームストーン属性値を有する全てのデータ項目コピーを前記複数シャードシステム内の全てのシャードから除去するステップとをさらに備える、請求項1〜14のいずれか1項に記載のコンピュータによって実行される方法。
  16. 前記1つ以上のデータ項目が前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動されている間に、前記複数シャードシステム内の各々の特定のシャードについて、(a)前記特定のシャード上に位置しかつ(b)指定のクエリ基準を満たすデータ項目を有する前記特定のシャードについての事前結果キューを投入するステップと、
    各々の特定のシャードの事前結果キューについて、前記シャードの事前結果キューにおけるデータ項目のプライマリキーに少なくとも部分的に基づいて、前記シャードの事前結果キューにおけるデータ項目を分類するステップと、
    空ではないシャードの事前結果キューが存在しなくなるまで、動作を繰返し実行するステップとをさらに備え、前記動作は、
    前記複数シャードシステム内の全てのシャードの事前結果キューのトップに現在位置しているデータ項目を備えるセットから第1のデータ項目を選択することを備え、前記複数シャードシステム内の全てのシャードの事前結果キューのトップに現在位置しているデータ項目を備える前記クエリセットから前記第1のデータ項目を選択することは、
    前記クエリセットにおけるデータ項目のプライマリキーのうち、最小のプライマリキーを有するデータ項目のサブセットを前記クエリセットから選択することと、
    前記サブセットにおけるデータ項目のバージョン番号属性値のうち、最大のバージョン番号属性値を有するデータ項目を前記第1のデータ項目から選択することとを備え、前記動作はさらに、
    真のトゥームストーン属性値を有していない各々の第1のデータ項目を最終結果セットに追加することと、
    前記第1のデータ項目のプライマリキーに一致するプライマリキーを有する全てのデータ項目コピーを全てのシャードの事前結果キューから除去することと、
    全てのシャードの事前結果キューが空になった後に、前記最終結果セットにおけるデータ項目をクエリ結果として返すステップとを備える、請求項15に記載のコンピュータによって実行される方法。
  17. 前記1つ以上のデータ項目が前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動されている間に、前記クライアントが、プライマリキーを有する第1のデータ項目に対して前記第2の態様で削除タイプの動作を実行しようと試みたり、実行することに失敗したりするステップをさらに備え、前記削除タイプの動作は、少なくとも部分的に、
    前記ソースシャード上のデータ項目が前記第1のデータ項目のプライマリキーを有していないことを判断することと、
    前記宛先シャード上のデータ項目が前記第1のデータ項目のプライマリキーを有していないことを判断することと、
    前記第1のデータ項目が存在していないことにより削除動作が失敗したことを示すデータを生成することと、によって実行される、請求項1〜16のいずれか1項に記載のコンピュータによって実行される方法。
  18. システムであって、
    データ項目を格納する複数のデータベースシャードと、
    複数のクライアントとを備え、前記複数のクライアントは、前記複数のデータベースシャードの量の変化に応答して、前記複数のクライアントを通常状態からリバランシング状態に遷移するように構成され、前記通常状態において、クライアントは複数シャードシステムに格納された複数のデータ項目に対して、所定タイプの動作を第1の態様で実行し、前記リバランシング状態において、前記クライアントは前記複数のデータ項目に対して、前記所定タイプの動作を第2の態様で実行し、前記第2の態様は前記第1の態様とは異なっており、前記リバランシング状態において、前記クライアントは前記データ項目のいずれに対する1つ以上の排他的ロックを取得することなく前記所定タイプの動作を実行し、前記リバランシング状態において、前記所定タイプの動作は、前記複数シャードシステム内の第1のシャードおよび前記複数シャードシステム内の第2のシャードに基づいて実行され、前記第1のシャードは、前記複数のデータベースシャードの量の変化前において、前記第1のシャード内の第1のメモリ位置に格納されたデータ項目を含み、当該データ項目は前記複数のデータ項目の1つであり、前記第2のシャードは、前記複数のデータベースシャードの量の変化後において、前記第2のシャード内の第2のメモリ位置に格納されたデータ項目を含み、前記システムはさらに、
    少なくとも1つの計算装置を備え、前記少なくとも1つの計算装置は、(a)前記複数のクライアントが前記リバランシング状態にある間に、前記複数のデータ項目の1つ以上のデータ項目について、1つ以上の宛先シャードを決定し、1つ以上のソースシャードは、前記複数のクライアントの各クライアントが前記通常状態にあった間に、前記通常状態における前記1つ以上のデータ項目を格納していたものであり、(b)前記複数のクライアントの各クライアントが前記リバランシング状態にある間に、前記1つ以上のデータ項目を前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動させるように構成される、システム。
  19. プロセッサによって実行可能な命令を含むコンピュータ読取可能プログラムあって、前記プロセッサによって実行可能な命令は、
    複数のシャードを有する複数シャードシステム内のシャードの量の変化が生じたことを1つ以上のプロセッサに判断させるための命令と、
    前記シャードの量の変化の判断に応答して、クライアントを通常状態からリバランシング状態に遷移させることを1つ以上のプロセッサにさせるための命令とを備え、前記通常状態において、クライアントは前記複数シャードシステムに格納された複数のデータ項目に対して、所定タイプの動作を第1の態様で実行し、前記リバランシング状態において、前記クライアントは前記複数シャードシステムに格納された前記複数のデータ項目に対して、前記所定タイプの動作を第2の態様で実行し、前記リバランシング状態において、前記クライアントは前記データ項目のいずれに対する1つ以上の排他的ロックを取得することなく前記所定タイプの動作を実行し、前記リバランシング状態において、前記所定タイプの動作は、前記複数シャードシステム内の第1のシャードおよび前記複数シャードシステム内の第2のシャードに基づいて実行され、前記第1のシャードは、前記シャードの量
    の変化前において、前記第1のシャード内の第1のメモリ位置に格納されたデータ項目を含み、当該データ項目は前記複数のデータ項目の1つであり、前記第2のシャードは、前記シャードの量の変化後において、前記第2のシャード内の第2のメモリ位置に格納されたデータ項目を含み、前記プロセッサによって実行可能な命令はさらに
    前記クライアントが前記リバランシング状態にある間に、前記複数のデータ項目の1つ以上のデータ項目について、1つ以上のソースシャードとは異なる1つ以上の宛先シャードを1つ以上のプロセッサに決定させるための命令を備え、前記1つ以上のソースシャードは、前記クライアントが前記通常状態から前記リバランシング状態に遷移する前の前記通常状態において、当該1つ以上のデータ項目を格納していたものであり、前記プロセッサによって実行可能な命令はさらに
    前記クライアントが前記リバランシング状態にある間に、前記1つ以上のデータ項目を前記1つ以上のソースシャードから前記1つ以上の宛先シャードに移動させることを1つ以上のプロセッサにさせるための命令を備える、コンピュータ読取可能プログラム。
JP2016523825A 2013-06-28 2014-06-23 シャードのオンライン追加によるナイーブなクライアント側シャーディング Active JP6509204B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361841045P 2013-06-28 2013-06-28
US61/841,045 2013-06-28
US14/226,557 2014-03-26
US14/226,557 US9619545B2 (en) 2013-06-28 2014-03-26 Naïve, client-side sharding with online addition of shards
PCT/US2014/043599 WO2014209848A1 (en) 2013-06-28 2014-06-23 Naive, client-side sharding with online addition of shards

Publications (3)

Publication Number Publication Date
JP2016524255A JP2016524255A (ja) 2016-08-12
JP2016524255A5 JP2016524255A5 (ja) 2017-07-06
JP6509204B2 true JP6509204B2 (ja) 2019-05-08

Family

ID=52116648

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016523825A Active JP6509204B2 (ja) 2013-06-28 2014-06-23 シャードのオンライン追加によるナイーブなクライアント側シャーディング

Country Status (5)

Country Link
US (1) US9619545B2 (ja)
EP (1) EP3014485B1 (ja)
JP (1) JP6509204B2 (ja)
CN (1) CN105339940B (ja)
WO (1) WO2014209848A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10970757B2 (en) 2010-06-15 2021-04-06 Oracle International Corporation Organizing data in a virtual computing infrastructure

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10715457B2 (en) 2010-06-15 2020-07-14 Oracle International Corporation Coordination of processes in cloud computing environments
EP2812809A4 (en) 2012-02-10 2016-05-25 Oracle Int Corp FRAMEWORK FOR CLOUD COMPUTING SERVICES
US9424330B2 (en) * 2013-03-15 2016-08-23 Tactile, Inc. Database sharding by shard levels
US9619545B2 (en) 2013-06-28 2017-04-11 Oracle International Corporation Naïve, client-side sharding with online addition of shards
US9547711B1 (en) * 2013-07-22 2017-01-17 Google Inc. Shard data based on associated social relationship
US10171501B2 (en) 2013-09-20 2019-01-01 Open Text Sa Ulc System and method for remote wipe
US10824756B2 (en) 2013-09-20 2020-11-03 Open Text Sa Ulc Hosted application gateway architecture with multi-level security policy and rule promulgations
EP2851833B1 (en) 2013-09-20 2017-07-12 Open Text S.A. Application Gateway Architecture with Multi-Level Security Policy and Rule Promulgations
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
US11829349B2 (en) * 2015-05-11 2023-11-28 Oracle International Corporation Direct-connect functionality in a distributed database grid
US11593075B2 (en) 2015-11-03 2023-02-28 Open Text Sa Ulc Streamlined fast and efficient application building and customization systems and methods
US10642813B1 (en) * 2015-12-14 2020-05-05 Amazon Technologies, Inc. Techniques and systems for storage and processing of 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
US11388037B2 (en) 2016-02-25 2022-07-12 Open Text Sa Ulc Systems and methods for providing managed services
US20170371910A1 (en) * 2016-06-28 2017-12-28 Microsoft Technology Licensing, Llc Real-time shard rebalancing for versioned entity repository
US11138178B2 (en) * 2016-11-10 2021-10-05 Futurewei Technologies, Inc. Separation of computation from storage in database for better elasticity
US20190005066A1 (en) * 2017-06-29 2019-01-03 International Business Machines Corporation Multi-tenant data service in distributed file systems for big data analysis
US10719446B2 (en) 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US10732836B2 (en) 2017-09-29 2020-08-04 Oracle International Corporation Remote one-sided persistent writes
US10956335B2 (en) 2017-09-29 2021-03-23 Oracle International Corporation Non-volatile cache access using RDMA
US10802766B2 (en) 2017-09-29 2020-10-13 Oracle International Corporation Database with NVDIMM as persistent storage
CN108228326A (zh) * 2017-12-29 2018-06-29 深圳乐信软件技术有限公司 批量任务处理方法和分布式系统
US10931450B1 (en) * 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
CN109634949B (zh) * 2018-12-28 2022-04-12 浙江大学 一种基于多数据版本的混合数据清洗方法
US10996887B2 (en) * 2019-04-29 2021-05-04 EMC IP Holding Company LLC Clustered storage system with dynamic space assignments across processing modules to counter unbalanced conditions
CN110968265B (zh) * 2019-11-05 2023-08-08 北京字节跳动网络技术有限公司 分片扩容方法、装置及电子设备
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
US12019642B2 (en) 2022-11-11 2024-06-25 Microsoft Technology Licensing, Llc Distributed query technique to efficiently retrieve and merge data from multiple shards

Family Cites Families (152)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4086628A (en) 1971-11-10 1978-04-25 International Business Machines Corporation Directory generation system having efficiency increase with sorted input
JPH04130950A (ja) 1990-09-21 1992-05-01 Toshiba Corp ネットワークシステム
US5463774A (en) 1993-06-28 1995-10-31 Digital Equipment Corporation Object oriented computer architecture using directory objects
US6038586A (en) 1993-12-30 2000-03-14 Frye; Russell Automated software updating and distribution
US5832505A (en) 1997-04-02 1998-11-03 Sun Microsystems, Inc. Computer system for managing and configuring application properties and enabling system administrator to override certain user-set or host properties
US6772350B1 (en) 1998-05-15 2004-08-03 E.Piphany, Inc. System and method for controlling access to resources in a distributed environment
US6473800B1 (en) 1998-07-15 2002-10-29 Microsoft Corporation Declarative permission requests in a computer system
CA2345241A1 (en) 1998-09-22 2000-03-30 Science Applications International Corporation User-defined dynamic collaborative environments
US6633984B2 (en) 1999-01-22 2003-10-14 Sun Microsystems, Inc. Techniques for permitting access across a context barrier on a small footprint device using an entry point object
US6892230B1 (en) 1999-06-11 2005-05-10 Microsoft Corporation Dynamic self-configuration for ad hoc peer networking using mark-up language formated description messages
US7093005B2 (en) 2000-02-11 2006-08-15 Terraspring, Inc. Graphical editor for defining and creating a computer system
US7269185B2 (en) 2000-05-22 2007-09-11 Nortel Networks Limited Management and control of multi-layer networks
US20030055652A1 (en) 2000-07-07 2003-03-20 Jeffrey Nichols Private network exchange with multiple service providers, having a portal, collaborative applications, and a directory service
US7725602B2 (en) 2000-07-19 2010-05-25 Akamai Technologies, Inc. Domain name resolution using a distributed DNS network
US7200865B1 (en) 2000-12-01 2007-04-03 Sprint Communications Company L.P. Method and system for communication control in a computing environment
US20040024892A1 (en) 2001-05-21 2004-02-05 Creswell Carroll W. System for providing sequenced communications within a group
US6944785B2 (en) 2001-07-23 2005-09-13 Network Appliance, Inc. High-availability cluster virtual server system
US20030037284A1 (en) 2001-08-15 2003-02-20 Anand Srinivasan Self-monitoring mechanism in fault-tolerant distributed dynamic network systems
US7574496B2 (en) 2001-11-30 2009-08-11 Surgient, Inc. Virtual server cloud interfacing
US7418426B1 (en) 2002-05-20 2008-08-26 Microsoft Corporation System and method providing rules driven subscription event processing
US6950825B2 (en) 2002-05-30 2005-09-27 International Business Machines Corporation Fine grained role-based access to system resources
US7461158B2 (en) 2002-08-07 2008-12-02 Intelliden, Inc. System and method for controlling access rights to network resources
US20040139021A1 (en) 2002-10-07 2004-07-15 Visa International Service Association Method and system for facilitating data access and management on a secure token
US7567510B2 (en) 2003-02-13 2009-07-28 Cisco Technology, Inc. Security groups
US20040184070A1 (en) 2003-03-18 2004-09-23 Microsoft Corporation Network printer connection update scheme for printer clients
FR2854521A1 (fr) 2003-04-30 2004-11-05 Orange France Dispositif de communications pour vehicule terrestre
US7788489B2 (en) 2003-05-06 2010-08-31 Oracle International Corporation System and method for permission administration using meta-permissions
US7516221B2 (en) 2003-08-14 2009-04-07 Oracle International Corporation Hierarchical management of the dynamic allocation of resources in a multi-node system
US7475419B1 (en) 2003-09-19 2009-01-06 Hewlett-Packard Development Company, L.P. System and method for controlling access in an interactive grid environment
US20050065855A1 (en) 2003-09-23 2005-03-24 Extreming, Inc. Virtual server consumer authorization, verification and credit update method and article
US7225210B2 (en) 2003-11-20 2007-05-29 Overland Storage, Inc. Block level data snapshot system and method
JP2005242586A (ja) 2004-02-25 2005-09-08 Fuji Xerox Co Ltd 文書ビュー提供のためのプログラム、装置、システム及び方法
US7734643B1 (en) * 2004-06-30 2010-06-08 Oracle America, Inc. Method for distributed storage of data
EP1785002B1 (en) 2004-08-28 2008-10-29 Telefonaktiebolaget LM Ericsson (publ) An arrangement and a method in communication networks
US8464250B1 (en) 2004-09-23 2013-06-11 Transcontinental Events, Llc System and method for on-demand cloning of virtual machines
US7706895B2 (en) 2005-02-25 2010-04-27 Rockwell Automation Technologies, Inc. Reliable messaging instruction
US20110016214A1 (en) 2009-07-15 2011-01-20 Cluster Resources, Inc. System and method of brokering cloud computing resources
US20060259947A1 (en) 2005-05-11 2006-11-16 Nokia Corporation Method for enforcing a Java security policy in a multi virtual machine system
US7921452B2 (en) 2005-08-23 2011-04-05 The Boeing Company Defining consistent access control policies
US8429630B2 (en) 2005-09-15 2013-04-23 Ca, Inc. Globally distributed utility computing cloud
US20070072591A1 (en) 2005-09-23 2007-03-29 Mcgary Faith Enhanced directory assistance system and method including location search functions
US20070162456A1 (en) 2005-12-30 2007-07-12 Shai Agassi Method and system for providing context based content for computer applications
US8707290B2 (en) 2006-02-22 2014-04-22 Dell Products L.P. Firmware update in an information handling system employing redundant management modules
US20110096174A1 (en) 2006-02-28 2011-04-28 King Martin T Accessing resources based on capturing information from a rendered document
US7801128B2 (en) 2006-03-31 2010-09-21 Amazon Technologies, Inc. Managing communications between computing nodes
US20070255798A1 (en) 2006-04-26 2007-11-01 Sap Ag Brokered virtualized application execution
US20080052203A1 (en) 2006-08-25 2008-02-28 David Beyer Design and management of an online environment that serves hierarchical community networks
US8380880B2 (en) 2007-02-02 2013-02-19 The Mathworks, Inc. Scalable architecture
US7975024B2 (en) 2007-02-14 2011-07-05 Yakov Nudler Virtual personal computer access over multiple network sites
US9069883B2 (en) 2007-03-17 2015-06-30 Samsung Electronics Co., Ltd. Document management method and document management apparatus using the same
US8347263B1 (en) 2007-05-09 2013-01-01 Vmware, Inc. Repository including installation metadata for executable applications
US8577937B1 (en) 2007-05-09 2013-11-05 Vmware, Inc. Repository including exclusion list
US7958246B2 (en) 2007-08-09 2011-06-07 Kount Inc. Establishing unique sessions for DNS subscribers
JP5083090B2 (ja) 2007-09-18 2012-11-28 ソニー株式会社 表示制御装置、撮像装置、表示制御方法およびプログラム
WO2009048609A1 (en) 2007-10-12 2009-04-16 Vkernel Corporation Method, system and apparatus for calculating chargeback for virtualized computing resources
US20090182622A1 (en) 2008-01-15 2009-07-16 Agarwal Amit D Enhancing and storing data for recall and use
US20100070501A1 (en) 2008-01-15 2010-03-18 Walsh Paul J Enhancing and storing data for recall and use using user feedback
US20090210429A1 (en) * 2008-02-19 2009-08-20 Yahoo! Inc. System and method for asynchronous update of indexes in a distributed database
US8776188B2 (en) 2008-03-13 2014-07-08 Microsoft Corporation Remote desktop access
US8484174B2 (en) 2008-03-20 2013-07-09 Microsoft Corporation Computing environment representation
CN103401952B (zh) 2008-03-31 2018-04-20 亚马逊技术有限公司 配置计算机节点之间的通信
US8627111B2 (en) 2008-04-23 2014-01-07 Hewlett-Packard Development Company, L.P. Managing associations between keys and values
US8972978B2 (en) 2008-05-02 2015-03-03 Skytap Multitenant hosted virtual machine infrastructure
US7886038B2 (en) 2008-05-27 2011-02-08 Red Hat, Inc. Methods and systems for user identity management in cloud-based networks
US8849971B2 (en) 2008-05-28 2014-09-30 Red Hat, Inc. Load balancing in cloud-based networks
US8688622B2 (en) * 2008-06-02 2014-04-01 The Boeing Company Methods and systems for loading data into a temporal data warehouse
US8548428B2 (en) 2009-01-28 2013-10-01 Headwater Partners I Llc Device group partitions and settlement platform
US9069599B2 (en) 2008-06-19 2015-06-30 Servicemesh, Inc. System and method for a cloud computing abstraction layer with security zone facilities
US20090319529A1 (en) 2008-06-20 2009-12-24 Raytheon Company Information Rights Management
EP2313819A2 (en) 2008-07-14 2011-04-27 The Regents of the University of California Architecture to enable energy savings in networked computers
US7631306B1 (en) 2008-07-30 2009-12-08 International Business Machines Corporation System and method for network image propagation without a predefined network
US8201175B2 (en) 2008-08-05 2012-06-12 International Business Machines Corporation Creating and associating a virtual pseudo TTY with a running process
US20100036736A1 (en) 2008-08-08 2010-02-11 Expresso Fitness Corp. System and method for revenue sharing with a fitness center
US8250215B2 (en) 2008-08-12 2012-08-21 Sap Ag Method and system for intelligently leveraging cloud computing resources
US7890626B1 (en) 2008-09-11 2011-02-15 Gadir Omar M A High availability cluster server for enterprise data management
US8340088B2 (en) 2008-09-11 2012-12-25 Juniper Networks, Inc. Methods and apparatus related to a low cost data center architecture
US8065714B2 (en) 2008-09-12 2011-11-22 Hytrust, Inc. Methods and systems for securely managing virtualization platform
US20100114714A1 (en) 2008-10-31 2010-05-06 James Gerard Vitek Method and system for sharing revenue of an application platform
US8341141B2 (en) 2008-12-16 2012-12-25 Krislov Clinton A Method and system for automated document registration
US7996525B2 (en) 2008-12-31 2011-08-09 Sap Ag Systems and methods for dynamically provisioning cloud computing resources
US8019837B2 (en) 2009-01-14 2011-09-13 International Business Machines Corporation Providing network identity for virtual machines
US20100185455A1 (en) 2009-01-16 2010-07-22 Green Networks, Inc. Dynamic web hosting and content delivery environment
US9344401B2 (en) 2009-02-04 2016-05-17 Citrix Systems, Inc. Methods and systems for providing translations of data retrieved from a storage system in a cloud computing environment
US9727320B2 (en) 2009-02-25 2017-08-08 Red Hat, Inc. Configuration of provisioning servers in virtualized systems
US20100220622A1 (en) 2009-02-27 2010-09-02 Yottaa Inc Adaptive network with automatic scaling
US9207984B2 (en) 2009-03-31 2015-12-08 Amazon Technologies, Inc. Monitoring and automatic scaling of data volumes
US8713060B2 (en) 2009-03-31 2014-04-29 Amazon Technologies, Inc. Control service for relational data management
US8291416B2 (en) 2009-04-17 2012-10-16 Citrix Systems, Inc. Methods and systems for using a plurality of historical metrics to select a physical host for virtual machine execution
US8073875B2 (en) * 2009-04-22 2011-12-06 International Business Machines Corporation Managing deleted directory entries
US8285754B2 (en) * 2009-04-22 2012-10-09 International Business Machines Corporation Preserving references to deleted directory entries
CN102460393B (zh) 2009-05-01 2014-05-07 思杰系统有限公司 用于在虚拟存储资源之间建立云桥的系统和方法
US20100332629A1 (en) 2009-06-04 2010-12-30 Lauren Ann Cotugno Secure custom application cloud computing architecture
US8037108B1 (en) 2009-07-22 2011-10-11 Adobe Systems Incorporated Conversion of relational databases into triplestores
US8135771B2 (en) 2009-07-27 2012-03-13 Cisco Technology, Inc. Digital signal processor clustering in integrated media-services gateways
US8769083B2 (en) 2009-08-31 2014-07-01 Red Hat, Inc. Metering software infrastructure in a cloud computing environment
US8504443B2 (en) 2009-08-31 2013-08-06 Red Hat, Inc. Methods and systems for pricing software infrastructure for a cloud computing environment
US8886788B2 (en) 2009-08-31 2014-11-11 Accenture Global Services Limited Enterprise-level management, control and information aspects of cloud console
US8276139B2 (en) 2009-09-30 2012-09-25 International Business Machines Corporation Provisioning virtual machine placement
US8676753B2 (en) 2009-10-26 2014-03-18 Amazon Technologies, Inc. Monitoring of replicated data instances
US8650246B2 (en) 2009-10-29 2014-02-11 Fujitsu Technology Solutions Intellectual Property Gmbh Method and system for licensing a software product
US8250213B2 (en) 2009-11-16 2012-08-21 At&T Intellectual Property I, L.P. Methods and apparatus to allocate resources associated with a distributive computing network
US20110126197A1 (en) 2009-11-25 2011-05-26 Novell, Inc. System and method for controlling cloud and virtualized data centers in an intelligent workload management system
US20110126168A1 (en) 2009-11-25 2011-05-26 Crowdsource Technologies Ltd. Cloud plarform for managing software as a service (saas) resources
US8108377B2 (en) 2009-12-15 2012-01-31 Facebook, Inc. Predictive resource identification and phased delivery of structured documents
US8301746B2 (en) 2010-01-26 2012-10-30 International Business Machines Corporation Method and system for abstracting non-functional requirements based deployment of virtual machines
US8468455B2 (en) 2010-02-24 2013-06-18 Novell, Inc. System and method for providing virtual desktop extensions on a client desktop
US20110214124A1 (en) 2010-02-26 2011-09-01 James Michael Ferris Systems and methods for generating cross-cloud computing appliances
US20110213687A1 (en) 2010-02-26 2011-09-01 James Michael Ferris Systems and methods for or a usage manager for cross-cloud appliances
US8122282B2 (en) 2010-03-12 2012-02-21 International Business Machines Corporation Starting virtual instances within a cloud computing environment
US8464255B2 (en) 2010-03-12 2013-06-11 Microsoft Corporation Managing performance interference effects on cloud computing servers
US8341269B2 (en) 2010-03-19 2012-12-25 International Business Machines Corporation Configuring cloud resources
US8413142B2 (en) 2010-03-30 2013-04-02 Citrix Systems, Inc. Storage optimization selection within a virtualization environment
US8332517B2 (en) 2010-03-31 2012-12-11 Incnetworks, Inc. Method, computer program, and algorithm for computing network service value pricing based on communication service experiences delivered to consumers and merchants over a smart multi-services (SMS) communication network
US8965801B2 (en) 2010-03-31 2015-02-24 International Business Machines Corporation Provision of support services as a service
CA2737631C (en) 2010-04-18 2014-07-15 Layer 7 Technologies Inc. Protected application stack and method and system of utilizing
US8472438B2 (en) 2010-04-23 2013-06-25 Telefonaktiebolaget L M Ericsson (Publ) Efficient encapsulation of packets transmitted on a packet-pseudowire over a packet switched network
US8813065B2 (en) 2010-04-26 2014-08-19 Vmware, Inc. Microcloud platform delivery system
US8627426B2 (en) 2010-04-26 2014-01-07 Vmware, Inc. Cloud platform architecture
US9772831B2 (en) 2010-04-26 2017-09-26 Pivotal Software, Inc. Droplet execution engine for dynamic server application deployment
US8984589B2 (en) 2010-04-27 2015-03-17 Accenture Global Services Limited Cloud-based billing, credential, and data sharing management system
US20110270721A1 (en) 2010-04-28 2011-11-03 Sap Ag Monitoring application interactions with enterprise systems
US20110270968A1 (en) 2010-04-30 2011-11-03 Salsburg Michael A Decision support system for moving computing workloads to public clouds
US9075663B2 (en) 2010-05-12 2015-07-07 Samsung Electronics Co., Ltd. Cloud-based web workers and storages
US8849749B2 (en) * 2010-05-14 2014-09-30 Oracle International Corporation Load balancing in parallel database systems using multi-reordering
US8910278B2 (en) 2010-05-18 2014-12-09 Cloudnexa Managing services in a cloud computing environment
US8504689B2 (en) 2010-05-28 2013-08-06 Red Hat, Inc. Methods and systems for cloud deployment analysis featuring relative cloud resource importance
US8909783B2 (en) 2010-05-28 2014-12-09 Red Hat, Inc. Managing multi-level service level agreements in cloud-based network
US9785472B2 (en) 2010-06-11 2017-10-10 Hewlett Packard Enterprise Development Lp Computing cluster performance simulation using a genetic algorithm solution
US10715457B2 (en) 2010-06-15 2020-07-14 Oracle International Corporation Coordination of processes in cloud computing environments
WO2011159842A2 (en) 2010-06-15 2011-12-22 Nimbula, Inc. Virtual computing infrastructure
EP2586155A4 (en) 2010-06-23 2017-06-07 Hewlett-Packard Enterprise Development LP Authorization control
US20120221603A1 (en) 2010-07-02 2012-08-30 salesforces.com, Inc. Distributed mobile services
EP2591423A4 (en) 2010-07-09 2017-05-24 State Street Corporation Systems and methods for private cloud computing
US8341462B2 (en) 2010-07-19 2012-12-25 Soasta, Inc. System and method for provisioning and running a cross-cloud test grid
US8812627B2 (en) 2010-08-20 2014-08-19 Adobe Systems Incorporated System and method for installation and management of cloud-independent multi-tenant applications
US8515915B2 (en) 2010-09-24 2013-08-20 Hitachi Data Systems Corporation System and method for enhancing availability of a distributed object storage system during a partial database outage
US8918645B2 (en) 2010-09-24 2014-12-23 Amazon Technologies, Inc. Content selection and delivery for random devices
US9235442B2 (en) 2010-10-05 2016-01-12 Accenture Global Services Limited System and method for cloud enterprise services
CN101969475A (zh) 2010-11-15 2011-02-09 张军 基于云计算的商业数据可控分发与融合应用系统
US8880475B2 (en) 2011-04-08 2014-11-04 International Business Machines Corporation Reusing snapshots in a network data management protocol backup operation
US8554726B2 (en) * 2011-06-01 2013-10-08 Clustrix, Inc. Systems and methods for reslicing data in a relational database
US9208201B2 (en) 2011-06-03 2015-12-08 Apple Inc. Cloud storage
US20130036213A1 (en) 2011-08-02 2013-02-07 Masum Hasan Virtual private clouds
US10158638B2 (en) 2011-08-31 2018-12-18 Salesforce.Com, Inc. Computer implemented methods and apparatus for providing access to an online social network
US8429162B1 (en) * 2011-09-27 2013-04-23 Amazon Technologies, Inc. Facilitating data redistribution in database sharding
US8584215B2 (en) 2012-02-07 2013-11-12 Cisco Technology, Inc. System and method for securing distributed exporting models in a network environment
EP2812809A4 (en) 2012-02-10 2016-05-25 Oracle Int Corp FRAMEWORK FOR CLOUD COMPUTING SERVICES
JP6231020B2 (ja) 2012-02-13 2017-11-15 オラクル・インターナショナル・コーポレイション クラウドコンピューティング環境におけるプロセスの調整
US8438654B1 (en) 2012-09-14 2013-05-07 Rightscale, Inc. Systems and methods for associating a virtual machine with an access control right
US9232000B1 (en) * 2012-12-21 2016-01-05 Emc Corporation Method and system for balancing load across target endpoints on a server and initiator endpoints accessing the server
US9619545B2 (en) 2013-06-28 2017-04-11 Oracle International Corporation Naïve, client-side sharding with online addition of shards
CN103488697B (zh) * 2013-09-03 2017-01-11 沈效国 能自动收集和交换碎片化商业信息的系统及移动终端

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10970757B2 (en) 2010-06-15 2021-04-06 Oracle International Corporation Organizing data in a virtual computing infrastructure
US11657436B2 (en) 2010-06-15 2023-05-23 Oracle International Corporation Managing storage volume in a virtual computing infrastructure

Also Published As

Publication number Publication date
EP3014485A1 (en) 2016-05-04
CN105339940B (zh) 2019-02-26
WO2014209848A1 (en) 2014-12-31
US9619545B2 (en) 2017-04-11
EP3014485B1 (en) 2019-05-22
JP2016524255A (ja) 2016-08-12
US20150006482A1 (en) 2015-01-01
CN105339940A (zh) 2016-02-17

Similar Documents

Publication Publication Date Title
JP6509204B2 (ja) シャードのオンライン追加によるナイーブなクライアント側シャーディング
US11907732B2 (en) Leveraging microservice containers to provide tenant isolation in a multi-tenant API gateway
US10331463B2 (en) Dynamic role-based view definitions in a repository system
US10244070B2 (en) In-memory message sequencing
US10223024B2 (en) Storage controller for provisioning storage services for an application based upon application-specific requirements
US9600342B2 (en) Managing parallel processes for application-level partitions
US10346632B2 (en) Entity security implied by an asset in a repository system
US10614048B2 (en) Techniques for correlating data in a repository system
US20180081643A1 (en) Controlled availability of objects in a visual design tool for integration development
US20150074056A1 (en) Extensible customization migration via pluggable interface
US11934395B2 (en) Efficient extraction of large data sets from a database
US11836519B2 (en) Decoupled push-down execution generator
US11921726B2 (en) Logical partitions via header-based partition filtering
US11966754B2 (en) Cluster bootstrapping for distributed computing systems
US10055448B2 (en) Techniques to reduce contention windows
US9898488B2 (en) Preserving deprecated database columns

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170525

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180731

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20181031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190219

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: 20190305

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190402

R150 Certificate of patent or registration of utility model

Ref document number: 6509204

Country of ref document: JP

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