(57)【要約】  時刻−日付フィールドを有さない低忠実度デバイスのために、本発明は、リモートプロパティ値に対応する時刻−日付情報（３５０）を標準のフォーマット（３０５）でフォーマットすること、特定すること、およびリモートデバイス上に格納することを可能にする。時刻−日付情報は、いくつかのデバイスが解析することができ、プロパティ値間の競合を解決する際に使用される。他の典型的な実施形態は、プロパティ値のリモート表現（３２０）を同一のプロパティ値に関連付けられたローカル表現と比較することにより、リモートデバイスとローカルマシンの間における前回の同期以来、プロパティに関する値がリモートデバイス上で変化しているかどうかを判定することを可能にする。さらに別の典型的な例は、同期値間の競合を解決する際に使用される時刻−日付情報が割り当てられるべきプロパティ値を選択することにより、メモリリソースを保存することを可能にする。プロパティ値は、例えば、リモートデバイスの利用可能なリソースに基づいて、または履歴情報に基づいて選択されることが可能である。
2007535757.tif 000002
【特許請求の範囲】
【請求項１】
デバイス間でデータを同期させることができる、対応する時刻−日付フィールドなしでデータベースの中にプロパティを格納するデバイスを有する分散コンピューティングシステムにおいて、時刻−日付情報を前記データベース内のプロパティ値に関連付ける方法であって、
対応する時刻−日付フィールドなしでプロパティを格納するリモートデータベース内の１つまたは複数のリモートプロパティ値に対応する時刻−日付情報を特定する動作と、
前記特定された時刻−日付情報を前記分散コンピューティングシステム内の１つまたは複数のデバイスが解析できる標準のフォーマットでフォーマットする動作と、
前記１つまたは複数のリモートプロパティ値に関連付けられたフィールドの中に格納するために、前記フォーマットされた時刻−日付情報を前記リモートデータベースに送信する動作と
を備えることを特徴とする方法。
【請求項２】
前記標準のフォーマットは、ユニフォームリソースアイデンティファイア（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）であることを特徴とする請求項１に記載の方法。
【請求項３】
前記ユニフォームリソースアイデンティファイアは、プロパティ識別子、前記１つまたは複数のプロパティ値の１つの表現、および前記１つまたは複数のプロパティ値の前記１つに対応する前記時刻−日付情報の表現をそれぞれが含むセグメントに解析されるユニフォームリソースロケータであることを特徴とする請求項２に記載の方法。
【請求項４】
前記１つまたは複数のプロパティ値の前記１つの前記表現は、前記１つまたは複数のプロパティ値の前記１つのハッシュであることを特徴とする請求項３に記載の方法。
【請求項５】
前記１つまたは複数のプロパティ値の前記１つに対応する前記時刻−日付情報の前記表現は、秒単位まで格納される、分単位まで格納される、または時間帯とは独立のフォーマットで格納される前記時刻−日付情報の１６進数の１つまたは複数であることを特徴とする請求項３に記載の方法。
【請求項６】
前記１つまたは複数のリモートプロパティ値に関連付けられた前記フィールドは、メモフィールドであることを特徴とする請求項１に記載の方法。
【請求項７】
前記１つまたは複数のリモートプロパティ値に関連付けられた前記フィールドは、未使用のフィールドであることを特徴とする請求項１に記載の方法。
【請求項８】
前記１つまたは複数のプロパティ値は、総数の関連するプロパティ値の部分集合であり、前記１つまたは複数のプロパティ値は、前記特定された時刻−日付情報が、前記時刻−日付情報に関連する値に基づいて標準のフォーマットでフォーマットされるように選択されることを特徴とする請求項１に記載の方法。
【請求項９】
選択されなかった前記総数のプロパティ値からのプロパティ値の残りの部分は、プロパティ値の前記残りの部分に関する時刻−日付情報に基づく関連する時刻−日付情報を有する結合された表現値により、前記１つまたは複数のプロパティ値に関連付けられた前記フィールドの中で表されることを特徴とする請求項８に記載の方法。
【請求項１０】
前記１つまたは複数のプロパティ値に関する前記時刻−日付情報に関連する前記値は、最新の時刻−日付値であり、前記結合された表現値に関連する前記時刻−日付情報は、プロパティ値の前記残りの部分に関連付けられた最新の時刻−日付値または最古の時刻−日付値の１つまたは複数であることを特徴とする請求項９に記載の方法。
【請求項１１】
前記結合された表現は、プロパティ値の前記残りの部分のハッシュであることを特徴とする請求項１０に記載の方法。
【請求項１２】
デバイス間でデータを同期させることができる、対応する時刻−日付フィールドなしでデータベースの中にプロパティを格納するデバイスを有する分散コンピューティングシステムにおいて、時刻−日付情報を前記データベース内のプロパティ値に関連付ける方法であって、
前記分散コンピューティングシステム内の１つまたは複数のデバイスが解析できる標準のフォーマットでフォーマットされた、前記１つまたは複数のプロパティ値に関連付けられたフォーマット済みの時刻−日付情報を受信する動作と、
前記フォーマット済みの時刻−日付情報を前記１つまたは複数のプロパティ値に関連付けられたデータベースフィールドの中に格納して、前記フォーマット済みの時刻−日付情報を利用して、前記１つまたは複数のプロパティ値に関わるデータ競合を解決することができるようにする動作と
を備えることを特徴とする方法。
【請求項１３】
前記１つまたは複数のプロパティ値の少なくとも１つを変更する動作と、
前記フォーマット済みの時刻−日付情報を前記１つまたは複数のプロパティ値に関連付けられているとして特定する動作と、
前記１つまたは複数のプロパティ値の前記変更された少なくとも１つに従って、前記データベースフィールドの中の前記フォーマット済みの時刻−日付情報を更新する動作と
をさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記フォーマット済みの時刻−日付情報は、リモートデバイス上で受信され、格納され、前記リモートデバイスのユーザが、前記変更を行っていることを特徴とする請求項１３に記載の方法。
【請求項１５】
前記フォーマット済みの時刻−日付情報は、リモートデバイス上で受信され、格納され、ローカルマシンのユーザが、前記変更を行っており、前記ローカルマシンは、対応する時刻−日付フィールドを有するデータベースの中に、前記１つまたは複数のプロパティ値に関連付けられたフォーマットされていない時刻−日付情報プロパティを格納していることを特徴とする請求項１３に記載の方法。
【請求項１６】
前記標準のフォーマットは、ユニフォームリソースアイデンティファイアであることを特徴とする請求項１２に記載の方法。
【請求項１７】
前記ユニフォームリソースアイデンティファイアは、プロパティ識別子、前記１つまたは複数のプロパティ値の１つの表現、および前記１つまたは複数のプロパティ値の前記１つに対応する前記時刻−日付情報の表現をそれぞれが含むセグメントに解析されるユニフォームリソースロケータであることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記１つまたは複数のプロパティ値の前記１つの前記表現は、前記１つまたは複数のプロパティ値の前記１つのハッシュであることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記１つまたは複数のプロパティ値の前記１つに対応する前記時刻−日付情報の前記表現は、秒単位まで格納される、分単位まで格納される、または時間帯とは独立のフォーマットで格納される前記時刻−日付情報の１６進数の１つまたは複数であることを特徴とする請求項１８に記載の方法。
【請求項２０】
前記１つまたは複数のリモートプロパティ値に関連付けられた前記フィールドは、メモフィールドであることを特徴とすることを特徴とする請求項１２に記載の方法。
【請求項２１】
前記１つまたは複数のリモートプロパティ値に関連付けられた前記フィールドは、未使用のフィールドであることを特徴とする請求項１２に記載の方法。
【請求項２２】
前記１つまたは複数のプロパティ値は、総数の関連するプロパティ値の部分集合であり、前記１つまたは複数のプロパティ値は、前記特定された時刻−日付情報が、前記時刻−日付情報に関連する値に基づいて標準のフォーマットでフォーマットされるように選択されることを特徴とする請求項１２に記載の方法。
【請求項２３】
選択されなかった前記総数のプロパティ値からのプロパティ値の残りの部分は、プロパティ値の前記残りの部分に関する時刻−日付情報に基づく関連する時刻−日付情報を有する結合された表現値により、前記１つまたは複数のプロパティ値に関連付けられた前記フィールドの中で表されることを特徴とする請求項２２に記載の方法。
【請求項２４】
前記１つまたは複数のプロパティ値に関する前記時刻−日付情報に関連する前記値は、最新の時刻−日付値であり、前記結合された表現値に関連する前記時刻−日付情報は、プロパティ値の前記残りの部分に関連付けられた最新の時刻−日付値または最古の時刻−日付値の１つまたは複数であることを特徴とする請求項２３に記載の方法。
【請求項２５】
前記結合された表現は、プロパティ値の前記残りの部分のハッシュであることを特徴とする請求項２４に記載の方法。
【請求項２６】
デバイス間でデータを同期させることができる、対応する時刻−日付フィールドなしでデータベースの中にプロパティを格納するデバイスを有する分散コンピューティングシステムにおいて、前記分散コンピューティングシステム内のデバイス間におけるデータ競合を解決する方法であって、
対応する時刻−日付フィールドを有さないデータベースからリモートプロパティに関するリモートプロパティ値、および前記分散コンピューティングシステム内の１つまたは複数のデバイスが解析できる標準のフォーマットでフォーマットされた対応するリモート時刻−日付情報を受信する動作と、
前記リモートプロパティ値と対応するローカルプロパティ値の間の競合を検出する動作と、
前記標準のフォーマットに従って前記リモート時刻−日付情報を解析して、前記リモートプロパティ値がいつ変更されたかを示すリモート時刻−日付を特定する動作と、
前記リモート時刻−日付を、前記１つまたは複数のローカルプロパティ値がいつ変更されたかを示すローカル時刻−日付と比較する動作と、
前記比較の結果に基づいて前記競合を解決する動作と
を備えることを特徴とする方法。
【請求項２７】
前記標準のフォーマットは、ユニフォームリソースアイデンティファイアであることを特徴とする請求項２６に記載の方法。
【請求項２８】
前記ユニフォームリソースアイデンティファイアは、セグメントに解析されるユニフォームリソースロケータであり、前記セグメントの１つは、前記リモートプロパティ値に対応するプロパティＩＤ、前記リモートプロパティ値のリモート表現、および前記リモートプロパティ値に対応する前記時刻−日付情報の表現を含むことを特徴とする請求項２７に記載の方法。
【請求項２９】
前記リモートプロパティ値の前記リモート表現は、前記リモートプロパティ値のハッシュであることを特徴とする請求項２８に記載の方法。
【請求項３０】
前記リモートプロパティ値に対応する前記時刻−日付情報の前記表現は、秒単位まで格納される、分単位まで格納される、または時間帯とは独立のフォーマットで格納される前記時刻−日付情報の１６進数の１つまたは複数であることを特徴とする請求項２８に記載の方法。
【請求項３１】
前記リモートプロパティ値から前記リモートプロパティのローカル表現を生成する動作と、
前記リモート表現を前記ローカル表現と比較する動作と、
前記比較に基づき、前記リモート表現が生成された後、前記リモートプロパティ値が変化していないと判定する動作と
をさらに備えることを特徴とする請求項２８に記載の方法。
【請求項３２】
デバイス間でデータを同期させることができる、対応する時刻−日付フィールドなしでデータベースの中にプロパティを格納するデバイスを有する分散コンピューティングシステムにおいて、前記分散コンピューティングシステム内のデバイス間におけるデータ競合を解決する方法であって、
対応する時刻−日付フィールドを有さないデータベースからリモートプロパティ値、および前記分散コンピューティングシステム内の１つまたは複数のデバイスが解析できる標準のフォーマットでフォーマットされた対応するリモート時刻−日付情報を受信するステップと、
前記リモートプロパティ値と対応するローカルプロパティ値の間の競合を検出するステップ動作と、
前記リモート時刻−日付情報を利用して、ローカルデバイスとリモートデバイスの間で同期をとるのに適切なプロパティ値を選択するためのステップと
を備えることを特徴とする方法。
【請求項３３】
前記標準のフォーマットは、ユニフォームリソースアイデンティファイアであることを特徴とする請求項３２に記載の方法。
【請求項３４】
前記ユニフォームリソースアイデンティファイアは、セグメントに解析されるユニフォームリソースロケータであり、前記セグメントの１つは、前記リモートプロパティ値に対応するプロパティＩＤ、前記リモートプロパティ値のリモート表現、および前記リモートプロパティ値に対応する前記時刻−日付情報の表現を含むことを特徴とする請求項３３に記載の方法。
【請求項３５】
対応する時刻−日付フィールドなしでデータベースの中にプロパティを格納するデバイスを有する、デバイス間でデータを同期させることができる分散コンピューティングシステムにおいて使用するための、前記分散コンピューティングシステム内のデバイス間におけるデータ競合を解決する方法を実施するためのコンピュータプログラム製品であって、
プロセッサによって実行された場合、
対応する時刻−日付フィールドを有さないデータベースからリモートプロパティに関するリモートプロパティ値、および前記分散コンピューティングシステム内の１つまたは複数のデバイスが解析できる標準のフォーマットでフォーマットされた対応するリモート時刻−日付情報を受信するステップと、
前記リモートプロパティ値と対応するローカルプロパティ値の間の競合を検出すること、
前記標準のフォーマットに従って前記リモート時刻−日付情報を解析して、前記リモートプロパティ値がいつ変更されたかを示すリモート時刻−日付を特定するステップと、
前記リモート時刻−日付を、前記１つまたは複数のローカルプロパティ値がいつ変更されたかを示すローカル時刻−日付と比較するステップと、
前記比較の結果に基づいて前記競合を解決するステップと
を前記分散コンピューティングシステムに実行させることができるコンピュータ実行可能命令を格納している１つまたは複数のコンピュータ可読媒体を含むことを特徴とする製品。
【請求項３６】
前記標準のフォーマットは、ユニフォームリソースアイデンティファイアであることを特徴とする請求項３５に記載のコンピュータプログラム製品。
【請求項３７】
前記ユニフォームリソースアイデンティファイアは、セグメントに解析されるユニフォームリソースロケータであり、前記セグメントの１つは、前記リモートプロパティ値に対応するプロパティＩＤ、前記リモートプロパティ値のリモート表現、および前記リモートプロパティ値に対応する前記時刻−日付情報の表現を含むことを特徴とする請求項３６に記載のコンピュータプログラム製品。
【請求項３８】
前記リモートプロパティ値の前記リモート表現は、前記リモートプロパティ値のハッシュであることを特徴とする請求項３７に記載の方法。
【請求項３９】
前記リモートプロパティ値に対応する時刻−日付情報の前記表現は、前記時刻−日付情報の１６進数であることを特徴とする請求項３８に記載の方法。
【請求項４０】
前記リモートプロパティ値から前記リモートプロパティのローカル表現を生成する動作と、
前記リモート表現を前記ローカル表現と比較する動作と、
前記比較に基づき、前記リモート表現が生成された後、前記リモートプロパティ値が変化していないと判定する動作とをさらに備えることを特徴とする請求項３９に記載の方法。
【請求項４１】
デバイス間でデータを同期させることができる分散コンピューティングシステムにおいて、リモートデバイス上のプロパティに関する値が、前記リモートデバイスとローカルマシンの間における前記プロパティの前回の同期以来、変化しているかどうかを判定する方法であって、
リモートプロパティに関する現在の値、および前記リモートプロパティの以前の値に関するリモート表現を受信する動作と、
前記リモートプロパティに関する前記現在の値から前記リモートプロパティのローカル表現を生成する動作と、
前記リモート表現を前記ローカル表現と比較する動作と、
前記比較に基づき、前記リモート表現が生成された後、前記リモートプロパティの前記以前の値が変更されていると判定する動作と
を備えることを特徴とする方法。
【請求項４２】
前記リモート表現は、前記リモートプロパティの前記以前の値のハッシュであり、前記ローカル表現は、前記リモートプロパティに関する前記現在の値のハッシュであることを特徴とする請求項４１に記載の方法。
【請求項４３】
前記リモートデバイスは、対応する時刻−日付フィールドなしでデータベースの中にプロパティを格納する低忠実度デバイスであることを特徴とする請求項４２に記載の方法。
【請求項４４】
前記リモートプロパティに関連付けられた時刻−日付情報のリモート表現を受信する動作と、
前記リモートプロパティの前記以前の値が変更されているという前記判定に基づき、時刻−日付情報の前記リモート表現が信頼できない可能性があると判定する動作と
をさらに備えることを特徴とする請求項４１に記載の方法。
【請求項４５】
前記時刻−日付情報の前記リモート表現は、秒単位まで格納される、分単位まで格納される、または時間帯とは独立のフォーマットで格納される１６進数の１つまたは複数であることを特徴とする請求項４４に記載の方法。
【請求項４６】
前記現在の値と前記リモートプロパティに関連付けられたローカル値の間で競合が存在し、時刻−日付情報の前記リモート表現は、前記競合を解決するために使用されないことを特徴とする請求項４４に記載の方法。
【請求項４７】
ローカル値を使用して前記現在の値が置き換えられ、前記リモート表現は、更新されたリモート表現で置き換えられることを特徴とする請求項４１に記載の方法。
【請求項４８】
前記リモート表現は、前記リモートプロパティの前記以前の値のハッシュであり、前記ローカル表現は、前記リモートプロパティに関する前記現在の値のハッシュであり、前記更新されたリモート表現は、前記ローカル値のハッシュであることを特徴とする請求項４７に記載の方法。
【請求項４９】
デバイス間でデータを同期させることができる分散コンピューティングシステムにおいて、リモートデバイス上のプロパティに関する値が、前記リモートデバイスとローカルマシンの間における前記プロパティの前回の同期以来、変化しているかどうかを判定する方法であって、
リモートプロパティに関するリモート値、および前記リモートプロパティの前記リモート値に関するリモート表現を受信する動作と、
前記リモートプロパティに関する前記リモート値から前記リモートプロパティのローカル表現を生成する動作と、
前記リモート表現を前記ローカル表現と比較する動作と、
前記比較に基づき、前記リモート表現が生成された後、前記リモートプロパティの前記リモート値が変化していないと判定する動作と
を備えることを特徴とする方法。
【請求項５０】
前記リモート表現は、前記リモート値のハッシュであり、前記ローカル表現は、前記リモート値のハッシュであることを特徴とする請求項４９に記載の方法。
【請求項５１】
前記リモートデバイスは、対応する時刻−日付フィールドなしでデータベースの中にプロパティを格納する低忠実度デバイスであることを特徴とする請求項５０に記載の方法。
【請求項５２】
前記リモート値と前記リモートプロパティに関連付けられたローカル値の間で競合が存在すると判定する動作と、
前記リモートプロパティに関連付けられた時刻−日付情報のリモート表現を受信する動作と、
前記リモートプロパティの前記リモート値が変化していないという前記判定に基づき、時刻−日付情報の前記リモート表現を時刻−日付情報のローカル表現と比較し、時刻−日付情報の前記リモート表現、および時刻−日付情報の前記ローカル表現は、前記リモート値および前記ローカル値がいつ生成されたかをそれぞれ示す動作と、
時刻−日付の前記リモート表現と時刻−日付情報の前記ローカル表現の前記比較の結果に基づき、前記競合を解決する動作と
をさらに備えることを特徴とする請求項４９に記載の方法。
【請求項５３】
前記時刻−日付情報の前記リモート表現は、秒単位まで格納される、分単位まで格納される、または時間帯とは独立のフォーマットで格納される１６進数の１つまたは複数であることを特徴とする請求項５２に記載の方法。
【請求項５４】
ローカル値を使用して前記リモート値が置き換えられ、前記リモート表現は、更新されたリモート表現で置き換えられることを特徴とする請求項５２に記載の方法。
【請求項５５】
前記リモート表現は、前記リモートプロパティの前記以前の値のハッシュであり、前記ローカル表現は、前記リモートプロパティに関する前記現在の値のハッシュであり、前記更新されたリモート表現は、前記ローカル値のハッシュであることを特徴とする請求項５４に記載の方法。
【請求項５６】
デバイス間でデータを同期させることができる分散コンピューティングシステムにおいて、リモートデバイス上のプロパティに関する値が、前記リモートデバイスとローカルマシンの間における前記プロパティの前回の同期以来、変化しているかどうかを判定する方法を実施するためのコンピュータプログラム製品であって、
プロセッサによって実行された場合、
リモートプロパティに関する現在の値、および前記リモートプロパティの以前の値に関するリモート表現を受信するステップと、
前記リモートプロパティに関する前記現在の値から前記リモートプロパティのローカル表現を生成するステップと、
前記リモート表現を前記ローカル表現と比較するステップと、
前記比較に基づき、前記リモート表現が生成された後、前記リモートプロパティの前記以前の値が変更されていると判定するステップと
を前記分散コンピューティングシステムに実行させることができるコンピュータ実行可能命令を格納している１つまたは複数のコンピュータ可読媒体を含むことを特徴とする製品。
【請求項５７】
前記リモート表現は、前記リモートプロパティの前記以前の値のハッシュであり、前記ローカル表現は、前記リモートプロパティに関する前記現在の値のハッシュであることを特徴とする請求項５６に記載のコンピュータプログラム製品。
【請求項５８】
前記リモートデバイスは、対応する時刻−日付フィールドなしでデータベースの中にプロパティを格納する低忠実度デバイスであることを特徴とする請求項５７に記載のコンピュータプログラム製品。
【請求項５９】
前記リモートプロパティに関連付けられた時刻−日付情報のリモート表現を受信するステップと、
前記リモートプロパティの前記以前の値が変更されているという前記判定に基づき、時刻−日付情報の前記リモート表現が信頼できない可能性があると判定するステップと
を前記分散コンピューティングシステムに実行させることができるコンピュータ実行可能命令をさらに含むことを特徴とする請求項５６に記載のコンピュータプログラム製品。
【請求項６０】
前記時刻−日付情報の前記リモート表現は、秒単位まで格納される、分単位まで格納される、または時間帯とは独立のフォーマットで格納される１６進数の１つまたは複数であることを特徴とする請求項５９に記載のコンピュータプログラム製品。
【請求項６１】
前記現在の値と前記リモートプロパティに関連付けられたローカル値の間で競合が存在し、時刻−日付情報の前記リモート表現は、前記競合を解決するために使用されないことを特徴とする請求項５９に記載のコンピュータプログラム製品。
【請求項６２】
ローカル値を使用して前記現在の値が置き換えられ、前記リモート表現は、更新されたリモート表現で置き換えられることを特徴とする請求項５６に記載のコンピュータプログラム製品。
【請求項６３】
前記リモート表現は、前記リモートプロパティの前記以前の値のハッシュであり、前記ローカル表現は、前記リモートプロパティに関する前記現在の値のハッシュであり、前記更新されたリモート表現は、前記ローカル値のハッシュであることを特徴とする請求項６２に記載のコンピュータプログラム製品。
【請求項６４】
デバイス間でデータを同期させることができる分散コンピューティングシステムにおいて、リモートデバイス上のプロパティに関する値が、前記リモートデバイスとローカルマシンの間における前記プロパティの前回の同期以来、変化しているかどうかを判定する方法を実施するためのコンピュータプログラム製品であって、
プロセッサによって実行された場合、
リモートプロパティに関するリモート値、および前記リモートプロパティの前記リモート値に関するリモート表現を受信するステップと、
前記リモートプロパティに関する前記リモート値から前記リモートプロパティのローカル表現を生成するステップと、
前記リモート表現を前記ローカル表現と比較するステップと、
前記比較に基づき、前記リモート表現が生成された後、前記リモートプロパティの前記リモート値が変化していないと判定するステップと
を前記分散コンピューティングシステムに実行させることができるコンピュータ実行可能命令を格納している１つまたは複数のコンピュータ可読媒体を含むことを特徴とする製品。
【請求項６５】
前記リモート表現は、前記リモート値のハッシュであり、前記ローカル表現は、前記リモート値のハッシュであることを特徴とする請求項６４に記載のコンピュータプログラム製品。
【請求項６６】
前記リモートデバイスは、対応する時刻−日付フィールドなしでデータベースの中にプロパティを格納する低忠実度デバイスであることを特徴とする請求項６５に記載のコンピュータプログラム製品。
【請求項６７】
前記リモート値と前記リモートプロパティに関連付けられたローカル値の間で競合が存在すると判定するステップと、
前記リモートプロパティに関連付けられた時刻−日付情報のリモート表現を受信するステップと、
前記リモートプロパティの前記リモート値が変化していないという前記判定に基づき、時刻−日付情報の前記リモート表現を時刻−日付情報のローカル表現と比較し、時刻−日付情報の前記リモート表現、および時刻−日付情報の前記ローカル表現は、前記リモート値および前記ローカル値がいつ生成されたかをそれぞれ示すステップと、
時刻−日付の前記リモート表現と時刻−日付情報の前記ローカル表現の前記比較の結果に基づき、前記競合を解決するステップと
を前記分散コンピューティングシステムに実行させることができるコンピュータ実行可能命令をさらに含むことを特徴とする請求項６４に記載のコンピュータプログラム製品。
【請求項６８】
前記時刻−日付情報の前記リモート表現は、秒単位まで格納される、分単位まで格納される、または時間帯とは独立のフォーマットで格納される１６進数の１つまたは複数であることを特徴とする請求項６７に記載のコンピュータプログラム製品。
【請求項６９】
前記ローカル値を使用して前記リモート値が置き換えられ、前記リモート表現は、更新されたリモート表現で置き換えられることを特徴とする請求項６７に記載のコンピュータプログラム製品。
【請求項７０】
前記リモート表現は、前記リモートプロパティの前記以前の値のハッシュであり、前記ローカル表現は、前記リモートプロパティに関する前記現在の値のハッシュであり、前記更新されたリモート表現は、前記ローカル値のハッシュであることを特徴とする請求項７０に記載のコンピュータプログラム製品。
【請求項７１】
デバイス間でデータを同期させることができる分散コンピューティングシステムにおいて、同期値間の競合を解決する際に使用される時刻−日付情報が割り当てられるべきプロパティ値を選択することにより、メモリリソースを保存する方法であって、
リモートデバイスから複数のプロパティ値を受信する動作と、
前記リモートデバイスの前記利用可能なリソースに基づき、前記複数のプロパティ値のなかからプロパティ値の限られた集合を選択する動作と、
前記複数のプロパティ値に対応する複数の時刻−日付情報から時刻−日付情報の集合を特定する動作であって、
前記限られた集合内の前記プロパティ値のそれぞれは、時刻−日付情報の前記集合の異なる部分に対応して、前記限られた集合内の前記プロパティ値のそれぞれが、ユーザによって前回、いつ変更されたかを示す動作と、
時刻−日付情報の前記異なる部分を前記リモートデバイスのリモートデータベースの中に格納する動作と
を備えることを特徴とする方法。
【請求項７２】
前記複数のプロパティ値からの１つまたは複数の残りのプロパティ値に関する前記複数の時刻−日付情報から、時刻−日付情報の一部分を特定する動作であって、前記１つまたは複数の残りのプロパティ値は、プロパティ値の前記限られた集合に入っておらず、時刻−日付情報の前記一部分は、前記１つまたは複数の残りのプロパティ値の少なくとも１つが、ユーザによって変更された時点に対応する、時刻−日付情報の一部分を特定する動作作と、
時刻−日付情報の前記特定された部分を、時刻−日付情報の前記特定された部分が前記１つまたは複数の残りのプロパティ値のすべてに対応するように、前記リモートデータベース内の１つの場所に格納する動作と
をさらに備えることを特徴とする請求項７１に記載の方法。
【請求項７３】
前記１つまたは複数の残りのプロパティ値は、結合された表現値で表されることを特徴とする請求項７２に記載の方法。
【請求項７４】
前記結合された表現値は、プロパティ値の前記残りの部分のハッシュであることを特徴とする請求項７３に記載の方法。
【請求項７５】
前記１つまたは複数の残りのプロパティ値に関する時刻−日付情報の前記特定された部分、最新の時刻−日付値、最古の時刻−日付値、または該最新の時刻−日付値と該最古の時刻−日付値の両方であることを特徴とする請求項７３に記載の方法。
【請求項７６】
前記１つまたは複数の残りのプロパティ値に関する時刻−日付情報の前記一部分は、秒単位まで格納される、分単位まで格納される、または時間帯とは独立のフォーマットで格納される１６進数の１つまたは複数であることを特徴とする請求項７５に記載の方法。
【請求項７７】
前記限られた集合内の前記プロパティ値のそれぞれは、前記対応するプロパティ値の表現として格納されることを特徴とする請求項７３に記載の方法。
【請求項７８】
前記対応するプロパティ値の前記表現は、前記対応するプロパティ値のハッシュであることを特徴とする請求項７７に記載の方法。
【請求項７９】
前記限られた集合内の前記プロパティ値のそれぞれは、前記対応するプロパティ値の表現として格納されることを特徴とする請求項７１に記載の方法。
【請求項８０】
前記対応するプロパティ値の前記表現は、前記対応するプロパティ値のハッシュであることを特徴とする請求項７９に記載の方法。
【請求項８１】
前記時刻−日付情報は、秒単位まで格納される、分単位まで格納される、または時間帯とは独立のフォーマットで格納される１６進数の１つまたは複数であることを特徴とする請求項７１に記載の方法。
【請求項８２】
前記利用可能なリソースは、限られたサイズのフィールドであることを特徴とする請求項７１に記載の方法。
【請求項８３】
プロパティ値の前記限られた集合の前記選択は、前記複数のプロパティ値の前記変更に関連する履歴情報にも基づくことを特徴とする請求項７１に記載の方法。
【請求項８４】
前記履歴情報は、前記複数のプロパティ値のそれぞれが変更される頻度であり、最も頻繁に変更されたプロパティ値群が選択されることを特徴とする請求項８３に記載の方法。
【請求項８５】
前記履歴情報は、前記複数のプロパティ値に関する時刻−日付情報であり、前記最も新しく変更されたプロパティ値群が選択されることを特徴とする請求項８３に記載の方法。
【請求項８６】
デバイス間でデータを同期させることができる分散コンピューティングシステムにおいて、同期値間の競合を解決する際に使用される時刻−日付情報が割り当てられるべきプロパティ値を選択することにより、メモリリソースを保存する方法を実施するためのコンピュータプログラム製品であって、
プロセッサによって実行された場合、
リモートデバイスから複数のプロパティ値を受信するステップと、
前記リモートデバイスの前記利用可能なリソースに基づき、前記複数のプロパティ値のなかからプロパティ値の限られた集合を選択するステップと、
前記複数のプロパティ値に対応する複数の時刻−日付情報から時刻−日付情報の集合を特定し、前記限られた集合内の前記プロパティ値のそれぞれは、時刻−日付情報の前記集合の異なる部分に対応して、前記限られた集合内の前記プロパティ値のそれぞれが、ユーザによって前回、いつ変更されたかを示すステップと、
時刻−日付情報の前記異なる部分を前記リモートデバイスのリモートデータベースの中に格納するステップと
を前記分散コンピューティングシステムに実行させることができるコンピュータ実行可能命令を格納している１つまたは複数のコンピュータ可読媒体を含むことを特徴とする製品。
【請求項８７】
前記複数のプロパティ値からの１つまたは複数の残りのプロパティ値に関する前記複数の時刻−日付情報から、時刻−日付情報の一部分を特定し、前記１つまたは複数の残りのプロパティ値は、プロパティ値の前記限られた集合に入っておらず、時刻−日付情報の前記一部分は、前記１つまたは複数の残りのプロパティ値の少なくとも１つが、ユーザによって変更された時点に対応するステップ、
時刻−日付情報の前記特定された部分を、時刻−日付情報の前記特定された部分が前記１つまたは複数の残りのプロパティ値のすべてに対応するように、前記リモートデータベース内の１つの場所に格納するステップと
を前記分散コンピューティングシステムに実行させることができるコンピュータ実行可能命令をさらに含むことを特徴とする請求項８６に記載のコンピュータプログラム製品。
【請求項８８】
前記１つまたは複数の残りのプロパティ値は、結合された表現値で表されることを特徴とする請求項８７に記載のコンピュータプログラム製品。
【請求項８９】
前記結合された表現値は、プロパティ値の前記残りの部分のハッシュであることを特徴とする請求項８８に記載のコンピュータプログラム製品。
【請求項９０】
前記１つまたは複数の残りのプロパティ値に関する時刻−日付情報の前記特定された部分、最新の時刻−日付値、最古の時刻−日付値、または該最新の時刻−日付値と該最古の時刻−日付値の両方であることを特徴とする請求項８８に記載のコンピュータプログラム製品。
【請求項９１】
前記１つまたは複数の残りのプロパティ値に関する時刻−日付情報の前記一部分は、秒単位まで格納される、分単位まで格納される、または時間帯とは独立のフォーマットで格納される１６進数の１つまたは複数であることを特徴とする請求項９０に記載のコンピュータプログラム製品。
【請求項９２】
前記限られた集合内の前記プロパティ値のそれぞれは、前記対応するプロパティ値の表現として格納されることを特徴とする請求項８８に記載のコンピュータプログラム製品。
【請求項９３】
前記対応するプロパティ値の前記表現は、前記対応するプロパティ値のハッシュであることを特徴とする請求項９２に記載のコンピュータプログラム製品。
【請求項９４】
前記限られた集合内の前記プロパティ値のそれぞれは、前記対応するプロパティ値の表現として格納されることを特徴とする請求項８６に記載のコンピュータプログラム製品。
【請求項９５】
前記対応するプロパティ値の前記表現は、前記対応するプロパティ値のハッシュであることを特徴とする請求項９４に記載のコンピュータプログラム製品。
【請求項９６】
前記時刻−日付情報は、秒単位まで格納される、分単位まで格納される、または時間帯とは独立のフォーマットで格納される１６進数の１つまたは複数であることを特徴とする請求項８６に記載のコンピュータプログラム製品。
【請求項９７】
前記利用可能なリソースは、限られたサイズのフィールドであることを特徴とする請求項８６に記載のコンピュータプログラム製品。
【請求項９８】
プロパティ値の前記限られた集合の前記選択は、前記複数のプロパティ値の前記変更に関連する履歴情報にも基づくことを特徴とする請求項８６に記載のコンピュータプログラム製品。
【請求項９９】
前記履歴情報は、前記複数のプロパティ値のそれぞれが変更される頻度であり、最も頻繁に変更されたプロパティ値群が選択されることを特徴とする請求項９８に記載のコンピュータプログラム製品。
【請求項１００】
前記履歴情報は、前記複数のプロパティ値に関する時刻−日付情報であり、前記最も新しく変更されたプロパティ値群が選択されることを特徴とする請求項９９に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、分散コンピューティングシステム内のデータを同期させることに関する。より詳細には、本発明は、以下を提供する。すなわち、（１）デバイスの１つがプロパティに対応する時刻−日付フィールドを有するデータベースを提供しない２つのデバイスの間で同期競合を解決する場合に、プロパティに関する時刻−日付情報を保持すること、（２）ローカルマシンとの前回の同期以来、リモート低忠実度デバイス（low fidelity device）上のプロパティ値が変化しているかどうかを判定すること、および（３）同期値間の競合を解決するために使用される、プロパティの部分集合に関する時刻−日付情報を制限することにより、メモリリソースを保存することである。
【背景技術】
【０００２】
デバイスのサイズがより小さくなり、値段が下がるにつれ、ラップトップ、ハンドヘルド、およびその他のポータブルコンピュータまたはコンピューティングデバイスの人気が高まっている。さらに、ポータブルコンピュータの動作速度および処理能力の進歩が、それらの人気を増大させている。多くのポータブルコンピュータは、アドレス帳、ゲーム、計算機などの複数のアプリケーションプログラムを格納することができる。アプリケーションプログラムは、製造中にポータブルコンピュータ内部に永久的にインストールすることができる（例えば、読み取り専用メモリ（ＲＯＭ）上に）。代替として、１つまたは複数のアプリケーションプログラムが、ポータブルコンピュータを購入した後、ユーザによってインストールされることが可能である。
【０００３】
そのようなコンピューティングデバイスの人気および計算能力が高まるにつれ、人々は、１つだけに留まらないコンピューティングデバイスを使用してデータおよびアプリケーションを格納することを始めている。多くの人々は、例えば、自分の通常のデスクトップコンピュータに加えてラップトップコンピュータをしばしば使用する。セルラー電話機、パーソナルデジタルアシスタント（ＰＤＡ）、インターネットサービスなどの他のデバイスも、データおよびアプリケーションを格納するために使用される。
【０００４】
それらのデバイスのそれぞれは、分散コンピューティングシステムの一部であることが可能であり、関連情報が互いに関係付けられ、複数のそのようなデバイス上に格納されることが可能である。例えば、ユーザが、デジタルアドレス帳を自分のデスクトップ職場コンピュータ上、自分のＰＤＡ上、自分のセル電話機上などに格納していることが可能である。したがって、仕事中は、電話番号およびその他の一般的な連絡先情報を含むことが可能な連絡先情報にアクセスするのがユーザに便利である可能性がある。しかし、仕事から離れている間は、ユーザは、パーソナルデジタルアシスタント（ＰＤＡ）または他のモバイル情報記憶システムなどのモバイル形態でアドレス帳を使用できることが可能である。理想的には、ＰＤＡの連絡先情報は、デスクトップ職場コンピュータにおける連絡先情報と一致しなければならない。
【０００５】
同一の情報または関連する情報が２つの場所に格納されている場合、一方の場所においてデータが変化し、他方の場所においては変化しないことが可能である。この問題は、分散システム内の各デバイスが最新の情報またはデータを有することを確実にしようと試みる自動化されたプロセスである同期を介して克服することができる。しかし、同期は、独自の一連の問題を有する。例えば、２つのデバイス間で同期が初期設定される場合、現在のシステムが、各デバイスからの対応するプロパティ値を比較することにより、変更されたプロパティ値を検出する。しかし、そのような比較は、いずれのデバイスがその変更を行ったかについての指示を全く提供しない。このため、プロパティ変更がいずれかのデバイス上で行われた場合、競合が生じ、競合解決プロセスが実行されなければならない。
【０００６】
他のシステムは、変更が行われたことを示すタグ、例えば、適宜、「変更」、「削除」、「追加」、またはその他のタグで変更されたプロパティにマークを付ける。しかし、そのようなシステムは、２つのデバイスが同期を開始した際、ローカルデバイスが、何が適用される必要があるかに関してデータを比較した後、メモリの中でそれらのマーカを作成することが可能である。さらに、タグは、メモリの中で追跡されるだけであるため、それらのタグは、他のデバイス群との同期中に使用するためにリモートデータベースの中に格納されない。つまり、競合がまず調停されなければ、ローカルメモリの中でプロパティにマークを付け、追跡することができない。
【０００７】
通常、競合は、例えば、時刻−日付情報を提供するプロパティ値に関連付けられたメタデータを比較することを介して解決することができる。最新の時刻−日付情報が、最も新しい情報であると考えられ、それに応じてプロパティを更新することができる。時刻−日付情報を比較することによって競合を解決することは、同期されるべきデータが時刻−日付情報を含まない場合、特に不確かとなり、そのようなデータを低忠実度データ（low fidelity data）と呼ぶ。例えば、多くのより小型のコンピューティングデバイスは、限られた物理的リソースを有し、データ構造アイテムのプロパティに関する時刻−日付情報を保持することができない。このため、コンピュータは、そのような低忠実度デバイスからデータを同期して取り込む（sync data in）場合、ユーザが最初にそのプロパティを設定したのがいつであるかを知ることができない。これは、コンピュータが、別のコンピューティングデバイスからプロパティを同期して取り込むこと、および「最後に書き込んだものが勝つ（ｌａｓｔ−ｗｒｉｔｅｒ−ｗｉｎｓ）」解決論理を自信をもって使用して最も新しいプロパティを選ぶことを妨げる。さらに、競合が全く存在しない場合でも、競合解決プロセスなしに受信側デバイスに対してプロパティ変更を同期させる方法は、通常、存在しない。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従来のシステムには上述したような種々の問題があり、さらなる改善が望まれている。
【０００９】
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、低忠実度デバイスを同期させるための時刻−日付情報の保持を実現する方法を提供することにある。
【課題を解決するための手段】
【００１０】
現行の同期システムの以上に特定した不備および欠点が、本発明によって克服される。例えば、デバイス間でデータを同期させることができる分散コンピューティングシステムでは、分散コンピューティングシステムは、対応する時刻−日付フィールドを有さないデータベースの中にプロパティを格納するデバイスを有する可能性がある。そのような事例では、本発明は、時刻−日付情報をデータベース内部のプロパティ値に関連付けることを可能にする。
【００１１】
典型的な実施形態は、対応する時刻−日付フィールドなしにプロパティを格納するリモートデータベース内部のリモートプロパティ値に対応する時刻−日付情報を特定すること提供する。特定された時刻−日付情報は、分散コンピューティングシステム内のデバイスが解析できる標準のフォーマットでフォーマットされる。フォーマット済みの時刻−日付情報は、リモートプロパティ値に関連付けられたフィールドの中に格納するために、リモートデータベースに送信される。
【００１２】
他の典型的な実施形態は、対応する時刻−日付フィールドを有さないデータベースの中にプロパティを格納するデバイスを有する分散コンピューティングシステムを提供する。フォーマット済みの時刻−日付情報が、分散コンピューティングシステム内のデバイスが解析できる標準のフォーマットで受信され、フォーマット済みの時刻−日付情報は、プロパティ値に関連付けられている。さらに、フォーマット済みの時刻−日付情報は、プロパティ値に関連付けられたデータベースフィールドの中に格納され、フォーマット済みの時刻−日付情報を利用して、プロパティ値に関わるデータ競合を解決することができるようになる。
【００１３】
さらに別の典型的な実施形態は、分散コンピューティングシステム内のデバイス間におけるデータ競合を解決することを可能にする。リモートプロパティに関してリモートプロパティ値が受信される。また、対応するリモート時刻−日付情報も、対応する時刻−日付フィールドを有さず受信される。リモート時刻−日付情報は、分散コンピューティングシステム内のデバイスが解析できる標準のフォーマットでフォーマットされている。さらに、リモート値と対応するローカルプロパティ値の間の競合が検出される。リモート時刻−日付情報が、標準のフォーマットに応じて解析されて、リモートプロパティ値がいつ変更されたかを示すリモート時刻−日付が特定される。さらに、リモート時刻−日付は、ローカル時刻−日付と比較され、ローカル時刻−日付は、１つまたは複数のローカルプロパティ値がいつ変更されたかを示す。次に、比較の結果に基づいて競合が解決される。
【００１４】
現行の同期システムの他の不備および欠点も、本発明によって克服される。例えば、デバイス間でデータを同期させることができる分散コンピューティングシステムにおいて、典型的な実施形態は、リモートデバイスとローカルマシンの間におけるプロパティの前回の同期以来、リモートデバイス上のプロパティに関する値が変化しているかどうかを判定することを可能にする。
【００１５】
典型的な実施形態は、リモートデバイスとローカルデバイスの間におけるデータの同期中、リモートプロパティに関する現在の値、およびそのリモートプロパティの以前の値に関するリモート表現が受信されるようにする。次に、リモートプロパティに関する現在の値から、リモートプロパティのローカル表現が生成される。これに応じて、リモート表現がローカル表現と比較され、この比較に基づき、リモート表現が生成された後にリモートプロパティの以前の値が変更されたことが判定される。
【００１６】
他の典型的な実施形態は、リモートデバイスとローカルデバイスの間におけるデータの同期中、リモートプロパティに関するリモート値、およびそのリモートプロパティのリモート値に関するリモート表現が受信されるようにする。次に、リモートプロパティのローカル表現が、リモートプロパティに関するリモート値から生成される。これに応じて、リモート表現がローカル表現と比較され、この比較に基づき、リモート表現が生成された後にリモートプロパティのリモート値が変化していないことが判定される。
【００１７】
現行の同期システムのさらに別の不備および欠点も、本発明によって克服される。例えば、典型的な実施形態は、同期値の間における競合を解決する際に使用される時刻−日付情報が割り当てられるべきプロパティ値を選択することにより、メモリリソースを保存することを可能にする。
【００１８】
典型的な実施形態は、リモートデバイスから複数のプロパティ値を受信することを可能にする。受信された複数のプロパティ値のなかから限られた集合のプロパティ値が、リモートデバイスの利用可能なリソースに基づいて選択される。さらに、複数のプロパティ値に対応する複数の時刻−日付情報から、時刻−日付情報の集合が特定される。限られた集合内のプロパティ値のそれぞれは、時刻−日付情報の集合の異なる部分に対応し、限られた集合内のプロパティ値のそれぞれが最後に変更された時点を示す。次に、時刻−日付情報の異なる部分は、リモートデバイスのリモートデータベースの中に格納される。
【００１９】
他の典型的な実施形態は、プロパティ値の限られた集合の選択が、複数のプロパティ値の変更に関連付けられた履歴情報にも基づくことが可能であるようにする。例えば、履歴情報は、複数のプロパティ値のそれぞれが変更される頻度であることが可能であり、その場合、最も頻繁に変更されたプロパティ値が選択されることが可能である。代替として、またはそれに併せて、履歴情報は、複数のプロパティ値に関する時刻−日付情報であることが可能であり、その場合、最も新しく変更されたプロパティ値が選択されることが可能である。
【００２０】
さらに別の典型的な実施形態は、プロパティ値の限られた集合に入っていない残りのプロパティ値に関する上記に特定された複数の時刻−日付情報から、時刻−日付情報の一部分を特定することを可能にする。時刻−日付情報のその部分は、残りのプロパティ値の１つまたは複数がユーザによって変更された時点に対応する。次に、時刻−日付情報の特定された部分が１つまたは複数の残りのプロパティ値のすべてに対応するように、時刻−日付情報の特定された部分が、リモートデータベース内部の１つの場所に格納されることが可能である。
【００２１】
本発明のさらなる特徴および利点は、以下の説明に記載され、ある程度、この説明から明白となるか、または本発明の実施によって学ぶことができる。本発明の特徴および利点は、添付の特許請求の範囲で特に指摘する手段および組み合わせを使用して実現し、獲得することができる。本発明の以上の特徴およびその他の特徴は、以下の説明からより完全に明白となるか、または以下に記載する本発明の実施によって学ぶことができる。
【００２２】
本発明の前述した利点および特徴、ならびにその他の利点および特徴を獲得することができる仕方を説明するため、以上に簡単に説明した本発明のより詳細な説明を、添付の図面に示した本発明の特定の実施形態を参照して提示する。それらの図面は、本発明の典型的な例だけを描いており、したがって、本発明の範囲を限定していると見なすべきでないものと理解して、本発明を、添付の図面の使用を介して、さらに具体的に、さらに詳細に記述し、説明する。
【発明を実施するための最良の形態】
【００２３】
本発明は、対応する時刻−日付フィールドを有さないデータベースの中にプロパティを格納するデバイス向けに時刻−日付情報を格納し、保持するための方法、システム、およびコンピュータプログラム製品を対象とする。さらに、本発明は、リモートデバイス上でデータが変化した場合に、それを特定することを可能にする。また、本発明は、制限された、または限られたメモリリソースを保存するために時刻−日付情報が割り当てられるべきプロパティ値の限られた集合を選択することも提供する。本発明の実施形態は、以下にさらに詳細に説明するとおり、様々なコンピュータハードウェアを含む専用または汎用のコンピュータを含むことが可能である。
【００２４】
一般に、本発明は、時刻−日付情報をデータベース内のプロパティ値に関連付けることができる分散コンピューティングシステムを提供する。分散コンピューティングシステムは、対応する時刻−日付フィールドを有さないデータベースの中にプロパティを格納するデバイスを有し、このため、低忠実度デバイス、つまりレガシデバイスと考えられる。典型的な実施形態は、リモートプロパティ値に対応する時刻−日付情報が特定され、分散コンピューティングシステム内の１つまたは複数のデバイスが解析できる標準のフォーマットでフォーマットされることが可能であるようにする。フォーマット済みの時刻−日付情報は、リモートプロパティ値に関連付けられたフィールドの中に格納するために、リモートデータベースに送信される。フォーマット済みの時刻−日付情報は、その後、プロパティ値間における競合を解決する際に使用されることが可能である。
【００２５】
他の典型的な実施形態は、リモートデバイスとローカルマシンの間におけるプロパティの前回の同期以来、リモートデバイス上のプロパティに関する値がいつ変化しているかを判定することを可能にする。さらに、他の典型的な実施形態は、リモートデバイスの利用可能なリソースに基づき、複数のプロパティ値のなかからプロパティ値の限られた集合を選択することを可能にする。
【００２６】
次に、同様の構造に同様の、または類似の符号が与えられている図を参照する。図面は、本発明の実施形態の概略図の例であり、本発明の範囲を限定する、または別の形で狭めることは意図していないものと理解されたい。
【００２７】
図１Ａは、分散コンピューティングネットワーク１００内のいくつかのノードを示して接続を例示し、各ノードがシステム内のその他のノードとどのように同期をとるかを示している。例えば、分散コンピューティングシステム１００内に示すとおり、職場コンピュータ１０５が、電子メールサーバ１１０、ＰＤＡ１１５、モバイル電話機１２０、およびインスタントメッセージサーバ１２５などのいくつかの様々なデバイスと同期をとることができる。そのような分散コンピューティングシステム１００内でデータを同期させることの目的は、１名または複数名のユーザによって使用されるすべてのデバイス上で最も新しい情報が提供されることを確実にすることである。
【００２８】
同期される必要があるデータは、例えば、各アイテムが、個別の人物、会社、企業、または他の任意の類似した連絡先に関する情報に相当する連絡先情報であることが可能である。各連絡先アイテムに関連するプロパティの例は、ファーストネーム、ミドルネーム、ラストネーム、会社名、アドレス、電話番号、電子メールアドレス、Ｗｅｂサイト情報などであることが可能である。しかし、認識されるとおり、ローカルデータは、連絡先情報以外の情報であってもよい。例えば、ローカルデータは、２つのデバイス間で同期される必要があるカレンダおよび／またはスケジュール情報、ファイル、アプリケーション、または他の任意のそのような情報であることも可能である。したがって、連絡先情報についての記載は、例示の目的でだけ使用しており、明示的に主張している場合を除き、本発明の範囲を限定する、または別の形で狭めることを意図するものではない。
【００２９】
職場コンピュータ１０５と同様に、自宅ラップトップ１３０も、インスタントメッセージサーバ１２５、モバイル電話機１２０、ＰＤＡ１１５、および電子メールサーバ１１０の間で同期されることが可能である。分散コンピューティングシステム１００は、低忠実度（例えば、データベースが、プロパティに関する時刻−日付情報を格納することができない）デバイスおよび高忠実度デバイスから構成されることが可能である。これを考慮することが重要であるのは、理想的には、すべてのデータベースが、各プロパティに関する時刻−日付情報をアイテムの中に有して、ユーザがプロパティを前回に変更したのがいつであるかを示すからである。これが該当したとすると、同期アダプタは、「最後に書き込んだものが勝つ」規則を使用して、最後の時刻−日付情報に勝者を選ばせることができる。これは、いくつかのループ問題を解決し、最良のプロパティがそれぞれの競合に勝つことをもたらす（分散コンピューティングシステム１００内で使用されるクロックも同期されるという条件付きで）。多くの分散コンピューティングシステム１００は、そのような時刻−日付情報を格納するために限られたメモリリソースを有する少なくともいくつかの低忠実度クライアント、つまりレガシクライアントから構成されるため、またそのようなレガシクライアントをサポートすることが望ましいため、潜在的に無限の同期ループを回避しながら、デバイス間の競合を解決する他の方法が存在する必要がある。
【００３０】
図１Ｂは、リモートデバイス群１１６（モバイル電話機１２０またはＰＤＡ１１５などの）およびローカルマシン１３２（自宅ラップトップ１３０または職場コンピュータ１０５などの）を有する分散コンピューティングネットワーク１００の一部分を示している。図示するとおり、リモートデバイス１１６は、リモートデバイス１１６とローカルマシン１３２の間における前回の同期後、いくらか経った時点で、プロパティ値をＡからＢに変更している。同様に、ローカルマシン１３２も、２つのデバイス１１６、１３２の間における前回の同期後、同一のプロパティ値をＡからＣに変更している。このため、リモートデバイス１１６は、プロパティに関するＢの値が、ローカルマシン１３２に下方に同期され（be synced down to）なければならないことを示す同期必要（ｎｅｅｄｓ  ｓｙｎｃ）矢印１３５を有する。同様に、ローカルマシン１３２は、Ｃの値がリモートデバイス１１５に上方に同期され（be synced up to）なければならないことを示す上方同期必要（ｎｅｅｄｓ  ｓｙｎｃ  ｕｐ）矢印１４０を有する。両方のデバイス１１６、１３２が、それぞれ、プロパティ値を下方および上方に同期する同期必要矢印を有するため、競合がもたらされる。
【００３１】
前述したとおり、図１Ｂで特定したような通常の競合は、プロパティ値に関連付けられた時刻−日付情報の比較を介して解決することができる。しかし、時刻−日付情報を比較することによって競合を解決することは、同期されるべきデータが、低忠実度デバイスのケースにおけるように、時刻−日付情報を含まない場合に特に不確かになる。これは、コンピュータが、別のコンピューティングデバイスからプロパティを同期して取り込むこと、および「最後に書き込んだものが勝つ」解決論理を自信をもって使用して最も新しいプロパティを選ぶことを妨げる。さらに、低忠実度デバイスに関連する別の関係する問題は、プロパティがいつ変化したかを特定する方法が存在しないことである。したがって、時刻−日付情報を低忠実度データと関連付けることができる場合でも、そのような情報、つまり時刻−日付情報は、低忠実度デバイスにおいてプロパティが変更されている可能性があるという事実により、信頼できない可能性がある。
【００３２】
現行の分散コンピューティングネットワークの上記に特定した不備および欠点が、本発明の典型的な実施形態を介して克服される。例えば、本発明は、時刻−日付情報をデータベース内のプロパティ値に関連付けることを可能にし、デバイスは、対応する時刻−日付フィールドなしでプロパティを格納する（すなわち、低忠実度デバイス）。さらに、本発明は、リモートデバイスが低忠実度デバイスである場合でも、プロパティの前回の同期以来、リモートデバイス上でプロパティに関する値が変化している場合、それを判定することを可能にする。
【００３３】
図２は、本発明の典型的な実施形態による低忠実度デバイスのために時刻−日付情報を作成すること、使用すること、および更新することができるシステムを有する分散コンピューティングネットワーク２００を示す。分散コンピューティングシステム２００は、２つの高忠実度デバイス、ローカルマシン２１０およびリモートマシン２２０を含む。また、分散コンピューティングシステム２００内には、低忠実度デバイス、すなわち、リモートデバイス２０５も含まれる。リモートデバイス２０５は、リモートデバイス２０５に関連するデータベースが、各プロパティとともに時刻−日付情報を格納することができないという点で低忠実度である。つまり、リモートデバイス２０５は、対応する時刻−日付フィールドなしに自らのデータベースの中にプロパティを格納する。
【００３４】
リモートデバイス２０５は、自らのデータベース内にプロパティに関する時刻−日付フィールドを有さないが、典型的な実施形態は、時刻−日付情報をリモートデバイス２０５内部のプロパティ値に関連付けること、およびリモートデバイス２０５が、その時刻−日付情報を標準のフォーマットで、未使用であるフィールドの中に格納することができるようにすることを可能にする。例えば、ローカルマシン２１０が、リモートデバイス群２０５データベース内のリモートプロパティ値に対応する時刻−日付情報を特定することができる。次に、特定された時刻−日付情報が、分散コンピューティングシステム２００内のいくつかのデバイスが解析できる標準のフォーマットでフォーマットされることが可能である。標準のフォーマットは、例えば、ユニフォームリソースアイデンティファイア（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）（ＵＲＩ）であることが可能である。例えば、ＵＲＩは、プロパティを特定し、各プロパティに関連付けられた特定済みの時刻−日付情報を含む同期ユニフォームリソースロケータ（ＵＲＬ）の形態であることが可能である。図３に関連して以下により詳細に説明するとおり、この同期ＵＲＬフォーマットが望ましい。というのは、同期ＵＲＬは、多くのデバイスが容易に特定でき、解析でき、このため、標準のフォーマットとして理想的であるからである。
【００３５】
ローカルマシン２１０は、フォーマット済みの時刻−日付情報をリモートデバイス２０５に送信することができ、この情報は、リモートプロパティ値に関連付けられたフィールドの中に格納される。例えば、図２に示すとおり、ローカルマシン２１０は、リモートデバイス２０５と同期をとる際、時刻−日付（Ｔ／Ｄ）情報および更新済みのプロパティを伴うアイテム１（２１５）を送信する。次に、リモートデバイス２０５が、時刻−日付情報を含むアイテム１（２１５）を格納する。フォーマット済みの時刻−日付情報は、リモートデバイス２０５上の未使用のプロパティフィールドの中に格納される。例えば、リモートデバイス２０５は、フォーマット済みの時刻−日付情報を、通常のプロパティの中、隠されたプロパティの中、秘密の拡張プロパティ（ｐｒｉｖａｔｅ  ｅｘｐａｎｄｅｄ  ｐｒｏｐｅｒｔｙ）の中に格納することができ、あるいはメモ（ｎｏｔｅｓ）フィールドの終りに付加することさえできる。他の情報がプロパティフィールドの中に格納されることも可能であるが（例えば、テキストがメモフィールドの中に）、本発明は、そのようなフィールドを未使用と呼ぶことに留意されたい。というのは、そのフィールドが、時刻−日付情報を格納することに予約されていないからである。したがって、「未使用の」プロパティフィールドという用語の使用は、時刻−日付情報を格納することに予約されていない任意のプロパティフィールドを包含するものと広く解釈されなければならない。
【００３６】
典型的な実施形態は、フォーマット済みの時刻−日付情報が、競合を解決すること、またはプロパティが変化した場合にそれを特定することなど、いくつかの異なる目的で使用されることが可能であるようにする。例えば、リモートデバイス２０５とリモートマシン２２０の間で同期が開始される。これに応じて、アイテム１（２１５）が、プロパティ、およびフォーマット済みの時刻−日付情報とともにリモートマシン２２０に送信されることが可能である。時刻−日付情報のフォーマットは、標準の解析可能なフォーマットになっているため、リモートマシン２２０は、リモート時刻−日付情報を解析し、各プロパティに関連付けられたリモート時刻−日付情報を特定することができる。次に、このリモート時刻−日付情報が、プロパティ値間のあらゆる競合を解決する際に、リモートマシン２２０の時刻−日付情報と比較されることが可能である。
【００３７】
他の典型的な実施形態は、リモートデバイス２０５においてプロパティが変化した場合に、それを検出することを可能にする。例えば、アイテム１（２１５）内のフォーマット済みの時刻−日付情報が、時刻−日付情報の各セグメント内に、ローカルマシン２１０と前回に同期されたプロパティ値の表現を含むことが可能である。この表現は、例えば、ハッシュの形態であることが可能であり、このハッシュは、時刻−日付情報に関連付けられた前回に同期されたプロパティ値のハッシュである。リモートマシン２２０がアイテム１（２１５）を同期のために受信した場合、アイテム１（２１５）内の受信されたプロパティも、前回に同期されたプロパティ値をハッシュするのに使用されたのと同一の標準のハッシュ関数を使用してハッシュされることが可能である。使用することができる標準のハッシュ関数には、ＳＨＡ（secure hash algorithm）−１、ＭＤ（message digest algorithm）５、または他の類似したハッシュ関数が含まれるが、以上には限定されない。
【００３８】
フォーマット済みの時刻−日付情報内のハッシュ値を、リモートマシン２２０によって生成されたハッシュ値と比較することができる。値が一致しない場合、時刻−日付情報に関連付けられたプロパティ値がリモートデバイス２０５において変更されているものと推論することができる。したがって、時刻−日付情報は、信頼できない可能性があり、その結果、リモートマシン２２０によって破棄されることが可能である。そのような場合、時刻−日付情報が信頼できない可能性があるため、競合を解決するためにユーザインタフェースがユーザに提供されることが可能である。もちろん、競合を解決する他の方法も、当業界で周知の標準の慣行を介して利用可能である。
【００３９】
リモートデバイス２０５において変更が行われた場合に、それを特定するためのプロパティ値のハッシュまたは表現の前述した使用は、フォーマット済みの時刻−日付情報に限定されないことに留意されたい。例えば、プロパティ値が変更された場合に、それを特定するためのプロパティ表現の比較は、時刻−日付情報なしで使用することもできる。そのような実例は、リモートマシン２２０上に格納されたプロパティの値を比較する必要なしに、いつプロパティをリモートデバイス２０５から同期する必要があるかを特定する際に有用である。したがって、同期ＵＲＬ内またはフォーマット済みの時刻−日付情報内のハッシュまたはリモートプロパティ表現の使用は、例示の目的でだけ使用しており、特に明示的に主張しない限り、本発明の範囲を限定する、または別の形で狭めることを意図するものではない。
【００４０】
図３は、どのように時刻−日付情報をフォーマットし、リモートデバイス２０５において格納することができるかを示す。図３に示すとおり、アイテム３５５は、プロパティ識別子、プロパティ名、およびプロパティの初期値を含む、連絡先に関する様々なフィールドを有する。もちろん、予約済みの時刻−日付プロパティフィールドを例外として、他のアイテム、プロパティ、フィールドなども利用可能である。したがって、アイテム３５５連絡先情報、およびアイテム３３５内のフィールドに関する記載は、例示の目的でだけ使用しており、明示的に主張する場合を除き、本発明の範囲を限定する、または別の形で狭めることを意図するものではない。
【００４１】
やはり図３に示すとおり、フォーマット済みの時刻−日付情報が、フィールド値３５０としてプロパティフィールド３７５の中に格納されることが可能である。典型的な実施形態は、フォーマットが、フィールド３５０の中で示すとおり、同期ＵＲＬの形態であることが可能であるようにする。フィールド３５０の解析済み部分の分解図も、図３に示している。フィールド３５０の最初の部分は、同期ＵＲＬ３０５を含む。この部分は、アイテム３５５をスキャンしているデバイス群に、同期ＵＲＬの後続のセグメントが、アイテム３５５内の様々なプロパティに関する時刻−日付情報を含むことを明らかにする。同期ＵＲＬ３０５の中でロケータ情報のために通常、取っておかれるプレースホルダ３１５は、使用されても、使用されなくてもよいことに留意されたい。
【００４２】
後続のセグメントのそれぞれが、アンパサンド３４０で分けられ、プロパティＩＤ（identification）、例えば、プロパティ値３１０を介して特定されることが可能である。また、フィールド３５０の同期ＵＲＬ３０５の各セグメント内には、プロパティＩＤに関連付けられた時刻−日付情報も含まれる（例えば、ｔｉｍｅ＿ｄａｔｅ＿１  ３３０が、Ｐｒｏｐ  ＩＤ＿１に関連付けられている）。典型的な実施形態は、貴重なメモリリソースを節約するために、時刻−日付情報の単純な表現が使用されることが可能であるようにする。例えば、時刻−日付情報を１６進数として格納することができる。さらに空間を節約するため、時刻−日付情報をより低い分解能で格納することもできる。例えば、時刻−日付値は、普通、千分の１秒単位まで格納される。しかし、典型的な実施形態は、秒単位、または分単位まで格納された時刻−日付値を有するフォーマット済みの時刻−日付情報または同期ＵＲＬを作成することを可能にする。さらに、典型的な実施形態は、時刻−日付情報が、時間帯とは独立の形で格納されることが可能であるようにする。したがって、これにより、同期トポロジ内のノード群が相異なる時間帯の中に存在する場合に、比較できる時刻が可能になる。
【００４３】
また、同期ＵＲＬ３０５の各セグメント内では、プロパティ表現、例えば、プロパティ表現３２０も提供される。典型的な実施形態は、プロパティ表現３２０が、ハッシュの形態であることが可能であるようにし、このハッシュは、前述したとおり、プロパティ表現３２０が生成されて以来、プロパティ値が変更されているかどうかを判定する際に使用することができる。これは、時刻−日付情報３３０が信頼できない可能性があるか否かを示す。
【００４４】
メモフィールドなどのいくつかのフィールドを例外として、フォーマット済みの時刻−日付情報を格納するのに利用できるメモリは、限られている。このため、すべてのプロパティに関する時刻−日付情報を格納するためのメモリは、用意されていない、または実際的ではない可能性がある。したがって、本発明は、アイテム３５５内の総数のプロパティ値のなかから、プロパティ値の限られた集合を特定し、選択することを可能にする。本発明の同期ＵＲＬ３０５内に時刻−日付情報を含めるプロパティ値の選択は、様々な考慮に基づいて選択されることが可能である。例えば、選択は、最も新しく変更されたプロパティ値に基づくことが可能である。代替として、同期ＵＲＬ３０５内、またはフォーマット済みの時刻−日付情報内で時刻−日付情報が関連付けられるように選択されるプロパティ値は、特定のプロパティ値に関する変更の頻度などのヒューリスティックなデータに基づくことが可能である。もちろん、時刻−日付情報を関連付けるプロパティ値を選択するための、他のいくつもの様々な方法も提供される。したがって、どのようにプロパティが選択されるかの使用、例えば、最も新しく変更されたプロパティの使用は、例示の目的でだけ使用しており、特に明示的に主張しない限り、本発明の範囲を限定する、または別の形で狭めることを意図するものではない。
【００４５】
空間が考慮すべき事項であり、通常、プロパティの部分集合が、時刻−日付情報が関連付けられるように選択される必要があるため、本発明は、前回の同期以来、その他のプロパティが変化しているかどうかを判定することを可能にすることもできるとともに、より小さい空間内でそれらのプロパティに時刻−日付情報を関連付ける。例えば、本発明は、より小さいフォーマットで残りのプロパティを表現すること、およびその表現に関する上限および／または下限の時刻−日付情報を関連付けることを可能にする。例えば、図３に示すとおり、フィールド３５０の中のＵＲＬ３０５の終りには、残り値（ｒｅｓｔ  ｖａｌｕｅ）を保持するプロパティ識別子３６０を有するセグメントが付加されている。プロパティ識別子３６０は、同期ＵＲＬ３０５をスキャンしているデバイス群に、特定の時刻−日付情報が関連付けられていないプロパティがそのセグメント内で提示されていることを示す。したがって、残りのプロパティのプロパティ表現３６５を使用することができる。
【００４６】
前述したその他のプロパティ表現、例えば、プロパティ表現３２０の場合と同様に、残りのプロパティ値に関するプロパティ値３６５は、すべての残りのプロパティ値のハッシュの形態であることが可能である。このため、このプロパティ表現３６５を前述したプロパティ表現と同様の形で使用して、残りのプロパティ値の１つまたは複数が、リモートマシンとローカルマシンの間における前回の同期以来、変化している場合、それを特定することができる。その他の典型的な実施形態も、時刻−日付情報３７０が残りプロパティ（ｒｅｓｔ  ｐｒｏｐｅｒｔｙ）に関連付けられて、残りのプロパティ値がいつ変更されたかに関する上限および／または下限を与えることができるようにする。
【００４７】
残りセグメント（ｒｅｓｔ  ｓｅｇｍｅｎｔ）を同期ＵＲＬの追加のセグメントとして説明したが、残りセグメントを独自のフィールドの中でフォーマットしてもよいことが認識されよう。例えば、空間またはメモリを取っておく必要がある場合、残りセグメントを使用して、アイテム３５５全体の中のプロパティの１つまたは複数がいつ変化したかを特定することができる。したがって、同期ＵＲＬ３０５の終りに付加された残りセグメントの使用は、例示の目的でだけ使用しており、明示的に主張する場合を除き、本発明の範囲を制限する、または別の形で狭めることを意図するものではない。
【００４８】
本発明は、機能的ステップおよび／または非機能的動作を含む方法として説明することもできる。以下は、本発明を実施する際に実行されることが可能なステップおよび動作の説明である。通常、機能的ステップは、本発明を達せられる結果に関して説明し、非機能的動作は、特定の結果を達するためのより具体的な動作を説明する。機能的ステップおよび非機能的動作は、任意の特定の順序で説明する、または主張することができるが、本発明は、動作および／またはステップのいずれかの特定の順序または組み合わせに必ずしも限定されない。さらに、特許請求の範囲の記載、および図４〜８に関する流れ図の以下の説明における動作および／またはステップの使用を使用して、そのような用語の望ましい特定の用法を示す。
【００４９】
図４〜８は、本発明の様々な典型的な実施形態に関する典型的な流れ図を示す。図４〜８の以下の説明は、図１Ｂ、図２、および図３からの対応する要素をときとして参照する。以上の図からの特定の要素を参照することができるが、そのような要素は、例示の目的でだけ使用しており、明示的に主張する場合を除き、本発明の範囲を制限する、または別の形で狭めることを意図するものではない。
【００５０】
図４は、対応する時刻−日付フィールドなしでプロパティを格納するリモートデータベース内のプロパティ値に時刻−日付情報を関連付ける方法４００の典型的な流れ図を示す。方法４００は、時刻−日付情報を特定する動作４０５を含む。時刻−日付情報は、リモートデータベース内の１つまたは複数のプロパティ値に対応する。方法４００は、特定された時刻−日付情報をフォーマットする動作４１０も含む。時刻−日付情報は、分散コンピューティングシステム２００内の１つまたは複数のデバイス２１０、２２０が解析できる標準のフォーマットでフォーマットされる。標準のフォーマットは、同期ＵＲＬ３０５のようなＵＲＩであることが可能である。同期ＵＲＬ３０５は、アンパサンド３４０で分けられたセグメントに解析されることが可能である。各セグメントは、プロパティ識別子３１０、プロパティ値３２０の表現、およびプロパティ値に対応する時刻−日付情報３３０の表現を含むことが可能である。典型的な実施形態は、プロパティ値３２０の表現が、その特定のプロパティ値のハッシュであることが可能であるようにする。さらに、時刻−日付情報の表現は、１６進数であることが可能であり、かつ／または秒単位または分単位まで、および／または時間帯とは独立のフォーマットで格納されることが可能である。
【００５１】
方法４００は、フォーマット済みの時刻−日付情報を送信する動作４２０も含む。例えば、フォーマット済みの時刻−日付情報は、リモートプロパティ値が関連付けられたフィールド３５０の中に格納するために、リモートデータベースに送信されることが可能である。フィールド３５０は、メモフィールド、隠されたプロパティ、秘密の拡張プロパティ、または他の任意の類似した未使用のフィールドであることが可能である。
【００５２】
他の典型的な実施形態は、フィールド３０５の中で時刻−日付情報が関連付けられているプロパティ値が、総数のプロパティ値の部分集合であるようにする。部分集合は、時刻−日付情報が関連付けられた値に基づいて選択されることが可能である。例えば、最も新しい時刻−日付情報を使用して、部分集合の中に含められるプロパティ値が選択されることが可能である。代替として、プロパティ値が変更された頻度を使用して、部分集合が選択されることが可能である。
【００５３】
さらに別の実施形態では、総数のプロパティ値からのプロパティ値の残りの部分が、表現値３６５として組み合わされて、時刻−日付情報３７０が関連付けられることが可能である。例えば、時刻−日付情報３７０は、残りのプロパティのなかの総数のプロパティに関する最も新しく変更された値であることが可能である。代替として、時刻−日付情報３７０は、プロパティ値の残りの部分の中のプロパティの１つが同期されているのが最も早期である場合、それを示す、下方時刻−日付情報３７０を限界とすることも可能である。さらに、結合された表現値３６５は、プロパティ値の残りの部分のハッシュの形態であることが可能である。
【００５４】
図５は、プロパティ値とともに時刻−日付情報を受信して、データベースの中に格納する方法５００を示し、データベース内のプロパティは、対応する時刻−日付フィールドなしに格納される。方法５００は、フォーマット済みの時刻−日付情報を受信する動作５０５を含む。時刻−日付情報は、プロパティ値に関連付けられ、分散コンピューティングシステム２００内の１つまたは複数のデバイス２１０、２２０が解析できる標準のフォーマットでフォーマットされる。方法５００は、フォーマット済みの時刻−日付情報を格納する動作５１０も含む。フォーマットされた時刻−日付情報は、プロパティ値に関連付けられたデータベースフィールド３５０の中に格納され、フォーマット済みの時刻−日付情報を利用して、プロパティ値に関わるデータ競合を解決できるようになることが可能である。
【００５５】
典型的な実施形態は、フォーマット済みの時刻−日付情報を特定すること、および更新することも可能にする。例えば、プロパティ値が変化した場合、フォーマット済みの時刻−日付情報が、そのプロパティ値に関連付けられているものとして特定されることが可能である。次に、このフォーマット済みの時刻−日付情報が、変更されたプロパティ値に従ってデータベースフィールドの中で更新されることが可能である。典型的な実施形態は、これが、適切なアプリケーションソフトウェアを有するリモートデバイス２０５によって行われることが可能であるようにする。例えば、フォーマット済みの時刻−日付情報が、リモートデバイス２０５上に受信され、格納されて、リモートデバイスのユーザが変更を行っていることが可能である。代替として、ローカルマシン２１０、２２０が変更を行っていることも可能である。ローカルマシン２１０、２２０は、１つまたは複数のプロパティ値に関連付けられたフォーマットされていない時刻−日付情報を格納し、この情報を対応する時刻−日付フィールドの中に格納する。つまり、ローカルマシン２１０、２２０は、高忠実度デバイスである。
【００５６】
図６は、分散システム内のデバイス間におけるデータ競合を解決する方法６００を示す。分散コンピューティングシステム内のデバイスの１つが、対応する時刻−日付フィールドなしでデータベースの中にプロパティを格納する。方法６００は、リモートプロパティ値を受信する動作６０５を含む。リモートプロパティに関して受信されたリモートプロパティ値、および対応するリモート時刻−日付情報も受信される。さらに、リモート時刻−日付情報は、分散コンピューティングシステム内の１つまたは複数のデバイスが解析できる標準のフォーマット、例えば、ＵＲＩフォーマットまたはＵＲＬフォーマットでフォーマットされる。方法６００は、競合を検出する動作６１０も含む。競合は、リモートプロパティ値と対応するローカルプロパティ値の間に存在する。
【００５７】
方法６００は、リモート時刻−日付情報を利用するための機能的な結果指向のステップ６２０も含むことが可能である。時刻−日付情報を利用して、ローカルデバイスとリモートデバイスの間で同期をとるのに適切なプロパティ値が選択されることが可能である。ステップ６２０は、リモート時刻−日付情報を解析する動作６２２を含むことが可能である。リモート時刻−日付情報は、標準のフォーマットに従って解析されて、リモート時刻−日付が特定され、この時刻−日付は、リモートプロパティ値がいつ変更されたかを示す。ステップ６２０は、リモート時刻−日付をローカル時刻−日付と比較する動作６２４も含むことが可能である。ローカル時刻−日付は、ローカルプロパティ値がいつ変更されたかを示す。最後に、ステップ６２０は、競合を解決する動作６２６を含むことが可能である。競合の解決は、比較の結果に基づく。
【００５８】
前述したとおり、標準のフォーマットは、ＵＲＩの形態であることが可能である。例えば、ＵＲＩは、セグメントに解析されるＵＲＬであることが可能である。セグメントは、リモートプロパティ値に対応するプロパティＩＤ、リモートプロパティ値の表現、および時刻−日付情報の表現を含むことが可能である。さらに、リモートプロパティ値の表現は、ハッシュであることが可能であり、時刻−日付情報の表現は、１６進数であることが可能である。
【００５９】
他の典型的な実施形態は、リモートプロパティ値からリモートプロパティのローカル表現を生成することを可能にする。次に、ローカル表現が、リモートプロパティ値が変化したかどうかを判定するために、前述したリモート表現と比較されることが可能である。
【００６０】
図７は、リモートデバイスとローカルマシンの間におけるプロパティの前回の同期以来、プロパティに関する値が変化している場合、それを判定するための方法７００を示す。方法７００は、リモートプロパティに関する現在の値を受信する動作７０５を含む。さらに、リモートプロパティの以前の値のリモート表現も受信される。方法７００は、リモートプロパティのローカル表現を生成する動作７１０も含むことが可能である。ローカル表現は、リモートプロパティに関する現在の値から生成される。方法７００は、リモート表現をローカル表現と比較する動作７１５も含む。最後に、方法７００は、以前のリモートプロパティが変更されたことを判定する動作７２０を含む。この判定は、リモート表現が生成された後にプロパティ値が変更されたことを示す。したがって、例えば、同期ＵＲＬ３０５の中で時刻−日付情報がリモートプロパティに関連付けられている場合、そのような情報は、信頼できない可能性があり、破棄されることが可能である。
【００６１】
図８は、複数のプロパティ値のなかからプロパティ値の限られた集合を選択する方法８００を示す。対応する時刻−日付フィールドなしでデータベースの中にプロパティを格納するデバイスのために、プロパティ値には、時刻−日付情報が関連付けられることになる。方法８００は、リモートデバイスからプロパティ値を受信する動作８０５を含む。さらに方法８００は、時刻−日付情報の限られた集合を選択する動作８１０も含む。リモートデバイスの利用可能なリソースに基づき、複数のプロパティ値からプロパティ値の限られた集合が選択されることが可能である。方法８００は、時刻−日付情報の集合を特定する動作８１５も含む。限られた集合内のプロパティ値のそれぞれは、時刻−日付情報の集合の異なる部分に対応する。方法８００は、リモートデータベースの中に時刻−日付情報の異なる部分を格納する動作８２０も含む。
【００６２】
方法８００は、プロパティ値の残りの部分を特定し、それらを表現値として格納し、それらに時刻−日付情報を関連付けることも含むことが可能である。例えば、残りのプロパティ値に関する時刻−日付情報の一部分が特定されることが可能である（残りのプロパティ値は、プロパティ値の限られた集合に入っていない）。時刻−日付情報の特定された部分は、時刻−日付情報の特定された部分が残りのプロパティ値のすべてに対応するように、リモートデータベース内の１つの場所に格納されることが可能である。
【００６３】
本発明の範囲内の諸実施形態は、コンピュータ実行可能命令またはデータ構造を担持する、または格納しておくためのコンピュータ可読媒体も含む。そのようなコンピュータ可読媒体は、汎用または専用のコンピュータがアクセスすることができる任意の利用可能な媒体であることが可能である。例として、限定としてではなく、そのようなコンピュータ可読媒体は、ＲＡＭ（random access memory）、ＲＯＭ、ＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）、ＣＤ（compact disc）−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気記憶装置、あるいはコンピュータ実行可能命令またはデータ構造の形態で所望のプログラムコード手段を担持する、または格納するのに使用することができ、汎用または専用のコンピュータがアクセスすることができる他の任意の媒体を含むことが可能である。情報が、ネットワークまたは別の通信接続（有線、無線、または有線と無線の組み合わせ）を介してコンピュータに転送される場合、コンピュータは、その接続をコンピュータ可読媒体と適切に見なす。このため、任意のそのような接続が、コンピュータ可読媒体と適切に呼ばれる。以上の媒体の組み合わせも、コンピュータ可読媒体の範囲に含められなければならない。コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスにある機能、またはあるグループの機能を実行させる命令およびデータを含む。
【００６４】
図９および以下の説明は、本発明を実施することができる適切なコンピューティング環境の簡単で一般的な説明を提供することを目的とする。必須ではないが、本発明は、ネットワーク環境におけるコンピュータ群によって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的な状況で説明する。一般に、プログラムモジュールには、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。コンピュータ実行可能命令、関連するデータ構造、およびプログラムモジュールが、本明細書で開示する方法のステップを実行するためのプログラムコード手段の例である。特定の一続きのそのような実行可能命令または関連するデータ構造は、そのようなステップで説明される機能を実施するための対応する動作の例である。
【００６５】
本発明は、パーソナルコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電化製品またはプログラマブル家庭用電化製品、ネットワークＰＣ（personal computer）、ミニコンピュータ、メインフレームコンピュータなどを含め、多くのタイプのコンピュータシステム構成を有するネットワークコンピューティング環境において実施できることが当業者には認識されよう。本発明は、通信ネットワークを介してリンクされた（有線リンク、無線リンク、または有線リンクと無線リンクの組み合わせで）ローカル処理デバイスとリモート処理デバイスによってタスクが実行される分散コンピューティング環境においても実施することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルメモリ記憶装置とリモートメモリ記憶装置の両方の中に配置することができる。
【００６６】
図９を参照すると、本発明を実施するための典型的なシステムが、処理装置９２１、システムメモリ９２２、ならびにシステムメモリ９２２から処理装置９２１までを含む様々なシステムコンポーネントを結合するシステムバス９２３を含む、従来のコンピュータ９２０の形態で汎用コンピューティングデバイスを含んでいる。システムバス９２３は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含め、いくつかのタイプのバス構造のいずれであってもよい。システムメモリは、読み取り専用メモリ（ＲＯＭ）９２４およびランダムアクセスメモリ（ＲＡＭ）９２５を含む。スタートアップ中など、コンピュータ９２０内部の要素間で情報を転送するのを助ける基本ルーチンを含むＢＩＯＳ（Basic Input/Output System）９２６が、ＲＯＭ９２４の中に格納されることが可能である。
【００６７】
コンピュータ９２０は、磁気ハードディスク９３９に対して読み取りおよび書き込みを行うための磁気ハードディスクドライブ９２７、リムーバブルな磁気ディスク９２９に対して読み取りまたは書き込みを行うための磁気ディスクドライブ９２８、およびＣＤ−ＲＯＭまたは他の光媒体などのリムーバブルな光ディスク９３１に対して読み取りまたは書き込みを行うための光ディスクドライブ９３０も含むことが可能である。磁気ハードディスクドライブ９２７、磁気ディスクドライブ９２８、および光ディスクドライブ９３０は、それぞれ、ハードディスクドライブインタフェース９３２、磁気ディスクドライブインタフェース９３３、および光ドライブインタフェース９３４でシステムバス９２３に接続される。以上のドライブ、および関連するコンピュータ可読媒体により、コンピュータ実行可能命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性ストレージがコンピュータ９２０に提供される。本明細書で説明する典型的な環境は、磁気ハードディスク９３９、リムーバブルな磁気ディスク９２９、およびリムーバブルな光ディスク９３１を使用するが、磁気カセット、フラッシュメモリカード、デジタルバーサタイルディスク、ベルヌーイカートリッジ、ＲＡＭ、ＲＯＭなどを含め、データを格納するための他のタイプのコンピュータ可読媒体も使用することができる。
【００６８】
オペレーティングシステム９３５、１つまたは複数のアプリケーションプログラム９３６、他のプログラムモジュール９３７、およびプログラムデータ９３８を含め、１つまたは複数のプログラムモジュールを含むプログラムコード手段が、ハードディスク９３９、磁気ディスク９２９、光ディスク９３１、ＲＯＭ９２４、またはＲＡＭ９２５に格納されることが可能である。ユーザは、キーボード９４０、ポインティングデバイス９４２、あるいはマイク、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどの他の入力デバイス群（図示せず）を介して、コマンドおよび情報をコンピュータ９２０に入力することができる。以上の入力デバイス、およびその他の入力デバイスは、しばしば、システムバス９２３に結合されたシリアルポートインタフェース９４６を介して処理装置９２１に接続される。代替として、入力デバイス群は、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインタフェース群で接続してもよい。モニタ９４７または別のディスプレイデバイスも、ビデオアダプタ９４８のようなインタフェースを介してシステムバス９２３に接続される。モニタに加えて、パーソナルコンピュータは、通常、スピーカやプリンタなどの他の周辺出力デバイス群（図示せず）も含む。
【００６９】
コンピュータ９２０は、リモートコンピュータ９４９ａおよび９４９ｂのような１つまたは複数のリモートコンピュータに対する論理接続を使用するネットワーク化された環境において動作することができる。リモートコンピュータ９４９ａおよび９４９ｂはそれぞれ、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードであることが可能であり、通常、コンピュータ９２０に関連して前述した要素の多く、またはすべてを含むが、メモリ記憶装置９５０ａおよび９５０ｂ、ならびに関連するアプリケーションプログラム９３６ａおよび９３６ｂだけを図９に示している。図９に示した論理接続は、例として、限定としてではなく、ここで提示するローカルエリアネットワーク（ＬＡＮ）９５１およびワイドエリアネットワーク（ＷＡＮ）９５２を含む。そのようなネットワーキング環境は、オフィス全体または企業全体のコンピュータ網、イントラネット、およびインターネットで一般的である。
【００７０】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ９２０は、ネットワークインタフェースまたはネットワークアダプタ９５３を介してローカルネットワーク９５１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ９２０は、インターネットなどのワイドエリアネットワーク９５２を介して通信を確立するためのモデム９５４、無線リンク、またはその他の手段を含むことが可能である。内部にあることも、外部にあることも可能なモデム９５４は、シリアルポートインタフェース９４６を介してシステムバス９２３に接続される。ネットワーク化された環境では、コンピュータ９２０に関連して示したプログラムモジュール群、またはプログラムモジュール群の諸部分は、リモートメモリ記憶装置の中に格納することができる。図示したネットワーク接続は、典型的であり、ワイドエリアネットワーク９５２を介して通信を確立する他の手段も使用できることが認められよう。
【００７１】
本発明は、本発明の趣旨または基本的な特徴から逸脱することなく、他の特定の形態で実施することもできる。説明した諸実施形態は、すべての点で単に例示的であり、限定的ではないものと見なされるべきである。したがって、本発明の範囲は、以上の説明によってではなく、添付の特許請求の範囲によって示される。特許請求の範囲と等価の意味および範囲に含まれるすべての変更が、特許請求の範囲に包含されるものとする。
【図面の簡単な説明】
【００７２】
【図１Ａ】本発明を実施することができる高忠実度デバイスおよび低忠実度デバイスを有する分散システムを示す図である。
【図１Ｂ】本発明の典型的な実施形態による分散システム内の２つのデバイス間における競合の検出を示す図である。
【図２】本発明の典型的な実施形態による低忠実度デバイスを有する分散システムにおける時刻−日付情報の更新および使用を示す図である。
【図３】本発明の典型的な実施形態によるフィールド内の時刻−日付情報の典型的な標準のフォーマットを示す図である。
【図４】典型的な実施形態による対応する時刻−日付フィールドを有さないデータベース内のプロパティ値に時刻−日付情報を関連付ける方法を示す流れ図である。
【図５】典型的な実施形態による対応する時刻−日付フィールドを有さないデータベース内のプロパティ値とともに時刻−日付情報を受信し、格納する方法を示す流れ図である。
【図６】典型的な実施形態による対応する時刻−日付フィールドを有さないデータベースから受信された時刻−日付情報を使用して、分散コンピューティングシステム内のデバイス間におけるデータ競合を解決する方法を示す流れ図である。
【図７】典型的な実施形態によるプロパティの前回の同期以来、リモート上のプロパティに関する値が変化した時点を判定する方法を示す流れ図である。
【図８】典型的な実施形態による複数のプロパティ値のなかから時刻−日付情報が割り当てられるべきプロパティ値の限られた集合を選択する方法を示す流れ図である。
【図９】本発明の適切な動作環境を提供する典型的なシステムを示す図である。
【図１Ａ】
2007535757.tif 000003
【図１Ｂ】
2007535757.tif 000004
【図２】
2007535757.tif 000005
【図３】
2007535757.tif 000006
【図４】
2007535757.tif 000007
【図５】
2007535757.tif 000008
【図６】
2007535757.tif 000009
【図７】
2007535757.tif 000010
【図８】
2007535757.tif 000011
【図９】
2007535757.tif 000012
【手続補正書】
【提出日】平成19年7月30日(2007.7.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
デバイス間でデータを同期させることができる、対応する時刻−日付フィールドなしでデータベースの中にプロパティを格納するデバイスを有する分散コンピューティングシステムにおいて、時刻−日付情報を前記データベース内のプロパティ値に関連付ける方法であって、
対応する時刻−日付フィールドなしでプロパティを格納するリモートデータベース内の少なくとも１つのリモートプロパティ値に対応する時刻−日付情報を特定する動作と、
前記特定された時刻−日付情報を前記分散コンピューティングシステム内の１つまたは複数のデバイスが解析できる標準のフォーマットでフォーマットする動作と、
前記少なくとも１つのリモートプロパティ値に関連付けられたフィールドの中に格納するために、前記フォーマットされた時刻−日付情報を前記リモートデータベースに送信する動作と
を備えることを特徴とする方法。
【請求項２】
デバイス間でデータを同期させることができる分散コンピューティングシステムにおける方法であって、該分散コンピューティングシステムは、時刻―日付フィールド無しで、データベース内にプロパティを格納するデバイスを有し、前記データベースの中のプロパティ値と時刻―日付情報が関連付けられる前記方法がコンピュータプログラム製品に実装され、該コンピュータプログラム製品は１つまたは複数のコンピュータ可読媒体を有し、該コンピュータ可読媒体上にコンピュータ実行可能命令が記憶されており、前記コンピュータ実行可能命令がプロセッサにより実行されるときに前記分散コンピュータシステムにより実行される前記方法は、
対応する時刻−日付フィールドなしでプロパティを格納するリモートデータベース内の少なくとも１つのリモートプロパティ値に対応する時刻−日付情報を特定する動作と、
前記特定された時刻−日付情報を前記分散コンピューティングシステム内の１つまたは複数のデバイスが解析できる標準のフォーマットでフォーマットする動作と、
前記少なくとも１つのリモートプロパティ値に関連付けられたフィールドの中に格納するために、前記フォーマットされた時刻−日付情報を前記リモートデータベースに送信する動作と
を備えることを特徴とする方法。
【請求項３】
前記標準のフォーマットは、ユニフォームリソースアイデンティファイア（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）であり、前記ユニフォームリソースアイデンティファイアは、プロパティ識別子、前記少なくとも１つのプロパティ値の１つの表現、および前記少なくとも１つのプロパティ値の前記１つに対応する前記時刻−日付情報の表現をそれぞれが含むセグメントに解析されるユニフォームリソースロケータであることを特徴とする請求項１または２に記載の方法。
【請求項４】
前記１つまたは複数のプロパティ値の前記１つの前記表現は、前記少なくとも１つのプロパティ値の前記１つのハッシュであり、前記少なくとも１つのプロパティ値の前記１つに対応する前記時刻−日付情報の前記表現は、秒単位まで格納される、分単位まで格納される、または時間帯とは独立のフォーマットで格納される前記時刻−日付情報の１６進数の１つまたは複数であることを特徴とする請求項３に記載の方法。
【請求項５】
前記少なくとも１つのリモートプロパティ値に関連付けられた前記フィールドは、メモフィールドまたは未使用のフィールドのうちの１つであることを特徴とする請求項１または２に記載の方法。
【請求項６】
前記少なくとも１つのプロパティ値は、総数の関連するプロパティ値の部分集合であり、前記少なくとも１つのプロパティ値は、前記特定された時刻−日付情報が、前記時刻−日付情報に関連する値に基づいて標準のフォーマットでフォーマットされるように選択され、前記時刻−日付情報は、前記部分集合内の前記少なくとも１つのプロパティ値のそれぞれがユーザによって最後に変更された時を特定し、前記部分集合は前記リモートデバイスの前記利用可能なリソースに基づき選択されることを特徴とする請求項１または２に記載の方法。
【請求項７】
選択されなかった前記総数のプロパティ値からのプロパティ値の残りの部分は、プロパティ値の前記残りの部分に関する時刻−日付情報に基づく関連する時刻−日付情報を有する結合された表現値により、前記少なくとも１つのプロパティ値に関連付けられた前記フィールドの中で表されることを特徴とする請求項６に記載の方法。
【請求項８】
前記１つまたは複数のプロパティ値に関する前記時刻−日付情報に関連する前記値は、最新の時刻−日付値であり、前記結合された表現値に関連する前記時刻−日付情報は、プロパティ値の前記残りの部分に関連付けられた最新の時刻−日付値または最古の時刻−日付値の少なくとも１つであることを特徴とする請求項７に記載の方法。
【請求項９】
前記結合された表現は、プロパティ値の前記残りの部分のハッシュであることを特徴とする請求項８に記載の方法。
【請求項１０】
前記利用可能なリソースは、限られたサイズのフィールドであることを特徴とする請求項８に記載の方法。
【請求項１１】
プロパティ値の前記限られた集合の前記選択は、前記少なくとも１つのプロパティ値の前記変更に関連する履歴情報にさらに基づくことを特徴とする請求項８に記載の方法。
【請求項１２】
前記履歴情報は、前記少なくとも１つのプロパティ値のそれぞれが変更される頻度であり、最も頻繁に変更されたプロパティ値群が選択されることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記履歴情報は、前記少なくとも１つのプロパティ値に関する前記頻繁な時刻−日付情報であり、最も新しく変更されたプロパティ値群が選択されることを特徴とする請求項１１に記載の方法。
【請求項１４】
少なくとも１つのリモートプロパティ値に関する現在の値、および前記少なくとも１つのリモートプロパティ値の以前の値に関するリモート表現を受信する動作と、
前記少なくとも１つのリモートプロパティ値に関する前記現在の値から前記少なくとも１つのリモートプロパティ値のローカル表現を生成する動作と、
前記リモート表現を前記ローカル表現と比較する動作と、
前記比較に基づき、前記リモート表現が生成された後、前記少なくとも１つのリモートプロパティ値の前記以前の値が変更されていると判定する動作と
をさらに備えたことを特徴とする請求項１または２に記載の方法。
【請求項１５】
前記リモート表現は、前記少なくとも１つのリモートプロパティ値の前記以前の値のハッシュであり、前記ローカル表現は、前記少なくとも１つのリモートプロパティ値に関する前記現在の値のハッシュであることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記少なくとも１つのリモートプロパティ値に関連付けられた時刻−日付情報のリモート表現を受信する動作と、
前記リモートプロパティの前記以前の値が変更されているという前記判定に基づき、時刻−日付情報の前記リモート表現が信頼できない可能性があると判定する動作と
をさらに備えることを特徴とする請求項１４に記載の方法。
【請求項１７】
前記現在の値と前記リモートプロパティに関連付けられたローカル値の間で競合が存在し、時刻−日付情報の前記リモート表現は、前記競合を解決するために使用されないことを特徴とする請求項１６に記載の方法。
【請求項１８】
ローカル値を使用して前記現在の値が置き換えられ、前記リモート表現は、更新されたリモート表現で置き換えられることを特徴とする請求項１４に記載の方法。
【請求項１９】
前記リモート表現は、前記リモートプロパティの前記以前の値のハッシュであり、前記ローカル表現は、前記リモートプロパティに関する前記現在の値のハッシュであり、前記更新されたリモート表現は、前記ローカル値のハッシュであることを特徴とする請求項１８に記載の方法。
【請求項２０】
前記リモートデータベースから少なくとも１つのリモートプロパティ値、および対応する時刻−日付情報を受信する動作と、
前記少なくとも１つのリモートプロパティ値と対応するローカルプロパティ値の間の競合を検出する動作と、
前記標準のフォーマットに従って前記時刻−日付情報を解析して、前記リモートプロパティ値がいつ変更されたかを示すリモート時刻−日付を特定する動作と、
前記リモート時刻−日付を、前記少なくとも１つのローカルプロパティ値がいつ変更されたかを示すローカル時刻−日付と比較する動作と、
前記比較の結果に基づいて前記競合を解決する動作と
をさらに備えたことを特徴とする請求項１または２に記載の方法。
【請求項２１】
前記標準のフォーマットは、ユニフォームリソースアイデンティファイアであることを特徴とする請求項２０に記載の方法。
【請求項２２】
前記ユニフォームリソースアイデンティファイアは、セグメントに解析されるユニフォームリソースロケータであり、前記セグメントの１つは、前記少なくとも１つのリモートプロパティ値に対応するプロパティＩＤ、前記少なくとも１つのリモートプロパティ値のリモート表現、および前記少なくとも１つのリモートプロパティ値に対応する前記時刻−日付情報の表現を含むことを特徴とする請求項２１に記載の方法。
【請求項２３】
前記少なくとも１つのリモートプロパティ値の前記リモート表現は、前記少なくとも１つのリモートプロパティ値のハッシュであることを特徴とする請求項２２に記載の方法。
【請求項２４】
前記少なくとも１つのリモートプロパティ値に対応する前記時刻−日付情報の前記表現は、秒単位まで格納される、分単位まで格納される、または時間帯とは独立のフォーマットで格納される前記時刻−日付情報の１６進数の１つまたは複数であることを特徴とする請求項２２に記載の方法。
【請求項２５】
前記少なくとも１つのリモートプロパティのローカル表現を生成する動作と、
前記リモート表現を前記ローカル表現と比較する動作と、
前記比較に基づき、前記リモート表現が生成された後、前記リモートプロパティ値が変化していないと判定する動作と
をさらに備えることを特徴とする請求項２２に記載の方法。
【手続補正書】
【提出日】平成19年10月18日(2007.10.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
デバイス間でデータを同期させることができる、対応する時刻−日付フィールドなしでデータベースの中にプロパティを格納するデバイスを有する分散コンピューティングシステムにおいて、時刻−日付情報を前記データベース内のプロパティ値に関連付ける方法であって、
対応する時刻−日付フィールドなしでプロパティを格納するリモートデータベース内の少なくとも１つのリモートプロパティ値に対応する時刻−日付情報を特定する動作と、
前記特定された時刻−日付情報を前記分散コンピューティングシステム内の１つまたは複数のデバイスが解析できる標準のフォーマットでフォーマットする動作と、
前記少なくとも１つのリモートプロパティ値に関連付けられたフィールドの中に格納するために、前記フォーマットされた時刻−日付情報を前記リモートデータベースに送信する動作と
を備えることを特徴とする方法。
【請求項２】
デバイス間でデータを同期させることができる分散コンピューティングシステムにおいて、該分散コンピューティングシステムは、時刻―日付フィールド無しで、データベース内にプロパティを格納するデバイスを有し、前記データベースの中のプロパティ値と時刻―日付情報が関連付けられるプログラムを格納する記録媒体であって、
対応する時刻−日付フィールドなしでプロパティを格納するリモートデータベース内の少なくとも１つのリモートプロパティ値に対応する時刻−日付情報を特定する手段と、
前記特定された時刻−日付情報を前記分散コンピューティングシステム内の１つまたは複数のデバイスが解析できる標準のフォーマットでフォーマットする手段と
前記少なくとも１つのリモートプロパティ値に関連付けられたフィールドの中に格納するために、前記フォーマットされた時刻−日付情報を前記リモートデータベースに送信する手段と
をコンピュータに実行させるプログラムを格納する記録媒体。
【請求項３】
前記標準のフォーマットは、ユニフォームリソースアイデンティファイア（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）であり、前記ユニフォームリソースアイデンティファイアは、プロパティ識別子、前記少なくとも１つのプロパティ値の１つの表現、および前記少なくとも１つのプロパティ値の前記１つに対応する前記時刻−日付情報の表現をそれぞれが含むセグメントに解析されるユニフォームリソースロケータであることを特徴とする請求項１に記載の方法。
【請求項４】
前記１つまたは複数のプロパティ値の前記１つの前記表現は、前記少なくとも１つのプロパティ値の前記１つのハッシュであり、前記少なくとも１つのプロパティ値の前記１つに対応する前記時刻−日付情報の前記表現は、秒単位まで格納される、分単位まで格納される、または時間帯とは独立のフォーマットで格納される前記時刻−日付情報の１６進数の１つまたは複数であることを特徴とする請求項３に記載の方法。
【請求項５】
前記少なくとも１つのリモートプロパティ値に関連付けられた前記フィールドは、メモフィールドまたは未使用のフィールドのうちの１つであることを特徴とする請求項１に記載の方法。
【請求項６】
前記少なくとも１つのプロパティ値は、総数の関連するプロパティ値の部分集合であり、前記少なくとも１つのプロパティ値は、前記特定された時刻−日付情報が、前記時刻−日付情報に関連する値に基づいて標準のフォーマットでフォーマットされるように選択され、前記時刻−日付情報は、前記部分集合内の前記少なくとも１つのプロパティ値のそれぞれがユーザによって最後に変更された時を特定し、前記部分集合は前記リモートデバイスの前記利用可能なリソースに基づき選択されることを特徴とする請求項１に記載の方法。
【請求項７】
選択されなかった前記総数のプロパティ値からのプロパティ値の残りの部分は、プロパティ値の前記残りの部分に関する時刻−日付情報に基づく関連する時刻−日付情報を有する結合された表現値により、前記少なくとも１つのプロパティ値に関連付けられた前記フィールドの中で表されることを特徴とする請求項６に記載の方法。
【請求項８】
前記１つまたは複数のプロパティ値に関する前記時刻−日付情報に関連する前記値は、最新の時刻−日付値であり、前記結合された表現値に関連する前記時刻−日付情報は、プロパティ値の前記残りの部分に関連付けられた最新の時刻−日付値または最古の時刻−日付値の少なくとも１つであることを特徴とする請求項７に記載の方法。
【請求項９】
前記結合された表現は、プロパティ値の前記残りの部分のハッシュであることを特徴とする請求項８に記載の方法。
【請求項１０】
前記利用可能なリソースは、限られたサイズのフィールドであることを特徴とする請求項８に記載の方法。
【請求項１１】
プロパティ値の前記限られた集合の前記選択は、前記少なくとも１つのプロパティ値の前記変更に関連する履歴情報にさらに基づくことを特徴とする請求項８に記載の方法。
【請求項１２】
前記履歴情報は、前記少なくとも１つのプロパティ値のそれぞれが変更される頻度であり、最も頻繁に変更されたプロパティ値群が選択されることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記履歴情報は、前記少なくとも１つのプロパティ値に関する前記頻繁な時刻−日付情報であり、最も新しく変更されたプロパティ値群が選択されることを特徴とする請求項１１に記載の方法。
【請求項１４】
少なくとも１つのリモートプロパティ値に関する現在の値、および前記少なくとも１つのリモートプロパティ値の以前の値に関するリモート表現を受信する動作と、
前記少なくとも１つのリモートプロパティ値に関する前記現在の値から前記少なくとも１つのリモートプロパティ値のローカル表現を生成する動作と、
前記リモート表現を前記ローカル表現と比較する動作と、
前記比較に基づき、前記リモート表現が生成された後、前記少なくとも１つのリモートプロパティ値の前記以前の値が変更されていると判定する動作と
をさらに備えたことを特徴とする請求項１に記載の方法。
【請求項１５】
前記リモート表現は、前記少なくとも１つのリモートプロパティ値の前記以前の値のハッシュであり、前記ローカル表現は、前記少なくとも１つのリモートプロパティ値に関する前記現在の値のハッシュであることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記少なくとも１つのリモートプロパティ値に関連付けられた時刻−日付情報のリモート表現を受信する動作と、
前記リモートプロパティの前記以前の値が変更されているという前記判定に基づき、時刻−日付情報の前記リモート表現が信頼できない可能性があると判定する動作と
をさらに備えることを特徴とする請求項１４に記載の方法。
【請求項１７】
前記現在の値と前記リモートプロパティに関連付けられたローカル値の間で競合が存在し、時刻−日付情報の前記リモート表現は、前記競合を解決するために使用されないことを特徴とする請求項１６に記載の方法。
【請求項１８】
ローカル値を使用して前記現在の値が置き換えられ、前記リモート表現は、更新されたリモート表現で置き換えられることを特徴とする請求項１４に記載の方法。
【請求項１９】
前記リモート表現は、前記リモートプロパティの前記以前の値のハッシュであり、前記ローカル表現は、前記リモートプロパティに関する前記現在の値のハッシュであり、前記更新されたリモート表現は、前記ローカル値のハッシュであることを特徴とする請求項１８に記載の方法。
【請求項２０】
前記リモートデータベースから少なくとも１つのリモートプロパティ値、および対応する時刻−日付情報を受信する動作と、
前記少なくとも１つのリモートプロパティ値と対応するローカルプロパティ値の間の競合を検出する動作と、
前記標準のフォーマットに従って前記時刻−日付情報を解析して、前記リモートプロパティ値がいつ変更されたかを示すリモート時刻−日付を特定する動作と、
前記リモート時刻−日付を、前記少なくとも１つのローカルプロパティ値がいつ変更されたかを示すローカル時刻−日付と比較する動作と、
前記比較の結果に基づいて前記競合を解決する動作と
をさらに備えたことを特徴とする請求項１に記載の方法。
【請求項２１】
前記標準のフォーマットは、ユニフォームリソースアイデンティファイアであることを特徴とする請求項２０に記載の方法。
【請求項２２】
前記ユニフォームリソースアイデンティファイアは、セグメントに解析されるユニフォームリソースロケータであり、前記セグメントの１つは、前記少なくとも１つのリモートプロパティ値に対応するプロパティＩＤ、前記少なくとも１つのリモートプロパティ値のリモート表現、および前記少なくとも１つのリモートプロパティ値に対応する前記時刻−日付情報の表現を含むことを特徴とする請求項２１に記載の方法。
【請求項２３】
前記少なくとも１つのリモートプロパティ値の前記リモート表現は、前記少なくとも１つのリモートプロパティ値のハッシュであることを特徴とする請求項２２に記載の方法。
【請求項２４】
前記少なくとも１つのリモートプロパティ値に対応する前記時刻−日付情報の前記表現は、秒単位まで格納される、分単位まで格納される、または時間帯とは独立のフォーマットで格納される前記時刻−日付情報の１６進数の１つまたは複数であることを特徴とする請求項２２に記載の方法。
【請求項２５】
前記少なくとも１つのリモートプロパティのローカル表現を生成する動作と、
前記リモート表現を前記ローカル表現と比較する動作と、
前記比較に基づき、前記リモート表現が生成された後、前記リモートプロパティ値が変化していないと判定する動作と
をさらに備えることを特徴とする請求項２２に記載の方法。
【国際調査報告】
2007535757.tif 000013
2007535757.tif 000014