JP4249793B2 - 差分データ生成装置、差分データ生成装置の差分データ生成方法および差分データ生成プログラム - Google Patents
差分データ生成装置、差分データ生成装置の差分データ生成方法および差分データ生成プログラム Download PDFInfo
- Publication number
- JP4249793B2 JP4249793B2 JP2007249287A JP2007249287A JP4249793B2 JP 4249793 B2 JP4249793 B2 JP 4249793B2 JP 2007249287 A JP2007249287 A JP 2007249287A JP 2007249287 A JP2007249287 A JP 2007249287A JP 4249793 B2 JP4249793 B2 JP 4249793B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- size
- instruction code
- new
- difference
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Description
各種データ、特に組込み機器向けプログラムやカーナビゲーションシステム向けの地図データなどのバージョンアップに際しては、図1に示すように、旧データ192と新データ191との位置がずれて、且つ、ずれた部分について飛び飛びでデータの内容が変更になっている、というパターンの更新が多く見られる。
図1ではAとA’、CとC’、EとE’、GとG’の内容が同一でBとB’、DとD’、FとF’の内容が変更になっている。
図1に示す旧データ192と新データ191とに対する差分データとして一般的な差分データ表現方法を図2に基づいて説明する。
一般的な差分データ表現方法には、例えばWalter F.Tichyの論文「The String−to−String Correction Problem with Block Moves」がある。
この表現方法は、旧データ192の一部、あるいは全部からデータを移動して前記新データ191にコピーすることを意味するMove命令と、新データ191に当該差分データ中に記述したデータを追加することを意味するAdd命令とを差分データ表現に用いる方法である。
図1の例に適用すると(ただしA〜G、A’〜G’の範囲に限定)、図2に示すような差分データで旧データ192と新データ191の間の差分を表現することが出来る。
AからA’、CからC’、EからE’、GからG’のデータの移行はMove命令で表され、B’、D’、F’への新規データの追加はAdd命令で表されている。
Move命令は位置情報として旧データにおける対象データの位置するアドレスを示している。
Move命令には旧データ192における位置情報が必要となるため、図2のようにMove命令とAdd命令が交互に現れるようなケースではMove命令の位置情報が差分データサイズ増加の要因の一つとなってしまう。
オフセットとは、旧データ192内の移行データを新データ191内の移行位置に移行する際の相対値を示す。
普通にオフセット情報を示すには1ビットより多くのデータが必要であることから(例えば1byte)、前記方法によって余分なオフセット情報を省略し、差分データサイズを小さくすることができる。
図1に示すAからA’、CからC’、EからE’、GからG’のデータ移行についてMove命令の位置情報をオフセットで表すと、オフセットはそれぞれ「+100」で同じとなる。図3は、連続する同一オフセットである「+100」を1ビットの「flag」で表したものである。
この場合には、「flag」は1ヶ所しか使用できず、フラグを用いたオフセット情報の省略にあまり効果が無いことを示している。
図4においては、「flag」を含め「+100」をオフセットとするMove命令が4つあり、「+100」を示すビット表現を用いることで差分データサイズを小さくする。
この場合には、同一オフセットは「+100」が2ヶ所にあるだけで、「+100」という値を示す「+100flag」を2ヶ所で使用することしかできない。また、「+100flag」が「+100」という値であることを示す別情報を持たなければ行けない
ことからも差分データのサイズ削減効果は小さくなってしまう。
まず、差分データの表現方法について説明する。
差分データ生成装置では従来のMove命令(第1Move命令または第1Move命令コード)、Add命令(Add命令コード)に加えて特殊Move命令(第2Move命令または第2Move命令コード)とSkip命令(Skip命令コード)とを差分データの表現に用いる。
特殊Move命令は、旧データ192の一部、あるいは全部からデータを移動して前記新データ191にコピーした後に、前記新データ191に対する書換えポインタを前記コピーデータの先頭に移動させることを意味する。
Skip命令は、新データ191に対する書換えポインタを前方に指定長分進めることを意味する。
ただし、図8に示すのはあくまでも説明のための例であって、本発明の効果が図8に示すフォーマットに限定されていることを示すものではない。
Move命令は、Moveを表す命令識別子1byte(バイト)と旧データ192と新データ191とのオフセット(Moveオフセット)2byte、Move対象のデータ長(Moveサイズ)4byteで表現している。
Add命令は、Addを表す命令識別子1byteとAddするサイズ(Addサイズ)2byte、および実際にAddする内容(Addデータ)で表現している。また、AddデータのサイズはAddサイズである。
特殊Move命令は、特殊Moveを表す命令識別子1byteと旧データ192と新データ191とのオフセット(特殊Moveオフセット)2byte、Move対象のデータ長(特殊Moveサイズ)4byteで表現する。
Skip命令は、Skipを表す命令識別子1byteとSkipするサイズ(Skipサイズ)4byteで表現している。
Skip命令ではMove命令や特殊Move命令とは異なりオフセット情報が不要であるため、Move命令や特殊Move命令と比較して小さいサイズで表現することができる。
差分データは従来の方法としてMove命令とAdd命令だけを用い、Move命令の位置情報をオフセットで表した場合の差分データである。
この場合、図8に示す命令フォーマットを使用すると、Move命令(7byte)が4つで28byte、Add命令(3byte+Addサイズ)が13byte、23byte、13byteで差分データの合計サイズは77byteになる。
図中において特殊Move命令を「Move’」で示す。
最初の特殊Move命令によって、旧データ192のAからGまでのデータを新データ191のA’からG’にコピーした後、新データ191の更新ポインタをA’の先頭に戻す。
次にSkip命令によって更新ポインタを100byte進めてB’の先頭に移動させる。
次にAdd命令によってB’の内容10byte分のデータを追加する。
それ以降も同様の処理を行う。このような差分データ表現によって、A’からG’までの間を更新することが可能である。
なお、この場合の差分データのサイズは、特殊Move命令が7byte、Skip命令(5byte)が4つで20byte、Add命令(3byte+Addサイズ)が13byte、23byte、13byteで合計76byteであり、図9に示した従来の差分データより小さいサイズになっている。
図1の例に対しては、差分データのサイズは1byteしか小さくなっていないが、MoveとAddの繰り返し数が大きくなるにつれて差分データとしてより小さくなる。
このSkip命令をMove命令に置き換える処理は、前記特殊Move命令のオフセットをMoveオフセットとし、前記Skip命令のSkipサイズをMoveサイズとすることで行える。
この更新処理によって、特殊Move命令をその意味通りに処理した際の無駄なコピー処理を回避することが可能となる。
例えば、図1の例では新データ191におけるB’、D’、F’部分へのコピーをしなくてもよいことになる。
この場合の差分データは、Move命令が6つで42byte、Add命令が23byteで合計65byteになる。
この場合の差分データは、特殊Move命令が7byte、Move命令が2つで14byte、Skip命令が4つで20byte、Add命令が23byteで合計64byteとなり、図11で示した従来の差分データより小さいサイズになっている。
このため、図6の更新パターンに対してもSkip命令の使用が多くなるに従い、従来の差分データに比べ差分データを小さくすることができる。
図13において、差分データ生成装置100は、システムユニット910、CRT(Cathode Ray Tube)表示装置901、キーボード(K/B)902、マウス903、コンパクトディスク装置(CDD)905、プリンタ装置906、スキャナ装置907を備え、これらはケーブルで接続されている。
さらに、差分データ生成装置100は、FAX機932、電話器931とケーブルで接続され、また、ローカルエリアネットワーク(LAN)942、ウェブサーバ941を介してインターネット940に接続されている。
図14において、差分データ生成装置100は、プログラムを実行するCPU(Central Processing Unit)911を備えている。CPU911は、バス912を介してROM913、RAM914、通信ボード915、CRT表示装置901、K/B902、マウス903、FDD(Flexible Disk Drive)904、磁気ディスク装置920、CDD905、プリンタ装置906、スキャナ装置907と接続されている。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920、光ディスク装置は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信ボード915は、FAX機932、電話器931、LAN942等に接続されている。
例えば、通信ボード915、K/B902、スキャナ装置907、FDD904などは、情報入力部の一例である。
また、例えば、通信ボード915、CRT表示装置901などは、出力部の一例である。
磁気ディスク装置920には、オペレーティングシステム(OS)921、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923は、CPU911、OS921、ウィンドウシステム922により実行される。
ファイル群924には、各実施の形態の説明において、「〜の判定結果」、「〜の判断結果」、「〜の計算結果」、「〜の処理結果」として説明するものが、「〜ファイル」として記憶されている。
また、各実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータの入出力を示し、そのデータの入出力のためにデータは、磁気ディスク装置920、FD(Flexible Disk cartridge)、光ディスク、CD(コンパクトディスク)、MD(ミニディスク)、DVD(Digital Versatile Disk)等のその他の記録媒体に記録される。あるいは、信号線やその他の伝送媒体により伝送される。
図15において、実施の形態1における差分データ生成装置100は、旧データから新データに移行するために、旧データのデータ位置を示す旧データポインタと新データのデータ位置を示す新データポインタとを制御する情報と、移行するデータの情報とに関する命令コード(Move命令コード、Add命令コード、特殊Move命令コード、Skip命令コード)を含む差分データを生成する。
また、差分データを生成するためにデータ記憶部190と差分データ生成部110とを備える。
旧データポインタの示す位置とコピーサイズとを示し、旧データポインタの示す位置にあるデータを新データポインタの示す位置からコピーサイズ分コピーし、新データポインタの示す位置をコピーサイズ分移動した値を新データポインタに設定することを示す第1Move命令コード(従来のMove命令コード)を差分データに含めるかの判定を行う。
また、追加データと追加データサイズとを示し、新データポインタの示す位置から追加データを追加し、新データポインタの示す位置を追加データサイズ分移動した位置を示す値を新データポインタに設定することを示すAdd命令コードを差分データに含めるかの判定を行う。
そして、判定結果に基づいて変換前差分データ193(特殊Move命令とSkip命令とを使用しない差分データ)を生成し、データ記憶部190に記憶する。
旧データポインタの示す位置とコピーサイズとを示し、旧データポインタの示す位置にあるデータを新データポインタの示す位置からコピーサイズ分コピーし、新データポインタの値を更新しないことを示す第2Move命令コード(特殊Move命令コード)を差分データに含めるかの判定を行う。
また、ポインタ更新サイズを示し、ポインタ更新サイズ分移動した位置を示す値を新データポインタに設定することを示すSkip命令コードを差分データに含めるかの判定を行う。
そして、判定結果に基づいて変換後差分データ194(特殊Move命令とSkip命令とを使用する差分データ)を生成し、データ記憶部190に記憶する。
図16に示すように、差分データ生成装置100は以下の処理を行う。
例えば、Walter F.Tichyの論文「The String−to−String Correction Problem with Block Moves」において使用されている処理で変換前差分データ193を生成する。
S102の差分データ第2生成部130の変換後差分データ194生成処理について図17に基づいて説明する。
まず、変換前差分データ193からすべてのMove命令のオフセット情報を抽出する(S201)。
次に、同一オフセットを持つMove命令が複数個ある場合には、これらのMove命令の内、先頭のMove命令の直前の位置に特殊Move命令を挿入する。
このとき、特殊Move命令のMoveサイズは、最後のMove命令でMoveするデータの終了アドレスと、先頭のMove命令でMoveするデータの開始アドレスの差を設定する。
また、特殊Move命令のオフセットはMove命令のオフセットと同一にする。
次に、前記同一オフセットを持つMove命令すべてをSkip命令に置き換える(S203)。
このとき、Skipサイズは置き換え対象Move命令のMoveサイズと同じにする。
こうすることで、差分データ406を特殊Move命令を用いた差分データに変換することができる。
S201において、図9に示す変換前差分データ193からMove命令のオフセット情報を抽出することで、オフセット「+100」のMove命令が4つあることが分かる。
この4つのMove命令は図1のA’、C’、E’、G’に相当する。
S202において、これらMove命令の先頭にあたる「Move +100 100」命令の直前に特殊Move命令「Move’ +100 440」を挿入する。
S203において、各Move命令をSkip命令に置き換えることで、変換後差分データ194が生成される。
生成される変換後差分データ194は図10に示す差分データである。
但し、前記に該当する一部のMove命令のみを特殊Move命令でまとめても構わない。
さらに、前記に該当するMove命令の様々な組合せに対して特殊Move命令を適用し、その際にもっとも差分データサイズが小さい組合せを判定し特殊Move命令を挿入しても構わない。
実施の形態2において、上記実施の形態1と異なる部分を説明し、その他の部分は上記実施の形態1と同様であるものとする。
図18は、実施の形態2における差分データ生成装置100の内部構成図である。
図18において、データ記憶部190は、旧データ192の各部分のデータである部分データの位置を示す旧データ配置情報データ197と、新データ191の各部分のデータである部分データの位置を示す新データ配置情報データ196とを記憶する。
また、差分データ生成部110は、部分データ対応付け部150と差分抽出部160とを備える。
旧データ192は4つの部分データA、B、C、Dから構成される。また、この情報は旧データ配置情報データ197に記載されている。
旧データ配置情報データ197の「A 0 500」という行は、部分データAがアドレス0からサイズ500の範囲にあることを示している。
同様に新データ191にも部分データA、B、C、Dが存在する。
なお図19の例では、新データ配置情報データ196が旧データ配置情報データ197に対して部分データAのサイズが200増えていること、部分データBの開始アドレスが200増加していること、部分データCの開始アドレスが200増えてサイズが100増加していること、部分データDの開始アドレスが300増えてサイズが300減少していることが分かる。
また、配置情報は必ずしもデータとは別情報として提供されなければならないわけではなく、データ内に配置情報も含むようなデータであれば、配置情報としてデータそのものを使用することも可能である。データ内に配置情報を含むデータには、例えばDLL(Dynamic Link Library)がある。
また、旧データ192、新データ191それぞれが唯一つの部分データから構成される、とみなすことも可能である。この場合、配置情報データは必要ない。
部分データ対応付け部150は、旧データ配置情報データ197と新データ配置情報データ196とに基づいて、旧データ192と新データ191の部分データの対応付けを行い、図20に示すような部分データ対応付け情報データ198を生成する。
図20において、部分データ対応付け情報データ198は、旧データ192と新データ191との部分データA同士、部分データB同士、部分データC同士、部分データD同士のオフセットとサイズとを対応付けている。また、同一サイズである部分データBについて同一サイズフラグを設定している。
第一の方法では、対応付けられた部分データ同士のサイズが同じ場合は、その領域全体を特殊Move命令で表現した後、旧部分データの先頭と新部分データの先頭とから順番に比較して行き、一致する部分にはSkip命令を、一致しない部分にはAdd命令もしくは旧データ192の違う部分のデータを指定したMove命令を割り当てる。
対応付けられた旧データ192の部分データ(p1からp6の間に位置するデータ)と新データ191の部分データ(q1からq6の間に位置するデータ)のサイズが同じであったとする。
この場合、最初にp1からp6及びq1からq6のサイズと、p1とq1のオフセットをそれぞれ特殊Moveサイズと特殊Moveオフセットとする特殊Move命令を生成する。
そして、旧データ192のp1、新データ191のq1にそれぞれ着目する。
次に、p1、q1からそれぞれ1単位(例えば1byte)ずつ旧データ192と新データ191を比較して行く。
p2とq2に到達し、旧データ192と新データ191とで異なる位置が見つかると、まず新データ191のq1からq2の間をSkip命令で表現する。
次に、p2、q2から1単位ずつ旧データ192と新データ191を比較して行き、p3とq3で再び新旧データ192の一致を発見する。
この時点でp2からp3の範囲に対する差分データを生成する。
ここで、p2からp3の範囲に対する差分データの生成方法として、新データ191のp2からp3の部分はAdd命令で表現するか、旧データ192から一致する部分を発見してMove命令で表現するか、もしくはAdd命令とMove命令の組合せで表現する、などの方法を用いることが出来る。
そして再びp3、q3から同様の処理を継続して行き、最終的にp6とq6に到達した時点でSkip命令を出力して処理を終了する。
上記第一の差分データ生成方法の処理の流れについて図22に基づいて説明する。
差分抽出部160は、データ記憶部190に記憶された部分データ対応付け情報データ198の同一サイズフラグを参照し、旧データ192と新データ191とで対応する同一サイズの部分データを検索し、検索した部分データに対して以下の処理を行い、特殊Move命令とSkip命令とを生成する。
次に、未処理の部分データに対し、旧データ192の部分データと新データ191の部分データとから1バイトずつ取得する(S203)。
次に、取得した旧データ192の1バイトと新データ191の1バイトとを比較する(S204)。
取得した旧データ192の1バイトと新データ191の1バイトとを比較した結果、同一値である場合、旧データ192の部分データと新データ191の部分データとからの1バイトずつの取得(S203)と比較(S204)とを、未処理データが無いと判定する(S202)か、取得した1バイトが異なる(S204)まで繰り返す。
取得した旧データ192の1バイトと新データ191の1バイトとを比較した結果、異なる値である場合、取得した旧データ192の部分データと新データ191の部分データの同一であった部分について、同一部分のサイズをSkipサイズとするSkip命令を生成する(S205)。
未処理の部分データが有ると判定した場合、未処理の部分データに対し、旧データ192の部分データと新データ191の部分データとから1バイトずつ取得する(S207)。
次に、取得した旧データ192の1バイトと新データ191の1バイトとを比較する(S208)。
取得した旧データ192の1バイトと新データ191の1バイトとを比較した結果、異なる値である場合、旧データ192の部分データと新データ191の部分データとからの1バイトずつの取得(S207)と比較(S208)とを、未処理データが無いと判定する(S206)か、取得した1バイトが同一値を示す(S208)まで繰り返す。
取得した旧データ192の1バイトと新データ191の1バイトとを比較した結果、同一値である場合、取得した旧データ192の部分データと新データ191の部分データとで異なった部分について、Add命令、Move命令を生成する。例えば、異なる部分のサイズと異なる部分の新データ191とをAddサイズおよびAddデータとするAdd命令を生成し、S202から処理を繰り返す(S209)。
これにより、無駄な領域のコピーを防ぐことができる。
そのためには、上記実施の形態1で説明した差分データ第1生成部120と差分データ出力部140とを実施の形態2における差分データ生成装置100が備えればよい。
これにより、差分データ生成装置100は、より小さいサイズの差分データを出力できる。
実施の形態3では、部分データ対応付け情報データ198を使用した差分データの第2の生成方法について説明する。
実施の形態3において、上記実施の形態と異なる部分を説明し、その他の部分は上記実施の形態と同様であるものとする。
図23は、実施の形態3における差分データ生成装置100の内部構成図である。
差分データ生成装置100の内部構成について、上記実施の形態1の図15および上記実施の形態2の図18と異なる構成を図23に基づいて説明し、その他の構成は図15および図18と同様であるものとする。
また、差分データ第1生成部120は部分データ対応付け情報データ198と新データ191と旧データ192とを入力として、特殊Move命令とSkip命令とを使用しない差分データである変換前差分データ193を出力する。
差分データ第2生成部130は、部分データ対応付け情報データ198と変換前差分データ193とを入力として、特殊Move命令とSkip命令とを使用した変換後差分データ194を出力する。
LCSの抽出については、従来の技術として例えば「E.W.Myers, “An O(ND) difference algorithm and its variations”, Algorithmixa, 1 (1986), pp251−266」などの効率的なアルゴリズムが知られており、これら従来の技術を用いることができる。
LCSには、旧データ192から新データ191へのコピーに際して、旧データ192での順番と新データ191での順番が入れ替わるようなコピーは検出しない、という特徴がある。
図6の例で説明すると、JからE’へのコピーとGからG’へのコピーは同時に検出されず、EからE’、GからG’へのコピーは同時に検出可能である。
この特徴から、図1や図6に示すような旧データ192から新データ191への更新において位置ずれが発生し、かつ途中にデータの変更が発生しているようなケースにおいて、特殊Move命令で表現できるパターン、つまり同一オフセットのMove命令が連続するパターンを検出できる確率が、図6のJからE’、GからG’を同時に抽出できる通常の差分データ抽出方法と比べて高いといえる。このため、LCSの抽出により、差分データを小さく表現することが出来る可能性がある場合に的確に差分データを小さく表現し、特殊Move命令とSkip命令を使用してより効果的な差分データを生成することができる。
図24の例では、AとA’、BとB’・・・GとG’が共通部分と判定され、それぞれがMove命令で表現され、残りの部分はAdd命令で表現される。
処理の一例として、上記実施の形態1で説明したように、同一オフセットのMove命令のうち先頭から末尾までを一つの特殊Move命令で表現する処理が考えられる。
また、差分データを先頭から探索して行き、最初に見つかったMove命令のオフセットを記憶し、同一オフセットではないMove命令が見つかるまで、もしくは比較範囲である部分データの末尾に到達するまでの範囲を特殊Move命令で表現する動作も考えられる。
この際、Add命令については読み飛ばすものとする。
新データ191のA’に対するMove命令を最初に読み込み、そのオフセット情報を記憶しておく。
A’に対するMove命令の次はAdd命令であり、これは無視する。
次にB’に対するMove命令が見つかり、オフセット情報は前出のA’に対するMove命令のオフセット情報と同一なので、B’に対するMove命令も特殊Move命令の範囲候補とする。
同様にしてC’、D’に対するMove命令も同一オフセットであるので、特殊Move命令の範囲候補とする。
Add命令をはさんでE’に対するMove命令を発見するが、このオフセット情報はA’に対するオフセット情報とは異なる。
そのため、A’から直前のMove命令の対象、つまりD’までを特殊Move命令の対象範囲として出力する。
また、異なるオフセット情報が発見されたので、E’に対するMove命令以降は、E’に対するMove命令のオフセット情報を比較するオフセット情報として処理を進める。
結果、E’、F’、G’に対するMove命令のオフセット情報が同一であり、またG’が部分データの末尾なので、E’からG’への範囲を特殊Move命令の対象範囲とする。
図24の例では、A’からD’の範囲、およびE’からG’の範囲を表す差分データの先頭に特殊Move命令を挿入し、Move命令はSkip命令に置き換える。
また、Add命令はそのままAdd命令として表現するか、Add命令に相当する新データ191の範囲について旧データ192から一致部分を探してMove命令に置き換える。
また、D’とE’にはさまれた範囲についてはそのままAdd命令を出力するか、もしくは旧データ192全体から一致部分を探してMove命令で表現し変換後差分データ194を生成する。
これにより、より小さい差分データを選択することができる。
また、図26は実施の形態3における差分データ第2生成部130の処理の流れを示すフローチャートである。
上記に説明した差分データ第1生成部120と差分データ第2生成部130との処理の流れを図25および図26に基づいて説明する。
部分データ対応付け情報データ198を参照し、旧データ192と新データ191とから対応する部分データを取得する(S302)。
LCS抽出部121を起動し、取得した部分データからLCSを抽出する(S303)。
抽出したLCSに対して、LCSの長さと、LCSの旧データ192における新データ191に対する相対位置を示す値とを、MoveサイズおよびMoveオフセットにしたMove命令を生成する(S304)。
抽出したLCSのサイズを判定する(S305)。
抽出したLCSのサイズが一定値以上であれば、同一の部分データに対して、抽出したLCSの次に長い共通部分列を抽出し(S303)、抽出した共通部分列に対するMove命令の生成(S304)を行う。LCSのサイズを判定する一定値は任意であり、例えば、Move命令で表した方がAdd命令で表すより命令コードのサイズが小さくなる値である。図8に示す命令コードフォーマットの場合、LCSのサイズが4byte以上かの判定を行う。
抽出したLCSのサイズが一定値未満であれば、LCSとして抽出されなかった部分に対してAdd命令を生成する(S306)。
Add命令を生成(S306)後、部分データ対応付け情報データ198を参照し、旧データ192と新データ191とから新たに部分データを取得し(S302)、LCSの抽出(S303)、Move命令の生成(S304)、Add命令の生成(S306)を行う。
部分データ対応付け情報データ198を参照した結果、新たに部分データが無い場合、処理を終える(S301)。
変換後差分データ194から命令コードを取得する(S402)。
取得した命令コードを判定する(S403)。
取得した命令コードがAdd命令の場合、次の命令コードを取得し(S402)、取得した命令コードを判定する(S403)。
取得した命令コードがMove命令の場合、Moveオフセットを判定する(S404)。
取得したMove命令のMoveオフセットが、取得した一つ前のMove命令のMoveオフセットと同一である場合、取得したMove命令をSkip命令に置換する(S405)。
Move命令をSkip命令に置換(S405)後、次の命令コードを取得し(S402)、取得した命令コードを判定し(S403)、処理を繰り返す。
取得したMove命令のMoveオフセットが、取得した直前のMove命令のMoveオフセットと同一でない場合、特殊Move命令を挿入する(S406)。
また、一つ前の特殊Move命令のMoveオフセットに、Skip命令に置き換えたMove命令のMoveオフセットを設定する。
また、一つ前の特殊Move命令のMoveサイズに、Move命令から置き換えたSkip命令のSkipサイズと、Skip命令に挟まれたAdd命令のAddサイズとの合計サイズを設定する。
特殊Move命令を挿入(S406)後、次の命令コードを取得し(S402)、取得した命令コードを判定し(S403)、処理を繰り返す。
全ての命令コードを処理し、取得する命令コードが無いと判定した場合、処理を終了する(S401)。
また、差分データを小さく表現することが出来る可能性がある場合に的確に差分データを小さく表現することができる。
実施の形態4では、部分データ対応付け情報データ198を使用した差分データの第3の生成方法について説明する。
実施の形態4において、上記実施の形態と異なる部分を説明し、その他の部分は上記実施の形態と同様であるものとする。
図27は、実施の形態4における差分データ生成装置100の内部構成図である。
差分データ生成装置100の内部構成について、上記実施の形態1の図15、上記実施の形態2の図18および上記実施の形態3の図23と異なる構成を図27に基づいて説明し、その他の構成は図15、図18および図23と同様であるものとする。
差分LCS抽出部170は、LCS抽出部171を備える。
また、差分LCS抽出部170は、部分データ対応付け情報データ198と新データ191と旧データ192とを入力とし、差分データ195を生成する。
また、LCS抽出部171は、上記実施の形態3のLCS抽出部121と同様にLCSの抽出を行なう。
実施の形態4において部分データ対応付け部150は、図28に示すような部分データ対応付け情報データ198を生成する。
部分データ対応付け情報データ198は、部分結合データフラグ項目を持ち、図19において、旧データ192の部分データA、B、C、Dを結合したデータと、新データ191の部分データA、B、C、Dを結合したデータとが同一サイズであることを示している。
実施の形態4における差分LCS抽出部170の差分データ生成処理について図29に基づいて説明する。
部分データが部分結合データに含まれる場合、結合部分データに含まれる部分データのオフセットと合計サイズとを、特殊Moveオフセットおよび特殊Moveサイズとする特殊Move命令を生成する(S504)。
結合部分データに含まれる各部分データに対して、LCSを抽出し、Skip命令とAdd命令との生成を行う(S505〜S510)。
S505〜S510の処理は、上記実施の形態3の図25に示す差分データ第1生成部120の処理S301〜S306と同様であり、差分LCS抽出部170は、抽出したLCSに対してMove命令ではなくSkip命令を生成する(S506)。
結合部分データに含まれる全ての部分データに対して処理し、取得する部分データが無いと判定した場合(S505)、次の結合部分データを取得し、特殊Move命令を生成し、処理を繰り返す。
部分データが部分結合データに含まれない場合、上記実施の形態2の図22や、上記実施の形態3の図25および図26に示す処理を行い、部分結合データに含まれない部分データに対する差分データを生成する(S503)。
部分データ対応付け情報データ198に示される全ての部分データを処理した場合、処理を終了する(S501)。
新旧2つのデータに対して、旧データ192から新データ191へバージョンアップするための差分データを抽出する差分データ生成装置において、前記差分データとして、前記旧データ192の一部、あるいは全部からデータを移動して前記新データ191にコピーすることを意味する0個以上のMove命令と、新データ191に当該差分データ中に記述したデータを追加することを意味する0個以上のAdd命令と、前記旧データ192の一部、あるいは全部からデータを移動して前記新データ191にコピーした後に、前記新データ191に対する書換えポインタを前記コピーデータの先頭に移動させることを意味する0個以上の特殊Move命令と、前記新データ191に対する書換えポインタを前方に指定長分進めることを意味する0個以上のSkip命令とで構成される差分データを生成する差分データ生成装置100について説明した。
Claims (14)
- 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置であり、
前記旧データと前記新データとを記憶するデータ記憶部と、
前記新データ内での位置を示す新データポインタが示す位置に前記旧データに含まれるデータをコピーデータとしてコピーさせると共にコピーさせたデータのサイズであるコピーサイズ分移動した位置を示すように前記新データポインタを更新させる第1Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す第1Move命令コードと、
前記新データに追加データを追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードと、
前記新データポインタが示す位置に旧データに含まれるデータをコピーデータとしてコピーさせて前記新データポインタは更新させない第2Move命令コードであり、前記オフセットとコピーデータのサイズであるコピーサイズとを示す第2Move命令コードと、
前記新データポインタが示す位置を移動させるサイズである移動サイズを示し、前記移動サイズ分移動した位置を示すように前記新データポインタを更新させるSkip命令コードと
の少なくともいずれかの命令コードを用いて前記差分データを生成する差分データ生成部とを備え、
前記差分データ生成部は、
前記新データのうち前記旧データと同一である部分を前記コピーデータとする前記第1Move命令コードと、前記新データのうち前記旧データと同一でない部分を前記追加データとする前記Add命令コードとで差分第1データを生成し、
生成した前記差分第1データにおいて前記オフセットが同一である前記第1Move命令コードが複数ある場合に、前記オフセットが同一である先頭の前記第1Move命令コードの前記コピーデータの先頭から前記オフセットが同一である最後の前記第1Move命令コードの前記コピーデータの最後までを前記コピーデータとする前記第2Move命令コードを、前記オフセットが同一である先頭の前記第1Move命令コードの直前に挿入すると共に、前記オフセットが同一である複数の前記第1Move命令コードそれぞれを、当該第1Move命令コードの前記コピーサイズを前記移動サイズとする前記Skip命令コードに置き換えて、前記差分第1データから前記差分データを生成する
ことを特徴とする差分データ生成装置。 - 前記差分データ生成装置は、さらに、
前記差分データ生成部が生成した前記差分第1データのデータサイズと前記差分データ生成部が生成した前記差分データのデータサイズとを比較し、データサイズの小さい方を前記旧データを前記新データに更新させる差分データとして選択する差分データ選択部
を備えることを特徴とする請求項1記載の差分データ生成装置。 - 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置であり、
前記旧データと、前記新データと、前記旧データを構成する各部分データについて当該部分データの前記旧データ内での配列位置と当該部分データのサイズとを示す旧データ配置情報と、前記新データを構成する各部分データについて当該部分データの前記新データ内での配列位置と当該部分データのサイズとを示す新データ配置情報とを記憶するデータ記憶部と、
前記新データ内での位置を示す新データポインタが示す位置に前記旧データに含まれるデータをコピーデータとしてコピーさせて前記新データポインタを更新させない特殊Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットとコピーサイズとを示す特殊Move命令コードと、
前記新データに追加データを追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードと、
前記新データポインタが示す位置を移動させるサイズである移動サイズを示し、前記移動サイズ分移動した位置を示すように前記新データポインタを更新させるSkip命令コードと
の少なくともいずれかの命令コードを用いて前記差分データを生成する差分データ生成部とを備え、
前記差分データ生成部は、
前記データ記憶部に記憶された前記旧データ配置情報と前記新データ配置情報とに基づいて、配列順序とデータサイズとが同じである前記旧データの部分データと前記新データの部分データとについて、前記旧データの当該部分データを前記コピーデータとする前記特殊Move命令コードと、
前記新データの当該部分データのうち前記旧データの当該部分データと同一である部分のサイズを前記移動サイズとする前記Skip命令コードと、
前記新データの当該部分データのうち前記旧データの当該部分データと同一でない部分を前記追加データとする前記Add命令コードと
で前記差分データを生成する
ことを特徴とする差分データ生成装置。 - 前記差分データ生成部は、
前記新データのうち前記旧データと同一である部分をコピーデータとして前記新データポインタが示す位置にコピーさせると共にコピーさせたデータのサイズであるコピーサイズ分移動した位置を示すように前記新データポインタを更新させる第1Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す第1Move命令コードと、前記新データのうち前記旧データと同一でない部分を前記追加データとする前記Add命令コードとで差分第1データを生成し、
前記差分データ生成装置は、さらに、
前記差分データ生成部が生成した前記差分第1データのデータサイズと前記差分データ生成部が生成した前記差分データのデータサイズとを比較し、データサイズの小さい方を前記旧データを前記新データに更新させる差分データとして選択する差分データ選択部
を備えることを特徴とする請求項3記載の差分データ生成装置。 - 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置であり、
前記旧データと、前記新データと、前記旧データを構成する各部分データについて当該部分データの前記旧データ内での配列位置と当該部分データのサイズとを示す旧データ配置情報と、前記新データを構成する各部分データについて当該部分データの前記新データ内での配列位置と当該部分データのサイズとを示す新データ配置情報とを記憶するデータ記憶部と、
前記新データ内での位置を示す新データポインタが示す位置に前記旧データに含まれるデータをコピーデータとしてコピーさせると共にコピーさせたデータのサイズであるコピーサイズ分移動した位置を示すように前記新データポインタを更新させる第1Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す第1Move命令コードと、
前記新データに追加データを追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードと、
前記新データポインタが示す位置に旧データに含まれるデータをコピーデータとしてコピーさせて前記新データポインタは更新させない第2Move命令コードであり、前記オフセットとコピーデータのサイズであるコピーサイズとを示す第2Move命令コードと、
前記新データポインタが示す位置を移動させるサイズである移動サイズを示し、前記移動サイズ分移動した位置を示すように前記新データポインタを更新させるSkip命令コードと
の少なくともいずれかの命令コードを用いて前記差分データを生成する差分データ生成部とを備え、
前記差分データ生成部は、
前記データ記憶部に記憶された前記旧データ配置情報と前記新データ配置情報とに基づいて、配列順序が同じである前記旧データの部分データと前記新データの部分データとについて、前記旧データの当該部分データと前記新データの当該部分データとの最大共通部分列を特定し、最大共通部分列を前記コピーデータとする前記第1Move命令コードと、最大共通部分列以外の部分を前記追加データとする前記Add命令コードとで差分第1データを生成し、
生成した前記差分第1データにおいて前記オフセットが同一である前記第1Move命令コードが複数ある場合に、前記オフセットが同一である先頭の前記第1Move命令コードの前記コピーデータの先頭から前記オフセットが同一である最後の前記第1Move命令コードの前記コピーデータの最後までを前記コピーデータとする前記第2Move命令コードを、前記オフセットが同一である先頭の前記第1Move命令コードの直前に挿入すると共に、前記オフセットが同一である複数の前記第1Move命令コードそれぞれを、当該第1Move命令コードの前記コピーサイズを前記移動サイズとする前記Skip命令コードに置き換えて、前記差分第1データから前記差分データを生成する
ことを特徴とする差分データ生成装置。 - 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置であり、
前記旧データと、前記新データと、前記旧データを構成する各部分データについて当該部分データの前記旧データ内での配列位置と当該部分データのサイズとを示す旧データ配置情報と、前記新データを構成する各部分データについて当該部分データの前記新データ内での配列位置と当該部分データのサイズとを示す新データ配置情報とを記憶するデータ記憶部と、
前記新データ内での位置を示す新データポインタが示す位置に前記旧データに含まれるデータをコピーデータとしてコピーさせると共にコピーさせたデータのサイズであるコピーサイズ分移動した位置を示すように前記新データポインタを更新させる第1Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す第1Move命令コードと、
前記新データに追加データを追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードと、
前記新データポインタが示す位置に旧データに含まれるデータをコピーデータとしてコピーさせて前記新データポインタは更新させない第2Move命令コードであり、前記オフセットとコピーデータのサイズであるコピーサイズとを示す第2Move命令コードと、
前記新データポインタが示す位置を移動させるサイズである移動サイズを示し、前記移動サイズ分移動した位置を示すように前記新データポインタを更新させるSkip命令コードと
の少なくともいずれかの命令コードを用いて前記差分データを生成する差分データ生成部とを備え、
前記差分データ生成部は、
前記データ記憶部に記憶された前記旧データ配置情報と前記新データ配置情報とに基づいて、配列順序が同じである前記旧データの部分データと前記新データの部分データとについて、前記旧データの当該部分データと前記新データの当該部分データとの最大共通部分列を特定し、最大共通部分列を前記コピーデータとする前記第1Move命令コードと、最大共通部分列以外の部分を前記追加データとする前記Add命令コードとで差分第1データを生成し、
生成した差分第1データにおいて前記オフセットを同一とする第1Move命令コードの連続する第1Move命令コード群が複数ある場合に、複数の第1Move命令コード群それぞれについて、当該第1Move命令コード群の先頭の第1Move命令コードのコピーデータの先頭から当該第1Move命令コード群の最後の第1Move命令コードのコピーデータの最後までを前記第2コピーデータとする第2Move命令コードを、当該第1Move命令コード群の先頭の第1Move命令コードの直前に挿入すると共に、複数の第1Move命令コード群の各第1Move命令コードそれぞれを、当該第1Move命令コードのコピーサイズを前記ポインタ更新サイズとするSkip命令コードに置き換えることにより、前記差分第1データから前記差分データを生成する
ことを特徴とする差分データ生成装置。 - 前記差分データ生成装置は、さらに、
前記差分データ生成部が生成した前記差分第1データのデータサイズと前記差分データ生成部が生成した前記差分データのデータサイズとを比較し、データサイズの小さい方を前記旧データを前記新データに更新させる差分データとして選択する差分データ選択部
を備えることを特徴とする請求項5または請求項6記載の差分データ生成装置。 - 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置であり、
前記旧データと、前記新データと、前記旧データを構成する各部分データについて当該部分データの前記旧データ内での配列位置と当該部分データのサイズとを示す旧データ配置情報と、前記新データを構成する各部分データについて当該部分データの前記新データ内での配列位置と当該部分データのサイズとを示す新データ配置情報とを記憶するデータ記憶部と、
前記新データ内での位置を示す新データポインタが示す位置に前記旧データに含まれるデータをコピーデータとしてコピーさせて前記新データポインタを更新させない特殊Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットとコピーサイズとを示す特殊Move命令コードと、
前記新データに追加データを追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードと、
前記新データポインタが示す位置を移動させるサイズである移動サイズを示し、前記移動サイズ分移動した位置を示すように前記新データポインタを更新させるSkip命令コードと
の少なくともいずれかの命令コードを用いて前記差分データを生成する差分データ生成部とを備え、
前記差分データ生成部は、
前記データ記憶部に記憶された前記旧データ配置情報と前記新データ配置情報とに基づいて、合計サイズと部分データの数とが同じである前記旧データの連続して配置される複数の部分データと前記新データの連続して配置される複数の部分データとについて、前記旧データの当該複数の部分データを前記コピーデータとする前記特殊Move命令コードを生成し、
前記旧データの当該複数の部分データと前記新データの当該複数の部分データとで配列順序が同じである前記旧データの部分データと前記新データの部分データとについて、前記旧データの当該部分データと前記新データの当該部分データとの最大共通部分列を特定し、
最大共通部分列のサイズを前記移動サイズとする前記Skip命令コードを生成し、
最大共通部分列以外の部分を前記追加データとする前記Add命令コードを生成して、
前記差分データを生成する
ことを特徴とする差分データ生成装置。 - 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置の差分データ生成方法であり、
差分データ生成部が、
前記新データのうち前記旧データと同一である部分をコピーデータとして前記新データ内での位置を示す新データポインタが示す位置にコピーさせると共にコピーさせたデータのサイズであるコピーサイズ分移動した位置を示すように前記新データポインタを更新させる第1Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す第1Move命令コードと、
前記新データのうち前記旧データと同一でない部分を追加データとして前記新データに追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードとで差分第1データを生成し、
差分データ生成部が、
前記差分第1データに前記オフセットが同一である前記第1Move命令コードが複数あるか判定し、前記差分第1データに前記オフセットが同一である前記第1Move命令コードが複数ある場合に、前記オフセットが同一である先頭の前記第1Move命令コードの前記コピーデータの先頭から前記オフセットが同一である最後の前記第1Move命令コードの前記コピーデータの最後までをコピーデータとして前記新データポインタが示す位置にコピーさせて前記新データポインタは更新させない第2Move命令コードであり、前記オフセットとコピーデータのサイズであるコピーサイズとを示す第2Move命令コードを、前記オフセットが同一である先頭の前記第1Move命令コードの直前に挿入すると共に、前記オフセットが同一である複数の前記第1Move命令コードそれぞれを、当該第1Move命令コードの前記コピーサイズを前記新データポインタが示す位置を移動させるサイズである移動サイズとして示して前記新データポインタを更新させるSkip命令コードに置き換えて、前記差分第1データから前記差分データを生成する
ことを特徴とする差分データ生成装置の差分データ生成方法。 - 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置の差分データ生成方法であり、
差分データ生成部が、
前記旧データを構成する各部分データについて当該部分データの前記旧データ内での配列位置と当該部分データのサイズとを示す旧データ配置情報と、前記新データを構成する各部分データについて当該部分データの前記新データ内での配列位置と当該部分データのサイズとを示す新データ配置情報とに基づいて、配列順序とデータサイズとが同じである前記旧データの部分データと前記新データの部分データとを特定し、
差分データ生成部が、
前記旧データの当該部分データをコピーデータとして前記新データ内での位置を示す新データポインタが示す位置にコピーさせて前記新データポインタを更新させない特殊Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す特殊Move命令コードと、
前記新データの当該部分データのうち前記旧データの当該部分データと同一である部分のサイズを前記新データポインタが示す位置を移動させるサイズである移動サイズとして示して前記新データポインタを更新させるSkip命令コードと、
前記新データの当該部分データのうち前記旧データの当該部分データと同一でない部分を追加データとして前記新データに追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードと
で前記差分データを生成する
ことを特徴とする差分データ生成装置の差分データ生成方法。 - 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置の差分データ生成方法であり、
差分データ生成部が、
前記旧データを構成する各部分データについて当該部分データの前記旧データ内での配列位置と当該部分データのサイズとを示す旧データ配置情報と、前記新データを構成する各部分データについて当該部分データの前記新データ内での配列位置と当該部分データのサイズとを示す新データ配置情報とに基づいて、配列順序が同じである前記旧データの部分データと前記新データの部分データとを特定すると共に前記旧データの当該部分データと前記新データの当該部分データとの最大共通部分列を特定し、
差分データ生成部が、
最大共通部分列をコピーデータとして前記新データ内での位置を示す新データポインタが示す位置にコピーさせると共にコピーさせたデータのサイズであるコピーサイズ分移動した位置を示すように前記新データポインタを更新させる第1Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す第1Move命令コードと、
最大共通部分列以外の部分を追加データとして前記新データに追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードと
で差分第1データを生成し、
差分データ生成部が、
前記差分第1データに前記オフセットが同一である前記第1Move命令コードが複数あるか判定し、前記差分第1データに前記オフセットが同一である前記第1Move命令コードが複数ある場合に、前記オフセットが同一である先頭の前記第1Move命令コードの前記コピーデータの先頭から前記オフセットが同一である最後の前記第1Move命令コードの前記コピーデータの最後までをコピーデータとして前記新データポインタが示す位置にコピーさせて前記新データポインタは更新させない第2Move命令コードであり、前記オフセットとコピーデータのサイズであるコピーサイズとを示す第2Move命令コードを、前記オフセットが同一である先頭の前記第1Move命令コードの直前に挿入すると共に、前記オフセットが同一である複数の前記第1Move命令コードそれぞれを、当該第1Move命令コードの前記コピーサイズを前記新データポインタが示す位置を移動させるサイズである移動サイズとして示して前記新データポインタを更新させるSkip命令コードに置き換えて、前記差分第1データから前記差分データを生成する
ことを特徴とする差分データ生成装置の差分データ生成方法。 - 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置であり、
差分データ生成部が、
前記旧データを構成する各部分データについて当該部分データの前記旧データ内での配列位置と当該部分データのサイズとを示す旧データ配置情報と、前記新データを構成する各部分データについて当該部分データの前記新データ内での配列位置と当該部分データのサイズとを示す新データ配置情報とに基づいて、配列順序が同じである前記旧データの部分データと前記新データの部分データとを特定すると共に前記旧データの当該部分データと前記新データの当該部分データとの最大共通部分列を特定し、
差分データ生成部が、
最大共通部分列をコピーデータとして前記新データ内での位置を示す新データポインタが示す位置にコピーさせると共にコピーさせたデータのサイズであるコピーサイズ分移動した位置を示すように前記新データポインタを更新させる第1Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す第1Move命令コードと、
最大共通部分列以外の部分を追加データとして前記新データに追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードとで
差分第1データを生成し、
差分データ生成部が、
前記差分第1データに前記オフセットを同一とする第1Move命令コードの連続する第1Move命令コード群が複数あるか判定し、前記差分第1データに前記オフセットを同一とする第1Move命令コードの連続する第1Move命令コード群が複数ある場合に、複数の第1Move命令コード群それぞれについて、当該第1Move命令コード群の先頭の第1Move命令コードのコピーデータの先頭から当該第1Move命令コード群の最後の第1Move命令コードのコピーデータの最後までをコピーデータとして前記新データポインタが示す位置にコピーさせて前記新データポインタは更新させない第2Move命令コードであり、前記オフセットとコピーデータのサイズであるコピーサイズとを示す第2Move命令コードを、当該第1Move命令コード群の先頭の第1Move命令コードの直前に挿入すると共に、複数の第1Move命令コード群の各第1Move命令コードそれぞれを、当該第1Move命令コードのコピーサイズを前記新データポインタが示す位置を移動させるサイズである移動サイズとして示して前記新データポインタを更新させるSkip命令コードに置き換えることにより、前記差分第1データから前記差分データを生成する
ことを特徴とする差分データ生成装置の差分データ生成方法。 - 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置であり、
差分データ生成部が、
前記旧データを構成する各部分データについて当該部分データの前記旧データ内での配列位置と当該部分データのサイズとを示す旧データ配置情報と、前記新データを構成する各部分データについて当該部分データの前記新データ内での配列位置と当該部分データのサイズとを示す新データ配置情報とに基づいて、合計サイズと部分データの数とが同じである前記旧データの連続して配置される複数の部分データと前記新データの連続して配置される複数の部分データとを特定し、
差分データ生成部が、
前記旧データの当該複数の部分データをコピーデータとして前記新データ内での位置を示す新データポインタが示す位置にコピーさせて前記新データポインタを更新させない特殊Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す特殊Move命令コードを生成し、
差分データ生成部が、
前記旧データの当該複数の部分データと前記新データの当該複数の部分データとで配列順序が同じである前記旧データの部分データと前記新データの部分データとについて、前記旧データの当該部分データと前記新データの当該部分データとの最大共通部分列を特定し、
差分データ生成部が、
最大共通部分列のサイズを前記新データポインタが示す位置を移動させるサイズである移動サイズとして示して前記移動サイズ分移動した位置を示すように前記新データポインタを更新させるSkip命令コードを生成し、
差分データ生成部が、
最大共通部分列以外の部分を追加データとして前記新データに追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードを生成して、
前記差分データが生成される
ことを特徴とする差分データ生成装置の差分データ生成方法。 - 請求項9〜請求項13いずれかに記載の差分データ生成装置の差分データ生成方法をコンピュータに実行させる差分データ生成プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007249287A JP4249793B2 (ja) | 2007-09-26 | 2007-09-26 | 差分データ生成装置、差分データ生成装置の差分データ生成方法および差分データ生成プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007249287A JP4249793B2 (ja) | 2007-09-26 | 2007-09-26 | 差分データ生成装置、差分データ生成装置の差分データ生成方法および差分データ生成プログラム |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004264948A Division JP4036852B2 (ja) | 2004-09-13 | 2004-09-13 | 差分データ生成装置、差分データ生成方法および差分データ生成プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008041112A JP2008041112A (ja) | 2008-02-21 |
JP4249793B2 true JP4249793B2 (ja) | 2009-04-08 |
Family
ID=39175971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007249287A Expired - Fee Related JP4249793B2 (ja) | 2007-09-26 | 2007-09-26 | 差分データ生成装置、差分データ生成装置の差分データ生成方法および差分データ生成プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4249793B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5729901B2 (ja) * | 2009-11-24 | 2015-06-03 | 三菱電機株式会社 | 差分管理装置及びコンピュータプログラム及び差分管理方法 |
-
2007
- 2007-09-26 JP JP2007249287A patent/JP4249793B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2008041112A (ja) | 2008-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3021218B1 (en) | Upgrade packet generation method, server, software upgrade method, and mobile terminal | |
US8438558B1 (en) | System and method of updating programs and data | |
JP5019578B2 (ja) | 記憶装置に記憶されたコンテンツのバージョンを更新する方法およびシステム | |
US20060161605A1 (en) | Data management system, a data management apparatus, a data management method, a data supplying system, and a computer-readable recording medium with a program recorded therein | |
KR100717064B1 (ko) | 소프트웨어 업데이트 실행 방법 및 장치 | |
KR20120063455A (ko) | 펌웨어 업데이트 장치 및 방법 | |
US20180329725A1 (en) | Method and apparatus for loading application | |
JP2010277549A (ja) | プログラム、記憶媒体、情報処理装置、プリンタ装置およびシステム | |
US9577666B2 (en) | Method and system | |
JP6648431B2 (ja) | 照合プログラム、照合方法および照合装置 | |
US8196093B2 (en) | Apparatus and method for componentizing legacy system | |
JP4036852B2 (ja) | 差分データ生成装置、差分データ生成方法および差分データ生成プログラム | |
JP4249793B2 (ja) | 差分データ生成装置、差分データ生成装置の差分データ生成方法および差分データ生成プログラム | |
JPWO2010044150A1 (ja) | プログラム変更管理装置、プログラム変更管理プログラムおよびプログラム変更管理方法 | |
US10310871B2 (en) | Non-transitory computer-readable recording medium storing control program, control device and control method | |
CN116755777A (zh) | 用于执行目标核函数的方法、计算设备、存储介质和系统 | |
JP2008226010A (ja) | コンパイル方法及びコンパイル装置 | |
US11789708B2 (en) | Compression of firmware updates | |
JP7003427B2 (ja) | 検索プログラム、情報処理装置および検索方法 | |
JP4791205B2 (ja) | 差分生成装置及び差分適用装置及び差分生成プログラム及び差分適用プログラム | |
JP2004227520A (ja) | 新旧プログラム書換情報生成装置及び新旧プログラム書換情報生成方法及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP4865449B2 (ja) | 差分生成装置及び差分適用装置及び差分生成プログラム及び差分適用プログラム及び差分生成適用システム及び差分生成適用方法 | |
JP3733135B1 (ja) | ソフトウエア差分抽出適用システム及び差分抽出装置及び差分適用装置及びプログラム | |
WO2017145357A1 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
KR100750169B1 (ko) | 델타 파일 생성 방법 및 이를 이용한 소프트웨어 업데이트방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081111 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081210 |
|
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: 20090113 |
|
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: 20090115 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120123 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: 20130123 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130123 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |