(57)【要約】  複数の異なるコンピューティングデバイスの揮発性メモリに複数個のデータ要素を保存するように構成されたデータ処理システム。データ処理システムは、第１のデータ要素を保存するように構成された第１の揮発性メモリを有する第１のコンピューティングデバイスと、第１のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有する第２のコンピューティングデバイスとを含む。第１のコンピューティングデバイスは、第１のデータ要素を更新する指示を受信することと、指示を受信した後に、第１の揮発性メモリ内の第１のデータ要素を更新すること、及び第２のコンピューティングデバイスに対して、第１のデータ要素のコピーを更新する指示を提供することと、第２のコンピューティングデバイスから、第１のデータ要素のコピーが第２の揮発性メモリにおいて更新されたことを示す情報を受信した後に、第１のデータ要素が更新されたとの指示を提供することとを行うように構成される。
2019504401.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンピューティングデバイスの揮発性メモリに複数個のデータ要素を保存するように構成されたデータ処理システムであって、前記データ処理システムが、
第１のデータ要素を保存するように構成された第１の揮発性メモリを有する第１のコンピューティングデバイスであって、前記第１のデータ要素が、第１の識別子と関連付けられる、第１のコンピューティングデバイスと、
第２の識別子に関連付けられた前記第１のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有し、前記第１のコンピューティングデバイスと異なり、且つ前記第１のコンピューティングデバイスに通信可能に結合される、第２のコンピューティングデバイスと、
を含み、
前記第１のコンピューティングデバイスが、
前記第１のデータ要素を更新する指示を受信することと、
前記指示を受信した後に、
前記第１の揮発性メモリ内の前記第１のデータ要素を更新すること、及び
前記第２のコンピューティングデバイスに対して、前記第１のデータ要素の前記コピーを更新する指示を提供することと、
前記第２のコンピューティングデバイスから、前記第１のデータ要素の前記コピーが前記第２の揮発性メモリにおいて更新されたことを示す情報を受信した後に、前記第１のデータ要素が更新されたとの指示を提供することと、
を行うように構成される、データ処理システム。
【請求項２】
前記第１の揮発性メモリが、第１のヒープ上メモリ及び第１のヒープ外メモリを含み、前記第１のコンピューティングデバイスが、前記第１のヒープ上メモリに前記第１のデータ要素を保存するように構成される、請求項１に記載のシステム。
【請求項３】
前記第２の揮発性メモリが、第２のヒープ上メモリ及び第２のヒープ外メモリを含み、前記第２のコンピューティングデバイスが、前記第２のヒープ外メモリに前記第１のデータ要素の前記コピーを保存するように構成される、請求項２に記載のシステム。
【請求項４】
前記第１のコンピューティングデバイスが、第３の揮発性メモリを有する第３のコンピューティングデバイスに通信可能に結合され、前記第３の揮発性メモリが、前記第１のデータ要素の別のコピーを保存するように構成された第３のヒープ外メモリを含み、前記第１のコンピューティングデバイスが、
前記受信に応答して、前記第３のコンピューティングデバイスに対して、前記第１のデータ要素の前記他方のコピーを更新する指示を提供することと、
前記第１のデータ要素の前記他方のコピーが前記第３の揮発性メモリにおいて更新されたことを示す情報を前記第３のコンピューティングデバイスから受信して初めて、前記第１のデータ要素が更新されたという前記指示を提供することと、
を行うようにさらに構成される、請求項３に記載のシステム。
【請求項５】
前記第１のコンピューティングデバイスが、前記第１のデータ要素のコピーを内部に保存するように構成されたそれぞれの揮発性メモリを有する複数のコンピューティングデバイスと通信可能に結合され、前記複数のコンピューティングデバイスが、前記第２のコンピューティングデバイスを含み、前記第１のコンピューティングデバイスが、
前記受信に応答して、前記複数のコンピューティングデバイスに対して、前記第１のデータ要素のそれぞれのコピーを更新する指示を提供することと、
前記第１のデータ要素のそれぞれのコピーが更新されたことを示す情報を前記複数のコンピューティングデバイスの各々から受信して初めて、前記第１のデータ要素が更新されたという前記指示を提供することと、
を行うようにさらに構成される、請求項１に記載のシステム。
【請求項６】
複数個のコンピューティングデバイスをさらに含み、前記複数個のコンピューティングデバイスが、前記第１のデータ要素のコピーを内部に保存するように構成された前記複数のコンピューティングデバイスを含み、前記第１のコンピューティングデバイスが、
前記第１のデータ要素に基づいて、前記複数個のコンピューティングデバイスの中から、前記複数のコンピューティングデバイスを識別すること、
を行うようにさらに構成される、請求項５に記載のシステム。
【請求項７】
前記第１の揮発性メモリにおいて前記第１のデータ要素を更新することが、前記第２のコンピューティングデバイスに対して、前記第１のデータ要素の前記コピーを更新する指示を提供することよりも前に行われる、請求項１に記載のシステム。
【請求項８】
前記第１の揮発性メモリが、前記第１のデータ要素を包含する複数個のデータ要素を保存するように構成され、前記第２のコンピューティングデバイスが、前記複数個のデータ要素中のデータ要素のコピーを保存するように構成され、前記第１のコンピューティングデバイスが、
再同期化を行う指示を受信することと、
前記再同期化を行う指示の受信に応答して、前記第２のコンピューティングデバイスに対して、前記複数個のデータ要素の各々の識別子及びバージョン番号を含む情報を提供することと、
前記第２のコンピューティングデバイスから、前記第２の揮発性メモリ内の少なくとも１つの対応するコピーと同期していない前記第１の揮発性メモリ内の少なくとも１つのデータ要素を識別する情報を受信することと、
前記少なくとも１つのデータ要素を識別する前記情報の受信に応答して、前記第２のコンピューティングデバイスに対して、前記第１の揮発性メモリに保存された前記少なくとも１つのデータ要素を提供することと、
を行うようにさらに構成される、請求項１に記載のシステム。
【請求項９】
前記少なくとも１つのデータ要素を識別する前記情報が、第１の情報量からなり、前記少なくとも１つのデータ要素が、前記第１の情報量よりも少なくとも少なくとも１万倍大きい第２の情報量からなる、請求項８に記載のシステム。
【請求項１０】
前記データ処理システムが、１組の少なくとも１０００万のデータ要素を管理するように構成され、各データ要素が、少なくとも１キロバイトのデータを含み、
前記複数個のデータ要素が、前記１組の少なくとも１０００万のデータ要素を含む、請求項１に記載のシステム。
【請求項１１】
前記第１の識別子及び前記第２の識別子が、同じ識別子である、請求項１に記載のシステム。
【請求項１２】
第１の識別子に関連付けられた第１のデータ要素を保存するように構成された第１の揮発性メモリを有する第１のコンピューティングデバイスによって行われる方法であって、前記第１のコンピューティングデバイスが、第２の識別子に関連付けられた前記第１のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有する第２のコンピューティングデバイスに通信可能に結合され、前記第２のコンピューティングデバイスが、前記第１のコンピューティングデバイスとは異なり、前記方法が、
前記第１のデータ要素を更新する指示を受信することと、
前記指示を受信した後に、
前記第１の揮発性メモリ内の前記第１のデータ要素を更新すること、及び
前記第２のコンピューティングデバイスに対して、前記第１のデータ要素の前記コピーを更新する指示を提供することと、
前記第２のコンピューティングデバイスから、前記第１のデータ要素の前記コピーが前記第２の揮発性メモリにおいて更新されたことを示す情報を受信した後に、前記第１のデータ要素が更新されたとの指示を提供することと、
を含む、方法。
【請求項１３】
前記第１のコンピューティングデバイスが、前記第１のデータ要素のコピーを内部に保存するように構成されたそれぞれの揮発性メモリを有する複数のコンピューティングデバイスと通信可能に結合され、前記複数のコンピューティングデバイスが、前記第２のコンピューティングデバイスを含み、前記方法が、
前記受信に応答して、前記複数のコンピューティングデバイスに対して、前記第１のデータ要素のそれぞれのコピーを更新する指示を提供することと、
前記第１のデータ要素のそれぞれのコピーが更新されたことを示す情報を前記複数のコンピューティングデバイスの各々から受信して初めて、前記第１のデータ要素が更新されたという前記指示を提供することと、
をさらに含む、請求項１２に記載の方法。
【請求項１４】
前記第１のデータ要素に基づいて、複数個のコンピューティングデバイスの中から、前記複数のコンピューティングデバイスを識別することをさらに含む、請求項１３に記載の方法。
【請求項１５】
前記第１の揮発性メモリにおいて前記第１のデータ要素を更新することが、前記第２のコンピューティングデバイスに対して、前記第１のデータ要素の前記コピーを更新する指示を提供することよりも前に行われる、請求項１２に記載の方法。
【請求項１６】
前記第１の揮発性メモリが、前記第１のデータ要素を包含する複数個のデータ要素を保存するように構成され、前記第２のコンピューティングデバイスが、前記複数個のデータ要素中のデータ要素のコピーを保存するように構成され、前記方法が、
再同期化を行う指示を受信することと、
前記再同期化を行う指示の受信に応答して、前記第２のコンピューティングデバイスに対して、前記複数個のデータ要素の各々の識別子及びバージョン番号を含む情報を提供することと、
前記第２のコンピューティングデバイスから、前記第２の揮発性メモリ内の少なくとも１つの対応するコピーと同期していない前記第１の揮発性メモリ内の少なくとも１つのデータ要素を識別する情報を受信することと、
前記少なくとも１つのデータ要素を識別する前記情報の受信に応答して、前記第２のコンピューティングデバイスに対して、前記第１の揮発性メモリに保存された前記少なくとも１つのデータ要素を提供することと、
をさらに含む、請求項１２に記載の方法。
【請求項１７】
第１の識別子に関連付けられた第１のデータ要素を保存するように構成された第１の揮発性メモリを有する第１のコンピューティングデバイスによって実行された場合に、前記第１のコンピューティングデバイスに方法を行わせるプロセッサ実行可能命令を保存する、少なくとも１つの非一時的コンピュータ可読ストレージ媒体であって、前記第１のコンピューティングデバイスが、第２の識別子に関連付けられた前記第１のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有する第２のコンピューティングデバイスに通信可能に結合され、前記第１のコンピューティングデバイスが、前記第２のコンピューティングデバイスとは異なり、前記方法が、
前記第１のデータ要素を更新する指示を受信することと、
前記指示を受信した後に、
前記第１の揮発性メモリ内の前記第１のデータ要素を更新すること、及び
前記第２のコンピューティングデバイスに対して、前記第１のデータ要素の前記コピーを更新する指示を提供することと、
前記第２のコンピューティングデバイスから、前記第１のデータ要素の前記コピーが前記第２の揮発性メモリにおいて更新されたことを示す情報を受信した後に、前記第１のデータ要素が更新されたとの指示を提供することと、
を含む、少なくとも１つの非一時的コンピュータ可読ストレージ媒体。
【請求項１８】
第１の識別子に関連付けられた第１のデータ要素を保存するように構成された第１の揮発性メモリを有する第１のコンピューティングデバイスによって実行するプロセッサ実行可能命令を保存する、少なくとも１つの非一時的コンピュータ可読ストレージ媒体であって、前記第１のコンピューティングデバイスが、第２の識別子に関連付けられた前記第１のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有する第２のコンピューティングデバイスに通信可能に結合され、前記プロセッサ実行可能命令が、
前記第１のデータ要素を更新する指示を受信するための手段と、
前記指示を受信した後に、前記第１の揮発性メモリ内の前記第１のデータ要素を更新し、前記第２のコンピューティングデバイスに対して、前記第１のデータ要素の前記コピーを更新する指示を提供するための手段と、
前記第２のコンピューティングデバイスから、前記第１のデータ要素の前記コピーが前記第２の揮発性メモリにおいて更新されたことを示す情報を受信した後に、前記第１のデータ要素が更新されたとの指示を提供するための手段と、
を含む、少なくとも１つの非一時的コンピュータ可読ストレージ媒体。
【請求項１９】
複数のコンピューティングデバイスの揮発性メモリにデータ要素を保存するように構成されたデータ処理システムであって、前記データ処理システムが、
複数個のデータ要素を保存するように構成された第１の揮発性メモリを有する第１のコンピューティングデバイスであって、前記複数個のデータ要素が、第１の各識別子と関連付けられる、第１のコンピューティングデバイスと、
前記複数個のデータ要素内のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有し、前記第１のコンピューティングデバイスと異なり、且つ前記第１のコンピューティングデバイスに通信可能に結合される、第２のコンピューティングデバイスであって、前記コピーが、第２の各識別子と関連付けられる、第２のコンピューティングデバイスと、
を含み、
前記第１のコンピューティングデバイスが、
再同期化を行う指示を受信することと、
前記第２のコンピューティングデバイスに対して、前記複数個のデータ要素の各々の識別子及びバージョン番号を含む情報を提供することと、
前記第２のコンピューティングデバイスから、前記第２の揮発性メモリ内の少なくとも１つの対応するコピーと同期していない前記第１の揮発性メモリ内に保存された少なくとも１つのデータ要素を識別する情報を受信することと、
前記情報の受信に応答して、前記第２のコンピューティングデバイスに対して、前記第１の揮発性メモリに保存された前記少なくとも１つのデータ要素を提供することと、
を行うように構成される、データ処理システム。
【請求項２０】
前記第１の揮発性メモリが、第１のヒープ上メモリ及び第１のヒープ外メモリを含み、前記第１のコンピューティングデバイスが、前記第１のヒープ上メモリに前記複数個のデータ要素を保存するように構成される、請求項１９に記載のデータ処理システム。
【請求項２１】
前記第２の揮発性メモリが、第２のヒープ上メモリ及び第２のヒープ外メモリを含み、前記第２のコンピューティングデバイスが、前記第２のヒープ外メモリに前記複数個のデータ要素内のデータ要素のコピーを保存するように構成される、請求項１９に記載のデータ処理システム。
【請求項２２】
前記第２の揮発性メモリが、前記複数個のデータ要素内のデータ要素のコピーのローカルバージョン番号を保存し、前記第２のコンピューティングデバイスが、
前記複数個のデータ要素の各々の識別子及びバージョン番号を含む前記情報を受信することと、
前記受信された情報内のバージョン番号と、前記ローカルバージョン番号とに少なくとも部分的に基づいて、前記第２の揮発性メモリ内の少なくとも１つの対応するコピーと同期していない前記第１の揮発性メモリに保存された前記少なくとも１つのデータ要素を識別することと、
前記第１のコンピューティングデバイスに対して、前記少なくとも１つのデータ要素を識別する情報を提供することと、
を行うように構成される、請求項１９に記載のデータ処理システム。
【請求項２３】
前記第１の揮発性メモリが、複数個のデータ要素内の第１のデータ要素に関する第１のバージョン番号を包含する、前記複数個のデータ要素の各々に関するバージョン番号を保存するように構成され、前記第１のコンピューティングデバイスが、
前記第１のデータ要素の更新に応答して、前記第１のバージョン番号を増加させるように構成される、請求項１９に記載のデータ処理システム。
【請求項２４】
前記第２の揮発性メモリが、前記第１のデータ要素の第１のコピーを保存するように構成され、前記第１のコンピューティングデバイスが、
前記第１のデータ要素を更新する指示を受信することと、
前記指示の前記受信に応答して、
前記第１の揮発性メモリ内の前記第１のデータ要素を更新すること、及び
前記第２のコンピューティングデバイスに対して、前記第２の揮発性メモリに保存された前記第１のデータ要素のコピーを更新する指示を提供することと、
前記第２のコンピューティングデバイスから、前記第１のデータ要素の前記コピーが前記第２の揮発性メモリにおいて更新されたことを示す情報を受信した後に、前記第１のデータ要素が更新されたとの指示を提供することと、
を行うように構成される、請求項１９に記載のデータ処理システム。
【請求項２５】
前記第１の各識別子及び前記第２の各識別子が同じである、請求項１９に記載のデータ処理システム。
【請求項２６】
第１の各識別子に関連付けられた複数個のデータ要素を保存するように構成された第１の揮発性メモリを有する第１のコンピューティングデバイスによって行われる方法であって、前記第１のコンピューティングデバイスが、前記複数個のデータ要素内のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有する第２のコンピューティングデバイスと異なり、且つ通信可能に結合され、前記コピーが、第２の各識別子と関連付けられ、前記方法が、
再同期化を行う指示を受信することと、
前記第２のコンピューティングデバイスに対して、前記複数個のデータ要素の各々の識別子及びバージョン番号を含む情報を提供することと、
前記第２のコンピューティングデバイスから、前記第２の揮発性メモリ内の少なくとも１つの対応するコピーと同期していない前記第１の揮発性メモリに保存された少なくとも１つのデータ要素を識別する情報を受信することと、
前記情報の受信に応答して、前記第２のコンピューティングデバイスに対して、前記第１の揮発性メモリに保存された前記少なくとも１つのデータ要素を提供することと、
を含む、方法。
【請求項２７】
前記第１の揮発性メモリが、複数個のデータ要素内の第１のデータ要素に関する第１のバージョン番号を包含する、前記複数個のデータ要素の各々に関するバージョン番号を保存するように構成され、前記第１のコンピューティングデバイスが、
前記第１のデータ要素の更新に応答して、前記第１のバージョン番号を増加させるように構成される、請求項２６に記載の方法。
【請求項２８】
前記第２の揮発性メモリが、前記第１のデータ要素の第１のコピーを保存するように構成され、前記第１のコンピューティングデバイスが、
前記第１のデータ要素を更新する指示を受信することと、
前記指示の前記受信に応答して、
前記第１の揮発性メモリ内の前記第１のデータ要素を更新すること、及び
前記第２のコンピューティングデバイスに対して、前記第２の揮発性メモリに保存された前記第１のデータ要素のコピーを更新する指示を提供することと、
前記第２のコンピューティングデバイスから、前記第１のデータ要素の前記コピーが前記第２の揮発性メモリにおいて更新されたことを示す情報を受信した後に、前記第１のデータ要素が更新されたとの指示を提供することと、
を行うように構成される、請求項２６に記載の方法。
【請求項２９】
前記第１の各識別子及び前記第２の各識別子が同じである、請求項２６に記載の方法。
【請求項３０】
第１の各識別子に関連付けられた複数個のデータ要素を保存するように構成された第１の揮発性メモリを有する第１のコンピューティングデバイスによって実行された場合に、前記第１のコンピューティングデバイスに方法を行わせるプロセッサ実行可能命令を保存する、少なくとも１つの非一時的コンピュータ可読ストレージ媒体であって、前記第１のコンピューティングデバイスが、前記複数個のデータ要素内のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有する第２のコンピューティングデバイスと異なり、且つ通信可能に結合され、前記コピーが、第２の各識別子と関連付けられ、前記方法が、
再同期化を行う指示を受信することと、
前記第２のコンピューティングデバイスに対して、前記複数個のデータ要素の各々の識別子及びバージョン番号を含む情報を提供することと、
前記第２のコンピューティングデバイスから、前記第２の揮発性メモリ内の少なくとも１つの対応するコピーと同期していない前記第１の揮発性メモリに保存された少なくとも１つのデータ要素を識別する情報を受信することと、
前記情報の受信に応答して、前記第２のコンピューティングデバイスに対して、前記第１の揮発性メモリに保存された前記少なくとも１つのデータ要素を提供することと、
をさらに含む、少なくとも１つの非一時的コンピュータ可読ストレージ媒体。
【請求項３１】
請求項１乃至１１のうち何れか１項に記載の前記第１のコンピューティングデバイスとして使用するために構成されたコンピューティングデバイス。
【請求項３２】
請求項１９乃至２５のうち何れか１項に記載の前記第１のコンピューティングデバイスとして使用するために構成されたコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、その全体が援用される、２０１５年１２月１６日に出願された、「高スループット、高信頼性のデータ処理システム」というタイトルの米国仮特許出願第６２／２６８，０９０号の利益を米国特許法第１１９条（ｅ）に基づいて主張する。
【背景技術】
【０００２】
背景
データ処理システムは、複数のデバイスを用いてデータを保存することができる。データ処理システム内の１つのデバイスに保存されたデータのコピーは、１つのデバイスが、例えば停電又はネットワークの問題により利用できなくなった場合に、少なくとも１つの他のデバイスによってデータになおアクセスすることができるように、データ処理システムの１つ又は複数の他のデバイスに保存することができる。従って、データ処理システムは、複数のデバイスにわたってデータ要素を複製し、何れか１つのデバイスに保存されたデータ要素のバックアップコピーが他のデバイス上で利用可能であるように、複製されたデータ要素の同期状態を維持することができる。このような複製は、万一データ処理システム内の何れか１つのデバイスが利用不可能となった場合に、データにアクセスできないこと、又はデータの損失を予防する。
【０００３】
データ処理システムは、１つのデバイスに保存されたデータ要素が更新されると、他のデバイスに保存されたそれのコピーの何れも更新されることを確実にすることによって、データ要素の複数のコピーの同期状態を維持してもよい。一部のデータ処理システムは、あるデータ要素及びそれのコピーに対する変更が、このデータ要素自体が更新された後に、このデータ要素のコピーが更新されるように行われる、いわゆる「遅延伝播（lazy propagation）」技術を用いてデータを同期させる。遅延伝播技術の一例は、あるデータ要素に対する変更がログに記録され、このデータ要素のコピーへのアクセスが必要とされる場合に、ログの情報を用いて、このデータ要素のコピーが更新される、いわゆる「ジャーナリング」技術である。例えば、サーバＡに保存されたある特定のデータ要素に対する複数の変更が、サーバＢに保存されたこのデータ要素のコピーを更新することなく、ログに記録されてもよい。後に、サーバＡにアクセスできなくなった際に、サーバＢ上のデータ要素のコピーが、サーバＢを介してデータ要素の最新バージョンにアクセスできるように、ログの情報に基づいて更新されてもよい。
【０００４】
遅延伝播技術は、更新が、データ要素の全コピーの更新を待つ必要がないので、データ要素の高速の更新を可能にする。一方、遅延伝播技術は、１組のデータ要素を保存するサーバにアクセスできなくなった際に、これらのデータ要素のコピーが、別の１つ又は複数のサーバによって、これらに対するアクセスを提供することができるより前に、まず更新（例えば、ログの情報に基づいて）されなければならないので、遅いフェイルオーバをもたらす。
【０００５】
一部のデータ処理システムは、いわゆる「イーガーレプリケーション（eager replication）」技術を用いて、データを同期させる。データ要素のコピーに対する変更が、データ要素が更新されて初めて行われる遅延伝播とは異なり、イーガーレプリケーションは、データ要素自体を更新する前に、データ要素のコピーを更新することを伴う。例えば、サーバＡ（例えば、データ要素にアクセスする、及び／又はデータ要素を更新する全てのリクエストがプライマリサーバに提供されるように、データ要素の「プライマリ」サーバとして指定されたサーバ）に保存されたデータ要素に対する変更を行うより前に、データ要素のコピーがまず更新され、その後に、サーバＡに保存されたデータ要素に対する変更が行われる。
【０００６】
従来のイーガーレプリケーションを用いたデータ要素の更新は、イーガーレプリケーションが、データ要素自体を更新する前にデータ要素のコピーを更新することを伴うので、一般に、遅延伝播を用いた場合よりも多くの時間がかかる。一方、データ要素の全てのコピーの同期状態が維持されるので、イーガー伝播は、一般に、遅延伝播を用いた場合よりも迅速なフェイルオーバを可能にする。
【発明の概要】
【課題を解決するための手段】
【０００７】
概要
幾つかの実施形態は、複数のコンピューティングデバイスの揮発性メモリに複数個のデータ要素を保存するように構成されたデータ処理システムを提供する。データ処理システムは、第１のデータ要素を保存するように構成された第１の揮発性メモリを有する第１のコンピューティングデバイスであって、第１のデータ要素が、第１の識別子と関連付けられる、第１のコンピューティングデバイスと、第２の識別子に関連付けられた第１のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有し、第１のコンピューティングデバイスと異なり、且つ第１のコンピューティングデバイスに通信可能に結合される、第２のコンピューティングデバイスとを含み、第１のコンピューティングデバイスは、第１のデータ要素を更新する指示を受信することと、指示を受信した後に、第１の揮発性メモリ内の第１のデータ要素を更新すること、及び第２のコンピューティングデバイスに対して、第１のデータ要素のコピーを更新する指示を提供することと、第２のコンピューティングデバイスから、第１のデータ要素のコピーが第２の揮発性メモリにおいて更新されたことを示す情報を受信した後に、第１のデータ要素が更新されたとの指示を提供することとを行うように構成される。
【０００８】
幾つかの実施形態は、第１の識別子に関連付けられた第１のデータ要素を保存するように構成された第１の揮発性メモリを有する第１のコンピューティングデバイスによって行われる方法を提供し、第１のコンピューティングデバイスは、第２の識別子に関連付けられた第１のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有する第２のコンピューティングデバイスに通信可能に結合され、第２のコンピューティングデバイスは、第１のコンピューティングデバイスとは異なる。この方法は、第１のデータ要素を更新する指示を受信することと、指示を受信した後に、第１の揮発性メモリ内の第１のデータ要素を更新すること、及び第２のコンピューティングデバイスに対して、第１のデータ要素のコピーを更新する指示を提供することと、第２のコンピューティングデバイスから、第１のデータ要素のコピーが第２の揮発性メモリにおいて更新されたことを示す情報を受信した後に、第１のデータ要素が更新されたとの指示を提供することとを含む。
【０００９】
幾つかの実施形態は、第１の識別子に関連付けられた第１のデータ要素を保存するように構成された第１の揮発性メモリを有する第１のコンピューティングデバイスによって実行された場合に、第１のコンピューティングデバイスに方法を行わせるプロセッサ実行可能命令を保存する、少なくとも１つの非一時的コンピュータ可読ストレージ媒体を提供し、第１のコンピューティングデバイスは、第２の識別子に関連付けられた第１のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有する第２のコンピューティングデバイスに通信可能に結合され、第１のコンピューティングデバイスは、第２のコンピューティングデバイスとは異なる。この方法は、第１のデータ要素を更新する指示を受信することと、指示を受信した後に、第１の揮発性メモリ内の第１のデータ要素を更新すること、及び第２のコンピューティングデバイスに対して、第１のデータ要素のコピーを更新する指示を提供することと、第２のコンピューティングデバイスから、第１のデータ要素のコピーが第２の揮発性メモリにおいて更新されたことを示す情報を受信した後に、第１のデータ要素が更新されたとの指示を提供することとを含む。
【００１０】
幾つかの実施形態は、第１の識別子に関連付けられた第１のデータ要素を保存するように構成された第１の揮発性メモリを有する第１のコンピューティングデバイスによって実行するプロセッサ実行可能命令を保存する、少なくとも１つの非一時的コンピュータ可読ストレージ媒体を提供し、第１のコンピューティングデバイスは、第２の識別子に関連付けられた第１のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有する第２のコンピューティングデバイスに通信可能に結合され、プロセッサ実行可能命令は、第１のデータ要素を更新する指示を受信するための手段と、指示を受信した後に、第１の揮発性メモリ内の第１のデータ要素を更新し、第２のコンピューティングデバイスに対して、第１のデータ要素のコピーを更新する指示を提供するための手段と、第２のコンピューティングデバイスから、第１のデータ要素のコピーが第２の揮発性メモリにおいて更新されたことを示す情報を受信した後に、第１のデータ要素が更新されたとの指示を提供するための手段とを含む。
【００１１】
幾つかの実施形態は、複数のコンピューティングデバイスの揮発性メモリにデータ要素を保存するように構成されたデータ処理システムを提供する。データ処理システムは、複数個のデータ要素を保存するように構成された第１の揮発性メモリを有する第１のコンピューティングデバイスであって、複数個のデータ要素が、第１の各識別子と関連付けられる、第１のコンピューティングデバイスと、複数個のデータ要素内のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有し、第１のコンピューティングデバイスと異なり、且つ第１のコンピューティングデバイスに通信可能に結合される、第２のコンピューティングデバイスであって、コピーが、第２の各識別子と関連付けられる、第２のコンピューティングデバイスと、を含み、第１のコンピューティングデバイスは、再同期化を行う指示を受信することと、第２のコンピューティングデバイスに対して、複数個のデータ要素の各々の識別子及びバージョン番号を含む情報を提供することと、第２のコンピューティングデバイスから、第２の揮発性メモリ内の少なくとも１つの対応するコピーと同期していない第１の揮発性メモリに保存された少なくとも１つのデータ要素を識別する情報を受信することと、情報の受信に応答して、第２のコンピューティングデバイスに対して、第１の揮発性メモリに保存された少なくとも１つのデータ要素を提供することと、を行うように構成される。
【００１２】
幾つかの実施形態は、第１の各識別子に関連付けられた複数個のデータ要素を保存するように構成された第１の揮発性メモリを有する第１のコンピューティングデバイスによって行われる方法を提供し、第１のコンピューティングデバイスは、複数個のデータ要素内のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有する第２のコンピューティングデバイスと異なり、且つ通信可能に結合され、コピーは、第２の各識別子と関連付けられる。この方法は、再同期化を行う指示を受信することと、第２のコンピューティングデバイスに対して、複数個のデータ要素の各々の識別子及びバージョン番号を含む情報を提供することと、第２のコンピューティングデバイスから、第２の揮発性メモリ内の少なくとも１つの対応するコピーと同期していない第１の揮発性メモリに保存された少なくとも１つのデータ要素を識別する情報を受信することと、情報の受信に応答して、第２のコンピューティングデバイスに対して、第１の揮発性メモリに保存された少なくとも１つのデータ要素を提供することとを含む。
【００１３】
幾つかの実施形態は、第１の各識別子に関連付けられた複数個のデータ要素を保存するように構成された第１の揮発性メモリを有する第１のコンピューティングデバイスによって実行された場合に、第１のコンピューティングデバイスに方法を行わせるプロセッサ実行可能命令を保存する、少なくとも１つの非一時的コンピュータ可読ストレージ媒体を提供し、第１のコンピューティングデバイスは、複数個のデータ要素内のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有する第２のコンピューティングデバイスと異なり、且つ通信可能に結合され、コピーは、第２の各識別子と関連付けられる。この方法は、再同期化を行う指示を受信することと、第２のコンピューティングデバイスに対して、複数個のデータ要素の各々の識別子及びバージョン番号を含む情報を提供することと、第２のコンピューティングデバイスから、第２の揮発性メモリ内の少なくとも１つの対応するコピーと同期していない第１の揮発性メモリに保存された少なくとも１つのデータ要素を識別する情報を受信することと、情報の受信に応答して、第２のコンピューティングデバイスに対して、第１の揮発性メモリに保存された少なくとも１つのデータ要素を提供することとを含む。
【００１４】
幾つかの実施形態は、複数の異なるコンピューティングデバイスの揮発性メモリにデータ要素を保存するように構成されたデータ処理システムを提供する。データ処理システムは、第１の各識別子と関連付けられた複数個のデータ要素を保存するように構成された第１の揮発性メモリを有する第１のコンピューティングデバイスと、第１の揮発性メモリに保存された複数個のデータ要素内のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有し、第１のコンピューティングデバイスと異なり、且つ第１のコンピューティングデバイスに通信可能に結合される、第２のコンピューティングデバイスであって、コピーが、第２の各識別子と関連付けられる、第２のコンピューティングデバイスとを含み、第２のコンピューティングデバイスが、第１のコンピューティングデバイスに対して、再同期化を行う指示を提供することと、第１のコンピューティングデバイスから、複数個のデータ要素の各々の識別子及びバージョン番号を含む情報を受信することと、第１のコンピューティングデバイスに対して、第２の揮発性メモリ内の少なくとも１つの対応するコピーと同期していない第１の揮発性メモリに保存された少なくとも１つのデータ要素を識別する情報を提供することと、第１のコンピューティングデバイスから、第１の揮発性メモリに保存された少なくとも１つのデータ要素を受信することと、を行うように構成される。
【００１５】
幾つかの実施形態は、複数個のデータ要素内のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有する第２のコンピューティングデバイスによって行われる方法を提供し、複数個のデータ要素は、第２のコンピューティングデバイスと異なり、且つ通信可能に結合された第１のコンピューティングデバイスの第１の揮発性メモリに保存される。この方法は、第１のコンピューティングデバイスに対して、再同期化を行う指示を提供することと、第１のコンピューティングデバイスから、複数個のデータ要素の各々の識別子及びバージョン番号を含む情報を受信することと、第１のコンピューティングデバイスに対して、第２の揮発性メモリ内の少なくとも１つの対応するコピーと同期していない第１の揮発性メモリに保存された少なくとも１つのデータ要素を識別する情報を提供することと、第１のコンピューティングデバイスから、第１の揮発性メモリに保存された少なくとも１つのデータ要素を受信することと、を含む。
【００１６】
幾つかの実施形態は、第２のコンピューティングデバイスによって実行された場合に、第２のコンピューティングデバイスに方法を行わせるプロセッサ実行可能命令を保存する、少なくとも１つの非一時的コンピュータ可読ストレージ媒体を提供し、第２のコンピューティングデバイスは、第２のコンピューティングデバイスと異なり、且つ通信可能に結合された第１のコンピューティングデバイスの第１の揮発性メモリに保存された複数個のデータ要素内のデータ要素のコピーを保存するように構成された第２の揮発性メモリを有する。この方法は、第１のコンピューティングデバイスに対して、再同期化を行う指示を提供することと、第１のコンピューティングデバイスから、複数個のデータ要素の各々の識別子及びバージョン番号を含む情報を受信することと、第１のコンピューティングデバイスに対して、第２の揮発性メモリ内の少なくとも１つの対応するコピーと同期していない第１の揮発性メモリに保存された少なくとも１つのデータ要素を識別する情報を提供することと、第１のコンピューティングデバイスから、第１の揮発性メモリに保存された少なくとも１つのデータ要素を受信することと、を含む。
【００１７】
上記は、添付の特許請求の範囲によって定義される本発明の非限定的な概要である。
【００１８】
様々な局面及び実施形態を以下の図面を参照して説明する。図面は、必ずしも一定の縮尺で描かれていないことが理解されるものとする。複数の図面に出現する要素は、それらが出現する全ての図面において、同じ又は類似の参照符号で示される。
【図面の簡単な説明】
【００１９】
【図１Ａ】本明細書に記載の技術の幾つかの実施形態が動作できる例示的データ処理システムのブロック図である。
【図１Ｂ】本明細書に記載の技術の幾つかの実施形態による、図１Ａのデータ処理システムが、どのようにデータ要素及びそれらの各コピーを複数のデバイスにわたって管理することができるかの一例を示す。
【図１Ｃ】本明細書に記載の技術の幾つかの実施形態による、図１Ａのデータ処理システムが、どのようにデータ要素及びそれらの各コピーを複数のデバイスにわたって管理することができるかの一例を示す。
【図１Ｄ】本明細書に記載の技術の幾つかの実施形態による、データ処理システム内のデバイスによって保存された情報の一例を示す。
【図２】本明細書に記載の技術の幾つかの実施形態による、あるデバイスに保存されたデータ要素と、１つ又は複数の他のデバイスに保存されたそれのコピーの内の１つ又は複数を更新する例示的プロセスのフローチャートである。
【図３Ａ】本明細書に記載の技術の幾つかの実施形態による、マニフェストベースの再同期化を示す。
【図３Ｂ】本明細書に記載の技術の幾つかの実施形態による、マニフェストベースの再同期化を示す。
【図３Ｃ】本明細書に記載の技術の幾つかの実施形態による、マニフェストベースの再同期化を示す。
【図４Ａ】本明細書に記載の技術の幾つかの実施形態による、マニフェストベースの再同期化の説明のための例を示す。
【図４Ｂ】本明細書に記載の技術の幾つかの実施形態による、マニフェストベースの再同期化の説明のための例を示す。
【図４Ｃ】本明細書に記載の技術の幾つかの実施形態による、マニフェストベースの再同期化の説明のための例を示す。
【図４Ｄ】本明細書に記載の技術の幾つかの実施形態による、マニフェストベースの再同期化の説明のための例を示す。
【図４Ｅ】本明細書に記載の技術の幾つかの実施形態による、マニフェストベースの再同期化の説明のための例を示す。
【図４Ｆ】本明細書に記載の技術の幾つかの実施形態による、マニフェストベースの再同期化の説明のための例を示す。
【図５】本明細書に記載の技術の幾つかの実施形態による、１組のデータ要素のプライマリデバイスとして動作するコンピューティングデバイスによって行われる、この１組のデータ要素に対してマニフェストベースの再同期化を行う例示的プロセスのフローチャートである。
【図６】本明細書に記載の技術の幾つかの実施形態による、１組のデータ要素のバックアップデバイスとして動作するコンピューティングデバイスによって行われる、この１組のデータ要素に対してマニフェストベースの再同期化を行う例示的プロセスのフローチャートである。
【図７】本明細書に記載の技術の幾つかの実施形態を実施する際に使用することができる例示的コンピューティングシステム環境のブロック図である。
【発明を実施するための形態】
【００２０】
詳細な説明
本発明者らは、データ複製プロセスの向上により、速度及びネットワーク帯域幅利用を包含するデータ処理システムの動作特性を向上させることができることを認識及び理解した。このような複製プロセスは、データ処理システムにおいて、それの処理及びネットワーク資源を効率的に使用しながら、高速データアクセス、高速データ更新、及び高速データ復旧を可能にすることができる。一方、従来のデータ複製技術は、高速データアクセス、更新及び復旧を同時にサポートしない。例えば、従来の遅延伝播技術は、データ要素のプライマリコピーの更新が終わるまで、データ要素のバックアップコピーが更新されないので、高速データ更新を可能にするが、データ復旧は、ジャーナリングの使用により遅い。その結果、従来の遅延伝播技術は、データのバックアップコピーが、利用可能で、且つ素早くそれにアクセスすることができる「高信頼性」設定の場合など、高速のフェイルオーバが必要とされる場合には、適していない。別の例として、従来のイーガーレプリケーション技術は、高速データ復旧を可能にするが、データ要素のバックアップコピーがそれぞれのプライマリコピーの前に更新され、それが遅延の原因となるので、データ更新が遅い。その結果、従来のイーガーレプリケーション技術は非実用的であり、多数のデータ要素（例えば、数百万又は数十億の銀行取引）を短時間のうちに更新することができる「高スループット」設定においては使用されない。
【００２１】
従って、幾つかの実施形態は、データを保存するために揮発性メモリを用いて、データの高速更新、アクセス、及び復旧を可能にする、向上したデータ複製プロセスを提供する。揮発性ストレージの使用から生じるデータの完全性に対するより大きなリスクにもかかわらず、本発明者らによって開発された複製プロセスは、複数のデバイスの揮発性メモリにわたって、データがデータ処理システムによって確実に維持されること、及びこれらのデバイスにわたってデータが同期することを確実にする。複製プロセスは、例えばネットワークの停止又は停電により非同期となったデータを再同期させるための低帯域幅技術を用いて、少なくとも部分的にシステムのネットワーク資源を効率的に使用する。
【００２２】
従って、幾つかの実施形態は、システムの複数のデバイスの揮発性メモリにおいてデータを管理するように構成されたメモリ内データ処理システムを提供する。データの管理は、例えば、データの保存、保存データの削除、新しいデータの受信（例えば、保存のために）、データの処理、既に保存されたデータにデータへの電子アクセスを提供すること、及び／又は保存データの更新（例えば、保存されたデータ中の１つ又は複数の値を変更することによる）などの機能性を包含する。メモリ内データ処理システムによって管理されるデータは、本発明者らによって開発された複製技術を用いて、複数の揮発性メモリにわたって複製された複数のデータ要素を包含し得る。データ要素は、レコード及び変数などの１つ又は複数のデータ項目を包含してもよい。揮発性メモリは、内部に保存された情報を維持するために電力を使用する、例えばランダムアクセスメモリ（ＲＡＭ）といった任意のコンピュータメモリでもよく、揮発性メモリは、電源が入っている間は、内部に保存されたデータを保持するが、電源がオフになると、保存されたデータを失う。メモリ内データ処理システムは、データ要素のコピーを更新するために、例えばハードディスクなどの不揮発性メモリに対する時間のかかる読出し及び書込みを必要とせず、これは、データ要素のコピーの更新に使用される時間を短縮し、イーガーレプリケーション技術の使用が高信頼性及び高スループット設定において実用的となる程度まで、イーガーレプリケーション技術を高速にする。
【００２３】
幾つかの実施形態では、メモリ内データ処理システムによって管理されるデータ要素は、グループ化され、データ要素の各グループは、それを通してグループ内のデータ要素にアクセスし、及び／又はグループ内のデータ要素を更新することができる各プライマリデバイス（例えば、プライマリサーバ）に関連付けられる。グループ内のデータ要素は、データ要素のコピーを保存する１つ又は複数の各バックアップデバイス（例えば、１つ又は複数のバックアップサーバ）にも関連付けられる。プライマリデバイスの揮発性メモリに保存されたデータ要素は、本明細書では、データ要素のプライマリコピーと呼ばれ、そのコピーは、本明細書では、バックアップコピーと呼ばれる。
【００２４】
幾つかの実施形態では、データ処理システム内のデバイスは、それの揮発性メモリのヒープ上部分に、デバイスがプライマリデバイスとして機能するデータ要素を保存することができる。デバイスは、それの揮発性メモリのヒープ外部分に、それがバックアップデバイスとして機能するデータ要素を保存することができる。ヒープ外揮発性メモリ内のメモリは、メモリの隣接ブロックを用いて、且つ自動ガーベジコレクションを使用せずに、管理することができ、内部に保存されたあらゆるデータの管理の効率をさらに向上させる。多くの例において、メモリ内データ処理システムは、例えば各データ要素が２回以上複製される場合に、データ要素のプライマリコピーよりも多くのバックアップを管理している場合があるので、ヒープ外メモリを用いたバックアップコピー管理の効率の向上が、本発明者らによって開発された複製技術の性能のさらなる向上に役立つ。
【００２５】
幾つかの実施形態では、データ要素のグループのプライマリデバイスが、アクセス不可能となる場合があり（例えば、停電又はネットワークの停止により）、グループ内のデータ要素の内の１つ又は複数のプライマリデバイスとして、バックアップデバイスが動作を開始することができる。このような状況では、バックアップデバイスが、今では、グループ内のデータ要素の内の１つ又は複数のプライマリデバイスであるとしても、バックアップデバイスは、データ要素へのアクセスがリクエストされるまで（この時点で、データ要素は、バックアップデバイスのヒープ上メモリに移動される）、これらのデータ要素をヒープ外メモリに保存し続けることができる。このようにして、データ要素の全てのバックアップコピーが、それらへのアクセスがリクエストされる前に積極的に、バックアップデバイスのヒープ外からヒープ上揮発性メモリへ移動されることを必要とすることなく、フェイルオーバを非常に素早く行うことができる。
【００２６】
幾つかの例では、データ処理システムによって管理されるデータ要素のコピーが、ネットワークの停止及び停電などの事象により、非同期となる場合がある。例えば、ネットワークの停止及び／又は停電は、データ要素を保存するデバイスへのアクセスを不可能にする場合がある（データ要素は、アクセス不可能な期間中は、１つ又は複数の他のデバイス上で更新され得る）。デバイスにおける電力の喪失が、そのデバイスの揮発性メモリにのみ保存された全データの喪失をもたらすので、揮発性メモリの状況下では、停電は、特有のリスクを提示する。データ処理システムが大量のデータ（例えば、銀行又はクレジットカード取引などの数百万又は数十億のデータ要素）を管理することができるので、時間単位当たり多数の取引（例えば、毎秒数百万の取引）を確実に処理することができる高スループットデータ処理システムを実現するために、再同期化のための低帯域幅技術が必要とされる。
【００２７】
従って、本発明者らは、メモリ内データ処理システムにおいてデバイスによって保存されたデータ要素を効率的に再同期させる低帯域幅再同期化技術を開発した。低帯域幅技術は、少なくとも部分的に、データ要素に関連付けられたバージョン番号に基づいて、データ処理システムによって管理されるデータ要素を同期させる、マニフェストベースの再同期化技術である。
【００２８】
幾つかの実施形態では、データ処理システムの各デバイスは、デバイスの揮発性メモリに保存された各データ要素の各ローカルバージョン番号を維持してもよい。再同期化を行う指示に応答して、データ要素のグループのプライマリデバイスが、グループ内の各データ要素のバージョン番号を含有するマニフェストを、グループ内のデータ要素の対応するバックアップコピーを保存する１つ又は複数のバックアップデバイスに提供することができる。各バックアップデバイスは、マニフェスト中のバージョン番号を、それの揮発性メモリに保存されたデータ要素のバックアップコピーのローカルバージョン番号と比較し、比較の結果に基づいて、非同期の（「同期のずれた」）データ要素を識別し、プライマリデバイスにこれらのデータ要素をリクエストすることができる。従って、マニフェストの送信に応答して、プライマリデバイスは、１つ又は複数のバックアップデバイスからデータ要素のリクエストを受信することができ、リクエストされたデータ要素をリクエストしたバックアップデバイスに提供することができる。
【００２９】
本明細書に記載の技術の幾つかの実施形態は、従来のデータ複製技術の上述の欠点の幾つかに対処する。しかしながら、全ての実施形態がこれらの欠点の全てに対処するわけではなく、幾つかの実施形態は、それらの何れにも対処しない場合がある。そのため、本明細書に記載の技術の局面が、従来のデータ複製技術の上述の欠点の全て又は何れかに対処することに限定されないことが理解されるものとする。
【００３０】
本明細書に記載の実施形態が、数多くのやり方の何れにおいても、実施され得ることが理解されるものとする。単なる例示目的で、具体的な実施の例を以下に提供する。提供されるこれらの実施形態及び特徴／能力は、個々に、全て一緒に、又は２つ以上の任意の組み合わせで用いられてもよい（本明細書に記載の技術の局面は、この点において限定されない）ことが理解されるものとする。
【００３１】
図１Ａは、複数のコンピューティングデバイスの揮発性メモリにおいてデータ要素を管理するように構成された例示的データ処理システム１００のブロック図である。図示されるように、例示的データ処理システム１００は、コンピューティングデバイス１０８、１１０、及び１１２の揮発性メモリにおいて、データ要素１０６を管理すうように構成される。データ要素１０６は、この非限定例では、１５個のデータ要素を包含する。データ処理システム１００は、３つのコンピューティングデバイスの揮発性メモリにおいて、１５個のデータ要素を管理すると示されるが、これは、単に描写を明瞭にするためであり、限定目的ではない。データ処理システムは、任意の適切な数のコンピューティングデバイス（例えば、少なくとも１０、少なくとも１００、少なくとも１０００、少なくとも１０，０００、１０〜１０，０００など）の揮発性メモリにおいて、任意の適切な数のデータ要素（例えば、数千、数百万、数十億、又は数兆のデータ要素）を保存してもよい（本明細書に記載の技術の局面は、この点において限定されない）。
【００３２】
幾つかの実施形態では、データ要素は、１つ又は複数のレコード及び／又は１つ又は複数の変数などの１つ又は複数のデータ項目を包含してもよい。データ項目の例は、クレジットカード取引レコード、通話レコード、銀行取引レコードを包含するが、これらに限定されない。データ要素は、任意の適切な量のデータを包含してもよい。例えば、データ要素は、１バイト又は複数バイトのデータ（少なくとも１キロバイトのデータ、少なくとも１０キロバイトのデータ、少なくとも１メガバイトのデータなど）を包含してもよい。
【００３３】
データ処理システム１００は、１つ又は複数のコンピュータプログラムが、システムに新しいデータ要素を提供すること、システムによって管理されるデータ要素を削除すること、システムによって管理されるデータ要素にアクセスすること、及び／又はシステムによって管理されるデータ要素の情報を更新することを可能にするように構成されてもよい。このようなコンピュータプログラムは、データ処理システム１００の一部でもよく、又はデータ処理システム１００の外部のものでもよい。一人又は複数のユーザ（例えば、ユーザ１０２）が、データ処理システム１００の一部であり、及び／又はデータ処理システム１００と通信するように構成されたコンピューティングデバイス（例えば、コンピューティングデバイス１０４）上で少なくとも部分的に実行される１つ又は複数のコンピュータプログラムを用いて、データ処理システム１００によって保存されたデータ要素の内の１つ又は複数にアクセスすることができる。
【００３４】
幾つかの実施形態では、データ処理システム１００によって管理されるデータ要素は、複数のデータ要素グループに区分されてもよい。データ要素グループは、（１）グループ内のデータ要素のプライマリコピーを保存するように構成されたプライマリコンピューティングデバイス（例えば、プライマリサーバ）と、（２）それぞれがグループ内の１つ又は複数のデータ要素のバックアップコピーを保存するように構成された１つ又は複数のバックアップコンピューティングデバイス（例えば、１つ又は複数のバックアップサーバ）とを包含する複数のコンピューティングデバイスと関連付けられてもよい。グループ内のデータ要素は、そのグループに関連付けられたプライマリコンピューティングデバイスを通して（幾つかの実施形態では、それを通してのみ）アクセス及び／又は更新することができる。
【００３５】
例えば図１Ａに示されるように、データ要素１０６は、３つの要素グループ：データ要素Ｄ１〜Ｄ５、データ要素Ｄ６〜Ｄ１０、及びデータ要素Ｄ１１〜Ｄ１５に区分される。コンピューティングデバイス１０８は、データ要素Ｄ１〜Ｄ５のグループのプライマリコンピューティングデバイスであり、及び１つ又は複数の他のデータ要素グループのバックアップコンピューティングデバイスとして機能することができる。従って、コンピューティングデバイス１０８は、データ要素Ｄ１〜Ｄ５のプライマリコピーを保存し、データ要素Ｄ６〜Ｄ１５の内の１つ又は複数のバックアップコピーを保存することができる。コンピューティングデバイス１１０は、データ要素Ｄ６〜Ｄ１０のグループのプライマリコンピューティングデバイスであり、及び１つ又は複数の他のデータ要素グループのバックアップコンピューティングデバイスとして機能することができる。従って、コンピューティングデバイス１１０は、データ要素Ｄ６〜Ｄ１０のプライマリコピーを保存し、データ要素Ｄ１〜Ｄ５及びＤ１１〜Ｄ１５の内の１つ又は複数のバックアップコピーを保存することができる。コンピューティングデバイス１１２は、データ要素Ｄ１１〜Ｄ１５のグループのプライマリコンピューティングデバイスであり、１つ又は複数の他のデータ要素グループのバックアップコンピューティングデバイスとして機能することができる。従って、コンピューティングデバイス１１２は、データ要素Ｄ１１〜Ｄ１５のプライマリコピーを保存し、データ要素Ｄ１〜Ｄ１０の内の１つ又は複数のバックアップコピーを保存することができる。
【００３６】
データ要素は、明示的に又は暗黙的に、複数のグループに区分されてもよいことが理解されるものとする。幾つかの実施形態では、データ要素は、明示的にグループに区分されてもよく、結果として得られる各グループは、各プライマリコンピューティングデバイスと関連付けられてもよい。例えば、データ要素１０６は、明示的に、３つのグループ（例えば、要素Ｄ１〜Ｄ５を含有する第１のグループ、要素Ｄ６〜Ｄ１０を含有する第２のグループ、及びＤ１１〜Ｄ１５を含有する第３のグループ）に区分されてもよく、これらのグループの各々は、それぞれのプライマリコンピューティングデバイス（例えば、コンピューティングデバイス１０８、１１０、及び１１２）と関連付けられてもよい。
【００３７】
幾つかの実施形態では、データ処理システムによって管理される各データ要素が、プライマリコンピューティングデバイスと関連付けられてもよく、この関連性は、データ要素のグループ分けを暗示する−同じプライマリコンピューティングデバイスに関連付けられた全てのデータ要素をグループと見なすことができる。例えば、データ要素Ｄ１〜Ｄ５の各々は、これらのデータ要素のプライマリコンピューティングデバイスとして、コンピューティングデバイス１０８に割り当てられてもよく、それらの同じコンピューティングデバイスとの共通の関連性により、データ要素グループを構成すると見なされてもよい。データ要素は、任意の適切なやり方でプライマリコンピューティングデバイスと関連付けられてもよく、例えば、データ要素を特定のプライマリコンピューティングデバイスにマッピングする（例えば、データ要素内のデータ、データ要素の識別子、及び／又はデータ要素に関連付けられたその他の情報に基づいて）決定性マッピングを用いて、プライマリコンピューティングデバイスと関連付けられてもよい。
【００３８】
データ処理システムによって管理されるデータ要素は、任意の適切なやり方で、任意の適切な数のグループに区分されてもよいことが理解されるものとする。例えば、図１Ａに示されるように、データ要素は、同じ又は類似の数のデータ要素を有するグループに区分されてもよいが、これは、本明細書に記載の技術の限定ではなく、幾つかの実施形態では、データ要素は、異なる数のデータ要素を有するグループに区分されてもよい。また、図１Ａの図示例では、データ要素は、それらの数値識別子に基づいて順次グループ分けされるが、これも、本明細書に記載の技術の限定ではなく、単に説明を明瞭にするために行われたものである。
【００３９】
各コンピューティングデバイス１０４、１０８、１１０、及び１１２は、固定又は携帯型の任意の適切な種類のコンピューティングデバイスでもよい（本明細書に記載の技術の局面は、この点において限定されない）。さらに、コンピューティングデバイス１０４、１０８、１１０、及び１１２は、同じ種類のコンピューティングデバイスである必要はない。コンピューティングデバイス１０４、１０８、１１０、及び１１２は、ネットワーク１１４及び接続１１６ａ、１１６ｂ、１１６ｃ、及び１１６ｄを介して互いに通信するように構成される。ネットワーク１１４は、インターネット、イントラネット、広域ネットワーク、ローカルエリアネットワーク、及び／又はその他の適切な種類のネットワークなどの任意の適切な種類のネットワークでもよい。各接続１１６ａ、１１６ｂ、１１６ｃ、及び１１６ｄは、有線、無線、及び／又はその他の適切な種類の接続でもよい。
【００４０】
データ処理システム１００の一部であるコンピューティングデバイスは、データ処理システム１００によって管理されるデータ要素を保存するメモリを包含する。データ要素を保存するように構成されたデータ処理システム１００内のコンピューティングデバイスは、揮発性メモリ（例えば、ランダムアクセスメモリ、ＣＰＵキャッシュメモリなど）と、任意選択的に不揮発性メモリ（例えば、読出し専用メモリ（ＲＯＭ）、フラッシュメモリ、固体メモリ、ディスクメモリなど）とを包含する。揮発性メモリは、ヒープ上部分及びヒープ外部分を包含してもよい。
【００４１】
例えば、図１Ｂに示されるように、コンピューティングデバイス１０８は、ヒープ上メモリ１０８ａ及びヒープ外揮発性メモリ１０８ｂを包含する揮発性メモリと、ディスクメモリ１０８ｃを包含する不揮発性メモリとを有する。コンピューティングデバイス１１０は、ヒープ上メモリ１１０ａ及びヒープ外揮発性メモリ１１０ｂを包含する揮発性メモリと、ディスクメモリ１１０ｃを包含する不揮発性メモリとを有する。コンピューティングデバイス１１２は、ヒープ上メモリ１１２ａ及びヒープ外揮発性メモリ１１２ｂを包含する揮発性メモリと、ディスクメモリ１１２ｃを包含する不揮発性メモリとを有する。データ処理システム１００の一部である各コンピューティングデバイスは、揮発性及び不揮発性両方のメモリを包含するが、データ処理システム１００の一部である１つ又は複数のコンピューティングデバイスは、揮発性メモリのみを有してもよい（本明細書に記載の技術の局面は、この点において限定されない）。
【００４２】
幾つかの実施形態では、データ処理システム１００内のデバイスは、それの揮発性メモリのヒープ上部分に、このデバイスがプライマリデバイスであるデータ要素を保存することができる。例えば、図１Ｂに示されるように、コンピューティングデバイス１０８は、データ要素Ｄ１〜Ｄ５のプライマリコンピューティングデバイスであり、及びデータ要素Ｄ１〜Ｄ５のプライマリコピーであるデータ要素１２０ａをヒープ上揮発性メモリ１０８ａに保存する。コンピューティングデバイス１１０は、データ要素Ｄ６〜Ｄ１０のプライマリコンピューティングデバイスであり、及びデータ要素Ｄ６〜Ｄ１０のプライマリコピーであるデータ要素１２２ａをヒープ上揮発性メモリ１１０ａに保存する。コンピューティングデバイス１１２は、データ要素Ｄ１１〜Ｄ１５のプライマリコンピューティングデバイスであり、及びデータ要素Ｄ１１〜Ｄ１５のプライマリコピーであるデータ要素１２４ａをヒープ上揮発性メモリ１１２ａに保存する。
【００４３】
加えて、幾つかの実施形態では、データ処理システム１００内のデバイスは、それの揮発性メモリのヒープ外部分に、このデバイスがバックアップデバイスであるデータ要素を保存することができる。例えば、図１Ｂに示されるように、コンピューティングデバイス１０８は、データ要素Ｄ６〜Ｄ１５のバックアップコンピューティングデバイスであり、及びそれぞれデータ要素Ｄ６〜Ｄ１０及びＤ１１〜Ｄ１５のバックアップコピーであるデータ要素１２２ｂ及び１２４ｂをヒープ外揮発性メモリ１０８ｂに保存する。コンピューティングデバイス１１０は、データ要素Ｄ１〜Ｄ５及びＤ１１〜Ｄ１５のバックアップコンピューティングデバイスであり、及びそれぞれデータ要素Ｄ６〜Ｄ１０及びＤ１１〜Ｄ１５のバックアップコピーであるデータ要素１２０ｂ及び１２４ｃをヒープ外揮発性メモリ１１０ｂに保存する。コンピューティングデバイス１１２は、データ要素Ｄ１〜Ｄ１０のバックアップコンピューティングデバイスであり、及びそれぞれデータ要素Ｄ１〜Ｄ５及びＤ６〜Ｄ１０のバックアップコピーであるデータ要素１２０ｃ及び１２２ｃをヒープ外揮発性メモリ１１２ｂに保存する。
【００４４】
幾つかの実施形態では、データ処理システム内のデバイスは、データ要素及び保存されたデータ要素に関連付けられた情報を保存してもよい。例えば、デバイスは、デバイスの揮発性メモリに保存されたデータ要素の少なくともサブセットの各々のバージョン番号を保存してもよい。追加的又は代替的に、デバイスは、データ要素の少なくともサブセットの各々の識別子を保存してもよい。以下に記載の通り、これらの識別子及びバージョン番号は、データ処理システムの複数のデバイスにわたるデータ要素の再同期化に使用することができる。例えば、図１Ｄに示されるように、ヒープ上メモリ１０８ａは、データ要素Ｄ１〜Ｄ５のコンテンツ、これらのデータ要素Ｄ１〜Ｄ５それぞれの識別子、及びこれらのデータ要素それぞれのバージョン番号を保存する。この情報がテーブルの一部として示されるが、これは、データ要素及びそれらに関連付けられたあらゆる情報（例えば、バージョン番号及び／又は識別子）が、任意の適切な１つ又は複数のデータ構造を用いて、任意の適切なフォーマットで保存され得るので、単なる例示目的のものである（本明細書に記載の技術の局面は、この点において限定されない）。
【００４５】
幾つかの実施形態では、異なるデバイスが、同じ識別子を使用して、同じデータ要素のプライマリ及びバックアップコピーを指してもよい。例えば、あるデータ要素グループのプライマリデバイス及びそのデータ要素グループの１つ又は複数のバックアップデバイスが、データ要素及びそれらのコピーに対して同じ識別子を保存してもよい。しかしながら、他の実施形態では、異なるデバイスが、異なる識別子を使用して、同じデータ要素のプライマリ及びバックアップコピーを指してもよい。例えば、あるデータ要素グループのプライマリデバイスが、そのデータ要素グループに対して１組の識別子を用いてもよく、１つ又は複数のバックアップデバイスが、そのデータ要素グループに対して異なる組の識別子を用いてもよい。このような実施形態では、プライマリ及び／又はバックアップデバイスが、異なる識別子の組を互いにマッピングするようにプログラムされてもよい。
【００４６】
データ処理システム１００の動作中、データ要素のプライマリコピーは、それらのバックアップコピーよりも頻繁にアクセスされ得る。従って、データ要素のプライマリコピーを保存するためにヒープ上揮発性メモリが使用され、データ要素のバックアップコピーを保存するためにヒープ外揮発性メモリが使用される実施形態では、データ処理システム１００は、システムの全体的な応答性を向上させるために、ヒープ上揮発性メモリに保存されたデータ、及びピープ外揮発性メモリに保存されたデータを異なるやり方で管理するように構成されてもよい。例えば、データ処理システム１００は、自動ガーベジコレクションを用いることなく、ヒープ外揮発性メモリにおいてデータを管理してもよく、自動ガーベジコレクションを用いて、ヒープ上揮発性メモリにおいてデータを管理してもよい。別の例として、データ処理システム１００は、メモリの大きな隣接ブロックにアクセス及びデータの書込みを行うことによって、ヒープ外揮発性メモリにおいてデータを管理してもよいが、このような隣接ブロックがヒープ上メモリで使用されることを必要としない。このように、データ処理システム１００は、それが管理するデータ要素のプライマリコピーに対するアクセスリクエストに、より迅速に対処できることが可能であり、これは、高スループット用途においては重要である。
【００４７】
図１Ｂに示される、どのようにデータ処理システム１００がデータ要素及びそれらの各コピーを複数のデバイスにわたって管理するかの説明のための例では、各コンピューティングデバイス１０８、１１０、及び１１２が、データ処理システムによって管理される各データ要素のプライマリ又はバックアップコピーを保存する。例えば、データ要素Ｄ１〜Ｄ５のプライマリコピーは、コンピューティングデバイス１０８のヒープ上メモリに保存され、これらのデータ要素のセカンダリコピーは、コンピューティングデバイス１１０及び１１２両方のヒープ外メモリに保存される。しかしながら、データ処理システムは、データ処理システム内の各コンピューティングデバイス上に各データ要素のコピーを保存する必要はない（本明細書に記載の技術の局面は、この点において限定されない）。
【００４８】
例えば図１Ｃの説明のための例に示されるように、データ処理システム１００は、データ処理システムにおいてバックアップデバイス（すなわち、データ要素のバックアップコピーを保存するように構成される）として動作するように構成されたコンピューティングデバイスの幾つかにのみ、幾つかのデータ要素のバックアップコピーを保存してもよい。例えば、データ処理システム１００は、コンピューティングデバイス１０８のヒープ上メモリ１０８ａに、データ要素１３０ａとしてデータ要素Ｄ１〜Ｄ５のプライマリコピーと、コンピューティングデバイス１１０のヒープ外メモリに、データ要素１３０ｂとしてこれらのデータ要素のバックアップコピーとを保存するように構成されてもよい。この構成では、コンピューティングデバイス１１２ｃは、データ要素Ｄ１〜Ｄ５の何れのバックアップコピーも保存しない。他のデータ要素が、プライマリ又はバックアップコピーとして、全てのコンピューティングデバイス上に保存されてもよい。例えば、図１Ｃに示されるように、データ要素Ｄ１１〜Ｄ１５のプライマリコピーが、コンピューティングデバイス１１２上に、データ要素１３４ａとして保存されてもよく、これらのデータ要素のバックアップコピー１３４ｂ及び１３４ｃが、それぞれコンピューティングデバイス１０８及び１１０上に保存されてもよい。
【００４９】
幾つかの実施形態では、データ処理システム１００は、データ要素のバックアップコピーの保存にどの１つ又は複数のデバイスを使用するかを決定するように構成されてもよい。これは、任意の適切なやり方で行うことができる。例えば、データ処理システム１００は、データ要素毎に、そのデータ要素のバックアップコピーの保存にどの１つ又は複数のデバイスを使用するかを決定するように構成されてもよい。データ要素レベルでこのような決定を下すことは、同じコンピューティングデバイスに保存されたプライマリコピーを有するが、異なるデバイスに保存されたバックアップコピーを有するデータ要素をもたらし得る。例えば、図１Ｃに示されるように、データ要素Ｄ６〜Ｄ１０のプライマリコピーは、データ要素１３２ａとして、コンピューティングデバイス１１０のヒープ上メモリ１１０ａに保存され、データ要素Ｄ６〜Ｄ８のバックアップコピーは、データ要素１３２ｂとして、コンピューティングデバイス１０８のヒープ外メモリ１０８ｂに保存され、データ要素Ｄ９〜Ｄ１０のバックアップコピーは、データ要素１３２ｃとして、コンピューティングデバイス１１２のヒープ外メモリ１１２ｂに保存される。この例では、コンピューティングデバイス１０８は、データ要素Ｄ９〜Ｄ１０のバックアップコピーを保存せず、及びコンピューティングデバイス１１２は、データ要素Ｄ６〜Ｄ８のバックアップコピーを保存しない。別の例として、データ処理システムは、プライマリデバイスを共有するデータ要素グループ毎に、グループ内の全ての要素のバックアップコピーの保存にどの１つ又は複数のデバイスを使用するかを決定するように構成されてもよい。この構成では、グループ内の何れかのデータ要素のバックアップコピーを保存する各バックアップデバイスは、グループ内の他の全てのデータ要素のバックアップコピーも保存する。
【００５０】
幾つかの実施形態では、データ処理システム１００によって維持されるデータ要素を更新することができる。例えば、１つ又は複数の新しいデータ要素を、システムによって管理されている１組のデータ要素に追加することができる。別の例として、データ処理システムによって管理されている１つ又は複数のデータ要素を削除することができる。さらに別の例として、データ処理システムによって管理されるデータ要素の内の１つ又は複数のコンテンツを変更することができる。さらに別の例として、データ処理システムによって管理されるデータ要素の内の１つ又は複数のコンテンツを置換することができる。幾つかの実施形態では、データ処理システム１００は、本発明者らによって開発され、図２を参照して以下に記載される複製プロセスを用いて、それが管理するデータ要素の内の１つ又は複数を更新することができる。
【００５１】
図２は、本明細書に記載の技術の幾つかの実施形態による、あるデバイスに保存されたデータ要素と、１つ又は複数の他のデバイスに保存されたそれのコピーの内の１つ又は複数を更新する例示的プロセス２００のフローチャートである。プロセス２００は、任意の適切なデータ処理システムによって行うことができ、例えば、上記のデータ処理システム１００によって行われてもよい。
【００５２】
プロセス２００は、データ処理システム内のコンピューティングデバイスが、データ要素を更新する指示を受信するアクト２０２から始まる。指示は、データ処理システムによって管理されているデータ要素に新しいデータ要素を追加する指示、データ処理システムによって管理されるデータ要素を削除する指示、又はデータ処理システムによって管理されるデータ要素内のデータを変更する指示でもよい。非限定例として、データ処理システム１００によって管理されるデータ要素１０６に関して、指示は、データ要素１０６に新しいデータ要素Ｄ１６を追加する、データ要素１０６からデータ要素Ｄ９を削除する、又はデータ要素１０６のデータ要素Ｄ３内のデータの値を変更する指示でもよい。指示は、例えば、データ処理システムの外部のデバイスを包含する任意の適切なソースから、又はデータ処理システムの一部である別のデバイスから受信されてもよく、又は指示を受信するコンピューティングデバイス上で実行されるソフトウェアによって生成（自動的に、又はユーザ入力に応答して）されてもよい。幾つかの例では、指示は、データ処理システムのユーザが、データ要素が更新されるべきであるという指示を提供することに応答して、受信されてもよい。
【００５３】
幾つかの実施形態では、アクト２０２で受信された指示には、更新されるべきデータ要素を識別する情報が包含されてもよい。指示が、データ要素内のデータの値が変更されるべきであるという指示である場合、この指示には、新しいデータ値が包含されてもよい。指示が、新しいデータ要素が追加されるべきであるという指示である場合、この指示には、新しいデータ要素の一部となるデータの少なくとも一部（例えば、全て）が包含されてもよい。指示は、任意の適切なフォーマットのものでよい（本技術の局面は、この点において限定されない）。
【００５４】
次に、プロセス２００は、データ要素を更新する指示を受信したコンピューティングデバイスが、そのデータ要素のプライマリデバイスであるか否かを決定する決定ブロック２０４に進む。すなわち、決定ブロック２０４において、コンピューティングデバイスが、更新されるべきデータ要素のプライマリコピーを保存する（又は新しいデータ要素が追加される場合には、保存する予定である）か否かに関する決定が下される。この決定は、任意の適切なやり方で行うことができる。例えば、幾つかの実施形態では、データ要素を更新する指示には、データ要素を識別する情報が包含されてもよく、この情報は、データ要素のプライマリデバイスを識別するため（例えば、ルックアップテーブル又はマッピングを用いて、又はその他の適切なやり方で）、及び指示を受信したコンピューティングデバイスが識別されたプライマリデバイスであるか否かを決定するために使用することができる。
【００５５】
決定ブロック２０４において、データ要素を更新する指示を受信したコンピューティングデバイスが、データ要素のプライマリデバイスではないと決定されると、プロセス２００は、指示がデータ要素のプライマリデバイスに転送されるアクト２０６に進む。例えば、コンピューティングデバイス１０８が、データ要素Ｄ６（それのプライマリコピーは、コンピューティングデバイス１１０の揮発性メモリに保存される）を更新する指示を受信した場合、コンピューティングデバイス１０８は、決定ブロック２０４において、コンピューティングデバイス１１０が、データ要素Ｄ６のプライマリデバイスであると決定し、アクト２０６において、指示をコンピューティングデバイス１１０に転送することができる。
【００５６】
一方、決定ブロック２０４において、データ要素を更新する指示を受信したコンピューティングデバイスが、データ要素のプライマリデバイスであると決定された場合、プロセス２００は、データ要素のプライマリコピーがプライマリデバイス上で更新されるアクト２０８に進む。
【００５７】
データ要素のプライマリコピーがプライマリデバイス上で更新された後、プロセス２００は、データ要素のバックアップコピーを保存する１つ又は複数のデバイスが識別されるアクト２１０に進む。データ要素を識別する情報は、例えば、ルックアップテーブル又はマッピングを用いて、又はその他の適切なやり方で、データ要素の１つ又は複数のバックアップデバイスを決定するために使用することができる。例えば、コンピューティングデバイス１０８が、データ要素Ｄ３を更新する指示を受信した場合、データ処理システムは、アクト２１０において、コンピューティングデバイス１１０及び１１２の各々が、データ要素Ｄ３のコピーを保存することを決定してもよい。
【００５８】
１つ又は複数のバックアップデバイスが識別された後、プライマリデバイスは、アクト２１２において、データ要素を更新する指示を、アクト２１０で識別された１つ又は複数のバックアップデバイスに提供する。
【００５９】
次に、プロセス２００は、データ要素が、アクト２１０において識別された１つ又は複数のバックアップデバイス上で更新されたか否かを決定する決定ブロック２１４に進む。この決定は、任意の適切なやり方で行うことができる。例えば、プライマリデバイスが、これらの１つ又は複数のバックアップデバイスの各々から、データ要素の各コピーが更新されたことを示す肯定応答を受信した場合に、アクト２１０で識別された１つ又は複数のバックアップデバイス上でデータ要素が更新されたと決定されてもよい。別の例として、アクト２１０で識別されたバックアップデバイスのサブセットのみがアクセス可能である（例えば、ネットワークの接続性又は電力問題のため）例において、プライマリデバイスが、アクセス可能な１つ又は複数のバックアップデバイスの各々から、データ要素の各コピーが更新されたことを示す肯定応答を受信した場合に、アクト２１０で識別された１つ又は複数のバックアップデバイス上でデータ要素が更新されたと決定されてもよい。このような例では、データ処理システムは、アクセスできないバックアップデバイス上で、当該デバイスがアクセス可能である後に、データ要素のコピーを更新するために必要とされる情報を保存（例えば、プライマリデバイス上に）してもよい。
【００６０】
決定ブロック２１４において、アクト２１０で識別された１つ又は複数のバックアップデバイス上でデータ要素が更新されたと決定されるまで、プロセス２００は、１つ又は複数の更新が完了するのを待つ。一方、決定ブロック２１４において、１つ又は複数のバックアップデバイス上でデータ要素のコピーが更新されたと決定されると、プロセス２００は、データ要素が更新されたとの指示が提供されるアクト２１６に進む。指示は、データ要素に対する更新をリクエストしたユーザ又はコンピュータプログラムに提供されるものでもよい。追加的又は代替的に、この指示の提供には、データ要素が更新されたことを示す情報（例えば、ログで）を保存することが包含されてもよい。アクト２１６の後、プロセス２００は、完了する。
【００６１】
プロセス２００は、例示的なものであること、及びプロセス２００の変形形態が可能であることが理解されるものとする。例えば、幾つかの実施形態では、プロセス２００中の１つ又は複数のアクトの順序が変更されてもよい。具体例として、アクト２０８、２１０、及び２１２は、任意の適切な順序で行われてもよい。別の具体例として、幾つかの実施形態では、データ要素のプライマリコピーは、決定ブロック２１４において、データ要素のコピーが更新されたことが決定されて初めて更新されてもよい。
【００６２】
上記の通り、メモリ内データ処理システムによって管理されるデータ要素のコピーは、ネットワークの停止及び／又は停電などの事象により、非同期となる場合がある。本発明者らは、少なくとも部分的に、データ要素に関連付けられたバージョン番号に基づいて、データ処理システムによって管理されるデータ要素を効率的に同期させる低帯域幅マニフェストベースの再同期化技術を開発した。以下により詳細に記載される通り、この技術は、データ処理システムによって管理されるデータ要素の各コピーのバージョン番号を維持し、これらのバージョン番号を用いることによって、同期のずれたデータ要素を識別し、それらを効率的に再同期させることを伴う。
【００６３】
図３Ａ、３Ｂ、及び３Ｃは、本明細書に記載の技術の幾つかの実施形態による、データ処理システム３００におけるマニフェストベースの再同期化を示す。データ処理システム３００は、各々が任意の適切な種類のコンピューティングデバイスでもよい、コンピューティングデバイス３０２、３０４ａ、３０４ｂ、及び３０４ｃを包含する。コンピューティングデバイス３０２は、データ要素グループのプライマリデバイスであり、それの揮発性メモリに、これらのデータ要素のプライマリコピーを保存する。グループ内のデータ要素のバックアップコピーは、コンピューティングデバイス３０４ａ、３０４ｂ、及び３０４ｃの揮発性メモリに保存される。各コンピューティングデバイス３０２、３０４ａ、３０４ｂ、及び３０４ｃは、それの揮発性メモリに保存された各データ要素に関するそれぞれのローカルバージョン番号を保存する。
【００６４】
図３Ａに示されるように、再同期化を行う指示に応答して、コンピューティングデバイス３０２は、（１）コンピューティングデバイス３０２がプライマリデバイスであるデータ要素を識別する情報、及びそれらそれぞれのバージョン番号を包含するマニフェスト３０４を作成し、（２）コンピューティングデバイス３０２がプライマリデバイスであるあらゆるデータ要素のバックアップコピーを保存するあらゆる１つ又は複数のコンピューティングデバイスに対して、作成されたマニフェストを提供する。図３Ａの説明のための例では、コンピューティングデバイス３０４ａ、３０４ｂ、及び３０４ｃは、それぞれ、プライマリコピーがコンピューティングデバイス３０２上に保存されるデータ要素の１つ又は複数のバックアップコピーを保存する。従って、コンピューティングデバイス３０２は、マニフェスト３０４をコンピューティングデバイス３０４ａ、３０４ｂ、及び３０４ｃに提供する。
【００６５】
次に、コンピューティングデバイス３０４ａ、３０４ｂ、及び３０４ｃの各々は、マニフェスト３０４内のバージョン番号を、それぞれの揮発性メモリに保存されたデータ要素のバックアップコピーのローカルバージョン番号と比較することができる。これらの比較の結果に基づいて、コンピューティングデバイス３０４ａ、３０４ｂ、及び３０４ｃの各々は、プライマリコピーと同期のずれたデータ要素を識別することができる。例えば、コンピューティングデバイス３０４ａに保存されたデータ要素のバックアップコピーは、マニフェスト３０４に示されたそのデータ要素のバージョン番号が、コンピューティングデバイス３０４ａによって維持された、その特定のデータ要素のローカルバージョン番号と異なる（例えば、それよりも大きい）場合に、コンピューティングデバイス３０２に保存されたそれのプライマリコピーと同期がずれていることをコンピューティングデバイス３０４ａが決定することができる。図３Ｂに示されるように、同期のずれたデータ要素を識別した後に、コンピューティングデバイス３０４ａ、３０４ｂ、及び３０４ｃの各々は、同期のずれたデータ要素の更新されたコピーを求める各リクエスト３０８ａ、３０８ｂ、及び３０８ｃをコンピューティングデバイス３０２に送る。これらのリクエストに応答して、コンピューティングデバイス３０２は、リクエストされたデータ要素をコンピューティングデバイス３０４ａ、３０４ｂ、及び３０４ｃの各々に送る。例えば図３Ｃに示されるように、コンピューティングデバイス３０２は、コンピューティングデバイス３０４ａに対して、リクエスト３０８ａでそれがリクエストしたデータ要素３１０ａを送る。同様に、コンピューティングデバイス３０２は、コンピューティングデバイス３０４ｂに対して、リクエスト３０８ｂでそれがリクエストしたデータ要素３１０ｂを送り、コンピューティングデバイス３０４ｃに対して、リクエスト３０８ｃでそれがリクエストしたデータ要素３１０ｃを送る。
【００６６】
図３Ａ、３Ｂ、及び３Ｃに示されるように、本発明者らによって開発されたマニフェストベースの再同期化技術は、コンピューティングデバイス３０２に保存された全てのデータ要素のコンテンツがコンピューティングデバイス３０４ａ、３０４ｂ、及び３０４ｃに送信されることを必要としない。代わりに、データ要素を識別する情報及びそれらのバージョンのみが送信される。データ要素を識別する情報は、データ要素自体よりも大幅に小さなデータ量を構成し得るので（例えば、１０分の１のデータ、１００分の１のデータ、１０００分の１のデータ、１万分の１のデータ、１００万分の１のデータなど）、データ要素自体の代わりに、このような識別情報を送信することは、データ処理システムのネットワークに再同期化が課す通信負担を軽減し、それの全体的な動作効率の向上をもたらす。さらに、同期のずれたデータ要素のみを送信することは、通信負荷をさらに軽減する。
【００６７】
図４Ａ、４Ｂ、４Ｃ、４Ｄ、４Ｅ、及び４Ｆは、本明細書に記載の技術の幾つかの実施形態による、データ処理システム４００におけるマニフェストベースの再同期化のより詳細な説明のための例を示す。図４Ａに示されるように、データ処理システム４００は、コンピューティングデバイス４０２、４０４、及び４０６を包含する。各コンピューティングデバイス４０２、４０４、及び４０６は、固定デバイス又は携帯デバイスなどの任意の適切な種類のコンピューティングデバイスでもよい。例えば、コンピューティングデバイス４０２、４０４、及び４０６の各々は、サーバでもよい。コンピューティングデバイス４０２、４０４、及び４０６は、例が本明細書に提供される（例えば、図１Ａに示されるネットワーク１１４を参照）、任意の適切な種類のネットワークでよいネットワーク４０８を介して、通信可能に結合される。
【００６８】
コンピューティングデバイス４０２は、ヒープ上揮発性メモリ４０２ａ、ヒープ外揮発性メモリ４０２ｂ、及び不揮発性メモリ４０２ｃを包含する。コンピューティングデバイス４０２は、データ要素Ｄ１〜Ｄ５のプライマリコピー４１０ａをヒープ上揮発性メモリ４０２ａに保存し、データ要素Ｄ６〜Ｄ１０のバックアップコピー４１２ｂをヒープ外揮発性メモリ４０２ｂに保存し、データ要素Ｄ１１〜Ｄ１５のバックアップコピー４１４ｃをヒープ外揮発性メモリ４０２ｂに保存する。コンピューティングデバイス４０２は、データ要素Ｄ１〜Ｄ５の各プライマリコピーのローカルバージョン番号を保存する。データ要素Ｄ１、Ｄ２、Ｄ３、Ｄ４、及びＤ５のバージョン番号は、それぞれ１０、３、１、１、及び４である。図４Ａに明示的に示されないが、コンピューティングデバイス４０２は、データ要素Ｄ６〜Ｄ１５のバックアップコピー４１２ｂ及び４１４ｃの各々のローカルバージョン番号も保存する。
【００６９】
コンピューティングデバイス４０４は、ヒープ上揮発性メモリ４０４ａ、ヒープ外揮発性メモリ４０４ｂ、及び不揮発性メモリ４０４ｃを包含する。コンピューティングデバイス４０４は、データ要素Ｄ６〜Ｄ１０のプライマリコピー４１２ａをヒープ上揮発性メモリ４０４ａに保存し、データ要素Ｄ１〜Ｄ５のバックアップコピー４１０ｂをヒープ外揮発性メモリ４０４ｂに保存し、データ要素Ｄ１１〜Ｄ１５のバックアップコピー４１４ｂをヒープ外揮発性メモリ４０４ｂに保存する。コンピューティングデバイス４０４は、データ要素Ｄ１〜Ｄ５の各バックアップコピーのローカルバージョン番号を保存する。データ要素Ｄ１、Ｄ２、Ｄ３、Ｄ４、及びＤ５のバックアップコピーのバージョン番号は、それぞれ１０、３、１、１、及び４である。図４Ａに明示的に示されないが、コンピューティングデバイス４０４は、データ要素Ｄ６〜Ｄ１０のプライマリコピー４１２ａの各々、及びデータ要素Ｄ１１〜Ｄ１５のバックアップコピー４１４ｂの各々のローカルバージョン番号も保存する。
【００７０】
コンピューティングデバイス４０６は、ヒープ上揮発性メモリ４０６ａ、ヒープ外揮発性メモリ４０６ｂ、及び不揮発性メモリ４０６ｃを包含する。コンピューティングデバイス４０６は、データ要素Ｄ１１〜Ｄ１５のプライマリコピー４１４ａをヒープ上揮発性メモリ４０６ａに保存し、データ要素Ｄ１〜Ｄ５のバックアップコピー４１０ｃをヒープ外揮発性メモリ４０６ｂに保存し、データ要素Ｄ６〜Ｄ１０のバックアップコピー４１２ｃをヒープ外揮発性メモリ４０６ｂに保存する。コンピューティングデバイス４０６は、データ要素Ｄ１〜Ｄ５の各バックアップコピーのローカルバージョン番号を保存する。データ要素Ｄ１、Ｄ２、Ｄ３、Ｄ４、及びＤ５のバックアップコピーのバージョン番号は、それぞれ１０、３、１、１、及び４である。図４Ａに明示的に示されないが、コンピューティングデバイス４０６は、データ要素Ｄ１１〜Ｄ１５のプライマリコピー４１４ａの各々、及びデータ要素Ｄ６〜Ｄ１０のバックアップコピー４１２ｃの各々のローカルバージョン番号も保存する。
【００７１】
図４Ａに示されるデータ要素Ｄ１〜Ｄ５のローカルバージョン番号の比較から分かるように、データ要素Ｄ１〜Ｄ５は、コンピューティングデバイス４０２、４０４、及び４０６にわたり同期される。一方、図４Ｂは、データ要素Ｄ１〜Ｄ５の様々なコピーが、これらのコンピューティングデバイスにわたり、もはや同期していない状況を示す。図４Ｂに示されるように、データ要素Ｄ２のプライマリコピー４２０ａは更新され、そのバージョン番号４２０ｂは、３から４に増えている。加えて、エントリ４２２ａ及び４２２ｂに見られるように、データ要素Ｄ５のプライマリコピーは、削除されている。これらの変化（すなわち、データ要素Ｄ２の更新及びデータ要素Ｄ５の削除）は、データ要素Ｄ２のプライマリコピー４２０ａのものと同じバージョン番号４２０ｄ（すなわち、４）を持つデータ要素Ｄ２のバックアップコピー４２０ｃを保存するコンピューティングデバイス４０４に伝えられている。加えて、エントリ４２２ｃ及び４２２ｄに見られるように、データ要素Ｄ５のバックアップコピーが、コンピューティングデバイス４０４から削除されている。しかしながら、データ要素Ｄ２及びＤ５に対する変化は、コンピューティングデバイス４０６に伝えられていない（例えば、更新が生じている間、コンピューティングデバイス４０６がアクセス不可能であったかもしれないため）。図４Ｂに示されるように、コンピューティングデバイス４０６は、プライマリコピーのように４ではなく３のバージョン番号４２０ｆを持つデータ要素Ｄ２のバックアップコピー４２０ｅを保存する）。加えて、エントリ４２２ｅ及び４２２ｆに見られるように、データ要素Ｄ５のバックアップコピーは、コンピューティングデバイス４０６から削除されていない。
【００７２】
図４Ｃ〜４Ｆは、コンピューティングデバイス４０２、４０４、及び４０６にわたり、データ要素Ｄ１〜Ｄ５を再同期させるために、どのように本発明者らによって開発されたマニフェストベースの再同期化技術を使用することができるかを示す。まず、図４Ｃに示されるように、コンピューティングデバイス４０２は、マニフェスト４４０及び４４２をコンピューティングデバイス４０４及び４０６にそれぞれ送信する。マニフェスト４４０及び４４２の各々は、コンピューティングデバイス４０２がプライマリコピーを保存するデータ要素を識別する情報、及びそれらそれぞれのバージョン番号を包含する。コンピューティングデバイス４０２が、データ要素Ｄ５のプライマリコピーを、それが削除されたため、もはや保存しないので、マニフェスト４４０及び４４２は、データ要素Ｄ５を識別する情報を全く包含しない。
【００７３】
次に、コンピューティングデバイス４０４及び４０６は、それぞれマニフェスト４４０及び４４２内のバージョン番号を、これらのデバイスによって保存されたローカルバージョン番号と比較する。図４Ｄに示されるように、コンピューティングデバイス４０４は、データ要素Ｄ１〜Ｄ４のローカルバージョン番号が、マニフェスト４４０におけるそれらそれぞれの対応部分と一致するので、データ要素Ｄ１〜Ｄ４のそれの全コピーが、それらのプライマリコピーと同期していると判断した。一方、コンピューティングデバイス４０６は、バージョン番号４２０ｆ（すなわち、３）が、マニフェスト４４２におけるそれの対応部分（すなわち、４）と一致しないので、データ要素Ｄ２のそれのバックアップコピー４２０ｅが、要素Ｄ２のプライマリコピーと同期がずれていると判断した。従って、コンピューティングデバイス４０６は、データ要素Ｄ２の更新されたバージョンを取得するために、コンピューティングデバイス４０２にリクエスト４４４を送る。
【００７４】
図４Ｅに示されるように、リクエスト４４４の受信に応答して、コンピューティングデバイス４０２は、メッセージ４４６において、データ要素Ｄ２の最新バージョンを送信する。それに対して、図４Ｆに示されるように、コンピューティングデバイス４０６は、それのデータ要素Ｄ２のコピーを更新し、このデータ要素のプライマリコピー４２０ａのバージョン番号４２０ｂと一致するバージョン番号４２０ｈ（すなわち、４）を持つデータ要素Ｄ２のバックアップコピー４２０ｇを保存する。加えて、エントリ４２２ｇ及び４２２ｈから分かるように、マニフェスト４４２がデータ要素Ｄ５に関する情報を全く含有していなかったので（これは、データ要素Ｄ５のプライマリコピーがコンピューティングデバイス４０２から削除されたという指示を提供する）、コンピューティングデバイス４０６は、それのデータ要素Ｄ５のローカルコピーを削除する。
【００７５】
従って、マニフェストベースの再同期化技術の完了時には、図４Ｆに示されるように、データ要素Ｄ１〜Ｄ５のコピーは、再度、コンピューティングデバイス４０２、４０４、及び４０６にわたり、同期される。
【００７６】
図５は、本明細書に記載の技術の幾つかの実施形態による、データ処理システムによって管理される１組のデータ要素のプライマリデバイスとして動作するコンピューティングデバイスによって行われる、この１組のデータ要素に対してマニフェストベースの再同期化を行う例示的プロセス５００のフローチャートである。プロセス５００は、任意の適切なコンピューティングデバイスによって行うことができ、例えば、データ要素Ｄ１〜Ｄ５に対してコンピューティングデバイス１０８によって、データ要素Ｄ６〜Ｄ１０に対してコンピューティングデバイス１１０によって、及びデータ要素Ｄ１１〜Ｄ１５に対してコンピューティングデバイス１１２によって行われてもよい。
【００７７】
プロセス５００は、プロセス５００を行うプライマリデバイスが、再同期化を行う指示を受信するアクト５０２から始まる。この指示は、任意の適切なソースから受信することができる。例えば、データ処理システムは、この指示を、再同期化が行われるべきであることを示すユーザからの入力の受信に応答して、プライマリデバイスに提供してもよい。別の例として、データ処理システムは、ユーザ入力なしに自動的に、再同期化が行われるべきであることを決定してもよい。幾つかの実施形態では、このような決定は、ネットワークの停止、停電、及び／又はデータ処理システムによって管理されるデータ要素を非同期にし得るその他の事象の検出に応答して、データ処理システムによって自動的に行われてもよい。他の実施形態では、データ処理システムは、事象駆動型様式ではなく、所定のスケジュールに従って、それが管理するデータ要素を再同期させてもよい。
【００７８】
再同期化を行う指示の受信に応答して、プロセス５００を実行するプライマリデバイスは、アクト５０４において、プライマリデバイスが維持する、プライマリコピーがプライマリデバイスによって保存されるデータ要素を識別する情報、及びそれらそれぞれのバージョン番号を有するマニフェストを作成する。次に、プライマリデバイスは、アクト５０６において、プライマリコピーがプライマリデバイスに保存される１つ又は複数のデータ要素のバックアップコピーを保存する１つ又は複数のバックアップデバイスに作成されたマニフェストを送信する。
【００７９】
次に、アクト５０８において、プライマリデバイスは、アクト５０６でマニフェストが提供されたバックアップデバイスの１つ又は複数から、１つ又は複数のデータ要素の更新されたバージョンを求めるリクエストを受信する。１つ又は複数のリクエストの受信に応答して、プライマリデバイスは、アクト５１０において、リクエストしているバックアップデバイスに更新されたデータ要素を提供し、プロセス５００が完了する。
【００８０】
プロセス５００を、データ処理システムの単一のコンピューティングデバイス部分に関連して説明したが、このプロセスは、データ処理システム内の複数のデバイスによって行われてもよい。例えば、幾つかの実施形態では、プロセス５００は、データ処理システムによって管理されるあらゆるデータ要素のプライマリデバイスとして機能する複数の（例えば、全ての）コンピューティングデバイスによって行われてもよい。
【００８１】
図６は、本明細書に記載の技術の幾つかの実施形態による、１組のデータ要素のバックアップデバイスとして動作するコンピューティングデバイスによって行われる、この１組のデータ要素に対してマニフェストベースの再同期化を行う例示的プロセス６００のフローチャートである。プロセス６００は、任意の適切なコンピューティングデバイスによって行うことができ、例えば、データ要素Ｄ６〜Ｄ１１に対してコンピューティングデバイス１０８によって、データ要素Ｄ１〜Ｄ５及びＤ１１〜Ｄ１５に対してコンピューティングデバイス１１０によって、及びデータ要素Ｄ１〜Ｄ１０に対してコンピューティングデバイス１１２によって、行われてもよい。
【００８２】
プロセス６００は、プロセス６００を実行するバックアップデバイスが、１つ又は複数のデータ要素のプライマリコピーを保存するプライマリデバイスからマニフェストを受信するアクト６０２から始まる。マニフェストは、プライマリデバイス上にプライマリコピーが保存されるデータ要素の各々を識別する情報と、それらそれぞれのバージョン番号とを包含する。
【００８３】
次に、アクト６０４において、プロセス６００を実行するバックアップデバイスが、プライマリデバイスに保存された各プライマリコピーと同期のずれた、バックアップデバイスに保存されたデータ要素を識別する。これは、任意の適切なやり方で、例えば、バックアップデバイスによって維持されたデータ要素のローカルバージョン番号を、プライマリデバイスによって提供されたマニフェスト内のバージョン番号と比較することによって、行われてもよい。
【００８４】
次に、アクト６０６において、バックアップデバイスは、アクト６０４において識別された、あらゆる同期のずれたデータ要素をプライマリデバイスにリクエストする。アクト６０８では、バックアップデバイスは、リクエストされたデータ要素をプライマリデバイスから受信する。最後に、アクト６１０において、バックアップデバイスは、プライマリコピーがプライマリデバイスから削除され、アクト６０２においてプライマリデバイスによって提供されたマニフェスト内で識別されなかったデータ要素である、あらゆる「オーファン」データ要素を除去することができる。アクト６１０においてオーファンが除去された後、プロセス６００が完了する。
【００８５】
図７は、本明細書に記載の技術を実施することができる適切なコンピューティングシステム環境７００の一例を示す。コンピューティングシステム環境７００は、適切なコンピューティング環境の一例にすぎず、本明細書に記載の技術の使用又は機能性の範囲に関してどのような限定も示唆することが意図されない。コンピューティング環境７００は、例示的動作環境７００に示されるコンポーネントの何れか１つ又はそれらの組み合わせに関係する依存性又は要件を有すると解釈されるものではない。
【００８６】
本明細書に記載の技術は、多数の他の汎用又は特殊用途のコンピューティングシステム環境又は構成と共に使用可能である。本明細書に記載の技術での使用に適し得る良く知られたコンピューティングシステム、環境、及び／又は構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能大衆消費電子製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステム又はデバイスの何れかを包含する分散コンピューティング環境などを包含するが、これらに限定されない。
【００８７】
コンピューティング環境は、プログラムモジュールなどのコンピュータ実行可能命令を実行することができる。一般に、プログラムモジュールは、特定のタスクを行う、又は特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを包含する。本明細書に記載の技術は、通信ネットワークによってリンクされるリモート処理デバイスによってタスクが行われる分散コンピューティング環境で実施されてもよい。分散コンピューティング環境では、プログラムモジュールが、メモリストレージデバイスを包含するローカル及びリモートコンピュータストレージ媒体の両方に位置してもよい。
【００８８】
図７を参照して、本明細書に記載の技術を実施する例示的システムが、コンピュータ７１０の形の汎用コンピューティングデバイスを包含する。コンピュータ７１０のコンポーネントは、処理装置７２０、システムメモリ７３０、及びシステムメモリを包含する様々なシステムコンポーネントを処理装置７２０に結合させるシステムバス７２１を包含してもよいが、これらに限定されない。システムバス７２１は、メモリバス又はメモリコントローラ、周辺バス、及び各種バスアーキテクチャの何れかを用いたローカルバスを包含する、幾つかの種類のバス構造の何れでもよい。例として、及び限定ではなく、このようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子装置規格化協会（Video Electronics Standards Association）（ＶＥＳＡ）ローカルバス、及び周辺部品相互接続（ＰＣＩ）バス（メザニンバスとしても知られる）を包含する。
【００８９】
コンピュータ７１０は、一般的に、各種のコンピュータ可読媒体を包含する。コンピュータ可読媒体は、コンピュータ７１０がアクセスすることができる任意の利用可能な媒体でよく、揮発性及び不揮発性両方の媒体、取外し可能な及び取外しができない媒体を包含する。例として、及び限定ではなく、コンピュータ可読媒体は、コンピュータストレージ媒体及び通信媒体を含んでもよい。コンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータなどの情報の保存のために、任意の方法又は技術で実施される、揮発性及び不揮発性、取外し可能な及び取外しができない媒体を包含する。コンピュータストレージ媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又は他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）又は他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又は他の磁気ストレージデバイス、又は所望の情報を保存するために使用することができ、且つコンピュータ７１０によってアクセスすることができるその他の媒体を包含するが、これらに限定されない。通信媒体は、一般的に、コンピュータ可読命令、データ構造、プログラムモジュール、又は搬送波又は他の搬送機構などの変調データ信号内の他のデータを具現化し、あらゆる情報送達媒体を包含する。「変調データ信号」という用語は、特性集合の内の１つ又は複数を有する信号、又は信号内の情報を符号化するように変更された信号を意味する。例として、及び限定ではなく、通信媒体は、有線ネットワーク又は直接有線接続などの有線媒体、及び音響、ＲＦ、赤外線、及び他の無線媒体などの無線媒体を包含する。上記の何れかの組み合わせも、コンピュータ可読媒体の範囲内に包含されるものとする。
【００９０】
システムメモリ７３０は、読出し専用メモリ（ＲＯＭ）７３１及びランダムアクセスメモリ（ＲＡＭ）７３２などの揮発性及び／又は不揮発性メモリの形のコンピュータストレージ媒体を包含する。起動中などに、コンピュータ７１０内の要素間の情報の伝達に役立つ基本ルーチンを含有する基本入出力システム７３３（ＢＩＯＳ）は、一般的に、ＲＯＭ７３１に保存される。ＲＡＭ７３２は、一般的に、処理装置７２０によって、すぐにアクセス可能な、及び／又は現在動作中のデータ及び／又はプログラムモジュールを含有する。例として、及び限定ではなく、図７は、オペレーティングシステム７３４、アプリケーションプログラム７３５、他のプログラムモジュール７３６、及びプログラムデータ７３７を示す。
【００９１】
コンピュータ７１０は、他の取外し可能な／取外しができない、揮発性／不揮発性コンピュータストレージ媒体も包含してもよい。単なる例として、図７は、取外しができない不揮発性磁気媒体に対して読出し又は書込みを行うハードディスクドライブ７４１、フラッシュメモリなどの取外し可能な不揮発性メモリ７５２に対して読出し又は書込みを行うフラッシュドライブ７５１、及びＣＤ−ＲＯＭ又は他の光媒体などの取外し可能な不揮発性光ディスク７５６に対して読出し又は書込みを行う光ディスクドライブ７５５を示す。例示的動作環境において使用することができる他の取外し可能な／取外しができない、揮発性／不揮発性コンピュータストレージ媒体は、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどを包含するが、これらに限定されない。ハードディスクドライブ７４１は、一般的に、インタフェース７４０などの取外しができないメモリインタフェースを介してシステムバス７２１に接続され、磁気ディスクドライブ７５１と光ディスクドライブ７５５とは、一般的に、インタフェース７５０などの取外し可能なメモリインタフェースによって、システムバス７２１に接続される。
【００９２】
上述の、及び図７に示されたドライブ及びそれらに関連するコンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、及びコンピュータ７１０に関する他のデータの保存を提供する。例えば図７では、ハードディスクドライブ７４１は、オペレーティングシステム７４４、アプリケーションプログラム７４５、他のプログラムモジュール７４６、及びプログラムデータ７４７を保存するものとして示されている。なお、これらのコンポーネントは、オペレーティングシステム７３４、アプリケーションプログラム７３５、他のプログラムモジュール７３６、及びプログラムデータ７３７と同一でもよく、あるいは異なってもよい。ここでは、オペレーティングシステム７４４、アプリケーションプログラム７４５、他のプログラムモジュール７４６、及びプログラムデータ７４７は、少なくともそれらが異なるコピーであることを示すために、異なる番号が与えられている。ユーザは、キーボード７６２、及びマウス、トラックボール又はタッチパッドと通常呼ばれるポインティングデバイス７６１などの入力デバイスを用いて、コマンド及び情報をコンピュータ７１０に入力することができる。他の入力デバイス（不図示）は、マイク、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどを包含してもよい。これらの及び他の入力デバイスは、多くの場合、システムバスに結合されたユーザ入力インタフェース７６０を介して処理装置７２０に接続されるが、パラレルポート、ゲームポート、又はユニバーサルシリアルバス（ＵＳＢ）などの他のインタフェース及びバス構造によって接続されてもよい。モニタ７９１又は他の種類のディスプレイデバイスも、ビデオインタフェース７９０などのインタフェースを介して、システムバス７２１に接続される。モニタに加えて、コンピュータは、出力周辺インタフェース７９５を介して接続されてもよいスピーカ７９７及びプリンタ７９６などの他の周辺出力デバイスも包含してもよい。
【００９３】
コンピュータ７１０は、リモートコンピュータ７８０などの１つ又は複数のリモートコンピュータへの論理接続を用いたネットワーク化環境で動作してもよい。リモートコンピュータ７８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、又は他の共通ネットワークノードでもよく、メモリストレージデバイス７８１のみが図７に示されるが、一般的に、コンピュータ７１０に関連して上記に述べた要素の多く又は全てを包含する。図７に描かれた論理接続は、ローカルエリアネットワーク（ＬＡＮ）７７１及び広域ネットワーク（ＷＡＮ）７７３を包含するが、他のネットワークも包含してよい。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、及びインターネットにおいて一般的である。
【００９４】
ＬＡＮネットワーク環境で使用される場合、コンピュータ７１０は、ネットワークインタフェース又はアダプタ７７０により、ＬＡＮ７７１に接続される。ＷＡＮネットワーク環境で使用される場合、コンピュータ７１０は、一般的に、モデム７７２、又はインターネットなどのＷＡＮ７７３上で通信を確立するための他の手段を包含する。内部又は外部のものでもよいモデム７７２は、ユーザ入力インタフェース７６０又は他の適切な機構を介して、システムバス７２１に接続されてもよい。ネットワーク化環境では、コンピュータ７１０又はそれの部分に関連して描かれたプログラムモジュールは、リモートメモリストレージデバイスに保存されてもよい。例として、及び限定ではなく、図７は、メモリデバイス７８１に存在するものとしてリモートアプリケーションプログラム７８５を示す。示されたネットワーク接続は、例示的なものであり、コンピュータ間で通信リンクを確立する他の手段を用いることができることが理解されるだろう。
【００９５】
本発明の少なくとも１つの実施形態の幾つかの局面を上述のように説明したが、様々な改変形態、変更形態、及び改良形態が、当業者には用意に思い付くであろうことが理解されるはずである。
【００９６】
このような改変形態、変更形態、及び改良形態は、本開示の一部であることが意図され、本発明の精神及び範囲内であることが意図される。さらに、本発明の利点を示したが、本明細書に記載の技術の全ての実施形態が、全ての記載された利点を包含するわけではないことが理解されるものとする。幾つかの実施形態は、本明細書に有利であると記載された何れの特色も実施しなくてもよく、場合によっては、記載された特色の１つ又は複数は、さらなる実施形態を実現するために実施されてもよい。従って、上述の説明及び図面は、ほんの一例である。
【００９７】
本明細書に記載の技術の上記の実施形態は、数多くのやり方の何れかで実施することができる。例えば、実施形態は、ハードウェア、ソフトウェア、又はそれらの組み合わせを用いて実施されてもよい。ソフトウェアで実施される場合には、ソフトウェアコードは、単一のコンピュータで提供されようと、複数のコンピュータ間で分散されようと、任意の適切なプロセッサ又はプロセッサの一群上で実行することができる。このようなプロセッサは、ＣＰＵチップ、ＧＰＵチップ、マイクロプロセッサ、マイクロコントローラ、又はコプロセッサなどの名称で、当該分野において知られている市販の集積回路コンポーネントを包含する集積回路コンポーネント内に１つ又は複数のプロセッサを備えた集積回路として実施されてもよい。代替的に、プロセッサは、ＡＳＩＣなどのカスタム回路、又はプログラム可能論理デバイスを構成することによって得られるセミカスタム回路において実施されてもよい。さらに別の代替形態として、プロセッサは、市販、セミカスタム、又はカスタムにかかわらず、より大きな回路又は半導体デバイスの一部でもよい。ある特定の例として、一部の市販のマイクロプロセッサは、複数のコアを、それらのコアの１つ又はサブセットがプロセッサを形成し得るように有する。しかしながら、プロセッサは、任意の適切なフォーマットの回路を用いて実施されてもよい。
【００９８】
さらに、ラックマウント型コンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、又はタブレットコンピュータなどの幾つかの形の何れかで、コンピュータを具現化することができることを理解されたい。加えて、コンピュータは、携帯型情報端末（ＰＤＡ）、スマートフォン、又はその他の適切な携帯又は固定電子デバイスを包含する、一般にコンピュータと見なされないが、適切な処理能力を備えたデバイスに埋め込まれてもよい。
【００９９】
また、コンピュータは、１つ又は複数の入力及び出力デバイスを有してもよい。これらのデバイスは、中でも、ユーザインタフェースを与えるために使用することができる。ユーザインタフェースを提供するために使用することができる出力デバイスの例は、出力の視覚的表現のためのプリンタ又はディスプレイスクリーン、及び出力の可聴表現のためのスピーカ又は他の音発生デバイスを包含する。ユーザインタフェースに使用することができる入力デバイスの例は、キーボード、及びマウス、タッチパッド、及びデジタイジングタブレットなどのポインティングデバイスを包含する。別の例として、コンピュータは、音声認識を用いて、又は他の可聴フォーマットで、入力情報を受信してもよい。
【０１００】
このようなコンピュータは、企業ネットワーク又はインターネットなどのローカルエリアネットワーク又は広域ネットワークとして包含する、任意の適切な形の１つ又は複数のネットワークによって相互接続されてもよい。このようなネットワークは、任意の適切な技術に基づいてもよく、任意の適切なプロトコルに従って動作してもよく、無線ネットワーク、有線ネットワーク、又は光ファイバネットワークを包含してもよい。
【０１０１】
また、本明細書に概略が説明された様々な方法又はプロセスは、各種オペレーティングシステム又はプラットフォームの何れか１つを採用する１つ又は複数のプロセッサ上で実行可能なソフトウェアとして符号化されてもよい。加えて、このようなソフトウェアは、幾つかの適切なプログラミング言語及び／又はプログラミング又はスクリプト作成ツールの何れかを用いて書かれてもよく、フレームワーク又は仮想機械上で実行される実行可能な機械語コード又は中間コードとしてコンパイルされてもよい。
【０１０２】
この点において、本発明は、１つ又は複数のコンピュータ又は他のプロセッサ上で実行された場合に、上述の本発明の様々な実施形態を実施する方法を行う１つ又は複数のプログラムを用いて符号化されるコンピュータ可読ストレージ媒体（又は複数のコンピュータ可読媒体）（例えば、コンピュータメモリ、１つ又は複数のフロッピーディスク、コンパクトディスク（ＣＤ）、光ディスク、デジタルビデオディスク（ＤＶＤ）、磁気テープ、フラッシュメモリ、フィールドプログラマブルゲートアレイ又は他の半導体デバイスの回路構成、又は他の有形コンピュータストレージ媒体）として具現化されてもよい。上述の例から明らかなように、コンピュータ可読ストレージ媒体は、コンピュータ実行可能命令を非一時的形態で提供するのに十分な時間の間、情報を保持することができる。このような１つ又は複数のコンピュータ可読ストレージ媒体は、それに保存された１つ又は複数のプログラムが、１つ又は複数の異なるコンピュータ又は他のプロセッサ上にロードされて、上述のような本発明の様々な局面を実施することができるように可搬型でもよい。本明細書では、「コンピュータ可読ストレージ媒体」という用語は、製造物（すなわち、製品）又は機械であると見なすことができる非一時的コンピュータ可読媒体のみを含む。代替的又は追加的に、本発明は、伝搬信号などのコンピュータ可読ストレージ媒体以外のコンピュータ可読媒体として具現化されてもよい。
【０１０３】
「プログラム」又は「ソフトウェア」という用語は、上述のような本発明の様々な局面を実施するためのコンピュータ又は他のプロセッサをプログラムするために用いることができる、あらゆる種類のコンピュータコード又は１組のコンピュータ実行可能命令を指す包括的な意味で、本明細書において使用される。加えて、本実施形態の１つの局面に従って、実行された場合に本発明の方法を行う１つ又は複数のコンピュータプログラムは、単一のコンピュータ又はプロセッサに存在する必要はなく、本発明の様々な局面を実施するための幾つかの異なるコンピュータ又はプロセッサ間で、モジュール方式で分散されてもよい。
【０１０４】
コンピュータ実行可能命令は、１つ又は複数のコンピュータ又は他のデバイスによって実行される、プログラムモジュールなどの多くの形態のものでよい。一般に、プログラムモジュールは、特定のタスクを行う、又は特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを包含する。一般的に、プログラムモジュールの機能性は、様々な実施形態において、要望通りに組み合わせられてもよく、又は分散されてもよい。
【０１０５】
また、データ構造は、任意の適切な形で、コンピュータ可読媒体に保存されてもよい。図示を簡単にするために、データ構造は、データ構造内の場所によって関連したフィールドを有するように示されてもよい。このような関係は、同様に、フィールドの保存を、フィールド間の関係を伝達するコンピュータ可読媒体内の場所に割り当てることによって達成されてもよい。しかしながら、ポインタ、タグ、又はデータ要素間で関係を確立する他の機構を利用することを包含する、任意の適切な機構を用いて、データ構造のフィールド内の情報間の関係を確立してもよい。
【０１０６】
本発明の様々な局面は、単独で、組み合わせて、又は上記に記載された実施形態で具体的に述べられていない各種の配置で用いられてもよく、従って、それの詳細な適用及び上記の説明に記載された、又は図面に図示されたコンポーネントの配置が限定されない。例えば、ある実施形態に記載された局面は、他の実施形態に記載された局面とどのように組み合わせられてもよい。
【０１０７】
また、本発明は、方法（その一例が、提供済みである）として具現化されてもよい。この方法の一部として行われるアクトは、任意の適切なやり方で順序付けられてもよい。従って、例示的な実施形態において順次的なアクトとして示されるが、幾つかのアクトを同時に行うことを包含してもよい、図示とは異なる順序でアクトが行われる実施形態を構築することができる。
【０１０８】
さらに、幾つかの行為は、「ユーザ」によって行われると記載される。「ユーザ」は、単一の個人である必要はないこと、及び幾つかの実施形態では、「ユーザ」に起因する行為は、複数の個人の一団及び／又はコンピュータ支援ツール又は他の機構と組み合わせた個人によって行われてもよいことが理解されるものとする。
【０１０９】
クレーム中のクレーム要素を修飾する「第１の」、「第２の」、「第３の」などの順序を示す用語の使用は、それだけでは、どのような優先度、先行性、又はあるクレーム要素の別のクレーム要素よりも早い順序、又は方法のアクトが行われる時間的順序も含意せず、単に、ある特定の名称を持つあるクレーム要素を、同じ名称（順序を示す用語の使用を別にすれば）を持つ別の要素と区別するためのラベルとして使用されて、クレーム要素が区別される。
【０１１０】
また、本明細書で使用される表現及び専門用語は、説明を目的とするものであり、限定と見なされるものではない。本明細書における、「包含する（including）」、「含む（comprising）」、又は「有する（having）」、「含有する（containing）」、「伴う（involving）」、及びそれらの変形形態の使用は、その後にリストされる項目及びそれらの均等物、並びに追加の項目を含むことが意図される。
【図１Ａ】
2019504401.tif 000003
【図１Ｂ】
2019504401.tif 000004
【図１Ｃ】
2019504401.tif 000005
【図１Ｄ】
2019504401.tif 000006
【図２】
2019504401.tif 000007
【図３Ａ】
2019504401.tif 000008
【図３Ｂ】
2019504401.tif 000009
【図３Ｃ】
2019504401.tif 000010
【図４Ａ】
2019504401.tif 000011
【図４Ｂ】
2019504401.tif 000012
【図４Ｃ】
2019504401.tif 000013
【図４Ｄ】
2019504401.tif 000014
【図４Ｅ】
2019504401.tif 000015
【図４Ｆ】
2019504401.tif 000016
【図５】
2019504401.tif 000017
【図６】
2019504401.tif 000018
【図７】
2019504401.tif 000019
【国際調査報告】
2019504401.tif 000020
2019504401.tif 000021
2019504401.tif 000022