(57)【要約】【課題】同期化中に大きな非構造化ＭＥファイルストリームのスナップショットの作成が可能ではないハードウェア／ソフトウェアインターフェースシステム環境におけるピアコンピュータシステム間で、構造化データコンポーネントおよび非構造化ファイルストリームを含む混合要素（ＭＥ）を同期化するシステムおよび方法を提供すること。【解決手段】ＭＥの同期化を２ステップで行うことを含み、その１つはＭＥの構造化データコンポーネント（および、ファイルストリーム自体ではなく、ファイルストリームのｃｖ）のスナップショットを作成するステップであり、もう１つは、ファイルストリームがロックされた後ファイルストリームがＭＥデータコンポーネントのスナップショット作成時から改変されていないと判断された場合にかつその場合に限り、ファイルストリームを受け取る側の同期ピアに送信するステップである。【選択図】図４
2006178932.tif 000002
【特許請求の範囲】
【請求項１】
ファイルストリームのスナップショットの作成が可能ではないハードウェア／ソフトウェアインターフェースシステム環境における構造化データコンポーネントおよび非構造化ファイルストリームを含む混合要素を同期化する方法であって、
前記構造化データコンポーネントのスナップショットを作成するステップと、
前記非構造化ファイルストリームをロックするステップと、
前記構造化データコンポーネントのスナップショット作成時から前記非構造化ファイルストリームのロック時までの間に前記ファイルストリームが変更されたかどうかを判断するステップと、
前記構造化データコンポーネントのスナップショット作成時から前記非構造化ファイルストリームのロック時までの間に前記ファイルストリームが変更されなかった場合に、前記非構造化ファイルストリームを同期ピアにコピーし、コピーが終了すると前記非構造化ファイルストリームをアンロックするステップと
を備えることを特徴とする方法。
【請求項２】
前記構造化データコンポーネントのスナップショット作成時から前記非構造化ファイルストリームのロック時までの間に前記ファイルストリームが変更されたかどうかを判断する前記ステップは、
前記構造化データコンポーネントのスナップショット作成時に前記非構造化ファイルストリームの第１の変更値を決定するステップと、
前記非構造化ファイルストリームがロックされた後に前記非構造化ファイルストリームの第２の変更値を決定するステップと、
前記構造化データコンポーネントのスナップショット作成時から前記非構造化ファイルストリームのロック時までの間に、非構造化ファイルストリームが変更されたかどうかを確認するために、前記第２の変更値を前記第１の変更値と比較するステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記構造化データコンポーネントのスナップショット作成時から前記非構造化ファイルストリームのロック時までの間に非構造化ファイルストリームが変更されていた場合に、同期ピアに例外をもたらし、前記非構造化ファイルストリームをアンロックするステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項４】
前記構造化データコンポーネントのスナップショットを作成する前記ステップは
前記構造化データコンポーネントが同期ピアにコピーされている間に、該構造化データコンポーネントに対する変更を防ぐステップと、
前記構造化データが同期ピアにコピーされている間に前記構造化データを変更するようなプロセス用に前記構造化データコンポーネントの第１のコピーを作成し、そのプロセスが前記構造化データではなく前記第１のコピーを変更できるようにするステップと、
前記構造化データが同期ピアにコピーされると、前記構造化データを前記第１のコピーで更新するステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記非構造化ファイルストリームをロックするステップは、トランザクションリード動作で達成されることを特徴とする請求項１に記載の方法。
【請求項６】
前記非構造化ファイルストリームをロックするステップ中に前記非構造化ファイルストリームがロックできない場合、同期ピアに例外をもたらし、（ａ）前記非構造化ファイルストリームがロックされた後に前記非構造化ファイルストリームの第２の変更値を決定するステップと、（ｂ）前記第１の変更値と比較した前記第２の変更値が、前記構造化データコンポーネントのスナップショット作成時から前記非構造化ファイルストリームのロック時までの間に前記ファイルストリームが変更されなかったことを示す場合に、前記非構造化ファイルストリームを同期ピアにコピーし、コピーが終了すると前記非構造化ファイルストリームをアンロックするステップとをいずれも実行しないことを特徴とする請求項１に記載の方法。
【請求項７】
前記方法の各ステップを実施する手段を備えるハードウェア制御デバイスで実施されることを特徴とする請求項１に記載の方法。
【請求項８】
ファイルストリームのスナップショットの作成が可能ではないハードウェア／ソフトウェアインターフェースシステム環境における構造化データコンポーネントおよび非構造化ファイルストリームを含む混合要素を同期化するためのコンピュータ可読命令を含むコンピュータ可読媒体であって、前記コンピュータ可読命令は
前記構造化データコンポーネントのスナップショットを作成するステップのための命令と、
前記非構造化ファイルストリームをロックするステップのための命令と、
前記構造化データコンポーネントのスナップショット作成時から前記非構造化ファイルストリームのロック時までの間に前記ファイルストリームが変更されたかどうかを判断するステップのための命令と、
前記構造化データコンポーネントのスナップショット作成時から前記非構造化ファイルストリームのロック時までの間に前記ファイルストリームが変更されなかった場合に、前記非構造化ファイルストリームを同期ピアにコピーし、コピーが終了すると前記非構造化ファイルストリームをアンロックするステップのための命令と
を含むことを特徴とするコンピュータ可読媒体。
【請求項９】
前記構造化データコンポーネントのスナップショット作成時から前記非構造化ファイルストリームのロック時までの間に前記ファイルストリームが変更されたかどうかを判断する前記ステップのための命令は、
前記構造化データコンポーネントのスナップショット作成時に前記非構造化ファイルストリームの第１の変更値を決定する命令と、
前記非構造化ファイルストリームがロックされた後に前記非構造化ファイルストリームの第２の変更値を決定する命令と、
前記構造化データコンポーネントのスナップショット作成時から前記非構造化ファイルストリームのロック時までの間に非構造化ファイルストリームが変更されたかどうかを確認するために前記第２の変更値を前記第１の変更値と比較する命令と
をさらに含むことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１０】
前記構造化データコンポーネントのスナップショット作成時から前記非構造化ファイルストリームのロック時までの間に非構造化ファイルストリームが変更されていた場合に、同期ピアに例外をもたらし、前記非構造化ファイルストリームをアンロックするステップのための命令をさらに含むことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１１】
前記構造化データコンポーネントのスナップショットを作成する前記ステップのための命令は
前記構造化データコンポーネントが同期ピアにコピーされている間に、該構造化データコンポーネントに対する変更を防ぐ命令と、
前記構造化データが同期ピアにコピーされている間に前記構造化データを変更するようなプロセス用に前記構造化データコンポーネントの第１のコピーを作成し、前記プロセスが前記構造化データではなく前記第１のコピーを変更できるようにする命令と、
前記構造化データが同期ピアにコピーされると、前記構造化データを前記第１のコピーで更新する命令と
をさらに含むことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１２】
さらに命令を含み、前記非構造化ファイルストリームをロックするステップは、トランザクションリード動作で達成されることを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１３】
前記非構造化ファイルストリームをロックするステップ中に前記非構造化ファイルストリームがロックできない場合、同期ピアに例外をもたらし、（ａ）前記非構造化ファイルストリームがロックされた後に前記非構造化ファイルストリームの第２の変更値を決定するステップと、（ｂ）前記第１の変更値と比較した前記第２の変更値が、前記構造化データコンポーネントのスナップショット作成時から前記非構造化ファイルストリームのロック時までの間に前記ファイルストリームが変更されなかったことを示す場合に、前記非構造化ファイルストリームを同期ピアにコピーし、コピーが終了すると前記非構造化ファイルストリームをアンロックするステップとをいずれも実行しないステップのための命令をさらに含むことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１４】
前記コンピュータ可読媒体は、通信媒体を介して通信できる電磁搬送波信号であることを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１５】
ファイルストリームのスナップショットの作成が可能ではないハードウェア／ソフトウェアインターフェースシステム環境における構造化データコンポーネントおよび非構造化ファイルストリームを含む混合要素を同期化するシステムであって、
前記構造化データコンポーネントのスナップショットを作成するステップと、
前記非構造化ファイルストリームをロックするステップと、
前記構造化データコンポーネントのスナップショット作成時から前記非構造化ファイルストリームのロック時までの間に前記ファイルストリームが変更されたかどうかを判断するステップと、
前記構造化データコンポーネントのスナップショット作成時から前記非構造化ファイルストリームのロック時までの間に前記ファイルストリームが変更されなかった場合に、前記非構造化ファイルストリームを同期ピアにコピーし、コピーが終了すると前記非構造化ファイルストリームをアンロックするステップと
を行う少なくとも１つのサブシステムを備えることを特徴とするシステム。
【請求項１６】
前記構造化データコンポーネントのスナップショット作成時から前記非構造化ファイルストリームのロック時までの間に前記ファイルストリームが変更されたかどうかを判断するステップを行う前記サブシステムは、
前記構造化データコンポーネントのスナップショット作成時に前記非構造化ファイルストリームの第１の変更値を決定するステップと、
前記非構造化ファイルストリームがロックされた後に前記非構造化ファイルストリームの第２の変更値を決定するステップと
前記構造化データコンポーネントのスナップショットの作成時から前記非構造化ファイルストリームのロック時までの間に非構造化ファイルストリームが変更されたかどうかを確認するために前記第２の変更値を前記第１の変更値と比較するステップと
を行うサブシステムをさらに含むことを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記構造化データコンポーネントのスナップショットの作成時から前記非構造化ファイルストリームのロック時までの間に非構造化ファイルストリームが変更されていた場合に、同期ピアに例外をもたらし、前記非構造化ファイルストリームをアンロックするステップを行う少なくとも１つのサブシステムをさらに含むことを特徴とする請求項１５に記載のシステム。
【請求項１８】
前記構造化データコンポーネントのスナップショットを作成する前記ステップについて、
前記構造化データコンポーネントが同期ピアにコピーされている間に、該構造化データコンポーネントに対する変更を防ぐステップと、
前記構造化データが同期ピアにコピーされている間に前記構造化データを変更するようなプロセス用に前記構造化データコンポーネントの第１のコピーを作成し、前記プロセスが前記構造化データではなく前記第１のコピーを変更できるようにするステップと、
前記構造化データが同期ピアにコピーされると、前記構造化データを前記第１のコピーで更新するステップと
を行う少なくとも１つのサブシステムをさらに含むことを特徴とする請求項１５に記載のシステム。
【請求項１９】
さらに少なくとも１つのサブシステムを含み、前記非構造化ファイルストリームをロックするステップは、トランザクションリード動作で達成されることを特徴とする請求項１５に記載のシステム。
【請求項２０】
前記非構造化ファイルストリームをロックするステップ中に前記非構造化ファイルストリームがロックできない場合、同期ピアに例外をもたらし、（ａ）前記非構造化ファイルストリームがロックされた後に前記非構造化ファイルストリームの第２の変更値を決定するステップと、（ｂ）前記第１の変更値と比較した前記第２の変更値が、前記構造化データコンポーネントのスナップショット作成時から前記非構造化ファイルストリームのロック時までの間に前記ファイルストリームが変更されなかったことを示す場合に、前記非構造化ファイルストリームを同期ピアにコピーし、コピーが終了するとに前記非構造化ファイルストリームをアンロックするステップとをいずれも実行しないステップを行う少なくとも１つのサブシステムをさらに含むことを特徴とする請求項１５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には複数のコンピュータシステム間でのデータの同期化に関し、より詳細には、同期化中に大きな非構造化混合要素（ｍｉｘｅｄ  ｅｌｅｍｅｎｔｓ）（ＭＥ）ファイルストリームのスナップショットの作成が可能ではないハードウェア／ソフトウェアインターフェースシステム環境におけるピアコンピュータシステム間で構造化データおよび非構造化ファイルストリームを含むＭＥを同期化することに関する。
【背景技術】
【０００２】
ピアトゥピアの同期化環境およびその基礎を成すハードウェア／ソフトウェアインターフェースシステムがある。ここでは、とりわけ、格納可能な情報の自律ユニット（アイテム）が、同期化のための基本データ変更要素（ｂａｓｉｃ  ｄａｔａ  ｃｈａｎｇｅ  ｅｌｅｍｅｎｔ）を構成するいくつかのコンポーネント変更ユニット（ｃｏｍｐｏｎｅｎｔ  ｃｈａｎｇｅ  ｕｎｉｔｓ）（ＣＵ）を含む、ハードウェア／ソフトウェアインターフェースシステム（例えば、オペレーティングシステムがあるが、ただしこれに限定されない）について説明する。各ＣＵは、同期化システムが、ピアコンピュータシステム上で更新される必要がある変更はどれなのかを追跡し、他のピアコンピュータシステムから受け取ったどの変更が適用されるべきかを追跡できるようにする、関連するメタデータを有する。
【０００３】
ある種のハードウェア／ソフトウェアインターフェースシステムでは、格納可能な情報の自律ユニット（例えばアイテム）の一部は、２種類のもの、つまり構造化されたもの、または混合されたものとすることができる。構造化要素（ＳＥ）は、十分に構造化されたデータだけを含むが、一方混合要素（ＭＥ）は十分に構造化されたデータ、非構造化ファイルストリームのどちらも含む。同期化に関して、ＳＥはある種のサイズ制限を満たし、必要に応じてコピーが作成できるほど十分に小さいため、同期化も簡単に行うことができる。一方、ＭＥは通常、アイテムの通常の制限を越えるデータ構造に使用され、そのサイズゆえに簡単にコピーすることはできない。
【０００４】
ある種のハードウェア／ソフトウェアインターフェースシステムでは、アイテムの同期化は通常、同期化中にアイテムがコピーできるようにするトランザクション分離レベル（ＴＩＬ）で実行される。具体的には、同期ピア（ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｐｅｅｒ）にコピーされている間は他のプロセスによる書き込みができず、その代わりにその他のプロセスによってターゲットアイテムのコピーが作成されて改変され、次いでターゲットアイテムの同期が完了した際に、このコピーでオリジナルを上書きするようにターゲットアイテムの「スナップショット」が取られる。この必要に応じたコピー作成により、同期化システムは、実質的にターゲットアイテムが同期ピアにコピーされている間に変更されることを防ぐことができ（したがって、同期化プロセスの動作中に変化していない完全な「スナップショット」が提供され）、一方、他のプロセスはターゲットアイテムのコピーを改変することが可能になり、このコピーが、ターゲットアイテムの同期化が完了した時点で、最終的にターゲットアイテムに置き換わる。この特定のＴＩＬは、スナップショットＴＩＬ（ＳＴＩＬ）と呼ぶことができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、ＳＥはスナップショットＴＩＬを使用して同期化することができるが、ファイルストリーム自体のサイズの故に、また非常に大きいデータオブジェクトはその一時的コピーの作成さえ望ましくないため、多くの場合、ＭＥのファイルストリームのスナップショットは作成されない。したがって、当技術分野では、ＭＥを同期化する、特に同期化中に大きな非構造化ＭＥファイルストリームのスナップショットの作成が可能ではないハードウェア／ソフトウェアインターフェースシステム環境におけるピアコンピュータシステム間でＭＥのファイルストリームコンポーネントを同期化するシステムおよび方法が必要とされる。
【課題を解決するための手段】
【０００６】
本発明の様々な実施形態は、同期化中に大きな非構造化ＭＥファイルストリームのスナップショットの作成が可能ではないハードウェア／ソフトウェアインターフェースシステム環境におけるピアコンピュータシステム間でＭＥを同期化する（特にＭＥのファイルストリームコンポーネントを同期化する）システムおよび方法を対象としている。このような実施形態のいくつかでは、この方法はＭＥの同期化を２ステップで行うことを含み、その１つはＭＥの構造化データコンポーネント（およびファイルストリームの現バージョン（ｃｖ）を含むが、ファイルストリーム自体は含まない）のスナップショットを作成するステップであり、もう１つは、ロックされた後、ファイルストリームがＭＥデータコンポーネントのスナップショット作成時から改変されていないと判断された場合、かつその場合に限り、ファイルストリームを、受け取る側の同期ピアにロックし送信するステップである。
【０００７】
同期化中、ＭＥの構造化データコンポーネントはスナップショットＴＩＬを使用して同期化され、このスナップショットが作成された時点の対応するファイルストリームの現バージョン（ｃｖＦ）が、第１の値（ｃｖＦ０）として記憶される（ＭＥのファイルストリームはそれ自体の変更ユニットを備え、したがってそれ自体の変更バージョンをもつ）。次いで、同期化中にファイルストリームのコピーを作成する準備が整った場合（必要であれば、同期化の要件に基づいて）、ファイルストリーム自体が（別のプロセスがファイルストリームを変更するのを防ぐために）ロックされ、コピー作成に先立ってｃｖＦが再びチェックされて、第１の値（ｃｖＦ０）と比較される第２の値（ｃｖＦ１）が決定される。２つの値が同じである（したがって、ファイルストリームが変更されていないことを示す）場合、ファイルストリームは同期ピアにコピーされる。一方、ｃｖＦ１がｃｖＦ０と同じでない場合は、ＭＥの構造化データのスナップショットが作成されたとき以降にファイルストリームが更新されたことを示し、このケースではファイルストリームはコピーされず、ファイルストリームの変更ユニットは同期化の「例外」を、すなわち同期の失敗が起こったことを反映し、そのことが受け取る側の同期ピアに認識され、当然の成り行きとして、後で２つのピア間での次回の同期化処理中にＭＥを同期化させる試みが行われる。
【０００８】
前述の要約および好ましい実施形態の以下の詳細な説明は、添付の図面と併せて読めば、よりよく理解されよう。本発明を説明するために、図面には本発明の例示的な構成が示されているが、本発明は開示された特定の方法および手段のみに限定されるものではない。
【発明を実施するための最良の形態】
【０００９】
主題は、法的要件を満たすために、詳細に説明されている。しかし、その説明自体は、本発明の範囲の限定を意図するものではない。そうではなくて、本発明者らは、請求される主題が、現在のまたは将来の技術と関連して、本明細書に説明されたものと類似の異なるステップまたはステップの組合せを含むように、別のやり方で実施できることを企図している。さらに、「ステップ」という用語は、使用される方法の様々な要素を意味するように本明細書では使用されることがあるが、この用語は、個々のステップの順序が明示的に記載されていない限り、本明細書で開示される様々なステップの中の、またはステップ間の特定の順序を示唆していると解釈してはならない。
【００１０】
コンピュータ環境
本発明の数多くの実施形態は、コンピュータ上で実行することができる。図１および以下の議論は、本発明を実施できる適切なコンピューティング環境の簡単な概要を提供するためのものである。必須ではないが、本発明はクライエントワークステーションやサーバなどのコンピュータで実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的なコンテキストで説明する。一般的に、プログラムモジュールとしては、特定のタスクを実行する、または特定の抽象データ型を実装したルーチン、プログラム、オブジェクト、コンポーネント、データ構造などがある。さらに、本発明はハンドヘルドデバイス、マルチプロセッサシステム、マルチプロセッサベースのまたはプログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなど、他のコンピュータシステム構成で実施され得ることが当業者には理解されよう。本発明はまた、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモートの両方のメモリ記憶装置に置くことができる。
【００１１】
図１に示されるように、例示的な汎用コンピューティングシステムは、処理装置２１と、システムメモリ２２と、システムメモリを含むシステムの様々なコンポーネントを処理装置２１に結合するシステムバス２３とを含む従来型のパーソナルコンピュータ２０などを含む。システムバス２３は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用したローカルバスを含めて、いくつかのタイプのバス構造のうちいずれのものでもよい。システムメモリは、読出し専用メモリ（ＲＯＭ）２４およびランダムアクセスメモリ（ＲＡＭ）２５を含む。ＲＯＭ２４には、例えば起動の際にパーソナルコンピュータ２０内の要素間での情報の転送を助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）２６が格納されている。パーソナルコンピュータ２０はさらに、図示されていないハードディスクを読み書きするためのハードディスクドライブ２７、取り外し可能な磁気ディスク２９を読み書きするための磁気ディスクドライブ２８、ＣＤ−ＲＯＭや他の光媒体などの取り外し可能光ディスク３１を読み書きするための光ディスクドライブ３０を含むことができる。ハードディスクドライブ２７、磁気ディスクドライブ２８、および光ディスクドライブ３０はそれぞれ、ハードディスクドライブインターフェース３２、磁気ディスクドライブインターフェース３３、および光ディスクドライブインターフェース３４によってシステムバス２３に接続されている。これらのドライブとそれぞれに関連するコンピュータ可読媒体は、パーソナルコンピュータ２０のために、コンピュータ可読命令、デーダ構造、プログラムモジュールまたは他のデータ用の不揮発性の記憶を提供する。ここで説明される例示的環境はハードディスク、取り外し可能磁気ディスク２９、および取り外し可能光ディスク３１を利用しているが、例示的動作環境では磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）など、コンピュータがアクセスでき、データの格納が可能な他のタイプのコンピュータ可読媒体も使用できることが、当業者は理解すべきである。
【００１２】
ハードディスク、磁気ディスク２９、光ディスク３１、ＲＯＭ２４またはＲＡＭ２５には、オペレーティングシステム３５、１つまたは複数のアプリケーションプログラム３６、他のプログラムモジュール３７、およびプログラムデータ３８を含めて多くのプログラムモジュールを格納することができる。ユーザは、キーボード４０およびポインティングデバイス４２などの入力装置を介して、パーソナルコンピュータ２０に命令および情報を入力することができる。他の入力装置（図示せず）としては、マイクロホン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナなどがある。これらおよび他の入力装置は、システムバスに結合されているシリアルポートインターフェース４６を介して処理装置２１に接続されることが多いが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）など他のインターフェースで接続することもできる。モニタ４７または他の表示装置も、ビデオアダプタ４８などのインターフェースを介してシステムバス２３に接続されている。モニタ４７に加え、パーソナルコンピュータは、通常スピーカやプリンタなど他の周辺出力装置（図示せず）を含む。図１の例示的システムはまた、ホストアダプタ５５と、小型コンピュータ用周辺機器インターフェース（ＳＣＳＩ）バス５６と、ＳＣＳＩバス５６に接続されている外部記憶装置６２をも含む。
【００１３】
パーソナルコンピュータ２０は、リモートコンピュータ４９などの１つまたは複数のリモートコンピュータへの論理接続を使用したネットワーク環境で動作することもできる。リモートコンピュータ４９は、他のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードでもよく、図１にはメモリ記憶装置５０しか示されていないが、典型的にはパーソナルコンピュータ２０に関連して説明した上述の多くのまたは全ての要素を含む。図１に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）５１およびワイドエリアネットワーク（ＷＡＮ）５２を含む。これらのネットワーク環境は、オフィス、事業体規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的となっている。
【００１４】
ＬＡＮネットワーク環境で使用する場合、パーソナルコンピュータ２０はネットワークインターフェースまたはアダプタ５３を介してＬＡＮ５１に接続される。ＷＡＮネットワーク環境で使用する場合、パーソナルコンピュータ２０は、通常モデム５４、またはインターネットなどのワイドエリアネットワーク５２上での通信を確立するための他の手段を含む。モデム５４は、内蔵型または外付け型のどちらでもよく、シリアルポートインターフェース４６を介してシステムバス２３に接続されている。ネットワーク環境では、パーソナルコンピュータ２０に関連して示されたプログラムモジュールあるいはその一部を、リモートメモリ記憶装置に格納することもできる。図示されたネットワーク接続は例示的であり、コンピュータ間の通信リンクを確立するための他の手段も使用できることが理解されよう。
【００１５】
本発明の多くの実施形態は、コンピュータ化されたシステムに特に適していると考えられるが、本明細書には、本発明をこれらの実施形態に限定することを意図したものは何もない。逆に、本明細書では「コンピュータシステム」という用語は、電子的、機械的、論理的、またはバーチャルのうちのどの性質のものであるかに関わらず、情報の格納および処理が可能で、かつ／またはデバイス自体の挙動または実行を制御するために格納された情報を使用することができる全てのデバイスを包含するものであることが意図されている。
【００１６】
基本的な同期化
ピアトゥピアの同期環境およびその基礎を成すハードウェア／ソフトウェアインターフェースシステムがある。ここでは、とりわけ、格納可能な情報の自律ユニット（アイテム）が、同期化のための基本データ変更要素を構成するいくつかのコンポーネント変更ユニット（ＣＵ）を含む、ハードウェア／ソフトウェアインターフェースシステム（例えばオペレーティングシステムがあるが、ただしそれだけには限定されない）について説明する。各ＣＵは、同期化システムが、ピアコンピュータシステム上で更新される必要がある変更はどれなのかを追跡し、他のピアコンピュータシステムから受け取ったどの変更が適用されるべきかを追跡できるようにする、関連するメタデータを有する。
【００１７】
ＣＵは、本質的に、常にユニットとして同期化される１組のプロパティである。例えば、ＣｏｎｔａｃｔＩｔｅｍのＦｉｒｓｔＮａｍｅおよびＬａｓｔＮａｍｅプロパティは、一緒になって単一の変更ユニットを構成することができる。さらに、各変更ユニットには、その変更ユニットに特定の変更を行った最後のパートナーを表すための「バージョン」、およびその更新が行われた時点に対応するタイムスタンプが関連付けられる。したがって、本明細書では、説明を簡単にするために、パートナーは文字で表され、バージョンは逓増する整数で表され、それによって、単にパートナー（例えば「Ａ」）およびタイムスタンプ（例えば「１」）を対にするだけで、ある特定の時点で各パートナーが各変更ユニットに行った最終の変更を反映する一意的な識別番号、例えば「Ａ１」がそのユニットに関連付けられる。
【００１８】
同期化のために変更ユニットおよびメタデータ（または同様の構造）を使用するシステムにおける基本的な同期化の例示的な一形態は、一般に２つのピアコンピュータシステム上に存在するアイテムのための単一の変更ユニットに関して説明することができる。この単一のチェンジユニットに関して、第１のピアであるパートナーＡ（あるいは、単に「Ａ」）は、変更ユニットのＡのレプリカ（ＣＵａ）に関連するＡの現在のメタデータ（Ｍａ）を第２のピアであるパートナーＢ（あるいは、単に「Ｂ」）に送信することによって、Ｂに変更を要求する。Ｍａ（ＣＵａに対応）を受領後、パートナーＢはこのメタデータを同じ変更ユニットのＢのレプリカ（ＣＵｂ）のためのＢ自体のメタデータ（Ｍｂ）と比較する。次いで、Ｍａに反映されていないＣＵｂへの変更をＭｂが反映している場合は、ＢはＣＵｂとＭｂをいずれもＡに送信し、そうでない場合は、ＣＵａは既にＣＵｂに加えられた変更の全てを反映しており、したがってＣＵｂをＢからＡへコピーする必要がないため、Ｂはそれ自体のＭｂのみをＡに送信する（あるいは「更新なし」インジケータをＡに送信する）。
【００１９】
Ａは、それ自体が行った同期化要求へのＢの応答に基づき、ＢからＭｂのみ（あるいは「更新なし」インジケータ）を受信し、ＣＵｂを受信しない場合は、ＣＵａがＣＵｂと同じか、またはＣＵｂよりも新しく更新されていることを知る。しかし、ＡがＢからＭｂとＣＵｂを共に受信した場合は、ＡはＭａをＭｂと比較することにより、ＣＵｂがＣＵａよりも新しく更新されているかどうか、またはＣＵａとＣＵｂとが競合する変更を含むかどうかを判断する必要がある。ＣＵｂがＣＵａよりも新しく更新されている場合、次いでＡはＣＵａをＣＵｂで更新し、ＭａをＭｂで更新する。一方、ＣＵａとＣＵｂとが競合する変更をもつ場合、Ａはそれ自体のローカル競合解消手順に従ってその競合を解消する。例えば、この場合のＡの競合解消手順が、リモートソリューションよりもローカルなソリューションを選ぶことであった場合、Ａは引き続きＣＵａを保持（ＣＵｂの変更を拒否）し、ＭａおよびＭｂ（ＭａとＭｂとの和集合）に既に反映されている全ての更新を含むようにＭａを更新する。その後、Ｂが次いで同じ手順を使用してＡに同期化する場合、（介在する追加の変更がないと仮定して）ＡはＣＵａがＣＵｂよりも新しく更新されていると判断し、ＣＵｂをＣＵａで更新する。
【００２０】
この基本的な同期化スキーマについて、各変更ユニットのメタデータは、変更ユニットの現在の「更新」状況を示す現バージョン（ｃｖ）と、ピアコミュニティにおける各パートナー（または少なくとも何らかの変更を加えたパートナー）の変更ユニットに行われた更新に対応するアウェアネスベクタ（ａｗａｒｅｎｅｓｓ  ｖｅｃｔｏｒ）（ａｖ）（「バージョンの配列」の別名でも知られている）という２つのコンポーネントを含む。変更ユニットメタデータの典型的なフォーマットは＜変更バージョン、アウェアネスベクタ＞、またはより簡単には＜ｃｖ、［ａｖ］＞である。これらの情報を一緒に使用して、例えば＜Ａ１３、［Ａ１３、Ｂ１１］＞のメタデータ（Ｍａ）をもつパートナーＡ上の変更ユニット（ＣＵａ）が、＜Ｂ１１、［Ａ１２、Ｂ１１］＞のメタデータ（Ｍｂ）をもつパートナーＢ上の変更ユニット（ＣＵｂ）よりも新しく更新されていると容易に判断することができる。というのは、各バージョン番号のタイムスタンプ部分が時間と共に徐々に増えることを考えれば、ＭａはＭｂに反映されていない変更（すなわちＡ１３）を含むからである。
【００２１】
スナップショットおよびファイルストリーム
ある種のハードウェア／ソフトウェアインターフェースシステムでは、格納可能な情報の自律ユニット（例えばアイテム）の一部は、２種類のもの、つまり構造化されたもの、または混合されたものとすることができる。構造化要素（ＳＥ）は、十分に構造化されたデータだけを含むが、混合要素（ＭＥ）は十分に構造化されたデータ、非構造化ファイルストリームのどちらも含む。図２Ａは、複数のプロパティ２０４を有するＳＥ２０２を示すブロック図である。このＳＥは、構造化データだけを含み、したがって構造化データコンポーネント２０６を含む。図２Ｂは、複数のプロパティ２０４を有するＭＥ２１２を示すブロック図であり、プロパティ２０４のうちの１つはＭＥのファイルストリーム２０８へのリンク２０４’である。ＭＥ２１２の構造化データコンポーネント２０６は、ＭＥの非構造化データコンポーネントを表す非構造化ファイルストリーム２０８と区別することができる。同期化に関して、ＳＥはある種のサイズ制限を満たし、必要に応じてコピーが作成できるほど十分に小さいため、同期化も簡単に行うことができる。一方、ＭＥは通常、アイテムの通常の限界を越えるデータ構造に使用され、そのサイズゆえに、当業者には自明な理由により、簡単にコピー、同期化などを行うことはできない。
【００２２】
ある種のハードウェア／ソフトウェアインターフェースシステムでは、アイテムの同期化は通常、同期化中にターゲットアイテムが変更されることを防ぎ、その代わりにターゲットアイテムの変更を望む他のプロセスにコピーを提供し、ターゲットアイテムの同期が完了した際に、このコピーでターゲットアイテムを更新する、トランザクション分離レベル（ＴＩＬ）で実行される。このスナップショットＴＩＬ（ＳＴＩＬ）により、本質的に、ターゲットアイテムの同期化中に、ターゲットアイテムが他の同期ピアにコピーされる間にターゲットアイテム自体が変更されないように、同期化システムが、他のプロセスによる修正のために、必要に応じてターゲットアイテムのコピー（「スナップショット」）を作成することが可能になる。
【００２３】
図３は、ＳＥ（および、本明細書で後ほど議論される、ＭＥの構造化部分）を同期化するために、本発明のいくつかの実施形態で使用される方法を示したプロセスフロー図である。この図で、最初のステップ３０２で、変更ユニット（このケースではターゲットアイテム）の「スナップショット」を作成し、ステップ３０４で、同期化ピアへの変更ユニットのコピーが完了されつつあるいずれかの時点で他のいずれかのプロセスがこの変更ユニットに変更を加えようと試みる場合に、変更ユニットのコピーを作成する。コピー作成が完了すると、ステップ３０６でターゲットアイテムのコピーを使用してターゲットアイテムが更新（例えば、置換え）される。
【００２４】
スナップショットなしの同期化
ＳＥはスナップショットＴＩＬを使用して同期化することができるが、多くの場合、いくつかの理由でＭＥのファイルストリームのスナップショットは作成されない。最も明らかな理由は、ファイルストリーム自体のサイズの故に、また非常に大きいデータオブジェクトはその一時的コピーの作成が望ましくないことである。
【００２５】
本発明の様々な実施形態は、同期化中に大きな非構造化ＭＥファイルストリームのスナップショットの作成が可能ではないハードウェア／ソフトウェアインターフェースシステム環境におけるピアコンピュータシステム間でＭＥを同期化する（特にＭＥのファイルストリームコンポーネントを同期化する）システムおよび方法を対象としている。このような実施形態のいくつかでは、この方法はＭＥの同期化を２ステップで行うことを含み、その１つはＭＥの構造化データコンポーネント（および、ファイルストリーム自体ではなく、ファイルストリームのｃｖ）のスナップショットを作成するステップであり、もう１つは、ファイルストリームをロックし転送するステップであって、ファイルストリームがロックされた後に、ファイルストリームがＭＥデータコンポーネントのスナップショット作成時以降改変されていないと判断された場合に、かつその場合に限り、ファイルストリームを、受け取る側の同期ピアに送信するステップである。
【００２６】
図４は、ＭＥを同期化する方法のステップを示すプロセスフロー図である。ステップ４０２で、特定の変更ユニット（ＭＥアイテム）の同期化の始めに、スナップショットＴＩＬ（すなわち、同期化中はターゲットアイテムではなくそのコピーに変更が加えられ、次いで同期化完了後に変更が適用される）を使用してＭＥの構造化データコンポーネント（ＳＤＣ）のスナップショットが作成され、ステップ４０４でこのスナップショットが取られた時点での対応するファイルストリーム現バージョン（ｃｖＦ）（例えば、ｃｖＦ値はＭＥの構造化データのスナップショット中のファイルストリームプロパティから直接取得することができる）が第１の値（ｃｖＦ０）として記憶される。（ＭＥのファイルストリームはそれ自体の変更ユニットを備え、したがってそれ自体の変更バージョンをもつ。この値はＭＥの構造化データ部分のファイルストリームプロパティの一部としても記憶してもよい。）次いで、ステップ４０６でファイルストリームがロックされ、ステップ４０８でｃｖＦが再びチェックされて、第２の値（ｃｖＦ１）が決定され、ステップ４１０でそれが第１の値（ｃｖＦ０）と比較され、２つの値が同じである（すなわち、ｃｖＦ１がｃｖＦ０よりも大きくなく、したがってファイルストリームが変更されていないことを示す）場合は、ステップ４１２でファイルストリームが同期ピアにコピーされ、コピーが完了すると、ステップ４１６でファイルストリームがアンロックされる。一方、ｃｖＦ１がｃｖＦ０と同じでない（すなわち、ｃｖＦ１がｃｖＦ０よりも大きい）場合は、ＭＥの構造化データのスナップショットが作成されてそれ以降にファイルストリームが更新されたことを示し、この場合にはファイルストリームはコピーされず、ステップ４１４でファイルストリームのための変更ユニットは同期化の「例外」を、すなわち同期の失敗が起こったことを反映し、そのことが受け取る側の同期ピアに認識され、当然の成り行きとして、後で２つのピア間での次回の同期化処理中にＭＥを同期化させる試みが行われ、ステップ４１６でファイルストリームが再びアンロックされる。
【００２７】
前記に加えて、再び図４を参照すると、ステップ４０６でファイルストリームのロックが行えない場合、ステップ４１４で再び例外が起きるが、ステップ４１６でのアンロックは不要である（このロック失敗例外パスは図示されていない）。また、ロックは、読込みのターゲットを生得的にロックする、例えばトランザクションリード動作などの一連の標準的関数呼出しを通じて取得することができる点も留意されたい。
【００２８】
より大きな同期化の観点から、また本明細書に記載する実施形態のいくつかを利用すると、この方法を使用する同期化アルゴリズムは以下のように進行する。同期化システムはまず、通常の変更列挙プロセス（ｃｈａｎｇｅ  ｅｎｕｍｅｒａｔｉｏｎ  ｐｒｏｃｅｓｓ）を使用して同期レプリカのどのアイテム（つまり、変更ユニット）が変更されたかを識別する。この変更列挙はまた、アイテムがＭＥである場合、ＳＤＣ（ただし、ファイルストリームではない）のスナップショットの作成と併せてファイルストリームの変更バージョンも読み出す。次いで、ＭＥに対して、同期化システムはスナップショットトランザクションからのステップアウト後のある時点でファイルストリームをロックし、ロックが得られた後にファイルストリームの変更バージョンを読み出す。ファイルストリームの変更バージョンが、ＳＤＣのスナップショットが取られた時点から変化していない場合、ロックされているために読出し／コピーを行ってもファイルストリームが修正されないので、同期化システムがファイルストリームの内容を同期ピアに読み出すことを進めることは安全である。一方、ファイルストリームのｃｖの２回目の読出しによってストリームの新たな変更ユニットバージョンが取り出される場合、これは、プロセスがスナップショットトランザクションからステップアウトした時点から、プロセスがファイルストリームをロックした時点までの間にファイルストリームが修正されたことを示す。このようなケースでは、この要素が同期化されず、後続の同期化処理で同期化される必要があることを同期パートナーに示す、「例外」を作成する。すなわち、ファイルストリームはこの特定の同期化パスでは送られないが、それが送られなかったことについて、後続の同期化プロセスの間にこのＭＥを同期化する別の試みが行われるのに十分な情報が維持される。
【００２９】
結論
本明細書に記載した様々なシステム、方法および技術は、ハードウェアまたはソフトウェアで、あるいは適切な場合には、両者の組合せで実施することができる。したがって、本発明の方法および装置、またはそのいくつかの態様または部分は、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ハードドライブ、または他の任意の機械可読記録媒体などの有形媒体において実施され、それがコンピュータなどの機械にロードされて実行されるとき、その機械が本発明を実施するための装置となる、プログラムコード（すなわち、命令）の形態をとることができる。プログラム可能なコンピュータ上でプログラムコードを実行する場合、コンピュータは、一般にプロセッサ、プロセッサ可読の記録媒体（揮発性および不揮発性のメモリおよび／または記憶要素を含む）、少なくとも１つの入力装置、および少なくとも１つの出力装置を含む。好ましくは、１つまたは複数のプログラムが、コンピュータシステムと通信可能となるように、高水準の手続き型プログラミング言語またはオブジェクト指向プログラミング言語で実施される。しかし、必要に応じて、この（１つまたは複数の）プログラムは、アセンブリ言語または機械語で実施することができる。いずれの場合も、言語はコンパイラ型言語でもインタープリタ型言語でもよく、ハードウェア実装と組み合わせることができる。
【００３０】
本発明の方法および装置はまた、電気配線またはケーブル、光ファイバあるいは他の任意の送信形態などなんらかの通信媒体を介して送信され、ＥＰＲＯＭ、ゲートアレイ、プログラム可能論理回路（ＰＬＤ）、クライアントコンピュータ、ビデオレコーダなどの機械によって受け取られ、ロードされて実行されるとき、その機械が本発明を実施するための装置となる、プログラムコードの形態をとることができる。汎用プロセッサ上で実施される場合、プログラムコードはプロセッサと組み合わされて、本発明のインデックス作成機能（ｉｎｄｅｘｉｎｇ  ｆｕｎｃｔｉｏｎａｌｉｔｙ）を実行するように動作する固有の装置を提供する。
【００３１】
本発明を様々な図に示した好ましい実施形態に関連して説明したが、本発明から逸脱することなく、本発明の同様の機能を実行するのに他の類似の実施形態を使用してもよく、あるいは説明した実施形態に改変または追加を行ってもよいことを理解されたい。例えば、本発明の例示的実施形態は、パーソナルコンピュータの機能をエミュレートするデジタル装置のコンテキストで説明してきたが、本明細書で説明したようなデジタル装置だけには限定されず、有線または無線に関わらずゲーム用コンソール、ハンドヘルドコンピュータ、ポータブルコンピュータなどの既存の、または将来の任意の数のコンピューティングデバイスまたは環境に適用することができ、通信ネットワークを介して接続され、ネットワークを介して対話する任意の数のそうしたコンピューティングデバイスに適用することができることが当業者には理解されよう。さらに、本明細書では、特にワイヤレスネットワーク接続された装置の数が増え続ける中で、ハンドヘルドデバイスオペレーティングシステムや他のアプリケーション固有のハードウェア／ソフトウェアインターフェースシステムを含む様々なコンピュータプラットホームが企図されていることも強調しておきたい。したがって、本発明はどの単一の実施形態にも限定されるべきではなく、添付の特許請求の範囲による広さおよび範囲の中で解釈すべきである。
【図面の簡単な説明】
【００３２】
【図１】本発明の諸態様を組み込むことができるコンピュータシステムを表すブロック図である。
【図２Ａ】複数のプロパティを有する構造化要素（ＳＥ）を表すブロック図である。
【図２Ｂ】構造化データコンポーネント、非構造化ファイルストリームのいずれも含む混合要素（ＭＥ）を表すブロック図である。
【図３】ＳＥ（および、本明細書で前に議論された、ＭＥの構造化部分）を同期化するために、本発明のいくつかの実施形態と併せて使用される方法を示したプロセスフロー図である。
【図４】本発明のいくつかの実施形態に利用される方法を表す、ＭＥを同期化する方法のステップを示したプロセスフロー図である。
【符号の説明】
【００３３】
２０  コンピュータ
２１  処理装置
２２  システムメモリ
２３  システムバス
２７  ハードドライブ
２８  フロッピー（登録商標）ドライブ
２９  取り外し可能ストレージ
３０  光ドライブ
３２  ハードディスクドライブＩ／Ｆ
３３  磁気ディスクドライブＩ／Ｆ
３４  光ドライブＩ／Ｆ
３６  アプリケーションプログラム
３６  アプリケーション
３７  その他のプログラム
３８  プログラムデータ
４０  キーボード
４２  マウス
４６  シリアルポートＩ／Ｆ
４７  モニタ
４８  ビデオアダプタ
４９  （１つまたは複数の）リモートコンピュータ
５０  フロッピー（登録商標）ドライブ
５３  ネットワークＩ／Ｆ
５４  モデム
５５  ホストアダプタ
５６  ＳＣＳＩバス
６２  記憶装置  
【図１】
2006178932.tif 000003
【図２Ａ】
2006178932.tif 000004
【図２Ｂ】
2006178932.tif 000005
【図３】
2006178932.tif 000006
【図４】
2006178932.tif 000007