(57)【要約】  各データ構造に、複数のネットワーク化されたピアノードの中から所有者ノードが割り当てられる、ネットワーク上でデータ構造をレプリケートする方法および装置。好ましくは、その所有者は、そのデータ構造の中の情報を介して確かめられることが可能である。そのデータ構造の更新が非所有者によって所望される場合、そのデータ構造を変更する要求が、ネットワーク上に送出され、さらに所有者によって受信されると、所有者が、その変更を実行する。次に、所有者ノードが、その更新に関してその他のノードに通知することが可能である。単一の書き込み側、複数の読み取り側のパラダイムを介して実施されるこの方法は、可用性、分断耐性、および結果整合性を確実にし、この方法は、従来技術の集中管理およびロッキングプロトコルの高いオーバーヘッド費用および単一の障害ポイントの欠点を回避する。管理者は、ネットワーク内の任意のピアノードに接続して、データ構造に対する変更を管理すること、監視すること、および要求することができる。
2014524078.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ構造をレプリケートする方法のための実行可能プログラム命令を含むコンピュータ可読媒体であって、前記方法は、
ピアノードのネットワーク上で、複数のデータ構造が前記ネットワーク上のすべてのノードにレプリケートされるステップと、
１つのデータ構造の所有者として１つのピアノードを指定するステップと、
前記データ構造を変更することを指定された前記所有者ノードだけに許可するステップと、
あるピアノードが、前記データ構造を変更することを所望し、前記あるピアノードは前記所有者ノードではないと判定したときに、前記あるピアノードが、前記データ構造を変更する要求を開始し、前記要求は、複数の前記データ構造のうちの１つを含み、前記あるピアノードによって所有され、前記要求は、前記ネットワーク上のすべてのノードに送信されるステップと、
前記所有者ノードが、前記要求を受信し、実行して、前記データ構造を変更するステップと
を含む、コンピュータ可読媒体。
【請求項２】
請求項１に記載の媒体であって、前記方法は、
前記所有者ノードが、変更された前記データ構造に関する応答を開始し、前記応答は、複数の前記データ構造のうちの１つであり、前記所有者ノードによって所有され、前記応答は、前記ネットワーク上のすべてのノードに送信されるステップ
を含む、媒体。
【請求項３】
請求項２に記載の媒体であって、前記方法は、
前記応答が非所有者ノードによって受信されると、受信したノードが、前記受信したノードが前記応答を既に受信しているかどうかを判定し、受信している場合、前記応答をドロップし、受信していない場合、前記受信したノードが前記応答を処理するステップ
を含む、媒体。
【請求項４】
請求項２に記載の媒体であって、前記応答は、変更される前記データ構造の識別子を含む、媒体。
【請求項５】
請求項１に記載の媒体であって、前記要求は、前記要求を一意に識別するタグを含む、媒体。
【請求項６】
請求項１に記載の媒体であって、前記方法は、
あるピアノードが、前記データ構造を変更することを所望し、前記あるピアノードは前記所有者ノードであると判定したときに、前記あるピアノードが、前記データ構造を変更するステップ
を含む、媒体。
【請求項７】
請求項１に記載の媒体であって、パーティションが前記ネットワークを複数のネットワークパーティションに分割したときに、各ネットワークパーティション上の前記レプリケーションは動作可能なままである、媒体。
【請求項８】
請求項７に記載の媒体であって、前記パーティションが終了したときに、前記パーティションをまたいだ前記レプリケーションは再開する、媒体。
【請求項９】
請求項１に記載の媒体であって、前記ネットワークは、すべてのノードが直接に接続されているわけではないネットワークである、媒体。
【請求項１０】
請求項１に記載の媒体であって、前記データ構造は、前記所有者ノードの識別子を含む、媒体。
【請求項１１】
請求項１に記載の媒体であって、前記データ構造は、前記ノードのすべてにわたってグローバルに一意である識別子を含む、媒体。
【請求項１２】
請求項１に記載の媒体であって、前記データ構造は、データベースに格納される、媒体。
【請求項１３】
請求項１に記載の媒体であって、前記方法は、リレーショナルデータベースを実施する、媒体。
【請求項１４】
請求項１に記載の媒体であって、前記データ構造は、データベーステーブルの行である、媒体。
【請求項１５】
請求項１に記載の媒体であって、前記データ構造は、ネットワークインターフェース、ファイルシステム、またはファイルシステムスナップショットを記述する、媒体。
【請求項１６】
請求項２に記載の媒体であって、前記データ構造、前記要求、および前記応答は、伝播によってネットワーク上のすべてのノードにレプリケートされる、媒体。
【請求項１７】
コンピュータネットワークによって実施される方法であって、
複数のピアノード上でレプリケートされるデータ構造のレプリカの中の情報を獲得するステップであって、前記情報は、前記データ構造を更新する排他的権利を有する所有者ノードとしての前記複数のピアノードのうちの１つを示す、ステップと、
前記情報を介してあるピアノードが前記所有者ノードであるかを判定するステップと、
前記あるピアノードが前記所有者ノードではない場合に、あるアクションを実行するステップであって、該あるアクションは、
前記データ構造を更新する要求を、直接に接続されたすべてのピアノードに送信して、前記要求を伝播させることと、
前記所有者ノードが、前記要求を受信し、前記要求を受信した後に前記データ構造を更新し、更新された前記データ構造に関する更新を、直接に接続されたすべてのピアノードに送信して、前記更新を伝播させることと
を含む、ステップと
を含む方法。
【請求項１８】
コンピューティング環境における、ネットワーク内の複数のピアノードの各ピアノード上の装置であって、
複数の前記ピアノードにわたってデータ構造をレプリケートすることに参加するように動作可能なレプリケーションマネージャと、
前記ピアノード上で前記データ構造の前記レプリカを更新するように動作可能な更新マネージャと、
前記データ構造に含まれた情報に基づいて、あるピアノードが前記データ構造の所有者ノードであるかを判定し、前記あるピアノードが前記所有者ノードではない場合に、前記データ構造を変更する要求を開始し、変更された前記データ構造に関する前記要求に対する応答を処理するように動作可能な構成マネージャであって、前記所有者ノードは、前記データ構造を更新する排他的権利を有し、前記要求および前記応答もまた、複数の前記ピアノードにわたってレプリケートされるデータ構造である、構成マネージャと
を備えた装置。
【発明の詳細な説明】
【技術分野】
【０００１】
[001]本発明は、コンピュータデータ構造、ならびにピアノードのネットワーク上でデータ構造をレプリケートするための方法および装置に関する。
【背景技術】
【０００２】
[002]ブリュワーの定理としても知られるＣＡＰ定理によれば、分散コンピュータシステムは、以下の保証、すなわち、
・一貫性（すべてのノードが同時に同一のデータを見る）、
・可用性（ノード障害により、存続しているノードが動作しつづけることを妨げられることがない）、
・分断耐性（パーティションのいずれの側のノードも、パーティションにおけるメッセージロスにかかわらず、動作しつづける）
のうちの任意の２つを同時に満たすことが可能であるが、３つすべてを同時に満たすことは可能ではない。
【０００３】
[003]ピアツーピア・データベースレプリケーショントポロジにおいて、複数のピアが、同一のテーブルスキーマを有し、さらに各テーブル行が、各ピア上でレプリカを有する。データ操作が、任意のピア上で行われることが可能であり、さらに、その後、他のすべてのピアにレプリケートされる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、異なるピア上で同一の行のレプリカが同時に操作された場合、矛盾が生じる可能性がある。そのような矛盾を解決することは、困難であり、時間がかかり、さらに／または相当なオーバーヘッドを伴う可能性がある。
【０００５】
[004]従来のデータベースは、ロッキングプロトコルまたはマスタ−スレーブ関係を使用して、複数のシステム間（例えば、ノードのネットワーク上）でデータが常に同期されているようにする。しかし、分散ロッキングプロトコルは、かなりのオーバーヘッドを要し、例えば、ノードは、ロックを求める要求を送信し、ロックが利用可能になるまで待ち、変更を行い、ロックを解除し、さらに更新を配信しなければならない。マスタ／スレーブ関係は、ノード間で完全な接続を要求し、さらに相当なネットワークトラフィックを生成する。
【課題を解決するための手段】
【０００６】
[005]本発明の１つまたは複数の実施形態によれば、各データ構造に、複数のネットワーク化されたピアノードの中から所有者ノードが割り当てられる、ネットワーク上でデータ構造をレプリケートする方法が提供される。好ましくは、その所有者は、そのデータ構造の中の情報を介して確かめられることが可能である。そのデータ構造の更新が非所有者によって所望される場合、そのデータ構造を変更する要求が、ネットワーク上に送出され、さらに所有者によって受信されると、所有者が、その変更を実行する。次に、所有者ノードが、その更新に関してその他のノードに通知することが可能である。
【０００７】
[006]２回の往復の通信、すなわち、所有権を変更する１回の通信と、データを変更するもう１回の通信を要する従来技術の方法とは異なり、１回だけの通信が行われ、このため、この方法は、はるかに効率的なプロトコルである。さらに、データ構造がノードリソースを表す場合、データ構造を変更するノードは、リソースも変更する。さらに、好ましくは、データ構造を変更する要求（非所有者ノードからの）、および応答（所有者ノードからの）もやはりともに、変更されるデータ構造と同様にネットワーク上でレプリケートされ得るデータ構造である。
【０００８】
[007]本発明の一実施形態によれば、ピアノードのネットワーク上でデータ構造をレプリケートする方法が提供され、データ構造は、ネットワーク上のすべてのノードにレプリケートされ、方法は、
データ構造の所有者として単一のピアノードを指定するステップと、
そのデータ構造を変更することをその指定された所有者ノードだけに許すステップと、
１つのピアノードが、そのデータ構造を変更することを所望し、さらにその１つのピアノードが所有者ノードではないと判定した場合、その１つのピアノードは、そのデータ構造を変更する要求を開始し、この要求は、複数のデータ構造のうちの１つを備えるとともに、その１つのピアノードによって所有され、さらにこの要求が、ネットワーク上のすべてのノードに送信されるステップと、
所有者ノードが、この要求を受信し、さらに実行して、そのデータ構造を変更するステップとを含む。
【０００９】
[008]本発明は、中央サーバが、単一の障害ポイントをもたらし、本来的な（組み込まれた）データ冗長性が存在せず、管理サーバと管理される他のすべてのノードの間で接続が要求される、中央サーバを介して実現される分散管理システムとは区別されることが可能である。これに対して、本発明では、すべてのピアノードが、グループ全体のノードへのアクセスをもたらし、データ冗長性が存在し、すべてのノード間の直接の接続は要求されない。例えば、ユーザは、参加する任意のノードに接続して、グループ全体を管理することができる。ネットワーク内のすべてのデータが、参加するすべてのノードにレプリケートされる。参加するノードは、グループ全体に対する部分的な接続しか要さない。データ構造は、前述した機構を介して、結果的に、参加するすべてのノードにわたって一貫性を有する。厳格な単一の書き込み側、複数の読み取り側のプロトコルに従うことによって、更新衝突は、不可能であり、トランザクション上の一貫性が確実にされる。
【００１０】
[009]ＣＡＰ定理によって定義される一貫性は、すべてのノードが、常時、互いに一貫性を有することを要求する。この場合、各データ構造は、排他的な所有者ノードを有し、さらに各所有者ノードが、その所有者ノードが所有するデータ構造に関して一貫性を維持する。すべてのピアノードが、レプリケーションプロセスを介して、所有していないデータ構造に関して結果整合性を実現する。可用性（ＣＡＰ定理による）は、各ノードが、そのノードのレプリカデータ構造セットに関して一貫性を維持し、したがって、孤立して動作することが可能であるため、実現される。分断耐性（ＣＡＰ定理による）は、排他的データ構造所有権およびノードローカル一貫性により、各ノードが、孤立して、またはグループパーティションが存在する状態で動作することが許されるため、実現される。また、データ所有権は、パーティションがマージされた際にデータ衝突が生じないことも確実にする。
【００１１】
[010]一実施例において、リレーショナルデータベースが、各ピアノードにレプリケートされる。このデータベースは、１つの列（フィールド）がテーブル行の所有者の識別子を含むテーブルを含む。行の所有者だけが、その行を変更することを許される。その行のインスタンスが変更されると、例えば、作成される、変更される、または削除されると、その変更を行うように生成されたデータベースコマンドが、トランザクションログの中に格納される。アプリケーションが、すべての更新がトランザクションの点で完了したと考えると、それらの変更が、ネットワーク全体にわたってすべてのピアノードに送信される。
【００１２】
[011]一実施例において、データ構造は、伝播によって、ネットワーク上のすべてのノードにレプリケートされる。更新（変更）が、受信するノードに着信すると、そのノードは、そのノードがその更新を既に有しているかを確かめる。有している場合、その更新はドロップされる。有していない場合、その更新は、処理され、さらに、直接に接続されたすべてのノードに送信される。このことは、ノードＡとノードＢが接続されており、さらにノードＢとノードＣが接続されている場合、更新がノードＡからノードＣに達することを確実にする。この更新機構は、すべてのノードが互いに直接に接続されているわけではないネットワークにおいて動作可能である。
【００１３】
[012]一実施例において、この方法は、スキーマ更新を含め、ピアの間のローリング更新を可能にする。例えば、或るピアノードが、そのノードに着信した更新と比べて、より下位のスキーマ改訂の状態にある場合、そのノードは、そのノードがそのスキーマ改訂に合致するように更新される時点まで、それらの更新をキューに入れ、そのスキーマ改訂に合致するように更新された時点で、すべての保留中の、スキーマに合致する更新を適用する。或るピアノードが、着信した更新と比べて、より下位のスキーマ改訂の状態にある場合、そのピアは、その改訂を無視する。ピアノードは、更新をまだ有さないノードに、欠落している更新を送信するように要求されることが可能である。このようにして、データベース内に格納されたデータは、ソフトウェア更新を経ても、結果的に、すべてのピアノードにわたって一貫性を有する。
【００１４】
[013]本発明の一実施形態によれば、データ構造をレプリケートする方法のための実行可能プログラム命令を含むコンピュータ可読媒体が提供され、この方法は、
ピアノードのネットワーク上で、データ構造が、ネットワーク上のすべてのノードにレプリケートされ、
データ構造の所有者として単一のピアノードを指定すること、
そのデータ構造を変更することをその指定された所有者ノードだけに許すこと、
１つのピアノードが、そのデータ構造を変更することを所望し、さらにその１つのピアノードが所有者ノードではないと判定した場合、その１つのピアノードは、そのデータ構造を変更する要求を開始し、この要求は、複数のデータ構造のうちの１つを備えるとともに、その１つのピアノードによって所有され、さらにこの要求が、ネットワーク上のすべてのノードに送信されること、および
所有者ノードが、この要求を受信し、さらに実行して、そのデータ構造を変更することを備える。
【００１５】
[014]一実施形態において、この方法は、
所有者ノードが、その変更されるデータ構造に関する応答を開始し、この応答は、データ構造のうちの１つであるとともに、所有者ノードによって所有され、さらにこの応答が、ネットワーク上でレプリケートされることを含む。
【００１６】
[015]一実施形態において、この方法は、
この応答が非所有者ノードによって受信されると、受信したノードが、受信したノードがこの応答を既に受信しているかどうかを判定し、既に受信している場合、この応答をドロップし、受信していない場合、この応答を処理することを含む。
【００１７】
[016]一実施形態において、応答は、変更されるデータ構造の識別子を含む。
【００１８】
[017]一実施形態において、要求は、要求を一意に識別するタグを含む。
【００１９】
[018]一実施形態において、この方法は、
１つのピアノードが、そのデータ構造を変更することを所望し、さらにその１つのピアノードが所有者ノードであると判定した場合、その１つのピアノードが、そのデータ構造を変更することを含む。
【００２０】
[019]一実施形態において、パーティションが、ネットワークを複数のネットワークパーティションに分割した場合、各ネットワークパーティション上のレプリケーションは、動作可能であることに変わりない。
【００２１】
[020]一実施形態において、パーティションが終了すると、パーティションをまたいだレプリケーションが再開される。
【００２２】
[021]一実施形態において、ネットワークは、すべてのノードが直接に接続されているわけではないネットワークである。
【００２３】
[022]一実施形態において、データ構造は、所有者ノードの識別子を含む。
【００２４】
[023]一実施形態において、データ構造は、ノードのすべてにわたってグローバルに一意である識別子を含む。
【００２５】
[024]一実施形態において、データ構造は、データベースの中に格納される。
【００２６】
[025]一実施形態において、この方法は、リレーショナルデータベースを実施する。
【００２７】
[026]一実施形態において、データ構造は、データベーステーブルの中の行である。
【００２８】
[027]一実施形態において、データ構造は、ネットワークインターフェース、ファイルシステム、またはファイルシステムスナップショットを記述する。
【００２９】
[028]一実施形態において、データ構造、要求、および応答は、伝播によってネットワーク上のすべてのノードにレプリケートされる。
【００３０】
[029]本発明の別の実施形態において、コンピュータネットワークによって実施される方法が提供され、この方法は、
複数のピアノード上でレプリケートされるデータ構造のレプリカの中の情報を獲得し、この情報は、複数のピアノードのうちの１つを、そのデータ構造を更新する排他的権利を有する所有者ノードとして示すこと、
この情報を介してピアノードが所有者ノードであるかどうかを判定すること、
そのピアノードが所有者ノードではない場合、
そのデータ構造を更新する要求を、直接に接続されたすべてのピアノードに送信して、この要求を伝播させること、
所有者ノードが、この要求を受信し、この要求を受信した後にデータ構造を更新し、さらに更新されたデータ構造に関する更新を、直接に接続されたすべてのピアノードに送信して、更新を伝播させること
を備えるアクションを実行することを備える。
【００３１】
[030]本発明の別の実施形態によれば、コンピューティング環境において、ネットワーク内の複数のピアノードの各ピアノード上で、
それらのピアノードにわたってデータ構造をレプリケートすることに参加するように動作可能なレプリケーションマネージャと、
ピアノード上でデータ構造のレプリカを更新するように動作可能な更新マネージャと、
データ構造の中に含まれた情報に基づいて、ピアノードがデータ構造の所有者ノードであるかどうかを判定し、そのピアノードが所有者ノードではない場合、そのデータ構造を変更する要求を開始し、さらにその変更されるデータ構造に関する要求に対する応答を処理するように動作可能であり、所有者ノードは、そのデータ構造を更新する排他的権利を有し、さらにその要求およびその応答もまた、それらのピアノードにわたってレプリケートされるデータ構造である構成マネージャとを備える装置が提供される。
【００３２】
[031]本発明は、以下の図と併せて、様々な実施形態の詳細な説明を参照することによって、より完全に理解され得る。
【図面の簡単な説明】
【００３３】
【図１】本発明の一実施形態を実施するための複数のネットワーク化されたピアノードを示す概略ブロック図である。
【図２】本発明の一実施形態によるデータ構造のレプリカが関与する例示的なアクションを示すブロック図である。
【図３】本発明の一実施形態によるピアノードとして構成された装置を示すブロック図である。
【図４】本発明の一実施形態によるデータ構造を変更することを求めるピアノード上で行われることが可能なアクションを示す流れ図である。
【図５】本発明の一実施形態によるデータ構造を変更する要求を受信するピアノード上で行われることが可能なアクションを示す流れ図である。
【図６】本発明の様々な実施形態が実施されることが可能であるコンピューティングシステム環境を示すブロック図である。
【発明を実施するための形態】
【００３４】
[032]図１は、本発明の一実施形態を例示するためのネットワーク１００内の複数のピアノード１０１（Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆというラベルが付けられた）の概略図である。各ピアノードは、各ピアノードが、ネットワーク上で伝送されるメッセージを介してそのピアノードがいずれのノードと通信しているかを識別することができるようにグローバル一意識別子（ＧＵＩＤ）を有する。これらのピアノードは、これらのノードのいくつかだけが他のいくつかのノードに直接に接続される構成で配置される。ノードＡが、ノードＢおよびＤに直接に接続され、ノードＤが、ノードＡ、Ｃ、およびＥに直接に接続され、ノードＢが、ノードＡおよびＣに直接に接続され、ノードＣが、ノードＢおよびＤに直接に接続され、ノードＥが、ノードＤおよびＦに直接に接続され、さらにノードＦが、ノードＥに直接に接続される。この実施例において、ネットワークは、破線１０３で示されるとおりパーティションに区切られることが可能であり（なんらかの時点で）、ノードＡ〜Ｄが、１つのネットワークパーティション１０４（パーティションの左側）上に位置し、さらにノードＥ〜Ｆが、別のネットワークパーティション１０５（パーティションの右側）上に位置する。やはり図１に示されているのが、ネットワークの１つのピアノード（例えば、ノードＡ）を見ることが可能であり、このため、局所的見通し１０７を有する、または代替として、複数のノード全体を見て、全体的見通し１０８を有することが可能である、管理者などのユーザ１０６である。
【００３５】
[033]様々な実施形態において、ネットワークは、１つまたは複数のローカルエリアネットワーク、ワイドエリアネットワーク、直接接続、仮想接続、プライベートネットワーク、仮想プライベートネットワーク、インターネット、および以上のネットワークの何らかの組み合わせなどを備えることが可能である。
【００３６】
[034]ピアノードのそれぞれは、図６に関連して説明されるコンピュータのような１つまたは複数のコンピュータ上で、あるいはそのような１つまたは複数のコンピュータとして実施されることが可能である。ピアノード１０１が、データベースの中に格納されたデータに対する、直接または間接のアクセスを要求する１つまたは複数のプロセスを含むことが可能である。ピアノードは、データストア上に格納されたデータに対する、直接または間接のアクセスを要求する１つまたは複数のプロセスを含むことが可能である。ピアノードは、データに対するアクセスを編成するため、および表すためのファイルシステムなどを含むことが可能である。
【００３７】
[035]一実施例において、データベースが、構造化されたフォーマットでデータを格納することができるリポジトリを備える。データという用語は、コンピュータ記憶媒体上に格納され得るものであれば何であれ含むものと広く理解される。データのいくつかの例には、情報、プログラムコード、プログラム状態、プログラムデータ、その他のデータなどが含まれる。
【００３８】
[036]データベースの中に格納されたデータは、テーブル、レコード、オブジェクト、または他のデータ構造などに編成されることが可能である。データベースは、リレーショナルデータベース、オブジェクト指向データベース、階層型データベース、ネットワークデータベース、または他のタイプのデータベース、および以上のデータベースの何らかの組み合わせもしくは拡張などを備えることが可能である。
【００３９】
[037]データベースは、データベースの中のデータの編成、格納、管理、および取り出しを制御する１つまたは複数のプログラムを備えるデータベース管理システム（ＤＢＭＳ）を介してアクセスされることが可能である。ＤＢＭＳは、データベースの中のデータにアクセスする要求を受信することが可能であり、さらにこのアクセスを与えるのに必要とされる動作を実行することが可能である。アクセスは、データを読み取ること、データを書き込むこと、データを削除すること、データを更新すること、および以上のうちの１つまたは複数を含む組み合わせなどを含むことが可能である。データベースは、データを格納することができる任意の記憶媒体を備えるデータストア上に格納されることが可能である。データベースが格納されるデータストアは、ピアノードの外部にあっても、内部にあってもよく、あるいはピアノードの内部と外部の両方にある構成要素を含んでもよい。
【００４０】
[038]図１に戻ると、本発明の一実施例において、ノードＡに位置するユーザ１０６が、ノードＣに位置するファイルシステム１（ＦＳ−１）のスナップショット（スナップ）を求めるコマンドを開始する。ノードＡが、ノードＡがＦＳ−１の所有者ではないと判定し、さらに、このため、ノードＡが、直接に接続されたすべてのノード、すなわち、ネットワーク１００上のノードＤおよびＢに送信するＦＳ−１のスナップショットを求める要求を開始する。受信したノードＤおよびＢが、この要求を、直接に接続されたすべてのノードにさらに伝播させ、その結果、この要求の２つのコピーが、ノードＢとノードＤの両方からノードＣにおいて受信される。同様に、ノードＥおよびＦが（パーティションが存在しないものと想定して）、ノードＤを介してこの要求を受信する。
【００４１】
[039]ノードＣが第１の要求を受信すると、ノードＣは、ノードＣがＦＳ−１に関する所有者ノードであると判定する。したがって、ノードＣは、この要求を実行して、ＦＳ−１のスナップショットを生成する。次に、ノードＣは、直接に接続されたすべてのノード、すなわち、ノードＢおよびＤにノードＣが送信する、ファイルシステムスナップショットに関する応答を開始し、ノードＢおよびＤが、直接に接続されたすべてのノードにこの応答を送信することによって、この応答をさらに伝播させる。このようにして、要求の発信元、ノードＡが、この応答を受信する。この時点で、ノードＡは、スナップショットＦＳ−１をユーザ１０６に提供することができる。ノードＣが、第２の要求を受信すると、ノードＣは、第２の要求を単に無視する。同様に、ノードＡが、ノードＢとノードＤの両方から応答を受信すると、ノードＡは、第２の応答を単に無視する。
【００４２】
[040]代替の実施形態において、ノードＡ上でＦＳ−１のスナップショットを以前に要求したユーザ１０６が、ノードＢに移動し、さらにそこで応答およびスナップショットＦＳ−１を待つことが可能である。代替として、管理者１０６が、ノードＡではなく、ノードＢからこの要求を開始していることも可能である。したがって、管理者は、参加するノードのうちのいずれか１つに接続して、グループのノード全体を有効に管理することができる。
【００４３】
[041]代替の実施例において、ノードのうちの１つが、ファイルシステムスナップショットではなく、ファイルシステム完全性検査を求める要求を開始することが可能である。次に、所有者ノードが、要求された完全性検査に関して応答、または周期的応答を送信する。
【００４４】
[042]説明される実施形態は、複数のノードにわたってリレーショナルデータベースを同期させるのに使用されることが可能である。リレーショナルデータベースにおいて、テーブルの中の行は、データ構造である。任意の所与の行の更新を単一の所有者ノードに制限することによって、分散型ロックの必要性が解消されている。データ構造を所有するノードだけが、そのデータ構造を変更することを許され、他のすべてのピアノードは、それらのピアノードのために所有者ノードがそのデータ構造を変更することを要求しなければならない。このため、データ構造の所有権は、排他的である。
【００４５】
[043]データ構造を変更する能力を１つの所有者に制限すること、および非所有者が、変更が所有者によって行われることを求めるよう要求することによって、レプリケーション中の衝突が不可能であり、さらにトランザクション上の一貫性が維持されることが可能である。好ましくは、各ピアノードが、データ構造の各変更のレコードを保持し、さらに各ピアノードが、トランザクション上の変更を、それらの変更が受信された順にではなく、それらの変更が作成された順に適用する。ピアノードが、トランザクション上の変更のストリームから更新が欠落しているために、変更を適用することができない場合、そのノードは、その欠落しているトランザクションをピアノードに求めることを担う。一実施形態において、トランザクションは、以下、すなわち、
１．発信元ノード（変更を要求する）によっても所有される単調に増加するトランザクション番号、
２．変更が適用されたスキーマ改訂、および
３．データ構造に行われたすべての変更のレコード
から成ることが可能である。
さらに、ネットワークが、例えば、或るノードがオフラインになったこと、またはノード間のリンクがダウンしたことに起因して、パーティションに区分された場合、パーティションの両側の複数のネットワークパーティションは、そのパーティションにおいてデータロスが生じるものの、動作しつづける。各ノードは、そのノード側のパーティションにあるノードから要求と応答、およびデータ構造更新を受信しつづける。その後、そのパーティションが取り除かれ（例えば、そのノードが再びオンラインになり、またはリンクが動作を再開して）、さらに以前のネットワークパーティションが接合されると、その時点で両方の側が新たな応答、要求、および更新を受信し、さらに各ノードは、更新を常に把握している（例えば、発生の時刻により）ため、各ノードは、そのノードにいずれの更新が欠落しているかを特定し、それらの欠落している更新を送信するようその他のノードに求め、さらに、その後、すべての更新を適切な順序で適用して、（以前の）パーティションの両側のノードが再び同期するようにすることができる。
【００４６】
[044]好ましくは、生成される要求および応答はそのものが、例えば、結果的にすべてのノードによって受信されるように、直接に接続されたすべてのノードに伝播されることによってピアノード上でレプリケートされるデータ構造である。このため、変更されたデータ構造（所有者ノードによって生成された）が、ネットワーク上でレプリケートされるだけでなく、要求および応答もまた、同様にレプリケートされ得るデータ構造である。このことは、既存のレプリケーションプロセスを利用することによって要求および応答を実施することを簡単にする。さらに、要求の発信元を、要求データ構造の所有者として指定すること、および応答の発信元を、応答データ構造の所有者として指定することによって、他のいずれの（非所有者）ノードも、その要求を変更することも、その応答を変更することもできない。
【００４７】
[045]図２は、データ構造を変更する方法の一実施例を示す。この場合、Ｐ１、Ｐ２、およびＰ３というラベルが付けられた３つのピアノードがそれぞれ、或るデータ構造のレプリカを保持する。この実施例において、そのデータ構造は、３つのフィールド、インデックスキーｋを有する第１のフィールド、値ｘを有する第２のフィールド、およびそのデータ構造の所有者の識別子を有する第３のフィールドを有する。この場合、ノード３（Ｐ３）が、所有者ノードと指定され、したがって、そのデータ構造を変更することができる唯一のノードである。図２に示されるとおり、別のノードから要求を受信すると、または自ら率先して、ノードＰ３が、ｘをｙに変えるように第２のデータフィールドを変更する。その後、所有者ノードＰ３が、この変更をその他のノードＰ１およびＰ２にレプリケートする。このレプリケーションの後、３つのすべてのノードは、各フィールド内に同一のデータを含む。
【００４８】
[046]図３は、ピアノードを実施するための装置１２０の一実施形態を示す。この装置は、様々なプログラムモジュール１２２と、データストア１２４と、通信機構１２６とを含む。これらのプログラムモジュールには、レプリケーションマネージャ１３０、更新マネージャ１３２、および構成マネージャ１３４が含まれることが可能である。通信機構１２６は、装置が、ネットワーク上のその他のノードと通信することを可能にする。この通信機構は、ネットワークインターフェースもしくはネットワークアダプタ、モデム、あるいはその他のノードと通信を確立するための他の任意の機構であることが可能である。
【００４９】
[047]データストア１２４は、データを格納することができる任意の記憶媒体である。このストアは、ファイルシステムまたはデータベースを備える。このストアは、装置１２０の外部にあっても、内部にあってもよく、あるいは装置１２０の内部と外部の両方にある構成要素を含んでもよい。
【００５０】
[048]レプリケーションマネージャ１３０は、ピアノードにわたってデータ構造をレプリケートすることに参加するように動作可能である。このことは、データ構造、データ構造に対する変更、データ構造を変更することに関与するアクションを送信することによって、または当業者によって理解される様々な他の様態で行われ得る。例えば、更新マネージャ１３２がデータ構造を更新した後、レプリカに対する変更（更新）が、レプリケーションマネージャ１３０を介してその他のピアノードにレプリケートされてもよい。
【００５１】
[049]構成マネージャ１３４は、前述したとおり、データ構造を変更する要求および応答を実施する。
【００５２】
[050]図４〜図５は、本発明の様々な実施形態によって行われることが可能なアクションを全体的に表す流れ図である。これらの流れ図は、限定するものではなく、例示されるアクションは、さらなるアクションが存在して、あるいは１つまたは複数のアクションが削除されて、別の順序で実行されてもよいものと理解されたい。
【００５３】
[051]図４は、データ構造を変更することを所望するピアノード上で行われることが可能なアクションを全体的に表す流れ図１４０である。第１のブロック１４１で、アクションが始まる。次のブロック１４２で、データ構造の所有権情報が、例えば、データ構造自体の内部から獲得される。次のブロック１４３で、そのピアノードが、例えば、図３の構成マネージャ１３４を利用して、そのピアノードがそのデータ構造の所有者であるかどうかを判定する。そのピアノードが、そのピアノードがそのデータ構造の所有者であると判定することが可能である（ブロック１４４）。そのピアノードがそのデータ構造の所有者ではない場合、次のブロック１４５で、そのピアノードは、例えば、図３の通信機構１２６を介して、そのピアノードの隣接する（直接に接続された）ピアノードのすべてに送信される要求を開始する。次のブロック１４６で、この要求に対する応答が、所有者ノードから受信される。次に、そのピアノードが、この応答を処理し、さらに、これに相応してデータ構造を変更し（次のブロック１４７）、このことが、図３の更新マネージャ１３２によって実行されることが可能である。次のブロック１４８で、他のアクションが、存在する場合、実行される。
【００５４】
[052]代替として、所望される変更の起点であるノードが、そのノードがそのデータ構造の所有者ノードであると判定した場合（ブロック１４４で）、次に、そのノードは、そのデータ構造を変更することに即時に取りかかる（ブロック１４７）。この場合、要求を送信する必要はない。この場合、所有者ノードは、すべてのピアノード上でその変更されたデータ構造をレプリケートするために、直接に接続されたすべてのノードに送信され、ネットワーク上で伝播させられる、変更されたデータ構造に関するメッセージをその後に生成する（ブロック１４８）。
【００５５】
[053]図５は、データ構造を変更する要求を受信するピアノード上で行われることが可能なアクションを全体的に示す流れ図１５０である。第１のブロック１５１で、アクションが始まる。次のブロック１５２で、そのピアノードが、データ構造を変更する要求を受信する。次のブロック１５４で、そのピアが、例えば、図３の構成マネージャ１３４を利用して、そのピアがそのデータ構造の所有者ノードであるかどうかを判定する。そのノードが、そのノードがそのデータ構造の所有者ノードであると判定した場合、次のブロック１５５で、そのノードは、例えば、図３の更新マネージャ１３２を利用して、そのデータ構造を変更する。次に、その所有者ノードは、変更されたデータ構造に関する応答を他のすべてのノードに、直接に接続されたすべてのノードにその応答を直接送信し、その応答が、その後、その他のノードに伝播させられることによって、送信する（ブロック１５６）。ブロック１５７で、他のアクションが、存在する場合、実行される。
【００５６】
[054]代替として、ブロック１５４で、そのピアが、そのピアがそのデータ構造の所有者ピアではないと判定した場合、そのピアは、その要求に応答することを控える（ブロック１５８）。代わりに、そのピアは、例えば、直接に接続されたすべてのノードに、その他のノードに要求を伝播させるように要求を転送して、他の任意のアクションに即時に取りかかる（ブロック１５７）。
【００５７】
[055]図６は、本発明の主題の様々な態様が実施されることが可能である各ノードにおけるコンピューティングシステム（コンピュータ）の例を示す。この例は、コンピューティングシステムの一例に過ぎず、限定することは意図していない。一般に、本明細書で説明される主題は、サーバコンピュータ、マルチプロセッサシステム、ネットワークＰＣ、メインフレームコンピューティングシステム、および前述のシステムもしくはデバイスのいずれかを含むシステムなどを含む、汎用コンピューティングシステムまたは専用コンピューティングシステムとして実施されることが可能である。
【００５８】
[056]本発明の主題は、コンピュータによって実行されている、プログラムモジュールなどのコンピュータ実行可能命令として実施されることが可能である。そのようなプログラムモジュールには、特定のタスクを実行する、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などが含まれることが可能である。これらのタスクは、通信ネットワークを介して結び付けられた複数の遠隔処理デバイスによって実行されることが可能である。
【００５９】
[057]図６の実施例において、コンピューティング装置２１０は、プロセッサ２２０と、メモリ２２２と、データストア２２４と、ディスクドライブ２２５と、キーボード／マウス２３０と、ディスプレイ２２６と、ネットワークインターフェース２３２とを含む。構成要素は、システムバス２３４を介して一緒に結合される。本発明の（複数の）ソフトウェア製品は、データストア２２４にロードされ、さらに動作中、（例えば、ＲＡＭ）メモリ２２２の中に転送されて、プロセッサ２２０によって実行されることが可能である。
【００６０】
[058]コンピュータ２１０は、ネットワーク化された環境において動作する。例えば、（複数の）ネットワークインターフェース２３２が、システムバス２３４をローカルエリアネットワーク（ＬＡＮ）に結合することが可能であり、このＬＡＮが、内部ストレージまたは外部ストレージを有することが可能な複数の遠隔コンピュータに対するアクセスをもたらす。ワイドエリアネットワーク（ＷＡＮ）環境において使用される場合、コンピュータ２１０は、モデムを介して、インターネットなどのＷＡＮ上で、遠隔コンピュータおよび遠隔ストレージと通信することが可能である。
【００６１】
[059]本明細書で使用されるコンピュータ可読媒体とは、コンピュータによってアクセスされ得る任意の媒体であることが可能であり、揮発性媒体と不揮発性媒体、リムーバブルな媒体とリムーバブルでない媒体の両方を含む。
【００６２】
[060]本明細書で使用されるコンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を格納するための揮発性媒体と不揮発性媒体、リムーバブルな媒体とリムーバブルでない媒体の両方が含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）もしくは他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または所望される情報を格納するのに使用され得るとともに、コンピュータによってアクセスされ得る他の任意の媒体が含まれる。
【００６３】
[061]ネットワーク上のピアノードを結び付ける通信媒体には、有線媒体、ならびに音響媒体、ＲＦ媒体、赤外線媒体、またはその他のワイヤレス媒体などのワイヤレス媒体が含まれることが可能である。通信媒体は、情報が符号化された搬送波などの変調されたデータ信号、または他の任意のトランスポート機構を転送することが可能である。変調されたデータ信号という用語は、信号内に情報を符号化するように特性の１つまたは複数が変更されている信号を意味する。さらなる実施形態において、ノードは、例えば、ＵＳＢキーによるデータ構造更新の転送を許して、一時的に接続されることが可能である。
【００６４】
[062]本明細書で使用される「含む」という用語、およびこの用語の変種は、「〜を含むが、〜には限定されない」を意味する制約のない用語として読まれるべきものとする。「または」という用語は、文脈によってそうでないことが明確に規定されない限り、「および／または」と読まれるべきものとする。
【００６５】
[063]前述の説明は、本発明の範囲を例示することを意図しており、限定することは意図していないものと理解されたい。
【図１】
2014524078.tif 000003
【図２】
2014524078.tif 000004
【図３】
2014524078.tif 000005
【図４】
2014524078.tif 000006
【図５】
2014524078.tif 000007
【図６】
2014524078.tif 000008
【手続補正書】
【提出日】平成26年2月21日(2014.2.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のデータ構造をレプリケートする方法のための実行可能プログラム命令を含むコンピュータ可読記憶媒体であって、前記方法は、
ピアノードのネットワーク上で、複数のデータ構造が前記ネットワーク上のすべてのノードに、各ノード（Ｐ１，Ｐ２，Ｐ３）のレプリケーションマネージャ（１３０）によってレプリケートされるステップと、
複数の前記データ構造の各々に対して、該データ構造の所有者ノードとして複数の前記ピアノードのうちの１つのピアノードを排他的に指定するステップであって、前記データ構造は少なくとも１つのデータフィールドを有し、前記データ構造を変更することは指定された前記所有者ノードだけが許可されている、ステップと、
複数の前記ピアノードのうちの任意の１つのピアノードが、前記データ構造を変更することを所望した場合に、
前記データ構造を変更することを所望した前記１つのピアノードが、該１つのピアノードは前記所有者ノードであるかどうかを判定するステップと、
前記１つのピアノードが、該１つのピアノードは前記所有者ノードであると判定したときに、前記１つのピアノードが、前記データ構造の少なくとも１つの前記データフィールドを変更し、変更された前記データ構造に関するメッセージであって伝播によって全ての他のノードにレプリケートされるメッセージを生成するステップと、
前記１つのピアノードが、該１つのピアノードは前記所有者ノードではないと判定したときに、前記１つのピアノードが、前記データ構造を変更する要求を開始するステップであって、前記要求は、複数の前記データ構造のうちの１つを含み、前記１つのピアノードによって所有され、前記要求のデータ構造は、前記レプリケーションマネージャよる伝播によって、前記ネットワーク上のすべての他のノードにレプリケートされるステップと、
前記所有者ノードが前記要求を受信したときに、該所有者ノードが、前記データ構造を変更することによって前記要求を実行し、変更された前記データ構造に関する応答を開始するステップであって、前記応答は、複数の前記データ構造のうちの１つであり、伝播によって、前記ネットワーク上のすべての他のノードにレプリケートされる、ステップと
を含む、コンピュータ可読記憶媒体。
【請求項２】
請求項１に記載のコンピュータ可読記憶媒体であって、前記方法は、
前記応答が非所有者ノードによって受信されると、受信したノードが、前記受信したノードが前記応答を既に受信しているかどうかを判定し、受信している場合、前記応答をドロップし、受信していない場合、前記受信したノードが前記応答を処理するステップ
を含む、コンピュータ可読記憶媒体。
【請求項３】
請求項１に記載のコンピュータ可読記憶媒体であって、前記応答は、変更される前記データ構造の識別子を含む、コンピュータ可読記憶媒体。
【請求項４】
請求項１に記載のコンピュータ可読記憶媒体であって、前記要求は、前記要求を一意に識別するタグを含む、コンピュータ可読記憶媒体。
【請求項５】
請求項１に記載のコンピュータ可読記憶媒体であって、パーティションが前記ネットワークを複数のネットワークパーティションに分割したときに、各ネットワークパーティション上の前記レプリケーションは動作可能なままである、コンピュータ可読記憶媒体。
【請求項６】
請求項５に記載のコンピュータ可読記憶媒体であって、前記パーティションが終了したときに、前記パーティションをまたいだ前記レプリケーションは再開する、コンピュータ可読記憶媒体。
【請求項７】
請求項１に記載のコンピュータ可読記憶媒体であって、前記ネットワークは、すべてのノードが直接に接続されているわけではないネットワークである、コンピュータ可読記憶媒体。
【請求項８】
請求項１に記載のコンピュータ可読記憶媒体であって、前記データ構造は、前記所有者ノードの識別子を含む、コンピュータ可読記憶媒体。
【請求項９】
請求項１に記載のコンピュータ可読記憶媒体であって、前記データ構造は、前記ノードのすべてにわたってグローバルに一意である識別子を含む、コンピュータ可読記憶媒体。
【請求項１０】
請求項１に記載のコンピュータ可読記憶媒体であって、前記データ構造は、データベースに格納される、コンピュータ可読記憶媒体。
【請求項１１】
請求項１に記載のコンピュータ可読記憶媒体であって、前記方法は、リレーショナルデータベースを実施する、コンピュータ可読記憶媒体。
【請求項１２】
請求項１に記載のコンピュータ可読記憶媒体であって、前記データ構造は、データベーステーブルの行である、コンピュータ可読記憶媒体。
【請求項１３】
請求項１に記載のコンピュータ可読記憶媒体であって、前記データ構造は、ネットワークインターフェース、ファイルシステム、またはファイルシステムスナップショットを記述する、コンピュータ可読記憶媒体。
【請求項１４】
コンピューティング環境における、ネットワーク内の複数のピアノードの各ピアノード上の装置であって、
複数の前記ピアノードにわたってデータ構造をレプリケートすることに参加するように動作可能なレプリケーションマネージャ（１３０）であって、前記データ構造は少なくとも１つのデータフィールドを有する、レプリケーションマネージャ（１３０）と、
前記ピアノード上で前記データ構造の前記レプリカを更新するように動作可能な更新マネージャ（１３２）と、
あるピアノードが前記データ構造の所有者ノードであるかを判定し、前記あるピアノードが前記所有者ノードではないと判定された場合に、前記データ構造を変更する要求を開始し、前記あるピアノードが前記所有者ノードであると判定された場合に、前記データ構造の少なくとも１つの前記データフィールドを変更し、変更された前記データ構造に関する前記要求に対する応答を開始するように動作可能な構成マネージャ（１３４）であって、前記所有者ノードは、前記データ構造を更新する排他的権利を有し、前記要求および前記応答もまた、複数の前記ピアノードにわたってレプリケートされるデータ構造である、構成マネージャ（１３４）と
を備えた装置。
【請求項１５】
請求項１４に記載の装置であって、前記構成マネージャは、
前記応答が非所有者ノードによって受信されると、受信したノードが、前記受信したノードが前記応答を既に受信しているかどうかを判定し、受信している場合、前記応答をドロップし、受信していない場合、前記受信したノードが前記応答を処理する
ように動作可能である、装置。
【請求項１６】
請求項１４に記載の装置であって、前記ネットワークは、複数の前記ピアノードの一部のみが他のノードに直接接続されているネットワークである、装置。
【請求項１７】
請求項１４に記載の装置であって、前記データ構造は、前記所有者ノードの識別子を含む、装置。
【請求項１８】
請求項１４に記載の装置であって、前記データ構造は、前記ノードのすべてにわたってグローバルに一意である識別子を含む、装置。
【請求項１９】
請求項１４に記載の装置であって、前記データ構造は、データベースに格納される、装置。
【請求項２０】
請求項１４に記載の装置であって、前記レプリケーションマネージャ、前記更新マネージャ及び前記構成マネージャは、リレーショナルデータベースを実施するように動作可能である、装置。
【請求項２１】
請求項１４に記載の装置であって、前記データ構造は、データベーステーブルの行である、装置。
【請求項２２】
請求項１４に記載の装置であって、前記データ構造は、ネットワークインターフェース、ファイルシステム、またはファイルシステムスナップショットを記述する、装置。
【請求項２３】
請求項１４に記載の装置であって、前記構成マネージャは、前記データ構造に含まれた情報に基づいて、あるピアノードが前記データ構造の所有者ノードであるかを判定するように動作可能である、装置。
【国際調査報告】
2014524078.tif 000009
2014524078.tif 000010
2014524078.tif 000011