(57)【要約】      （修正有）【課題】旧データと新データの差分を配信することにより、データサイズが小さく、配信時間を短縮することができる。【解決手段】旧データ１１２と新データ１１４からデータ更新用の差分データを生成する際、旧データ１１２と新データ１１４のうち少なくともデータ圧縮されて保存されているデータ成分をそれぞれ展開部１１３と展開部１１５により非圧縮データに展開し、その後、差分抽出部１１６において対応するデータ成分同士の差分を取得し、取得された差分データを差分出力部１１７から配信する手法を提供する。【選択図】図２
2011060039.tif 000002
【特許請求の範囲】
【請求項１】
圧縮データ形式のデータ成分を含む旧データと新データを有するサーバシステムから、圧縮データ形式のデータ成分を含む旧データを有するクライアントシステムへ、上記旧データの更新に必要な差分データを配信する差分配信方式において、
上記サーバシステムは、
上記旧データと上記新データのそれぞれから圧縮データ形式のデータ成分を抽出して展開する手段と、
上記展開により復元された非圧縮のデータ成分のうち対応するデータ成分間で差分データを生成する手段と、
生成された非圧縮の差分データを配信する手段と
を有することを特徴とする圧縮データの差分配信方式。
【請求項２】
圧縮方式が異なる複数種類のデータ成分が上記旧データと上記新データに含まれるとき、上記データ成分の展開時には、各データ成分の生成時に使用された圧縮方式に対応する展開方式が選択的に適用される
ことを特徴とする請求項１に記載の差分配信方式。
【請求項３】
上記旧データと上記新データがファイルシステムである場合、上記手段によるデータ成分の展開に先立って、各パスに対応するデータ成分が旧データと新データの両方に存在すか否かを判定し、新旧データに対応するデータ成分が存在する場合には、上記手段によるデータ成分間の差分データの生成と配信を実行し、新データにのみ存在するデータ成分の場合には、上記手段による展開及び差分データの生成を実行することなく該当するデータ成分の配信を実行し、旧データにのみ存在するデータ成分の場合には、上記手段による展開及び差分データの生成も配信も行わない
ことを特徴とする請求項１又は２に記載の差分配信方式。
【請求項４】
圧縮データの形式で存在するデータ成分のメモリ内の開始位置及びサイズをデータベースに蓄積し、データ成分へのアクセス時に使用する
ことを特徴とする請求項１−３のいずれか１項に記載の差分配信方式。
【請求項５】
圧縮データ形式のデータ成分を含む旧データと新データを有するサーバシステムから、圧縮データ形式のデータ成分を含む旧データを有するクライアントシステムへ、上記旧データの更新に必要な差分データを配信する差分配信方式において、
上記サーバシステムは、
上記旧データと上記新データのそれぞれから圧縮データ形式のデータ成分を抽出して展開する手段と、
上記展開により復元された非圧縮のデータ成分のうち対応するデータ成分間で差分データを生成する手段と、
生成された非圧縮の差分データを配信する手段とを有し、
上記クライアントシステムは、
システム内の旧データから圧縮データ形式のデータ成分を抽出して展開し、受信した上記差分データを適用する手段と、
上記差分データの適用により更新されたデータ成分を圧縮して圧縮データ形式のデータ成分を生成し、その後、圧縮データ形式のデータ成分を統合して新データを生成する手段と
を有することを特徴とする圧縮データの差分配信方式。
【請求項６】
圧縮データ形式のデータ成分を含む旧データと新データを有するサーバシステムから、圧縮データ形式のデータ成分を含む旧データを有するクライアントシステムへ、上記旧データの更新に必要な差分データを配信する際に使用する差分配信方法において、
上記サーバシステムに格納されている上記旧データと上記新データのそれぞれから圧縮データ形式のデータ成分を抽出して展開するステップと、
上記展開により復元された非圧縮のデータ成分のうち対応するデータ成分間で差分データを生成するステップと、
生成された非圧縮の差分データを配信するステップと
を有することを特徴とする圧縮データの差分配信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、資源の豊富なサーバシステムから組込み機器や端末装置等の資源の乏しいクライアントシステムに、圧縮データの更新に必要な差分データの配信に用いて好適な方式及び方法に関する。
【背景技術】
【０００２】
最近、家庭内のテレビ、エアコン、冷蔵庫その他の家電機器をネットワークに接続しようとする動きがある。これに伴い、家電機器で用いられるデータを高速に更新するニーズが現れている。家電機器は、一般にメインメモリ、外部メモリその他の資源に乏しく、利用可能なネットワークの送信容量も少ない。このため、更新前の旧データを有する家電機器では、更新用の新データを受け付けるメモリ等が不足することがある。
【０００３】
このような場合、新データと旧データの差分データを家電メーカー等のホスト側で作成し、サイズの小さい差分データのみを家電機器に送り、家電機器内で旧データと差分データから新データを生成するというアプローチがある。このアプローチの採用により、家電機器内のメモリが少ない場合でも、データの更新や短時間での更新データの送信が可能になる。
【０００４】
一般にクライアントサーバシステムにおいては、クライアントシステム側のデータ更新に差分データを配信する手法が広く採用されている（図１参照）。例えばxdeltaと呼ばれるソフトウェアが、サーバ１０１における差分データの作成に用いられている。なお、図１は、データ圧縮されて格納されるデータ成分に関するデータ更新に関係するデータ配信についてのみ表している。
【０００５】
このソフトウェアは、データ圧縮された状態で存在する旧データ１０２と新データ１０３に共通するストリング（以下、「共通ストリング」という。）を求めることにより、以下に示すデータ構造を有する差分データを差分抽出部１０４において生成する手法を採用する（非特許文献１）。なお、ここでの差分データは、共通ストリングをコピー（copy）命令で表し、新データに固有のストリングの中で特定の文字が繰り返し並んだストリングをラン（run）命令で表し、それ以外の新データに固有のストリングをアッド（add）命令で表すデータ構造をしている。
【０００６】
このソフトウェアは、旧データと新データに相関がある場合、差分データのサイズを旧データや新データに比べて数分の一程度に圧縮できることが知られている。一般に旧データと新データの相関が高いほど、生成される差分データのサイズは小さくなる。
【０００７】
なお、生成された差分データは差分出力部１０５からクライアント１０６の差分受信部１０７にネットワーク経由で送信され、差分適用部１０８において旧データ１０９に適用される。その結果、クライアント１０６内で更新後の新データ１１０が再構築される。このように、従来手法におけるデータの更新は、差分データの生成も差分データの適用も圧縮データのまま実行される。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】D. Korn, J. MacDonald, J. Mogul and K. Vo：The VCDIFF Generic Differencing and Compression Data Format：URL＝http://tools.ietf.org/html/rfc3284
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、更新対象となるデータのサイズは一般に大きい。このため、更新対象のデータが、圧縮方式の異なる複数種類のデータ成分で構成されたデータ構造を有することがしばしばある。この場合、圧縮前の旧データと新データの違いが少しだとしても、データ圧縮後のビットパターンが大きく変化し、結果的にビットパターン間の相関は低下する。
【００１０】
このため、従来手法のようにデータ圧縮後のビットパターン間の差分を求めて配信する方法は、配信される差分データのサイズが非常に大きくならざるを得ず、クライアントシステム側におけるデータの更新が困難になる場合がある。なお、同じ問題は、データ圧縮に使用する圧縮方式が１種類であったとしても発生する。
【課題を解決するための手段】
【００１１】
そこで、発明者らは、旧データと新データからデータ更新用の差分データを生成する際、旧データと新データのうち少なくともデータ圧縮されて保存されているデータ成分を非圧縮データに展開し、その後、対応するデータ成分同士の差分を取得し、取得された差分データを配信する手法を提供する。
【発明の効果】
【００１２】
本発明により、新旧データ間の相関度が非圧縮データにおいて高い場合には、利用可能な資源が乏しいクライアントシステムに対するデータ更新用の差分データのサイズを確実に小さくことができる。従来手法に比してデータサイズが小さくなることで、配信時間の短縮とクライアントシステムに必要なメモリ容量の削減とを実現することができる。
【図面の簡単な説明】
【００１３】
【図１】従来の差分配信方式を説明するブロック図。
【図２】本発明の差分配信方式を説明するブロック図。
【図３】本発明の差分配信方式をオペレーションシステムの配信に適用する場合の概略処理例を説明する図。
【図４】ディレクトリデータの構造例を示す図である。
【図５】本発明の差分配信方式をファイルシステムの配信に用いる場合の概略処理例を説明する図。
【図６】ディレクトリデータから配信用の差分データを抽出するフローを説明する図。
【図７】ディレクトリデータが差分データとして配信される場合のフローを説明する図。
【発明を実施するための形態】
【００１４】
以下、図面に基づいて、本発明の実施の形態を説明する。なお、後述する装置構成や処理動作の内容は一例であり、実施の形態と既知の技術との組み合わせや置換により他の実施の形態を実現することもできる。
【００１５】
（配信方式の概要）
発明者らの経験によれば、データ圧縮前の新データは、データ圧縮前の旧データの一部分に削除、挿入その他の変更を加えたものが多い。このため、発明者らは、非圧縮データとしての旧データと新データの相関は高いと推測する。
【００１６】
この推測に基づき、発明者らは、図２に示す差分配信方式を提案する。図２は、従来手法を表した図１に対応する図であり、従来手法と実施の形態に係る処理手法との違いを概念的に表している。また、図２は、旧データを構成するデータ成分のうちデータ圧縮された状態でシステム内に格納されるデータ成分の更新に着目して表している。
【００１７】
発明者らの提供する差分配信方式では、サーバ１１１とクライアント１１８でそれぞれ以下の処理が実行される。なお、サーバ１１１とクライアント１１８は、いずれもコンピュータ（算術論理ユニット、制御回路、記憶装置、入出力装置）を基本構成として有し、ネットワーク経由での通信機能も有するものとする。図２に示す各部の全部又は一部は、ハードウェア又はコンピュータ上で実行される処理機能の一部として実現される。
【００１８】
サーバ１１１では、以下の処理動作が実行される。まず、データ圧縮された状態で記憶媒体（例えばハードディスク）に格納されている旧データ１１２が、展開部１１３で展開される。同様に、データ圧縮された状態で記憶媒体に格納されている新データ１１４が、展開部１１５で展開される。なお、旧データ１１２と新データ１１４の生成時に複数種類の圧縮方式が組み合わされて使用されている場合には、各データ成分の圧縮時に使用した圧縮方式に対応する展開方式が適用される。圧縮方式には、例えばzip、bzip、bzip2等が用いられる。
【００１９】
差分抽出部１１６では、展開後の旧データ１１２と同じく展開後の新データ１１４の差分データが生成される。この差分データは、非圧縮データに展開されたビットパターン同士の差分である。従って、旧データ１１２と新データ１１４の正味の差分が抽出される。この差分データは差分出力部１１７を通じてクライアント１１８に配信される。
【００２０】
一方、クライアント１１８では、以下の処理動作が実行される。まず、差分受信部１１９が差分データをネットワーク経由で受信する。差分データが受信されると、データ圧縮された状態で格納されている旧データ１２１が記憶媒体（例えばハードディスク）から読み出され、展開部１２２において展開される。旧データ１２１の展開処理が完了すると、差分適用部１２０は、受信した差分データを展開した旧データ１２１に適用する。これにより、展開された状態での新データの更新が完了する。この後、更新後の新データは圧縮部１２３により圧縮され、新データ１２４として記憶媒体に格納される。なお、旧データ１２１が圧縮方式を異にする複数種類のデータ成分の組み合わせで生成されている場合には、新データ１２４を生成する際にデータ成分毎に対応する圧縮方式が適用される。
【００２１】
（実施形態１）
続いて、前述したデータ更新用のデータ配信方式を、オペレーティングシステムの更新に適用する場合について説明する。図３に、処理イメージを示す。なお、オペレーティングシステムの更新は、カーネルイメージと呼ばれるデータdata1をクライアントシステム内で更新し、データdata1からオペレーティングシステムを生成する手順により実行される。
【００２２】
ここでのデータdata1は、「解凍ルーチン」と表記する圧縮されていないデータ成分（非圧縮データ）と、「イメージ」と表記するデータ圧縮方式compress1で圧縮されたデータ成分（圧縮データ）とで構成されている。
【００２３】
因みに、オペレーティングシステムのうち非圧縮のデータ成分の更新は、差分データの一部として受信される差分解凍ルーチンを旧解凍ルーチンに適用したものを、更新後のオペレーティングシステムに上書きすることで実現される。
【００２４】
図３（ａ）に、サーバ１１１で実行される処理動作の概要を示す。図３（ａ）は、解凍ルーチンの差分データ（差分解凍ルーチン）、展開後のイメージの差分（差分イメージ.bin））、その他の情報を保持するヘッダを、旧data1と新data1に基づいて生成する際のデータフローを示している。
【００２５】
まず、旧data1から旧解凍ルーチンと旧イメージ（旧イメージ.cmp）が抽出される。同様に、新data1から新解凍ルーチンと新イメージ（新イメージ.cmp）が抽出される。
【００２６】
次に、差分抽出部１１６が、新旧２つの解凍ルーチンから差分解凍ルーチンを生成する。その一方で、差分抽出部１１６は、圧縮データである新旧２つのイメージを展開して非圧縮の新旧２つのイメージ（旧イメージ.bin・新イメージ.bin）を生成し、それらの差分を差分イメージ（差分イメージ.bin）として出力する。なお、差分抽出部１１６は、新data1の所定のレコードにアクセスし、ヘッダを生成する。データdata1内の解凍ルーチンのレコードの位置、サイズ、圧縮されたイメージの開始位置、サイズ等の情報は、ユーザ操作により又は自動的にデータベースに蓄積され、データ成分へのアクセス時に参照される。
【００２７】
この後、差分出力部１１７が、生成された差分解凍ルーチン、差分イメージ（差分イメージ.bin）、ヘッダを差分データとしてクライアント１１８に送信する。
【００２８】
図３（ｂ）に、クライアント１１８で実行される処理動作の概要を示す。図３（ｂ）は、クライアント１１８内に格納されている旧data1とサーバ１１１から受信した差分解凍ルーチン、差分イメージ（差分イメージ.bin）、ヘッダで構成される差分データに基づいて新data1が生成される際のデータフローを示している。
【００２９】
まず、差分受信部１１９が、サーバ１１１から差分データを受信する。これに伴い、クライアント１１８は、自システムの記憶媒体に格納されている旧data1から旧解凍ルーチンと旧イメージ（旧イメージ.cmp）を抽出する。
【００３０】
旧解凍ルーチンが抽出されると、差分適用部１２０は、旧解凍ルーチンに受信した差分解凍ルーチンを適用し、新解凍ルーチンを生成する。また、旧イメージが抽出されると、展開部１２２が、圧縮データである旧イメージ（旧イメージ.cmp）を展開して非圧縮の旧イメージ（旧イメージ.bin）を生成する。
【００３１】
非圧縮の旧イメージ（旧イメージ.bin）が生成されると、差分適用部１２０は、ネットワーク経由で受信した差分イメージ（差分イメージ.bin）を展開後の旧イメージ（旧イメージ.bin）に適用し、非圧縮の新イメージ（新イメージ.bin）を生成する。
【００３２】
この後、圧縮部１２３は、非圧縮データとしての新イメージ（新イメージ.bin）を圧縮方式compress1で圧縮し、圧縮データとしての新イメージ（新イメージ.cmp）を生成する。最後に、圧縮部１２３は、再構成された新解凍ルーチン、圧縮データとしての新イメージ（新イメージ.cmp）、ヘッダを統合して新data1を生成し、旧data1に上書きする。
【００３３】
以上説明した差分配信方式を採用すれば、データ圧縮された状態では新旧２つのデータ間の相関が低くても、非圧縮の状態では新旧２つのデータ間の相関が高い場合について、配信される差分データのデータサイズを従来方式に比して格段に小さくすることができる。特に、更新対象である旧データが圧縮方式の異なる複数種類のデータ成分を統合した構造を有する場合には、圧縮データ上での相関の低下が顕著になるため実施の形態による差分配信方式の採用が効果的である。
【００３４】
（実施形態２）
次に、前述したデータ更新用の差分配信方式を、ファイルシステムの更新に適用する場合について説明する。ここでは、記憶容量が小さいROMを想定した圧縮ファイルシステムを考える。このファイルシステムは、ページ単位で圧縮方式compress2を適用してデータを圧縮する。このため、ページ単位のランダムアクセスが可能であること、read onlyであること、メタデータは圧縮されないが通常のファイルシステムよりサイズが小さくて済むこと等の特徴がある。
【００３５】
ここで対象とするファイルシステムは、図４で示すような木構造のディレクトリとファイルから構成される。ファイルシステムの各ファイルは、ルートノード（”/”で示す）から葉ノードへのパスで指定され、そのファイルの実体は葉ノードに格納されたポインタで指定される。例えば最も左のファイルは/A/aで指定され、そのファイルの実体は二つのブロックからなり、葉ノードaに格納されたポインタによって指定される。
【００３６】
ファイルシステムの更新はデータdata2をクライアントシステム内で更新し、データdata2からファイルシステムを生成することで実行される。データdata2はファイルシステムのディレクトリである圧縮されていないデータ成分と、ファイル実体に対応する圧縮方式compress2で圧縮されたデータ成分から構成されている。ファイル実体は元々いくつかの固定長のブロックから構成されるが、データdata2内では圧縮のためブロックは様々な長さを持つ。
【００３７】
図５に、処理イメージを示す。図５に示すように、基本的なデータフローはオペレーティングシステムの更新（図３）と同じである。
【００３８】
図５（ａ）に、サーバ１１１で実行される処理動作の概要を示す。図５（ａ）は、ディレクトリの差分（差分ディレクトリ）、展開後のブロックの差分（差分X.xブロック.bin）、その他の情報を保持するヘッダを、旧data2と新data2に基づいて生成する際のデータフローを示している。
【００３９】
図６に、このデータフローを実現するコントロールフローの詳細例を示す。まず、ステップ５０１で、新data2のヘッダが抽出される。ヘッダは、新data2の所定のレコードにアクセスすることで抽出される。
【００４０】
次に、ステップ５０２で、旧ディレクトリが旧data2から抽出される。旧ディレクトリは非圧縮データである。同様に、ステップ５０３で、新ディレクトリが新data2から抽出される。この新ディレクトリも非圧縮データである。両ディレクトリの抽出が完了すると、ステップ５０４で、旧ディレクトリと新ディレクトリの差分データ（差分ディレクトリ）が生成される。
【００４１】
次に、全てのパス/X/xについて（ステップ５０５〜ステップ５０６）、パス/X/xで指定された新ブロック（新ブロック.cmp）が新data2から抽出される（ステップ５０７）。ただし、本明細書においては、説明を簡単にするため、ディレクトリの階層数を３とした。同様に、パス/X/xで指定された旧ブロックが旧data2から抽出される（ステップ５０８〜ステップ５０９）。新ブロックと旧ブロックは、いずれも圧縮データである。
【００４２】
パス/X/xのブロックに関する処理には、以下の３つの場合が考えられる。
(1)旧ブロックと新ブロックの両方が存在する。
(2)新ブロックだけが存在する。
(3)旧ブロックだけが存在する。
【００４３】
場合(1) のときは、ステップ５１０〜ステップ５１１において、圧縮データとして存在する旧ブロックと新ブロックの展開処理が実行され、続くステップ５１２でそれらの差分データ（差分X.xブロック.bin）が生成される。場合(2) のときは、ステップ５１３で受信された新ブロック（新ブロック.cmp）だけが出力される。場合(3) のときは、特に処理を行われない。従って、図５（ａ）は場合(1) について表している。
【００４４】
なお、差分抽出部１１６は、新data1の所定のレコードにアクセスし、ヘッダを生成する。データdata2内の所定のレコードの位置、サイズ、圧縮されたイメージの開始位置、サイズなどの情報は、ユーザ操作により又は自動的にデータベースに蓄積され、データ成分へのアクセス時に参照される。
【００４５】
この後、差分出力部１１７が、生成された差分ディレクトリ、差分ブロック（差分X.xブロック.bin）、ヘッダを差分データとしてクライアント１１８に送信する。
【００４６】
図５（ｂ）に、クライアント１１８で実行される処理動作の概要を示す。図５（ｂ）は、クライアント１１８内に格納されている旧data2とサーバ１１１から受信した差分ディレクトリ、差分ブロック（差分X.xブロック.bin）、ヘッダで構成される差分データに基づいて新data2が生成される際のデータフローを示している。
【００４７】
図７に、このデータフローを実現するコントロールフローの詳細例を示す。まず、ステップ６０１で、新data2にヘッダが挿入される。
【００４８】
次のステップ６０２で、旧data2から旧ディレクトリが抽出される。旧ディレクトリは非圧縮データである。続くステップ６０３では、受信した差分ディレクトリが旧ディレクトリに適用され、新ディレクトリが生成される。ステップ６０４で、再構成された新ディレクトリが新data2に挿入される。
【００４９】
次に、新data2の全てのパスについて（ステップ６０５〜ステップ６０７）、対応する旧ブロック（旧ブロック.cmp）が存在するか否かが判定される。旧ブロック（旧ブロック.cmp）が存在すればステップ６０８に進み、対応する旧ブロック（旧ブロック.cmp）を展開して非圧縮の旧ブロック（旧ブロック.bin）を生成する。続く、ステップ６０９では、展開された旧ブロック（旧ブロック.bin）に差分ブロック（差分ブロック.bin）が適用され、非圧縮の新ブロック（新ブロック.bin）が生成される。
【００５０】
更に、ステップ６１０では、展開された新ブロックをデータ圧縮方式compress2で圧縮し、圧縮データ形式の新ブロック（新ブロック.com）を生成する。最後に、ステップ６１１で新data2に新ブロック（新ブロック.com）を挿入する。なお、ステップ６０７で対応する旧ブロック（旧ブロック.cmp）が存在しないと判定された場合、ステップ６１１にスキップし、差分データとして受信した新ブロック（新ブロック.com）をそのまま新data2に挿入する。
【００５１】
以上説明したように、発明に係る差分配信方式は、資源が限られているクライアント１１８のファイルシステムの更新にも効果的である。
【００５２】
（他の実施の形態）
前述した実施の形態の場合には、圧縮データの形式でシステム内に格納されるデータ成分の更新に必要な差分データを非圧縮のデータ形式で配信する場合について説明した。しかし、当該差分データを圧縮してから配信する手法を採用しても良い。なお、その場合には、配信する差分データをクライアント側で非圧縮のデータ形式に展開する処理機能必要になる。
【符号の説明】
【００５３】
１１１…サーバ、１１２…旧データ、１１３…展開部、１１４…新データ、１１５…展開部、１１６…差分抽出部、１１７…差分出力部、１１８…クライアント、１１９…差分受信部、１２０…差分適用部、１２１…旧データ、１２２…展開部、１２３…圧縮部、１２４…新データ。
【図１】
2011060039.tif 000003
【図２】
2011060039.tif 000004
【図３】
2011060039.tif 000005
【図４】
2011060039.tif 000006
【図５】
2011060039.tif 000007
【図６】
2011060039.tif 000008
【図７】
2011060039.tif 000009