特許第6373939号(P6373939)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル コーポレイションの特許一覧

<>
  • 特許6373939-動的なデータ差分生成および配送 図000002
  • 特許6373939-動的なデータ差分生成および配送 図000003
  • 特許6373939-動的なデータ差分生成および配送 図000004
  • 特許6373939-動的なデータ差分生成および配送 図000005
  • 特許6373939-動的なデータ差分生成および配送 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6373939
(24)【登録日】2018年7月27日
(45)【発行日】2018年8月15日
(54)【発明の名称】動的なデータ差分生成および配送
(51)【国際特許分類】
   G06F 8/658 20180101AFI20180806BHJP
   G06F 13/00 20060101ALI20180806BHJP
【FI】
   G06F8/658
   G06F13/00 530B
【請求項の数】23
【外国語出願】
【全頁数】25
(21)【出願番号】特願2016-226019(P2016-226019)
(22)【出願日】2016年11月21日
(65)【公開番号】特開2017-117446(P2017-117446A)
(43)【公開日】2017年6月29日
【審査請求日】2016年11月21日
(31)【優先権主張番号】14/978,966
(32)【優先日】2015年12月22日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】マルコス イー. カランサ
(72)【発明者】
【氏名】クリシュナ スーリヤ
(72)【発明者】
【氏名】ブライアン クレミーンズ
【審査官】 塚田 肇
(56)【参考文献】
【文献】 米国特許出願公開第2013/0111458(US,A1)
【文献】 特開2015−153160(JP,A)
【文献】 特開2015−184871(JP,A)
【文献】 特開2009−163602(JP,A)
【文献】 国際公開第2008/114491(WO,A1)
【文献】 米国特許出願公開第2016/0198016(US,A1)
【文献】 米国特許出願公開第2008/0222193(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/65
G06F 13/00
(57)【特許請求の範囲】
【請求項1】
少なくとも一つのプロセッサと;命令が記憶されている記憶可読媒体とを有するデータを更新するためのシステムであって、
前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記プロセッサを:
コンピューティング装置からの更新要求を受領する段階であって、前記更新要求は、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルを含み、データの前記現行セットの前記プロファイルが前記コンピューティング装置上に記憶されているライブラリのリストのハッシュを含む、段階と;
データの前記現行セットをデータの更新されたセットに変換するためのデータのデルタ・セットが以前に生成されたかどうかを判定することを、前記コンピューティング装置上に記憶されているライブラリのリストの前記ハッシュを、別のコンピューティング装置上に記憶されているライブラリのリストの第二のハッシュと比較することによって行なう段階であって、前記第二のハッシュは前記別のコンピューティング装置から以前に受領された更新要求に含まれるプロファイルに含まれていたものである、段階と;
データの前記デルタ・セットが以前に生成されていないとの判定に基づいて、
前記コンピューティング装置上に記憶されているライブラリのリストを同定することを、ハッシュからライブラリのリストへのマッピングを使って、または、ライブラリの識別情報を前記コンピューティング装置に要求して受領することによって行ない;
データの前記デルタ・セットを生成し、
前記コンピューティング装置によりデータの前記デルタ・セットを取得するためのアドレスを前記コンピューティング装置に送信する段階とを実行するよう構成するものである、
システム。
【請求項2】
前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを:
少なくとも部分的にはデータの前記現行セットの前記プロファイルに基づいて、データの前記更新されたセットが利用可能であることを判別する段階を実行するよう構成するものである、
請求項1記載のシステム。
【請求項3】
データの前記現行セットの前記プロファイルが前記コンピューティング装置上にインストールされているソフトウェアのバージョンを同定し、データの前記更新されたセットが利用可能であることを判別するために、前記少なくとも一つのプロセッサが、前記ソフトウェアのより新しいバージョンが利用可能であると判別するよう構成される、請求項2記載のシステム。
【請求項4】
データの前記デルタ・セットが、前記コンピューティング装置上にインストールされている前記ソフトウェアを、前記ソフトウェアの前記より新しいバージョンに更新するためのインストーラーを含む、請求項3記載のシステム。
【請求項5】
ータの前記更新されたセットが利用可能であることを判別するために、前記少なくとも一つのプロセッサが、前記ライブラリのうち少なくとも一つのライブラリが置換されたことを判別するよう構成される、請求項2記載のシステム。
【請求項6】
データの前記デルタ・セットが、データの前記現行セットおよびデータの前記更新されたセットのバイナリーにおける差に基づく、請求項1記載のシステム。
【請求項7】
前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを:
第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と;
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することに基づいて:
前記第二のコンピューティング装置による取得のために、データの前記デルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とを実行するよう構成するものである、
請求項1記載のシステム。
【請求項8】
前記コンピューティング装置上に記憶されているデータの現行セットの前記プロファイルおよび前記第二のコンピューティング装置上に記憶されているデータの現行セットの前記プロファイルが、データのそれぞれの現行セットのそれぞれのハッシュを含む、請求項7記載のシステム。
【請求項9】
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別するために、前記少なくとも一つのプロセッサはデータの前記それぞれの現行セットの前記それぞれのハッシュを比較するよう構成される、請求項記載のシステム。
【請求項10】
前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを:
第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と;
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルに一致しないとの判別に基づいて:
データの第二のデルタ・セットを生成し、
前記第二のコンピューティング装置による取得のためにデータの前記第二のデルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とを実行するよう構成するものである、
請求項1記載のシステム。
【請求項11】
データを更新する方法であって、
コンピューティング装置からの更新要求を受領する段階であって、前記更新要求は、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルを含み、データの前記現行セットの前記プロファイルが前記コンピューティング装置上に記憶されているライブラリのリストのハッシュを含む、段階と;
データの前記現行セットをデータの更新されたセットに変換するためのデータのデルタ・セットが以前に生成されたかどうかを判定することを、前記コンピューティング装置上に記憶されているライブラリのリストの前記ハッシュを、別のコンピューティング装置上に記憶されているライブラリのリストの第二のハッシュと比較することによって行なう段階であって、前記第二のハッシュは前記別のコンピューティング装置から以前に受領された更新要求に含まれるプロファイルに含まれていたものである、段階と;
データの前記デルタ・セットが以前に生成されていないとの判定に基づいて、
前記コンピューティング装置上に記憶されているライブラリのリストを同定することを、ハッシュからライブラリのリストへのマッピングを使って、または、ライブラリの識別情報を前記コンピューティング装置に要求して受領することによって行ない;
データの前記デルタ・セットを生成し、
前記コンピューティング装置によりデータの前記デルタ・セットを取得するためのアドレスを前記コンピューティング装置に送信する段階とを含む、
方法。
【請求項12】
少なくとも部分的にはデータの前記現行セットの前記プロファイルに基づいて、データの前記更新されたセットが利用可能であることを判別する段階をさらに含む、
請求項11記載の方法。
【請求項13】
データの前記現行セットの前記プロファイルが前記コンピューティング装置上にインストールされているソフトウェアのバージョンを同定し、データの前記更新されたセットが利用可能であることを判別することが、前記ソフトウェアのより新しいバージョンが利用可能であると判別することを含む、請求項12記載の方法。
【請求項14】
データの前記デルタ・セットが、前記コンピューティング装置上にインストールされている前記ソフトウェアを、前記ソフトウェアの前記より新しいバージョンに更新するためのインストーラーを含む、請求項13記載の方法。
【請求項15】
ータの前記更新されたセットが利用可能であることを判別することが、前記ライブラリのうち少なくとも一つのライブラリが置換されたことを判別することを含む、請求項12記載の方法。
【請求項16】
データの前記デルタ・セットが、データの前記現行セットおよびデータの前記更新されたセットのバイナリーにおける差に基づく、請求項11記載の方法。
【請求項17】
第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と;
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することに基づいて:
前記第二のコンピューティング装置による取得のために、データの前記デルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とをさらに含む、
請求項11記載の方法。
【請求項18】
前記コンピューティング装置上に記憶されているデータの現行セットの前記プロファイルおよび前記第二のコンピューティング装置上に記憶されているデータの現行セットの前記プロファイルが、データのそれぞれの現行セットのそれぞれのハッシュを含む、請求項17記載の方法。
【請求項19】
前記第二のコンピューティング装置上に記憶されているデータの現行セットの第二のプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することが、データの前記それぞれの現行セットの前記それぞれのハッシュを比較することを含む、請求項18記載の方法。
【請求項20】
第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と;
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前のプロファイルに一致しないとの判別に基づいて:
データの第二のデルタ・セットを生成し、
前記第二のコンピューティング装置による取得のためにデータの前記第二のデルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とをさらに含む、
請求項11記載の方法。
【請求項21】
機械に請求項11ないし20のうちいずれか一項記載の方法を実行させるためのコンピュータ・プログラム。
【請求項22】
請求項11ないし20のうちいずれか一項記載の方法を実行する手段を有する装置。
【請求項23】
請求項21記載のコンピュータ・プログラムを記憶している少なくとも一つの機械可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本稿に記載される実施形態はデータ・ファイル配送に、限定しないが特に動的なデータ差分生成および配送に関する。
【背景技術】
【0002】
電子装置は、該装置に機能を提供する多くのデータ・ファイルを有する。時折、これらのデータ・ファイルは更新される。装置は、これらのデータ・ファイルの一つまたは複数に対する更新を得るために、サーバーに要求を送信してもよい。
【図面の簡単な説明】
【0003】
図面は必ずしも縮尺通りに描かれていない。図面において、同様の参照符号は異なる図における類似の構成要素を記述することがある。異なる文字サフィックスをもつ同様の参照符号は、類似の構成要素の異なるインスタンスを表わすことがある。いくつかの実施形態が、限定ではなく例として、付属の図面に示されている。
図1】さまざまな実施形態に基づく、プログラム更新を要求する諸装置の概略図である。
図2】さまざまな実施形態に基づく、ライブラリ更新を要求する装置の概略図である。
図3】さまざまな例に基づく、装置型ごとのインストーラーのリストを示す図である。
図4】さまざまな例に基づく、データのセットを更新する方法のフローチャートである。
図5】ある例示的実施形態に基づく、本稿で論じられる技法(たとえば方法)の任意の一つまたは複数が実行されうる例示的な機械を示すブロック図である。
【発明を実施するための形態】
【0004】
ユーザーはますます装置が正しいソフトウェア(たとえばファームウェア、アプリケーション、ドライバ、ライブラリなど)で常時更新され続けることを期待するようになっている。多くの場合、自分の装置を更新され続けるようにする負担はユーザーに課されるが、ユーザーが所有する装置の多さのため、それは困難なタスクとなっている。
【0005】
既存の自動更新技法には数多くの技術的問題がある。たとえば、更新のサイズは、装置が限られた記憶スペースをもつときおよび帯域幅が貴重であるときには格別な困難を呈する。頻繁なまたは限られたネットワーク・アクセスをもつ領域では、更新のサイズが、成功裏の更新と失敗との間の差となりうる。よって、より小さく、より知的な更新は、成功裏の更新の可能性を改善しうる。さらに、ソフトウェアは、多様な理由のため常に最新バージョンに更新されることはできない。そのため、製造業者は、展開された装置の多くの異なる構成を維持することを必要とされる。その結果、装置メーカーはソフトウェアの複数のバージョンを同時に展開させておく必要があることがあり、更新経路は複雑になる。
【0006】
プログラム更新のためには、静的なバイナリー・パッチ当て(バイナリーdiff〔差分〕またはbdiffとしても知られる)が、ペイロード・サイズを低減する助けになりうるが、あらゆる可能なパッチの生成は大きな複雑なシステムについては実際的ではないことがある。たとえば、より伝統的なシナリオにおいて、ソフトウェアの製造業者は、更新パッチ・インストーラーの限られたセットを(たとえば、バージョン1.1ないしバージョン2.0、バージョン1.5ないし2.0など)維持することがある。このタスクは、(たとえばモノのインターネット(IoT)環境において)数多くのコンポーネントおよび装置構成があるときには、パッチ・インストーラーの数が急速に増大するので、ずっと難しくなる。さらに、製造業者は、特定のパッチ・インストーラーが必要とされるかどうかを知りさえしないことがありうる。よって、無用な処理パワーおよび記憶スペースを使うことになる。
【0007】
本稿に記載されるさまざまな例において、更新要求に応答して動的に(たとえばオンデマンドで)バイナリーdiff――あるいはフル・サイズより小さな更新――を生成するために更新管理システムが使われる。そのようなシステムは、複雑で大きなIoTエコシステムにおいて、より低い全体的な計算、伝送および記憶コストを下げることができる。当業者には明白であろうように、他の恩恵も実現されうる。
【0008】
図1は、さまざまな実施形態に基づく、プログラム更新を要求する諸装置の概略図である。この図は、ネットワーク(図示せず)を介して更新管理システム106と通信する装置102および装置104を含んでいる。更新管理システム106は、diff生成サブシステム108、更新要求サブシステム110、諸diffインストーラー112および諸プログラム・ファイル114を含む。さらに詳細に論じるように、装置102は更新管理システム106に更新要求116を送信して、返信でインストーラー応答118を受信するものとして示されている。同様に、装置104は更新要求120を送信して、インストーラー応答120を受信する。更新管理システム106は、diff生成コマンド124の例をも含んでいる。
【0009】
図1の諸装置は、多くの形を取りうる。たとえば、装置は動きセンサー、ドローンまたはサーモスタットのような単一目的装置であってもよい。装置は、スマートフォン、タブレットまたはラップトップ・コンピュータのようなより汎用の装置であってもよい。これらの装置は、これらの装置の非一時的なコンピュータ可読媒体上に記憶されたさまざまなデータ・ファイルを有していてもよい。データ・ファイルは、アプリケーション・プログラム、ネットワーク・プロトコル、サポート・ファイル(たとえば、動的リンク・ライブラリ(DLL)、共有オブジェクト(so))および資源ファイル(たとえばマップ、画像、ビデオ)を含んでいてもよいが、それに限られない。
【0010】
さまざな例において、図1に示した諸コンポーネントは、一つまたは複数のネットワークを介して通信してもよい。ネットワークは、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、無線ネットワーク(たとえば802.11またはセルラー・ネットワーク)、公衆電話交換網(PSTN)ネットワーク、アドホック・ネットワーク、セルラー、パーソナル・エリア・ネットワークまたはピアツーピア(たとえばブルートゥース(登録商標)、Wi-Fi Direct)またはネットワーク・プロトコルおよびネットワーク型の他の組み合わせまたは置換を含みうる。ネットワークは、単一のローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)またはインターネットのようなLANもしくはWANの組み合わせを含んでいてもよい。
【0011】
更新管理システム106は、一つまたは複数のコンピューティング装置上で実行される一つまたは複数のサブシステムとして実装されてもよい。サブシステムは、ソフトウェア・モジュールのようなコンピューティング装置のプロセッサ上で実行される記憶媒体上に記憶されたコードを表わしていてもよい。サブシステムの動作は、二つ以上の地理的位置にあってもよい多くのコンピューティング装置を横断して分散されていてもよい。いくつかの事例では、同じ動作が二つ以上のコンピューティング装置によって完了されてもよい。
【0012】
更新管理システム106内に記述されているデータ――たとえばdiffインストーラー112およびプログラム・ファイル114――は多様な仕方で記憶されていてもよい。データは、一つまたは複数のデータベースに、あるいはファイル・システムの一部として記憶されてもよい。データベースにおいて使用される特定の記憶レイアウトおよびモデルはいくつかの形を取りうる――実際、各データベースが複数のモデルを利用してもよい。データベースは、リレーショナル・データベース(たとえばSQL)、非リレーショナル・データベース(NoSQL)フラット・ファイル・データベース、オブジェクト・モデル、文書詳細モデルまたはファイル・システム階層であってもよい。データベースは一つまたは複数の記憶装置(たとえばハードディスク、ランダム・アクセス・メモリ(RAM)など)上にデータを記憶してもよい。記憶装置は、スタンドアローン・アレイ、一つまたは複数のサーバー内にあってもよく、一つまたは複数の地理的領域に位置していてもよい。データベース管理システム(DBMS)はデータベースからのレコードを生成し、取得し(たとえば問い合わせから)、更新し、削除するために使用されうる。
【0013】
更新管理システム106は、プログラムの最新バージョンについてのプログラム・ファイル114内の情報を記憶してもよい。議論の目的のために、図1は、プログラムに関して記述されるが、他の型のデータ・ファイルが使われてもよい。図2は、ライブラリを使う別の更新プロセスを記述する。プログラム・ファイル114は、実際のプログラム・ファイルまたは最新プログラム・ファイルのリストをそれぞれのバージョンとともに記憶していてもよい。更新管理システム106は、複数のプログラム・プロバイダーによって使用されてもよいので、プログラム・ファイル114はプログラムのプロバイダーをも示してもよい。プログラム・ファイル114は、プログラムの古くなったバージョンまたは古くなったバージョン間の以前に計算されたデルタをも、プログラムの最新バージョンへのインストーラーを生成する際に使うために、記憶していてもよい。
【0014】
プログラム・ファイル114中のリストは、いくつかの仕方で表現されることができ、バージョン番号以外の情報を含んでいてもよい。一つの方法は、プログラムの名前およびバージョンのプレーンテキスト・エントリーを含めることでありうる。もう一つの方法は、プログラム・ファイルのハッシュを含めることでありうる。リストは、ハッシュまたはプログラムのデジタル署名されたバージョンを含んでいてもよい。
【0015】
さらに、更新管理システム106は、ウェブ・サーバーを介してアプリケーション・プログラミング・インターフェース(API)を提供してもよい。APIは、更新管理システム106から更新を要求することおよび要求に応答してインストーラーを提供することのためのコマンドを含んでいてもよい。APIは、プログラムの新バージョンが利用可能であることを示すためにアプリケーション・プロバイダーによって使われてもよい――プログラム・ファイル114への更新がしかるべくなされうる。
【0016】
図1では、装置102は、更新要求116を発するためにAPIへの呼び出しを生成してもよい。API呼び出しは、更新要求に含められてもよいいくつかのパラメータを定義してもよい。更新要求は少なくとも一つの[プログラム識別情報、バージョン]対を含んでいてもよい。今の例では、更新要求116は三つのそのような対を含む。しかしながら、単一の要求の代わりに複数の更新要求が送信されてもよい。
【0017】
更新要求は現行プログラムに基づくハッシュ――たとえば図2に関して下記でより詳細に論じるもの――または各アプリケーションに一つずつの一連のハッシュであってもよい。もう一つのオプションは、更新要求に一つまたは複数のアプリケーション署名を含めることでありうる。さらに、更新要求における情報は、(たとえば装置の製造業者またはアプリケーションの発行者の鍵によって)デジタル署名されるとともに暗号化されてもよい。
【0018】
更新要求は、装置の型のような追加的な情報を含んでいてもよい。型は、装置がドローンであることおよびドローンの特定のモデル番号を示してもよい。他の型はルーター、センサー、ラップトップ、携帯電話などおよびそれぞれのモデル番号を含んでいてもよい。
【0019】
更新要求サブシステム110は、API呼び出しに含まれる情報を受領し、それを処理して、プログラムの更新されたバージョンが利用可能であるかどうかを判定してもよい。更新要求サブシステム110は、プログラム・ファイル114のようなプログラムの最新のリストを含むデータ記憶部に問い合わせしてもよい。問い合わせは、更新要求116からのプログラム識別情報を含んでいてもよい。問い合わせへの応答は、問い合わせにおいて同定されたプログラムの最新バージョン番号を含んでいてもよい。次いで、更新要求サブシステム110は、プログラムの現行バージョンを更新要求116に含まれているバージョンと比較して、プログラムの更新バージョンが装置102のために利用可能であるかどうかを判定してもよい。
【0020】
図のように、装置102はすでにプログラムBおよびCの最も最新のバージョンを有している。対照的に、装置102上のプログラムAはまだバージョン1.0であるが、プログラム・ファイル114は2.0バージョンが利用可能であることを示している。装置104に関しては、プログラムAおよびBが古くなっているが、Cは更新を必要としない。
【0021】
更新要求サブシステム110が一つまたは複数のプログラムの更新バージョンが利用可能であると判定することに基づいて、その後の問い合わせがdiffインストーラー112に対してなされてもよい。この問い合わせは、古くなっていると見なされる装置102または装置104上のプログラムの現行バージョンを含んでいてもよい。このその後の問い合わせに応答して含められるデータは、プログラムの現行バージョンをプログラムの更新バージョンに更新するためのインストーラーが利用可能であるかどうかを示してもよい。
【0022】
装置102に関し、diffインストーラー112は、プログラムAについてバージョン1.0から2.0へのインストーラーを含む。同様に、装置104のためにはバージョン1.1から2.0への更新を含む。しかしながら、diffインストーラー112は装置102のためのプログラムBについての1.0から2.5へのインストーラーは含まない。更新要求サブシステム110がインストーラーが利用可能でないと判定すると、diff生成サブシステム108に対して自動要求がなされてもよい。diff生成サブシステム108への要求は、プログラムの(装置104に記憶されている)現行バージョンおよびプログラム識別情報を含んでいてもよい。
【0023】
diff生成サブシステム108は、たとえば装置104のためにプログラムBのバージョン1.0をバージョン2.5に更新するためのインストーラーを生成するためにdiff生成コマンド124を実行してもよい。結果として得られるインストーラーはdiffインストーラー112に記憶されてもよい。結果として、次にある装置がプログラムBについてバージョン1.0からバージョン2.5更新する必要があるときは、インストーラーがすでに利用可能であり、再び生成される必要はない。
【0024】
さまざまな例において、インストーラーは、プログラムのバージョン間の差に基づいて生成されてもよい。インストーラーは、二つのバージョンの間で同様であるデータを除外し、それによりインストーラーの全体的なサイズを減らすことを含んでいてもよい。インストーラーの生成は、二つのバージョンの間でどこに変化が存在するかを同定することおよび(たとえばbdiffおよびbpatchコマンドライン・ツールまたは同様のプログラムを使って)これらの領域を現行バージョンに更新するためのパッチ・ファイルを生成することを含んでいてもよい。
【0025】
インストーラーの生成後、インストーラー応答118およびインストーラー応答122が装置102および装置104にそれぞれ送信されてもよい。これらのインストーラー応答は、diffインストーラー112におけるインストーラーを得る場所のリンクを含んでいてもよい。リンクは、直接リンクであってもよく、あるいは更新管理システム106へのその後のAPI呼び出しにおいて使うための情報を含んでいてもよい。該情報は、諸diffインストーラー112から正しいインストーラーを取り出し、それを要求元装置に返すために更新管理システム106によって使用されうるパス情報(たとえば、「/progA/v1-to-v2」)を含んでいてもよい。インストーラー応答118およびインストーラー応答122における情報は暗号化されてもよい。
【0026】
図2は、さまざまな実施形態に基づく、ライブラリ更新を要求する装置の概略図である。図2は、装置ライブラリ・リスト202、更新要求204、最新リスト206、最新ハッシュ208、更新要求サブシステム210およびdiff生成サブシステム212を含んでいる。更新要求サブシステム210は、ハッシュ比較動作214、diff要求動作216および応答生成器218を含む。diff生成サブシステム212はdiff生成動作220、diff記憶動作222を含む。別個のコンポーネントとして示されているが、更新要求サブシステム210、diff生成サブシステム212および最新リスト206は単一のコンピューティング装置とともに存在していてもよい。
【0027】
図2は、装置のライブラリを更新する例を示している。(プログラム識別情報、バージョン)対を送信する代わりに、図2は、装置ライブラリ・リスト202を同定するために単一のハッシュを使うことを示している。これは、数百のライブラリが装置上に記憶されており、装置が帯域幅が貴重な位置にある状況において、有用でありうる。そのような状況では、数百の個々の要求を送ることは実際的ではないことがある。
【0028】
そのような状況において技術的困難を軽減するために、装置に記憶されているライブラリのリストに基づいてハッシュが生成されてもよい。リストは[ライブラリAバージョン1.0,ライブラリBバージョン2.2,…]であってもよい。別の例では、ハッシュは、各ライブラリの最初の数バイトを使った結果であってもよい。装置は、ハッシュを生成し、それを更新要求204――これは任意的に装置の型を含む――において更新要求サブシステム210に送信してもよい。更新要求サブシステム210は、更新管理システムの一部であってもよい。
【0029】
更新要求サブシステム210は、更新要求204に含まれる装置型について最新ハッシュ208を受領してもよい。更新要求サブシステム210は、更新要求サブシステム210からハッシュ生成サブシステム(図示せず)への要求に応答して該ハッシュを受領してもよい。ハッシュ生成サブシステムは、装置が装置ライブラリ・リスト202を記憶するのと同様の仕方で最新リスト206を使ってハッシュを計算してもよい。
【0030】
更新要求サブシステム210は、ハッシュ比較動作214を実行して、更新要求204と最新ハッシュ208が同じハッシュを含むことを判定してもよい。それらのハッシュが同じであれば、利用可能な更新がないことを示す応答が装置に送り返されてもよい。それらのハッシュが異なっていれば――このことは利用可能な、より新しいバージョンがあることを含意する――更新要求サブシステム210は、インストーラーのリストに問い合わせをして、ハッシュ装置プログラム・リスト202から最新リスト206へのインストーラーが利用可能であるかどうかを調べてもよい。
【0031】
図3は、さまざまな例に基づく、装置型ごとのインストーラーのリストを示している。図3は装置型1のインストーラー304および装置型2のインストーラー306を示しているが、本開示の範囲から外れることなく、より多くの装置型が加えられてもよい。見て取れるように、装置型1のインストーラー304はHash(A,B,C)をもつ装置をHash(A,B,D)に更新するためのエントリーおよびライブラリ(E,F,G)を(Q,R,X)に更新するためのエントリーを含んでいる。簡単のため、ハッシュは、ハッシュの出力ではなく、そのもとになったライブラリによって表わされる。ハッシュの出力を使うとこの情報がわかりにくくなるであろう。
【0032】
エントリーは、インストーラー(たとえばパッチ・ファイル)、インストーラーへのリンク、生成日および最終使用日を含んでいてもよい。エントリーはこの情報のすべてを必要とするわけではない。時間とともに、インストーラーが使用されることは少なくなっていく。よって、システム(たとえば更新管理システム106)は、古いインストーラーを削除してもよい。削除は、生成日および最終使用日の一つまたは複数に基づいていてもよい。より大量の更新が必要とされる場合には、新しいデルタを生成する必要性を検出するために、高速存在検出アルゴリズム(たとえばブルーム・フィルタ)が使われてもよい。たとえば、インストーラーは、一年後に削除されてもよく、あるいは過去60日以内に使われなかった場合に削除されてもよい。
【0033】
削除のための基準は、更新管理システム106内に記憶されていてもよい。定期的に(たとえば毎日または毎週)、更新管理システム106はdiffインストーラー302を調べて、生成日および最終使用日を検査してもよい。基準が満たされたら、インストーラーは削除されてもよい。別の例では、インストーラーは、削除される代わりに、三次的な記憶装置に移されてもよい。
【0034】
図2に戻って参照するに、諸diffインストーラー302のうちにインストーラーが利用可能でないときは、diff要求動作216が呼び出されてもよい。diff要求動作216は、装置ライブラリ・リスト202から最新リスト206へのインストーラーを生成するために、diff生成サブシステム212に転送されてもよい。
【0035】
diff生成サブシステム212は、diff生成動作220、diff記憶動作222を含む。ハッシュが使われるので、diff生成サブシステム212は、バイナリーdiffを実行するためのファイルをすぐには利用可能でないことがありうる。さらに、ハッシュから実際のライブラリ・リストを取得することは、計算上困難である。よって、いくつかの例では、ハッシュのライブラリ・リストへのマッピングが記憶される(この情報は、装置の製造業者から受領されてもよい)。もう一つの例では、インストーラーが利用可能でないと判定したのち、更新要求204を送信した装置に、ライブラリの識別情報および任意的にはバージョンの要求が送信されてもよい。このようにして、比較的高い帯域幅使用が、更新要求サブシステム210が更新が必要とされており、すぐ利用可能ではないと判別したときに限定されうる。
【0036】
マップまたは装置から実際のライブラリ・リストを取得したのち、diff生成動作220は図1で論じたのと同様の仕方で実行されてもよい。次いで、diff記憶動作222が実行されて、(たとえば諸diffインストーラー302において)インストーラーを記憶してもよい。記憶後、該インストーラーへのリンクが生成されてもよい。リンクは、応答生成器218において装置に送り返されてもよい。
【0037】
上記で論じた例は概括的にはライブラリまたはプログラムへの更新に焦点を当ててきたが、他の使用事例も可能である。たとえば、ドローン上にあるライブラリの集合[A,B,C]をもつ装置を考える。各ライブラリは、他のライブラリとは独立であってもよい。たとえば、ライブラリAはオブジェクト検出のために使用されてもよく、ライブラリBは位置特定のために、ライブラリCは動きのために使用されてもよい。ドローン製造業者は、オブジェクト検出ソフトウェアの別のプロバイダーが今や利用可能であり、ライブラリAの代わりにライブラリDが使用されるべきであると判断することがありうる。そのような場合、バージョン番号は潜在的には無意味である。よって、更新管理システム106は、ライブラリが入れ替えられるべきかどうかを判定するために、バージョンに加えて(またはバージョンの代わりに)ライブラリのリストを検査してもよい。
【0038】
さらなる粒度が、ライブラリまたはプログラム自身内で使われてもよい。たとえば、実行コードはプログラムについて変化しなくてもよく、資源(たとえば音楽ファイル、画像ファイルなど)が更新されてもよい。更新管理システム106はそのような更新を、資源のハッシュを使って処理してもよい。ハッシュが一致しなければ、新たな資源へのリンクが提供されてもよい。
【0039】
図4は、さまざまな例に基づくデータのセットを更新する方法のフローチャートである。本方法は、本稿に記載されるサブシステムの一つまたは複数を使って実行されてもよい。動作402では、コンピューティング装置からの更新要求が受領されてもよい。更新要求は、更新管理システムにおいて受領されてもよい。更新要求は、コンピューティング装置上に記憶されているデータの現行のセットのプロファイルを含んでいてもよい。データのセットは、装置上のアプリケーション、ライブラリまたは資源を含んでいてもよい。データの現行のセットのプロファイルは、コンピューティング装置上にインストールされているソフトウェアのバージョンを同定してもよい。
【0040】
いくつかの例では、更新要求は、更新管理システム(または他のシステム)が利用可能な更新を求めて更新管理システムをチェックするようメッセージをコンピューティング装置に送信することに応答して受領されてもよい。他の例では、更新要求は、コンピューティング装置から開始されてもよい。更新要求はコンピューティング装置から定期的に送信されてもよい。
【0041】
一例では、動作404において、少なくとも部分的にはデータの現行セットのプロファイルに基づいて、データの更新されたセットが利用可能であることが判別される。判別は、ソフトウェアのより新しいバージョンが利用可能であることを判別することを含んでいてもよい。一例では、データの現行セットのプロファイルは、コンピューティング装置上に記憶されているライブラリのリストを含み、データの更新セットが利用可能であることを判別することは、ライブラリの少なくとも一部が置換されたことを判別することを含んでいてもよい。
【0042】
動作406では、一例において、データの現行セットをデータの更新されたセットに変換するためにデータのデルタ・セットが以前に生成されたかどうかが判定される。データのデルタ・セットは、コンピューティング装置上にインストールされているソフトウェアを該ソフトウェアのより新しいバージョンに更新するためのインストーラーを含んでいてもよい。データのデルタ・セットは、データの現行セットとデータの更新されたセットのバイナリーにおける差に基づいていてもよい。
【0043】
データのデルタ・セットが以前に生成されていないと判定されたら、データのデルタ・セットが生成されてもよい(動作408)。動作410では、データのデルタ・セットを取得するためのアドレスがコンピューティング装置に送信されてもよい。
【0044】
図4に示した方法は、第二のコンピューティング装置から第二の更新要求を受領することをさらに含んでいてもよい。該更新要求は、第二のコンピューティング装置上に記憶されているデータの現行セットの第二のプロファイルを含む。第二のコンピューティング装置に記憶されているデータの現行セットの第二のプロファイルが、コンピューティング装置に記憶されているデータの現行セットのプロファイルに一致すると判定することに基づいて、データのデルタ・セットへのアドレスが、第二のコンピューティング装置による取得のために、第二のコンピューティング装置に送信されてもよい。
【0045】
一例では、コンピューティング装置に記憶されているデータの現行セットのプロファイルおよび第二のコンピューティング装置に記憶されているデータの現行セットの第二のプロファイルは、データのそれぞれの現行セットのそれぞれのハッシュを含む。さらに、第二のコンピューティング装置に記憶されているデータの現行セットの第二のプロファイルが、コンピューティング装置に記憶されているデータの現行セットのプロファイルに一致すると判定することは、データのそれぞれの現行セットのそれぞれのハッシュを比較することを含んでいてもよい。
【0046】
図4に示した方法は、第二のコンピューティング装置から第二の更新要求を受信することを含んでいてもよい。該更新要求は、第二のコンピューティング装置に記憶されているデータの現行セットの第二のプロファイルを含む。第二のコンピューティング装置に記憶されているデータの現行セットの第二のプロファイルが、コンピューティング装置に記憶されているデータの現行セットのプロファイルに一致しないと判定することに基づいて、データの第二のデルタ・セットが生成されてもよい。データの第二のデルタ・セットへのアドレスが、第二のコンピューティング装置による取得のために、第二のコンピューティング装置に送信されてもよい。
【0047】
例示的なコンピューティング・システム
本稿に記載される実施形態は、ハードウェア、ファームウェアおよびソフトウェアの一つまたは組み合わせにおいて実装されてもよい。実施形態は、本稿に記載される動作を実行するために少なくとも一つのプロセッサによって読まれ、実行されうる機械可読記憶デバイスに記憶された命令として実装されてもよい。機械可読記憶デバイスは、機械(たとえばコンピュータ)によって読み取り可能な形で情報を記憶するための任意の非一時的な機構を含みうる。たとえば、機械可読記憶デバイスは、読み出し専用メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ・デバイスおよび他の記憶デバイスおよび媒体を含みうる。
【0048】
本稿に記載されるような例は、論理またはいくつかのコンポーネント、モジュールもしくは機構を含んでいてもよく、またはそれに基づいて動作してもよい。モジュールは、本稿に記載される動作を実行するために一つまたは複数のプロセッサに通信上結合されたハードウェア、ソフトウェアまたはファームウェアであってもよい。モジュールは、ハードウェア・モジュールであってもよく、そのようなモジュールは、指定された動作を実行することのできる有体のエンティティであると考えられてもよく、ある仕方で構成または配置されてもよい。一例では、回路はモジュールとして指定された仕方で構成されてもよい(たとえば内部的にまたは他の回路のような外部エンティティに関して)。一例では、一つまたは複数のコンピュータ・システム(たとえば、スタンドアローン、クライアントまたはサーバー・コンピュータ・システム)または一つまたは複数のハードウェア・プロセッサの全体または一部は、ファームウェアまたはソフトウェア(たとえば命令、アプリケーション部分またはアプリケーション)によって、指定された動作を実行するよう動作するモジュールとして構成されてもよい。一例では、ソフトウェアは機械可読媒体上に存在してもよい。一例では、ソフトウェアは、モジュールの根底にあるハードウェアによって実行されると、該ハードウェアに指定された動作を実行させる。よって、ハードウェア・モジュールという用語は、指定された仕方で動作するまたは本稿に記載される任意の動作の一部または全部を実行するために、物理的に構築され具体的に設定されている(たとえば結線されている)ものであろうと、一時的に(たとえば暫定的に)構成されている(たとえばプログラムされている)ものであろうと、有体のエンティティを包含するものと理解される。モジュールが一時的に構成される例を考えると、任意の一つの時点において、各モジュールがインスタンス生成されている必要はない。たとえば、モジュールがソフトウェアを使って構成される汎用ハードウェア・プロセッサを有する場合、汎用ハードウェア・プロセッサは、異なる時点においてそれぞれ異なるモジュールとして構成されうる。よって、ソフトウェアは、たとえばある時点ではある特定のモジュールをなし、異なる時点では異なるモジュールをなすようハードウェア・プロセッサをしかるべく構成してもよい。モジュールは、本稿に記載される方法論を実行するよう動作するソフトウェアまたはファームウェア・モジュールであってもよい。
【0049】
図5は、コンピュータ・システム500の例示的な形での機械を示すブロック図である。この中で、ある実施形態に基づく、本稿で論じられた方法論のいずれかを該機械に実行させるために命令のセットまたはシーケンスが実行されうる。代替的な実施形態では、機械はスタンドアローン装置として動作してもよく、あるいは他の機械に接続(たとえばネットワーク接続)されてもよい。ネットワーク接続された展開では、機械は、サーバー‐クライアント・ネットワーク環境におけるサーバーまたはクライアント機械のいずれかの役割で動作しうる。あるいはピアツーピア(または分散式)ネットワーク環境においてピア機械として作用できる。機械は、車載システム、ウェアラブル装置、パーソナル・コンピュータ(PC)、タブレットPC、ハイブリッド・タブレット、携帯情報端末(PDA)、携帯電話または当該機械が取るべき行動を指定する命令(逐次的またはそれ以外の)を実行することができる任意の機械であることができる。さらに、単一の機械しか示されていないが、用語「機械」は、本稿で論じた方法論の任意の一つまたは複数を実行するための命令のセット(または複数のセット)を個々にまたは合同して実行する機械の任意の集合を含むものとも解釈される。同様に、「プロセッサ・ベースのシステム」は、本稿で論じた方法論の任意の一つまたは複数を実行するための命令を個々にまたは合同して実行するプロセッサ(たとえばコンピュータ)によって制御されるまたは操作される一つまたは複数の機械の任意の集合を含むものと解釈される。
【0050】
例示的なコンピュータ・システム500は少なくとも一つのプロセッサ502(たとえば、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)または両方、プロセッサ・コア、計算ノードなど)、メイン・メモリ504および静的メモリ505を含み、これらはリンク508(たとえばバス)を介して互いと通信する。コンピュータ・システム500はさらに、ビデオ・ディスプレイ・ユニット510、英数字入力装置512(たとえばキーボード)およびユーザー・インターフェース(UI)ナビゲーション装置514(たとえばマウス)を含むことができる。ある実施形態では、ビデオ・ディスプレイ・ユニット510、入力装置512およびUIナビゲーション装置514はタッチスクリーン・ディスプレイに組み込まれる。コンピュータ・システム500はさらに、記憶装置516(たとえばドライブ・ユニット)、信号生成装置518(たとえばスピーカー)、ネットワーク・インターフェース装置520および一つまたは複数のセンサー(図示せず)たとえば全地球測位システム(GPS)センサー、コンパス、加速度計または他のセンサーを含むことができる。
【0051】
記憶装置516は、本稿に記述される方法論または機能の任意の一つまたは複数を具現するまたはそれによって利用されるデータ構造および命令524(たとえばソフトウェア)の一つまたは複数のセットが記憶されている機械可読媒体522を含む。命令524は、コンピュータ・システム500によるその実行中、完全にまたは少なくとも部分的に、メイン・メモリ504、静的メモリ506内および/またはプロセッサ502内に存在することもできる。メイン・メモリ504、静的メモリ506およびプロセッサ502も機械可読媒体をなす。
【0052】
機械可読媒体522は例示的な実施形態では単一の媒体として示されているが、用語「機械可読媒体」は、前記一つまたは複数の命令524を記憶する単一の媒体または複数の媒体(たとえば中央集中されたまたは分散されたデータベースおよび/または関連したキャッシュおよびサーバー)を含むことができる。用語「機械可読媒体」は、機械による実行のための、該機械に本開示の方法論の任意の一つまたは複数を実行させる命令を記憶、エンコードまたは担持することができる、あるいはそのような命令によって利用されるまたはそのような命令に関連するデータ構造を記憶、エンコードまたは担持することができる任意の有体の媒体を含むものと解釈される。よって、用語「機械可読媒体」は、固体メモリおよび光学式および磁気式媒体を含むがそれに限られないものと解釈される。機械可読媒体の具体例は、たとえば半導体メモリ・デバイス(たとえば、電気的にプログラム可能な読み出し専用メモリ(EPROM)、電気的に消去可能なプログラム可能型読み出し専用メモリ(EEPROM))およびフラッシュメモリ・デバイス;内蔵ハードディスクおよびリムーバブル・ハードディスクのような磁気ディスク;光磁気ディスク;およびCD-ROMおよびDVD-ROMディスクを含むがそれに限られない不揮発性メモリを含む。
【0053】
命令524はさらに、いくつものよく知られた転送プロトコル(たとえばHTTP)の任意のものを利用するネットワーク・インターフェース装置520を介して伝送媒体を使って通信ネットワーク526上で送信または受信されることができる。通信ネットワークの例は、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、モバイル電話ネットワーク、旧来式電話(POTS)ネットワークおよび無線データ・ネットワーク(たとえばWi-Fi、5Gおよび4G LTE/LTE-AまたはWiMAXネットワーク)を含む。用語「伝送媒体」は、機械による実行のための命令を記憶、エンコードまたは担持することができる任意の有体でない媒体を含むと解釈され、デジタルまたはアナログ通信信号またはそのようなソフトウェアの通信を容易にするための他の有体でない媒体を含む。
【0054】
実施例1は、少なくとも一つのプロセッサと;命令が記憶されている記憶可読媒体とを有するデータを更新するためのシステムであって、前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記プロセッサを:コンピューティング装置からの更新要求を受領する段階であって、前記更新要求は、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と;データの前記現行セットをデータの更新されたセットに変換するためのデータのデルタ・セットが以前に生成されたかどうかを判定する段階と;データの前記デルタ・セットが以前に生成されていないとの判定に基づいて、データの前記デルタ・セットを生成し、前記コンピューティング装置によりデータの前記デルタ・セットを取得するためのアドレスを前記コンピューティング装置に送信する段階とを実行するよう構成するものである、システムである。
【0055】
実施例2では、実施例1の主題が任意的に、前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを:少なくとも部分的にはデータの前記現行セットの前記プロファイルに基づいて、データの前記更新されたセットが利用可能であることを判別する段階を実行するよう構成するものである、ことを含む。
【0056】
実施例3では、実施例2の主題が任意的に、データの前記現行セットの前記プロファイルが前記コンピューティング装置上にインストールされているソフトウェアのバージョンを同定し、データの前記更新されたセットが利用可能であることを判別するために、前記少なくとも一つのプロセッサが、前記ソフトウェアのより新しいバージョンが利用可能であると判別するよう構成される、ことを含む。
【0057】
実施例4では、実施例3の主題が任意的に、データの前記デルタ・セットが、前記コンピューティング装置上にインストールされている前記ソフトウェアを、前記ソフトウェアの前記より新しいバージョンに更新するためのインストーラーを含む、ことを含む。
【0058】
実施例5では、実施例2ないし4のうちいずれか一項記載の主題が任意的に、データの前記現行セットの前記プロファイルが前記コンピューティング装置上に記憶されているライブラリのリストを含み、データの前記更新されたセットが利用可能であることを判別するために、前記少なくとも一つのプロセッサが、前記ライブラリのうち少なくとも一つのライブラリが置換されたことを判別するよう構成される、ことを含む。
【0059】
実施例6では、実施例1ないし5のうちいずれか一項記載の主題が任意的に、データの前記デルタ・セットが、データの前記現行セットおよびデータの前記更新されたセットのバイナリーにおける差に基づく、ことを含む。
【0060】
実施例7では、実施例1ないし6のうちいずれか一項記載の主題が任意的に、前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを:第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と;前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することに基づいて:前記第二のコンピューティング装置による取得のために、データの前記デルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とを実行するよう構成するものである、ことを含む。
【0061】
実施例8では、実施例7記載の主題が任意的に、前記コンピューティング装置上に記憶されているデータの現行セットの前記プロファイルおよび前記第二のコンピューティング装置上に記憶されているデータの現行セットの前記プロファイルが、データのそれぞれの現行セットのそれぞれのハッシュを含む、ことを含む。
【0062】
実施例9では、実施例7または8記載の主題が任意的に、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別するために、前記少なくとも一つのプロセッサはデータの前記それぞれの現行セットの前記それぞれのハッシュを比較するよう構成される、ことを含む。
【0063】
実施例10では、実施例1ないし9のうちいずれか一項記載の主題が任意的に、前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを:第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と;前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルに一致しないとの判別に基づいて:データの第二のデルタ・セットを生成し、前記第二のコンピューティング装置による取得のためにデータの前記第二のデルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とを実行するよう構成するものである、ことを含む。
【0064】
実施例11は、データを更新する方法であって、コンピューティング装置からの更新要求を受領する段階であって、前記更新要求は、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と;データの前記現行セットをデータの更新されたセットに変換するためのデータのデルタ・セットが以前に生成されたかどうかを判定する段階と;データの前記デルタ・セットが以前に生成されていないとの判定に基づいて、データの前記デルタ・セットを生成し、前記コンピューティング装置によりデータの前記デルタ・セットを取得するためのアドレスを前記コンピューティング装置に送信する段階とを含む、方法である。
【0065】
実施例12では、実施例11の主題が任意的に、少なくとも部分的にはデータの前記現行セットの前記プロファイルに基づいて、データの前記更新されたセットが利用可能であることを判別する段階をさらに含む。
【0066】
実施例13では、実施例12記載の主題が任意的に、データの前記現行セットの前記プロファイルが前記コンピューティング装置上にインストールされているソフトウェアのバージョンを同定し、データの前記更新されたセットが利用可能であることを判別することが、前記ソフトウェアのより新しいバージョンが利用可能であると判別することを含む、ことを含む。
【0067】
実施例14では、実施例13記載の主題が任意的に、データの前記デルタ・セットが、前記コンピューティング装置上にインストールされている前記ソフトウェアを、前記ソフトウェアの前記より新しいバージョンに更新するためのインストーラーを含む、ことを含む。
【0068】
実施例15では、実施例12ないし14のうちいずれか一項記載の主題が任意的に、データの前記現行セットの前記プロファイルが前記コンピューティング装置上に記憶されているライブラリのリストを含み、データの前記更新されたセットが利用可能であることを判別することが、前記ライブラリのうち少なくとも一つのライブラリが置換されたことを判別することを含む、ことを含む。
【0069】
実施例16では、実施例11ないし15のうちいずれか一項記載の主題が任意的に、データの前記デルタ・セットが、データの前記現行セットおよびデータの前記更新されたセットのバイナリーにおける差に基づく、ことを含む。
【0070】
実施例17では、実施例11ないし16のうちいずれか一項記載の主題が任意的に、第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と;前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することに基づいて:前記第二のコンピューティング装置による取得のために、データの前記デルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とをさらに含む、ことを含む。
【0071】
実施例18では、実施例17記載の主題が任意的に、前記コンピューティング装置上に記憶されているデータの現行セットの前記プロファイルおよび前記第二のコンピューティング装置上に記憶されているデータの現行セットの前記第二のプロファイルが、データのそれぞれの現行セットのそれぞれのハッシュを含む、ことを含む。
【0072】
実施例19では、請求項17または18記載の主題が任意的に、前記第二のコンピューティング装置上に記憶されているデータの現行セットの第二のプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することが、データの前記それぞれの現行セットの前記それぞれのハッシュを比較することを含む、ことを含む。
【0073】
実施例20では、請求項11ないし19のうちいずれか一項記載の主題が任意的に、第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と;前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前のプロファイルに一致しないとの判別に基づいて:データの第二のデルタ・セットを生成し、前記第二のコンピューティング装置による取得のためにデータの前記第二のデルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とをさらに含む。
【0074】
実施例21は、機械によって実行されたときに機械に実施例11ないし20のうちいずれか一項記載の方法の動作を実行させるための命令を含む少なくとも一つの機械可読媒体である。
【0075】
実施例22は、実施例11ないし20のうちいずれか一項記載の方法を実行する手段を有する装置である。
【0076】
実施例23は、データを更新する装置であって、コンピューティング装置からの更新要求を受領する手段であって、前記更新要求は、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、手段と;データの前記現行セットをデータの更新されたセットに変換するためのデータのデルタ・セットが以前に生成されたかどうかを判定する手段と;データの前記デルタ・セットが以前に生成されていないとの判定に基づいて、データの前記デルタ・セットを生成する手段と、前記コンピューティング装置によりデータの前記デルタ・セットを取得するためのアドレスを前記コンピューティング装置に送信する手段とを有する、装置である。
【0077】
実施例24では、実施例23の主題が任意的に、少なくとも部分的にはデータの前記現行セットの前記プロファイルに基づいて、データの前記更新されたセットが利用可能であることを判別する手段をさらに含むことを含む。
【0078】
実施例25では、実施例24記載の主題が任意的に、データの前記現行セットの前記プロファイルが前記コンピューティング装置上にインストールされているソフトウェアのバージョンを同定し、データの前記更新されたセットが利用可能であることを判別する手段が、前記ソフトウェアのより新しいバージョンが利用可能であると判別する手段を含む、ことを含む。
【0079】
実施例26では、実施例25記載の主題が任意的に、データの前記デルタ・セットが、前記コンピューティング装置上にインストールされている前記ソフトウェアを、前記ソフトウェアの前記より新しいバージョンに更新するためのインストーラーを含む、ことを含む。
【0080】
実施例27では、実施例24ないし26のうちいずれか一項記載の主題が任意的に、データの前記現行セットの前記プロファイルが前記コンピューティング装置上に記憶されているライブラリのリストを含み、データの前記更新されたセットが利用可能であることを判別する手段が、前記ライブラリのうち少なくとも一つのライブラリが置換されたことを判別する手段を含む、ことを含む。
【0081】
実施例28では、実施例23ないし27のうちいずれか一項記載の主題が任意的に、データの前記デルタ・セットが、データの前記現行セットおよびデータの前記更新されたセットのバイナリーにおける差に基づく、ことを含む。
【0082】
実施例29では、実施例23ないし28のうちいずれか一項記載の主題が任意的に、第二のコンピューティング装置からの第二の更新要求を受領する手段であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、手段と;前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することに基づいて:前記第二のコンピューティング装置による取得のために、データの前記デルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する手段とをさらに含む、ことを含む。
【0083】
実施例30では、実施例29記載の主題が任意的に、前記コンピューティング装置上に記憶されているデータの現行セットの前記プロファイルおよび前記第二のコンピューティング装置上に記憶されているデータの現行セットの前記第二のプロファイルが、データのそれぞれの現行セットのそれぞれのハッシュを含む、ことを含む。
【0084】
実施例31では、請求項29または30記載の主題が任意的に、前記第二のコンピューティング装置上に記憶されているデータの現行セットの第二のプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別する手段が、データの前記それぞれの現行セットの前記それぞれのハッシュを比較する手段を含む、ことを含む。
【0085】
実施例32では、請求項23ないし31のうちいずれか一項記載の主題が任意的に、第二のコンピューティング装置からの第二の更新要求を受領する手段であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、手段と;前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前のプロファイルに一致しないとの判別に基づいて:データの第二のデルタ・セットを生成する手段と、前記第二のコンピューティング装置による取得のためにデータの前記第二のデルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する手段とをさらに含む。
【0086】
上記の詳細な説明は付属の図面への参照を含むが、図面は詳細な説明の一部をなす。図面は、例として、実施されうる個別的な実施形態を示す。これらの実施形態は、本稿では「例」とも称される。そのような例は、図示または記述されたものに加えて諸要素を含んでいてもよい。しかしながら、図示または記述された要素を含む例も考えられる。さらに、特定の例(またはその一つまたは複数の側面)に関してであれ他の例(またはその一つまたは複数の側面)に関してであれ図示または記述した要素(またはその一つまたは複数の側面)の任意の組み合わせまたは置換を使う例も考えられる。
いくつかの態様を記載しておく。
〔態様1〕
少なくとも一つのプロセッサと;命令が記憶されている記憶可読媒体とを有するデータを更新するためのシステムであって、
前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記プロセッサを:
コンピューティング装置からの更新要求を受領する段階であって、前記更新要求は、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と;
データの前記現行セットをデータの更新されたセットに変換するためのデータのデルタ・セットが以前に生成されたかどうかを判定する段階と;
データの前記デルタ・セットが以前に生成されていないとの判定に基づいて、
データの前記デルタ・セットを生成し、
前記コンピューティング装置によりデータの前記デルタ・セットを取得するためのアドレスを前記コンピューティング装置に送信する段階とを実行するよう構成するものである、
システム。
〔態様2〕
前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを:
少なくとも部分的にはデータの前記現行セットの前記プロファイルに基づいて、データの前記更新されたセットが利用可能であることを判別する段階を実行するよう構成するものである、
態様1記載のシステム。
〔態様3〕
データの前記現行セットの前記プロファイルが前記コンピューティング装置上にインストールされているソフトウェアのバージョンを同定し、データの前記更新されたセットが利用可能であることを判別するために、前記少なくとも一つのプロセッサが、前記ソフトウェアのより新しいバージョンが利用可能であると判別するよう構成される、態様2記載のシステム。
〔態様4〕
データの前記デルタ・セットが、前記コンピューティング装置上にインストールされている前記ソフトウェアを、前記ソフトウェアの前記より新しいバージョンに更新するためのインストーラーを含む、態様3記載のシステム。
〔態様5〕
データの前記現行セットの前記プロファイルが前記コンピューティング装置上に記憶されているライブラリのリストを含み、データの前記更新されたセットが利用可能であることを判別するために、前記少なくとも一つのプロセッサが、前記ライブラリのうち少なくとも一つのライブラリが置換されたことを判別するよう構成される、態様2記載のシステム。
〔態様6〕
データの前記デルタ・セットが、データの前記現行セットおよびデータの前記更新されたセットのバイナリーにおける差に基づく、態様1記載のシステム。
〔態様7〕
前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを:
第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と;
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することに基づいて:
前記第二のコンピューティング装置による取得のために、データの前記デルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とを実行するよう構成するものである、
態様1記載のシステム。
〔態様8〕
前記コンピューティング装置上に記憶されているデータの現行セットの前記プロファイルおよび前記第二のコンピューティング装置上に記憶されているデータの現行セットの前記プロファイルが、データのそれぞれの現行セットのそれぞれのハッシュを含む、態様7記載のシステム。
〔態様9〕
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別するために、前記少なくとも一つのプロセッサはデータの前記それぞれの現行セットの前記それぞれのハッシュを比較するよう構成される、態様7記載のシステム。
〔態様10〕
前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを:
第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と;
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルに一致しないとの判別に基づいて:
データの第二のデルタ・セットを生成し、
前記第二のコンピューティング装置による取得のためにデータの前記第二のデルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とを実行するよう構成するものである、
態様1記載のシステム。
〔態様11〕
データを更新する方法であって、
コンピューティング装置からの更新要求を受領する段階であって、前記更新要求は、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と;
データの前記現行セットをデータの更新されたセットに変換するためのデータのデルタ・セットが以前に生成されたかどうかを判定する段階と;
データの前記デルタ・セットが以前に生成されていないとの判定に基づいて、
データの前記デルタ・セットを生成し、
前記コンピューティング装置によりデータの前記デルタ・セットを取得するためのアドレスを前記コンピューティング装置に送信する段階とを含む、
方法。
〔態様12〕
少なくとも部分的にはデータの前記現行セットの前記プロファイルに基づいて、データの前記更新されたセットが利用可能であることを判別する段階をさらに含む、
態様11記載の方法。
〔態様13〕
データの前記現行セットの前記プロファイルが前記コンピューティング装置上にインストールされているソフトウェアのバージョンを同定し、データの前記更新されたセットが利用可能であることを判別することが、前記ソフトウェアのより新しいバージョンが利用可能であると判別することを含む、態様12記載の方法。
〔態様14〕
データの前記デルタ・セットが、前記コンピューティング装置上にインストールされている前記ソフトウェアを、前記ソフトウェアの前記より新しいバージョンに更新するためのインストーラーを含む、態様13記載の方法。
〔態様15〕
データの前記現行セットの前記プロファイルが前記コンピューティング装置上に記憶されているライブラリのリストを含み、データの前記更新されたセットが利用可能であることを判別することが、前記ライブラリのうち少なくとも一つのライブラリが置換されたことを判別することを含む、態様12記載の方法。
〔態様16〕
データの前記デルタ・セットが、データの前記現行セットおよびデータの前記更新されたセットのバイナリーにおける差に基づく、態様11記載の方法。
〔態様17〕
第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と;
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することに基づいて:
前記第二のコンピューティング装置による取得のために、データの前記デルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とをさらに含む、
態様11記載の方法。
〔態様18〕
前記コンピューティング装置上に記憶されているデータの現行セットの前記プロファイルおよび前記第二のコンピューティング装置上に記憶されているデータの現行セットの前記第二のプロファイルが、データのそれぞれの現行セットのそれぞれのハッシュを含む、態様17記載の方法。
〔態様19〕
前記第二のコンピューティング装置上に記憶されているデータの現行セットの第二のプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することが、データの前記それぞれの現行セットの前記それぞれのハッシュを比較することを含む、態様17記載の方法。
〔態様20〕
第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と;
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前のプロファイルに一致しないとの判別に基づいて:
データの第二のデルタ・セットを生成し、
前記第二のコンピューティング装置による取得のためにデータの前記第二のデルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とをさらに含む、
態様11記載の方法。
〔態様21〕
機械に態様11ないし20のうちいずれか一項記載の方法を実行させるためのコンピュータ・プログラム。
〔態様22〕
態様11ないし20のうちいずれか一項記載の方法を実行する手段を有する装置。
〔態様23〕
態様21記載のコンピュータ・プログラムを記憶している少なくとも一つの機械可読媒体。
【符号の説明】
【0087】
102 装置
104 装置
106 更新管理システム
108 差分生成サブシステム
110 更新要求サブシステム
112 差分インストーラー
114 プログラム
116 更新要求
120 更新要求
122 リンク
202 現行の装置ライブラリ
206 最新リスト
210 更新要求サブシステム
212 差分生成サブシステム
214 ハッシュ比較
216 差分要求
218 応答生成器
220 差分生成
222 差分記憶
302 差分インストーラー
402 コンピューティング装置からの更新要求を受領。更新要求は、コンピューティング装置上に記憶されているデータの現行のセットのプロファイルを含む
404 少なくとも部分的にはデータの現行セットのプロファイルに基づいて、データの更新されたセットが利用可能であることを判別
406 データの現行セットをデータの更新されたセットに変換するためにデータのデルタ・セットが以前に生成されたかどうかを判定
408 データのデルタ・セットを生成
410 コンピューティング装置によりデータのデルタ・セットを取得するためのアドレスをコンピューティング装置に送信
502 プロセッサ
504 メイン・メモリ
506 静的メモリ
510 ビデオ・ディスプレイ
512 英数字入力装置
514 UIナビゲーション装置
516 記憶装置
518 信号生成装置
520 ネットワーク・インターフェース装置
522 機械可読媒体
524 命令
526 ネットワーク
図1
図2
図3
図4
図5