JP5729901B2 - 差分管理装置及びコンピュータプログラム及び差分管理方法 - Google Patents
差分管理装置及びコンピュータプログラム及び差分管理方法 Download PDFInfo
- Publication number
- JP5729901B2 JP5729901B2 JP2009266352A JP2009266352A JP5729901B2 JP 5729901 B2 JP5729901 B2 JP 5729901B2 JP 2009266352 A JP2009266352 A JP 2009266352A JP 2009266352 A JP2009266352 A JP 2009266352A JP 5729901 B2 JP5729901 B2 JP 5729901B2
- Authority
- JP
- Japan
- Prior art keywords
- difference
- data
- version
- unit
- plate
- 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
- 238000007726 management method Methods 0.000 title claims description 52
- 238000004590 computer program Methods 0.000 title claims description 4
- 238000000034 method Methods 0.000 claims description 112
- 230000008569 process Effects 0.000 claims description 100
- 230000015572 biosynthetic process Effects 0.000 claims description 97
- 238000003786 synthesis reaction Methods 0.000 claims description 97
- 238000012545 processing Methods 0.000 claims description 87
- 238000013500 data storage Methods 0.000 claims description 61
- 239000002131 composite material Substances 0.000 claims description 16
- 230000002194 synthesizing effect Effects 0.000 claims description 9
- 239000000203 mixture Substances 0.000 description 56
- 238000010586 diagram Methods 0.000 description 37
- 238000004364 calculation method Methods 0.000 description 14
- 238000011161 development Methods 0.000 description 14
- 239000000284 extract Substances 0.000 description 11
- 230000015654 memory Effects 0.000 description 11
- 238000000605 extraction Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000004044 response Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000000153 supplemental effect Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
また、利用者によっては、最新版のデータに更新するのではなく、異なる版のデータに更新したいという要望を持つ場合もある。すべての要望に対処するためには、版の数の二乗に近い数の差分データが理論的には必要になる。
また、差分データを適用してデータの版を更新するのは、そのデータを保持している端末装置である。端末装置は、処理能力が低い場合や記憶容量が小さい場合があるので、データの更新による負荷は、なるべく小さいことが望まれる。
この発明は、例えば、上記のような課題を解決するためになされたものであり、差分データを効率的に管理するとともに、差分データ適用時の負荷を小さくすることを目的とする。
3以上の版を有する有版データについて、上記有版データの2つの版の間の差分を表わす差分データを管理する差分管理装置において、
データを記憶する記憶装置と、データを処理する処理装置と、差分記憶部と、差分合成部と、要求取得部とを有し、
上記差分記憶部は、上記記憶装置を用いて、上記有版データの第一の版と第二の版との間の差分を表わす第一の差分データと、上記有版データの第二の版と第三の版との間の差分を表わす第二の差分データとを記憶し、
上記要求取得部は、端末装置が有する上記有版データの版に関する情報を含み、上記差分データを要求するための差分要求メッセージを取得し、
上記差分合成部は、上記差分要求メッセージを上記要求取得部が取得する前に、上記処理装置を用いて、上記差分記憶部が記憶した第一の差分データと第二の差分データとを合成して、上記有版データの第一の版と第三の版との間の差分を表わす第三の差分データを生成し、
上記処理装置は、上記差分要求メッセージに上記端末装置の目的とする上記有版データの版に関する情報が含まれている場合には上記端末装置の目的とする上記有版データの版に更新するための上記差分データを配布するよう判断し、上記差分要求メッセージに上記端末装置の目的とする上記有版データの版に関する情報が含まれていない場合には最新版に更新するための上記差分データを配布するよう判断し、
上記処理装置は、上記差分要求メッセージに基づき上記端末装置に対して上記第一の差分データと上記第二の差分データの両方を与えることが必要な場合に、上記第一の差分データ及び上記第二の差分データの代わりに上記第三の差分データを上記端末装置に配布するよう処理することを特徴とする。
実施の形態1について、図1〜図18を用いて説明する。
配布システム800は、プログラムなどのソフトウェアを配布するシステムである。配布システム800は、開発装置810、配布装置100、端末装置200などを有する。開発装置810は、開発者がソフトウェアを開発する装置である。配布装置100は、開発装置810で開発されたソフトウェアを端末装置200に配布する装置である。端末装置200は、配布装置100から配布されたソフトウェアを実行する装置である。開発装置810と配布装置100との間は、例えばネットワークなどにより接続していて、開発装置810で開発されたソフトウェアを配布装置100に伝送することができる。しかし、開発装置810で開発したソフトウェアを配布装置100が取得できる構成であれば、開発装置810と配布装置100との間は必ずしも接続されている必要はない。例えば、開発装置810で開発したソフトウェアを記憶媒体に記憶させ、配布装置100が記憶媒体からソフトウェアを読み出す構成であってもよい。配布装置100と端末装置200との間も同様に、配布装置100が配布したソフトウェアを端末装置200が取得できるよう構成する。例えば、ネットワークによる常時接続やダイヤルアップ回線による接続を介してオンラインでソフトウェアを配布する構成でもよいし、記憶媒体を郵送するなどしてオフラインでソフトウェアを配布する構成でもよい。
新しい版のソフトウェアを配布するに当たり、古い版のソフトウェアとの差が小さければ、その差を表わす差分データを配布するほうが、配布すべきデータ量が少なくなり効率がよい。このため、配布装置100は、端末装置200に対して差分データを配布する。端末装置200は、既に配布されている古い版のソフトウェアに、配布された差分データを適用することにより、ソフトウェアを更新し、新しい版のソフトウェアを取得する。
端末装置200がネットワークなどを介して配布装置100と常時接続している場合、ソフトウェアの新しい版が開発されるたびに、配布装置100から差分データを端末装置200に配布することができる。
しかし、端末装置200がダイヤルアップ回線などを介して配布装置100と接続している場合、配布装置100と端末装置200とが接続していない間は、差分データを配布できない。
また、郵送などオフラインでの配布の場合、些細な修正のたびに差分データを配布することは、郵送料や利用者が差分データをソフトウェアに適用する手間などの点で現実的ではなく、セキュリティホールの修正など重要な修正があった場合のみ、差分データを配布する。
配布装置100および端末装置200は、システムユニット910、CRT(Cathode・Ray・Tube)やLCD(液晶)の表示画面を有する表示装置901、キーボード902(Key・Board:K/B)、マウス903、FDD904(Flexible・Disk・Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット910は、コンピュータであり、ファクシミリ機932、電話器931とケーブルで接続され、また、ローカルエリアネットワーク942(LAN)、ゲートウェイ941を介してインターネット940に接続されている。
配布装置100および端末装置200は、プログラムを実行するCPU911(Central・Processing・Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信装置915、表示装置901、キーボード902、マウス903、FDD904、CDD905、プリンタ装置906、スキャナ装置907、磁気ディスク装置(以下「HDD」と呼ぶ。)920と接続され、これらのハードウェアデバイスを制御する。HDD920の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、HDD920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。通信装置915、キーボード902、スキャナ装置907、FDD904などは、入力部、入力装置の一例である。
また、通信装置915、表示装置901、プリンタ装置906などは、出力部、出力装置の一例である。
HDD920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
ファイル群924には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、HDD920の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital・Versatile・Disk)等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
配布装置100(差分管理装置)は、旧版データ記憶部111、新版データ取得部112、差分生成部113、旧版データ更新部114、差分記憶部115、旧版コード記憶部121、旧版コード更新部124、差分版記憶部125、要求取得部131、配布判定部132、差分合成部133、差分配布部134を有する。
開発装置810が有版データの新たな版を開発すると、新版データ取得部112は、CPU911を用いて、開発装置810から有版データの最新の版(以下「新版データ」と呼ぶ。)と、新版データの版を識別する版コード(以下「新版コード」と呼ぶ。)とを取得する。
差分生成部113は、CPU911を用いて、旧版データ記憶部111が記憶した旧版データと、新版データ取得部112が取得した新版データとの間の差分データを生成する。
差分記憶部115は、HDD920を用いて、差分生成部113が生成した差分データを記憶する。差分記憶部115は、複数の差分データを記憶する。差分生成部113が生成した差分データを記憶することにより、差分記憶部115が記憶した差分データの数が1つ増える。
旧版データ記憶部111は、有版データの1つの版しか記憶しない。これにより、HDD920の記憶容量を節約することができる。旧版データ更新部114による更新により、旧版データ記憶部111は、HDD920を用いて、新版データを新たな旧版データとして記憶する。すなわち、旧版データ記憶部111が記憶している有版データの現行の版は、差分生成部113が差分データを生成している間を除き、常に、その有版データの最新の版である。
1つの有版データのデータ量が大きい場合はもちろん、配布装置100が多数の種類の有版データを配布する場合、1つ1つの有版データのデータ量は小さくても、全体としてのデータ量は膨大になる場合がある。旧版データ記憶部111が1つの有版データにつき1つの版しか記憶せず、HDD920の記憶容量を節約することにより、配布装置100の設置コストを抑えることができる。
なお、HDD920の記憶容量に余裕があれば、旧版データ記憶部111は、1つの有版データにつき複数の版を記憶する構成としてもよい。更に、空き容量監視部と版数算出部とを設け、HDD920の空き容量を空き容量監視部が監視し、HDD920の空き容量に基づいて、旧版データ記憶部111が記憶する版の数を版数算出部が算出する構成としてもよい。
差分版記憶部125は、CPU911を用いて、新版データ取得部112が取得した新版コードと、旧版コード記憶部121が記憶した旧版コードとに基づいて、差分生成部113が生成した差分データがどの版とどの版との間のものであるかを表わすデータ(以下「差分コード」と呼ぶ。)を生成する。差分版記憶部125は、HDD920を用いて、生成した差分コードを記憶する。差分版記憶部125は、差分記憶部115が記憶した複数の差分データに対応して同じ数の差分コードを記憶する。例えば、差分記憶部115が差分データを記憶するファイルのファイル名として差分コードを用いるなどして、差分記憶部115が記憶した差分データと、差分版記憶部125が記憶した差分コードとを対応づける。
旧版データ記憶部111が1つの旧版データを記憶する構成である場合、旧版コード記憶部121も1つの旧版コードを記憶する。
旧版データ記憶部111が複数の旧版データを記憶する構成である場合、旧版コード記憶部121は、それに対応して同じ数の旧版コードを記憶する。旧版データ記憶部111が記憶した旧版データと、旧版コード記憶部121が記憶した旧版コードとの対応がわかるよう、例えば、旧版データ記憶部111が旧版データを記憶するファイルのファイル名として旧版コードを用いるなどして、旧版データ記憶部111が記憶した旧版データと、旧版コード記憶部121が記憶した旧版コードとを対応づける。
差分要求メッセージは、少なくとも、端末装置200が現在所持している有版データ(以下「現版データ」と呼ぶ。)の版を識別する版コード(以下「現版コード」と呼ぶ。)を含む。また、差分要求メッセージは、端末装置200が取得したい有版データ(以下「更新版データ」と呼ぶ。)の版を識別する版コード(以下「更新版コード」と呼ぶ。)を含む。なお、差分要求メッセージが更新版コードを含まない場合は、最新版を取得したいものと解釈する構成であってもよい。
更に、差分要求メッセージは、端末装置200が現在所持している差分データを識別する差分コードを含んでもよい。上述したように、端末装置200は、配布装置100が配布したすべての差分データを取得しているとは限らないし、端末装置200が記憶している有版データの版や、取得したい有版データの版は様々である。したがって、端末装置200が所持している差分データが現版データに適用できるとは限らないし、適用できたとしてもその結果として更新版データが得られるとは限らない。このため、端末装置200が差分データを所持していたとしても、それとは異なる差分データを配布する必要がある場合がある。
現版データに適用することにより更新版データを得ることができる差分データを配布すれば、端末装置200からの要求を満たすことができるのは、もちろんである。また、複数の差分データを順次適用することにより現版データから更新版データを得ることができる差分データであっても、端末装置200からの要求を満たすことができる。例えば、現版データに第一の差分データを適用し、その結果得られた版の有版データに第二の差分データを適用して更新版データを得ることができればよい。順次適用する差分データの数は、2つに限らず、3つ以上であってもよい。また、順次適用する複数の差分データのうちいくつかの差分データを端末装置200が既に所持しているのであれば、その差分データについては、端末装置200に配布する必要はなく、差分記憶部115が記憶している必要もない。
差分記憶部115は、HDD920を用いて、差分合成部133が生成した新たな差分データを記憶する。これにより、差分記憶部115が記憶した差分データの数がまた1つ増える。
差分版記憶部125は、CPU911を用いて、差分合成部133が生成した差分データに対応する差分コードを生成し、HDD920を用いて、生成した差分コードを記憶する。
また、配布する時点で合成を始めたのでは配布が遅れる可能性があるので、差分合成部133は、CPU911を用いて、前もって差分データを合成しておく構成であってもよい。例えば、負荷監視部を設け、負荷監視部がCPU911の負荷を監視し、CPU911の負荷が所定の値よりも低く、差分合成部133が差分データを合成する差分合成処理をしても他の処理に影響が出ないと判定した場合に、差分版記憶部125が記憶した差分コードに基づいて、合成により生成することが可能であるがまだ生成されていない差分データを差分合成部133が判定し、判定した差分データを生成する。
端末装置200(差分管理装置)は、有版データ記憶部211、有版データ更新部212、現版コード記憶部213、差分取得部221、差分記憶部222、差分版記憶部223、差分合成部224、更新版取得部231、適用判定部240を有する。
現版コード記憶部213は、HDD920を用いて、有版データ記憶部211が記憶している有版データの版を表わす版データ(以下「現版コード」と呼ぶ。)を記憶している。
差分記憶部222は、HDD920を用いて、差分取得部221が取得した差分データを記憶する。差分記憶部222は、複数の差分データを記憶する。差分取得部221が取得した差分データを記憶することにより、差分記憶部222が記憶した差分データの数が1つ増える。
差分版記憶部223は、HDD920を用いて、差分取得部221が取得した差分版データを記憶する。差分版記憶部223は、差分記憶部222が記憶した差分データに対応して、同じ数の差分版データを記憶する。例えば、差分記憶部222が差分データを記憶するファイルのファイル名として差分コードを用いるなどして、差分記憶部222が記憶した差分データと、差分版記憶部223が記憶した差分コードとを対応づける。
差分合成部224は、CPU911を用いて、差分記憶部222が記憶した複数の差分データを合成して、新たな差分データを生成する。差分記憶部222は、HDD920を用いて、差分合成部224が生成した差分データを記憶する。これにより、差分記憶部222が記憶した差分データの数が1つ増える。差分版記憶部223は、差分合成部224が生成した差分データに対応する差分版データを記憶する。
単独適用判定部241は、CPU911を用いて、差分記憶部222が記憶した差分データのなかに、有版データ記憶部211が記憶した有版データに適用することにより、更新版取得部231が取得した更新版コードが表わす版の有版データを生成することができる差分データ(以下「単独適用差分データ」と呼ぶ。)があるか否かを判定する。
単独適用差分データがないと単独適用判定部241が判定した場合、合成適用判定部242は、CPU911を用いて、差分記憶部222が記憶した差分データのなかに、有版データ記憶部211が記憶した有版データに順次適用することにより、更新版取得部231が取得した更新版データが表わす版の有版データを生成することができる複数の差分データ(以下「合成適用差分データ」と呼ぶ。)があるかを判定する。
合成適用差分データがないと合成適用判定部242が判定した場合、差分要求部243は、CPU911を用いて、配布装置100に対して差分データの配布を要求する差分要求メッセージを通知する。通知の方式は、配布装置100が有版データや差分データを配布する場合と同様、様々な方式がある。例えば、配布装置100と端末装置200とがインターネットなどを介して接続している場合には、差分要求部243は、通信装置915を用いて、配布装置100に対して差分要求メッセージを送信する。あるいは、差分要求部243は、表示装置901を用いて、端末装置200の利用者に対してメッセージを表示する。それを見た利用者が電話や葉書で配布装置100の管理者に連絡する。配布装置100の管理者が配布装置100にその内容を入力することにより、配布装置100に差分要求メッセージを通知する。
有版データ更新部212は、CPU911を用いて、単独適用判定部241が判定した単独適用差分データもしくは差分合成部224が合成した単独適用差分データを、有版データ記憶部211が記憶した有版データに適用して、更新版コードが表わす版の有版データを生成する。
この例において、差分版記憶部125は、10個の差分コード511(複数の差分コード511を区別するため、英小文字を付加する場合がある。他のデータについても同様。)を記憶している。各差分コード511は、適用前コード512と適用後コード513との組である。適用前コード512及び適用後コード513は、いずれも版コードである。適用前コード512は、その差分コード511に対応する差分データを適用できる版の版コードを表わし、適用後コード513は、その差分コード511に対応する差分データを適用した結果として生成される版の版コードを表わす。差分記憶部222が記憶する差分コードも同様である。
例えば、差分コード511aは、対応する差分データ(順方向差分データ)が、版コード「1.0」の有版データと版コード「1.1」の有版データとの差分を表わし、版コード「1.0」の有版データに適用することにより、版コード「1.1」の有版データを生成することができることを表わす。差分コード511bは、対応する差分データ(逆方向差分データ)が、差分コード511aに対応する差分データと同じく、版コード「1.0」の有版データと版コード「1.1」の有版データとの差分を表わすが、差分コード511aに対応する差分データとは逆に、版コード「1.1」の有版データに適用することにより、版コード「1.0」の有版データを生成することができることを表わす。
この例に示したように、差分生成部113(および差分合成部133,224)が生成する差分データは、その差分データを生成する元になった2つの有版データのうち、いずれか一方にのみ適用できるものであってもよいし、この例と異なり、双方向に適用できるものであってもよい。
差分データが双方向に適用できるものである場合、1つの差分データをバージョンアップとバージョンダウンの両方に用いることができるので、差分記憶部115が、比較的少ない数の差分データさえ記憶しておけば、様々なニーズに対応できる。
これに対し、差分データが片方向にしか適用できないものである場合、差分データ1つ当たりのデータ量が少なくて済むので、配布するデータ量を抑えることができる。利用者は、多くの場合、有版データの版を更新したら更新した版を使い続けるので、元に戻したいというニーズは存在してもごくわずかである。また、利用者が更新前の有版データをバックアップしている場合には、元に戻すために差分データを用いる必要はない。したがって、最初は片方向にしか適用できない差分データを配布し、元に戻したいというニーズが発生した時点で、元に戻すための差分データを配布するほうが効率がよい。
差分データ520は、1以上のコマンド521を有する。
1つのコマンド521は、命令522とサイズ523とソース524との組である。
命令522は、そのコマンド521が複写コマンドであるか追加コマンドであるかを表わす。この例では、複写コマンドの場合を「copy」、追加コマンドの場合を「data」として記述しているが、これは理解を助けるためである。実際には、複写コマンドと追加コマンドとを区別できればよいので、命令522は、例えば1ビットのデータでよい。
サイズ523は、そのコマンドにより生成するデータのサイズ(データ量)を表わす。
ソース524は、そのコマンドにより生成するデータの源泉を表わす。複写コマンドは、適用前の版の有版データからデータを複写してくることを表わし、ソース524は、例えば、複写するデータの開始位置を表わす。追加コマンドは、新たなデータを追加することを表わし、ソース524は、追加するデータそのものである。
例えば、コマンド521aは、適用前の版の有版データの0バイト目(最初)から3200バイトのデータを複写することを表わす。コマンド521bは、ソース524bが表わす1200バイトのデータを追加することを表わす。コマンド521cは、適用前の版の有版データの3200バイト目から4600バイトのデータを複写することを表わす。
コマンド521には順番があり、コマンド521の順番は、適用後の版の有版データにおいて、生成したデータを配置する順序を表わす。
例えば、コマンド521aにより生成した3200バイトのデータは、適用後の版の有版データの0バイト目(最初)から3199バイト目までの間に配置する。コマンド521bにより生成した1200バイトのデータは、適用後の版の有版データの3200バイト目から4399バイト目までの間に配置する。コマンド521cにより生成した4600バイトのデータは、適用後の版の有版データの4400バイト目から8999バイト目までの間に配置する。
この例は、図7に示した差分データ520を適用する適用前の版の有版データ530aと、差分データ520を適用した適用後の版の有版データ530bとの関係を表わしている。
有版データ530aは、全部で12800バイトのデータである。有版データ530bは、全部で13400バイトのデータである。このように、有版データ530のサイズは、版により異なっていてもよい。
有版データ530aの0バイト目(最初)から3199バイト目までの3200バイトの部分531a(複写部分)のデータは、有版データ530bの0バイト目(最初)から3199バイト目までの3200バイトの部分531b(含有部分)のデータと同一である。有版データ530の3200バイト目から7799バイト目までの4600バイトの部分532a(複写部分)のデータは、有版データ530bの4400バイト目から8999バイト目までの4600バイトの部分533b(含有部分)のデータと同一である。有版データ530aの10200バイト目から12799バイト目(最後)までの2600バイトの部分534a(複写部分)のデータは、有版データ530bの9000バイト目から11599バイト目までの2600バイトの部分534b(含有部分)のデータと同一である。
有版データ530aの7800バイト目から10199バイト目までの2400バイトの部分533aのデータと同一のデータは、有版データ530bには存在しない。また、有版データ530bの3200バイト目から4399バイト目までの1200バイトの部分532b(非含有部分)のデータ、および、有版データ530bの11600バイト目から13399バイト目(最後)までの1800バイトの部分535b(非含有部分)のデータと同一のデータは、有版データ530aには存在しない。
まず、有版データ更新部212は、コマンド521aにしたがって、有版データ530aの部分531aのデータを、有版データ530bの部分531bに複写する。次に、有版データ更新部212は、コマンド521bにしたがって、ソース524bが表わすデータを、有版データ530bの部分532bに追加する。次に、有版データ更新部212は、コマンド521cにしたがって、有版データ530aの部分532aのデータを、有版データ530bの部分533bに複写する。次に、有版データ更新部212は、コマンド521dにしたがって、有版データ530aの部分534aのデータを、有版データ530bの部分534bに複写する。最後に、有版データ更新部212は、コマンド521eにしたがって、ソース524eが表わすデータを、有版データ530bの部分535bに追加する。
差分記憶部115,222は、このような差分データを複数記憶する。
差分合成部133,224は、差分記憶部115,222が記憶した差分データを解釈して、合成した新しい差分データを生成する。
有版データ更新部212は、差分記憶部222が記憶した差分データを解釈して、順番どおりにコマンドを実行することにより、有版データ記憶部211が記憶した有版データを更新し、更新後の版の有版データを生成する。
差分生成処理S610において、差分生成部113は、CPU911を用いて、2つの有版データ530から差分データを生成する。以下では、旧版データを新版データに更新するための差分データを差分生成部113が生成する手順について説明する。新版データを旧版データに更新するための差分データを生成する手順は、旧版データと新版データとを逆にすればよいので、説明を省略する。
差分生成処理S610は、新版単位取得工程S611、旧版単位取得工程S613、単位比較工程S615、一致長更新工程S617、2つの一致長判定工程S621,S631、2つの不一致判定工程S623,S633、3つの追加コマンド生成工程S625,S635,S639、2つの複写コマンド生成工程S627,S637を有する。
新版データの最後まで到達し、差分生成部113が新版単位データを取得しなかった場合、差分生成部113は、一致長判定工程S631へ進む。
差分生成部113が新版単位データを取得した場合、差分生成部113は、旧版単位取得工程S613へ進む。
旧版データの最後に到達し、差分生成部113が旧版単位データを取得しなかった場合、差分生成部113は、一致長判定工程S621へ進む。
差分生成部113が旧版単位データを取得した場合、差分生成部113は、単位比較工程S615へ進む。
新版単位データと旧版単位データとが一致すると差分生成部113が判定した場合、差分生成部113は、一致長更新工程S617へ進む。
新版単位データと旧版単位データとが一致しないと差分生成部113が判定した場合、差分生成部113は、旧版単位取得工程S613に戻り、次の旧版単位データを取得する。
例えば、差分生成部113は、CPU911を用いて、新版単位取得工程S611で取得した新版単位データより一つ前の新版単位データについてRAM914を用いて記憶した一致長データを取得する。差分生成部113は、CPU911を用いて、取得した一致長データのなかから、一致長データが表わす一致位置が、旧版単位取得工程S613で取得した旧版単位データより一つ前の旧版単位データの位置である一致長データを抽出する。差分生成部113は、CPU911を用いて、抽出した一致長データが表わす一致長に1を加えた和を算出し、算出した和を一致長に設定する。一つ前の新版単位データについて記憶した一致長データがない場合や、取得した一致長データのなかに、一致長データが表わす一致位置が一つ前の旧版単位データの位置である一致長データがない場合、差分生成部113は、CPU911を用いて、1を一致長に設定する。差分生成部113は、CPU911を用いて、旧版単位取得工程S613で取得した旧版単位データの位置と、設定した一致長とを表わす一致長データを生成し、RAM914を用いて、生成した一致長データを記憶する。
その後、差分生成部113は、旧版単位取得工程S613に戻り、次の旧版単位データを取得する。
差分生成部113は、CPU911を用いて、算出した最大一致長と、新版単位取得工程S611で取得した新版単位データより一つ前の新版単位データについてRAM914を用いて記憶した最大一致長とを比較する。
算出した最大一致長が、記憶した一つ前の最大一致長より小さい場合、一つ前の新版単位データの位置で、旧版データと新版データとが一致する部分が途切れたことを意味する。差分生成部113は、複写コマンドを生成するため、不一致判定工程S623へ進む。
算出した最大一致長が、記憶した一つ前の最大一致長以上である場合、差分生成部113は、新版単位取得工程S611に戻り、次の新版単位データを取得する。
なお、一致する部分のサイズが小さい場合、複写コマンドを生成するよりも、前後の不一致部分と合わせて一つの追加コマンドを生成したほうが、差分データのデータ量が小さくなる場合がある。このため、算出した最大一致長が、記憶した一つ前の最大一致長より小さい場合であっても、記憶した一つ前の最大一致長が所定の閾値以下である場合は、新版単位取得工程S611に戻る構成であってもよい。
算出した開始位置が、既に生成したコマンドにより生成される新版データの終了位置の次の位置である場合、一致部分が連続していることを意味する。差分生成部113は、複写コマンド生成工程S627へ進む。
算出した開始位置が、既に生成したコマンドにより生成される新版データの終了位置の次の位置よりもあとである場合、一致部分の間に不一致部分があることを意味する。差分生成部113は、不一致部分について追加コマンドを生成するため、追加コマンド生成工程S625へ進む。
例えば、差分生成部113は、CPU911を用いて、不一致判定工程S623で算出した開始位置と、既に生成したコマンドにより生成される新版データの終了位置とに基づいて、不一致部分のサイズを算出し、新版データのなかから追加する不一致部分のデータを取得する。差分生成部113は、CPU911を用いて、算出したサイズをサイズ523に設定し、取得したデータをソース524に設定した追加コマンドを生成する。
差分生成部113は、CPU911を用いて、生成中の差分データの後ろに、生成した追加コマンドを追加する。差分生成部113は、HDD920を用いて、生成した追加コマンドを追加した差分データを記憶する。
例えば、差分生成部113は、CPU911を用いて、新版単位取得工程S611で取得した新版単位データより一つ前の新版単位データについて記憶した一致長データのなかから、一致長データが表わす一致長が、一つ前の新版単位データについて記憶した最大一致長に一致する一致長データを取得する。差分生成部113は、CPU911を用いて、取得した一致長データが表わす位置に基づいて、旧版データから複写する一致部分の開始位置を算出する。差分生成部113は、CPU911を用いて、一つ前の新版単位データについて記憶した最大一致長をサイズ523に設定し、算出した開始位置をソース524に設定した追加コマンドを生成する。
差分生成部113は、CPU911を用いて、生成中の差分データの後ろに、生成した複写コマンドを追加する。差分生成部113は、HDD920を用いて、生成した複写コマンドを追加した差分データを記憶する。
差分生成部113は、RAM914を用いて、既に生成したコマンドにより生成できる新版データの終了位置として、新版単位取得工程S611で取得した新版単位データの一つ前の新版単位データの終了位置を記憶する。
その後、差分生成部113は、新版単位取得工程S611に戻り、次の新版単位データを取得する。
算出した最大一致長が0(あるいは所定の閾値以下)である場合、新版データの最後の部分が不一致部分であることを意味する。差分生成部113は、追加コマンド生成工程S639へ進む。
算出した最大一致長が0(あるいは所定の閾値)より大きい場合、新版データの最後の部分が一致部分であることを意味する。差分生成部113は、不一致判定工程S633へ進む。
不一致部分があると判定した場合、差分生成部113は、追加コマンド生成工程S635へ進む。
不一致部分がなく、一致部分が連続していると判定した場合、差分生成部113は、複写コマンド生成工程S637へ進む。
その後、差分生成部113は、差分生成処理S610を終了する。
例えば、差分生成部113は、CPU911を用いて、既に生成したコマンドにより生成される新版データの終了位置に基づいて、不一致部分のサイズを算出し、新版データのなかから追加する不一致部分のデータを取得する。差分生成部113は、CPU911を用いて、算出したサイズをサイズ523に設定し、取得したデータをソース524に設定した追加コマンドを生成する。
差分生成部113は、CPU911を用いて、生成中の差分データの後ろに、生成した追加コマンドを追加する。差分生成部113は、HDD920を用いて、生成した追加コマンドを追加した差分データを記憶する。
その後、差分生成部113は、差分生成処理S610を終了する。
データ更新処理S650において、有版データ更新部212は、差分記憶部222が記憶した差分データを、有版データ記憶部211が記憶した有版データに適用して、更新版の有版データを生成する。データ更新処理S650は、コマンド取得工程S651、データ追加工程S653、データ複写工程S655、データ更新工程S657を有する。
有版データ更新部212は、コマンド取得工程S651で取得した差分データのうち、RAM914を用いて記憶したポインタが表わす位置から、CPU911を用いて、コマンドの命令522と、サイズ523とを取得する。
ポインタが表わす位置が差分データの最後であり、有版データ更新部212が命令522を取得しなかった場合、有版データ更新部212は、データ更新工程S657へ進む。
有版データ更新部212が命令522とサイズ523とを取得した場合、有版データ更新部212は、CPU911を用いて、取得したサイズ523の次の位置(ソース524の位置)へポインタを進める。有版データ更新部212は、RAM914を用いて、進めたポインタを記憶する。有版データ更新部212は、取得した命令522に基づいて、そのコマンドが複写コマンドであるか追加コマンドであるかを判定する。
そのコマンドが追加コマンドである場合、有版データ更新部212は、データ追加工程S653へ進む。
そのコマンドが複写コマンドである場合、有版データ更新部212は、データ複写工程S655へ進む。
有版データ更新部212は、CPU911を用いて、生成中の有版データの後ろに、取得したソース524を追加する。有版データ更新部212は、HDD920を用いて、ソース524を追加した生成中の有版データを記憶する。
その後、有版データ更新部212は、コマンド取得工程S651に戻り、次のコマンドを処理する。
有版データ更新部212は、CPU911を用いて、有版データ記憶部211が記憶した有版データから、ソース524が表わす開始位置からサイズ523が表わすバイト数のデータを取得する。有版データ更新部212は、CPU911を用いて、生成中の有版データの後ろに、取得したデータを追加する。有版データ更新部212は、HDD920を用いて、データを追加した生成中の有版データを記憶する。
その後、有版データ更新部212は、コマンド取得工程S651に戻り、次のコマンドを処理する。
差分合成処理S670において、差分合成部133は、差分記憶部115が記憶した2つの差分データを合成して、新しい差分データを生成する。なお、差分記憶部222が記憶した2つの差分データを合成して差分合成部224が新しい差分データを生成する処理の流れも、差分合成処理S670と同じである。
差分合成処理S670は、コマンド取得工程S671、2つの追加コマンド生成工程S673,S677、複写部分取得工程S675、複写コマンド生成工程S679を有する。
差分合成部133は、コマンド取得工程S671で取得した第二の差分データのうち、RAM914を用いて記憶したポインタが表わす位置から、CPU911を用いて、コマンドの命令522と、サイズ523とを取得する。
ポインタが表わす位置が第二の差分データの最後であり、差分合成部133が命令522を取得しなかった場合、差分合成部133は、差分合成処理S670を終了する。
差分合成部133が命令522とサイズ523とを取得した場合、差分合成部133は、CPU911を用いて、取得したサイズ523の次の位置(ソース524の位置)へポインタを進める。差分合成部133は、RAM914を用いて、進めたポインタを記憶する。差分合成部133は、取得した命令522に基づいて、そのコマンドが複写コマンドであるか追加コマンドであるかを判定する。
そのコマンドが追加コマンドである場合、差分合成部133は、追加コマンド生成工程S673へ進む。
そのコマンドが複写コマンドである場合、差分合成部133は、複写部分取得工程S675へ進む。
差分合成部133は、CPU911を用いて、取得したサイズ523をサイズ523に設定し、取得したソース524をソース524に設定した追加コマンドを生成する。すなわち、差分合成部133は、取得した追加コマンドを複製する。差分合成部133は、CPU911を用いて、生成中の第三の差分データの後ろに、生成した追加コマンドを追加する。差分合成部133は、HDD920を用いて、生成した追加コマンドを追加した第三の差分データを記憶する。
その後、差分合成部133は、コマンド取得工程S671に戻り、次のコマンドを処理する。
差分合成部133は、CPU911を用いて、差分記憶部115が記憶した差分データのなかから、第一の差分データを取得する。差分合成部133は、CPU911を用いて、取得した第一の差分データに含まれるコマンドを解釈して、第一の差分データに含まれるコマンドのなかから、有版データの第二の版において、取得したソース524が表わす開始位置からサイズ523が表わすバイト数のデータ(以下「複写部分データ」と呼ぶ。)を生成するコマンドを抽出する。複写部分データを生成するコマンドは、1つとは限らず、複数ある場合がある。また、複写部分データを生成するコマンドは、複写部分データだけでなく、その前後のデータも合わせて生成するものである場合がある。
例えば、差分合成部133は、CPU911を用いて、第一の差分データの最初から順にコマンドを1つずつ取得する。最初のコマンドが生成するデータの範囲の開始位置は「0」である。二番目以降のコマンドが生成するデータの範囲の開始位置は、それより前のコマンドのサイズ523の合計である。差分合成部133は、CPU911を用いて、取得したコマンドのサイズ523を累計することにより、そのコマンドにより生成されるデータの開始位置を算出する。差分合成部133は、CPU911を用いて、算出した開始位置とサイズ523とに基づいて、そのコマンドにより生成されるデータが、有版データの第二の版において複写部分データに含まれるか否かを判定する。
差分合成部133は、CPU911を用いて、第一の差分データから抽出したコマンドのなかから、コマンドを1つ取得する。第一の差分データから抽出したコマンドが複数である場合、差分合成部133は、複数のコマンドを最初から順に1つずつ処理する。
第一の差分データから抽出したコマンドの処理がすべて終了し、取得すべきコマンドがない場合、差分合成部133は、コマンド取得工程S671に戻り、第二の差分データにおける次のコマンドを処理する。
第一の差分データから抽出したコマンドを取得した場合、差分合成部133は、CPU911を用いて、取得したコマンドが複写コマンドであるか追加コマンドであるかを判定する。
取得したコマンドが追加コマンドである場合、差分合成部133は、追加コマンド生成工程S677へ進む。
取得したコマンドが複写コマンドである場合、差分合成部133は、複写コマンド生成工程S679へ進む。
例えば、複写部分取得工程S675で取得した追加コマンドにより生成されるデータが、有版データの第二の版において複写部分データのなかに完全に含まれている場合、差分合成部133は、CPU911を用いて、複写部分取得工程S675で取得した追加コマンドのサイズ523をサイズ523に設定し、ソース524をソース524に設定した追加コマンドを生成する。すなわち、差分合成部133は、複写部分取得工程S675で取得した追加コマンドを複製する。
複写部分取得工程S675で取得した追加コマンドにより生成されるデータが、有版データの第二の版において複写部分データに含まれない部分を含む場合、差分合成部133は、CPU911を用いて、複写部分取得工程S675で取得した追加コマンドのソース524のなかから、複写部分データに含まれる部分のデータを切り出す。差分合成部133は、CPU911を用いて、切り出したデータのサイズをサイズ523に設定し、切り出したデータをソース524に設定した追加コマンドを生成する。
差分合成部133は、CPU911を用いて、生成中の第三の差分データの後ろに、生成した追加コマンドを追加する。差分合成部133は、HDD920を用いて、生成した追加コマンドを追加した第三の差分データを記憶する。
その後、差分合成部133は、複写部分取得工程S675に戻り、第一の差分データから抽出した次のコマンドを処理する。
例えば、複写部分取得工程S675で取得した複写コマンドにより生成されるデータが、有版データの第二の版において複写部分データのなかに完全に含まれている場合、差分合成部133は、CPU911を用いて、複写部分取得工程S675で取得した複写コマンドのサイズ523をサイズ523に設定し、ソース524をソース524に設定した複写コマンドを生成する。すなわち、差分合成部133は、複写部分取得工程S675で取得した複写コマンドを複製する。
複写部分取得工程S675で取得した複写コマンドにより生成されるデータが、有版データの第二の版において複写部分データより前の部分のデータ(以下「前部分データ」と呼ぶ。)を含む場合、差分合成部133は、CPU911を用いて、複写部分取得工程S675で取得した複写コマンドにより生成されるデータのうち、複写部分に含まれる部分のデータ(以下「承継部分データ」と呼ぶ。)のサイズを算出する。また、差分合成部133は、CPU911を用いて、前部分データのサイズを算出する。差分合成部133は、CPU911を用いて、複写部分取得工程S675で取得した複写コマンドのソース524に、算出した前部分データのサイズを加えた和を算出する。差分合成部133は、CPU911を用いて、算出した承継部分データのサイズをサイズ523に設定し、算出した和をソース524に設定した複写コマンドを生成する。
複写部分取得工程S675で取得した複写コマンドにより生成されるデータが、前部分データを含まず、有版データの第二の版において複写部分データより後の部分のデータ(以下「後部分データ」と呼ぶ。)を含む場合、差分合成部133は、CPU911を用いて、承継部分データのサイズを算出する。差分合成部133は、CPU911を用いて、算出したサイズをサイズ523に設定し、複写部分取得工程S675で取得した複写コマンドのソース524をソース524に設定した複写コマンドを生成する。
差分合成部133は、CPU911を用いて、生成中の第三の差分データの後ろに、生成した複写コマンドを追加する。差分合成部133は、HDD920を用いて、生成した複写コマンドを追加した第三の差分データを記憶する。
その後、差分合成部133は、複写部分取得工程S675に戻り、第一の差分データから抽出した次のコマンドを処理する。
特に、端末装置200には、CPU911の処理能力が低いものやHDD920の記憶容量が小さいものが存在する。有版データに複数の差分データを順次適用して有版データを更新するよりも、差分データを合成してから、有版データに1回だけ適用するほうが、CPU911にかかる負荷が小さく、使用する記憶領域の容量が少なくて済むので、処理速度が向上し、端末装置200が並列して実行する他の処理に影響を与えることなく、有版データを更新することができる。
図13は、この実施の形態における差分データ520cの一例を示す図である。
図7に示した差分データ520が第一の差分データであるものとし、図12に示した差分データ520bが第二の差分データであるものとする。差分データ520cは、差分合成部133(あるいは差分合成部224)が差分データ520と差分データ520bとを合成して生成する第三の差分データである。
以下、図11のフローチャートを参照しつつ、差分合成部133の動作の具体例を説明する。
差分合成部133は、コマンド521fのソース524「0」を取得する。差分合成部133は、差分データ520のなかから、有版データ530bの0バイト目(最初)から3999バイト目までの4000バイトの部分のデータ(複写部分データ)を生成するコマンドを抽出する。
差分データ520には、5つのコマンド521a〜521eが含まれる。コマンド521aは、有版データ530bの0バイト目から3199バイト目までの3200バイトの部分531bのデータを生成するコマンドである。コマンド521bは、有版データ530bの3200バイト目から4399バイト目までの1200バイトの部分532bのデータを生成するコマンドである。コマンド521cは、有版データ530bの4400バイト目から8999バイト目までの4600バイトの部分533bのデータを生成するコマンドである。コマンド521dは、有版データ530bの9000バイト目から11599バイト目までの2600バイトの部分534bのデータを生成するコマンドである。コマンド521eは、有版データ530bの11600バイト目から13399バイト目(最後)までの1800バイトの部分535bのデータを生成するコマンドである。したがって、差分合成部133は、2つのコマンド521a,521bを抽出する。
差分合成部133は、抽出したコマンドを前から順に処理するため、まず、コマンド521aを取得する。
コマンド521aにより生成される3200バイトのデータは、有版データ530bにおいて複写部分データに完全に含まれるので、差分合成部133は、コマンド521aを複製して、複写コマンド521jを生成する。
コマンド521bは追加コマンドなので、追加コマンド生成工程S677へ進む。
コマンド521bにより生成される1200バイトのデータのうち、有版データ530bにおいて複写部分データに含まれるのは前半の800バイトだけである。差分合成部133は、ソース524bから前半の800バイトを切り出す。差分合成部133は、切り出したデータのサイズ「800」をサイズ523に設定し、切り出したデータをソース524kに設定した追加コマンド521kを生成する。
差分合成部133は、差分データ520bから次のコマンド521gの命令522「copy」、サイズ523「4400」を取得する。
差分合成部133は、コマンド521gのソース524「5200」を取得する。差分合成部133は、差分データ520のなかから、有版データ530bの5200バイト目から4400バイトの部分のデータ(複写部分データ)を生成するコマンドである2つのコマンド521c,521dを抽出する。
差分合成部133は、抽出したコマンドを前から順に処理するため、まず、コマンド521cを取得する。
コマンド521cにより生成される4600バイトのデータのうち、有版データ530bにおいて複写部分データに含まれる部分のデータ(承継部分データ)は後半の3800バイトだけであり、それより前の800バイトは複写部分データに含まれない前部分データである。差分合成部133は、承継部分データのサイズ「3800」をサイズ523に設定し、コマンド521cのソース524「3200」に前部分データのサイズ「800」を加えた和「4000」をソース524に設定した複写コマンド521lを生成する。
コマンド521dは複写コマンドなので、複写コマンド生成工程S679へ進む。
コマンド521dにより生成される2600バイトのデータのうち、有版データ530bにおいて複写部分データに含まれる部分のデータ(承継部分データ)は前半の600バイトだけである。差分合成部133は、承継部分データのサイズ「600」をサイズ523に設定し、コマンド521dのソース524「10200」をソース524に設定した複写コマンド521mを生成する。
差分合成部133は、差分データ520bから、次のコマンド521hの命令522「data」と、サイズ523「3000」とを取得する。
差分合成部133は、コマンド521hを複製して、コマンド521nを生成する。
差分合成部133は、コマンド521iのソース524「10600」を取得する。差分合成部133は、差分データ520のなかから、有版データ530bの10600バイト目から2800バイトの部分のデータ(複写部分データ)を生成するコマンドである2つのコマンド521d,521eを抽出する。
差分合成部133は、抽出したコマンドを前から順に処理するため、まず、コマンド521dを取得する。
コマンド521dにより生成される2600バイトのデータのうち、有版データ530bにおいて複写部分データに含まれる部分のデータ(承継部分データ)は後半の1000バイトだけであり、それより前の1600バイトは複写部分データに含まれない前部分データである。差分合成部133は、承継部分データのサイズ「1000」をサイズ523に設定し、コマンド521cのソース524「10200」に前部分データのサイズ「1600」を加えた和「11800」をソース524に設定した複写コマンド521oを生成する。
コマンド521eは追加コマンドなので、追加コマンド生成工程S673へ進む。
コマンド521eにより生成される1800バイトのデータは、有版データ530bにおいて複写部分データに完全に含まれるので、差分合成部133は、コマンド521eを複製して、追加コマンド521pを生成する。
有版データ530aは、差分データ520を適用する適用前の版の有版データである。有版データ530bは、有版データ530aに差分データ520を適用した結果として生成される適用後の版の有版データであるとともに、差分データ520bを適用する適用前の版の有版データでもある。有版データ530cは、有版データ530bに差分データ520bを適用した結果として生成される適用後の版の有版データである。
有版データ530aと有版データ530bとの関係については、図8を用いて既に説明しているので、ここでは、主に有版データ530bと有版データ530cとの関係について説明する。
有版データ530cの0バイト目(最初)から3999バイト目までの4000バイトの部分531c(含有部分)のデータは、有版データ530bの0バイト目(最初)から3999バイト目までの4000バイトの部分541b(複写部分)のデータと同一である。そのうち、前半の3200バイトは、有版データ530aの部分531aから承継した部分531b(承継部分)であり、残りの800バイトは、有版データ530bで新たに追加された部分532bの一部(非承継部分)である。
有版データ530cの4000バイト目から8399バイト目までの4400バイトの部分532c(含有部分)のデータは、有版データ530bの5200バイト目から9599バイト目までの4400バイトの部分543b(複写部分)のデータと同一である。そのうち、前半の3800バイトは、有版データ530aの部分532aから承継した部分533bの一部(承継部分)であり、残りの600バイトは、有版データ530aの部分534aから承継した部分534bの一部(非承継部分)である。
有版データ530cの11400バイト目から14199バイト目(最後)までの2800バイトの部分534c(含有部分)のデータは、有版データ530bの10600バイト目から13399バイト目(最後)までの2800バイトの部分545b(複写部分)のデータと同一である。そのうち、前半の1000バイトは、有版データ530aの部分534aから承継した部分534bの一部(承継部分)であり、残りの1800バイトは、有版データ530bで新たに追加された部分535b(非承継部分)である。
有版データ530cの8400バイト目から11399バイト目までの3000バイトの部分533c(非含有部分)のデータは、有版データ530bのなかに一致する部分がなく、有版データ530cで新たに追加されたデータである。
有版データ530aは、差分データ520cを適用する適用前の版の有版データである。有版データ530cは、差分データ520cを適用した結果として生成される適用後の版の有版データである。差分データ520と差分データ520bとを合成した差分データ520cを有版データ530aに適用することにより、1回の適用で、有版データ530cを生成することができる。
有版データ530cの0バイト目(最初)から3199バイト目までの3200バイトの部分541cのデータは、有版データ530aの0バイト目(最初)から3199バイト目までの3200バイトの部分541aのデータと同一である。有版データ530cの4000バイト目から7799バイト目までの3800バイトの部分543cのデータは、有版データ530aの4000バイト目から7799バイト目までの部分543aのデータと同一である。有版データ530cの7800バイト目から8399バイト目までの600バイトの部分544cのデータは、有版データ530aの10200バイト目から10799バイト目までの600バイトの部分545aのデータと同一である。有版データ530cの11400バイト目から12399バイト目までの1000バイトの部分546cのデータは、有版データ530aの11800バイト目から12799バイト目(最後)までの1000バイトの部分547aのデータと同一である。有版データ530cのそれ以外の部分542c,545c,547cのデータは、有版データ530cで新たに追加されたデータである。
配布判定処理S710において、配布判定部132は、要求取得部131が取得した差分要求メッセージに基づいて、配布すべき差分データを判定する。
配布判定処理S710は、更新版判定工程S711、適用版記憶工程S713、判定済記憶工程S715、差分版選択工程S721、適用判定工程S723、生成版算出工程S725、判定済判定工程S727、生成版記憶工程S729、配布判定工程S731、拒否判定工程S735を有する。
配布判定部132は、CPU911を用いて、記憶した生成版コードのなかに、取得した更新版コードと一致するものがあるかを判定する。
生成版コードのなかに更新版コードと一致するものがある場合、更新版コードが表わす版にたどり着く道のりが見つかったことを意味する。配布判定部132は、配布判定工程S731へ進む。
生成版コードのなかに更新版コードと一致するものがない場合、生成版コードが表わす版を出発点にして、差分データを適用することにより生成できる版を辿っていく。配布判定部132は、適用版記憶工程S713へ進む。
記憶した生成版コードがない場合、更新版コードが表わす版への道のりをそれ以上辿れないことを意味する。配布判定部132は、拒否判定工程S735へ進む。
記憶した生成版コードがある場合、今度はそれを出発点にして道のりを辿っていく。配布判定部132は、記憶した生成版コードを初期化して消去する。配布判定部132は、判定済記憶工程S715へ進む。
未処理の差分版コードがない場合、配布判定部132は、更新版判定工程S711に戻り、生成版コードのなかに更新版コードがあるかを判定する。
未処理の差分版コードを選択した場合、配布判定部132は、適用判定工程S723へ進む。
選択した差分版コードに対応する差分データが、記憶した適用版コードが表わすいずれかの版の有版データに適用できると判定した場合、配布判定部132は、生成版算出工程S725へ進む。
選択した差分版コードに対応する差分データが、記憶した適用版コードが表わすいずれの版の有版データにも適用できないと判定した場合、配布判定部132は、差分版選択工程S721に戻り、次の差分版データを選択する。
記憶した判定済コードのなかに、生成版算出工程S725で算出した版を表わす版コードがあると判定した場合、配布判定部132は、差分版選択工程S721に戻り、次の差分版データを選択する。
記憶した判定済コードのなかに、生成版算出工程S725で算出した版を表わす版コードがないと判定した場合、配布判定部132は、生成版記憶工程S729へ進む。
その後、配布判定部132は、差分版選択工程S721に戻り、次の差分版データを選択する。
その後、配布判定部132は、配布判定処理S710を終了する。
適用判定処理S740において、適用判定部240は、差分記憶部222が記憶した差分データを、有版データ更新部212が記憶した版の有版データに適用することにより、更新版コードが表わす版の有版データを生成できるかを判定する。
適用判定処理S740は、更新版判定工程S741、適用版記憶工程S743、判定済記憶工程S745、差分版選択工程S751、適用判定工程S753、生成版算出工程S755、判定済判定工程S757、生成版記憶工程S759、適用判定工程S761、差分取得工程S767を有する。
このうち、更新版判定工程S741〜生成版記憶工程S759の処理は、配布判定処理S710の更新版判定工程S711〜生成版記憶工程S729の処理と基本的に同じなので、簡単に説明する。
単独適用判定部241(または合成適用判定部242)は、CPU911を用いて、生成版コードのなかに更新版コードと一致するものがあるかを判定する。
生成版コードのなかに更新版コードと一致するものがあると判定した場合、適用判定工程S761へ進む。
生成版コードのなかに更新版コードと一致するものがないと判定した場合、適用版記憶工程S743へ進む。
生成版コードがない場合、差分要求工程S765へ進む。
生成版コードがある場合、判定済記憶工程S745へ進む。
未処理の差分版コードがない場合、更新版判定工程S741に戻り、生成版コードのなかに更新版コードがあるかを判定する。
未処理の差分版コードを選択した場合、適用判定工程S753へ進む。
適用できると判定した場合、生成版算出工程S755へ進む。
適用できないと判定した場合、差分版選択工程S751に戻り、次の差分版データを選択する。
判定済コードのなかに算出した版を表わす版コードがあると判定した場合、差分版選択工程S751に戻り、次の差分版データを選択する。
判定済コードのなかに算出した版を表わす版コードがないと判定した場合、生成版記憶工程S759へ進む。
その後、差分版選択工程S751に戻り、次の差分版データを選択する。
その後、適用判定処理S740を終了する。
通知した差分要求メッセージに対する応答として、配布装置100から差分データが配布されてきた場合は、差分取得工程S767へ進む。
通知した差分要求メッセージが拒否された場合は、適用判定処理S740を終了する。
その後、更新版判定工程S741に戻り、適用判定処理S740を最初からやり直す。
この図において、有版データ530d〜530iは、丸で示し、差分データ520d〜520kは、矢印で示している。矢印の根元は、その差分データを適用できる有版データを示し、矢印の先は、その差分データを適用した結果として生成される有版データを示す。例えば、差分データ520dは、有版データ530dに適用できる差分データであり、有版データ530dに適用した結果、有版データ530eを生成することができる差分データである。
以下、図17に示したフローチャートを参照しつつ、適用判定部240の動作の具体例を説明する。
記憶した生成版コードのなかに更新版コードがないので、適用版記憶工程S743へ進み、単独適用判定部241は、記憶した生成版コードを適用版コードとして記憶する。これにより、単独適用判定部241は、適用版コードとして、有版データ530dの版を表わす版コードを記憶する。
生成版コードがあったので、判定済記憶工程S745へ進み、単独適用判定部241は、記憶した適用版コードを判定済コードとして記憶する。これにより、単独適用判定部241は、適用版コードとして、有版データ530dの版を表わす版コードを記憶する。
適用判定工程S753において、差分データ520dは有版データ530dに適用できるので、生成版算出工程S755へ進み、単独適用判定部241は、差分データ520dを有版データ530dに適用した結果として生成される有版データが有版データ530eであることを算出する。
判定済判定工程S757において、判定済コードのなかに有版データ530eの版を表わす版コードがないので、生成版記憶工程S759へ進み、単独適用判定部241は、有版データ530eの版を表わす版コードを生成版コードとして記憶する。
適用判定工程S753において、差分データ520eは有版データ530dに適用できないので、差分版選択工程S751に戻る。
差分データ520fは有版データ530dに適用できるので、単独適用判定部241は、適用の結果得られる有版データが有版データ530gであることを算出する。判定済コードのなかに有版データ530gの版を表わす版データがないので、単独適用判定部241は、有版データ530gの版を表わす版コードを生成版コードとして記憶する。これにより、単独適用判定部241は、生成版コードとして、有版データ530eの版を表わす版コードと、有版データ530gの版を表わす版コードとを記憶する。
未処理の差分版コードがなくなると、更新版判定工程S741に戻り、単独適用判定部241は、記憶した生成版コードのなかに更新版コードがあるか否かを判定する。単独適用判定部241が記憶した生成版コードが表わす版の有版データは、有版データ530e及び有版データ530gなので、有版データ530iの版を表わす更新版コードと一致する生成版コードはない。そのため、適用版記憶工程S743へ進む。
判定済記憶工程S745において、合成適用判定部242は、記憶した適用版コードを単独適用判定部241が記憶した判定済コードと合わせて、判定済コードとして記憶する。合成適用判定部242が記憶した判定済コードが表わす版の有版データは、有版データ530d,530e,530gの3つである。
例えば、合成適用判定部242が、差分データ520dに対応する差分版データを選択した場合、差分データ520dは有版データ530eにも有版データ530gにも適用できないので、差分版選択工程S751に戻る。
合成適用判定部242が、差分データ520eに対応する差分版データを選択した場合、差分データ520eは有版データ530eに適用できるので、合成適用判定部242は、有版データ530fが生成できることを算出し、有版データ530fは判定済でないので、有版データ530fの版を表わす版コードを生成版コードとして記憶する。
合成適用判定部242が、差分データ520gに対応する差分版データを選択した場合、差分データ520gは有版データ530eに適用できる。合成適用判定部242は、有版データ530gを生成できることを算出するが、有版データ530gは判定済なので、差分版選択工程S751に戻る。
このようにして、差分版記憶部223が記憶したすべての差分版コードについての処理が終わると、合成適用判定部242は、生成版コードとして、有版データ530fの版を表わす版コードと、有版データ530hの版を表わす版コードとを記憶している。
差分データ520h,520k以外は、有版データ530fにも有版データ530hにも適用できない。また、差分データ520hを適用した結果として生成できる有版データ530hは判定済である。したがって、合成適用判定部242が差分データ520k以外に対応する差分版コードを選択した場合は、差分版選択工程S751に戻り、差分データ520kに対応する差分版コードを選択した場合、合成適用判定部242は、生成版コードとして、有版データ530iの版を表わす版コードを記憶する。
このようにして、差分版記憶部223が記憶したすべての差分版コードについての処理が終わると、合成適用判定部242は、生成版コードとして、有版データ530iの版を表わす版コードを記憶する。
生成版コードがないので、適用版記憶工程S743で差分要求工程S765へ進む。差分要求部243は、差分要求メッセージを生成し、配布装置100に対して通知する。
差分管理装置は、データを記憶する記憶装置(RAM914・HDD920など)と、データを処理する処理装置(CPU911)と、差分記憶部115,222と、差分合成部133,224とを有する。
上記差分記憶部115,222は、上記記憶装置を用いて、上記有版データの第一の版530aと第二の版530bとの間の差分を表わす第一の差分データ520と、上記有版データの第二の版530bと第三の版530cとの間の差分を表わす第二の差分データ520bとを記憶する。
上記差分合成部133,224は、上記処理装置を用いて、上記差分記憶部115,222が記憶した第一の差分データ520と第二の差分データ520bとを合成して、上記有版データの第一の版530aと第三の版530cとの間の差分を表わす第三の差分データ520cを生成する。
上記更新コマンド521は、複写コマンドと追加コマンドとのうち少なくともいずれかを含む。
上記複写コマンドは、上記有版データの更新後の版530b,530cのうち上記有版データの更新前の版530a,530bに同一の部分が存在する含有部分(一致部分・複写部分)について、上記有版データの更新前の版530a,530bのうち上記含有部分と同一の部分の位置(ソース524)を示し、上記同一の部分を上記含有部分に複写することを表わす。
上記追加コマンドは、上記有版データの更新後の版530b,530cのうち上記有版データの更新前の版530a,530bに同一の部分が存在しない非含有部分(不一致部分・追加部分)について、上記非含有部分と同一の追加データ(ソース524)を有し、上記追加データを上記非含有部分に追加することを表わす。
上記有版データ記憶部211は、上記記憶装置を用いて、上記有版データ530の第一の版(現版データ)を記憶する。
上記有版データ更新部212は、上記処理装置を用いて、上記差分合成部224が生成した第三の差分データ520cに基づいて、上記有版データ記憶部211が記憶した有版データ530の第一の版(現版データ)を更新して、上記有版データ530の第三の版(更新版データ)を生成する。
上記更新版取得部231は、上記処理装置を用いて、上記有版データ記憶部211が記憶した有版データ(現版データ)を更新して生成する版を表わす更新版コードを取得する。
上記単独適用判定部241は、上記処理装置を用いて、上記差分記憶部222が記憶した差分データ520のなかに、上記有版データ記憶部211が記憶した有版データ(現版データ)を更新して上記更新版取得部231が取得した更新版コードが表わす版の有版データ(更新版データ)を生成できる単独適用差分データがあるか否かを判定する。
上記合成適用判定部242は、上記処理装置を用いて、上記差分記憶部222が記憶した差分データ520のなかに単独適用差分データがないと上記単独適用判定部241が判定した場合に、上記差分記憶部222が記憶した差分データ520のなかに、複数の差分データを合成することにより、上記単独適用差分データを生成することができる複数の合成適用差分データがあるか否かを判定する。
上記差分合成部224は、上記処理装置を用いて、上記差分記憶部222が記憶した差分データのなかに、上記複数の合成適用差分データがあると上記合成適用判定部242が判定した場合に、上記差分記憶部222が記憶した複数の合成適用差分データを合成して、上記単独適用差分データを生成する。
上記有版データ更新部212は、上記処理装置を用いて、上記差分記憶部222が記憶した差分データ520のなかに単独適用差分データがあると上記単独適用判定部241が判定した場合に、上記差分記憶部222が記憶した単独適用差分データに基づいて、上記有版データ記憶部211が記憶した有版データ(現版データ)を更新し、上記差分記憶部222が記憶した差分データ520のなかに、上記複数の合成適用差分データがあると上記合成適用判定部242が判定した場合に、上記差分合成部224が生成した単独適用差分データに基づいて、上記有版データ記憶部211が記憶した有版データ(現版データ)を更新する。
上記差分要求部243は、上記処理装置を用いて、上記差分記憶部222が記憶した差分データのなかに、上記複数の合成適用差分データがないと上記合成適用判定部242が判定した場合に、上記単独適用差分データ、および、上記複数の合成適用差分データ、および、上記差分記憶部が記憶した差分データと合成することにより上記単独適用差分データを生成できる補充差分データのうち少なくともいずれかを要求する差分要求メッセージを差分配布装置(配布装置100)に対して通知する。
上記差分取得部221は、上記処理装置を用いて、上記差分要求部243が通知した差分要求メッセージに対する応答として上記差分配布装置が配布した差分データを取得する。
上記差分記憶部222は、上記記憶装置を用いて、上記差分取得部221が取得した差分データを記憶する。
上記要求取得部131は、上記処理装置を用いて、上記第三の差分データを要求する差分要求メッセージを端末装置200から取得する。
上記差分通知部は、上記差分合成部133が生成した第三の差分データ520cを上記端末装置200に対して通知する。
上記旧版データ記憶部111は、上記記憶装置を用いて、上記有版データの旧版(旧版データ)を記憶する。
上記新版データ取得部112は、上記処理装置を用いて、上記有版データの新版(新版データ)を取得する。
上記差分生成部113は、上記処理装置を用いて、上記旧版データ記憶部111が記憶した有版データの旧版(旧版データ)と、上記新版データ取得部112が取得した有版データの新版(新版データ)との間の差分データを生成する。
上記差分記憶部115は、上記記憶装置を用いて、上記差分生成部113が生成した差分データを記憶する。
上記旧版データ更新部114は、上記処理装置を用いて、上記旧版データ記憶部111が記憶した有版データ(旧版データ)を更新して、上記新版データ取得部112が取得した有版データの新版(新版データ)を記憶させる。
上記差分記憶部115は、上記記憶装置を用いて、上記差分生成部113が生成した順方向差分データと逆方向差分データとを記憶する。
上記記憶装置が、上記有版データの第一の版530aと第二の版530bとの間の差分を表わす第一の差分データ520と、上記有版データの第二の版530bと第三の版530cとの間の差分を表わす第二の差分データ520bとを記憶する。
上記処理装置が、上記記憶装置が記憶した第一の差分データ520と第二の差分データ520bとを合成して、上記有版データの第一の版530aと第三の版530cとの間の差分を表わす第三の差分データ520cを生成する。
実施の形態2について、図19〜図28を用いて説明する。
ソフトウェア配布サーバ10(配布装置100)は、ソフトウェアを配布するためのサーバである。ソフトウェア配布サーバ10は、一般的にはWEBサーバで構成される。ソフトウェア配布サーバ10は、ネットワーク20であるインターネットや無線ネットワークからの要求を受け付ける。あるいは、ソフトウェア配布サーバ10は、情報を一斉送信する放送サーバであってもよい。
端末装置30は、一般的なPCやサーバあるいは携帯端末など配布されるソフトウェアが動作する装置である。
ソフトウェアの配布は、ネットワーク20を使った配布以外にも物理的な郵送という手段で、DVDやCD−Rを使って配送することもある。
ソフトウェア配布サーバは、対象とする端末のソフトウェアの複数のバージョンであるソフトウェア11(有版データ)を保持する。対象とする端末は複数あっても良いが、対象機種ごとに管理する。また、対象機種の最新のソフトウェアバージョンがリリースされるたび最新版が追加となる。
差分情報配布部15は、差分を配布する。差分情報配布部15は、一斉送信をすることができる。一斉送信は実質的には相手を決めて逐次送信していく方式でもかまわないし、マルチキャストいう技術を利用してネットワーク200上で経路が同じ部分は共通のデータとして送信し、経路が分かれるところで別データで送信してもかまわない。このようにしてネットワークトラフィックを削減するように動作する。
差分受信部31(差分取得部221)は、ソフトウェア配布サーバ10からネットワーク200を経由して一斉配信されたものを受信する。あるいは、差分受信部31は、端末上のユーザからのリクエストや、設定された情報に従ったリクエストに応じてサーバから送られてくる差分情報を受信する。または、差分受信部31は、郵送で送られてきた情報に関してはCD−Rなどの外部デバイスからの情報を読み取ることによって受信する。
ステップ41で、ソフトウェア配布サーバ10は、まず対象端末の最初のソフトウェアイメージを保存する。
ステップ42で、ソフトウェア配布サーバ10は、次の版のリリースを待ち、リリースされればステップ43に移行する。
ステップ44で、差分抽出部12は、差分を抽出する。この差分は一般にバイナリ差分である。その例としては新版と旧版をサーチし、同じ部分があれば同じであることを示し、位置がずれていてもCOPYとして旧版のある場所から新版のある場所へCOPYすれば良いことを示すCOPYコマンドと、新たなデータであることを示すDATAコマンドからなる差分情報を抽出する。
ステップ46で、差分情報配布部15は、差分を配布する。配布にはブロードキャストやマルチキャストあるいは逐次送信でもかまわない。通常のネットワークを利用するだけでなくDVDなどの媒体を使って郵送というのでもかまわない。
ステップ48,49で、次期リリースがなされた場合、ソフトウェア配布サーバ10は、ステップ43からの処理を繰り返す。
ステップ51で、端末装置30は、差分情報の受信待ちをする。受信待ちは、端末自らが要求を出してダウンロードを待っている場合もあれば、一斉送信や放送を待っている場合もある。即ち、イベントを待っている場合もある。
ステップ51で差分情報を受信したら、ステップ52で、差分適用部34は、適用可能かどうかの判断を行う。即ち、その差分情報がどのバージョンを対象にているのかの情報と自端末のバージョンとを比較し、同じものであれば適用可能であると判断できる。適用可能と判断されれば、端末装置30は、実際に端末に適用するかどうかをユーザに問い合わせて、ステップ56でユーザの判断を入力する。
この情報は、図22のステップ45での保存時や、端末側らの要求に応じてステップ50で差分を送信する際に利用する。
差分情報管理部13は、複数の差分間の情報を2次元のテーブルで持ち、該当する場所にはそれぞれに対応するファイル名を入れておく。バージョンダウンのことも考えると、逆の差分もおいてもかまわない。
また、ステップ47で旧版を毎回消す場合には、隣の版との差分しかなく、他の差分は動的に合成処理するか、端末側で合成する。
この例は、「Ver1.0」「Ver,2.0」「Ver3.0」の3つの版がある場合を示している。
「Ver1.0」と「Ver2.0」の比較で、全く同じ場所に同じコードがある部分と、ずれてコードがある部分をCOPYコマンド(複写コマンド)で表現する。一方全く違うデータがある部分をDATAコマンド(追加コマンド)で表現する。
新版のアドレス順にコマンドを記載することにより、消えてしまうデータに関しては気にする必要ないので、DELETEといったコマンド(削除コマンド)はなくてよい。
「Ver2.0」から「Ver3.0」への差分情報のうち、aの部分のCOPYコマンドは実際にはまだ存在しない「Ver2.0」からのCOPYコマンドである。この領域に対する旧差分情報を見ると、一部はCOPYコマンドで、一部はDATAコマンドである。こういう場合は、aの部分はCOPYコマンドで「Ver1.0」からコピーする部分と、DATAコマンドとに分けて合成する。
次のDATAコマンド部分は、そもそも「Ver1.0」上にもないデータであるため、DATAコマンドをそのまま使う。
最後のcの部分は、COPYコマンドとDATAコマンドとに分ける。
このようにして、差分情報を合成する。
ステップ91で、差分合成部33は、新差分と旧差分とを読みこむ。差分合成部33は、新差分の方のアドレスの低い方か高い方かどちらか一方から解析を行っていく。
ステップ92で、差分合成部33は、コマンドを取り出す。最後であれば、終了する。
ステップ93で、差分合成部33は、そのコマンドがDATAコマンドかどうか判定する。DATAコマンドであれば、差分合成部33は、そのままDATAコマンドを出力し、再びステップ92で次のコマンドを抽出する。
なお、ステップ95で次のコマンドがなかった場合、ステップ92で、次の新差分のコマンドの処理に移行する。
差分合成部33は、各コマンドごとに新版となるアドレス情報とサイズ情報をペアにして保持しておく。これにより、アドレス情報からその部分にどのコマンドがあるかを2分木探索で探すことができる。
ソフトウェア配布サーバ10は、サーバ上には複数のバージョン間の差分抽出部12(差分生成部113)と、差分情報管理部13(差分記憶部115、差分版記憶部125)と、端末へ差分を配布する差分情報配布部15(差分配布部134)とを有する。
端末装置30は、配布された差分を記憶する差分記憶部32と、複数の差分が送られた場合には旧差分と合成する差分合成部33と、差分を適用する差分適用部34(有版データ更新部212)とを有する。
Claims (9)
- 3以上の版を有する有版データについて、上記有版データの2つの版の間の差分を表わす差分データを管理する差分管理装置において、
データを記憶する記憶装置と、データを処理する処理装置と、差分記憶部と、差分合成部と、要求取得部とを有し、
上記差分記憶部は、上記記憶装置を用いて、上記有版データの第一の版と第二の版との間の差分を表わす第一の差分データと、上記有版データの第二の版と第三の版との間の差分を表わす第二の差分データとを記憶し、
上記要求取得部は、端末装置が有する上記有版データの版に関する情報を含み、上記差分データを要求するための差分要求メッセージを取得し、
上記差分合成部は、上記差分要求メッセージを上記要求取得部が取得する前に、上記処理装置を用いて、上記差分記憶部が記憶した第一の差分データと第二の差分データとを合成して、上記有版データの第一の版と第三の版との間の差分を表わす第三の差分データを生成し、
上記処理装置は、上記差分要求メッセージに上記端末装置の目的とする上記有版データの版に関する情報が含まれている場合には上記端末装置の目的とする上記有版データの版に更新するための上記差分データを配布するよう判断し、上記差分要求メッセージに上記端末装置の目的とする上記有版データの版に関する情報が含まれていない場合には最新版に更新するための上記差分データを配布するよう判断し、
上記処理装置は、上記差分要求メッセージに基づき上記端末装置に対して上記第一の差分データと上記第二の差分データの両方を与えることが必要な場合に、上記第一の差分データ及び上記第二の差分データの代わりに上記第三の差分データを上記端末装置に配布するよう処理することを特徴とする差分管理装置。 - 上記差分データは、上記有版データの更新前の版を更新後の版に更新するための更新コマンドを表わし、
上記更新コマンドは、複写コマンドと追加コマンドとのうち少なくともいずれかを含み、
上記複写コマンドは、上記有版データの更新後の版のうち上記有版データの更新前の版に同一の部分が存在する含有部分について、上記有版データの更新前の版のうち上記含有部分と同一の部分の位置を示し、上記同一の部分を上記含有部分に複写することを表わし、
上記追加コマンドは、上記有版データの更新後の版のうち上記有版データの更新前の版に同一の部分が存在しない非含有部分について、上記非含有部分と同一の追加データを有し、上記追加データを上記非含有部分に追加することを表わすことを特徴とする請求項1に記載の差分管理装置。 - 上記差分合成部は、上記処理装置を用いて、上記第二の差分データが上記複写コマンドを含む場合、上記複写コマンドに基づいて、上記有版データの第二の版のうち上記含有部分に複写する部分を判定して複写部分とし、上記第一の差分データに基づいて、上記複写部分のうち上記有版データの第一の版に含まれる承継部分について、上記有版データの第一の版の一部を上記含有部分のうち上記承継部分に対応する部分に複写することを表わす複写コマンドを生成し、上記複写部分のうち上記有版データの第一の版に含まれない非承継部分について、上記第一の差分データに含まれる追加コマンドが有する追加データを上記含有部分のうち上記非承継部分に対応する部分に追加することを表わす追加コマンドを生成し、上記第二の差分データが追加コマンドを含む場合、上記追加コマンドに基づいて、上記追加コマンドが有する追加データを上記非含有部分に追加することを表わす追加コマンドを生成することにより、上記第三の差分データを生成することを特徴とする請求項2に記載の差分管理装置。
- 上記差分管理装置は、更に、有版データ記憶部と、有版データ更新部とを有し、
上記有版データ記憶部は、上記記憶装置を用いて、上記有版データの第一の版を記憶し、
上記有版データ更新部は、上記処理装置を用いて、上記差分合成部が生成した第三の差分データに基づいて、上記有版データ記憶部が記憶した有版データの第一の版を更新して、上記有版データの第三の版を生成することを特徴とする請求項1乃至請求項3のいずれかに記載の差分管理装置。 - 上記差分管理装置は、更に、更新版取得部と、単独適用判定部と、合成適用判定部とを有し、
上記更新版取得部は、上記処理装置を用いて、上記有版データ記憶部が記憶した有版データを更新して生成する版を表わす更新版コードを取得し、
上記単独適用判定部は、上記処理装置を用いて、上記差分記憶部が記憶した差分データのなかに、上記有版データ記憶部が記憶した有版データを更新して上記更新版取得部が取得した更新版コードが表わす版の有版データを生成できる単独適用差分データがあるか否かを判定し、
上記合成適用判定部は、上記処理装置を用いて、上記差分記憶部が記憶した差分データのなかに単独適用差分データがないと上記単独適用判定部が判定した場合に、上記差分記憶部が記憶した差分データのなかに、複数の差分データを合成することにより、上記単独適用差分データを生成することができる複数の合成適用差分データがあるか否かを判定し、
上記差分合成部は、上記処理装置を用いて、上記差分記憶部が記憶した差分データのなかに、上記複数の合成適用差分データがあると上記合成適用判定部が判定した場合に、上記差分記憶部が記憶した複数の合成適用差分データを合成して、上記単独適用差分データを生成し、
上記有版データ更新部は、上記処理装置を用いて、上記差分記憶部が記憶した差分データのなかに単独適用差分データがあると上記単独適用判定部が判定した場合に、上記差分記憶部が記憶した単独適用差分データに基づいて、上記有版データ記憶部が記憶した有版データを更新し、上記差分記憶部が記憶した差分データのなかに、上記複数の合成適用差分データがあると上記合成適用判定部が判定した場合に、上記差分合成部が生成した単独適用差分データに基づいて、上記有版データ記憶部が記憶した有版データを更新することを特徴とする請求項4に記載の差分管理装置。 - 上記差分管理装置は、更に、旧版データ記憶部と、新版データ取得部と、差分生成部と、旧版データ更新部とを有し、
上記旧版データ記憶部は、上記記憶装置を用いて、上記有版データの旧版を記憶し、
上記新版データ取得部は、上記処理装置を用いて、上記有版データの新版を取得し、
上記差分生成部は、上記処理装置を用いて、上記旧版データ記憶部が記憶した有版データの旧版と、上記新版データ取得部が取得した有版データの新版との間の差分データを生成し、
上記差分記憶部は、上記記憶装置を用いて、上記差分生成部が生成した差分データを記憶し、
上記旧版データ更新部は、上記処理装置を用いて、上記旧版データ記憶部が記憶した有版データを更新して、上記新版データ取得部が取得した有版データの新版を記憶させることを特徴とする請求項1乃至請求項5のいずれかに記載の差分管理装置。 - 上記差分生成部は、上記処理装置を用いて、上記有版データの旧版を新版に更新するための順方向差分データと、上記有版データの新版を旧版に戻すための逆方向差分データとを生成し、
上記差分記憶部は、上記記憶装置を用いて、上記差分生成部が生成した順方向差分データと逆方向差分データとを記憶することを特徴とする請求項6に記載の差分管理装置。 - 3以上の版を有する有版データについて、上記有版データの2つの版の間の差分を表わす差分データを管理する差分管理装置であって、上記有版データの第一の版と第二の版との間の差分を表わす第一の差分データと、上記有版データの第二の版と第三の版との間の差分を表わす第二の差分データとを記憶する差分記憶部を備える差分管理装置のコンピュータプログラムにおいて、
端末装置が有する上記有版データの版に関する情報を含み、上記差分データを要求するための差分要求メッセージを取得する要求取得処理と、
上記要求取得処理により上記差分要求メッセージを取得する前に、上記差分記憶部が記憶した第一の差分データと第二の差分データとを合成して、上記有版データの第一の版と第三の版との間の差分を表わす第三の差分データを生成する差分合成処理と、
上記差分要求メッセージに上記端末装置の目的とする上記有版データの版に関する情報が含まれている場合には上記端末装置の目的とする上記有版データの版に更新するための上記差分データを配布するよう判断し、上記差分要求メッセージに上記端末装置の目的とする上記有版データの版に関する情報が含まれていない場合には最新版に更新するための上記差分データを配布するよう判断する処理と、
上記差分要求メッセージに基づき上記端末装置に対して上記第一の差分データと上記第二の差分データの両方を与えることが必要な場合に、上記第一の差分データ及び上記第二の差分データの代わりに上記第三の差分データを上記端末装置に配布する処理とをコンピュータである上記差分管理装置に実行させるためのコンピュータプログラム。 - データを記憶する記憶装置とデータを処理する処理装置とを有する差分管理装置が、3以上の版を有する有版データについて、上記有版データの2つの版の間の差分を表わす差分データを管理する差分管理方法において、
上記記憶装置が、上記有版データの第一の版と第二の版との間の差分を表わす第一の差分データと、上記有版データの第二の版と第三の版との間の差分を表わす第二の差分データとを記憶し、
上記処理装置が、端末装置が有する上記有版データの版に関する情報を含み、上記差分データを要求するための差分要求メッセージを取得する前に、上記記憶装置が記憶した第一の差分データと第二の差分データとを合成して、上記有版データの第一の版と第三の版との間の差分を表わす第三の差分データを生成し、
上記差分要求メッセージに上記端末装置の目的とする上記有版データの版に関する情報が含まれている場合には上記端末装置の目的とする上記有版データの版に更新するための上記差分データを配布するよう判断し、上記差分要求メッセージに上記端末装置の目的とする上記有版データの版に関する情報が含まれていない場合には最新版に更新するための上記差分データを配布するよう判断し、
上記差分要求メッセージに基づき上記端末装置に対して上記第一の差分データと上記第二の差分データの両方を与えることが必要な場合に、上記第一の差分データ及び上記第二の差分データの代わりに上記第三の差分データを上記端末装置に配布するよう処理することを特徴とする差分管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009266352A JP5729901B2 (ja) | 2009-11-24 | 2009-11-24 | 差分管理装置及びコンピュータプログラム及び差分管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009266352A JP5729901B2 (ja) | 2009-11-24 | 2009-11-24 | 差分管理装置及びコンピュータプログラム及び差分管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011113123A JP2011113123A (ja) | 2011-06-09 |
JP5729901B2 true JP5729901B2 (ja) | 2015-06-03 |
Family
ID=44235438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009266352A Expired - Fee Related JP5729901B2 (ja) | 2009-11-24 | 2009-11-24 | 差分管理装置及びコンピュータプログラム及び差分管理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5729901B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5696018B2 (ja) * | 2011-09-28 | 2015-04-08 | クラリオン株式会社 | 対象データの配置方法、対象データ配置システム、および、それらのサーバ装置、クライアント装置、プログラム |
JP6386302B2 (ja) * | 2014-08-29 | 2018-09-05 | 株式会社スクウェア・エニックス | パッチ適用システム、パッチ適用プログラム、パッチ提供装置、及びパッチ適用方法 |
JP2019101917A (ja) * | 2017-12-06 | 2019-06-24 | クラリオン株式会社 | 更新装置、更新システム |
JP7112052B2 (ja) * | 2018-09-10 | 2022-08-03 | 三菱電機株式会社 | 空気調和システムおよび空気調和システムのプログラム更新方法 |
CN112486561B (zh) * | 2020-11-25 | 2024-03-22 | 北京电力交易中心有限公司 | 基于区块链的版本回溯方法、装置及相关设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06187206A (ja) * | 1992-12-21 | 1994-07-08 | Fuji Xerox Co Ltd | ファイル管理装置 |
JP2006031455A (ja) * | 2004-07-16 | 2006-02-02 | Nec Corp | 電子メールを用いた携帯端末のソフトウェア更新システムおよび方法、並びにサーバ装置 |
JP5040301B2 (ja) * | 2006-12-27 | 2012-10-03 | 日本電気株式会社 | 端末管理システム、方法、及び、プログラム |
JP4249793B2 (ja) * | 2007-09-26 | 2009-04-08 | 三菱電機株式会社 | 差分データ生成装置、差分データ生成装置の差分データ生成方法および差分データ生成プログラム |
JP2009086853A (ja) * | 2007-09-28 | 2009-04-23 | Fujitsu Social Science Laboratory Ltd | データ合成処理装置,プログラム,および処理方法 |
-
2009
- 2009-11-24 JP JP2009266352A patent/JP5729901B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2011113123A (ja) | 2011-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11409703B2 (en) | File versions within content addressable storage | |
JP5705869B2 (ja) | クラスタベースのjavaアプリケーションシステムのコードをロードおよび更新する装置および方法 | |
US9690671B2 (en) | Manifest-based snapshots in distributed computing environments | |
US7681076B1 (en) | Method and an apparatus to perform fast log replay | |
JP5729901B2 (ja) | 差分管理装置及びコンピュータプログラム及び差分管理方法 | |
CN100452038C (zh) | 管理文件修订的方法与系统 | |
US6374400B1 (en) | Code server | |
US10656845B2 (en) | System and method for managing container image | |
US7676503B2 (en) | Hybrid computer restore using network service | |
US20190272255A1 (en) | Files having unallocated portions within content addressable storage | |
EP0752660A1 (en) | Client-server computer system and method utilizing a local client disk drive as a data cache | |
US20040128269A1 (en) | System and method for managing data through families of inter-related metadata tables | |
US20060015527A1 (en) | System and method for transport of objects utilizing LDAP directory structure | |
US8225192B2 (en) | Extensible cache-safe links to files in a web page | |
Mundkur et al. | Disco: a computing platform for large-scale data analytics | |
US11537617B2 (en) | Data system configured to transparently cache data of data sources and access the cached data | |
CN111200634B (zh) | 缓存资源联动更新方法、系统及服务器 | |
US8266189B2 (en) | Adapting between coupled and decoupled provider interfaces | |
US20090006619A1 (en) | Directory Snapshot Browser | |
US20100262647A1 (en) | Granular data synchronization for editing multiple data objects | |
US10430341B2 (en) | Log-structured storage method and server | |
US8332844B1 (en) | Root image caching and indexing for block-level distributed application management | |
US8719812B1 (en) | Methods, systems, and computer readable media for dynamically modifying and utilizing a software package description for software installation | |
US20160323379A1 (en) | Distributed storage of software images in computing systems | |
US20210240583A1 (en) | Method and system for seamless database backup live-mounting using self-contained database backups |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120808 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20121207 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20131030 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20131105 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131226 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140121 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140418 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20140428 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20140704 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150320 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150407 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5729901 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |