(58)【調査した分野】(Int.Cl.,DB名)
前記マルチ・マスタ・データベースから肯定応答を受信するのを待つ間にクライアント・デバイスがタイム・アウトしたと判定した上で、前記クライアント・デバイスが、少なくとも1つの読取りトランザクションを発行することによって前記書込みトランザクションの状況を得る、請求項1に記載の方法。
【発明を実施するための形態】
【0009】
様々な実施形態の説明が例示の目的で提示されたが、網羅的であるとも、または開示される実施形態に限定されるとも意図されない。記載される実施形態の範囲および思想から逸脱することなく、多くの変更および変形が当業者にとって明らかであろう。本明細書で使用される技術用語は、実施形態の原理、実際的応用もしくは市場で見つかる技術に対する技術的改良を最もよく説明するように、または当業者が本明細書に開示される実施形態を理解することを可能にするように選ばれた。
【0010】
本開示がクラウド・コンピューティングの詳細な説明を含むとはいえ、本明細書に詳述される教示の実装がクラウド・コンピューティング環境に限定されないことが事前に理解される。むしろ、本発明の実施形態は、現在公知であるまたは今後開発されるいかなる他の種類のコンピューティング環境とも併せて実装されることが可能である。
【0011】
1つまたは複数の実施形態が、疎結合ノードによるマルチ・マスタ・データベースにおける複製のためのクォーラム処理に備える。一実施形態が、疎結合ノードによるマルチ・マスタ・データベースにおける単調トランザクションのための方法であって、クライアント・デバイスがノードのいずれかで書込みトランザクションを発行することと、書込みトランザクションを発行するノードでローカルに書込みトランザクションを記録し、少なくとも1つの他のノードに書込みトランザクションを非同期で複製することと、クライアント・デバイスに応答を返す前にノードの少なくともクォーラムからの肯定応答の受信を待つことと、を含む書込みトランザクション・プロトコルを、プロセッサによって行うことを含む、方法を提供する。クォーラムは、特別なノードおよび少なくとも1つの他のノードを含むノードの任意の集合である。
【0012】
クラウド・コンピューティングは、最小の管理労力またはサービスの提供者との相互作用で迅速にプロビジョニングおよび解放されることができる構成可能なコンピューティング・リソース(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン(VM)およびサービス)の共有プールへの簡便でオン・デマンドのネットワーク・アクセスを可能にするためのサービス配布のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデルおよび少なくとも4つの展開モデルを含んでもよい。
【0013】
特性は次の通りである:
オン・デマンド・セルフ・サービス:クラウド消費者が、サービスの提供者との人間相互作用を必要とすることなく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を一方的にプロビジョニングすることができる。
広域ネットワーク・アクセス:機能がネットワークを通じて利用可能であり、そして異種シンまたはシック・クライアント・プラットフォーム(例えば、移動電話、ラップトップおよびPDA)による使用を促進する標準機構を通じてアクセスされる。
リソース・プーリング:提供者のコンピューティング・リソースがプールされて、マルチ・テナント・モデルを使用して複数の消費者に、需要に従って動的に割り当ておよび再割り当てされる異なる物理および仮想リソースを供給する。消費者が、提供されるリソースの正確な位置に対する制御または知識を一般に有しないが、より高い抽象化レベル(例えば、国、州またはデータ・センタ)で位置を特定することができ得るという点で、位置独立の感覚がある。
迅速な弾性:機能が迅速かつ弾性的に、場合により自動的に、プロビジョニングされて急速にスケール・アウトし、迅速に解放さて急速にスケール・インすることができる。消費者にとって、プロビジョニングに利用可能な機能は、しばしば無限であるように見えて、いつでもいかなる量でも購入されることができる。
実測サービス:クラウド・システムが、サービスの種類に適切な或る抽象化レベル(例えば、ストレージ、処理、帯域幅およびアクティブ消費者アカウント)で計測機能を活用することによってリソース使用を自動的に制御および最適化する。リソース使用状況が監視、制御および報告され、それによって、利用されるサービスの提供者にも消費者にも透明性を提供することができる。
【0014】
サービス・モデルは次の通りである:
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウド・インフラストラクチャ上で動く提供者のアプリケーションを使用する能力である。アプリケーションは、ウェブ・ブラウザなどのシン・クライアント・インタフェースを通じて様々なクライアント・デバイスからアクセス可能である(例えば、ウェブベースの電子メール)。消費者は、限定された消費者固有のアプリケーション構成設定を場合により除いて、ネットワーク、サーバ、オペレーティング・システム、ストレージまたは個々のアプリケーション機能さえ含め、基礎となるクラウド・インフラストラクチャを管理または制御しない。
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、提供者によってサポートされるプログラミング言語およびツールを使用して作成された消費者作成または取得アプリケーションをクラウド・インフラストラクチャ上へ展開する能力である。消費者は、ネットワーク、サーバ、オペレーティング・システムまたはストレージを含め、基礎となるクラウド・インフラストラクチャを管理または制御しないが、展開されたアプリケーションおよび場合によりアプリケーション・ホスティング環境構成に対する制御を有する。
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、処理、ストレージ、ネットワーク、ならびに消費者が、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアを展開して動かすことができる、他の基本的なコンピューティング・リソースをプロビジョニングする能力である。消費者は、基礎となるクラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システム、ストレージ、展開されたアプリケーションに対する制御、および場合により、選択されたネットワーキング部品(例えば、ホスト・ファイアウォール)の限定された制御を有する。
【0015】
展開モデルは次の通りである:
プライベート・クラウド:クラウド・インフラストラクチャは、専ら組織のために運営される。それは、同組織または第三者によって管理されてもよく、そして構内または構外に存在してもよい。
コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織によって共有され、そして共有事項(例えば、使命、セキュリティ要件、方針およびコンプライアンス問題)を有する特定のコミュニティをサポートする。それは、同組織または第三者によって管理されてもよく、そして構内または構外に存在してもよい。
パブリック・クラウド:クラウド・インフラストラクチャは、一般大衆または大規模な業界団体に利用可能にされ、そしてクラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、一意のエンティティのままであるが、データおよびアプリケーション・ポータビリティを可能にする標準化または独自技術(例えば、クラウド間のロード・バランシングのためのクラウド・バースティング)によって結合される2つ以上のクラウド(プライベート、コミュニティまたはパブリック)の組合せである。
【0016】
クラウド・コンピューティング環境は、ステートレス性、低結合、モジュール性および意味論的相互運用性に重点を置いたサービス指向である。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを備えるインフラストラクチャである。
【0017】
ここで
図1を参照すると、例示的なクラウド・コンピューティング環境50が描かれる。図示されるように、クラウド・コンピューティング環境50は、例えば、携帯情報端末(PDA)もしくはセルラ電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54Cまたは自動車コンピュータ・システム54Nあるいはその組合せなどの、クラウド消費者によって使用されるローカル・コンピューティング・デバイスが通信してもよい、1つまたは複数のクラウド・コンピューティング・ノード10を備える。ノード10は互いと通信してもよい。それらは、本明細書で上記したプライベート、コミュニティ、パブリックもしくはハイブリッド・クラウドまたはその組合せなどの、1つまたは複数のネットワークに物理的または仮想的にグループ化されてもよい(図示せず)。これは、クラウド・コンピューティング環境50が、クラウド消費者がローカル・コンピューティング・デバイス上にリソースを維持する必要がないサービスとしてのインフラストラクチャ、プラットフォームもしくはソフトウェアまたはその組合せを提供するのを可能にする。
図2に図示される種類のコンピューティング・デバイス54A〜Nが単に例示的であると意図されること、ならびにコンピューティング・ノード10およびクラウド・コンピューティング環境50が、いかなる種類のネットワークもしくはネットワーク・アドレス可能接続(例えば、ウェブ・ブラウザを使用して)またはその両方を通じても、いかなる種類のコンピュータ化デバイスとも通信することができることが理解される。
【0018】
ここで
図2を参照すると、クラウド・コンピューティング環境50(
図1)によって提供される一組の機能抽象化層が図示される。
図2に図示される部品、層および機能が単に例示的であると意図され、そして本発明の実施形態がそれに限定されないことが事前に理解されるべきである。描かれるように、以下の層および対応する機能が提供される:
【0019】
ハードウェアおよびソフトウェア層60がハードウェアおよびソフトウェア部品を含む。ハードウェア部品の例としては:メインフレーム61;RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62;サーバ63;ブレード・サーバ64;ストレージ・デバイス65;ならびにネットワークおよびネットワーキング部品66を含む。いくつかの実施形態において、ソフトウェア部品は、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0020】
仮想化層70が、以下の例の仮想エンティティが提供されることができる抽象化層を提供する:仮想サーバ71;仮想ストレージ72;仮想プライベート・ネットワークを含む、仮想ネットワーク73;仮想アプリケーションおよびオペレーティング・システム74;ならびに仮想クライアント75。
【0021】
一例では、管理層80が、下記される機能を提供してもよい。リソース・プロビジョニング81が、コンピューティング・リソース、およびクラウド・コンピューティング環境内でタスクを行うために利用される他のリソースの動的調達を提供する。計測および価格決定82が、クラウド・コンピューティング環境内でリソースが利用されるときに費用追跡を、およびこれらのリソースの消費に対する課金または代金請求を提供する。一例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでもよい。セキュリティが、クラウド消費者およびタスクに対する識別情報検証の他に、データおよび他のリソースに対する保護を提供する。ユーザ・ポータル83が、消費者およびシステム管理者に対してクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84が、必要とされるサービス・レベルが満たされるようにクラウド・コンピューティング・リソース割当ておよび管理を提供する。サービス・レベル合意(SLA)計画および遂行85が、SLAに従って将来の要求が予想されるクラウド・コンピューティング・リソースの事前手配および調達を提供する。
【0022】
ワークロード層90が、クラウド・コンピューティング環境が利用されることができる機能性の例を提供する。この層から提供されることができるワークロードおよび機能の例としては:マッピングおよびナビゲーション91;ソフトウェア開発およびライフサイクル管理92;仮想教室教育配信93;データ解析処理94;トランザクション処理95;ならびに疎結合ノードによるマルチ・マスタ・データベースにおける複製のためのクォーラム処理96。上述したように、
図2に関して記載される上記の例の全てが単に例示的であり、そして本発明はこれらの例に限定されない。
【0023】
本明細書に記載される1つまたは複数の実施形態の全ての機能が処理システム300(
図3)または、ハードウェア・プロセッサとしてかつプログラム・コードのモジュールと共に有形に具象化されることができる、自律クラウド環境410(
図4)によって典型的に行われてもよいと理解される。しかしながら、これは、非リアル・タイム処理のための場合である必要はない。むしろ、非リアル・タイム処理に関しては、本明細書に詳述される機能性は、
図2に図示される層60、70、80および90のいずれかによって実施/実装され得るもしくは可能にされ得るまたはその両方され得る。
【0024】
本開示がクラウド・コンピューティングに関する詳細な説明を含むとはいえ、本明細書に詳述される教示の実装がクラウド・コンピューティング環境に限定されないことが繰り返される。むしろ、本発明の実施形態は、現在公知であるまたは今後開発されるいかなる種類のクラスタ化コンピューティング環境とも実装されてもよい。
【0025】
図3は、一実施形態に従う、ネットワーク・アーキテクチャ300を例示する。
図3に図示されるように、第1の遠隔ネットワーク304および第2の遠隔ネットワーク306を含め、複数の遠隔ネットワーク302が設けられる。遠隔ネットワーク302と近接ネットワーク308との間にゲートウェイ301が結合されてもよい。本ネットワーク・アーキテクチャ300の文脈では、ネットワーク304、306は各々、LAN、インターネットなどのWAN、公衆電話交換網(PSTN)、構内電話網等を含むがこれらに限定されない、いかなる形態をとってもよい。
【0026】
使用の際、ゲートウェイ301は、遠隔ネットワーク302から近接ネットワーク308への入口点の役目をする。そのため、ゲートウェイ301は、ゲートウェイ301に到達する所与のデータのパケットを誘導することが可能であるルータ、および所与のパケットに対するゲートウェイ301内外への実際の経路を供給するスイッチとして機能してもよい。
【0027】
更に含まれるのは、近接ネットワーク308に結合される少なくとも1つのデータ・サーバ314であり、これはゲートウェイ301を介して遠隔ネットワーク302からアクセス可能である。データ・サーバ314がいかなる種類のコンピューティング・デバイス/グループウェアを含んでもよいことが留意されるべきである。各データ・サーバ314に結合されるのは、複数のユーザ・デバイス316である。そのようなユーザ・デバイス316は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、プリンタもしくは任意の他の種類の論理含有デバイスまたはその組合せを含んでもよい。いくつかの実施形態において、ユーザ・デバイス311もネットワークのいずれかに直接結合されてもよいことが留意されるべきである。
【0028】
周辺装置320または一連の周辺装置320、例えば、ファクシミリ装置、プリンタ、スキャナ、ハード・ディスク・ドライブ、ネットワークもしくはローカルまたはその両方のストレージ・ユニットまたはシステム等がネットワーク304、306、308の1つまたは複数に結合されてもよい。データベースもしくは追加部品またはその両方がネットワーク304、306、308に結合されるいかなる種類のネットワーク要素と共に利用されても、またはそれに組み込まれてもよいことが留意されるべきである。本説明の文脈では、ネットワーク要素は、ネットワークのいかなる部品を指してもよい。
【0029】
いくつかの手法によれば、本明細書に記載される方法およびシステムは、仮想システムまたは、IBM(R)z/OS(R)環境をエミュレートするUNIX(R)システム、MICROSOFT(R)WINDOWS(R)環境を仮想的にホストするUNIX(R)システム、IBM(R)z/OS(R)環境をエミュレートするMICROSOFT(R)WINDOWS(R)システム等などの、1つもしくは複数の他のシステムをエミュレートするシステム、あるいはその両方を用いて、またはその上で、あるいはその両方で実装されてもよい。この仮想化もしくはエミュレーションまたはその両方は、いくつかの実施形態においてVMWARE(R)ソフトウェアの使用を通じて実装されてもよい。
【0030】
図4は、一実施形態に従う、
図3のユーザ・デバイス316もしくはサーバ314またはその両方と関連付けられる代表的なハードウェア・システム400環境を図示する。一例では、ハードウェア構成は、マイクロプロセッサなどの中央処理装置410、およびシステムバス412を介して相互接続されるいくつかの他のユニットを有するワークステーションを含む。
図4に図示されるワークステーションは、ランダム・アクセス・メモリ(RAM)414、リード・オンリ・メモリ(ROM)416、ディスク・ストレージ・ユニット420などの周辺デバイスをバス412に接続するためのI/Oアダプタ418、キーボード424、マウス426、スピーカ428、マイクロホン432、もしくはタッチ・スクリーン、デジタル・カメラ(図示せず)等などの、他のユーザ・インタフェース・デバイス、またはその組合せをバス412に接続するためのユーザ・インタフェース・アダプタ422、ワークステーションを通信ネットワーク435(例えば、データ処理ネットワーク)に接続するための通信アダプタ434、バス412をディスプレイ・デバイス438に接続するためのディスプレイ・アダプタ436を含んでもよい。
【0031】
一例では、ワークステーションは、その上に、MICROSOFT(R)WINDOWS(R)オペレーティング・システム(OS)、MAC(R)OS、UNIX(R) OS等などのオペレーティング・システムを常駐させてもよい。一実施形態において、システム400は、POSIX(R)ベースのファイルシステムを利用する。言及されたもの以外のプラットフォームおよびオペレーティング・システム上にも他の例が実装されてもよいことが認識されるであろう。そのような他の例は、オブジェクト指向プログラミング方法論と共に、JAVA(R)、XML、CもしくはC++言語またはその組合せ、あるいは他のプログラミング言語を使用して書かれたオペレーティング・システムを含んでもよい。複雑なアプリケーションを開発するためにますます使用されるようになったオブジェクト指向プログラミング(OOP)も使用されてもよい。
【0032】
従来の複製データベースでは、データ・オブジェクトが、複数の位置に存在するコピーを有する。そのようなデータベースがアプリケーションに与える極めて重要な一貫性保証が単調読取りである。書込み操作(従来はトランザクションとしても知られている)がデータベース状態を原子的に変更し、全ての以降の読取り(照会)が操作の変更に遭遇する(この場合、操作は成功またはコミットしたと言われる)か操作の変更に遭遇しない(この場合、操作はロール・バックしたと言われる)かである。従来の複製データベースでは、この保証は、同期したブロッキング書込みを伴うクォーラム・ベースのレプリカ制御プロトコルを通じて達成される。詳細には、複製データ項目の各コピーは、票が割り当てられる。各操作は次に、データ項目を読み取るまたは書き込むために、それぞれ、読取りクォーラム(T
r)または書込みクォーラム(T
w)を得なければならない。所与のデータ項目が合計T票を有する場合、クォーラムは以下の規則に従わなければならない:
1.T
r+T
w>T
2.T
w>T/2
【0033】
書込み操作は、その書込みからの変更が書込みクォーラムのレプリカに複製するまで待たなければならず、そしてこれは、肯定応答を待つことによって検証されなければならない。更に、この待機プロセスが失敗またはタイム・アウトした場合、書込みはロール・バックされなければならない。これは、2相コミット・プロトコルで典型的に達成される。したがって、これらの規則は、2つの書込みクォーラムが常に共通ノードを有すること、およびいかなる読取りクォーラムもデータ項目の最新バージョンを持つ少なくとも1つのサイトを含むことを保証する。したがって、書込みが原子的に成功するかロール・バックするかし、全ての以降の読取りがデータベースの一貫したイメージに遭遇する。そのような一貫したシステムでは、第3の返答局面もあり得る:書込み操作状況不明。これは、例えば、データベースとアプリケーションとの間の接続が失敗した、またはアプリケーションがデータベースからの応答を待つ間にタイム・アウトしたときに発生する可能性がある。しかし、それでも、そのような局面でさえ、アプリケーションは、書込み操作の状況をデータベースに照会することができ−そしてその照会(全ての以降の照会)は一貫した回答に遭遇するであろう。この手法の不利点は、それが、ノードが利用可能でかつ応答する密接続システムを必要とするということである。例えば、一旦2相コミット・プロトコルが開始したならば、イニシエータ・ノードが無応答になると、システムは以降の読取りに利用不可能である。
【0034】
3つの返答局面(すなわち、成功、失敗してロールバックおよび不明)を有する一貫したシステムと区別可能で、結果整合性システムでは、アプリケーションが結果的に単調読取りを得るが、書込みの完了の後に若干の時間があり、このときに読取りが一貫しない回答に遭遇することがある。データベース状態が書込み操作によって変更されると、返答状況は成功および不明である。最後の場合、以降の読取りは異なる回答を得る。変更が複製されたノードの1つに読取りが行く場合、読取りは変更に遭遇し、後の読取り(異なるノードに行く)は変更に遭遇しないかもしれず;次いで別の読取りが変更に遭遇する。しかし、結果整合性システムは高可用性を有する。書込みはいかなるノードでも発生することができ(「マルチ・マスタ」);非同期で他のノードに複製され;そしてシステムはいくつかの数のノードの障害に耐えることができる。
【0035】
マルチ・マスタ複製(またはピア・ツー・ピアn−way複製(n-way replication))は、データが一群のコンピュータによって記憶され、そして同グループのいずれかのメンバーによって更新されることに備えるデータベース複製の方法である。個々のマスタ・サイトになされる更新が全ての他のマスタ・サイトに伝播される。マルチ・マスタ複製は、全てのデータベース・テーブル・レプリカのデータの収束を提供し、かつグローバルなトランザクション一貫性およびデータ保全性を提供する。競合解消は、マスタ・ノードの各々で独立して扱われる。マルチ・マスタ複製は、マスタ・ノードの各々で各複製データベース・テーブルの完全なレプリカを提供する。全てのメンバーがクライアント・データ照会に応答する。マルチ・マスタ複製システムは、各メンバーによってなされるデータ変更をグループの残りに伝播し、異なるメンバーによってなされる並列変更間で起こり得るいかなる競合も解消する役割を果たす。マルチ・マスタ複製は、上昇した可用性およびより速いサーバ応答時間を提供する。
【0036】
従来のACID DBMSでは、原子性、一貫性、独立性および永続性の4つの状態が以下を提供する。原子性に関しては、データベース変更トランザクション(すなわち、アトミック・トランザクション)が「全か無か」の規則に従わなければならない。トランザクションの一部分が失敗した場合、トランザクション全体が失敗する。一貫性に関しては、有効データだけがデータベースに書き込まれることになる。データベースの一貫性規則に違反するトランザクションが実行される場合、トランザクション全体がロール・バックされることになり、そしてデータベースはそれらの規則と一貫した状態に復元されることになる。トランザクションが実行して成功すれば、それはデータベースを、規則と一貫している1つの状態から同じく規則と一貫している別の状態に移すことになる。独立性に関しては、同時に生じる複数のトランザクションが互いの実行に影響を与えない。データベースに対する2つの同時の発行されたトランザクションに関して、両トランザクションが独立した方式でデータベースに作用する。データベースは、1つのトランザクション全体を行った後にその他を実行するか、その逆かである。これは、1つのトランザクションが、結果的にデータベースにコミットされないであろうその他のトランザクションの一部の副作用として生成される中間データを読み取るのを防止する。独立性特性は、どのトランザクションが最初に実行することになるかを保証するのではなく、それらが互いと干渉しないことを保証する。永続性に関しては、データベースにコミットされたいかなるトランザクションも失われないであろう。永続性は、以降の失敗(例えば、ソフトウェアまたはハードウェア障害)に関係なくコミットされたトランザクションの復元を容易にするバックアップおよびトランザクション・ログを使用する。
【0037】
図5は、一実施形態による、疎結合ノードによるマルチ・マスタ・データベースにおける複製のためのクォーラム処理のシステム500を例示するブロック図である。一実施形態において、システム500は、クライアント・デバイス510(例えば、モバイル・デバイス、スマート・デバイス、コンピューティング・システム等)、クラウドまたはリソース共有環境520、およびサーバ530を含む。一実施形態において、クライアント・デバイスは、クラウドまたはリソース共有環境520を通じてサーバ530からクラウド・サービスが提供される。一実施形態において、システム500は、コンセンサス・プロトコルを使用して1つのノードが特別なノード(またはリーダ・ノード)として選ばれると規定するマルチ・マスタ・データベース・システムである。コンセンサスは、一群の参加者の中で1つの結果に同意するプロセスである。一実施形態において、システム500では、書込みクォーラムに関して、特別なノードおよび少なくとも1つの非特別な(または非リーダ)ノードがいずれの書込みクォーラムでもその一部でなければならない。読取りクォーラムに関して、特別なノードおよび少なくとも1つの非特別なノードがいずれの読取りクォーラムでもその一部でなければならない。書込みクォーラムも読取りクォーラムも、永続性要件に応じて、追加ノードが参加者であるように要求してもよいことに留意されたい。コミット・トランザクションの後に、イニシエータ・ノードは、SUCCESS(成功)結果通知を返す前に、そのトランザクションのログが書込みクォーラムのノードに複製される(そして肯定応答(ack)を受信する)のを待つ。イニシエータ・ノードは、ackを待つ間決してタイム・アウトしない。アプリケーションはタイム・アウトするかもしれず、その場合、返答状態はトランザクション状況UNKNOWN(不明)である。
【0038】
一実施形態において、システム500では、書込み(トランザクション)はいかなるノードにも行くことができる。一実施形態において、システム500は、読取りがクォーラムのノードで見えるデータだけに遭遇し、かつクォーラムが1組または複数組のノードであるクォーラム読取りクォーラム書込みプロトコルを採用する。一実施形態例において、クォーラムは、少なくとも大半のノードを持つ任意の集合である。システム500は、選ばれた特別なノードを維持し、書込みプロトコルおよび書込みクォーラムを使用し、ここで:書込みは、それらに少なくとも書込みクォーラムのノードから(書込みが複製されたという)肯定応答が通知されるまで待ち、書込み操作は決してタイムアウトせず、そしていかなる読取りクォーラムもおよびいかなる書込みクォーラムも常に特別なノードおよび少なくとも1つの他のノードを含む。
【0039】
1つまたは複数の実施形態において、特別なノードがいつでも故障するかもしれず、新たな特別なノードが選ばれなければならないかもしれないことが留意されるべきである。この理由で、特別だけのクォーラムは機能しない。新たな特別なノードが選ばれるとき、いずれの成功したトランザクション(コミットがSUCCESS(成功)を返すか、それが状態、トランザクション状況UNKNOWN(不明)を返し、かつ以降の照会がトランザクションの変更に遭遇したかの場合、トランザクションは成功である)も以前の特別なノードに加えて少なくとも1つの他のノードに伝播されたそれらのそれぞれの変更を有することが保証される。以前の特別なノードが目下無応答であっても、他のノードが、全ての成功したトランザクションを復元するために使用されてもよい。
【0040】
一実施形態において、システム500では、書込みプロトコルは、システム500が:1)いずれかのノードで書込みを発行し;2)ローカルに(そのノードで)書込みを記録し、他のノードに非同期で複製され;3)受取りの肯定応答が少なくともクォーラムのノードから受信されるまで待ち;4)クライアント・デバイス510が3)の間にタイムアウトすることができる場合、読取りを発行することによって書込みの状況を見つけ出してもよい、ことを含む。
【0041】
一実施形態において、システム500では、読取りプロトコルは、システム500が:1)いずれかのノードで読取りを発行してもよく;2)読取りが、少なくともクォーラムのノードによって複製されていると知られている行だけを返し;3)特別なノードが応答しないために2)での読取りがタイム・アウトした場合、システム500は、コンセンサス・プロトコルを介して新たな特別なノードを選び、そして2)に続く、ことを含む。
【0042】
一実施形態例において、システム500は:1)ノードA(特別なノードとして選ばれる)で書込みを発行し、ここでシステム500は他のノードB、C、DおよびEを有し;2)クライアント・デバイス510がタイム・アウトし、いずれかのノード、例えばノードCで読取りを発行する。この例では、システム500では、読取りが、Aおよび1つの他のノードで見える行だけを返す。1)でノードCが書込みを受信した場合、読取りは同書込みに遭遇する。そうでなければ、ノードCは、ノードA、B、DもしくはノードEまたはその組合せから通知を受信するのを待つ。ノードAならびにノードB、C、DおよびEの少なくとも1つが書込みを受信したとノードCが通知された場合、読取りは同書込みに遭遇する。プロセスがノードAを待ってタイム・アウトし、かつノードB、C、DおよびEのいずれも書込みをまだ受信していない場合、新たな特別なノードが選ばれる。当初の書込みは失われる。そうでなければ、書込みは常にこの読取りおよび以降の読取りに見える。
【0043】
一実施形態において、システム500によって次の通りに加重体系が実装されてもよい。3つのノードがあると仮定する。特別なノードは0.9の重みを有してもよい。その他の2つのノードは各々0.3の重みを有する。一実施形態において、クォーラムのための閾値は、重みの合計が≧1.2でなければならないことであり、これは特別なノードに加えて1つの他のノードである。それに応じて他の加重体系も使用されてもよいことが留意されるべきである。
【0044】
1つまたは複数の実施形態が以下の利点を提供する:ネットワークが分断されるかもしれない、またはノードが故障するかもしれない疎結合環境でさえ、トランザクションがコミットすることができる;リーダ・ノードだけでなく、いかなるノードにもトランザクションが提出されることができる;トランザクションの返答状況が不明であるときでさえ、アプリケーションはまだ単調読取りを有する。読取りクォーラムが特別なノードを含むので、1つの読取りが挿入された行を逃し、以降の読取りがそれらを見つけることは決してあり得ない。
【0045】
図6は、一実施形態による、疎結合ノードによるマルチ・マスタ・データベースにおける単調トランザクションのためのプロセス600のためのブロック図を例示する。ブロック610で、プロセス600は、プロセッサ(例えば、クラウド・コンピューティング環境50、
図1、システム300、
図3、システム400、
図4、システム500、
図5におけるプロセッサ)によって、書込みトランザクション・プロトコルを行う。ブロック620で、プロセス600は引き続き:クライアント・デバイスがノードのいずれか(例えば、クライアント・デバイス510、サーバ530、またはクラウド・コンピューティング環境50、システム300、システム400もしくはシステム500における任意の他のピア・デバイス)で書込みトランザクションを発行することと、書込みトランザクションを発行するノードでローカルに書込みトランザクション(の変更)を記録し、少なくとも1つの他のノードに書込みトランザクションを非同期で複製することと、クライアント・デバイスに応答を返す前にノードの少なくともクォーラムからの肯定応答の受信を待つことと、を含む書込みトランザクション・プロトコルを行う。一実施形態において、クォーラムは、特別なノードおよび少なくとも1つの他のノード(および任意選択で他のノード)を含むノードの任意の集合である。
【0046】
プロセス600は:ノードのいずれかで読取りトランザクションを発行することと、ノードの少なくともクォーラムによって複製されていると知られている行を返すことを試みることと、特別なノードが非応答であることに基づく、ノードの少なくともクォーラムによって複製されていると知られている行を返すことを試みることのタイム・アウトに対して:新たな特別なノードを選択することと、ノードの少なくともクォーラムによって複製されていると知られている行を返すことを試みることを繰り返すこととを含む読取りトランザクション・プロトコルを、プロセッサによって行うことを更に含んでもよい。
【0047】
一実施形態において、更にプロセス600では、マルチ・マスタ・データベースから肯定応答を受信するのを待つ間にクライアント・デバイスがタイム・アウトしたと判定した上で、クライアント・デバイスは、少なくとも1つの読取りトランザクションを発行することによって書込みトランザクションの状況を得る。次いで、クライアント・デバイスは、この読取りトランザクションに対する応答を待ち;そしてこの待機がタイムアウト閾値を超えた上で、クライアント・デバイスは、繰り返し読取りトランザクションを再試行する。一実施形態において、プロセス600では、特別なノードの選択は選挙を含む。
【0048】
一実施形態において、プロセス600は、特別なノードがノードのいずれかであり、そして選挙が、コンセンサス・プロトコルを使用してプロセッサによって行われることを含む。一実施形態において、プロセス600では、少なくとも1つの読取りトランザクションのタイムアウトを判定した上で、クライアント・デバイスは、少なくとも1つの読取りトランザクションを繰り返す。
【0049】
一実施形態において、プロセス600に関して、新たな特別なノードの選択は、トランザクション失敗または特別なノードの非反応によりプロセッサによって行われる。
【0050】
一実施形態において、プロセス600は、クォーラムが永続性要件に基づいて選択されるいくつかの他のノードを更に含むことを含んでもよい。プロセス600は、特別なノードを含むノードに重みを割り当てることを更に含んでもよい。プロセス600に関して、特別なノードに割り当てられる重みが残りのノードに割り当てられる重みを超え、そしてクォーラム投票が、クォーラム閾値以上である投票ノード重みの合計に基づいてもよい。
【0051】
1つまたは複数のコンピュータ可読ストレージ媒体の任意の組合せが利用されてもよい。コンピュータ可読ストレージ媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってもよい。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁、赤外線もしくは半導体システム、装置もしくはデバイス、または上記の任意の適切な組合せであってもよいが、これに限定されない。コンピュータ可読記憶媒体のより具体的な例(非網羅的な列挙)としては以下を含むことができる:1つまたは複数の電線を有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMもしくはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD−ROM)、光記憶デバイス、磁気記憶装置、または上記の任意の適切な組合せ。本文書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置またはデバイスによる使用のための、またはそれに関するプログラムを含むまたは記憶することができる任意の有形媒体であってもよい。
【0052】
コンピュータ可読信号媒体は、コンピュータ可読プログラム・コードが、例えば、ベースバンドにまたは搬送波の一部として具象化される、伝播されるデータ信号を含んでもよい。そのような伝播信号は、電磁、光学またはその任意の適切な組合せを含むがこれに限定されない、各種の形態のいずれかをとってもよい。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体でなく、かつ命令実行システム、装置またはデバイスによる使用のための、またはそれに関するプログラムを通信、伝播または転送することができる任意のコンピュータ可読媒体であってもよい。
【0053】
コンピュータ可読媒体に具象化されるプログラム・コードは、ワイヤレス、ワイヤライン、光ファイバ・ケーブル、RF等、または上記の任意の適切な組合せを含むがこれらに限定されない、任意の適当な媒体を使用して伝送されてもよい。
【0054】
本発明の態様のための動作を実施するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などといったオブジェクト指向プログラミング言語および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれてもよい。プログラム・コードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンド・アロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でかつ部分的にリモート・コンピュータ上で、または完全にリモート・コンピュータもしくはサーバ上で実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む、任意の種類のネットワークを通じてユーザのコンピュータに接続されてもよく、または外部コンピュータに接続がなされてもよい(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)。
【0055】
本発明の態様が、本発明の実施形態に係る方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート例もしくはブロック図またはその両方を参照しつつ下記される。フローチャート例もしくはブロック図またはその両方の各ブロック、およびフローチャート例もしくはブロック図またはその両方におけるブロックの組合せが、コンピュータ・プログラム命令によって実装されることができることが理解されるであろう。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックに特定される機能/行為を実装するための手段を生じさせるように、汎用コンピュータ、専用コンピュータまたは他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを生成するものであってよい。
【0056】
これらのコンピュータ・プログラム命令はまた、コンピュータ可読媒体に記憶される命令が、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックに特定される機能/行為を実装する命令を含む製品を生成するように、コンピュータ可読媒体に記憶され、コンピュータ、他のプログラマブル・データ処理装置または他のデバイスに特定の方式で機能するように指図することができるものであってもよい。
【0057】
コンピュータ・プログラム命令はまた、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックに特定される機能/行為を実装するためのプロセスを提供するように、コンピュータ実装プロセスを生成させるべく、コンピュータ、他のプログラマブル・データ処理装置または他のデバイスへロードされ、コンピュータ、他のプログラマブル装置または他のデバイス上で一連の動作ステップを行わせるものであってもよい。
【0058】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態に係るシステム、方法およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能性および動作を例示する。この点で、フローチャートまたはブロック図における各ブロックは、モジュール、セグメントまたは命令の一部分を表現してもよく、それは特定された論理機能を実装するための1つまたは複数の実行可能命令を備える。いくつかの代替実装では、ブロックに示される機能は、図に示される順序と異なって起こってもよい。例えば、連続して図示される2つのブロックが、実際には、実質的に並行して実行されてもよく、またはブロックは、時に逆順に実行されてもよく、関与する機能性次第である。ブロック図もしくはフローチャート例またはその両方の各ブロック、およびブロック図もしくはフローチャート例またはその両方におけるブロックの組合せが、特定された機能もしくは行為を行うまたは専用ハードウェアおよびコンピュータ命令の組合せを実施する専用ハードウェア・ベースのシステムによって実装されることができることも留意されるであろう。
【0059】
単数の要素への請求項における言及は、明言されない限り、「1つであり唯一」ではなく、むしろ「1つまたは複数」を意味すると意図される。現在当業者に公知であるまたは今後公知になる上記の例証的な実施形態の要素の全ての構造および機能的等価物が本請求項によって包含されると意図される。本出願の請求項要素は、要素が成句「ための手段」または「ためのステップ」を使用して明白に詳述されない限り、米国特許法第112条第6項の規定により解釈されるものでない。
【0060】
本明細書で使用される技術用語は単に特定の実施形態を記載する目的であり、本発明を限定しているとは意図されない。本明細書で使用される場合、単数形「或る1つ(a)」、「或る1つ(an)」および「その1つ(the)」は、文脈が別途明示しない限り、複数形も含むと意図される。用語「備える(comprises)」もしくは「備え(comprising)」またはその両方は、本明細書で使用されるとき、明言された特徴、完全体、ステップ、動作、要素もしくは部品またはその組合せの存在を特定するが、1つもしくは複数の他の特徴、完全体、ステップ、動作、要素、部品もしくはその群またはその組合せの存在または追加を排除しないことが更に理解されるであろう。
【0061】
添付の請求項における全てのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、行為および等価物は、詳細に特許請求される他の特許請求要素と組み合わせて機能を行うための任意の構造、材料または行為を含むと意図される。本発明の説明は例示および説明の目的で提示されたが、網羅的であるとも、または開示された形態の本発明に限定されるとも意図されない。本発明の範囲および思想から逸脱することなく、多くの変更および変形が当業者にとって明らかであろう。実施形態は、本発明の原理、実際的応用を最もよく説明するため、および企図された特定の使用に適した様々な変更を伴う様々な実施形態に関して当業者が本発明を理解することを可能にするために選ばれて説明された。