(57)【要約】分散データストレージシステムにおけるデータの同期および対立解消のための方法、システム、およびコンピュータプログラム製品がここに記載される。第１データアクセスノードがデータ要素を修正するための第１要求を受信し、第１ロックイベントを他の各ノードに送信する。第２データアクセスノードが、第１要求を受信するのと実質的に同時にそのデータ要素を修正するための第２要求を受信し、第２ロックイベントを他の各ノードに送信する。システムは、第１ノードがそのデータ要素を修正する優先権を有すると判定する。第１ノードがそのデータ要素を修正するとともに、第１アンロックイベントを他の各ノードに送信する。第２ノードは第２要求が前の修正と対立しないかどうかを判定し、第２要求が前の修正と対立しない場合、第２要求に基づいてデータ要素を修正する。
2017526084.tif 000002
【特許請求の範囲】
【請求項１】
互いに接続された複数のデータアクセスノードと、前記複数のデータアクセスノードの少なくとも一部と結合された一または複数のデータセンタとを備える分散データストレージシステムにおけるデータの同期および対立解消するためのコンピュータ化された方法であって、
一データセンタに格納されたデータ要素を修正するための第１要求を第１データアクセスノードにおいて受信し、
前記データ要素に関連する第１ロックイベントを前記第１データアクセスノードによって他の各データアクセスノードに送信し、
前記第１要求を受信したのと実質的に同時に、前記データ要素を修正するための第２要求を第２データアクセスノードにおいて受信し、
前記データ要素に関連する第２ロックイベントを前記第２データアクセスノードによって他の各データアクセスノードに送信し、
前記データ要素を修正する優先権を前記第１データアクセスノードが有すると判定し、
修正するための前記第１要求に基づき前記データ要素を前記第１データアクセスノードによって修正し、
前記データ要素に関連する第１アンロックイベントであって、前記第１データアクセスノードによって前記データ要素に対してなされた修正の表示を含む前記第１アンロックイベントを前記第１データアクセスノードによって他の各データアクセスノードに送信し、
前記データ要素を修正するための前記第２要求が、前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立するかどうかを、前記第２データアクセスノードによって判定し、
前記データ要素を修正するための前記第２要求が前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立しなければ、修正するための前記第２要求に基づき前記データ要素を前記第２データアクセスノードによって修正すること
を備える、方法。
【請求項２】
前記第１データアクセスノードと前記第２データアクセスノードとの間の接続の形成特性に基づき、前記第１データアクセスノードが前記第２データアクセスノードより上の前記データ要素に対する修正の優先権を有すると判定される、請求項１に記載の方法。
【請求項３】
前記形成特性は、前記第２アクセスノードが前記第１データアクセスノードと前記第２データアクセスノードとの間の前記接続の確立を開始したという表示を含む、請求項２に記載の方法。
【請求項４】
前記第１ロックイベントを受信すると、前記第２データアクセスノードによって、前記第１ロックイベントの肯定応答を前記第１データアクセスノードに送信することをさらに備える、請求項１に記載の方法。
【請求項５】
前記第２ロックイベントを受信すると、前記第１データアクセスノードによって、前記第２ロックイベントをキューに入れることをさらに備える、請求項１に記載の方法。
【請求項６】
前記データ要素に関連する第２アンロックイベントであって、前記第２データアクセスノードによって前記データ要素に対してなされた修正の表示を含む前記第２アンロックイベントを前記第２データアクセスノードによって他の各データアクセスノードに送信することをさらに備える、請求項１に記載の方法。
【請求項７】
修正するための前記第２要求が、前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立する場合、前記データ要素に関連する第２アンロックイベントであって、前記第２データアクセスノードによって前記データ要素に対してなされた修正はないという表示を含む前記第２アンロックイベントを前記第２データアクセスノードによって他の各データアクセスノードに送信することを更に備える、請求項１に記載の方法。
【請求項８】
前記第１データアクセスノードと前記第２データアクセスノードとの間の接続の確立時に、前記第１データアクセスノードおよび前記第２データアクセスノードは、既知のデータアクセスノードのリストを互いに送信する、請求項１に記載の方法。
【請求項９】
前記既知のデータアクセスノードの各リストは、当該リストを送信したノードが接続されているデータアクセスノードの識別情報を含む、請求項８に記載の方法。
【請求項１０】
前記リストを受信するノードは、当該受信するノードがまだ接続されていない前記リストに掲載された各データアクセスノードとの接続を確立する、請求項９に記載の方法。
【請求項１１】
第３データアクセスノードへの接続が中断されたことを前記第１データアクセスノードによって判定し、
この接続中断の表示を前記第１データアクセスノードによって他のデータアクセスノードへ送信することを更に備える、請求項１に記載の方法。
【請求項１２】
前記第２データアクセスノードが前記第３データアクセスノードに接続されたままである場合、前記第２データアクセスノードが前記第１データアクセスノードのプロキシであるというメッセージを前記第２データアクセスノードによって他のデータアクセスノードに送信することを更に備える、請求項１１に記載の方法。
【請求項１３】
前記分散データストレージシステムは、異なる複数のデータセンタに結合されたデータアクセスノード間の通信を中継する複数の同期化ノードをさらに備える、請求項１に記載の方法。
【請求項１４】
互いに接続された複数のデータアクセスノードと、
前記複数のデータアクセスノードの少なくとも一部と結合された一または複数のデータセンタと
を備える分散データストレージシステムであって、
一データセンタに格納されたデータ要素を修正するための第１要求を第１データアクセスノードにおいて受信し、
前記データ要素に関連する第１ロックイベントを前記第１データアクセスノードによって他の各データアクセスノードに送信し、
前記第１要求を受信したのと実質的に同時に、前記データ要素を修正するための第２要求を第２データアクセスノードにおいて受信し、
前記データ要素に関連する第２ロックイベントを前記第２データアクセスノードによって他の各データアクセスノードに送信し、
前記データ要素を修正する優先権を前記第１データアクセスノードが有すると判定し、
修正するための前記第１要求に基づき前記データ要素を前記第１データアクセスノードによって修正し、
前記データ要素に関連する第１アンロックイベントであって、前記第１データアクセスノードによって前記データ要素に対してなされた修正の表示を含む前記第１アンロックイベントを前記第１データアクセスノードによって他の各データアクセスノードに送信し、
前記データ要素を修正するための前記第２要求が、前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立するかどうかを、前記第２データアクセスノードによって判定し、
前記データ要素を修正するための前記第２要求が前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立しなければ、修正するための前記第２要求に基づき前記データ要素を前記第２データアクセスノードによって修正する
ように構成されている、分散データストレージシステム。
【請求項１５】
前記第１データアクセスノードと前記第２データアクセスノードとの間の接続の形成特性に基づき、前記第１データアクセスノードが前記第２データアクセスノードより上の前記データ要素に対する修正の優先権を有すると判定される、請求項１４に記載のシステム。
【請求項１６】
前記形成特性は、前記第２アクセスノードが前記第１データアクセスノードと前記第２データアクセスノードとの間の前記接続の確立を開始したという表示を含む、請求項１５に記載のシステム。
【請求項１７】
前記第２データアクセスノードは前記第１ロックイベントを受信すると前記第１ロックイベントの肯定応答を前記第１データアクセスノードに送信する、請求項１４に記載のシステム。
【請求項１８】
前記第１データアクセスノードは前記第２ロックイベントを受信すると前記第２ロックイベントをキューに入れる、請求項１４に記載のシステム。
【請求項１９】
前記第２データアクセスノードは、前記データ要素に関連する第２アンロックイベントであって、前記第２データアクセスノードによって前記データ要素に対してなされた修正の表示を含む前記第２アンロックイベントを他の各データアクセスノードに送信する、請求項１４に記載のシステム。
【請求項２０】
修正するための前記第２要求が、前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立する場合、前記第２データアクセスノードは、前記データ要素に関連する第２アンロックイベントであって、前記第２データアクセスノードによって前記データ要素に対してなされた修正はないという表示を含む前記第２アンロックイベントを他の各データアクセスノードに送信する、請求項１４に記載のシステム。
【請求項２１】
前記第１データアクセスノードと前記第２データアクセスノードとの間の接続の確立時に、前記第１データアクセスノードおよび前記第２データアクセスノードは、既知のデータアクセスノードのリストを互いに送信する、請求項１４に記載のシステム。
【請求項２２】
前記既知のデータアクセスノードの各リストは、当該リストを送信したノードが接続されているデータアクセスノードの識別情報を含む、請求項２１に記載のシステム。
【請求項２３】
前記リストを受信するノードは、当該受信するノードがまだ接続されていない前記リストに掲載された各データアクセスノードとの接続を確立する、請求項２２に記載のシステム。
【請求項２４】
前記第１データアクセスノードが、第３データアクセスノードへの接続が中断されたことを判定し、この接続中断の表示を前記第１データアクセスノードが他のデータアクセスノードへ送信する、請求項１４に記載のシステム。
【請求項２５】
前記第２データアクセスノードが前記第３データアクセスノードに接続されたままである場合、前記第２データアクセスノードは、前記第２データアクセスノードが前記第１データアクセスノードのプロキシであるというメッセージを他のデータアクセスノードに送信する、請求項２４に記載のシステム。
【請求項２６】
前記分散データストレージシステムは、異なる複数のデータセンタに結合されたデータアクセスノード間の通信を中継する複数の同期化ノードをさらに備える、請求項１４に記載のシステム。
【請求項２７】
データの同期および対立解消するために非一時的コンピュータ可読記憶装置に有形に具体化されたコンピュータプログラム製品であって、互いに接続された複数のデータアクセスノードと、前記複数のデータアクセスノードの少なくとも一部と結合された一または複数のデータセンタとを備えるシステムに、
一データセンタに格納されたデータ要素を修正するための第１要求を第１データアクセスノードにおいて受信し、
前記データ要素に関連する第１ロックイベントを前記第１データアクセスノードによって他の各データアクセスノードに送信し、
前記第１要求を受信したのと実質的に同時に、前記データ要素を修正するための第２要求を第２データアクセスノードにおいて受信し、
前記データ要素に関連する第２ロックイベントを前記第２データアクセスノードによって他の各データアクセスノードに送信し、
前記データ要素を修正する優先権を前記第１データアクセスノードが有すると判定し、
修正するための前記第１要求に基づき前記データ要素を前記第１データアクセスノードによって修正し、
前記データ要素に関連する第１アンロックイベントであって、前記第１データアクセスノードによって前記データ要素に対してなされた修正の表示を含む前記第１アンロックイベントを前記第１データアクセスノードによって他の各データアクセスノードに送信し、
前記データ要素を修正するための前記第２要求が、前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立するかどうかを、前記第２データアクセスノードによって判定し、
前記データ要素を修正するための前記第２要求が前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立しなければ、修正するための前記第２要求に基づき前記データ要素を前記第２データアクセスノードによって修正する
ことを実施させる命令を含む、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、概して分散データストレージシステムにおけるデータの同期および対立解消のための方法および装置に関し、それにはコンピュータプログラム製品も含まれる。
【背景技術】
【０００２】
コンピュータ化されたファイルシステムの分野において、データの同期および対立解消は古くからの関心事である。複数のユーザが同じデータセットを同時に修正しようと試みた場合、ファイルシステムは、一度に１人のユーザしか希望の修正を実行できないようにそのデータセットをロックする機能を有しなければならない。さらに、ファイルシステムは、試みられたそれら修正が互いに対立（conflict）するかどうかを認識しなければならず、当該データセットの完全性を維持する結果を決定しなければならない。
【０００３】
クラウドベースのファイルリポジトリなどの分散データストレージシステムがより一般的になったので、多くの異なるユーザに対するデータのアクセシビリティと可用性が主要な焦点となる。この目的を達成するために、同じデータセットまたは同じファイルの複数のバージョンが、分散データストレージシステム内のいくつかの異なる物理的場所および／または論理的場所に格納される。しかし、そうした複数のファイルバージョンの同期を維持するために、従来のデータストレージシステムは、通常、複雑で多くの帯域幅を必要とする手順を実行するが、このために、ファイルアクセスおよび修正要求に対する同期の効率が低下し、応答時間が遅くなる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、同じデータに関する複数の、しばしば同時の修正要求を処理する多数のデータセンタにわたって、自動かつ効率的なデータ同期および対立解消を可能にする方法およびシステムが必要とされている。
【０００５】
本明細書で説明する方法およびシステムは、データ（例えばファイル）を複数のデータ記憶リポジトリにわたって同期させ、データに対する要求された修正から生じる対立をリアルタイム様式で解消し、追加の帯域幅および追加の計算リソースをほとんど必要としないという利点を提供する。
【課題を解決するための手段】
【０００６】
本発明は、その一態様において、互いに接続された複数のデータアクセスノードと、前記複数のデータアクセスノードの少なくとも一部と結合された一または複数のデータセンタとを備える分散データストレージシステムにおけるデータの同期および対立解消するためのコンピュータ化された方法を特色とする。第１データアクセスノードが、一データセンタに格納されたデータ要素を修正するための第１要求を受信し、前記データ要素に関連する第１ロックイベントを他の各データアクセスノードに送信する。第２データアクセスノードが、前記第１要求を受信したのと実質的に同時に、前記データ要素を修正するための第２要求を受信し、前記データ要素に関連する第２ロックイベントを他の各データアクセスノードに送信する。前記データ要素を修正する優先権を前記第１データアクセスノードが有すると前記システムが判定する。前記第１データアクセスノードは、修正するための前記第１要求に基づき前記データ要素を修正し、前記データ要素に関連する第１アンロックイベントであって、前記第１データアクセスノードによって前記データ要素に対してなされた修正の表示を含む前記第１アンロックイベントを他の各データアクセスノードに送信する。前記第２データアクセスノードは、前記データ要素を修正するための前記第２要求が、前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立するかどうかを判定し、前記データ要素を修正するための前記第２要求が前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立しなければ、前記第２データアクセスノードは、修正するための前記第２要求に基づき前記データ要素を修正する。
【０００７】
本発明は、別の態様において、分散データストレージシステムを特色とする。このシステムは、互いに接続された複数のデータアクセスノードと、前記複数のデータアクセスノードの少なくとも一部と結合された一または複数のデータセンタとを備える。第１データアクセスノードが、一データセンタに格納されたデータ要素を修正するための第１要求を受信し、前記データ要素に関連する第１ロックイベントを他の各データアクセスノードに送信する。第２データアクセスノードが、前記第１要求を受信したのと実質的に同時に、前記データ要素を修正するための第２要求を受信し、前記データ要素に関連する第２ロックイベントを他の各データアクセスノードに送信する。前記データ要素を修正する優先権を前記第１データアクセスノードが有すると前記システムが判定する。前記第１データアクセスノードは、修正するための前記第１要求に基づき前記データ要素を修正し、前記データ要素に関連する第１アンロックイベントであって、前記第１データアクセスノードによって前記データ要素に対してなされた修正の表示を含む前記第１アンロックイベントを他の各データアクセスノードに送信する。前記第２データアクセスノードは、前記データ要素を修正するための前記第２要求が、前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立するかどうかを判定し、前記データ要素を修正するための前記第２要求が前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立しなければ、前記第２データアクセスノードは、修正するための前記第２要求に基づき前記データ要素を修正する。
【０００８】
本発明は、別の態様において、データの同期および対立解消するために非一時的コンピュータ可読記憶装置に有形に具体化されたコンピュータプログラム製品を特色とする。このコンピュータプログラム製品は、互いに接続された複数のデータアクセスノードと、前記複数のデータアクセスノードの少なくとも一部と結合された一または複数のデータセンタとを備えるシステムに、一データセンタに格納されたデータ要素を修正するための第１要求を第１データアクセスノードにおいて受信し、前記データ要素に関連する第１ロックイベントを前記第１データアクセスノードによって他の各データアクセスノードに送信することを実施させる命令を含む。このコンピュータプログラム製品は、第２データアクセスノードに、前記第１要求を受信したのと実質的に同時に、前記データ要素を修正するための第２要求を受信し、前記データ要素に関連する第２ロックイベントを他の各データアクセスノードに送信させる命令を含む。このコンピュータプログラム製品は、前記システムに、前記データ要素を修正する優先権を前記第１データアクセスノードが有すると判定することを実施させる命令を含む。このコンピュータプログラム製品は、前記第１データアクセスノードに、修正するための前記第１要求に基づき前記データ要素を修正させ、前記データ要素に関連する第１アンロックイベントであって、前記第１データアクセスノードによって前記データ要素に対してなされた修正の表示を含む前記第１アンロックイベントを他の各データアクセスノードに送信させる命令を含む。このコンピュータプログラム製品は、前記第２データアクセスノードに、前記データ要素を修正するための前記第２要求が、前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立するかどうかを判定させ、前記データ要素を修正するための前記第２要求が前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立しなければ、修正するための前記第２要求に基づき前記データ要素を修正施させる命令を含む。
【０００９】
上記態様のいずれも以下の特徴の内の一つ以上を含むことができる。いくつかの実施形態では、前記第１データアクセスノードと前記第２データアクセスノードとの間の接続の形成特性に基づき、前記第１データアクセスノードが前記第２データアクセスノードより上の前記データ要素に対する修正の優先権を有すると判定される。いくつかの実施形態では、前記形成特性は、前記第２アクセスノードが前記第１データアクセスノードと前記第２データアクセスノードとの間の前記接続の確立を開始したという表示を含む。
【００１０】
いくつかの実施形態では、前記第２データアクセスノードは前記第１ロックイベントを受信すると前記第１ロックイベントの肯定応答を前記第１データアクセスノードに送信する。いくつかの実施形態では、前記第１データアクセスノードは前記第２ロックイベントを受信すると前記第２ロックイベントをキューに入れる。
【００１１】
いくつかの実施形態では、前記第２データアクセスノードは、前記データ要素に関連する第２アンロックイベントであって、前記第２データアクセスノードによって前記データ要素に対してなされた修正の表示を含む前記第２アンロックイベントを他の各データアクセスノードに送信する。いくつかの実施形態では、修正するための前記第２要求が、前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立する場合、前記第２データアクセスノードは、前記データ要素に関連する第２アンロックイベントであって、前記第２データアクセスノードによって前記データ要素に対してなされた修正はないという表示を含む前記第２アンロックイベントを他の各データアクセスノードに送信する。
【００１２】
いくつかの実施形態では、前記第１データアクセスノードと前記第２データアクセスノードとの間の接続の確立時に、前記第１データアクセスノードおよび前記第２データアクセスノードは、既知のデータアクセスノードのリストを互いに送信する。いくつかの実施形態では、前記既知のデータアクセスノードの各リストは、当該リストを送信したノードが接続されているデータアクセスノードの識別情報を含む。いくつかの実施形態では、前記リストを受信するノードは、当該受信するノードがまだ接続されていない前記リストに掲載された各データアクセスノードとの接続を確立する。
【００１３】
いくつかの実施形態では、前記第１データアクセスノードが、第３データアクセスノードへの接続が中断されたことを判定し、この接続中断の表示を前記第１データアクセスノードが他のデータアクセスノードへ送信する。いくつかの実施形態では、前記第２データアクセスノードが前記第３データアクセスノードに接続されたままである場合、前記第２データアクセスノードは、前記第２データアクセスノードが前記第１データアクセスノードのプロキシであるというメッセージを他のデータアクセスノードに送信する。いくつかの実施形態では、前記分散データストレージシステムは、異なる複数のデータセンタに結合されたデータアクセスノード間の通信を中継する複数の同期化ノードをさらに備える。
【００１４】
本発明の他の態様および利点は、例示のみを目的として本発明の原理を示す添付の図面と併せて以下の詳細な説明から明らかになるであろう。
上述の本発明の利点は、さらなる利点とともに、添付の図面と併せて以下の説明を参照することによってよりよく理解されるであろう。図面は、必ずしも縮尺通りではなく、本発明の原理を強調して例示することに置かれている。
【図面の簡単な説明】
【００１５】
【図１】分散データの同期および対立解消のためのシステムのブロック図。
【図２】分散データの同期および対立解消のためのシステムのブロック図。
【図３Ａ】分散データの同期および対立解消のための方法のフロー図。
【図３Ｂ】分散データの同期および対立解消のための方法のフロー図。
【図４】２つの競合する修正要求の間に対立が存在する場合の分散データの同期および対立解消のための方法のラダー図。
【図５】２つの競合する修正要求の間に対立が存在しない場合の分散データの同期および対立解消のための方法のラダー図。
【発明を実施するための形態】
【００１６】
図１は、分散データ同期および対立解消のためのシステム１００のブロック図である。システム１００は、複数のクライアント装置１０２ａ−１０２ｂ、複数のデータアクセスノード１０４ａ−１０４ｂ、同期化ノード１０５、データセンタ１０６、およびネットワーク１１２を含み、データセンタ１０６にはＮＡＳ（ネットワーク接続ストレージ）／ＳＡＮ（ストレージエリアネットワーク）１０８コンピューティング装置および同期データベース１１０が含まれる。
【００１７】
複数のクライアント装置１０２ａ−１０２ｂは、（例えば、ネットワークを介して）データアクセスノード１０４ａ−１０４ｂに接続してデータセンタ１０６に格納されたデータにアクセスする。例示的なクライアント装置には、デスクトップコンピュータ、ラップトップコンピュータ、タブレット、モバイルデバイス、スマートフォン、およびインターネットアプライアンスが含まれる。本発明の範囲から逸脱することなく、データアクセスノード１０４ａ−１０４ｂに接続することができる他のタイプのコンピューティングデバイスを使用することができることを理解されたい。
【００１８】
複数のデータアクセスノード１０４ａ−１０４ｂは、クライアント装置１０２ａ−１０２ｂと通信して、データセンタ１０４に格納されたデータにアクセスする要求および／または当該データを修正する要求を受信し、クライアント装置からの要求に応答して（ＮＡＳ／ＳＡＮ装置１０８を介して）データセンタ１０４からデータを取得する。データアクセスノード１０４ａ−１０４ｂは、ハードウェアモジュールおよび／または（例えば、コンピューティングデバイス上に展開される）ソフトウェアモジュールである。以下により詳細に説明するように、データアクセスノード１０４−１０４ｂは、データ同期および対立解消タスクを解決するために互いに結合される。データアクセスノード１０４−１０４ｂは、データ要求が処理されるときにデータ同期情報を追跡および管理するために、同期データベース１１０にも結合される。
【００１９】
同期化ノード１０５は、データアクセスノード１０４ａ−１０４ｂ、ＮＡＳ／ＳＡＮデバイス１０８、および同期データベース１１０と通信する。同期化ノード１０５は、ネットワーク１１２を介して異なる場所に配置され得る他のデータアクセスノードにも結合される。このように、分散データアーキテクチャの一部として、いくつかのデータセンタを互いにリンクさせて本明細書で説明するデータ同期および対立解消技術を多くの異なるクライアント装置に提供することができる。
【００２０】
データセンタ１０６は、ＮＡＳ／ＳＡＮデバイス１０８および同期データベース１１０などの、コンピュータシステムおよび関連コンポーネントを収容するために使用される場所である。典型的なデータセンタには、バックアップ電源システム、環境制御、複数のネットワーク通信接続、セキュリティ装置などが含まれる。
【００２１】
ＮＡＳ／ＳＡＮデバイス１０８は、迅速かつ効率的なデータ記憶および検索のために配置された複数のデータ記憶モジュール（例えば、ハードドライブ）に結合されたコンピューティングデバイスである。ＮＡＳ／ＳＡＮデバイス１０８は、本発明の範囲から逸脱することなく、様々なファイルベースプロトコル（例えば、ネットワークファイルシステム（ＮＦＳ）、サーバーメッセージブロック／共通インターネットファイルシステム（ＳＭＢ／ＣＩＦＳ）、ファイル転送プロトコル（ＦＴＰ）、アップルファイリングプロトコル（ＡＦＰ））およびハードウェアアーキテクチャを使用して構成することができることを理解されたい。さらに、いくつかの実施形態では、ＮＡＳ／ＳＡＮデバイス１０８は、ＳＡＮのみの構成、ＮＡＳのみの構成、またはＳＡＮ−ＮＡＳハイブリッド構成として実装することができる。また、記憶目的の複数のデバイス（例えば、ストライピング）にわたってデータを分散させるのにクラスタリング技術を使用することができる。
【００２２】
データセンタ１０６内の同期データベース１１０は、データ要求が処理されるときにデータ同期情報を追跡および管理するため、データアクセスノード１０４ａ−１０４ｂおよび同期化ノード１０５によって使用されるデータを格納する。データベース１１０は、データセンタ１０４内の他の要素とは別のコンピューティングデバイス上に設置してよく、いくつかの実施形態では、データベース１１０は、データセンタ１０４とは異なる場所にある。システム１００と共に使用することができる例示的なデータベースは、カリフォルニア州レッドウッドシティーのオラクル社から入手可能なＭｙＳＱＬ（登録商標）である。本発明の範囲から逸脱することなく、他のタイプのデータベースをシステム１００と共に使用することができると理解されたい。
【００２３】
ネットワーク１１２は、（後述する図２に示すように）同期化ノード１０５を他のデータアクセスノードに結合する。ネットワーク１０４は、ＬＡＮなどのローカルネットワーク、またはインターネットまたはワールドワイドウェブなどのワイドエリアネットワークであってもよい。
【００２４】
いくつかの実施形態では、データアクセスノード１０４ａ−１０４ｂおよび同期化ノード１０５の機能性は、複数のコンピューティングデバイスに分散される。本発明の範囲から逸脱することなく、様々なアーキテクチャ、リソース、および構成（例えば、クラスタコンピューティング、仮想コンピューティング、クラウドコンピューティング）に配置された任意の数のコンピューティングデバイスを使用できると理解されたい。いくつかの実施形態では、本発明の範囲から逸脱することなく、データアクセスノード１０４ａ−１０４ｂおよび同期化ノード１０５のいずれかが本明細書に記載の機能のいずれかを実行することができるようにデータアクセスノード１０４ａ−１０４ｂおよび同期化ノード１０５の機能性は分散され得ると理解されたい。例えば、いくつかの実施形態では、データアクセスノード１０４ａ−１０４ｂおよび同期化ノード１０５は、単一のノードに統合され得る。いくつかの実施形態では、同期化ノード１０５は、クライアント装置１０２ａ−１０２ｂと通信して本明細書に記載したデータ同期および対立解消技術を実行することができる。
【００２５】
図２は、分散データ同期及び対立解消のためのシステムのブロック図であり、ここでは、図１に関して上述したように構成された複数のシステムがネットワーク１１２を介して共に結合される。図２に示すように、システム１００の同期化ノード１０５は、ネットワーク１１２を介してシステム２００の同期化ノード２０５に接続される。システム２００の構成要素は、先に図１に示したものを反映する。例えば、システム２００は、複数のクライアント装置２０２ａ〜２０２ｂ、複数のデータアクセスノード２０４ａ〜２０４ｂ、同期化ノード２０５、データセンタ２０６、ＮＡＳ／ＳＡＮデバイス２０８、および同期データベース２１０を含む。システム１００および２００同士を結合することによって、例えばクライアント装置１０２ａおよびクライアント装置２０２ｂが同じデータ資源にアクセスし、データアクセスノード１０４ａ、１０４ｂ、２０４ａ、２０４ｂが（例えば、分散データシステムアーキテクチャにおける）複数のデータセンタに対して本明細書で述べるデータ同期および対立解消技術を実行できるといった利点が得られる。
【００２６】
図３Ａ−３Ｂは、図１のシステム１００を使用する分散データ同期および対立解消のための方法のフロー図である。図１に関して説明したような図３Ａ−３Ｂの方法は、図２に示す分散データシステムアーキテクチャの文脈においても同様に適用可能であると理解されたい。
【００２７】
第１データアクセスノード（例えば、データアクセスノード１０４ａ）は、データセンタ（例えば、データセンタ１０６）に格納されたデータ要素を修正する第１要求を受信する（３０２）。例えば、クライアント装置１０２ａのユーザは、データセンタ１０６のＮＡＳ／ＳＡＮ装置１０８に格納されたファイルに修正を行うために、そのファイルへのアクセスを要求し得る。その要求を受信すると、第１データアクセスノード１０４ａは、そのデータ要素に関連する第１ロックイベントを他の各データアクセスノード（例えば、データアクセスノード１０４ｂ）に送信する（３０４）。例えば、このロックイベントは、修正要求に関連するデータセットやファイルの識別情報を示すメッセージであり、いくつかの場合では、このロックイベントは、修正要求を送信したクライアント装置および／またはユーザの識別情報、その要求に関連するタイムスタンプなどの他の情報を含む。
【００２８】
図２に示すシステムを使用して、第１データアクセスノード１０４ａによって第１ロックイベントが同期化ノード１０５に送信されてもよく、同期化ノード１０５がそのロックイベントを同期化ノード２０５を介して他のデータアクセスノード（例えば、２０４ａ、２０４ｂ）に送信してもよいと理解されたい。
【００２９】
修正するための第１要求が第１データアクセスノード１０４ａによって受信された時と実質的に同時に、第２データアクセスノード（例えば、データアクセスノード１０４ｂ）は、修正するための第１要求で識別されたものと同じデータ要素を修正するための第２要求を受信する（３０６）。例えば、クライアント装置１０４ａのユーザがアクセスを要求したデータセンタ１０６のＮＡＳ／ＳＡＮ装置１０８に格納された同じファイルに対する修正を行うためのアクセスをクライアント装置１０２ｂのユーザが要求することがある。クライアント装置１０２ｂによって生成されたこの要求は、クライアント装置１０２ａによって生成された要求がデータアクセスノード１０４ａに到着するのと実質的に同時にデータアクセスノード１０４ｂに到着することがある。この要求を受信すると第２データアクセスノード１０４ｂは、当該データ要素に関連する第２ロックイベントを他の各データアクセスノード（例えば、データアクセスノード１０４ａ）に送信する（３０８）。
【００３０】
これらの修正要求が同じデータ要素に関連し、それぞれのデータアクセスノード１０４ａ−１０４ｂによって同時に受信され、ノード１０４ａ−１０４ｂが、関連するロックイベントを同時に発行するので、システム１００は、当該データ要素に対する修正を行う目的について、どのデータアクセスノードが他のノードよりも優先されるべきかを決定しなければならない。
【００３１】
システム１００は、有利には、複数のデータアクセスノードが互いに最初に接続した時点でデータアクセスノードの優先順位を決定する。例えば、第１データアクセスノード１０４ａと第２データアクセスノード１０４ｂがオンラインになったときに、これらのノード１０４ａ−１０４ｂは互いにコンタクトして互いに安全な接続を確立する（例えば、ハンドシェイクルーチンの一部として）。いくつかの実施形態では、ノード１０４ａ−１０４ｂは、環境設定ファイル（configuration file）を介してまたは他の類似の技術を介して、システム１００内の他のデータアクセスノードについて知るように予め構成されている。
【００３２】
好ましい実施形態では、各データアクセスノードは、ネットワーク上の他の各データアクセスノードとの持続的な接続を維持し、その結果、各ノードは他のノードの状態を継続的に認識する。したがって、あるデータアクセスノードによってなされたデータ要素に対する修正は、複数のノードを介する拡散（proliferation）に依存する必要なしで、他の各ノードに直接共有されることができる。
【００３３】
接続ハンドシェイク中に、一方のデータアクセスノードが開始ノード（initiating node）と定義され、他方のデータアクセスノードが受信ノード（receiving node）と定義される。ハンドシェイクルーチン中に各データアクセスノードを開始ノードまたは受信ノードのいずれにどのようにして定義するかを決定するためにどのような技術を使用してもよいと理解されたい。一例では、第２データノード１０４ｂが接続要求メッセージを第１データアクセスノード１０４ａに送信することによって接続を開始し得る。したがって、この例では、第２データノード１０４ｂが開始ノードとみなされ、第１データアクセスノード１０４ａが受信ノードとみなされる。
【００３４】
各データアクセスノードは、他の既知データアクセスノードのリストを維持する。このリストには、他の各既知データアクセスノードの識別情報（例えば、ノード名、ＩＰアドレスなど）、および他の既知ノードとの接続関係、すなわち、ホストノードが別のノードとの接続を開始したかどうか、この場合、このホストノードはこの接続関係においては開始ノードと見なされ、あるいは、ホストノードが別のノードから接続開始を受信したかどうか、この場合、このホストノードはこの接続関係においては受信ノードとみなされる、などの情報が含まれる。
【００３５】
いくつかの実施形態では、開始ノードは、当該開始ノードに既知の他のデータアクセスノードのリストを受信ノードに提供する。受信ノードは当該他ノードリストを使用して当該受信ノードが有する既知ノードリストを拡張し得る。同様に、受信ノードは、当該受信ノードに既知の他のノードのリストを開始ノードに提供する。これらのリストを使用することで、開始ノードおよび受信ノードの各々は、システム１００において既知の他のデータアクセスノードの各々との安全な接続を確立し得る。
【００３６】
接続関係は、ロックイベントをどのように解消するのかを決定するために個々のデータアクセスノードによって使用される。上の例を続けると、第２データアクセスノード１０４ｂは、データ要素のロックイベントを第１データアクセスノード１０４ａに送信し、実質的に同じ時間に第１データアクセスノード１０４ｂは同じデータ要素に対するロックイベントを第２データアクセスノード１０４ｂに送信する。このロックイベントは、ロックされるべきデータ要素（例えば、ファイル名）、得るべきロックのタイプ（例えば、共有または排他的）、および、ロックを継続する時間長を指定する有効生存期間（ＴＴＬ）などの情報を含む。いくつかの実施形態では、データアクセスノードがアンロックイベントを送信し、そして、更新されたＴＴＬ（例えば、ＴＴＬ開始時刻を現在時刻にリセットする）を伴う重複ロックイベントを送信することによって、ＴＴＬに達する前にロックは解除され得る。
【００３７】
接続が確立されたときに第２データアクセスノード１０４ｂが第１データアクセスノード１０４ａとの接続を開始したので、これらノード１０４ａ−１０４ｂの各々は、第１データアクセスノード１０４ａが第２データアクセスノード１０４ｂより上のデータ要素修正の優先権を有すると判定する（３１０）。第２データアクセスノード１０４ｂはデータ修正の優先権を第１データアクセスノード１０４ａに譲り、第１ノードのロックイベントに対する肯定応答を第１ノード１０４ａに返信する。
【００３８】
同様に、第１データアクセスノード１０４ａは、そのリストを使用して第２ノード１０４ｂとの接続関係を分析し、受信ノードとして、第１ノード１０４ａが第２ノード１０４ｂより上のデータ要素修正の優先権を有すると判定する。第２ノード１０４ｂからロックイベントを受信すると、第１ノード１０４ａは、第２ノード１０４ｂからのロックイベントをキューに入れる。
【００３９】
第１データアクセスノード１０４ａが修正の優先権を有し、当該データ要素に対するロックを保持するので、第１ノード１０４ａは第１修正要求に基づいてデータ要素を修正する（３１２）。例えば、第１ノード１０４ａは、クライアント装置１０２ａから受信した修正要求に基づいて、データ要素に対する修正を適用する（例えば、データの追加、更新、削除など）。第１ノード１０４ａが修正を完了すると、第１ノード１０４ａは、データ要素に関連付けられたアンロックイベントを他の各データアクセスノードに送信する（３１４）。アンロックイベントは、第１データアクセスノード１０４ａがデータ要素に行った修正の表示を含む。また、第１ノード１０４ａは、修正要求が成功裏に実施されたという通知をクライアント装置１０２ａに送信する。
【００４０】
アンロックイベントを受信すると、第２データアクセスノード１０４ｂは、データ要素を修正する第２要求（クライアント装置１０２ｂから受信）が第１データアクセスノード１０４ａによってなされたデータ要素に対する修正と対立するかどうかを判断する（３１６）。例えば、第１ノード１０４ａによってなされた修正が文書内の特定のデータフィールドを更新し、第２ノード１０４ｂによって送信された修正要求が同じデータフィールドを削除しようとする場合、第２ノード１０４ｂは、第２修正が第１修正と対立することから第２修正を許可してはならないと判断する。本発明の範囲から逸脱することなく、他のタイプのデータ対立（例えば、一意性対立、更新対立、削除対立）がシステム１００によって判断され得ると理解されたい。
【００４１】
第２データアクセスノード１０４ｂは、第２修正要求が第１修正と対立すると判断した場合、システム１００内の他の各データアクセスノードにアンロックイベントを送信して先に送信されたロックイベントを解消する。また、第２ノード１０４ｂは、修正要求が不成功に終わった旨の通知をクライアント装置１０２ｂに送信する。
【００４２】
第２データアクセスノード１０４ｂは、第２修正要求が第１修正と対立しないと判断した場合、第２修正要求に基づいてデータ要素を修正する（３１８）。次に、第２ノード１０４ｂは、アンロックイベントを他の各データアクセスノードに送信して、先に送信されたロックイベントを解消し、そして、第２ノード１０４ｂは、修正要求が成功裏に実施されたという通知をクライアント装置１０２ｂに送信する。
【００４３】
図４は、２つの競合する修正要求の間に対立が存在する場合の分散データの同期および対立解消のための、図１のシステム１００を使用する方法のラダー図である。図１に関して説明したように図４の方法は図２に示した分散型データシステムアーキテクチャの文脈においても同様に適用可能であると理解されたい。
【００４４】
図４に示すように、クライアント装置１０２ａは、データ要素を修正する要求をデータアクセスノード１０４ａに送信する（４０２ａ）。実質的に同時に、クライアント装置１０２ｂは同じデータ要素を修正する要求をデータアクセスノード１０４ｂに送信する（４０２ｂ）。データアクセスノード１０４ａは、ロックイベントをデータアクセスノード１０４ｂに送信し（４０４ａ）、ノード１０４ｂもロックイベントをノード１０４ａに送信する（４０４ｂ）。
【００４５】
各データアクセスノード１０４ａ、１０４ｂは、先に説明した技術を使用して、修正の優先権を判定する（４０６）。起動時にデータアクセスノード１０４ｂがデータアクセスノード１０４ａとの安全な接続を開始したので、ノード１０４ａはノード１０４ｂより上の優先権を有する。データアクセスノード１０４ａはデータアクセスノード１０４ｂから受信したロックイベントをキューに入れ（４０８ａ）、ノード１０４ｂはノード１０４ａから受信したロックイベントの確認応答をノード１０４ａに送信する（４０８ｂ）。
【００４６】
データアクセスノード１０４ａは、データ要素を修正（４１０）するとともにアンロックイベントをノード１０４ｂに送信する（４１２）。また、データアクセスノード１０４ａは、修正成功通知をクライアント装置１０２ａに送信する（４１４）。
【００４７】
データアクセスノード１０４ｂは、データアクセスノード１０４ａによってなされた修正と、ノード１０４ｂが受信したクライアント装置１０２ｂからの修正要求との間に対立が存在すると判断する（４１６）。データアクセスノード１０４ｂは、アンロックイベントをノード１０４ａに送信（４１８）するとともに、修正失敗通知をクライアント装置１０２ｂに送信する（４２０）。
【００４８】
図５は、２つの競合する修正要求の間に対立が存在しない場合の、分散データの同期および対立解消のための方法のラダー図である。図１に関して説明したように図４の方法は図２に示した分散型データシステムアーキテクチャの文脈においても同様に適用可能であると理解されたい。
【００４９】
図５に示すように、クライアント装置１０２ａは、データ要素を修正する要求をデータアクセスノード１０４ａに送信する（５０２ａ）。実質的に同時に、クライアント装置１０２ｂは同じデータ要素を修正する要求をデータアクセスノード１０４ｂに送信する（５０２ｂ）。データアクセスノード１０４ａは、ロックイベントをデータアクセスノード１０４ｂに送信し（５０４ａ）、ノード１０４ｂもロックイベントをノード１０４ａに送信する（５０４ｂ）。
【００５０】
各データアクセスノード１０４ａ、１０４ｂは、先に説明した技術を使用して、修正の優先権を判定する（５０６）。起動時にデータアクセスノード１０４ｂがデータアクセスノード１０４ａとの安全な接続を開始したので、ノード１０４ａはノード１０４ｂより上の優先権を有する。データアクセスノード１０４ａはデータアクセスノード１０４ｂから受信したロックイベントをキューに入れ（５０８ａ）、ノード１０４ｂはノード１０４ａから受信したロックイベントの確認応答をノード１０４ａに送信する（５０８ｂ）。
【００５１】
データアクセスノード１０４ａは、データ要素を修正（５１０）するとともにアンロックイベントをノード１０４ｂに送信する（５１２）。また、データアクセスノード１０４ａは、修正成功通知をクライアント装置１０２ａに送信する（５１４）。
【００５２】
データアクセスノード１０４ｂは、データアクセスノード１０４ａによってなされた修正と、ノード１０４ｂが受信したクライアント装置１０２ｂからの修正要求との間に対立が存在しないと判断（５１６）し、そして、ノード１０４ｂは当該データ要素を修正する。データアクセスノード１０４ｂは、アンロックイベントをノード１０４ａに送信（５１８）するとともに、修正成功通知をクライアント装置１０２ｂに送信する（５２０）。
【００５３】
一データアクセスノードがオフラインになるかまたは他のデータアクセスノードとの接続が中断された場合、システム１００は、中断したノードが復帰するまでデータ同期および対立解消の実行を継続し得る。例えば、各データアクセスノードは、他のノードとの接続を定期的に分析し、その接続のいずれかがオフラインであるか中断されたかを判断するように構成され得る。一データアクセスノードがその接続のうちの１つがもはや利用可能でないと認識すると、そのデータアクセスノードは、他の各データアクセスノードに、それらのノードリストの更新とオフライン接続の除去のためのメッセージを送信する。
【００５４】
いくつかの実施形態では、第１データアクセスノードが第２データアクセスノードから第３のデータアクセスノードがオフラインであるというメッセージを受信した場合、第１データアクセスノードは第３のノードが実際にオフラインであるかどうかを判断するために第３のノードに問い合わせる。もし第１ノードが第３のノードと通信できる場合、第１ノードは、第２ノードと第３のノードとの間の接続が再確立されるまで第１ノードが第２ノードと第３のノードとの間のプロキシとして動作できるメッセージを他のデータアクセスノードに送信し得る。
【００５５】
いくつかの実施形態では、システム１００は、様々なデータセンタに格納されたファイルのおよび／またはデータセットの、ゼロ知識重複排除（zero-knowledge de-duplication）を実行する技術を利用する。例えば、クライアント装置１０２ａがデータアクセスノード１０４ａを介して第１ファイルのデータセンタ１０６への格納を要求すると、このノード１０４ａはそのファイルコンテンツのハッシュ値を生成し、生成したハッシュ値をファイルメタデータ内のファイル識別子（例えば、ＩＤキー）として割り当てる。その後、別のクライアント装置２０２ａが第１ファイルのコピーを、データアクセスノード２０４ａを介して別のデータセンタ２０６に格納することを要求すると、このノード２０４ａは、ファイルコンテンツのハッシュ値を生成し、生成したハッシュ値をファイルメタデータ内のファイル識別子（例えば、ＩＤキー）として割り当てる．データアクセスノード２０４ａは、第１ファイルのコピーのＩＤキーと、データセンタ１０６、２０６内の他のファイルのＩＤキーとを比較することができる。ノード２０４ａが、同じＩＤキーを持つ第１ファイルが既に（例えば、データセンタ１０６内に）格納されていると判定すれば、ノード２０４ａは、第１ファイルと重複するので、第１ファイルのコピーを格納しないと判定できる。ハッシュ値をＩＤキーとして使用すると、システム１００はファイルの重複を判断するためにＩＤキーの比較を行うだけでよいので、重複排除プロセスの速度および効率が向上する。
【００５６】
このゼロ知識重複排除技術は、複数のデータセンタ間でバージョン管理されたファイルを管理する場合に特に有利である。例えば、クライアント装置１０２ａが、データセンタに既に格納されているファイルの更新バージョンの格納をデータアクセスノード１０４ａを介して要求すると、ノード１０４ａは、更新されたバージョンのコンテンツのハッシュ値（これは、ファイルの前のバージョンとは異なる）を生成し、そのハッシュ値を更新されたバージョンのメタデータ内のファイル識別子として割り当てる。このようにして、ファイルの両方のバージョンが別々にデータセンタに保存され、両バージョンに独立してアクセス可能である。さらに、システム１００は、ゼロ知識重複排除をファイルのセキュリティに関係せずに実行できるように、暗号化目的用の異なるハッシュ値を利用し得る。
【００５７】
いくつかの実施形態では、システム１００は、複数のデータセンタを横断する、必要に応じてキャッシュするタイプのコンテンツ配信ネットワーク（ＣＤＮ）として機能するように構成され得る。例えば、クライアント装置１０２ａはデータセンタ１０６からのファイルをノード１０４ａを介して要求する。ノード１０４ａは、要求されたファイルがデータセンタ１０６に現在格納されていないと判断する。代わりに、データセンタ１０６は、１つ以上の他のデータセンタ（例えば、データセンタ２０６）に格納されているファイルを指し示す、当該ファイルへの参照（例えば、ポインタ）を含む。ノード１０４ａは（ネットワーク１１２を介して）データセンタ２０６に接続し、クライアント装置１０２ａが要求したファイルを検索する。ノード１０４ａはまた、要求されたファイルのコピーを将来の要求に対応するためローカルデータセンタ１０６に格納する。いくつかの実施形態では、要求されたファイルが複数のデータセンタに格納されている場合、ノード１０４ａは、要求されたファイルをホストしているどのデータセンタがノード１０４ａ／クライアントデバイス１０２ａに最も近いのかを判断し、要求されたファイルを最も近いデータセンタから取得でき、それによってクライアント装置１０２ａへのより速い応答時間を提供する。
【００５８】
上述の技術は、デジタルおよび／またはアナログ電子回路に実装することができ、またはコンピュータハードウェア、ファームウェア、ソフトウェアに、またはそれらの組み合わせに実装することができる。当該実装は、コンピュータプログラム製品、すなわち、例えばプログラム可能プロセッサ、コンピュータ、および／または複数のコンピュータ等のデータ処理装置による実行のために、またはデータ処理装置の動作を制御するために、機械読み取り可能記憶装置に有形に組み込まれたコンピュータプログラムとしてもよい。コンピュータプログラムは、ソースコード、コンパイルされたコード、解釈されたコードおよび／または機械コードを含む任意の形態のコンピュータ言語またはプログラミング言語で書かれたものであってよく、コンピュータプログラムは、スタンドアロンプログラムとしてあるいはサブルーチン、要素、またはコンピューティング環境での使用に適した他の単位を含め、任意の形式で展開可能なものであってよい。コンピュータプログラムは、１つのコンピュータ上で、または１つ以上のサイトにある複数のコンピュータ上で実行されるように展開されてよい。
【００５９】
方法ステップは、入力データに対して動作することおよび／または出力データを生成することによって本発明の機能を実行するコンピュータプログラムを実行する１つまたは複数のプロセッサによって実行することができる。ＦＰＧＡ（フィールドプログラマブルゲートアレイ）、ＦＰＡＡ（フィールドプログラマブルアナログアレイ）、ＣＰＬＤ（複合プログラマブルロジックデバイス）、ＰＳｏＣ（プログラマブルシステムオンチップ）、ＡＳＩＰ（特定用途向け命令セットプロセッサ）、またはＡＳＩＣ（特定用途向け集積回路）などの専用論理回路によって方法ステップが実行されてよく、当該専用論理回路として装置が実施されてよい。サブルーチンは、格納したコンピュータプログラムの一部および／またはプロセッサの一部および／または１つまたは複数の機能を実装する特殊回路の一部を参照することができる。
【００６０】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および、任意の種類のデジタルまたはアナログコンピュータの任意の１つ以上のプロセッサを含む。一般に、プロセッサは、読み出し専用メモリまたはランダムアクセスメモリ、あるいはその両方から命令およびデータを受け取る。コンピュータの必須要素は、命令を実行するためのプロセッサおよび命令および／またはデータを記憶するための１つまたは複数のメモリデバイスである。キャッシュなどのメモリデバイスは、データを一時的に格納するために使用できる。メモリデバイスは、長期間のデータ保存にも使用できる。一般に、コンピュータは、例えば磁気ディスク、光磁気ディスク、または光ディスク等のデータ格納用の１つまたは複数の大容量記憶装置を含んでよく、データを受信するように当該大容量記憶装置と動作可能に結合されてよく、または当該大容量記憶装置にデータを転送するように動作可能に結合されてよく、またはデータを送受信するように当該大容量記憶装置と動作可能に結合されてよい。コンピュータは、ネットワークから命令および／またはデータを受信し、および／または命令および／またはデータをネットワークに転送するために、通信ネットワークに動作可能に結合されてよい。コンピュータプログラム命令およびデータを具体化するのに適したコンピュータ可読記憶媒体には、あらゆる形態の揮発性および不揮発性メモリが含まれ、例として、ＤＲＡＭ、ＳＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなどの半導体メモリ素子、例えば内蔵ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ＣＤ、ＤＶＤ、ＨＤ−ＤＶＤ、Ｂｌｕ−ｒａｙ（登録商標）ディスクなどの光ディスクが含まれる。プロセッサおよびメモリは専用論理回路によって補完されてよく、専用論理回路に組み込まれてよい。
【００６１】
ユーザとの対話を提供するために、上述の技術は、ＣＲＴ（陰極線管）モニタ、プラズマモニタ、またはＬＣＤ（液晶ディスプレイ）モニタなどの表示装置と通信するコンピュータ上で実施され、（例えば、ユーザインタフェース要素と対話する）ポインティングデバイス、例えばマウス、トラックボール、タッチパッド、またはモーションセンサとの間の通信を可能にする。他の種類の装置を使用して、ユーザとのやりとりを提供することもできる。例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであり得る。ユーザからの入力は、音響、音声、および／または触覚入力を含む任意の形態で受信することができる。
【００６２】
上述した技術は、バックエンドコンポーネントを含む分散コンピューティングシステムに実装することができる。バックエンドコンポーネントは、例えば、データサーバ、ミドルウェアコンポーネント、および／またはアプリケーションサーバとすることができる。上述した技術は、フロントエンドコンポーネントを含む分散コンピューティングシステムに実装することができる。フロントエンドコンポーネントは、例えば、グラフィカルユーザインタフェースを有するクライアントコンピュータ、ユーザが例示した実装と対話できるようにするウェブブラウザ、および／または送信装置用の他のグラフィカルユーザインタフェースとすることができる。上述した技術は、このようなバックエンド、ミドルウェア、またはフロントエンドのコンポーネントの任意の組み合わせを含む分散コンピューティングシステムに実装することができる。
【００６３】
コンピューティングシステムのコンポーネントは伝送媒体によって相互接続されてよく、当該伝送媒体には、デジタルまたはアナログのデータ通信（例えば、通信ネットワーク）の任意の形式または媒体を含むことができる。伝送媒体は、任意の構成において、１つまたは複数のパケットベースネットワークおよび／または１つまたは複数の回路ベースネットワークを含むことができる。パケットベースネットワークは、例えばインターネット、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、キャンパスエリアネットワーク（ＣＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、ホームエリアネットワーク（ＨＡＮ）などのキャリアインターネットプロトコル（ＩＰ）ネットワーク、プライベートＩＰネットワーク、ＩＰ構内交換機（ＩＰＢＸ）、無線ネットワーク（例えば、無線アクセスネットワーク（ＲＡＮ）、ブルートゥース（登録商標）、Ｗｉ−Ｆｉ、ＷｉＭＡＸ、汎用パケット無線サービス（ＧＰＲＳ）ネットワーク、ＨｉｐｅｒＬＡＮ）、および／または他のパケットベースのネットワークとすることができる。回路ベースネットワークには、例えば公衆交換電話網（ＰＳＴＮ）、レガシー構内交換機（ＰＢＸ）、無線ネットワーク（例えばＲＡＮ、符号分割多元接続（ＣＤＭＡ）ネットワーク、時分割多元接続（ＴＤＭＡ）ネットワーク、グローバルシステムフォーモバイルコミュニケーション（ＧＳＭ（登録商標）ネットワーク））、および／または他の回路ベースネットワークを含むことができる。
【００６４】
伝送媒体を介する情報転送は、１つまたは複数の通信プロトコルに基づくことができる。通信プロトコルは、例えば、イーサネット（登録商標）プロトコル、インターネットプロトコル（ＩＰ）、ボイスオーバーＩＰ（ＶＯＩＰ）、ピアツーピア（Ｐ２Ｐ）プロトコル、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、セッション開始プロトコル（ＳＩＰ）、Ｈ．３２３、メディアゲートウェイコントロールプロトコル（ＭＧＣＰ）、シグナリングシステム＃７（ＳＳ７）、グローバル移動体通信システム（ＧＳＭ（登録商標））プロトコル、プッシュツートーク（ＰＴＴ）プロトコル、ＰＯＣ（ＰＴＴｏｖｅｒＣｅｌｌｕｌａｒ）プロトコル、ユニバーサルモバイルテレコミュニケーションシステム（ＵＭＴＳ）、３ＧＰＰロングタームエボリューション（ＬＴＥ）および／または他の通信プロトコルを含む。
【００６５】
コンピューティングシステムの装置は、例えば、コンピュータ、ブラウザ装置を有するコンピュータ、電話機、ＩＰ電話機、モバイル機器（例えば、携帯電話機、パーソナルデジタルアシスタント（ＰＤＡ）デバイス、スマートフォン、タブレット、ラップトップコンピュータ、電子メール装置）、および／または他の通信装置を含むことができる。ブラウザ装置は、例えば、ＷｏｒｌｄＷｉｄｅＷｅｂブラウザ（例えば、グーグル社のクローム（登録商標）、マイクロソフト社から入手可能なマイクロソフト（登録商標）インターネットエクスプローラ（登録商標）および／またはモジラ社から入手可能なモジラ（登録商標）ファイヤーフォックス）を備えたコンピュータ（デスクトップコンピュータおよび／またはラップトップコンピュータ）を含む。モバイルコンピューティング装置は、例えば、リサーチインモーション社のブラックベリー（登録商標）、アップル社のアイフォン（登録商標）、および／またはアンドロイド（登録商標）ベースの機器が含まれる。ＩＰ電話機は、から入手可能なシスコ（登録商標）ユニファイドＩＰフォン７９８５Ｇおよび／またはシスコ（登録商標）ユニファイドワイヤレスフォン７９２０を含む。
【００６６】
「備える」、「含む」、および／または、「各の複数の形」は、オープンエンドであり、列挙された部分を含み、列挙されていない追加の部分を含むことができる。「および／または」はオープンエンドであり、記載された部品の１つまたは複数と、リストされた部品の組み合わせを含む。
【００６７】
当業者であれば、本発明の思想または本質的な特徴から逸脱することなく、本発明を他の特定の形態に具体化できると理解するであろう。したがって、前述の実施形態は本発明を本明細書に記載されたものに限定するのではなく例示的なものであるとみなされるべきである。
【図１】
2017526084.tif 000003
【図２】
2017526084.tif 000004
【図３Ａ】
2017526084.tif 000005
【図３Ｂ】
2017526084.tif 000006
【図４】
2017526084.tif 000007
【図５】
2017526084.tif 000008
【手続補正書】
【提出日】平成29年4月26日(2017.4.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
互いに接続された複数のデータアクセスノードと、前記複数のデータアクセスノードの少なくとも一部と結合された一または複数のデータセンタとを備える分散データストレージシステムにおけるデータの同期および対立解消するためのコンピュータ化された方法であって、
一データセンタに格納されたデータ要素を修正するための第１要求を第１データアクセスノードにおいて受信し、
前記データ要素に関連する第１ロックイベントを前記第１データアクセスノードによって他の各データアクセスノードに送信し、
前記第１要求を受信したのと実質的に同時に、前記データ要素を修正するための第２要求を第２データアクセスノードにおいて受信し、
前記データ要素に関連する第２ロックイベントを前記第２データアクセスノードによって他の各データアクセスノードに送信し、
前記データ要素を修正する優先権であって、前記第２アクセスノードが前記複数のデータアクセスノードに加わった時点で前記第２アクセスノードが前記第１データアクセスノードと前記第２データアクセスノードとの間の接続の確立を開始したという表示に基づく前記優先権を前記第１データアクセスノードが有すると判定し、
修正するための前記第１要求に基づき前記データ要素を前記第１データアクセスノードによって修正し、
前記データ要素に関連する第１アンロックイベントであって、前記第１データアクセスノードによって前記データ要素に対してなされた修正の表示を含む前記第１アンロックイベントを前記第１データアクセスノードによって他の各データアクセスノードに送信し、
前記データ要素を修正するための前記第２要求が、前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立するかどうかを、前記第２データアクセスノードによって判定し、
前記データ要素を修正するための前記第２要求が前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立しなければ、修正するための前記第２要求に基づき前記データ要素を前記第２データアクセスノードによって修正すること
を備える、方法。
【請求項２】
前記第１ロックイベントを受信すると、前記第２データアクセスノードによって、前記第１ロックイベントの肯定応答を前記第１データアクセスノードに送信することをさらに備える、請求項１に記載の方法。
【請求項３】
前記第２ロックイベントを受信すると、前記第１データアクセスノードによって、前記第２ロックイベントをキューに入れることをさらに備える、請求項１に記載の方法。
【請求項４】
前記データ要素に関連する第２アンロックイベントであって、前記第２データアクセスノードによって前記データ要素に対してなされた修正の表示を含む前記第２アンロックイベントを前記第２データアクセスノードによって他の各データアクセスノードに送信することをさらに備える、請求項１に記載の方法。
【請求項５】
修正するための前記第２要求が、前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立する場合、前記データ要素に関連する第２アンロックイベントであって、前記第２データアクセスノードによって前記データ要素に対してなされた修正はないという表示を含む前記第２アンロックイベントを前記第２データアクセスノードによって他の各データアクセスノードに送信することを更に備える、請求項１に記載の方法。
【請求項６】
前記第１データアクセスノードと前記第２データアクセスノードとの間の接続の確立時に、前記第１データアクセスノードおよび前記第２データアクセスノードは、既知のデータアクセスノードのリストを互いに送信する、請求項１に記載の方法。
【請求項７】
前記既知のデータアクセスノードの各リストは、当該リストを送信したノードが接続されているデータアクセスノードの識別情報を含む、請求項６に記載の方法。
【請求項８】
前記リストを受信するノードは、当該受信するノードがまだ接続されていない前記リストに掲載された各データアクセスノードとの接続を確立する、請求項７に記載の方法。
【請求項９】
第３データアクセスノードへの接続が中断されたことを前記第１データアクセスノードによって判定し、
この接続中断の表示を前記第１データアクセスノードによって他のデータアクセスノードへ送信することを更に備える、請求項１に記載の方法。
【請求項１０】
前記第２データアクセスノードが前記第３データアクセスノードに接続されたままである場合、前記第２データアクセスノードが前記第１データアクセスノードのプロキシであるというメッセージを前記第２データアクセスノードによって他のデータアクセスノードに送信することを更に備える、請求項９に記載の方法。
【請求項１１】
前記分散データストレージシステムは、異なる複数のデータセンタに結合されたデータアクセスノード間の通信を中継する複数の同期化ノードをさらに備える、請求項１に記載の方法。
【請求項１２】
互いに接続された複数のデータアクセスノードと、
前記複数のデータアクセスノードの少なくとも一部と結合された一または複数のデータセンタと
を備える分散データストレージシステムであって、
一データセンタに格納されたデータ要素を修正するための第１要求を第１データアクセスノードにおいて受信し、
前記データ要素に関連する第１ロックイベントを前記第１データアクセスノードによって他の各データアクセスノードに送信し、
前記第１要求を受信したのと実質的に同時に、前記データ要素を修正するための第２要求を第２データアクセスノードにおいて受信し、
前記データ要素に関連する第２ロックイベントを前記第２データアクセスノードによって他の各データアクセスノードに送信し、
前記データ要素を修正する優先権であって、前記第２アクセスノードが前記複数のデータアクセスノードに加わった時点で前記第２アクセスノードが前記第１データアクセスノードと前記第２データアクセスノードとの間の接続の確立を開始したという表示に基づく前記優先権を前記第１データアクセスノードが有すると判定し、
修正するための前記第１要求に基づき前記データ要素を前記第１データアクセスノードによって修正し、
前記データ要素に関連する第１アンロックイベントであって、前記第１データアクセスノードによって前記データ要素に対してなされた修正の表示を含む前記第１アンロックイベントを前記第１データアクセスノードによって他の各データアクセスノードに送信し、
前記データ要素を修正するための前記第２要求が、前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立するかどうかを、前記第２データアクセスノードによって判定し、
前記データ要素を修正するための前記第２要求が前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立しなければ、修正するための前記第２要求に基づき前記データ要素を前記第２データアクセスノードによって修正する
ように構成されている、分散データストレージシステム。
【請求項１３】
前記第２データアクセスノードは前記第１ロックイベントを受信すると前記第１ロックイベントの肯定応答を前記第１データアクセスノードに送信する、請求項１２に記載のシステム。
【請求項１４】
前記第１データアクセスノードは前記第２ロックイベントを受信すると前記第２ロックイベントをキューに入れる、請求項１２に記載のシステム。
【請求項１５】
前記第２データアクセスノードは、前記データ要素に関連する第２アンロックイベントであって、前記第２データアクセスノードによって前記データ要素に対してなされた修正の表示を含む前記第２アンロックイベントを他の各データアクセスノードに送信する、請求項１２に記載のシステム。
【請求項１６】
修正するための前記第２要求が、前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立する場合、前記第２データアクセスノードは、前記データ要素に関連する第２アンロックイベントであって、前記第２データアクセスノードによって前記データ要素に対してなされた修正はないという表示を含む前記第２アンロックイベントを他の各データアクセスノードに送信する、請求項１２に記載のシステム。
【請求項１７】
前記第１データアクセスノードと前記第２データアクセスノードとの間の接続の確立時に、前記第１データアクセスノードおよび前記第２データアクセスノードは、既知のデータアクセスノードのリストを互いに送信する、請求項１２に記載のシステム。
【請求項１８】
前記既知のデータアクセスノードの各リストは、当該リストを送信したノードが接続されているデータアクセスノードの識別情報を含む、請求項１７に記載のシステム。
【請求項１９】
前記リストを受信するノードは、当該受信するノードがまだ接続されていない前記リストに掲載された各データアクセスノードとの接続を確立する、請求項１８に記載のシステム。
【請求項２０】
前記第１データアクセスノードが、第３データアクセスノードへの接続が中断されたことを判定し、この接続中断の表示を前記第１データアクセスノードが他のデータアクセスノードへ送信する、請求項１２に記載のシステム。
【請求項２１】
前記第２データアクセスノードが前記第３データアクセスノードに接続されたままである場合、前記第２データアクセスノードは、前記第２データアクセスノードが前記第１データアクセスノードのプロキシであるというメッセージを他のデータアクセスノードに送信する、請求項２０に記載のシステム。
【請求項２２】
前記分散データストレージシステムは、異なる複数のデータセンタに結合されたデータアクセスノード間の通信を中継する複数の同期化ノードをさらに備える、請求項１２に記載のシステム。
【請求項２３】
データの同期および対立解消するために非一時的コンピュータ可読記憶装置に有形に具体化されたコンピュータプログラム製品であって、互いに接続された複数のデータアクセスノードと、前記複数のデータアクセスノードの少なくとも一部と結合された一または複数のデータセンタとを備えるシステムに、
一データセンタに格納されたデータ要素を修正するための第１要求を第１データアクセスノードにおいて受信し、
前記データ要素に関連する第１ロックイベントを前記第１データアクセスノードによって他の各データアクセスノードに送信し、
前記第１要求を受信したのと実質的に同時に、前記データ要素を修正するための第２要求を第２データアクセスノードにおいて受信し、
前記データ要素に関連する第２ロックイベントを前記第２データアクセスノードによって他の各データアクセスノードに送信し、
前記データ要素を修正する優先権であって、前記第２アクセスノードが前記複数のデータアクセスノードに加わった時点で前記第２アクセスノードが前記第１データアクセスノードと前記第２データアクセスノードとの間の接続の確立を開始したという表示に基づく前記優先権を前記第１データアクセスノードが有すると判定し、
修正するための前記第１要求に基づき前記データ要素を前記第１データアクセスノードによって修正し、
前記データ要素に関連する第１アンロックイベントであって、前記第１データアクセスノードによって前記データ要素に対してなされた修正の表示を含む前記第１アンロックイベントを前記第１データアクセスノードによって他の各データアクセスノードに送信し、
前記データ要素を修正するための前記第２要求が、前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立するかどうかを、前記第２データアクセスノードによって判定し、
前記データ要素を修正するための前記第２要求が前記第１データアクセスノードによって前記データ要素に対してなされた修正と対立しなければ、修正するための前記第２要求に基づき前記データ要素を前記第２データアクセスノードによって修正する
ことを実施させる命令を含む、コンピュータプログラム製品。
【国際調査報告】
2017526084.tif 000009