(57)【要約】【課題】  トポロジ内のレプリカのアイテムを同期させるためのシステム、方法およびコンピュータ・プログラム製品を提供すること。【解決手段】  アイテムは、レプリカの物理テーブル内に格納される。それぞれのレプリカの物理テーブル・レイアウトは、それぞれ異なることが可能であるけれどもり、共通の論理ビューにマップされる。レプリカは、同期化が実施されるべきことを示すインジケーションを受信すると、論理ビューにマップされるべき変更が、レプリカ内で行われたかどうかを決定する。レプリカは、物理テーブルで行われた変更についてのローカル変更列挙を、論理ビュー内の変更についての同期化ローカル変更列挙と比較することによって、これを容易にすることができる。同期される必要があるいずれの変更もが、論理ビューを介して、トポロジ内の他のレプリカに送信される。【選択図】  図１
2005050334.tif 000002
【特許請求の範囲】
【請求項１】
複数のレプリカを同期させるためのトポロジ内に含まれるコンピュータ・システムであって、前記複数のレプリカのうちにソース・レプリカを含み、前記ソース・レプリカ内に、１つまたは複数の他のレプリカに格納された対応するアイテムの物理レイアウトとは異なるアイテムの物理レイアウトが、格納されているコンピュータ・システムにおいて、各レプリカを同期させるための方法であって、
前記ソース・レプリカに前記複数のレプリカのうちの宛先レプリカを同期させるべきことを示す同期化インジケーションを受信するステップと、
前記ソース・レプリカの前記物理レイアウト内のアイテムが変化したかどうかを決定するステップと、
前記ソース・レプリカの前記物理レイアウト内の変化したいずれのアイテムをも、前記トポロジ内の前記１つまたは複数の他のレプリカの論理ビューに実質上類似する論理ビューに、前記ソース・レプリカに１つまたは複数の他のレプリカを同期させる効率を向上させるように、または異なる物理ストレージ・フォーマットをもつ新しいレプリカが前記同期トポロジ内に取り入れられた場合に、前記ソース・レプリカへのどんな変更をも回避するように、マッピングするステップと、
前記ソース・レプリカから前記宛先レプリカに、少なくとも１つのマップされたアイテムを送信するステップと
を備えることを特徴とする方法。
【請求項２】
前記ソース・レプリカのソース・フォルダであって、複数のアイテムを含み、前記宛先レプリカの、対応する複数のアイテムを含む宛先フォルダに対応するソース・フォルダを定義するステップと、
前記複数のアイテムの少なくとも一部を送信するステップと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記ソース・レプリカは、データ・ストア層および同期化層を備え、
前記データ・ストア層は、ローカル変更トラッカを備え、
前記ローカル変更トラッカは、前記ソース・レプリカの前記物理レイアウト内の前記アイテムに関連付けられたローカル変更列挙を維持し、
また前記同期化層は、同期化変更トラッカを備え、
前記同期化変更トラッカは、前記ソース・レプリカの前記論理ビューにマップされた前記アイテムに関連付けられたバージョンおよび同期化ローカル変更列挙を維持し、
前記決定するステップは、前記ローカル変更列挙と同期化ローカル変更列挙を比較するステップを備えることを特徴とする請求項１に記載の方法。
【請求項４】
前記ソース・レプリカの前記物理レイアウト内のアイテムが変化したかどうかを決定する前記ステップは、前記ローカル変更列挙が前記同期化ローカル変更列挙と異なる場合に、前記物理レイアウト内のアイテムが変化したと決定するステップを備えることを特徴とする請求項３に記載の方法。
【請求項５】
前記ソース・レプリカの前記物理レイアウト内のアイテムが変化したかどうかを決定する前記ステップは、前記ローカル変更列挙が前記同期化ローカル変更列挙と同じである場合に、前記ローカル変更列挙および前記同期化ローカル変更列挙に関連付けられたアイテムは変化していないと決定するステップを備えることを特徴とする請求項３に記載の方法。
【請求項６】
前記バージョンは、レプリカＩＤおよびレプリカ変更列挙を備え、前記レプリカＩＤは、前記トポロジ内のレプリカを識別し、前記レプリカ変更列挙は、前記複数のレプリカでアイテムが変更された時系列順を識別することを特徴とする請求項５に記載の方法。
【請求項７】
前記論理ビューにマップされたアイテムが、前記論理ビューにマップされた前記アイテムに関連付けられた前記バージョンの前記レプリカＩＤによって識別されたレプリカによって行われた変更を備えることを識別するステップをさらに備えることを特徴とする請求項６に記載の方法。
【請求項８】
前記識別するステップは、前記論理ビューにマップされたアイテムが、前記論理ビューにマップされたアイテムに変更を行ったレプリカで変更されたアイテムにバージョンを割り当てる、前記複数のレプリカのうちの１つによって割り当てられたレプリカＩＤに関連付けられていることを識別するステップを備えることを特徴とする請求項６に記載の方法。
【請求項９】
前記トポロジは、カスタム・アイテムおよび前記カスタム・アイテムに関連するカスタム変更列挙を備えるカスタム・レプリカを備え、前記バージョンとは異なるフォーマットの前記カスタム変更列挙は、前記ソース・レプリカの前記論理ビューを、カスタム・ビューにマップするステップをさらに備え、前記カスタム・ビューは、前記バージョンと前記カスタム変更列挙を相互に関連させることを特徴とする請求項３に記載の方法。
【請求項１０】
論理スキーマ内の変更単位であって、前記同期化インジケーションの受信するステップの前に、アイテムの粒度を定義する変更単位を定義するステップと、
前記論理スキーマ内の整合単位を定義するステップであって、１つまたは複数のアイテムのいずれもがレプリカ内で更新されるために、前記定義された粒度の前記１つまたは複数のアイテムの変更が、同じ同期化時に受信されなければならないことを定義するステップと、
前記マッピングするステップを実施する少なくとも１つのカタログに、前記論理スキーマをコンパイルするステップと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１１】
前記コンパイルするステップは、プロシージャまたは関数コードを生成し、前記プロシージャまたは関数コードは、前記物理レイアウト内のどこにアイテムを格納するかを前記ソース・レプリカに指示することを特徴とする請求項１０に記載の方法。
【請求項１２】
前記同期化インジケーションを受信する前に、物理レイアウトから論理ビューに、アイテムをマップするように構成されたカタログをインストールするステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項１３】
前記ソース・レプリカに、前記物理レイアウト内のどこにアイテムを格納するかを指示するプロシージャまたは関数コードをインストールするステップをさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１４】
複数のレプリカを同期させるためのトポロジ内に含まれるコンピュータ・システムであって、前記複数のレプリカのうちにソース・レプリカを含み、前記ソース・レプリカ内に、１つまたは複数の他のレプリカに格納された対応するアイテムの物理レイアウトとは異なるアイテムの物理レイアウトが格納されているコンピュータ・システムにおいて、各レプリカを同期させるための方法であって、
論理ビューにマップされるべき、物理レイアウトからのアイテムを識別するステップと、
前記ソース・レプリカの前記物理レイアウト内の変化したいずれのアイテムをも、前記トポロジ内の前記１つまたは複数の他のレプリカの論理ビューに実質上類似する論理ビューに、前記ソース・レプリカに、１つまたは複数の他のレプリカを同期させる効率を向上させるように、または異なる物理ストレージ・フォーマットをもつ新しいレプリカが前記同期化トポロジ内に取り入れられた場合に、前記ソース・レプリカへのどんな変更をも回避するように、マップするステップと、
前記ソース・レプリカから前記宛先レプリカに、少なくとも１つのマップされたアイテムを送信するステップと
を備えることを特徴とする方法。
【請求項１５】
トポロジ内の他のコンピュータ・システムとデータを同期させるように構成されたコンピュータ・システムであって、
１つまたは複数の処理装置、および
データが格納された１つまたは複数のコンピュータ読取り可能媒体
を備え、前記データは、
複数のアイテム、および前記複数のアイテムについてのローカル変更列挙を維持するローカル変更トラッカを備えるデータ・ストア層と、
前記トポロジ内の１つまたは複数の他のコンピュータ・システムの論理ビューに実質上類似しており、前記複数のアイテムからの１つまたは複数のアイテムのマッピングを表している論理ビュー、および
前記論理ビューにマップされた前記１つまたは複数のアイテムについてのバージョンおよび同期化ローカル変更列挙を維持する同期化変更トラッカ
を備える同期化層と
を備えることを特徴とするコンピュータ・システム。
【請求項１６】
前記論理ビューはさらに、
アイテムの境界を定義する変更単位と、
複数のアイテムであって、その変更のすべてが、他のコンピュータ・システムで、複数のアイテムのいずれもが更新されるために、前記トポロジ内の前記他のコンピュータ・システムによって、前記コンピュータ・システムから、同じ同期化時に受信されなければならない、前記複数のアイテムを定義する複数の変更単位を備える整合単位と
を備えることを特徴とする請求項１５に記載のコンピュータ・システム。
【請求項１７】
前記データ・ストア層は、前記データ・ストア内に、アイテムを列挙するフォルダを備え、前記フォルダによって列挙される前記アイテムは、前記トポロジ内の別のコンピュータ・システムの対応するフォルダ内に適用されることを特徴とする請求項１５に記載のコンピュータ・システム。
【請求項１８】
前記データ・ストア層内の前記複数のアイテムは、テーブル内に格納されることを特徴とする請求項１５に記載のコンピュータ・システム。
【請求項１９】
前記データ・ストア層内の前記複数のアイテムは、複数のテーブル内に格納されることを特徴とする請求項１５に記載のコンピュータ・システム。
【請求項２０】
前記データ・ストア層内の前記複数のアイテムは、ファイル内に格納されることを特徴とする請求項１５に記載のコンピュータ・システム。
【請求項２１】
前記同期化層は、前記ローカル変更列挙と前記同期化ローカル変更列挙を比較することによって、前記データ・ストア内のアイテムが前記コンピュータ・システムで作成され、同期されていないか、それとも他のコンピュータ・システムによって作成され、または以前に同期されたものかを決定するように適応されることを特徴とする請求項１５に記載のコンピュータ・システム。
【請求項２２】
前記バージョンは、レプリカＩＤおよび変更列挙を備え、前記ＩＤは、前記トポロジ内のコンピュータ・システムに対応し、前記変更列挙は、前記アイテムへの前記変更が行われたときの時系列順に対応することを特徴とする請求項２１に記載のコンピュータ・システム。
【請求項２３】
前記同期化層は、前記レプリカＩＤを調べることによって、どのコンピュータ・システムが前記アイテムへの前記変更を行ったかを決定できることを特徴とする請求項２２に記載のコンピュータ・システム。
【請求項２４】
前記同期化層は、カスタム・ビューを備え、前記カスタム・ビューは、前記論理ビューからマップされ、また別のコンピュータ・システムに存在するカスタム変更列挙を、前記データ・ストア内のローカル変更列挙に関連付けることを特徴とする請求項１５に記載のコンピュータ・システム。
【請求項２５】
コンパイルするコンピュータ・システムにおいて、データ・ストア内のアイテムの物理レイアウトの、論理ビューへのマッピングを生成するための方法であって、
論理スキーマのコンパイルを容易にするために使用することができる、コア・コードにアクセスするステップと、
アイテムの粒度を定義する変更単位と、１つまたは複数のアイテムのいずれもがレプリカ内で更新されるために、前記定義された粒度の前記１つまたは複数のアイテムの変更が、同じ同期化時に受信されなければならないことを定義する整合単位と、を含む論理スキーマにアクセスするステップと、
前記コア・コードを使用して、前記論理スキーマを、少なくとも１つのカタログにコンパイルするステップと
を備え、前記カタログは、物理レイアウトから、１つまたは複数の他のコンピュータ・システムの論理ビューに実質上類似する論理ビューに、アイテムをマップすることを特徴とする方法。
【請求項２６】
前記コンパイルするコンピュータを、前記１つまたは複数のコンピュータ・システムのうちの少なくとも１つに、アイテムを送信するように構成するステップをさらに備えることを特徴とする請求項２５に記載の方法。
【請求項２７】
前記物理レイアウト内に構成されたデータ・ストアでの使用に備えて、コンピュータ・システムに、前記カタログをインストールするステップをさらに備えることを特徴とする請求項２５に記載の方法。
【請求項２８】
前記論理ビューに従ってデータを同期させるように構成されたレプリカでの使用に備えて、コンピュータ・システムに、前記カタログを送信するステップをさらに備えることを特徴とする請求項２５に記載の方法。
【請求項２９】
前記コンピュータ・システムを、データ・ストア層および同期化層に分割するステップをさらに備えることを特徴とする請求項２７に記載の方法。
【請求項３０】
前記コンパイルステップはさらに、プロシージャまたは関数コードを作成し、前記プロシージャまたは関数コードは、前記データ・ストア層に、アイテムを配列するように適応され、また前記データ・ストア層に、前記プロシージャまたは関数コードを配置するステップをさらに備えることを特徴とする請求項２９に記載の方法。
【請求項３１】
前記同期化層に、前記カタログを配置するステップをさらに備えることを特徴とする請求項２９に記載の方法。
【請求項３２】
前記データ・ストア層に、当該記データ・ストア層に格納されたアイテムについてのローカル変更列挙を維持するローカル変更トラッカを格納するステップと、
前記同期化層に、当該同期化層に格納されたアイテムについてのバージョンおよび同期化ローカル変更列挙を維持する同期化変更トラッカを格納するステップと
をさらに備え、前記ローカル変更トラッカを前記同期化ローカル変更トラッカと比較することによって、前記コンピュータ・システムは、前記コンピュータ・システムの前記データ・ストア層に格納されたアイテムが送信されて、前記論理ビューに同期化状態でマップされるべきかどうかを決定することを特徴とする請求項２９に記載の方法。
【請求項３３】
前記ローカル変更列挙と前記同期化ローカル変更列挙が異なる値を備える場合、前記コンピュータ・システムの前記データ・ストア層に格納された前記アイテムが、前記論理ビューにマップされることになることを特徴とする請求項３２に記載の方法。
【請求項３４】
前記ローカル変更列挙と前記同期化ローカル変更列挙が同じ値を備える場合、前記コンピュータ・システムの前記データ・ストア層に格納された前記アイテムは、前記論理ビューにマップされる必要がないことを特徴とする請求項３２に記載の方法。
【請求項３５】
前記バージョンは、前記トポロジ内のコンピュータ・システムに対応するレプリカＩＤ、および変更が行われた時系列順に対応する変更列挙を備えることを特徴とする請求項３２に記載の方法。
【請求項３６】
前記レプリカＩＤは、前記アイテムを変更したコンピュータ・システムに対応することを特徴とする請求項３５に記載の方法。
【請求項３７】
前記レプリカＩＤは、変更のバージョンを割り当てるコンピュータ・システム以外のコンピュータ・システムで行われた変更のバージョンを割り当てる、コンピュータ・システムに対応することを特徴とする請求項３５に記載の方法。
【請求項３８】
前記アイテムを編成するために、一般的な方法でユーザ・インターフェースに公開され、アイテムを全体としてグループ化するように適応されているフォルダを、前記データ・ストア層に格納するステップをさらに備えることを特徴とする請求項２９に記載の方法。
【請求項３９】
前記レプリカは、前記フォルダ内にグループ化されたアイテムを送信するように構成されることを特徴とする請求項３８に記載の方法。
【請求項４０】
複数のレプリカを同期させるためのトポロジ内に含まれるコンピュータ・システムであって、前記複数のレプリカのうちのソース・レプリカを含み、前記ソース・レプリカ内に、１つまたは複数の他のレプリカに格納された対応するアイテムの物理レイアウトとは異なる、アイテムの物理レイアウトが格納されているコンピュータ・システムにおいて使用し、各レプリカを同期させるための方法を実施するためのコンピュータ・プログラム製品であって、プロセッサによって実行されたときに、前記コンピュータ・システムに、
前記ソース・レプリカに前記複数のレプリカのうちの宛先レプリカを同期させるべきことを示す同期化インジケーションを受信すること、
前記ソース・レプリカの物理レイアウト内のアイテムが変化したかどうかを決定すること、
前記ソース・レプリカの前記物理レイアウト内の変化したいずれのアイテムをも、前記トポロジ内の前記１つまたは複数の他のレプリカの論理ビューに実質上類似する論理ビューに前記ソース・レプリカに１つまたは複数の他のレプリカを同期させる効率を向上させるようにマップすること、および
前記ソース・レプリカから前記宛先レプリカに、少なくとも１つのマップされたアイテムを送信すること
を実施させるコンピュータ実行可能命令が格納された、１つまたは複数のコンピュータ読取り可能媒体を備えることを特徴とするコンピュータ・プログラム製品。
【請求項４１】
コンパイルするコンピュータ・システムで使用し、データ・ストア内アイテムの物理レイアウトの、論理ビューへのマッピングを生成するための方法を実施するためのコンピュータ・プログラム製品であって、プロセッサによって実行されたときに、前記コンパイルするコンピュータ・システムに、
論理スキーマのコンパイルを容易にするために使用することができるコア・コードにアクセスすること、
アイテムの粒度を定義する変更単位と、１つまたは複数のアイテムのいずれもがレプリカ内で更新されるために、前記定義された粒度の１つまたは複数のアイテムの前記変更が、同じ同期化時に受信されなければならないことを定義する整合単位と、を含む論理スキーマにアクセスすること、および
前記コア・コードを使用して、前記論理スキーマを、少なくとも１つの１つのカタログにコンパイルすること
を備え、前記カタログは、物理レイアウトから、１つまたは複数の他のコンピュータ・システム内の論理ビューに実質上類似する論理ビューに、アイテムをマッピングすることを実施させるコンピュータ実行可能命令が格納された、１つまたは複数のコンピュータ読取り可能媒体を備えることを特徴とするコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、データ処理および操作（data processing and handling）に関する。より詳細には、本発明は、コンピュータ・システム間のデータ同期化（data synchronization）の分野に関する。
【背景技術】
【０００２】
コンピュータ・システムにおいて、データの同期化は、重要な機能である。複数の異なる設定（setting）および場所（location）で使用可能な同じデータを有する必要がしばしばある。データの同期化が有用である例が多数ある中で、説明に役立つ一例は、デジタル・アドレス帳を伴うものである。コンピュータ・ユーザは、職場のデスクトップ・コンピュータに格納されたデジタル・アドレス帳を有する可能性がある。勤務中は、ここが、住所、電話番号および一般的な連絡先情報を格納するための便利で利用しやすい場所である。職場から離れているとき、このコンピュータ・ユーザは、携帯情報端末（ＰＤＡ：personal digital assistant）や他のモバイル情報ストレージシステムなどの、モバイル形態に彼らのアドレス帳を必要とする可能性がある。ＰＤＡ上の連絡先情報は、職場のデスクトップ・コンピュータ上の連絡先情報と一致すべきである。
【０００３】
さらに、同じコンピュータ・ユーザが、連絡先情報が格納されている、自宅用コンピュータを有する可能性がある。理想的には、自宅用コンピュータ、ＰＤＡ、職場用コンピュータ上の連絡先情報はすべて、同期が取れているべきである。コンピュータ・ユーザの職場に戻れば、デジタル・アドレス帳に格納されている一部のデータは、そのコンピュータ・ユーザが働く組織内の他のコンピュータ・ユーザが使用可能な情報である可能性がある。したがって、このデータを、複数の異なるコンピュータ・ユーザによってアクセス可能な中央データベース内に格納することもでき、さらに、コンピュータ・ユーザのＰＤＡ、職場用コンピュータおよび自宅用のコンピュータと同期させることも可能である。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
したがって、上記に示した例では、デジタル・アドレス帳を格納するためのプラットフォームに、少なくとも４つの異なるタイプがある。すなわち、職場用コンピュータ、ＰＤＡ、自宅用コンピュータおよび中央データベースである。こうしたプラットフォームのそれぞれは、データ・ストア内に、デジタル・アドレス帳のコピーを格納するレプリカ（replica）を所有することができる。
【０００５】
それぞれのデータ・ストア内のデータは、たとえば物理テーブルおよび／または物理テーブル群など、様々な物理配列（physical arrangement）で維持されている可能性がある。物理テーブルは、データベース大容量ストレージ・アレイ、コンピュータ・ハードドライブまたはフラッシュ・メモリなどのコンピュータ記憶装置上における、データの実際の配列である。理解され得るように、異なるプラットフォームのそれぞれは、あるレプリカ内に、他のレプリカ内にあるものと全く同じデータを格納することができる。しかし、特定のプラットフォームの制限や機能が原因で、データは、特定のプラットフォームの異なる物理配列（すなわちそれぞれ異なる物理テーブル構成またはファイル内）に、格納される可能性がある。同じトポロジ内の異なるレプリカに、それぞれ異なるやり方でデータを物理的に格納することは、異なるレプリカを互いに同期させる場合に、様々な問題を引き起こす。
【０００６】
レプリカ内のデータは一般に、しばしば「アイテム」と称される、データの個別のグループに分けられる。たとえば、デジタル・アドレス帳では、アイテムは、氏名および住所、電話番号、連絡先全体、または他の任意の個別グループである可能性がある。他の例では、アイテムは、ファイル、画像、フォルダなどである可能性がある。レプリカ内のアイテムは、たとえばアイテムを追加し、削除し、および修正することによって、変更される可能性がある。物理構成がそれぞれ異なるために、レプリカ間で、変更を同期させることが難しくなる可能性がある。
【０００７】
それぞれ異なるレプリカで、データを同期させる際に生じる別の問題は、同期化させるデータの粒度（granularity）のコンテキスト（context）に関係する。上述のように、レプリカのデータは、アイテムに分けられる。こうしたアイテムは、同期される情報についての個別の情報である。通常、特定のレプリカ・トポロジ（replica topology）について、アイテムの粒度は、定義され、変更することができない。デジタル・アドレス帳の例では、アイテムが、連絡先の単一のフィールド、たとえば名、姓、電話番号、通りの住所、州または郵便番号、である場合、そのアイテムは細かい粒度を有する。対照的に、アイテムが、氏名全体（名と姓の両方）、連絡先番号、住所のうちの１つなどである場合、そのアイテムは中間の粒度を有する。粗い粒度を有するアイテムは、レプリカのアイテムとして、連絡先全体を含む可能性がある。
【０００８】
レプリカ内のアイテムを同期するにはしばしば、メタデータ（metadata）が、それぞれのアイテムに関連付けられることを必要とする。メタデータは、いつアイテムが最後に変更されたかを示す、タイム・スタンプなどの情報を含むことができる。それぞれのアイテムは関連するメタデータをもたなければならないため、アイテムの粒度が細かすぎる場合には、過剰なメタデータが、不必要に、特定のレプリカのリソース（ストレージおよびシステム・メモリなど）を消費する可能性がある。たとえば、上記で論じたデジタル・アドレス帳で、アイテムの粒度が、通りの住所、都市、郵便番号を含む場合、こうした３つのアイテムのそれぞれのメタデータを維持する（maintain）必要がある。しかしながら、通り住所の変更によって都市および郵便番号もが結果的に変更される可能性が高く、つまり、通りが更新されると、都市および郵便番号のメタデータが一般に変更される。
【０００９】
一方、アイテムの粒度が粗すぎる場合は、少なくとも２つの問題が生じる。すなわち、同期化時に、過剰な同期化データの送信が必要であることがあり、また不必要なコンフリクト（conflicts）が生じ得る。たとえば、上記で論じたデジタル・アドレス帳では、アイテムが連絡先全体に関して定義される場合、その連絡先のどの部分を修正しても、結果として、同期化時に、連絡先全体が送信されることになる。こうしたデータの多くは、トポロジ内のレプリカ間で、すでに同期されている可能性がある。したがって、同期化時に、２つのレプリカ間で、冗長なデータが送信される。たとえば、連絡先の電話番号の変更は、対応する連絡先を同期化するために、氏名および住所情報の送信を必要としない。しかし、アイテムが、連絡先全体として定義されている場合、電話番号を変更すると、同期化時に、氏名および住所の送信を生じさせることになる。この結果、通信リソースが、すでに同期化されているデータを転送するために消費される。
【００１０】
さらに、アイテムの定義が粗すぎる場合、レプリカは、レプリカのデータ間の競合を不適切に検出することがある。たとえば、第１のレプリカで、連絡先の電話番号が変更され、第２のレプリカで、連絡先の住所が変更される場合、アイテム粒度が連絡先全体であれば、第１と第２のレプリカが、コンフリクト状態にあるように見える可能性がある。しかし、電話番号の変更は、完全に有効なものとすることができ、住所の変更とは独立しているので、真の競合は存在しない可能性がある。
【００１１】
市販のデジタル・ストレージ・アプリケーション（digital storage application）では、最適化は、しばしば、特定のアプリケーションが発売され、多くのユーザによって使用されるまで、発見されず、また最適化は、物理ストレージへの変更をもたらす可能性がある。したがって、デジタル・ストレージ・アプリケーションの以前のバージョンでデータを含む物理テーブルは、デジタル・ストレージ・アプリケーションの後のバージョンで、同じデータを格納する物理テーブルとは、同じレイアウトを有していないことがある。デジタル・ストレージ・アプリケーションの異なるバージョン間でデータを同期化するには、後のバージョンの最適化を利用するように、また同期化機能をさらに提供するように、新しいコードを作成することが必要となる可能性がある。
【００１２】
上記の例は、デジタル・アドレス帳のコンテクストで作られているが、データの同期化を用いる他の多くの環境が存在する。いくつかの例は、ドキュメントのバージョンを管理すること、ファイルおよび情報を共有すること、ソフトウェアをアップデートすることなど、を含む。こうした環境および他の環境のそれぞれで、上記の問題に見舞われる可能性がある。
【００１３】
したがって、コンピュータ・システムおよび通信リソースをより効率的に使用する同期化機構があれば、有利であろう。データのコンフリクトを、より適切に検出する同期化機構があれば、また有利であろう。
【課題を解決するための手段】
【００１４】
本発明の原理は、レプリカの同期化を提供する。コンピュータ・システムは、トポロジ（コンピュータ・ネットワーク・トポロジなど）に含まれる、複数のレプリカのうちの１つであるソース・レプリカ（source replica）を含む。コンピュータ・システムは、ソース・レプリカに宛先レプリカ（destination replica）を同期させるべきことを示す同期化インジケーション（同期化要求メッセージなど）を受信する。コンピュータ・システムは、ソース・レプリカの物理レイアウト（データベース・テーブルなど）内で、アイテムが変化したかどうかを決定する。ある例では、コンピュータ・システムは、ローカル変更の列挙（local change enumeration）を、同期化ローカル変更の列挙（synchronization local change enumeration）と比較する。
【００１５】
比較結果がそのように示す場合、たとえばローカル変更列挙と同期化ローカル変更列挙が異なる場合を示すと、物理レイアウト内のアイテムが変化したと決定される。コンピュータ・システムは、ソース・レプリカの物理レイアウト内の変更されたどのアイテムをも、論理ビューにマップする。この論理ビューは、トポロジ内の１つまたは複数の他のレプリカにおける論理ビューに、実質上類似する。それぞれのレプリカで、カタログは、論理ビューを実質上類似させるように、物理レイアウトから論理ビューへのマッピングを制御する。コンピュータ・システムは、論理ビューにマップされた少なくとも１つのアイテムを、宛先レプリカに送信する。
【００１６】
本発明の原理は、トポロジ内の他のコンピュータ・システムにデータを同期させているコンピュータ・システムに対して提供される。コンピュータ・システムは、複数のアイテムとその複数のアイテムのローカル変更列挙を維持するローカル変更トラッカ（tracker）とを含むデータ・ストア層を含む。コンピュータ・システムは、さらに、トポロジ内の１つまたは複数の他のコンピュータ・システム内の論理ビューに実質上類似の論理ビューを含む同期化層を含む。論理ビューは、複数のアイテムからの１つまたは複数のアイテムのマッピングを表す。同期化層はさらに、論理ビューにマップされた１つまたは複数のアイテムのバージョンと同期化ローカル変更列挙とを維持する同期化変更トラッカを含む。
【００１７】
本発明の原理は、論理ビューへのデータ・ストア内アイテムの物理レイアウトのマッピングを生成することをも提供する。コンピュータ・システムは、論理スキーマのコンパイルを容易にするために使用することができるコア・コード（core code）にアクセスする。コンピュータ・システムは、変更単位（change unit）および整合単位（consistency unit）の定義を含む論理スキーマにアクセスする。開発者が使用可能なリソースに基づいて変更単位のサイズを割り当てることができるように、変更単位を設定することができる。たとえば、低帯域幅または高待ち時間のネットワーク接続では、ネットワーク上におけるより小さいアイテムおよびデータの減少をもたらす、より低い粒度（granularity）を用いることができる。整合単位も、同様に、開発者が同時に同期化されるべきアイテムを一緒にまとめる（グループ化する）ことができるように、設定することができる。たとえば、開発者が、任意のこれらアイテムへの変更がそれらのすべてに対して変更を生じるように、住所を構成するアイテムを一緒にグループ化することができる。
【００１８】
コンピュータ・システムは、コア・コードを使用して、論理スキーマを、物理レイアウトから論理ビューにアイテムをマップする、少なくとも１つの、カタログにコンパイルする。コンパイルによって、また、プロシージャまたは関数が生成されることになる。プロシージャまたは関数は、物理レイアウト内で、アイテムがどのように格納されているかを示す。プロシージャまたは関数へのアクセスによって、カタログは、データの物理レイアウトを、１つまたは複数の他のコンピュータ・システム内の論理ビューに実質上類似した論理ビューに、マップすることができる。複数のコンピュータ・システム間で、類似の論理ビューを使用することによって、レプリカ間のより効率的な同期化を容易にすることができる。
【００１９】
本発明の追加の特徴について、以下の説明で述べるが、それは、部分的には、説明から部明らかになり、または本発明を実施によって知ることができる。本発明の特徴および利点は、特許請求の範囲に具体的に指摘する、複数の手段および組合せによって、実現し、取得することができる。本発明のこれらのおよび他の特徴は、以下の説明および特許請求の範囲から、より完全に明らかになり、または以下で述べる本発明の実施によって、知ることができる。
【００２０】
本発明の上記した及び他の特徴を、どのようにして得ることができるかを説明するために、上記で簡潔に述べた本発明のより具体的な説明を、添付の図面中で説明されるその特定の実施形態を参照することにより、行う。これらの図面は、本発明の典型的な実施形態を示すものにすぎず、したがって、本発明はその範囲に限定されると見なすべきでないとの理解のもとに、本発明について、添付の図面を使用して、さらに具体的にかつ詳細に示し説明する。
【発明を実施するための最良の形態】
【００２１】
本発明は、論理ビューを用いて、レプリカのアイテムを同期させるためのシステム、方法およびコンピュータ・プログラム製品にまで及ぶ。レプリカは、カタログを使用して、物理レイアウトから論理ビューに、アイテムをマップする。カタログは、論理スキーマからコンパイルすることができ、（複数の異なるレプリカなどの）様々な物理レイアウトからのデータを、（たとえば複数の異なるレプリカで共有される）実質上類似のビューにマップすることを容易にする。本発明の実施形態は、以下でより詳細に論じるように、コンピュータ・ハードウェアの様々なアイテムを含む、特定目的または汎用コンピュータを備えることができる。
【００２２】
図１を参照すると、本発明の原理に従って同期されることが可能なレプリカを含む例示的なコンピュータ・アーキテクチュアが示されている。図１にトポロジ１００を示す。トポロジ１００は、レプリカ１０２およびレプリカ１０４を含み、これらのレプリカは、共通のネットワーク（ＬＡＮ、ＷＡＮ、あるいはインターネットなど）に接続されることが可能なコンピュータ・システムに存在する。レプリカ１０２は、データ・ストア層１２６および同期化層１２８に分割される。レプリカ１０４も同様に、データ・ストア層１３０および同期化層１３２に分割される。レプリカ１０２は、物理テーブル１０５および１０６を含み、これらのテーブルは、データ・ストア層１２６に格納されたレプリカ１０２のデータを含む。レプリカ１０４も同様に、物理テーブル１０７、１０８および１０９を含み、これらのテーブルは、データ・ストア層１３０に格納されたレプリカ１０４のデータを含む。
【００２３】
物理テーブル１０５および１０６、ならびに１０７、１０８および１０９は、同じ情報を収容することが可能である。しかし、これらのテーブルは、意味のある違いを示して、物理的に構成されることが可能である。こうした違いは、テーブルが常駐するテーブルのタイプの結果である可能性がある。たとえば、サーバ・レプリカ（server replica）上の最適化は、異なる物理テーブル・レイアウトを結果として生じさせているクライアント・レプリカ（client replica）上の最適化とは異なる可能性がある。あるいは、この物理テーブルは、同じ市販ソフトウェアの異なるバージョンに備わっている可能性がある。市販ソフトウェア・アプリケーションの後のバージョンはしばしば、最適化を含み、物理テーブルの前のバージョンとは異なる物理テーブルのレイアウトをもつことがある。
【００２４】
アイテムは、レプリカ１０２のテーブル１０５および１０６に、ユーザ・インターフェース１３４を用いて入力することができる。ユーザ・インターフェース１３４は、テーブル１０５および１０６内で、追加されたアイテムまたは変更されたアイテムのテーブル・レイアウトを指示するコードを収容する。本発明の一実施形態では、このコードは、プロシージャまたは関数のコード１３８である。レプリカ１０４は、レプリカ１０２内のユーザ・インターフェースと同じように機能するユーザ・インターフェース１３６を含む。ユーザ・インターフェース１３６も同様に、プロシージャまたは関数のコード１４０を使用することができる。
レプリカ１０２は、論理ビュー１１０をも含む。物理テーブル１０５および１０６は、論理ビュー１１０にマップされる。レプリカ１０４も同様に、論理ビュー１１２を含む。物理テーブル１０７、１０８および１０９は、論理ビュー１１２にマップされる。論理ビュー１１０および１１２は、実質上類似の論理ビューとすることができ、たとえば、論理ビュー１１０と１１２は両方とも、連絡先情報を表現することができる。アイテムは、論理ビュー１１０と１１２の両方で、同じように表現されることが可能である。本発明の一実施形態では、レプリカ１０２内でのテーブル１０５および１０６から、論理ビュー１１０へのマッピングは、レプリカ１０２の各アイテムの物理格納場所に関する情報を収容する（同期化層１２８内の）カタログ１１４を用いて、行われる。レプリカ１０４上のマッピングは、レプリカ１０２上のそれと同様である。レプリカ１０２および１０４は、論理ビュー１１０および１１２を介して、同期化する。本発明の一実施形態では、ＸＭＬ、または（以下で詳述する）物理スキーマ・マッピング・ドキュメント（physical schema mapping document）に対する他の論理スキーマをコンパイルして、カタログ、およびプロシージャまたは関数を作成する。
【００２５】
ある例示的な実施形態では、同期化は、レプリカ１０２によって受信される、同期化が開始されるべきことを示すインジケータに応答して実施される。インジケータは、（１）レプリカ１０２が、そのテーブル１０５および１０６内に、ユーザ・インターフェース１３４を介して、変更されまたは追加されたアイテムを有することのレプリカ１０２による認識、（２）レプリカ１０４から、同期化要求を受信すること、または（３）他のいずれかの適切なインジケータ、を含むことできる。次いで、レプリカ１０２は、マップされる必要がある、物理テーブル１０５および１０６内のアイテムを、カタログ１１４を用いて、論理ビュー１１０にマップする。次いで、アイテムは、レプリカ１０２の論理ビュー１１０から、レプリカ１０４の論理ビュー１１２に送信される。次いで、レプリカ１０４は、送信されたアイテムを、論理ビュー１１２からカタログ１１６を介して物理テーブル１０７、１０８および１０９に、マップすることができる。
【００２６】
本発明の一実施形態では、同期化の範囲は、フォルダ（複数の）を使用することによって制御することができる。フォルダは、アイテムをまとめる（グループ分けする）ために使用される論理構成体である。したがって、複数のフォルダを同期させることによって、共通のフォルダにまとめられたアイテムを、同期させることができる。フォルダを使用して、フォルダ内にまとめられた（グループ分けされた）アイテムだけを同期することによって、レプリカ内に格納されたすべてのアイテムよりも少ないアイテム上に基づいて、同期させることが可能になる。図１に、フォルダのグループ化（グループ分けすること）の例を示す。フォルダのグループ化は、レプリカのデータ・ストア層内のフォルダ・テーブルを使用して行うことができる。図１に、データ・ストア層１２６内のテーブル１０６を図示することによって、この概念を示す。テーブル１０６は、１、２および３でラベル付けされたデータ・アイテムを備える。フォルダ・テーブル１１８は、識別番号２および３に対応するエントリＡを収容する。このテーブル・エントリ（table entry）は、２および３でレベル付けされたデータ・アイテムを収容するＡでラベル付けされたフォルダ１２０を表す。レプリカ１０４は、１、２および３でラベル付けされたデータ・アイテムを格納するテーブル１０７、１０８および１０９を備える対応する論理構成体を有する。これらのアイテムは、物理的には異なったように格納されているが、レプリカ１０２で１、２および３でレベル付けされたアイテムに対応する。フォルダ・テーブル１２２は、レプリカ１０４のデータ・ストア層１３０に格納される。フォルダ・テーブル１２２は、Ａでラベル付けされたフォルダ１２４にマップする。したがって、レプリカ１０２に、フォルダ・レベルで、レプリカ１０４を同期させることができる。
【００２７】
論理ビューは、ＸＭＬスキーマまたは他の何らかのツリーライクな（tree like）データ構造体で、定義することができる。図２Ａに、こうした構造体の一例を示す。論理ビューを理解するためには、まず複数の他のアイテムを、理解しなければならない。たとえば、整合単位は、同期化時に、報告され得るアイテム変更の最小グループを表す。整合単位で定義され得るデータの一例は、住所である。また住所は、通り、都市、州および郵便番号を含めて、複数の個々のコンポーネントからなる。住所が更新されると一般に、これらのアイテムのうちのいくつかが変更される。したがって、同期化時に、変更されたアイテムの一部だけが送信され、その送信先であるレプリカで変更された場合は、矛盾した無意味な住所が、レプリカ内にもたらされる可能性がある。しかしながら、整合単位に属するそれぞれの変更されたコンポーネント、すなわち通り、都市、州および郵便番号が、同じ同期化時に送信されるならば、同期化中、整合単位として定義された住所が、レプリカ内で、正確に、更新されることになる。
【００２８】
理解すべき別の概念は、変更単位の概念である。変更単位は、アイテムの境界を定義する構成体である。換言すれば、変更単位のどの部分が修正されても、次の同期化時に、変更単位全体が同期化されることになる。ある例では、変更単位は、電話番号と定義されることが可能である。そのエリア・コードを変更すると、結果的に、次の同期化時に、電話番号全体が送信されることになる。
【００２９】
次に図２Ａを参照すると、整合単位および変更単位が、論理スキーマ２００の一般化された図内に示されている。論理スキーマ２００は、最上位の整合単位２０２を含む。最上位整合単位２０２には、２つの下位レベルの整合単位が追加されている。第１の下位レベル整合単位２０４は、変更単位２０６および２０８を含む。第２の下位レベル整合単位２１０は、変更単位２１２、２１４、２１６および２１８を含む。図２Ｂに、論理スキーマ２００のより具体的な例が図示されており、連絡先２５２（最上位整合単位２０２に対応）が示されている。連絡先内２５２内に、氏名２５４（第１の追加整合単位２０４に対応）が示されている。氏名２５４は、名２５６および姓２５８を含む。アドレス２６０（第２の整合単位２１０に対応）が図示されており、通り２６２、都市２６８、州２６６および郵便番号２６８を含んでいる。
【００３０】
本発明の実施形態では、定義可能な整合単位および変更単位が企図されている。整合単位および変更単位は、たとえば、それぞれの特定のアプリケーションについて、ＸＭＬスキーマで定義することができる。本発明の一実施形態では、開発者が、ＸＭＬスキーマを作成する。このＸＭＬスキーマは、コア・コードを備えるコンピュータ・システムで格納される。そのコンピュータ・システムで、コア・コードは、ＸＭＬスキーマをコンパイルする。ＸＭＬスキーマをコンパイルすると、論理ビューと物理テーブル（たとえば図１に示すレプリカ１０２の論理ビュー１１０と、物理テーブル１０５および１０６）間で、アイテムをマップするために使用されるカタログ（図１に示すレプリカ１０２のカタログ１１４など）の作成がもたらされる。コンパイルによって、プロシージャまたは関数の生成をもたらすこともできる。プロシージャまたは関数コードは、レプリカのデータベース層（図１に示すレプリカ１０２のデータベース層１２６など）に格納することができる。プロシージャまたは関数コードは、テーブルまたは他のストレージ構成で、アイテムがどのように格納されるかを指示するなど、物理ストレージ（図１に示す物理テーブル１０５および１０６など）に、アイテムを格納するための機能性（functionality）を提供する。
【００３１】
本発明の一実施形態では、ユーザ・インターフェースを介して行われる変更などのような、ローカルで行われる変更を、同期化によってもたらされる変更と区別することができる。図１および３Ａを参照すると、こうした機能について、説明されている。上記のように、レプリカ１０２は、データ・ストア層１２６に格納された物理テーブル１０５および１０６を備える。図３Ａは、ユーザ・インターフェース１３４を介して行われた更新が、物理テーブル１０５および１０６、ならびに論理ビュー１１０を使用して、どのように同期されるかを示す時間経過に伴う推移を示す。図３Ａに示す物理テーブル１０５は、２つの縦列、すなわちアイテム列３０２およびローカル変更列挙（ＬＯＣＡＬ＿ＣＮ）列３０４を有する。アイテム列３０２は、レプリカ１０２に格納されるアイテムを収容する。ローカル変更列挙列３０４は、データ・ストア１２６がアイテムへのラベルとして割り当てるローカル変更列挙を含む。それぞれのアイテムと関連付けられたローカル変更列挙は、アイテムに対して変更が行われるごとに、増分的に更新される。データ・ストア層１２６は、こうした変更がユーザ・インターフェースを介して行われたか、それとも同期化を介して受信されたかに関係なく、すべての変更に対して、ローカル変更列挙を割り当てる。ローカル変更トラッカは、ローカル変更列挙列３０４を含むことができる。
【００３２】
論理ビュー１１０は、３つの列、すなわちカタログ１１４を介して、物理テーブル１０５および１０６からマップされたアイテムを格納するアイテム列３０６、アイテムに割り当てられたローカル変更列挙の同期化フォーム（synchronization form）を格納する同期化ローカル変更列挙列３０８、ならびに変更を行ったまたはアイテムにバージョンを割り当てたトポロジ内のレプリカに関する情報、およびアイテムが追加されまたは変更された時系列順、を含むバージョンを含むバージョン列３１０、を含む。同期化変更トラッカは、同期化ローカル変更列挙列３０８およびバージョン列３１０内の情報を含むことができる。
【００３３】
時刻（１）で、１０２のレプリカは、定常状態にある。時刻（２）で、ユーザ・インターフェース１３４を介して、Ｉ２でラベル付けされたアイテムへの変更が行われる。ローカル変更列挙が、Ｉ２に割り当てられ、このローカル変更列挙は、この場合には１２、などの使用可能な次の時系列順の変更列挙である。
【００３４】
時刻（３）で、レプリカ１０２は、同期化が実施されるべきことを示すインジケーションを受信する。同期化層１２８で、レプリカ１０２は、同期化ローカル変更列挙３０８を、列３０４のローカル変更列挙と比較することによって、論理ビュー・テーブル１１０をチェックする。列３０４のローカル変更列挙が、列３０８の同期化ローカル変更列挙と一致しないので、レプリカ１０２は、物理テーブル１０５および１０６に変更が行われたことに気付く。すなわちローカル変更列挙は、値１２をもち、同期化ローカル変更列挙は、値５をもつ。したがって、レプリカ１０２は、列３１０のバージョンを、Ａ１２に更新する。このＡ１２は、変更がレプリカ１０２（この例では、レプリカ１０２は、トポロジ内で、レプリカＡとラベル付けされる）で行われ、またレプリカ１０２が、１２のローカル変更列挙を割り当てたことを示している。およそ同時に、Ｉ２でラベル付けされたアイテムが、ローカル・テーブル１０５、１０６から、論理ビュー・テーブル１１０にマップされる。次いで、時刻（４）で、列３０８の同期化ローカル変更列挙が、列３０４のローカル変更列挙に一致するように更新される。次いで、物理テーブル１０５および１０６からマップされたアイテムを含める論理ビュー１１０のアイテムに、トポロジ１００内の他のレプリカを同期させることができる。
【００３５】
次に図３Ｂを参照すると、同期化の結果として、レプリカを更新する例が、ローカル・テーブルを含めて示されている。時刻（１）で、レプリカ１０２は、トポロジ内の他のレプリカから、新しいアイテム、またはアイテムへの変更を受信していない定常状態にある。時刻（２）で、論理ビュー・テーブル１１０のアイテムＩ３に対する変更が受信される。Ｉ３に対する変更は、バージョンＣ１０１をもつ。この変更が、カタログ１１４を介して、論理ビュー・テーブル１１０から物理テーブル１０５に送信される。変更を受信すると、データ・ストア層１２６は、データ・ストア層１２６によって割当て可能な次の変更列挙であるローカル変更列挙を割り当てる。この場合、時刻（３）の列３０４で示すように、ローカル変更列挙は１３である。その後すぐ、または間もなくして、図の時刻（４）で、同期化層１２８で、チェックが行われ、変更に割り当てられた列３０４のローカル変更列挙に気付く。列３０８の同期化ローカル変更列挙は、列３０８のローカル変更列挙に合わせて更新される。このようにして、同期化層は、列３０４のローカル変更列挙と列３０８の同期化ローカル変更列挙が一致する限り、アイテムＩ３に対して、ユーザ・インターフェース１３４を介して、同期されていないローカル変更が行われていないことが分かる。さらに、列３１０のバージョンは、どのレプリカが変更を行ったか、および変更が行われた時系列順に関する情報（この場合、時刻１０１のＣでラベル付けされたレプリカ）を収容する。
【００３６】
本発明の一部の実施形態では、上記で論じた論理ビューとは異なるカスタム・ビュー（custom view）を提供する必要がある可能性があ。すなわち、上記で論じた論理ビューは、同期化効率が最大化されるように、すべてのレプリカ上で、類似のレイアウトをもつ。しかし、レプリカが、論理ビューを考慮して設計されておらず、それを含むように更新することができないようなトポロジに、レプリカが追加される場合がある。しかし、本発明の実施形態は、こうしたカスタムのレプリカと互換が取れることが企図されている。次に図４を参照すると、こうしたカスタム・レプリカに対処するための一つの方法が示されている。図４に、同期化層（図１に示す層１２８など）で割り当てられた列３１０にバージョンをマップし、ならびに一般にカスタム・レプリカによってカスタム・ビューに４０４に割り当てられる列４１０にカスタム変更列挙を、マップするシステムを一般的に示す。次いで、上述のように、カスタム・ビュー４０４を通してアイテムを送信および受信する追加のステップ（act）を伴って、同期化が行われることになる。たとえば、あるレプリカからカスタム・レプリカにアイテムが送信される場合、送信する前に、そのアイテムに、適切なカスタム変更列挙を割り当てることが可能である。
【００３７】
アイテムを受信したら、カスタム・ビュー４０４を調べることによって、適切なバージョンを割り当てることができ、そのアイテムは、論理ビュー（図１に示す論理ビュー１１０など）の適切な位置に、マップされる。
【００３８】
図５に、本発明の一部の実施形態の態様を用いて、レプリカを同期するための例示的な方法５００を示す。方法５００は、図１に示すようなコンピュータ・アーキテクチャーで実施することができる。したがって、図５の方法は、図１内の各要素を参照して説明される。方法５００は、論理ビューにマップされるべき物理レイアウトからのアイテムを識別する（ステップ５０２）ための機能的結果志向のステップ（functional result oriented step）を含む。ステップ５０２は、論理ビューにマップされるべきである物理レイアウトからのアイテムを識別するための、対応するいずれのステップ（act）をも含むことが可能である。
【００３９】
しかしながら、図５の例示的な方法では、ステップ５０２は、ソース・レプリカに宛先レプリカを同期させるべきことを示す同期化インジケーションを受信する対応するステップ（act５０４）を含む。ステップ（act）５０４は、コンピュータ・システムが、ソース・レプリカに宛先レプリカを同期させるべきことを示す同期化インジケーションを受信することを含むことが可能である。たとえば、レプリカ１０２を含むコンピュータ・システムは、レプリカ１０２にレプリカ１０４を同期させるべきことを示すインジケーションを受信することが可能である。
【００４０】
ステップ（act）５０４は、図１に示すレプリカ１０２の同期化層１２８など、レプリカの同期化層で行うことが可能である。レプリカ１０２は、データの同期化が行われる可能性のある他のレプリカを含むトポロジ１００内に存在する。ステップ（act）５０４で述べるインジケーションは、トポロジ１００内の別のレプリカからの同期化要求を含めて複数の異なるソースから、またはレプリカ１０２内のタイマ切れによって、あるいはデータベース層１２６に格納されたデータへの何らかの変更の結果としてフラグが設定されたことによって、生じる可能性がある。本明細書では、具体的には説明しないが、様々な他のインジケーホンもまた、同期化が実施されるべきことを示すために受信されることが可能な適切なインジケーションである可能性がある。
【００４１】
ステップ５０２は、ソース・レプリカの物理レイアウト内のアイテムが変更されたかどうかを決定する、対応するステップ（act５０６）をも含みことができるステップ（act）５０６は、コンピュータ・システムが、ソース・レプリカの物理レイアウト内のアイテムが変化したかどうかを決定することを含む。たとえば、レプリカ１０２を含むコンピュータ・システムが、テーブル１０５および１０６に物理的に格納されているアイテムが変化したかどうかを決定することができる。
【００４２】
ステップ（act）５０６の一実施形態が図３Ａに示されており、上述のように、時刻（２）で、列３０８の同期化ローカル変更列挙が、列３０４のローカル変更列挙と比較される。
【００４３】
列３０４のローカル変更列挙は、レプリカ１０２のデータ・ストア層１２６内にあり、データ・ストア層１２６によって、たとえばテーブル１０５内のあるアイテムに関連付けられる。列３０８の同期化ローカル変更列挙は、レプリカ１０２の論理ビュー１１０にマップされたアイテムに関連付けられ、この論理ビュー１１０では、マップされたアイテムが、テーブル１０５および１０６の物理レイアウト内に対応するアイテムを有する。列３０４のローカル変更列挙は、列３０８の同期化ローカル変更列挙とは独立に変更することができる。したがって、ローカル変更が行われると、列３０４のローカル変更列挙は、列３０８の同期化ローカル変更列挙の値とは異なる値に変更される。
【００４４】
したがって、ステップ（act）５０６の実施時に、ローカル変更列挙と同期化ローカル変更列挙の比較を使用して、ソース・レプリカの物理レイアウト内のアイテムに変更が行われたかどうかを決定することができる。たとえば、ローカル変更列挙と同期化ローカル変更列挙の値がそれぞれ異なることは、物理レイアウト内の変更を示すことになる。そのアイテムが格納されているレプリカ以外のレプリカで、アイテムの変更が行われた場合、またはアイテムがトポロジ内の別のレプリカと同期された場合は、ローカル変更列挙と同期化ローカル変更列挙は、同じ番号であることになる。上述の図３Ａおよび図３Ｂに関する議論は、本発明の一実施形態において、どのようにこれが遂行されるかの例を説明している。
【００４５】
レプリカの同期化層の同期化変更トラッカは、論理ビューにマップされたアイテムに関連付けられたバージョンおよび同期化ローカル変更列挙を維持する。たとえば、テーブル３０７は、同期化層１２８に置くことができる。同期化変更トラッカ内のバージョンは、対応するバージョンに関連するアイテムに変更を行ったレプリカを識別する、レプリカＩＤを含むことができる。バージョンは、レプリカ上で変更が行われた時系列順を識別するレプリカ変更列挙をも含むことができる。図３Ａで、アイテムＩ１（列３０６）が、バージョンＡ４に関連付けられており、バージョンＡ４のＡは、レプリカのＩＤ（たとえばレプリカ１０２を識別する）であり、４は、レプリカ変更列挙である。したがって、アイテムＩ１への変更は、レプリカ１０２で、時系列順（４）で行われている。本発明の一部の実施形態では、レプリカＩＤは、変更を行ったレプリカ以外のレプリカを識別する。こうした実施形態では、トポロジ内の複数の異なるレプリカによって行われた変更にバージョンを割り当てるためにレプリカが使用される。これを、代理オーサリング（surrogate authoring）と呼ぶことができる。
【００４６】
方法５００は、物理レイアウト内の各アイテムに対して、アイテムの粒度を定義する変更単位を定義することを含むこともできる。変更単位は、図２Ａおよび２Ｂで示すような論理スキーマまたは論理構造で、定義され得る。
【００４７】
方法５００は、また、論理スキーマ内の整合単位を定義することを含むことができる。整合単位は、いくつの変更単位がレプリカによって適応されるべきかについての、レプリカによって受信されなければならない、定義された粒度の複数のアイテムを含む。たとえば、図２Ｂは、通り２６２、都市２６４、州２６６および郵便番号２６８の変更単位を含む、アドレス整合単位２６０を示す。同期化時に、通り２６２、都市２６４、州２６６および郵便番号２６８の変更単位から成る変更された複数のアイテムが、レプリカによって受信されない場合は、レプリカで、どのアイテムも更新されないことになる。整合単位内のすべてのアイテムが受信される場合、レプリカで、すべてのアイテムを、同時に更新することが可能になる。
【００４８】
方法５００は、また、たとえばカタログ１１４に類似のカタログを作成するため、論理スキーマをコンパイルすることを含むことができる。カタログは、物理テーブル１０５および１０６内で、どこにアイテムが物理的に配置されるかに関する情報を収容する。より具体的には、本発明の一実施形態では、カタログは、詳細のメタデータ、ならびに物理ストレージ内のアイテムを、物理ビューのアイテムにマップするためのプロシージャまたは関数を生成するための命令を含む。したがって、カタログは、物理テーブル１０５および１０６のアイテムを、論理ビュー１１０にマップするために使用される。論理スキーマがコンパイルされると、プロシージャまたは関数コードも生成することができる。プロシージャまたは関数コードは、レプリカのデータベース層（レプリカ１０２のデータベース層１２６など）に格納することができる。プロシージャまたは関数コードは、テーブル内にアイテムがどのように格納されるかを指示するなど、物理テーブルの物理レイアウト内（物理テーブル１０５および１０６など）に、アイテムを格納するための機能性（functionality）を提供する。
【００４９】
方法５００は、また、ステップ（act）５０４の前に、カタログをインストールすることも含むことができる。カタログは、開発者によって、あるいはカタログが上述のコンピュータ・システム以外のコンピュータ・システムで作成されコンパイルされている他のソースによって、提供され得る。次いで、カタログは、対象コンピュータ・システムで実行することができる、インストール可能な、コードとして提供される。同様に、プロシージャまたは関数コードは、コンピュータ・システム内に提供されてインストールされることが可能である。
【００５０】
方法５００は、また、レプリカに、そのレプリカの一部のアイテムを含む、フォルダを定義することを含むことができる。トポロジ内の別のレプリカもまた、対応するアイテムに対応するフォルダを含みことができる。図１に、レプリカ１０４のフォルダ１２４に対応する、レプリカ１０２のフォルダ１２０を示す。レプリカは、同期される必要があり、またフォルダ内にある、アイテムだけを送信することによって、フォルダの同期化を最適化することができる。
【００５１】
方法５００は、また、ソース・レプリカの物理レイアウト内の変更されたいずれのアイテムも、論理ビューにマップするステップ（act５０８）を含む。ステップ（act）５０８は、コンピュータ・システムが、ソース・レプリカの物理レイアウト内の変更されたいずれのアイテムをも、論理ビューにマップすることを含むことができる。たとえば、レプリカ１０２を含むコンピュータ・システムは、物理テーブル１０５および１０６に格納されたアイテムを、カタログ１１４を介して、論理ビュー１１０にマップすることができる。あるレプリカの論理ビューは、トポロジ（act）（act）内の１つまたは複数の他のレプリカの論理ビューに、実質上類似することができる。たとえば、論理ビュー１１０は、論理ビュー１１２に、実質上類似することができる。このことは、トポロジ１００内のレプリカを同期化する効率を高めることが可能になる。
【００５２】
方法５００は、また、ソース・レプリカから宛先レプリカに、少なくとも１つのマップされたアイテムを送信するステップ（act５１０）を含む。ステップ（act）５１０は、レプリカ１０２が論理ビュー１１０から論理ビュー１１２にアイテムを送信することを含むことができる。たとえば、レプリカ１０２は、レプリカ１０４に、連絡先２５２に類似する連絡先からの１つまたは複数のアイテムを送信することができる。
【００５３】
方法５００は、また、論理ビューをカスタム・ビューにマップすることを含むことができる。論理ビューをカスタム・ビューにマップすることは、（たとえば列３１０の）バージョンを、（たとえば列４１０の）カスタム変更列挙にマップすることを含む。カスタム・レプリカは、カスタム・レプリカ内のカスタム・アイテムに、カスタム変更列挙を割り当てることができる。カスタム変更列挙は、バージョン（図４に示すカスタム・ビュー４０４など）に関連付けることができる。カスタム変更列挙は、ローカル変更とは異なるフォーマット（異なるデータフォーマットなど）のものとすることができる。
【００５４】
次いで、上述のように、カスタム・ビューを介してアイテムを送信および受信する追加のステップ（act）を伴って、同期化が行われることになる。たとえば、アイテムが、レプリカからカスタム・レプリカに送信される場合、送信する前に、そのアイテムに適切なカスタム変更列挙を割り当てることができる。アイテムを受信すると、カスタム・ビュー４０４を調べることによって、適切なバージョンを割り当てることができ、そのアイテムは、論理ビュー（図１に示す論理ビュー１１０など）内の適切な位置にマップされる。
【００５５】
次に図６を参照すると、データ・ストア内アイテムの物理レイアウトの、論理ビューへのマッピングを生成するための方法が、方法６００として示されている。方法６００は、論理スキーマのコンパイルを容易にするために使用できるコア・コードにアクセスするステップ（act６０２）を含む。ステップ（act）６０２は、（たとえばコンピュータ・システムで）レプリカが、論理スキーマのコンパイルを容易にするために使用できるコア・コードにアクセスするステップ（act）を含むことができる。たとえば、レプリカ１０２は、論理スキーマを物理スキーマ・マッピングにコンパイルすることを容易にするコア・コードにアクセスすることができる。本発明の一実施形態では、ステップ（act）６０２は、適切な機能をもつコードを作成し、コンパイルするコンピュータ・システムに、コードをインストールする開発者によって遂行することができる。次いで、コンパイルするコンピュータ・システムが、そのコードにアクセスする。
【００５６】
方法６００はさらに、論理スキーマにアクセスするステップ（act６０４）を含む。ステップ（act）６０４は、（たとえばコンピュータ・システムで）レプリカが論理スキーマにアクセスすることを含むことができる。たとえば、レプリカ１０２は、論理スキーマにアクセスすることができる。本発明の一実施形態では、論理スキーマは、アイテムの粒度を定義する変更単位を含む。論理スキーマは、また、整合単位を含むことができる。この整合単位は、他のコンピュータ・システムで、１つまたは複数のアイテムのいずれもが更新されるためには、当該他のコンピュータ・システムで、変更が受信されなければならない変更に関する、定義された粒度の１つまたは複数のアイテムを定義する。
【００５７】
本発明の一実施形態では、このスキーマは、設計時に、開発者によって設計される。特定のタイプのデータ・ストアを設計する開発者は、特定のアプリケーションについての粒度を最適化するために、変更単位を定義することができる。たとえば、変更単位は、より大きい変更単位を定義することによって、維持する必要があるメタデータの量を低減するように定義されることが可能であり、あるいはより小さい変更単位または２つの間の何らかのバランスを定義することによって、コンフリクトの発生を低減するように設計することができる。変更単位の粒度は、論理スキーマで定義することができるので、開発者は、変更単位を定義するために、新しいコンピュータ実行可能コードを作成する必要はない。
【００５８】
整合単位の定義も同様に、設計時に、開発者によって実施することができる。整合単位の定義について、図２Ａおよび２Ｂの説明に関連して、より詳しく説明している。整合単位の定義は、同時に更新されるべきアイテムが同時に更新されることを確実にするのに役立つ。整合単位は、論理スキーマで定義することができるので、開発者は、整合単位を定義するために、新しいコンピュータ実行可能コードを作成する必要はない。
【００５９】
方法６００はさらに、コア・コードを使用して、論理スキーマをカタログにコンパイルするステップ（act６０６）を含む。ステップ（act）６０６は、（たとえばコンピュータ・システムで）レプリカが、コア・コードを使用して、論理スキーマをカタログにコンパイルするステップ（act）を含むことができる。たとえば、レプリカ１０２は、アクセスされたコア・コードを使用して、アクセスされた論理スキーマを、カタログ１１４にコンパイルすることができる。論理スキーマを物理スキーマのマッピングにコンパイルすることによって、レプリカ（図１のレプリカ１０２など）の同期化層（図１の層１２８など）で格納されることが可能なカタログ（図１に示すカタログ１１４など）の生成をもたらされる。
【００６０】
カタログは、物理テーブル（図１の物理テーブル１０５および１０６など）から論理ビュー（図１の論理ビュー１１０など）にアイテムをマップするための情報を収容する。トポロジ内の１つまたは複数の他のコンピュータで、論理ビューは、実質上類似し得る。また、ステップ（act）６０６は、プロシージャまたは関数コードを作成することができる。プロシージャまたは関数コードは、レプリカのデータ・ストア層（図１に示すレプリカ１０２のデータ・ストア層１２６など）に置かれる。プロシージャまたは関数コードは、物理テーブル（図１のテーブル１０５および１０６など）内のアイテムの物理ストレージに指示をする、コンピュータ実行可能命令を収容する。
【００６１】
方法６００は、また、コンパイルするコンピュータ・システムを、論理ビューを用いて、トポロジ内の他のコンピュータ・システムに、アイテムを送信するように構成することをも含むことができる。トポロジ内の他のコンピュータ・システムは、そのコンピュータ・システムの論理ビューに実質上類似の論理ビューをもつ。論理ビューを用いて、アイテムを送信する例については、図１の説明においてより詳しく論じている。
【００６２】
また、方法６００は、物理レイアウトに構成されたデータ・ストアを使用するために、カタログをコンピュータ・システムにインストールし得る。データ・ストアは、カタログをコンピュータ・システムにインストールする前に、カタログをそれにインストールした後に、またはカタログのインストールと同時の操作においても、コンピュータ・システムにインストールすることができる。インストールは、ネットワークを介して、またはコンピュータ・ディスクやＣＤ−ＲＯＭなどのポータブル・ストレージ・メディア（portable storage media）上にカタログを物理的に配置し、コンピュータ・システムに移送することを含めて、複数のやり方で行うことができる。
【００６３】
また、方法６００は、論理ビューに従ってデータを同期させるように構成されたレプリカで使用するために、コンピュータ・システムにカタログを送信し得る。レプリカは、カタログを送信する前でも、カタログを送信した後でも、またカタログの送信と同じ操作においてでも、構成されることが可能である。
【００６４】
コンピュータ・システムは、データ・ストア層および同期化層に分割されることが可能である。データ・ストア層は、上述のデータ・ストア層１２６（図１）に類似することが可能である。同期化層は、上述の同期化層１２８に類似することが可能である。
【００６５】
また、方法６００は、コンピュータ・システムのデータ・ストア層（図１の層１２６など）に、ローカル変更トラッカを格納することができる。ローカル変更トラッカは、ソース・レプリカに格納されたアイテムのローカル変更列挙を維持する。ローカル変更トラッカの例示的な実施形態は、図３Ａおよび３Ｂに、示されている。方法６００は、また、同期化層（図１の層１２８など）に、同期化変更トラッカを格納することができる。同期化変更トラッカは、バージョン（図３Ａおよび３Ｂの列３１０に示すものなど）および同期化ローカル変更列挙（図３Ａおよび３Ｂの列３０８に示すものなど）を維持する。バージョンは、トポロジ内のコンピュータ・システムに対応するレプリカＩＤ、および変更が行われた時系列順に対応する変更列挙を収容することができる。一部の実施形態では、レプリカＩＤは、バージョンに関連付けられた変更を行ったコンピュータ・システムに対応する。他の実施形態では、レプリカＩＤが、バージョンを割り当てるコンピュータ・システムに対応するように、あるコンピュータ・システムが、複数のコンピュータ・システムのバージョンを割り当てることができる。
【００６６】
ローカル変更列挙および同期化ローカル変更列挙を使用して、変更されたアイテムが送信されるべきか、したがって物理レイアウトから論理ビューにマップされるべきかを決定することができる。変更が（図１に示すユーザ・インターフェース１３４などの）ユーザ・インターフェースを介して行われると、ローカル変更列挙がその変更に割り当てられる。したがって、データ・ストア層（図１の層１２６など）のアイテムは、同期化層（図１の層１２８など）のアイテムに関連付けられた同期化ローカル変更列挙とは異なるローカル変更列挙を有することになる。次いで、同期化時に、コンピュータ・システムは、ユーザ・インターフェースを介して変更されたアイテムに有効なバージョン番号が割り当てられ、またそれに他のコンピュータ・システムが同期されることが必要であることを認識する。このプロセスについて、図３Ａおよび３Ｂに関連して、上記でより十分に論じている。
【００６７】
方法６００は、また、データ・ストア層に、フォルダによってアイテムをまとめる（グループ化する）ことができるフォルダを格納することを含むことができる。図１に、こうしたフォルダ例が、フォルダ１２０として示されている。フォルダの格納は、アイテムをフォルダに関連付けるテーブル（図１のテーブル１１８など）を使用することを含むことができる。アイテムは、このフォルダを使用して、他のコンピュータ・システムに送信されることが可能である。このようにして、コンピュータ・システムに存在し得るすべてのアイテムではなく、選択されたアイテムだけが送信される。
【００６８】
本発明の範囲内の実施形態は、コンピュータ実行可能命令またはデータを搬送し、またはそれが格納されたコンピュータ読取り可能媒体を含むことできる。こうしたコンピュータ読取り可能媒体は、汎用または特定目的コンピュータによってアクセスすることができる任意の使用可能媒体であり得る。限定するためではなく、例示すれば、こうしたコンピュータ読取り可能媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶装置、あるいはコンピュータ実行可能命令またはデータ構造体の形で、所望のプログラム・コード手段を搬送しまたは格納するために使用することができ、また汎用または特定目的コンピュータによってアクセスすることができる他の任意の媒体を含むことが可能である。ネットワークまたはコンピュータとの別の通信接続（ハード・ワイヤ、無線、またはハード・ワイヤと無線の組合せ）を介して、情報が転送されまたは提供される場合、コンピュータは適切に、その接続を、コンピュータ読取り可能媒体と見なす。したがって、こうした任意の接続は、コンピュータ読取り可能媒体と適切に称される。上記のものの組合せもまた、コンピュータ読取り可能媒体の範囲に含まれるべきである。コンピュータ実行可能命令は、たとえば、汎用コンピュータ、特定目的コンピュータまたは特定目的処理装置に、ある特定の機能または機能群を実施させる命令およびデータを含む。
【００６９】
図７および以下の議論は、本発明を実施することができる適切なコンピューティング環境についての簡潔で一般的な説明を提供するためのものである。必須ではないが、本発明について、ネットワーク環境内のコンピュータによって実行されるプログラム・モジュールなど、コンピュータ実行可能命令の一般的な文脈で説明する。一般に、プログラム・モジュールは、特定のタスクを実施し、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造体などを含む。コンピュータ実行可能命令、関連のデータ構造体、およびプログラム・モジュールは、本明細書で開示する方法のステップを実行するためのプログラム・コード手段の例である。こうしたコンピュータ実行可能命令または関連のデータ構造体の特定のシーケンスは、こうしたステップで説明する機能を実装するための対応するステップ（act）の例を表す。
【００７０】
本発明は、パーソナル・コンピュータ、ハンドヘルド（handheld）装置、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースまたはプログラマブルな家電、ネットワークＰＣ、ミニ・コンピュータ、メインフレーム・コンピュータなどを含めて、多くのタイプのコンピュータ・システム構成を伴う、ネットワーク・コンピューティング環境で実施できることが当業者には理解されよう。本発明は、タスクが、通信ネットワークを介して（ハードワイヤード・リンク（hardwired link）、無線リンク、またはハードワイヤード・リンクと無線リンクの組合せによって）リンクされたローカルおよびリモート処理装置によって実施される、分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、プログラム・モジュールは、ローカルとリモートの両方のメモリ記憶装置に置くことができる。
【００７１】
図７を参照すると、本発明を実施するための例示的なシステムが、処理装置７２１、システム・メモリ７２２、ならびにシステム・メモリ７２２を含めて様々なシステム・コンポーネントを処理装置７２１に結合するシステム・バス７２３を含む、従来型コンピュータ７２０の形態の汎用コンピューティング装置を含んでいる。システム・バス７２３は、メモリ・バスまたはメモリ・コントローラ、周辺バス、および様々なバス・アーキテクチャーのいずれかを使用するローカル・バスを含めて、いくつかのタイプのバス構造のいずれかであり得る。システム・メモリは、読出し専用メモリ（ＲＯＭ）７２４およびランダム・アクセス・メモリ（ＲＡＭ）７２５を含む。たとえば起動時に、コンピュータ７２０内の要素間で情報を転送する助けとなる基本ルーチンを収容する基本入出力システム（ＢＩＯＳ：basic input/output system）７２６は、ＲＯＭ７２４に格納されることが可能である。
【００７２】
コンピュータ７２０は、磁気ハードディスク７３９から読み出し、そこに書き込む磁気ハードディスク・ドライブ７２７、取出し可能磁気ディスク７２９から読出しまたはそこに書き込む磁気ディスク・ドライブ７２８、ならびにＣＤ−ＲＯＭや他の光媒体などの取出し可能な光ディスク７３１から読み出しまたはそこに書き込む光ディスク・ドライブ７３０を含み得る。磁気ハードディスク・ドライブ７２７、磁気ディスク・ドライブ７２８および光ディスク・ドライブ７３０はそれぞれ、ハードディスク・ドライブ・インターフェース７３２、磁気ディスク・ドライブ・インターフェース７３３、および光ドライブ・インターフェース７３４によって、システム・バス７２３に接続される。ドライブおよびその関連のコンピュータ読取り可能媒体は、コンピュータ実行可能命令、データ構造体、プログラム・モジュールおよびコンピュータ７２０のための他のデータの不揮発性記憶域を提供する。本明細書で述べる例示的な環境では、磁気ハードディスク７３９、取出し可能磁気ディスク７２９および取出し可能光ディスク７３１を用いるが、磁気カセット、フラッシュ・メモリ・カード、デジタル多用途ディスク、ベルヌーイ（Bernoulli）カートリッジ、ＲＡＭ、ＲＯＭなどを含めて、データを格納するための他のタイプのコンピュータ読取り可能媒体を使用することができる。
【００７３】
１つまたは複数のプログラム・モジュールを含むプログラム・コード手段は、ハードディスク７３９、磁気ディスク７２９、光ディスク７３１、ＲＯＭ７２４またはＲＡＭ７２５、あるいはオペレーティング・システム７３５、１つまたは複数のアプリケーション・プログラム７３６、他のプログラム・モジュール７３７およびプログラム・データ７３８を含むＲＡＭに格納され得る。ユーザは、キーボード７４０、ポインティング装置７４２、またはマイク、ジョイスティック、ゲーム・パッド、パラボラ・アンテナ、スキャナなどの他の入力装置（図示せず）を介して、コンピュータ・システム７２０に、コマンドおよび情報を入力することができる。こうしたおよび他の入力装置はしばしば、システム・バス７２３に結合されたシリアル・ポート・インターフェース７４６を介して、処理装置７２１に接続される。あるいは入力装置は、パラレル・ポート、ゲーム・ポートまたはユニバーサル・シリアル・バス（ＵＳＢ：universal serial bus）など、他のインターフェースによって接続され得る。モニタ７４７または別のディスプレイ装置もまた、ビデオ・アダプタ７４８などのインターフェースを介して、システム・バス７２３に接続される。モニタに加え、パーソナル・コンピュータは一般に、スピーカやプリンタなど、他の周辺出力装置（図示せず）を含む。
【００７４】
コンピュータ７２０は、リモート・コンピュータ７８３および７９３などの１つまたは複数のリモート・コンピュータとの論理接続を使用して、ネットワーク化された環境で動作することができる。リモート・コンピュータ７８３および７９３はそれぞれ、別のパーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア・デバイス（peer device）または他の通常のネットワーク・ノードとすることができ、一般に、コンピュータ７２０に関して上記で説明した要素の多くまたはすべてを含む。図１に示す論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）７５１、広域エリア・ネットワーク（ＷＡＮ：wide area network）７５２を含むが、本明細書では、これらのネットワークは、限定ではなく、例示するため、提示されている。こうしたネット・ワーキング環境は、オフィス規模または企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットでは、一般的なものである。
【００７５】
ＬＡＮネット・ワーキング環境で使用される場合、コンピュータ７２０は、ネットワーク・インターフェースまたはアダプタ７５３を介してローカル・ネットワーク７５１に接続される。ＷＡＮネット・ワーキング環境で使用される場合、コンピュータ７２０は、モデム７５４、無線リンク、またはインターネットなどの広域エリア・ネットワーク７５２を介して通信を確立する他の手段を含み得る。モデム７５４は、内部にあっても、外部にあってもよく、シリアル・ポート・インターフェース７４６を介してシステム・バス７２３に接続される。ネットワーク化された環境では、コンピュータ７２０に関して示したプログラム・モジュール、またはその一部を、リモート・メモリ記憶装置に格納することができる。図示するネットワーク接続は、例示的なものであり、広域エリア・ネットワーク７５２を介して通信を確立する他の手段が使用され得ることが当業者には理解されよう。
【００７６】
本発明は、その精神または本質的な特性から逸脱せずに、他の特定の形態で実施することができる。説明した実施形態は、すべての点で、限定的ではなく、例示的なものにすぎないと見なすべきである。したがって、本発明の範囲は、前述の説明ではなく、特許請求の範囲によって示される。特許請求の範囲の均等物の意味および範囲内に入るすべての変更は、特許請求の範囲内に包含される。
【図面の簡単な説明】
【００７７】
【図１】本発明の原理に従って同期されることが可能なレプリカを含む例示的なコンピュータ・アーキテクチュアを示す図である。
【図２Ａ】本発明の原理に従って整合単位および変更単位を定義するための例示的な構造を示す図である。
【図２Ｂ】本発明の原理に従って整合単位および変更単位を定義するための例示的な構造を示す図である。
【図３Ａ】本発明の原理に従ってアイテム、変更列挙およびバージョンを格納するのに有用な例示的なテーブルを示す図である。
【図３Ｂ】本発明の原理に従ってアイテム、変更列挙およびバージョンを格納するのに有用な、例示的なテーブルを示す図である。
【図４】本発明の原理に従って論理ビューを、カスタム・ビューにマップするための例示的なテーブルを示す図である。
【図５】本発明の一部の実施形態の態様を用いて、レプリカを同期させるための例示的な方法を示す図である。
【図６】本発明の一部の実施形態の態様を用いて、データ・ストア内アイテムの物理レイアウトの、論理ビューへのマッピングを生成するための例示的な方法を示す図である。
【図７】本発明の原理に適したオペレーティング・システムを示す図である。
【符号の説明】
【００７８】
１０２、１０４  レプリカ
１１４、１１６  カタログ
１１８、１２２  フォルダ
１３４、１３６  ユーザ・インターフェース
１３８、１４０  プロシージャまたは関数
２００  同期ビュー
２０２、２０４，２１０  整合単位
２０６、２０８，２１２，２１４，２１６，２１８  変更単位
２５２  連絡先
２５４  氏名
２５６  名
２５８  姓
２６０  住所
２６２  通り
２６４  都市
２６６  州
２６８  郵便番号
３０２、３０６  アイテム
３０４  ＬＯＣＡＬ＿ＣＮ
３０６  アイテム
３０７  論理ビュー同期テーブル
３０８  ＬＯＣＡＬ＿ＣＮ
３１０  バージョン
４０２  アイテム
４１０  カスタム変更列挙子
７２０  コンピュータ・システム
７２１  処理装置
７２２  システム・メモリ
７２３  システム・バス
７２４  ＲＯＭ
７２６  ＢＩＯＳ
７２５  ＲＡＭ
７３２  ハードディスク・ドライブイ・ンターフェース
７３３  磁気ディスク・ドライブ・インターフェース
７３４  光ドライブ・インターフェース
７３５  オペレーティング・システム
７３６  アプリケーション・プログラム
７３７  他のプログラム・モジュール
７３８  プログラム・データ
７４０  キーボード
７４７  モニタ
７４８  ビデオ・アダプタ
７４６  シリアル・ポート・インターフェース
７５３  ネットワーク・インターフェース
７５４  モデム
７８３、７９３  リモート・コンピュータ・システム
【図１】
2005050334.tif 000003
【図２Ａ】
2005050334.tif 000004
【図２Ｂ】
2005050334.tif 000005
【図３Ａ】
2005050334.tif 000006
【図３Ｂ】
2005050334.tif 000007
【図４】
2005050334.tif 000008
【図５】
2005050334.tif 000009
【図６】
2005050334.tif 000010
【図７】
2005050334.tif 000011