(57)【特許請求の範囲】
【請求項１】
複数コンピュータシステムの間で変更単位データを同期させるための方法であって、前記複数のコンピュータシステムのうち第１のコンピュータシステムは、前記変更単位データの第１の複製と、前記第１の複製に対応する第１のメタデータとを含み、前記第１のメタデータは、第１の現在のバージョンと、第１の競合解決バージョンと、第１の認識ベクトルとを含み、前記前記複数のコンピュータシステムのうち第２のコンピュータシステムは、前記変更単位データの第２の複製と、前記第２の複製に対応する第２のメタデータとを含み、前記第２のメタデータは、第２の現在のバージョンと、第２の競合解決バージョンと、第２の認識ベクトルとを含み、前記第１および第２の現在のバージョンはそれぞれ、前記第１および第２のコンピュータシステムが前記変更単位データの現在のバージョンとして認識している前記変更単位のバージョンを示し、前記第１および前記第２の認識ベクトルはそれぞれ、前記複数のコンピュータシステムの各コンピュータシステムごとに、各コンピュータシステムにおける前記変更単位データのアップデートの状況を表す値を含み、前記第１および第２の競合解決バージョンはそれぞれ、競合の解決を追跡できるように、前記変更単位データに対して競合するアップデートが発生した場合に該競合の解決を識別する値を含み、前記方法は、
（ｉ）前記第１のコンピュータシステムが前記第２のコンピュータシステムに前記第１の認識ベクトルを送信するステップと、
（ｉｉ）前記第１のコンピュータシステムが、前記第１の認識ベクトルの送信に応答して前記第２のコンピュータシステムから前記変更単位データの前記第２の複製と前記第２のメタデータとを受信したとき、前記第１のコンピュータシステムが、
（ａ）前記第１のメタデータ内の前記第１の認識ベクトルの前記第２のコンピュータシステムに対応する値が、前記第２のメタデータ内の前記第２の現在のバージョンを示す値を含むかどうかを判定することにより、前記第２のコンピュータシステムによる前記変更単位データに対するアップデートが、前記第１のコンピュータシステムの前記第１のメタデータに反映されているかどうかを判定するステップと、
（ｂ）上記（ａ）において、前記第１の認識ベクトルの前記第２のコンピュータシステムに対応する値が、前記第２の現在のバージョンを示す値を含むと判定された場合、前記第１の認識ベクトルが、前記第２のメタデータ内の前記第２の競合解決バージョンの値を含むかどうかを判定することにより、前記第２の競合解決バージョンによって識別される競合の解決が前記第１のコンピュータシステムの前記第１のメタデータに反映されているかどうかを判定するステップと、
（ｃ）前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が、前記第１のメタデータ内の前記第１の現在のバージョンを示す値を含むかどうかに応じて、前記第１のコンピュータシステムによる前記変更単位データに対するアップデートが、前記第２のコンピュータシステムの前記第２のメタデータに反映されているかどうかを判定するステップと、
（ｄ）上記（ｂ）において、前記第１の認識ベクトルが前記第２の競合解決バージョンの値を含むと判定された場合、または上記（ｂ）において、前記第１の認識ベクトルが前記第２の競合解決バージョンの値を含まないと判定され、上記（ｃ）において、前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が、前記第１の現在のバージョンを示す値を含まないと判定された場合、前記第１の認識ベクトルに前記第２の認識ベクトルをマージすることによって前記第１のメタデータのみをアップデートするステップと、
（ｅ）上記（ａ）において、前記第１の認識ベクトルの前記第２のコンピュータシステムに対応する値が、前記第２の現在のバージョンを示す値を含まないと判定され、上記（ｃ）において、前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が、前記第１の現在のバージョンを示す値を含むと判定された場合、または上記（ｂ）において、前記第１の認識ベクトルが前記第２の競合解決バージョンの値を含まないと判定され、上記（ｃ）において、前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が前記第１の現在のバージョンを示す値を含むと判定され、前記第２の認識ベクトルが、前記第１のメタデータ内の前記第１の競合解決バージョンの値を含む場合、前記変更単位データの前記第１の複製に前記第２の複製をコピーし、前記第１の現在のバージョンを示す値を前記第２の現在のバージョンを示す値に変更し、前記第１の認識ベクトルと前記第２の認識ベクトルをマージすることによって、前記第１の複製と前記第１のメタデータとをアップデートするステップと、
（ｆ）上記（ｂ）において、前記第１の認識ベクトルが前記第２の競合解決バージョンの値を含まないと判定され、上記（ｃ）において、前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が前記第１の現在のバージョンを示す値を含むと判定されて、前記第２の認識ベクトルが前記第１の競合解決バージョンの値を含まない場合、前記第１の現在のバージョンを示す値と前記第２の現在のバージョンを示す値を比較して、前記第１の現在のバージョンを示す値が前記第２の現在のバージョンを示す値よりも小さいとき、前記第１の認識ベクトルに前記第２の認識ベクトルをマージすることによって前記第１のメタデータのみをアップデートするステップと、
（ｇ）上記（ａ）において、前記第１の認識ベクトルの前記第２のコンピュータシステムに対応する値が前記第２の現在のバージョンを示す値を含まないと判定され、上記（ｂ）において、前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が前記第１の現在のバージョンを示す値を含まないと判定された場合、前記第１のコンピュータシステムと前記第２のコンピュータシステムとの間で前記変更単位データに対するアップデートが競合していると判定し、該競合を解決してアップデートを行うステップであって、
前記変更単位データの前記第１の複製に前記第２の複製をコピーすることによって前記第１の複製をアップデートし、前記第１の現在のバージョンを示す値を前記第２の現在のバージョンを示す値に変更し、前記第１の認識ベクトルと前記第２の認識ベクトルをマージして、前記第１のコンピュータシステムにより前記競合が解決されたことを示すように前記第１の競合解決バージョンを変更することによって、前記第１のメタデータをアップデートすること、または
前記第１の認識ベクトルと前記第２の認識ベクトルをマージして、前記第１のコンピュータシステムにより前記競合が解決されたことを示すように前記第１の競合解決バージョンを変更することによって、前記第１のメタデータをアップデートすること
により、前記競合を解決してアップデートを行うステップと、
（ｉｉｉ）前記第１のコンピュータシステムが、前記第１の認識ベクトルの送信に応答して前記第２のコンピュータシステムから前記第２のメタデータのみを受信したとき、前記第１の認識ベクトルに前記第２のメタデータに含まれる前記第２の認識ベクトルをマージすることによって前記第１のメタデータのみをアップデートするステップと
を含むことを特徴とする方法。
【請求項２】
複数コンピュータシステムの間で変更単位データを同期させるための方法を前記複数のコンピュータシステムのうち第１のコンピュータシステムに実行させるコンピュータ実行可能命令を記録したコンピュータ読取可能記録媒体であって、前記第１のコンピュータシステムは、前記変更単位データの第１の複製と、前記第１の複製に対応する第１のメタデータとを含み、前記第１のメタデータは、第１の現在のバージョンと、第１の競合解決バージョンと、第１の認識ベクトルとを含み、前記前記複数のコンピュータシステムのうち第２のコンピュータシステムは、前記変更単位データの第２の複製と、前記第２の複製に対応する第２のメタデータとを含み、前記第２のメタデータは、第２の現在のバージョンと、第２の競合解決バージョンと、第２の認識ベクトルとを含み、前記第１および第２の現在のバージョンはそれぞれ、前記第１および第２のコンピュータシステムが前記変更単位データの現在のバージョンとして認識している前記変更単位のバージョンを示し、前記第１および前記第２の認識ベクトルはそれぞれ、前記複数のコンピュータシステムの各コンピュータシステムごとに、各コンピュータシステムにおける前記変更単位データのアップデートの状況を表す値を含み、前記第１および第２の競合解決バージョンはそれぞれ、競合の解決を追跡できるように、前記変更単位データに対して競合するアップデートが発生した場合に該競合の解決を識別する値を含み、前記方法は、
（ｉ）前記第１のコンピュータシステムが前記第２のコンピュータシステムに前記第１の認識ベクトルを送信するステップと、
（ｉｉ）前記第１のコンピュータシステムが、前記第１の認識ベクトルの送信に応答して前記第２のコンピュータシステムから前記変更単位データの前記第２の複製と前記第２のメタデータとを受信したとき、前記第１のコンピュータシステムが、
（ａ）前記第１のメタデータ内の前記第１の認識ベクトルの前記第２のコンピュータシステムに対応する値が、前記第２のメタデータ内の前記第２の現在のバージョンを示す値を含むかどうかを判定することにより、前記第２のコンピュータシステムによる前記変更単位データに対するアップデートが、前記第１のコンピュータシステムの前記第１のメタデータに反映されているかどうかを判定するステップと、
（ｂ）上記（ａ）において、前記第１の認識ベクトルの前記第２のコンピュータシステムに対応する値が、前記第２の現在のバージョンを示す値を含むと判定された場合、前記第１の認識ベクトルが、前記第２のメタデータ内の前記第２の競合解決バージョンの値を含むかどうかを判定することにより、前記第２の競合解決バージョンによって識別される競合の解決が前記第１のコンピュータシステムの前記第１のメタデータに反映されているかどうかを判定するステップと、
（ｃ）前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が、前記第１のメタデータ内の前記第１の現在のバージョンを示す値を含むかどうかに応じて、前記第１のコンピュータシステムによる前記変更単位データに対するアップデートが、前記第２のコンピュータシステムの前記第２のメタデータに反映されているかどうかを判定するステップと、
（ｄ）上記（ｂ）において、前記第１の認識ベクトルが前記第２の競合解決バージョンの値を含むと判定された場合、または上記（ｂ）において、前記第１の認識ベクトルが前記第２の競合解決バージョンの値を含まないと判定され、上記（ｃ）において、前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が、前記第１の現在のバージョンを示す値を含まないと判定された場合、前記第１の認識ベクトルに前記第２の認識ベクトルをマージすることによって前記第１のメタデータのみをアップデートするステップと、
（ｅ）上記（ａ）において、前記第１の認識ベクトルの前記第２のコンピュータシステムに対応する値が、前記第２の現在のバージョンを示す値を含まないと判定され、上記（ｃ）において、前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が、前記第１の現在のバージョンを示す値を含むと判定された場合、または上記（ｂ）において、前記第１の認識ベクトルが前記第２の競合解決バージョンの値を含まないと判定され、上記（ｃ）において、前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が前記第１の現在のバージョンを示す値を含むと判定され、前記第２の認識ベクトルが、前記第１のメタデータ内の前記第１の競合解決バージョンの値を含む場合、前記変更単位データの前記第１の複製に前記第２の複製をコピーし、前記第１の現在のバージョンを示す値を前記第２の現在のバージョンを示す値に変更し、前記第１の認識ベクトルと前記第２の認識ベクトルをマージすることによって、前記第１の複製と前記第１のメタデータとをアップデートするステップと、
（ｆ）上記（ｂ）において、前記第１の認識ベクトルが前記第２の競合解決バージョンの値を含まないと判定され、上記（ｃ）において、前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が前記第１の現在のバージョンを示す値を含むと判定されて、前記第２の認識ベクトルが前記第１の競合解決バージョンの値を含まない場合、前記第１の現在のバージョンを示す値と前記第２の現在のバージョンを示す値を比較して、前記第１の現在のバージョンを示す値が前記第２の現在のバージョンを示す値よりも小さいとき、前記第１の認識ベクトルに前記第２の認識ベクトルをマージすることによって前記第１のメタデータのみをアップデートするステップと、
（ｇ）上記（ａ）において、前記第１の認識ベクトルの前記第２のコンピュータシステムに対応する値が前記第２の現在のバージョンを示す値を含まないと判定され、上記（ｂ）において、前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が前記第１の現在のバージョンを示す値を含まないと判定された場合、前記第１のコンピュータシステムと前記第２のコンピュータシステムとの間で前記変更単位データに対するアップデートが競合していると判定し、該競合を解決してアップデートを行うステップであって、
前記変更単位データの前記第１の複製に前記第２の複製をコピーすることによって前記第１の複製をアップデートし、前記第１の現在のバージョンを示す値を前記第２の現在のバージョンを示す値に変更し、前記第１の認識ベクトルと前記第２の認識ベクトルをマージして、前記第１のコンピュータシステムにより前記競合が解決されたことを示すように前記第１の競合解決バージョンを変更することによって、前記第１のメタデータをアップデートすること、または
前記第１の認識ベクトルと前記第２の認識ベクトルをマージして、前記第１のコンピュータシステムにより前記競合が解決されたことを示すように前記第１の競合解決バージョンを変更することによって、前記第１のメタデータをアップデートすること
により、前記競合を解決してアップデートを行うステップと、
（ｉｉｉ）前記第１のコンピュータシステムが、前記第１の認識ベクトルの送信に応答して前記第２のコンピュータシステムから前記第２のメタデータのみを受信したとき、前記第１の認識ベクトルに前記第２のメタデータに含まれる前記第２の認識ベクトルをマージすることによって前記第１のメタデータのみをアップデートするステップと
を含むことを特徴とするコンピュータ読取可能記録媒体。
【請求項３】
複数のコンピュータシステムの間で変更単位データを同期させるためのハードウェア制御装置であって、前記複数のコンピュータシステムのうちの前記第１のコンピュータシステムは、前記変更単位データの第１の複製と、前記第１の複製に対応する第１のメタデータとを含み、前記第１のメタデータは、第１の現在のバージョンと、第１の競合解決バージョンと、第１の認識ベクトルとを含み、前記前記複数のコンピュータシステムのうち第２のコンピュータシステムは、前記変更単位データの第２の複製と、前記第２の複製に対応する第２のメタデータとを含み、前記第２のメタデータは、第２の現在のバージョンと、第２の競合解決バージョンと、第２の認識ベクトルとを含み、前記第１および第２の現在のバージョンはそれぞれ、前記第１および第２のコンピュータシステムが前記変更単位データの現在のバージョンとして認識している前記変更単位のバージョンを示し、前記第１および前記第２の認識ベクトルはそれぞれ、前記複数のコンピュータシステムの各コンピュータシステムごとに、各コンピュータシステムにおける前記変更単位データのアップデートの状況を表す値を含み、前記第１および第２の競合解決バージョンはそれぞれ、競合の解決を追跡できるように、前記変更単位データに対して競合するアップデートが発生した場合に該競合の解決を識別する値を含み、前記ハードウェア制御装置は、
（ｉ）前記第１のコンピュータシステムが前記第２のコンピュータシステムに前記第１の認識ベクトルを送信することと、
（ｉｉ）前記第１のコンピュータシステムが、前記第１の認識ベクトルの送信に応答して前記第２のコンピュータシステムから前記変更単位データの前記第２の複製と前記第２のメタデータとを受信したとき、前記第１のコンピュータシステムにおいて、
（ａ）前記第１のメタデータ内の前記第１の認識ベクトルの前記第２のコンピュータシステムに対応する値が、前記第２のメタデータ内の前記第２の現在のバージョンを示す値を含むかどうかを判定することにより、前記第２のコンピュータシステムによる前記変更単位データに対するアップデートが、前記第１のコンピュータシステムの前記第１のメタデータに反映されているかどうかを判定することと、
（ｂ）上記（ａ）において、前記第１の認識ベクトルの前記第２のコンピュータシステムに対応する値が、前記第２の現在のバージョンを示す値を含むと判定された場合、前記第１の認識ベクトルが、前記第２のメタデータ内の前記第２の競合解決バージョンの値を含むかどうかを判定することにより、前記第２の競合解決バージョンによって識別される競合の解決が前記第１のコンピュータシステムの前記第１のメタデータに反映されているかどうかを判定することと、
（ｃ）前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が、前記第１のメタデータ内の前記第１の現在のバージョンを示す値を含むかどうかに応じて、前記第１のコンピュータシステムによる前記変更単位データに対するアップデートが、前記第２のコンピュータシステムの前記第２のメタデータに反映されているかどうかを判定することと、
（ｄ）上記（ｂ）において、前記第１の認識ベクトルが前記第２の競合解決バージョンの値を含むと判定された場合、または上記（ｂ）において、前記第１の認識ベクトルが前記第２の競合解決バージョンの値を含まないと判定され、上記（ｃ）において、前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が、前記第１の現在のバージョンを示す値を含まないと判定された場合、前記第１の認識ベクトルに前記第２の認識ベクトルをマージすることによって前記第１のメタデータのみをアップデートすることと、
（ｅ）上記（ａ）において、前記第１の認識ベクトルの前記第２のコンピュータシステムに対応する値が、前記第２の現在のバージョンを示す値を含まないと判定され、上記（ｃ）において、前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が、前記第１の現在のバージョンを示す値を含むと判定された場合、または上記（ｂ）において、前記第１の認識ベクトルが前記第２の競合解決バージョンの値を含まないと判定され、上記（ｃ）において、前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が前記第１の現在のバージョンを示す値を含むと判定され、前記第２の認識ベクトルが、前記第１のメタデータ内の前記第１の競合解決バージョンの値を含む場合、前記変更単位データの前記第１の複製に前記第２の複製をコピーし、前記第１の現在のバージョンを示す値を前記第２の現在のバージョンを示す値に変更し、前記第１の認識ベクトルと前記第２の認識ベクトルをマージすることによって、前記第１の複製と前記第１のメタデータとをアップデートすることと、
（ｆ）上記（ｂ）において、前記第１の認識ベクトルが前記第２の競合解決バージョンの値を含まないと判定され、上記（ｃ）において、前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が前記第１の現在のバージョンを示す値を含むと判定されて、前記第２の認識ベクトルが前記第１の競合解決バージョンの値を含まない場合、前記第１の現在のバージョンを示す値と前記第２の現在のバージョンを示す値を比較して、前記第１の現在のバージョンを示す値が前記第２の現在のバージョンを示す値よりも小さいとき、前記第１の認識ベクトルに前記第２の認識ベクトルをマージすることによって前記第１のメタデータのみをアップデートすることと、
（ｇ）上記（ａ）において、前記第１の認識ベクトルの前記第２のコンピュータシステムに対応する値が前記第２の現在のバージョンを示す値を含まないと判定され、上記（ｂ）において、前記第２の認識ベクトルの前記第１のコンピュータシステムに対応する値が前記第１の現在のバージョンを示す値を含まないと判定された場合、前記第１のコンピュータシステムと前記第２のコンピュータシステムとの間で前記変更単位データに対するアップデートが競合していると判定し、該競合を解決してアップデートを行うことであって、
前記変更単位データの前記第１の複製に前記第２の複製をコピーすることによって前記第１の複製をアップデートし、前記第１の現在のバージョンを示す値を前記第２の現在のバージョンを示す値に変更し、前記第１の認識ベクトルと前記第２の認識ベクトルをマージして、前記第１のコンピュータシステムにより前記競合が解決されたことを示すように前記第１の競合解決バージョンを変更することによって、前記第１のメタデータをアップデートすること、または
前記第１の認識ベクトルと前記第２の認識ベクトルをマージして、前記第１のコンピュータシステムにより前記競合が解決されたことを示すように前記第１の競合解決バージョンを変更することによって、前記第１のメタデータをアップデートすること
により、前記競合を解決してアップデートを行うことと、
（ｉｉｉ）前記第１のコンピュータシステムが、前記第１の認識ベクトルの送信に応答して前記第２のコンピュータシステムから前記第２のメタデータのみを受信したとき、前記第１の認識ベクトルに前記第２のメタデータに含まれる前記第２の認識ベクトルをマージすることによって前記第１のメタデータのみをアップデートすることと
を実行させるための手段を備えたことを特徴とするハードウェア制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概して、コンピュータシステムに渡るデータ同期に関し、より詳細には、ピアツーピア同期システムにおける競合の解決、および項目収束（ｉｔｅｍ  ｃｏｎｖｅｒｇｅｎｃｅ）（すなわち、データ収束（ｄａｔａ  ｃｏｎｖｅｒｇｅｎｃｅ））（つまり、同期用に用いられる変更単位に基づくデータ収束）を確実にするやり方での競合解決の伝播（ｐｒｏｐａｇａｔｉｎｇ）に関する。
【背景技術】
【０００２】
同期中に起こる競合は、ピアツーピア同期環境内の異なる同期パートナーによって異なるやり方で解決され得る。このようなピアツーピア同期環境の１つおよびその基底にあるハードウェア／ソフトウェアインターフェイスシステムは、（オペレーティングシステムなどだがそれに限定されない）ハードウェア／ソフトウェアインターフェイスシステムであり、このシステムでは、他のものの中でも、格納可能な情報（項目）からなる自立単位が、同期のための基本データ変更要素を構成するいくつかのコンポーネント変更単位（ＣＵ）を含む。各ＣＵは、ピアコンピュータシステム上でどのような変更がアップデートされる必要があるか、ならびに他のピアコンピュータシステムから受け取ったどのような変更が適用されるべきかを同期システムが追跡することを可能にするメタデータを関連づけている。
【０００３】
同期のための変更単位およびメタデータ（または類似の構造）を用いるシステム用の基本的な同期の例示的な一形式は概して、２つのピアコンピュータシステム上に存在する項目用の単一の変更単位に関して説明されることができる。この単一変更単位に関して、第１のピア、すなわちパートナーＡ（またはより簡単に「Ａ」）が、第２のピア、すなわちパートナーＢ（またはより簡単に「Ｂ」）に対して、変更単位の複製（ＣＵａ）に関する、Ａの現在のメタデータ（Ｍａ）をＢに送信することによって、変更を要求する。パートナーＢは、（ＣＵａに対応する）Ｍａを受信すると、このメタデータを、同じ変更単位の複製（ＣＵｂ）に関するＢ自体のメタデータ（Ｍｂ）と比較する。次いで、Ｍｂが、Ｍａで反映されていない、ＣＵｂに対するいずれかの変更を反映している場合、Ｂは、ＡにＣＵｂおよびＭｂ両方を送信する。それ以外の場合、Ｂは、ＡにＭｂのみを送信する（あるいは、「アップデートなし」というインジケータをＡに送信する）。というのは、ＣＵａは、ＣＵｂに対して行われたすべてのアップデートを既に反映しており、したがって、ＢからＡにＣＵｂをコピーする必要はないからである。
【０００４】
同期要求に対するＢの応答に基づいて、Ａが、ＣＵｂではなくＭｂのみ（あるいは、「アップデートなし」インジケータ）をＢから受信した場合、Ａは、ＣＵａが、ＣＵｂと同じであるか、それともＣＵｂよりもアップデートされているかを知る。しかし、Ａが、ＭｂおよびＣＵｂ両方をＢから受信した場合、Ａは、ＭａをＭｂと比較することによって、ＣＵｂが、ＣＵａよりもアップデートされているかどうか、またはＣＵａおよびＣＵｂが、競合する変更を有しているかどうか、判定しなければならない。ＣＵｂがＣＵａよりもアップデートされている場合、Ａは、ＣＵｂでＣＵａをアップデートし、また、ＭｂでＭａをアップデートする。反対に、ＣＵａおよびＣＵｂが、競合する変更を有している場合、Ａは、そのローカルな競合解決手順によってその競合を解決する。たとえば、この場合のＡの競合解決手順が、リモートなソリューションよりもローカルなソリューションを選ぶものである場合、Ａは、（ＣＵｂの変更を拒否して）ＣＵａをもち続け、ＭａおよびＭｂに既に反映されているすべてのアップデート（ＭａおよびＭｂの合併）を含むようにＭａをアップデートする。その後、Ｂが同じ手順を用いてＡと同期する（かつ、追加の変更が介入しないと仮定する）と、Ｂは、ＣＵａがそのＣＵｂよりもアップデートされていると結論づけ、ＣＵｂをＣＵａでアップデートする。
【０００５】
同期に対する、この基本的な変更単位およびメタデータ（ＣＵＡＭ）手法は、２つのピアからなる同期コミュニティにとって容易であり有効である。しかし、３つ以上のピアの場合、この容易な手法は、２つのシステムが異なる競合解決ソリューションに到達するが同一のメタデータをもち得るようなデータの拡散（ｄｉｖｅｒｇｅｎｃｅ）を生じる可能性があるので、この論理的な矛盾が、ピアコミュニティ内で認識されることも、適切に改められることもできない。（本明細書において、この現象の詳細な例が後で提示される。）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
すべてのピア上のデータを収束させるために、当該分野において必要とされるのは、すべての関連ピアに及ぶ１つの競合解決法に一致して収束させるために、同期コミュニティ内のピアの間で特定の競合解決を正しく識別し伝播させ、同じ競合に対する異なる解決法を調停する、様々なタイプの同期システムのための同期方法である。
【課題を解決するための手段】
【０００７】
本発明の様々な実施形態は、手作業での、および自動的な競合解決動作中に競合を検出し、競合解決を適用するシステムおよび方法を対象とする。いくつかの実施形態は、（ａ）最終的に、パートナーが、拡散したままの定常状態になり得る（すなわち、未解決の競合がない状態で、異なるデータを有する）場合の競合解決の非収束、および（ｂ）パートナーの間で、競合解決のピンポン（ｐｉｎｇ−ｐｏｎｇ）が終わらない状態（各競合解決のためのメタデータを絶え間なく無限にアップデートする、非効率な特定のソリューションの場合に起こり得る）両方を防ぐことを対象とする。本発明の具体的な特定の実施形態は、異なるパートナーが異なる競合解決を適用する場合でも、データの収束を保証する知識を維持する方法を対象とする。
【０００８】
上述の要約、ならびに以下の好ましい実施形態の詳細な説明は、添付の図面と併せ読むとよりよく理解されよう。本発明を説明するために、本発明の例示的な構成が図面に示される。ただし、本発明は、開示される特定の方法および手段に限定されない。
【発明を実施するための最良の形態】
【０００９】
本主題が、法的要件を満たすために明確に説明される。ただし、説明自体は、本特許の範囲を限定することを意図していない。そうではなく、本発明者は、特許請求の対象が、本文書において説明されるものと類似した、異なるステップまたはステップの組合せを含むように、現在または将来の他の技術とともに、他の方法でも実施されることを企図している。さらに、「ステップ」という用語は、本明細書において、利用される方法の異なる要素を意味するのに用いられ得るが、この用語は、個々のステップの順序が明確に記述されない限り、本明細書において開示される様々なステップの間のいかなる具体的な順序も含意すると解釈されるべきでない。
【００１０】
（コンピュータ環境）
本発明の数多くの実施形態が、コンピュータ上で実行されることができる。図１および以下の説明は、本発明が実装され得る適切な計算機環境の簡潔かつ全体的な説明を提供することを意図している。そうすることが必要なわけではないが、クライアントワークステーションやサーバなどのコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令という一般的なコンテキストにおいて本発明が説明される。概して、プログラムモジュールは、特定のタスクを実施し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。さらに、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの家電製品またはプログラム可能な家電製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなど他のコンピュータシステム構成とともに実施され得ることを当業者は理解するであろう。本発明は、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実施される分散型計算機環境でも実施されることができる。分散型計算機環境では、プログラムモジュールは、ローカルおよびリモートメモリ記憶装置両方に置かれ得る。
【００１１】
図１に示すように、例示的な汎用計算機システムは、従来のパーソナルコンピュータ２０などを含み、このコンピュータは、処理ユニット２１、システムメモリ２２、およびシステムメモリなど様々なシステムコンポーネントを処理ユニット２１に結合するシステムバス２３を含む。システムバス２３は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスなどいくつかのタイプのバス構造のいずれでもよい。システムメモリは、ＲＯＭ（読出し専用メモリ）２４およびＲＡＭ（ランダムアクセスメモリ）２５を含む。ＢＩＯＳ２６（基本入出力システム）は、たとえば起動中にパーソナルコンピュータ２０内部の要素間の情報の転送を助ける基本ルーチンを含み、ＲＯＭ２４に格納される。パーソナルコンピュータ２０は、図示していないハードディスクからの読出しおよびそこへの書込みを行うハードディスクドライブ２７、着脱式磁気ディスク２９からの読出しまたはそこへの書込みを行う磁気ディスクドライブ２８、および、たとえばＣＤ  ＲＯＭや他の光学媒体などの着脱式光ディスク３１からの読出しまたはそこへの書込みを行う光ディスクドライブ３０をさらに含むことができる。ハードディスクドライブ２７、磁気ディスクドライブ２８、および光ディスクドライブ３０は、それぞれハードディスクドライブインターフェイス３２、磁気ディスクドライブインターフェイス３３、および光ドライブインターフェイス３４によって、システムバス２３に接続される。こうしたドライブおよびそれに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶をパーソナルコンピュータ２０にもたらす。本明細書で説明される例示的な環境は、ハードディスク、着脱式磁気ディスク２９、および着脱式光ディスク３１を使用するが、コンピュータによってアクセス可能なデータを格納することができる、コンピュータ可読な他のタイプの媒体も、例示的な動作環境において使われ得ることが、当業者には理解されるべきである。このような他のタイプの媒体として、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ＲＡＭ（ランダムアクセスメモリ）、ＲＯＭ（読出し専用メモリ）などがある。
【００１２】
オペレーティングシステム３５、１つまたは複数のアプリケーションプログラム３６、他のプログラムモジュール３７、およびプログラムデータ３８などいくつかのプログラムモジュールが、ハードディスク、磁気ディスク２９、光ディスク３１、ＲＯＭ２４、またはＲＡＭ２５に格納されることができる。ユーザは、キーボード４０などの入力デバイス、およびポインティングデバイス４２を介して、コマンドおよび情報をパーソナルコンピュータ２０に入力することができる。他の入力デバイス（図示せず）は、マイクロホン、ジョイスティック、ゲーム用パッド、衛星パラボラアンテナ、スキャナなどを含み得る。こうしたおよび他の入力デバイスはしばしば、システムバスに結合されるシリアルポートインターフェイス４６を介して処理ユニット２１に接続されるが、他のインターフェイス、たとえば並列ポート、ゲームポート、ＵＳＢ（ユニバーサルシリアルバス）によって接続されることもできる。モニタ４７または他のタイプの表示デバイスも、ビデオアダプタ４８などのインターフェイスを介してシステムバス２３に接続される。モニタ４７に加え、パーソナルコンピュータは通常、他の周辺出力デバイス（図示せず）、たとえばスピーカおよびプリンタを含む。図１の例示的なシステムは、ホストアダプタ５５、ＳＣＳＩ（小型計算機システムインターフェイス）バス５６、およびＳＣＳＩバス５６に接続された外部記憶装置６２も含む。
【００１３】
パーソナルコンピュータ２０は、リモートコンピュータ４９など１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク接続された環境において動作することができる。リモートコンピュータ４９は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードでよく、通常、パーソナルコンピュータ２０に関連して上述した要素の多くまたはすべてを含むが、図１にはメモリ記憶装置５０のみが示されている。図１に示した論理接続は、ＬＡＮ（ローカルエリアネットワーク）５１およびＷＡＮ（ワイドエリアネットワーク）５２を含む。このようなネットワーク環境は、会社、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいてよく見られる。
【００１４】
ＬＡＮネットワーク環境において使われる場合、パーソナルコンピュータ２０は、ネットワークインターフェイスまたはアダプタ５３を介してＬＡＮ５１に接続される。ＷＡＮネットワーク環境において使われる場合、パーソナルコンピュータ２０は通常、モデム５４、または、たとえばインターネットなどのワイドエリアネットワーク５２を介した通信を確立する他の手段を含む。モデム５４は、内部にあっても外部にあってもよく、シリアルポートインターフェイス４６を介してシステムバス２３に接続される。ネットワーク接続された環境では、パーソナルコンピュータ２０に関連して図示したプログラムモジュールまたはその一部は、リモートメモリ記憶装置に格納されることができる。図示したネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段も使われ得ることが理解されよう。
【００１５】
本発明の数多くの実施形態は、コンピュータによるシステムに特に適合すると想像されるが、本文書のどの部分も、本発明をこのような実施形態に限定することを意図していない。反対に、本明細書で使用する「コンピュータシステム」という用語は、デバイスが本質的に電子、機械、論理、または仮想であるかに関わらず、情報を格納し処理することができ、かつ／またはこのようなデバイス自体の動作または実行を制御するのに、格納された情報を使うことができるあらゆるデバイスを包含することを意図する。
【００１６】
（基本同期スキーマおよび項目拡散）
本発明の特定の実施形態、たとえば項目ベースのシステムにとって、「変更単位」とは、本質的に、常に一単位として同期される１組のプロパティである。たとえば、連絡先項目の名前および名字というプロパティは合わせて、１個の変更単位を構成することができる。さらに、「バージョン」が、各変更単位に関連づけられて、アップデートが行われたときに対応するタイムスタンプとともに、その変更単位へのある特定の変更を最後に行ったパートナーを表す。したがって、表記を簡単にするため、本明細書で使用するパートナーは文字で表され、タイムスタンプは、整数を増やすことによって表され、その結果、パートナー（たとえば「Ａ」）およびタイムスタンプ（たとえば「１」）を単に対にすることによって、各変更単位はそれ自体を、各パートナーによって特定の時間に行われた最新の変更を反映する一意の識別番号、たとえば「Ａ１」に関連づけている。
【００１７】
本明細書において上で説明されたような（データの非収束を生じ得る）基本同期スキーマの場合、各変更単位に関するメタデータは、２つのコンポーネントを含む。すなわち、変更単位の現在の「アップデート」状況を示す現在のバージョン（ｃｖ）、ならびにピアコミュニティ内の各パートナー（あるいは少なくとも、何らかの変更を行ったパートナー）に関する、前記変更単位に起こったアップデートに対応する認識ベクトル（ａｖ）（別名、「バージョン配列」）である。変更単位のメタデータ用の一般的な形式は、＜変更バージョン，認識ベクトル＞、またはより簡単には、＜ｃｖ，［ａｖ］＞である。この情報はともに、たとえば、＜Ａ１３，［Ａ１３，Ｂ１１］＞というメタデータ（Ｍａ）をもつ、パートナーＡにおける変更単位（ＣＵａ）が、＜Ｂ１１，［Ａ１２，Ｂ１１］＞というメタデータ（Ｍｂ）をもつ、パートナーＢにおける変更単位（ＣＵｂ）よりもアップデートされていることを容易に判定するのに用いられ得る。というのは、各バージョン番号のタイムスタンプ部分が、時間とともに徐々に増加することを考えると、Ｍａは、Ｍｂに反映されていない変更（すなわちＡ１３）を含むからである。
【００１８】
図２は、最終的に競合解決の非収束（パートナーが拡散定常状態になり得る）を生じる、（３つのパートナーによる同期コミュニティのための）３つのピアによる同期動作を示す、テーブルに基づくタイムフロー図である。テーブル「Ｔ」の第１列は、イベントの相対的な時系列に対応し、第２、第３、および第４の列は、同期コミュニティ内の３つのパートナーシステムＡ、Ｂ、およびＣそれぞれにおけるアクティビティに対応する。便宜上、図に示されるように、各パートナーＡ、Ｂ、およびＣにおける変更単位の複製に対する時間０での初期状態は、完全に同期した状態で始まり、この状態において、各パートナーＡ、Ｂ、およびＣに関する変更単位の複製は、対応する各列のデータによって個別に表されている。
【００１９】
時間１で、Ａは、変更単位の複製（これ以降、ＣＵａ）中のデータをアップデートし、そのアップデートを、新しい値（Ａ１１）でｃｖを増分しアップデートされた状態を反映するようにａｖをアップデートすることによって反映させる。時間２で、Ｂも、変更単位の複製（これ以降、ＣＵｂ）中のデータを独自にアップデートし、ｃｖおよびａｖを適切にアップデートする。
【００２０】
時間３で、ＣがＢと同期して、第１の同期動作が起こる。動作の際、本明細書において上で説明した論理を用いて、Ｃは、そのメタデータ（Ｍｃ）をＢに送り、Ｂは、応答として、その変更単位のコピー（ＣＵｂ）およびそれに関連するメタデータ（Ｍｂ）両方を、さらに処理させるためにＣに送る。Ｃは、ＣＵｂおよびＭｂを受け取ると、ＡＶｃのすべてがＡＶｂに反映されているのにＢの認識ベクトル（ＡＶｂ）中のバージョン「Ｂ１１」がＣの認識ベクトル（ＡＶｃ）に反映されていないので、ＣＵｂおよびＭｂがＣＵｃおよびＭｃより現在のものに近いことを突き止め、したがってこのことは、ＣＵｂが、ＣＵｃに関して「最終アップデート済み」である（より最新のものである）ことを意味する。その結果、Ｃは、ＣＵｂのデータでＣＵｃをアップデートし、Ｍｂのメタデータで、関連するメタデータＭｃをさらにアップデートする。
【００２１】
時間４で、Ｂは次いで、パートナーＡと同期し、Ａの変更単位（ＣＵａ）およびメタデータ（Ｍａ）を（ここでは便宜上説明が省略されるが、後で論理的に説明されるやり方によって）受け取った後、Ｂは、ＢおよびＡ両方がそれぞれの変更単位の複製ＣＵｂおよびＣＵａに対して個別に変更を行っているので、競合が存在することを突き止める。Ｂは次いで、その競合解決プロセス（この例では、「リモートを選択」、つまり、そのローカルバージョンよりもリモートバージョンを選ぶことである）を利用して、ＣＵｂよりもＣＵａを選び（ＣＵａのデータをＣＵｂにコピーし）、その現在のバージョン（ＣＶｂ）をＡ１１に変更しＢおよびＡ両方の認識ベクトル（ＡＶｂおよびＡＶａ）をマージさせることによってこの解決法をメタデータに反映させる。
【００２２】
時間５で、Ｃは次いで、パートナーＡと同期し、Ａの変更単位（ＣＵａ）およびメタデータ（Ｍａ）を受け取った後、Ｃもやはり、ＣおよびＡ両方がそれぞれの変更単位の複製ＣＵｃおよびＣＵａに対して個別に変更を行っているので、競合が存在することを突き止める（しかし実際には、ＣＵｃの変更は、時間３でＣがＢと同期した結果によるが、この違いは重要でない）。競合により、Ｃは次いで、その競合解決プロセス（この例では、「ローカルを選択」、つまり、リモートバージョンよりもＣのローカルバージョンを選ぶことである）を利用して、ＣＵａよりもＣＵｃを選び（変更単位データをさらにコピーする必要はない）、その現在のバージョン（ＣＶｃ）をＢ１１としてもち続けＣおよびＡ両方の認識ベクトル（ＡＶｃおよびＡＶａ）をマージさせることによってこの解決法をメタデータに反映させる。
【００２３】
時間６で、Ａは次いで、Ｂと同期し、交換したメタデータ（ＡがＢにＭａを送り、次いでＢが、ＣＵａとともにＭｂをＡに戻す）に基づいて、Ａは、（ＭｂはＭａのすべてを反映し、バージョンＢ１１も反映しているが、Ｍａは反映していないので）ＣＵｂおよびＭｂがＣＵａおよびＭａよりもアップデートされていると認識し、したがってＡは、そのＣＵａおよびＭａにＣＵｂおよびＭｂを適用する（ただし、この場合、ＣＵｂおよびＣＵａは実際には同じもの、つまりＡ１１であり、したがって代替実施形態では、Ｂは、この事実を認識し、ＣＵｂを送らなくてもよく、Ａも、ＣＵａにＣＵｂにコピーしなくてもよいことが留意されるべきである）。
【００２４】
最後に、時間７で、Ａは次いで、Ｃと同期するが、ＭａがＭｃと同一なので、Ｃは、ＡにＣＵｃを送らず、したがって、ＡおよびＣそれぞれにおけるＣＵａおよびＣＵｃのデータは拡散しており、現在の同期システムによって認識されることができず調停されにくい状態にある。
【００２５】
（競合解決の伝播）
本発明のいくつかの実施形態は、手作業での、および自動的な競合解決動作中に競合を検出し、競合解決を適用するシステムおよび方法を対象とする。というのは、たとえば、バージョンＡ１とＢ２の間に、Ａ１のためにはパートナーＸによって、かつＢ２のためにはパートナーＹによって解決される競合が存在する場合などに、異なるピア（「パートナー」）は、同じ競合を異なるやり方で解決し得るからである。
【００２６】
本発明の様々な実施形態は、（未解決の競合がない場合に異なるデータをもつことなどによって、パートナーが拡散した定常状態になり得る）競合解決の非収束、およびパートナーの間の競合解決の無限ピンポンを防止する１つまたは複数の方法を利用する。
【００２７】
いくつかの本発明の実施形態の場合、同期用メタデータは、変更バージョン（ｃｖ）および認識ベクトル（ａｖ）を含むだけでなく、拡散状態につながり得る競合解決を特に追跡する競合解決バージョン（ｃｒｖ）をさらに含む。変更単位のメタデータへのｃｒｖの追加に基づいて、同期プロセスは、本明細書において説明されるように、メタデータ中のこの新しい要素を使うように修正される。便宜上、ｃｖ、ｃｒｖ、およびａｖを含む前記同期メタデータは、変更単位の各複製（たとえば、＜Ａ１０，Ｂ１２，［Ａ１１，Ｂ１２，Ｃ１０］＞に対して、＜ｃｖ，ｃｒｖ，［ａｖ］＞の形で表されることができる。
【００２８】
図３は、本発明のいくつかの実施形態で用いられる、メタデータへのｃｒｖの追加に基づく改良された同期プロセス、および本明細書において説明されるようにメタデータを修正する他のプロセスを示すプロセスフロー図である。図３において、プロセスは、ステップ３１２で始まり、第１のパートナーＰ１（別のピアとの同期を捜し求めているパートナー）が、そのローカルな変更単位の複製（ＣＵ１）の認識ベクトル（ＡＶ１）をＰ２に送ることによって、第２のパートナーＰ２との同期動作を開始する。Ｐ２は、Ｐ１からＡＶ１を受け取った後、ステップ３１６で、ＡＶ１が、それ自体の、ローカルであるが対応する変更単位の複製（ＣＵ２）の現在のバージョン（ＣＶ２）を含むかどうか最初に判定し、含む場合、ステップ３１８で、Ｐ２は、ＡＶ１がＣＵ２（存在する場合）の競合解決バージョン（ＣＲＶ２）も含むかどうかも判定する。ＡＶ１が、こうした条件両方を満たす場合、次いで、ステップ３２０で、Ｐ２は、ＣＵ２自体を送らずに、ＣＶ２、ＣＲＶ２、およびＡＶ２を含む、Ｐ２がもつＣＵ２のメタデータ（Ｍ２）を直ちにＰ１に送る。ＡＶ１がＣＲＶ２を含まない場合、ステップ３２２で、Ｐ２は、Ｐ１にＣＵ２を送り、かつ、ステップ３２０で、Ｍ２を送る。
【００２９】
Ｐ１に戻ると、ステップ３２４で、Ｐ１は最初に、Ｐ２からＣＵ２を受け取ったかどうか判定する。受け取っていない場合、次いで、Ｐ１は、その変更単位の複製（ＣＵ１）がＰ１とＰ２の間に関して最も新しいアップデートを反映していると結論づけることができ、したがってステップ３２６で、Ｐ１は、（必要な場合）ＡＶ２でＡＶ１を単にアップデートし、そうすることによって、ＡＶ１は、（まだ反映していない場合）ＡＶ２中のすべてのアップデートバージョンを反映し、同期プロセスは終わる。
【００３０】
逆に、ステップ３２４で、Ｐ１がＰ２からＣＵ２を実際に受け取っていた場合、ステップ３２８で、Ｐ１は、ＣＶ２によって反映されるバージョンをＡＶ１が含むかどうか最初に判定しなければならず、含む場合、ステップ３３０で、ＣＲＶ２によって反映されるバージョンをＡＶ１が含むかどうかも判定しなければならない。含む場合、次いで、Ｐ１は、やはりステップ３２６に進んで、（必要な場合）ＡＶ１をアップデートし、同期プロセスは終わる。反対に、ＡＶ１が、ステップ３２８で、ＣＶ２によって反映されるバージョンを含むが、ステップ３３０で、ＣＲＶ２によって反映されるバージョンを含まないとＰ１が判定した場合、ステップ３３２で、Ｐ１は、ＣＶ１によって反映されるバージョンの少なくとも一部をＡＶ２が含むかどうか判定する。「一部」という言葉は、特定の代替実施形態の場合、ＣＶ１が１組の複数のｃｖ値であり得ることを期待しているが、この例のように１個のｃｖ値の場合は、問題となっているｃｖ値を含むことと同じであり（したがって、１個のｃｖの組に対してステップ３３４がある程度重複する）、したがって、１個のｃｖの組においてステップ３３４に自動的に進むことになるが、これは全体を通して用いられるケースであり、ＡＶ２がＣＶ１の一部を含まない場合、ステップ３２６で、Ｐ１は、（必要な場合）ＡＶ２でＡＶ１をやはりアップデートし、同期プロセスは終わる。
【００３１】
対照的に、ステップ３２８で、ＡＶ１がＣＶ２を含まない場合、またはステップ３３２で、ＡＶ２がＣＶ１の一部を実際に含む場合、ステップ３３４で、Ｐ１は次に、ＡＶ２がＣＶ１を含むかどうか判定する。含む場合、ステップ３３６で、Ｐ１は、ＣＶ２によって反映されるバージョンの少なくとも一部をＡＶ１が含むかどうか突き止め、含まない場合、ステップ３３８で、Ｐ１は、ＣＵ１にＣＵ２を適用し（またはＣＵ２からＣＵ１にデータをコピーし）、（ＣＶ１、ＣＲＶ１、ＡＶ１を含む）対応するメタデータＭ１を、＜ＣＶ２，ＣＲＶ２，ＡＶ１＋ＡＶ２＞という値（ＡＶ１＋ＡＶ２は、各認識ベクトルの最新バージョンの合併であり、たとえば、ＡＶ１＝［Ａ１１，Ｂ１０，Ｃ１０］、かつＡＶ２＝［Ａ１０，Ｂ１１，Ｃ１２］の場合、ＡＶ１＋ＡＶ２＝［Ａ１１，Ｂ１１，Ｃ１２］となる）に設定し、同期プロセスは終わる。しかし、ステップ３３６で、ＡＶ１がＣＶ２の一部を実際に含むとＰ１が判定した場合、ステップ３４０で、Ｐ１は、ＡＶ２がＣＲＶ１を含むかどうかも判定し、含む場合、Ｐ１は、やはりステップ３３８に進んで、上で説明したようにＣＵ２を適用し、同期プロセスは終わる。
【００３２】
別法では、ステップ３３４で、ＡＶ２がＣＶ１を含まないとＰ１が判定した場合、またはステップ３４０で、ＡＶ２がＣＲＶ１を含まないとＰ１が判定した場合、いずれの場合も、Ｐ１は、ステップ３４２で、ＡＶ１がＣＶ２を含むかどうか突き止め、含む場合、ステップ３４４で、Ｐ１は、「特殊な処理」を利用して、ソリューション（競合が存在しないので）を選び、その後、同期プロセスを終える。ＡＶ１がＣＶ２を含まない場合、ステップ３４６で、Ｐ１は、「競合プロセス」（または競合解決プロセス）を開始して、競合を解決し、２組のデータの間の勝者を選び、同期プロセスを終える。
【００３３】
（高度な同期スキーマおよび項目収束（すなわち、データ収束））
図３で説明し図示した上記の方法を用いることによって、（基本同期スキーマでの場合のように）異なる変更単位値をもつが同じメタデータをもつ２つの変更単位の複製が認識されず、拡散状態のまま放置されるという状況が回避され、図４は、図２に示されるのと同様のシナリオを使用するが図３に示される本発明の方法を適用することによって、この点を説明する。
【００３４】
より具体的には、図４は、最終的に競合解決の収束を生じる、３つのピアによる同期動作を示す、テーブルを基にしたタイムフロー図である。さらに、図５は、図３に示すプロセスの結果生じる特定の最終状態に対する具体的な処理および競合プロセスに関する、結果として生じるメタデータ、ならびに（新規ローカル変更は同期動作の直接の一部ではないので、比較のためだが、時間１および２において後で説明されるように、ローカルなアップデートに対してメタデータがどのように変わるかの理解のために）新規ローカル変更に関するメタデータを示すテーブルである。
【００３５】
再度図４を参照すると、テーブル「Ｔ」の第１列は今回も、イベントの相対的な時系列に対応し、第２、第３、および第４の列は、同期コミュニティ内の３つのパートナーシステムＡ、Ｂ、およびＣそれぞれにおけるアクティビティに対応する。便宜上、図に示されるように、各パートナーＡ、Ｂ、およびＣにおける変更単位の複製に対する時間０での初期状態は、完全に同期した状態で始まり、この状態において、各パートナーＡ、Ｂ、およびＣに対する変更単位の複製は、対応する各列のデータによって個別に表されている。
【００３６】
時間１で、Ａは、変更単位の複製（これ以降、ＣＵａ）中のデータをアップデートし、そのアップデートを、新しい値（Ａ１１）でその現在のバージョン（ｃｖ）を増分しアップデートされた状態を反映するように認識ベクトル（ａｖ）をアップデートすることによって反映させ、競合解決バージョン（ｃｒｖ）には、（競合が解決されなかったので）アップデートが行われない。時間２で、Ｂも、変更単位の複製（これ以降、ＣＵｂ）中のデータを独自にアップデートし、対応するそのメタデータ（Ｍｂ）コンポーネントを図に示すように適切にアップデートする。（これ以降、便宜上、各パートナーｃｖ、ｃｒｖ、およびａｖは、パートナーごとに、たとえば、ピアＡのメタデータコンポーネントに対してはＣＶａ、ＣＲＶａ、およびＡＶａと示され、パートナーＢおよびＣにおける対応するメタデータの場合も同様の名称となる。同じことが集合メタデータにも適用され、たとえば、システムＡ用はＭａ、変更単位に関しては、たとえばシステムＡ用はＣＵａ、などとなる。）
時間３で、ＣがＢと同期して、第１の同期動作が起こる。図３のフローチャートで示される方法を用いて、Ｃは、ＢにＡＶｃを送り、Ｂは、ＣにＣＵｂおよびＭｂ両方を返す。ＭｂおよびＭｃを分析することにより、Ｃは、ＣＵｂがＣＵｃよりもアップデートされていると判定することができ、最終的に、ＣＵｂを適用し（すなわち、ＣＵｃにＣＵｂをコピーし）、そのメタデータＭｃコンポーネントＣＶｃ、ＣＲＶｃ、およびＡＶｃを、＜ＣＶｂ，ＣＲＶｂ，ＡＶｃ＋ＡＶｂ＞に等しい値にアップデートする（ここで、ＡＶｃ＋ＡＶｂは、本明細書において上で説明したように、ＡＶｃとＡＶｂの合併である）。より具体的には、図３で示されるプロセスに関して、論理プロセスは、ステップ３１２、３１６、３２２、３２０、３２４、３２８、３３４、３３６、３４０、および３３８をこの順序でトラバースする。（結果は、本明細書において上で説明した基本同期システムから予期されるであろう結果と同様であることに留意されたい。）
再度図４を参照すると、時間４で、Ｂは次いで、パートナーＡと同期し、Ａの変更単位（ＣＵａ）およびメタデータ（Ｍａ）を（やはり図３のフローチャートで示される方法に従って）受け取った後、Ｂは、ＢおよびＡ両方がそれぞれの変更単位の複製ＣＵｂおよびＣＵａに対して個別に変更を行っているので、競合が存在することを突き止め、その競合解決プロセスを利用する。より具体的には、図３で示されるプロセスに関して、論理プロセスは、ステップ３１２、３１６、３２２、３２０、３２４、３２８、３３４、３４２、および３４６をこの順序でトラバースする。競合を解決するために、Ｂは、その競合解決手順に従って、ローカルなアップデートよりもリモートなアップデートを選び、その結果得られるＭｂのメタデータの値は、図５に示されるように、＜ＣＶａ，ＣＲＶｎｅｗ，ＡＶａ＋ＡＶｂ＋ＣＲＶｎｅｗ＞であり、ここで、ＣＲＶｎｅｗの「ｎｅｗ」は、パートナーＢ用の次の増分アップデートバージョンであり（たとえば、この例では、時間２での変更に対する最終アップデートバージョンはＢ１１であったので、この競合解決用の次の増分アップデートバージョンはＢ１２である）、ＣＲＶｂおよびＡＶｂ両方（ただしＣＶｂは除く）が、時間４でのＭｂの最終状態に対して、図４に示すようにこの新しい値を反映する。
【００３７】
時間５で、Ｃは次いで、パートナーＡと同期し、Ａの変更単位（ＣＵａ）およびメタデータ（Ｍａ）を受け取った後、Ｃもやはり、（３１２、３１６、３２２、３２０、３２４、３２８、３３４、３４２、および３４６をこの順序でトラバースする図３のプロセスによって）ＣおよびＡ両方がそれぞれの変更単位の複製ＣＵｃおよびＣＵａに対して個別に変更を行っているので、競合が存在することを突き止める（しかし実際には、ＣＵｃの変更は、時間３でＣがＢと前に同期していた結果によるが、この違いは重要でない）。競合により、Ｃは次いで、その競合解決プロセス（この例では、リモートなアップデートよりもローカルなアップデートを選択することである）を利用して、ＣＵａよりもＣＵｃを選び、この選択は、図５に示されるように、＜ＣＶｃ，ＣＲＶｎｅｗ，ＡＶａ＋ＡＶｃ＋ＣＲＶｎｅｗ＞としてメタデータに反映され、ここで、やはりＣＲＶｎｅｗは、パートナーＣ用の次の増分アップデートバージョン（たとえば、この例ではＣ１１）であり、時間５でのＭｃの最終状態に関して図４に示すように、得られたＣＲＶｃおよび得られたＡＶｃ両方（ただしＣＶｃを除く）によって反映されている。
【００３８】
時間６で、Ａは次いで、Ｂと同期し、交換したメタデータ（ＡがＢにＭａを送り、次いでＢが、ＣＵａとともにＭｂをＡに戻す）に基づいて、Ａは、（ＭｂはＭａのすべてを反映し、バージョンＢ１１も反映しているが、Ｍａは反映していないので）ＣＵｂおよびＭｂがＣＵａおよびＭａよりもアップデートされていると認識し、したがってＡは、図に示されるようにそのＣＵａおよびＭａにＣＵｂおよびＭｂの値を適用する（ただし、この場合、ＣＵｂおよびＣＵａは実際には同じもの、つまりＡ１１であり、したがって代替実施形態では、Ｂは、この事実を認識し、ＣＵｂを送らなくてもよく、Ａも、ＣＵａにＣＵｂにコピーしなくてもよいことが留意されるべきである）。図３に関して、この同期のための具体的なトラバースは、３１２、３１６、３１８、３２２、３２０、３２４、３２８、３３４、３３６、３４０、および３３８の順序である。
【００３９】
再度図４に戻ると、時間７で、Ａは次いで、Ｃと同期するが、競合が起きたときに、本明細書において上で説明した、競合解決バージョン（ｃｒｖ）と認識バージョン（ａｖ）へのｃｒｖの論理的な組込みとを使用したことにより、Ｍａは、もはやＭｃと同一ではない（標準同期スキーマを用いる場合に起こる）ので、Ｃは、ＣＵｃおよびＭｃを、（図３で説明されたプロセスに従って）さらに処理させるためにＡに実際に送り、Ａは最終的に、（図３のプロセスを、ステップ３１２、３１６、３１８、３２２、３２０、３２４、３２８、３３０、３３２、３３４、３３６、３４０、３４２、および３４４の順序でトラバースすることによって）特殊な処理をとる。この特殊な処理は、具体的には項目収束（すなわち、データ収束）の施行を意図しており、次いで、同期コミュニティ内で、他のアップデートよりもある１つのアップデート（たとえば、この例では、アップデート番号が最も小さいアップデートであり、このアップデートはやはり、一意のコンピュータシステムｉ．ｄ．および前記アップデートに対するタイムスタンプの組合せである）が全域において選択されるようにする決定論的なソリューションに到達する方法を利用する。このソリューションは次いで、図５に示す、アップデートされたメタデータ＜ＣＶｄｅｔ，ＣＲＶｄｅｔ，ＡＶ１＋ＡＶ２＞と結合され、あるいは、「Ａ１１」の対応する値が「Ｂ１１」の対応する値より小さく、したがってＡ１１が決定されたソリューションである場合、メタデータＭａは、図４に時間７で示す値をもつ＜ＣＶａ，ＣＲＶａ，ＡＶａ＋ＡＶｃ＞となる。
【００４０】
図４の時間８および時間９で、次いで、時間７でのこの特殊な処理によるソリューションがどのようにして同期コミュニティに伝播し、最終的に項目収束（すなわち、データ収束）（各システムにおける変更単位はやはり同一である）をもたらすかが容易に明らかになる。時間８で、方法の（図３に示されるプロセスのステップ３１２、３１６、３１８、３２０、３２４、および３２６による）論理プロセスのトラバースは、ＭｂのＡＶｂのアップデートを生じる。時間９で、方法の（図３に示されるプロセスのステップ３１２、３１６、３１８、３２２、３２０、３２４、３２８、３３０、３３２、３３４、３３６、３４０、および３３８による）論理プロセスのトラバースは、ＣＵｃおよびＭｃへのＣＵｂおよびＭｂの適用を生じ、ここで、得られるメタデータＭｃは、＜ＣＵｂ，ＣＲＶｂ，ＡＶｂ＋ＡＶｃ＞に等しい値を含む。
【００４１】
（項目収束（すなわち、データ収束）のための代替方法）
本発明の代替実施形態では、項目収束（すなわち、データ収束）は、競合時にすべての競合解決に対して特殊処理の決定論的手法を利用することによっても確実に行われる。ただし、この方法は、項目収束（すなわち、データ収束）を確実にする基本同期スキーマも可能にするが、必ずしも拡散し得るわけではない競合に対する恣意的な解決ももたらすので、本明細書において上で説明した高度な同期方法ほど堅牢ではない。
【００４２】
（結論）
本明細書で説明した様々なシステム、方法、および技術は、ハードウェアまたはソフトウェア、あるいはそうすることが適切な場合には、両方の組合せを用いて実装されることができる。したがって、本発明の方法および装置、あるいは本発明の特定の態様または部分は、実体のある媒体、たとえばフロッピー（登録商標）ディスケット、ＣＤ−ＲＯＭ、ハードドライブ、または他のどのマシン可読記憶媒体においても実施されるプログラムコード（すなわち、命令）の形をとることができ、プログラムコードがコンピュータなどのマシンにロードされるとともにそれによって実行されると、マシンは本発明を実施する装置となる。プログラム可能なコンピュータ上でのプログラムコードの実行の場合、コンピュータは概して、プロセッサ、プロセッサによって読取り可能な記憶媒体（揮発性、不揮発性メモリおよび／または記憶要素など）、少なくとも１つの入力デバイス、ならびに少なくとも１つの出力デバイスを含む。１つまたは複数のプログラムは好ましくは、高度な手続き型プログラミング言語またはオブジェクト指向プログラミング言語で実装されて、コンピュータシステムと通信する。ただし、プログラム（群）は、そうすることが望まれる場合、アセンブリでも機械言語でも実装されることができる。いずれの場合でも、言語は、コンパイル型言語でもインタープリト型言語でもよく、ハードウェアの実装と組み合わされることができる。
【００４３】
本発明の方法および装置は、たとえば、電気的接続またはケーブル布線、光ファイバ、あるいは他のどの伝送の形でもよい何らかの伝送媒体を介して伝送されるプログラムコードの形で実現されることもでき、プログラムコードが受信され、たとえばＥＰＲＯＭ、ゲートアレイ、ＰＬＤ（プログラム可能な論理回路）、クライアントコンピュータ、ビデオレコーダなどのマシンにロードされるとともにそれによって実行されると、マシンは、本発明を実施する装置となる。汎用プロセッサ上で実装されると、プログラムコードは、プロセッサと結合して、本発明の索引づけ機能を実施するように動作する独自の装置を提供する。
【００４４】
本発明は、様々な図面の好ましい実施形態に関連して説明されたが、本発明から逸脱することなく本発明の同じ機能を実施するために、他の類似の実施形態が使用されることもでき、説明した実施形態に修正および追加が行われ得ることが理解されるべきである。たとえば、例示的な本発明の実施形態は、パーソナルコンピュータの機能をエミュレートするデジタルデバイスという状況で説明されているが、本発明は、このようなデジタルデバイスに限定されず、本出願において述べたように、有線または無線に関わらず、任意の数の既存または新興の計算装置または環境、たとえばゲーム用コンソール、ハンドヘルドコンピュータ、可搬型コンピュータなどにも当てはまり、通信ネットワークを介して接続され、ネットワーク経由で相互作用するこのような任意の数の計算装置に適用され得ることを当業者は理解するであろう。さらに、ハンドヘルドデバイスのオペレーティングシステムおよび他のアプリケーション特有のハードウェア／ソフトウェアインターフェイスシステムを含む様々なコンピュータプラットフォームが本明細書において企図され、特に、無線ネットワーク接続された装置の数は増加し続けることが強調されるべきである。したがって、本発明は、どの１つの実施形態にも限定されるべきではなく、添付の特許請求の範囲による広がりおよび範囲内で解釈されるべきである。
【図面の簡単な説明】
【００４５】
【図１】本発明の態様が組み込まれ得るコンピュータシステムを表すブロック図である。
【図２】最終的に競合解決の非収束（パートナーが拡散定常状態になり得る）を生じる、３つのピアによる同期動作を示す、テーブルを基にしたタイムフロー図である。
【図３】本発明のいくつかの実施形態で用いられる、改良された同期プロセスを示すプロセスフロー図である。
【図４】最終的に競合解決の収束を生じる、３つのピアによる同期動作を示す、テーブルを基にしたタイムフロー図である。
【図５】図３に示すプロセスの結果生じる特定の最終状態に対する具体的な処理および競合プロセスに関する、結果として生じるメタデータ、ならびに（新規ローカル変更は同期動作の直接の一部ではないので、比較のために）新規ローカル変更に関するメタデータを示すテーブルである。
【符号の説明】
【００４６】
２０  コンピュータ
２１  処理ユニット
２２  システムメモリ
２３  システムバス
２７  ハードドライブ
２８  フロッピー（登録商標）ドライブ
２９  着脱式記憶装置
３０  光ドライブ
３２  ハードディスクドライブＩ／Ｆ
３３  磁気ディスクドライブＩ／Ｆ
３４  光ドライブＩ／Ｆ
３６  アプリケーションプログラム
３６’  アプリケーション
３７  他のプログラム
３８  プログラムデータ
４０  キーボード
４２  マウス
４６  シリアルポートＩ／Ｆ
４７  モニタ
４８  ビデオアダプタ
４９  リモートコンピュータ（群）
５０  フロッピー（登録商標）ドライブ
５３  ネットワークＩ／Ｆ
５４  モデム
５５  ホストアダプタ
５６  ＳＣＳＩバス
６２  記憶装置
【図１】
0004690076.tif 000002
【図２】
0004690076.tif 000003
【図３】
0004690076.tif 000004
【図４】
0004690076.tif 000005
【図５】
0004690076.tif 000006