[go: up one dir, main page]

JP2013190891A - Data transfer system - Google Patents

Data transfer system Download PDF

Info

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
Application number
JP2012055255A
Other languages
Japanese (ja)
Inventor
Yasuhiro Fujii
康広 藤井
Susumu Serita
進 芹田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2012055255A priority Critical patent/JP2013190891A/en
Priority to PCT/JP2012/079226 priority patent/WO2013136584A1/en
Publication of JP2013190891A publication Critical patent/JP2013190891A/en
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring 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

【課題】受信側が所有しているデータが類似の場合でも転送不要とすることを目的とする。
【解決手段】
送信側は、第一のデータの特徴量及び誤り訂正用の復元バイト列を送信する。
受信側は、既に所有するデータの中で、受信した特徴量と類似の範囲の特徴量を有する第二のデータを特定し、受信した復元バイト列で誤り訂正処理を施し、それを第一のデータとして記憶する。
データが数キロバイトであっても、その特徴量及び復元バイト列はいずれも高々数十バイトであり、ネットワーク負荷が小さい。
【選択図】 図2
An 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 Document 1 proposes a method in which data is divided into units of several kilobytes called chunks on the client side, and only new chunks not owned by the server are transferred. Whether the server owns the chunk is determined by whether the hash values of the chunks match. Since the hash value has a smaller data amount than a chunk (several tens of bytes), it can be transmitted without load even in a low-bandwidth network. The client only needs to transfer chunks that are not owned by the server, and all data can be exchanged at a higher speed than the normal data transfer method.

非特許文献1の方式を適用した場合、クライアントが転送しようとしているチャンクの中身が、サーバで所有しているチャンクの中身と少しでも異なっている場合、ハッシュ値が一致しないため、クライアントは当該チャンクの中身をすべて転送する必要がある。非特許文献2や特許文献1ではこの無駄を解決すべく、クライアント側でチャンクをさらに分割して、一致していない部分を絞り込んで転送する方式を提案している。   When the method of Non-Patent Document 1 is applied, if the contents of the chunk that the client intends to transfer are slightly different from the contents of the chunk that the server owns, the hash values do not match, so the client It is necessary to transfer all the contents. In order to solve this waste, Non-Patent Document 2 and Patent Document 1 propose a method in which chunks are further divided on the client side, and portions that do not match are narrowed down and transferred.

なお、チャンキングについては非特許文献3〜5に、以下で述べる特徴量については非特許文献6および特許文献2に記載されている。   Note that chunking is described in Non-Patent Documents 3 to 5, and feature amounts described below are described in Non-Patent Document 6 and Patent Document 2.

A. Muthitacharoen, B. Chen and D. Mazieres: "A low-bandwidth network file system," Proceedings of the 18th SOSP, Banff, Canada, 10-2001.A. Muthitacharoen, B. Chen and D. Mazieres: "A low-bandwidth network file system," Proceedings of the 18th SOSP, Banff, Canada, 10-2001. S. Ihm, K. Park and V. S. Pai: "Wide-area Network Acceleration for the Developing World," USENIXATC'10 Proceedings of the 2010 USENIX conference on USENIX annual technical conference, 2010.S. Ihm, K. Park and V. S. Pai: "Wide-area Network Acceleration for the Developing World," USENIXATC'10 Proceedings of the 2010 USENIX conference on USENIX annual technical conference, 2010. J. Kornblum: "Identifying almost identical files using context triggered piecewise hashing," Digital investigation 3S pp.91-97, 2006.J. Kornblum: "Identifying almost identical files using context triggered piecewise hashing," Digital investigation 3S pp.91-97, 2006. R. M. Karp and M. O. Rabin: "Pattern-matching algorithms," IBM Journal of Research and Development, 31(2) pp. 249-260, 1987.R. M. Karp and M. O. Rabin: "Pattern-matching algorithms," IBM Journal of Research and Development, 31 (2) pp. 249-260, 1987. N. Bjorner, A. Blass, Y. Gurevich: "Content-dependent chunking for differential compression, the local maximum approach," Journal of Computer and System Sciences, 76 (3-4), pp. 154-203, 2010.N. Bjorner, A. Blass, Y. Gurevich: "Content-dependent chunking for differential compression, the local maximum approach," Journal of Computer and System Sciences, 76 (3-4), pp. 154-203, 2010. D. Teodosiu, N. Bjorner, Y. Gurevich, M. Manasse, J. Porkka and A. Wable: "Optimizing File Replication over Limited-Bandwidth Networks using Remote Differential Compression," Technical report, Microsoft Corporation, 2006.D. Teodosiu, N. Bjorner, Y. Gurevich, M. Manasse, J. Porkka and A. Wable: "Optimizing File Replication over Limited-Bandwidth Networks using Remote Differential Compression," Technical report, Microsoft Corporation, 2006.

米国特許 7,116,249US Patent 7,116,249 国際公開第2012-005016号International Publication No.2012-005016

非特許文献1の方式を適用した場合、送信側が転送しようとしているチャンクの中身が、受信側で所有しているチャンクの中身と少しでも異なっている場合、ハッシュ値が一致しないため、送信側は当該チャンクの中身をすべて転送する必要がある。非特許文献2や特許文献1の方式でも、チャンクの中身の不一致部分を転送する必要がある。   When the method of Non-Patent Document 1 is applied, if the content of the chunk that the transmission side is trying to transfer is slightly different from the content of the chunk that is owned by the reception side, the hash values do not match. All the contents of the chunk need to be transferred. Even in the methods of Non-Patent Document 2 and Patent Document 1, it is necessary to transfer the mismatched portion of the contents of the chunk.

そこで、本発明は、受信側が所有しているデータが類似の場合でも転送不要とすることを目的とする。   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.

差分転送システムの概略を例示する図である。It is a figure which illustrates the outline of a differential transfer system. 主要な処理の概要を示す図である。It is a figure which shows the outline | summary of main processes. データ送信クライアントの概略構成を例示するブロック図である。It is a block diagram which illustrates schematic structure of a data transmission client. データベースサーバの概略構成を例示するブロック図である。It is a block diagram which illustrates schematic structure of a database server. データ送信クライアントとデータベースサーバのデータ転送処理を例示するシーケンス図である。It is a sequence diagram which illustrates the data transfer process of a data transmission client and a database server. データ送信クライアントとデータベースサーバのデータ転送処理を例示するシーケンス図である。It is a sequence diagram which illustrates the data transfer process of a data transmission client and a database server. データ送信クライアントとデータベースサーバのデータ転送処理を例示するシーケンス図である。It is a sequence diagram which illustrates the data transfer process of a data transmission client and a database server. データ送信クライアントとデータベースサーバのデータ転送処理を例示するシーケンス図である。It is a sequence diagram which illustrates the data transfer process of a data transmission client and a database server. データ送信クライアントとデータベースサーバのデータ転送処理を例示するシーケンス図である。It is a sequence diagram which illustrates the data transfer process of a data transmission client and a database server. データベースサーバが作成する管理テーブルのデータ構成を例示する図である。It is a figure which illustrates the data structure of the management table which a database server produces. ファイルをチャンクに分割する手順を例示する図である。It is a figure which illustrates the procedure which divides | segments a file into chunks. チャンクからファジィハッシュを計算する処理およびファジィハッシュから類似度を計算する処理の概要を例示する図である。It is a figure which illustrates the outline | summary of the process which calculates a fuzzy hash from a chunk, and the process which calculates a similarity from a fuzzy hash. チャンクからブルームフィルタを計算する処理およびブルームフィルタから類似度を計算する処理の概要を例示する図である。It is a figure which illustrates the outline | summary of the process which calculates a Bloom filter from a chunk, and the process which calculates similarity from a Bloom filter. チャンクからトレイトを計算する処理の概要を例示する図である。It is a figure which illustrates the outline | summary of the process which calculates a trait from a chunk. チャンクから復元バイト列を求める処理の概要を例示する図である。It is a figure which illustrates the outline | summary of the process which calculates | requires a decompression | restoration byte sequence from a chunk. 復元バイト列を用いてチャンクを復元する処理の概要を例示する図である。It is a figure which illustrates the outline | summary of the process which decompress | restores a chunk using a decompression | restoration byte sequence. データベースサーバが作成する基礎チャンク管理テーブルのデータ構成を例示する図である。It is a figure which illustrates the data structure of the basic chunk management table which a database server produces.

以下、本発明の実施の形態を図面に基づいて詳細に説明する。   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 database server 30, which are designed to be able to transmit and receive information to and from each other via the network 10. The data transmission clients 20-1 to 20-n all have the same configuration. Hereinafter, an arbitrary one is referred to as a data transmission client 20.
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 Document 1. In general, the data transmission client 20 is called a data transmission device that transmits data, and the database server 30 is called a data reception device that receives data.

本実施形態では、データ送信クライアント20は、転送対象となるファイルをまずチャンクに分割して、データベースサーバ30が所有していないチャンク100のみを転送することで、データ転送の高速化を図る。
以下、説明を明確にするために、非特許文献1などの公知文献にあわせて、ファイルを分割して得られるデータをチャンクとよび区別することにする。チャンクの実体はバイト列からなるデータに過ぎないため、以下で説明する実施の形態は、チャンクをデータと読み替えても正しく動作する。
In the present embodiment, the data transmission client 20 first divides a file to be transferred into chunks, and transfers only the chunk 100 that is not owned by the database server 30, thereby speeding up data transfer.
Hereinafter, in order to clarify the explanation, data obtained by dividing a file in accordance with a known document such as Non-Patent Document 1 is referred to as a chunk. Since the substance of the chunk is only data composed of byte strings, the embodiment described below operates correctly even if the chunk is read as data.

図2を用いて本実施形態における主要な処理の概要を説明する。データ送信クライアント20がファイル200をデータベースサーバ30に転送する場合を想定する。   An outline of main processing in the present embodiment will be described with reference to FIG. Assume that the data transmission client 20 transfers the file 200 to the database server 30.

まずデータ送信クライアント20は、ファイル200をチャンクとよばれる単位で分割する(チャンキング)。チャンキングの具体的な手順については後で図11を用いて説明する。図2では、チャンキングの結果、ファイル200がチャンク202-1〜202-4の4つのチャンク202に分割された。   First, the data transmission client 20 divides the file 200 into units called chunks (chunking). A specific procedure for chunking will be described later with reference to FIG. In FIG. 2, as a result of chunking, the file 200 is divided into four chunks 202 of chunks 202-1 to 202-4.

次にデータ送信クライアント20は、チャンク202-1〜202-4のそれぞれについて特徴量を計算する。特徴量とはチャンク間の類似度を近似的に求めるための数バイトから数十バイトのバイト列である。詳細については図12〜図14を用いて後で説明する。図2では例としてチャンク202-3の特徴量204が求まっている。特徴量204はデータベースサーバ30へ送信される。   Next, the data transmission client 20 calculates a feature amount for each of the chunks 202-1 to 202-4. The feature amount is a byte string of several bytes to several tens of bytes for approximately obtaining the similarity between chunks. Details will be described later with reference to FIGS. In FIG. 2, the feature amount 204 of the chunk 202-3 is obtained as an example. The feature amount 204 is transmitted to the database server 30.

データベースサーバ30では、受信した特徴量204と所有している各チャンクの特徴量とを照合して類似度を計算し(特徴量照合処理210)、チャンク202-3と類似したチャンクを特定する。図2ではチャンク212が見つかった。   The database server 30 collates the received feature quantity 204 with the feature quantity of each owned chunk to calculate the similarity (feature quantity collation processing 210), and identifies a chunk similar to the chunk 202-3. In FIG. 2, chunk 212 was found.

類似したチャンクが存在した場合、その旨をデータ送信クライアント20に通知する。それを受けてデータ送信クライアント20は、チャンク202-3から復元バイト列206を計算する。復元バイト列は、リードソロモン符号などのブロック符号の検査バイト列に相当する。チャンクの復元は、類似したチャンクに復元バイト列を付加して、誤り訂正処理を施すことでなされる。詳細については後で図15、16を用いて説明する。データベースサーバ30はデータ送信クライアント20から復元バイト列206を受け取り、チャンク212に付加してチャンクの復元を試みる(チャンク復元処理220)。   If a similar chunk exists, the data transmission client 20 is notified of that fact. In response to this, the data transmission client 20 calculates the restored byte string 206 from the chunk 202-3. The restored byte string corresponds to a check byte string of a block code such as a Reed-Solomon code. Chunk restoration is performed by adding a restoration byte string to a similar chunk and performing error correction processing. Details will be described later with reference to FIGS. The database server 30 receives the restored byte string 206 from the data transmission client 20, adds it to the chunk 212, and tries to restore the chunk (chunk restoration processing 220).

図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 database server 30 notifies the data transmission client 20 that the restoration is successful. In response to this, the data transmission client 20 calculates the hash value 208 of the chunk 202-3 and transmits it to the database server 30. The database server 30 collates the received hash value with the hash value of the chunk 222, and if they match, the chunk 202-3 owned by the data transmission client 20 is restored and the transmission of the chunk 202-3 is performed. Is notified to the data transmission client 20 (hash collation processing 230). If the chunk cannot be restored or the hash values do not match, the data transmission client 20 is requested to transfer the chunk 202-3.

以上の方式によりネットワーク上でやり取りするデータ量が削減され、ファイル200の転送時間の短縮が期待できる。   With the above method, the amount of data exchanged on the network is reduced, and the transfer time of the file 200 can be expected to be shortened.

図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 data transmission client 20 includes a CPU 302, a memory 304, a storage device 306, a user interface 308, a communication interface 310, a data transmission unit 32, and a setting unit 330, which mutually communicate information via the internal bus 300. It is designed to send and receive. The data transmitting unit 32 includes a file information collating unit 320, a chunking unit 322, a feature amount calculating unit 324, a restored byte string calculating unit 326, and a hash value calculating unit 328. These devices can transmit / receive information to / from the CPU 302 or the like alone via the internal hub 300.

まずは汎用的な構成要素について説明する。CPU302は、様々な数値計算や情報処理、機器制御などを行う中央処理装置である。メモリ304は、CPU302が直接読み書きできるRAMやROMなどの半導体記憶装置である。記憶装置306は、コンピュータ内でデータやプログラムを記憶するハードディスクや磁気テープ、フラッシュメモリなどといった装置である。当該装置はデータベースサーバ30に送信するファイルなどを格納する。   First, general-purpose components will be described. The CPU 302 is a central processing unit that performs various numerical calculations, information processing, device control, and the like. The memory 304 is a semiconductor storage device such as a RAM or ROM that can be directly read and written by the CPU 302. The storage device 306 is a device such as a hard disk, a magnetic tape, or a flash memory that stores data and programs in the computer. The apparatus stores a file to be transmitted to the database server 30 and the like.

ユーザインターフェース308は、ディスプレイやマウス、キーボードなどといった、ユーザに処理結果を出力し、かつユーザの指示を受け付けてデータ送信クライアント20の各構成要素に反映させるための装置である。   The user interface 308 is a device such as a display, a mouse, and a keyboard for outputting a processing result to the user, receiving a user instruction, and reflecting it on each component of the data transmission client 20.

通信インターフェース310は、データ送信クライアント20の各構成要素のネットワーク10を介したデータの送受信を制御するための装置である。相手方と認証して通信路を確立したり、処理が完了した後や、一定時間を経過しても相手方が何の応答しなかった場合などに通信路を切断したりなどの制御をおこなう。   The communication interface 310 is a device for controlling transmission / reception of data via the network 10 of each component of the data transmission client 20. Control is performed such as establishing a communication path by authenticating with the other party, or disconnecting the communication path after completion of processing, or when the other party does not respond after a certain period of time.

本実施例特有の構成要素は、データ送信部32、これを構成するファイル情報照合部320、チャンキング部322、特徴量算出部324、復元バイト列算出部326、ハッシュ値算出部328である。これらのうち従来のデータ転送装置にはない最も特徴的な構成要素は、特徴量算出部324および復元バイト列算出部326である。   Constituent elements unique to the present embodiment are a data transmission unit 32, a file information collation unit 320, a chunking unit 322, a feature amount calculation unit 324, a restored byte string calculation unit 326, and a hash value calculation unit 328 that constitute the data transmission unit 32. Among these, the most characteristic components that are not found in the conventional data transfer device are a feature amount calculation unit 324 and a restored byte string calculation unit 326.

データ送信部32は、記憶装置306に格納されているファイルのデータベースサーバ30への転送指示をユーザインターフェース308を介してユーザから受け取り、ファイル情報照合部320、チャンキング部322、特徴量算出部324、復元バイト列算出部326、ハッシュ値算出部328などを制御して、メモリ304または記憶装置306に格納されているチャンクや特徴量などのデータを、通信インターフェース310を介してデータベースサーバ30と送受信するための装置である。データ転送処理の一連の動作フローについては後で図5〜図9を用いて説明する。   The data transmission unit 32 receives an instruction to transfer a file stored in the storage device 306 to the database server 30 from the user via the user interface 308, and receives a file information collation unit 320, a chunking unit 322, and a feature amount calculation unit 324. , Control the restoration byte string calculation unit 326, the hash value calculation unit 328, etc., and transmit / receive data such as chunks and feature quantities stored in the memory 304 or the storage device 306 to / from the database server 30 via the communication interface 310. It is a device for doing. A series of operation flows of the data transfer process will be described later with reference to FIGS.

ファイル情報照合部320は、データベースサーバ30にファイルを転送する前に同一のファイルをデータベースサーバ30が所有していないかどうかを確認するための装置である。詳細については図5、6を用いて説明する。   The file information matching unit 320 is a device for confirming whether or not the database server 30 owns the same file before transferring the file to the database server 30. Details will be described with reference to FIGS.

チャンキング部322は、記憶装置306に格納されているファイルを読み取ってチャンクに分割し、メモリ304または記憶装置306に一時的に格納するための装置である。チャンキング処理の詳細については、後で図11を用いて説明する。   The chunking unit 322 is a device for reading a file stored in the storage device 306, dividing it into chunks, and temporarily storing it in the memory 304 or the storage device 306. Details of the chunking process will be described later with reference to FIG.

特徴量算出部324は、メモリ304または記憶装置306に一時的に格納されているチャンクを読み取り、特徴量を算出し、メモリ304または記憶装置306に出力する装置である。特徴量の具体的な算出方法については、後で図12〜図14を用いて説明する。   The feature amount calculation unit 324 is a device that reads a chunk temporarily stored in the memory 304 or the storage device 306, calculates a feature amount, and outputs the feature amount to the memory 304 or the storage device 306. A specific method for calculating the feature amount will be described later with reference to FIGS.

復元バイト列算出部326は、メモリ304または記憶装置306に一時的に格納されているチャンクを読み取り、復元バイト列を算出し、メモリ304または記憶装置306に出力する装置である。復元バイト列の具体的な算出方法については、後で図15を用いて説明する。   The restored byte string calculating unit 326 is a device that reads a chunk temporarily stored in the memory 304 or the storage device 306, calculates a restored byte string, and outputs the restored byte string to the memory 304 or the storage device 306. A specific method for calculating the restored byte sequence will be described later with reference to FIG.

ハッシュ値算出部328は、メモリ304または記憶装置306に格納されているファイルやチャンクを読み取り、ハッシュ値を算出し、メモリ304または記憶装置306に出力する装置である。ハッシュ値を導出するハッシュ関数として、例えばMD5やSHA-1などが知られている。   The hash value calculation unit 328 is a device that reads a file or chunk stored in the memory 304 or the storage device 306, calculates a hash value, and outputs the hash value to the memory 304 or the storage device 306. For example, MD5 and SHA-1 are known as hash functions for deriving a hash value.

設定部330は、データベースサーバ30からの応答を待つ待機時間の上限や、チャンキング、特徴量算出などの処理に必要なパラメータを設定するための装置である。これらのパラメータはユーザインターフェース308を介してユーザによって設定され、チャンキング部322、特徴量算出部324、復元バイト列算出部326、ハッシュ値算出部328などに反映される。   The setting unit 330 is an apparatus for setting an upper limit of a waiting time for waiting for a response from the database server 30 and parameters necessary for processing such as chunking and feature amount calculation. These parameters are set by the user via the user interface 308 and reflected in the chunking unit 322, the feature amount calculation unit 324, the restored byte string calculation unit 326, the hash value calculation unit 328, and the like.

なお、データ送信部32、これを構成するファイル情報照合部320、チャンキング部322、特徴量算出部324、復元バイト列算出部326、ハッシュ値算出部328、および設定部332については、それぞれの装置が単体で処理を実行してもよいし、それぞれの装置はプログラムのみを具備し、CPU302が当該プログラムをメモリ304に読み込んで実行してもよい。   The data transmitting unit 32, the file information collating unit 320, the chunking unit 322, the feature amount calculating unit 324, the restored byte string calculating unit 326, the hash value calculating unit 328, and the setting unit 332 that constitute the data transmitting unit 32, Each apparatus may execute processing alone, or each apparatus may include only a program, and the CPU 302 may read the program into the memory 304 and execute the program.

図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 database server 30. As illustrated, the database server 30 includes a CPU 402, a memory 404, a storage device 406, a user interface 408, a communication interface 410, a data receiving unit 42, a table management unit 430, and a setting unit 432, which are connected via an internal bus 400. Are designed to send and receive information to each other. The data receiving unit 42 includes a file information matching unit 420, a feature amount matching unit 422, a chunk restoration unit 424, a hash value matching unit 426, and a data registration unit 428. These devices can transmit / receive information to / from the CPU 402 or the like alone via the internal hub 400.

汎用的な構成要素であるCPU402、メモリ404、記憶装置406、ユーザインターフェース408、通信インターフェース410については、図3と同様の機能を有するので説明を割愛する。本実施例特有の構成要素は、データ受信部42、これを構成するファイル情報照合部420、特徴量照合部422、チャンク復元部424、ハッシュ値照合部426、データ登録部428、およびテーブル管理部430である。これらのうち従来のデータ転送装置にはない最も特徴的な構成要素は、特徴量算出部422およびチャンク復元部424である。   General-purpose components such as the CPU 402, the memory 404, the storage device 406, the user interface 408, and the communication interface 410 have the same functions as those in FIG. Constituent elements unique to the present embodiment are the data receiving unit 42, the file information collating unit 420, the feature amount collating unit 422, the chunk restoring unit 424, the hash value collating unit 426, the data registering unit 428, and the table managing unit. 430. Among these, the most characteristic components that are not included in the conventional data transfer device are a feature amount calculation unit 422 and a chunk restoration unit 424.

データ受信部42は、通信インターフェース410を介してデータ送信クライアント20から特徴量やチャンクなどのデータを受信してメモリ404または記憶装置406に一時的に格納し、ファイル情報照合部420、特徴量照合部422、チャンク復元部424、ハッシュ値照合部428などを制御して、データ送信クライアント20が転送したファイルを受信または復元して、記憶装置406に格納するための装置である。データ転送処理の一連の動作フローについては後で図5〜図9を用いて説明する。   The data receiving unit 42 receives data such as feature quantities and chunks from the data transmission client 20 via the communication interface 410 and temporarily stores them in the memory 404 or the storage device 406. The file information matching unit 420 and the feature quantity matching This is a device for controlling the unit 422, the chunk restoring unit 424, the hash value matching unit 428, etc. to receive or restore the file transferred by the data transmission client 20 and store it in the storage device 406. A series of operation flows of the data transfer process will be described later with reference to FIGS.

ファイル情報照合部420は、データ送信クライアント20からの要求に応じて記憶装置406に格納されているファイルの一覧(ファイル管理テーブル)を参照し、データ送信クライアント20が転送しようとしているファイルと同一のファイルが記憶装置406に存在するかを確認するための装置である。ファイル管理テーブルの具体例については後で図10を用いて説明する。もし同一のファイルが存在しているのであれば、データ受信部42はその旨を通信インターフェース310を介してデータ送信クライアント20に通知する。詳細については後で図5、6を用いて説明する。   The file information matching unit 420 refers to a list of files (file management table) stored in the storage device 406 in response to a request from the data transmission client 20, and is the same as the file that the data transmission client 20 is to transfer. This is a device for confirming whether a file exists in the storage device 406. A specific example of the file management table will be described later with reference to FIG. If the same file exists, the data receiving unit 42 notifies the data transmission client 20 via the communication interface 310 to that effect. Details will be described later with reference to FIGS.

特徴量照合部422は、データ送信クライアント20から特徴量を受信してメモリ404または記憶装置406に一時的に格納し、記憶装置406に格納されているチャンクの特徴量の一覧(チャンク管理テーブル)を参照して、受信した特徴量と各チャンクの特徴量を照合し、類似するチャンクを特定するための装置である。チャンク管理テーブルの具体例については後で図10を用いて説明する。また、特徴量の照合処理の詳細については、後で図12〜図14を用いて説明する。特定された類似チャンクは、その実データまたはポインタがメモリ404または記憶装置406に一時的に格納される。   The feature amount matching unit 422 receives the feature amount from the data transmission client 20, temporarily stores it in the memory 404 or the storage device 406, and lists a chunk feature amount stored in the storage device 406 (chunk management table). Is a device for collating the received feature value with the feature value of each chunk and identifying similar chunks. A specific example of the chunk management table will be described later with reference to FIG. Details of the feature amount matching processing will be described later with reference to FIGS. The actual data or pointer of the identified similar chunk is temporarily stored in the memory 404 or the storage device 406.

チャンク復元部424は、データ送信クライアント20から復元バイト列を受信してメモリ404または記憶装置406に一時的に格納し、特徴量照合部422がメモリ404または記憶装置406に一時的に格納した類似チャンクに付加して誤り訂正を施すことで、チャンクの復元処理を行う装置である。復元処理の詳細については後で図16を用いて説明する。復元に成功したチャンクはメモリ404または記憶装置406に一時的に格納される。   The chunk restoration unit 424 receives the restored byte sequence from the data transmission client 20 and temporarily stores it in the memory 404 or the storage device 406, and the feature amount matching unit 422 temporarily stores it in the memory 404 or the storage device 406. This is an apparatus that performs chunk restoration processing by adding an error correction to a chunk. Details of the restoration process will be described later with reference to FIG. The chunk that has been successfully restored is temporarily stored in the memory 404 or the storage device 406.

ハッシュ値照合部426は、データ送信クライアント20からハッシュ値を受信してメモリ404または記憶装置406に一時的に格納し、チャンク復元部424がメモリ404または記憶装置406に一時的に格納したチャンクのハッシュ値を計算し、一致するかどうか照合する装置である。   The hash value matching unit 426 receives the hash value from the data transmission client 20 and temporarily stores it in the memory 404 or the storage device 406, and the chunk restoration unit 424 stores the chunk temporarily stored in the memory 404 or the storage device 406. It is a device that calculates hash values and checks whether they match.

データ登録部428は、データ送信クライアント20から受信したチャンクや復元したチャンクを記憶装置406に格納し、テーブル管理部430を介してファイル管理テーブルやチャンク管理テーブルなどを更新するための装置である。   The data registration unit 428 is a device for storing the chunk received from the data transmission client 20 and the restored chunk in the storage device 406 and updating the file management table, the chunk management table, and the like via the table management unit 430.

テーブル管理部430は、記憶装置406へのファイル操作を監視して、またはデータ受信部42からの呼び出しを受けて、ファイル管理テーブルやチャンク管理テーブルなどを更新するための装置である。これらの管理テーブルの具体例については後で図10を用いて説明する。なお、これらの管理テーブル自体は、メモリ404または記憶装置406に格納される。
設定部432は、データ送信クライアント20からの応答を待つ待機時間の上限や、特徴量照合、ハッシュ値算出などの処理に必要なパラメータを設定するための装置である。これらのパラメータはユーザインターフェース408を介してユーザによって設定され、ファイル情報照合部420、特徴量照合部422、チャンク復元部424、ハッシュ値照合部426、データ登録部428などに反映される。
The table management unit 430 is a device for monitoring a file operation on the storage device 406 or receiving a call from the data reception unit 42 to update a file management table, a chunk management table, or the like. Specific examples of these management tables will be described later with reference to FIG. These management tables themselves are stored in the memory 404 or the storage device 406.
The setting unit 432 is a device for setting an upper limit of a waiting time for waiting for a response from the data transmission client 20 and parameters necessary for processing such as feature amount matching and hash value calculation. These parameters are set by the user via the user interface 408, and are reflected in the file information matching unit 420, the feature amount matching unit 422, the chunk restoration unit 424, the hash value matching unit 426, the data registration unit 428, and the like.

なお、データ受信部42、これを構成するファイル情報照合部420、特徴量照合部422、チャンク復元部424、ハッシュ値照合部426、データ登録部428、およびテーブル管理部430、および設定部43については、それぞれの装置が単体で処理を実行してもよいし、それぞれの装置はプログラムのみを具備し、CPU402が当該プログラムをメモリ404に読み込んで実行してもよい。   The data receiving unit 42, the file information collating unit 420, the feature amount collating unit 422, the chunk restoring unit 424, the hash value collating unit 426, the data registering unit 428, the table managing unit 430, and the setting unit 43 constituting the data receiving unit 42 Each device may execute processing alone, or each device may include only a program, and the CPU 402 may read the program into the memory 404 and execute it.

図5を用いて、データ送信クライアント20とデータベースサーバ30の代表的なデータ転送処理を例示する。図3のデータ送信部32と図4のデータ受信部42とが、以下の手順でネットワーク10を介したデータ転送を行う。   A typical data transfer process between the data transmission client 20 and the database server 30 will be illustrated with reference to FIG. The data transmission unit 32 in FIG. 3 and the data reception unit 42 in FIG. 4 perform data transfer via the network 10 in the following procedure.

(S500)まずデータ送信クライアント20とデータベースサーバ30の間で通信路を確立する。具体的には、データ送信クライアント20の通信インターフェース310がデータベースサーバ30の通信インターフェース410に接続要求を通知し、通信インターフェース410がそれを許可することで、相互間の通信路を確立する。または、IKE(Internet Key Exchange)といった標準手順によって暗号化方式や暗号鍵などの情報を交換・共有し、より安全な通信路を確立してもよい。   (S500) First, a communication path is established between the data transmission client 20 and the database server 30. Specifically, the communication interface 310 of the data transmission client 20 notifies the connection request to the communication interface 410 of the database server 30, and the communication interface 410 allows it to establish a communication path between them. Alternatively, a more secure communication path may be established by exchanging and sharing information such as an encryption method and an encryption key by a standard procedure such as IKE (Internet Key Exchange).

(S502)データ送信クライアント20のファイル情報照合部320は、ユーザがユーザインターフェース308を介して転送を指示したファイルFの情報502を、通信インターフェース310を介してデータベースサーバ30に送信する。ここでファイル情報502とは、ファイルFの名称、サイズ、作成日時、ハッシュ値などである。ファイルFのハッシュ値は、ハッシュ値算出部328が計算する。   (S502) The file information collation unit 320 of the data transmission client 20 transmits the file F information 502 that the user has instructed to transfer via the user interface 308 to the database server 30 via the communication interface 310. Here, the file information 502 includes the name, size, creation date and time, hash value, and the like of the file F. The hash value calculation unit 328 calculates the hash value of the file F.

(S504)データベースサーバ30のデータ受信部42は、通信インターフェース410を介してファイル情報502を受信し、ファイル情報照合部420に渡す。ファイル情報照合部420は、記憶装置406に格納されているファイルの一覧(ファイル管理テーブル)を参照し、ファイル情報502をもとに、ファイルFと同一のファイルが記憶装置406に存在するかを確認する。ファイル管理テーブルの具体例については後で図10を用いて説明する。以下、ファイルFと同一のファイルを所有していないと仮定する。所有している場合については次の図6で説明する。   (S504) The data receiving unit 42 of the database server 30 receives the file information 502 via the communication interface 410 and passes it to the file information collating unit 420. The file information collating unit 420 refers to a list of files (file management table) stored in the storage device 406 and determines whether the same file as the file F exists in the storage device 406 based on the file information 502. Check. A specific example of the file management table will be described later with reference to FIG. Hereinafter, it is assumed that the same file as file F is not owned. The case of possession will be described with reference to FIG.

(S506)データベースサーバ30のデータ受信部42は、同一ファイルを所有していない旨506を通信インターフェース410を介してデータ送信クライアント20に通知する。
(S508)データ送信クライアント20のデータ送信部32は、同一ファイルを所有していない旨の通知506を通信インターフェース310を介して受信し、チャンキング部322を起動する。チャンキング部322は、ファイルFを記憶装置306から読み取って、チャンクに分割する。チャンキング処理の詳細については、後で図11を用いて説明する。以下、転送対象のファイルがk個のチャンクAi(i=1,...,k)に分割されたとする。
(S506) The data receiving unit 42 of the database server 30 notifies the data transmission client 20 via the communication interface 410 that the same file is not owned 506.
(S508) The data transmission unit 32 of the data transmission client 20 receives the notification 506 that the same file is not owned via the communication interface 310, and activates the chunking unit 322. The chunking unit 322 reads the file F from the storage device 306 and divides it into chunks. Details of the chunking process will be described later with reference to FIG. Hereinafter, it is assumed that the transfer target file is divided into k chunks Ai (i = 1,..., K).

(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 amount calculation unit 324 of the data transmission client 20 calculates the feature amount 522 of the chunk Ai. A specific method for calculating the feature amount will be described later with reference to FIGS.

(S522)データ送信クライアント20のデータ送信部32は、S520で求めた特徴量522を、通信インターフェース310を介してデータベースサーバ30に送信する。   (S522) The data transmission unit 32 of the data transmission client 20 transmits the feature quantity 522 obtained in S520 to the database server 30 via the communication interface 310.

(S524)データベースサーバ30のデータ受信部42は、通信インターフェース410を介して特徴量522を受信し、特徴量照合部422に受け渡す。特徴量照合部422は、チャンクの特徴量の一覧(チャンク管理テーブル)を参照して、特徴量522と各チャンクの特徴量を照合し、チャンクAiに類似するチャンクを特定する。チャンク管理テーブルの具体例については後で図10を用いて説明する。また、特徴量の照合処理の詳細については、後で図12〜図14を用いて説明する。以下、類似チャンクAi'が見つかったと仮定する。見つからなかった場合については図7で説明する。   (S524) The data receiving unit 42 of the database server 30 receives the feature quantity 522 via the communication interface 410 and passes it to the feature quantity matching unit 422. The feature amount matching unit 422 refers to the list of chunk feature amounts (chunk management table), compares the feature amount 522 with the feature amount of each chunk, and identifies a chunk similar to the chunk Ai. A specific example of the chunk management table will be described later with reference to FIG. Details of the feature amount matching processing will be described later with reference to FIGS. Hereinafter, it is assumed that a similar chunk Ai ′ is found. The case where it is not found will be described with reference to FIG.

(S526)データベースサーバ30のデータ受信部42は、類似チャンクAi'を所有している旨526を、通信インターフェース410を介してデータ送信クライアント20に通知する。
(S528)データ送信クライアント20のデータ送信部32は、類似チャンクAi'を所有している旨の通知526を通信インターフェース310を介して受信したとき、復元バイト列算出部326を起動する。復元バイト列算出部326は、チャンクAiの復元バイト列530を算出する。復元バイト列の具体的な算出方法については後で図15を用いて説明する。
(S526) The data receiving unit 42 of the database server 30 notifies the data transmission client 20 via the communication interface 410 that the similar chunk Ai ′ is owned 526.
(S528) When the data transmission unit 32 of the data transmission client 20 receives the notification 526 indicating that the similar chunk Ai ′ is owned via the communication interface 310, the data transmission unit 32 activates the restored byte string calculation unit 326. The restoration byte string calculation unit 326 calculates the restoration byte string 530 of the chunk Ai. A specific method for calculating the restored byte sequence will be described later with reference to FIG.

(S530)データ送信クライアント20のデータ送信部32は、S528で求めた復元バイト列530を、通信インターフェース310を介してデータベースサーバ30に送信する。   (S530) The data transmission unit 32 of the data transmission client 20 transmits the restored byte sequence 530 obtained in S528 to the database server 30 via the communication interface 310.

(S532)データベースサーバ30のデータ受信部42は、通信インターフェース410を介して復元バイト列530を受信し、チャンク復元部424に受け渡す。チャンク復元部424は、復元バイト列530を類似チャンクAi'に付加して、チャンクの復元処理を行う。復元処理の詳細については、後で図16を用いて説明する。以下、復元に成功し、チャンクBiが得られたと仮定する。復元に失敗した場合については図8で説明する。   (S532) The data receiving unit 42 of the database server 30 receives the restored byte sequence 530 via the communication interface 410 and passes it to the chunk restoring unit 424. The chunk restoration unit 424 adds the restoration byte sequence 530 to the similar chunk Ai ′ and performs chunk restoration processing. Details of the restoration process will be described later with reference to FIG. In the following, it is assumed that restoration was successful and chunk Bi was obtained. A case where the restoration fails will be described with reference to FIG.

(S534)データベースサーバ30のデータ受信部42は、復元に成功した旨534を、通信インターフェース410を介してデータ送信クライアント20に通知する。   (S534) The data receiving unit 42 of the database server 30 notifies the data transmission client 20 via the communication interface 410 that the restoration is successful 534.

(S536)データ送信クライアント20のデータ送信部32は、復元に成功した旨の通知534を通信インターフェース310を介して受信し、ハッシュ値算出部328を起動する。ハッシュ値算出部328は、チャンクAiのハッシュ値528を算出する。   (S536) The data transmission unit 32 of the data transmission client 20 receives the notification 534 that the restoration is successful via the communication interface 310, and activates the hash value calculation unit 328. The hash value calculation unit 328 calculates the hash value 528 of the chunk Ai.

(S538)データ送信クライアント20のデータ送信部32は、S536で求めたハッシュ値528を、通信インターフェース310を介してデータベースサーバ30に送信する。   (S538) The data transmission unit 32 of the data transmission client 20 transmits the hash value 528 obtained in S536 to the database server 30 via the communication interface 310.

(S540)データベースサーバ30のデータ受信部42は、通信インターフェース410を介してハッシュ値530を受信し、ハッシュ値照合部426に受け渡す。ハッシュ値照合部426は、チャンクBiのハッシュ値を計算し、ハッシュ値530と一致するか確かめる。以下、一致したと仮定する。一致しなかった場合については図9で説明する。   (S540) The data receiving unit 42 of the database server 30 receives the hash value 530 via the communication interface 410 and passes it to the hash value matching unit 426. The hash value matching unit 426 calculates the hash value of the chunk Bi and confirms whether or not it matches the hash value 530. Hereinafter, it is assumed that they match. The case where they do not match will be described with reference to FIG.

(S542)データベースサーバ30のデータ登録部428は、データベースサーバ30側で復元したチャンクBi(すなわちデータ送信クライアント20が所有するチャンクAi)を記憶装置406に格納し、テーブル管理部430に格納したチャンクBiの情報をテーブル管理部430に通知する。テーブル管理部430は、当該チャンクの情報をチャンク管理テーブルに追記する。チャンク管理テーブルの具体例については、後で図10を用いて説明する。   (S542) The data registration unit 428 of the database server 30 stores the chunk Bi restored on the database server 30 side (that is, the chunk Ai owned by the data transmission client 20) in the storage device 406, and the chunk stored in the table management unit 430. Bi information is notified to the table management unit 430. The table management unit 430 adds the chunk information to the chunk management table. A specific example of the chunk management table will be described later with reference to FIG.

(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 data receiving unit 42 of the database server 30 notifies the table management unit 430 that file transfer has been completed. In response to this, the table management unit 430 updates the file management table and the like. This completes the data transfer process.

本実施例によって、データ送信クライアント20が転送しようとしているチャンクと類似するチャンクをデータベースサーバ30で所有していた場合、データベースサーバ30側でそれを再現できて転送が不要となるため、非特許文献1、2や特許文献1などの従来方式と比較して、よりデータ転送の総時間を短縮することができる。   According to this embodiment, when the database server 30 owns a chunk similar to the chunk that the data transmission client 20 intends to transfer, it can be reproduced on the database server 30 side, and transfer is not necessary. Compared with conventional systems such as Nos. 1 and 2 and Patent Document 1, the total data transfer time can be further shortened.

なお、本実施例においてはハッシュ値を用いてファイルやチャンクの同一性を確認するが、異なるファイルまたはチャンクであるにもかかわらずハッシュ値が同一となる「衝突」が発生する可能性がわずかながら存在する。衝突が発生した場合、データベースサーバ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 database server 30 cannot correctly receive or restore the chunk. As a method for suppressing the collision, a method using a plurality of different hash functions can be considered. The probability that multiple hash values collide simultaneously is given by the product of the respective collision probabilities, so it is very small. Since the hash value is at most several tens of bytes, the load on the network is small even if multiple hash values are transmitted. Therefore, this method can reduce the collision probability without imposing a load on the network.

また、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 data receiving unit 42 performs the restoration process of S532 on the plurality of chunks. Since it should be only one chunk (which matches the chunk that the data sending client 30 is trying to transfer) that succeeds in the restoration, if the restoration is successful, the processing of S532 is aborted, and the processing after S534 is performed on the restored chunk. . When restoration fails for all the plurality of chunks, the processing described in FIG. 8 is performed.

図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 database server 30 owns the file F to be transferred by the data transmission client 20 in S504 of FIG. 5 will be described with reference to FIG.
(S500) to (S502) This is the same as the description of FIG.
(S600) The data receiving unit 42 of the database server 30 receives the file information 502 via the communication interface 410 and passes it to the file information collating unit 420. The file information collating unit 420 refers to the file management table and confirms whether the same file as the file F exists in the storage device 406 based on the file information 602. Hereinafter, it is assumed that the same file as file F is owned.

(S602)データ受信部42は、同一ファイルを所有している旨602を通信インターフェース410を介してデータ送信クライアント20に通知する。それを受けてデータ送信クライアント20が通信路を切断して(S560)、処理が完了する。   (S602) The data receiving unit 42 notifies the data transmission client 20 through the communication interface 410 that the same file is owned 602. In response, the data transmission client 20 disconnects the communication path (S560), and the process is completed.

図5のS524において、データベースサーバ30の特徴量照合部422がデータ送信クライアント20が転送しようとしているチャンクに類似したチャンクを見つけられなかった場合の処理フローを、図7を用いて説明する。
(S500)〜(S522)図5の説明と同様である。
(S700)S524と同様、データベースサーバ30の特徴量照合部422は、チャンクの特徴量の一覧(チャンク管理テーブル)を参照して、特徴量522と各チャンクの特徴量を照合し、データ送信クライアント20が転送しようとしているチャンクに類似するチャンクを特定する。以下、類似チャンクが見つからなかったと仮定する。
The processing flow when the feature amount matching unit 422 of the database server 30 cannot find a chunk similar to the chunk that the data transmission client 20 is trying to transfer in S524 of FIG. 5 will be described with reference to FIG.
(S500) to (S522) This is the same as the description of FIG.
(S700) Similar to S524, the feature quantity matching unit 422 of the database server 30 refers to the list of chunk feature quantities (chunk management table), collates the feature quantity 522 with the feature quantity of each chunk, and transmits the data transmission client. Identify a chunk that is similar to the chunk that 20 is trying to transfer. In the following, it is assumed that no similar chunk is found.

(S702)データベースサーバ30のデータ受信部42は、類似チャンクを所有していない旨702を、通信インターフェース410を介してデータ送信クライアント20に通知する。   (S702) The data reception unit 42 of the database server 30 notifies the data transmission client 20 via the communication interface 410 that the similar chunk 702 is not owned.

(S704)データ送信クライアント20のデータ送信部32は、データ送信クライアント20が転送しようとしているチャンク704を、通信インターフェース310を介してデータベースサーバ30に転送する。   (S704) The data transmission unit 32 of the data transmission client 20 transfers the chunk 704 to be transferred by the data transmission client 20 to the database server 30 via the communication interface 310.

(S706)データベースサーバ30のデータ受信部42は、通信インターフェース410を介してチャンク704を受信し、データ登録部428に受け渡す。データ登録部428は、チャンク704を記憶装置406に格納し、格納したチャンクの情報をテーブル管理部430に通知する。テーブル管理部430は、当該チャンクの情報をチャンク管理テーブルに追記する。   (S706) The data receiving unit 42 of the database server 30 receives the chunk 704 via the communication interface 410 and passes it to the data registration unit 428. The data registration unit 428 stores the chunk 704 in the storage device 406 and notifies the table management unit 430 of information on the stored chunk. The table management unit 430 adds the chunk information to the chunk management table.

(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 chunk restoring unit 424 of the database server 30 cannot restore the chunk that the data transmission client 20 is to transfer in S532 of FIG. 5 will be described with reference to FIG.
(S500) to (S530) This is the same as the description of FIG.
(S800) The data receiving unit 42 of the database server 30 receives the restored byte sequence 530 via the communication interface 410 and passes it to the chunk restoring unit 424. The chunk restoration unit 424 performs chunk restoration processing using the restoration byte sequence 530. Hereinafter, it is assumed that restoration has failed.

(S802)データベースサーバ30のデータ受信部42は、復元に失敗した旨802を、通信インターフェース410を介してデータ送信クライアント20に通知する。
(S704)〜(S706)図7の説明と同様である。
(S560)〜(S564)図5の説明と同様である。
(S802) The data receiving unit 42 of the database server 30 notifies the data transmission client 20 via the communication interface 410 that the restoration has failed 802.
(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 value matching unit 426 of the database server 30 does not match the hash value received from the data transmission client 20 in S540 of FIG. explain.
(S500) to (S538) This is the same as the description of FIG.
(S900) The data receiving unit 42 of the database server 30 receives the hash value 530 via the communication interface 410 and passes it to the hash value matching unit 426. The hash value collating unit 426 calculates the hash value of the chunk restored by the chunk restoring unit 424, and confirms whether or not it matches the hash value 530. Hereinafter, it is assumed that they do not match.

(S902)データベースサーバ30のデータ受信部42は、ハッシュ値が一致しない旨902を、通信インターフェース410を介してデータ送信クライアント20に通知する。
(S704)〜(S706)図7の説明と同様である。
(S560)〜(S564)図5の説明と同様である。
(S902) The data reception unit 42 of the database server 30 notifies the data transmission client 20 via the communication interface 410 that the hash values do not match 902.
(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 data receiving unit 42 stops receiving the file and does not update the file management table 1000 or the file configuration chunk management table 1040. As a result, chunks that do not become constituent elements of any file are accumulated in the storage device 406. In this embodiment, the more the database server 30 owns more chunks, the more effective the data transfer is. Therefore, the storage device 406 takes the position that there is no problem in accumulating chunks that do not constitute any file. The chunk management table that manages only the chunks stored in is decided.

もちろん、記憶装置406の容量が切迫している場合などに、どのファイルにも紐付いていないチャンクを削除することも可能である。その場合、テーブル管理部430を介してチャンク管理テーブルを更新する必要がある。   Of course, when the capacity of the storage device 406 is imminent, it is possible to delete a chunk that is not associated with any file. In this case, the chunk management table needs to be updated via the table management unit 430.

図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 table management unit 430 will be described with reference to FIG.

ファイル管理テーブル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 storage device 406 of the database server 30 described with reference to FIGS. The file management table 1000 includes a file ID column 1002 for storing a unique ID of a file, a file name column 1004 for storing a file name, a folder name column 1006 for storing a folder name in which the file is stored, and a byte length of the file. It includes a file size column 1008 for storing, a file creation date / time column 1010 for storing the file creation date / time, a hash value column 1012 for storing the hash value of the file, and the like. These pieces of information are used to determine whether the database server 30 owns the same file as the file transferred by the data transmission client 20. The hash value column 1012 stores a plurality of hash values when determining the identity of a file using a plurality of hash values as described in the explanation of FIG.

図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 table management unit 430 when a file is added or deleted on the storage device 406 or when file transfer is completed in S562 in FIG.

チャンク管理テーブル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 storage device 406 of the database server 30 described with reference to FIGS. The chunk management table 1020 stores a chunk ID column 1022 that stores a unique ID of a chunk, a feature column 1024 that stores a chunk feature, a hash value column 1026 that stores a hash value of the chunk, and a byte length of the chunk. It consists of a chunk size column 1028 and the like. The hash value column 1026 stores a plurality of hash values when the identity is determined using a plurality of hash values as described in the explanation of FIG. Details of chunk similarity determination using feature quantities will be described later with reference to FIGS.

図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 storage device 406, or when the data registration unit 428 stores the chunk in the storage device 406 in S542 of FIG. 5 or S706 of FIGS. Updated by the table manager 430.

ファイル構成チャンク管理テーブル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 file ID column 1042 for storing a file ID, a file name column 1044 for storing a file name, a folder name column 1046 for storing a folder name in which the file is stored, and a chunk name constituting the file It includes a chunk ID column 1048 for storing a chunk ID, an offset column 1050 for storing information about the offset, the chunk size column 1052 for storing the chunk size, and the like.

図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 table management unit 430 when a file is added or deleted on the storage device 406 or when file transfer is completed in S562 in FIG.

図3のチャンキング部322が行うファイルのチャンキングの具体的な手順について、図11を用いて説明する。   A specific procedure of file chunking performed by the chunking unit 322 in FIG. 3 will be described with reference to FIG.

単純なチャンキングの方法として、あらかじめ定めた固定長でファイルを分割する方式が考えられる。しかしこの方式では、ファイルの先頭に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 Non-Patent Document 1, a chunk to be transferred is determined based on the identity of the hash value of the chunk, which is not preferable. Therefore, Non-Patent Document 1 and the like use a method of dividing a file by changing the chunk length. In the present embodiment, either the fixed length method of the chunk length, the variable length method employed in Non-Patent Document 1 or the like, either chunking method may be employed.

可変長の方式では、図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 chunking unit 322 scans one byte at a time from the t-th byte of the file 1100, and extracts a partial byte string 1102 of t bytes before the scanning point 1104. t is a small value, for example, 7 in Non-Patent Document 3. In this embodiment, the same value may be taken. When the scan point 1104 is at the pth byte from the beginning, the partial byte sequence 1102 is composed of t byte values from the byte value 1106-1 of the p-t + 1 byte to the byte value 1106-t of the p byte. Is done. Note that the byte value 1106-t of the p-th byte matches the scanning point 1104.
(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 Non-Patent Document 4 for details of Rabin fingerprint. Hereinafter, the value of the Rabin fingerprint for the partial byte sequence 1102 is written as R.
(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 chunking unit 322 divides the file 1100 into a plurality of chunks by repeatedly performing the processes (1) to (3) by scanning byte by byte from the t-th byte of the file 1100.

仮にファイル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. Non-patent document 5 details mathematical analysis such as the chunk length deviation.

本実施例の第一の特徴は、データベースサーバ30がチャンクの特徴量を用いて類似するチャンクを見つけ出す点である。以下、図12〜図14を用いて、チャンクの特徴量の算出方法および特徴量を用いたチャンクの類似判定の方法について、具体的に説明する。特徴量の具体例として、類似度の近似精度が高いファジィハッシュ(図12)、データ量が少ないブルームフィルタ(図13)、その改良であるトレイト(図14)をあげる。   The first feature of the present embodiment is that the database server 30 finds a similar chunk using the chunk feature value. The chunk feature value calculation method and the chunk similarity determination method using the feature value will be specifically described below with reference to FIGS. Specific examples of feature amounts include a fuzzy hash with a high degree of similarity approximation (FIG. 12), a Bloom filter with a small amount of data (FIG. 13), and a trait (FIG. 14) as an improvement.

図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 chunk 1202 in the file 1200 after chunking is obtained by the following procedure.
(1) The feature amount calculation unit 324 of the data transmission client 20 calls the chunking unit 322 to chunk the chunk 1202 more finely. As described in FIG. 11, chunk 1202 can be further chunked by reducing the value of D in chunking condition 1140. Hereinafter, the chunk 1202 further chunked is called a sub chunk. Let d be the number of sub-chunks. In FIG. 12, chunks 1202 are chunked to d = 5, and sub chunks 1204 (S1,..., S5) are obtained.
(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 chunk 1202 is given by an array (Hash (S1),..., Hash (S5)) having d = 5 elements.

ファジィハッシュを用いると、どのサブチャンクが一致するかどうか容易に特定することができる。よってチャンクの類似度を、共通するサブチャンクの個数とサブチャンク全体の要素数の比で近似すれば、高速に類似度の近似値を計算できる。具体的は、ファジィハッシュ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 chunk 1202 is chunked into the sub chunk 1204 to obtain the fuzzy hash 1206, and the chunk 1212 is chunked into the sub chunk 1214 to obtain the fuzzy hash 1216. Sub-chunk 1214 differs from sub-chunk 1204 in S2 and S2 ′, and there is no sub-chunk corresponding to S5. Since the hash value is different for different chunks, the product set of fuzzy hashes 1206 and 1216 is (Hash (S1), Hash (S3), Hash (S4)), and the union is (Hash (S1), Hash (S2), Hash (S2 '), Hash (S3), Hash (S4), Hash (S5)). Therefore, the similarity between chunks 1202 and 1212 is approximately given by 3/6 = 1/2.

ファジィハッシュは類似ファイルの検索などに用いられている。詳細については非特許文献3や特許文献2を参照のこと。   The fuzzy hash is used for searching similar files. See Non-Patent Document 3 and Patent Document 2 for details.

ファジィハッシュはサブチャンクのハッシュ値をすべて保持しておく必要があるため、データ量が多い。データ量を大幅に削減した特徴量としてブルームフィルタが知られている。図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 chunk 1302 in the file 1300 after chunking is obtained by the following procedure.
(1) The feature amount calculation unit 324 of the data transmission client 20 calls the chunking unit 322 to chunk the chunk 1302 more finely. Let d be the number of sub-chunks. In the example of FIG. 13, chunks 1302 are chunked to d = 5, and sub-chunks 1304 (S1,..., S5) are obtained.
(2) A hash value is calculated for each sub chunk 1304. Let Hash (Si) be the hash value of sub-chunk Si (i = 1, ..., d).
(3) The logical sum 1306 of all hash values Hash (Si) (i = 1,..., D) is taken. The kth bit of the logical sum of the hash values Hash (S1) and Hash (S2) is 1 if either the kth bit of Hash (S1) or the kth bit of Hash (S2) is 1, both 0 only if it is 0.
(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, chunk 1302 is chunked into sub chunk 1304 to obtain Bloom filter 1208, and Bloom filter 1318 is obtained from chunk 1312. The bit length of the Bloom filter is 32 bits, and there are 12 non-matching bits (unmatched bits are underlined), so the similarity is approximately calculated as 12/32 = 3/8.

ブルームフィルタはデータ量を大幅に削減した特徴量であるが、前述の通り類似度の近似精度が劣る。その精度を向上させたのがトレイトである。チャンクからトレイトを計算する処理の概要を図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 chunk 1402 in the file 1400 after chunking is obtained by the following procedure.
(1) The feature amount calculation unit 324 of the data transmission client 20 calls the chunking unit 322 to chunk the chunk 1402 more finely. Let d be the number of sub-chunks. In the example of FIG. 14, chunks 1402 are chunked into five, and subchunks 1404 (S1,..., S5) are obtained.
(2) The hash value calculation unit 328 prepares t types of hash functions Hash_k (k = 1,..., T). In the example of FIG. 14, t = 4 types of hash functions Hash_1,..., Hash_4 are prepared. The feature amount calculation unit 324 calls the hash calculation unit 328 and calculates the hash value by applying t types of hash functions for each sub chunk Si (i = 1,..., D). In the example of FIG. 14, 4 × 5 = 20 hash values Hash_1 (S1),..., Hash_4 (S5) are obtained.
(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 data transmission client 20 intends to transfer is restored on the database server 30 side using the restored byte sequence. Hereinafter, a process for obtaining a restored byte string from a chunk and a process for restoring a chunk using the restored byte string will be described with reference to FIGS.

まず、上記処理のベースとなる誤り訂正技術の概要について説明する。誤り訂正にはブロック符号、畳込み符号などさまざまな方式が知られているが、本実施例ではブロック符号を用いる。ブロック符号とは、送信しようとする情報から検査バイト列を計算し、これを付加して冗長性を加えることで、受信側でなるべく誤りのない復号を可能にするものである。一般に誤り訂正技術は、検査バイト列を求める誤り訂正符号化処理と、送信した情報に生じた誤りを訂正する誤り訂正処理のペアで構成される。   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 string calculation unit 326 of the data transmission client 20 obtains the restoration byte string 1512 from the chunk 1500 by the following procedure.
(1) Parameters and the like of the error correction coding process 1510 are determined in advance via the setting unit 330. The parameters and the like can be freely changed, but need to be combined with error correction processing executed by the chunk restoration unit 424 of the database server 30. This is because the error correction coding process and the error correction process are a pair, and the error correction process cannot be executed correctly with different parameter settings. Hereinafter, the input length of the error correction coding process 1510 is assumed to be k.
(2) Divide the chunk 1500 every k bytes. If the byte length of chunk 1500 is not a multiple of k, padding 1504 is added at the end to make the length a multiple of k. The contents of the padding 1504 may be anything, but it is necessary to share the same generation method with the chunk restoration unit 424 so that the same padding can be obtained. By this division processing, a post-division chunk 1502 is obtained. For example, in FIG. 15, the chunk 1500 is divided into six k-byte sequences with padding 1504 added.
(3) An error correction encoding process 1510 is performed on each k byte string in the divided chunk 1502 to obtain a check byte string. Let h be the length of the inspection byte string. The restored byte sequence 1512 is obtained by concatenating the obtained check byte sequences. In the example of FIG. 15, the length of the restored byte string 1512 is 6h.

上述の通り、復元バイト列の長さの約半分のバイト数だけ中身が異なるチャンクを正しく復元できるようになるため、(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 similar chunk 1600 is found by searching the chunk management table based on the feature amount transmitted from the data transmission client 20. The chunk restoration unit 424 of the database server 30 tries to restore a chunk from the similar chunk 1600 according to the following procedure.
(1) The same parameters as those of the error correction encoding process 1510 are determined in advance via the setting unit 432. Hereinafter, it is assumed that the input length of the error correction encoding process 1510 is k, and the length of the check byte string is h.
(2) Divide chunk 1600 into k bytes. If the byte length of the chunk 1600 is not a multiple of k, padding 1604 is added at the end to make the length a multiple of k. Note that the generation method of the padding 1604 needs to be the same as the padding generation method in the restored byte string calculation unit 326 of the data transmission client 20. By this division processing, a similar chunk 1602 after division is obtained. For example, in FIG. 16, the chunk 1600 is divided into six k-byte sequences with padding 1604 added.
(3) For each k byte string in the divided similar chunk 1602, the restored byte string received from the data transmission client 20 is cut out for each h byte and added as a check byte string. If the check byte sequence cannot be added to all k byte sequences in the similar chunk 1602 after the division, the error correction process cannot be executed, and the process ends as a restoration failure. If the check byte string remains, it is clear that the chunk that the data transmission client 20 is trying to transfer cannot be restored, and thus the process ends as a restoration failure. For example, in FIG. 16, an inspection byte sequence 1608 is added to the byte sequence 1606.
(4) The error correction process 1610 is performed on each byte string of length k + h to which the check byte string is added. If error correction fails for any byte string, the process ends as a restoration failure. For example, in FIG. 16, the byte sequence 1606 is corrected to 1616 and the check byte sequence 1608 is corrected to 1618 by the error correction processing 1610.
(5) Cut and concatenate the first k bytes of each byte sequence subjected to error correction.
(6) The padding 1604 is removed from the end, and a restored chunk 1620 is obtained. This is a candidate for the chunk that the data transmission client 20 intends to transfer.

復元チャンクの管理方式について補足する。本実施例では、図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 chunk restoration unit 424 of the database server 30 stores the restored chunk in the storage device 406. Since the restored byte sequence is shorter than the chunk itself, instead of storing the restored chunk in the storage device 406, by storing only the pair of the chunk ID and the restored byte sequence before restoration, the storage device 406 The amount of data stored in can be reduced.

以下、復元前のチャンクと復元バイト列のペアを管理するテーブルのことを基礎チャンク管理テーブルとよぶ。図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 chunk ID column 1702 for storing the ID of the restored chunk, a basic chunk ID column 1704 for storing the ID of the chunk before the restoration, and a restoration byte string for storing the restoration byte string necessary for restoration. It consists of a column 1706 and the like.

データ登録部428は、復元したチャンクを記憶装置406に格納するタイミングで、デーブル管理部430を介して基礎チャンク管理テーブル1700を更新する。復元したチャンクにはチャンクIDを発行してチャンク管理テーブル1020やファイル構成チャンク管理テーブル1040を更新するが、実データは記憶装置406に格納しない。   The data registration unit 428 updates the basic chunk management table 1700 via the table management unit 430 at the timing of storing the restored chunk in the storage device 406. A chunk ID is issued to the restored chunk to update the chunk management table 1020 and the file configuration chunk management table 1040, but the actual data is not stored in the storage device 406.

ファイル構成チャンク管理テーブル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 storage device 406.

例えば、図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 storage device 406.

なお、チャンクの実データが記憶装置406に格納されているかどうか、ファイル構成チャンク管理テーブル1040は新しいカラムを設けて管理してもよい。この場合、基礎チャンク管理テーブル1700へのアクセスが最小限に絞られ、ファイルアクセスにかかる時間を削減することができる。   Whether the actual chunk data is stored in the storage device 406 may be managed by providing a new column in the file configuration chunk management table 1040. In this case, access to the basic chunk management table 1700 is minimized, and the time required for file access can be reduced.

以上、図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 data transmission client 20 owns a chunk similar to the chunk to be transferred in the database server 30, it can be reproduced on the database server 30 side and transfer is not required. In comparison, the total data transfer time can be shortened.

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.
請求項1において、
当該データ送信装置は、
前記第一のデータの特徴量を算出する特徴量算出部と、
前記第一のデータの誤り訂正が可能な復元バイト列を計算する復元バイト列算出部と、
前記第一のデータのハッシュ値を計算するハッシュ値算出部と
を有し、
当該データ受信装置は、
既に所有するデータの特徴量と前記通信回線を介して受信した前記特徴量とが類似の範囲として予め決められた数値範囲であるかを照合する特徴量照合部と、
前記復元バイト列を用いて前記第二のデータの誤り訂正処理を施す復元部と、
当該誤り訂正処理後の第二のデータのハッシュ値を計算して、前記第一のデータのハッシュ値と比較するハッシュ値照合部と
を有する
ことを特徴とする、データ転送システム。
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.
請求項2において、
当該データ受信装置は、既に所有するデータの中で前記通信回線を介して受信した前記特徴量と類似の範囲の特徴量を有するデータがない場合、若しくは、前記第一のデータのハッシュ値と一致しなかった場合は、その旨若しくは前記第一のデータの送信依頼を前記データ送信装置に送信し、
当該データ送信装置は、その旨若しくは前記依頼を受信すると、前記第一のデータを当該データ受信装置に送信する
ことを特徴とする、データ転送システム。
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.
JP2012055255A 2012-03-13 2012-03-13 Data transfer system Ceased JP2013190891A (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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