(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6385336
(24)【登録日】2018年8月17日
(45)【発行日】2018年9月5日
(54)【発明の名称】クラウド同期システムのためのテレメトリ・システム
(51)【国際特許分類】
G06F 12/00 20060101AFI20180827BHJP
G06F 13/00 20060101ALI20180827BHJP
【FI】
G06F12/00 533J
G06F13/00 520F
【請求項の数】10
【全頁数】15
(21)【出願番号】特願2015-504693(P2015-504693)
(86)(22)【出願日】2013年4月3日
(65)【公表番号】特表2015-520435(P2015-520435A)
(43)【公表日】2015年7月16日
(86)【国際出願番号】US2013035049
(87)【国際公開番号】WO2013152058
(87)【国際公開日】20131010
【審査請求日】2016年3月9日
(31)【優先権主張番号】13/439,859
(32)【優先日】2012年4月5日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】チャン,リチャード
(72)【発明者】
【氏名】リューダー,ロジャー
【審査官】
小林 哲雄
(56)【参考文献】
【文献】
特開2002−032254(JP,A)
【文献】
特表2007−520760(JP,A)
【文献】
米国特許出願公開第2007/0283050(US,A1)
【文献】
特表2005−537579(JP,A)
【文献】
特表2009−510624(JP,A)
【文献】
特開2010−049647(JP,A)
【文献】
特開2004−171278(JP,A)
【文献】
特表2011−511362(JP,A)
【文献】
欧州特許出願公開第01681652(EP,A1)
【文献】
特開2011−118771(JP,A)
【文献】
欧州特許出願公開第02429134(EP,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 13/00
(57)【特許請求の範囲】
【請求項1】
マシンにより実施される方法であって、
クラウド同期システムのクラウド・ユーザ・アカウント内に記憶されたマッチング・ファイルのマッチング・ファイル・メタデータ・セットを受信するステップと、
クライアント・デバイス内に記憶されたローカル・ファイルに対する前記マッチング・ファイル・メタデータ・セットの同期検証を実行するステップと、
前記同期検証により判定された同期エラーを記述するテレメトリ・レポートを作成するステップと、
前記テレメトリ・レポートをテレメトリ・サーバに送信するステップと、
前記同期エラーを修正するためのエラー・パッチを有するレビュー・データ・セットを有するレビュー・レポートを、前記テレメトリ・サーバから受信するステップと、
を含む、方法。
【請求項2】
前記クライアント・デバイス内に記憶された前記ローカル・ファイルに対する前記マッチング・ファイル・メタデータ・セットの前記同期検証は、前記ローカル・ファイルと前記マッチング・ファイルとの同期の終了時に実行される、請求項1記載の方法。
【請求項3】
前記マッチング・ファイル・メタデータ・セットから、前記同期エラーのイベント時間を決定するステップ
をさらに含む、請求項1記載の方法。
【請求項4】
前記同期検証のために前記マッチング・ファイル・メタデータ・セットと比較するためのローカル・ファイル・メタデータ・セットを作成するステップ
をさらに含む、請求項1記載の方法。
【請求項5】
前記ローカル・ファイルと前記マッチング・ファイルとの再同期を実行するステップ
をさらに含む、請求項1記載の方法。
【請求項6】
前記テレメトリ・レポートのための、前記ローカル・ファイルと前記マッチング・ファイルとの同期中のアサーション失敗を受信するステップ
をさらに含む、請求項1記載の方法。
【請求項7】
同期パフォーマンス・メトリックを前記テレメトリ・レポートに記録するために、前記ローカル・ファイルと前記マッチング・ファイルとの同期をトラッキングするステップ
をさらに含む、請求項1記載の方法。
【請求項8】
プロセッサに、
クライアント・デバイスから、クラウド・サービスを記述する、前記クライアント・デバイスにて蓄積されたテレメトリ・データ・セットを有するテレメトリ・レポートを受信するステップであって、前記テレメトリ・データ・セットは、前記クライアント・デバイス内に記憶されたローカル・ファイルに対する、クラウド同期システムのクラウド・ユーザ・アカウント内に記憶されたマッチング・ファイルのマッチング・ファイル・メタデータ・セットの同期検証により判定された同期エラーを説明する同期エラー・データを有する、ステップと、
前記同期エラーを修正するためのエラー・パッチを有するレビュー・データ・セットを有するレビュー・レポートを作成するステップと、
前記同期エラーを修正するための前記エラー・パッチを有する前記レビュー・データ・セットを有する前記レビュー・レポートを前記クライアント・デバイスに送信するステップと、
を含む、方法を実行させるプログラム。
【請求項9】
クラウド同期システムのクラウド・ユーザ・アカウント内のマッチング・ファイルと同期されたローカル・ファイルを記憶するデータ・ストレージと、
クラウド・サーバから、前記マッチング・ファイルのマッチング・ファイル・メタデータ・セットを受信するネットワーク・インタフェースと、
前記ローカル・ファイルに対する前記マッチング・ファイル・メタデータ・セットの同期検証を実行し、前記同期検証により判定された同期エラーを記述するテレメトリ・レポートを作成するプロセッサと、
を備え、
前記ネットワーク・インタフェースは、前記テレメトリ・レポートをテレメトリ・サーバに送信し、前記同期エラーを修正するためのエラー・パッチを有するレビュー・データ・セットを有するレビュー・レポートを、前記テレメトリ・サーバから受信する、クライアント・デバイス。
【請求項10】
前記テレメトリ・レポートは、アサーション失敗データ、同期ストール・データ、及び同期パフォーマンス・メトリックのうち少なくとも1つを有する、請求項9記載のクライアント・デバイス。
【発明の詳細な説明】
【背景技術】
【0001】
最近のコンピュータ・ユーザは、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、又は、「スマートフォン」と呼ばれる計算能力を備えた携帯電話等の複数のコンピュータ・デバイスを有する場合がある。ユーザは、1つのデバイス内のファイルを、複数の他のデバイスにわたるファイルと同期された状態に保つ場合がある。ユーザは、1つのデバイス内のファイルに対する任意の変更を、他のデバイス内のそのファイルの他のコピーに移す場合がある。
【発明の概要】
【課題を解決するための手段】
【0002】
この概要は、詳細な説明において以下でさらに説明されるコンセプトのうち選択したものを簡略化した形で紹介するために提供される。この概要は、特許請求される主題の主要な特徴又は必要不可欠な特徴を特定することを意図するものではないし、特許請求される主題の範囲を限定するよう使用されることを意図するものでもない。
【0003】
以下で説明する実施形態は、正確さ及びパフォーマンスを改善するためのクラウド同期システムをトラッキングするテレメトリ・システムに関する。サービス・プロキシは、クラウド同期システムのクラウド・ユーザ・アカウント内に記憶されたマッチング・ファイルのマッチング・ファイル・メタデータ・セットを受信することができる。サービス・プロキシは、クライアント・デバイス内に記憶されたローカル・ファイルに対するマッチング・ファイル・メタデータ・セットの同期検証を実行することができる。サービス・プロキシは、同期検証により判定された同期エラーを記述するテレメトリ・レポートを作成することができる。
【図面の簡単な説明】
【0004】
上述した利点及び他の利点、並びに特徴を得ることができる態様を説明するために、添付の図面に例示される特定の実施形態を参照することにより、より詳細な記載が説明され提供される。これらの図面は典型的な実施形態のみを表すに過ぎず、したがって、その範囲を限定するものとして考えられるべきではないことを理解されたい。添付の図面を使用することにより、実施例が、追加的な具体性及び詳細さをもって記載され説明される。
【
図1】クラウド同期ネットワークの一実施形態のブロック図を示す。
【
図2】コンピューティング・デバイスの一実施形態のブロック図を示す。
【
図3】マッチング・ファイル・メタデータ・セット・メッセージの一実施形態のブロック図を示す。
【
図4】テレメトリ・レポートの一実施形態のブロック図を示す。
【
図5】テレメトリ・レコードの一実施形態のブロック図を示す。
【
図6】レビュー・レポートの一実施形態のブロック図を示す。
【
図7】クライアント・デバイスを用いてローカル・ファイルを同期する方法の一実施形態のフローチャートを示す。
【
図8】同期検証を実行する方法の一実施形態のフローチャートを示す。
【
図9】クラウド・サーバを用いてマッチング・ファイルを同期する方法の一実施形態のフローチャートを示す。
【
図10】テレメトリ・サーバにおいてテレメトリ・レポートを処理する方法の一実施形態のフローチャートを示す。
【発明を実施するための形態】
【0005】
実施形態について、以下で詳細に説明する。特定の実施例について説明されるが、これは例示の目的で説明されるに過ぎないことを理解すべきである。当業者は、本開示の主題の精神及び範囲から逸脱することなく、他のコンポーネント及び構成を使用できることを認識するであろう。実施例は、マシンにより実施される方法であってもよいし、少なくとも1つのプロセッサのための、方法を詳述する命令のセットを記憶した有体のマシン読み取り可能な媒体であってもよいし、又は、クライアント・デバイスであってもよい。
【0006】
ユーザは、タブレット・コンピュータ、ラップトップ・コンピュータ、デスクトップ・コンピュータ、及びスマートフォン等の複数のデバイス上に、データ・ファイルのコピーを維持する場合がある。データ・ファイルは、テキスト・ファイル、デジタル・イメージ・ファイル、オーディオ・ファイル、ビデオ・ファイル、又は実行可能なソフトウェア・アプリケーションであってよい。ユーザは、クラウド・コンピューティングを用いて、そのデータ・ファイルのコピーを保存することができる。クラウド・コンピューティングにより、サービス・プロキシが、ユーザ・デバイスの所定の機能を1以上のネットワーク・デバイスにオフロードすることが可能となる。これがクラウドと呼ばれる。
【0007】
ユーザは、クラウド・ユーザ・アカウントを用いて、クラウドにより提供される任意のクラウド・サービスにアクセスすることができる。クラウドは、ユーザ・デバイスの代わりに、処理機能及びバックアップ記憶機能を実行することができる。ユーザは、ネットワークを介してユーザに関連付けられた各デバイスに少なくとも断続的に接続されるクラウド・サーバ上にデータ・ファイルのコピーを記憶することができる。データ・ファイルが、1つのユーザ・デバイス上で更新されるたびに、クラウド・ユーザ・アカウントを用いて、データ・ファイルを、クラウド・サーバ上及び任意の他のユーザ・デバイス上のコピーと同期することができる。
【0008】
テレメトリ・システムは、クラウド同期システム等のクラウド・サービス中に正確さ及びパフォーマンスをトラッキングするために、クラウドの各エンドポイントからデータを収集することができる。クライアント・デバイスは、同期をトラッキングすることができ、テレメトリ・サーバに送信するために、テレメトリ・レポートを作成することができる。クライアント・デバイスは、同期が正しく生じたことを検証するために、ファイル・メタデータを使用することができる。クライアント・デバイスはまた、同期プロセス中に生じたアサーション失敗又は同期ストール(synchronization stall)をレポートすることができる。
【0009】
次いで、テレメトリ・サーバは、同期プロセス中に生じた同期エラーを実証して同期エラーの原因を突き止めるために、そのデータを使用することができる。テレメトリ・サーバは、共通エラー又はエラー・パターンを特定することができ、そうしたエラーを修正するために、エラー・パッチを自動的に提供することができる。テレメトリ・サーバは、クライアント・デバイスのユーザ又はクラウド同期システムの管理者に、レビュー・レポートを送信することができる。レビュー・レポートは、テレメトリ・データを、クラウド同期システムをカバーするサービスワイド・パフォーマンス・レコード(service-wide performance record)、クラウド同期システム・ユーザの異なる層グループをカバーする集合的ユーザ・パフォーマンス・レコード(aggregate user performance record)、及び個別的ユーザ・パフォーマンス・レコードに整理し得る。
【0010】
したがって、一実施形態において、テレメトリ・システムは、パフォーマンスを改善するために、クラウド同期システムをトラッキングすることができる。サービス・プロキシは、クラウド同期システムのクラウド・ユーザ・アカウント内に記憶されたマッチング・ファイルのマッチング・ファイル・メタデータ・セットを受信することができる。サービス・プロキシは、クライアント・デバイス内に記憶されたローカル・ファイルに対するマッチング・ファイル・メタデータ・セットの同期検証を実行することができる。サービス・プロキシは、同期検証により判定された同期エラーを記述するテレメトリ・レポートを作成することができる。
【0011】
図1は、クラウド同期ネットワーク100の一実施形態のブロック図を示している。クライアント・デバイス110は、テキスト・ファイル、デジタル・オーディオ・ファイル、デジタル・イメージ・ファイル、デジタル・ビデオ・ファイル、アプリケーション、又は他のデータ・ファイル等のローカル・ファイル112を記憶することができる。クライアント・デバイス110は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、スマートフォン、又は他のコンピューティング・デバイスであってよい。クライアント・デバイス110は、クラウド・クライアント・インタフェースとして動作してクラウド同期システム等のクラウド・サービスにサブスクライブするサービス・プロキシ114を使用することができる。サービス・プロキシ114は、クラウド同期ネットワーク100全体を通じてローカル・ファイル112の同期されたコピーを維持するために、クライアント同期エンジン116を実行することができる。
【0012】
サービス・プロキシ114は、クラウド・サーバ130に接続するために、データ・ネットワーク接続120を用いることができる。クラウド・サーバ130は、クライアント・デバイス110に関連付けられたユーザのためのクラウド・ユーザ・アカウント132を記憶することができる。クラウド・ユーザ・アカウント132は、クライアント・デバイス110上に記憶されたローカル・ファイル112のためのマッチング・ファイル134を維持することができる。マッチング・ファイル134は、クライアント・デバイス110上に記憶されたローカル・ファイル112のバージョンのコピーである。クラウド・サーバ130は、予め設定されたスケジュールで、あるいは、ローカル・ファイル112又はマッチング・ファイル134のいずれかが更新されるたびに、ローカル・ファイル112とマッチング・ファイル134とを同期するために、クラウド同期エンジン136を実行することができる。
【0013】
さらに、関連ユーザ・デバイス140は、マッチング・ファイル134を維持するクラウド・ユーザ・アカウント132のインカネーション(incarnation)として動作する関連サービス・プロキシ142を有することができる。関連ユーザ・デバイス140は、マッチング・ファイル134と、クラウド・サーバ130上のマッチング・ファイル134又はクライアント・デバイス110上のローカル・ファイル112のいずれかとを同期するために、関連同期エンジン144を使用することができる。関連ユーザ・デバイス140は、クラウド・ユーザ・アカウント132に登録された任意のデバイスである。関連ユーザ・デバイス140は、別のクライアント・デバイス110とみなされてもよいし、逆であってもよい。
【0014】
テレメトリ・サーバ150は、クラウド同期システムの正確さ及びパフォーマンスをトラッキングするために、クラウド内にテレメトリ・システムを維持することができる。テレメトリ・サーバ150は、クラウド・サーバ130を介してアクセスされ得る、あるいは、データ・ネットワーク接続120を介して直接的にアクセスされ得る。テレメトリ・サーバ150は、クライアント・デバイス110又はクラウド・サーバ130からテレメトリ・レポートを受信することができる。テレメトリ・レポートは、同期の正確さ及びパフォーマンスを記述するものであり、生じた任意の同期エラーを含む。次いで、テレメトリ・サーバ150は、クラウド同期システムのパフォーマンスを記述する、ユーザに示されるレビュー・レポートを、クライアント・デバイス110に提供することができる。テレメトリ・サーバ150は、共通エラー又はエラー・パターン、及びそうしたエラーを修正することができるエラー・パッチ又はユーザ・アクションを記憶するための既知のエラー・データベース152を維持することができる。
【0015】
図2は、クライアント・デバイス110、関連ユーザ・デバイス140、クラウド・サーバ130、又はテレメトリ・サーバ150として動作することができる例示的なコンピューティング・デバイス200のブロック図を示している。コンピューティング・デバイス200は、テレメトリ・システム又はクラウド同期システムを実装するために、ハードウェア、ソフトウェア、ファームウェア、及びシステムオンチップ技術のうち1以上を組み合わせることができる。コンピューティング・デバイス200は、バス210、プロセッサ220、メモリ230、読み取り専用メモリ(ROM)240、ストレージ・デバイス250、入力デバイス260、出力デバイス270、及びネットワーク・インタフェース280を含み得る。バス210又は他のコンポーネント間通信システムにより、コンピューティング・デバイス200のコンポーネント間での通信が可能となる。
【0016】
プロセッサ220は、命令のセットを解釈し実行する少なくとも1つの従来型のプロセッサ又はマイクロプロセッサを含み得る。メモリ230は、ランダム・アクセス・メモリ(RAM)であってもよいし、又は、プロセッサ220により実行される情報及び命令を記憶する別のタイプの動的なストレージ・デバイスであってもよい。メモリ230はまた、プロセッサ220による命令の実行中に使用される一時変数又は他の中間情報を記憶することもできる。ROM240は、従来型のROMデバイス、又は、プロセッサ220のための静的な情報及び命令を記憶する別のタイプの静的なストレージ・デバイスを含み得る。ストレージ・デバイス250は、例えば、磁気記録媒体又は光記録媒体及びその対応するドライブといった任意のタイプの有体のマシン読み取り可能な媒体を含み得る。有体のマシン読み取り可能な媒体は、トランジトリな媒体又は信号ではなく、マシン読み取り可能なコード又は命令を記憶する物理媒体である。ストレージ・デバイス250は、方法を詳述した命令のセットを記憶することができ、命令のセットは、1以上のプロセッサにより実行されるときに、1以上のプロセッサに前述の方法を実行させる。ストレージ・デバイス250はまた、テレメトリ・レコードを記憶するための、データベース又はデータベース・インタフェースであってよい。
【0017】
入力デバイス260は、キーボード、マウス、音声認識デバイス、マイクロフォン、ヘッドセット、タッチ・スクリーン等、ユーザが情報をコンピューティング・デバイス200に入力することを可能にする1以上の従来型の機構を含み得る。出力デバイス270は、ディスプレイ、プリンタ、1以上のスピーカ、ヘッドセット、又は、メモリ若しくは磁気ディスク若しくは光ディスク及び対応するディスクドライブ等の媒体等、ユーザに情報を出力する1以上の従来型の機構を含み得る。ネットワーク・インタフェース280は、コンピューティング・デバイス200が他のデバイス又はネットワークと通信することを可能にするトランシーバのような機構を含み得る。ネットワーク・インタフェース280は、無線インタフェースであってもよいし、有線インタフェースであってもよいし、又は光インタフェースであってもよい。
【0018】
コンピューティング・デバイス200は、例えば、メモリ230、磁気ディスク、又は光ディスクといったコンピュータ読み取り可能な媒体に含まれる一連の命令をプロセッサ220が実行することに応じて、そのような機能を実行することができる。そのような命令は、ストレージ・デバイス250等の別のコンピュータ読み取り可能な媒体からメモリ230に読み込まれてもよいし、又は、ネットワーク・インタフェース280を介して別個のデバイスからメモリ230に読み込まれてもよい。
【0019】
図3は、マッチング・ファイル・メタデータ・セット・メッセージ300の一実施形態のブロック図を示している。マッチング・ファイル・メタデータ・セット・メッセージ300は、マッチング・ファイル・メタデータ・セット・メッセージ300が送信されている先であるクライアント・デバイス110を示すために、クライアント・デバイス・アドレス302を有することができる。マッチング・ファイル・メタデータ・セット・メッセージ300は、マッチング・ファイル・メタデータ・セット304をクライアント・デバイス110に送信することができる。マッチング・ファイル・メタデータ・セット304は、マッチング・ファイル134の特性を記述するものである。マッチング・ファイル・メタデータ・セット304は、マッチング・ファイル134を識別するファイル名306、マッチング・ファイル134の記憶位置を記述するファイル階層308、マッチング・ファイル134のサイズ310、マッチング・ファイル134のファイル・ハッシュ312、及び、マッチング・ファイル134が変更された最後の時間を識別するタイムスタンプ314を有することができる。ファイル・ハッシュ312は、ハッシュ関数をマッチング・ファイル134の中身に適用することにより生成される値である。マッチング・ファイル134のファイル・ハッシュ312をローカル・ファイル112のファイル・ハッシュ312と比較することにより、プロセッサは、マッチング・ファイル134がローカル・ファイル112と同一であるかどうかを判定することができる。
【0020】
図4は、テレメトリ・レポート400の一実施形態のブロック図を示している。テレメトリ・レポート400は、テレメトリ・レポート400が送信されている先であるテレメトリ・サーバ150を示すために、テレメトリ・サーバ・アドレス402を有することができる。テレメトリ・レポート400は、テレメトリ・データ・セット404をテレメトリ・サーバ150に送信することができる。テレメトリ・データ・セット404は、同期中のクラウド同期システムのパフォーマンスを記述することができる。テレメトリ・データ・セット404は、任意の数のタイプのテレメトリ・データを含むことができる。
【0021】
例えば、テレメトリ・データ・セット404は、クライアント・デバイス110を説明するユーザ識別子406を有することができる。テレメトリ・データ・セット404は、ファイル・タイプ及びファイル作成者等、ローカル・ファイル112又はマッチング・ファイル134を説明するデータ・ファイル記述408を有することができる。テレメトリ・データ・セット404は、バージョン番号又は開発者等、ローカル・ファイル112又はマッチング・ファイル134を読むために使用されているソフトウェアを説明するソフトウェア(SW)記述410を有することができる。
【0022】
テレメトリ・データ・セット404は、同期検証により特定された同期エラーを説明する同期エラー・データ412を、その同期エラーのイベント時間414とともに有することができる。イベント時間414は、同期検証の時間ではなく、メタデータ・タイムスタンプ314により決定される同期エラーの時間を示すことができる。
【0023】
アサーション失敗時に取られるアサーション・ログ・データ418とともに、テレメトリ・データ・セット404内のアサーション失敗データ416は、ローカル・ファイル112とマッチング・ファイル134との同期中に生じたアサーション失敗を記述することができる。アサーション失敗データ416は、デバッグ・アサーション、リテール・アサーション、シッピング・アサーション(shipping assertion)、又は他のアサーション等、任意の失敗したアサーションを、デバッグのためにテレメトリ・サーバ150にレポートすることができる。
【0024】
同期ストール時に取られるストール・ログ・データ422とともに、テレメトリ・データ・セット404内の同期ストール・データ420は、ローカル・ファイル112とマッチング・ファイル134との同期中に生じた同期ストールを記述することができる。サービス・プロキシ114は、同期を進展させるために、自己的に失敗の原因を突き止めようと試みることができる。例えば、アップロードが、「失敗した条件(precondition failed)」から失敗に終わったが、その後の変更列挙(change enumeration)が、修正がないこと、及び進展がないことを示すエラーを返す場合、サービス・プロキシ114は、ストールを特定することができる。サービス・プロキシ114は、クラウド・サービスが、アップロードを許可するまで、又は、クラウド・サービスが、アップロードが失敗した理由を返すまで、さらなる進展がないことに基づいて、ストールを特定することができる。
【0025】
テレメトリ・データ・セット404は、同期が成功したかどうかを含む、ローカル・ファイル112とマッチング・ファイル134との同期をトラッキングする同期パフォーマンス・メトリック424を記述することができる。同期パフォーマンス・メトリック424は、成功率又は失敗率、同期コール時間、帯域幅使用、クライアント・デバイス110上でのプロセッサ使用率、及び他のメトリック等、同期の実行を記述する。同期パフォーマンス・メトリック424は、テレメトリ・プロセスにより使用されるリソースを除外することができる。
【0026】
図5は、テレメトリ・レコード500の一実施形態のブロック図を示している。テレメトリ・サーバ150は、テレメトリ・レコード500を記憶することができる。テレメトリ・サーバ150又は管理者は、新たな問題を特定するために、テレメトリ・レコード500をテレメトリ・レポート400と比較することができる。テレメトリ・レコード500は、クラウド・ユーザ・アカウント132に関連付けられたユーザを記述するユーザ層データ・セット502を有することができる。例えば、ユーザ層データ・セット502は、ユーザの場所、ユーザにより同期されたファイルのタイプ、並びに、ユーザ及びユーザのファイルに関する他のデータを記述することができる。テレメトリ・レコード500は、テレメトリ・レポート400を送信するクライアント・デバイス110を説明するデバイス・プロファイル504を有することができる。例えば、デバイス・プロファイル504は、クライアント・デバイス110のタイプ、処理、接続速度、メモリ、又はクライアント・デバイス110の他の特性を記述することができる。テレメトリ・レコード500は、ユーザ層データ・セット502及びデバイス・プロファイル504を、テレメトリ・データ・セット404に関連付けることができる。
【0027】
図6は、レビュー・レポート600の一実施形態のブロック図を示している。レビュー・レポート600は、レビュー・レポート600が送信されている先のクライアント・デバイス110を示すために、クライアント・デバイス・アドレス602を有することができる。レビュー・レポート600は、レビュー・データ・セット604をクライアント・デバイス110に送信することができる。レビュー・データ・セット604は、テレメトリ・レポート400内で特定された同期エラーを修正するためのエラー・パッチ606を有することができる。
【0028】
レビュー・データ・セット604は、サービスワイド・パフォーマンス・レコード608、集合的ユーザ・パフォーマンス・レコード610、又は個別的ユーザ・パフォーマンス・レコード612を有することができる。サービスワイド・パフォーマンス・レコード608は、アップ時間、成功率、及びクラウド同期システムのパフォーマンスを説明する他のメトリック等、クラウド同期システムの全体的なパフォーマンスをトラッキングすることができる。さらに、サービスワイド・パフォーマンス・レコード608は、マッチング・ファイル134を伴わないローカル・ファイル112、ローカル・ファイル112を伴わないマッチング・ファイル134、マッチング・ファイル134とは異なるファイル・サイズを有するローカル・ファイル112、マッチング・ファイル134とは異なるバージョンを有するローカル・ファイル112、マッチング・ファイル134とは異なるタイムスタンプを有するローカル・ファイル112、及び他のメトリック等、クラウド同期システムにより正しく同期されたファイルの数をトラッキングすることができる。集合的ユーザ・パフォーマンス・レコード610は、ユーザ・グループのパフォーマンス及び正確さを示すために、層及びパフォーマンス傾向に基づいてユーザのグループを収集することができる。個別的ユーザ・パフォーマンス・レコード612は、クライアント・デバイス110のユーザに関連付けられたデバイスのパフォーマンス及び正確さをトラッキングすることができる。あるいは、個別的ユーザ・パフォーマンス・レコード612は、クライアント・デバイス110に限定されてもよい。個別的ユーザ・パフォーマンス・レコード612は、ユーザがカスタマイズ可能なタイムライン614として表現することができる。ユーザは、タイムライン・フォーム内にどのメトリックを表示すべきかを選択することにより、ユーザがカスタマイズ可能なタイムライン614をカスタマイズすることができる。
【0029】
図7は、クライアント・デバイス110を用いてローカル・ファイル112を同期する方法700の一実施形態のフローチャートを示している。サービス・プロキシ114は、ローカル・ファイル112をクライアント・デバイス110上に記憶することができる(ブロック702)。サービス・プロキシ114は、ローカル・ファイル112を、クラウド同期システムのクラウド・ユーザ・アカウント132内に記憶されたマッチング・ファイル134と同期することができる(ブロック704)。サービス・プロキシ114は、同期パフォーマンス・メトリック424をテレメトリ・レポート400に記録するために、ローカル・ファイル112とマッチング・ファイル134との同期をトラッキングすることができる(ブロック706)。サービス・プロキシ114は、クラウド・サーバ130又は関連ユーザ・デバイス140の少なくとも一方から、クラウド同期システムのクラウド・ユーザ・アカウント内に記憶されたマッチング・ファイル134のマッチング・ファイル・メタデータ・セット304を受信することができる(ブロック708)。サービス・プロキシ114は、同期検証のためにマッチング・ファイル・メタデータ・セット304と比較するためのローカル・ファイル・メタデータ・セットを作成することができる(ブロック710)。
【0030】
サービス・プロキシ114は、同期パフォーマンス・メトリック424をテレメトリ・レポート400に記録することができる(ブロック712)。サービス・プロキシ114は、ローカル・ファイル112とマッチング・ファイル134との同期の終了時に、クライアント・デバイス110内に記憶されたローカル・ファイル112に対するマッチング・ファイル・メタデータ・セット304の同期検証を実行することができる(ブロック714)。同期検証により、同期エラーが生じたと判定された場合(ブロック716)、サービス・プロキシ114は、同期エラー・データ412及びイベント時間414を、テレメトリ・レポート400に記録することができる(ブロック718)。サービス・プロキシ114は、ローカル・ファイル112とマッチング・ファイルとの再同期を実行することができる(ブロック720)。サービス・プロキシ114が、ローカル・ファイル112とマッチング・ファイル134との同期中にアサーション失敗を受信した場合(ブロック722)、サービス・プロキシ114は、アサーション失敗416及びアサーション・ログ・データ・セット418を、テレメトリ・レポート400に記録することができる(ブロック724)。サービス・プロキシ114が、ローカル・ファイル112とマッチング・ファイル134との同期中に同期ストールを認識した場合(ブロック726)、サービス・プロキシ114は、同期ストール420及びストール・ログ・データ・セット422を、テレメトリ・レポート400に記録することができる(ブロック728)。サービス・プロキシ114は、同期検証により判定された同期パフォーマンス、同期エラー412及びイベント時間414、アサーション失敗416及びアサーション・ログ・データ・セット418、並びに、同期ストール420及びストール・ログ・データ・セット422を記述するために、テレメトリ・レポート400を作成することができる(ブロック730)。サービス・プロキシ114は、テレメトリ・レポート400をテレメトリ・サーバ150に送信することができる(ブロック732)。
【0031】
図8は、同期検証を実行する方法800の一実施形態のフローチャートを示している。サービス・プロキシ114は、ファイル名306及びファイル階層308を用いて、マッチング・ファイル134と対応するローカル・ファイル112を特定することができる(ブロック802)。サービス・プロキシ114は、マッチング・ファイル・メタデータ・セット304をローカル・ファイル・メタデータ・セットと比較することができる(ブロック804)。マッチング・ファイル・メタデータ・セット304のサイズが、ローカル・ファイル・メタデータ・セットのサイズと異なる場合(ブロック806)、サービス・プロキシ114は、同期エラーを特定することができる(ブロック808)。マッチング・ファイル・メタデータ・セット304のファイル・ハッシュ312が、ローカル・ファイル・メタデータ・セットのファイル・ハッシュと異なる場合(ブロック810)、サービス・プロキシ114は、同期エラーを特定することができる(ブロック808)。サービス・プロキシ114は、マッチング・ファイル・メタデータ・セット304のタイムスタンプ314から、同期エラーのイベント時間を決定することができる(ブロック812)。
【0032】
クライアント・デバイス110により実行されるテレメトリ機能の多くは、クラウド・サーバ130により実行されてもよい。
図9は、クラウド・サーバを用いてマッチング・ファイルを同期する方法900の一実施形態のフローチャートを示している。クラウド・サーバ130は、クライアント・デバイス110に記憶されたローカル・ファイル112を、クラウド同期システムのクラウド・ユーザ・アカウント132内に記憶されたマッチング・ファイル134と同期することができる(ブロック902)。クラウド・サーバ130は、ローカル・ファイル112とマッチング・ファイル134との同期をトラッキングすることができる(ブロック904)。クラウド・サーバ130は、クラウド同期システムのクラウド・ユーザ・アカウント132内に記憶されたマッチング・ファイル134のマッチング・ファイル・メタデータ・セット304を受信することができる(ブロック906)。クラウド・サーバ130は、同期検証のためにマッチング・ファイル・メタデータ・セット304と比較するためのローカル・ファイル・メタデータ・セットを受信することができる(ブロック908)。
【0033】
クラウド・サーバ130は、同期パフォーマンス・メトリック424をテレメトリ・レポート400に記録することができる(ブロック910)。クラウド・サーバ130は、クライアント・デバイス110内に記憶されたローカル・ファイル112に対するマッチング・ファイル・メタデータ・セット304の同期検証を実行することができる(ブロック912)。同期検証により、同期エラーが生じたと判定された場合(ブロック914)、クラウド・サーバ130は、同期エラー・データ412及びイベント時間414を、テレメトリ・レポート400に記録することができる(ブロック916)。クラウド・サーバ130は、ローカル・ファイル112とマッチング・ファイル134との再同期を実行することができる(ブロック918)。クラウド・サーバ130が、ローカル・ファイル112とマッチング・ファイル134との同期中にアサーション失敗を受信した場合(ブロック920)、クラウド・サーバ130は、アサーション失敗416及びアサーション・ログ・データ・セット418を、テレメトリ・レポート400に記録することができる(ブロック922)。クラウド・サーバ130が、ローカル・ファイル112とマッチング・ファイル134との同期中に同期ストールを認識した場合(ブロック924)、クラウド・サーバ130は、同期ストール420及びストール・ログ・データ・セット422を、テレメトリ・レポート400に記録することができる(ブロック926)。クラウド・サーバ130は、同期検証により判定された同期パフォーマンス、同期エラー412及びイベント時間414、アサーション失敗416及びアサーション・ログ・データ・セット418、並びに、同期ストール420及びストール・ログ・データ・セット422を記述するために、テレメトリ・レポート400を作成することができる(ブロック928)。クラウド・サーバ130は、テレメトリ・レポート400をテレメトリ・サーバ150に送信することができる(ブロック930)。
【0034】
図10は、テレメトリ・サーバ150においてテレメトリ・レポートを処理する方法1000の一実施形態のフローチャートを示している。テレメトリ・サーバ150は、クライアント・デバイス110から、ユーザのクラウド・ユーザ・アカウント132に関連付けられたクラウド・サービスを記述する、クライアント・デバイス110にて蓄積されたテレメトリ・データ・セット404を有するテレメトリ・レポート400を受信することができる(ブロック1002)。テレメトリ・サーバ150は、テレメトリ・データ・セット404を、クラウド・ユーザ・アカウント132のユーザ層データ・セット502に関連付けることができる(ブロック1004)。テレメトリ・サーバ150は、テレメトリ・データ・セット404を、クライアント・デバイス110のデバイス・プロファイル504に関連付けることができる(ブロック1006)。
【0035】
テレメトリ・サーバ150は、マッチング・エラーを見つけるために、テレメトリ・レポート400内の同期エラーを既知のエラー・データベース152と比較することができる(ブロック1008)。既知のエラー・データベース152が、マッチング・エラーを生成した場合(ブロック1010)、テレメトリ・サーバ150は、マッチング・エラーに基づいて、レビュー・レポート600のエラー・パッチ606を選択することができる(ブロック1012)。テレメトリ・サーバ150は、その後にエラー・パッチが作成された場合、更新されたレビュー・レポート600を送信することができる。テレメトリ・サーバ150は、レビュー・レポート600のサービスワイド・パフォーマンス・レコード608を収集することができる(ブロック1014)。テレメトリ・サーバ150は、レビュー・レポート600の集合的ユーザ・パフォーマンス・レコード610を収集することができる(ブロック1016)。テレメトリ・サーバ150は、レビュー・レポート600の個別的ユーザ・パフォーマンス・レコード612を収集することができる(ブロック1018)。テレメトリ・サーバ150は、個別的ユーザ・パフォーマンス・レコード612に基づいて、ユーザがカスタマイズ可能なタイムライン614を作成することができる(ブロック1020)。テレメトリ・サーバ150は、テレメトリ・データ・セット404に部分的に基づいて、レビュー・レポート600を作成することができる(ブロック1022)。レビュー・レポート600は、サービスワイド・パフォーマンス・レコード608、集合的ユーザ・パフォーマンス・レコード610、個別的ユーザ・パフォーマンス・レコード612、又はユーザがカスタマイズ可能なタイムライン614を有することができる。テレメトリ・サーバ150は、レビュー・レポート600をクライアント・デバイス110に送信することができる(ブロック1024)。
【0036】
主題が、構造的特徴及び/又は方法論的動作に特有の言葉で説明されてきたが、添付の特許請求の範囲における主題は、上述した特定の特徴又は動作に必ずしも限定される必要がないことを理解すべきである。むしろ、上述した特定の特徴及び動作は、請求項を実施するための例示的な形態として開示されたものである。
【0037】
本発明の範囲内にある実施形態はまた、記憶されたコンピュータ実行可能命令又はデータ構造を運ぶ又は有する非トランジトリなコンピュータ読み取り可能な記憶媒体を含み得る。そのような非トランジトリなコンピュータ読み取り可能な記憶媒体は、汎用コンピュータ又は専用コンピュータによりアクセスされ得る任意の利用可能な媒体とすることができる。限定ではなく、例として、そのような非トランジトリなコンピュータ読み取り可能な記憶媒体は、RAM、ROM、EEPROM、CD−ROM、若しくは他の光ディスク・ストレージ・デバイス、磁気ディスク・ストレージ・デバイス若しくは他の磁気ストレージ・デバイス、又は、コンピュータ実行可能命令若しくはデータ構造の形態の所望のプログラム・コード手段を運ぶあるいは記憶するために使用され得る任意の他の媒体を含み得る。上記の組合せもまた、非トランジトリなコンピュータ読み取り可能な記憶媒体の範囲内に含まれるべきでる。
【0038】
実施形態はまた、タスクが通信ネットワークを介して(有線リンク、無線リンク、又はそれらの組合せにより)リンクされるローカル処理デバイス及びリモート処理デバイスにより実行される分散コンピューティング環境においても実行され得る。
【0039】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、又は専用処理デバイスに所定の機能又は機能の一群を実行させる命令及びデータを含む。コンピュータ実行可能命令はまた、スタンドアロン環境又はネットワーク環境におけるコンピュータにより実行されるプログラム・モジュールも含む。一般に、プログラム・モジュールは、特定のタスクを実行するか、あるいは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、及びデータ構造等を含む。コンピュータ実行可能命令、関連するデータ構造、及びプログラム・モジュールは、本明細書で開示した方法のステップを実行するプログラム・コード手段の例を表す。特定の一連のそのような実行可能命令又は関連するデータ構造は、そのようなステップにおいて記載される機能を実装する対応する動作の例を表す。
【0040】
上記の説明は、特定の詳細を含み得るが、そのような詳細は、請求項を限定するものとして解釈すべきではない。説明した実施形態の他の構成も、本開示の範囲の一部である。例えば、本開示の原理を各個別のユーザに適用することができ、各ユーザは、個別にそのようなシステムを展開することができる。多数の可能な用途のいずれか1つが本明細書で説明した機能を使用しない場合であっても、これにより、各ユーザは、本開示の利点を利用することが可能となる。電子デバイスの多くの例の各々が、様々な形で、本内容を処理することができる。実施例は、必ずしも、全てのエンドユーザにより使用される一システムに含まれる必要はない。したがって、提供された特定の例ではなく、添付の請求項及びその正当な均等な構成だけが、本発明を定めるべきである。