JP4364790B2 - バイト・レベルのファイル相違検出および更新アルゴリズム - Google Patents

バイト・レベルのファイル相違検出および更新アルゴリズム Download PDF

Info

Publication number
JP4364790B2
JP4364790B2 JP2004504132A JP2004504132A JP4364790B2 JP 4364790 B2 JP4364790 B2 JP 4364790B2 JP 2004504132 A JP2004504132 A JP 2004504132A JP 2004504132 A JP2004504132 A JP 2004504132A JP 4364790 B2 JP4364790 B2 JP 4364790B2
Authority
JP
Japan
Prior art keywords
file
byte
stream
byte stream
original
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004504132A
Other languages
English (en)
Other versions
JP2005525641A5 (ja
JP2005525641A (ja
Inventor
グ,ジンシェン
ペン,リョーシェン
Original Assignee
イノパス・ソフトウェアー・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by イノパス・ソフトウェアー・インコーポレーテッド filed Critical イノパス・ソフトウェアー・インコーポレーテッド
Publication of JP2005525641A publication Critical patent/JP2005525641A/ja
Publication of JP2005525641A5 publication Critical patent/JP2005525641A5/ja
Application granted granted Critical
Publication of JP4364790B2 publication Critical patent/JP4364790B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

ここに開示する実施形態は、相違ファイル(difference file)を用いたソフトウェア管理のような、ファイル更新に関する。
プロセッサ即ち中央演算装置(CPU)上で実行してある機能性を与えるソフトウェアは、時と共に移り変わっていくことが多い。この移り変わりは、ソフトウェア・ファイルにおけるバグ、即ち、エラーを訂正したり、発展する技術に合わせたり、新たな特徴を追加する必要性から生ずる場合もある。即ち、移動ワイヤレス・デバイス上にホストされている埋め込みソフトウェア・コンポーネントは、多数のソフトウェア・バグを含んでいることが多く、その訂正が必要となるのである。
ソフトウェアには、人間が読み取り可能なASCII(American Standard Code for Information Interchange)プレーン・テキスト・ファイルまたは二進コードの形式の1つ以上のファイルが含まれる。UNIXプラットフォームまたはパーソナル・コンピュータ(PC)は、多数のソフトウェア・コンポーネントを含み、そのソフトウェア・コンポーネントの各々は、対応するオペレーティング・システム(OS)が支援するファイル・システムによって独立して管理され、更新される。UNIXプラットフォームまたはPC上で処理されるソフトウェア・ファイルまたはソフトウェア・コンポーネントを更新するために用いられる情報は、インターネットを通じて転送することができ、あるいはフロッピ・ディスク、コンパクト・ディスク・リード・オンリ・メモリ(CD−ROM)、またはコンパクト・フラッシュ・カードのような二次記憶媒体からロードすることができる。
対照的に、移動ワイヤレス・デバイスでは、リアルタイム・オペレーティング・システム(RTOS)が用いられるのが通例であり、その場合全てのソフトウェア・コンポーネントが単一の大きなファイルとして連携されている。更に、これらの移動ワイヤレス・デバイスでは、ファイル・システムの対応は得られないのが通例である。加えて、前述の単一の大きなファイルは、無線、赤外線、またはシリアル・リンクのような低速通信リンクを用いて、デバイスに予めロードしておく、即ち、埋め込んでおく必要がある。
低速通信リンクを通じて移動ワイヤレス・デバイスの大きなファイルを更新する場合の障害には、更新したファイルをデバイスに配信するのに伴う時間、帯域幅、およびコストが含まれる。このような大型ファイルの配布には、顧客の視点からは、望ましくない程に長い時間がかかる可能性があり、ファイル提供側の視点からは、大量のサーバ資源を消費する可能性がある。無線リンクのような信頼できない通信リンクを通じた大型ファイルの配信も、通信異常の率を高める虞れがあり、デバイス内部に大容量のワーキング・メモリ、例えば、ランダム・アクセス・メモリ(RAM)が必要となる場合もある。
大型ファイルを移動デバイスに配信する問題に対する既存の解決手段の1つに、圧縮の使用が含まれる。多数の既存の圧縮アルゴリズムが一般に用いられている。これらのアルゴリズムは、通例では、元のサイズの約40%までのファイル圧縮に対応するが、圧縮したファイルであっても、遅く、費用がかかる狭帯域通信リンクを通じてデバイスにダウンロードするには、未だ余りに大き過ぎることが多い。
ファイルを更新するための別の典型的な解決手段では、相違検出プログラム(difference program)を用いて、改訂したファイルが原ファイルとどのように異なるかに関する記述を生成する。UNIXまたはPCプラットフォーム上で実行しこのような相違データを生成する相違検出プログラムは、一般に入手可能である。大型二進ファイルに対応する相違データ・ファイルのサイズは、改訂したファイル・サイズまたは原ファイル・サイズの10%から20%程に小さくすることができる。しかしながら、圧縮の場合と同様、これらの相違検出プログラムを用いて生成した相違ファイルは、関連する通信プロトコルによる転送には大き過ぎる場合が多い。加えて、当技術分野において公知の相違検出プログラムは、相違ファイルを発生するために長い計算時間を要し、更に原ファイルの更新を実行するには移動通信デバイス内に大量のワーキング・メモリを必要とするという点で効率的ではない。
図面では、同一の参照番号は、同一または実質的に同様のエレメントまたは行為を識別する。いずれの識別のエレメントまたは行為の論述も容易に識別するために、参照番号における1つまたは複数の上位桁は、当該エレメントを最初に紹介した図の番号を示すこととする(例えば、エレメント06は、最初に図1に関して紹介され論じられている)。
以下で特に記載しない限り、図に示す種々のブロックおよび構造の構成および動作は、従来の設計のものである。その結果、このようなブロックについてはここで更に詳細に説明する必要はない。何故なら、当業者はそれらを理解しているからである。そのような更なる詳細は、簡略化のため、そして本発明の詳細な説明を曖昧にしないために省略する。図面に必要ないかなる修正も、ここに行う詳細な説明に基づけば、当業者には容易に行うことができる。
これより、バイト・レベルのファイル相違検出および更新(FDU)アルゴリズムについて詳細に説明する。ここでは、このアルゴリズムのことをFDUアルゴリズムと呼ぶ。図1は、一実施形態のFDUアルゴリズムによって行われるファイルの相違検出および更新を示すブロック図である。FDUアルゴリズムは、相違検出コンポーネントと、更新コンポーネントとを含む。相違検出コンポーネントは、ここではファイル相違検出アルゴリズムと呼び、第1コンピュータ・システムにおいてある電子ファイルの元のバージョンおよび新バージョンから相違ファイルを生成する。更新コンポーネントは、ここでは、ファイル更新アルゴリズムと呼び、相違ファイルおよび原ファイルのホストされたコピーを用いて、第2コンピュータ・システム上で、新ファイルのコピーを生成する。以下の説明では、本発明の実施形態の完全な理解を得て、それを実施可能にする説明を行うために、多数の具体的な詳細を紹介する。しかしながら、当業者は、1つ以上のこれら具体的な詳細がなくても、または他のコンポーネント、システムなどを用いても、本発明は実施可能であることは認めよう。他の場合には、本発明の形態を曖昧にするのを避けるために、周知の構造や動作は示さず詳細な説明もしないこととする。
図1を参照すると、第1コンピュータ・システム102および第2コンピュータ・システム104は、通信経路106を通じて通信する。これらのコンピュータ・システム102および104は、一緒に動作する計算デバイスのあらゆる集合体を含む。これは、当技術分野では周知である。コンピュータ・システム102および104はまた、より大きなコンピュータ・システム内のコンポーネントも含む。通信経路106は、コンピュータ・システム102および104間でファイルを伝達または転送するためのあらゆる媒体を含む。したがって、この経路106は、ワイヤレス接続、ワイヤード接続、混合ワイヤレス/ワイヤード接続を含む。また、通信経路106は、ローカル・エリア・ネットワーク(LAN)、都市区域ネットワーク(MAN:metropolitan area network)、ワイド・エリア・ネットワーク(WAN)、企業固有のネットワーク、オフィス間またはバックエンド・ネットワーク、およびインターネットを含むネットワークに対する結合部即ち接続部も含む。更に、通信経路106は、フロッピ・ディスク、ハード・ディスク・ドライブ、およびCD−ROMディスクのような、着脱可能な固定媒体、ならびに電話線、バス、および電子メール・メッセージを含む。
第1通信システム102は、元の、即ち、旧バージョン110および新バージョン112の電子ファイルを受信する。新ファイル112は、一般には、原ファイル110の更新または改訂バージョンであるが、そのように限定される訳ではない。電子ファイル110および112に含まれるソフトウェア・ファイルには、ダイナミック・リンク・ライブラリ・ファイル、共有オブジェクト・ファイル、埋め込みソフトウェア・コンポーネント(EBSC)、ファームウェア・ファイル、実行可能ファイル、16進データ・ファイルを含むデータ・ファイル、システム・コンフィギュレーション・ファイル、および個人使用データを含むファイルが含まれるが、これらに限定される訳ではない。いずれの形式のファイルでもバイト・ストリームと見なすことができるので、以後文脈によってはファイルのことをバイト・ストリームと記載することもできるものとする。
ファイル相違検出アルゴリズム114は、新ファイル112を受信し、それを原ファイル110と比較し、比較したファイル間におけるバイト・レベルの相違を計算する。これについては以下で説明する。また、ファイル相違検出アルゴリズム114は、原ファイル110および新ファイル112の前処理も行い、ファイルの相違を計算するのに先だって、ファイルのサイズを縮小することもできる。ファイル相違検出アルゴリズム114は、比較の間に、相違ファイル116を生成する。ここでは、これをデルタ・ファイルと呼ぶ。
デルタ・ファイル116の内容は、新ファイルおよび原ファイル間のバイト・レベルの相違を効率的に表す。デルタ・ファイル116は、関連するファイルの新バージョン即ち現バージョンとそのファイルの以前のバージョンとの間の相違を表す、置換および/または挿入動作の実際のデータと共に、メタデータを含む。これについては以下で説明する。ファイル相違検出アルゴリズム114は、最小数のバイトおよび以下で説明する既定のフォーマットまたはプロトコルを用いて、デルタ・ファイル116の中に、原ファイル110と新ファイル112との間のあらゆる相違を提示することによって、空間的に最適化したデルタ・ファイルを供給する。
デルタ・ファイル116は、通信経路106を通じて、別のコンピュータ・システムに転送または送信される。転送の前に、当技術分野では公知の圧縮技法を用いて、デルタ・ファイル116を圧縮することもできるが、そのように限定される訳ではない。受信側のコンピュータ・システム上にホストされている、ファイル更新アルゴリズム118は、デルタ・ファイル116を、ホストされている原ファイル110と共に用いて、新ファイル112のコピーを生成即ち作成する。この新ファイル112のコピーは、次に、改訂または更新の対象である、クライアント・デバイス上にホストされている原ファイル110を更新する際に用いられる。この更新プロセスの完了時には、第2コンピュータ・システム上に現在格納されている新ファイルは、第1コンピュータ・システムにおいて受信した新ファイルと同一となる。
原ファイルと新ファイルとの間の相違は、通例では、新ファイル自体よりも小さいので、新たなバイト・ストリーム全体の代わりに、相違分を送信し格納すれば、格納および送信において大幅な節約となる。これは、通例では遅くしかも費用がかかる可能性が高い接続部、例えば、ワイヤレスまたはセルラ接続部を通じて更新するプログラムをホストする移動電子デバイスにとっては、特に重要である。ここに記載するデルタ・ファイルは、新ファイルよりも99%まで小さいフォーマットで、新ファイルと原ファイルとの間の相違を提示し、この縮小したファイル・サイズによって、典型的な相違検出技法に対して多数の改良が得られる。1つの改良は、デルタ・ファイルをクライアント・デバイスに送信する際に必要な帯域幅の縮小である。即ち、ファイルが小さい程、転送に必要な帯域幅が小さくて済むことを意味する。また、ファイルが小さい程、送信時間も短くて済み、したがって、ファイル転送が中断される確率が低下し、同時に受信ファイルにおける送信エラーも減少する。ファイルのセキュリティに関して、新ファイル全体の代わりにデルタ・ファイルを転送すれば、新ファイルの略奪が解消する。これらの改善は全て、顧客満足度を高めるものである。
図2は、一実施形態の下におけるデルタ・ファイルの生成のフロー図である。動作が開始するのは、第1処理システムにおいて新ファイルおよび原ファイルを受信した(202)ときである。新ファイルと原ファイルとの間で前処理動作を実行して(204)、2つのファイルの内容間における共通セグメントおよび単純なパターンを識別する。前処理アルゴリズムは、識別した共通セグメントおよびパターンを用いて、新ファイルおよび原ファイルのサイズを縮小する。このように、この前処理は、ファイルの共通セグメントについて差分計算を行う必要性をなくすことにより、差分計算の効率を高めるのである。
前処理に続いて、新ファイルおよび原ファイルとの間でバイト・レベルの相違を計算する(206)。計算した相違は、動作アレイを用いてコード化する(208)。合併動作を動作アレイに適応して、デルタ・ファイルの作成210におけるオーバーヘッドを削減する。デルタ・ファイルを生成するには、可変長整数フォーマットを用いて動作アレイを1つのファイルに書き込むことにより、ファイル間の相違を定義するために必要なバイト数を最少に減らす(212)。この可変長整数フォーマットについては、以下で更に説明する。
次に、可能であれば、デルタ・ファイルを最適化して、ファイル・サイズを更に縮小する(214)。この最適化は、圧縮およびチェックサム・ビットまたはバイトの加算を含み、デルタ・ファイルのクライアント・デバイスへの送信に続いて、エラーを検出できるようにすることを含む。最適化したデルタ・ファイルを、次に、出力として供給する(216)。一実施形態のデルタ・ファイルは、原ファイルのコピーをホストする他のコンピュータ・システムへの今後の転送または送信のために格納しておく。
前述のように、前処理動作は、新ファイルと原ファイルとの内容の間で実行し、2つのファイルの内容間にある共通のセグメントおよび単純なパターンを識別する。共通セグメントおよび単純パターンの知識を用いて、比較を行うバイト数を削減することによって、全体的な性能の向上(gain)を図る。例えば、新ファイルを用いてソフトウェアのバグを訂正したり、新たな機構を追加したり、または既存の機構を強化するときのように、新ファイルは原ファイルとはわずかしか相違しないことが多い。したがって、ファイルの部分集合に対する相違検出動作と共に、単純になった前処理動作を実行するために必要な蓄積時間は、新ファイルおよび原ファイルの内容全体に対して相違検出動作を実行するために必要な時間よりも遥かに短いので、全体的な性能向上が実現するのである。これは、特に、単一の挿入または削除のみを伴う場合に言えることである。したがって、前処理は、全体的な相違計算時間を短縮し、性能向上をもたらす。デルタ・ファイル生成のプロセスの各々については、以下で詳しく説明する。
図3は、一実施形態の下において、ファイル間の比較を行う前にファイルを前処理する方法のフロー図である。この前処理は、挿入内容を決定し、削除内容を決定し、挿入および削除内容の連接または特殊な場合を決定し、これらの決定に関するファイルに情報を書き込む動作を含む。
挿入内容の決定(306)に関して、そして新バイト・ストリームおよび原バイト・ストリームの受信(302)に続いて、一実施形態の前処理アルゴリズムは、原バイト・ストリームおよび新バイト・ストリームの最も長い共通接頭部および最も長い共通接尾部を識別する(304)。図4を参照すると、次に比較を行い、原バイト・ストリーム402が新バイト・ストリーム404の接頭部406か否か判定を行う。そうであれば、相違は一挿入408である。挿入メタデータおよび挿入内容またはデータをデルタ・ファイルに書き込む。図5を参照すると、再度比較を行い、原バイト・ストリーム502が新バイト・ストリーム504の接尾部であるか否か判定を行う。そうであれば、相違は1つの挿入508であり、挿入メタデータおよび内容をデータ・ファイルに書き込む。
削除内容を決定する(308)には、原バイト・ストリームおよび新バイト・ストリームの最も長い共通接頭部および最も長い共通接尾部を識別することから、動作を再度実行する。図6を参照すると、次に比較を行って、新バイト・ストリーム604が原バイト・ストリーム692の接頭部606か否か判定を行う。そうであれば、相違は1つの削除608となり、削除メタデータをファイルに書き込む。更に、図7を参照すると、比較を行い、新バイト・ストリーム704が原バイト・ストリーム702の接尾部706か否か判定を行う。そうであれば、相違は1つの削除708となり、削除メタデータをファイルに書き込む。
連接、挿入および削除の特殊な場合に関して、一実施形態の前処理アルゴリズムは、開始すると、原バイト・ストリームおよび新バイト・ストリームで識別した最も長い共通接頭部および接尾部を用いる。図8を参照すると、原バイト・ストリーム802が最長共通接頭部806と最長共通接尾部808との連接である場合、新バイト・ストリーム804には、接頭部806と接尾部808との間に挿入810がある。この識別した挿入のメタデータおよび内容を双方ともファイルに書き込む。図9を参照すると、新バイト・ストリーム904が最長共通接頭部906と最長共通接尾部908との連接である場合、原バイト・ストリーム902には、接頭部906と接尾部908との間に削除910しかなく、削除メタデータをデータ・ファイルに書き込む。
挿入および削除内容を判定するための、原バイト・ストリームおよび新バイト・ストリームに対する上述の動作に応答して、前処理アルゴリズムは、相違に関する追加情報を戻す(310)。この情報には、2つのバイト・ストリームにおいてどこから相違が開始するかについての情報、最長共通接頭部および最長共通接尾部以外の原バイト・ストリームの2つのサブストリームのサイズが含まれるが、これらに限定されるのではない。
一実施形態の前処理の一例として、原バイト・ストリーム
abcatsrst
および新バイト・ストリーム
abdailyrst
について検討する。
最長の共通接頭部「ab」および最長共通接尾部「rst」を削除することによって、ファイル相違検出アルゴリズムによる処理のために残っている2つのサブストリームは、それぞれ、「cats」および「daily」に縮小する。
前処理動作に続いて、相違検出アルゴリズムは、比較したバイト・ストリーム間の編集距離(edit distance)を計算する。2つのバイト・ストリーム間の編集距離とは、D. Gusfieldが"Algorithms on Strings, Trees, and Sequences: Computer Science and Computational Biology" (ストリング、ツリー、およびシーケンスに関するアルゴリズム:コンピュータ・サイエンスおよび計算生物学)(「 Gusfieldの引例」) cambridge (1997)において記載しているように、原バイト・ストリームを新バイト・ストリームに変換するために必要な最小数の編集動作のことである。一実施形態の編集動作は、挿入、削除、および代替即ち置換を含む。原バイト・ストリームを新バイト・ストリームに変換するために用いられる編集動作は、記号「I」(1バイト挿入)、「D」(1バイト削除)、「R」(1バイト置換)、および「M」(1バイト一致)を含む動作アレイを用いて表現する。これより、一例を説明する。
この例では、原バイト・ストリームは「vintner」であり、新バイト・ストリームは「writers」であり、編集距離の計算の間に生成した、関連動作アレイは「RIMDMDMMI」となる。この動作は、以下のように表される。
Figure 0004364790
動作アレイを原バイト・ストリームに適用して新バイト・ストリームを生成する際、原バイト・ストリームの最初のバイト「v」を新バイト・ストリームにおける新バイト「w」と置換することから開始する。原バイト・ストリームに対して行う2番目の動作は、新バイト「r」の挿入である。動作アレイの3番目のエレメントは一致(M)を示しているので、元のバイト「i」を新バイト・ストリームにコピーする。4番目の動作は削除(D)であり、新バイト・ストリームにおけるバイト「n」が削除されることになる。5番目の動作は、もう1つの一致(M)であるので、元のバイト「t」を新バイト・ストリームにコピーする。6番目の動作はもう1つの削除(D)であり、新バイト・ストリームにおいてバイト「n」が削除される。7番目の動作はもう1つの一致(M)であるので、元のバイト「e」を新バイト・ストリームにコピーする。8番目の動作は、更に別の一致(M)であるので、元のバイト「r」を新バイト・ストリームにコピーする。原バイト・ストリームに対して行われる9番目の動作は、新バイト「s」の新バイト・ストリームへの挿入(I)である。
一実施形態の下において動作アレイを生成するファイル相違検出アルゴリズムは、当技術分野では周知の2つのアルゴリズムに基づいている。これらのアルゴリズムの一方は、D.S. Hirschbergによる"A linear space algorithm for computing maximal common subsequences,"(最大共通部分列を計算するための線形空間アルゴリズム) Comm. ACM 18,6 (1975) 341-343に記載されている、Hirschbergの線形空間最適整合アルゴリズム(linear-space optimal alignment algorithm)である。他方のアルゴリズムは、E. Ukkonenによる"On-line construction of suffix tree" (接尾ツリーのオンライン構築)(「Ukkonen引例」)algorithmica 14(3), 249-260 (1995)に記載されている、Ukkonenの線形時間接尾ツリー・アルゴリズムである。
従来の動的プログラミング計画では、O(nm)時間およびO(nm)空間が必要であり、nおよびmは、それぞれ、原バイト・ストリームおよび新バイト・ストリームの長さである。したがって、長さが約32kバイトである場合、動的プログラミング・テーブルをメモリ内に構築するためには、O(1G)バイトのメモリが必要となる。しかし、バイト・ストリーム相違計算問題における資源の制限には、時間および空間双方が含まれることは、極ありふれたことである。Daniel Hirchbergは、多くの動的プログラム問題に有効な実用的な空間縮小方法を開発した。Hirschbergのアルゴリズムは、必要な空間をO(nm)からO(min(n,m))に縮小するが、最悪時間境界(worst case time bound)は2倍になるだけである。バイト・ストリームのサイズが約1Mバイトであるとすると、メモリにはO(1M)バイトの作業空間だけがあればよく、T. Cormen、C.Leiserson、およびR. Rivestが"Introduction to Algorithms"(アルゴリズムの手引き)、 The MIT Press (1990)において記載しているように、この分割統治方式の再帰レベルは、約log(1M)=20である。これは、利用可能なメモリがO(1G)までであり、デフォルトのスタック・サイズがO(1M)である、現行の計算環境には適当である。
接尾ツリー、または位置ツリー(position tree)は、Gusfield引例に記載されているように、可能な全ての接尾部を明示的に列挙することによって、ストリングの内部構造を暴露するデータ構造である。一実施形態のファイル相違検出アルゴリズムとの関連で最も重要で興味深い構造は、ストリームにおける最長繰り返しサブストリングである。更に具体的には、これは、2つの所与のバイト・ストリーム間における最も長い共通のサブストリング(LCS)である。例えば、「abc」は、「axababcdij」および「abiabc」間のLCSである。線形時間アルゴリズムについて、Ukkonenの引例において、あらゆる所与のストリングについても接尾ツリーを構成することについて記載されている。しかしながら、Ukkonenのアルゴリズムを実施する場合、種々の考慮点が伴う。
最初の考慮点は、バイト・ストリームは大抵二進ファイルであるので、殆どの場合、0から255までの文字全てがバイト・ストリーム内に現れるという事実と関係する。このため、アルゴリズムで用いられている特殊なマーカに特別な注意を払う必要がある。特殊なマーカとは、バイト・ストリームには出てこない文字と定義する。これに対処する1つの方法では、この特殊マーカが出現すると想定される場所を用いて、アルゴリズムを修正する。
第2の考慮点に関して、Ukkonenのアルゴリズムを用いる目的は、2つの所与のバイト・ストリーム間でLCSを見出すことである。したがって、一般化した接尾ツリーを構成する際、2つの所与のバイト・ストリームの連接のための接尾ツリーを、これらを終端するための特殊マーカを加えて、構築しなければならない。
Ukkonenのアルゴリズムの使用に伴う第3の考慮点に取り組む際、接尾ツリーのレベルは、所与のバイト・ストリームのサイズおよび構造に左右される。再帰的に接尾ツリーを横断してツリーを構築し、主要情報を収集し、あるいはツリーを開放すると、大きなスタック・サイズ(例えば、64MB)を確保していても、プロセス・スタックを使い果たす可能性がある。したがって、再帰の代わりに"while loop"を用いて、再帰ツリー横断関数(recursive tree traversing function)をデコードする。
第4の考慮点は、Gusfield引例に記載されている、エッジ・ラベル圧縮方式(edge-label compression scheme)に関与する。この圧縮方式は、線形空間の複雑性(linear space complexity)を達成する際に使用が推奨されるが、それ以外では、更に大きなバイト・ストリームの処理のために、利用可能なシステム・メモリを使い果たす虞れがある。
前述のように、Hirschbergのアルゴリズムは、線形空間および二次時間(quadratic time)における原バイト・ストリームと新バイト・ストリームとの間で最適な編集距離を計算するために用いることができる。ストリーム・サイズが小さい場合、大抵の場合数キロバイト未満であるが、最適編集距離は一般に妥当な時間量で計算することができる。しかしながら、ストリーム・サイズが数千バイト以上となると、Hirschbergのアルゴリズムが最適編集距離を計算するのに要する時間は非常に長く(数時間、数日、そして場合によっては数カ月)、実用にならない。新バイト・ストリームは通例原バイト・ストリームの修正であるので、2つのバイト・ストリームには多くの共通部分がある。これらバイト・ストリームの共通部分を素早く識別すれば、ここに記載するアルゴリズムは、より小さなバイト・ストリームに関する相違の計算に集中することによって、効率的かつ迅速に動作することが可能となる。
図10は、一実施形態の下におけるファイル相違検出アルゴリズムのフロー図1000である。ファイル相違検出アルゴリズムは、2つの入力バイト・ストリーム間の編集距離を計算し、その結果を生成して動作アレイに保存する。一実施形態のファイル相違検出アルゴリズムは、原バイト・ストリームと新バイト・ストリームとの間でLCSを識別する。何故なら、LCSは、原バイト・ストリームにおいて修正されていない最も大きな部分であるからである。これは、Ukkonenのアルゴリズムを用いれば、線形時間および線形空間で行うことができる。次いで、分割統治手法を適用する。一旦LCSがわかったなら、旧バイト・ストリームおよび新バイト・ストリームを4つの小さなバイト・ストリームに分割する。この方式は、旧バイト・ストリームおよび新バイト・ストリームが、Hirschbergのアルゴリズムを呼び出せるサイズ未満になるまで、再帰的に適用し、呼び出せる時点になったら、Hirshbergのアルゴリズムを呼び出して、バイト・ストリーム間の編集距離を計算する。結果は、グローバル動作アレイに記録される。
図10の記号の使用には、Hirschbergのアルゴリズムを呼び出すことができる、バイト・ストリームの最少バイト数、例えば、4096を表す参照文字「L」が含まれている。参照文字「M」は、相違計算を許容時間内、即ち、約2時間未満程度で終了することができる入力バイト・ストリームにおける最大バイト数を表す。許容時間は、予め指定する。入力バイト・ストリームがMバイトを超過した場合、ファイル相違検出アルゴリズムはそれを複数の部分に分解する。これらの部分は、一実施形態の下では半分ずつであるが、そのように限定される訳ではない。サイズMは数十メガバイトとしてもよい。
記号の使用についての説明を続ける。o1hおよびo2hは、原バイト・ストリーム、即ち、バイト・ストリームoの前半および後半をそれぞれ表し、一方n1hおよびn2hは、新バイト・ストリーム、即ち、バイト・ストリームnの前半および後半をそれぞれ表す。したがって、これらの表現は、次の式を満たす。
Figure 0004364790
文字oおよびoは、バイト・ストリームoの接頭部および接尾部をそれぞれ表し、次の式を満たす。
Figure 0004364790
文字nおよびnは、バイト・ストリームnの接頭部および接尾部をそれぞれ表し、次の式を満たす。
Figure 0004364790
加えて、「長さ(o)」は、バイト・ストリームoの長さを表す。
以下の疑似コードは、ファイル相違検出アルゴリズムによって用いられるものの一例の上位記述として提示する。この例では、「o」は原バイト・ストリームを表し、「n」は新バイト・ストリームを表し、「op_array」は動作アレイを表す。
Figure 0004364790
図10を参照すると、動作は、ブロック1002において開始し、ファイル相違検出アルゴリズムが原バイト・ストリームおよび新バイト・ストリームを受信する。ブロック1004において、ファイル相違検出アルゴリズムは、両入力バイト・ストリームの長さが0に等しいか否か判定を行う。長さが0に等しい場合、この手順は戻る。
両入力バイト・ストリームの少なくとも一方が空でない場合、ファイル相違検出アルゴリズムは、バイト・ストリームの長さを別個に評価し、ブロック1006において原バイト・ストリームの長さを評価し、ブロック1008において新バイト・ストリームの長さを評価する。原バイト・ストリームの長さが0に等しいとき、これは新バイト・ストリームが収容する情報が全て新規であることを示す。したがって、ブロック1106において、ファイル相違検出アルゴリズムは、挿入動作(「I」)を動作アレイlength(n) timesに書き込む。次いで、手順は戻る。
ブロック1008において、動作は、旧バイト・ストリームは0でないが、新バイト・ストリームは空であるという状況を評価する。新バイト・ストリームの長さが0に等しいとき、これは、原バイト・ストリームのデータを全て削除することを示す。したがって、ブロック1108において、ファイル相違検出アルゴリズムは、削除動作(「D」)を動作アレイ length(o) times に書き込む。次いで、手順は戻る。
両入力バイト・ストリームの長さが0よりも大きい場合、動作はブロック1010に進み、ファイル相違検出アルゴリズムは、両バイト・ストリームの長さを評価する。各入力バイト・ストリームの長さが、Hirschbergアルゴリズムを呼び出すことができるバイト・ストリームの最大バイト数であるL未満の場合、ブロック1110においてHirschbergアルゴリズムをコールし、2つのバイト・ストリーム間の編集距離を計算する。次いで、手順は戻る。
入力バイト・ストリームの少なくとも一方の長さがLよりも大きい場合、動作はブロック1012に進む。ここで、ファイル相違検出アルゴリズムは、各入力バイト・ストリームの長さは、相違計算が予め指定した時間即ち許容時間内に終了することができる入力バイト・ストリームの最大バイト数であるMよりも大きいか否か判定を行う。各入力バイト・ストリームの長さがMを超過している場合、ブロック1112において各バイト・ストリームを、ほぼ等しいサイズに半分ずつ分割する。動作は続いて、ブロック1113および1114において、バイト・ストリーム・セグメントの各集合o1h/n1hおよびo2h/n2hを、それぞれ、入力バイト・ストリームとしてファイル相違検出アルゴリズムに入力する。
入力バイト・ストリームの長さが、Hirschbergアルゴリズムを呼び出すことができる最大長よりも大きく、相違計算を許容時間内に終了できる最大長よりも短い場合、ステップ1014において、ファイル相違検出アルゴリズムは線形時間ルーチンをコールし、バイト・ストリーム間でLCSを識別する。一実施形態の線形時間ルーチンは、Ukkonenのアルゴリズムであるが、本実施形態はそのように限定される訳ではない。
ブロック1016において、2つのバイト・ストリーム間にLCSが存在しない場合、ブロック1116において2つのバイト・ストリームの長さを比較する。新バイト・ストリームの長さが原バイト・ストリームのそれを上回る場合、ブロック1118において置換(「R」)および挿入(「I」)動作を動作アレイ内に適宜書き込み、手順は戻る。原バイト・ストリームの長さが新バイト・ストリームのそれを上回る場合、ブロック1120において置換(「R」)および削除(「D」)動作を動作アレイ内に適宜書き込み、手順は戻る。
ブロック1016において、2つのバイト・ストリーム間でLCSを識別した場合、図11を参照して、ブロック1018において、2つのバイト・サブストリームを識別して、更に評価を行う。一方のサブストリーム(o)は原バイト・ストリーム1102のLCSに対する接頭バイトを含み、他方のサブストリーム(n)は新バイト・ストリーム1104のLCSに対する接頭部を含む。動作はブロック1002に戻り、これら2つのサブストリーム(oおよびn)を、評価のためのファイル相違検出アルゴリズムへの入力として供給する。
ブロック1020において、一致(「M」)動作を動作アレイ length(LCS) timesに書き込む。更に、ブロック1022において、2つの追加のバイト・サブストリームを識別して、更に評価を行う。一方のサブストリーム(o)は、原バイト・ストリーム1102のLCSに対する接尾バイトを含み、他方のサブストリーム(n)は、新バイト・ストリーム1104のLCSに対する接尾バイトを含む。動作は、ブロック1002に戻り、ここでこれら2つの追加サブストリーム(oおよびn)を入力としてファイル相違検出アルゴリズムに供給し、評価する。
ファイル相違検出アルゴリズムのフロー図1000は、再帰的に動くように示されている。バイト・ストリームの近似的なサイズがO(1M)である場合、再帰レベルはlog(1M)=20となる。したがって、プロセス・スタックを外れて動作することなく、再帰的に書き込むのは安全である。
一実施形態のファイル相違検出アルゴリズムの空間、時間、および再帰レベル分析についてここで説明する。空間分析では、HirschbergおよびUkkonenのアルゴリズム双方が線形空間を用いることを注記しておく。一実施形態のファイル相違検出アルゴリズムは、再帰的にHirschbergおよびUkkonenのアルゴリズムをコールするので、全空間複雑度は入力バイト・ストリームのサイズに対して線形である。
時間の分析に関して、Lは、Hirschbergのアルゴリズムを呼び出すことができるバイト・ストリームの最大サイズであり、nは原入力バイト・ストリームであると仮定する。最悪の状況の1つでは、ファイル相違検出アルゴリズムがHirschbergアルゴリズムをO(n/L)回コールし、UkkonenのアルゴリズムをO(logn)回コールする。したがって、ファイル相違検出アルゴリズムのルーチンの実行のための総時間は、
Figure 0004364790
以下である。
再帰分析については、ファイル相違検出アルゴリズムのツリー横断関数を、「while ループ」を用いて実施するとよい。約1Mバイトを収容するバイト・ストリームでは、ファイル相違検出アルゴリズムの再帰レベルは約20である。Lが、Hirschbergのアルゴリズムを呼び出すことができるバイト・ストリームの最大サイズとすると、Hirshbergアルゴリズムの再帰レベルは、logLとなる。Lが1Mよりも小さい場合、総再帰レベルは約40となる。したがって、殆どのUNIXおよびWindowsプラットフォーム上で用いられているO(1M)のデフォルト・スタック・サイズは、ファイル相違検出アルゴリズムの実行に十分対応して余りある。
前述の分析は、ファイル相違検出アルゴリズムが、デフォルト・スタック・サイズを用いて、線形空間において編集距離を計算することを示した。計算時間は、O(n*L)である。L=nの場合、ファイル相違検出アルゴリズムはHirschbergアルゴリズムに縮退し、最適編集距離を計算する。Lが非常に小さい(例えば、1024)場合、ファイル相違検出アルゴリズムは線形時間で実行し、疑似最適編集距離を計算する。このように、ファイル相違検出アルゴリズムは、実際では、当技術分野において以前から知られている相違検出技法よりも優れている。
原バイト・ストリームを新バイト・ストリームに変換する際に用いる動作アレイを生成した後、プロセスは、動作アレイからデルタ・ファイルを生成し始める。デルタ・ファイルのサイズは、以下で説明するが、できるだけ小さい方がよい。一実施形態のデルタ・ファイルは、一連のレコードから成り、各レコードは、メタデータを、必要な場合には内容データと共に含む。したがって、メタデータは、ソートのオーバーヘッドであり、このオーバーヘッドは、相違検出プロセスの効率を高めるためには、できるだけ減少させなければならない。この減少を達成するためには、以下の七合併およびインデックス化(M&I)技法(seven merging and indexing technique)を一実施形態において適用し、全メタデータ・サイズを縮小する。何故なら、動作アレイはバイト・レベル動作を指定するだけであるからである。
第1M&I技法は、一致動作の探索において動作アレイを走査する。単一の一致動作が突き止められた場合、これらを代替動作によって置換する。何故なら、一致動作は代替動作の特殊な場合であるからである。この代替は、一致動作が連続して3つ以下の一致動作グループに対しても実行する。3つの動作のシーケンス長を用いる。何故なら、メタデータ・シーケンスの最少長さは3バイトであるからである。このように、1組のメタデータは、数回の動作の代わりにこの部分における動作を記録するには十分である。一例として、第1M&I技法の適用前における動作アレイは次の通りである。
Figure 0004364790
このアレイは、3動作以下のシーケンス長を有する2つの一致動作シーケンスを含む。即ち、アレイの位置4から6における第1シーケンス、およびアレイの位置16および17における第2シーケンスである。第1技法の適用後、これらのシーケンスは、置換動作シーケンスによって置換され、動作アレイは次のようになる。
Figure 0004364790
第2M&I技法は、動作アレイから同じ動作のシーケンスを探索する。この探索は、一致(「M」)動作以外の全ての動作を探す。これらのシーケンスが突き止められると、これらは、単一の大きな動作に合併される。これは、この動作を実行すべきバイト数を示す長さと共に、実行する動作を指定する。例えば、この技法の適用前の動作例は、次の通りとする。
Figure 0004364790
このアレイは、2つの異なる位置動作シーケンスの間に、12個の削除動作のシーケンスを含む。この技法は、12個の削除動作のシーケンスを、動作
Figure 0004364790
で置換する。
したがって、この技法の適用後、動作アレイは次のようになる。
Figure 0004364790
ここで、「length」は、12に等しいと指定する。
第3M&I技法は、シーケンスの中に一致(「M」)動作がない場合、挿入(「I」)動作、削除(「D」)動作、および代替(「R」)動作のシーケンスを合併して1つの動作を形成する。この技法は、2つの変形を含む。第1の変形は、挿入動作の数が削除動作の数と等しいときに用いられ、その場合、合併した動作は、指定の長さを有する固定長置換動作となる。それ以外の場合、第2の変形、即ち、2つの指定長を有する可変長置換が適用され、その場合動作は、次のように指定される。
Figure 0004364790
第1指定長は、識別したシーケンス(置き換える長さ)を置換するシーケンスの長さを与え、第2指定長は、置き換えるシーケンスの長さ(置き換えられる長さ)を与える。例えば、この技法を適用する前の動作アレイは次の通りである。
Figure 0004364790
このアレイは、シーケンス「RIDDDDDDDDDDDD」を含有する。このシーケンスは、第3M&I技法の適用基準を満たす。何故なら、これは置換、挿入、および削除動作のシーケンスであるからである。ここでは第2の変形を適用する。何故なら、挿入動作の数(1つ)が削除動作の数(12)と等しくないからである。第2変形の適用後では、動作アレイは次のようになる。
Figure 0004364790
ここで、置き換える長さは2(1バイト置き換え動作および1バイト挿入動作の総数)であり、置き換えられる長さは13(1バイトの置き換え動作および1バイトの削除動作の総数)である。
置換動作の固定長シーケンスが、動作、例えば、一致動作の固定長シーケンスに1回よりも多く起こるパターンを利用するために、第4M&I技法を設ける。新たな動作自体の名称は、間隔の長さおよび繰り返し回数を示す2つのパラメータと関連する、置換の長さを示す。この技法は、1間隔における固定長置換が30バイト以下であるときに最も適している。動作アレイは、例えば、この技法の適用前では、以下の通りである。
Figure 0004364790
このアレイは、3回繰り返す
Figure 0004364790
というシーケンスを含むことがわかる。このシーケンスは、置換動作の2バイト・シーケンスを一致動作と共に含む。
したがって、この技法の適用後では、動作アレイは次のようになる。
Figure 0004364790
ここで、
Figure 0004364790
は、
Figure 0004364790
と交代し、「長さ」を6(各置換/一致シーケンスの全長)と指定し、一方「繰り返し」は3(各置換/一致シーケンスは3回繰り返される)となる。
多くの場合、置換動作の固定長シーケンスは、一致動作の固定長シーケンスの間で発生する。第5技法は、このパターンを利用する新たな動作を導入する。新動作の名称は、置換長と、間隔長および繰り返し回数を指定する2つのパラメータとを共に与える。一例についてこれより説明する。ここで、動作アレイを次の通りとする。
Figure 0004364790
このアレイは、
Figure 0004364790
というシーケンスを含み、一致動作の固定長シーケンスの間に4回繰り返される。この技法を適用すると次の動作アレイが得られる。
Figure 0004364790
ここで、新たな動作
Figure 0004364790
は、次のシーケンスと置き換わる。
Figure 0004364790
この例における間隔「長」は、6(シーケンス「RRMMMM」の長さ)に等しく、一方間隔「繰り返し」は、4(シーケンス「RR」が4回繰り返す)と指定される。
第6M&I技法は、処理した全ての動作をデータ構造、例えば、ハッシュ・テーブルに入力することを含む。動作アレイにおいて以前に発生した動作に、動作アレイにおいて遭遇した場合、新たな動作を導入し、以前に遭遇した動作を新たな場所に挿入するように動作する。
新たな動作は、
Figure 0004364790
となり、コピーの位置を示すオフセット・パラメータを伴う。
バイト・ストリームが実行可能な場合、1つの命令、挿入または削除によって、後続の命令のアドレスが一定値だけずれることになる。第7M&I技法は、このパターンを利用する新たな動作を導入する。新たな動作は、次の通りであり、
Figure 0004364790
この動作の繰り返し回数および間隔長は、メタデータとして動作と関連付けられ、一方一定値は実データのままである。
通信環境では、転送プロセスにおける効率を最大に高め、ファイル転送または送信に伴うエラーを最少に抑えるには、デバイスに送信するデータ・ファイルのサイズはできるだけ小さい方がよい。したがって、動作アレイの合併およびインデックス化に続いて、一実施形態のファイル相違検出アルゴリズムは、動作アレイをデルタ・ファイルに書き込む際における動作アレイの冗長情報を削減することによって、デルタ・ファイルのサイズを極力小さくする。この冗長情報の削減を行うには、可変長整数フォーマットを用いて、動作アレイをデルタ・ファイルに書き込むが、実施形態はそのように限定される訳ではない。可変長整数フォーマットに加えて、絶対開始アドレスの代わりに相対開始アドレスを動作アレイにおいて用い、バイト・ストリームに対する変更が行われる場所を示す。
一実施形態の可変長整数フォーマットの説明は、整数値をデルタ・ファイルにいかにして格納するかについての説明から開始する。符号なし整数を表すバイト・ストリームの長さは、整数値によって異なる。0と127との間の値の整数は、1バイトを使って表すことができる。整数値が128と16,383との間である場合、整数は2バイトで表すことができる。16,384と2,097,151との間の整数値は、3バイトで表される。2,097,151よりも大きい値を有する整数は、4バイト以上を必要とする。
格納の目的のために、一実施形態の整数値を以下の形式の文字列に変換する。
Figure 0004364790
ここで、「CIIIIIII」は、1バイトの8ビットを表す。1バイトの最初のビット(「C」ビット)を連続ビットと呼ぶ。連続ビットは、現在の整数の一部として、読み出す関連のビットに、更に別のバイトが続くか否かを示す。したがって、Cが「1」の場合、続くバイトは、現整数の一部として読み取られなければならない。Cが「0」の場合、整数は現在のバイトで終了する。このように、符号なし整数を表すこのストリング・フォーマットを、可変長整数フォーマットと呼ぶ。
通信システムを参照して先に説明したように、デバイス間で送信するファイル、例えば、デルタ・ファイルのサイズは、できるだけ小さい方がいい。1000個の整数があり、その値は0から127までの間であり、デルタ・ファイルに格納すると仮定する。各整数に4バイトを消費する場合、4000バイトが必要となる。殆どの場合、ここに提供するアルゴリズムによって用いられる整数は、オフセット、パターン繰り返し回数、動作長、および、バイト・ストリームの相違についてのその他の特性を記述する。したがって、これらの整数の値は、通例、16,383未満である。つまり、ここに提示する可変長整数フォーマットを用いれば、ファイル相違検出アルゴリズムが用いる典型的な整数を格納するには、平均で約1000バイトあれば十分である。その結果得られる約3000バイトの節約は、整数値には係わらず、各符号なし整数を表すための4バイトの保存が無駄であることを意味する。したがって、ここに提示する可変長整数フォーマットを用いると、デルタ・ファイルにおける整数の格納に必要な空間のサイズが50%ないし75%縮小する。
図12は、一実施形態の下におけるデルタ・ファイル1200のブロック図である。デルタ・ファイルのフォーマットは、一般に、一連のレコード1202〜1208の連接を含む。
図13は、図12の実施形態の下における、デルタ・ファイル・レコード1300のブロック図である。図14は、図13の実施形態の下における、動作記述を含む表である。
図13および図14を参照すると、この例では、各レコードのフォーマットは、次のようになっている。
Figure 0004364790
「+」符号は、掲示したフィールドの連接を表す。「オペコード」レコード1302は、動作コードを与える1バイトである
「relative_start_addr」レコード1304は、相対的開始アドレスを与え、このアドレスで現在の変更が発生する。このレコード1304が最初のレコードである場合、「relative_start_add」レコード1304は、新バイト・ストリームの先頭に対するオフセットを表し、それ以外の場合、現在の絶対開始アドレスと最後のレコードにおける絶対開始アドレスとの間の差を表す。この方式を用いると、現在の変更に対する絶対開始アドレスの計算が容易となる。その利点は、大きな整数の代わりに、小さな整数がデルタ・ファイルに格納されることである。したがって、可変長整数フォーマットを用いることによって、デルタ・ファイルが数千のレコードを含む場合、数千バイトの節約となる。
「other_meta_data」レコード1306は、動作コードに応じて、以下のフィールド、operating_len1306a、operated_len1306b、repeat_times1306c、interval_length1306d、およびdelta_offset1306eのいずれかを表すが、そのように限定される訳ではない。「real_data」レコード1308は、オペコード「address_repeat_shift」に対するシフト値、あるいは実際の置換または挿入データである。角括弧「[]」は、含まれるフィールドが任意であり、動作コードによって異なることを示す。
256個までの動作コードを定義することができるが、バイト・ストリーム間で遭遇した相違のパターンを検討し、一実施形態では次の動作コードを導入する。図15A、図15B、図15Cおよび図15Dは、動作コードと、一実施形態の下で導入した、関連するフィールドとの摘要表を示す。
動作コードの各々の後にレコード・フォーマットを示し、手短に説明する。
INSERTIONオペコード:これは挿入動作である。レコード・フォーマットは次の通りである。
Figure 0004364790
オペコードはINSERTIONであり、一方「operating_len」および「real_data」フィールドは、挿入長および挿入データを与える。「operating_len」フィールドは、前述の可変長整数フォーマットである。
operating_lenが10以下の場合、以下のオペコードを導入して、レコード毎に1バイト節約する。
Figure 0004364790
これらは小規模挿入動作(10バイト以下)である。レコード・フォーマットは、
Figure 0004364790
となる。挿入長はオペコードによって暗示される。
DELETIONオペコード:これは、削除動作である。レコード・フォーマットは、次の通りである。
Figure 0004364790
オペコードはDELETIONであり、一方可変長整数フォーマットにおける「operated_length」フィールドは削除の長さを示す。operating_lenが10以下の場合、以下のオペコードを導入して、レコード毎に1バイト節約する。
Figure 0004364790
これらは、小規模な削除動作(10バイト以下)である。レコード・フォーマットは、
Figure 0004364790
となる。削除長は、オペコードによって暗示される。
REPLACEMENTオペコード:これは、同じ長さの置換動作である。レコード・フォーマットは、次の通りである。
Figure 0004364790
オペコードはREPLACEMENTであり、「operating_len」および「real_data」フィールドは置換の長さおよび置換データを示す。「operating_len」フィールドは、可変長整数フォーマットにある。operating_lenが20以下の場合、以下のオペコードを導入して、レコード毎に1バイト節約する。
Figure 0004364790
これらは小規模の置換動作(20バイト以下)である。レコード・フォーマットは、
Figure 0004364790
となる。置換長は、オペコードによって暗示される。
VARIABLE_LEN_REPLACEMENTオペコード:これは可変長置換動作である。レコード・フォーマットは次の通りである。
オペコードはVARIABLE_LEN_REPLACEMENTであり、一方
Figure 0004364790
「operating_len」、「operated_len」および「real_data」フィールドは、それぞれ、置き換える長さ、置き換えられる長さ、および実際の置換データを与える。「operating_len」および「operated_len」フィールドは、可変長整数フォーマットである。
EXACT_COPY_INDEX_TOオペコード:これは、現在の動作がバイト・ストリーム内のどこかで以前に行われたことを示す。レコード・フォーマットは次の通りである。
Figure 0004364790
オペコードはEXACT_COPY_INDEX_TOであり、可変長整数フォーマットにおける「delta_offset」フィールドは、コピーした動作のレコードがあるデルタ・ファイルにおけるオフセットである。
WHOLE_REPLACEMENTオペコード:これは全体置換動作である。レコード・フォーマットは次の通りである。
Figure 0004364790
オペコードは、WHOLE_REPLACEMENTである。「relative_start_addr」フィールドはここでは現れない。何故なら、これはデフォルトで「0」の値になっているからである。「real_data」フィールドは、新バイト・ストリームにおける全てのバイトである。
ADDRESS_REPEAT_SHIFTオペコード:これは、多重1バイト・アドレス・シフト動作(multi-one-byte address shift operation)である。レコード・フォーマットは次の通りである。
Figure 0004364790
オペコードはADDRESS_REPEAT_SHIFTであり、一方「repeat_times」および「interval_len」フィールドは、繰り返し回数および間隔長を与える。real_dataは実際のアドレス・シフトを含み、1バイト文字がシフト値を知らせる。「repeat_times」および「interval_len」フィールドは、可変長整数フォーマットである。
SAME_ADDRESS_REPEAT_SHIFTオペコード:これは、多重1バイト・アドレス・シフト動作であるが、シフト値は、以前のADDRESS_REPEAT_SHIFTレコードによって暗示される。したがって、以前のレコードと比較して、1バイトの節約となる。レコード・フォーマットは次の通りである。
Figure 0004364790
オペコードはSAME_ADDRESS_REPEAT_SHIFTであり、一方「repeat_time」および「intreval_len」フィールドは、繰り返し回数および間隔長を与える。「repeat_times」および「interval_len」フィールドは、可変長整数フォーマットである。
他の全オペコード:他のオペコードは、動作アレイ、例えば、固定長間隔で繰り返し現れる短い長さの動作シーケンスにおいて見出される動作のパターンを利用する。このようなシーケンスの一例は、
Figure 0004364790
を含む。このパターンに用いられるオペコードは、
Figure 0004364790
であり、置換動作の2バイト固定長繰り返しシーケンス(「RR」)を示す。
別の例は、
Figure 0004364790
というシーケンスである。このパターンに用いられるオペコードは、
Figure 0004364790
であり、置換動作の2バイト固定長繰り返しシーケンス(「RR」)を示し、この場合、シーケンスは、一致動作では終わらない。これら他の動作コードおよびこれらの例を参照すると、各間隔において、置換長は、32バイト以下である。レコード・フォーマットは次の通りである。
Figure 0004364790
「repeat_times」および「interval_len」フィールドは、繰り返し回数および間隔長を与える。「real_data」フィールドは、各間隔における置換データの連接である。「repeat_times」および「interval_len」フィールドは、前述の可変長整数フォーマットである。
先に詳細に説明したような、2つの入力バイト・ストリームからのデルタ・ファイル生成を例示するために、以下に一例を示す。この例では、2つの入力バイト・ストリームは、旧バイト・ストリームおよび新バイト・ストリームを含む。旧バイト・ストリームは、次の通りである。
Figure 0004364790
また、新バイト・ストリームは、次の通りである。
Figure 0004364790
旧バイト・ストリームおよび新バイト・ストリームは、前述のように、前処理されており、ファイル相違検出アルゴリズムに入力される旧バイト・ストリームを生成する。これは、次の通りである。
Figure 0004364790
そして、ファイル相違検出アルゴリズムに入力される新バイト・ストリームも生成され、これは、
Figure 0004364790
これら2つのバイト・ストリームに対応する動作アレイは、次の通りである。
Figure 0004364790
デルタ・ファイルの生成は、先に詳細に説明したように行われ、その結果得られたデルタ・ファイルは4つのレコードを含む。最初のデルタ・ファイル・レコードは、次の通りである。
Figure 0004364790
この最初のレコードは11バイトを含む。2番目のデルタ・ファイル・レコードは、次の通りであり、
Figure 0004364790
2バイトを含む。3番目のデルタ・ファイル・レコードは、次の通りである。
Figure 0004364790
この3番目のレコードは13バイトを含む。4番目のデルタ・ファイル・レコードは、次の通りである。
Figure 0004364790
この4番目のデルタ・ファイル・レコードは15バイトを含む。したがって、比較前におけるこのデルタ・ファイルの全体的なサイズは、4つのデルタ・ファイル・レコードの各々の総和、即ち、41バイトである。
デルタ・ファイルの生成に続いて、一実施形態では、追加の動作を実行して、他のシステムへのデルタ・ファイルの転送効率を更に高めることもできる。例えば、圧縮を用いると、デルタ・ファイルのサイズを更に縮小して送信することができる。関連する伸張モジュールは、プロセッサを用い資源が限られたデバイス上にホストされている場合もあるので、用いる圧縮アルゴリズムは、予め割り当てられたメモリ上でできるだけ速く実行するアルゴリズムを用いて伸張可能なファイルを供給するものでなければならない。即ち、伸張アルゴリズムは、メモリを動的に割り当てない方がよい。圧縮の結果常にデルタ・ファイルのサイズが更に縮小するとは限らないが、デルタ・ファイルは、指定されたバイトを用いて、いつファイルを圧縮するか示す。
一実施形態のファイル相違検出アルゴリズムは、チェックサム誤り訂正コード化のような、何らかの機構を用いて、送信するデルタ・ファイルのあらゆる転化(corruption)を検出するが、そのように限定される訳ではない。単純なチェックサム方式の1つは、次の通りである。チェックサムの長さは1バイトであり、チェックサムをデルタ・ファイルの終端に置く。チェックサムは、最後のバイトを除いてデルタ・ファイルの全バイトの和を表すバイトの2の補数である。このようにして、誤りのないデルタ・ファイルにおける全てのファイルを加算すると、0に等しい結果が得られる。
生成に続いて、一実施形態のデルタ・ファイルを格納しておき、後に別のコンピュータ・システムにダウンロードし、当該他のコンピュータ・システム上にホストされている原ファイルのコピーを更新する際に使用する。図1を参照すると、一旦何らかの伝送媒体106を通じて受信側コンピュータ・システム104においてデルタ・ファイル116を受信したなら、ファイル更新アルゴリズム118をコールする。
図16は、一実施形態の下において、対応する原ファイルおよびデルタ・ファイルを用いて新ファイルを生成するフロー図である。ブロック1602において、原ファイルおよびデルタ・ファイルを受信すると、ファイル更新アルゴリズムは、ブロック1604において、チェックサムのような基本的技法を用いて、デルタ・ファイルの転化または誤りをチェックする。デルタ・ファイルが転化している場合、ブロック1614において出力エラー・メッセージを生成し、動作は戻る。
デルタ・ファイルに誤りがない場合、ファイル更新アルゴリズムは、ブロック1606において、デルタ・ファイルが圧縮されているか否か判定を行う。この判定を行うには、デルタ・ファイルの1つまたは複数の指定バイトを用いる。デルタ・ファイルが圧縮されており、圧縮方法がわかっている場合、ファイル更新アルゴリズムはデルタ・ファイルを伸張する。伸張に続いて、ファイル更新アルゴリズムは、ブロック1616において、伸張が成功であったか否か判定を行う。伸張が成功せずに終了した場合、ブロック1614において出力エラー・メッセージを生成し、動作は戻る。伸張が成功して終了した場合、ブロック1608においてデルタ・ファイルの読み取りを開始する。
デルタ・ファイルからの読み取りが開始すると、ブロック1608において、ファイル更新アルゴリズムは、既定のデルタ・ファイル・フォーマットをプロトコルとして用い、デルタ・ファイル内に内在する相違を解析し理解して、新バージョンのファイルを100%の精度で作成する。デルタ・ファイルの各レコードを読み出す毎に、ファイル更新アルゴリズムは、ブロック1610において、デルタ・ファイルから読み出すために追加のレコードが使用可能か否か判定を行う。追加のレコードが使用可能でありそして読み出す場合、ファイル更新アルゴリズムは、ブロック1618において、レコードのオペコードおよび関連するフィールドの有効性をチェックする。オペコードまたは追加フィールドのいずれかが無効と見なされた場合、または未知のオペコードのような、何らかの誤りが更新プロセス中に発生した場合、ブロック1614において出力エラー・メッセージを生成して、更新失敗を知らせ、動作は戻る。
オペコードおよび関連するフィールドが有効である場合、ファイル更新アルゴリズムは、ブロック1620において新ファイルの対応する部分を生成し、ブロック1610において、デルタ・ファイルの残りのレコードを読み出す。デルタ・ファイルから読み出すレコードが既に残っていない場合、ブロック1612において新ファイルを供給し、動作は戻る。
一例として、ファイル更新アルゴリズムの記述を以下に示す。
Figure 0004364790
このファイル更新アルゴリズムの例では、o_ptrは、旧バージョンのファイルが位置する場所を指し示すポインタを表し、一方n_ptrは、新バージョンのファイルを保存しようとする記憶位置を指し示すポインタを表す。delta_fileは、何らかの伝送媒体を通じて受信したデルタ・ファイルを表す。delta_file_lengthは、圧縮されない場合のデルタ・ファイルの長さ、または圧縮されたデルタ・ファイルの圧縮されていない場合の長さを表す。
一実施形態のファイル更新アルゴリズムは、予め割り当てたメモリ上で動作する。更に、ファイル更新アルゴリズムは、資源が限られているいずれの計算機上でも非常に高速に機能する。
一例として、デルタ・ファイルを受信し使用する計算機は、更新を必要とする、対応のソフトウェア・アプリケーションをホストするクライアント・デバイスとすることができ、例えば、セルラ電話機、移動電子デバイス、移動通信デバイス、パーソナル・ディジタル・アシスタント、およびその他のプロセッサ・ベースのデバイスがある。この対応は、キャリアやデバイス製造業者に電子ファイル内容およびアプリケーションを彼らのワイヤレス・インフラストラクチャを通じて効率的に配布させることによって、ファームウェアから埋め込みアプリケーションまでの範囲に及ぶあらゆる移動デバイスのソフトウェアに与えられる。
FDUアルゴリズムの使用によって効果が得られるシステムの一例には、ワイヤード・シリアル接続を用いてデルタ・ファイルを、ファイル相違検出アルゴリズムをホストするデバイスから、ファイル更新アルゴリズムをホストするデバイスに転送するシステムが含まれる。これらのシステムは、転送レートが遅いのが通例である(現在、約192kバイト/秒)。転送レートが遅いので、デルタ・ファイルのサイズ縮小は、転送時間短縮を実現する1つの方法である。したがって、これらシリアル転送システムにおけるFDUアルゴリズムの使用は、ユーザの満足度を高めることになる。
FDUアルゴリズムの使用によって効果が得られるシステムの別の例には、無線通信を用いてデルタ・ファイルを、ファイル相違検出アルゴリズムをホストするデバイスから、ファイル更新アルゴリズムをホストするデバイスに転送するシステムが含まれる。ワイヤレス接続に伴う信頼性の低さという欠点があるが、これらのシステムも転送レートは低い(現在、約9.6ないし64kバイト/秒)。これらのシステムにおいて縮小したデルタ・ファイルの使用により、様々な利点が得られる。例えば、ファイル・サイズ縮小の結果、デルタ・ファイルの転送時間が短縮する。転送時間の短縮によって、一方ではデバイス・ユーザの時間が節約され、他方ではエラーがデルタ・ファイルに混入する機会が減ることによって、システムの信頼性が向上する。また、セルラ通信出は、転送時間短縮の結果、通例分毎にサービスに対して課金される消費者のコスト節約となる。
別の利点として、デルタ・ファイルの縮小によって、デルタ・ファイルをクライアント・デバイスに転送するために必要な帯域幅が減少する。帯域幅の減少によって、割り当てられたチャネルを通じて対応できるクライアント・デバイスの数が増加する。転送時間の短縮に関しては、これによっても、ワイヤレス・サービス提供側にとって、運営コストの削減となる。
前述のアルゴリズムは、電子ファイルを更新するシステムと共に用い、電子ファイルを更新するシステムは、バイト・レベルのファイル相違検出および更新(FDU)アルゴリズムを備えている。FDUアルゴリズムのファイル相違検出アルゴリズムは、第1デバイス上にホストされており、ファイル相違検出アルゴリズムは、原ファイルおよび新ファイルに対応するバイト・ストリームを含む、2つのバイト・ストリームを受信する。ここで、新ファイルは、原ファイルの更新および改訂バージョンを含む。次いで、2つのバイト・ストリーム間の最長共通サブストリング(LCS)を判定し、2つのバイト・ストリームの各々をサブストリームに分割する。第1サブストリームはそれぞれのLCSの接頭部であり、第2サブストリームはそれぞれのLCSの接尾部である。サブストリームのサイズが予め指定したサイズ未満になるまで、再帰的にLCSを判定し、各サブストリームを分割し、対応するサブストリームの各々の間でバイト・レベルの相違を判定し、1組の動作コードおよび可変長整数フォーマットを用いることによってデルタ・ファイルを構築し、デルタ・ファイルにおける冗長データを除外し、判定したバイト・レベルの相違をコード化した動作アレイを含むデルタ・ファイルを生成する。この生成には、動作アレイの動作を合併してメタデータ量を削減することを含む。次いで、デルタ・ファイルを、少なくとも1つの結合部を通じて第2デバイスに転送する。
FDUアルゴリズムのファイル更新アルゴリズムは、システムの第2デバイス上にホストされており、ファイル更新アルゴリズムは、少なくとも1つの結合部を介して第1デバイスからデルタ・ファイルを受信し、デルタ・ファイルおよびホストされている原ファイルを用いて新ファイルのコピーを生成し、そのコピーを用いて第2デバイスにおける原ファイルを更新する。
一実施形態の第1デバイスは、プロセッサ・ベースのデバイスであり、第2デバイス上で実行するソフトウェアの少なくとも1つの供給元によってアクセス可能である。
一実施形態の第2デバイスは、パーソナル・コンピュータ、携帯用計算機、セルラ電話機、携帯用通信デバイス、およびパーソナル・ディジタル・アシスタントの中から選択した、少なくとも1つのプロセッサを用いるデバイスである。
一実施形態のシステムのデバイス間の結合部は、ワイヤレス接続、ワイヤード接続、混合ワイヤレス/ワイヤード接続、およびローカル・エリア・ネットワーク(LAN)、都市区域ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、企業固有のネットワーク(proprietary network)、バックエンド・ネットワーク(backend network)、インターネットを含むネットワークへの結合部、ならびにフロッピ・ディスク、ハード・ディスク・ドライブ、およびDC−ROMディスクを含む着脱可能固定媒体、そして電話回線、バス、および電子メール・メッセージから選択する。
原ファイルおよび新ファイルは、ダイナミック・リンク・ライブラリ・ファイル、共有オブジェクト・ファイル、埋め込みソフトウェア・コンポーネント(EBSC)、ファームウェア・ファイル、実行可能ファイル、16進データ・ファイル、システム・コンフィギュレーション・ファイル、および個人使用データを含むファイルを含むデータ・ファイルを含む。
一実施形態のシステムは、更に、第1および第2デバイス間に結合されている通信サービス提供側の少なくとも1つのサーバを備えており、少なくとも1つのサーバは、第1デバイスからデルタ・ファイルを受信し、デルタ・ファイルの受信に応答して第2デバイスにメッセージを生成する。このメッセージは、第2デバイスのユーザに、第2デバイス上にホストされている少なくとも1つの電子ファイルに対する更新の利用可能性について知らせる。サーバは、更に、ユーザからの更新要求を受信し、要求に応答してデルタ・ファイルを第2デバイスに供給する。
前述のファイル相違検出および更新アルゴリズムは、電子ファイルを更新する装置と共に用いる。この装置は、バイト・レベルのファイル相違検出および更新を実行するように構成された少なくとも1つのプロセッサを含む。この装置は、原ファイルに対応するバイト・ストリームと新ファイルに対応するバイト・ストリームとを含む2つのバイト・ストリームを受信する手段と、2つの受信したバイト・ストリーム間において最も長い共通サブストリング(LCS)を判定する手段と、2つの受信したバイト・ストリームの各々をサブストリームに分割する手段であって、第1サブストリームはそれぞれのLCSの接頭部であり、第2サブストリームはそれぞれのLCSの接尾部である、手段と、サブストリームのサイズが予め指定したサイズ未満となるまで、再帰的にLCSを判定し、各サブストリームを分割する手段と、サブストリームの各々の間のバイト・レベルの相違を判定する手段であって、バイト・レベルの相違を原ファイルと新ファイルとの間で判定する、手段と、判定したバイト・レベルの相違をコード化する動作アレイを生成する手段と、可変長整数フォーマットを用いて、最適化動作アレイを書き込むことによって、デルタ・ファイルを生成する手段とを含むが、これらに限定されるのではない。
前述のファイル相違検出および更新アルゴリズムは、電子ファイルを更新する装置と共に用いる。この装置は、バイト・レベルのファイル相違検出および更新を実行するように構成された少なくとも1つの処理デバイスを含む。この装置は、デルタ・ファイルを受信する手段と、デルタ・ファイルを用いて新ファイルのコピーを生成する手段と、第2デバイスにおいてコピーを用いて原ファイルを更新する手段とを備えているが、これらに限定されるのではない。デルタ・ファイルの生成は、原ファイルに対応するバイト・ストリームと、原ファイルの新バージョンに対応するバイト・ストリームとを含む2つのバイト・ストリーム間における最も長い共通サブストリング(LCS)を判定し、2つのバイト・ストリームの各々をサブストリームに分割し、第1サブストリームがそれぞれのLCSの接頭部であり、第2サブストリームがそれぞれのLCSの接尾部であり、サブストリームのサイズが予め指定したサイズ未満となるまで、再帰的にLCSを判定し各サブストリームを分割し、対応するサブストリームの各々の間でバイト・レベルの相違を判定し、動作アレイにおいてバイト・レベルの相違をコード化することによってデルタ・ファイルを生成し、動作アレイの少なくとも1つの動作を合併してメタデータの量を削減し、可変長整数フォーマットを用いて動作アレイを書き込むことから成るが、このように限定されるのではない。
前述のファイル相違検出および更新アルゴリズムは、バイト・レベルのファイル相違検出を実行する方法を備えている。一実施形態の方法は、2つの受信したバイト・ストリーム間における最も長い共通サブストリング(LCS)を識別するステップであって、バイト・ストリームが原ファイルに対応するバイト・ストリームと、原ファイルの新ファイル・バージョンに対応するバイト・ストリームとを含む、ステップと、2つの受信したバイト・ストリームの各々をサブストリームに分割するステップであって、第1サブストリームがそれぞれのLCSの接頭部であり、第2サブストリームがそれぞれのLCSの接尾部である、ステップと、サブストリームのサイズが予め指定したサイズ未満となるまで、またはLCSがなくなるまで、再帰的にLCSを判定し各サブストリームを分割するステップと、対応するサブストリームの各々の間でバイト・レベルの相違を判定するステップと、判定したバイト・レベルの相違をコード化する動作アレイを生成するステップであって、生成において、動作アレイの動作を合併してメタデータの量を削減することを含む、ステップと、動作アレイをデルタ・ファイルに書き込むステップであって、書き込みにおいて、動作アレイの動作を合併してメタデータの量を削減し、1組の動作コードおよび可変長整数フォーマットを用いることによってデルタ・ファイルを構築するプロトコルを用いて、デルタ・ファイルにおける冗長データを排除する、ステップとから成るが、そのように限定されるのではない。
一実施形態では、動作アレイを書き込むステップは、更に、相対的開始アドレスを用いて、バイト・ストリームの変更位置を識別するステップを含む。
一実施形態では、可変長整数フォーマットは、1バイトの内の1ビットを用い、後続のバイトを整数の一部として読み取るか否かについて示す。
一実施形態では、デルタ・ファイル・フォーマットは、動作コード、動作コードを適用する新ファイルの相対的開始アドレス、および必要な場合に原ファイルに対する挿入または置換のデータから選択した一連のレコードの連接を備えている。
前述のファイル相違検出および更新アルゴリズムは、バイト・レベルのファイル相違検出を実行する方法を備え、更に、デルタ・ファイルを圧縮するステップと、誤り訂正コード化をデルタ・ファイルに適用するステップとを備えている。
前述のファイル相違検出および更新アルゴリズムは、バイト・レベルのファイル相違検出を実行する方法を備え、更に、バイト・ストリームの受信時に、2つのバイト・ストリームの各々を半分に分割するステップと、バイト・ストリームが最大指定サイズよりも長いか否か判定するステップとを備えている。
前述のファイル相違検出および更新アルゴリズムは、バイト・レベルのファイル相違検出を実行する方法を備え、更に、2つのバイト・ストリーム間または2つのサブストリーム間にLCSがない場合、新ファイルに対応するバイト・ストリームの長さが原ファイルに対応するバイト・ストリームの長さよりも短いとき、置換動作および削除動作を動作アレイの適当な位置に書き込むステップを備えている。
前述のファイル相違検出および更新アルゴリズムは、バイト・レベルのファイル相違検出を実行する方法を備え、更に、2つのバイト・ストリーム間または2つのサブストリーム間にLCSがない場合、新ファイルに対応するバイト・ストリームの長さが原ファイルに対応するバイト・ストリームの長さよりも長いとき、置換動作および挿入動作を動作アレイの適当な位置に書き込むステップを備えている。
前述のファイル相違検出および更新アルゴリズムは、バイト・レベルのファイル相違検出を実行する方法を備えており、合併する際に、更に、動作アレイにおける一致動作の短いシーケンスを突き止めるステップであって、短いシーケンスが3つ未満の連続する一致動作を含む、ステップと、短いシーケンスの一致動作を、代替動作と置換するステップとを備えている。
前述のファイル相違検出および更新アルゴリズムは、バイト・レベルのファイル相違検出を実行する方法を備えており、合併する際に、更に、動作アレイにおける一致動作以外の動作のシーケンスを突き止めるステップと、突き止めたシーケンスを、動作の種類およびシーケンスの長さを指定する単一の動作で置換するステップとを備えている。
前述のファイル相違検出および更新アルゴリズムは、バイト・レベルのファイル相違検出を実行する方法を備えており、合併する際に、更に、挿入、削除、および代替動作の少なくとも1つの組み合わせを含むシーケンスを突き止めるステップと、このシーケンスを単一の可変長置換動作と置換するステップとを備えている。
前述のファイル相違検出および更新アルゴリズムは、バイト・レベルのファイル相違検出を実行する方法を備えており、合併する際に、等しい数の挿入および削除動作を含むシーケンスを突き止めるステップと、このシーケンスを単一の固定長置換動作と置換するステップとを備えている。
前述のファイル相違検出および更新アルゴリズムは、バイト・レベルのファイル相違検出を実行する方法を備えており、合併する際に、更に、あるパターンで繰り返す動作単位を突き止めるステップであって、この単位が置換動作の固定長シーケンスと、別の種類の動作の固定長シーケンスとを含む、ステップと、置換動作シーケンスの長さ、単位の長さ、および単位がパターンを繰り返す回数を指定する単一動作と、繰り返し単位を置換するステップとを備えている。
前述のファイル相違検出および更新アルゴリズムは、バイト・レベルのファイル相違検出を実行する方法を備えており、合併する際に、更に、動作アレイに適当な動作をハッシュ・テーブルに入力するステップと、オフセット・パラメータを含む単一のコピー動作を用い、コピー動作によって、ハッシュ・テーブルの情報を用いて、動作アレイ内の適当な位置に動作を挿入するステップとを備えている。
前述のファイル相違検出および更新アルゴリズムは、バイト・レベルのファイル相違検出を実行する方法を備えており、前述の予め指定したサイズは、約4096バイトであるが、実施形態はそのように限定されているのではない。
前述のファイル相違検出および更新アルゴリズムは、電子ファイル間で相違ファイルを生成する方法を備えている。一実施形態では、この相違ファイルを生成する方法は、原バイト・ストリームと新バイト・ストリームとを含むバイト・ストリームを受信するステップと、バイト・ストリームの各々のサイズを判定するステップと、バイト・ストリームの各々が第1サイズである場合、線形時間分析を用いてバイト・ストリーム間における最も長い共通サブストリング(LCS)を計算するステップと、バイト・ストリームの各々から少なくとも1つの接頭バイト・ストリーム集合を生成するステップであって、各接頭バイト・ストリーム集合はLCSに先立つバイトを含む、ステップと、バイト・ストリームの各々から少なくとも1つの接尾バイト・ストリーム集合を生成するステップであって、各接尾バイト・ストリーム集合はLCSの後ろに続くバイトを含む、ステップと、生成した接頭バイト・ストリーム集合のサイズが第2サイズ未満となるまで、再帰的にサイズを判定し、LCSを計算し、生成した接頭バイト・ストリーム集合および接尾バイト・ストリーム集合の各々に対して少なくとも1つの接頭バイト・ストリーム集合および少なくとも1つの接尾バイト・ストリーム集合を生成するステップと、生成した接頭バイト・ストリーム集合の各々のバイト間、および生成した接尾バイト・ストリーム集合の各々のバイト間の編集距離を判定するステップであって、編集距離は、原バイト・ストリームを新バイト・ストリームに変換するための最少数の編集動作である、ステップと、バイト・ストリーム間の編集距離の情報を含む動作アレイから成るデルタ・ファイルを生成するステップとを備えているが、そのように限定されるのではない。
一実施形態では、相違ファイルを生成する方法は、更に、デルタ・ファイルのサイズを縮小するステップを備えており、その際、少なくとも1つの合併およびインデックス化動作を動作アレイに適用してメタデータの量を削減し、可変長整数フォーマットを用いて動作アレイを書き込み、動作アレイの冗長情報を削減する。
前述のファイル相違検出および更新アルゴリズムは、バイト・レベルでファイル相違検出および更新を実行する方法を備えている。一実施形態では、この方法は、第1システムにおいて2つのバイト・ストリームを受信するステップであって、2つのバイト・ストリームが、原ファイルおよび新ファイル双方に対応するバイト・ストリームを含む、ステップと、2つのバイト・ストリーム間における最も長い共通サブストリング(LCS)を判定し、2つのバイト・ストリームの各々をサブストリームに分割するステップであって、第1サブストリームはそれぞれのLCSの接頭部であり、第2サブストリームはそれぞれのLCSの接尾部である、ステップと、サブストリームのサイズが予め指定したサイズ未満となるまで、再帰的にLCSを判定し各サブストリームを分割し、対応するサブストリームの各々の間におけるバイト・レベルの相違を判定するステップと、判定したバイト・レベルの相違をコード化した動作アレイを含むデルタ・ファイルを生成するステップであって、その生成において、動作アレイの少なくとも1つの動作を合併してメタデータの量を削減し、可変長整数フォーマットを用いて動作アレイを書き込む、ステップと、デルタ・データを第2システムに転送するステップと、デルタ・ファイルを用いて、第2システムにおいて新ファイルのコピーを生成するステップと、第2システムにおいて新ファイルのコピーを用いて原ファイルを更新するステップとを備えているが、このように限定されるのではない。
前述のファイル相違検出および更新は、実行可能命令を含むコンピュータ読み取り可能媒体を含み、処理システムにおいて実行すると、バイト・レベルのファイル相違検出および更新を実行し、その際に、2つの受信したバイト・ストリーム間における最も長い共通のサブストリング(LCS)を判定し、バイト・ストリームが原ファイルに対応するバイト・ストリームと、原ファイルの新ファイル・バージョンに対応するバイト・ストリームとを含み、2つの受信したバイト・ストリームの各々をサブストリームに分割し、第1サブストリームはそれぞれのLCSの接頭部であり、第2サブストリームはそれぞれのLCSの接尾部であり、サブストリームのサイズが予め指定したサイズ未満になるまで再帰的にLCSを判定し各サブストリームを分割し、対応するサブストリームの各々の間でバイト・レベルの相違を判定し、判定したバイト・レベルの相違をコード化する動作アレイを生成し、生成する際に動作アレイの少なくとも1つの動作を合併してメタデータ量を削減することを含み、可変長整数フォーマットを用いて動作アレイをデルタ・ファイルに書き込む。
文脈から特に明確に必要としない限り、明細書および特許請求の範囲全域において、「備える」、「備えている」等の言葉は、排他的または網羅的意味ではなく、包含的意味で解釈するものとする。即ち、「含むが、限定されない」という意味である。単数または複数を用いる単語も、それぞれ、複数および単数を含むものとする。加えて、「ここでは」、「以下で」という単語、および同様な意義の単語は、本願において用いられる場合、本願全体を指すのであり、本願のいずれの特定部分を指すのではないとする。
本発明の例示した実施例についてのこれまでの説明は、それで全てであることも、開示した正確な形態に本発明を限定することも意図していない。本発明の具体的な実施形態および例を例示の目的のためにここで記載したが、種々の等価な変更も本発明の範囲内で可能であることは、当業者は認めよう。ここに提示した本発明の教示は、他の処理システムや通信システムにも適用することができ、前述のFDUアルゴリズムのみに適用できるのではない。
前述した種々の実施形態のエレメントおよび作用を組み合わせれば、更に別の実施形態も得ることができる。これらおよびその他の変更は、前述の詳細な説明に鑑みれば、容易に行うことができる。
先の引例は全て、ここで引用したことにより、本願にも含まれるものとする。必要であれば、本発明の形態を変更して前述の種々の特許および出願のシステム、機能および概念を採用すれば、本発明の更に別の実施形態を得ることができる。
一般に、特許請求の範囲においては、用いられる用語は、明細書に開示される具体的な実施形態および特許請求の範囲に本発明を限定するように解釈するのではなく、特許請求の範囲の下で動作してファイル相違検出方法を実施するあらゆる処理システムを含むように解釈するのが当然である。したがって、本発明は、本開示に限定されるのではなく、むしろ発明の範囲は特許請求の範囲によって全体的に決定されるものとする。
本発明のある種の形態をある請求項の形式で提示するが、本願の発明者は、本発明の種々の形態をいかなる数の請求項の形式でも想定している。例えば、本発明の一形態のみを、コンピュータ読み取り可能媒体に具体化するものとして明記するが、他の形態も同様にコンピュータ読み取り可能媒体に具体化することができる。したがって、本発明は、本願を出願した後でも、更に別の請求項を追加し、本発明の別の形態に対する、このような更に別の請求項を追求する権利を保有するものとする。
図1は、一実施形態の下における、バイト・レベルのファイル相違検出および更新(FDU)アルゴリズムによって行われるファイル相違検出および更新を示すブロック図である。 図2は、図1の実施形態の下におけるデルタ・ファイルの生成のフロー図である。 図3は、FDUアルゴリズムの一実施形態の下において、ファイル間の比較を行う前にファイルを前処理する方法のフロー図である。 図4は、一実施形態の下における新たなファイル・接尾部の識別した挿入データを示す。 図5は、一実施形態の下における新たなファイル接頭部の識別した削除データを示す。 図6は、一実施形態の下における原ファイル・接尾部の識別した削除データを示す。 図7は、一実施形態の下における原ファイル接頭部の識別した削除データを示す。 図8は、一実施形態の下における新たなファイルの識別した挿入データを示す。 図9は、一実施形態の下における原ファイルの識別した削除データを示す。 図10は、図1の実施形態の下におけるバイト・レベルのファイル相違検出アルゴリズムのフロー図である。 図11は、図10の実施形態の下における、識別した最も長い共通サブストリング(LCS)および関連する接頭部および接尾部を示す。 図12は、一実施形態の下における、一連のレコードの連接を含むデルタ・ファイルのブロック図である。 図13は、図12の実施形態の下における、デルタ・ファイル・レコードのブロック図である。 図14は、図13の実施形態の下における、動作記述を含む表である。 図15Aは、一実施形態の下で導入した動作コードの摘要表を、関連するフィールドと共に示す。 図15Bは、一実施形態の下で導入した動作コードの摘要表を、関連するフィールドと共に示す。 図15Cは、一実施形態の下で導入した動作コードの摘要表を、関連するフィールドと共に示す。 図15Dは、一実施形態の下で導入した動作コードの摘要表を、関連するフィールドと共に示す。 図15Eは、一実施形態の下で導入した動作コードの摘要表を、関連するフィールドと共に示す。 図16は、一実施形態の下におけるバイト・レベルのファイル更新アルゴリズムのフロー図である。

Claims (21)

  1. バイト・レベルのファイル相違検出を実行する、コンピュータにより実行される方法であって、
    前記コンピュータが、2つの受けたバイト・ストリームまたはそのサブストリーム間における最も長い共通サブストリング(LCS)を識別するステップであって、前記バイト・ストリームは、原ファイルに対応するバイト・ストリームと、前記原ファイルの新ファイル・バージョンに対応するバイト・ストリームとを含む、ステップと、
    前記コンピュータが、前記2つの受けたバイト・ストリームまたはそのサブストリームの各々をサブストリームに分割するステップであって、第1サブストリームが前記それぞれのLCSの接頭部であり、第2サブストリームが前記それぞれのLCSの接尾部である、ステップと、
    前記コンピュータが、前記サブストリームのサイズが予め指定したサイズ未満となるまで、またはLCSが存在しなくなるまで、前記のLCSを識別するステップ及び前記のサブストリーム分割するステップを、前記サブストリームに対し繰り返すステップと、
    前記コンピュータが、前記原バイト・ストリームにおけるサブストリームと前記新バイト・ストリームにおける対応するサブストリームとの間におけるバイト・レベルの相違を判定するステップであって、前記原バイト・ストリームのサブストリームと前記新バイト・ストリームの対応するサブストリームとの間の編集距離を計算することを含み、前記編集距離は、前記原バイト・ストリームのサブストリームから前記新バイト・ストリームの対応するサブストリームに変換する最小数の編集動作により表され、前記予め指定したサイズは、前記編集距離の計算に関係する、ステップと、
    前記コンピュータが、計算した前記編集距離を表す前記編集動作の情報を含む動作アレイを生成するステップと、
    前記コンピュータが、前記動作アレイに含まれた前記編集動作の情報を含むデルタ・ファイルを生成するステップと、
    を備えた方法。
  2. 請求項1記載の方法において、前記編集動作は、置換動作、挿入動作、削除動作、一致動作を含み、
    前記デルタ・ファイルを生成するステップは、前記動作アレイに含まれた前記編集動作のうち、一致動作以外の動作を前記デルタ・ファイルに書き込むことを含み、
    前記デルタ・ファイルは、連接した一連のレコードを含み、各レコードは、前記動作アレイに含まれた前記置換動作、挿入動作、削除動作のうちの1つに関連した動作コードと、該関連した1つの動作に関係する情報を格納した、
    方法。
  3. 請求項2記載の方法において、前記動作アレイを生成するステップは、
    生成された前記動作アレイに含まれる前記編集距離を表す前記の置換動作、挿入動作、削除動作、一致動作に対し合併またはインデックス化を行うステップ、
    を含む方法。
  4. 請求項記載の方法において、前記デルタ・ファイルのレコードは、前記情報として、バイト・ストリームの変更位置を識別する相対的開始アドレスを含むこと、を特徴とする方法。
  5. 請求項記載の方法において、前記デルタ・ファイルを生成するステップは、前記デルタ・ファイルへの書き込みにおいて可変長整数フォーマットを使用することを含み、該可変長整数フォーマットは、1バイトの内の1ビットを用いて、後続のバイトを整数の一部として読み取るか否かについて示す方法。
  6. 請求項記載の方法において、前記デルタ・ファイルのレコードは、更に、前記情報として、前記動作コードを適用する前記新ファイルの相対的開始アドレス、および前記原ファイルに対する挿入または置換のデータを含む、を特徴とする方法。
  7. 請求項記載の方法であって、更に、
    前記コンピュータが、前記デルタ・ファイルを圧縮するステップと、
    前記コンピュータが、誤り訂正コード化を前記デルタ・ファイルに適用するステップと、
    を含む方法。
  8. 請求項記載の方法であって、更に、
    前記コンピュータが、前記2つのバイト・ストリームまたはサブストリームがLCSの識別に関連する最大指定サイズよりも長いとき、前記2つのバイト・ストリームまたはサブストリームの各々を半分ずつに分割するステップ
    を含む方法。
  9. 請求項記載の方法であって、前記動作アレイを生成するステップは、更に、
    前記コンピュータが、2つのバイト・ストリーム間または2つのサブストリームの間にLCSがない場合、前記新ファイルに対応する前記バイト・ストリームまたはサブストリームの長さが前記原ファイルに対応する前記バイト・ストリームまたはサブストリームの長さ未満であるとき、置換動作および削除動作前記動作アレイ書き込むステップ
    を含む方法。
  10. 請求項記載の方法であって、前記動作アレイを生成するステップは、更に、
    前記コンピュータが、2つのバイト・ストリーム間または2つのサブストリームの間にLCSがない場合、前記新ファイルに対応する前記バイト・ストリームまたはサブストリームの長さが前記原ファイルに対応する前記バイト・ストリームまたはサブストリームの長さよりも長いとき、置換動作および挿入動作を前記動作アレイ書き込むステップ
    を含む方法。
  11. 請求項記載の方法において、前記合併またはインデックス化を行うステップは、更に、
    前記コンピュータが、前記動作アレイにおいて一致動作の短いシーケンスを突き止めるステップであって、前記短いシーケンスが3つ以下の連続する一致動作を含む、ステップと、
    前記コンピュータが、前記短いシーケンスの一致動作を置換動作と置換するステップと、
    含む方法。
  12. 請求項記載のステップにおいて、前記合併またはインデックス化を行うステップは、更に、
    前記コンピュータが、前記動作アレイにおいて一致動作以外の動作のシーケンスを突き止めるステップと、
    前記コンピュータが、前記突き止めたシーケンスを、前記動作の種類および前記シーケンスの長さを指定する単一の動作と置換するステップ
    を含む方法。
  13. 請求項記載の方法であって、前記合併またはインデックス化を行うステップは、更に、
    前記コンピュータが、挿入、削除、および置換の動作の少なくとも1つの組み合わせを含むシーケンスを突き止めるステップと、
    前記コンピュータが、前記シーケンスを、単一の可変長置換動作と置換するステップと、
    を含む方法。
  14. 請求項記載の方法において、前記合併またはインデックス化を行うステップは、更に、
    前記コンピュータが、等しい数の挿入および削除の動作を含むシーケンスを突き止めるステップと、
    前記コンピュータが、前記シーケンスを、単一の固定長置換動作で置換するステップと、
    を含む方法。
  15. 請求項記載の方法において、前記合併またはインデックス化を行うステップは、更に、
    前記コンピュータが、あるパターンで繰り返す動作単位を突き止めるステップであって、前記単位は、置換動作の固定長シーケンスと、他の種類の動作の固定長シーケンスとを含む、ステップと、
    前記コンピュータが、前記繰り返単位を、前記置換動作シーケンスの長さ、前記単位の長さ、および前記単位が前記パターンで繰り返す回数を指定する単一の動作と置換するステップと、
    を含む方法。
  16. 請求項記載の方法において、前記合併またはインデックス化を行うステップは、更に、
    前記コンピュータが、前記動作アレイに適当な動作をハッシュ・テーブルに入力するステップと、
    前記コンピュータが、オフセット・パラメータを含む単一のコピー動作を用いるステップであって、前記コピー動作が、前記ハッシュ・テーブルの情報を用いて、前記動作アレイ内動作を挿入する、ステップと、
    を含む方法。
  17. 請求項記載の方法において、前記予め指定したサイズは、約4096バイトである方法。
  18. バイト・レベルのファイル相違検出および更新を実行する方法であって、
    第1のコンピュータ・システムが請求項1から17のいずれかに記載の方法を実行するステップと、
    前記第1コンピュータ・システムが、前記デルタ・ファイルを第2のコンピュータ・システムに転送するステップと、
    前記第2コンピュータ・システム前記原ファイルと前記デルタ・ファイルを用いて、前記新ファイルのコピーを生成するステップと、
    前記第2コンピュータ・システム、前記新ファイルの前記コピーを用いて、前記原ファイルを更新するステップと、
    を備えた方法。
  19. バイト・レベルのファイル相違検出実行するように構成された、コンピュータに実現される装置であって、
    2つのバイト・ストリームまたはそのサブストリームを受ける手段であって、前記2つのバイト・ストリームは原ファイルに対応する原バイト・ストリームと、新ファイルに対応する新バイト・ストリームとを含む、ステップと、
    前記2つの受信したバイト・ストリームまたはそのサブストリーム間における最も長い共通サブストリング(LCS)を判定する手段と、
    前記2つの受信したバイト・ストリームまたはそのサブストリームの各々をサブストリームに分割する手段であって、第1サブストリームが前記それぞれのLCSの接頭部であり、第2サブストリームが前記それぞれのLCSの接尾部である、手段と、
    前記サブストリームのサイズが予め指定したサイズ未満となるまで、前記LCSを判定する手段及び前記サブストリーム分割する手段に前記サブストリームを供給する手段と、
    前記原バイト・ストリームにおけるサブストリームと前記新バイト・ストリームにおける対応するサブストリームとの間でバイト・レベルの相違を判定する手段であって、前記原バイト・ストリームのサブストリームと前記新バイト・ストリームの対応するサブストリームと間の編集距離を計算することを含み、前記編集距離は、前記原バイト・ストリームのサブストリームから前記新バイト・ストリームの対応するサブストリームに変換する最小数の編集動作により表され、前記予め指定したサイズは、前記編集距離の計算に関係する、手段と、
    計算した前記編集距離を表す前記編集動作の情報を含む動作アレイを生成する手段と、
    前記動作アレイに含まれる編集動作を合併することにより前記動作アレイを最適化する手段と、
    可変長整数フォーマットを用いて前記最適化した動作アレイに含まれた前記編集動作の情報を含むデルタ・ファイルを生成する手段と、
    を備えた装置。
  20. バイト・レベルのファイル相違検出および更新を実行するように構成された、第2のコンピュータ・システムで実現される装置であって、
    第1のコンピュータ・システムに実現される請求項19記載の装置からのデルタ・ファイルを受ける手段と、
    前記原ファイルと前記デルタ・ファイルを用いて、前記新ファイルのコピーを生成する手段と、
    記コピーを用いて前記原ファイルを更新する手段と、
    を備えた装置。
  21. 実行可能命令を含むコンピュータ読み取り可能記憶媒体であって、処理システムにおいて実行されると、バイト・レベルのファイル相違検出を実行する方法を行い、前記方法が、
    受けた2つのバイト・ストリームまたはそのサブストリーム間における最も長い共通サブストリング(LCS)を判定するステップであって、前記バイト・ストリームが、原ファイルに対応するバイト・ストリームと、前記原ファイルの新ファイル・バージョンに対応するバイト・ストリームとを含む、ステップと、
    前記受けた2つのバイト・ストリームまたはそのサブストリームの各々をサブストリームに分割するステップであって、第1サブストリームが前記それぞれのLCSの接頭部であり、第2サブストリームが前記それぞれのLCSの接尾部であステップと、
    前記サブストリームのサイズが予め指定したサイズ未満になるまで、前記LCSを判定するステップ及び前記のサブストリーム分割するステップを、前記サブストリームに対し繰り返すステップと
    前記原バイト・ストリームにおけるサブストリームと前記新バイト・ストリームにおける対応するサブストリームの各々の間でバイト・レベルの相違を判定するステップであって、前記原バイト・ストリームのサブストリームと前記新バイト・ストリームの対応するサブストリームとの間の編集距離を計算することを含み、前記編集距離は、前記原バイト・ストリームのサブストリームから前記新バイト・ストリームの対応するサブストリームに変換する最小数の編集動作により表され、前記予め指定したサイズは、前記編集距離の計算に関係する、ステップと
    前記計算した前記編集距離を表す前記編集動作の情報を含む動作アレイを生成するステップと
    可変長整数フォーマットを用いて前記動作アレイに含まれた前記編集動作の情報を含むデルタ・ファイルを生成するステップと
    を含む、コンピュータ読み取り可能記憶媒体。
JP2004504132A 2002-05-13 2003-05-12 バイト・レベルのファイル相違検出および更新アルゴリズム Expired - Fee Related JP4364790B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/146,545 US6925467B2 (en) 2002-05-13 2002-05-13 Byte-level file differencing and updating algorithms
PCT/US2003/014903 WO2003096211A1 (en) 2002-05-13 2003-05-12 Byte-level file differencing and updating algorithms

Publications (3)

Publication Number Publication Date
JP2005525641A JP2005525641A (ja) 2005-08-25
JP2005525641A5 JP2005525641A5 (ja) 2009-09-03
JP4364790B2 true JP4364790B2 (ja) 2009-11-18

Family

ID=29400475

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004504132A Expired - Fee Related JP4364790B2 (ja) 2002-05-13 2003-05-12 バイト・レベルのファイル相違検出および更新アルゴリズム

Country Status (5)

Country Link
US (2) US6925467B2 (ja)
EP (1) EP1550047A4 (ja)
JP (1) JP4364790B2 (ja)
AU (1) AU2003241421A1 (ja)
WO (1) WO2003096211A1 (ja)

Families Citing this family (151)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8479189B2 (en) * 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US20030182414A1 (en) 2003-05-13 2003-09-25 O'neill Patrick J. System and method for updating and distributing information
US6925467B2 (en) * 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
US7555750B1 (en) * 2002-08-22 2009-06-30 Hewlett-Packard Development Company, L.P. Update package generator employing partial predictive mapping techniques for generating update packages for mobile handsets
WO2004031961A1 (en) * 2002-09-30 2004-04-15 Insignia Solutions Plc Efficient system and method for updating a memory device
US7096311B2 (en) * 2002-09-30 2006-08-22 Innopath Software, Inc. Updating electronic files using byte-level file differencing and updating algorithms
US6836657B2 (en) * 2002-11-12 2004-12-28 Innopath Software, Inc. Upgrading of electronic files including automatic recovery from failures and errors occurring during the upgrade
US7194728B1 (en) * 2002-11-18 2007-03-20 Bmc Software, Inc. System and method for packaging updates
US7984435B2 (en) * 2002-11-13 2011-07-19 Hewlett-Packard Development Company, L.P. Update system employing reference software to reduce number of update packages
US7320010B2 (en) * 2002-11-18 2008-01-15 Innopath Software, Inc. Controlling updates of electronic files
US20040098361A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Managing electronic file updates on client devices
US7844734B2 (en) * 2002-11-18 2010-11-30 Innopath Software, Inc. Dynamic addressing (DA) using a centralized DA manager
US20040098421A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Scheduling updates of electronic files
US7007049B2 (en) * 2002-11-18 2006-02-28 Innopath Software, Inc. Device memory management during electronic file updating
US7003534B2 (en) * 2002-11-18 2006-02-21 Innopath Software, Inc. Generating difference files using module information of embedded software components
US7099884B2 (en) * 2002-12-06 2006-08-29 Innopath Software System and method for data compression and decompression
US8356019B1 (en) * 2002-12-11 2013-01-15 Altera Corporation Method and apparatus for utilizing patterns in data to reduce file size
US7904432B2 (en) * 2003-01-24 2011-03-08 Hewlett-Packard Development Company, L.P. Compressed data structure for extracted changes to a database and method of generating the data structure
JP4153324B2 (ja) * 2003-01-31 2008-09-24 松下電器産業株式会社 差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラム
US20040230965A1 (en) * 2003-02-28 2004-11-18 Harri Okkonen Mobile handset network that facilitates interaction between a generic intelligent responsive agent and a service broker server
US7689981B1 (en) * 2003-02-28 2010-03-30 Hewlett-Packard Development Company, L.P. Mobile handset with efficient interruption point detection during a multiple-pass update process
US7320009B1 (en) 2003-03-28 2008-01-15 Novell, Inc. Methods and systems for file replication utilizing differences between versions of files
US7975147B1 (en) 2003-03-31 2011-07-05 Hewlett-Packard Development Company, L.P. Electronic device network supporting enciphering and deciphering and update generation in electronic devices
US7290251B2 (en) * 2003-05-16 2007-10-30 Microsoft Corporation Method and system for providing a representation of merge conflicts in a three-way merge operation
US7747994B1 (en) * 2003-06-04 2010-06-29 Hewlett-Packard Development Company, L.P. Generator based on multiple instruction streams and minimum size instruction set for generating updates to mobile handset
US7890464B2 (en) * 2003-06-20 2011-02-15 Innopath Software, Inc. Processing software images and generating difference files
US7089270B2 (en) * 2003-06-20 2006-08-08 Innopath Software Processing software images for use in generating difference files
EP2273361B1 (en) * 2003-06-23 2012-09-19 Red Bend Ltd. Method and system for updating versions of content stored in a storage device
WO2005003963A2 (en) * 2003-07-07 2005-01-13 Red Bend Ltd. Method and system for updating versions of content stored in a storage device
US7343443B1 (en) 2003-07-08 2008-03-11 Hewlett-Packard Development Company, L.P. Updated package generation based on analysis of bank dependency
US20050010870A1 (en) * 2003-07-09 2005-01-13 Jinsheng Gu Post-processing algorithm for byte-level file differencing
US20050010576A1 (en) * 2003-07-09 2005-01-13 Liwei Ren File differencing and updating engines
US7031972B2 (en) * 2003-07-21 2006-04-18 Innopath Software, Inc. Algorithms for block-level code alignment of software binary files
US20050020308A1 (en) * 2003-07-23 2005-01-27 David Lai Dynamically binding Subscriber Identity Modules (SIMs)/User Identity Modules (UIMs) with portable communication devices
US7886093B1 (en) 2003-07-31 2011-02-08 Hewlett-Packard Development Company, L.P. Electronic device network supporting compression and decompression in electronic devices
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
WO2005039161A1 (en) * 2003-10-14 2005-04-28 Innopath Sofware, Inc. Upgrading electronic files of a mobile device upgrade client
CN1973262B (zh) * 2003-10-23 2012-08-22 创道软件有限公司 使用集中动态寻址(da)管理器的动态寻址
US8135683B2 (en) * 2003-12-16 2012-03-13 International Business Machines Corporation Method and apparatus for data redundancy elimination at the block level
US7469262B2 (en) * 2003-12-29 2008-12-23 Oracle International Corporation Customizable metadata merging framework
KR100584448B1 (ko) * 2004-01-19 2006-05-26 삼성전자주식회사 바이너리 위치정보를 이용한 임베디드 소프트웨어 원격다운로드방법 및 시스템
US7739679B2 (en) * 2004-04-06 2010-06-15 Hewlett-Packard Development Company, L.P. Object ordering tool for facilitating generation of firmware update friendly binary image
US7694291B2 (en) * 2004-04-06 2010-04-06 Hewlett-Packard Development Company, L.P. Build optimizer tool for efficient management of software builds for mobile devices
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US7730167B2 (en) * 2004-04-30 2010-06-01 Microsoft Corporation Methods and systems for halting synchronization loops in a distributed system
US7543118B1 (en) 2004-05-07 2009-06-02 Hewlett-Packard Development Company, L.P. Multiple variance platform for the management of mobile devices
EP1754322A4 (en) * 2004-06-10 2012-03-07 Samsung Electronics Co Ltd DEVICE AND METHOD FOR EFFICIENTLY PRODUCING DELTA FILES FOR AIR RADIO UPGRADES IN A WIRELESS NETWORK
US7673300B2 (en) * 2004-06-10 2010-03-02 Samsung Electronics Co., Ltd. Segmented linker using spatial locality of reference for over-the-air software updates
US7529779B2 (en) * 2004-06-10 2009-05-05 Samsung Electronics Co., Ltd. Apparatus and method for efficient generation of delta files for over-the-air upgrades in a wireless network
KR100849301B1 (ko) * 2004-06-10 2008-07-29 삼성전자주식회사 무선 네트워크에서의 오버-더-에어 업그레이드용 델타파일의 효율적 생성 장치 및 방법
US7580959B2 (en) * 2004-06-14 2009-08-25 International Business Machines Corporation Apparatus, system, and method for providing efficient disaster recovery storage of data using differencing
US7484051B2 (en) * 2004-06-14 2009-01-27 International Business Machines Corporation Apparatus, system and method for reliably updating a data group in a read-before-write data replication environment using a comparison file
US7492953B2 (en) * 2004-06-17 2009-02-17 Smith Micro Software, Inc. Efficient method and system for reducing update requirements for a compressed binary image
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7516451B2 (en) * 2004-08-31 2009-04-07 Innopath Software, Inc. Maintaining mobile device electronic files including using difference files when upgrading
WO2006052904A2 (en) * 2004-11-08 2006-05-18 Innopath Software, Inc. Updating compressed read-only memory file system (cramfs) images
US7487169B2 (en) * 2004-11-24 2009-02-03 International Business Machines Corporation Method for finding the longest common subsequences between files with applications to differential compression
US20060117075A1 (en) * 2004-12-01 2006-06-01 International Business Machines Corporation Prerequisite, dependent and atomic deltas
US7756826B2 (en) * 2006-06-30 2010-07-13 Citrix Systems, Inc. Method and systems for efficient delivery of previously stored content
US8943304B2 (en) 2006-08-03 2015-01-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
US9692725B2 (en) 2005-05-26 2017-06-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
US9407608B2 (en) 2005-05-26 2016-08-02 Citrix Systems, Inc. Systems and methods for enhanced client side policy
US9621666B2 (en) 2005-05-26 2017-04-11 Citrix Systems, Inc. Systems and methods for enhanced delta compression
CA2928051C (en) 2005-07-15 2018-07-24 Indxit Systems, Inc. Systems and methods for data indexing and processing
US7783781B1 (en) 2005-08-05 2010-08-24 F5 Networks, Inc. Adaptive compression
CN1913441A (zh) * 2005-08-09 2007-02-14 张永敏 连续变化数据集传输及更新方法
DE602005010858D1 (de) * 2005-08-18 2008-12-18 Ericsson Telefon Ab L M Rückgekoppelter Linker for erhöhte Delta-Performanz
WO2007023497A1 (en) * 2005-08-23 2007-03-01 Red Bend Ltd. Method and system for in-place updating content stored in a storage device
ATE486316T1 (de) * 2005-08-30 2010-11-15 Sony Ericsson Mobile Comm Ab Verfahren und software für die optimierung der positionierung von software-funktionen in einem speicher
US20070130232A1 (en) * 2005-11-22 2007-06-07 Therrien David G Method and apparatus for efficiently storing and managing historical versions and replicas of computer data files
US8275909B1 (en) * 2005-12-07 2012-09-25 F5 Networks, Inc. Adaptive compression
KR100717064B1 (ko) 2006-03-03 2007-05-10 삼성전자주식회사 소프트웨어 업데이트 실행 방법 및 장치
US20070276912A1 (en) * 2006-05-05 2007-11-29 Mike Rybak Apparatus and method for forming and communicating a responsive data message
US8055096B2 (en) * 2006-05-10 2011-11-08 Research In Motion Limited Method and system for incremental patching of binary files
EP2025095A2 (en) 2006-06-08 2009-02-18 Hewlett-Packard Development Company, L.P. Device management in a network
US7783686B2 (en) * 2006-06-16 2010-08-24 Microsoft Corporation Application program interface to manage media files
US7603387B2 (en) * 2006-06-16 2009-10-13 Microsoft Corporation Techniques to manage media files
US7555480B2 (en) * 2006-07-11 2009-06-30 Microsoft Corporation Comparatively crawling web page data records relative to a template
US8296268B2 (en) * 2006-07-21 2012-10-23 Samsung Electronics Co., Ltd. System and method for change logging in a firmware over the air development environment
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
EP1903437A3 (en) * 2006-07-31 2008-10-22 Seiko Epson Corporation Update data transmission method, firmware writing system, and update data transmission program
KR20080025957A (ko) * 2006-09-19 2008-03-24 삼성전자주식회사 휴대용 단말기에서 소프트웨어를 업그레이드하기 위한 장치및 방법
US7769731B2 (en) * 2006-10-04 2010-08-03 International Business Machines Corporation Using file backup software to generate an alert when a file modification policy is violated
US8117609B2 (en) * 2006-12-20 2012-02-14 Omx Technology Ab System and method for optimizing changes of data sets
EP1962182A1 (en) * 2007-02-23 2008-08-27 Ingenico Computer-implemented method and executable program for updating reference data
US8166466B2 (en) * 2007-06-22 2012-04-24 Microsoft Corporation Function matching in binaries
US8630981B1 (en) * 2007-12-21 2014-01-14 Symantec Corporation Techniques for differencing binary installation packages
JP5111129B2 (ja) * 2008-01-22 2012-12-26 キヤノン株式会社 情報処理装置、情報処理システム、情報処理方法、及び、プログラム
US8219595B2 (en) * 2008-02-14 2012-07-10 Hewlett-Packard Development Company, L.P. System and method for efficient remote data access for server management
US8078957B2 (en) * 2008-05-02 2011-12-13 Microsoft Corporation Document synchronization over stateless protocols
US20090287986A1 (en) * 2008-05-14 2009-11-19 Ab Initio Software Corporation Managing storage of individually accessible data units
US8832034B1 (en) 2008-07-03 2014-09-09 Riverbed Technology, Inc. Space-efficient, revision-tolerant data de-duplication
US8370309B1 (en) 2008-07-03 2013-02-05 Infineta Systems, Inc. Revision-tolerant data de-duplication
US8015220B1 (en) * 2008-08-05 2011-09-06 Smith Micro Software, Inc. Block-based differencing algorithm
US8346967B2 (en) * 2008-08-08 2013-01-01 International Business Machines Corporation Management of redirection
US8756664B2 (en) * 2008-08-08 2014-06-17 International Business Machines Corporation Management of user authentication
US8352442B2 (en) * 2008-08-08 2013-01-08 International Business Machines Corporation Determination of an updated data source from disparate data sources
US8078593B1 (en) 2008-08-28 2011-12-13 Infineta Systems, Inc. Dictionary architecture and methodology for revision-tolerant data de-duplication
US8468516B1 (en) * 2008-12-19 2013-06-18 Juniper Networks, Inc. Creating hot patches for embedded systems
US9104521B2 (en) * 2009-03-16 2015-08-11 Tyco Electronics Subsea Communications Llc System and method for remote device application upgrades
US8219526B2 (en) 2009-06-05 2012-07-10 Microsoft Corporation Synchronizing file partitions utilizing a server storage model
CN101930387A (zh) * 2009-06-19 2010-12-29 上海惠普有限公司 用于更新压缩只读文件系统的改进的容错方法及装置
JP2013517565A (ja) * 2010-01-12 2013-05-16 グーグル インコーポレイテッド オペレーティングシステム自動更新手順
US9292266B2 (en) * 2010-04-30 2016-03-22 Qualcomm Incorporate Preprocessor for file updating
US8555161B2 (en) * 2010-05-27 2013-10-08 Microsoft Corporation Concurrent editing of a document by multiple clients
US9652440B2 (en) 2010-05-27 2017-05-16 Microsoft Technology Licensing, Llc Concurrent utilization of a document by multiple threads
US8228216B2 (en) * 2010-09-08 2012-07-24 Hewlett-Packard Development Company, L.P. Systems and methods for data compression
WO2012033498A1 (en) * 2010-09-10 2012-03-15 Hewlett-Packard Development Company, L.P. Systems and methods for data compression
US8316034B2 (en) 2010-10-20 2012-11-20 International Business Machines Corporaion Analyzing binary data streams to identify embedded record structures
US20120131432A1 (en) * 2010-11-24 2012-05-24 Edward Wayne Goddard Systems and methods for delta encoding, transmission and decoding of html forms
US8666997B2 (en) 2010-12-08 2014-03-04 Microsoft Corporation Placeholders returned for data representation items
US8983907B2 (en) * 2010-12-08 2015-03-17 Microsoft Technology Licensing, Llc Change notifications from an updated data representation
US9069829B2 (en) 2011-01-21 2015-06-30 Microsoft Technology Licensing, Llc Data items manager
US8838533B2 (en) 2011-05-20 2014-09-16 Microsoft Corporation Optimistic application of data edits
US8589363B2 (en) * 2011-07-19 2013-11-19 Exagrid Systems, Inc. Systems and methods for managing delta version chains
CN102356394B (zh) * 2011-08-23 2013-09-11 华为技术有限公司 文档更新方法和装置
CN102955816B (zh) * 2011-08-30 2016-04-20 国际商业机器公司 利用串匹配进行数据同步的方法和系统
JP5696018B2 (ja) * 2011-09-28 2015-04-08 クラリオン株式会社 対象データの配置方法、対象データ配置システム、および、それらのサーバ装置、クライアント装置、プログラム
US10191925B1 (en) * 2011-10-27 2019-01-29 Valve Corporation Delivery of digital information to a remote device
US9075693B2 (en) * 2012-06-27 2015-07-07 Google Inc. Methods for updating applications
US9275368B1 (en) * 2012-09-25 2016-03-01 Amazon Technologies, Inc. Annotation mapping
CN103051723B (zh) * 2012-12-27 2016-08-31 广州市动景计算机科技有限公司 一种增量升级方法及服务器、终端
US20140208306A1 (en) * 2013-01-23 2014-07-24 Caterpillar Inc. Control system having automatic component software management
US9239874B1 (en) * 2013-03-15 2016-01-19 Emc Corporation Integrated search for shared storage using index throttling to maintain quality of service
US9256416B1 (en) * 2013-03-28 2016-02-09 Juniper Networks, Inc. Methods and apparatus for automatic session validation for distributed access points
TWI581629B (zh) * 2014-08-07 2017-05-01 A Method and System for Message Transmission without Marked Identification
US9785429B2 (en) 2015-02-27 2017-10-10 Lenovo (Singapore) Pte. Ltd. Efficient deployment of thin client applications to end user
US10860310B2 (en) 2015-09-30 2020-12-08 Apple Inc. Software updating
CN105589838B (zh) * 2015-12-24 2018-06-12 中国电子科技集团公司第三十三研究所 一种基于文件比较的电子公文痕迹保留方法
US9430363B1 (en) * 2015-12-28 2016-08-30 International Business Machines Corporation Creating expected test results using previous test results
JP2018018240A (ja) * 2016-07-27 2018-02-01 富士ゼロックス株式会社 データ処理装置およびプログラム
US10474446B2 (en) * 2016-09-16 2019-11-12 Bank Of America Corporation Installation tool for adhering to enterprise requirements
US20190163461A1 (en) * 2017-11-29 2019-05-30 Nutanix, Inc. Upgrade managers for differential upgrade of distributed computing systems
US10585664B2 (en) 2017-12-21 2020-03-10 International Business Machines Corporation Span limited lexical analysis
CN110244973B (zh) * 2018-03-09 2022-09-16 阿里巴巴(中国)有限公司 数据更新包的生成方法、装置及数据更新方法、装置
CN108536657B (zh) * 2018-04-10 2021-09-21 百融云创科技股份有限公司 人为填写的地址文本相似度处理方法和系统
US11556326B2 (en) * 2018-09-06 2023-01-17 Arm Limited Methods for performing a rollback-capable software update at a device
US10454497B1 (en) * 2018-10-22 2019-10-22 Dell Products L. P. Reducing a size of multiple data sets
CN109542495A (zh) * 2018-11-12 2019-03-29 青岛海信电器股份有限公司 一种软件升级方法及装置
CN109684610B (zh) * 2018-11-30 2023-06-16 东软集团股份有限公司 文本分块方法,装置,存储介质及电子设备
KR20200089490A (ko) 2019-01-17 2020-07-27 삼성전자주식회사 펌웨어 업데이트 방법 및 이를 수행하는 장치
US11070618B2 (en) 2019-01-30 2021-07-20 Valve Corporation Techniques for updating files
US11886391B2 (en) 2020-05-14 2024-01-30 Valve Corporation Efficient file-delivery techniques
CN111600610B (zh) * 2020-05-26 2023-04-28 北京思特奇信息技术股份有限公司 一种变长整数的通用编码方法、系统及电子设备
CN113805927A (zh) * 2020-06-11 2021-12-17 中移(苏州)软件技术有限公司 一种代码更新方法、装置、电子设备及计算机存储介质
CN111782591B (zh) * 2020-06-22 2023-05-16 北京计算机技术及应用研究所 一种计算文件相似哈希的方法
WO2022003418A1 (en) * 2020-06-29 2022-01-06 Aurora Labs Ltd. Efficient controller data generation and extraction
US11789708B2 (en) * 2021-04-22 2023-10-17 Silicon Laboratories Inc. Compression of firmware updates
US11494422B1 (en) * 2022-06-28 2022-11-08 Intuit Inc. Field pre-fill systems and methods
CN115291949B (zh) * 2022-09-26 2022-12-20 中国人民解放军国防科技大学 一种面向计算流体力学的加速计算装置和加速计算方法

Family Cites Families (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4875159A (en) 1987-12-22 1989-10-17 Amdahl Corporation Version management system using plural control fields for synchronizing two versions of files in a multiprocessor system
US5479654A (en) 1990-04-26 1995-12-26 Squibb Data Systems, Inc. Apparatus and method for reconstructing a file from a difference signature and an original file
US5444764A (en) 1993-07-01 1995-08-22 Motorola, Inc. Method of providing a subscription lock to a radiotelephone system
US5806078A (en) 1994-06-09 1998-09-08 Softool Corporation Version management system
US5742905A (en) 1994-09-19 1998-04-21 Bell Communications Research, Inc. Personal communications internetworking
US5574906A (en) 1994-10-24 1996-11-12 International Business Machines Corporation System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing
US5634052A (en) 1994-10-24 1997-05-27 International Business Machines Corporation System for reducing storage requirements and transmission loads in a backup subsystem in client-server environment by transmitting only delta files from client to server
US5485575A (en) * 1994-11-21 1996-01-16 International Business Machines Corporation Automatic analysis of a computer virus structure and means of attachment to its hosts
US5729735A (en) 1995-02-08 1998-03-17 Meyering; Samuel C. Remote database file synchronizer
US5729743A (en) 1995-11-17 1998-03-17 Deltatech Research, Inc. Computer apparatus and method for merging system deltas
US5864757A (en) 1995-12-12 1999-01-26 Bellsouth Corporation Methods and apparatus for locking communications devices
US5758062A (en) 1996-04-30 1998-05-26 Oracle Corporation Method and apparatus for regression testing of application logic
US5832520A (en) 1996-07-03 1998-11-03 Miller, Call, Plauck And Miller Automatic file differencing and updating system
US6308061B1 (en) 1996-08-07 2001-10-23 Telxon Corporation Wireless software upgrades with version control
US5850565A (en) 1996-08-26 1998-12-15 Novell, Inc. Data compression method and apparatus
US6374250B2 (en) * 1997-02-03 2002-04-16 International Business Machines Corporation System and method for differential compression of data from a plurality of binary sources
US5859565A (en) * 1997-03-10 1999-01-12 Reiffin; Martin Cathode-follower high-fidelity power amplifier
US5977889A (en) * 1997-06-05 1999-11-02 International Business Machines Corporation Optimization of data representations for transmission of storage using differences from reference data
EP1005674A4 (en) * 1997-07-15 2002-03-13 Pocket Soft Inc SYSTEM FOR DETECTING DIFFERENCES BETWEEN TWO COMPUTER FILES AND UPDATING OF COMPUTER FILES
WO1999012098A1 (en) 1997-08-29 1999-03-11 Hewlett-Packard Company Data backup and recovery systems
US6157924A (en) 1997-11-07 2000-12-05 Bell & Howell Mail Processing Systems Company Systems, methods, and computer program products for delivering information in a preferred medium
US6041333A (en) 1997-11-14 2000-03-21 Microsoft Corporation Method and apparatus for automatically updating a data file from a network
US6018747A (en) 1997-11-26 2000-01-25 International Business Machines Corporation Method for generating and reconstructing in-place delta files
US6076148A (en) 1997-12-26 2000-06-13 Emc Corporation Mass storage subsystem and backup arrangement for digital data processing system which permits information to be backed up while host computer(s) continue(s) operating in connection with information stored on mass storage subsystem
US6035423A (en) * 1997-12-31 2000-03-07 Network Associates, Inc. Method and system for providing automated updating and upgrading of antivirus applications using a computer network
KR100269322B1 (ko) * 1998-01-16 2000-10-16 윤종용 스트레스용전압을이용하여메모리를테스팅하는기능을갖는집적회로및그의메모리테스트방법
US6078967A (en) 1998-02-25 2000-06-20 Hewlett-Packard Company System for upgrading functionality of a peripheral device utilizing a removable ROM having relocatable object code
US6052531A (en) * 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating
US20010049263A1 (en) 1998-03-26 2001-12-06 Xiang Zhang Automatic station/system configuration monitoring and error tracking system and software upgrade tool kit
US6088694A (en) 1998-03-31 2000-07-11 International Business Machines Corporation Continuous availability and efficient backup for externally referenced objects
US6216175B1 (en) 1998-06-08 2001-04-10 Microsoft Corporation Method for upgrading copies of an original file with same update data after normalizing differences between copies created during respective original installations
US6233589B1 (en) * 1998-07-31 2001-05-15 Novell, Inc. Method and system for reflecting differences between two files
EP0981099A3 (en) 1998-08-17 2004-04-21 Connected Place Limited A method of and an apparatus for merging a sequence of delta files
US6167258A (en) 1998-10-09 2000-12-26 Cleveland Medical Devices Inc. Programmable wireless data acquisition system
US6145012A (en) 1998-10-14 2000-11-07 Veritas Software Corporation Apparatus and method for efficiently updating files in computer networks
US6226784B1 (en) 1998-10-14 2001-05-01 Mci Communications Corporation Reliable and repeatable process for specifying developing distributing and monitoring a software system in a dynamic environment
US6163811A (en) 1998-10-21 2000-12-19 Wildseed, Limited Token based source file compression/decompression and its application
US6457175B1 (en) 1998-11-09 2002-09-24 Tut Systems, Inc. Method and apparatus for installing a software upgrade within a memory resource associated with a computer system
US6327671B1 (en) 1998-11-18 2001-12-04 International Business Machines Corporation Delta compressed asynchronous remote copy
US6349311B1 (en) * 1999-02-01 2002-02-19 Symantec Corporation Storage of reverse delta updates
US6594822B1 (en) 1999-02-19 2003-07-15 Nortel Networks Limited Method and apparatus for creating a software patch by comparing object files
US6401239B1 (en) 1999-03-22 2002-06-04 B.I.S. Advanced Software Systems Ltd. System and method for quick downloading of electronic files
US6425125B1 (en) * 1999-03-30 2002-07-23 Microsoft Corporation System and method for upgrading client software
US6466999B1 (en) 1999-03-31 2002-10-15 Microsoft Corporation Preprocessing a reference data stream for patch generation and compression
US6574657B1 (en) 1999-05-03 2003-06-03 Symantec Corporation Methods and apparatuses for file synchronization and updating using a signature list
IL129947A (en) 1999-05-13 2003-06-24 Tadiran Telecom Business Syste Method and apparatus for downloading software into an embedded system
US6370197B1 (en) * 1999-07-23 2002-04-09 Memorylink Corporation Video compression scheme using wavelets
GB2354107B (en) * 1999-09-01 2004-04-28 Mitel Corp Surface stabilization of silicon rich silica glass using increased post deposition delay
US6629110B2 (en) 2000-01-10 2003-09-30 Connected Corporation Administration of a differential backup system in a client-server environment
US6694336B1 (en) 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
CA2398838A1 (en) 2000-03-01 2001-09-07 Computer Associates Think, Inc. Method and system for updating an archive of a computer file
US6651190B1 (en) 2000-03-14 2003-11-18 A. Worley Independent remote computer maintenance device
US6662163B1 (en) 2000-03-30 2003-12-09 Voxware, Inc. System and method for programming portable devices from a remote computer system
US6898564B1 (en) 2000-05-23 2005-05-24 Microsoft Corporation Load simulation tool for server resource capacity planning
US6535894B1 (en) * 2000-06-01 2003-03-18 Sun Microsystems, Inc. Apparatus and method for incremental updating of archive files
AU2001272970A1 (en) 2000-06-22 2002-01-02 Synchrologic, Inc. A system and method for file transmission using file differentiation
US6669564B1 (en) 2000-06-27 2003-12-30 Electronic Arts Inc. Episodic delivery of content
GB2369213B (en) 2000-07-04 2005-02-23 Honda Motor Co Ltd Electronic file management system
US6470329B1 (en) * 2000-07-11 2002-10-22 Sun Microsystems, Inc. One-way hash functions for distributed data synchronization
US20020120697A1 (en) 2000-08-14 2002-08-29 Curtis Generous Multi-channel messaging system and method
GB2381358A (en) 2000-08-15 2003-04-30 Seagate Technology Llc Dual mode data compression for operating code
US6754816B1 (en) 2000-10-26 2004-06-22 Dell Products L.P. Scalable environmental data calculation method customized by system configuration
US7058941B1 (en) 2000-11-14 2006-06-06 Microsoft Corporation Minimum delta generator for program binaries
KR100520058B1 (ko) 2000-12-13 2005-10-11 삼성전자주식회사 디바이스드라이버 업그레이드 시스템 및 디바이스드라이버업그레이드 방법
US6954765B2 (en) 2000-12-30 2005-10-11 Intel Corporation Updating a file in a fragmented file system
US20020089436A1 (en) * 2001-01-11 2002-07-11 Shalom Yariv Delta data compression and transport
US20020099726A1 (en) 2001-01-23 2002-07-25 International Business Machines Corporation Method and system for distribution of file updates
US20020129107A1 (en) 2001-03-12 2002-09-12 Loughran Stephen A. Method and apparatus for automatic content handling
US6442660B1 (en) 2001-03-21 2002-08-27 Sharp Laboratories Of America, Inc. Dynamic system relocation based on availability of system memory
US6912591B2 (en) 2001-05-02 2005-06-28 Science Application International Corporation System and method for patch enabled data transmissions
EP1445888A4 (en) 2001-10-12 2010-07-07 Panasonic Corp CONTENT PROCESSING APPARATUS AND CONTENT PROTECTION PROGRAM
US7483970B2 (en) 2001-12-12 2009-01-27 Symantec Corporation Method and apparatus for managing components in an IT system
US7600021B2 (en) 2002-04-03 2009-10-06 Microsoft Corporation Delta replication of source files and packages across networked resources
US6904430B1 (en) * 2002-04-26 2005-06-07 Microsoft Corporation Method and system for efficiently identifying differences between large files
US6925467B2 (en) 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
US20040031027A1 (en) 2002-08-08 2004-02-12 Hiltgen Daniel K. System for updating diverse file versions
US6836657B2 (en) 2002-11-12 2004-12-28 Innopath Software, Inc. Upgrading of electronic files including automatic recovery from failures and errors occurring during the upgrade
US7096311B2 (en) 2002-09-30 2006-08-22 Innopath Software, Inc. Updating electronic files using byte-level file differencing and updating algorithms
US20040098421A1 (en) 2002-11-18 2004-05-20 Luosheng Peng Scheduling updates of electronic files
US7003534B2 (en) 2002-11-18 2006-02-21 Innopath Software, Inc. Generating difference files using module information of embedded software components
US7007049B2 (en) 2002-11-18 2006-02-28 Innopath Software, Inc. Device memory management during electronic file updating
US7320010B2 (en) 2002-11-18 2008-01-15 Innopath Software, Inc. Controlling updates of electronic files
US20040098361A1 (en) 2002-11-18 2004-05-20 Luosheng Peng Managing electronic file updates on client devices
US7099884B2 (en) 2002-12-06 2006-08-29 Innopath Software System and method for data compression and decompression
US20040193643A1 (en) 2003-03-27 2004-09-30 O'brien John C. Method and system for tracking contracts
US20050010870A1 (en) 2003-07-09 2005-01-13 Jinsheng Gu Post-processing algorithm for byte-level file differencing
US20050010576A1 (en) 2003-07-09 2005-01-13 Liwei Ren File differencing and updating engines
US7379884B2 (en) 2003-09-11 2008-05-27 International Business Machines Corporation Power on demand tiered response time pricing

Also Published As

Publication number Publication date
EP1550047A1 (en) 2005-07-06
US20050234997A1 (en) 2005-10-20
US8156071B2 (en) 2012-04-10
AU2003241421A1 (en) 2003-11-11
EP1550047A4 (en) 2009-07-15
US20030212712A1 (en) 2003-11-13
US6925467B2 (en) 2005-08-02
WO2003096211A1 (en) 2003-11-20
JP2005525641A (ja) 2005-08-25

Similar Documents

Publication Publication Date Title
JP4364790B2 (ja) バイト・レベルのファイル相違検出および更新アルゴリズム
US7539685B2 (en) Index key normalization
US6233589B1 (en) Method and system for reflecting differences between two files
JP5173427B2 (ja) 圧縮リード・オンリ・メモリ・ファイル・システム(crmfs)イメージの更新
CN105009067B (zh) 管理对存储数据单元的操作
US7661102B2 (en) Method for reducing binary image update package sizes
US8120516B2 (en) Data compression using a stream selector with edit-in-place capability for compressed data
US8117173B2 (en) Efficient chunking algorithm
JP4796315B2 (ja) 遠隔差分圧縮用の効率的アルゴリズムとプロトコル
US20050010870A1 (en) Post-processing algorithm for byte-level file differencing
JP2005525641A5 (ja)
JP2005044360A (ja) データのパッケージ内デルタ圧縮(intra−packetdeltacompression)のためのシステムおよび方法
US20130047145A1 (en) Match analysis for encoding optimized update packages
US7647291B2 (en) B-tree compression using normalized index keys
CN105027071A (zh) 管理对存储数据单元的操作
US7379940B1 (en) Focal point compression method and apparatus
Burns et al. In-place reconstruction of version differences
Shapira et al. In place differential file compression
US11789708B2 (en) Compression of firmware updates
US8244677B2 (en) Focal point compression method and apparatus
Womack Cigarcoil: A new algorithm for the compression of dna sequencing data
Shapira et al. In-place differential file compression of nonaligned files with applications to file distribution, backups, and string similarity
FI115937B (fi) Häviötön datan tiivistäminen ja purkaminen
CN116700739A (zh) 差分升级方法、装置、电子设备及可读存储介质
CN117170726A (zh) 一种低资源的差分升级方法及嵌入式设备

Legal Events

Date Code Title Description
A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20060425

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090115

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090414

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090421

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20090713

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090806

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090819

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120828

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130828

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees