(57)【要約】コンテンツ管理システムは、ネットワークによって接続されるクライアントコンピューティングシステムに渡ってコンテンツアイテムを同期する。ＬＡＮ上でピアデバイスに接続されるクライアントデバイスは、コンテンツアイテムを同期するためにピアツーピア同期を利用する。ＬＡＮ上のクライアントデバイスは、ＬＡＮ上の他のデバイスと当該クライアントデバイス上で同期されるネームスペースをブロードキャストする。ＬＡＮ上のクライアントデバイスは、当該ブロードキャストに基づいて、接続するクライアントデバイスとネームスペースを共有するクライアントデバイスのサブセットに接続する。新たなコンテンツアイテムが当該ネームスペースと同期されているコンテンツ管理システムからの通知を受信すると、クライアントデバイスは、接続されるデバイスのサブセットへ、コンテンツアイテムを含むブロックについての要求を送信する。追加のブロックの要求はランダム化されたブロックリストの順序で送信される。
2019502182.tif 000002
【特許請求の範囲】
【請求項１】
ローカルエリアネットワーク（ＬＡＮ）上で通信する複数のクライアントデバイスの第１のクライアントデバイスを、前記ＬＡＮ以外のネットワーク上で通信するコンテンツ管理システムと同期する方法であって、
前記第１のクライアントデバイスによって、前記コンテンツ管理システムから、前記第１のクライアントデバイスがコンテンツアイテムを同期することを示す同期通知を受信することを含み、前記コンテンツアイテムは複数のブロックを含み、前記同期は、
前記第１のクライアントデバイスによって、ランダム化されたブロックリストの第１のブロックを、前記ＬＡＮ上で通信を行う前記複数のクライアントデバイスから要求することであって、前記ランダム化されたブロックリストは前記複数のブロックのランダムな順序を特定する、ことと、
前記複数のクライアントデバイスの第２のクライアントデバイスが、前記ランダム化されたブロックリストで識別される前記要求された第１のブロックのコピーを有することを前記要求から判定することに応じて、前記第２のクライアントデバイスから前記第１のブロックをダウンロードすることと
を含むことを特徴とする方法。
【請求項２】
ローカルエリアネットワーク（ＬＡＮ）上で通信し、かつ、前記ＬＡＮ以外のネットワーク上で通信するコンテンツ管理システムと通信する、複数のクライアントデバイスの第１のクライアントデバイスによって実行されると、該第１のクライアントデバイスに動作を実行させる命令を格納する、非一時的なコンピュータで読取可能な記憶媒体であって、前記動作は、
前記コンテンツ管理システムから、前記第１のクライアントデバイスがコンテンツアイテムを同期することを示す同期通知を受信することを含み、前記コンテンツアイテムは複数のブロックを含み、前記同期は、
ランダム化されたブロックリストの第１のブロックを、前記ＬＡＮ上で通信を行う前記複数のクライアントデバイスから要求することであって、前記ランダム化されたブロックリストは前記複数のブロックのランダムな順序を特定する、ことと、
前記複数のクライアントデバイスの第２のクライアントデバイスが、前記ランダム化されたブロックリストで識別される前記要求された第１のブロックのコピーを有することを前記要求から判定することに応じて、前記第２のクライアントデバイスから前記第１のブロックをダウンロードすることと
を含むことを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項３】
請求項２に記載の非一時的なコンピュータで読取可能な記憶媒体であって、
前記複数のクライアントデバイスのいずれもが前記要求された第１のブロックのコピーを有していないと前記要求から判定することに応じて、前記コンテンツ管理システムから前記要求された第１のブロックをダウンロードすることをさらに含むことを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項４】
請求項２又は３に記載の非一時的なコンピュータで読取可能な記憶媒体であって、
前記コンテンツアイテムと、前記第１のクライアントデバイスとは、前記ネームスペースで関連付けられていることを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項５】
請求項２乃至４の何れか１項に記載の非一時的なコンピュータで読取可能な記憶媒体であって、
前記第１のクライアントデバイスに動作を実行させる命令さらに格納し、前記動作は、
前記複数のクライアントデバイスの第３のクライアントデバイスから前記第１のブロックについての要求を受信することと、
前記要求された第１のブロックを前記第３のクライアントデバイスへ提供することと 
をさらに含むことを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項６】
請求項２乃至５の何れか１項に記載の非一時的なコンピュータで読取可能な記憶媒体であって、
前記ＬＡＮ上で通信を行う前記複数のクライアントデバイスから前記ブロックリストの第１のブロックを要求することは、
前記ＬＡＮ上で通信を行う前記１以上のクライアントデバイスのブロードキャストを受信することであって、各ブロードキャストは前記ブロードキャストするクライアントデバイスと関連付けられる１以上のネームスペースを識別する、ことと、
前記受信されたブロードキャストから、前記第１のクライアントデバイスと関連付けられるネームスペースをブロードキャストする１以上のブロードキャストするクライアントデバイスのグループを識別することと
を含むことを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項７】
請求項２乃至６の何れか１項に記載の非一時的なコンピュータで読取可能な記憶媒体であって、
同期を行うことは、さらに、
前記ＬＡＮ上で通信も行う前記１以上のクライアントデバイスのいずれもが前記第１のブロックのコピーを有していないとの判定に応じて、
前記コンテンツ管理システムから前記第１のブロックをダウンロードすることと、
前記ＬＡＮ上で通信も前記１以上のクライアントデバイスのうちの第３のクライアントデバイスが前記ブロックリストで識別される第２のブロックのコピーを有しているとの判定に応じて、前記第３のクライアントデバイスから前記第２のブロックをダウンロードすることと
を含むことを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項８】
請求項２乃至７の何れか１項に記載の非一時的なコンピュータで読取可能な記憶媒体であって、
前記ＬＡＮ上で通信も行う前記１以上のクライアントデバイスのうちの第２のクライアントデバイスが前記ブロックリストで識別される前記第１のブロックのコピーを有しているかを判定することと、前記第２のクライアントデバイスから前記第１のブロックをダウンロードすることとは、さらに、
前記第２のクライアントデバイスへ要求を送信することであって、該要求は前記ランダム化されたブロックリストを含む、ことと、
前記ランダム化されたブロックリストの前記順序で前記第２のクライアントデバイス上に格納される前記ランダム化されたブロックリストからブロックリストをダウンロードすることと
を含むことを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項９】
請求項２乃至８の何れか１項に記載の非一時的なコンピュータで読取可能な記憶媒体であって、
前記第１のクライアントデバイスが実行する動作は、さらに、
前記ＬＡＮのネットワーク特性に基づき、前記ＬＡＮ上で通信を行う前記１以上のクライアントデバイスから前記第２のクライアントデバイスを選択することと、
前記第２のクライアントデバイスへ要求を送信することであって、該要求は前記第１のブロックを要求する、ことと
を含むことを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項１０】
ローカルエリアネットワーク（ＬＡＮ）上で通信し、かつ、前記ＬＡＮ以外のネットワーク上で通信するコンテンツ管理システムとする、複数のクライアントデバイスの第１のクライアントデバイスによって実行されると、該第１のクライアントデバイスに動作を実行させる命令を格納する、非一時的なコンピュータで読取可能な記憶媒体であって、前記動作は、
前記コンテンツ管理システムから、前記第１のクライアントデバイスがコンテンツアイテムを同期することを示す同期通知を受信することを含み、前記コンテンツアイテムは複数のブロックを含み、前記同期は、
ランダム化されたブロックリストの第１のブロックを、前記ＬＡＮ上で通信を行う前記複数のクライアントデバイスから要求することであって、前記ランダム化されたブロックリストは前記複数のブロックのランダムな順序を特定する、ことと、
前記要求された第１のブロックをダウンロードすることと、
前記コンテンツアイテムへアクセスすることが認証された前記ＬＡＮ上の第２のクライアントデバイスから、前記第１のブロックについての要求を受信することに応じて、前記第２のクライアントデバイスへ前記第１のブロックを送信することと
を含むことを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項１１】
請求項１０に記載の非一時的なコンピュータで読取可能な記憶媒体であって、
前記コンテンツアイテムと、前記第１のクライアントデバイスとは、同じネームスペースで関連付けられていることを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項１２】
請求項１０に記載の非一時的なコンピュータで読取可能な記憶媒体であって、
前記第１のブロックをダウンロードすることは、さらに、
前記コンテンツ管理システムから前記ブロックをダウンロードすることを含むことを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項１３】
請求項１０に記載の非一時的なコンピュータで読取可能な記憶媒体であって、
前記ブロックリストで特定される前記第１のブロックをダウンロードすることは、さらに、
前記第２のクライアントデバイスとは異なる、前記ＬＡＮ上で通信を行う第３のクライアントデバイスから前記ブロックをダウンロードすることをさらに含むことを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項１４】
請求項１０に記載の非一時的なコンピュータで読取可能な記憶媒体であって、
前記第１のブロックについての前記要求は、第２のランダム化されたブロックリストを含み、前記第２のランダム化されたブロックリストは、前記複数のブロックの第2のランダム化された順序を特定することを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項１５】
請求項１４に記載の非一時的なコンピュータで読取可能な記憶媒体であって、
前記第１のブロックは、前記第２のランダム化されたブロックリストの後続のブロックであり、
前記第２のランダム化されたブロックリストの先行のブロックは、前記第２のクライアントデバイスによって既にダウンロードされていることを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項１６】
命令を格納する非一時的コンピュータ可読記憶媒体であって、コンテンツ管理システムによって実行されると、該コンテンツ管理システムに動作を実行させ、前記動作は、
ネームスペースのコンテンツアイテムに関連付けられる同期通知を、第１のクライアントデバイスと、第２のクライアントデバイスとへ送信することであって、前記コンテンツアイテムは複数のブロックを含み、前記第１のクライアントデバイスと前記第２のクライアントデバイスとは同じネームスペースと同じローカルエリアネットワーク（ＬＡＮ）とに関連付けられる、ことと、
前記第１のクライアントデバイスから第１の同期要求を受信することに応じて、第１のブロックを前記第１のクライアントデバイスへ送信することであって、前記第１の同期要求は前記複数のブロックの第１のランダム化された順序から前記第１のブロックを特定する、ことと、
前記第２のクライアントデバイスから第２の同期要求を受信することに応じて、第２のブロックを前記第２のクライアントデバイスへ送信することであって、前記第２の同期要求は前記複数のブロックの第２のランダム化された順序から前記第２のブロックを特定する、ことと
を含むことを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項１７】
請求項１６に記載の非一時的なコンピュータで読取可能な記憶媒体であって、
前記第１のランダム化された順序は、前記第２のランダム化された順序とは異なることを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項１８】
請求項１７に記載の非一時的なコンピュータで読取可能な記憶媒体であって、
前記第１のブロックは、前記第２のブロックとは異なることを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項１９】
請求項１６に記載の非一時的なコンピュータで読取可能な記憶媒体であって、
前記同期通知を送信することは、第３のクライアントデバイスが前記同じネームスペースへ前記コンテンツアイテムを追加することに応じて行われることを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項２０】
請求項１６に記載の非一時的なコンピュータで読取可能な記憶媒体であって、
前記同期通知を送信することは、第３のクライアントデバイスが前記コンテンツアイテムを変更することに応じて行われることを特徴とする非一時的なコンピュータで読取可能な記憶媒体。
【請求項２１】
方法であって、
第１のネームスペースと関連付けられ、ローカルエリアネットワーク（ＬＡＮ）上で通信し、かつ、前記ＬＡＮ以外のネットワーク上でコンテンツ管理システムと通信する、第１のクライアントデバイスにおいて、前記ネームスペースに関連付けられた１以上のコンテンツアイテムと格納することであって、各コンテンツアイテムは１以上のブロックを含む、ことと、
前記第１のクライアントデバイスによって、複数の他のクライアントデバイスからのブロードキャストを受信することであって、各ブロードキャストはブロードキャストするクライアントデバイスと関連付けられた１以上のネームスペースを識別する、ことと、
前記第１のクライアントデバイスによって、前記受信したブロードキャストから、前記第１のネームスペースをブロードキャストする１以上の前記ブロードキャストするクライアントデバイスのグループを識別することと、
前記第１のクライアントデバイスによって、ブロードキャストするクライアントデバイスの前記識別したグループのサブセットに接続することであって、前記クライアントデバイスのサブセットは前記第１のネームスペースと関連付けられ、かつ、前記コンテンツ管理システムと前記ＬＡＮ上とで通信する、ことと、
前記第１のクライアントデバイスによって、新たなコンテンツアイテムが前記第１のネームスペースと関連付けられたことの、前記コンテンツ管理システムからの通知を受信することであって、前記新たなコンテンツアイテムは複数のブロックを含み、前記複数のブロックはランダム化されたブロックリストに配列される、ことと、
前記第１のクライアントデバイスによって、前記第１のネームスペースを格納する前記接続したクライアントデバイスの集合を選択することと、
前記第１のクライアントデバイスによって、前記ランダム化されたブロックリストの前記複数のブロックの第１のブロックを要求する、前記接続したクライアントデバイスの前記選択した集合のそれぞれに第１の要求を送信することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記選択された集合のいずれもが前記第１のブロックを格納していないとの判定に応じて、前記コンテンツ管理システムから前記第１のブロックをダウンロードすることと、
前記第１のクライアントデバイスによって、前記ランダム化されたブロックリストの前記複数のブロックの第２のブロックを要求する、前記接続したクライアントデバイスの前記選択した集合のそれぞれに第２の要求を送信することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記選択された集合のクライアントデバイスが前記第２のブロックを格納しているとの判定に応じて、前記第２のブロックを格納する前記クライアントデバイスから前記第２のブロックをダウンロードすることと
を含むことを特徴とする方法。
【請求項２２】
請求項２１に記載の方法であって、
前記第１のクライアントデバイスによって、前記識別されたブロードキャストするクライアントデバイスのサブセットに接続することは、さらに、前記識別されたブロードキャストするクライアントデバイスのランダムに選択されたサブセットに接続することであって、前記クライアントデバイスの前記サブセットは前記第１のネームスペースと関連付けられ、かつ、前記コンテンツ管理システムと前記ＬＡＮ上とで通信する、ことを含むことを特徴とする方法。
【請求項２３】
請求項２１に記載の方法であって、
前記第１のクライアントデバイスによって、前記第１のネームスペースを格納する前記接続したクライアントデバイスの集合を選択することは、
前記接続したクライアントデバイスのそれぞれに対して、当該クライアントデバイスの現在のネットワーク特性に基づく重みを決定することと、
前記接続したクライアントデバイスのそれぞれについて変更値をランダムに生成することと、
前記接続されるクライアントデバイスのそれぞれに対して、前記変更値によって前記重みを変更することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記グループの前記変更した重みに基づいて、前記第１のネームスペースを格納する前記接続されるクライアントデバイスの集合を選択することと
を含むことを特徴とする方法。
【請求項２４】
請求項２１に記載の方法であって、
クライアントデバイスの前記グループにおける各クライアントデバイスに対して、前記現在のネットワーク特性の少なくとも１つを測定することをさらに含むことを特徴とする方法。
【請求項２５】
請求項２１に記載の方法であって、
過去のネットワーク特性は、
各クライアントデバイスについてのブロードキャスト頻度と、
各クライアントデバイスについての平均待ち時間と、
各クライアントデバイスについての接続成功率と、
前記クライアントデバイスの平均接続スピードと
の少なくとも１つであることを特徴とする方法。
【請求項２６】
請求項２１に記載の方法であって、
現在のネットワーク特性は、
各クライアントデバイスについての現在の帯域幅と、
各クライアントデバイスについての所定の時間間隔内に受信した要求の数と、
各クライアントデバイスと同期されるネームスペースの数と、
各クライアントデバイスの前記コンテンツ管理システムとの通信状況と、
各クライアントデバイスについての現在の待ち時間と
の少なくとも１つであることを特徴とする方法。
【請求項２７】
請求項２１に記載の方法であって、
前記第１のクライアントデバイスによって、前記他のクライアントデバイスのそれぞれに対して、当該クライアントデバイスの過去のネットワーク特性に基づく重みを決定することと、
前記第１のクライアントデバイスによって、ランダムに生成された値によって各重みを変更することと、
前記第１のクライアントデバイスによって、前記変更した重みに基づいて前記他のクライアントデバイスのサブセットに接続することと
を含むことを特徴とする方法。
【請求項２８】
システムであって、
プロセッサと、
命令を格納するメモリとを備え、前記プロセッサによって実行されると、前記プロセッサに、
第１のネームスペースと関連付けられ、ローカルエリアネットワーク（ＬＡＮ）上で通信し、かつ、前記ＬＡＮ以外のネットワーク上でコンテンツ管理システムと通信する、第１のクライアントデバイスにおいて、前記ネームスペースに関連付けられた１以上のコンテンツアイテムと格納することであって、各コンテンツアイテムは１以上のブロックを含む、ことと、
前記第１のクライアントデバイスによって、複数の他のクライアントデバイスからのブロードキャストを受信することであって、各ブロードキャストはブロードキャストするクライアントデバイスと関連付けられた１以上のネームスペースを識別する、ことと、
前記第１のクライアントデバイスによって、前記受信したブロードキャストから、前記第１のネームスペースをブロードキャストする１以上の前記ブロードキャストするクライアントデバイスのグループを識別することと、
前記第１のクライアントデバイスによって、ブロードキャストするクライアントデバイスの前記識別したグループのサブセットに接続することであって、前記クライアントデバイスのサブセットは前記第１のネームスペースと関連付けられ、かつ、前記コンテンツ管理システムと前記ＬＡＮ上とで通信する、ことと、
前記第１のクライアントデバイスによって、新たなコンテンツアイテムが前記第１のネームスペースと関連付けられたことの、前記コンテンツ管理システムからの通知を受信することであって、前記新たなコンテンツアイテムは複数のブロックを含み、前記複数のブロックはランダム化されたブロックリストに配列される、ことと、
前記第１のクライアントデバイスによって、前記第１のネームスペースを格納する前記接続されるクライアントデバイスの集合を選択することと、
前記第１のクライアントデバイスによって、前記ランダム化されたブロックリストの前記複数のブロックの第１のブロックを要求する、前記接続されるクライアントデバイスの前記選択した集合のそれぞれに第１の要求を送信することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記選択された集合のいずれもが前記第１のブロックを格納していないとの判定に応じて、前記コンテンツ管理システムから前記第１のブロックをダウンロードすることと、
前記第１のクライアントデバイスによって、前記ランダム化されたブロックリストの前記複数のブロックの第２のブロックを要求する、前記接続されるクライアントデバイスの前記選択した集合のそれぞれに第２の要求を送信することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記選択された集合のクライアントデバイスが前記第２のブロックを格納しているとの判定に応じて、前記第２のブロックを格納する前記クライアントデバイスから前記第２のブロックをダウンロードすることと
を行わせることを特徴とするシステム。
【請求項２９】
請求項２８に記載のシステムであって、
前記メモリは、前記プロセッサに、
前記第１のクライアントデバイスによって、前記識別されたブロードキャストするクライアントデバイスのサブセットに接続することは、さらに、前記識別されたブロードキャストするクライアントデバイスのランダムに選択されたサブセットに接続することであって、前記クライアントデバイスの前記サブセットは前記第１のネームスペースと関連付けられ、かつ、前記コンテンツ管理システムと前記ＬＡＮ上とで通信する、ことを行わせる、さらなる命令を格納することを特徴とするシステム。
【請求項３０】
請求項２８に記載のシステムであって、
前記メモリは、前記プロセッサに、
前記第１のクライアントデバイスによって、前記第１のネームスペースを格納する前記接続されるクライアントデバイスの集合を選択することが、
前記接続されるクライアントデバイスのそれぞれに対して、当該クライアントデバイスの現在のネットワーク特性に基づく重みを決定することと、
前記接続されるクライアントデバイスのそれぞれについて変更値をランダムに生成することと、
前記接続されるクライアントデバイスのそれぞれに対して、前記変更値によって前記重みを変更することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記グループの前記変更した重みに基づいて、前記第１のネームスペースを格納する前記接続されるクライアントデバイスの集合を選択することと
を含む、ことを行わせる、さらなる命令を格納することを特徴とするシステム。
【請求項３１】
請求項２８に記載のシステムであって、
前記メモリは、前記プロセッサに、
クライアントデバイスの前記グループにおける各クライアントデバイスに対して、前記現在のネットワーク特性の少なくとも１つを測定することを行わせる、さらなる命令を格納することを特徴とするシステム。
【請求項３２】
請求項２８に記載のシステムであって、
過去のネットワーク特性は、
各クライアントデバイスについてのブロードキャスト頻度と、
各クライアントデバイスについての平均待ち時間と、
各クライアントデバイスについての接続成功率と、
前記クライアントデバイスの平均接続スピードと
の少なくとも１つであることを特徴とするシステム。
【請求項３３】
請求項２８に記載のシステムであって、
現在のネットワーク特性は、
各クライアントデバイスについての現在の帯域幅と、
各クライアントデバイスについての所定の時間間隔内に受信した要求の数と、
各クライアントデバイスと同期されるネームスペースの数と、
各クライアントデバイスの前記コンテンツ管理システムとの通信状況と、
各クライアントデバイスについての現在の待ち時間と
の少なくとも１つであることを特徴とするシステム。
【請求項３４】
請求項２８に記載のシステムであって、
前記メモリは、前記プロセッサに、
前記第１のクライアントデバイスによって、前記他のクライアントデバイスのそれぞれに対して、当該クライアントデバイスの過去のネットワーク特性に基づく重みを決定することと、
前記第１のクライアントデバイスによって、ランダムに生成された値によって各重みを変更することと、
前記第１のクライアントデバイスによって、前記変更した重みに基づいて前記他のクライアントデバイスのサブセットに接続することと
を行わせる、さらなる命令を格納することを特徴とするシステム。
【請求項３５】
命令を格納する非一時的コンピュータ可読記憶媒体であって、プロセッサによって実行されると、前記プロセッサに、
ローカルエリアネットワーク（ＬＡＮ）上で通信し、かつ、前記ＬＡＮ以外のネットワーク上でコンテンツ管理システムと通信する、第１のネームスペースと関連付けられた第１のクライアントデバイスにおいて、前記ネームスペースに関連付けられた１以上のコンテンツアイテムと格納させ、各コンテンツアイテムは１以上のブロックを含み、
前記第１のクライアントデバイスによって、複数の他のクライアントデバイスからのブロードキャストを受信することであって、各ブロードキャストはブロードキャストするクライアントデバイスと関連付けられた１以上のネームスペースを識別する、ことと、
前記第１のクライアントデバイスによって、前記受信したブロードキャストから、前記第１のネームスペースをブロードキャストする１以上の前記ブロードキャストするクライアントデバイスのグループを識別することと、
前記第１のクライアントデバイスによって、ブロードキャストするクライアントデバイスの前記識別したグループのサブセットに接続することであって、前記クライアントデバイスのサブセットは前記第１のネームスペースと関連付けられ、かつ、前記コンテンツ管理システムと前記ＬＡＮ上とで通信する、ことと、
前記第１のクライアントデバイスによって、新たなコンテンツアイテムが前記第１のネームスペースと関連付けられたことの、前記コンテンツ管理システムからの通知を受信することであって、前記新たなコンテンツアイテムは複数のブロックを含み、前記複数のブロックはランダム化されたブロックリストに配列される、ことと、
前記第１のクライアントデバイスによって、前記第１のネームスペースを格納する前記接続されるクライアントデバイスの集合を選択することと、
前記第１のクライアントデバイスによって、前記ランダム化されたブロックリストの前記複数のブロックの第１のブロックを要求する、前記接続されるクライアントデバイスの前記選択した集合のそれぞれに第１の要求を送信することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記選択された集合のいずれもが前記第１のブロックを格納していないとの判定に応じて、前記コンテンツ管理システムから前記第１のブロックをダウンロードすることと、
前記第１のクライアントデバイスによって、前記ランダム化されたブロックリストの前記複数のブロックの第２のブロックを要求する、前記接続されるクライアントデバイスの前記選択した集合のそれぞれに第２の要求を送信することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記選択された集合のクライアントデバイスが前記第２のブロックを格納しているとの判定に応じて、前記第２のブロックを格納する前記クライアントデバイスから前記第２のブロックをダウンロードすることと
を行わせる命令を格納することを特徴とする非一時的コンピュータ可読記憶媒体。
【請求項３６】
請求項３５に記載の非一時的コンピュータ可読記憶媒体であって、
前記第１のクライアントデバイスによって、前記識別されたブロードキャストするクライアントデバイスのサブセットに接続することは、さらに、前記識別されたブロードキャストするクライアントデバイスのランダムに選択されたサブセットに接続することであって、前記クライアントデバイスの前記サブセットは前記第１のネームスペースと関連付けられ、かつ、前記コンテンツ管理システムと前記ＬＡＮ上とで通信する、ことを含むことを特徴とする非一時的コンピュータ可読記憶媒体。
【請求項３７】
請求項３５に記載の非一時的コンピュータ可読記憶媒体であって、
前記第１のクライアントデバイスによって、前記第１のネームスペースを格納する前記接続されるクライアントデバイスの集合を選択することは、
前記接続されるクライアントデバイスのそれぞれに対して、当該クライアントデバイスの現在のネットワーク特性に基づく重みを決定することと、
前記接続されるクライアントデバイスのそれぞれについて変更値をランダムに生成することと、
前記接続されるクライアントデバイスのそれぞれに対して、前記変更値によって前記重みを変更することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記グループの前記変更した重みに基づいて、前記第１のネームスペースを格納する前記接続されるクライアントデバイスの集合を選択することと
を含むことを特徴とする非一時的コンピュータ可読記憶媒体。
【請求項３８】
請求項３５に記載の非一時的コンピュータ可読記憶媒体であって、
クライアントデバイスの前記グループにおける各クライアントデバイスに対して、前記現在のネットワーク特性の少なくとも１つを測定することを行う命令をさらに含むことを特徴とする非一時的コンピュータ可読記憶媒体。
【請求項３９】
請求項３５に記載の非一時的コンピュータ可読記憶媒体であって、
過去のネットワーク特性は、
各クライアントデバイスについてのブロードキャスト頻度と、
各クライアントデバイスについての平均待ち時間と、
各クライアントデバイスについての接続成功率と、
前記クライアントデバイスの平均接続スピードと
の少なくとも１つであることを特徴とする非一時的コンピュータ可読記憶媒体。
【請求項４０】
請求項３５に記載の非一時的コンピュータ可読記憶媒体であって、
現在のネットワーク特性は、
各クライアントデバイスについての現在の帯域幅と、
各クライアントデバイスについての所定の時間間隔内に受信した要求の数と、
各クライアントデバイスと同期されるネームスペースの数と、
各クライアントデバイスの前記コンテンツ管理システムとの通信状況と、
各クライアントデバイスについての現在の待ち時間と
の少なくとも１つであることを特徴とする非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【関連出願へのクロスリファレンス】
【０００１】
[0001]本出願は、２０１５年１２月３１日出願の米国特許出願第１４／９８５，９７４号と、２０１６年１０月１４日出願の米国特許出願１５／２９４，６４１号の優先権を主張し、参照によりこれらの全体が組み込まれる。
【技術分野】
【０００２】
[0002]本開示の実施形態は、一般的には、コンテンツアイテムの同期を提供するコンピュータシステムのパフォーマンスを改善することに関し、とりわけ、複数のクライアントデバイスがローカルエリアネットワークに接続される、複数のクライアントデバイスとコンテンツ管理システムとの間のコンテンツアイテムの同期を改善することに関する。
【背景技術】
【０００３】
[0003]コンテンツ管理システムは、ユーザがあるクライアントから他のクライアントへコンテンツアイテムを共有することを可能にする。当該クライアントは、記憶及び他のクライアントとの同期のために、コンテンツアイテムをコンテンツ管理システムに提供するコンピューティングデバイスである。他のクライアントは、他のユーザによって操作されてもよく、同一のユーザによって登録又は管理されるデバイスであってもよい。ユーザは、いずれのコンテンツアイテムが、又は、コンテンツアイテムを含むいずれのディレクトリが他のユーザと共有されるのに利用できるか、即ち、そのようなユーザのクライアントデバイスと同期されるかを指定する。通常、コンテンツ管理システムは、当該コンテンツアイテムを共有するように設計されている全てのクライアントデバイスで所定のコンテンツを同期する。通常、他のクライアントデバイスとコンテンツアイテムを共有することは、第１のクライアントデバイスが共有コンテンツアイテム（又は、コンテンツアイテムを編集する）をコンテンツ管理システムのサーバへアップロードし、共有のコンテンツアイテムを第２のクライアントデバイスによってダウンロードすることによって達成される。
【０００４】
[0004]多くのクライアントデバイスが同じＬＡＮ上で互いに接続される、いくつかの実施形態において、クライアントデバイスは、サーバからの共有コンテンツアイテムを要求する代わりに、ＬＡＮ上の複数のクライアントデバイスからの、新たな、かつ、更新された共有コンテンツアイテムを要求してもよい。
【発明の概要】
【０００５】
【図面の簡単な説明】
【０００６】
【図１】[0005]図１は、一実施形態に係る、ＬＡＮ上のクライアントデバイス間でコンテンツアイテムを同期するコンテンツ管理システムについてのシステム環境を示す図である。
【図２】[0006]図２は、一実施形態に係る、クライアントデバイスのソフトウェアアーキテクチャを示す図である。
【図３Ａ】、
【図３Ｂ】、
【図３Ｃ】、
【図３Ｄ】、
【図３Ｅ】[0007]図３Ａ乃至図３Ｅは、種々の実施形態と先行技術の方法とを比較する、互いに接続を維持するＬＡＮ上のクライアントデバイスの概念の例示である。
【図４Ａ】、
【図４Ｂ】[0008]図４Ａ及び図４Ｂは、一実施形態と先行技術の方法とを比較する、ＬＡＮ上の他のクライアントデバイスからのコンテンツアイテムを要求するクライアントデバイスの概念の例示である。
【図５Ａ】、
【図５Ｂ】、
【図５Ｃ】、
【図５Ｄ】[0009]図５Ａ乃至図５Ｄは、通常のブロック要求シナリオの概念の例示である。
【図６Ａ】、
【図６Ｂ】、
【図６Ｃ】、
【図６Ｄ】[0010]図６Ａ乃至図６Ｄは、一実施形態に係る、ブロック要求方法の概念の例示である。
【図７】[0011]図７は、一実施形態に係る、コンテンツアイテムのランダム化ピアツーピア同期の方法のフローチャートである。
【０００７】
[0012]これらの図は説明の目的のためのみに本発明の様々な実施形態を図示するものである。当業者は、以下に示される構成及び方法の他の代替的な実施形態が以下に説明される発明の原理から乖離することなく用いられ得ることを以降の記載から容易に理解する。
【発明を実施するための形態】
【０００８】
＜ランダム化ピアツーピア同期の機能概要＞
[0013]コンテンツアイテム同期システムの一般的な機能概要と処理を以下で説明する。予備的条件として、ユーザがコンテンツアイテムをクライアントデバイスに格納し、コンテンツアイテムが他のクライアントデバイス上のコンテンツアイテムのインスタンスや、ホストシステム、概してコンテンツ管理システムと同期される。クライアントデバイスは、ローカルコンテンツディレクトリにコンテンツアイテムを格納する。ローカルコンテンツディレクトリに格納されたコンテンツアイテムは、コンテンツ管理システムと同期され、コンテンツアイテムのコピーを保持し、コンテンツアイテムを他のクライアントデバイスと同期する。各クライアントデバイスは、クライアントアプリケーションを実行し、ユーザがコンテンツ管理システムにアクセスすることを可能にする。
【０００９】
[0014]一形態において、コンテンツ管理システムと同期されたクライアントデバイスは、ローカルエリアネットワーク（ＬＡＮ）上のピアクライアントデバイスと通信を行うことができる。ＬＡＮ上で通信を行うクライアントデバイスのクライアントアプリケーションは、コンテンツ管理システムにおいてクライアントデバイスにコンテンツアイテムをダウンロードする効率を改善するピアクライアントデバイスを利用してもよい。各クライアントデバイスは、ＬＡＮ上で複数のクライアントデバイスのサブセットと通信を行ってもよい。いくつかの実施形態において、クライアントデバイスのクライアントアプリケーションは、送受信を行うＬＡＮ上のクライアントデバイスの特定のサブセットをランダムに選択する。他の場合において、上記選択のランダム化は、好ましいネットワーク特性又は他の要望される特性を有する、クライアントデバイスに対して重み付けされる。その後、クライアントアプリケーションは、クライアントデバイス上で同期されるコンテンツアイテムの集合を示す（ネームスペースの形式で）、接続されるクライアントデバイスのそれぞれからのブロードキャストを受信する。
【００１０】
[0015]ＬＡＮ上のクライアントデバイスのクライアントアプリケーションが新たなコンテンツアイテム又は既存のコンテンツアイテムの新たなバージョンをクライアントデバイスと同期して利用可能であることをコンテンツ管理システムによって通知されると、クライアントアプリケーションは、接続されるデバイスから受信したブロードキャストに基づいて、同じネームスペースと同期されるＬＡＮ上のクライアントデバイスの集合を決定する。クライアントアプリケーションはその後、新たなコンテンツアイテムについての要求を送信するために、共有ネームスペースを有する決定したクライアントデバイスの集合からランダムに複数のクライアントデバイスを選択してもよい。いくつかの実施形態において、クライアントアプリケーションは、好ましい現在のネットワーク特性又は性能特性を有するＬＡＮ上のクライアントデバイスに対して加重ランダム化を行ってもよい。
【００１１】
[0016]受領側のクライアントデバイスを決定すると、クライアントアプリケーションは、ＬＡＮ上の受領側のクライアントデバイスのそれぞれに新たなコンテンツアイテムについての要求を送信する。当該要求は、同期されるコンテンツアイテムの新たな又は更新されたセクションを有する複数のブロック含む順序付けられたブロックリストの個々のブロックについて送信されてもよい。コンテンツアイテムが複数のブロックを含む場合にそれらのブロックが順序通りにダウンロードされないように、ブロックリストがランダム化される。受領側デバイスがランダム化されたブロックリストの第１のブロック（最初のブロック）の同期バージョンを含む場合、受領側デバイスは、要求側デバイスへ第１のブロックのコピーを転送する。当該転送が完了するとすぐに、当該デバイスは、ランダム化されたブロックリストの第２のブロック（２番目のブロック）についての第２の要求を行ってもよく、以後全てのブロックが転送されるまで行われる。受領側デバイスが要求されたブロックを含んでいなければ、要求側クライアントデバイスは、コンテンツ管理システムから直接的に当該ブロックをダウンロードするよう要求する。当該ダウンロードが完了するとすぐに、要求側クライアントデバイスは、受領側デバイスからランダム化されたブロックリストの要求ブロックを続ける。
【００１２】
[0017]いくつかの実施形態において、各要求は、要求側デバイスで同期されるべき全体のブロックリストを含む。この場合、受領側デバイスのクライアントアプリケーションは、ブロックリストの複数のブロックのそれぞれの同期バージョンがランダム化されたブロックリストの順序で受領側デバイスに存在するかどうかを判定する。任意の一致するブロックがランダム化されたブロックリストの順で要求側デバイスに転送される。当該転送が完了するとすぐに、更新されたブロックリストが受領側のデバイスへ次の要求において送信される。
【００１３】
＜システムアーキテクチャの概要＞
[0018]図１は、一実施形態に係るコンテンツ管理システムのシステムアーキテクチャを示す。各コンポーネントの詳細は後述するが、ランダム化ピアツーピア同期の説明を提供すべく、いくつかの要素についてはここで紹介する。さらに、当業者には明らかなように、ランダム化ピアツーピア同期に使用される動作および方法は、必然的にコンピュータを必要とし、いかなる実施形態においても、人間の動作による精神的ステップによっては実行されない。さらに、当該動作は情報の記憶及び検索、情報の送受信、又は情報の処理のためのコンピュータの容易さを利用する一方で、当業者は、このような動作が、ここで説明したアルゴリズムを用いて特別に定義したデータに関して特定の方法で実行され、従って、オペレーティングシステム及び標準アプリケーションだけでそのようなコンピュータをネイティブに供給する方法とは異なる方法でコンピュータを構成する必要があるため、単に一般的なコンピュータ動作ではないことを理解する。さらに、ここで開示される構成は、コンテンツアイテムがピアツーピア同期システムを使用してダウンロードされる際の効率の向上を可能とする。
【００１４】
[0019]ＬＡＮ１０６を使用して互いに通信を行うクライアントデバイス１００は、コンテンツ管理システム１１０から遠隔に位置するクライアントデバイス１００間のインターネットワーキングを提供する任意の適切な通信手段となりうる、不図示の広域ネットワーク１０８を通じて、コンテンツ管理システム１１０と通信する。一般的には、インストールされたクライアントアプリケーション１０２Ａを有するクライアントデバイス１００Ａは、コンテンツアイテムをコンテンツ管理システム１１０へ提供する。クライアントアプリケーション１０２Ａは、ランダム化されたピアツーピア同期と関連する機能を実行するために、クライアントデバイス１００Ａに必要とされるプログラム及びプロトコルを含む。従って、クライアントデバイス１００Ａは、クライアントアプリケーション１０２Ａによって要求されるアクションを頻繁に実行する。しかしながら、クライアントデバイス１００Ａ及びクライアントアプリケーション１０２Ａが共に動作するため、説明を容易にするため、それらのいくつかの動作は、動作要素として、”クライアントデバイス１００Ａ”を用いて参照される。クライアントデバイス１００Ａのユーザは、例えば、同一のユーザによって管理されるその他のコンピュータ、又は異なるユーザによって操作されるコンピュータとなりうるクライアントデバイス１００Ｂと共有すべき所定のコンテンツアイテムを指定している。コンテンツ管理システム１１０は、クライアントデバイス１００Ｂに通知し、クライアントデバイス１００Ｂに格納されるローカルコンテンツとしてクライアントデバイス１００Ａから受信した、指定されたコンテンツアイテムを同期する。クライアントデバイス１００Ａ及びクライアントデバイス１００Ｂが同じＬＡＮで通信を行う場合、クライアントデバイス１００Ｂは、ここで説明するように、ランダム化されたピアツーピア同期を使用してクライアントデバイス１００Ａから直接的にコンテンツアイテム要求してもよい。しかしながら、コンテンツ管理システムは、通常、クライアントデバイスに同期が必要であることを通知する責任がある。
【００１５】
[0020]コンテンツ管理システム１１０は、各コンテンツアイテムをコンテンツアイテムの集合に対応するネームスペースに関連付ける。ネームスペースは、所定のコンテンツアイテムが格納されるディレクトリ構造内のディレクトリ（又は、”フォルダ”）を指定する。コンテンツアイテムの特定のネームスペースへの関連付けは、ネームスペーステーブル１２２に格納される。コンテンツ管理システム１１０は、各クライアントを、各ネームスペースにおいてコンテンツアイテムへのアクセス、変更、及び削除を行う特定の権利の識別とともに、アクセスを有するネームスペースに関連付ける。クライアント１００がネームスペースに同期されると、当該クライアントは、ネームスペースに関連付けられるコンテンツアイテムのローカルコピーを格納し、利用可能であればコンテンツの場所に従ってコンテンツアイテムを構造化（organize）する。ユーザは個別のクライアントデバイス１００又は複数のクライアント１００と関連付けられ、例えば、ユーザは、家庭用コンピュータ、作業用コンピュータ、ポータブルコンピュータ、スマートフォン、及びタブレットコンピュータを全て一緒に同期させることができる。コンテンツアイテムを共有するために、ユーザは、他のユーザ及び／又はクライアントと共有すべきネームスペースを指定する。コンテンツ管理システム１１０はその後、共有ネームスペースのコンテンツアイテムを、共有ネームスペースと関連するクライアントに渡って同期する。コンテンツ管理システム１１０に格納されるコンテンツアイテムは、ドキュメント、データ、映画、アプリケーション、コード、画像、音楽などを含む任意のタイプのコンテンツアイテムを含むことができる。コンテンツアイテムはまた、コレクション、プレイリスト、アルバム、ファイルアーカイブなどと共に、コンテンツアイテムをグループ化するフォルダまたは他のメカニズムであってもよい。
【００１６】
[0021]各ユーザは、コンテンツ管理システム１１０上でコンテンツアイテムを格納するために使用されるべきストレージの容量を特定する情報を含む、コンテンツ管理システム１１０上のアカウントに関連付けられる。
【００１７】
＜コンテンツ管理システムの概要＞
[0022]クライアントデバイス１００Ａ及び１００Ｂ間でコンテンツ管理システム１１０を用いる同期の一方法は、図１によって示されるアーキテクチャを参照して説明されうる。ランダム化されたピアツーピア同期に使用されうる、多数の可能な同期方法の１つを以下で説明する。
【００１８】
[0023]コンテンツ管理システム１１０は、データストア１１８にコンテンツアイテムを格納する。コンテンツアイテムは、ブロックと呼ばれる固定サイズの部分に格納される。ブロックのサイズ実装に従って変化し、一実施形態においては、ブロックは４メガバイトのサイズである。従って、小さいサイズのコンテンツアイテムは、単一のブロックに格納される一方で、大きいサイズのコンテンツアイテムは、コンテンツ管理システム１１０のストレージについて、数十、数百、又はそれ以上のブロックに分割されて格納されうる。メタデータはコンテンツアイテムの複数のブロック及びコンテンツアイテムにおけるブロックの順序を定義するブロックリストを含む。
【００１９】
[0024]保留ブロックテーブル１２０は、コンテンツ管理システム１１０で受信されることが予期される保留ブロックのリストを保持する。保留ブロックテーブル１２０は、クライアント１００から送信されるブロックと、それらのブロックが属するネームスペースとの間の関連を格納する。
【００２０】
[0025]ネームスペーステーブル１２２は、個別のコンテンツアイテムをネームスペースに関連付けるデータを格納し、各ネームスペースをクライアントに関連付けるデータを保持する。
【００２１】
[0026]メタデータサーバ１１２は、新たなコンテンツアイテムをコンテンツ管理システムへ追加する（委任する）クライアントからの要求を管理する責任を負う。メタデータサーバ１１２はまた、コンテンツアイテムを同期する要求をクライアントデバイス１００から受信する。メタデータサーバ１１２は、クライアントデバイス１００がコンテンツ管理システム１１０と同期された最新時刻の記録を保持する。クライアントデバイス１００から同期する要求が受信されると、メタデータサーバ１１２は、最新の同期時刻スタンプ以後に、当該クライアントデバイス１００へ同期されたネームスペースに委任されている任意のコンテンツアイテムを判定する。さらに、メタデータサーバ１１２は、最新の同期時刻スタンプ以後に、受信された任意の保留ブロックを判定する。
【００２２】
[0027]通知サーバ１１６は、クライアント１００との通信を行い、特に、新たなデータが利用可能であることをクライアントへ通知する。通知サーバ１１６は、ネームスペーステーブル１２２で各ネームスペースに関連付けられるクライアント１００のリストを保持する。通知サーバ１１６が、新たなブロックが所定のネームスペースについて利用可能であるというアラートをブロックサーバ１１４又はメタデータサーバ１１２から受信すると、当該通知サーバ１１６は、ネームスペーステーブル１２２から当該ネームスペースと関連付けられるクライアントを特定する。通知サーバ１１６は、ネームスペースに関連付けられたクライアント１００に当該クライアント１００を活動させるように通知し、新たなブロックが特定したネームスペースについて利用可能であることを示す。
【００２３】
[0028]複数のクライアントデバイスが同じＬＡＮ上で通信を行っている際に、２つのクライアント１００、例えば、クライアントデバイス１００Ａ及びクライアントデバイス１００Ｂの間の同期が以下のように発生する。まず、クライアントデバイス１００Ａが共有データに追加のコンテンツアイテムを追加する。クライアントデバイス１００Ａはその後、追加のコンテンツアイテムが共有データに存在することをコンテンツ管理システム１１０へ通知する。コンテンツ管理システム１１０はその後、追加のコンテンツアイテムが共有データにあることをクライアントデバイス１００Ｂに通知し、クライアントデバイス１００Ｂは、コンテンツ管理システム１１０から追加のコンテンツアイテムを取り出す準備を行う。コンテンツ管理システム１１０は、コンテンツアイテムと、保留ブロックテーブル１２０を用いてコンテンツ管理システム１１０で受信されることが予期される保留ブロックとのリストを保持し、クライアントデバイス１００Ａからコンテンツ管理システム１１０によって受信されるブロックとしてコンテンツアイテムに対応するブロックをダウンロードするようにクライアントデバイス１００Ｂに通知する。保留ブロックは、コンテンツ管理システム１１０がクライアントデバイスＡから受信することを期待する追加のコンテンツアイテムに対応するそれらのブロックであり、追加のコンテンツアイテムの全てがコンテンツ管理システム１１０に送信される前に、受信側のクライアントデバイス１００Ｂに提供されうるブロックを特定するために使用される。
【００２４】
[0029]転送中のコンテンツアイテムを管理するために、コンテンツ管理システム１１０は、保留ブロックに関連付けられるネームスペースとともに、保留ブロックのリストを保有する。保留ブロックが受信されると、ネームスペースに関連付けられるクライアントに通知され、受信されたブロックについての転送を開始することができる。従って、アップロードするクライアント（新たなコンテンツアイテムを提供する）と、ダウンロードするクライアント（新たなコンテンツアイテムを受信する）は、コンテンツ管理システム１１０に対して非同期でブロックを転送する。
【００２５】
＜クライアントデバイスの概要＞
[0030]各クライアントデバイス１００は、デスクトップ、ラップトップ、タブレット、モバイルデバイス、又は、コンテンツ管理システム１１０及びインストールされたクライアントアプリケーション１０２を用いる他のクライアントと同期される共有データのローカルコピーを保持する他のシステムなどのコンピューティングデバイスである。共有データは、単一のユーザに関連付けられるクライアントのみと同期されてもよく、複数のユーザと関連付けられるクライアントと同期されてもよい。クライアントデバイス１００は、図２に関してさらに説明されるように、共有データを扱い、データを追加するためのモジュール及びアプリケーションを含む。
【００２６】
[0031]図２は、クライアントアプリケーション１０２のモジュールを示す。クライアントアプリケーション１０２は、種々のモジュールと、コンテンツ管理システム１１０とデータを同期するためのデータストアを含む。クライアントアプリケーション１０２は、コンテンツ同期モジュール２１０、ハッシュ（hashing）モジュール２２０、ダウンロードモジュール２３０、アップロードモジュール２４０、及びピアツーピア同期モジュール２５０を含む。さらに、クライアントアプリケーション１０２は、ファイルジャーナル２６０、共有データ２６４、ブロックキャッシュ２７０、及び階層ネットワークデータ２７２を含むデータストアを保持する。
【００２７】
[0032]共有データ２６４はコンテンツ管理システム１１０で同期されているデータであり、コンテンツ管理システム１１０から受信したコンテンツアイテムを含む。ユーザが共有データ２６４内のコンテンツアイテムを追加、変更又は削除すると、それらの変更はコンテンツ管理システム１１０と同期される。ハッシュモジュール２２０及びブロックキャッシュ２７０は、コンテンツ管理システム１１０へアップロードされるコンテンツアイテムを含むブロックを特定するように作動する。ハッシュモジュール２２０は、ＭＤ５又はＳＨＡ−１などの任意の適切なハッシュアルゴリズムを実行することによってブロック識別子を割り当てる。コンテンツ同期モジュール２１０はその後、ブロックキャッシュ２７０内に位置する常駐ブロックと、コンテンツ管理システム１１０によって保持されるブロックとを比較するために、それらの識別子を使用する。
【００２８】
[0033]クライアントアプリケーション１０２内において、ファイルジャーナル２６０は、クライアントアプリケーション１０２を使用してアカウントにアクセス可能な全てのコンテンツアイテムのメタデータをリストしたテーブルを格納する。メタデータは、リビジョン日時と、ネームスペースと、各コンテンツアイテムに対応するブロックリストとを含む。常駐していない又は同期していないコンテンツアイテムが、依然としてファイルジャーナル２６０に含まれている。
【００２９】
[0034]クライアントアプリケーション１０２内で、クライアントデバイス１００上の共有データ２６４のデータが変更されるか又は共有データ２６４へデータが追加されると、共有データ２６４への変更は、アップロードモジュール２４０によってコンテンツ管理システム１１０へ送信される。アップロードデータは、変更ブロック又は追加ブロックについての関連するブロック識別子を含む。コンテンツ管理システム１１０はその後、新たなブロック又はブロックの新たなバージョンがアップロードされたことを、アップロードクライアントデバイス１００と同じネームスペースを有する他のクライアントデバイスに通知する。当該通知は、ブロック識別子と、アップロードされる対応するコンテンツアイテムとを含んでもよい。クライアントデバイス１００が通知を受信すると、クライアントデバイス１００は、共有データ２６４への変更についてコンテンツ管理システム１１０に問い合わせる。共有データが変更されると、コンテンツ同期モジュール２１０は、クライアントデバイス１００上で共有データを格納するためにコンテンツ管理システム１１０からの変更を要求する。当該要求は、新しい又は更新されたコンテンツアイテムを含む単一の要求であってもよく、或いは、クライアントデバイス１００へのダウンロードのための単一のブロックを含む複数の要求がそれぞれ送信されてもよい。ダウンロードモジュール２３０はその後、ダウンロードブロックの新たなバージョンを反映するために、ファイルジャーナル２６０、共有データ２６４、及びブロックキャッシュ２７０を更新することによって、コンテンツ管理システム１１０からダウンロードされる任意のブロックを受信する。
【００３０】
＜ピアツーピア同期＞
[0035]ピアツーピア同期モジュール２５０は、ピアデバイスを用いてコンテンツアイテムを同期する追加のプロセスを利用する。明確にするために、ピアデバイスは、同じＬＡＮに接続される任意のクライアントデバイスであってもよい。ピアツーピア同期モジュール２５０は、クライアントデバイス１００がＬＡＮに接続されているかどうかを識別することができる。クライアントデバイスがＬＡＮに接続されていると判定すると、ピアツーピア同期モジュール２５０は、図３乃至図７を参照して説明する、コンテンツアイテムを同期する代替の方法を行う。
【００３１】
[0036]クライアントデバイス１００がＬＡＮに接続されていると判定された後、ピアツーピア同期モジュール２５０は、クライアントデバイス１００と同じネームスペースと関連付けられる、ローカルエリアネットワーク上で通信するピアデバイスを識別する。ピアツーピア同期モジュール２５０は、クライアントアプリケーションがインストールされたＬＡＮ上のピアデバイスからブロードキャストを受信する。ブロードキャストは、通常、ユーザデータグラムプロトコル（ＵＤＰ）を用いてＬＡＮを介して送信される。ＬＡＮ上で通信を行うクライアントデバイス１００は、当該ＬＡＮに接続される任意のデバイスにＵＤＰメッセージを送信する。ピアツーピア同期モジュール２５０は、ブロードキャストを送信するピアデバイスのＩＰアドレス、及び、当該ピアデバイスで同期されるネームスペースを判定するために各ブロードキャストを解析する。ピアツーピア同期モジュール２５０はその後、各ブロードキャストのネームスペースを、クライアントデバイス１００上で同期されるネームスペースと比較する。それらのネームスペースが一致すれば、ピアツーピア同期モジュール２５０は、後でそれらのデバイスに接続するために、一致するネームスペースと共に当該ピアデバイスのＩＰアドレスを格納する。
【００３２】
[0037]図３Ａは、ローカルエリアネットワーク１０６上で通信を行う、ネームスペースが一致するピアデバイスの通常グループの概念図である。ストライプの丸は、最近ＬＡＮネットワークに参加し、接続を求めるピアデバイスを表す。黒の丸は、短いping、又は、高帯域、又は、任意の他の好適なネットワーク特性を有するような、好適な接続を有するピアデバイスを表す。白の丸は、平均の又は平凡なネットワーク特性を有するピアデバイスを表す。
【００３３】
[0038]ピアツーピア同期モジュール２５０は、コンテンツ管理システム１１０に関する通信及び一致するネームスペースを送受信するために、ピアデバイスのグループに接続する。クライアントデバイス１００は、ネームスペースを共有するＬＡＮ上のピアデバイスのサブセットに接続してもよい。クライアントデバイス１００が接続を維持するピアデバイスの数は、特定のクライアントデバイス１００のネットワークに基づいてもよい。代替的に、ピアデバイスのサブセットのピアデバイスの数は、実装者の裁量で、ＬＡＮに接続されたデバイスの総数、又はクライアントデバイス１００のネームスペースを共有するデバイスの総数に比例してもよい。他の実施形態において、接続されるサブセットのピアデバイスにおけるピアデバイスの数は、実装者の裁量で、コンテンツ管理システム１１０についてのプリセットであってもよい。ピアデバイスのサブセットについて判定されたピアデバイスの数よりネームスペースを共有するピアデバイスが少ない場合、クライアントデバイス１００は、ＬＡＮ上のネームスペースを共有するデバイスの全てとの接続を維持してもよい。さらに、各クライアントデバイスにおける接続数は、ネームスペース上のコンテンツアイテムにおけるブロック数の平均、中間値、又はモードに基づいてもよい。例えば、各クライアントデバイス１００の接続数は、ネームスペースの平均ブロック数の３倍に設定されてもよい。これは、コンテンツ管理システム１１０への要求を送信する前に、ブロックを要求する３つの機会を可能にする。
【００３４】
[0039]クライアントデバイス１００は、非常に多くのピアデバイスへの接続がデバイスのネットワーク性能を低減するため、当該クライアントデバイス１００とネームスペースを共有するピアデバイスの総数のサブセットに接続する。さらに、ピアデバイスのサブセットは、通常、ＬＡＮ上で提示される所定のネームスペース上に格納されるコンテンツアイテムの大部分を代表するものであり、サブセットグループのサイズが大きければ、ネームスペースを共有するピアデバイスの数のかなりの部分であり、後述するような、許容されるアルゴリズムを用いて選択される。
【００３５】
[0040]送信制御プロトコル（ＴＣＰ）、又は、ストリーム送信制御プロトコル（ＳＴＣＰ）を用いて、接続が確立される。これは、共有データやメタデータを交換する安全なかつ信頼性のある接続を確立し、可能な限り迅速にコンテンツアイテムの同期を可能とすることによって、よりよいユーザ経験を提供する。
【００３６】
[0041]標準のピアツーピアシステムにおいて、各デバイスは、最も良好な現在の又は過去のネットワーク性能を有するピアデバイスとの接続を優先する。しかしながら、これは、新しいデバイスが、多くの他のデバイスに既に接続されるピアデバイスとの接続を形成する結果となりうる。同一のネームスペースを有するピアデバイスに渡ってコンテンツアイテムを同期する処理は、同期中にネットワークアクティビティがバーストする可能性があり、従って、非常に多くのデバイスが好ましいデバイス３１０との接続を形成する場合、その後ネットワークトラフィックが問題となりうる。この着想については図３Ｂ及び図３Ｃに示される。
【００３７】
[0042]図３Ｂは、デバイス３００Ａの接続を示す。デバイス３００Ａは、ＬＡＮに接続し、多くのネームスペースを共有するピアデバイスからブロードキャストを受信する。当該シナリオ３４０において、デバイス３００Ａは、主にポジティブなネットワーク特性に基づいて接続を形成する。説明のため、デバイス３００Ａが行う接続数を８つの接続に制限すると仮定する。
【００３８】
[0043]シナリオ３４０において、デバイス３００Ａは、８つの好ましいピアデバイス３１０とのみ接続を開始する。デバイス３００Ｂ及び３００Ｃは、同じ形態に従い、同じの８つのデバイス３１０に接続する。図３Ｃは、シナリオ３４０の結果を示す。デバイス３００Ａ、３００Ｂ、及び３００Ｃは全て、同じ８つの好ましいピアデバイス３１０に接続される。これらのデバイスは過去のネットワーク特性に基づいて典型的なネットワークアクティブティ中に平均的なピアデバイス３２０に対して優れたネットワーク特性を有するものの、それらは実際には、デバイス３００Ａ,３００Ｂ、及び３００Ｃのそれぞれが同時刻にコンテンツアイテムの要求を行う場合には、悪化する可能性がある。性能は、好ましいデバイス３１０と、平均的なデバイス３２０との間の負荷をよりよく分散することによって改善されるかもしれない。
【００３９】
[0044]一実施形態において、ピアツーピア同期モジュール２５０は、クライアントデバイス１００とネームスペースを共有するピアデバイスのランダムに選択されたサブセットからの接続を要求する。これは、他のピアデバイスより優先されるピアデバイスがなくなり、ネームスペースを共有するデバイス間で接続が均等に分散される可能性が最も高くなることを保証する。従って、同期中は、ネットワークトラフィックが抑制されない可能性がある。一方で、好ましい接続を有するデバイス３１０は、一般的には複数の接続を扱うことがより可能であるため、不十分に利用されている。
【００４０】
[0045]他の実施形態において、ピアツーピア同期モジュール２５０は、接続するピアデバイスを判定するために、加重ランダム化手法を使用する。この場合、好ましいデバイスには、過去の平均帯域幅、過去の平均待ち時間、接続成功率、過去のブロードキャスト頻度、過去の平均接続速度、又は、他の適切な尺度などの要因に基づいて、所定の優先順位が与えられる。いくつかの場合において、デバイスは、過去のネットワーク特性２７２に基づいて、それらの全体的な好感度を示すスコアを受け取ってもよい。当該スコアはその後、ほぼゼロに正規分布したランダムな整数によって修正される。正規分布の標準偏差は設計選択として調整されうる、或いは、任意の他の分布は、単一の目的を達成するために使用されうる。いくつかの実施形態において、分布のパラメータ（正規標準偏差の場合の標準偏差等）は、ピアデバイスのオリジナルのランキングに基づいて修正されてもよい。例えば、より高い標準偏差を有する分布に基づくランダム値は、少ない分散の分布が低くランク付けされたピアデバイスに対して使用される一方で、より高くランク付けされたデバイスのスコアに追加されうる。ランダム整数をランキングに追加することは、全てのクライアントデバイス１００が同一のランキングに判定し、同じピアデバイス３１０に優先することを防ぐ。しかし、同時に、より適切なピアデバイス３１０がより高いスコアを受け取る可能性があり、従って、それらは接続について選択される可能性がある。当業者は、加重ランダム化やランキングの他の方法が同様の結果を達成するために使用されうることを理解するであろう。例えば、各ピアデバイスには”bin”内にピアデバイスを配置するスコアが与えられ、その後、各binのデバイスは当該bin内でランダム化されるが異なるbinに移動することはない。接続の際、クライアントデバイス１００は、最初のいくつかのbinからデバイスを選択するであろう。
【００４１】
[0046]図３Ｄは、加重ランダム化された接続についてのシナリオを示す。このシナリオ３５０において、デバイス３００Ａは再び８つのデバイスに接続する。しかしながら、シナリオ３５０において、加重ランダム化が使用される。従って、デバイス３００Ａは、好ましいデバイス３１０と平均デバイス３２０との間の重み付けされた一部（split）に接続する。さらに、ランダム化のため、デバイス３００Ｂ及び３００Ｃは、接続する異なるデバイスのサブセットを選択する。図３Ｅは、シナリオ３５０において接続するデバイス３００Ａ、３００Ｂ、及び３００Ｃの結果を示す。例示の接続３３０は、ネームスペースを共有する全てのピアデバイスの間でよりいっそう分散される。したがって、新たに追加されたコンテンツアイテムの同期が発生すると、要求トラフィックは、より均一して分散され、従来の技術よりもより良い性能の結果をもたらす。
【００４２】
[0047]クライアントデバイス１００が当該クライアントデバイス１００とネームスペースを共有する選択されたピアデバイスのサブセットとの接続が開始すると、当該クライアントデバイスでは、接続したピアデバイスのサブセットにブロックの要求を送信する準備が行われる。ピアツーピア同期において、クライアントデバイス１００が、ブロックがクライアントデバイス１００と同期されるネームスペースにおいて追加され又は変更されたことの通知を受信すると、ピアツーピア同期モジュール２５０は、コンテンツ管理システム１１０へ要求を送信する前に、まず、接続されるピアデバイスに要求を送信する。この要求戦略は、同期時間を低減し、全体のシステム性能を改善することができる。これは、ピアデバイスが要求を満足することができる場合、コンテンツ管理システムへ要求が行われず、これにより、サーバレベルでのトラフィックを低減する。さらに、同じネットワーク上のデバイス間での接続時間がサーバと接続を開始するよりも非常に短いため、これはダウンロード時間より短くすることを可能とする。また、ピアツーピア要求は、少数のいくつかのピアデバイスがコンテンツ管理システム１１０から受信したデータをＬＡＮ上の他のデバイスに広げることを可能にすることによって、サーバの観点から冗長性を低減している。
【００４３】
[0048]２つのピアデバイス間でＴＣＰ接続が確立されると、ピアツーピア同期モジュール２５０は、接続されるピアデバイスからの特定のブロック、又は、コンテンツアイテムにおける全体のブロックリストを要求するHTTP要求を用いる。ピアツーピア同期モジュール２５０は、接続されるデバイスに、要求コンテンツアイテムのＩＤを通知する。それらの通知は、ピアデバイスからの他の要求をよりよく調整することができる。
【００４４】
[0049]通常のピアツーピア同期では、最初の要求は、通常、最初の利用可能な接続ピアデバイスに送信される。しかしながら、複数のピアデバイスが同時刻に新たなコンテンツアイテムをダウンロードしようと試みると、この戦略では、単一のピアデバイスが多数の他のデバイスへの短い待ち時間の接続を有する場合、複数のピアデバイスが、当該単一のデバイスに同じブロックを要求することになる。これは、単一のデバイスまわりのトラフィックが増大し、いくつかの場合において、当該デバイスに同じコンテンツアイテムに対する要求を繰り返し拒否する必要があり、性能を低減することになってしまう。
【００４５】
[0050]この性能面を改善するために、ピアツーピア同期モジュール２５０は、要求が送信される接続デバイスの順序をランダム化する。図４Ａは、多数のクライアントデバイス１００Ａ、１００Ｃ、１００Ｅ、及び１００Ｇの全てがその短い待ち時間に起因するクライアントデバイス１００Ｂからの対象のコンテンツアイテムを最初に要求する場合について示す。クライアントデバイス１００Ｂが当該コンテンツアイテムを有するため、当該クライアントデバイスはそれぞれの要求を順に受け付けるが、それらの要求のそれぞれを連続して扱わなければならず、これにより、性能が低下してしまう。図４Ｂは、要求を順序付ける別の方法を示す。いくつかの測定により最良の接続を有するピアデバイスへの要求を送信すること、又は、同時に複数の要求を送信してコンテンツアイテムをダウンロードするために最初の応答デバイスを用いることの代わりに、ピアツーピア同期モジュール２５０は、ピアデバイスに接続されるクライアントデバイス１００に対する要求の順序をランダムに判定してもよい。図４Ｂに示すように、開始要求は、シナリオ４２０で複数のピアデバイス間でより均一に分散される。これは、単一のクライアントデバイスまわりのトラフィック量を低減することと、複数の要求側のクライアントデバイス１００が要求ブロックを有していないピアデバイスへ要求を送信する機会を減少させることとの両方によって、性能を改善する。
【００４６】
[0051]要求の順序を単純にランダム化することに加えて、ピアツーピア同期モジュール２５０は、クライアントデバイスに対する要求順序を決定するために加重ランダム化手法を使用してもよい。この場合、ピアツーピア同期モジュール２５０は、各接続ピアデバイスについてのスコアを計算し、その後、図３Ｄ及び図３Ｅを参照して説明したように、分布に基づいてランダム化された変更（modifier）を適用する。この場合、各接続ピアデバイスのスコアは、デバイスの現在の帯域幅、どれくらいの要求が所定の時間期間内にデバイスで受信されるか、当該デバイス上でどれくらいのネームスペースが同期されるか、当該デバイスが広域ネットワークを介してコンテンツ管理システム１１０と現在通信しているかどうか、現在の待ち時間、又は、任意の他の適切なネットワーク特性を含む、デバイスの現在のネットワーク特性に基づいてもよい。
【００４７】
[0052]要求順を決定するために使用されることに加えて、接続ピアデバイスのスコアはまた、ピアデバイスとの各接続が終了されるか又は維持されるかを決定するために使用されてもよい。いくつかの実施形態において、接続ピアデバイスのスコアが閾値を下回る場合、当該デバイスとの接続は終了され、新たな接続が他のピアデバイスと確立される。
【００４８】
[0053]前述したように、接続ピアデバイスへの各要求は、コンテンツアイテムを含む単一のブロックについての要求を含んでもよく、或いは、コンテンツアイテムについての全体のブロックリストを含んでもよい。いずれの場合でも、ピアツーピア同期モジュール２５０は、個々のブロック要求の順序、又は、性能を改善するブロックリストの順序をランダム化してもよい。他の実施形態において、コンテンツアイテムを含むいくつかのブロックは、ダウンロードを完了する前にクライアントデバイス１００上のアプリケーションがコンテンツアイテムを開くことを可能とするために、それらのオリジナルの順序で保持されてもよい。
【００４９】
[0054]図５Ａ乃至図５Ｄは、クライアントデバイス１００Ａ、１００Ｂ、及び１００Ｃが、ブロック１〜５で構成される新たなコンテンツアイテムがクライアントデバイス１００の共通のネームスペースに追加されたことを、コンテンツ管理システムによって通知される状況において、ブロックリストをランダム化しないピアツーピア同期システムを示す。図５に示されるシナリオを単純化するため、図５では３つのクライアントデバイスのみが示されるが、このケースで示される問題及び解決手段が多数のコンテンツアイテムへどのように拡張されるかは明確である。
【００５０】
[0055]図５Ａは、クライアントデバイス１００がブロック１〜５のいずれのブロックも格納していない状態から始める。これは、他の２つのクライアントデバイス１００のそれぞれからのブロックリスト上の最初のブロック（第１のブロック）を要求するために、各クライアントデバイス上のピアツーピア同期モジュール２５０が始動される（各クライアントデバイス１００からの２つの要求は同時には発生しないが、要求時刻の差分が１つのブロックについてのダウンロード時間よりも十分に長いため、２つの要求は、それらが同時に発生したかのように取り扱うことができる。）。明瞭に、当該クライアントデバイスのいずれもがブロック１を有していなければ、全ての要求が否定される。
【００５１】
[0056]図５Ｂは、２つのピアデバイスのいずれもがブロック１の配置に失敗し、クライアントデバイス１００はコンテンツ管理システム１１０からの最初のブロックを要求することを示す。
【００５２】
[0057]図５Ｃは、最初のステップの繰り返しであり、最初のブロックのダウンロードが完了した後に、各クライアントデバイス１００上のピアツーピア同期モジュール２５０が他のピアデバイスのそれぞれからのブロック２を要求する。クライアントデバイスのそれぞれは同じブロックリストの順序を有しているため、他のクライアントデバイスの何れもがダウンロードしたブロック２を有していない。
【００５３】
[0058]図５Ｄは、３つのクライアントデバイスの全てが、ピアデバイスからの２番目のブロック（第２のブロック）を受信できないため、コンテンツ管理システムからの２番目のブロックを要求する必要があることを示す。
【００５４】
[0059]図６Ａ乃至図６Ｄは、図５Ａ乃至図５Ｄと同様のシナリオを示すが、ブロックリストがランダム化されている。図６Ａは、クライアントデバイスがいずれのブロックも有していない場合の最初のステップを示す。これは、多くの同じ方法を展開し、３つのクライアントデバイスの全てが図６Ｂに示されるように、コンテンツ管理システム１１０からの最初の要求ブロックを要求しなければならない。
【００５５】
[0060]図６Ｃにおいて、コンテンツ管理システム１１０から、クライアントデバイス１００Ａはブロック４をダウンロードし、クライアントデバイス１００Ｂはブロック２をダウンロードし、クライアントデバイス１００Ｃはブロック１をダウンロードする。各クライアントデバイスにおけるピアツーピア同期モジュール２５０はその後、ブロックリストの次のブロックに続く。クライアントデバイス１００Ａに関し、ブロック２はブロックリストの２番目のブロックであり、クライアントデバイス１００Ｂがコンテンツ管理システム１１０からブロック２を既にダウンロードしているため、当該要求は成功する。ブロック２はクライアントデバイス１００Ｂからクライアントデバイス１００Ａへ転送され、これにより、コンテンツ管理システムへの要求を防ぎ、ＷＡＮのサーバによって提供されるよりも速いダウンロードを提供することができる。同様に、クライアントデバイス１００Ｃはまた、ブロック４についてより効率的なピアツーピア転送を受信することができる。残念ながら、クライアントデバイス１００Ｂはそのブロックリストの２番目のブロック３についてソースを発見できない。図６Ｄは、ランダム化ブロックリストの要求を示す。全てのブロックリストが互いに異なって順位付けされることを保証することによって、クライアントデバイス１００は同じネットワーク内のピアデバイスとの間で要求が成功する可能性が高いため、ピアツーピア同期システムの効率化を改善する。これは、同時刻に多くのデバイスがコンテンツアイテムを要求する状況で、或いは、１つのデバイスが直近に当該ＬＡＮ上のネームスペースに参加している状況で特に有用である。
【００５６】
[0061]図７は、一実施形態に係る、コンテンツアイテムのランダム化ピアツーピア同期の方法のフローチャートである。まず、７００で、クライアントデバイス１００は、ネームスペースと関連付けられる、１以上の同期コンテンツアイテムを格納する。その後、ピアツーピア同期モジュール２５０は、クライアントデバイス１００がＬＡＮ上で通信を行うかを判定する。７１０で、ピアツーピア同期モジュール２５０は、クライアントアプリケーション１０２がインストールされた、当該ＬＡＮ上の他のクライアントデバイスから複数のブロードキャストを受信する。各クライアントデバイスのピアツーピア同期モジュール２５０はその後、クライアントデバイス１００と同じネームスペースに関連付けられるブロードキャストするクライアントデバイスを識別する。ピアツーピア同期モジュール２５０はその後、最初のクライアントデバイス１００とネームスペースを共有する識別したクライアントデバイスのランダム化したサブセットを選択し、７２０で、選択したクライアントデバイスのそれぞれと接続する。いくつかの実施形態において、ランダム化は、好ましい過去のネットワーク特性を有するデバイスの方に重み付けされる。次に、７３０で、新たなコンテンツアイテムが当該ネームスペースで同期されたことを示すコンテンツ管理システム１１０からの通知を受信すると、７４０で、ピアツーピア同期モジュール２５０は、接続デバイスのサブセットへ要求を送信する。いくつかの実施形態において、各要求は、コンテンツアイテムの単一のブロックについての要求である。他の実施形態において、当該要求はブロックリストの全体を含む。各要求は、ランダム化された順序で接続デバイスのサブセットのそれぞれへ送信されてもよい。ランダム化された順序は、好ましい現在のネットワーク特性を有する接続デバイスへ要求を送信するように重み付けされうる。要求されるブロック（又は、ブロックリストのブロック）の順序もまたランダム化される。いくつかの実施形態において、アプリケーションが全てのブロックがクライアントデバイス１００上に格納される前にコンテンツアイテムを開くことを可能とするように、あるブロックについてはそれらのオリジナルの位置を維持する。接続デバイスのサブセットのいずれもが要求ブロックの同期バージョンを有していない（又は、ブロックリストの要求ブロックの全てを有していない）との判定に応じて、７６０で、コンテンツ管理システム１１０からの最初の要求ブロックをダウンロードする（コンテンツ管理システム１１０から当該ブロックリストの利用可能でないブロックをダウンロードする。）。要求が個々のブロックについてのものである場合、当該ブロックリストの２番目のブロックがその後、接続クライアントデバイスのサブセットに送信される。接続クライアントデバイスのサブセットの１つが最初のブロック（又は、当該ブロックリストのいくつかのブロック）を有する場合、７７０で、クライアントデバイスは、２番目のブロック（又は、異なるコンテンツアイテムの新たなブロックリスト）についての要求を送信する前に、最初のブロック（又は、当該ブロックリストの一致するブロック）を当該クライアントデバイスへダウンロードする。
【００５７】
[0062]本発明の実施形態に係る前述の説明は、説明の目的で提示されており；本発明を網羅する又はここで開示される同一の形態に限定することを意図していない。当業者であれば、上記開示に照らして種々の変更及び変形が可能であることを理解することができる。
【００５８】
[0063]明細書において使用された言葉は主に可読性及び説明の目的のために選択されたものであり、本発明の主題の輪郭を描いたり制限を加えたりするために選択されたものではない。従って、本発明の範囲は、この詳細な説明によって限定されるのではなく、ここでの記載に基づく本出願で公表される任意の請求項によって限定されることが意図される。従って、本発明の実施形態の開示は説明のためを意図したものであって、以下の請求項において明らかにされる本発明の範囲を限定するものではない。
【図１】
2019502182.tif 000003
【図２】
2019502182.tif 000004
【図３Ａ】
2019502182.tif 000005
【図３Ｂ】
2019502182.tif 000006
【図３Ｃ】
2019502182.tif 000007
【図３Ｄ】
2019502182.tif 000008
【図３Ｅ】
2019502182.tif 000009
【図４Ａ】
2019502182.tif 000010
【図４Ｂ】
2019502182.tif 000011
【図５Ａ】
2019502182.tif 000012
【図５Ｂ】
2019502182.tif 000013
【図５Ｃ】
2019502182.tif 000014
【図５Ｄ】
2019502182.tif 000015
【図６Ａ】
2019502182.tif 000016
【図６Ｂ】
2019502182.tif 000017
【図６Ｃ】
2019502182.tif 000018
【図６Ｄ】
2019502182.tif 000019
【図７】
2019502182.tif 000020
【手続補正書】
【提出日】平成30年6月27日(2018.6.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
方法であって、
第１のネームスペースと関連付けられ、ローカルエリアネットワーク（ＬＡＮ）上で通信し、かつ、前記ＬＡＮ以外のネットワーク上でコンテンツ管理システムと通信する、第１のクライアントデバイスにおいて、前記第１のネームスペースに関連付けられた１以上のコンテンツアイテムを格納することであって、各コンテンツアイテムは１以上のブロックを含む、ことと、
前記第１のクライアントデバイスによって、複数の他のクライアントデバイスからのブロードキャストを受信することであって、各ブロードキャストはブロードキャストするクライアントデバイスと関連付けられた１以上のネームスペースを識別する、ことと、
前記第１のクライアントデバイスによって、前記受信したブロードキャストから、前記第１のネームスペースをブロードキャストする１以上の前記ブロードキャストするクライアントデバイスのグループを識別することと、
前記第１のクライアントデバイスによって、ブロードキャストするクライアントデバイスの前記識別したグループのサブセットに接続することであって、前記クライアントデバイスのサブセットは前記第１のネームスペースと関連付けられ、かつ、前記コンテンツ管理システムと前記ＬＡＮ上とで通信する、ことと、
前記第１のクライアントデバイスによって、新たなコンテンツアイテムが前記第１のネームスペースと関連付けられたことの、前記コンテンツ管理システムからの通知を受信することであって、前記新たなコンテンツアイテムは複数のブロックを含み、前記複数のブロックはランダム化されたブロックリストに配列される、ことと、
前記第１のクライアントデバイスによって、前記第１のネームスペースを格納する前記接続したクライアントデバイスの集合を選択することと、
前記第１のクライアントデバイスによって、前記ランダム化されたブロックリストの前記複数のブロックの第１のブロックを要求する、前記接続したクライアントデバイスの前記選択した集合のそれぞれに第１の要求を送信することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記選択された集合のいずれもが前記第１のブロックを格納していないとの判定に応じて、前記コンテンツ管理システムから前記第１のブロックをダウンロードすることと、
前記第１のクライアントデバイスによって、前記ランダム化されたブロックリストの前記複数のブロックの第２のブロックを要求する、前記接続したクライアントデバイスの前記選択した集合のそれぞれに第２の要求を送信することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記選択された集合のクライアントデバイスが前記第２のブロックを格納しているとの判定に応じて、前記第２のブロックを格納する前記クライアントデバイスから前記第２のブロックをダウンロードすることと
を含むことを特徴とする方法。
【請求項２】
請求項１に記載の方法であって、
前記第１のクライアントデバイスによって、前記識別されたブロードキャストするクライアントデバイスのサブセットに接続することは、さらに、前記識別されたブロードキャストするクライアントデバイスのランダムに選択されたサブセットに接続することであって、前記クライアントデバイスの前記サブセットは前記第１のネームスペースと関連付けられ、かつ、前記コンテンツ管理システムと前記ＬＡＮ上とで通信する、ことを含むことを特徴とする方法。
【請求項３】
請求項１に記載の方法であって、
前記第１のクライアントデバイスによって、前記第１のネームスペースを格納する前記接続したクライアントデバイスの集合を選択することは、
前記接続したクライアントデバイスのそれぞれに対して、当該クライアントデバイスの現在のネットワーク特性に基づく重みを決定することと、
前記接続したクライアントデバイスのそれぞれについて変更値をランダムに生成することと、
前記接続されるクライアントデバイスのそれぞれに対して、前記変更値によって前記重みを変更することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記グループの前記変更した重みに基づいて、前記第１のネームスペースを格納する前記接続されるクライアントデバイスの集合を選択することと
を含むことを特徴とする方法。
【請求項４】
請求項１に記載の方法であって、
クライアントデバイスの前記グループにおける各クライアントデバイスに対して、現在のネットワーク特性の少なくとも１つを測定することをさらに含むことを特徴とする方法。
【請求項５】
請求項１に記載の方法であって、
過去のネットワーク特性は、
各クライアントデバイスについてのブロードキャスト頻度と、
各クライアントデバイスについての平均待ち時間と、
各クライアントデバイスについての接続成功率と、
前記クライアントデバイスの平均接続スピードと
の少なくとも１つであることを特徴とする方法。
【請求項６】
請求項１に記載の方法であって、
現在のネットワーク特性は、
各クライアントデバイスについての現在の帯域幅と、
各クライアントデバイスについての所定の時間間隔内に受信した要求の数と、
各クライアントデバイスと同期されるネームスペースの数と、
各クライアントデバイスの前記コンテンツ管理システムとの通信状況と、
各クライアントデバイスについての現在の待ち時間と
の少なくとも１つであることを特徴とする方法。
【請求項７】
請求項１に記載の方法であって、
前記第１のクライアントデバイスによって、他のクライアントデバイスのそれぞれに対して、当該クライアントデバイスの過去のネットワーク特性に基づく重みを決定することと、
前記第１のクライアントデバイスによって、ランダムに生成された値によって各重みを変更することと、
前記第１のクライアントデバイスによって、前記変更した重みに基づいて前記他のクライアントデバイスのサブセットに接続することと
を含むことを特徴とする方法。
【請求項８】
システムであって、
プロセッサと、
命令を格納するメモリとを備え、前記プロセッサによって実行されると、前記プロセッサに、
第１のネームスペースと関連付けられ、ローカルエリアネットワーク（ＬＡＮ）上で通信し、かつ、前記ＬＡＮ以外のネットワーク上でコンテンツ管理システムと通信する、第１のクライアントデバイスにおいて、前記第１のネームスペースに関連付けられた１以上のコンテンツアイテムを格納することであって、各コンテンツアイテムは１以上のブロックを含む、ことと、
前記第１のクライアントデバイスによって、複数の他のクライアントデバイスからのブロードキャストを受信することであって、各ブロードキャストはブロードキャストするクライアントデバイスと関連付けられた１以上のネームスペースを識別する、ことと、
前記第１のクライアントデバイスによって、前記受信したブロードキャストから、前記第１のネームスペースをブロードキャストする１以上の前記ブロードキャストするクライアントデバイスのグループを識別することと、
前記第１のクライアントデバイスによって、ブロードキャストするクライアントデバイスの前記識別したグループのサブセットに接続することであって、前記クライアントデバイスのサブセットは前記第１のネームスペースと関連付けられ、かつ、前記コンテンツ管理システムと前記ＬＡＮ上とで通信する、ことと、
前記第１のクライアントデバイスによって、新たなコンテンツアイテムが前記第１のネームスペースと関連付けられたことの、前記コンテンツ管理システムからの通知を受信することであって、前記新たなコンテンツアイテムは複数のブロックを含み、前記複数のブロックはランダム化されたブロックリストに配列される、ことと、
前記第１のクライアントデバイスによって、前記第１のネームスペースを格納する前記接続されるクライアントデバイスの集合を選択することと、
前記第１のクライアントデバイスによって、前記ランダム化されたブロックリストの前記複数のブロックの第１のブロックを要求する、前記接続されるクライアントデバイスの前記選択した集合のそれぞれに第１の要求を送信することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記選択された集合のいずれもが前記第１のブロックを格納していないとの判定に応じて、前記コンテンツ管理システムから前記第１のブロックをダウンロードすることと、
前記第１のクライアントデバイスによって、前記ランダム化されたブロックリストの前記複数のブロックの第２のブロックを要求する、前記接続されるクライアントデバイスの前記選択した集合のそれぞれに第２の要求を送信することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記選択された集合のクライアントデバイスが前記第２のブロックを格納しているとの判定に応じて、前記第２のブロックを格納する前記クライアントデバイスから前記第２のブロックをダウンロードすることと
を行わせることを特徴とするシステム。
【請求項９】
請求項８に記載のシステムであって、
前記メモリは、前記プロセッサに、
前記第１のクライアントデバイスによって、前記識別されたブロードキャストするクライアントデバイスのサブセットに接続することは、さらに、前記識別されたブロードキャストするクライアントデバイスのランダムに選択されたサブセットに接続することであって、前記クライアントデバイスの前記サブセットは前記第１のネームスペースと関連付けられ、かつ、前記コンテンツ管理システムと前記ＬＡＮ上とで通信する、ことを行わせる、さらなる命令を格納することを特徴とするシステム。
【請求項１０】
請求項８に記載のシステムであって、
前記メモリは、前記プロセッサに、
前記第１のクライアントデバイスによって、前記第１のネームスペースを格納する前記接続されるクライアントデバイスの集合を選択することが、
前記接続されるクライアントデバイスのそれぞれに対して、当該クライアントデバイスの現在のネットワーク特性に基づく重みを決定することと、
前記接続されるクライアントデバイスのそれぞれについて変更値をランダムに生成することと、
前記接続されるクライアントデバイスのそれぞれに対して、前記変更値によって前記重みを変更することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記グループの前記変更した重みに基づいて、前記第１のネームスペースを格納する前記接続されるクライアントデバイスの集合を選択することと
を含む、ことを行わせる、さらなる命令を格納することを特徴とするシステム。
【請求項１１】
請求項８に記載のシステムであって、
前記メモリは、前記プロセッサに、
クライアントデバイスの前記グループにおける各クライアントデバイスに対して、現在のネットワーク特性の少なくとも１つを測定することを行わせる、さらなる命令を格納することを特徴とするシステム。
【請求項１２】
請求項８に記載のシステムであって、
過去のネットワーク特性は、
各クライアントデバイスについてのブロードキャスト頻度と、
各クライアントデバイスについての平均待ち時間と、
各クライアントデバイスについての接続成功率と、
前記クライアントデバイスの平均接続スピードと
の少なくとも１つであることを特徴とするシステム。
【請求項１３】
請求項８に記載のシステムであって、
現在のネットワーク特性は、
各クライアントデバイスについての現在の帯域幅と、
各クライアントデバイスについての所定の時間間隔内に受信した要求の数と、
各クライアントデバイスと同期されるネームスペースの数と、
各クライアントデバイスの前記コンテンツ管理システムとの通信状況と、
各クライアントデバイスについての現在の待ち時間と
の少なくとも１つであることを特徴とするシステム。
【請求項１４】
請求項８に記載のシステムであって、
前記メモリは、前記プロセッサに、
前記第１のクライアントデバイスによって、他のクライアントデバイスのそれぞれに対して、当該クライアントデバイスの過去のネットワーク特性に基づく重みを決定することと、
前記第１のクライアントデバイスによって、ランダムに生成された値によって各重みを変更することと、
前記第１のクライアントデバイスによって、前記変更した重みに基づいて前記他のクライアントデバイスのサブセットに接続することと
を行わせる、さらなる命令を格納することを特徴とするシステム。
【請求項１５】
命令を含むコンピュータプログラムであって、プロセッサによって実行されると、前記プロセッサに、
第１のネームスペースと関連付けられ、ローカルエリアネットワーク（ＬＡＮ）上で通信し、かつ、前記ＬＡＮ以外のネットワーク上でコンテンツ管理システムと通信する、第１のクライアントデバイスにおいて、前記第１のネームスペースに関連付けられた１以上のコンテンツアイテムと格納させ、各コンテンツアイテムは１以上のブロックを含み、
前記第１のクライアントデバイスによって、複数の他のクライアントデバイスからのブロードキャストを受信することであって、各ブロードキャストはブロードキャストするクライアントデバイスと関連付けられた１以上のネームスペースを識別する、ことと、
前記第１のクライアントデバイスによって、前記受信したブロードキャストから、前記第１のネームスペースをブロードキャストする１以上の前記ブロードキャストするクライアントデバイスのグループを識別することと、
前記第１のクライアントデバイスによって、ブロードキャストするクライアントデバイスの前記識別したグループのサブセットに接続することであって、前記クライアントデバイスのサブセットは前記第１のネームスペースと関連付けられ、かつ、前記コンテンツ管理システムと前記ＬＡＮ上とで通信する、ことと、
前記第１のクライアントデバイスによって、新たなコンテンツアイテムが前記第１のネームスペースと関連付けられたことの、前記コンテンツ管理システムからの通知を受信することであって、前記新たなコンテンツアイテムは複数のブロックを含み、前記複数のブロックはランダム化されたブロックリストに配列される、ことと、
前記第１のクライアントデバイスによって、前記第１のネームスペースを格納する前記接続されるクライアントデバイスの集合を選択することと、
前記第１のクライアントデバイスによって、前記ランダム化されたブロックリストの前記複数のブロックの第１のブロックを要求する、前記接続されるクライアントデバイスの前記選択した集合のそれぞれに第１の要求を送信することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記選択された集合のいずれもが前記第１のブロックを格納していないとの判定に応じて、前記コンテンツ管理システムから前記第１のブロックをダウンロードすることと、
前記第１のクライアントデバイスによって、前記ランダム化されたブロックリストの前記複数のブロックの第２のブロックを要求する、前記接続されるクライアントデバイスの前記選択した集合のそれぞれに第２の要求を送信することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記選択された集合のクライアントデバイスが前記第２のブロックを格納しているとの判定に応じて、前記第２のブロックを格納する前記クライアントデバイスから前記第２のブロックをダウンロードすることと
を行わせる命令を格納することを特徴とするコンピュータプログラム。
【請求項１６】
請求項１５に記載のコンピュータプログラムであって、
前記第１のクライアントデバイスによって、前記識別されたブロードキャストするクライアントデバイスのサブセットに接続することは、さらに、前記識別されたブロードキャストするクライアントデバイスのランダムに選択されたサブセットに接続することであって、前記クライアントデバイスの前記サブセットは前記第１のネームスペースと関連付けられ、かつ、前記コンテンツ管理システムと前記ＬＡＮ上とで通信する、ことを含むことを特徴とするコンピュータプログラム。
【請求項１７】
請求項１５に記載のコンピュータプログラムであって、
前記第１のクライアントデバイスによって、前記第１のネームスペースを格納する前記接続されるクライアントデバイスの集合を選択することは、
前記接続されるクライアントデバイスのそれぞれに対して、当該クライアントデバイスの現在のネットワーク特性に基づく重みを決定することと、
前記接続されるクライアントデバイスのそれぞれについて変更値をランダムに生成することと、
前記接続されるクライアントデバイスのそれぞれに対して、前記変更値によって前記重みを変更することと、
前記第１のクライアントデバイスによって、前記接続されるクライアントデバイスの前記グループの前記変更した重みに基づいて、前記第１のネームスペースを格納する前記接続されるクライアントデバイスの集合を選択することと
を含むことを特徴とするコンピュータプログラム。
【請求項１８】
請求項１５に記載のコンピュータプログラムであって、
クライアントデバイスの前記グループにおける各クライアントデバイスに対して、現在のネットワーク特性の少なくとも１つを測定することを行う命令をさらに含むことを特徴とするコンピュータプログラム。
【請求項１９】
請求項１５に記載のコンピュータプログラムであって、
過去のネットワーク特性は、
各クライアントデバイスについてのブロードキャスト頻度と、
各クライアントデバイスについての平均待ち時間と、
各クライアントデバイスについての接続成功率と、
前記クライアントデバイスの平均接続スピードと
の少なくとも１つであることを特徴とするコンピュータプログラム。
【請求項２０】
請求項１５に記載のコンピュータプログラムであって、
現在のネットワーク特性は、
各クライアントデバイスについての現在の帯域幅と、
各クライアントデバイスについての所定の時間間隔内に受信した要求の数と、
各クライアントデバイスと同期されるネームスペースの数と、
各クライアントデバイスの前記コンテンツ管理システムとの通信状況と、
各クライアントデバイスについての現在の待ち時間と
の少なくとも１つであることを特徴とするコンピュータプログラム。
【国際調査報告】
2019502182.tif 000021
2019502182.tif 000022
2019502182.tif 000023