(57)【要約】  データ最適化部（２４）は、ＴＣＰアプリ（５ａ）のデータをチャンクに分割する。そして、データ最適化部（２４）は、チャンクに対するハッシュ値を計算し、ハッシュ値とチャンクのデータサイズからハッシュ情報記憶部（３１）を検索してチャンクの重複を判定する。そして、データ最適化部（２４）は、チャンクに重複がない場合に、チャンクを格納し、ハッシュ値、チャンクのデータサイズ、チャンクの位置をハッシュ情報記憶部（３１）に格納する。そして、データ最適化部（２４）は、チャンクを圧縮してトランスポート最適化部（２５）に圧縮データを送信させる。
2017168730.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
取得した第１のデータを分割して該第１のデータよりも小さいサイズの第２のデータを生成し、
送信済データの識別情報を記憶する記憶部を参照して、生成した前記第２のデータが送信済であるか否かを判定し、
前記第２のデータが送信済でない場合、前記第２のデータを圧縮して該第２のデータよりも小さいサイズの第３のデータを生成し、
生成した前記第３のデータを、指定された情報処理装置に送信する
処理を実行させることを特徴とするデータ送信プログラム。
【請求項２】
前記コンピュータに、
前記第２のデータが送信済である場合、前記第２のデータの識別情報を前記情報処理装置に送信する
処理を実行させることを特徴とする請求項１に記載のデータ送信プログラム。
【請求項３】
前記コンピュータに、
前記第２のデータを圧縮した場合に圧縮されたデータのサイズが前記第２のデータよりも小さくない回数に基づいて、前記第２のデータを前記情報処理装置に送信する
処理を実行させることを特徴とする請求項１又は２に記載のデータ送信プログラム。
【請求項４】
前記コンピュータに、
前記第１のデータの種別が変化したか否かを判定し、変化したと判定した場合には、前記第２のデータを圧縮して前記情報処理装置に送信する
処理を実行させることを特徴とする請求項３に記載のデータ送信プログラム。
【請求項５】
前記コンピュータに、
通信の空き帯域、通信バッファに溜まっているデータの量及び圧縮処理に要する時間に基づいて、前記第２のデータを圧縮して前記情報処理装置に送信する
処理を実行させることを特徴とする請求項３に記載のデータ送信プログラム。
【請求項６】
コンピュータが、
取得した第１のデータを分割して該第１のデータよりも小さいサイズの第２のデータを生成し、
送信済データの識別情報を記憶する記憶部を参照して、生成した前記第２のデータが送信済であるか否かを判定し、
前記第２のデータが送信済でない場合、前記第２のデータを圧縮して該第２のデータよりも小さいサイズの第３のデータを生成し、
生成した前記第３のデータを、指定された情報処理装置に送信する
処理を実行することを特徴とするデータ送信方法。
【請求項７】
取得した第１のデータを分割して該第１のデータよりも小さいサイズの第２のデータを生成する分割部と、
送信済データの識別情報を記憶する記憶部を参照して、前記分割部により生成された前記第２のデータが送信済であるか否かを判定する判定部と、
前記判定部により前記第２のデータが送信済でないと判定された場合、前記第２のデータを圧縮して該第２のデータよりも小さいサイズの第３のデータを生成する圧縮部と、
前記圧縮部により生成された前記第３のデータを、指定された情報処理装置に送信する送信部と
を有することを特徴とするデータ送信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ送信プログラム、データ送信方法及びデータ送信装置に関する。
【背景技術】
【０００２】
データを転送する場合、データ量を削減するために、送信側でデータを圧縮して送信し、受信側で解凍してデータを復元する技術がある。また、データに圧縮処理を施した場合の伝送時間と、データに圧縮処理を施さない場合の伝送時間を予測し、予測した伝送時間に基づいて、データを圧縮して送信するか圧縮しないで送信するかを判断することで、伝送時間を減少させる技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平５−１４５４３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、データに重複がある場合には、伝送時間を予測して、データを圧縮して送信するか圧縮しないで送信するかを判断するだけでは、伝送時間の減少が不十分であるという問題がある。データに重複がある場合には、重複したデータをそのまま送らないようにすることで、データ量を減らすことができる。また、圧縮処理を不要とすることでデータ圧縮による処理負荷を抑制することができる。【０００５】
本発明は、１つの側面では、データ圧縮による処理負荷を抑制することを目的とする。
【課題を解決するための手段】
【０００６】
１つの態様では、データ送信プログラムは、コンピュータに、取得した第１のデータを分割して該第１のデータよりも小さいサイズの第２のデータを生成する処理を実行させる。そして、コンピュータに、送信済データの識別情報を記憶する記憶部を参照して、生成した第２のデータが送信済であるか否かを判定する処理を実行させる。そして、コンピュータに、第２のデータが送信済でない場合、第２のデータを圧縮して該第２のデータよりも小さいサイズの第３のデータを生成し、生成した第３のデータを、指定された情報処理装置に送信する処理を実行させる。
【発明の効果】
【０００７】
データ圧縮による処理負荷を抑制することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例に係るデータ転送システムを説明するための図である。
【図２】図２は、データ転送システムの機能構成を示す図である。
【図３】図３は、切替情報記憶部の一例を示す図である。
【図４】図４は、チャンクの重複除去及び圧縮によるデータ最適化の高速化効果を説明するための図である。
【図５】図５は、効果判定情報記憶部が記憶する項目の一例を示す図である。
【図６】図６は、ハッシュ情報記憶部がチャンク毎に記憶する項目の一例を示す図である。
【図７】図７は、チャンク記憶部の一例を示す図である。
【図８】図８は、送信部による圧縮処理の切替を説明するための図である。
【図９】図９は、データ最適化部による処理を説明するための図である。
【図１０】図１０は、送信部による処理のフローを示すフローチャートである。
【図１１】図１１は、データ最適化処理のフローを示すフローチャートである。
【図１２】図１２は、圧縮処理のフローを示すフローチャートである。
【図１３】図１３は、トランスポート最適化処理のフローを示すフローチャートである。
【図１４】図１４は、実施例に係るデータ送信プログラムを実行するコンピュータのハードウェア構成を示す図である。
【発明を実施するための形態】
【０００９】
以下に、本願の開示するデータ送信プログラム、データ送信方法及びデータ送信装置の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１０】
まず、実施例に係るデータ転送システムについて説明する。図１は、実施例に係るデータ転送システムを説明するための図である。図１に示すように、データ転送システム１は、クライアント１ａで動作するクライアントアプリケーション１ｂがサーバ１ｃで動作するサーバアプリケーション１ｄにＷＡＮ（Wide  Area  Network）３を介して送信するデータを転送する。クライアントアプリケーション１ｂは、ＴＣＰ（Transmission  Control  Protocol）／ＩＰ（Internet  Protocol）を用いてサーバアプリケーション１ｄにデータを転送する。【００１１】
データ転送システム１は、送信部２と受信部４とを有する。送信部２は、クライアント１ａで動作し、クライアントアプリケーション１ｂからデータを受け取り、ＷＡＮ３を介してサーバ１ｃに送信する。受信部４は、サーバ１ｃで動作し、送信部２により送信されたデータを受信し、サーバアプリケーション１ｄに渡す。なお、送信部２は、クライアント１ａと別の装置で動作してもよく、受信部４は、サーバ１ｃと別の装置で動作してもよい。【００１２】
また、データ転送システム１は、サーバ１ｃで動作するサーバアプリケーション１ｄがクライアント１ａで動作するクライアントアプリケーション１ｂにＷＡＮ３を介して送信するデータを転送してもよい。この場合、送信部２はサーバ１ｃで動作し、受信部４はクライアント１ａで動作する。【００１３】
送信部２は、データを１〜４ＫＢ（キロバイト）のチャンクに分割し、重複するチャンクがある場合にデータの代わりにデータに対応するインデックスを送信し、重複がない場合にデータを圧縮して送信する。受信部４は、重複するデータを復元し、圧縮されたデータを解凍する。【００１４】
このように、データ転送システム１では、送信部２が、重複するチャンクがない場合にだけデータを圧縮して送信するので、データ圧縮による処理負荷を抑制することができる。【００１５】
次に、データ転送システム１の機能構成について説明する。図２は、データ転送システム１の機能構成を示す図である。図２に示すように、データ転送システム１は、送信部２と受信部４を有する。送信部２と受信部４は、ＷＡＮ３を介して接続される。【００１６】
送信部２は、切替情報記憶部２１と、効果判定情報記憶部２２と、プロキシ部２３と、データ最適化部２４と、トランスポート最適化部２５とを有する。切替情報記憶部２１は、圧縮を行うか否かを示す圧縮切替情報を記憶する。図３は、切替情報記憶部２１の一例を示す図である。図３に示すように、切替情報記憶部２１は、圧縮切替フラグを記憶する。圧縮切替フラグがｔｒｕｅの場合には圧縮が行われ、圧縮切替フラグがｆａｌｓｅの場合には圧縮が行われない。【００１７】
圧縮切替フラグの初期値はｔｒｕｅである。圧縮切替フラグは、プロキシ部２３、データ最適化部２４及びトランスポート最適化部２５により更新され、データ最適化部２４において圧縮を行うか否かの判定に用いられる。【００１８】
効果判定情報記憶部２２は、データを圧縮することにより効果があるか否かを判定するための情報を記憶する。図４は、データを圧縮することによる効果を説明するための図である。図４において、データ最適化とは、チャンクの重複除去及び圧縮を表す。図４（ａ）は、効果がある場合を示し、図４（ｂ）は、効果がない場合を示す。【００１９】
図４（ａ）に示すように、データの最適化により転送データのサイズを小さくできる場合には、データの転送処理に要する時間が短くなる。このため、データ最適化のために必要となる重複判定、圧縮、解凍及び重複復元のオーバーヘッドを含めても転送時間を短縮することができる。【００２０】
一方、図４（ｂ）に示すように、データの最適化により転送データのサイズを小さくできない場合には、データの転送処理に要する時間が変わらず、データ最適化のためのオーバーヘッドが増えるため、転送時間が長くなる。例えば、転送されるデータが圧縮済のデータであった場合には、データの圧縮によりサイズを小さくすることができないため、データ最適化の効果がない。【００２１】
図５は、効果判定情報記憶部２２が記憶する項目の一例を示す図である。図５に示すように、効果判定情報記憶部２２は、平均処理時間と、無駄発生回数と、閾値とを記憶する。平均処理時間は、圧縮処理に要する処理時間の平均値であり、単位はｍｓ（ミリ秒）である。無駄発生回数は、圧縮後のデータサイズが圧縮前のデータサイズ以上である場合を無駄として、無駄が発生した回数である。【００２２】
閾値は、効果を判定するための所定の値である。効果の判定には平均処理時間×無駄発生回数が用いられる。すなわち、平均処理時間×無駄発生回数＞閾値の場合には、圧縮効果がないと判定され、圧縮処理を行わないように、圧縮切替フラグがｆａｌｓｅに設定される。無駄発生回数に平均処理時間を掛けるのは、マシンによる処理時間の相違を判定に反映させるためである。【００２３】
図２に戻って、プロキシ部２３は、ＴＣＰを用いて通信を行うＴＣＰアプリ５ａからＴＣＰデータを受け取り、受け取ったＴＣＰデータのサイズを判定する。その結果、サイズが０である場合には、ＴＣＰアプリ５ａからの通信が途切れたポイントを検出した場合であるので、データ種別が変わり、圧縮効果があるデータに変わった可能性があるため、プロキシ部２３は、圧縮切替フラグをｔｒｕｅに設定する。【００２４】
また、プロキシ部２３は、ＴＣＰデータのサイズが０でない場合には、データ最適化の定義を判定し、データ最適化ＯＮである場合には、データ最適化部２４にデータを渡し、データ最適化ＯＦＦである場合には、トランスポート最適化部２５にデータを渡す。ここで、データ最適化の定義とは、ユーザがデータ最適化を行うか否かを指定する情報であり、データ最適化ＯＮが指定されるとデータ最適化が行われ、データ最適化ＯＦＦが指定されるとデータ最適化は行われない。【００２５】
データ最適化部２４は、データをチャンクに分割し、チャンクの重複除去を行う。また、データ最適化部２４は、圧縮切替フラグがｔｒｕｅである場合に、チャンクの圧縮を行う。データ最適化部２４は、ハッシュ情報記憶部３１と、チャンク記憶部３２と、分割部３３と、重複判定部３４と、重複除去部３５と、圧縮部３６とを有する。【００２６】
ハッシュ情報記憶部３１は、ハッシュに関する情報をチャンク毎に記憶する。図６は、ハッシュ情報記憶部３１がチャンク毎に記憶する項目の一例を示す図である。図６に示すように、ハッシュ情報記憶部３１がチャンク毎に記憶する項目には、ハッシュ値と、データサイズと、データ位置が含まれる。【００２７】
ハッシュ値は、チャンクからハッシュ計算により算出される値であり、文字列である。データサイズは、チャンクのサイズであり、バイト数を示す整数である。ハッシュ情報記憶部３１は、ハッシュ値とデータサイズにより検索される。データ位置は、チャンク記憶部３２におけるチャンクの位置を示す。データ位置は、チャンク記憶部３２の先頭からのオフセットであり、整数である。ハッシュ情報記憶部３１は、メモリ内に確保される領域である。【００２８】
チャンク記憶部３２は、チャンクを記憶する。図７は、チャンク記憶部３２の一例を示す図である。図７に示すように、チャンク記憶部３２は、チャンクの実データを記憶する。図７では、データ1〜データNが実データである。チャンク記憶部３２は、ファイルにより実現される。【００２９】
分割部３３は、プロキシ部２３から受け取ったデータをチャンクに分割し、重複判定部３４に渡す。分割部３３は、データの内容に基づいてＣＤＣ（Contents  Degfined  Chunking）と呼ばれる手法で１〜４ＫＢの可変長のブロックをチャンクとして作成する。【００３０】
重複判定部３４は、チャンクのフィンガープリントとしてハッシュ値を計算する。そして、重複判定部３４は、ハッシュ情報記憶部３１をハッシュ値とチャンクのデータサイズを用いて検索し、チャンクの重複があるか否かを判定する。【００３１】
そして、重複判定部３４は、重複がない場合には、チャンクをチャンク記憶部３２に格納し、ハッシュ値、チャンクのデータサイズ、チャンクのチャンク記憶部３２におけるデータ位置をハッシュ情報記憶部３１に格納し、チャンクを圧縮部３６に渡す。重複除去部３５は、重複判定部３４により重複があると判定された場合に、チャンクをハッシュ値に基づくインデックスに代えて、トランスポート最適化部２５に渡す。【００３２】
圧縮部３６は、効果判定情報記憶部２２の情報を用いて圧縮切替フラグを設定する。具体的には、圧縮部３６は、平均処理時間×無駄発生回数＞閾値であるか否かを判定し、平均処理時間×無駄発生回数＞閾値である場合には、圧縮切替フラグをｆａｌｓｅに設定し、平均処理時間×無駄発生回数＞閾値でない場合には、圧縮切替フラグを更新しない。【００３３】
そして、圧縮部３６は、圧縮切替フラグがｔｒｕｅである場合に、チャンクの圧縮を行う。そして、圧縮部３６は、圧縮処理の時間を計測し、効果判定情報記憶部２２の平均処理時間を更新する。【００３４】
そして、圧縮部３６は、圧縮前のチャンクのサイズが圧縮後のサイズ以下である場合には、効果判定情報記憶部２２の無駄発生回数を更新し、非圧縮データをトランスポート最適化部２５に渡す。一方、圧縮前のチャンクのサイズが圧縮後のサイズ以下でない場合には、圧縮部３６は、圧縮データをトランスポート最適化部２５に渡す。【００３５】
トランスポート最適化部２５は、プロキシ部２３又はデータ最適化部２４から渡されたデータを、トランスポート層での最適化を行って、ＷＡＮ３を介して受信部４に送信する。トランスポート最適化部２５は、ＲＰＳ（Random  Packet  Stream）、ＵＮＡＰ（Universal  Network  Acceleration  Protocol）又は高速ＴＣＰをプロトコルとして選択することによりトランスポート層での最適化を行う。【００３６】
ここで、ＲＰＳは、パケット廃棄効率が高い環境で誤り訂正符号を用いて再送なしでデータを復元するプロトコルであり、ＵＤＰをベースとするプロトコルである。また、ＵＮＡＰは、廃棄されたパケットを判定することで効率よくデータを再送するプロトコルであり、ＵＤＰをベースとするプロトコルである。また、高速ＴＣＰは、ＴＣＰを高速化したものである。【００３７】
また、トランスポート最適化部２５は、効果判定情報記憶部２２の平均処理時間と通信バッファの残データ量とＷＡＮ３の空き帯域とに基づき、圧縮切替フラグを設定する。具体的には、トランスポート最適化部２５は、平均処理時間＜残データ量×空き帯域である場合には、残データを送信する間に圧縮が可能であるので、圧縮切替フラグをｔｒｕｅに設定する。【００３８】
図８は、送信部２による圧縮処理の切替を説明するための図である。図８に示すように、重複がない場合、データ最適化部２４は、最初はチャンクを圧縮してトランスポート最適化部２５に渡す。そして、圧縮処理の無駄回数が増加する（１）と、データ最適化部２４は、チャンクを圧縮することなくトランスポート最適化部２５に渡す。【００３９】
その後、受信したデータのサイズが０であることによりデータ種別の変更を検知する（２）と、プロキシ部２３が圧縮切替フラグをｔｒｕｅに再設定し、データ最適化部２４は、チャンクを圧縮してトランスポート最適化部２５に渡す。【００４０】
また、通信回線が混雑して通信バッファ２５ａの残データが増加する（３）と、トランスポート最適化部２５は、圧縮切替フラグをｔｒｕｅに再設定する。その後、通信バッファ２５ａの残データが減少すると、トランスポート最適化部２５は、圧縮切替フラグをｆａｌｓｅに設定する。【００４１】
このように、送信部２は、圧縮切替フラグを切り替えることによって、効果のある圧縮処理を行うことができる。【００４２】
図２に戻って、受信部４は、トランスポート最適化部４１と、データ最適化部４２と、プロキシ部４３とを有する。トランスポート最適化部４１は、ＲＰＳ、ＵＮＡＰ又は高速ＴＣＰで受信したデータをデータ最適化部４２又はプロキシ部４３に渡す。【００４３】
データ最適化部４２は、トランスポート最適化部４１から受け取ったデータに対して必要に応じて復元又は解凍を行い、チャンクを集めてＴＣＰデータを生成し、プロキシ部４３に渡す。プロキシ部４３は、ＴＣＰデータをＴＣＰアプリ５ｂに渡す。【００４４】
データ最適化部４２は、チャンク情報記憶部５１と、重複復元部５２と、解凍部５３とを有する。チャンク情報記憶部５１は、解凍されたデータとインデックスとを対応付けて記憶する。重複復元部５２は、インデックスからチャンク記憶部５１を検索して重複チャンクを復元する。解凍部５３は、圧縮データを解凍し、インデックスと共にチャンク情報記憶部５１に格納する。【００４５】
図９は、データ最適化部２４及びデータ最適化部４２による処理を説明するための図である。データ最適化部２４は、８０ＫＢのＴＣＰデータバッファ２６ａからデータを読み出し、１〜４ＫＢのチャンクに分割する。そして、データ最適化部２４は、チャンクのハッシュ値を算出し、ハッシュ値とチャンクのサイズを用いてハッシュ情報記憶部３１をハッシュ検索する。【００４６】
そして、データ最適化部２４は、チャンクが重複するか否かを判定し、重複する場合には、インデックスをトランスポート最適化部２５に転送させる。一方、チャンクが重複しない場合には、データ最適化部２４は、チャンクをチャンク記憶部３２に格納し、ハッシュ値、データサイズ、データ位置をハッシュ情報記憶部３１に格納する。【００４７】
そして、データ最適化部２４は、圧縮切替フラグを用いて圧縮するか否かを判定し、圧縮切替フラグがｔｒｕｅである場合には、チャンクの圧縮を行ってトランスポート最適化部２５に転送させる。一方、圧縮切替フラグがｆａｌｓｅである場合には、チャンクを圧縮することなくトランスポート最適化部２５に転送させる。【００４８】
そして、受信部４のデータ最適化部４２は、トランスポート最適化部４１を介してデータを受信すると、受信したデータがチャンクの場合には、プロキシ部４３にチャンクをＴＣＰデータバッファ２６ｂに格納させる。【００４９】
また、データ最適化部４２は、受信したデータが圧縮データの場合には、解凍して、チャンクをインデックスと共にチャンク情報記憶部５１に格納すると共に、プロキシ部４３にチャンクをＴＣＰデータバッファ２６ｂに格納させる。【００５０】
また、データ最適化部４２は、受信したデータがインデックスの場合には、チャンク情報記憶部５１を検索して重複チャンクを復元し、プロキシ部４３にチャンクをＴＣＰデータバッファ２６ｂに格納させる。【００５１】
次に、送信部２による処理のフローについて説明する。図１０は、送信部２による処理のフローを示すフローチャートである。図１０に示すように、送信部２は、ＴＣＰデータバッファ２６ａからデータを読み込み（ステップＳ１）、受信したデータのサイズが０であるか否かを判定する（ステップＳ２）。【００５２】
その結果、受信したデータのサイズが０である場合には、送信部２は、圧縮切替フラグをｔｒｕｅに初期化し（ステップＳ３）、ステップＳ１に戻る。一方、受信したデータのサイズが０でない場合には、送信部２は、データ最適化の定義を判定し（ステップＳ４）、データ最適化ＯＦＦである場合には、トランスポート最適化処理を行い（ステップＳ６）、ステップＳ１に戻る。【００５３】
一方、データ最適化ＯＮである場合には、送信部２は、データ最適化処理を行い（ステップＳ５）、トランスポート最適化処理を行う（ステップＳ６）。そして、送信部２は、ステップＳ１に戻る。【００５４】
このように、送信部２は、受信したデータのサイズが０である場合に、圧縮切替フラグをｔｒｕｅに初期化することによって、データを圧縮しない状態で送信データの種別が変わった場合に、データ圧縮を再開することができる。【００５５】
次に、データ最適化処理のフローについて説明する。図１１は、データ最適化処理のフローを示すフローチャートである。図１１に示すように、データ最適化部２４は、チャンク分割を行い（ステップＳ１１）、チャンクを読み込む（ステップＳ１２）。【００５６】
そして、データ最適化部２４は、ハッシュを算出し（ステップＳ１３）、ハッシュ情報記憶部３１を検索してチャンクの重複判定を行う（ステップＳ１４）。その結果、重複ありの場合には、データ最適化部２４は、ハッシュ値に基づくインデックスを通信バッファ２５ａに書き込む（ステップＳ１５）。【００５７】
一方、重複なしの場合には、データ最適化部２４は、データ保管を行う（ステップＳ１６）。ここで、データ保管とは、チャンクをチャンク記憶部３２に格納し、ハッシュ値とデータサイズとデータ位置をハッシュ情報記憶部３１に格納することである。そして、データ最適化部２４は、圧縮処理を行う（ステップＳ１７）。【００５８】
そして、データ最適化部２４は、残チャンクありか否かを判定し（ステップＳ１８）、残チャンクありの場合には、ステップＳ１２に戻り、残チャンクなしの場合には、データ最適化処理を終了する。【００５９】
図１２は、圧縮処理のフローを示すフローチャートである。図１２に示すように、データ最適化部２４は、圧縮切替判定を行う（ステップＳ２１）。ここでの圧縮切替判定は、平均処理時間×無駄発生回数が閾値より大きいか否かを判定し、平均処理時間×無駄発生回数が閾値より大きい場合に圧縮切替フラグをｆａｌｓｅに設定することである。【００６０】
そして、データ最適化部２４は、圧縮切替フラグに基づいて、圧縮有無を判定し（ステップＳ２２）、圧縮切替フラグがｆａｌｓｅの場合には、ステップＳ２８に進む。一方、圧縮切替フラグがｔｒｕｅの場合には、チャンクの圧縮を行い（ステップＳ２３）、圧縮の処理時間を計測し（ステップＳ２４）、効果判定情報記憶部２２の平均処理時間を更新する。【００６１】
そして、データ最適化部２４は、圧縮前後のサイズを比較することにより、圧縮の効果判定を行い（ステップＳ２５）、圧縮前サイズが圧縮後サイズより大きい場合には、圧縮データを通信バッファ２５ａに書き込む（ステップＳ２６）。一方、圧縮前サイズが圧縮後サイズより大きくない場合には、データ最適化部２４は、無駄カウントを行う（ステップＳ２７）。ここで、無駄カウントとは、効果判定情報記憶部２２の無駄発生回数に１を加えて更新することである。そして、データ最適化部２４は、非圧縮データを通信バッファ２５ａに書き込む（ステップＳ２８）。【００６２】
このように、データ最適化部２４は、圧縮切替フラグに基づいて、圧縮有無を判定することで、圧縮処理が無駄に行われることを防ぐことができる。【００６３】
次に、トランスポート最適化処理のフローについて説明する。図１３は、トランスポート最適化処理のフローを示すフローチャートである。図１３に示すように、トランスポート最適化部２５は、通信バッファ２５ａを読み込み（ステップＳ３１）、プロトコル変換を行って送信を行う（ステップＳ３２）。【００６４】
そして、トランスポート最適化部２５は、通信バッファ２５ａの残データ判定を行い（ステップＳ３３）、残データなしの場合には、ステップＳ３１に戻り、残データありの場合には、圧縮切替判定を行う（ステップＳ３４）。ここでの圧縮切替判定は、効果判定情報記憶部２２の平均処理時間が残データ量×空き帯域より小さいか否かを判定し、小さい場合には、圧縮切替フラグをｔｒｕｅに設定し、小さくない場合には、圧縮切替フラグをｆａｌｓｅに設定することである。【００６５】
そして、トランスポート最適化部２５は、通信速度調整を行い（ステップＳ３５）、ステップＳ３１に戻る。ここで、通信速度調整とは、通信速度に合わせるために、一定時間のスリープ処理を行うことである。【００６６】
このように、トランスポート最適化部２５が、効果判定情報記憶部２２の平均処理時間が残データ量×空き帯域より小さいか否かに基づいて圧縮切替フラグを設定することで、データ最適化部２４は効率よく圧縮を行うことができる。【００６７】
上述してきたように、実施例では、データ最適化部２４が、チャンクの重複を判定し、チャンクに重複がない場合にだけチャンクを圧縮し、トランスポート最適化部２５が、圧縮データを送信する。したがって、送信部２は、データ圧縮による処理負荷を抑制することができる。【００６８】
また、実施例では、チャンクに重複がある場合に、トランスポート最適化部２５がインデックスを送信するので、送信部２は送信するデータの量を減らすことができる。【００６９】
また、実施例では、データ最適化部２４は、平均処理時間×無駄発生回数が閾値より大きいか否かを判定し、平均処理時間×無駄発生回数が閾値より大きい場合に、圧縮切替フラグをｆａｌｓｅに設定し、チャンクを圧縮しない。したがって、送信部２は、無駄な圧縮を防ぐことができる。【００７０】
また、実施例では、プロキシ部２３は、受信したデータのサイズが０である場合に、データの種別が変わったと判定して、圧縮切替フラグをｔｒｕｅに設定するので、データ最適化部２４は、データの種別が変わった場合にデータ圧縮を再開することができる。したがって、送信部２は、圧縮が有効な場合に圧縮を行わない状況が発生することを防ぐことができ、データの送信を高速に行うことができる。【００７１】
また、実施例では、トランスポート最適化部２５は、効果判定情報記憶部２２の平均処理時間が残データ量×空き帯域より小さい場合に、圧縮切替フラグをｔｒｕｅに設定するので、データ最適化部２４は、通信待ち時間を利用して圧縮を行うことができる。したがって、送信部２は、効率よくデータの圧縮を行うことができる。【００７２】
なお、実施例では、送信部２について説明したが、送信部２が有する構成をソフトウェアによって実現することで、同様の機能を有するデータ送信プログラムを得ることができる。そこで、データ送信プログラムを実行するコンピュータについて説明する。なお、受信部４の機能を有するデータ受信プログラムも同様のコンピュータで実行される。【００７３】
図１４は、実施例に係るデータ送信プログラムを実行するコンピュータのハードウェア構成を示す図である。図１４に示すように、コンピュータ６０は、メインメモリ６１と、ＣＰＵ６２と、ＬＡＮ（Local  Area  Network）インタフェース６３と、ＨＤＤ（Hard  Disk  Drive）６４とを有する。また、コンピュータ６０は、スーパーＩＯ（Input  Output）６５と、ＤＶＩ（Digital  Visual  Interface）６６と、ＯＤＤ（Optical  Disk  Drive）６７とを有する。【００７４】
メインメモリ６１は、プログラムやプログラムの実行途中結果などを記憶するメモリである。ＣＰＵ６２は、メインメモリ６１からプログラムを読み出して実行する中央処理装置である。ＣＰＵ６２は、メモリコントローラを有するチップセットを含む。【００７５】
ＬＡＮインタフェース６３は、コンピュータ６０をＬＡＮ経由で他のコンピュータに接続するためのインタフェースである。ＨＤＤ６４は、プログラムやデータを格納するディスク装置であり、スーパーＩＯ６５は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。ＤＶＩ６６は、液晶表示装置を接続するインタフェースであり、ＯＤＤ６７は、ＤＶＤの読み書きを行う装置である。【００７６】
ＬＡＮインタフェース６３は、ＰＣＩエクスプレス（ＰＣＩｅ）によりＣＰＵ６２に接続され、ＨＤＤ６４及びＯＤＤ６７は、ＳＡＴＡ（Serial  Advanced  Technology  Attachment）によりＣＰＵ６２に接続される。スーパーＩＯ６５は、ＬＰＣ（Low  Pin  Count）によりＣＰＵ６２に接続される。【００７７】
そして、コンピュータ６０において実行されるデータ送信プログラムは、ＤＶＤに記憶され、ＯＤＤ６７によってＤＶＤから読み出されてコンピュータ６０にインストールされる。あるいは、データ送信プログラムは、ＬＡＮインタフェース６３を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ６０にインストールされる。そして、インストールされたデータ送信プログラムは、ＨＤＤ６４に記憶され、メインメモリ６１に読み出されてＣＰＵ６２によって実行される。【００７８】
また、実施例では、ＷＡＮ３を介してデータを送信する場合について説明したが、本発明はこれに限定されるものではなく、例えば無線通信等の他の通信方法を用いてデータを送信する場合にも同様に適用することができる。
【符号の説明】
【００７９】
１    データ転送システム
１ａ    クライアント
１ｂ    クライアントアプリケーション
１ｃ    サーバ
１ｄ    サーバアプリケーション
２    送信部
３    ＷＡＮ
４    受信部
５ａ，５ｂ    ＴＣＰアプリ
２１    切替情報記憶部
２２    効果判定情報記憶部
２３    プロキシ部
２４    データ最適化部
２５    トランスポート最適化部
２５ａ    通信バッファ
２６ａ    ＴＣＰデータバッファ
２６ｂ    ＴＣＰデータバッファ
３１    ハッシュ情報記憶部
３２    チャンク記憶部
３３    分割部
３４    重複判定部
３５    重複除去部
３６    圧縮部
４１    トランスポート最適化部
４２    データ最適化部
４３    プロキシ部
５１    チャンク情報記憶部
５２    重複復元部
５３    解凍部
６０    コンピュータ
６１    メインメモリ
６２    ＣＰＵ
６３    ＬＡＮインタフェース
６４    ＨＤＤ
６５    スーパーＩＯ
６６    ＤＶＩ
６７    ＯＤＤ
【図１】
2017168730.tif 000003
【図２】
2017168730.tif 000004
【図３】
2017168730.tif 000005
【図４】
2017168730.tif 000006
【図５】
2017168730.tif 000007
【図６】
2017168730.tif 000008
【図７】
2017168730.tif 000009
【図８】
2017168730.tif 000010
【図９】
2017168730.tif 000011
【図１０】
2017168730.tif 000012
【図１１】
2017168730.tif 000013
【図１２】
2017168730.tif 000014
【図１３】
2017168730.tif 000015
【図１４】
2017168730.tif 000016
【国際調査報告】
2017168730.tif 000017
2017168730.tif 000018
2017168730.tif 000019
2017168730.tif 000020