JP2013190891A - Data transfer system - Google Patents
Data transfer system Download PDFInfo
- Publication number
- JP2013190891A JP2013190891A JP2012055255A JP2012055255A JP2013190891A JP 2013190891 A JP2013190891 A JP 2013190891A JP 2012055255 A JP2012055255 A JP 2012055255A JP 2012055255 A JP2012055255 A JP 2012055255A JP 2013190891 A JP2013190891 A JP 2013190891A
- Authority
- JP
- Japan
- Prior art keywords
- data
- chunk
- feature amount
- file
- unit
- 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.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
【課題】受信側が所有しているデータが類似の場合でも転送不要とすることを目的とする。
【解決手段】
送信側は、第一のデータの特徴量及び誤り訂正用の復元バイト列を送信する。
受信側は、既に所有するデータの中で、受信した特徴量と類似の範囲の特徴量を有する第二のデータを特定し、受信した復元バイト列で誤り訂正処理を施し、それを第一のデータとして記憶する。
データが数キロバイトであっても、その特徴量及び復元バイト列はいずれも高々数十バイトであり、ネットワーク負荷が小さい。
【選択図】 図2An object of the present invention is to eliminate the need for transfer even when the data owned by the receiving side is similar.
[Solution]
The transmission side transmits the feature amount of the first data and the restored byte string for error correction.
The receiving side identifies second data having a feature amount in a range similar to the received feature amount among the already owned data, performs error correction processing on the received restored byte sequence, and converts it to the first feature amount. Store as data.
Even if the data is several kilobytes, the feature amount and the restored byte string are both tens of bytes at most, and the network load is small.
[Selection] Figure 2
Description
本発明は、コンピュータ間でデータのやり取りを行うデータ転送システムに関する。 The present invention relates to a data transfer system for exchanging data between computers.
非特許文献1では、データをクライアント側でチャンクとよばれる数キロバイトの単位に分割し、サーバが所有していない新規チャンクのみを転送する方式を提案している。サーバがチャンクを所有しているかどうかは、チャンクのハッシュ値が一致するかどうかで判断する。ハッシュ値はチャンクよりもデータ量が小さいため(数十バイト)、低帯域ネットワークでも負荷をかけずに送信することができる。クライアントはサーバが所有していないチャンクのみを転送すればよく、通常のデータ転送方式と比較して、より高速に全データをやり取りできるようになる。
Non-Patent
非特許文献1の方式を適用した場合、クライアントが転送しようとしているチャンクの中身が、サーバで所有しているチャンクの中身と少しでも異なっている場合、ハッシュ値が一致しないため、クライアントは当該チャンクの中身をすべて転送する必要がある。非特許文献2や特許文献1ではこの無駄を解決すべく、クライアント側でチャンクをさらに分割して、一致していない部分を絞り込んで転送する方式を提案している。
When the method of Non-Patent
なお、チャンキングについては非特許文献3〜5に、以下で述べる特徴量については非特許文献6および特許文献2に記載されている。
Note that chunking is described in
非特許文献1の方式を適用した場合、送信側が転送しようとしているチャンクの中身が、受信側で所有しているチャンクの中身と少しでも異なっている場合、ハッシュ値が一致しないため、送信側は当該チャンクの中身をすべて転送する必要がある。非特許文献2や特許文献1の方式でも、チャンクの中身の不一致部分を転送する必要がある。
When the method of Non-Patent
そこで、本発明は、受信側が所有しているデータが類似の場合でも転送不要とすることを目的とする。 Therefore, an object of the present invention is to eliminate the need for transfer even when the data owned by the receiving side is similar.
(請求項の記載とあわせます)
本発明では、第一のデータの特徴量及び当該第一のデータの誤り訂正用の復元バイト列を通信回線に送信するデータ送信装置と、
既に所有するデータの中で前記通信回線を介して受信した前記特徴量と類似の範囲の特徴量を有する第二のデータを特定し、当該第二のデータに前記通信回線を介して受信した前記復元バイト列を付加して誤り訂正処理を施し、当該誤り訂正処理後の第二のデータを前記第一のデータとして記憶するデータ受信装置とを備えたデータ転送システムを提供する。
(Combined with claims)
In the present invention, a data transmission device that transmits the feature amount of the first data and the restored byte sequence for error correction of the first data to the communication line;
The second data having a feature amount in a range similar to the feature amount received via the communication line among the data already owned is specified, and the second data received via the communication line There is provided a data transfer system including a data receiving device that performs error correction processing by adding a restored byte sequence and stores second data after the error correction processing as the first data.
データが数キロバイトであっても、その特徴量及び復元バイト列はいずれも高々数十バイトであり、ネットワーク負荷が小さい。 Even if the data is several kilobytes, the feature amount and the restored byte string are both tens of bytes at most, and the network load is small.
以下、本発明の実施の形態を図面に基づいて詳細に説明する。 Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
図1は、差分転送システムの概略を例示する図である。図示するように、差分転送システムは、n台のデータ送信クライアント20-1〜20-nと、データベースサーバ30を備え、これらがネットワーク10を介して相互に情報を送受信できるよう設計されている。データ送信クライアント20-1〜20-nはすべて同じ構成をとる。以下、任意の一つをデータ送信クライアント20と呼ぶ。
なお、本実施形態では、非特許文献1などの公知文献の文言にあわせて、クライアントやサーバといった文言を用いることにする。一般には、データ送信クライアント20はデータを送信するデータ送信装置、データベースサーバ30はデータを受信するデータ受信装置とよぶべきものである。
FIG. 1 is a diagram illustrating an outline of a differential transfer system. As shown in the figure, the differential transfer system includes n data transmission clients 20-1 to 20-n and a
In the present embodiment, words such as a client and a server are used in accordance with the words of known documents such as Non-Patent
本実施形態では、データ送信クライアント20は、転送対象となるファイルをまずチャンクに分割して、データベースサーバ30が所有していないチャンク100のみを転送することで、データ転送の高速化を図る。
以下、説明を明確にするために、非特許文献1などの公知文献にあわせて、ファイルを分割して得られるデータをチャンクとよび区別することにする。チャンクの実体はバイト列からなるデータに過ぎないため、以下で説明する実施の形態は、チャンクをデータと読み替えても正しく動作する。
In the present embodiment, the
Hereinafter, in order to clarify the explanation, data obtained by dividing a file in accordance with a known document such as Non-Patent
図2を用いて本実施形態における主要な処理の概要を説明する。データ送信クライアント20がファイル200をデータベースサーバ30に転送する場合を想定する。
An outline of main processing in the present embodiment will be described with reference to FIG. Assume that the
まずデータ送信クライアント20は、ファイル200をチャンクとよばれる単位で分割する(チャンキング)。チャンキングの具体的な手順については後で図11を用いて説明する。図2では、チャンキングの結果、ファイル200がチャンク202-1〜202-4の4つのチャンク202に分割された。
First, the
次にデータ送信クライアント20は、チャンク202-1〜202-4のそれぞれについて特徴量を計算する。特徴量とはチャンク間の類似度を近似的に求めるための数バイトから数十バイトのバイト列である。詳細については図12〜図14を用いて後で説明する。図2では例としてチャンク202-3の特徴量204が求まっている。特徴量204はデータベースサーバ30へ送信される。
Next, the
データベースサーバ30では、受信した特徴量204と所有している各チャンクの特徴量とを照合して類似度を計算し(特徴量照合処理210)、チャンク202-3と類似したチャンクを特定する。図2ではチャンク212が見つかった。
The
類似したチャンクが存在した場合、その旨をデータ送信クライアント20に通知する。それを受けてデータ送信クライアント20は、チャンク202-3から復元バイト列206を計算する。復元バイト列は、リードソロモン符号などのブロック符号の検査バイト列に相当する。チャンクの復元は、類似したチャンクに復元バイト列を付加して、誤り訂正処理を施すことでなされる。詳細については後で図15、16を用いて説明する。データベースサーバ30はデータ送信クライアント20から復元バイト列206を受け取り、チャンク212に付加してチャンクの復元を試みる(チャンク復元処理220)。
If a similar chunk exists, the
図2では復元に成功し、チャンク222が得られた。データベースサーバ30は、復元に成功した旨をデータ送信クライアント20に通知する。それを受けてデータ送信クライアント20は、チャンク202-3のハッシュ値208を計算して、データベースサーバ30へ送信する。データベースサーバ30は、受信したハッシュ値とチャンク222のハッシュ値とを照合し、一致していた場合はデータ送信クライアント20が所有するチャンク202-3を復元できたものとして、チャンク202-3の送信を取りやめる旨データ送信クライアント20に通知する(ハッシュ照合処理230)。チャンクを復元できなかった場合やハッシュ値が一致しなかった場合は、データ送信クライアント20へチャンク202-3の転送を要求する。
In FIG. 2, the restoration was successful and a chunk 222 was obtained. The
以上の方式によりネットワーク上でやり取りするデータ量が削減され、ファイル200の転送時間の短縮が期待できる。
With the above method, the amount of data exchanged on the network is reduced, and the transfer time of the
図3は、データ送信クライアントの概略構成を例示するブロック図である。図示するようにデータ送信クライアント20は、CPU302、メモリ304、記憶装置306、ユーザインターフェース308、通信インターフェース310、データ送信部32、および設定部330を備え、これらが内部バス300を介して相互に情報を送受信できるように設計されている。データ送信部32は、ファイル情報照合部320、チャンキング部322、特徴量算出部324、復元バイト列算出部326、ハッシュ値算出部328を備える。これらの装置は内部ハブ300を介して単体でCPU302などと相互に情報を送受信することができる。
FIG. 3 is a block diagram illustrating a schematic configuration of the data transmission client. As shown in the figure, the
まずは汎用的な構成要素について説明する。CPU302は、様々な数値計算や情報処理、機器制御などを行う中央処理装置である。メモリ304は、CPU302が直接読み書きできるRAMやROMなどの半導体記憶装置である。記憶装置306は、コンピュータ内でデータやプログラムを記憶するハードディスクや磁気テープ、フラッシュメモリなどといった装置である。当該装置はデータベースサーバ30に送信するファイルなどを格納する。
First, general-purpose components will be described. The
ユーザインターフェース308は、ディスプレイやマウス、キーボードなどといった、ユーザに処理結果を出力し、かつユーザの指示を受け付けてデータ送信クライアント20の各構成要素に反映させるための装置である。
The
通信インターフェース310は、データ送信クライアント20の各構成要素のネットワーク10を介したデータの送受信を制御するための装置である。相手方と認証して通信路を確立したり、処理が完了した後や、一定時間を経過しても相手方が何の応答しなかった場合などに通信路を切断したりなどの制御をおこなう。
The
本実施例特有の構成要素は、データ送信部32、これを構成するファイル情報照合部320、チャンキング部322、特徴量算出部324、復元バイト列算出部326、ハッシュ値算出部328である。これらのうち従来のデータ転送装置にはない最も特徴的な構成要素は、特徴量算出部324および復元バイト列算出部326である。
Constituent elements unique to the present embodiment are a
データ送信部32は、記憶装置306に格納されているファイルのデータベースサーバ30への転送指示をユーザインターフェース308を介してユーザから受け取り、ファイル情報照合部320、チャンキング部322、特徴量算出部324、復元バイト列算出部326、ハッシュ値算出部328などを制御して、メモリ304または記憶装置306に格納されているチャンクや特徴量などのデータを、通信インターフェース310を介してデータベースサーバ30と送受信するための装置である。データ転送処理の一連の動作フローについては後で図5〜図9を用いて説明する。
The
ファイル情報照合部320は、データベースサーバ30にファイルを転送する前に同一のファイルをデータベースサーバ30が所有していないかどうかを確認するための装置である。詳細については図5、6を用いて説明する。
The file
チャンキング部322は、記憶装置306に格納されているファイルを読み取ってチャンクに分割し、メモリ304または記憶装置306に一時的に格納するための装置である。チャンキング処理の詳細については、後で図11を用いて説明する。
The
特徴量算出部324は、メモリ304または記憶装置306に一時的に格納されているチャンクを読み取り、特徴量を算出し、メモリ304または記憶装置306に出力する装置である。特徴量の具体的な算出方法については、後で図12〜図14を用いて説明する。
The feature
復元バイト列算出部326は、メモリ304または記憶装置306に一時的に格納されているチャンクを読み取り、復元バイト列を算出し、メモリ304または記憶装置306に出力する装置である。復元バイト列の具体的な算出方法については、後で図15を用いて説明する。
The restored byte
ハッシュ値算出部328は、メモリ304または記憶装置306に格納されているファイルやチャンクを読み取り、ハッシュ値を算出し、メモリ304または記憶装置306に出力する装置である。ハッシュ値を導出するハッシュ関数として、例えばMD5やSHA-1などが知られている。
The hash
設定部330は、データベースサーバ30からの応答を待つ待機時間の上限や、チャンキング、特徴量算出などの処理に必要なパラメータを設定するための装置である。これらのパラメータはユーザインターフェース308を介してユーザによって設定され、チャンキング部322、特徴量算出部324、復元バイト列算出部326、ハッシュ値算出部328などに反映される。
The
なお、データ送信部32、これを構成するファイル情報照合部320、チャンキング部322、特徴量算出部324、復元バイト列算出部326、ハッシュ値算出部328、および設定部332については、それぞれの装置が単体で処理を実行してもよいし、それぞれの装置はプログラムのみを具備し、CPU302が当該プログラムをメモリ304に読み込んで実行してもよい。
The
図4は、データベースサーバ30の概略構成を例示するブロック図である。図示するようにデータベースサーバ30は、CPU402、メモリ404、記憶装置406、ユーザインターフェース408、通信インターフェース410、データ受信部42、テーブル管理部430、および設定部432を備え、これらが内部バス400を介して相互に情報を送受信できるように設計されている。データ受信部42は、ファイル情報照合部420、特徴量照合部422、チャンク復元部424、ハッシュ値照合部426、データ登録部428を備える。これらの装置は内部ハブ400を介して、単体でCPU402などと相互に情報を送受信することができる。
FIG. 4 is a block diagram illustrating a schematic configuration of the
汎用的な構成要素であるCPU402、メモリ404、記憶装置406、ユーザインターフェース408、通信インターフェース410については、図3と同様の機能を有するので説明を割愛する。本実施例特有の構成要素は、データ受信部42、これを構成するファイル情報照合部420、特徴量照合部422、チャンク復元部424、ハッシュ値照合部426、データ登録部428、およびテーブル管理部430である。これらのうち従来のデータ転送装置にはない最も特徴的な構成要素は、特徴量算出部422およびチャンク復元部424である。
General-purpose components such as the
データ受信部42は、通信インターフェース410を介してデータ送信クライアント20から特徴量やチャンクなどのデータを受信してメモリ404または記憶装置406に一時的に格納し、ファイル情報照合部420、特徴量照合部422、チャンク復元部424、ハッシュ値照合部428などを制御して、データ送信クライアント20が転送したファイルを受信または復元して、記憶装置406に格納するための装置である。データ転送処理の一連の動作フローについては後で図5〜図9を用いて説明する。
The
ファイル情報照合部420は、データ送信クライアント20からの要求に応じて記憶装置406に格納されているファイルの一覧(ファイル管理テーブル)を参照し、データ送信クライアント20が転送しようとしているファイルと同一のファイルが記憶装置406に存在するかを確認するための装置である。ファイル管理テーブルの具体例については後で図10を用いて説明する。もし同一のファイルが存在しているのであれば、データ受信部42はその旨を通信インターフェース310を介してデータ送信クライアント20に通知する。詳細については後で図5、6を用いて説明する。
The file
特徴量照合部422は、データ送信クライアント20から特徴量を受信してメモリ404または記憶装置406に一時的に格納し、記憶装置406に格納されているチャンクの特徴量の一覧(チャンク管理テーブル)を参照して、受信した特徴量と各チャンクの特徴量を照合し、類似するチャンクを特定するための装置である。チャンク管理テーブルの具体例については後で図10を用いて説明する。また、特徴量の照合処理の詳細については、後で図12〜図14を用いて説明する。特定された類似チャンクは、その実データまたはポインタがメモリ404または記憶装置406に一時的に格納される。
The feature
チャンク復元部424は、データ送信クライアント20から復元バイト列を受信してメモリ404または記憶装置406に一時的に格納し、特徴量照合部422がメモリ404または記憶装置406に一時的に格納した類似チャンクに付加して誤り訂正を施すことで、チャンクの復元処理を行う装置である。復元処理の詳細については後で図16を用いて説明する。復元に成功したチャンクはメモリ404または記憶装置406に一時的に格納される。
The
ハッシュ値照合部426は、データ送信クライアント20からハッシュ値を受信してメモリ404または記憶装置406に一時的に格納し、チャンク復元部424がメモリ404または記憶装置406に一時的に格納したチャンクのハッシュ値を計算し、一致するかどうか照合する装置である。
The hash
データ登録部428は、データ送信クライアント20から受信したチャンクや復元したチャンクを記憶装置406に格納し、テーブル管理部430を介してファイル管理テーブルやチャンク管理テーブルなどを更新するための装置である。
The
テーブル管理部430は、記憶装置406へのファイル操作を監視して、またはデータ受信部42からの呼び出しを受けて、ファイル管理テーブルやチャンク管理テーブルなどを更新するための装置である。これらの管理テーブルの具体例については後で図10を用いて説明する。なお、これらの管理テーブル自体は、メモリ404または記憶装置406に格納される。
設定部432は、データ送信クライアント20からの応答を待つ待機時間の上限や、特徴量照合、ハッシュ値算出などの処理に必要なパラメータを設定するための装置である。これらのパラメータはユーザインターフェース408を介してユーザによって設定され、ファイル情報照合部420、特徴量照合部422、チャンク復元部424、ハッシュ値照合部426、データ登録部428などに反映される。
The
The
なお、データ受信部42、これを構成するファイル情報照合部420、特徴量照合部422、チャンク復元部424、ハッシュ値照合部426、データ登録部428、およびテーブル管理部430、および設定部43については、それぞれの装置が単体で処理を実行してもよいし、それぞれの装置はプログラムのみを具備し、CPU402が当該プログラムをメモリ404に読み込んで実行してもよい。
The
図5を用いて、データ送信クライアント20とデータベースサーバ30の代表的なデータ転送処理を例示する。図3のデータ送信部32と図4のデータ受信部42とが、以下の手順でネットワーク10を介したデータ転送を行う。
A typical data transfer process between the
(S500)まずデータ送信クライアント20とデータベースサーバ30の間で通信路を確立する。具体的には、データ送信クライアント20の通信インターフェース310がデータベースサーバ30の通信インターフェース410に接続要求を通知し、通信インターフェース410がそれを許可することで、相互間の通信路を確立する。または、IKE(Internet Key Exchange)といった標準手順によって暗号化方式や暗号鍵などの情報を交換・共有し、より安全な通信路を確立してもよい。
(S500) First, a communication path is established between the
(S502)データ送信クライアント20のファイル情報照合部320は、ユーザがユーザインターフェース308を介して転送を指示したファイルFの情報502を、通信インターフェース310を介してデータベースサーバ30に送信する。ここでファイル情報502とは、ファイルFの名称、サイズ、作成日時、ハッシュ値などである。ファイルFのハッシュ値は、ハッシュ値算出部328が計算する。
(S502) The file
(S504)データベースサーバ30のデータ受信部42は、通信インターフェース410を介してファイル情報502を受信し、ファイル情報照合部420に渡す。ファイル情報照合部420は、記憶装置406に格納されているファイルの一覧(ファイル管理テーブル)を参照し、ファイル情報502をもとに、ファイルFと同一のファイルが記憶装置406に存在するかを確認する。ファイル管理テーブルの具体例については後で図10を用いて説明する。以下、ファイルFと同一のファイルを所有していないと仮定する。所有している場合については次の図6で説明する。
(S504) The
(S506)データベースサーバ30のデータ受信部42は、同一ファイルを所有していない旨506を通信インターフェース410を介してデータ送信クライアント20に通知する。
(S508)データ送信クライアント20のデータ送信部32は、同一ファイルを所有していない旨の通知506を通信インターフェース310を介して受信し、チャンキング部322を起動する。チャンキング部322は、ファイルFを記憶装置306から読み取って、チャンクに分割する。チャンキング処理の詳細については、後で図11を用いて説明する。以下、転送対象のファイルがk個のチャンクAi(i=1,...,k)に分割されたとする。
(S506) The
(S508) The
(S52)チャンクAiごとに、以下のS520〜S542の処理を行う(i=1,...,k)。すべてのチャンクAiについてS520〜S542の処理が完了したらS560へ飛ぶ。 (S52) The following processing of S520 to S542 is performed for each chunk Ai (i = 1,..., K). When the processing of S520 to S542 is completed for all chunks Ai, the process jumps to S560.
(S520)データ送信クライアント20の特徴量算出部324は、チャンクAiの特徴量522を算出する。特徴量の具体的な算出方法については、後で図12〜図14を用いて説明する。
(S520) The feature
(S522)データ送信クライアント20のデータ送信部32は、S520で求めた特徴量522を、通信インターフェース310を介してデータベースサーバ30に送信する。
(S522) The
(S524)データベースサーバ30のデータ受信部42は、通信インターフェース410を介して特徴量522を受信し、特徴量照合部422に受け渡す。特徴量照合部422は、チャンクの特徴量の一覧(チャンク管理テーブル)を参照して、特徴量522と各チャンクの特徴量を照合し、チャンクAiに類似するチャンクを特定する。チャンク管理テーブルの具体例については後で図10を用いて説明する。また、特徴量の照合処理の詳細については、後で図12〜図14を用いて説明する。以下、類似チャンクAi'が見つかったと仮定する。見つからなかった場合については図7で説明する。
(S524) The
(S526)データベースサーバ30のデータ受信部42は、類似チャンクAi'を所有している旨526を、通信インターフェース410を介してデータ送信クライアント20に通知する。
(S528)データ送信クライアント20のデータ送信部32は、類似チャンクAi'を所有している旨の通知526を通信インターフェース310を介して受信したとき、復元バイト列算出部326を起動する。復元バイト列算出部326は、チャンクAiの復元バイト列530を算出する。復元バイト列の具体的な算出方法については後で図15を用いて説明する。
(S526) The
(S528) When the
(S530)データ送信クライアント20のデータ送信部32は、S528で求めた復元バイト列530を、通信インターフェース310を介してデータベースサーバ30に送信する。
(S530) The
(S532)データベースサーバ30のデータ受信部42は、通信インターフェース410を介して復元バイト列530を受信し、チャンク復元部424に受け渡す。チャンク復元部424は、復元バイト列530を類似チャンクAi'に付加して、チャンクの復元処理を行う。復元処理の詳細については、後で図16を用いて説明する。以下、復元に成功し、チャンクBiが得られたと仮定する。復元に失敗した場合については図8で説明する。
(S532) The
(S534)データベースサーバ30のデータ受信部42は、復元に成功した旨534を、通信インターフェース410を介してデータ送信クライアント20に通知する。
(S534) The
(S536)データ送信クライアント20のデータ送信部32は、復元に成功した旨の通知534を通信インターフェース310を介して受信し、ハッシュ値算出部328を起動する。ハッシュ値算出部328は、チャンクAiのハッシュ値528を算出する。
(S536) The
(S538)データ送信クライアント20のデータ送信部32は、S536で求めたハッシュ値528を、通信インターフェース310を介してデータベースサーバ30に送信する。
(S538) The
(S540)データベースサーバ30のデータ受信部42は、通信インターフェース410を介してハッシュ値530を受信し、ハッシュ値照合部426に受け渡す。ハッシュ値照合部426は、チャンクBiのハッシュ値を計算し、ハッシュ値530と一致するか確かめる。以下、一致したと仮定する。一致しなかった場合については図9で説明する。
(S540) The
(S542)データベースサーバ30のデータ登録部428は、データベースサーバ30側で復元したチャンクBi(すなわちデータ送信クライアント20が所有するチャンクAi)を記憶装置406に格納し、テーブル管理部430に格納したチャンクBiの情報をテーブル管理部430に通知する。テーブル管理部430は、当該チャンクの情報をチャンク管理テーブルに追記する。チャンク管理テーブルの具体例については、後で図10を用いて説明する。
(S542) The
(S560)すべてのチャンクAiについて以上のS520〜S542の処理が完了したら、S500で確立した通信路を切断する。 (S560) When the processing of S520 to S542 is completed for all chunks Ai, the communication path established in S500 is disconnected.
(S562)データベースサーバ30のデータ受信部42は、テーブル管理部430にファイル転送が完了した旨を通知する。それを受けてテーブル管理部430は、ファイル管理テーブルなどを更新する。以上でデータ転送処理が完了する。
(S562) The
本実施例によって、データ送信クライアント20が転送しようとしているチャンクと類似するチャンクをデータベースサーバ30で所有していた場合、データベースサーバ30側でそれを再現できて転送が不要となるため、非特許文献1、2や特許文献1などの従来方式と比較して、よりデータ転送の総時間を短縮することができる。
According to this embodiment, when the
なお、本実施例においてはハッシュ値を用いてファイルやチャンクの同一性を確認するが、異なるファイルまたはチャンクであるにもかかわらずハッシュ値が同一となる「衝突」が発生する可能性がわずかながら存在する。衝突が発生した場合、データベースサーバ30側で正しくチャンクを受信または復元できなくなってしまう。衝突を抑える方法として、複数の異なるハッシュ関数を用いる方式が考えられる。複数のハッシュ値が同時に衝突する確率はそれぞれの衝突確率の積で与えられるので非常に小さく、かつ、ハッシュ値は高々数十バイトなので、複数送信したとしてもネットワークにかける負荷は小さい。よって、この方式によってネットワークに負荷をかけずに衝突確率を低減することができる。
In this embodiment, the identity of the file or chunk is confirmed using the hash value, but there is a slight possibility that a “collision” in which the hash value is the same despite the fact that the file or chunk is different. Exists. When a collision occurs, the
また、S425においてチャンクAiに類似するチャンクを一つだけ特定するのではなく、あらかじめ定めた所定の閾値以上の類似度を与える複数のチャンクを特定してもよい。この場合、データ受信部42は、S532の復元処理を当該複数のチャンクについて行うことになる。復元に成功するのは(データ送信クライアント30が転送しようとしているチャンクに一致する)ただ一つのチャンクであるはずなので、復元に成功したらS532の処理を打ち切り、復元したチャンクについてS534以降の処理を行う。当該複数のチャンクすべてについて復元に失敗した場合は、図8で説明する処理を行う。
Further, instead of specifying only one chunk similar to the chunk Ai in S425, a plurality of chunks that give a similarity equal to or higher than a predetermined threshold value may be specified. In this case, the
図5のS504で、データベースサーバ30がデータ送信クライアント20が転送しようとしているファイルFを所有していた場合の処理フローを、図6を用いて説明する。
(S500)〜(S502)図5の説明と同様である。
(S600)データベースサーバ30のデータ受信部42は、通信インターフェース410を介してファイル情報502を受信し、ファイル情報照合部420に渡す。ファイル情報照合部420はファイル管理テーブルを参照し、ファイル情報602をもとに、ファイルFと同一のファイルが記憶装置406に存在するかを確認する。以下、ファイルFと同一のファイルを所有していると仮定する。
The processing flow when the
(S500) to (S502) This is the same as the description of FIG.
(S600) The
(S602)データ受信部42は、同一ファイルを所有している旨602を通信インターフェース410を介してデータ送信クライアント20に通知する。それを受けてデータ送信クライアント20が通信路を切断して(S560)、処理が完了する。
(S602) The
図5のS524において、データベースサーバ30の特徴量照合部422がデータ送信クライアント20が転送しようとしているチャンクに類似したチャンクを見つけられなかった場合の処理フローを、図7を用いて説明する。
(S500)〜(S522)図5の説明と同様である。
(S700)S524と同様、データベースサーバ30の特徴量照合部422は、チャンクの特徴量の一覧(チャンク管理テーブル)を参照して、特徴量522と各チャンクの特徴量を照合し、データ送信クライアント20が転送しようとしているチャンクに類似するチャンクを特定する。以下、類似チャンクが見つからなかったと仮定する。
The processing flow when the feature
(S500) to (S522) This is the same as the description of FIG.
(S700) Similar to S524, the feature
(S702)データベースサーバ30のデータ受信部42は、類似チャンクを所有していない旨702を、通信インターフェース410を介してデータ送信クライアント20に通知する。
(S702) The
(S704)データ送信クライアント20のデータ送信部32は、データ送信クライアント20が転送しようとしているチャンク704を、通信インターフェース310を介してデータベースサーバ30に転送する。
(S704) The
(S706)データベースサーバ30のデータ受信部42は、通信インターフェース410を介してチャンク704を受信し、データ登録部428に受け渡す。データ登録部428は、チャンク704を記憶装置406に格納し、格納したチャンクの情報をテーブル管理部430に通知する。テーブル管理部430は、当該チャンクの情報をチャンク管理テーブルに追記する。
(S706) The
(S560)〜(S562)図5の説明と同様である。 (S560) to (S562) The same as the description of FIG.
図5のS532において、データベースサーバ30のチャンク復元部424がデータ送信クライアント20が転送しようとしているチャンクを復元できなかった場合の処理フローについて、図8を用いて説明する。
(S500)〜(S530)図5の説明と同様である。
(S800)データベースサーバ30のデータ受信部42は、通信インターフェース410を介して復元バイト列530を受信し、チャンク復元部424に受け渡す。チャンク復元部424は、復元バイト列530を用いてチャンクの復元処理を行う。以下、復元に失敗したと仮定する。
A processing flow when the
(S500) to (S530) This is the same as the description of FIG.
(S800) The
(S802)データベースサーバ30のデータ受信部42は、復元に失敗した旨802を、通信インターフェース410を介してデータ送信クライアント20に通知する。
(S704)〜(S706)図7の説明と同様である。
(S560)〜(S564)図5の説明と同様である。
(S802) The
(S704) to (S706) This is the same as the description of FIG.
(S560) to (S564) This is the same as the description of FIG.
図5のS540において、データベースサーバ30のハッシュ値照合部426が生成した復元チャンクのハッシュ値とデータ送信クライアント20から受信したハッシュ値とが一致しなかった場合について、図9を用いて処理フローを説明する。
(S500)〜(S538)図5の説明と同様である。
(S900)データベースサーバ30のデータ受信部42は、通信インターフェース410を介してハッシュ値530を受信し、ハッシュ値照合部426に受け渡す。ハッシュ値照合部426は、チャンク復元部424が復元したチャンクのハッシュ値を計算し、ハッシュ値530と一致するか確かめる。以下、一致しなかったと仮定する。
In the case where the hash value of the restored chunk generated by the hash
(S500) to (S538) This is the same as the description of FIG.
(S900) The
(S902)データベースサーバ30のデータ受信部42は、ハッシュ値が一致しない旨902を、通信インターフェース410を介してデータ送信クライアント20に通知する。
(S704)〜(S706)図7の説明と同様である。
(S560)〜(S564)図5の説明と同様である。
(S902) The
(S704) to (S706) This is the same as the description of FIG.
(S560) to (S564) This is the same as the description of FIG.
なお、図5〜図9において、データ転送処理中に通信路が切断された場合、または、あらかじめ定めた時間を経過しても何の応答もせず、通信インターフェース310、410が通信路を切断した場合、データ受信部42はファイルの受信を打ち切り、ファイル管理テーブル1000やファイル構成チャンク管理テーブル1040を更新しない。その結果、記憶装置406には、どのファイルの構成要素にならないチャンクが蓄積することになる。本実施例はデータベースサーバ30が多くのチャンクを所有しているほどデータ転送の高速化に効果的なので、どのファイルの構成要素にならないチャンクを蓄積しても問題ないという立場をとり、記憶装置406に格納されているチャンクのみを管理するチャンク管理テーブルを設けることにした。
5 to 9, when the communication path is disconnected during the data transfer process, or when a predetermined time elapses, no response is made and the communication interfaces 310 and 410 disconnect the communication path. In this case, the
もちろん、記憶装置406の容量が切迫している場合などに、どのファイルにも紐付いていないチャンクを削除することも可能である。その場合、テーブル管理部430を介してチャンク管理テーブルを更新する必要がある。
Of course, when the capacity of the
図10を用いて、テーブル管理部430が管理する、ファイル管理テーブル1000、チャンク管理テーブル1020、ファイル構成チャンクテーブル1040のデータ構成について説明する。
The data configuration of the file management table 1000, chunk management table 1020, and file configuration chunk table 1040 managed by the
ファイル管理テーブル1000は、図4、5の説明で述べた、データベースサーバ30の記憶装置406に格納されているファイルの一覧のことである。ファイル管理テーブル1000は、ファイルの一意なIDを格納するファイルIDカラム1002、ファイル名を格納するファイル名カラム1004、ファイルが格納されているフォルダ名を格納するフォルダ名カラム1006、ファイルのバイト長を格納するファイルサイズカラム1008、ファイル作成日時を格納するファイル作成日時カラム1010、ファイルのハッシュ値を格納するハッシュ値カラム1012などで構成される。これらの情報は、データ送信クライアント20が転送するファイルと同一のファイルをデータベースサーバ30が所有しているかどうかを判定するために用いられる。なお、ハッシュ値カラム1012は、図5の説明で述べたように複数のハッシュ値を用いてファイルの同一性を判断する場合には、複数のハッシュ値を格納する。
The file management table 1000 is a list of files stored in the
図10の例では、ファイルID「1」のファイル「manual.doc」がフォルダ「C:\」に格納されており、そのファイルサイズは133,423バイトで、ファイル作成日時は2007年10月21日、ハッシュ値が16進表記で「0abf016edf」と与えられることがわかる。 In the example of FIG. 10, the file “manual.doc” with the file ID “1” is stored in the folder “C: \”, the file size is 133,423 bytes, and the file creation date is October 21, 2007. It can be seen that the hash value is given as “0abf016edf” in hexadecimal notation.
ファイル管理テーブル1000は、記憶装置406上でファイルが追加削除などされた場合、または図5などのS562でファイル転送が完了した場合に、テーブル管理部430によって更新される。
The file management table 1000 is updated by the
チャンク管理テーブル1020は、図4、5の説明で述べた、データベースサーバ30の記憶装置406に格納されているチャンクの一覧のことである。チャンク管理テーブル1020は、チャンクの一意なIDを格納するチャンクIDカラム1022、チャンクの特徴量を格納する特徴量カラム1024、チャンクのハッシュ値を格納するハッシュ値カラム1026、チャンクのバイト長を格納するチャンクサイズカラム1028などで構成される。なお、ハッシュ値カラム1026は、図5の説明で述べたように複数のハッシュ値を用いて同一性を判断する場合には、複数のハッシュ値を格納する。特徴量を用いたチャンクの類似判定の詳細については、後で図12〜図14を用いて説明する。
The chunk management table 1020 is a list of chunks stored in the
図10の例では、チャンクID「0x000001」のチャンクの特徴量がBase64表記で「AEHgyXIWET/BAQC7PRcRP8EBAFi」、ハッシュ値が16進表記で「9bac9347ff」与えられ、チャンクサイズが1,423バイトであることが分かる。なお、ファイルIDと区別するため、チャンクIDを「0x」で始まる文字列で記載した。 In the example of FIG. 10, it can be seen that the feature value of the chunk with the chunk ID “0x000001” is given as “AEHgyXIWET / BAQC7PRcRP8EBAFi” in Base64 notation, the hash value is given as “9bac9347ff” in hexadecimal notation, and the chunk size is 1,423 bytes. In order to distinguish it from the file ID, the chunk ID is described as a character string starting with “0x”.
チャンク管理テーブル1100は、記憶装置406上でチャンクが追加削除などされた場合、または図5のS542、図7〜図9のS706でデータ登録部428が記憶装置406にチャンクを格納した場合に、テーブル管理部430によって更新される。
The chunk management table 1100 is displayed when a chunk is added or deleted on the
ファイル構成チャンク管理テーブル1040は、ファイルを構成するチャンクについての情報をまとめた一覧のことである。ファイル構成チャンク管理テーブル1040は、ファイルIDを格納するファイルIDカラム1042、ファイル名を格納するファイル名カラム1044、ファイルが格納されているフォルダ名を格納するフォルダ名カラム1046、ファイルを構成するチャンクのチャンクIDを格納するチャンクIDカラム1048、チャンクがファイルの先頭何バイト目から開始するか、オフセットについての情報を格納するオフセットカラム1050、チャンクのサイズを格納するチャンクサイズカラム1052などで構成される。
The file configuration chunk management table 1040 is a list in which information on chunks constituting a file is collected. The file configuration chunk management table 1040 includes a
図10の例では、ファイルID「1」のファイル「manual.doc」がフォルダ「C:\」に格納されており、ファイル「manual.doc」の先頭から1,422バイト目までがチャンクID「0x000001」のチャンクで、1,423バイトから2,314バイト目までがチャンクID「0x000002」のチャンクで構成されていることが分かる。 In the example of FIG. 10, the file “manual.doc” with the file ID “1” is stored in the folder “C: \”, and the chunk ID “0x000001” is from the first 1,422 bytes of the file “manual.doc”. It can be seen that the chunks from 1,423 bytes to 2,314 bytes are composed of chunks with chunk ID “0x000002”.
ファイル構成チャンク管理テーブル1040は、記憶装置406上でファイルが追加削除などされた場合、または図5などのS562でファイル転送が完了した場合に、テーブル管理部430によって更新される。
The file configuration chunk management table 1040 is updated by the
図3のチャンキング部322が行うファイルのチャンキングの具体的な手順について、図11を用いて説明する。
A specific procedure of file chunking performed by the
単純なチャンキングの方法として、あらかじめ定めた固定長でファイルを分割する方式が考えられる。しかしこの方式では、ファイルの先頭に1バイトでも挿入されるとファイルの分割点がずれてしまい、チャンクが一致しなくなってしまう。非特許文献1などの公知技術では、チャンクのハッシュ値の同一性をもとに転送すべきチャンクを決めるので、これは好ましくない。そこで非特許文献1などでは、チャンクの長さを可変にしてファイルを分割する方式を用いている。本実施例では、チャンクの長さが固定長の方式、非特許文献1などで採用されている可変長の方式、どちらのチャンキング方式を採用してもよい。
As a simple chunking method, a method of dividing a file by a predetermined fixed length can be considered. However, with this method, if even one byte is inserted at the beginning of the file, the file division point will shift and the chunks will not match. In a known technique such as
可変長の方式では、図11で示すような以下の処理を行ってファイル1100をチャンキングする。
(1)チャンキング部322は、ファイル1100のtバイト目から1バイトずつ走査し、走査点1104の前tバイトの部分バイト列1102を取り出す。tは小さい値で、例えば非特許文献3では7としている。本実施例でも同じ値をとって構わない。走査点1104が先頭からpバイト目にあるとき、部分バイト列1102は、p-t+1バイト目のバイト値1106-1からpバイト目のバイト値1106-tのt個のバイト値で構成される。なお、pバイト目のバイト値1106-tと走査点1104は一致する。
(2)走査点1104がファイル1100をチャンクに分割するための分割点であるかどうか判断するために、t個のバイト値1106-1〜1106-tからラビンフィンガープリント1120を計算する。ラビンフィンガープリント1120とはランダムなバイト値r1〜rtと部分バイト列1102の内積のことである。ラビンフィンガープリントの詳細については非特許文献4を参照のこと。以下、部分バイト列1102に対するラビンフィンガープリントの値をRと書く。
(3)Rをあらかじめ定めた値(以下Dとする)で割った余りが0となったとき、走査点1104をファイル1100をチャンクに分割するための分割点とする(チャンキング条件1140)。
(4)チャンキング部322は、(1)〜(3)の処理をファイル1100のtバイト目から1バイトずつ走査して繰り返し行うことで、ファイル1100を複数のチャンクに分割する。
In the variable length method, the file 1100 is chunked by performing the following processing as shown in FIG.
(1) The
(2) In order to determine whether the scanning point 1104 is a division point for dividing the file 1100 into chunks, a rabin fingerprint 1120 is calculated from the t byte values 1106-1 to 1106-t. The rabin fingerprint 1120 is an inner product of random byte values r1 to rt and a partial byte string 1102. See
(3) When the remainder obtained by dividing R by a predetermined value (hereinafter referred to as D) becomes 0, the scanning point 1104 is set as a division point for dividing the file 1100 into chunks (chunking condition 1140).
(4) The
仮にファイル1100がランダムなバイト値で構成されるのであれば、チャンキング条件1140が満たされる確率は1/Dに等しくなり、チャンクは平均Dの長さとなる。しかし、実際にはファイル1100のバイト値の分布には偏りがあるので、必ずしも長さDのチャンクに分解できるとは限らない。ラビンフィンガープリントはチャンクの長さの偏りが発生しにくく、また高速に計算できることが知られているため、チャンキングで採用されることが多い。チャンクの長さの偏りなど数学的な解析については非特許文献5に詳しい。
If the file 1100 is composed of random byte values, the probability that the chunking condition 1140 is satisfied is equal to 1 / D, and the chunk has an average length D. However, since the distribution of byte values in the file 1100 is actually biased, it cannot always be broken down into chunks of length D. Rabin fingerprints are often used in chunking because they are less prone to chunk length deviation and can be calculated at high speed.
本実施例の第一の特徴は、データベースサーバ30がチャンクの特徴量を用いて類似するチャンクを見つけ出す点である。以下、図12〜図14を用いて、チャンクの特徴量の算出方法および特徴量を用いたチャンクの類似判定の方法について、具体的に説明する。特徴量の具体例として、類似度の近似精度が高いファジィハッシュ(図12)、データ量が少ないブルームフィルタ(図13)、その改良であるトレイト(図14)をあげる。
The first feature of the present embodiment is that the
図12は、チャンクからファジィハッシュを計算する処理、およびファジィハッシュから類似度を計算する処理の概要を例示する図である。ファイル1200が、図11で説明したようなチャンキング処理を経てチャンキングされたとする。チャンキング後のファイル1200内のチャンク1202のファジィハッシュは、以下の手順で求められる。
(1)データ送信クライアント20の特徴量算出部324は、チャンキング部322を呼び出して、チャンク1202をさらに細かくチャンキングする。図11の説明で述べた通り、チャンキング条件1140におけるDの値を小さくとることで、チャンク1202をさらに細かくチャンキングできる。以下、チャンク1202をさらにチャンキングしたものをサブチャンクとよぶ。サブチャンクの個数をdとかく。図12ではチャンク1202がd=5個にチャンキングされて、サブチャンク1204(S1,...,S5)が得られた。
(2)サブチャンク(S1,S2,...,Sd)それぞれについてハッシュ値を計算する。サブチャンクSiのハッシュ値をHash(Si)とかく(i=1,...,d)。
(3)計算したハッシュ値{Hash(Si)|i=1,...,d}の配列(Hash(S1),...,Hash(Sd))が、ファジィハッシュである。図12の例では、チャンク1202のファジィハッシュ1206は、要素がd=5個の配列(Hash(S1),...,Hash(S5))で与えられる。
FIG. 12 is a diagram illustrating an overview of a process for calculating a fuzzy hash from a chunk and a process for calculating a similarity from a fuzzy hash. It is assumed that the file 1200 has been chunked through the chunking process described with reference to FIG. The fuzzy hash of the
(1) The feature
(2) A hash value is calculated for each of the sub chunks (S1, S2,..., Sd). Let Hash (Si) be the hash value of sub-chunk Si (i = 1, ..., d).
(3) The array of calculated hash values {Hash (Si) | i = 1,..., D} (Hash (S1),..., Hash (Sd)) is a fuzzy hash. In the example of FIG. 12, the fuzzy hash 1206 of the
ファジィハッシュを用いると、どのサブチャンクが一致するかどうか容易に特定することができる。よってチャンクの類似度を、共通するサブチャンクの個数とサブチャンク全体の要素数の比で近似すれば、高速に類似度の近似値を計算できる。具体的は、ファジィハッシュH=(h1,h2,...)とF=(f1,f2,...)が与えられた場合、類似度は、HとFの積集合の要素数とHとFの和集合の要素数の比で近似できる。 Using a fuzzy hash, it is easy to identify which sub-chunk matches. Therefore, if the similarity of chunks is approximated by the ratio of the number of common sub-chunks and the number of elements in the entire sub-chunk, an approximate value of similarity can be calculated at high speed. Specifically, when fuzzy hashes H = (h1, h2, ...) and F = (f1, f2, ...) are given, the similarity is calculated as the number of elements in the intersection of H and F and H Can be approximated by the ratio of the number of elements in the union of F and F.
図12の例では、チャンク1202がサブチャンク1204にチャンキングされてファジィハッシュ1206が求まり、チャンク1212がサブチャンク1214にチャンキングされてファジィハッシュ1216が求まっている。サブチャンク1214はサブチャンク1204とS2、S2'が異なり、また、S5に相当するサブチャンクがない。チャンクが異なればハッシュ値も異なるので、ファジィハッシュ1206、1216の積集合は(Hash(S1), Hash(S3), Hash(S4))、和集合は(Hash(S1), Hash(S2), Hash(S2'), Hash(S3), Hash(S4), Hash(S5))で与えられる。従って、チャンク1202と1212の類似度は3/6=1/2で近似的に与えられる。
In the example of FIG. 12, the
ファジィハッシュは類似ファイルの検索などに用いられている。詳細については非特許文献3や特許文献2を参照のこと。
The fuzzy hash is used for searching similar files. See
ファジィハッシュはサブチャンクのハッシュ値をすべて保持しておく必要があるため、データ量が多い。データ量を大幅に削減した特徴量としてブルームフィルタが知られている。図13を用いて、ブルームフィルタを計算する処理、およびファジィハッシュから類似度を計算する処理の概要について説明する。図11と同様、ファイル1300が、図11で説明したようなチャンキング処理を経てチャンキングされたとする。チャンキング後のファイル1300内のチャンク1302のブルームフィルタは、以下の手順で求められる。
(1)データ送信クライアント20の特徴量算出部324は、チャンキング部322を呼び出して、チャンク1302をさらに細かくチャンキングする。サブチャンクの個数をdとかく。図13の例ではチャンク1302がd=5個にチャンキングされて、サブチャンク1304(S1,...,S5)が得られた。
(2)サブチャンク1304それぞれについてハッシュ値を計算する。サブチャンクSiのハッシュ値をHash(Si)とかく(i=1,...,d)。
(3)すべてのハッシュ値Hash(Si)(i=1,...,d)の論理和1306をとる。ハッシュ値Hash(S1)とHash(S2)の論理和のkビット目は、Hash(S1)のkビット目、Hash(S2)のkビット目のいずれかが1である場合1となり、両方とも0となる場合に限り0となる。
(4)ハッシュ関数Hashの出力をLビットとすると、(3)で長さLのビット列が得られる。図13の例では、32ビットのビット列が得られている。これがブルームフィルタである。
Since the fuzzy hash needs to hold all the hash values of the sub chunks, the amount of data is large. A Bloom filter is known as a feature amount that greatly reduces the amount of data. The outline of the process for calculating the Bloom filter and the process for calculating the similarity from the fuzzy hash will be described with reference to FIG. As in FIG. 11, it is assumed that the file 1300 is chunked through the chunking process described with reference to FIG. The Bloom filter of the
(1) The feature
(2) A hash value is calculated for each
(3) The
(4) If the output of the hash function Hash is L bits, a bit string of length L is obtained in (3). In the example of FIG. 13, a 32-bit bit string is obtained. This is the Bloom filter.
もし共通するサブチャンクがあった場合、同じ位置のビットが1となるため、一致するビットの個数を数えればチャンクの類似度を近似的に求めることができる。具体的に説明すると、ブルームフィルタB=(b1,...,bL)とD=(d1,...,dL)が与えれれた場合、類似度は、bi=di(i=1,...,L)となるiの個数をLで割ったもので近似できる。これは、BとDの論理積を取り、0の個数をLで割ったものに一致する。 If there is a common sub-chunk, the bit at the same position is 1. Therefore, if the number of matching bits is counted, the similarity of chunks can be obtained approximately. More specifically, when Bloom filters B = (b1, ..., bL) and D = (d1, ..., dL) are given, the similarity is bi = di (i = 1,. .., L) can be approximated by the number of i divided by L. This is equivalent to taking the logical product of B and D and dividing the number of 0s by L.
前述のファジィハッシュではハッシュ値をすべて特徴量として取っておく必要があるが、このブルームフィルタでは、ハッシュ値の論理和をとっているため、容量を大幅に削減できるというメリットがある。また、論理積の計算は高速であるため、ファジィハッシュよりも高速に類似度を計算できるというメリットもある。しかし、一般に、同じ位置のビットが一致しても、対応するサブチャンクが一致するとは限らない。従って、類似度の精度はファジィハッシュよりも劣る。 In the above-described fuzzy hash, it is necessary to save all hash values as feature quantities. However, since this Bloom filter takes the logical sum of hash values, there is an advantage that the capacity can be greatly reduced. In addition, since the logical product calculation is fast, there is an advantage that the similarity can be calculated faster than the fuzzy hash. However, generally, even if bits at the same position match, the corresponding sub-chunks do not always match. Therefore, the accuracy of similarity is inferior to that of fuzzy hash.
図12の例では、チャンク1302がサブチャンク1304にチャンキングされてブルームフィルタ1208が求まり、チャンク1312からブルームフィルタ1318が求まっている。ブルームフィルタのビット長は32ビットであり、そのうち一致しないビットが12個あるので(一致しないビットには下線が引いてある)、類似度は近似的に12/32=3/8と求められる。
In the example of FIG. 12,
ブルームフィルタはデータ量を大幅に削減した特徴量であるが、前述の通り類似度の近似精度が劣る。その精度を向上させたのがトレイトである。チャンクからトレイトを計算する処理の概要を図14を用いて説明する。図11と同様、ファイル1400が、図11で説明したようなチャンキング処理を経てチャンキングされたとする。チャンキング後のファイル1400内のチャンク1402のトレイトは、以下の手順で求められる。
(1)データ送信クライアント20の特徴量算出部324は、チャンキング部322を呼び出して、チャンク1402をさらに細かくチャンキングする。サブチャンクの個数をdとかく。図14の例ではチャンク1402が5つにチャンキングされて、サブチャンク1404(S1,...,S5)が得られた。
(2)ハッシュ値算出部328は、t種類のハッシュ関数Hash_k(k=1,...,t)を準備しておく。図14の例ではt=4種類のハッシュ関数Hash_1,...,Hash_4を準備した。特徴量算出部324はハッシュ算出部328を呼び出して、サブチャンクSiそれぞれについてt種類のハッシュ関数を適用してハッシュ値を計算する(i=1,...,d)。図14の例では、4×5=20個のハッシュ値Hash_1(S1),...,Hash_4(S5)が得られた。
(3)各kについて、d個のハッシュ値Hash_k(Si)(i=1,...,d)の最小値を求める(k=1,...,t)。図14では、k=1についてHash_1(S2)が最小値1406-1となり、k=4についてHash_4(S4)が最小値1406-4となった。以下求めた最小値を最小ハッシュ値とよぶ。
(4)k個の最小ハッシュ値から先頭bバイトをとる。これを連結した長さk×bのビット列がトレイトである。図14の例では、最小ハッシュ値1406-1の先頭7ビット1408-1や、最小ハッシュ値1406-4の先頭7ビット1408-4が連結されている。
The Bloom filter is a feature amount that greatly reduces the amount of data, but as described above, the approximation accuracy of the similarity is poor. The trait has improved its accuracy. An outline of processing for calculating a trait from a chunk will be described with reference to FIG. As in FIG. 11, it is assumed that the file 1400 has been chunked through the chunking process described with reference to FIG. The trait of the
(1) The feature
(2) The hash
(3) For each k, find the minimum value of d hash values Hash_k (Si) (i = 1,..., D) (k = 1,..., T). In FIG. 14, Hash_1 (S2) has a minimum value 1406-1 for k = 1, and Hash_4 (S4) has a minimum value 1406-4 for k = 4. The minimum value obtained below is called the minimum hash value.
(4) Take the first b bytes from the k minimum hash values. A bit string having a length k × b obtained by concatenating these is a trait. In the example of FIG. 14, the first 7 bits 1408-1 of the minimum hash value 1406-1 and the first 7 bits 1408-4 of the minimum hash value 1406-4 are concatenated.
類似度の計算は、ブルームフィルタと同様である。すなわち、一致するビットの個数をトレイトのビット長で割ったもので与えられる。 The calculation of the similarity is the same as that of the Bloom filter. That is, it is given by the number of matching bits divided by the trait bit length.
ハッシュ値の論理和を取る代わりに先頭bビットを抜き出して連結することで、トレイトは、ブルームフィルタよりも精度よく類似度を与えることが知られている。詳細については非特許文献6参照のこと。 It is known that the trait gives similarities more accurately than the Bloom filter by extracting and concatenating the leading b bits instead of taking the logical sum of the hash values. See Non-Patent Document 6 for details.
本実施例の第二の特徴は、復元バイト列を用いて、データ送信クライアント20が転送しようとしているチャンクを、データベースサーバ30側で復元する点である。以下、図15、16を用いて、チャンクから復元バイト列を求める処理、および復元バイト列を用いてチャンクを復元する処理について説明する。
The second feature of the present embodiment is that the chunk that the
まず、上記処理のベースとなる誤り訂正技術の概要について説明する。誤り訂正にはブロック符号、畳込み符号などさまざまな方式が知られているが、本実施例ではブロック符号を用いる。ブロック符号とは、送信しようとする情報から検査バイト列を計算し、これを付加して冗長性を加えることで、受信側でなるべく誤りのない復号を可能にするものである。一般に誤り訂正技術は、検査バイト列を求める誤り訂正符号化処理と、送信した情報に生じた誤りを訂正する誤り訂正処理のペアで構成される。 First, the outline of the error correction technology that is the basis of the above processing will be described. Various methods such as block codes and convolutional codes are known for error correction. In this embodiment, block codes are used. The block code calculates a check byte string from information to be transmitted and adds this to add redundancy, thereby enabling decoding on the receiving side with as little error as possible. In general, the error correction technique is composed of a pair of error correction coding processing for obtaining a check byte string and error correction processing for correcting an error occurring in transmitted information.
ブロック符号の特徴は、送信しようとする情報や検査バイト列が固定長である点である。すなわち、送信しようとする情報をkバイト、検査バイト列をhバイトとすると、kやhの組み合わせは、用いるブロック符号の種類によって固定される。これは畳み込み符号のような誤り訂正方式とは異なる点である。一般に、検査バイト列のバイト長hを増やすほど、訂正可能なバイト数が増大する。ただし、その分送信しなければならない総データ(k+hバイト)も増大し、ネットワーク負荷がかかることになる。 A feature of the block code is that the information to be transmitted and the inspection byte string have a fixed length. That is, if the information to be transmitted is k bytes and the inspection byte string is h bytes, the combination of k and h is fixed depending on the type of block code used. This is different from an error correction method such as a convolutional code. In general, the number of bytes that can be corrected increases as the byte length h of the inspection byte sequence is increased. However, the total data (k + h bytes) that must be transmitted increases accordingly, and a network load is applied.
ブロック符号で最も誤り訂正能力が高いものの一つとして、リードソロモン符号が知られている。リードソロモン符号を用いると、検査バイト列をhバイトとした場合、送信する総データ(k+hバイト)のうち大体h/2バイトを訂正できることが知られている。すなわち、総データ中h/2バイトの値がネットワーク上などで変化したとしても、誤り訂正して元のバイト列を復元することができる。一方、h/2バイト以上変化した場合は、誤り訂正に失敗して何も復元できず、誤り訂正に失敗したという結果が返される。 A Reed-Solomon code is known as one of the block codes having the highest error correction capability. It is known that when the Reed-Solomon code is used and the inspection byte string is h bytes, roughly h / 2 bytes of the total data (k + h bytes) to be transmitted can be corrected. That is, even if the value of h / 2 bytes in the total data changes on the network or the like, the original byte string can be restored by correcting the error. On the other hand, if it changes by more than h / 2 bytes, error correction fails and nothing can be restored, and the result that error correction failed is returned.
本来誤り訂正は、ネットワークなどで生じた誤りを訂正するために考え出された技術であるが、本実施例においては、クライアントが転送しようとするチャンクAとサーバ側で所有する類似チャンクA'の違いを誤りだとみなして、A'からAを復元するために誤り訂正技術を用いる。 Originally, error correction is a technique that has been conceived to correct errors that occur in a network or the like, but in this embodiment, the chunk A to be transferred by the client and the similar chunk A ′ owned by the server side Considering the difference as an error, an error correction technique is used to restore A from A ′.
図15は、チャンクから復元バイト列を求める処理の概要を例示する図である。データ送信クライアント20の復元バイト列算出部326は、チャンク1500から復元バイト列1512を以下の手順で求める。
(1)あらかじめ誤り訂正符号化処理1510のパラメータ等を、設定部330を介して決めておく。当該パラメータ等は自由に変更することができるが、データベースサーバ30のチャンク復元部424が実行する誤り訂正処理と合わせておく必要がある。誤り訂正符号化処理と誤り訂正処理はペアであり、異なるパラメータ設定では誤り訂正処理を正しく実行できないためである。以下、誤り訂正符号化処理1510の入力長をkとする。
(2)チャンク1500をkバイトごとに分割する。チャンク1500のバイト長がkの倍数でない場合、末尾にパディング1504を付加して、長さをkの倍数にする。パディング1504の中身はなんでも良いが、チャンク復元部424と生成方式を共通にし、同一のパディングが得られるようにする必要がある。この分割処理により、分割後チャンク1502が得られる。例えば図15では、チャンク1500が、パディング1504を付加して6個のkバイト列に分割されている。
(3)分割後チャンク1502内のkバイト列それぞれについて、誤り訂正符号化処理1510を施して検査バイト列を求める。検査バイト列の長さをhとかく。求めた検査バイト列を連結して、復元バイト列1512を得る。図15の例では、復元バイト列1512の長さは6hとなる。
FIG. 15 is a diagram illustrating an outline of processing for obtaining a restored byte string from a chunk. The restoration byte
(1) Parameters and the like of the error correction coding process 1510 are determined in advance via the
(2) Divide the chunk 1500 every k bytes. If the byte length of chunk 1500 is not a multiple of k,
(3) An error correction encoding process 1510 is performed on each k byte string in the divided
上述の通り、復元バイト列の長さの約半分のバイト数だけ中身が異なるチャンクを正しく復元できるようになるため、(1)において、低帯域ネットワーク上の送受信の負担とならない程度にできるだけhを大きくとっておくことが好ましい。 As described above, chunks with different contents can be correctly restored by the number of bytes that is approximately half the length of the restored byte sequence. Therefore, in (1), h should be set as much as possible so as not to be a burden of transmission / reception on the low-bandwidth network. It is preferable to keep large.
図16は、復元バイト列を用いてチャンクを復元する処理の概要を例示する図である。データ送信クライアント20から送信されてきた特徴量をもとにチャンク管理テーブルを探索して、類似チャンク1600が見つかったと仮定する。データベースサーバ30のチャンク復元部424は、類似チャンク1600から以下の手順でチャンクの復元を試みる。
(1)あらかじめ誤り訂正符号化処理1510と同一のパラメータを、設定部432を介して決めておく。以下、誤り訂正符号化処理1510の入力長をk、検査バイト列の長さをhとする。
(2)チャンク1600をkバイトごとに分割する。チャンク1600ののバイト長がkの倍数でない場合、末尾にパディング1604を付加して、長さをkの倍数にする。なお、パディング1604の生成方式はデータ送信クライアント20の復元バイト列算出部326でのパディング生成方式と共通にする必要がある。この分割処理により、分割後類似チャンク1602が得られる。例えば図16では、チャンク1600が、パディング1604を付加して6個のkバイト列に分割されている。
(3)分割後類似チャンク1602内のkバイト列それぞれについて、データ送信クライアント20から受信した復元バイト列をhバイトごとに切り出して、検査バイト列として付加する。分割後類似チャンク1602内のkバイト列すべてに検査バイト列を付加できない場合は、誤り訂正処理を実行することができないので、復元失敗として処理を終了する。また、検査バイト列が余った場合は、データ送信クライアント20が転送しようとしているチャンクを復元できないことは明らかなので、復元失敗として処理を終了する。例えば図16では、バイト列1606に検査バイト列1608が付加されている。
(4)検査バイト列を付加した長さk+hのバイト列それぞれについて、誤り訂正処理1610を施す。もしどれかのバイト列について誤り訂正が失敗した場合は、復元失敗として処理を終了する。例えば図16では、誤り訂正処理1610によって、バイト列1606が1616に、検査バイト列1608が1618に訂正されている。
(5)誤り訂正を施したバイト列それぞれの先頭kバイトを切り出して連結する。
(6)末尾からパディング1604を除去して、復元チャンク1620が得られる。これがデータ送信クライアント20が転送しようとしているチャンクの候補となる。
FIG. 16 is a diagram illustrating an overview of processing for restoring a chunk using a restored byte sequence. It is assumed that a
(1) The same parameters as those of the error correction encoding process 1510 are determined in advance via the
(2)
(3) For each k byte string in the divided similar chunk 1602, the restored byte string received from the
(4) The
(5) Cut and concatenate the first k bytes of each byte sequence subjected to error correction.
(6) The
復元チャンクの管理方式について補足する。本実施例では、図4で説明したように、データベースサーバ30のチャンク復元部424は、復元したチャンクを記憶装置406に格納した。チャンクそのものと比較して復元バイト列は短いため、復元したチャンクを記憶装置406に格納する代わりに、復元前のチャンクのIDと復元バイト列のペアのみを保管しておくことで、記憶装置406への格納データ量を削減することができる。
A supplementary explanation of the management method for restoration chunks. In the present embodiment, as described with reference to FIG. 4, the
以下、復元前のチャンクと復元バイト列のペアを管理するテーブルのことを基礎チャンク管理テーブルとよぶ。図17は、基礎チャンク管理テーブル1700のデータ構成を例示する図である。基礎チャンク管理テーブル1700は、復元したチャンクのIDを格納するチャンクIDカラム1702と、復元前のチャンクのIDを格納する基礎チャンクIDカラム1704と、復元に必要な復元バイト列を格納する復元バイト列カラム1706などで構成される。
Hereinafter, a table for managing a pair of a chunk before restoration and a restored byte string is referred to as a basic chunk management table. FIG. 17 is a diagram illustrating a data configuration of the basic chunk management table 1700. The basic chunk management table 1700 includes a
データ登録部428は、復元したチャンクを記憶装置406に格納するタイミングで、デーブル管理部430を介して基礎チャンク管理テーブル1700を更新する。復元したチャンクにはチャンクIDを発行してチャンク管理テーブル1020やファイル構成チャンク管理テーブル1040を更新するが、実データは記憶装置406に格納しない。
The
ファイル構成チャンク管理テーブル1040を介してファイルを構成するチャンクにアクセスしようとした場合、まずは基礎チャンク管理テーブル1700を走査して当該チャンクのチャンクIDがあるかを確認する。もしあれば、復元バイト列を用いてチャンクを復元する。なければ記憶装置406から当該チャンクを取得する。
When an attempt is made to access a chunk configuring a file via the file configuration chunk management table 1040, first, the basic chunk management table 1700 is scanned to check whether the chunk ID of the chunk exists. If there is, restore the chunk using the restored byte sequence. If not, the chunk is acquired from the
例えば、図17では、チャンクID「0x000001」のチャンクは、チャンクID「0x003523」のチャンクから復元バイト列「f016ed」を用いて復元できることが分かる。図10のファイル構成チャンク管理テーブル1040によると、ファイル「manual.doc」はチャンクID「0x000001」のチャンクなどで構成されるので、ファイル「manual.doc」にアクセスする場合には、チャンクID「0x000001」のチャンクを生成するために、チャンクID「0x003523」のチャンクから復元バイト列「f016ed」を用いて復元する必要がある。なお、次のチャンク「0x000002」については、基礎チャンク管理テーブル1700に存在しないため、記憶装置406から取得する。
For example, in FIG. 17, it can be seen that the chunk with the chunk ID “0x000001” can be restored from the chunk with the chunk ID “0x003523” using the restoration byte string “f016ed”. According to the file configuration chunk management table 1040 of FIG. 10, the file “manual.doc” is composed of chunks with a chunk ID “0x000001”, and so on. When accessing the file “manual.doc”, the chunk ID “0x000001” In order to generate the chunk “”, it is necessary to restore from the chunk with the chunk ID “0x003523” using the restoration byte string “f016ed”. Since the next chunk “0x000002” does not exist in the basic chunk management table 1700, it is acquired from the
なお、チャンクの実データが記憶装置406に格納されているかどうか、ファイル構成チャンク管理テーブル1040は新しいカラムを設けて管理してもよい。この場合、基礎チャンク管理テーブル1700へのアクセスが最小限に絞られ、ファイルアクセスにかかる時間を削減することができる。
Whether the actual chunk data is stored in the
以上、図1〜図17を用いて、本発明のシステム構成及びデータ転送方式について説明した。本実施例によって、データ送信クライアント20が転送しようとしているチャンクと類似するチャンクをデータベースサーバ30で所有していた場合、データベースサーバ30側でそれを再現できて転送が不要となるため、従来方式と比較してよりデータ転送の総時間を短縮することができる。
The system configuration and data transfer method of the present invention have been described above with reference to FIGS. According to this embodiment, when the
10:ネットワーク
20、20-1〜20-n:データ送信クライアント
30:データベースサーバ
100:チャンク
200:ファイル
202、202-1〜202-4、212、222:チャンク
204:特徴量
206:復元バイト列
208:ハッシュ値
210:特徴量照合処理
220:チャンク復元処理
230:ハッシュ照合処理
300:内部バス
302:CPU
304:メモリ
306:記憶装置
308:ユーザインターフェース
310:通信インターフェース
32:データ送信部
320:ファイル情報照合部
322:チャンキング部
324:特徴量算出部
326:復元バイト列算出部
328:ハッシュ値算出部
330:設定部
400:内部バス
402:CPU
404:メモリ
406:記憶装置
408:ユーザインターフェース
410:通信インターフェース
42:データ受信部
420:ファイル情報照合部
422:特徴量算出部
424:チャンク復元部
426:ハッシュ値照合部
428:データ登録部
430:ファイルテーブル管理部
432:設定部
502:ファイル情報
506:同一ファイル未所有の通知
522:特徴量
526:類似チャンク所有の通知
530:復元バイト列
534:復元成功の通知
538:ハッシュ値
602:同一ファイル所有の通知
702:類似チャンク未所有の通知
704:チャンク
802:復元失敗の通知
902:ハッシュ値不一致の通知
1000:ファイル管理テーブル
1002:IDカラム
1004:ファイル名カラム
1006:フォルダ名カラム
1008:ファイルサイズカラム
1010:ファイル作成日時カラム
1012:ハッシュ値カラム
1020:チャンク管理テーブル
1022:チャンクIDカラム
1024:特徴量カラム
1026:ハッシュ値カラム
1028:チャンクサイズカラム
1040:ファイル構成チャンク管理テーブル
1042:ファイルIDカラム
1044:ファイル名カラム
1046:フォルダ名カラム
1048:チャンクIDカラム
1050:オフセットカラム
1052:チャンクサイズカラム
1100:ファイル
1102:部分バイト列
1104:走査点
1106-1〜1106-T:バイト値
1120:ラビンフィンガープリント
1140:チャンキング条件
1200、1300、1400:チャンキング後ファイル
1202、1212、1302、1312、1402:チャンク
1204、1214、1304、1404:サブチャンク
1206、1216:ファジィハッシュ
1306:論理和
1308、1318:ブルームフィルタ
1406-1、1406-4:最小ハッシュ値
1408:トレイト
1408-1、1408-4:最小ハッシュ値の先頭bビット
1500:チャンク
1502:分割後チャンク
1504:パディング
1510:誤り訂正符号化処理
1512:復元バイト列
1600:類似チャンク
1602:分割後類似チャンク
1604:パディング
1606:バイト列
1608:検査バイト列
1610:誤り訂正処理
1616:誤り訂正後のバイト列
1618:誤り訂正後の検査バイト列
1620:復元チャンク
1700:基礎チャンク管理テーブル
1702:チャンクIDカラム
1704:基礎チャンクIDカラム
1706:復元バイト列カラム
10: Network
20, 20-1 to 20-n: Data transmission client
30: Database server
100: Chunk
200: File
202, 202-1 to 202-4, 212, 222: Chunk
204: Feature amount
206: Restored byte sequence
208: Hash value
210: Feature verification processing
220: Chunk restoration processing
230: Hash collation processing
300: Internal bus
302: CPU
304: Memory
306: Storage device
308: User interface
310: Communication interface
32: Data transmitter
320: File information verification unit
322: Chunking club
324: Feature amount calculator
326: Restored byte string calculator
328: Hash value calculator
330: Setting section
400: Internal bus
402: CPU
404: Memory
406: Storage device
408: User interface
410: Communication interface
42: Data receiver
420: File information verification unit
422: Feature amount calculation unit
424: Chunk restoration part
426: Hash value verification unit
428: Data registration department
430: File table manager
432: Setting section
502: File information
506: Notification that the same file is not owned
522: Feature value
526: Notification of similar chunk ownership
530: Restored byte sequence
534: Notification of successful restoration
538: Hash value
602: Notification of ownership of the same file
702: Notification of similar chunk not owned
704: Chunk
802: Notification of restoration failure
902: Hash value mismatch notification
1000: File management table
1002: ID column
1004: File name column
1006: Folder name column
1008: File size column
1010: File creation date / time column
1012: Hash value column
1020: Chunk management table
1022: Chunk ID column
1024: Feature column
1026: Hash value column
1028: Chunk size column
1040: File structure chunk management table
1042: File ID column
1044: File name column
1046: Folder name column
1048: Chunk ID column
1050: Offset column
1052: Chunk size column
1100: File
1102: Partial byte sequence
1104: Scanning point
1106-1 to 1106-T: Byte value
1120: Rabin Fingerprint
1140: Chunking conditions
1200, 1300, 1400: File after chunking
1202, 1212, 1302, 1312, 1402: Chunk
1204, 1214, 1304, 1404: Sub-chunk
1206, 1216: Fuzzy hash
1306: OR
1308, 1318: Bloom filter
1406-1, 1406-4: Minimum hash value
1408: Trait
1408-1, 1408-4: First b bits of minimum hash value
1500: Chunk
1502: Chunk after split
1504: Padding
1510: Error correction coding process
1512: Restored byte sequence
1600: Similar chunk
1602: Similar chunk after split
1604: Padding
1606: Byte string
1608: Inspection byte sequence
1610: Error correction processing
1616: Byte sequence after error correction
1618: Inspection byte sequence after error correction
1620: Restore chunk
1700: Basic chunk management table
1702: Chunk ID column
1704: Basic chunk ID column
1706: Restored byte string column
Claims (4)
既に所有するデータの中で前記通信回線を介して受信した前記特徴量と類似の範囲の特徴量を有する第二のデータを特定し、当該第二のデータに前記通信回線を介して受信した前記復元バイト列を付加して誤り訂正処理を施し、当該誤り訂正処理後の第二のデータのハッシュ値を計算して、前記第一のデータのハッシュ値と比較し、一致したときに当該誤り訂正処理後の第二のデータを前記第一のデータとして記憶するデータ受信装置とを有する
ことを特徴とする、データ転送システム。 A data transmission device that transmits a feature amount of the first data, a restored byte sequence for error correction of the first data, and a hash value of the first data to the communication line;
The second data having a feature amount in a range similar to the feature amount received via the communication line among the data already owned is specified, and the second data received via the communication line Perform error correction processing by adding a restored byte sequence, calculate the hash value of the second data after the error correction processing, compare it with the hash value of the first data, and correct the error when they match A data transfer system comprising: a data receiving device that stores second processed data as the first data.
当該データ送信装置は、
前記第一のデータの特徴量を算出する特徴量算出部と、
前記第一のデータの誤り訂正が可能な復元バイト列を計算する復元バイト列算出部と、
前記第一のデータのハッシュ値を計算するハッシュ値算出部と
を有し、
当該データ受信装置は、
既に所有するデータの特徴量と前記通信回線を介して受信した前記特徴量とが類似の範囲として予め決められた数値範囲であるかを照合する特徴量照合部と、
前記復元バイト列を用いて前記第二のデータの誤り訂正処理を施す復元部と、
当該誤り訂正処理後の第二のデータのハッシュ値を計算して、前記第一のデータのハッシュ値と比較するハッシュ値照合部と
を有する
ことを特徴とする、データ転送システム。 In claim 1,
The data transmission device
A feature amount calculation unit for calculating a feature amount of the first data;
A restored byte string calculating unit for calculating a restored byte string capable of error correction of the first data;
A hash value calculation unit for calculating a hash value of the first data,
The data receiving device is
A feature amount matching unit that checks whether the feature amount of data already possessed and the feature amount received via the communication line are in a numerical range predetermined as a similar range;
A restoration unit that performs error correction processing of the second data using the restored byte sequence;
A data transfer system comprising: a hash value collating unit that calculates a hash value of the second data after the error correction process and compares the hash value of the first data.
当該データ受信装置は、既に所有するデータの中で前記通信回線を介して受信した前記特徴量と類似の範囲の特徴量を有するデータがない場合、若しくは、前記第一のデータのハッシュ値と一致しなかった場合は、その旨若しくは前記第一のデータの送信依頼を前記データ送信装置に送信し、
当該データ送信装置は、その旨若しくは前記依頼を受信すると、前記第一のデータを当該データ受信装置に送信する
ことを特徴とする、データ転送システム。 In claim 2,
The data receiving device has no data having a feature amount in a range similar to the feature amount received via the communication line among already owned data, or the same value as the hash value of the first data. If not, send a message to that effect or the first data transmission request to the data transmission device,
The data transmitting apparatus transmits the first data to the data receiving apparatus when receiving the request or the request.
既に所有するデータの中で前記通信回線を介して受信した前記特徴量と類似の範囲の特徴量を有する第二のデータを特定し、当該第二のデータに前記通信回線を介して受信した前記復元バイト列を付加して誤り訂正処理を施し、当該誤り訂正処理後の第二のデータを前記第一のデータとして記憶するデータ受信装置とを有する
ことを特徴とする、データ転送システム。 A data transmission device that transmits the feature amount of the first data and the restored byte sequence for error correction of the first data to the communication line;
The second data having a feature amount in a range similar to the feature amount received via the communication line among the data already owned is specified, and the second data received via the communication line A data transfer system comprising: a data receiving device that performs error correction processing by adding a restored byte sequence and stores second data after the error correction processing as the first data.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012055255A JP2013190891A (en) | 2012-03-13 | 2012-03-13 | Data transfer system |
PCT/JP2012/079226 WO2013136584A1 (en) | 2012-03-13 | 2012-11-12 | Data transfer system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012055255A JP2013190891A (en) | 2012-03-13 | 2012-03-13 | Data transfer system |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013190891A true JP2013190891A (en) | 2013-09-26 |
Family
ID=49160537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012055255A Ceased JP2013190891A (en) | 2012-03-13 | 2012-03-13 | Data transfer system |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2013190891A (en) |
WO (1) | WO2013136584A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017097437A (en) * | 2015-11-18 | 2017-06-01 | 株式会社東芝 | Information processing system, information processing equipment and program |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12074962B2 (en) | 2021-08-10 | 2024-08-27 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for dividing and encrypting data |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006505217A (en) * | 2002-10-30 | 2006-02-09 | リバーベッド テクノロジー インコーポレーティッド | A content-based segmentation scheme for data compression during storage and transmission including hierarchical segment representation |
JP2008513891A (en) * | 2004-09-15 | 2008-05-01 | ディリジェント テクノロジーズ コーポレイション | System and method for retrieving and storing data |
JP2012018549A (en) * | 2010-07-08 | 2012-01-26 | Hitachi Ltd | Method and device for calculating digital sequence feature amount |
-
2012
- 2012-03-13 JP JP2012055255A patent/JP2013190891A/en not_active Ceased
- 2012-11-12 WO PCT/JP2012/079226 patent/WO2013136584A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006505217A (en) * | 2002-10-30 | 2006-02-09 | リバーベッド テクノロジー インコーポレーティッド | A content-based segmentation scheme for data compression during storage and transmission including hierarchical segment representation |
JP2008513891A (en) * | 2004-09-15 | 2008-05-01 | ディリジェント テクノロジーズ コーポレイション | System and method for retrieving and storing data |
JP2012018549A (en) * | 2010-07-08 | 2012-01-26 | Hitachi Ltd | Method and device for calculating digital sequence feature amount |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017097437A (en) * | 2015-11-18 | 2017-06-01 | 株式会社東芝 | Information processing system, information processing equipment and program |
Also Published As
Publication number | Publication date |
---|---|
WO2013136584A1 (en) | 2013-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11573938B2 (en) | Systems and methods for indexing source code in a search engine | |
US8788831B2 (en) | More elegant exastore apparatus and method of operation | |
EP2256934B1 (en) | Method and apparatus for content-aware and adaptive deduplication | |
US10949405B2 (en) | Data deduplication device, data deduplication method, and data deduplication program | |
US20200412525A1 (en) | Blockchain filesystem | |
US9183073B2 (en) | Maintaining data concurrency with a dispersed storage network | |
US20220004334A1 (en) | Data Storage Method, Apparatus and System, and Server, Control Node and Medium | |
US9917894B2 (en) | Accelerating transfer protocols | |
US11900083B2 (en) | Systems and methods for indexing source code in a search engine | |
US8768901B1 (en) | Method and apparatus for selectively storing blocks of data on a server | |
US10339124B2 (en) | Data fingerprint strengthening | |
WO2021237467A1 (en) | File uploading method, file downloading method and file management apparatus | |
US20160041777A1 (en) | Client-side deduplication with local chunk caching | |
US11669496B2 (en) | Method and apparatus for replicating a target file between devices | |
EP4379556A1 (en) | Blockchain-based data processing method, and device and computer-readable storage medium | |
JP7159348B2 (en) | Dynamic Blockchain Data Storage Based on Error Correcting Codes | |
US20130013570A1 (en) | File storage apparatus, data storing method, and data storing program | |
US20160044077A1 (en) | Policy use in a data mover employing different channel protocols | |
WO2013136584A1 (en) | Data transfer system | |
JP6113816B1 (en) | Information processing system, information processing apparatus, and program | |
US20170048303A1 (en) | On the fly statistical delta differencing engine | |
US11016933B2 (en) | Handling weakening of hash functions by using epochs | |
US20140222760A1 (en) | Method and system for reconciling remote data | |
WO2018013541A1 (en) | Improved data deduplication for eventual consistency system and method | |
US20190018881A1 (en) | Data deduplication for eventual consistency system and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140731 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150303 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150507 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20150630 |
|
A045 | Written measure of dismissal of application [lapsed due to lack of payment] |
Free format text: JAPANESE INTERMEDIATE CODE: A045 Effective date: 20151027 |