JP4852135B2 - Data division method and apparatus - Google Patents

Data division method and apparatus Download PDF

Info

Publication number
JP4852135B2
JP4852135B2 JP2009227887A JP2009227887A JP4852135B2 JP 4852135 B2 JP4852135 B2 JP 4852135B2 JP 2009227887 A JP2009227887 A JP 2009227887A JP 2009227887 A JP2009227887 A JP 2009227887A JP 4852135 B2 JP4852135 B2 JP 4852135B2
Authority
JP
Japan
Prior art keywords
data
chunk
data fragment
determined
document
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.)
Active
Application number
JP2009227887A
Other languages
Japanese (ja)
Other versions
JP2011076421A (en
Inventor
誠 小原
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.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
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 Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2009227887A priority Critical patent/JP4852135B2/en
Publication of JP2011076421A publication Critical patent/JP2011076421A/en
Application granted granted Critical
Publication of JP4852135B2 publication Critical patent/JP4852135B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データ間で重複するデータ断片を検出しながら、任意のデータを可変長のデータ断片に分割するのに好適な、データ分割方法及び装置に関する。   The present invention relates to a data division method and apparatus suitable for dividing arbitrary data into variable-length data fragments while detecting overlapping data fragments between data.

昨今、官公庁・企業・個人のデータを管理する基盤は急速に肥大化・複雑化しており、その基盤の主要な構成要素である記憶装置に格納するデータも増大の一途をたどっている。このようなデータの保管・管理コストを削減するための1つの技術として、重複排除技術が注目されている。   In recent years, the infrastructure for managing data of government offices, companies, and individuals has been rapidly enlarged and complicated, and the data stored in the storage device, which is the main component of the infrastructure, has been steadily increasing. As one technique for reducing such data storage and management costs, a deduplication technique has attracted attention.

重複排除技術とは、任意のデータ(以下、対象データと称する)を記憶装置に格納する際に、既に対象データと同じ内容のデータが当該記憶装置に格納されているかを検出、つまりデータの重複を検出し、既に格納されていれば当該対象データを例えばリンクで置き換えることにより重複データを1つにまとめる(排除する)技術をいう。この重複排除技術によれば、データの記憶に必要な記憶容量を少なくすることができる。   The deduplication technique is to detect whether data having the same content as the target data is already stored in the storage device when arbitrary data (hereinafter referred to as target data) is stored in the storage device. , And if the data is already stored, the target data is replaced with, for example, a link to combine (exclude) duplicate data into one. According to this deduplication technique, the storage capacity required for data storage can be reduced.

同じデータが記憶装置に格納されているか否かを高速に検出するためには、データの識別子を利用することが多い。即ち重複排除技術では一般に、データの重複を検出するのに、対象データ自身を既に記憶装置に格納されている全データと比較する手法ではなくて、対象データの識別子を求めてこれを既存の格納済みのデータの識別子の群と比較する手法が適用される。   In order to detect at high speed whether or not the same data is stored in the storage device, an identifier of the data is often used. That is, in general, the deduplication technique is not a method of comparing the target data itself with all the data already stored in the storage device to detect the duplication of data. A method of comparing with a group of already-identified data identifiers is applied.

データの重複は、予め定められた単位で検出される。この単位として、ファイルのようなデータ(コンテンツ)の一塊を用いることにより、データの重複を検出する第1の手法が古くから知られている。また最近では、上記の単位に、ファイルのようなデータを分割することによって得られるデータ断片(以下、チャンクと称する)を用いることにより、データの重複を検出する第2の手法が提案されている。第1の手法では、データの一部が異なるときにもデータ全体が異なるものであるとして処理される。これに対して第2の手法では、上記一部だけを処理すればよいという利点がある。   Data duplication is detected in a predetermined unit. As this unit, a first method for detecting data duplication by using a lump of data (content) such as a file has been known for a long time. Recently, a second method for detecting data duplication has been proposed by using a data fragment (hereinafter referred to as a chunk) obtained by dividing data such as a file in the above unit. . In the first method, even when part of the data is different, the entire data is processed as being different. On the other hand, the second method has an advantage that only a part of the above needs to be processed.

第2の手法を適用する重複排除技術では、一般に、以下のような手順を繰り返すことで重複排除が行われる。
手順1)対象データからチャンクを切り出す。
手順2)切り出されたチャンクの識別子を求める。
手順3)切り出されたチャンクの識別子を既に記憶装置に格納済みのチャンクの群のそれぞれの識別子と比較する。もし、切り出されたチャンクと識別子が同一のチャンクがあれば、切り出されたチャンクと同一内容のチャンクであるとして、重複を排除する形式で、例えばリンクに置き換えることにより、切り出されたチャンクを記憶装置に格納する。
In the deduplication technique to which the second method is applied, deduplication is generally performed by repeating the following procedure.
Procedure 1) Cut out chunks from target data.
Procedure 2) Find the identifier of the cut chunk.
Step 3) The identifier of the cut chunk is compared with the identifier of each group of chunks already stored in the storage device. If there is a chunk whose identifier is the same as that of the cut chunk, it is assumed that the chunk has the same content as the cut chunk, and the cut chunk is stored in the storage device by replacing it with a link, for example, in a form that eliminates duplication. To store.

第2の手法を適用する重複排除技術では、手順1で実行されるチャンクの切り出しの方法、つまりどの長さでチャンクを切り出すかが重要である。第2の手法を適用する重複排除技術は、対象データからチャンクを切り出すときに当該チャンクの切り出し点を求める方法によって、大きく次の2種類に分類される。   In the deduplication technique to which the second method is applied, the chunk cutout method executed in the procedure 1, that is, the length of the chunk cutout is important. The deduplication technique to which the second method is applied is roughly classified into the following two types according to a method for obtaining a cut point of the chunk when the chunk is cut out from the target data.

A)固定長重複排除方法
固定長重複排除方法とは、ある一定の長さでチャンクの切り出し点を定め、チャンク毎に重複検出・排除を行う方法である。
B)可変長重複排除方法
可変長重複排除方法とは、対象データの内容に応じてデータ分割長を動的に調節して切り出し点を定め、チャンク毎に重複検出・排除を行う方法である。
A) Fixed-length deduplication method The fixed-length deduplication method is a method in which a chunk cut-out point is determined with a certain length, and duplication is detected and eliminated for each chunk.
B) Variable-length deduplication method The variable-length deduplication method is a method in which the data division length is dynamically adjusted according to the contents of the target data to determine the cut-out point, and duplicate detection / exclusion is performed for each chunk.

以下、固定長重複排除方法及び可変長重複排除方法の違いについて、図23を参照して説明する。
図23は、文書名が「文書#1」の文書111及び文書名が「文書#2」の文書112の2つの文書についてそれぞれ、チャンク切り出し点を固定長重複排除方法と可変長重複排除方法で求めた様子を示す。文書112は、文書111の一部を編集することによって、例えば文書111における文字列“name”及び“specified”の間に文字列“ABCD”を挿入することによって、生成された文書である。
Hereinafter, differences between the fixed-length deduplication method and the variable-length deduplication method will be described with reference to FIG.
In FIG. 23, the chunk cut-out point is determined by the fixed-length deduplication method and the variable-length deduplication method for the two documents, the document 111 with the document name “document # 1” and the document 112 with the document name “document # 2”. Shows how it was found. The document 112 is a document generated by editing a part of the document 111, for example, by inserting the character string “ABCD” between the character strings “name” and “specified” in the document 111.

固定長重複排除方法によれば、文書111及び文書112に対し、図23において矢印113で示されるように、例えば10文字の固定長を単位に、チャンクの切り出し点が定められる。一方、可変長重複排除方法によれば、文書111及び文書112に対し、図23において矢印114で示されるように、データの中身に応じて、チャンクの切り出し点が定められる。この技術の詳細については後述する。   According to the fixed-length deduplication method, for the document 111 and the document 112, as indicated by an arrow 113 in FIG. 23, for example, chunk cut points are determined in units of a fixed length of 10 characters. On the other hand, according to the variable-length deduplication method, chunk cut points are determined for the document 111 and the document 112 according to the contents of the data, as indicated by the arrow 114 in FIG. Details of this technique will be described later.

ここでは以下の点に注目されたい。
固定長重複排除方法では、文書111と文書112との間で、文字列の挿入が発生した箇所から後ろ側、つまり文書の末尾側のチャンク全てが異なっている。
これに対して可変長重複排除方法では、文書111と文書112との間で、文字列の挿入が発生した箇所周辺のチャンクが異なっているのみで、それより後ろ側のチャンクは全て一致している。
Attention should be paid to the following points.
In the fixed-length deduplication method, the document 111 and the document 112 differ in all chunks on the back side, that is, on the tail side of the document, from the position where the character string is inserted.
On the other hand, in the variable-length deduplication method, only the chunks around the portion where the character string is inserted are different between the document 111 and the document 112, and all the chunks after that are the same. Yes.

このように、固定長重複排除方法に比較して、可変長重複排除方法の方が、あるデータ間で、データの一部挿入/削除/変更が発生したときでも、その影響を極力抑えながら重複排除を実現できる。   In this way, compared to the fixed-length deduplication method, the variable-length deduplication method performs duplication while minimizing the impact even when partial insertion / deletion / change of data occurs between certain data. Exclusion can be realized.

上述のような可変長でのチャンク切り出し点の求め方と、それを利用した重複排除を行う方法は種々知られている。ここでは、特許文献1に記載されているような方法について、例を挙げて説明する。   There are various known methods for obtaining chunk cut-out points with variable length as described above and methods for performing deduplication using the chunk cut-out points. Here, the method as described in Patent Document 1 will be described with an example.

特許文献1に記載の方法では、次の手順でチャンクの切り出し点が求められる。
1)データ上のある連続する固定長の区間(以下、ウィンドウと称する)のデータ断片(バイト列)を取り出して、当該データ断片の識別子を求める。ここでは、ウィンドウの長さが2バイトであるとする。このデータ断片がチャンクとしてのデータ断片とは異なる点に注意すべきである。
In the method described in Patent Document 1, a chunk cut-out point is obtained by the following procedure.
1) A data fragment (byte string) in a certain continuous fixed-length section (hereinafter referred to as a window) on data is taken out, and an identifier of the data fragment is obtained. Here, it is assumed that the window length is 2 bytes. It should be noted that this data fragment is different from the data fragment as a chunk.

2)求めた識別子の一部(例えば下位2ビット)が、予め定めた値(例えば0x01)と一致したときに、そこをチャンクの切り出し点とする。   2) When a part of the obtained identifier (for example, lower 2 bits) matches a predetermined value (for example, 0x01), this is set as a chunk cut point.

図24は、2バイト長のウィンドウW内の文字列(データ断片)の識別子を求めて、その識別子の下位2ビットが、予め定めた値0x01と一致するときにそこをチャンクの切り出し点として決定する場合の動作例を示す。図24の例では、文書データ“The fil…”の先頭より2バイト(2文字)長の区間をウィンドウWとして初期設定し、以後当該ウィンドウWを1バイトずつシフトさせながら、当該ウィンドウW内の文字列の識別子を、例えば当該文字列のハッシュ値を計算することによって求めている。このハッシュ値の計算に用いられるハッシュ関数を、hα( )で表す。ウィンドウW内の文字列が“Th”であるものとすると、その識別子は、hα(“Th”)で表される。 FIG. 24 obtains an identifier of a character string (data fragment) in a window W having a length of 2 bytes, and when the lower 2 bits of the identifier match a predetermined value 0x01, it is determined as a chunk cut-off point An example of the operation is shown. In the example of FIG. 24, a section having a length of 2 bytes (2 characters) from the beginning of the document data “The fil...” Is initially set as a window W, and then the window W is shifted by 1 byte and The identifier of the character string is obtained, for example, by calculating a hash value of the character string. A hash function used for calculating the hash value is represented by h α (). If the character string in the window W is “Th”, the identifier is represented by h α (“Th”).

ウィンドウW内の文字列“Th”の識別子hα(“Th”)が0x1Aであったとすると、当該識別子0x1Aの下位2ビットは0x02である。この識別子0x1Aの下位2ビットは、当該識別子0x1Aとマスクデータ0x03との論理積演算0x1A&0x03によって求められる。識別子0x1Aの下位2ビット0x02は、予め定められた値0x01ではない。このため、このときのウィンドウWの終端を、チャンクの切り出し点とはしない。 If the identifier h α (“Th”) of the character string “Th” in the window W is 0x1A, the lower 2 bits of the identifier 0x1A are 0x02. The lower 2 bits of the identifier 0x1A are obtained by a logical product operation 0x1A & 0x03 of the identifier 0x1A and the mask data 0x03. The lower 2 bits 0x02 of the identifier 0x1A are not the predetermined value 0x01. For this reason, the end of the window W at this time is not used as a chunk cut-out point.

ウィンドウW内の文字列“ f”の識別子hα(“ f”)が0x99であったとすると、当該識別子0x99の下位2ビットは0x01である。これは予め定められた値0x01と同じなので、このときのウィンドウWの終端をチャンクの切り出し点とする。これにより、文字列“The f”が切り出される。 If the identifier h α (“f”) of the character string “f” in the window W is 0x99, the lower 2 bits of the identifier 0x99 are 0x01. Since this is the same as the predetermined value 0x01, the end of the window W at this time is set as a chunk cut-out point. Thereby, the character string “The f” is cut out.

この例では、チャンクの切り出し点を決定する条件とし、識別子の下位2ビットと予め定められた値との一致を用いているが、このビット数で、平均チャンクサイズが決定されることに注意されたい。例えば2ビットの場合、平均チャンクサイズは22=4バイトとなる。 In this example, the condition for determining the cut-out point of the chunk is used, and the match between the lower 2 bits of the identifier and a predetermined value is used, but it is noted that the average chunk size is determined by this number of bits. I want. For example, in the case of 2 bits, the average chunk size is 2 2 = 4 bytes.

以上のようにしてチャンクを切り出した上で、図25に示すように、このチャンク自体の識別子を、例えば当該チャンクのハッシュ値を計算することによって求めている。切り出されたチャンクをCAで表し、ハッシュ値の計算に用いられるハッシュ関数を、hβ( )で表す。チャンクCAを構成する文字列が“The f”である図25の例では、チャンクCAの識別子は、hβ(“The f”)=hβ(CA)で表される。以下の説明では、チャンクCAの識別子をHAで表す。 After the chunk is cut out as described above, as shown in FIG. 25, the identifier of the chunk itself is obtained, for example, by calculating the hash value of the chunk. The cut chunk is represented by C A , and the hash function used for calculating the hash value is represented by h β (). In the example of FIG. 25 in which the character string constituting the chunk C A is “The f”, the identifier of the chunk C A is represented by h β (“The f”) = h β (C A ). In the following description, it represents the identifier of the chunk C A in H A.

次に、前記手順3と同様に、求めたチャンクの識別子を、既に記憶装置に格納されているチャンクの群のそれぞれの識別子と比較する。もし、求めたチャンクと識別子が同一のチャンクがあれば、求めたチャンクと同一内容のチャンクが既に記憶装置に格納されているものとして処理する。これに対し、求めたチャンクと識別子が同一のチャンクがなければ、当該求めたチャンクを未だ記憶装置に格納されていない新しいチャンクとして処理する。
上述の処理を、チャンクを求める毎に繰り返すことで、重複検出・排除を行う。
Next, similarly to the procedure 3, the obtained chunk identifier is compared with each identifier of the group of chunks already stored in the storage device. If there is a chunk having the same identifier as the obtained chunk, processing is performed assuming that a chunk having the same content as the obtained chunk is already stored in the storage device. On the other hand, if there is no chunk having the same identifier as the obtained chunk, the obtained chunk is processed as a new chunk that is not yet stored in the storage device.
By repeating the above process every time a chunk is obtained, duplicate detection / exclusion is performed.

特許文献1に記載されたチャンクの切り出し方法によれば、例えば図26に示す文書名が「文書#1」の文書111(データ)は、識別子HxがHA乃至HIの9つのチャンクを含むチャンクCxの群に分割される。文書名が「文書#1」の文書111から切り出されるチャンクCxの群のそれぞれの識別子Hxは、図26に示されるように、当該文書名「文書#1」に対応付けて文書構成テーブル251に登録される。また、識別子HA乃至HIを含む識別子Hxの群のそれぞれと、その識別子Hxに対応するチャンクCxとの一覧は、図26に示されるようにチャンク一覧テーブル252に登録される。 According to the chunk cutout method described in Patent Document 1, for example, a document 111 (data) whose document name is “document # 1” shown in FIG. 26 includes nine chunks with identifiers H x from H A to H I. They are divided into groups of chunks C x containing. As shown in FIG. 26, each identifier H x of the group of chunks C x extracted from the document 111 with the document name “document # 1” is associated with the document name “document # 1” as shown in FIG. 251 is registered. Further, a list of each of the group of identifiers H x including the identifiers H A to H I and the chunk C x corresponding to the identifier H x is registered in the chunk list table 252 as shown in FIG.

一般的には、チャンク切り出しに当たり、チャンクの長さに最小長さ及び最大長さの制限を設けることが多い。このような場合、最大長さに達した位置を、強制的にチャンクの切り出し点と定める。   Generally, when chunks are cut out, the lengths of the chunks are often limited by a minimum length and a maximum length. In such a case, the position reaching the maximum length is forcibly determined as the chunk cut-out point.

また、特許文献2には、チャンクの切り出し点を求めるためウィンドウをシフトしながら識別子を求める方法に関して、RollingHashingの手法を適用することが記載されている。   Japanese Patent Application Laid-Open No. H10-228561 describes that a RollingHashing technique is applied to a method for obtaining an identifier while shifting a window in order to obtain a chunk cut-out point.

特許文献1,2に記載されているような可変長重複排除技術には、次のような2つの課題がある。
<第1の課題>
重複排除率の向上のためには、チャンクの平均長を短くする必要がある。しかし、チャンクの平均長を短くすると、チャンクの個数が増える。このため、チャンク一覧テーブルに登録される識別子(より詳細には識別子とチャンクとの対)の数が増える。一般的にチャンク一覧テーブルはハッシュテーブルで実装されることが多いが、識別子の数が増えるとハッシュテーブルのサイズも大きくなってしまう。このため、チャンク一覧テーブルを、アクセス速度が高速なメモリ上に全て展開することが難しくなり、例えばメモリと比較して大容量だが低速なディスク装置上に展開せざるを得なくなる。このことは、性能を大幅に悪化させる要因となる。
The variable length deduplication techniques described in Patent Documents 1 and 2 have the following two problems.
<First issue>
In order to improve the deduplication rate, it is necessary to shorten the average length of the chunk. However, if the average length of chunks is shortened, the number of chunks increases. For this reason, the number of identifiers (more specifically, pairs of identifiers and chunks) registered in the chunk list table increases. Generally, the chunk list table is often implemented as a hash table, but as the number of identifiers increases, the size of the hash table also increases. For this reason, it is difficult to expand all chunk list tables on a memory having a high access speed. For example, the chunk list table must be expanded on a disk device having a large capacity but a low speed as compared with the memory. This is a factor that greatly deteriorates the performance.

<第2の課題>
逆に、チャンク一覧テーブルを全てメモリ上に展開するためには、当該メモリ上に展開可能なサイズにまでチャンク一覧テーブルを小さくする必要がある。そのためには、チャンク一覧テーブルに登録される識別子の数を少なく抑えなければならい。このことはつまり、チャンクの平均長を長くするということであり、重複排除率の低下を招くことになる。
<Second problem>
On the other hand, in order to expand all the chunk list table on the memory, it is necessary to reduce the chunk list table to a size that can be expanded on the memory. For this purpose, the number of identifiers registered in the chunk list table must be reduced. In other words, this means that the average length of the chunk is lengthened, which leads to a decrease in the deduplication rate.

以下に例を用いて説明する。図27は上記第1の課題の例を、図28は上記第2の課題の例を示している。図27の例は、図28と比較してチャンクの平均長を短くすることで、図28と比較して、重複排除率の向上を実現している。チャンク一覧テーブル252に識別子に対応付けて登録されるチャンクの群のサイズを合計することで、重複排除率が高いことがわかる。しかし、図28と比較して識別子数が多い。   An example will be described below. FIG. 27 shows an example of the first problem, and FIG. 28 shows an example of the second problem. In the example of FIG. 27, the deduplication rate is improved as compared with FIG. 28 by shortening the average length of the chunk as compared with FIG. It can be seen that the deduplication rate is high by summing the sizes of chunk groups registered in the chunk list table 252 in association with identifiers. However, there are many identifiers compared with FIG.

このように、重複排除率とチャンクの個数(チャンクの平均長)はトレードオフの関係にあることがわかる。   Thus, it can be seen that the deduplication rate and the number of chunks (average length of chunks) are in a trade-off relationship.

最近、上述のような課題を解決するために、様々な手法が検討・採用されている。例えば特許文献3は、切り出されたチャンクを2つ以上連結し(ここでは便宜上、連結されたチャンク群を「連結チャンク」と称する)、少なくとも連結チャンクの単位で重複検出を行うことで、チャンクの個数を減らしつつ高い重複排除率を維持する手法を開示している。   Recently, various methods have been studied and adopted to solve the above-described problems. For example, Patent Document 3 connects two or more cut chunks (here, for convenience, a group of connected chunks is referred to as a “connected chunk”), and performs duplicate detection at least in units of connected chunks. A technique for maintaining a high deduplication rate while reducing the number is disclosed.

特許文献3に開示されている手法の特徴は、チャンクの連結/非連結を動的に切り替えながら、連結チャンクと連結チャンクとの間に、非連結チャンクの群からなる「緩衝領域」を設ける点にある。この手法では、以下の第1及び第2の条件に基づいて、チャンクの連結/非連結が動的に切り替えられる。   The feature of the method disclosed in Patent Document 3 is that a “buffer region” made up of a group of unconnected chunks is provided between the connected chunks while dynamically switching the connected / unconnected chunks. It is in. In this method, chunk connection / disconnection is dynamically switched based on the following first and second conditions.

第1の条件とは、「連結対象として仮に定められたチャンクの群が、既にシステム内に登録されている連結チャンクと重複するか否か」である。
第2の条件とは、「連結対象として定められたチャンクの群の前後に連なるチャンクの群が、連結チャンクであるか否か」と、「上記連なるチャンクの群が、既にシステム内に登録されている連結チャンクと重複しているか否か」とである。
The first condition is “whether or not a group of chunks temporarily determined as a connection target overlaps with a connection chunk already registered in the system”.
The second condition is “whether or not a group of chunks connected before and after a group of chunks determined as a connection target is a connected chunk” and “the group of consecutive chunks has already been registered in the system. Whether or not it overlaps with the connected chunk.

米国特許第5,990,810号明細書US Pat. No. 5,990,810 米国特許第6,810,398号明細書US Pat. No. 6,810,398 米国特許出願公開第2008/0133561号明細書US Patent Application Publication No. 2008/0133561

しかし、上記特許文献3に開示されているような手法では、連結/非連結を動的に切り替える条件が複雑である。条件が複雑であることは、実装上好ましくない。また、連結チャンクと連結チャンクの間に設けられる「緩衝領域」では細かなチャンクが多数生成される。このことは、文書構成テーブル及びチャンク一覧テーブルのエントリ数の増加を招き、結果的に性能劣化を引き起こす。   However, in the method disclosed in Patent Document 3, the condition for dynamically switching between connected / disconnected is complicated. It is not preferable in terms of implementation that the conditions are complicated. In the “buffer area” provided between the connected chunks, a large number of fine chunks are generated. This leads to an increase in the number of entries in the document configuration table and chunk list table, resulting in performance degradation.

また、上記特許文献3に開示されているような手法では、常に複数個の非連結チャンクの群が連結されて、この連結の単位で重複検出・排除が行われる。このことは、可変長でのチャンク切り出しで切り出されたチャンクの長さが長いとき、更に大きな連結チャンクの単位で、重複検出・排除が行われることになって、重複排除率が低下する要因となることを意味する。   In the technique disclosed in Patent Document 3, a plurality of groups of unconnected chunks are always connected, and duplicate detection / exclusion is performed in units of this connection. This is because when the length of chunks cut out by chunk cutout at a variable length is long, duplicate detection / removal is performed in units of larger connected chunks, and the deduplication rate is reduced. It means to become.

本発明は上記事情を考慮してなされたものでその目的は、分割されるデータ断片数を抑えながらも高い重複排除率を、単純な仕組みで実現できるデータ分割方法及び装置を提供することにある。   The present invention has been made in view of the above circumstances, and an object thereof is to provide a data division method and apparatus capable of realizing a high deduplication rate with a simple mechanism while suppressing the number of data fragments to be divided. .

本発明の1つの観点によれば、入力手段、第1のデータ断片決定手段、第2のデータ断片決定手段、第3のデータ断片決定手段、重複検出手段及び制御手段を含む装置において、任意のデータを、重複検出を行いながら、複数の、任意の長さの第1のデータ断片に分割するためのデータ分割方法が提供される。このデータ分割方法は、前記任意のデータを前記入力手段が入力する入力ステップと、前記入力された任意のデータのうち、未だ前記第1のデータ断片として決定されていない残りのデータ部分から、前記第2のデータ断片決定手段が任意の長さまたは予め定められた長さの第2のデータ断片を順次決定する第1の決定ステップと、予め定められた第1の条件を満足する状態に達するまでに、前記第1のステップにおいて決定された1つの第2のデータ断片それ自体または複数の第2のデータ断片の組み合わせを、前記第3の断片決定手段が1つの第3のデータ断片として決定する第2の決定ステップと、前記決定された第3のデータ断片の重複の有無を、当該決定された第3のデータ断片に一致するビット列の第1のデータ断片が既に決定されているかによって、前記重複検出手段が検出する重複検出ステップと、前記重複が検出された場合、前記決定された第3のデータ断片を前記第1のデータ断片決定手段が前記第1のデータ断片として決定する第3の決定ステップと、前記重複が検出されなかった場合、前記第1及び第2の決定ステップを再実行させることにより、前記第1の条件を満足する状態に達するまでに新たな1つの第2のデータ断片または新たな複数の第2のデータ断片を決定させると共に、当該新たな1つの第2のデータ断片それ自体、当該新たな複数の第2のデータ断片の組み合わせ、前記重複が検出されなかった第3のデータ断片の一部と当該新たな1つの第2のデータ断片との組み合わせ、または前記重複が検出されなかった第3のデータ断片の一部と当該新たな複数の第2のデータ断片との組み合わせを、前記第3のデータ断片決定手段により1つの新たな第3のデータ断片として決定させるための制御を、予め定められた第2の条件を満足する状態で前記重複が検出されるまで前記制御手段が繰り返す第1の制御ステップと、前記第2の条件を満足する状態で前記第1の制御ステップが繰り返されても前記重複が検出されなかった場合、その間に決定された前記第2のデータ断片のうちの、前記第1の条件を満足する、1つの第2のデータ断片それ自体、または複数の第2のデータ断片の組み合わせを、前記第1のデータ断片決定手段が新たな第1のデータ断片として決定する第4の決定ステップと、前記入力された任意のデータが全て前記第1のデータ断片に分割されるまで、前記制御手段が前記第1の制御ステップを繰り返すための第2の制御ステップとを具備することを特徴とする。   According to one aspect of the present invention, in an apparatus including an input unit, a first data fragment determination unit, a second data fragment determination unit, a third data fragment determination unit, a duplication detection unit, and a control unit, an arbitrary There is provided a data dividing method for dividing data into a plurality of first data fragments having an arbitrary length while performing duplication detection. The data dividing method includes: an input step in which the input means inputs the arbitrary data; and the remaining data portion not yet determined as the first data fragment of the input arbitrary data. The second data fragment determining means reaches a state satisfying a first condition and a first determination step of sequentially determining a second data fragment of an arbitrary length or a predetermined length, and a predetermined first condition Up to this point, the third fragment determining means determines one second data fragment itself or a combination of a plurality of second data fragments determined in the first step as one third data fragment. The first data fragment of the bit string that matches the determined third data fragment has already determined whether or not the determined third data fragment is duplicated The duplication detection step detected by the duplication detection means, and when the duplication is detected, the first data fragment decision means determines the determined third data fragment as the first data fragment. If the overlap is not detected and the third determination step is determined as follows, the first determination step and the second determination step are re-executed, so that a new state is reached until the state satisfying the first condition is reached. One second data fragment or a plurality of new second data fragments are determined, and the new one second data fragment itself, a combination of the new plurality of second data fragments, and the duplication A combination of a part of the third data fragment in which no duplication is detected and the new second data fragment, or a part of the third data fragment in which the duplication is not detected Control for determining a combination of the new plurality of second data fragments as one new third data fragment by the third data fragment determining means is performed under a predetermined second condition. The first control step repeated by the control means until the overlap is detected in a satisfied state and the overlap is not detected even if the first control step is repeated in a state satisfying the second condition One second data fragment itself or a combination of a plurality of second data fragments satisfying the first condition among the second data fragments determined in the meantime, A fourth determining step in which the first data fragment determining means determines as a new first data fragment, and the control procedure until all the input arbitrary data is divided into the first data fragments. The stage comprises a second control step for repeating the first control step.

本発明によれば、任意のデータを、重複検出を行いながら、複数の、任意の長さの第1のデータ断片に分割するためのデータ分割方法及び装置において、第2のデータ断片の長さを重複検出のオフセット間隔としながら、当該第2のデータ断片の長さよりも長くなる可能性が高く、且つ第1のデータ断片として用いられる可能性の高い第3のデータ断片の長さで重複検出を行う構成とすることにより、従来技術と比較してより単純・高速な手法で、第1のデータ断片の数(つまりチャンク数または分割数)を少なくしながらも重複排除率を高く維持した、重複検出を行うことができる。   According to the present invention, in the data division method and apparatus for dividing arbitrary data into a plurality of first data fragments having an arbitrary length while performing duplication detection, the length of the second data fragment is determined. Is used as an offset interval for duplication detection, and duplication detection is performed with the length of the third data fragment that is likely to be longer than the length of the second data fragment and is likely to be used as the first data fragment. By adopting a configuration that performs the above, the deduplication ratio is maintained high while reducing the number of first data fragments (that is, the number of chunks or the number of divisions) by a simpler and faster method than the conventional technology. Duplicate detection can be performed.

本発明の一実施形態に係るストレージシステムの構成を示すブロック図。1 is a block diagram showing a configuration of a storage system according to an embodiment of the present invention. 図1に示される文書格納装置のハードウェア構成を示すブロック図。The block diagram which shows the hardware constitutions of the document storage apparatus shown by FIG. 図1に示される文書格納装置の主として機能構成を示すブロック図。FIG. 2 is a block diagram mainly showing a functional configuration of the document storage device shown in FIG. 1. 同実施形態で適用される文書格納処理の手順を示すフローチャート。6 is an exemplary flowchart illustrating a procedure of document storage processing applied in the embodiment. 同実施形態で適用される文書格納処理の手順を示すフローチャート。6 is an exemplary flowchart illustrating a procedure of document storage processing applied in the embodiment. 同実施形態で適用される親チャンクと子チャンクの群との関係を説明するための図。The figure for demonstrating the relationship between the parent chunk and the group of a child chunk applied in the embodiment. 子チャンクの切り出し点を決定する手法を説明するための図。The figure for demonstrating the method of determining the cut-out point of a child chunk. 第1及び第2の文書と、当該第1及び第2の文書の格納前における文書構成テーブル及びチャンク一覧テーブルの状態とを示す図。The figure which shows the 1st and 2nd document, and the state of the document structure table and chunk list table before the said 1st and 2nd document are stored. 第1の文書を格納するための格納動作(その1)を文書構成テーブルの状態と共に示す図。The figure which shows the storing operation (the 1) for storing a 1st document with the state of a document structure table. 第1の文書を格納するための格納動作(その2)を文書構成テーブルの状態と共に示す図。The figure which shows the storing operation (the 2) for storing a 1st document with the state of a document structure table. 第1の文書を格納するための格納動作(その3)を文書構成テーブルの状態と共に示す図。The figure which shows the storing operation (the 3) for storing a 1st document with the state of a document structure table. 第1の文書を格納するための格納動作(その4)を文書構成テーブルの状態と共に示す図。The figure which shows the storing operation (the 4) for storing a 1st document with the state of a document structure table. 第1の文書を格納するための格納動作(その5)を文書構成テーブルの状態と共に示す図。The figure which shows the storing operation (the 5) for storing a 1st document with the state of a document structure table. 第1の文書の格納後における、文書構成テーブル及びチャンク一覧テーブルの状態を、当該第1の文書と当該第1の文書から切り出された親チャンクの列と共に示す図。The figure which shows the state of a document structure table and a chunk list table after storage of a 1st document with the row | line | column of the parent chunk cut out from the said 1st document and the said 1st document. 第1の文書の格納後に行われる第2の文書を格納するための格納動作(その1)を文書構成テーブルの状態と共に示す図。The figure which shows the storing operation (the 1) for storing the 2nd document performed after storage of a 1st document with the state of a document structure table. 第2の文書を格納するための格納動作(その2)を文書構成テーブルの状態と共に示す図。The figure which shows the storing operation (the 2) for storing a 2nd document with the state of a document structure table. 第2の文書を格納するための格納動作(その3)を文書構成テーブルの状態と共に示す図。The figure which shows the storing operation (the 3) for storing a 2nd document with the state of a document structure table. 第2の文書を格納するための格納動作(その4)を文書構成テーブルの状態と共に示す図。The figure which shows the storing operation (the 4) for storing a 2nd document with the state of a document structure table. 第2の文書を格納するための格納動作(その5)を文書構成テーブルの状態と共に示す図。The figure which shows the storing operation (the 5) for storing a 2nd document with the state of a document structure table. 第2の文書の格納後における、文書構成テーブル及びチャンク一覧テーブルの状態を、当該第2の文書と当該第2の文書から切り出された親チャンクの列と共に示す図。The figure which shows the state of a document structure table and a chunk list table after storage of a 2nd document with the row | line | column of the parent chunk cut out from the said 2nd document and the said 2nd document. 第1及び第2の文書の格納後における、文書構成テーブル及びチャンク一覧テーブルの状態を、当該第1及び第2の文書と当該第1及び第2の文書から切り出された親チャンクの列と共に示す図。The state of the document configuration table and the chunk list table after the storage of the first and second documents is shown together with the first and second documents and the parent chunk columns cut out from the first and second documents. Figure. 同実施形態で適用される文書取得処理の手順を示すフローチャート。6 is a flowchart showing a procedure of document acquisition processing applied in the embodiment. 従来技術における固定長重複排除方法及び可変長重複排除方法の違いを説明するための図。The figure for demonstrating the difference of the fixed-length deduplication method and variable-length deduplication method in a prior art. 従来技術における可変長重複排除方法で適用されるチャンク切り出し点を設定する動作の過程の一例を示す図。The figure which shows an example of the process of the operation | movement which sets the chunk cutout point applied with the variable-length deduplication method in a prior art. 従来技術におけるチャンク切り出し方法を説明するための図。The figure for demonstrating the chunk cutout method in a prior art. 従来技術におけるチャンク切り出し方法によって文書を対象とするチャンク切り出しを行って、文書構成テーブル及びチャンク一覧テーブルを構成した例を示す図。The figure which shows the example which performed the chunk cut-out for a document with the chunk cut-out method in a prior art, and comprised the document structure table and the chunk list table. 従来技術における第1の課題の例を示す図。The figure which shows the example of the 1st subject in a prior art. 従来技術における第2の課題の例を示す図。The figure which shows the example of the 2nd subject in a prior art.

以下、本発明の実施の形態につき図面を参照して説明する。
<システム構成>
図1は本発明の一実施形態に係るストレージシステムの構成を示すブロック図である。このストレージシステムは、文書格納装置10と、クライアント装置20とから構成される。文書格納装置10とクライアント装置20とは、例えばネットワーク30によって接続されている。文書格納装置10は文書をチャンクに分割して格納するためのデータ記憶装置である。クライアント装置20は、文書格納装置10を自身の記憶装置として利用する。つまりクライアント装置20は、例えば当該クライアント装置20上で動作するアプリケーションプログラムに従い、文書格納装置10に対して文書格納を指示することにより当該文書格納装置10に文書を格納させ、また文書格納装置10に対して文書取得を指示することにより文書格納装置10から文書を取得する。なお、文書格納装置10とクライアント装置20とが直接に接続されていても、クライアント装置20としての機能が文書格納装置10に内蔵されていても構わない。
Embodiments of the present invention will be described below with reference to the drawings.
<System configuration>
FIG. 1 is a block diagram showing a configuration of a storage system according to an embodiment of the present invention. This storage system includes a document storage device 10 and a client device 20. The document storage device 10 and the client device 20 are connected by a network 30, for example. The document storage device 10 is a data storage device for storing a document by dividing it into chunks. The client device 20 uses the document storage device 10 as its own storage device. That is, the client device 20 stores the document in the document storage device 10 by instructing the document storage device 10 to store the document, for example, in accordance with an application program running on the client device 20, and the document storage device 10 The document is acquired from the document storage device 10 by instructing the document acquisition to the document storage device 10. Note that the document storage device 10 and the client device 20 may be directly connected, or the function as the client device 20 may be built in the document storage device 10.

文書格納装置10は、クライアント装置20から文書名で指定される文書の格納を指示するための文書格納指示が与えられると、後述する手続きに従って、当該文書名で指定される文書をチャンクに分割しながら重複検出・排除を行った上で、当該文書を後述する文書格納部32(図3参照)に格納する。また文書格納装置10は、クライアント装置20から文書名で指定される文書の取得を指示するための文書取得指示が与えられると、当該文書名で指定される文書を文書格納部32から取り出してクライアント装置20に出力する。   When a document storage instruction for instructing storage of a document specified by a document name is given from the client apparatus 20, the document storage apparatus 10 divides the document specified by the document name into chunks according to a procedure described later. However, after duplicate detection / exclusion is performed, the document is stored in a document storage unit 32 (see FIG. 3) described later. When the document storage apparatus 10 is given a document acquisition instruction for instructing acquisition of a document specified by a document name from the client apparatus 20, the document storage apparatus 10 retrieves the document specified by the document name from the document storage unit 32 and performs client acquisition. Output to the device 20.

ここでの文書とは例えばファイルまたは当該ファイル内のデータを指し、文書名とはファイル名を指す。なお、ファイルと当該ファイル内のデータとを区別するために、当該ファイル内のデータを文書のデータまたは文書データと称することもある。また、チャンクとは、データを断片化したもの(データ断片)を指す。また本実施形態では、データ断片として、「第1のデータ断片」、「第2のデータ断片」及び「第3のデータ断片」が定義される。以降の説明では、「第2のデータ断片」を「子チャンク」、「第3のデータ断片」を「親チャンク」と、それぞれ称する。また「第1のデータ断片」を、「登録済みのデータ断片」、「登録済みの親チャンク」または単に「親チャンク」と称する。   The document here refers to, for example, a file or data in the file, and the document name refers to a file name. In order to distinguish a file from data in the file, the data in the file may be referred to as document data or document data. A chunk refers to data fragmented (data fragment). In this embodiment, “first data fragment”, “second data fragment”, and “third data fragment” are defined as data fragments. In the following description, the “second data fragment” is referred to as “child chunk” and the “third data fragment” is referred to as “parent chunk”. The “first data fragment” is referred to as “registered data fragment”, “registered parent chunk”, or simply “parent chunk”.

<文書格納装置10のハードウェア構成>
本実施形態において、文書格納装置10はコンピュータを用いて実現される。図2は、このような文書格納装置10のハードウェア構成を示すブロック図である。図2に示されるように、文書格納装置10、少なくとも1つの処理ユニット21、主記憶装置22、補助記憶装置23、通信機構24及び入出力装置25の周知のハードウェア構成を有する。補助記憶装置23は、例えばハードディスクドライブを用いて構成される。補助記憶装置23は、処理ユニット21によって実行されるプログラム230を格納した記憶媒体231を備えている。本実施形態において記憶媒体231はディスク媒体である。
<Hardware Configuration of Document Storage Device 10>
In the present embodiment, the document storage device 10 is realized using a computer. FIG. 2 is a block diagram showing a hardware configuration of such a document storage device 10. As shown in FIG. 2, the document storage device 10, at least one processing unit 21, a main storage device 22, an auxiliary storage device 23, a communication mechanism 24, and an input / output device 25 have known hardware configurations. The auxiliary storage device 23 is configured using, for example, a hard disk drive. The auxiliary storage device 23 includes a storage medium 231 that stores a program 230 executed by the processing unit 21. In the present embodiment, the storage medium 231 is a disk medium.

<文書格納装置10の機能構成>
図3は、文書格納装置10の主として機能構成を示すブロック図である。文書格納装置10は、文書格納部31と、命令受け付けモジュール32と、可変長重複排除モジュール33と、作業用メモリ34とを含む。本実施形態において、文書格納装置10内の命令受け付けモジュール32及び可変長重複排除モジュール33は、当該文書格納装置10が図2に示されるハードウェア構成のコンピュータから構成される場合に、当該コンピュータ内の処理ユニット21が、補助記憶装置23に格納されているプログラム230を主記憶装置22に読み込んで実行することにより実現されるものとする。しかし、命令受け付けモジュール32及び可変長重複排除モジュール33の少なくとも1つがハードウェアとして実現されてもよい。
<Functional Configuration of Document Storage Device 10>
FIG. 3 is a block diagram mainly showing a functional configuration of the document storage device 10. The document storage device 10 includes a document storage unit 31, an instruction reception module 32, a variable length deduplication module 33, and a work memory 34. In the present embodiment, the instruction receiving module 32 and the variable-length deduplication module 33 in the document storage device 10 are included in the computer when the document storage device 10 is configured from a computer having the hardware configuration shown in FIG. The processing unit 21 reads the program 230 stored in the auxiliary storage device 23 into the main storage device 22 and executes it. However, at least one of the instruction receiving module 32 and the variable length deduplication module 33 may be realized as hardware.

文書格納部31は、文書構成テーブル311及びチャンク一覧テーブル312を用いて文書の群を格納する。文書格納部31は、図2に示される補助記憶装置23の記憶領域の一部を用いて実現される。文書構成テーブル311及びチャンク一覧テーブル312は、それぞれ、従来技術で適用されている文書構成テーブル251及びチャンク一覧テーブル252(図26乃至図28参照)に相当する。   The document storage unit 31 stores a group of documents using the document configuration table 311 and the chunk list table 312. The document storage unit 31 is realized by using a part of the storage area of the auxiliary storage device 23 shown in FIG. The document configuration table 311 and the chunk list table 312 correspond to the document configuration table 251 and the chunk list table 252 (see FIGS. 26 to 28) applied in the conventional technology, respectively.

文書構成テーブル311は、文書格納部31に格納される文書の群のそれぞれについて、その文書の文書名と、その文書を構成するチャンクの群の識別子(ハッシュ値)の配列(つまりリスト)とを対応付けて保持する。チャンク一覧テーブル312は、文書格納部31に格納される文書を構成するチャンクのそれぞれについて、そのチャンクのデータ断片と、そのチャンクの識別子(ハッシュ値)とを対応付けて保持する。つまり、文書格納部31には、文書が、当該文書を構成するチャンクの群に分割して格納される。   The document configuration table 311 includes, for each group of documents stored in the document storage unit 31, a document name of the document and an array (that is, a list) of identifiers (hash values) of the groups of chunks that configure the document. Hold in association. The chunk list table 312 holds the chunk data fragment and the chunk identifier (hash value) in association with each chunk constituting the document stored in the document storage unit 31. That is, the document storage unit 31 stores the document by dividing it into groups of chunks constituting the document.

本実施形態において、文書構成テーブル311及びチャンク一覧テーブル312は、文書格納装置10の起動時(例えば文書格納装置10の電源の投入時)に、アクセスの高速化のために、作業用メモリ34にロードされて使用される。また、作業用メモリ34にロードされている文書構成テーブル311及びチャンク一覧テーブル312は、例えば文書格納装置10において処理を実行していない状態が一定時間続いた場合、或いは文書格納装置10の動作停止時(例えば文書格納装置10の電源の遮断時)に文書格納部31に書き戻される。しかし、以降は便宜的に、文書格納装置10の起動後においても文書格納部31内の文書構成テーブル311及びチャンク一覧テーブル312が使用されるものとして説明する。   In the present embodiment, the document configuration table 311 and the chunk list table 312 are stored in the work memory 34 in order to speed up access when the document storage device 10 is activated (for example, when the document storage device 10 is turned on). Loaded and used. The document configuration table 311 and the chunk list table 312 loaded in the work memory 34 are, for example, when a state in which processing is not being performed in the document storage device 10 continues for a certain period of time or when the operation of the document storage device 10 is stopped. At this time (for example, when the power of the document storage device 10 is shut off), the data is written back to the document storage unit 31. However, for the sake of convenience, the following description will be made assuming that the document configuration table 311 and the chunk list table 312 in the document storage unit 31 are used even after the document storage device 10 is started.

命令受け付けモジュール32は、クライアント装置20からの指示を受け付けて、当該指示の内容に従って動作する。命令受け付けモジュール32は、クライアント装置20からの指示が文書格納指示の場合、当該文書格納指示を可変長重複排除モジュール33に渡すことにより、当該可変長重複排除モジュール33による文書格納処理を行わせる。命令受け付けモジュール32は、クライアント装置20からの指示が文書取得指示の場合に動作する文書取得部320を含む。文書取得部320は、文書取得指示に従い、指定された文書名の文書のデータを文書格納部31から取得するための文書取得処理を行う。文書取得部320によって取得された文書のデータは命令受け付けモジュール32によってクライアント装置20に出力される。   The instruction receiving module 32 receives an instruction from the client device 20 and operates according to the content of the instruction. When the instruction from the client device 20 is a document storage instruction, the instruction receiving module 32 passes the document storage instruction to the variable length deduplication module 33 to cause the variable length deduplication module 33 to perform document storage processing. The command reception module 32 includes a document acquisition unit 320 that operates when the instruction from the client device 20 is a document acquisition instruction. The document acquisition unit 320 performs document acquisition processing for acquiring data of a document having a designated document name from the document storage unit 31 in accordance with the document acquisition instruction. The document data acquired by the document acquisition unit 320 is output to the client device 20 by the command reception module 32.

可変長重複排除モジュール33は、命令受け付けモジュール32から渡された文書格納指示に従い、指定された文書のデータから可変長でチャンクを切り出すためのチャンク切り出し処理と、切り出されたチャンク毎に重複を検出してそれを排除するための重複検出・排除処理とを行いながら、文書格納部31に当該文書を格納する。可変長重複排除モジュール33は、子チャンク決定部331と、親チャンク決定部332と、識別子生成部333と、重複検出部334と、親チャンク登録部335と、制御部336とを含む。   The variable-length deduplication module 33 detects chunk duplication for each chunk that has been cut out in accordance with the document storage instruction passed from the instruction receiving module 32 and cuts out chunks from the specified document data in variable length. Then, the document is stored in the document storage unit 31 while performing duplicate detection / exclusion processing for eliminating it. The variable length deduplication module 33 includes a child chunk determination unit 331, a parent chunk determination unit 332, an identifier generation unit 333, a duplication detection unit 334, a parent chunk registration unit 335, and a control unit 336.

子チャンク決定部331は、可変長のチャンクを子チャンクとして決定する。親チャンク決定部332は、子チャンク決定部331によって決定された連続する子チャンクの列または単一の子チャンクを親チャンクとして決定する。   The child chunk determination unit 331 determines a variable-length chunk as a child chunk. The parent chunk determination unit 332 determines a sequence of consecutive child chunks or a single child chunk determined by the child chunk determination unit 331 as a parent chunk.

識別子生成部333は、チャンク(ここでは親チャンク)の切り出しと重複検出で利用される当該チャンクの識別子を生成する。本実施形態では、識別子としてチャンクのハッシュ値が用いられる。このハッシュ値には、例えばSHA1などのハッシュ関数を利用して生成された値が用いられる。   The identifier generation unit 333 generates an identifier of the chunk that is used in chunk extraction (here, parent chunk) extraction and duplication detection. In this embodiment, a hash value of a chunk is used as an identifier. As this hash value, for example, a value generated using a hash function such as SHA1 is used.

重複検出部334は、親チャンク決定部332によって決定された親チャンクの識別子に基づいて、当該識別子のデータ断片がチャンク一覧テーブル312に登録されている重複を検出する。   Based on the identifier of the parent chunk determined by the parent chunk determination unit 332, the duplication detection unit 334 detects the duplication in which the data fragment of the identifier is registered in the chunk list table 312.

親チャンク登録部335は、重複検出部334の重複検出結果に基づいて、親チャンクを文書格納部31内の文書構成テーブル311及びチャンク一覧テーブル312に登録するための親チャンク登録処理を行う。
制御部336は、子チャンク決定部331、親チャンク決定部332、識別子生成部333及び重複検出部334の動作を制御する。
The parent chunk registration unit 335 performs parent chunk registration processing for registering the parent chunk in the document configuration table 311 and the chunk list table 312 in the document storage unit 31 based on the duplicate detection result of the duplicate detection unit 334.
The control unit 336 controls operations of the child chunk determination unit 331, the parent chunk determination unit 332, the identifier generation unit 333, and the duplication detection unit 334.

作業用メモリ34は、可変長重複排除モジュール33によるチャンク切り出し処理と重複検出・排除処理のための作業用の記憶領域を提供する。作業用メモリ34は、図2に示される主記憶装置22の記憶領域の一部を用いて実現される。作業用メモリ34の記憶領域の一部は、処理の対象となる文書データを一時格納するための文書バッファ341として用いられる。作業用メモリ34の記憶領域の他の一部は、処理に用いられる各種変数を一時格納するためのレジスタ部342として用いられる。レジスタ部342は、子チャンク番号i,j,kをそれぞれ保持するための、iレジスタ、jレジスタ、kレジスタと、子チャンク番号kの子チャンクの後述する開始オフセットck.offsetを保持するための子チャンク開始オフセットレジスタと、子チャンク番号kの子チャンクの長さ(子チャンク長)ck.lenを保持するための子チャンク長レジスタを含む。 The work memory 34 provides a working storage area for chunk cutout processing and duplication detection / exclusion processing by the variable-length deduplication module 33. The work memory 34 is realized by using a part of the storage area of the main storage device 22 shown in FIG. A part of the storage area of the work memory 34 is used as a document buffer 341 for temporarily storing document data to be processed. Another part of the storage area of the work memory 34 is used as a register unit 342 for temporarily storing various variables used for processing. The register unit 342 holds an i register, a j register, and a k register for holding the child chunk numbers i, j, and k, respectively, and a start offset c k .offset described later of the child chunk of the child chunk number k. Child chunk start offset register and a child chunk length register for holding the length (child chunk length) c k .len of the child chunk of child chunk number k.

<文書格納処理>
次に、文書格納装置10における文書格納処理について、図4乃至図6を参照して説明する。なお、図4及び図5は、文書格納処理の手順を示すフローチャート、図6は文書格納装置10に格納されるべき文書が図23に示される文書111の場合における、親チャンクと子チャンクの群との関係を説明するため図である。
<Document storage processing>
Next, document storage processing in the document storage device 10 will be described with reference to FIGS. 4 and 5 are flowcharts showing the procedure of document storage processing, and FIG. 6 is a group of parent chunks and child chunks when the document to be stored in the document storage device 10 is the document 111 shown in FIG. It is a figure for demonstrating the relationship with these.

まず、クライアント装置20から文書格納装置10にネットワーク30を介して文書格納指示が送られたものとする。この文書格納指示は、文書格納装置10に格納されるべき文書を指定する文書名を含んでいる。   First, it is assumed that a document storage instruction is sent from the client device 20 to the document storage device 10 via the network 30. This document storage instruction includes a document name that specifies a document to be stored in the document storage device 10.

文書格納装置10に送られたクライアント装置20からの文書格納指示は、当該文書格納装置10の命令受け付けモジュール32で受け付けられる。命令受け付けモジュール32は、この文書格納指示を受け付けると入力手段として機能して、当該文書格納指示で指定される文書名の文書のデータをクライアント装置20から入力して作業用メモリ34内の文書バッファ341に格納する。そして命令受け付けモジュール32は、クライアント装置20からの文書格納指示を、可変長重複排除モジュール33に渡す。すると可変長重複排除モジュール33は、図4及び図5のフローチャートに示す手順の文書格納処理を実行する。即ち可変長重複排除モジュール33は、文書バッファ341に格納されている文書データの例えば先頭から末尾に至るまで、以下の処理を繰り返す。   The document storage instruction from the client device 20 sent to the document storage device 10 is received by the command reception module 32 of the document storage device 10. When receiving the document storage instruction, the instruction reception module 32 functions as an input unit, inputs document data of the document name specified by the document storage instruction from the client device 20, and stores the document buffer in the work memory 34. 341. Then, the command receiving module 32 passes the document storage instruction from the client device 20 to the variable length deduplication module 33. Then, the variable-length deduplication module 33 executes document storage processing according to the procedure shown in the flowcharts of FIGS. That is, the variable-length deduplication module 33 repeats the following processing from the beginning to the end of the document data stored in the document buffer 341, for example.

まず可変長重複排除モジュール33の制御部336は、子チャンク決定部331による子チャンクの切り出し(切り出し点の決定)のために、子チャンクckを指定するための子チャンク番号kを0に初期設定すると共に、当該子チャンクckのオフセット(開始オフセット)ck.offsetを文書データの先頭位置(ここでは先頭バイトの位置)を示す0に初期設定する(ステップ401)。つまり制御部336は、レジスタ部342内のkレジスタに、子チャンク番号kとして0(k=0)を設定すると共に、レジスタ部342内の子チャンク開始オフセットレジスタに、子チャンクckの開始オフセットck.offsetとして0(ck.offset=0)を設定する。子チャンクckの開始オフセットck.offsetは、当該子チャンクckの開始切り出し点を示すもので、当該開始切り出し点の文書データの先頭位置からのオフセット(相対位置)を示す。この時点では、子チャンクckの終了切り出し点を示す終了オフセットは決定されていないことに注意されたい。 First, the control unit 336 of the variable-length deduplication module 33, initially for excision child chunk by children chunk determining section 331 (determining the cut-out point), the child chunk number k for designating a child chunk c k 0 At the same time, an offset (start offset) c k .offset of the child chunk ck is initialized to 0 indicating the start position (here, the start byte position) of the document data (step 401). That is, the control unit 336 sets 0 (k = 0) as the child chunk number k in the k register in the register unit 342, and sets the start offset of the child chunk ck in the child chunk start offset register in the register unit 342. as c k .offset to set 0 (c k .offset = 0). Start offset c k .offset child chunk c k marks the start clipping point of the child chunk c k, an offset (relative position) from the head position of the document data of the starting cut point. Note that at this time, the end offset indicating the end cut-out point of the child chunk ck has not been determined.

次に制御部336は、子チャンクcj,ciの子チャンク番号j,iをいずれもkに設定する(ステップ402)。つまり制御部336は、レジスタ部342内のjレジスタ及びiレジスタに、それぞれ子チャンク番号j,iとしてk(k=0)を設定する。子チャンクciは、チャンク一覧テーブル312に登録すべき1つの親チャンクを決定するための一連の処理(登録親チャンク決定処理)の最初に求められる親チャンクにおける先頭の子チャンクを示す。子チャンクcjは、登録親チャンク決定処理で求められる最新の親チャンクにおける先頭の子チャンクを示す。 Next, the control unit 336 sets the child chunk numbers j and i of the child chunks c j and c i to k (step 402). That is, the control unit 336 sets k (k = 0) as the child chunk numbers j and i in the j register and i register in the register unit 342, respectively. The child chunk c i indicates the first child chunk in the parent chunk that is obtained first in a series of processes (registered parent chunk determination process) for determining one parent chunk to be registered in the chunk list table 312. The child chunk c j indicates the first child chunk in the latest parent chunk obtained in the registered parent chunk determination process.

すると、可変長重複排除モジュール33内の子チャンク決定部331は、子チャンクckの終了切り出し点を示す終了オフセットを決定することにより、当該子チャンクckの長さを求め、その長さを、当該子チャンクckの長さを示す子チャンク長ck.lenとして、レジスタ部342内の子チャンク長レジスタに設定する(ステップ403)。子チャンクckの終了オフセットを決定する手法、つまり子チャンクck(可変長のチャンク)の切り出し点を定める手法には、前記特許文献1,2に記載されているような手法の他に、図7を参照して後述する手法を適用することが可能である。 Then, the child chunk determining section 331 in the variable length deduplication module 33, by determining the end offset indicating the end cutout of the child element chunk c k, determine the length of the child chunk c k, the length The child chunk length c k .len indicating the length of the child chunk c k is set in the child chunk length register in the register unit 342 (step 403). Method for determining the offset of the end of the child chunk c k, that is, the method for determining the cut-out point of the child chunk c k (variable length chunks), in addition to the manner as described in Patent Documents 1 and 2, It is possible to apply the method described later with reference to FIG.

次に可変長重複排除モジュール33の制御部336は、子チャンクckの開始オフセットck.offsetに子チャンク長ck.lenを加算した値(ck.offset + ck.len)が、文書データのサイズ未満であるかを判定する(ステップ404)。この判定は、子チャンクckの終端が文書データの末尾(終了位置)に到達していないことを確認するために行われる。 Then the control unit 336 of the variable-length deduplication module 33, start offset c k .offset child chunk length c k .len value obtained by adding the child chunk c k (c k .offset + c k .len) is, It is determined whether it is less than the size of the document data (step 404). This determination is performed to confirm that the end of the child chunk kk has not reached the end (end position) of the document data.

もし、“ck.offset + ck.len”が文書データのサイズ未満であるならば(ステップ404のNo)、制御部336は、“ck.offset + ck.len”から子チャンクcjのオフセットcj.offsetを減じた値(ck.offset + ck.len - cj.offset)が予め定められた連結ウィンドウサイズW以上であるかを判定する(ステップ405)。本実施形態では、連結ウィンドウサイズWは10バイト(W=10)であるものとする。 If “c k .offset + c k .len” is less than the size of the document data (No in step 404), the control unit 336 determines from “c k .offset + c k .len” as a child chunk c. the value obtained by subtracting the offset c j .offset of j (c k .offset + c k .len - c j .offset) determines whether it is predetermined connection window size W or more (step 405). In the present embodiment, it is assumed that the connection window size W is 10 bytes (W = 10).

“ck.offset + ck.len - cj.offset”は、子チャンク番号がjからkまでの子チャンクcj〜ckを連結した場合に、その連結された子チャンクの列の長さを表す。“cj.offset”、つまり連結された子チャンクの列の先頭の子チャンクcjのオフセットは、当該連結された子チャンクの列の開始オフセットを示す。この連結された子チャンクの列の開始オフセットは、後述するように決定される親チャンクpの開始オフセットとなる。そこで、この開始オフセットを、子チャンクの開始オフセットと区別するために、親チャンク開始オフセットと称する。 “C k .offset + c k .len−c j .offset” is the length of the row of the connected child chunks when child chunks c j to c k having child chunk numbers j to k are connected. Represents “C j .offset”, that is, the offset of the first child chunk c j of the connected child chunk sequence indicates the start offset of the connected child chunk sequence. The start offset of this connected row of child chunks is the start offset of the parent chunk p determined as described later. Therefore, in order to distinguish this start offset from the start offset of the child chunk, it is referred to as a parent chunk start offset.

ステップ401,402が実行された後にステップ405が最初に実行される場合、子チャンクckは子チャンク番号kが0の先頭の子チャンクであり、図6の例ではデータ断片“The f”が先頭の子チャンクである。このとき子チャンクckは子チャンクcjに一致するため、“ck.offset”は“cj.offset”に一致する。この場合、“ck.offset + ck.len - cj.offset”は子チャンクckの長さ“ck.len”に一致する。 When step 405 is executed first after steps 401 and 402 are executed, the child chunk ck is the first child chunk whose child chunk number k is 0, and in the example of FIG. It is the first child chunk. At this time, since the child chunk c k matches the child chunk c j , “c k .offset” matches “c j .offset”. In this case, “c k .offset + c k .len−c j .offset” matches the length “c k .len” of the child chunk c k .

もし、“ck.offset + ck.len - cj.offset”が、連結ウィンドウサイズW以上でないならば(ステップ405のNo)、制御部336は、レジスタ部342内の子チャンク開始オフセットレジスタにより次の子チャンクck+1の開始オフセットck+1.offsetが示されるように、現在当該子チャンク開始オフセットレジスタに保持されている子チャンクckのオフセットck.offsetに現在子チャンク長レジスタに設定されている当該子チャンクckの長さを加算した値を、次の子チャンクck+1の開始オフセットck+1.offsetとして当該子チャンク開始オフセットレジスタに設定する(ステップ406)。このステップ406において制御部336は、kレジスタに保持されている子チャンク番号kを1インクリメントする。これにより、1インクリメント後の子チャンク番号kは、ステップ406が実行される前の子チャンクckに後続する子チャンクck+1を新たな子チャンクckとして指定することになる。このとき、子チャンク開始オフセットレジスタは、新たな子チャンクckの開始オフセットを示す。 If “c k .offset + c k .len−c j .offset” is not equal to or larger than the concatenated window size W (No in step 405), the control unit 336 causes the child chunk start offset register in the register unit 342 to be stored. Indicates the start offset c k + 1 .offset of the next child chunk c k + 1 , so that the current child chunk is offset to the offset c k .offset of the child chunk c k currently held in the child chunk start offset register. The value obtained by adding the lengths of the child chunks ck set in the length register is set in the child chunk start offset register as the start offset c k + 1 .offset of the next child chunk ck + 1 (step 406). In step 406, the control unit 336 increments the child chunk number k held in the k register by 1. As a result, the child chunk number k after one increment designates the child chunk ck + 1 that follows the child chunk ck before step 406 is executed as a new child chunk ck . At this time, the child chunk start offset register indicates the start offset of the new child chunk ck .

制御部336によってステップ406が実行されると、子チャンク決定部331は再びステップ403を実行することにより新たな子チャンクckの長さを求めて、その長さを子チャンク長ck.lenとして設定する。図6の例において、ステップ406が実行される前の子チャンクckが先頭の子チャンク“The f”である場合、“The f”に後続するデータ断片“file”が新たな子チャンクckとして決定される。そして、この新たな子チャンクckの子チャンク長ck.lenに基づき、上述の処理が再び行われる。 Step 406 is executed by the control unit 336, the child chunk determining section 331 in search of the length of the new child chunk c k by executing the step 403 again, the length of the child chunk length c k .len Set as. In the example of FIG. 6, when the child chunk c k before the execution of step 406 is the first child chunk “The f”, the data fragment “file” following “The f” is a new child chunk c k. As determined. Then, the above-described processing is performed again based on the child chunk length c k .len of the new child chunk ck .

すると、図6の例では、“file”に後続するデータ断片“ na”が更に新たな子チャンクckとして決定される。このとき“ck.offset + ck.len - cj.offset”、つまり子チャンク番号がjからkまでの子チャンクcj(“The f”)〜ck(“ na”)を連結した場合に、その連結された子チャンクの列の長さをL1とする。この長さL1は、図6に示されるように連結ウィンドウサイズW以上となる。 Then, in the example of FIG. 6, the data fragment “na” subsequent to “file” is determined as a new child chunk ck . At this time, “c k .offset + c k .len−c j .offset”, that is, child chunks c j (“The f”) to c k (“na”) whose child chunk numbers are j to k are connected. In this case, let L1 be the length of the row of the connected child chunks. This length L1 is not less than the connection window size W as shown in FIG.

このように、“ck.offset + ck.len - cj.offset”が連結ウィンドウサイズW以上となると(ステップ405のYes)、親チャンク決定部332は、子チャンク番号がjからkまでの子チャンクcj〜ckを1つに連結し、それを親チャンクpとして定める(ステップ407)。図6の例では、文書111(文書名が「文書#1」の文書)の先頭から3つの子チャンクが連結されて、親チャンクp1(p=p1)として決定される。この親チャンクp1を、後述するように親チャンク開始オフセットが再設定されることによって定められる後続の親チャンクp2,p3と区別するために、当初親チャンクと呼ぶこともある。なお、ステップ404の判定条件として、上述の条件の他に、(1)“ck.offset + ck.len - cj.offset”が連結ウィンドウサイズWを超えること、(2)“ck.offset + ck.len - cj.offset”が連結ウィンドウサイズWに一致すること、(3)“ck.offset + ck.len - cj.offset”が連結ウィンドウサイズWに最も近くなること、(4)“ck.offset + ck.len - cj.offset”が連結ウィンドウサイズWを超えない最大値となることのいずれかを適用しても構わない。 As described above, when “c k .offset + c k .len−c j .offset” becomes equal to or larger than the concatenated window size W (Yes in step 405), the parent chunk determination unit 332 determines that the child chunk numbers are j to k. Child chunks c j to c k are connected to one and defined as a parent chunk p (step 407). In the example of FIG. 6, three child chunks are concatenated from the top of the document 111 (document whose document name is “document # 1”), and determined as a parent chunk p1 (p = p1). In order to distinguish this parent chunk p1 from the subsequent parent chunks p2 and p3 determined by resetting the parent chunk start offset as will be described later, it may be called an initial parent chunk. As a determination condition in step 404, in addition to the above-described conditions, (1) “c k .offset + c k .len−c j .offset” exceeds the connection window size W, (2) “c k .offset + c k .len -c j .offset "matches the linked window size W, (3)" c k .offset + c k .len -c j .offset "is closest to the linked window size W (4) “c k .offset + c k .len−c j .offset” may be any of the maximum values that do not exceed the concatenated window size W.

上記ステップ407において親チャンク決定部332は、子チャンクcj〜ckを連結したデータcj...k.dataを親チャンクpのデータ(データ断片)pdataとして求める。また上記ステップ407において親チャンク決定部332は、当該親チャンクpのデータpdataの識別子として用いられる、当該親チャンクpのデータpdataのハッシュ値phashを、識別子生成部333により生成させる。このハッシュ値を求めるのに用いられるハッシュ関数をhash( )のように表すものとすると、ハッシュ値phashは、hash(pdata)の計算処理、つまりhash(cj...k.data)の計算処理により求められる。なお、子チャンク番号jがkに一致するならば、つまり単一の子チャンクだけで連結ウィンドウサイズW以上となるならば、当該単一の子チャンク自体が親チャンクpと決定される。 In step 407, the parent chunk determination unit 332 obtains data c j... K.data obtained by concatenating the child chunks c j to c k as data (data fragment) p data of the parent chunk p. In step 407, the parent chunk determination unit 332 causes the identifier generation unit 333 to generate the hash value p hash of the data p data of the parent chunk p, which is used as the identifier of the data p data of the parent chunk p. If the hash function used to obtain the hash value is expressed as hash (), the hash value p hash is a calculation process of hash (p data ), that is, hash (c j ... k .data) It is calculated | required by the calculation process of. If the child chunk number j matches k, that is, if only a single child chunk is equal to or larger than the concatenated window size W, the single child chunk itself is determined as the parent chunk p.

次に、可変長重複排除モジュール33内の重複検出部334は、ステップ407で求められた親チャンクp(p=p1)のデータ断片が既にチャンク一覧テーブル312に登録されているかを判定する(ステップ408)。このステップ408は、親チャンクpと同一内容の親チャンクが、既に文書格納部31に格納されている重複を検出するために実行される。ステップ408の判定は、親チャンクpのデータpdataの識別子(ハッシュ値)phashに一致する識別子(ハッシュ値)が既にチャンク一覧テーブル312に登録されているかを調べることにより実現可能である。しかし、親チャンクpのデータ(データ断片)pdataのビット列と、親チャンクpのデータpdataの識別子に一致する識別子と対をなしてチャンク一覧テーブル312に登録されているチャンクのデータのビット列とは、識別子(ハッシュ値)の計算に用いるハッシュ関数によっては、必ずしも一致するとは限らない。そこで、上記ステップ408において重複検出部334は、親チャンクpのデータpdataの識別子(ハッシュ値)phashと当該データpdataの対が、チャンク一覧テーブル312に登録されているかを判定する。更に詳細に述べるならば、重複検出部334は、親チャンクpの識別子phashに一致する識別子がチャンク一覧テーブル312に登録されているけでなく、当該親チャンクpのデータpdataのビット列に一致するチャンクのデータのビット列が、当該一致する識別子と対応付けてチャンク一覧テーブル312に登録されているかを判定する。このようにすると、より高精度の重複検出が行えて、いわゆるハッシュ衝突を防止することができる。 Next, the duplication detection unit 334 in the variable length deduplication module 33 determines whether the data fragment of the parent chunk p (p = p1) obtained in step 407 is already registered in the chunk list table 312 (step). 408). This step 408 is executed in order to detect a duplicate in which the parent chunk having the same content as the parent chunk p is already stored in the document storage unit 31. The determination in step 408 can be realized by checking whether an identifier (hash value) matching the identifier (hash value) p hash of the data p data of the parent chunk p is already registered in the chunk list table 312. However, the bit string of the data (data fragment) p data of the parent chunk p and the bit string of the chunk data registered in the chunk list table 312 paired with the identifier that matches the identifier of the data p data of the parent chunk p Do not always match depending on the hash function used to calculate the identifier (hash value). Therefore, duplicate detection unit 334 in step 408 determines whether an identifier (hash values) of the data p data in the parent chunk p p hash a pair of the data p data is registered in the chunk list table 312. More specifically, the duplication detection unit 334 matches not only the identifier matching the identifier p hash of the parent chunk p but also the bit string of the data p data of the parent chunk p, as well as being registered in the chunk list table 312. It is determined whether the bit string of the data of the chunk to be registered is registered in the chunk list table 312 in association with the matching identifier. In this way, more accurate duplication detection can be performed and so-called hash collision can be prevented.

もし、ステップ407で求められた親チャンクpのデータ(データ断片)pdataがチャンク一覧テーブル312に登録されていないならば(ステップ408のNo)、制御部336は子チャンク番号jを1インクリメントする(ステップ409)。この1インクリメント後の子チャンク番号jは、ステップ407で求められた親チャンクpを構成する子チャンクの列における先頭の子チャンクに後続する子チャンクであって、次に決定されるべき親チャンクpの先頭の子チャンク(新たな子チャンク)cjを指す。 If the data (data fragment) p data of the parent chunk p obtained in step 407 is not registered in the chunk list table 312 (No in step 408), the control unit 336 increments the child chunk number j by 1. (Step 409). The child chunk number j after this increment is a child chunk subsequent to the first child chunk in the row of child chunks constituting the parent chunk p obtained in step 407, and is to be determined next. Indicates the first child chunk (new child chunk) c j .

この新たな子チャンクcjの開始オフセットcj.offsetfは、ステップ407で求められた親チャンクpを構成する子チャンクの列における先頭の子チャンクの長さだけ文書データの末尾側にずらされた、新たな親チャンク開始オフセットを示す。つまりステップ409により、親チャンク開始オフセットが再設定される。図6の例では、新たな(再設定された)親チャンク開始オフセットは、文書111の先頭から2番目の子チャンク(データ断片が“ile”の子チャンク)の開始オフセットに一致する。ステップ409は、後述するように、ステップ407で求められた親チャンクpから、先頭の子チャンクののデータ断片を取り外すことと等価である。 The start offset c j .offsetf of this new child chunk c j is shifted toward the end of the document data by the length of the first child chunk in the row of child chunks constituting the parent chunk p obtained in step 407. , Indicates the new parent chunk start offset. That is, in step 409, the parent chunk start offset is reset. In the example of FIG. 6, the new (reset) parent chunk start offset matches the start offset of the second child chunk from the top of the document 111 (child chunk whose data fragment is “ile”). Step 409 is equivalent to removing the data fragment of the first child chunk from the parent chunk p determined in step 407, as will be described later.

次に制御部336は、“cj.offset + cj.len - ci.offset”が連結ウィンドウサイズW以上であるかを判定する(ステップ410)。このときcj.offsetは、上述のように再設定された親チャンク開始オフセットを示す。一方、“ci.offset”は、当初親チャンクpの開始オフセットを示す。したがって、“cj.offset + cj.len - ci.offset”は、子チャンク番号がiからjまでの子チャンクci〜cjを連結した場合に、その連結された子チャンクの列の長さを表す。つまり、“cj.offset + cj.len - ci.offset”は、ステップ409で再設定された親チャンク開始オフセットの当初親チャンクpの開始オフセットからの「ずれ」を表す。 Next, the control unit 336 determines whether “c j .offset + c j .len−c i .offset” is equal to or larger than the connection window size W (step 410). At this time, c j .offset indicates the parent chunk start offset reset as described above. On the other hand, “c i .offset” indicates the start offset of the initial parent chunk p. Therefore, “c j .offset + c j .len−c i .offset” is a sequence of concatenated child chunks when child chunks c i to c j having child chunk numbers i to j are concatenated. Represents the length of. That is, “c j .offset + c j .len−c i .offset” represents a “deviation” of the parent chunk start offset reset in step 409 from the start offset of the initial parent chunk p.

もし、“cj.offset + cj.len - ci.offset”が連結ウィンドウサイズW以上でないならば(ステップ410のNo)、制御部336はステップ406に進み、レジスタ部342内の子チャンク開始オフセットレジスタが次の子チャンクck+1の開始オフセットck+1.offsetを示すように、当該レジスタの内容を“ck.offset + ck.len”に更新すると共に、子チャンク番号kを1インクリメントする。このインクリメントにより、次の子チャンクck+1が新たな子チャンクckとして扱われる。この例のように、ステップ410でNoが判定されたためにステップ406が実行された場合、新たな子チャンクckは、先に決定された親チャンクpを構成するチャンクの列に後続する子チャンクである。図6の例では、“ na”に後続するデータ断片“me spe”が新たな子チャンクckのデータ断片して決定される。 If “c j .offset + c j .len−c i .offset” is not equal to or larger than the concatenated window size W (No in step 410), the control unit 336 proceeds to step 406 and the child chunk in the register unit 342 is obtained. The content of the register is updated to “c k .offset + c k .len” so that the start offset register indicates the start offset c k + 1 .offset of the next child chunk c k + 1 , and the child chunk number Increment k by 1. By this increment, the next child chunk c k + 1 is treated as a new child chunk c k . As in this example, when Step 406 is executed because No is determined in Step 410, the new child chunk ck is a child chunk that follows the sequence of chunks that make up the previously determined parent chunk p. It is. In the example of FIG. 6, the data fragment “me spe” following “na” is determined as the data fragment of the new child chunk ck .

制御部336によってステップ406が実行されると、子チャンク決定部331は再びステップ403を実行することにより新たな子チャンクckの長さを求めて、その長さを子チャンク長ck.lenとして設定する。このように本実施形態では、ステップ409で再設定された親チャンク開始オフセットから始まる子チャンクcj〜ckの列の長さが連結ウィンドウサイズW以上となるところまで、子チャンクが定められる。ここでは、ステップ406の処理から明らかなように、再設定された親チャンク開始オフセット以降に出現する、以前の処理で既に定められた子チャンクcj〜ck-1について再び定め直す必要はない。 Step 406 is executed by the control unit 336, the child chunk determining section 331 in search of the length of the new child chunk c k by executing the step 403 again, the length of the child chunk length c k .len Set as. Thus, in the present embodiment, child chunks are determined until the column length of the child chunks c j to c k starting from the parent chunk start offset reset in step 409 is equal to or greater than the concatenated window size W. Here, as is clear from the processing in step 406, there is no need to re - determine the child chunks c j to c k−1 that appear after the reset parent chunk start offset and are already determined in the previous processing. .

図6の例では、このときの子チャンクcj〜ckのデータ断片は“file”〜“me spe”である。子チャンクcj(“file”)〜ck(“me spe”)を連結した場合に、その連結された子チャンクの列の長さ“ck.offset + ck.len - cj.offset”をL2とする。この長さL2は、図6に示されるように連結ウィンドウサイズW以上となる。 In the example of FIG. 6, the data fragments of the child chunks c j to c k at this time are “file” to “me spe”. When child chunks c j (“file”) to c k (“me spe”) are concatenated, the length “c k .offset + c k .len−c j .offset” of the concatenated child chunks "Is L2. This length L2 is equal to or larger than the connection window size W as shown in FIG.

この例のように、“ck.offset + ck.len - cj.offset”が連結ウィンドウサイズW以上となったならば(ステップ405のYes)、親チャンク決定部332は上述のように、子チャンク番号がjからkまでの子チャンクcj〜ckを1つに連結し、それを親チャンクpとして定める(ステップ407)。図6の例では、文書111の先頭から2番目乃至4番目の子チャンクが連結されて、親チャンクp2(p=p2)として決定される。親チャンクp2は、先に決定された親チャンクp1から先頭の子チャンク(つまり文書111の先頭の子チャンク)を上記ステップ409によって取り外し、その先頭の子チャンクが取り外された親チャンクp1に、新たに文書111の先頭から4番目の子チャンクが上記ステップ406,403,407によって組み込まれることによって構成される新たな親チャンクと等価である。 As in this example, if “c k .offset + c k .len−c j .offset” becomes equal to or larger than the concatenated window size W (Yes in step 405), the parent chunk determination unit 332 determines as described above. , Child chunks c j to c k whose child chunk numbers are j to k are concatenated into one and defined as parent chunk p (step 407). In the example of FIG. 6, the second to fourth child chunks from the top of the document 111 are concatenated and determined as the parent chunk p2 (p = p2). The parent chunk p2 removes the first child chunk (that is, the first child chunk of the document 111) from the previously determined parent chunk p1 by the above-described step 409, and adds the new child chunk p1 to the parent chunk p1 from which the first child chunk has been removed. Is equivalent to a new parent chunk constructed by incorporating the fourth child chunk from the top of the document 111 in steps 406, 403, and 407.

次に重複検出部334は、ステップ407で求められた親チャンクp(p=p2)のデータ(データ断片)pdataが既にチャンク一覧テーブル312に登録されているかを判定する(ステップ408)。もし、親チャンクpのデータpdataがチャンク一覧テーブル312に登録されていないならば(ステップ408のNo)、制御部336は上述したようにステップ409に進み、子チャンク番号jを1インクリメントする。これにより、親チャンク開始オフセットが再設定される。図6の例では、再設定された親チャンク開始オフセットは、文書111の先頭から3番目の子チャンク(データ断片が“ na”の子チャンク)の開始オフセットに一致する。 Next, the duplication detection unit 334 determines whether the data (data fragment) p data of the parent chunk p (p = p2) obtained in step 407 is already registered in the chunk list table 312 (step 408). If the data p data of the parent chunk p is not registered in the chunk list table 312 (No in Step 408), the control unit 336 proceeds to Step 409 as described above and increments the child chunk number j by 1. As a result, the parent chunk start offset is reset. In the example of FIG. 6, the reset parent chunk start offset matches the start offset of the third child chunk from the top of the document 111 (child chunk whose data fragment is “na”).

図6の例では、このときの“cj.offset + cj.len - ci.offset”、つまり親チャンク開始オフセットの「ずれ」は、連結ウィンドウサイズW以上でない(ステップ410のNo)。この場合、ステップ406及び403を含む処理が繰り返される。これにより図6の例では、文書111の先頭から3番目乃至5番目の子チャンクが連結されて、長さがL3(L3≧W)の親チャンクp3(p=p3)として決定される(ステップ407)。 In the example of FIG. 6, “c j .offset + c j .len−c i .offset” at this time, that is, the “shift” of the parent chunk start offset is not equal to or larger than the linked window size W (No in step 410). In this case, the process including steps 406 and 403 is repeated. Accordingly, in the example of FIG. 6, the third to fifth child chunks from the top of the document 111 are connected and determined as a parent chunk p3 (p = p3) having a length L3 (L3 ≧ W) (step 407).

もし、決定された親チャンクp(p=p3)のデータpdataがチャンク一覧テーブル312に登録されていないならば(ステップ408のNo)、制御部336は上述したようにステップ409に進み、子チャンク番号jを1インクリメントする。これにより、親チャンク開始オフセットが再設定される。図6の例では、再設定された親チャンク開始オフセットは、文書111の先頭から4番目の子チャンク(データ断片が“me spe”の子チャンク)の開始オフセットに一致する。 If the data p data of the determined parent chunk p (p = p3) is not registered in the chunk list table 312 (No in step 408), the control unit 336 proceeds to step 409 as described above, and the child data Chunk number j is incremented by one. As a result, the parent chunk start offset is reset. In the example of FIG. 6, the reset parent chunk start offset matches the start offset of the fourth child chunk from the top of the document 111 (child chunk whose data fragment is “me spe”).

図6の例では、このときの“cj.offset + cj.len - ci.offset”、つまり親チャンク開始オフセットの「ずれ」は、連結ウィンドウサイズW以上である(ステップ410のYes)。この場合、制御部336は、子チャンク番号kを子チャンク番号jから1を減じた値、つまりステップ409で1インクリメントされる前の子チャンク番号jに再設定する(ステップ411)。これにより、再設定された子チャンク番号kは、当初親チャンクにおける終端側の子チャンクckを示す。ステップ410が実行されると、ステップ510に進む。 In the example of FIG. 6, “c j .offset + c j .len−c i .offset” at this time, that is, the “shift” of the parent chunk start offset is equal to or larger than the linked window size W (Yes in step 410). . In this case, the control unit 336 resets the child chunk number k to a value obtained by subtracting 1 from the child chunk number j, that is, the child chunk number j before being incremented by 1 in Step 409 (Step 411). Thereby, the reset child chunk number k indicates the terminal-side child chunk ck in the initial parent chunk. When step 410 is executed, the process proceeds to step 510.

一方、ステップ407で決定された親チャンクpが既にチャンク一覧テーブル312に登録されている登録済み親チャンクであるならば(ステップ408のYes)、親チャンク登録部335は文書構成テーブル311及びチャンク一覧テーブル312のうちの文書構成テーブル311のみに当該親チャンクpを登録する(ステップ412)。更に詳細に述べるならば、親チャンク登録部335は、親チャンクpを含む文書の文書名に対応付けて当該親チャンクpの識別子(ハッシュ値)phashを文書構成テーブル311に登録する。なお、文書構成テーブル311及びチャンク一覧テーブル312が空の状態にある場合、つまり未だ1つの親チャンクも文書構成テーブル311及びチャンク一覧テーブル312に登録されていない場合、最初にステップ407で決定された親チャンクpを、文書構成テーブル311及びチャンク一覧テーブル312に登録しても構わない。 On the other hand, if the parent chunk p determined in step 407 is a registered parent chunk that has already been registered in the chunk list table 312 (Yes in step 408), the parent chunk registration unit 335 causes the document configuration table 311 and the chunk list to be registered. The parent chunk p is registered only in the document configuration table 311 in the table 312 (step 412). More specifically, the parent chunk registration unit 335 registers the identifier (hash value) p hash of the parent chunk p in the document configuration table 311 in association with the document name of the document including the parent chunk p. If the document configuration table 311 and the chunk list table 312 are empty, that is, if one parent chunk has not been registered in the document configuration table 311 and the chunk list table 312, the determination is first made in step 407. The parent chunk p may be registered in the document configuration table 311 and the chunk list table 312.

ここで、既に親チャンクpを含む文書の文書名が文書構成テーブル311に登録されている場合、親チャンク登録部335は、当該文書名に対応付けて文書構成テーブル311に既に登録されている識別子の配列の末尾に当該親チャンクpの識別子phashを追加する。これにより、親チャンクpを含む文書の文書名に対応付けて文書構成テーブル311に登録される識別子の並び順は、当該文書から対応する親チャンクが切り出される順番、つまり対応する親チャンクの当該文書における並び順に一致する。 Here, when the document name of the document including the parent chunk p is already registered in the document configuration table 311, the parent chunk registration unit 335 associates the identifier with the identifier already registered in the document configuration table 311. The identifier p hash of the parent chunk p is added to the end of the array. Thereby, the arrangement order of the identifiers registered in the document configuration table 311 in association with the document name of the document including the parent chunk p is the order in which the corresponding parent chunk is extracted from the document, that is, the document of the corresponding parent chunk. Matches the order of

可変長重複排除モジュール33の制御部336は、文書構成テーブル311に親チャンクpが登録されと(ステップ412)、子チャンク番号iと子チャンク番号jとが等しいかを判定する(ステップ413)。つまり制御部336は、文書構成テーブル311に登録された親チャンクpが、親チャンク開始オフセットを再設定(ステップ409)することなく決定されたかを判定する。もし、子チャンク番号iと子チャンク番号jとが等しくないならば(ステップ413のNo)、ステップ413からステップ501に進む。   When the parent chunk p is registered in the document configuration table 311 (step 412), the control unit 336 of the variable-length deduplication module 33 determines whether the child chunk number i is equal to the child chunk number j (step 413). That is, the control unit 336 determines whether or not the parent chunk p registered in the document configuration table 311 has been determined without resetting the parent chunk start offset (step 409). If the child chunk number i is not equal to the child chunk number j (No in step 413), the process proceeds from step 413 to step 501.

このように、ステップ406,403を含む処理を繰り返した結果、親チャンクpが決定されて(ステップ407)、当該決定された親チャンクpのデータpdataが既にチャンク一覧テーブル312に登録されていることが検出され(ステップ408のYes)、且つi=jでない場合(ステップ413のNo)、ステップ501が実行される。また、親チャンク開始オフセットの「ずれ」が連結ウィンドウサイズW以上になったことが検出された場合には(ステップ410のYes)、ステップ411を経てステップ501が実行される。 As described above, as a result of repeating the processes including steps 406 and 403, the parent chunk p is determined (step 407), and the data p data of the determined parent chunk p is already registered in the chunk list table 312. Is detected (Yes in Step 408), and if i = j is not satisfied (No in Step 413), Step 501 is executed. If it is detected that the “shift” of the parent chunk start offset is equal to or larger than the connection window size W (Yes in Step 410), Step 501 is executed through Step 411.

ステップ501において親チャンク決定部332は、子チャンク番号がiからj−1までの子チャンクci〜cj-1を1つに連結し、それを親チャンクpとして定める。またステップ501において、親チャンク決定部332は、子チャンクci〜cj-1を連結したデータci...j-1.dataを親チャンクpのデータpdataとして求めると共に、当該親チャンクpのデータpdataのハッシュ値(識別子)phash(=hash(ci...j-1.data))を識別子生成部333により生成させる。 In step 501, the parent chunk determination unit 332 concatenates the child chunks c i to c j−1 having child chunk numbers i to j−1 and determines it as the parent chunk p. In step 501, the parent chunk determination unit 332 obtains data c i... J−1.data obtained by concatenating the child chunks c i to c j−1 as data p data of the parent chunk p, and the parent chunk p The identifier generation unit 333 generates a hash value (identifier) p hash (= hash (c i... j−1 .data)) of the data p data of p.

次に親チャンク登録部335は、チャンク一覧テーブル312に親チャンクpを登録する(ステップ502)。更に詳細に述べるならば、親チャンク登録部335は、親チャンクpの識別子(ハッシュ値)phash及び当該親チャンクpのデータ(データ断片)pdataをチャンク一覧テーブル312に登録する。また親チャンク登録部335は、文書構成テーブル311に親チャンクpを登録する(ステップ503)。つまり親チャンク登録部335は、親チャンクpを含む文書の文書名に対応付けて当該親チャンクpの識別子phashを文書構成テーブル311に登録する。 Next, the parent chunk registration unit 335 registers the parent chunk p in the chunk list table 312 (step 502). More specifically, the parent chunk registration unit 335 registers the identifier (hash value) p hash of the parent chunk p and the data (data fragment) p data of the parent chunk p in the chunk list table 312. In addition, the parent chunk registration unit 335 registers the parent chunk p in the document configuration table 311 (step 503). That is, the parent chunk registration unit 335 registers the identifier p hash of the parent chunk p in the document configuration table 311 in association with the document name of the document including the parent chunk p.

さて、ステップ410からステップ411を経てステップ501に進んだ場合、ステップ501で決定される親チャンクp、つまり子チャンクci〜cj-1の列から構成される親チャンクpは、当初親チャンクp(図6の例では、親チャンクp1)に一致する。 Now, when the process proceeds from step 410 to step 501 through step 411, the parent chunk p determined in step 501, that is, the parent chunk p composed of the columns of child chunks c i to c j−1 is the initial parent chunk p. It corresponds to p (in the example of FIG. 6, parent chunk p1).

一方、ステップ413からステップ501に進んだ場合、ステップ501で決定される親チャンクpを構成する子チャンクci〜cj-1の列は、最も最近にチャンク一覧テーブル312に登録された親チャンクとステップ408での判定に用いられた親チャンクとの間に存在する子チャンクの列である。なお、iがj−1に等しい場合、子チャンクci〜cj-1は単一の子チャンクを意味する。 On the other hand, when the process proceeds from step 413 to step 501, the columns of the child chunks c i to c j−1 constituting the parent chunk p determined in step 501 are the parent chunks registered in the chunk list table 312 most recently. And a column of child chunks existing between the parent chunk used in the determination in step 408. If i is equal to j-1, the child chunks c i to c j-1 mean a single child chunk.

親チャンク登録部335によってステップ503が実行されると、1回の登録親チャンク決定処理が終了する。すると制御部336は先のステップ404と同様に、“ck.offset + ck.len”が文書データのサイズ未満であるかを判定する(ステップ504)。 When step 503 is executed by the parent chunk registration unit 335, one registration parent chunk determination process ends. Then, the control unit 336 determines whether “c k .offset + c k .len” is less than the size of the document data, similarly to the previous step 404 (step 504).

もし、“ck.offset + ck.len”が文書データのサイズ未満であるならば(ステップ504のYes)、制御部336は文書データの末尾まで処理をし終えていないと判断する。この場合、制御部336は、次の登録親チャンク決定処理のために、レジスタ部342内の子チャンク開始オフセットレジスタが次の子チャンクck+1の開始オフセットck+1.offsetを示すように、当該レジスタの内容を“ck.offset + ck.len”に更新すると共に、子チャンク番号kを1インクリメントする(ステップ505)。制御部336はステップ505を実行すると、ステップ402に戻り、子チャンク番号j,iをいずれもkに設定する。これにより、親チャンク開始オフセットが、先の登録親チャンク決定処理における当初親チャンクの終了オフセットの位置(つまり終端位置)に再設定される。以後、ステップ403を含む上述と同様の手順の登録親チャンク決定処理が文書データの末尾まで繰り返される。 If “c k .offset + c k .len” is less than the size of the document data (Yes in step 504), the control unit 336 determines that the processing has not been completed up to the end of the document data. In this case, the control unit 336 causes the child chunk start offset register in the register unit 342 to indicate the start offset c k + 1 .offset of the next child chunk c k + 1 for the next registered parent chunk determination process. Then, the contents of the register are updated to “c k .offset + c k .len” and the child chunk number k is incremented by 1 (step 505). After executing Step 505, the control unit 336 returns to Step 402 and sets both the child chunk numbers j and i to k. As a result, the parent chunk start offset is reset to the position (that is, the end position) of the end offset of the initial parent chunk in the previous registered parent chunk determination process. Thereafter, the registration parent chunk determination process including the step 403 and the same procedure as described above is repeated until the end of the document data.

そして文書データの末尾まで処理が行われた結果、“ck.offset + ck.len”が文書データのサイズ未満でなくなったものとする(ステップ404のNo)。この場合、親チャンク決定部332は、ステップ407と同様に、子チャンク番号がjからkまでの子チャンクcj〜ckを1つに連結し、それを親チャンクpとして定める(ステップ414)。このステップ414において可変長重複排除モジュール33は、子チャンクcj〜ckを連結したデータcj...k.dataを親チャンクpのデータpdataとして求めると共に、当該親チャンクpのデータpdataのハッシュ値(識別子)phash(=hash(cj...k.data))を識別子生成部333により生成させる。 As a result of processing up to the end of the document data, it is assumed that “c k .offset + c k .len” is not less than the size of the document data (No in step 404). In this case, similar to step 407, the parent chunk determination unit 332 concatenates the child chunks c j to c k whose child chunk numbers are j to k and determines it as the parent chunk p (step 414). . In this step 414, the variable-length deduplication module 33 obtains the data c j... K.data obtained by concatenating the child chunks c j to c k as the data p data of the parent chunk p, and the data p of the parent chunk p. The identifier generation unit 333 generates a hash value (identifier) p hash (= hash (c j.... data)) of data.

すると重複検出部334は、ステップ414で求められた親チャンクpのデータ断片が既にチャンク一覧テーブル312に登録されているかを判定する(ステップ415)。 もし、ステップ414で求められた親チャンクpのデータ断片がチャンク一覧テーブル312に登録されていないならば(ステップ415のNo)、親チャンク登録部335は、チャンク一覧テーブル312に親チャンクpの識別子(ハッシュ値)phash及び当該親チャンクpのデータ断片pdataを登録する(ステップ416)。次に親チャンク登録部335は上記ステップ412に進み、親チャンクpを含む文書の文書名に対応付けて当該親チャンクpの識別子phashを文書構成テーブル311に登録する。これに対し、親チャンクpのデータ断片がチャンク一覧テーブル312に既に登録されているならば(ステップ415のYes)、親チャンク登録部335はステップ416をスキップして、ステップ412を実行する。 Then, the duplication detection unit 334 determines whether the data fragment of the parent chunk p obtained in step 414 is already registered in the chunk list table 312 (step 415). If the data fragment of the parent chunk p obtained in step 414 is not registered in the chunk list table 312 (No in step 415), the parent chunk registration unit 335 stores the identifier of the parent chunk p in the chunk list table 312. (Hash value) p hash and the data fragment p data of the parent chunk p are registered (step 416). Next, the parent chunk registration unit 335 proceeds to step 412 and registers the identifier p hash of the parent chunk p in the document configuration table 311 in association with the document name of the document including the parent chunk p. On the other hand, if the data fragment of the parent chunk p is already registered in the chunk list table 312 (Yes in Step 415), the parent chunk registration unit 335 skips Step 416 and executes Step 412.

親チャンク登録部335によってステップ412が実行されると、制御部336は、子チャンク番号iと子チャンク番号jとが等しいかを判定する(ステップ413)。もし、子チャンク番号iと子チャンク番号jとが等しいならば(ステップ413のYes)、制御部336上記ステップ504に進む。ステップ504において制御部336は、先のステップ404と同様に、“ck.offset + ck.len”が文書データのサイズ未満であるかを判定する。ステップ404の判定がNoであるこの例では、ステップ504の判定もNoとなる。この場合、可変長重複排除モジュール33は文書データの末尾まで処理をし終えたとして、文書格納処理を終了する。 When step 412 is executed by the parent chunk registration unit 335, the control unit 336 determines whether the child chunk number i is equal to the child chunk number j (step 413). If the child chunk number i is equal to the child chunk number j (Yes in Step 413), the control unit 336 proceeds to Step 504. In step 504, the control unit 336 determines whether “c k .offset + c k .len” is less than the size of the document data, as in step 404. In this example in which the determination in step 404 is No, the determination in step 504 is also No. In this case, the variable-length deduplication module 33 finishes the process to the end of the document data, and ends the document storage process.

<子チャンクの切り出し>
次に、子チャンク(つまり可変長のデータ断片)の切り出し点を決定する手法について説明する。前述したように、この手法として、前記特許文献1,2に記載されているような手法を適用することが可能である。しかし、この特許文献1,2に記載の手法の他に、以下に述べるような新規の手法を適用することも可能である。この新規の手法の特徴は、あるデータ断片の識別子(ハッシュ値)の下位mビットが、予め定めた値Aに一致したときに、当該データ断片の終端位置を子チャンクの切り出し点とすることにある。
<Extracting child chunks>
Next, a method for determining a cut-out point of a child chunk (that is, a variable-length data fragment) will be described. As described above, as this method, it is possible to apply the methods described in Patent Documents 1 and 2. However, in addition to the methods described in Patent Documents 1 and 2, a novel method as described below can be applied. The feature of this new method is that when the lower m bits of an identifier (hash value) of a certain data fragment matches a predetermined value A, the end position of the data fragment is used as a cut-out point of a child chunk. is there.

以下、この新規の手法について、図7を参照して説明する。図7は、あるデータ断片の識別子(ハッシュ値)の下位2ビット(m=2)が、予め定めた値2(A=2)に一致したときに、、当該データ断片の終端位置を子チャンクの切り出し点とする例を示す。データ断片の識別子(ハッシュ値)の計算に用いられるハッシュ関数をhβ( )のように表す。 Hereinafter, this new method will be described with reference to FIG. FIG. 7 shows that when the lower 2 bits (m = 2) of an identifier (hash value) of a certain data fragment matches a predetermined value 2 (A = 2), the end position of the data fragment is a child chunk. An example of the cut-out point is shown. A hash function used for calculating the identifier (hash value) of the data fragment is represented as h β ().

図7の例では、文書データ“The fil…”におけるデータ断片“Th”の識別子hβ(“Th”)が0x5Aである。この識別子0x5Aの下位2ビットは0x02である。この識別子0x5Aの下位2ビットは、当該識別子0x5Aとマスクデータ0x03との論理積演算0x5A&0x03によって求められる。識別子0x5Aの下位2ビット0x02は、規定値0x01に一致しない。このためデータ断片“Th”の終端位置は子チャンクの切り出し点ではない。 In the example of FIG. 7, the identifier h β (“Th”) of the data fragment “Th” in the document data “The fil...” Is 0x5A. The lower 2 bits of this identifier 0x5A are 0x02. The lower 2 bits of the identifier 0x5A are obtained by a logical product operation 0x5A & 0x03 of the identifier 0x5A and the mask data 0x03. The lower 2 bits 0x02 of the identifier 0x5A do not match the specified value 0x01. For this reason, the end position of the data fragment “Th” is not the cut-out point of the child chunk.

そこで子チャンク決定部331は、切り出し点決定に用いるデータ断片のサイズ(区間)を文書データの末尾側に1バイト拡張する。このサイズ拡張後のデータ断片“The”の識別子hβ(“The”)が0xF2であるものとする。この識別子0xF2の下位2ビットは0x02であり、規定値0x01に一致しない。そこで子チャンク決定部331は、データ断片のサイズを更に1バイト拡張する。 Therefore, the child chunk determination unit 331 extends the size (section) of the data fragment used for determining the cutout point by 1 byte toward the end of the document data. It is assumed that the identifier h β (“The”) of the data fragment “The” after this size expansion is 0xF2. The lower 2 bits of this identifier 0xF2 are 0x02 and do not match the specified value 0x01. Therefore, the child chunk determination unit 331 further extends the size of the data fragment by 1 byte.

サイズ拡張後のデータ断片“The ”の識別子hβ(“The ”)が0x7Cであるものとする。この識別子0x7Cの下位2ビットは0x00であり、規定値0x01に一致しない。そこで子チャンク決定部331は、データ断片のサイズを更に1バイト拡張する。 It is assumed that the identifier h β (“The”) of the data fragment “The” after size expansion is 0x7C. The lower 2 bits of this identifier 0x7C are 0x00 and do not match the specified value 0x01. Therefore, the child chunk determination unit 331 further extends the size of the data fragment by 1 byte.

サイズ拡張後のデータ断片“The f”の識別子hβ(“The f”)が0x99であるものとする。この識別子0x99の下位2ビットは0x01であり、規定値0x01に一致する。そこで子チャンク決定部331は、このデータ断片“The f”の終端位置を切り出し点(終了オフセット)として決定し、当該データ断片“The f”を子チャンクとして切り出す。 It is assumed that the identifier h β (“The f”) of the data fragment “The f” after size expansion is 0x99. The lower 2 bits of this identifier 0x99 are 0x01, which matches the specified value 0x01. Therefore, the child chunk determination unit 331 determines the end position of the data fragment “The f” as a cutout point (end offset), and cuts out the data fragment “The f” as a child chunk.

上述の文書格納処理の主要な手順を以下に整理して示す。   The main procedure of the document storage process described above is summarized below.

可変長重複排除モジュール33は、文書データの先頭から末尾に至るまで、以下の処理を繰り返し行う。   The variable length deduplication module 33 repeatedly performs the following processing from the beginning to the end of the document data.

a)文書の先頭を親チャンク開始オフセットとして設定する(ステップ401,402)。   a) The beginning of the document is set as a parent chunk start offset (steps 401 and 402).

b)親チャンク開始オフセットから、連結後の長さが連結ウィンドウサイズW以上となるところまで、子チャンクの列(または単一の子チャンク)を定める(ステップ403〜406)。   b) A column of child chunks (or a single child chunk) is determined from the parent chunk start offset to a place where the length after concatenation becomes equal to or larger than the concatenation window size W (steps 403 to 406).

c)処理bで子チャンクの列が定められたときには、これを1つに連結して、親チャンク(当初親チャンク)として定める(ステップ407)。処理bで単一の子チャンクが定められたときにも、これを親チャンク(当初親チャンク)として定める(ステップ407)。親チャンク(当初親チャンク)の長さは連結ウィンドウサイズW以上となる。   c) When the sequence of child chunks is determined in the process b, these are concatenated into one and defined as a parent chunk (initial parent chunk) (step 407). Even when a single child chunk is determined in the process b, it is determined as a parent chunk (initial parent chunk) (step 407). The length of the parent chunk (initial parent chunk) is equal to or greater than the linked window size W.

d)親チャンクの識別子(ハッシュ値)を求める(ステップ407)。   d) The identifier (hash value) of the parent chunk is obtained (step 407).

e)チャンク一覧テーブル312に既に親チャンクの識別子及びデータ断片が登録されているかを判定する(ステップ408)。   e) It is determined whether the identifier and data fragment of the parent chunk are already registered in the chunk list table 312 (step 408).

e.1)登録されていれば、親チャンクの識別子を文書名に対応付けて文書構成テーブル311に登録する(ステップ412)。   e. 1) If registered, the identifier of the parent chunk is associated with the document name and registered in the document configuration table 311 (step 412).

e.2)登録されていなければ、以下の処理を行う。   e. 2) If not registered, the following processing is performed.

e.2-1)親チャンクを構成する子チャンクの列の先頭側の少なくとも1つの子チャンク、例えば先頭の子チャンク(つまり、親チャンク開始オフセット側に最も近い子チャンク)のサイズだけ後側にずらした位置を親チャンク開始オフセットとして再設定する(ステップ409)。   e. 2-1) Shifted to the back by the size of at least one child chunk at the beginning of the row of child chunks that make up the parent chunk, for example, the size of the first child chunk (that is, the child chunk closest to the parent chunk start offset side) The position is reset as the parent chunk start offset (step 409).

e.2-2)親チャンク開始オフセットから、連結後の長さが連結ウィンドウサイズW以上となるところまで、子チャンクの列(または単一の子チャンク)を定める(ステップ403〜406)。このとき、以前の処理で既に定めた子チャンクについて再び定め直す必要はない(ステップ406)。   e. 2-2) A sequence of child chunks (or a single child chunk) is determined from the parent chunk start offset to a position where the length after concatenation becomes equal to or larger than the concatenation window size W (steps 403 to 406). At this time, it is not necessary to re-determine the child chunks already determined in the previous process (step 406).

e.2-3)処理e.2-2で子チャンクの列が定められたときには、これを1つに連結して、親チャンクとして定める(ステップ407)。処理e.2-2で単一の子チャンクが定められたときにも、これを親チャンクとして定める(ステップ407)。   e. 2-3) Process e. When the row of child chunks is determined in 2-2, these are concatenated into one and defined as a parent chunk (step 407). Process e. When a single child chunk is determined in 2-2, it is determined as a parent chunk (step 407).

e.2-4)親チャンクの識別子(ハッシュ値)を求める(ステップ407)。   e. 2-4) An identifier (hash value) of the parent chunk is obtained (step 407).

e.2-5)チャンク一覧テーブル312に既に親チャンクの識別子及びデータ断片が登録されているかを判定する(ステップ408)。   e. 2-5) It is determined whether the identifier and data fragment of the parent chunk are already registered in the chunk list table 312 (step 408).

e.2-6)以上の処理(e.2-1〜e.2-5)を、親チャンクの識別子及びデータ断片がチャンク一覧テーブル312に既に登録されているか(ステップ408のYes)、親チャンク開始オフセットの「ずれ」が処理cで定めた当初親チャンクのサイズを超えるところまで(ステップ410のYes)、繰り返す(図6の例では親チャンクp3まで)。   e. 2-6) Whether the parent chunk identifier and data fragment have already been registered in the chunk list table 312 (Yes in step 408), or the parent chunk start is performed in the above processing (e.2-1 to e.2-5) The process is repeated until the offset “deviation” exceeds the size of the initial parent chunk determined in the process c (Yes in step 410) (up to the parent chunk p3 in the example of FIG. 6).

e.2-7)これでもなおデータ断片が登録されていないときには、処理cで定めた当初親チャンク(図6の例では親チャンクp1)の識別子及びデータ断片をチャンク一覧テーブル312に登録すると共に、当該識別子を文書名に対応付けて文書構成テーブル311に登録する(ステップ502,503)。そして、次の親チャンク開始オフセットとなる子チャンクの開始オフセットを、処理cで定めた当初親チャンクの終了オフセット(つまり当初親チャンクの終端側の子チャンクの終了オフセット)の位置に再設定して(ステップ411,505)、処理bに戻る。   e. 2-7) If the data fragment is not yet registered, the identifier and data fragment of the initial parent chunk (parent chunk p1 in the example of FIG. 6) determined in process c are registered in the chunk list table 312 and The identifier is associated with the document name and registered in the document configuration table 311 (steps 502 and 503). Then, the start offset of the child chunk that becomes the next parent chunk start offset is reset to the position of the end offset of the initial parent chunk (that is, the end offset of the child chunk on the end side of the initial parent chunk) determined in the process c. (Steps 411 and 505), the process returns to b.

親チャンクの識別子及びデータ断片がチャンク一覧テーブル312に既に登録されているときには(ステップ408のYes)、その親チャンクの識別子を文書名に対応付けて文書構成テーブル311に登録する(ステップ412)。また、文書構成テーブル311に登録された親チャンクと、前回チャンク一覧テーブル312に登録された親チャンクとの間に、チャンク一覧テーブル312に未登録のデータ断片が存在するときには(ステップ413のNo)、当該データ断片を親チャンクとして、当該データ断片及び当該データ断片の識別子をチャンク一覧テーブル312に登録すると共に、当該データ断片の識別子を文書名に対応付けて文書構成テーブル311に登録する(ステップ501〜503)。このとき、文書を構成するチャンクの順序が正しくなるように、文書構成テーブル311におけるチャンク(データ断片)を書き換える必要がある。そして、次の親チャンク開始オフセットとなる子チャンクの開始オフセットを、今回登録された親チャンクの終了オフセット(つまり当初親チャンクの終端側の子チャンクの終了オフセット)の位置に再設定して(ステップ411,505)、処理bに戻る。なお、文書名に対応付けて親チャンクの識別子を文書構成テーブル311に登録する際に、当該親チャンクの対応する文書データ上での位置・長さを示す情報を当該親チャンクの識別子に付加するならば、上述のような書き換えは必ずしも必要ない。   When the identifier and the data fragment of the parent chunk are already registered in the chunk list table 312 (Yes in Step 408), the identifier of the parent chunk is registered in the document configuration table 311 in association with the document name (Step 412). When there is an unregistered data fragment in the chunk list table 312 between the parent chunk registered in the document configuration table 311 and the parent chunk registered in the previous chunk list table 312 (No in step 413). The data fragment and the identifier of the data fragment are registered in the chunk list table 312 as the parent chunk, and the identifier of the data fragment is registered in the document configuration table 311 in association with the document name (step 501). ~ 503). At this time, it is necessary to rewrite the chunks (data fragments) in the document configuration table 311 so that the order of the chunks constituting the document is correct. Then, the start offset of the child chunk that becomes the next parent chunk start offset is reset to the position of the end offset of the parent chunk registered this time (that is, the end offset of the child chunk at the end of the initial parent chunk) (step) 411, 505), the process returns to process b. When the identifier of the parent chunk is registered in the document configuration table 311 in association with the document name, information indicating the position / length of the parent chunk on the corresponding document data is added to the identifier of the parent chunk. Then, rewriting as described above is not always necessary.

以上の処理を、データの末尾に至るまで繰り返すことで、可変長での重複排除を行いながら、データの格納を行うことができる。   By repeating the above processing until the end of the data, it is possible to store data while performing deduplication with variable length.

<文書格納処理の具体例>
次に、文書格納装置10における文書格納処理の具体例について、図5及び図6のフローチャートに加えて、図8乃至図21を参照して説明する。
ここでは、文書名が「文書#1」の文書111及び文書名が「文書#2」の文書112の2つの文書を順次、重複を排除しながら文書格納部31に格納する例について述べる。以下の説明では、文書111,112を格納するための格納処理をそれぞれ格納処理SX,SYと呼ぶ。この例では、連結ウィンドウサイズWが10(10バイト)に設定される。
<Specific example of document storage processing>
Next, a specific example of document storage processing in the document storage device 10 will be described with reference to FIGS. 8 to 21 in addition to the flowcharts of FIGS.
Here, an example will be described in which two documents, a document 111 with a document name “document # 1” and a document 112 with a document name “document # 2”, are sequentially stored in the document storage unit 31 while eliminating duplication. In the following description, storage processes for storing the documents 111 and 112 are referred to as storage processes SX and SY, respectively. In this example, the linked window size W is set to 10 (10 bytes).

(1)格納処理SX,SYの開始前
文書111,112が文書格納部31に格納される前は、文書格納部31内の文書構成テーブル311及びチャンク一覧テーブル312は空の状態になっている。図8は文書111,112(第1及び第2の文書)と、当該文書111,112の格納前における文書構成テーブル311及びチャンク一覧テーブル312の状態とを示す。
(1) Before the start of the storage processes SX and SY Before the documents 111 and 112 are stored in the document storage unit 31, the document configuration table 311 and the chunk list table 312 in the document storage unit 31 are in an empty state. . FIG. 8 shows the documents 111 and 112 (first and second documents) and the state of the document configuration table 311 and chunk list table 312 before the documents 111 and 112 are stored.

(2)格納処理SX
文書111を格納するための格納処理(格納動作)SXについて、図9乃至図14を参照して説明する。図9乃至図13は文書111の格納動作を文書構成テーブル311の状態と共に示し、図14は文書111の格納後における、文書構成テーブル311及びチャンク一覧テーブル312の状態を、当該文書111と当該文書111から切り出された親チャンクの列と共に示す。
(2) Storage process SX
A storage process (storage operation) SX for storing the document 111 will be described with reference to FIGS. 9 to 13 show the storage operation of the document 111 together with the state of the document structure table 311. FIG. 14 shows the state of the document structure table 311 and the chunk list table 312 after the document 111 is stored. It is shown together with a row of parent chunks cut out from 111.

A)格納処理SXその1
まず、文書111を格納するための格納処理SXその1(以下、格納処理SX1と称する)について、図9を参照して説明する。なお、図9では、文書構成テーブル311は省略されている。
A) Storage process SX 1
First, a storage process SX 1 for storing the document 111 (hereinafter referred to as a storage process SX1) will be described with reference to FIG. In FIG. 9, the document configuration table 311 is omitted.

A1)
A1-1)可変長重複排除モジュール33は、文書111の先頭から、連結ウィンドウサイズW(この例ではW=10)以上となるところまで、子チャンクを順次定めていく(ステップ403〜406)。各子チャンクは、前述した可変長のチャンク切り出し手法により定められる。図9の例では、可変長重複排除モジュール33は、文書111の先頭より5,8,11文字目のところに切り出し点を定め、子チャンクc0(“The f”),c1(“ile”),c2(“ na”)を定めたものとする。
A1)
A1-1) The variable-length deduplication module 33 sequentially determines child chunks from the beginning of the document 111 to a place where the connection window size W is greater than or equal to W (W = 10 in this example) (steps 403 to 406). Each child chunk is determined by the variable-length chunk cutout method described above. In the example of FIG. 9, the variable-length deduplication module 33 sets cut points at the fifth, eighth, and eleventh characters from the beginning of the document 111, and sets child chunks c 0 (“The f”), c 1 (“ile "), C 2 (" na ").

A1-2)可変長重複排除モジュール33は、連結ウィンドウサイズW以上となるところまで子チャンクc0(“The f”),c1(“ile”),c2(“ na”)を順次定めたところで、それらの子チャンクを連結して親チャンク901を定め、当該親チャンク901の識別子(ハッシュ値)を生成する(ステップ407)。連結する子チャンクc0(“The f”),c1(“ile”),c2(“ na”)の識別子(ハッシュ値)を、c0.hash=HA,c1.hash=HB,c2.hash=HCとする。この例では、親チャンク901のデータのハッシュ値として、当該親チャンク901を構成する子チャンクc0,c1,c2の識別子(ハッシュ値)HA,HB,HCから生成されたハッシュ値HABCを用い、これを親チャンク901の識別子とする。 A1-2) The variable-length deduplication module 33 sequentially determines child chunks c 0 (“The f”), c 1 (“ile”), and c 2 (“na”) until the connection window size W or more is reached. Now, these child chunks are concatenated to define a parent chunk 901, and an identifier (hash value) of the parent chunk 901 is generated (step 407). The identifiers (hash values) of the child chunks c 0 (“The f”), c 1 (“ile”), and c 2 (“na”) to be concatenated are expressed as c 0 .hash = HA and c 1 .hash = H Let B , c 2 .hash = H C. In this example, the hash values generated from the identifiers (hash values) H A , H B , and H C of the child chunks c 0 , c 1 , and c 2 constituting the parent chunk 901 are used as the hash values of the data of the parent chunk 901. The value H ABC is used, and this is used as the identifier of the parent chunk 901.

A1-3)可変長重複排除モジュール33は、親チャンク901の識別子HABCに基づき、チャンク一覧テーブル312に当該識別子HABCに対応するデータ断片が登録されているかを判定する(ステップ408)。この例では、識別子HABCに対応するデータ断片は登録されていない。このため、親チャンク901に関するステップ408の判定結果は図9において矢印911で示されるよう未登録(No)となり、次の処理A2に進む。 A1-3) The variable-length deduplication module 33 determines whether the data fragment corresponding to the identifier H ABC is registered in the chunk list table 312 based on the identifier H ABC of the parent chunk 901 (step 408). In this example, the data fragment corresponding to the identifier H ABC is not registered. For this reason, the determination result of step 408 regarding the parent chunk 901 becomes unregistered (No) as indicated by an arrow 911 in FIG. 9, and the process proceeds to the next process A2.

A2)
A2-1)可変長重複排除モジュール33は、上述の処理A1で定めた親チャンク901を構成する子チャンクc0,c1,c2の列の先頭の子チャンクc0の長さだけ、文書111の末尾側にずらした位置(再設定された親チャンク開始位置)から(ステップ409)、連結ウィンドウサイズW(W=10)以上となるところまで、子チャンクを順次定めていく(ステップ403〜406)。このとき、処理A1で子チャンクc1,c2を定めた部分についての再度の処理は必要ない。図9の例では、可変長重複排除モジュール33は、文書111の先頭より17文字目のところに切り出し点を定め、新たに子チャンクc3を定めたものとする。
A2)
A2-1) length deduplication module 33, the length of the child chunk c 0 of the column head of the configuration child chunk c 0, c 1, c 2 parent chunks 901 determined in the above-described process A1, a document From the position shifted to the end of 111 (reset parent chunk start position) (step 409), the child chunks are sequentially determined from the position where the connection window size becomes W (W = 10) or more (steps 403 to 403). 406). At this time, it is not necessary to repeat the process for the portion where the child chunks c 1 and c 2 are determined in the process A1. In the example of FIG. 9, the variable-length deduplication module 33 defines a cut point at the 17-th character from the beginning of the document 111, and define those new children chunk c 3.

A2-2)可変長重複排除モジュール33は、連結ウィンドウサイズW以上となるところまで子チャンクc1,c2,c3を定めたところで、それらの子チャンクc1,c2,c3を連結して親チャンク902を定め、当該親チャンク902の識別子(ハッシュ値)を生成する(ステップ407)。この例では可変長重複排除モジュール33は、連結する子チャンクc1(“ile”),c2(“ na”),c3(“me spe”)の識別子(ハッシュ値)c1.hash=HB,c2.hash=HC,c3.hash=HDから生成したハッシュ値HBCDを、親チャンク902の識別子(ハッシュ値)とする。 A2-2) length deduplication module 33, where defining a coupling window size children chunk c 1 W until it becomes more, c 2, c 3, connected to their child chunks c 1, c 2, c 3 Thus, the parent chunk 902 is determined, and an identifier (hash value) of the parent chunk 902 is generated (step 407). In this example, the variable-length deduplication module 33 determines the identifier (hash value) c 1 .hash = of the child chunks c 1 (“ile”), c 2 (“na”), and c 3 (“me spe”) to be connected H B, c 2 .hash = H C, the hash value H BCD generated from c 3 .hash = H D, an identifier of the parent chunk 902 (hash value).

A2-3)可変長重複排除モジュール33は、親チャンク902の識別子HBCDに基づき、チャンク一覧テーブル312に当該識別子HBCDに対応するデータ断片が登録されているかを判定する(ステップ408)。この例では、識別子HBCDに対応するデータ断片は登録されていない。このため、親チャンク902に関するステップ408の判定結果は図9において矢印912で示されるように未登録(No)となり、次の処理A3に進む。 A2-3) Based on the identifier H BCD of the parent chunk 902, the variable length deduplication module 33 determines whether a data fragment corresponding to the identifier H BCD is registered in the chunk list table 312 (step 408). In this example, the data fragment corresponding to the identifier H BCD is not registered. For this reason, the determination result of step 408 regarding the parent chunk 902 becomes unregistered (No) as indicated by an arrow 912 in FIG. 9, and the process proceeds to the next process A3.

A3)
A3-1)可変長重複排除モジュール33は、上述の処理A2で定めた親チャンク902を構成する子チャンクc1,c2,c3の列の先頭の子チャンクc1の長さだけ、文書111の末尾側にずらした位置から(ステップ409)、連結ウィンドウサイズW(W=10)以上となるところまで、子チャンクを順次定めていく(ステップ403〜406)。このとき、処理A2で子チャンクc2,c3を定めた部分についての再度の処理は必要ない。図9の例では、可変長重複排除モジュール33は、文書111の先頭より20文字目のところに切り出し点を定め、新たに子チャンクc4を定めたものとする。
A3)
A3-1) The variable-length deduplication module 33 creates a document by the length of the first child chunk c 1 of the columns of the child chunks c 1 , c 2 , c 3 constituting the parent chunk 902 defined in the above-described processing A2. From the position shifted to the end of 111 (step 409), child chunks are sequentially determined until the connection window size W (W = 10) or more is reached (steps 403 to 406). At this time, it is not necessary to repeat the process for the part where the child chunks c 2 and c 3 are determined in the process A 2. In the example of FIG. 9, the variable-length deduplication module 33 defines a point cut at the 20 th character from the beginning of the document 111, and define those new children chunk c 4.

A3-2)可変長重複排除モジュール33は、連結ウィンドウサイズW以上となるところまで子チャンクc2,c3,c4を定めたところで、それらの子チャンクc2,c3,c4を連結して親チャンク903を定め、当該親チャンク903の識別子(ハッシュ値)を生成する(ステップ407)。この例では可変長重複排除モジュール33は、連結する子チャンクc2(“ na”),c3(“me spe”),c4(“cif”)の識別子(ハッシュ値)c2.hash=HC,c3.hash=HD,c4.hash=HEから生成したハッシュ値HCDEを、親チャンク903の識別子(ハッシュ値)とする。 A3-2) The variable-length deduplication module 33 determines the child chunks c 2 , c 3 , and c 4 until the connection window size W is equal to or larger than the connection window size W, and connects these child chunks c 2 , c 3 , and c 4 . Then, the parent chunk 903 is determined, and an identifier (hash value) of the parent chunk 903 is generated (step 407). In this example, the variable-length deduplication module 33 identifies the identifiers (hash values) c 2 .hash = of the child chunks c 2 (“na”), c 3 (“me spe”), and c 4 (“cif”) to be connected. The hash value H CDE generated from H C , c 3 .hash = H D and c 4 .hash = H E is used as the identifier (hash value) of the parent chunk 903.

A3-3)可変長重複排除モジュール33は、親チャンク903の識別子HCDEに基づき、チャンク一覧テーブル312に当該識別子HCDEに対応するデータ断片が登録されているかを判定する(ステップ408)。この例では、識別子HCDEに対応するデータ断片は登録されていない。このため、親チャンク903に関するステップ408の判定結果は図9において矢印913で示されるように未登録(No)となり、次の処理A4に進む。 A3-3) The variable-length deduplication module 33 determines whether a data fragment corresponding to the identifier H CDE is registered in the chunk list table 312 based on the identifier H CDE of the parent chunk 903 (step 408). In this example, the data fragment corresponding to the identifier H CDE is not registered. For this reason, the determination result of step 408 regarding the parent chunk 903 becomes unregistered (No) as indicated by an arrow 913 in FIG. 9, and the process proceeds to the next process A4.

A4)
図9の例では、上述の処理A3で定めた親チャンク903を構成する子チャンクc2,c3,c4の列の先頭の子チャンクc2の長さだけ、文書111の末尾側にずらした位置(つまり再設定された親チャンク開始位置)は、処理A1で定められた親チャンク(つまり当初親チャンク)901の終端の位置を超えている。したがって、ステップ409で再設定された親チャンク開始オフセットの親チャンク901の開始オフセットからの「ずれ」は、連結ウィンドウサイズW以上となる(ステップ410のYes)。この場合、可変長重複排除モジュール33は、処理A1で定められた親チャンク901の識別子HABC及びデータ(データ断片)“The file na”を、図9において矢印904で示すようにチャンク一覧テーブル312に登録する(ステップ502)。また図9では省略されているが、可変長重複排除モジュール33は、文書111の文書名「文書#1」及び親チャンク901の識別子HABCを文書構成テーブル311に登録する(ステップ503)。なお本実施形態では、ステップ502で登録される親チャンク901の識別子HABCは、ステップ501で改めて求められる。
A4)
In the example of FIG. 9, the length of the first child chunk c 2 in the column of the child chunks c 2 , c 3 , c 4 constituting the parent chunk 903 defined in the above process A 3 is shifted toward the end of the document 111. The position (that is, the reset parent chunk start position) exceeds the position of the end of the parent chunk (that is, the initial parent chunk) 901 determined in the process A1. Therefore, the “deviation” of the parent chunk start offset reset in step 409 from the start offset of the parent chunk 901 is equal to or larger than the linked window size W (Yes in step 410). In this case, the variable-length deduplication module 33 uses the chunk list table 312 as shown by an arrow 904 in FIG. 9 for the identifier H ABC and the data (data fragment) “The file na” of the parent chunk 901 determined in the process A1. (Step 502). Although not shown in FIG. 9, the variable-length deduplication module 33 registers the document name “document # 1” of the document 111 and the identifier H ABC of the parent chunk 901 in the document configuration table 311 (step 503). In this embodiment, the identifier H ABC of the parent chunk 901 registered at step 502 is obtained again at step 501.

(B)格納処理SXその2
上述の格納処理SX1に続いて実行される、文書111を格納するための格納処理SXその2(以下、格納処理SX2と称する)について、図10を参照して説明する。なお、図10では、文書構成テーブル311は省略されている。
(B) Storage process SX 2
A storage process SX 2 for storing the document 111 (hereinafter referred to as a storage process SX2) executed subsequent to the above-described storage process SX1 will be described with reference to FIG. In FIG. 10, the document configuration table 311 is omitted.

B1)
B1-1)可変長重複排除モジュール33は、格納処理SX1で定められた親チャンク901の終端の位置から(ステップ505)、連結ウィンドウサイズW(W=10)以上となるところまで、子チャンクを順次定めていく(ステップ403〜406)。このとき、格納処理SX1で親チャンク901の終端の位置以降の子チャンクc3,c4を定めた部分についての再度の処理は必要ない。図10の例では、可変長重複排除モジュール33は、文書111の先頭より24文字目のところに切り出し点を定め、新たな子チャンクc5(“cif”)を定めたものとする。
B1)
B1-1) The variable-length deduplication module 33 removes child chunks from the end position of the parent chunk 901 determined in the storage process SX1 (step 505) until it reaches the connected window size W (W = 10) or more. These are determined sequentially (steps 403 to 406). At this time, it is not necessary to repeat the process for the part in which the child chunks c 3 and c 4 after the end position of the parent chunk 901 are determined in the storage process SX1. In the example of FIG. 10, it is assumed that the variable-length deduplication module 33 determines a cut-out point at the 24th character from the top of the document 111 and sets a new child chunk c 5 (“cif”).

以降の処理は、格納処理SX1における、処理A2-2〜A2-3と同様であり、子チャンクc3,c4,c5を連結することにより親チャンク1001が定められる。図10の例では親チャンク1001の識別子HDEFに対応するデータ断片は、チャンク一覧テーブル312に登録されていない。このため、親チャンク1001に関するステップ408の判定結果は図10において矢印1011で示されるように未登録(No)となり、次の処理B2に進む。 The subsequent processing is the storage processing SX1, is similar to the processing A2-2~A2-3, parent chunk 1001 is determined by linking the child chunk c 3, c 4, c 5 . In the example of FIG. 10, the data fragment corresponding to the identifier H DEF of the parent chunk 1001 is not registered in the chunk list table 312. For this reason, the determination result of step 408 regarding the parent chunk 1001 becomes unregistered (No) as indicated by an arrow 1011 in FIG. 10, and the process proceeds to the next process B2.

B2)
処理B2は格納処理SX1における処理A2と同様である。処理B2では、新たに子チャンクc6(“by path is ope”)が定められる。そして子チャンクc4,c5,c6を連結することにより親チャンク1002が定められる。図10の例では親チャンク1002の識別子HEFGに対応するデータ断片は、チャンク一覧テーブル312に登録されていない。このため、親チャンク1001に関するステップ408の判定結果は図10において矢印1012で示されるように未登録(No)となり、次の処理B3に進む。
B2)
The process B2 is the same as the process A2 in the storage process SX1. In the process B2, a new child chunk c 6 (“by path is ope”) is determined. Then, the parent chunk 1002 is determined by connecting the child chunks c 4 , c 5 , and c 6 . In the example of FIG. 10, the data fragment corresponding to the identifier HEFG of the parent chunk 1002 is not registered in the chunk list table 312. For this reason, the determination result of step 408 regarding the parent chunk 1001 becomes unregistered (No) as indicated by an arrow 1012 in FIG. 10, and the process proceeds to the next process B3.

B3)
処理B3は格納処理SX1における処理A3と同様である。可変長重複排除モジュール33は、上述の処理A2で定めた親チャンク1002を構成する子チャンクc4,c5,c6の列の先頭の子チャンクc4の長さだけ、文書111の末尾側にずらした位置から(ステップ409)、連結ウィンドウサイズW(W=10)以上となるところまで、子チャンクを順次定めていく(ステップ403〜406)。このとき、処理B2で子チャンクc5,c6を定めた部分についての再度の処理は必要ない。図10の例では、子チャンクc4の長さだけずらした位置から連結ウィンドウサイズW以上となるところまでに、新たに定める子チャンクはない。そこで可変長重複排除モジュール33は、処理A2で定めた親チャンク1002から先頭の子チャンクc4を除いた残りの子チャンクc5,c6を連結して親チャンク1003を定める。図10の例では親チャンク1003の識別子HFGに対応するデータ断片は、チャンク一覧テーブル312に登録されていない。このため、親チャンク1003に関するステップ408の判定結果は図10において矢印1013で示されるように未登録(No)となり、次の処理B4に進む。
B3)
The process B3 is the same as the process A3 in the storage process SX1. The variable-length deduplication module 33 sets the end of the document 111 by the length of the first child chunk c 4 in the column of the child chunks c 4 , c 5 , c 6 constituting the parent chunk 1002 defined in the above-described process A2. From the position shifted to (step 409), child chunks are sequentially determined until the connection window size W (W = 10) or more is reached (steps 403 to 406). At this time, it is not necessary to repeat the process for the portion where the child chunks c 5 and c 6 are determined in the process B2. In the example of FIG. 10, there is no newly defined child chunk from the position shifted by the length of the child chunk c 4 to the place where the connection window size W or more is reached. Therefore, the variable-length deduplication module 33 determines the parent chunk 1003 by concatenating the remaining child chunks c 5 and c 6 obtained by removing the first child chunk c 4 from the parent chunk 1002 determined in the process A2. Data fragment corresponding to the identifier H FG parent chunks 1003 in the example of FIG. 10 is not registered in the chunk list table 312. For this reason, the determination result of step 408 regarding the parent chunk 1003 becomes unregistered (No) as indicated by an arrow 1013 in FIG. 10, and the process proceeds to the next process B4.

B4)
処理B4は格納処理SX1における処理A4と同様である。つまり、図10の例では、処理B3で定めた親チャンク1003を構成する子チャンクc5,c6の列の先頭の子チャンクc5の長さだけ、文書111の末尾側にずらした位置(つまり再設定された親チャンク開始位置)は、処理B1で定められた親チャンク(つまり当初親チャンク)1001の終端の位置を超えている(ステップ410のYes)。この場合、可変長重複排除モジュール33は、処理B1で定められた親チャンク1001の識別子HDEF及びデータ(データ断片)“me specified ”を、図10において矢印1004で示すようにチャンク一覧テーブル312に登録する(ステップ502)。また図9では省略されているが、可変長重複排除モジュール33は、文書111の文書名「文書#1」及び親チャンク1001の識別子HDEFを文書構成テーブル311に登録する(ステップ503)。
B4)
The process B4 is the same as the process A4 in the storage process SX1. That is, in the example of FIG. 10, a position shifted toward the end of the document 111 by the length of the first child chunk c 5 in the column of the child chunks c 5 and c 6 constituting the parent chunk 1003 defined in the process B3 ( That is, the reset parent chunk start position) exceeds the end position of the parent chunk (that is, the initial parent chunk) 1001 determined in the process B1 (Yes in step 410). In this case, the variable-length deduplication module 33 stores the identifier H DEF and data (data fragment) “me specified” of the parent chunk 1001 determined in the process B1 in the chunk list table 312 as indicated by an arrow 1004 in FIG. Register (step 502). Although not shown in FIG. 9, the variable-length deduplication module 33 registers the document name “document # 1” of the document 111 and the identifier H DEF of the parent chunk 1001 in the document configuration table 311 (step 503).

(C)格納処理SXその3
上述の格納処理SX2に続いて実行される、文書111を格納するための格納処理その3(以下、格納処理SX3と称する)について、図11を参照して説明する。なお、図11では、文書構成テーブル311は省略されている。
(C) Storage process SX 3
A storage process No. 3 (hereinafter referred to as storage process SX3) for storing the document 111, which is executed subsequent to the above-described storage process SX2, will be described with reference to FIG. In FIG. 11, the document configuration table 311 is omitted.

C1)
可変長重複排除モジュール33は、格納処理SX2で定められた親チャンク1001の終端の位置から(ステップ505)、連結ウィンドウサイズW(W=10)以上となるところまで、子チャンクを順次定めていく(ステップ403〜406)。図10の例では、可変長重複排除モジュール33は、文書111の先頭より38文字目のところに切り出し点を定め、子チャンクc6を定めたものとする。
C1)
The variable-length deduplication module 33 sequentially determines the child chunks from the end position of the parent chunk 1001 determined in the storage process SX2 (step 505) until the connection window size W (W = 10) or more. (Steps 403 to 406). In the example of FIG. 10, the variable-length deduplication module 33 defines a cut point at the 38-th character from the beginning of the document 111, it is assumed that defines the child chunk c 6.

以降の処理は、格納処理SX1における、処理A2-2〜A2-3と同様である。但し、図11の例では、子チャンクc6(“by path is ope”)のみで連結ウィンドウサイズW(W=10)以上となるため、当該子チャンクc6単体が親チャンク1101として定められる。可変長重複排除モジュール33は、子チャンクc6(“by path is ope”)の識別子(ハッシュ値)c6.hash=HGより生成したハッシュ値HG’を親チャンク1101の識別子(ハッシュ値)とする。図11の例では親チャンク1101の識別子HG’に対応するデータ断片は、チャンク一覧テーブル312に登録されていない。このため、親チャンク1101に関するステップ408の判定結果は図11において矢印1111で示されるように未登録(No)となり、次の処理C2に進む。 The subsequent processing is the same as the processing A2-2 to A2-3 in the storage processing SX1. However, in the example of FIG. 11, since only the child chunk c 6 (“by path is ope”) is equal to or larger than the linked window size W (W = 10), the child chunk c 6 alone is determined as the parent chunk 1101. The variable-length deduplication module 33 uses the hash value H G ′ generated from the identifier (hash value) c 6 .hash = H G of the child chunk c 6 (“by path is ope”) as the identifier (hash value) of the parent chunk 1101. ). In the example of FIG. 11, the data fragment corresponding to the identifier H G ′ of the parent chunk 1101 is not registered in the chunk list table 312. For this reason, the determination result of step 408 regarding the parent chunk 1101 becomes unregistered (No) as indicated by an arrow 1111 in FIG. 11, and the process proceeds to the next process C2.

C2)
処理C2は、格納処理SX1における処理A4と同様である。図11の例では、上述の処理C1で定めた親チャンク1101の開始位置から当該親チャンク1101を構成する子チャンクc6の長さだけ、文書111の末尾側にずらした位置(つまり再設定された親チャンク開始位置)は、当該親チャンク(つまり当初親チャンク)1101の終端の位置を超えている(ステップ410のYes)。この場合、可変長重複排除モジュール33は、処理C1で定められた親チャンク1101の識別子HG’及びデータ(データ断片)“by path is ope”を、図11において矢印1102で示すようにチャンク一覧テーブル312に登録する(ステップ502)。また図11では省略されているが、可変長重複排除モジュール33は、文書111の文書名「文書#1」及び親チャンク1101の識別子HG’を文書構成テーブル311に登録する(ステップ503)。
C2)
The process C2 is the same as the process A4 in the storage process SX1. In the example of FIG. 11, the position shifted from the start position of the parent chunk 1101 determined in the above-described process C1 to the end side of the document 111 by the length of the child chunk c 6 constituting the parent chunk 1101 (that is, reset) The parent chunk start position) exceeds the end position of the parent chunk (that is, the initial parent chunk) 1101 (Yes in step 410). In this case, the variable-length deduplication module 33 displays the identifier H G ′ and data (data fragment) “by path is ope” of the parent chunk 1101 defined in the process C1 as a chunk list as indicated by an arrow 1102 in FIG. Register in the table 312 (step 502). Although omitted in FIG. 11, the variable-length deduplication module 33 registers the document name “document # 1” of the document 111 and the identifier H G ′ of the parent chunk 1101 in the document configuration table 311 (step 503).

(D)格納処理SXその4
上述の格納処理SX3に続いて実行される、文書111を格納するための格納処理SXその4(以下、格納処理SX4と称する)について、図12を参照して説明する。なお、図12では、文書構成テーブル311は省略されている。
(D) Storage process SX 4
A storage process SX No. 4 (hereinafter referred to as a storage process SX4) for storing the document 111, which is executed subsequent to the above-described storage process SX3, will be described with reference to FIG. In FIG. 12, the document configuration table 311 is omitted.

D1)
D1-1)可変長重複排除モジュール33は、格納処理SX3で定められた親チャンク1101の終端の位置から(ステップ505)、連結ウィンドウサイズW(W=10)以上となるところまで、子チャンクを順次定めていく(ステップ403〜406)。図12の例では、可変長重複排除モジュール33は、文書111の先頭より41,47,50文字目のところに切り出し点を定め、子チャンクc7,c8,c9を定めたものとする。
D1)
D1-1) The variable-length deduplication module 33 removes the child chunk from the position of the end of the parent chunk 1101 determined in the storage process SX3 (step 505) until it reaches the connected window size W (W = 10) or more. These are determined sequentially (steps 403 to 406). In the example of FIG. 12, it is assumed that the variable-length deduplication module 33 defines cut points at the 41st, 47th, and 50th characters from the beginning of the document 111, and defines child chunks c 7 , c 8 , and c 9. .

以降の処理は、格納処理SX1における、処理A2-2〜A2-3と同様であり、子チャンクc7,c8,c9を連結することにより親チャンク1201が定められる。図12の例では親チャンク1201の識別子HHIJに対応するデータ断片は、チャンク一覧テーブル312に登録されていない。このため、親チャンク1201に関するステップ408の判定結果は図12において矢印1211で示されるように未登録(No)となり、次の処理D2に進む。 The subsequent processing is the storage processing SX1, is similar to the processing A2-2~A2-3, parent chunk 1201 is determined by linking the child chunk c 7, c 8, c 9 . In the example of FIG. 12, the data fragment corresponding to the identifier H HIJ of the parent chunk 1201 is not registered in the chunk list table 312. For this reason, the determination result of step 408 regarding the parent chunk 1201 becomes unregistered (No) as indicated by an arrow 1211 in FIG. 12, and the process proceeds to the next process D2.

D2)
処理D2は、格納処理SX1における処理A2と同様であり、新たに子チャンクc10が定められる。そして子チャンクc8,c9,c10を連結することにより親チャンク1202が定められる。図12の例では親チャンク1202の識別子HIJKに対応するデータ断片は、チャンク一覧テーブル312に登録されていない。このため、親チャンク1202に関するステップ408の判定結果は図12において矢印1212で示されるように未登録(No)となり、次の処理D3に進む。
D2)
Processing D2 is the same as the processing A2 in storage processing SX1, new child chunk c 10 is determined. Then, the parent chunk 1202 is defined by connecting the child chunks c 8 , c 9 , and c 10 . In the example of FIG. 12, the data fragment corresponding to the identifier H IJK of the parent chunk 1202 is not registered in the chunk list table 312. For this reason, the determination result of step 408 regarding the parent chunk 1202 becomes unregistered (No) as indicated by an arrow 1212 in FIG. 12, and the process proceeds to the next process D3.

D3)
処理D3は、格納処理SX1における処理A3と同様である。可変長重複排除モジュール33は、上述の処理D2で定めた親チャンク1202を構成する子チャンクc8,c9,c10の列の先頭の子チャンクc8の長さだけ、文書111の末尾側にずらした位置から(ステップ409)、連結ウィンドウサイズW(W=10)以上となるところまで、子チャンクを順次定めていく(ステップ403〜406)。このとき、処理D2で子チャンクc9,c10を定めた部分についての再度の処理は必要ない。図12の例では、可変長重複排除モジュール33は、文書111の先頭より57文字目のところに切り出し点を定め、子チャンクc11を定めたものとする。可変長重複排除モジュール33は、子チャンクc9,c10,c11を連結して親チャンク1203を定める。図10の例では親チャンク1203の識別子HJKLに対応するデータ断片は、チャンク一覧テーブル312に登録されていない。このため、親チャンク1203に関するステップ408の判定結果は図12において矢印1213で示されるように未登録(No)となり、次の処理D4に進む。
D3)
The process D3 is the same as the process A3 in the storage process SX1. Variable-length deduplication module 33, the length of the first child chunk c 8 column configuration child chunk c 8, c 9, c 10 a parent chunk 1202 defined by the above-described process D2, the end side of the document 111 From the position shifted to (step 409), child chunks are sequentially determined until the connection window size W (W = 10) or more is reached (steps 403 to 406). At this time, it is not necessary to repeat the process for the portion where the child chunks c 9 and c 10 are determined in the process D2. In the example of FIG. 12, the variable-length deduplication module 33 defines a cut point at the 57-th character from the beginning of the document 111, it is assumed that defines the child chunk c 11. The variable-length deduplication module 33 concatenates the child chunks c 9 , c 10 , and c 11 to determine a parent chunk 1203. In the example of FIG. 10, the data fragment corresponding to the identifier H JKL of the parent chunk 1203 is not registered in the chunk list table 312. For this reason, the determination result of step 408 regarding the parent chunk 1203 becomes unregistered (No) as indicated by an arrow 1213 in FIG. 12, and the process proceeds to the next process D4.

D4)
処理D4は、格納処理SX1における処理A4と同様である。つまり、図12の例では、処理D3で定めた親チャンク1203を構成する子チャンクc9,c10,c11の列の先頭の子チャンクc9の長さだけ、文書111の末尾側にずらした位置は、処理D1で定められた親チャンク1201の終端の位置を超えている(ステップ410のYes)。この場合、可変長重複排除モジュール33は、処理D1で定められた親チャンク1201の識別子HHIJ及びデータ(データ断片)“ned for read”を、図12において矢印1204で示すようにチャンク一覧テーブル312に登録する(ステップ502)。また図12では省略されているが、可変長重複排除モジュール33は、文書111の文書名「文書#1」及び親チャンク1201の識別子HHIJを文書構成テーブル311に登録する(ステップ503)。
D4)
The process D4 is the same as the process A4 in the storage process SX1. That is, in the example of FIG. 12, the length of the first child chunk c 9 in the column of the child chunks c 9 , c 10 , c 11 constituting the parent chunk 1203 defined in the process D3 is shifted toward the end of the document 111. The position exceeds the position of the end of the parent chunk 1201 determined in the process D1 (Yes in step 410). In this case, the variable-length deduplication module 33 uses the chunk list table 312 as shown by the arrow 1204 in FIG. 12 for the identifier H HIJ and the data (data fragment) “ned for read” of the parent chunk 1201 determined in the process D1. (Step 502). Although omitted in FIG. 12, the variable-length deduplication module 33 registers the document name “document # 1” of the document 111 and the identifier H HIJ of the parent chunk 1201 in the document configuration table 311 (step 503).

(E)格納処理SXその5
上述の格納処理SX4に続いて実行される、文書111を格納するための格納処理SXその5(以下、格納処理SX5と称する)について、図13を参照して説明する。この例では、説明の簡略化のために、便宜的に文字列“and”が文書111の末尾であるとしている。なお、図13では、文書構成テーブル311は省略されている。
(E) Storage process SX 5
A storage process SX No. 5 (hereinafter referred to as storage process SX5) for storing the document 111, which is executed subsequent to the above-described storage process SX4, will be described with reference to FIG. In this example, for the sake of simplicity, the character string “and” is assumed to be the end of the document 111 for convenience. In FIG. 13, the document configuration table 311 is omitted.

E1)
可変長重複排除モジュール33は、格納処理SX4で定められた親チャンク1201の終端の位置から(ステップ505)、子チャンクを順次定めていく(ステップ403〜406)。図13の例では、子チャンクc10,c11が定められ、その結果、切り出し点が文書111の末尾に達したものとする(ステップ404)。この場合、可変長重複排除モジュール33は、切り出し点が、格納処理SX4で定められた親チャンク1201の終端の位置から連結ウィンドウサイズW(W=10)以上となるか否かに無関係に、子チャンクc10,c11を連結することにより親チャンク1301を定める(ステップ414)。
E1)
The variable-length deduplication module 33 sequentially determines child chunks from the end position of the parent chunk 1201 determined in the storage process SX4 (step 505) (steps 403 to 406). In the example of FIG. 13, it is assumed that child chunks c 10 and c 11 are determined, and as a result, the cut-out point has reached the end of the document 111 (step 404). In this case, the variable-length deduplication module 33 determines whether the cut-out point is equal to or larger than the linked window size W (W = 10) from the end position of the parent chunk 1201 determined in the storage process SX4. A parent chunk 1301 is determined by connecting the chunks c 10 and c 11 (step 414).

E2)
可変長重複排除モジュール33は、処理E1で定められた親チャンク1301の識別子HKL及びデータ(データ断片)“ing and”を、図13において矢印1302で示すようにチャンク一覧テーブル312に登録する(ステップ412)。また図13では省略されているが、可変長重複排除モジュール33は、文書111の文書名「文書#1」及び親チャンク1301の識別子HKLを文書構成テーブル311に登録する(ステップ416)。これにより、文書111を格納するための格納処理SXは完了する。
E2)
The variable-length deduplication module 33 registers the identifier H KL and data (data fragment) “ing and” of the parent chunk 1301 determined in the process E1 in the chunk list table 312 as indicated by an arrow 1302 in FIG. Step 412). Although omitted in FIG. 13, the variable-length deduplication module 33 registers the document name “document # 1” of the document 111 and the identifier H KL of the parent chunk 1301 in the document configuration table 311 (step 416). Thereby, the storage process SX for storing the document 111 is completed.

上述の格納処理SX(つまり格納処理SX1乃至SX5)が完了した後における、文書構成テーブル311及びチャンク一覧テーブル312の状態(つまり文書111の登録状態)を、文書111及び当該文書111から切り出された親チャンクの列と共に図14に示す。   The state of the document configuration table 311 and the chunk list table 312 (that is, the registration state of the document 111) after the storage process SX (that is, the storage processes SX1 to SX5) is completed is cut out from the document 111 and the document 111. It is shown in FIG. 14 together with the parent chunk column.

(3)格納処理SY
次に文書112を格納するための格納処理SYについて、図15乃至図21を参照して説明する。図15乃至図19は文書111の格納後に行われる文書112の格納動作を文書構成テーブル311の状態と共に示す。図20は文書112の格納後(つまり文書111,112の格納後)における、文書構成テーブル311及びチャンク一覧テーブル312の状態を、文書112及び当該文書112から切り出された親チャンクの列と共に示し、図21は文書111,112の格納後における、文書構成テーブル311及びチャンク一覧テーブル312の状態を、当該文書111,112から切り出された親チャンクの列と共に示す。
(3) Storage processing SY
Next, storage processing SY for storing the document 112 will be described with reference to FIGS. 15 to 19 show the storage operation of the document 112 performed after the storage of the document 111 together with the state of the document configuration table 311. FIG. 20 shows the state of the document configuration table 311 and the chunk list table 312 after storage of the document 112 (that is, after storage of the documents 111 and 112), together with the column of the parent chunk extracted from the document 112 and the document 112, FIG. 21 shows the state of the document configuration table 311 and the chunk list table 312 after the documents 111 and 112 are stored, together with the parent chunk columns extracted from the documents 111 and 112.

F)格納処理SYその1
文書111を格納した後に、文書112を格納するための格納処理SYその1(以下、格納処理SY1と称する)について、図15を参照して説明する。なお、図15では、文書構成テーブル311は省略されている。
F) Storage process SY 1
A storage process SY 1 (hereinafter referred to as storage process SY1) for storing the document 112 after storing the document 111 will be described with reference to FIG. In FIG. 15, the document configuration table 311 is omitted.

F-1)可変長重複排除モジュール33は、文書112の先頭から、連結ウィンドウサイズW(W=10)以上となるところまで、子チャンクを順次定めていく(ステップ403〜406)。図15の例では、可変長重複排除モジュール33は、文書112の先頭より5,8,11文字目のところに切り出し点を定め、子チャンクc0(“The f”),c1(“ile”),c2(“ na”)を定めたものとする。 F-1) The variable-length deduplication module 33 sequentially determines child chunks from the top of the document 112 to a place where the linked window size W (W = 10) or more (steps 403 to 406). In the example of FIG. 15, the variable-length deduplication module 33 determines cut points at the fifth, eighth, and eleventh characters from the beginning of the document 112, and sets child chunks c 0 (“The f”), c 1 (“ile "), C 2 (" na ").

F-2)可変長重複排除モジュール33は、連結ウィンドウサイズW以上となるところまで子チャンクc0(“The f”),c1(“ile”),c2(“ na”)を順次定めたところで、それらの子チャンクを連結して親チャンク1501を定め、当該親チャンク1501の識別子(ハッシュ値)を生成する(ステップ407)。この例では可変長重複排除モジュール33は、連結する子チャンクc0(“The f”),c1(“ile”),c2(“ na”)の識別子(ハッシュ値)c0.hash=HA,c1.hash=HB,c2.hash=HCから生成したハッシュ値HABCを、親チャンク1501の識別子(ハッシュ値)とする。 F-2) The variable-length deduplication module 33 sequentially determines the child chunks c 0 (“The f”), c 1 (“ile”), and c 2 (“na”) until the connection window size W is reached. Now, these child chunks are concatenated to define a parent chunk 1501, and an identifier (hash value) of the parent chunk 1501 is generated (step 407). In this example, the variable-length deduplication module 33 uses the identifiers (hash values) c 0 .hash = of the child chunks c 0 (“The f”), c 1 (“ile”), and c 2 (“na”) to be connected. H a, c 1 .hash = H B, the hash value H ABC generated from c 2 .hash = H C, an identifier of the parent chunk 1501 (hash value).

F-3)可変長重複排除モジュール33は、親チャンク1501の識別子HABCに基づき、チャンク一覧テーブル312に当該識別子HABCに対応するデータ断片が登録されているかを判定する(ステップ408)。図15に示すように、チャンク一覧テーブル312には、識別子HABCに対応するデータ断片が登録されている。このため、親チャンク1501に関するステップ408の判定結果は図15において矢印1511で示されるようにYes(登録済)となり、次の処理Gに進む。この場合、チャンク一覧テーブル312は図15において矢印1502で示されるように、処理Fの前後で変わらない。なお、図15では省略されているが、可変長重複排除モジュール33は処理Gに進む前に、文書112の文書名「文書#2」及び親チャンク1501の識別子HABCを文書構成テーブル311に登録する(ステップ503)。 F-3) Based on the identifier H ABC of the parent chunk 1501, the variable length deduplication module 33 determines whether a data fragment corresponding to the identifier H ABC is registered in the chunk list table 312 (step 408). As shown in FIG. 15, a data fragment corresponding to the identifier H ABC is registered in the chunk list table 312. For this reason, the determination result of step 408 regarding the parent chunk 1501 becomes Yes (registered) as indicated by an arrow 1511 in FIG. In this case, the chunk list table 312 does not change before and after the process F as indicated by an arrow 1502 in FIG. Although omitted in FIG. 15, the variable length deduplication module 33 registers the document name “document # 2” of the document 112 and the identifier H ABC of the parent chunk 1501 in the document configuration table 311 before proceeding to the processing G. (Step 503).

G)格納処理SYその2
上述の格納処理SY1に続いて実行される、文書112を格納するための格納処理SYその2(以下、格納処理SY2と称する)について、図16を参照して説明する。なお、図16では、文書構成テーブル311は省略されている。
G) Storage process SY 2
A storage process SY 2 (hereinafter referred to as storage process SY2) for storing the document 112, which is executed subsequent to the above-described storage process SY1, will be described with reference to FIG. In FIG. 16, the document configuration table 311 is omitted.

G1)
G1-1)可変長重複排除モジュール33は、格納処理SY1で定められた親チャンク1501の終端の位置から(ステップ505)、連結ウィンドウサイズW(W=10)以上となるところまで、子チャンクを順次定めていく(ステップ403〜406)。図16の例では、可変長重複排除モジュール33は、文書112の先頭より13,22文字目のところに切り出し点を定め、子チャンクc3,c4を定めたものとする。
G1)
G1-1) The variable-length deduplication module 33 removes the child chunk from the end position of the parent chunk 1501 determined in the storage process SY1 (step 505) until it reaches the connected window size W (W = 10) or more. These are determined sequentially (steps 403 to 406). In the example of FIG. 16, it is assumed that the variable-length deduplication module 33 determines a cut-out point at the 13th and 22nd characters from the top of the document 112, and determines child chunks c 3 and c 4 .

G2-2)可変長重複排除モジュール33は、連結ウィンドウサイズW以上となるところまで子チャンクc3,c4を定めたところで、それらの子チャンクc3,c4を連結して親チャンク1601を定め、当該親チャンク1601の識別子(ハッシュ値)を生成する(ステップ407)。この例では可変長重複排除モジュール33は、連結する子チャンクc3(“me”),c4(“ABCD spe”)の識別子(ハッシュ値)c3.hash=HX,c4.hash=HYから生成したハッシュ値HXYを、親チャンク1601の識別子(ハッシュ値)とする。 G2-2) The variable length deduplication module 33 determines the child chunks c 3 and c 4 until the connection window size W is equal to or larger than the connection window size W, and concatenates the child chunks c 3 and c 4 to obtain the parent chunk 1601. The identifier (hash value) of the parent chunk 1601 is generated (step 407). In this example, the variable-length deduplication module 33 uses the identifiers (hash values) c 3 .hash = H X , c 4 .hash = of the child chunks c 3 (“me”) and c 4 (“ABCD spe”) to be linked. The hash value H XY generated from H Y is used as the identifier (hash value) of the parent chunk 1601.

G2-3)可変長重複排除モジュール33は、親チャンク1601の識別子HXYに基づき、チャンク一覧テーブル312に当該識別子HXYに対応するデータ断片が登録されているかを判定する(ステップ408)。この例では、識別子HXYに対応するデータ断片は登録されていないため、次の処理G3に進む。 G2-3) length deduplication module 33 determines whether based on the identifier H XY parent chunk 1601, data fragment corresponding to the identifier H XY in the chunk list table 312 is registered (step 408). In this example, since the data fragment corresponding to the identifier HXY is not registered, the process proceeds to the next process G3.

G3)
G3-1)可変長重複排除モジュール33は、上述の処理G2で定めた親チャンク1601を構成する子チャンクc3,c4の列の先頭の子チャンクc3の長さだけ、文書112の末尾側にずらした位置から(ステップ409)、連結ウィンドウサイズW(W=10)以上となるところまで、子チャンクを順次定めていく(ステップ403〜406)。このとき、処理G2で子チャンクc4を定めた部分についての再度の処理は必要ない。図16の例では、可変長重複排除モジュール33は、文書112の先頭より25文字目のところに切り出し点を定め、新たに子チャンクc5を定めたものとする。
G3)
G3-1) length deduplication module 33, the length of the child chunk c 3 of the column head of the configuration child chunk c 3, c 4 parent chunks 1601 defined by the above-described process G2, the end of the document 112 From the position shifted to the side (step 409), child chunks are sequentially determined until the connection window size W (W = 10) or more is reached (steps 403 to 406). At this time, it is not necessary to repeat the process for the part for which the child chunk c 4 is determined in the process G2. In the example of FIG. 16, the variable-length deduplication module 33 defines a point cut at the 25 th character from the beginning of the document 112, and define those new children chunk c 5.

G3-2)可変長重複排除モジュール33は、連結ウィンドウサイズW以上となるところまで子チャンクc4,c5を定めたところで、それらの子チャンクc4,c5を連結して親チャンク1602を定め、当該親チャンク1602の識別子(ハッシュ値)を生成する(ステップ407)。この例では可変長重複排除モジュール33は、連結する子チャンクc4(“ABCD spe”),c5(“cif”)の識別子(ハッシュ値)c4.hash=HY,c5.hash=HEから生成したハッシュ値HYEを、親チャンク1602の識別子(ハッシュ値)とする。 G3-2) The variable length deduplication module 33 determines the child chunks c 4 and c 5 until the connection window size W is equal to or larger than the connection window size W, and concatenates the child chunks c 4 and c 5 to obtain the parent chunk 1602. Then, an identifier (hash value) of the parent chunk 1602 is generated (step 407). In this example, the variable-length deduplication module 33 uses the identifiers (hash values) c 4 .hash = H Y and c 5 .hash = of the child chunks c 4 (“ABCD spe”) and c 5 (“cif”) to be connected. The hash value H YE generated from H E is used as the identifier (hash value) of the parent chunk 1602.

G3-3)可変長重複排除モジュール33は、親チャンク1602の識別子HYEに基づき、チャンク一覧テーブル312に当該識別子HYEに対応するデータ断片が登録されているかを判定する(ステップ408)。この例では、識別子HYEに対応するデータ断片は登録されていないため、次の処理G4に進む。 G3-3) The variable-length deduplication module 33 determines whether a data fragment corresponding to the identifier H YE is registered in the chunk list table 312 based on the identifier H YE of the parent chunk 1602 (step 408). In this example, since the data fragment corresponding to the identifier H YE is not registered, the process proceeds to the next process G4.

G4)
G4-1)図16の例では、上述の処理G3で定めた親チャンク1602を構成する子チャンクc4,c5の列の先頭の子チャンクc4の長さだけ、文書112の末尾側にずらした位置は、処理G1で定められた親チャンク(つまり当初親チャンク)1601の終端の位置を超えている。したがって、ステップ409で再設定された親チャンク開始オフセットの親チャンク1601の開始オフセットからの「ずれ」は、連結ウィンドウサイズW以上となる(ステップ410のTes)。この場合、可変長重複排除モジュール33は、処理G1で定められた親チャンク1601の識別子HXY及びデータ(データ断片)“me ABCD spe”を、図16において矢印1603で示すようにチャンク一覧テーブル312に登録する(ステップ502)。また図16では省略されているが、可変長重複排除モジュール33は、文書112の文書名「文書#2」及び親チャンク1601の識別子HXYを文書構成テーブル311に登録する(ステップ503)。
G4)
G4-1) In the example of FIG. 16, only the length of the first child chunk c 4 in the column of the child chunks c 4 and c 5 constituting the parent chunk 1602 defined in the processing G3 described above is added to the end of the document 112. The shifted position exceeds the position of the end of the parent chunk (that is, the initial parent chunk) 1601 determined in the process G1. Therefore, the “deviation” of the parent chunk start offset reset in step 409 from the start offset of the parent chunk 1601 is equal to or larger than the linked window size W (Tes in step 410). In this case, the variable-length deduplication module 33 uses the chunk list table 312 as shown by the arrow 1603 in FIG. 16 for the identifier H XY and the data (data fragment) “me ABCD spe” of the parent chunk 1601 determined in the process G1. (Step 502). Although omitted in FIG. 16, the variable-length deduplication module 33 registers the document name “document # 2” of the document 112 and the identifier H XY of the parent chunk 1601 in the document configuration table 311 (step 503).

H)格納処理SYその3
上述の格納処理SY2に続いて実行される、文書112を格納するための格納処理SYその3(以下、格納処理SY3と称する)について、図17を参照して説明する。なお、図17では、文書構成テーブル311は省略されている。
H) Storage processing SY 3
A storage process SY 3 (hereinafter referred to as storage process SY3) for storing the document 112, which is executed subsequent to the above-described storage process SY2, will be described with reference to FIG. In FIG. 17, the document configuration table 311 is omitted.

H1)
H1-1)可変長重複排除モジュール33は、格納処理SY2で定められた親チャンク1601の終端の位置から(ステップ505)、連結ウィンドウサイズW(W=10)以上となるところまで、子チャンクを順次定めていく(ステップ403〜406)。このとき、格納処理SY2で親チャンク1601の終端の位置以降の子チャンクc5を定めた部分についての再度の処理は必要ない。図16の例では、可変長重複排除モジュール33は、文書112の先頭より29,43文字目のところに切り出し点を定め、新たな子チャンクc6(“ied”),c7(“by path is ope”)を定めたものとする。
H1)
H1-1) The variable-length deduplication module 33 selects child chunks from the end position of the parent chunk 1601 determined in the storage process SY2 (step 505) until it reaches the connected window size W (W = 10) or more. These are determined sequentially (steps 403 to 406). At this time, it is not necessary to repeat the process for the part in which the child chunk c 5 after the end position of the parent chunk 1601 is determined in the storage process SY2. In the example of FIG. 16, the variable-length deduplication module 33 sets a cut point at the 29th and 43rd characters from the top of the document 112, and creates new child chunks c 6 (“ied”), c 7 (“by path is ope ”).

H1-2)可変長重複排除モジュール33は、連結ウィンドウサイズW以上となるところまで子チャンクc5,c6,c7を定めたところで、それらの子チャンクc5,c6,c7を連結して親チャンク1701を定め、当該親チャンク1701の識別子(ハッシュ値)を生成する(ステップ407)。この例では可変長重複排除モジュール33は、連結する子チャンクc5(“cif”),c6(“ied”),c7(“by path is ope”)の識別子(ハッシュ値)c5.hash=HE,c6.hash=HF,c7.hash=HGから生成したハッシュ値HEFGを、親チャンク1701の識別子(ハッシュ値)とする。 H1-2) length deduplication module 33, where defining a child chunk c 5, c 6, c 7 until it becomes a connecting window size W or more, connecting their child chunks c 5, c 6, c 7 Then, the parent chunk 1701 is determined, and an identifier (hash value) of the parent chunk 1701 is generated (step 407). In this example, the variable-length deduplication module 33 identifies the identifiers (hash values) c 5. Of child chunks c 5 (“cif”), c 6 (“ied”), and c 7 (“by path is ope”) to be connected. Hash value H EFG generated from hash = H E , c 6 .hash = H F , c 7 .hash = H G is used as the identifier (hash value) of the parent chunk 1701.

H1-3)可変長重複排除モジュール33は、親チャンク1701の識別子HEFGに基づき、チャンク一覧テーブル312に当該識別子HEFGに対応するデータ断片が登録されているかを判定する(ステップ408)。この例では、識別子HEFGに対応するデータ断片は登録されていない。このため、親チャンク1701に関するステップ408の判定結果は図17において矢印1711で示されるように未登録(No)となり、次の処理H2に進む。 H1-3) length deduplication module 33 determines whether based on the identifier H EFG parent chunk 1701, data fragment corresponding to the identifier H EFG in the chunk list table 312 is registered (step 408). In this example, the data fragment corresponding to the identifier HEFG is not registered. For this reason, the determination result of step 408 regarding the parent chunk 1701 becomes unregistered (No) as indicated by an arrow 1711 in FIG. 17, and the process proceeds to the next process H2.

H2)
H2-1)可変長重複排除モジュール33は、上述の処理H1で定めた親チャンク170101を構成する子チャンクc5,c6,c7の列の先頭の子チャンクc5の長さだけ、文書112の末尾側にずらした位置から(ステップ409)、連結ウィンドウサイズW(W=10)以上となるところまで、子チャンクを順次定めていく(ステップ403〜406)。このとき、処理H1で子チャンクc6,c7を定めた部分についての再度の処理は必要ない。図17の例では、子チャンクc5の長さだけずらした位置から連結ウィンドウサイズW以上となるところまでに、新たに定める子チャンクはない。
H2)
H2-1) length deduplication module 33, the length of the first child chunk c 5 columns parent chunks constituting 170101 child chunk c 5, c 6, c 7 was determined by the above-described process H1, document Child chunks are sequentially determined from the position shifted to the end of 112 (step 409) to a position where the connection window size W (W = 10) or more is reached (steps 403 to 406). At this time, it is not necessary to repeat the process for the part where the child chunks c 6 and c 7 are determined in the process H1. In the example of FIG. 17, there is no newly defined child chunk from the position shifted by the length of the child chunk c 5 to a place where the connection window size W or more is reached.

H2-2)そこで可変長重複排除モジュール33は、処理H1で定めた親チャンク1701から先頭の子チャンクc5を除いた残りの子チャンクc6,c7を連結して親チャンク1702を定め、当該親チャンク1702の識別子(ハッシュ値)を生成する(ステップ407)。この例では可変長重複排除モジュール33は、連結する子チャンクc6(“ied”),c7(“by path is ope”)の識別子(ハッシュ値)c6.hash=HF,c7.hash=HGから生成したハッシュ値HFGを、親チャンク1702の識別子(ハッシュ値)とする。 H2-2) Therefore, the variable-length deduplication module 33 determines the parent chunk 1702 by concatenating the remaining child chunks c 6 and c 7 excluding the first child chunk c 5 from the parent chunk 1701 determined in the processing H1. An identifier (hash value) of the parent chunk 1702 is generated (step 407). In this example, the variable-length deduplication module 33 uses identifiers (hash values) c 6 .hash = H F , c 7. For the child chunks c 6 (“ied”) and c 7 (“by path is ope”) to be connected. the hash = H G hash value H FG generated from an identifier (hash values) of the parent chunk 1702.

H2-3)可変長重複排除モジュール33は、親チャンク1702の識別子HFGに基づき、チャンク一覧テーブル312に当該識別子HFGに対応するデータ断片が登録されているかを判定する(ステップ408)。この例では、識別子HFGに対応するデータ断片は登録されていない。このため、親チャンク1702に関するステップ408の判定結果は図17において矢印1712で示されるように未登録(No)となり、次の処理H3に進む。 H2-3) length deduplication module 33 determines whether based on the identifier H FG parent chunk 1702, data fragment corresponding to the identifier H FG in the chunk list table 312 is registered (step 408). In this example, the data fragment corresponding to the identifier HFG is not registered. For this reason, the determination result of step 408 regarding the parent chunk 1702 becomes unregistered (No) as indicated by an arrow 1712 in FIG. 17, and the process proceeds to the next process H3.

H3)
H3-1)可変長重複排除モジュール33は、上述の処理H2で定めた親チャンク170102を構成する子チャンクc6,c7の列の先頭の子チャンクcの長さだけ、文書112の末尾側にずらした位置から(ステップ409)、連結ウィンドウサイズW(W=10)以上となるところまで、子チャンクを順次定めていく(ステップ403〜406)。このとき、処理H2で子チャンクc7を定めた部分についての再度の処理は必要ない。図17の例では、子チャンクc6の長さだけずらした位置から連結ウィンドウサイズW以上となるところまでに、新たに定める子チャンクはない。また子チャンクc7のみで、連結ウィンドウサイズW(W=10)以上となる。
H3)
H3-1) length deduplication module 33, the length of the child chunk c 6 the head of the column structure of the parent chunk 170,102 child chunk c 6, c 7 was determined by the above-described processing H2, the end of the document 112 From the position shifted to the side (step 409), child chunks are sequentially determined until the connection window size W (W = 10) or more is reached (steps 403 to 406). In this case, again the process is not necessary for the portion defining the processing H2 child chunk c 7. In the example of FIG. 17, there is no newly defined child chunk from the position shifted by the length of the child chunk c 6 to the place where the connection window size W or more is reached. Further, only the child chunk c 7 becomes the connection window size W (W = 10) or more.

H3-2)そこで可変長重複排除モジュール33は、処理H2で定めた親チャンク1702から先頭の子チャンクc6を除いた残りの子チャンクc7単体を親チャンク1703として定め、当該親チャンク1703の識別子(ハッシュ値)を生成する(ステップ407)。この例では可変長重複排除モジュール33は、子チャンクc7(“by path is ope”)の識別子(ハッシュ値)c7.hash=HGから生成したハッシュ値HG’を、親チャンク1703の識別子(ハッシュ値)とする。 H3-2) where the variable-length deduplication module 33 defines a remaining child chunk c 7 alone, excluding the child chunk c 6 from the parent chunk 1702 top of which defines the processing H2 as a parent chunk 1703, of the parent chunk 1703 An identifier (hash value) is generated (step 407). In this example, the variable-length deduplication module 33 uses the hash value H G ′ generated from the identifier (hash value) c 7 .hash = H G of the child chunk c 7 (“by path is ope”) as the parent chunk 1703. An identifier (hash value) is used.

H3-3)可変長重複排除モジュール33は、親チャンク1703の識別子HG’に基づき、チャンク一覧テーブル312に当該識別子HG’に対応するデータ断片が登録されているかを判定する(ステップ408)。図17に示すように、チャンク一覧テーブル312には、識別子HG’に対応するデータ断片が登録されている。このため、親チャンク1703に関するステップ408の判定結果は図17において矢印1713で示されるようにYes(登録済)となり、次の処理H4に進む。なお、図17では省略されているが、可変長重複排除モジュール33は処理H4に進む前に、文書112の文書名「文書#2」及び親チャンク1501の識別子HG’を文書構成テーブル311に登録する(ステップ412)。 H3-3) The variable length deduplication module 33 determines whether a data fragment corresponding to the identifier H G ′ is registered in the chunk list table 312 based on the identifier H G ′ of the parent chunk 1703 (step 408). . As shown in FIG. 17, in the chunk list table 312, data fragments corresponding to the identifier H G ′ are registered. For this reason, the determination result of step 408 regarding the parent chunk 1703 becomes Yes (registered) as indicated by an arrow 1713 in FIG. 17, and the process proceeds to the next process H4. Although omitted in FIG. 17, the variable-length deduplication module 33 stores the document name “document # 2” of the document 112 and the identifier H G ′ of the parent chunk 1501 in the document configuration table 311 before proceeding to the processing H4. Registration is performed (step 412).

H4)
H4-1)可変長重複排除モジュール33は、前述の格納処理SY2で定めた親チャンク1601(つまり、識別子HXYにより識別されるデータ断片)と、上記処理H3で定めた親チャンク1703(つまり、識別子HG’により識別されるデータ断片)との間に子チャンクまたは子チャンクの列があるならば(ステップ413のNo)、その子チャンクまたは子チャンクの列を親チャンクと定めて、当該親チャンクの識別子(ハッシュ値)を生成する(ステップ501)。図17の例では、親チャンク1601と親チャンク1703との間に、子チャンクc5,c6が存在する。そこで可変長重複排除モジュール33は、子チャンクc5,c6を連結して親チャンク1704を定め、当該親チャンク1704の識別子(ハッシュ値)を生成する(ステップ501)。即ち可変長重複排除モジュール33は、連結する子チャンクc5(“cif”),c6(“ied ”)の識別子(ハッシュ値)c5.hash=HE,c6.hash=HFから生成したハッシュ値HEFを、親チャンク1704の識別子(ハッシュ値)とする。
H4)
H4-1) length deduplication module 33 includes a parent chunk 1601 defined by the storage processing SY2 described above (i.e., data fragments identified by the identifier H XY), parent chunks 1703 defined by the process H3 (i.e., if a column of the child chunks or child chunks between data fragments) identified by the identifier H G '(No in step 413), the columns of the child chunk or child chunk defines the parent chunk, the parent chunk Identifier (hash value) is generated (step 501). In the example of FIG. 17, child chunks c 5 and c 6 exist between the parent chunk 1601 and the parent chunk 1703. Therefore, the variable length deduplication module 33 concatenates the child chunks c 5 and c 6 to define a parent chunk 1704, and generates an identifier (hash value) of the parent chunk 1704 (step 501). That length deduplication module 33, connected child chunk c 5 ( "cif"), c 6 the identifier (hash values) of ( "ied") c 5 .hash = H E, from c 6 .hash = H F The generated hash value H EF is set as an identifier (hash value) of the parent chunk 1704.

H4-2)可変長重複排除モジュール33は、親チャンク1704の識別子HEF及びデータ(データ断片)“cified ”を、図17において矢印1705で示すようにチャンク一覧テーブル312に登録する(ステップ502)。また図17では省略されているが、可変長重複排除モジュール33は、文書112の文書名「文書#2」及び親チャンク1704の識別子HEFを文書構成テーブル311に登録する(ステップ503)。 H4-2) The variable-length deduplication module 33 registers the identifier H EF of the parent chunk 1704 and the data (data fragment) “cified” in the chunk list table 312 as indicated by an arrow 1705 in FIG. 17 (step 502). . Although omitted in FIG. 17, the variable-length deduplication module 33 registers the document name “document # 2” of the document 112 and the identifier H EF of the parent chunk 1704 in the document configuration table 311 (step 503).

I)格納処理SYその4
上述の格納処理SY3に続いて実行される、文書112を格納するための格納処理SYその4(以下、格納処理SY4と称する)について、図18を参照して説明する。なお、図18では、文書構成テーブル311は省略されている。
I) Storage process SY 4
A storage process SY 4 (hereinafter referred to as a storage process SY4) for storing the document 112, which is executed subsequent to the above-described storage process SY3, will be described with reference to FIG. In FIG. 18, the document configuration table 311 is omitted.

I-1)可変長重複排除モジュール33は、格納処理SY3で登録済みであると判定された親チャンク1703の終端の位置から(ステップ505)、連結ウィンドウサイズW(W=10)以上となるところまで、子チャンクを順次定めていく(ステップ403〜406)。図18の例では、可変長重複排除モジュール33は、文書112の先頭より46,52,56文字目のところに切り出し点を定め、新たな子チャンクc8(“ned”),c9(“ for r”),c10(“ead”)を定めたものとする。 I-1) The variable-length deduplication module 33 has a connection window size W (W = 10) or more from the position of the end of the parent chunk 1703 determined to have been registered in the storage process SY3 (step 505). Until then, child chunks are sequentially determined (steps 403 to 406). In the example of FIG. 18, the variable-length deduplication module 33 sets a cut point at the 46th, 52nd, and 56th characters from the top of the document 112, and creates new child chunks c 8 (“ned”) and c9 (“for” r "), c10 (" ead ").

以降の処理は格納処理SY1における、処理F-2〜F-3と同様であり、子チャンクc8,c9,c10を連結することにより親チャンク1801が定められる。図18の例では親チャンク1801の識別子HHIJに対応するデータ断片は、チャンク一覧テーブル312に登録されている(ステップ408のYes)。このため、親チャンク1801に関するステップ408の判定結果は図18において矢印1811で示されるようにYes(登録済)となり、次の処理Jに進む。この場合、チャンク一覧テーブル312は図18において矢印1802で示されるように、処理Iの前後で変わらない。なお、図18では省略されているが、可変長重複排除モジュール33は処理Jに進む前に、文書112の文書名「文書#2」及び親チャンク1801の識別子HHIJを文書構成テーブル311に登録する(ステップ503)。 In the subsequent process storage processing SY1, is similar to the process F-2~F-3, parent chunk 1801 is determined by linking the child chunk c 8, c 9, c 10 . In the example of FIG. 18, the data fragment corresponding to the identifier H HIJ of the parent chunk 1801 is registered in the chunk list table 312 (Yes in step 408). For this reason, the determination result of step 408 regarding the parent chunk 1801 becomes Yes (registered) as indicated by an arrow 1811 in FIG. In this case, the chunk list table 312 does not change before and after the process I as indicated by an arrow 1802 in FIG. Although omitted in FIG. 18, the variable-length deduplication module 33 registers the document name “document # 2” of the document 112 and the identifier H HIJ of the parent chunk 1801 in the document configuration table 311 before proceeding to the process J. (Step 503).

J)格納処理SYその5
上述の格納処理SY4に続いて実行される、文書112を格納するための格納処理SYその5(以下、格納処理SY5と称する)について、図19を参照して説明する。なお、図19では、文書構成テーブル311は省略されている。
J) Storage process SY, part 5
A storage process SY No. 5 (hereinafter referred to as a storage process SY5) for storing the document 112, which is executed subsequent to the above-described storage process SY4, will be described with reference to FIG. In FIG. 19, the document configuration table 311 is omitted.

J1)
J1-1)可変長重複排除モジュール33は、格納処理SY4で定められた親チャンク1801の終端の位置から(ステップ505)、子チャンクを順次定めていく(ステップ403〜406)。図19の例では、子チャンクc11,c12が定められ、その結果、切り出し点が文書111の末尾に達したものとする(ステップ404)。この場合、可変長重複排除モジュール33は、切り出し点が、格納処理SY4で定められた親チャンク1801の終端の位置から連結ウィンドウサイズW(W=10)以上となるか否かに無関係に、子チャンクc11(“in”),c12(“g and”)を連結することにより親チャンク1901を定める(ステップ414)。
J1)
J1-1) The variable-length deduplication module 33 sequentially determines child chunks (steps 403 to 406) from the end position of the parent chunk 1801 determined in the storage process SY4 (step 505). In the example of FIG. 19, it is assumed that child chunks c 11 and c 12 are determined, and as a result, the cut-out point has reached the end of the document 111 (step 404). In this case, the variable-length deduplication module 33 determines whether the cut-out point is equal to or larger than the linked window size W (W = 10) from the end position of the parent chunk 1801 determined in the storage process SY4. A parent chunk 1901 is determined by concatenating the chunks c 11 (“in”) and c 12 (“g and”) (step 414).

J1-2)親チャンク1901の識別子(ハッシュ値)HKLに対応するデータ断片はチャンク一覧テーブル312に登録されている(ステップ415のYes)。このため、親チャンク1901に関するステップ415の判定結果は図19において矢印1911で示されるようにYes(登録済)となる。この場合、ステップ414で定められた親チャンク1901の識別子HKL及びデータ(データ断片)“ing and”をチャンク一覧テーブル312に登録する処理(ステップ416)は行われない。このためチャンク一覧テーブル312は図19において矢印1902で示されるように、処理Jの前後で変わらない。なお、図19では省略されているが、可変長重複排除モジュール33は、文書112の文書名「文書#2」及び親チャンク1501の識別子HKLを文書構成テーブル311に登録する(ステップ503)。これにより、文書112を格納するための格納処理SYは完了する。 J1-2) The data fragment corresponding to the identifier (hash value) H KL of the parent chunk 1901 is registered in the chunk list table 312 (Yes in step 415). For this reason, the determination result of step 415 regarding the parent chunk 1901 is Yes (registered) as indicated by an arrow 1911 in FIG. In this case, the process (step 416) of registering the identifier H KL and data (data fragment) “ing and” of the parent chunk 1901 defined in step 414 in the chunk list table 312 is not performed. Therefore, the chunk list table 312 does not change before and after the process J, as indicated by an arrow 1902 in FIG. Although omitted in FIG. 19, the variable-length deduplication module 33 registers the document name “document # 2” of the document 112 and the identifier H KL of the parent chunk 1501 in the document configuration table 311 (step 503). Thereby, the storage process SY for storing the document 112 is completed.

格納処理SXに続いて上述の格納処理SY(つまり格納処理SY1乃至SY5)が完了した後、つまり文書111,112の格納後における、文書構成テーブル311及びチャンク一覧テーブル312の状態を、文書112及び当該文書112から切り出された親チャンクの列と共に図20に示す。   After the storage process SX is completed following the storage process SX (that is, the storage processes SY1 to SY5), that is, after the documents 111 and 112 are stored, the state of the document configuration table 311 and the chunk list table 312 is changed to the document 112 and FIG. 20 shows the parent chunk columns cut out from the document 112.

同様に、文書111,112の格納後における、文書構成テーブル311及びチャンク一覧テーブル312の状態を、文書111,112から切り出された親チャンクの列と共に図21に示す。文書111の格納後に文書112が格納される本実施形態では、当該文書112を格納するための格納処理XYにより、重複データを排除しながら当該文書112を登録されることが、図21からわかる。   Similarly, the states of the document configuration table 311 and the chunk list table 312 after storing the documents 111 and 112 are shown in FIG. 21 together with the parent chunk columns cut out from the documents 111 and 112. In this embodiment in which the document 112 is stored after the document 111 is stored, it can be seen from FIG. 21 that the document 112 is registered while eliminating duplicate data by the storage process XY for storing the document 112.

<文書取得処理>
次に、文書格納装置10における文書取得処理について、図22のフローチャートを参照して説明する。
まず、クライアント装置20から文書格納装置10にネットワーク30を介して文書取得指示が送られたものとする。この文書取得指示は、文書格納装置10から取得されるべき文書を指定する文書名を含んでいる。
<Document acquisition processing>
Next, document acquisition processing in the document storage device 10 will be described with reference to the flowchart of FIG.
First, it is assumed that a document acquisition instruction is sent from the client device 20 to the document storage device 10 via the network 30. This document acquisition instruction includes a document name that specifies a document to be acquired from the document storage device 10.

文書格納装置10に送られたクライアント装置20からの文書取得指示は、当該文書格納装置10の命令受け付けモジュール32で受け付けられる。命令受け付けモジュール32内の文書取得部320は、この文書取得指示が命令受け付けモジュール32で受け付けられると、当該文書取得指示で指定される文書名と対応付けて文書構成テーブル311に登録されている全てのチャンク(親チャンク)群の識別子を取得する(ステップ2201)。取得されたチャンク群の識別子の並び順は、前述したように、対応する文書におけるチャンク群の並びに一致する。   The document acquisition instruction from the client device 20 sent to the document storage device 10 is received by the command reception module 32 of the document storage device 10. When this document acquisition instruction is received by the instruction reception module 32, the document acquisition unit 320 in the instruction reception module 32 is associated with the document name specified by the document acquisition instruction and is registered in the document configuration table 311. The identifier of the chunk (parent chunk) group is acquired (step 2201). As described above, the arrangement order of the identifiers of the acquired chunk groups matches the sequence of the chunk groups in the corresponding document.

文書取得部320は、文書構成テーブル311から識別子の群を取得すると、当該識別子の群とそれぞれ対応付けてチャンク一覧テーブル312に登録されているチャンク(データ断片)の群を取得する(ステップ2202)。   When the document acquisition unit 320 acquires a group of identifiers from the document configuration table 311, the document acquisition unit 320 acquires a group of chunks (data fragments) registered in the chunk list table 312 in association with the group of identifiers (step 2202). .

文書取得部320は、チャンク一覧テーブル312から取得したチャンクの群に基づき、当該チャンクの群の並び順が、先に取得した当該チャンクの群の識別子の並び順に一致するように、クライアント装置20からの文書取得指示で指定された文書名の文書のデータを再構成する(ステップ2203)。   Based on the group of chunks acquired from the chunk list table 312, the document acquisition unit 320 receives the chunk group from the client device 20 so that the order of the group of chunks matches the order of the identifiers of the group of chunks acquired previously. The document data of the document name designated by the document acquisition instruction is reconstructed (step 2203).

命令受け付けモジュール32は、文書取得部320によって再構成された文書データを、クライアント装置20からの文書取得指示に対する応答として当該クライアント装置20に返す(ステップ2204)。   The command reception module 32 returns the document data reconstructed by the document acquisition unit 320 to the client device 20 as a response to the document acquisition instruction from the client device 20 (step 2204).

ところで、クライアント装置20がユーザからの要求により、文書格納装置10から文書(文書データ)上のデータ断片を取得したい場合がある。クライアント装置20が文書格納装置10から文書上のデータ断片を取得するための方法として、当該文書の文書名に加えて、当該データ断片の当該文書上の位置及び当該データ断片の長さを指定する方法が知られている。文書格納装置10が、このような方法に適応するためには、クライアント装置20によって指定された文書名の文書の文書データを上述のように再構成した上で、当該文書データからクライアント装置20によって指定された位置・長さのデータ断片を取得する必要がある。   Incidentally, there are cases where the client device 20 wishes to acquire a data fragment on a document (document data) from the document storage device 10 in response to a request from the user. As a method for the client device 20 to acquire the data fragment on the document from the document storage device 10, in addition to the document name of the document, the position of the data fragment on the document and the length of the data fragment are specified. The method is known. In order for the document storage apparatus 10 to adapt to such a method, the document data of the document having the document name designated by the client apparatus 20 is reconstructed as described above, and the client apparatus 20 uses the document data from the document data. It is necessary to obtain a data fragment with the specified position and length.

そこで、例えば指定の文書名に対応付けてチャンク(親チャンク)の識別子を文書構成テーブル311に登録する際に、当該チャンクの対応する文書データ上での位置・長さを示す情報を当該チャンクの識別子に付加するとよい。このようにすると、この情報を参照して、この情報が付加されている識別子に対応付けてチャンク一覧テーブル312に保持されているチャンクを特定するだけで、指定の文書上の指定の位置・長さのデータ断片を取得することができる。   Therefore, for example, when registering an identifier of a chunk (parent chunk) in association with a specified document name in the document configuration table 311, information indicating the position / length of the chunk on the corresponding document data is displayed. It may be added to the identifier. In this way, by referring to this information and specifying the chunk held in the chunk list table 312 in association with the identifier to which this information is added, the specified position / length on the specified document is specified. Data fragment can be obtained.

<本実施形態のまとめ>
このように本実施形態では、文書格納装置10が、任意の文書データを、重複検出を行いながら、可変長のチャンク(親チャンクもしくは登録済み親チャンク、または第1のデータ断片)に分割するデータ分割装置として機能する。
<Summary of this embodiment>
As described above, in the present embodiment, the document storage device 10 divides arbitrary document data into variable-length chunks (parent chunk or registered parent chunk, or first data fragment) while performing duplication detection. Functions as a dividing device.

本実施形態によれば、子チャンク(第2のデータ断片)の長さを重複検出のオフセット間隔としながら、当該子チャンクの長さよりも長くなる可能性が高く、且つ登録の対象として用いられる可能性の高い親チャンク(第3のデータ断片)の長さで重複検出を行う構成とすることにより、従来技術と比較してより単純・高速な手法で、登録済みとなる親チャンク(第1のデータ断片)の数(つまり分割数)を少なくしながらも重複排除率を高く維持した、重複検出を行うことができる。   According to the present embodiment, the length of a child chunk (second data fragment) is set as an offset interval for duplication detection, and is likely to be longer than the length of the child chunk and can be used as a registration target. By adopting a configuration in which duplication detection is performed with the length of the highly probable parent chunk (third data fragment), the registered parent chunk (first data) can be obtained by a simpler and faster method compared to the conventional technique. Duplicate detection can be performed while maintaining a high deduplication rate while reducing the number of data fragments) (that is, the number of divisions).

また本実施形態によれば、分割の対象となるデータの一端から順に、子チャンク(第2のデータ断片)を決定しながら、それがある条件を満たしたときに、決定されている複数の子チャンクを連結して(1つの子チャンクが決定されているときは連結しないで)親チャンク(第3のデータ断片)を決定し、当該決定した親チャンクの重複の有無を検出することにより、分割の対象となるデータがストリーム状態に入力されるときに、高速に重複検出を行うことができる。   Further, according to the present embodiment, a plurality of children that are determined when a certain condition is satisfied while determining child chunks (second data fragments) in order from one end of the data to be divided. Split by concatenating chunks (without linking when one child chunk is determined) and determining the parent chunk (third data fragment) and detecting whether the determined parent chunk is duplicated When the target data is input to the stream state, duplicate detection can be performed at high speed.

なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えば、上記実施形態では、文書データを、当該文書データの先頭から当該文書データの末尾の方向に分割している。しかし、文書データを、当該文書データの末尾から当該文書データの先頭の方向に分割しても構わない。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。   Note that the present invention is not limited to the above-described embodiment as it is, and can be embodied by modifying the constituent elements without departing from the scope of the invention in the implementation stage. For example, in the above embodiment, the document data is divided from the top of the document data to the end of the document data. However, the document data may be divided from the end of the document data to the start of the document data. In addition, various inventions can be formed by appropriately combining a plurality of components disclosed in the embodiment. For example, some components may be deleted from all the components shown in the embodiment.

10…文書格納装置、20…クライアント装置、30…ネットワーク、31…文書格納部、32…命令受け付けモジュール(入力手段)、33…可変長重複排除モジュール、34…作業用メモリ、311…文書構成テーブル、312…チャンク一覧テーブル、320…文書取得部、331…子チャンク決定部(第2のデータ断片決定手段)、332…親チャンク決定部(第3のデータ断片決定手段)、333…識別子生成部、334…重複検出部、335…親チャンク登録部(第1のデータ断片決定手段)、336…制御部、341…文書バッファ、342…レジスタ部。   DESCRIPTION OF SYMBOLS 10 ... Document storage apparatus, 20 ... Client apparatus, 30 ... Network, 31 ... Document storage part, 32 ... Command reception module (input means), 33 ... Variable length deduplication module, 34 ... Working memory, 311 ... Document structure table 312 ... Chunk list table, 320 ... Document acquisition unit, 331 ... Child chunk determination unit (second data fragment determination unit), 332 ... Parent chunk determination unit (third data fragment determination unit), 333 ... Identifier generation unit 334... Duplicate detection unit, 335... Parent chunk registration unit (first data fragment determination means), 336... Control unit, 341... Document buffer, 342.

Claims (11)

入力手段、第1のデータ断片決定手段、第2のデータ断片決定手段、第3のデータ断片決定手段、重複検出手段及び制御手段を含む装置において、任意のデータを、重複検出を行いながら、複数の、任意の長さの第1のデータ断片に分割するためのデータ分割方法であって、
前記任意のデータを前記入力手段が入力する入力ステップと、
前記入力された任意のデータのうち、未だ前記第1のデータ断片として決定されていない残りのデータ部分から、前記第2のデータ断片決定手段が任意の長さまたは予め定められた長さの第2のデータ断片を順次決定する第1の決定ステップと、
予め定められた第1の条件を満足する状態に達するまでに、前記第1のステップにおいて決定された1つの第2のデータ断片それ自体または複数の第2のデータ断片の組み合わせを、前記第3の断片決定手段が1つの第3のデータ断片として決定する第2の決定ステップと、
前記決定された第3のデータ断片の重複の有無を、当該決定された第3のデータ断片に一致するビット列の第1のデータ断片が既に決定されているかによって、前記重複検出手段が検出する重複検出ステップと、
前記重複が検出された場合、前記決定された第3のデータ断片を前記第1のデータ断片決定手段が前記第1のデータ断片として決定する第3の決定ステップと、
前記重複が検出されなかった場合、前記第1及び第2の決定ステップを再実行させることにより、前記第1の条件を満足する状態に達するまでに新たな1つの第2のデータ断片または新たな複数の第2のデータ断片を決定させると共に、当該新たな1つの第2のデータ断片それ自体、当該新たな複数の第2のデータ断片の組み合わせ、前記重複が検出されなかった第3のデータ断片の一部と当該新たな1つの第2のデータ断片との組み合わせ、または前記重複が検出されなかった第3のデータ断片の一部と当該新たな複数の第2のデータ断片との組み合わせを、前記第3のデータ断片決定手段により1つの新たな第3のデータ断片として決定させるための制御を、予め定められた第2の条件を満足する状態で前記重複が検出されるまで前記制御手段が繰り返す第1の制御ステップと、
前記第2の条件を満足する状態で前記第1の制御ステップが繰り返されても前記重複が検出されなかった場合、その間に決定された前記第2のデータ断片のうちの、前記第1の条件を満足する、1つの第2のデータ断片それ自体、または複数の第2のデータ断片の組み合わせを、前記第1のデータ断片決定手段が新たな第1のデータ断片として決定する第4の決定ステップと、
前記入力された任意のデータが全て前記第1のデータ断片に分割されるまで、前記制御手段が前記第1の制御ステップを繰り返すための第2の制御ステップと
を具備することを特徴とするデータ分割方法。
In an apparatus including an input unit, a first data fragment determination unit, a second data fragment determination unit, a third data fragment determination unit, a duplication detection unit, and a control unit, a plurality of arbitrary data can be detected while performing duplication detection. A data dividing method for dividing the first data fragment of any length,
An input step in which the input means inputs the arbitrary data;
Of the input arbitrary data, the second data fragment determination means has an arbitrary length or a predetermined length from the remaining data portion not yet determined as the first data fragment. A first determining step for sequentially determining two data fragments;
The second data fragment itself or a combination of a plurality of second data fragments determined in the first step is changed to the third data fragment until the state that satisfies the predetermined first condition is reached. A second determining step in which the fragment determining means determines as one third data fragment;
The duplication detection means detects the duplication of the determined third data fragment depending on whether the first data fragment of the bit string that matches the determined third data fragment has already been determined. A detection step;
A third determining step in which the first data fragment determining means determines the determined third data fragment as the first data fragment when the duplication is detected;
If the duplicate is not detected, the first and second determination steps are re-executed, so that a new second data fragment or a new one is reached before reaching the state satisfying the first condition. A plurality of second data fragments are determined, and the new one second data fragment itself, a combination of the new plurality of second data fragments, and the third data fragment in which the duplication is not detected A combination of a part of and a new second data fragment, or a combination of a part of a third data fragment in which the duplication is not detected and the new plurality of second data fragments, Control for causing the third data fragment determining means to determine one new third data fragment is performed until the duplication is detected in a state where a predetermined second condition is satisfied. A first control step means repeats,
If the duplication is not detected even if the first control step is repeated in a state where the second condition is satisfied, the first condition among the second data fragments determined in the meantime. A fourth determination step in which the first data fragment determination means determines one second data fragment itself or a combination of a plurality of second data fragments as a new first data fragment that satisfies When,
A second control step for the control means to repeat the first control step until the input arbitrary data is all divided into the first data fragments. Split method.
前記第2のデータ断片は、前記残りのデータ部分の第1の端部から当該残りのデータ部分の第2の端部の方に向かって順に決定され、
前記第1の条件は、前記第1のステップにおいて決定された前記1つの第2のデータ断片の長さ、または前記第1のステップにおいて順次決定された前記複数の第2のデータ断片を連結した場合の、その連結後の当該複数の第2のデータ断片の長さに関する条件であり、
前記第1の条件を満足する状態に達するまでに、前記第1のステップにおいて前記複数の第2のデータ断片が決定された場合、当該複数の第2のデータ断片をその決定順に連結することにより、当該複数の第2のデータ断片の組み合わせとしての前記第3のデータ断片が決定される
ことを特徴とする請求項1記載のデータ分割方法。
The second data fragment is determined in order from a first end of the remaining data portion toward a second end of the remaining data portion;
The first condition is the length of the one second data fragment determined in the first step, or the plurality of second data fragments sequentially determined in the first step. The length of the plurality of second data fragments after the connection,
When the plurality of second data fragments are determined in the first step before reaching the state satisfying the first condition, the plurality of second data fragments are connected in the order of determination. The data division method according to claim 1, wherein the third data fragment is determined as a combination of the plurality of second data fragments.
前記第2の決定ステップは、
前記重複が検出されなかった第3のデータ断片に含まれる、前記残りのデータ部分の前記第1の端部に最も近い側の少なくとも1つの第2のデータ断片を、当該第3のデータ断片から取り外すステップと、
前記第1の条件を満足する状態に達するまでに前記第1の決定ステップで決定された前記新たな1つの第2のデータ断片または前記新たな複数の第2のデータ断片を、前記少なくとも1つの第2のデータ断片が取り外された前記第3のデータ断片に組み込むことにより、新たな第3のデータ断片を決定するステップとを含む
ことを特徴とする請求項2記載のデータ分割方法。
The second determining step includes
At least one second data fragment closest to the first end of the remaining data portion included in the third data fragment in which no duplication is detected is extracted from the third data fragment. Removing step,
The new one second data fragment or the plurality of second plurality of second data fragments determined in the first determination step until the state satisfying the first condition is reached. The data division method according to claim 2, further comprising: determining a new third data fragment by incorporating the second data fragment into the removed third data fragment.
前記第2の条件の範囲で前記第1の制御ステップが繰り返されても前記重複が検出されなかった場合に前記新たな第1のデータ断片として決定される、前記1つの第2のデータ断片それ自体、または前記複数の第2のデータ断片の組み合わせは、最も最近に第1のデータ断片が決定された後に最初に決定された第3の断片であり、
前記第3の決定ステップは、前記第2の条件の範囲で前記第1の制御ステップが繰り返されることによって前記重複が検出された結果、前記第1のデータ断片が決定された場合、前回決定された第1のデータ断片と今回決定された第1のデータ断片との間に挟まれている、未だ第1のデータ断片として決定されていないデータ断片を、前記第1のデータ断片決定手段が新たな第1のデータ断片として決定するステップを含む
ことを特徴とする請求項1乃至3のいずれか記載のデータ分割方法。
The one second data fragment, which is determined as the new first data fragment when the duplicate is not detected even if the first control step is repeated within the range of the second condition, Itself or a combination of the plurality of second data fragments is a third fragment first determined after the most recent determination of the first data fragment;
The third determining step is determined last time when the first data fragment is determined as a result of detecting the duplication by repeating the first control step within the range of the second condition. The first data fragment determination means newly sets a data fragment that is sandwiched between the first data fragment and the first data fragment determined this time and has not yet been determined as the first data fragment. The data division method according to claim 1, further comprising a step of determining as a first data fragment.
前記第1の条件は、
前記第1のステップにおいて決定された前記1つの第2のデータ断片の長さ、または前記第1のステップにおいて順次決定された前記複数の第2のデータ断片を連結した場合の、その連結後の当該複数の第2のデータ断片の長さが、
予め定められた基準の長さを超えること、
予め定められた基準の長さに等しくなること、
予め定められた基準の長さに最も近くなること、
または予め定められた基準の長さを超えない最大値なること
のいずれか1つである
ことを特徴とする請求項4記載のデータ分割方法。
The first condition is:
The length of the one second data fragment determined in the first step, or the concatenation of the plurality of second data fragments sequentially determined in the first step The length of the plurality of second data fragments is
Exceeding the length of a predetermined standard,
Equal to the length of a predetermined standard,
Be closest to the length of the predetermined standard,
5. The data dividing method according to claim 4, wherein the data dividing method is any one of a maximum value not exceeding a predetermined reference length.
前記第2の条件は、前記残りのデータ部分の前記第1の端部から、最も最近に重複が検出されなかった第3のデータ断片の当該第1の端部から遠い側の端部までの長さであるデータ断片長に関する条件であることを特徴とする請求項4記載のデータ分割方法。   The second condition is from the first end portion of the remaining data portion to the end portion farthest from the first end portion of the third data fragment in which duplication has not been detected most recently. 5. The data division method according to claim 4, wherein the condition is related to a data fragment length which is a length. 前記第2の条件は、前記データ断片長が、
予め定められた基準の長さを超えること、
予め定められた基準の長さに等しくなること、
予め定められた基準の長さに最も近くなること、
または予め定められた基準の長さを超えない最大値なること
のいずれか1つである
ことを特徴とする請求項6記載のデータ分割方法。
The second condition is that the data fragment length is:
Exceeding the length of a predetermined standard,
Equal to the length of a predetermined standard,
Be closest to the length of the predetermined standard,
The data dividing method according to claim 6, wherein the data dividing method is any one of a maximum value not exceeding a predetermined reference length.
任意のデータを、重複検出を行いながら、複数の、任意の長さの第1のデータ断片に分割するためのデータ分割装置において、
前記任意のデータを入力する入力手段と、
前記入力された任意のデータのうち、未だ前記第1のデータ断片として決定されていない残りのデータ部分から、任意の長さまたは予め定められた長さの第2のデータ断片を順次決定する第2のデータ断片決定手段と、
予め定められた第1の条件を満足する状態に達するまでに、前記第2のデータ断片決定手段によって決定された1つの第2のデータ断片それ自体または複数の第2のデータ断片の組み合わせを、1つの第3のデータ断片として決定する第3のデータ断片決定手段と、
前記決定された第3のデータ断片の重複の有無を、当該決定された第3のデータ断片に一致するビット列の第1のデータ断片が既に決定されているかによって検出する重複検出手段と、
前記重複が検出された場合、前記決定された第3のデータ断片を前記第1のデータ断片として決定する第1のデータ断片決定手段と、
前記重複が検出されなかった場合、前記第1の条件を満足する状態に達するまでに前記第2のデータ断片決定手段によって新たな1つの第2のデータ断片または新たな複数の第2のデータ断片を決定させると共に、前記新たな1つの第2のデータ断片それ自体、前記新たな複数の第2のデータ断片の組み合わせ、前記重複が検出されなかった第3のデータ断片の一部と当該新たな1つの第2のデータ断片との組み合わせ、または前記重複が検出されなかった第3のデータ断片の一部と当該新たな複数の第2のデータ断片との組み合わせを、前記第3のデータ断片決定手段によって1つの新たな第3のデータ断片として決定させるための制御を、予め定められた第2の条件を満足する状態で前記重複が検出されるまで繰り返し、この制御の繰り返しを、前記入力された任意のデータが全て前記第1のデータ断片に分割されるまで更に繰り返す制御手段とを具備し、
前記第1のデータ断片決定手段は、前記第2の条件を満足する状態で前記制御が繰り返されても前記重複が検出されなかった場合、その間に決定された前記第2のデータ断片のうちの、前記第1の条件を満足する、1つの第2のデータ断片それ自体、または複数の第2のデータ断片の組み合わせを、新たな第1のデータ断片として決定する
ことを特徴とするデータ分割装置。
In a data dividing device for dividing arbitrary data into a plurality of first data fragments having an arbitrary length while performing duplication detection,
Input means for inputting the arbitrary data;
A second data fragment having an arbitrary length or a predetermined length is sequentially determined from the remaining data portion of the input arbitrary data that has not yet been determined as the first data fragment. Two data fragment determination means;
One second data fragment itself or a combination of a plurality of second data fragments determined by the second data fragment determining means until reaching a state satisfying a predetermined first condition, Third data fragment determining means for determining as one third data fragment;
Duplicate detection means for detecting whether or not the determined third data fragment is duplicated depending on whether or not the first data fragment of the bit string that matches the determined third data fragment has already been determined;
First data fragment determination means for determining the determined third data fragment as the first data fragment when the duplication is detected;
When the duplication is not detected, a new second data fragment or a plurality of new second data fragments is obtained by the second data fragment determining means until the state satisfying the first condition is reached. The new one second data fragment itself, a combination of the new plurality of second data fragments, a part of the third data fragment in which the duplication is not detected, and the new data fragment A combination of one second data fragment or a combination of a part of the third data fragment in which no duplication is detected and the new plurality of second data fragments is determined as the third data fragment. The control for determining as one new third data fragment by the means is repeated until the duplication is detected in a state satisfying a predetermined second condition, and this control is repeated. Teeth, any data that is the input comprises a further repeat control means until the split to all the first data fragments,
If the duplicate is not detected even if the control is repeated in a state where the second condition is satisfied, the first data fragment determination means includes the second data fragment determined in the meantime. One data fragment itself or a combination of a plurality of second data fragments that satisfies the first condition is determined as a new first data fragment. .
前記第2のデータ断片決定手段は、前記残りのデータ部分の第1の端部から当該残りのデータ部分の第2の端部の方に向かって前記第2のデータ断片を順に決定し、
前記第1の条件は、前記第2のデータ断片決定手段によって決定された前記1つの第2のデータ断片の長さ、または前記第2のデータ断片決定手段によって順次決定された前記複数の第2のデータ断片を連結した場合の、その連結後の当該複数の第2のデータ断片の長さに関する条件であり、
前記第3のデータ断片決定手段は、前記第1の条件を満足する状態に達するまでに、前記第2のデータ断片決定手段によって前記複数の第2のデータ断片が決定された場合、当該複数の第2のデータ断片をその決定順に連結することにより、当該複数の第2のデータ断片の組み合わせとしての前記第3のデータ断片を決定する
ことを特徴とする請求項8記載のデータ分割装置。
The second data fragment determining means sequentially determines the second data fragment from the first end of the remaining data portion toward the second end of the remaining data portion;
The first condition is the length of the one second data fragment determined by the second data fragment determining means, or the plurality of second data sequentially determined by the second data fragment determining means. Is a condition regarding the length of the plurality of second data fragments after the connection,
When the plurality of second data fragments are determined by the second data fragment determination means before reaching the state satisfying the first condition, the third data fragment determination means The data dividing apparatus according to claim 8, wherein the third data fragment is determined as a combination of the plurality of second data fragments by concatenating the second data fragments in the order of determination.
前記第3のデータ断片決定手段は、前記重複が検出されなかった第3のデータ断片に含まれる、前記残りのデータ部分の前記第1の端部に最も近い側の少なくとも1つの第2のデータ断片を、当該第3のデータ断片から取り外し、前記第1の条件を満足する状態に達するまでに前記第2のデータ断片決定手段によって決定された前記新たな1つの第2のデータ断片または前記新たな複数の第2のデータ断片を、前記少なくとも1つの第2のデータ断片が取り外された前記第3のデータ断片に組み込むことにより、新たな第3のデータ断片を決定することを特徴とする請求項9記載のデータ分割装置。   The third data fragment determining means includes at least one second data on the side closest to the first end of the remaining data portion, which is included in the third data fragment in which the duplication is not detected. The fragment is removed from the third data fragment, and the new one second data fragment or the new data determined by the second data fragment determination means until the state that satisfies the first condition is reached. A new third data fragment is determined by incorporating a plurality of second data fragments into the third data fragment from which the at least one second data fragment has been removed. Item 12. The data dividing device according to Item 9. 前記第2の条件の範囲で前記制御が繰り返されても前記重複が検出されなかった場合に、前記新たな第1のデータ断片として決定される、前記1つの第2のデータ断片それ自体、または前記複数の第2のデータ断片の組み合わせは、最も最近に第1のデータ断片が決定された後に最初に決定された第3の断片であり、
前記第1のデータ断片決定手段は、前記第2の条件の範囲で前記制御が繰り返されることによって前記重複が検出された結果、前記第1のデータ断片を決定した場合、前回決定した第1のデータ断片と今回した第1のデータ断片との間に挟まれている、未だ第1のデータ断片として決定されていないデータ断片を、新たな第1のデータ断片として決定する ことを特徴とする請求項8乃至10のいずれかに記載のデータ分割装置。
The one second data fragment itself, which is determined as the new first data fragment when the duplicate is not detected even if the control is repeated within the range of the second condition, or The combination of the plurality of second data fragments is a third fragment determined first after the most recently determined first data fragment;
The first data fragment determining means determines the first data fragment previously determined when the first data fragment is determined as a result of detecting the duplication by repeating the control within the range of the second condition. A data fragment that is sandwiched between the data fragment and the first data fragment that has not yet been determined as the first data fragment is determined as a new first data fragment. Item 11. The data dividing device according to any one of Items 8 to 10.
JP2009227887A 2009-09-30 2009-09-30 Data division method and apparatus Active JP4852135B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009227887A JP4852135B2 (en) 2009-09-30 2009-09-30 Data division method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009227887A JP4852135B2 (en) 2009-09-30 2009-09-30 Data division method and apparatus

Publications (2)

Publication Number Publication Date
JP2011076421A JP2011076421A (en) 2011-04-14
JP4852135B2 true JP4852135B2 (en) 2012-01-11

Family

ID=44020331

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009227887A Active JP4852135B2 (en) 2009-09-30 2009-09-30 Data division method and apparatus

Country Status (1)

Country Link
JP (1) JP4852135B2 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4960417B2 (en) * 2009-09-15 2012-06-27 株式会社東芝 Method and apparatus for determining start / end offsets of variable length data fragments
JP5751041B2 (en) * 2011-06-17 2015-07-22 日本電気株式会社 Storage device, storage method and program
WO2013027230A1 (en) * 2011-08-19 2013-02-28 Hitachi, Ltd. Storage apparatus and duplicate data detection method
US9026503B2 (en) * 2012-02-29 2015-05-05 Netapp, Inc. Fragmentation control for performing deduplication operations
JP7295422B2 (en) * 2019-09-10 2023-06-21 富士通株式会社 Information processing device and information processing program

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7269689B2 (en) * 2004-06-17 2007-09-11 Hewlett-Packard Development Company, L.P. System and method for sharing storage resources between multiple files
US7613787B2 (en) * 2004-09-24 2009-11-03 Microsoft Corporation Efficient algorithm for finding candidate objects for remote differential compression
JP4960417B2 (en) * 2009-09-15 2012-06-27 株式会社東芝 Method and apparatus for determining start / end offsets of variable length data fragments

Also Published As

Publication number Publication date
JP2011076421A (en) 2011-04-14

Similar Documents

Publication Publication Date Title
JP4852135B2 (en) Data division method and apparatus
CA2260883C (en) Data compression and decompression system with immediate dictionary updating interleaved with string search
KR101074010B1 (en) Block unit data compression and decompression method and apparatus thereof
US5281967A (en) Data compression/decompression method and apparatus
KR102319657B1 (en) Managing operations on stored data units
JP6319740B2 (en) Method for speeding up data compression, computer for speeding up data compression, and computer program therefor
CN112615628B (en) Hardware friendly data compression
CN109582653A (en) Compression, decompression method and the equipment of file
US8872677B2 (en) Method and apparatus for compressing data-carrying signals
JP5223037B2 (en) Compression and decompression method and apparatus for guaranteeing upward compatibility
JP4960417B2 (en) Method and apparatus for determining start / end offsets of variable length data fragments
JP2018041288A (en) Log management unit and log management program
US20100332752A1 (en) Method to defrag a memory of an ic card
WO2017039906A1 (en) Modifying a compressed block of data
US9496895B2 (en) Compression method and decompression method
JP6476618B2 (en) Decompression method, decompression program and decompression device
JP2013162474A (en) Data compression method and device
JP2004062475A (en) Index storage method
US20140351387A1 (en) Computer-readable medium storing data editing program
JP4600342B2 (en) Data compression program
JP3653226B2 (en) Data compression method and apparatus using embedded run length coding
JPH08116269A (en) Data processing unit and data processing method
JP2765239B2 (en) Adaptive data compression method
JP2016134754A (en) Conversion processing program, information processor, and conversion processing method
JP2022117668A (en) Data compression device, data decoding device, data compression method, data decoding method, data compression program, and data decoding program

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110927

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111021

R150 Certificate of patent or registration of utility model

Ref document number: 4852135

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141028

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350