JP4960417B2 - 可変長のデータ断片の開始・終了オフセットを決定する方法及び装置 - Google Patents

可変長のデータ断片の開始・終了オフセットを決定する方法及び装置 Download PDF

Info

Publication number
JP4960417B2
JP4960417B2 JP2009213534A JP2009213534A JP4960417B2 JP 4960417 B2 JP4960417 B2 JP 4960417B2 JP 2009213534 A JP2009213534 A JP 2009213534A JP 2009213534 A JP2009213534 A JP 2009213534A JP 4960417 B2 JP4960417 B2 JP 4960417B2
Authority
JP
Japan
Prior art keywords
chunk
offset
temporary
document
data fragment
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
JP2009213534A
Other languages
English (en)
Other versions
JP2011065268A (ja
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 JP2009213534A priority Critical patent/JP4960417B2/ja
Publication of JP2011065268A publication Critical patent/JP2011065268A/ja
Application granted granted Critical
Publication of JP4960417B2 publication Critical patent/JP4960417B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Description

本発明は、データ間で重複するデータ断片を排除するために、任意のデータを可変長のデータ断片に分割するのに好適な、可変長のデータ断片の開始・終了オフセットを決定する方法及び装置に関する。
昨今、官公庁・企業・個人のデータを管理する基盤は急速に肥大化・複雑化しており、その基盤の主要な構成要素である記憶装置に格納するデータも増大の一途をたどっている。このようなデータの保管・管理コストを削減するための1つの技術として、重複排除技術が注目されている。
重複排除技術とは、任意のデータ(以下、対象データと称する)を記憶装置に格納する際に、既に対象データと同じ内容のデータが当該記憶装置に格納されているかを検出、つまりデータの重複を検出し、既に格納されていれば当該対象データを例えばリンクで置き換えることにより重複データを1つにまとめる(排除する)技術をいう。この重複排除技術によれば、データの記憶に必要な記憶容量を少なくすることができる。
同じデータが記憶装置に格納されているか否かを高速に検出するためには、データの識別子を利用することが多い。即ち重複排除技術では一般に、データの重複を検出するのに、対象データ自身を既に記憶装置に格納されている全データと比較する手法ではなくて、対象データの識別子を求めてこれを既存の格納済みのデータの識別子の群と比較する手法が適用される。
データの重複は、予め定められた単位で検出される。この単位として、ファイルのようなデータ(コンテンツ)の一塊を用いることにより、データの重複を検出する第1の手法が古くから知られている。また最近では、上記の単位に、ファイルのようなデータを分割することによって得られるデータ断片(以下、チャンクと称する)を用いることにより、データの重複を検出する第2の手法が提案されている。第1の手法では、データの一部が異なるときにもデータ全体が異なるものであるとして処理される。これに対して第2の手法では、上記一部だけを処理すればよいという利点がある。
第2の手法を適用する重複排除技術では、一般に、以下のような手順を繰り返すことで重複排除が行われる。
手順1)対象データからチャンクを切り出す。
手順2)切り出されたチャンクの識別子を求める。
手順3)切り出されたチャンクの識別子を既に記憶装置に格納済みのチャンクの群のそれぞれの識別子と比較する。もし、切り出されたチャンクと識別子が同一のチャンクがあれば、切り出されたチャンクと同一内容のチャンクであるとして、重複を排除する形式で、例えばリンクに置き換えることにより、切り出されたチャンクを記憶装置に格納する。
第2の手法を適用する重複排除技術では、手順1で実行されるチャンクの切り出しの方法、つまりどの長さでチャンクを切り出すかが重要である。第2の手法を適用する重複排除技術は、対象データからチャンクを切り出すときに当該チャンクの切り出し点を求める方法によって、大きく次の2種類に分類される。
A)固定長重複排除方法
固定長重複排除方法とは、ある一定の長さでチャンクの切り出し点を定め、チャンク毎に重複検出・排除を行う方法である。
B)可変長重複排除方法
可変長重複排除方法とは、対象データの内容に応じてデータ分割長を動的に調節して切り出し点を定め、チャンク毎に重複検出・排除を行う方法である。
以下、固定長重複排除方法及び可変長重複排除方法の違いについて、図11を参照して説明する。
図11は、文書名が「文書#1」の文書111及び文書名が「文書#2」の文書112の2つの文書についてそれぞれ、チャンク切り出し点を固定長重複排除方法と可変長重複排除方法で求めた様子を示す。文書112は、文書111の一部を編集することによって、例えば文書111における文字列“name”及び“specified”の間に文字列“ABCD”を挿入することによって、生成された文書である。
固定長重複排除方法によれば、文書111及び文書112に対し、図11において矢印113で示されるように、例えば10文字の固定長を単位に、チャンクの切り出し点が定められる。一方、可変長重複排除方法によれば、文書111及び文書112に対し、図11において矢印114で示されるように、データの中身に応じて、チャンクの切り出し点が定められる。この技術の詳細については後述する。
ここでは以下の点に注目されたい。
固定長重複排除方法では、文書111と文書112との間で、文字列の挿入が発生した箇所から後ろ側、つまり文書の末尾側のチャンク全てが異なっている。
これに対して可変長重複排除方法では、文書111と文書112との間で、文字列の挿入が発生した箇所周辺のチャンクが異なっているのみで、それより後ろ側のチャンクは全て一致している。
このように、固定長重複排除方法に比較して、可変長重複排除方法の方が、あるデータ間で、データの一部挿入/削除/変更が発生したときでも、その影響を極力抑えながら重複排除を実現できる。
上述のような可変長でのチャンク切り出し点の求め方と、それを利用した重複排除を行う方法は種々知られている。ここでは、特許文献1に記載されているような方法について、例を挙げて説明する。
特許文献1に記載の方法では、次の手順でチャンクの切り出し点が求められる。
1)データ上のある連続する固定長の区間(以下、ウィンドウと称する)のデータ断片(バイト列)を取り出して、当該データ断片の識別子を求める。ここでは、ウィンドウの長さが2バイトであるとする。このデータ断片がチャンクとしてのデータ断片とは異なる点に注意すべきである。
2)求めた識別子の一部(例えば下位2ビット)が、予め定めた値(例えば0x01)と一致したときに、そこをチャンクの切り出し点とする。
図12は、2バイト長のウィンドウW内の文字列(データ断片)の識別子を求めて、その識別子の下位2ビットが、予め定めた値0x01と一致するときにそこをチャンクの切り出し点として決定する場合の動作例を示す。図12の例では、文書データ“The fil…”の先頭より2バイト(2文字)長の区間をウィンドウWとして初期設定し、以後当該ウィンドウWを1バイトずつシフトさせながら、当該ウィンドウW内の文字列の識別子を、例えば当該文字列のハッシュ値を計算することによって求めている。このハッシュ値の計算に用いられるハッシュ関数を、hα( )で表す。ウィンドウW内の文字列が“Th”であるものとすると、その識別子は、hα(“Th”)で表される。
ウィンドウW内の文字列“Th”の識別子hα(“Th”)が0x1Aであったとすると、当該識別子0x1Aの下位2ビットは0x02である。この識別子0x1Aの下位2ビットは、当該識別子0x1Aとマスクデータ0x03との論理積演算0x1A&0x03によって求められる。識別子0x1Aの下位2ビット0x02は、予め定められた値0x01ではない。このため、このときのウィンドウWの終端を、チャンクの切り出し点とはしない。
ウィンドウW内の文字列“ f”の識別子hα(“ f”)が0x99であったとすると、当該識別子0x99の下位2ビットは0x01である。これは予め定められた値0x01と同じなので、このときのウィンドウWの終端をチャンクの切り出し点とする。これにより、文字列“The f”が切り出される。
この例では、チャンクの切り出し点を決定する条件とし、識別子の下位2ビットと予め定められた値との一致を用いているが、このビット数で、平均チャンクサイズが決定されることに注意されたい。例えば2ビットの場合、平均チャンクサイズは22=4バイトとなる。
以上のようにしてチャンクを切り出した上で、図13に示すように、このチャンク自体の識別子を、例えば当該チャンクのハッシュ値を計算することによって求めている。切り出されたチャンクをCAで表し、ハッシュ値の計算に用いられるハッシュ関数を、hβ( )で表す。チャンクCAを構成する文字列が“The f”である図13の例では、チャンクCAの識別子は、hβ(“The f”)=hβ(CA)で表される。以下の説明では、チャンクCAの識別子をHAで表す。
次に、前記手順3と同様に、求めたチャンクの識別子を、既に記憶装置に格納されているチャンクの群のそれぞれの識別子と比較する。もし、求めたチャンクと識別子が同一のチャンクがあれば、求めたチャンクと同一内容のチャンクが既に記憶装置に格納されているものとして処理する。これに対し、求めたチャンクと識別子が同一のチャンクがなければ、当該求めたチャンクを未だ記憶装置に格納されていない新しいチャンクとして処理する。
上述の処理を、チャンクを求める毎に繰り返すことで、重複検出・排除を行う。
特許文献1に記載されたチャンクの切り出し方法によれば、例えば図14に示す文書名が「文書#1」の文書111(データ)は、識別子HxがHA乃至HIの9つのチャンクを含むチャンクCxの群に分割される。文書名が「文書#1」の文書111から切り出されるチャンクCxの群のそれぞれの識別子Hxは、図14に示されるように、当該文書名「文書#1」に対応付けて文書構成テーブル141に登録される。また、識別子HA乃至HIを含む識別子Hxの群のそれぞれと、その識別子Hxに対応するチャンクCxとの一覧は、図14に示されるようにチャンク一覧テーブル142に登録される。
また、特許文献2には、チャンクの切り出し点を求めるためウィンドウをシフトしながら識別子を求める方法に関して、RollingHashingの手法を適用することが記載されている。
米国特許第5,990,810号明細書 米国特許第6,810,398号明細書
上記特許文献1に記載されているような従来の可変長重複排除方法(以下、従来技術と称する)では、可変長のチャンク(つまりデータ断片)の切り出しのため、識別子の計算を2段階に分けて行う必要がある。即ち従来技術では、1)可変長のデータ断片の切り出し点を求めるための識別子の計算と、2)重複検出に利用するための可変長のデータ断片自体の識別子の計算とを必要とする。
本発明は上記事情を考慮してなされたものでその目的は、可変長のデータ断片の切り出し点を求めるのに用いられた識別子を当該データ断片の識別子として用いることができ、これにより計算処理を少なくすることのできる可変長のデータ断片の開始・終了オフセットを決定する方法及び装置を提供することにある。
本発明の1つの観点によれば、識別子生成手段、区間設定手段、切り出し点決定手段及び記憶手段を含む装置において、任意のデータから可変長のデータ断片を取り出すための開始・終了オフセットを決定する方法が提供される。この方法は、前記任意のデータからデータ断片を取り出すための開始位置を示す開始オフセットを前記区間設定手段が前記記憶手段に設定するステップと、前記開始オフセットが設定された際に、当該開始オフセットに対応する仮の終了位置を示す仮終了オフセットを前記区間設定手段が前記記憶手段に設定するステップと、前記任意のデータ上の前記開始オフセットから前記仮終了オフセットまでの区間内のデータ断片を仮データ断片として、当該仮データ断片を識別するための当該仮データ断片の識別子を前記識別子生成手段が生成するステップと、前記仮データ断片の前記生成された識別子の値の一部または全部が予め定められた条件に合致するときに、前記仮終了オフセットを、前記開始オフセットを基準に前記任意のデータからデータ断片を取り出すための終了位置を示す終了オフセットとして前記切り出し点決定手段が決定するステップとを具備することを特徴とする。
本発明によれば、開始オフセットから仮終了オフセットまでの区間内の仮データ断片の識別子の一部または全部が予め定められた条件に合致するときに、当該仮終了オフセットが、開始オフセットを基準に任意のデータからデータ断片を取り出すための終了オフセットとして決定される。このとき、仮データ断片は、開始オフセットから当該決定された終了オフセットまでの区間内のデータ断片(つまり取り出されるべきデータ断片)それ自体であり、したがって仮データ断片の識別子は、当該データ断片の識別子それ自体でもある。よって本発明によれば、データ断片の切り出し点である終了オフセットが決定された時点で、当該終了オフセットを決定するのに用いられた識別子を当該データ断片の識別子として用いることができ、これにより計算処理を少なくすることができる。
本発明の一実施形態に係るストレージシステムの構成を示すブロック図。 図1に示される文書格納装置のハードウェア構成を示すブロック図。 図1に示される文書格納装置の主として機能構成を示すブロック図。 同実施形態で適用される文書格納処理の手順を示すフローチャート。 同文書格納処理に含まれているチャンク登録処理の詳細な手順を示すフローチャート。 同文書格納処理におけるチャンク切り出し点を設定する動作の過程の一例を示す図。 同文書格納処理によって2つの文書の重複検出・排除を行って、文書構成テーブル及びチャンク一覧テーブルを構成した例を示す図。 同実施形態で適用される文書取得処理の手順を示すフローチャート。 同実施形態の変形例で適用される文書格納処理の手順を示すフローチャート。 同実施形態の変形例で適用される文書格納処理におけるチャンク切り出し点を設定する動作の過程の一例を示す図。 従来技術における固定長重複排除方法及び可変長重複排除方法の違いを説明するための図。 従来技術における可変長重複排除方法で適用されるチャンク切り出し点を設定する動作の過程の一例を示す図。 従来技術におけるチャンク切り出し方法を説明するための図。 従来技術における可変長重複排除方法によって2つの文書の重複検出・排除を行って、文書構成テーブル及びチャンク一覧テーブルを構成した例を示す図。
以下、本発明の実施の形態につき図面を参照して説明する。
<システム構成>
図1は本発明の一実施形態に係るストレージシステムの構成を示すブロック図である。このストレージシステムは、文書格納装置10と、クライアント装置20とから構成される。文書格納装置10とクライアント装置20とは、例えばネットワーク30によって接続されている。文書格納装置10は文書をチャンクに分割して格納するためのデータ記憶装置である。クライアント装置20は、文書格納装置10を自身の記憶装置として利用する。つまりクライアント装置20は、例えば当該クライアント装置20上で動作するアプリケーションプログラムに従い、文書格納装置10に対して文書格納を指示することにより当該文書格納装置10に文書を格納させ、また文書格納装置10に対して文書取得を指示することにより文書格納装置10から文書を取得する。なお、文書格納装置10とクライアント装置20とが直接に接続されていても、クライアント装置20としての機能が文書格納装置10に内蔵されていても構わない。
文書格納装置10は、クライアント装置20から文書名で指定される文書の格納を指示するための文書格納指示が与えられると、後述する手続きに従って、当該文書名で指定される文書をチャンクに分割しながら重複検出・排除を行った上で、当該文書を後述する文書格納部32(図3参照)に格納する。また文書格納装置10は、クライアント装置20から文書名で指定される文書の取得を指示するための文書取得指示が与えられると、当該文書名で指定される文書を文書格納部32から取り出してクライアント装置20に出力する。ここでの文書とは例えばファイルまたは当該ファイル内のデータを指し、文書名とはファイル名を指す。なお、ファイルと当該ファイル内のデータとを区別するために、当該ファイル内のデータを文書のデータまたは文書データと称することもある。
<文書格納装置10のハードウェア構成>
本実施形態において、文書格納装置10はコンピュータを用いて実現される。図2は、このような文書格納装置10のハードウェア構成を示すブロック図である。図2に示されるように、文書格納装置10、少なくとも1つの処理ユニット21、主記憶装置22、補助記憶装置23、通信機構24及び入出力装置25の周知のハードウェア構成を有する。補助記憶装置23は、例えばハードディスクドライブを用いて構成される。補助記憶装置23は、処理ユニット21によって実行されるプログラム230を格納した記憶媒体231を備えている。本実施形態において記憶媒体231はディスク媒体である。
<文書格納装置10の機能構成>
図3は、文書格納装置10の主として機能構成を示すブロック図である。文書格納装置10は、文書格納部31と、命令受け付けモジュール32と、可変長重複排除モジュール33と、作業用メモリ34とを含む。本実施形態において、文書格納装置10内の命令受け付けモジュール32及び可変長重複排除モジュール33は、当該文書格納装置10が図2に示されるハードウェア構成のコンピュータから構成される場合に、当該コンピュータ内の処理ユニット21が、補助記憶装置23に格納されているプログラム230を主記憶装置22に読み込んで実行することにより実現されるものとする。しかし、命令受け付けモジュール32及び可変長重複排除モジュール33の少なくとも1つがハードウェアとして実現されてもよい。
文書格納部31は、文書構成テーブル311及びチャンク一覧テーブル312を用いて文書の群を格納する。文書格納部31は、図2に示される補助記憶装置23の記憶領域の一部を用いて実現される。文書構成テーブル311及びチャンク一覧テーブル312は、それぞれ、従来技術で適用されている文書構成テーブル141及びチャンク一覧テーブル142(図14参照)に相当する。
文書構成テーブル311は、文書格納部31に格納される文書の群のそれぞれについて、その文書の文書名と、その文書を構成するチャンクの群の識別子(ハッシュ値)の配列(つまりリスト)とを対応付けて保持する。チャンク一覧テーブル312は、文書格納部31に格納される文書を構成するチャンクのそれぞれについて、そのチャンクと、そのチャンクの識別子(ハッシュ値)とを対応付けて保持する。つまり、文書格納部31には、文書が、当該文書を構成するチャンクの群に分割して格納される。
命令受け付けモジュール32は、クライアント装置20からの指示を受け付けて、当該指示の内容に従って動作する。命令受け付けモジュール32は、クライアント装置20からの指示が文書格納指示の場合、当該文書格納指示を可変長重複排除モジュール33に渡すことにより、当該可変長重複排除モジュール33による文書格納処理を行わせる。命令受け付けモジュール32は、クライアント装置20からの指示が文書取得指示の場合に動作する文書取得部320を含む。文書取得部320は、文書取得指示に従い、指定された文書名の文書のデータを文書格納部31から取得するための文書取得処理を行う。文書取得部320によって取得された文書のデータは命令受け付けモジュール32によってクライアント装置20に出力される。
可変長重複排除モジュール33は、命令受け付けモジュール32から渡された文書格納指示に従い、指定された文書のデータから可変長でチャンクを切り出すためのチャンク切り出し処理と、切り出されたチャンク毎に重複を検出してそれを排除するための重複検出・排除処理とを行いながら、文書格納部31に当該文書を格納する。可変長重複排除モジュール33は、識別子生成部331と、仮チャンク区間設定部332と、切り出し点決定部333と、チャンク登録部334とを含む。
識別子生成部331は、チャンクの切り出しと重複検出で利用される当該チャンク(または後述する仮チャンク)の識別子を生成する。本実施形態では、識別子としてチャンク(または仮チャンク)のハッシュ値が用いられる。このハッシュ値には、例えばSHA1などのハッシュ関数を利用して生成された値が用いられる。
仮チャンク区間設定部332は、指定された文書のデータ(文書データ)からチャンクを切り出すのに必要な可変長の区間を当該文書データ上に設定する。切り出し点決定部333は、仮チャンク区間設定部332によって文書データ上に設定された区間のデータ断片(以下、仮チャンクと称する)の識別子に基づいて、チャンクの切り出し点を決定する。仮チャンク区間設定部332によって設定される区間を仮チャンクの区間と称する。仮チャンク区間設定部332は、チャンクの切り出し点が決定されるまで、仮チャンクの区間を一定長ずつ文書データの末尾の方向に拡張する。
チャンク登録部334は、切り出し点決定部333によって切り出し点が決定された際の仮チャンクをチャンクとして、当該チャンクを文書格納部31に登録するためのチャンク登録処理を行う。このチャンク登録処理においてチャンク登録部334は、登録すべきチャンクの識別子に一致する識別子がチャンク一覧テーブル312に既に登録されていることを検出するための重複検出を行う。チャンク登録部334は、この重複検出の結果に基づいて、対応するチャンクを当該チャンクの識別子に対応付けて文書格納部31内のチャンク一覧テーブル312に登録するか否か(つまり重複を排除するか)を決定する。チャンク登録部334はまた、重複検出の結果に無関係に、登録すべきチャンクの識別子を当該チャンクが切り出された文書の文書名に対応付けて文書構成テーブル311に登録する。
作業用メモリ34は、可変長重複排除モジュール33によるチャンク切り出し処理と重複検出・排除処理のための作業用の記憶領域を提供する。作業用メモリ34は、図2に示される主記憶装置22の記憶領域の一部を用いて実現される。作業用メモリ34の記憶領域の一部は、処理の対象となる文書データを一時格納するための文書バッファ341として用いられる。作業用メモリ34の記憶領域の他の一部は、処理に用いられる各種変数を一時格納するためのレジスタ部342として用いられる。レジスタ部342は、後述する開始オフセットレジスタ、仮終了オフセットレジスタ、仮チャンクレジスタ及び識別子レジスタを含む。
<文書格納処理>
次に、文書格納装置10における文書格納処理について、図4のフローチャートを参照して説明する。
まず、クライアント装置20から文書格納装置10にネットワーク30を介して文書格納指示が送られたものとする。この文書格納指示は、文書格納装置10に格納されるべき文書を指定する文書名を含んでいる。
文書格納装置10に送られたクライアント装置20からの文書格納指示は、当該文書格納装置10の命令受け付けモジュール32で受け付けられる。命令受け付けモジュール32は、この文書格納指示を受け付けると、当該文書格納指示で指定される文書名の文書のデータをクライアント装置20から入力する。そして命令受け付けモジュール32は、クライアント装置20からの文書格納指示を、当該文書格納指示で指定された文書名の文書のデータ(以下、文書データと称する)と共に可変長重複排除モジュール33に渡す。すると可変長重複排除モジュール33は、可変長重複排除モジュール33から渡された文書データを作業用メモリ34内の文書バッファ341に格納して、図4のフローチャートに示す手順の文書格納処理を実行する。即ち可変長重複排除モジュール33は、文書バッファ341に格納されている文書データの先頭から末尾に至るまで、以下の処理を繰り返す。
まず可変長重複排除モジュール33の仮チャンク区間設定部332は、切り出し点決定部333によるチャンクの切り出し点の決定のために、文書データの先頭位置(ここでは先頭バイトの位置)を当該チャンクの開始オフセットOsとしてレジスタ部342内の開始オフセットレジスタに設定する(ステップ401)。本実施形態において、チャンクの切り出し点は、開始オフセットOsと終了オフセットOeとにより表される。
開始オフセットOsはチャンクの開始切り出し点を示すもので、当該開始切り出し点の文書データの先頭位置からのオフセット(相対位置)を示す。終了オフセットOeはチャンクの終了切り出し点を示すもので、当該終了切り出し点の文書データの先頭位置からのオフセットを示す。終了オフセットOeは、次のチャンクの開始オフセットとなり、当該次のチャンクの開始切り出し点をも示す。したがって以降の説明では、終了オフセットOeを、単にチャンクの切り出し点と呼ぶこともある。
次に仮チャンク区間設定部332は、開始オフセットOsに対応する位置、例えば当該開始オフセットOsに1(単位は例えばバイト)を加算した位置、つまり文書データにおける開始オフセットOsの位置から文書データの末尾側に1バイトだけ移動した位置を、上記チャンクの仮の終了オフセット(以下、仮終了オフセットと称する)Oe’としてレジスタ部342内の仮終了オフセットレジスタに設定する(ステップ402)。すると可変長重複排除モジュール33の識別子生成部331は、文書データにおける、開始オフセットOsの位置から仮終了オフセットOe’の位置までの区間のデータ断片を仮チャンク(仮のチャンク)C’として切り出して、当該仮チャンクC’のハッシュ値HC’を当該仮チャンクC’の識別子HC’として生成する(ステップ403)。この仮チャンクC’の識別子HC’は、レジスタ部342内の識別子レジスタに保持される。
識別子生成部331によって仮チャンクC’の識別子HC’が生成されると、可変長重複排除モジュール33の切り出し点決定部333は、仮終了オフセットOe’の位置が文書データの終了位置に達しているかを判定する(ステップ404)。もし、仮終了オフセットOe’の位置が文書データの終了位置に達していないならば(ステップ404のNo)、切り出し点決定部333は、開始オフセットOsの位置から仮終了オフセットOe’の位置までの仮チャンクC’の区間(ウィンドウ)の長さ、つまり「Oe’−Os」の値が、予め定められた最大区間長Lmax未満であるかを判定する(ステップ405)。
もし、「Oe’−Os」の値がLmax未満であるならば(ステップ405のYes)、切り出し点決定部333は、識別子生成部331によって生成された識別子HC’の一部または全部の値、例えば識別子HC’の下位mビットの値が、予め定められた値(以下、規定値と称する)Aに一致するかを判定する(ステップ406)。もし、識別子HC’の下位mビットの値が規定値Aに一致しないならば(ステップ406のNo)、切り出し点決定部333は、現在の仮終了オフセットOe’は切り出し点ではないと判断する。この場合、仮チャンク区間設定部332は、仮終了オフセットOe’に1(バイト)を加算した位置を新たな仮終了オフセットOe’として、レジスタ部342内の仮終了オフセットレジスタに再設定する(ステップ407)。つまり仮チャンク区間設定部332は、開始オフセットOsを変えずに、仮終了オフセットOe’だけを文書データの末尾側に1だけずらすことにより、仮チャンクC’の区間(ウィンドウ)を終端側に1バイトだけ拡張する。このように本実施形態では、切り出し点を決定するのに用いられるウィンドウ(仮チャンクC’の区間)が終端側に拡張される点で、固定長のウィンドウがシフトされる従来技術と相違する。
これに対し、識別子HC’の下位mビットの値が規定値Aに一致するならば(ステップ406のYes)、切り出し点決定部333は、「Oe’−Os」の値が、予め定められた最小区間長Lmin以上であるかを判定する(ステップ408)。
もし、「Oe’−Os」の値が、予め定められた最小区間長Lmin以上であるならば(ステップ408のYes)、切り出し点決定部333は現在の仮終了オフセットOe’を切り出し点であると決定する。この場合、切り出し点決定部333はステップ409に進む。
これに対し、「Oe’−Os」の値が最小区間長Lmin以上でないならば(ステップ408のNo)、つまり「Oe’−Os」の値が最小区間長Lmin未満であるならば、切り出し点決定部333は、識別子HC’の下位mビットの値が規定値Aに一致しているにも拘わらずに、現在の仮終了オフセットOe’を切り出し点としないことを決定する。これにより、切り出し点で切り出されるチャンクが細分化してしまうことを抑止することができる。
さて切り出し点決定部333は、ステップ408の判定結果がNoであるならば、次善の切り出し点(終了オフセットOe)を決定するために、識別子HC’の下位mビットの値が規定値Aに一致していない場合(ステップ406のNo)と同様にステップ407に進む。このステップ407において、切り出し点決定部333は、仮終了オフセットOe’に1を加算した位置を新たな仮終了オフセットOe’として設定する。
なお、ステップ408は必ずしも必要でない。即ち、識別子HC’の下位mビットの値が規定値Aに一致しているならば(ステップ406のYes)、「Oe’−Os」の値が最小区間長Lmin以上であるか否かに無関係に、現在の仮終了オフセットOe’が切り出し点であると決定されても構わない。
仮チャンク区間設定部332によってステップ407が実行されると、つまり仮チャンクC’の区間が終端側に1バイトだけ拡張されると、識別子生成部331は再びステップ403を実行する。即ち識別子生成部331は、文書データにおける、開始オフセットOsの位置から新たな仮終了オフセットOe’の位置までの区間のデータ断片を、仮チャンクC’として切り出して、当該仮チャンクC’の識別子HC’を新たに生成する(ステップ403)。
一方、開始オフセットOsの位置から新たな仮終了オフセットOe’までの区間の長さ(「Oe’−Os」の値)がLmax未満でないならば(ステップ405のNo)、つまり「Oe’−Os」の値がLmax以上であるならば、切り出し点決定部333は現在の仮終了オフセットOe’を切り出し点であると決定する。このように切り出し点決定部333は、「Oe’−Os」の値がLmax以上になると、識別子HC’の下位mビットの値が規定値Aに一致しているか否かに無関係に、現在の仮終了オフセットOe’を切り出し点であると決定する。これにより、切り出し点で切り出されるチャンクが巨大化してしまうことを抑止できる。
さて切り出し点決定部333は、ステップ405の判定結果がNoであるために、現在の仮終了オフセットOe’を切り出し点であると決定すると、ステップ408の判定がYesの場合と同様にステップ409に進む。
ステップ409においてチャンク登録部334は、当該ステップ409が実行される時点における仮終了オフセットOe’、仮チャンクC’、当該仮チャンクC’の識別子HC’を、それぞれ、終了オフセットOe、チャンクC、当該チャンクCの識別子HCとして設定する。このステップ409において、仮終了オフセットOe’が終了オフセットOeとして設定されたことにより、チャンクCの切り出し点が取得されたことになる。
このように本実施形態では、文書格納装置10が、可変長のチャンク(データ断片)の開始・終了オフセットを決定する装置として機能する。そして、開始オフセットOsと仮終了オフセットOe’とから定まる仮チャンクC’の識別子(ハッシュ値)HC’の下位mビットが、規定値Aと一致したとき、その仮終了オフセットOe’がチャンクCの終了オフセットOe、つまりチャンクCの切り出し点として決定される。このとき、仮チャンクC’の識別子HC’は、チャンクCの識別子HC’でもあることに注意されたい。したがって本実施形態においては、チャンクCの切り出し点が決定された時点で、当該チャンクCの識別子HCを新たな識別子(ハッシュ値)計算を行うことなく取得できる。つまり本実施形態においては、従来技術で可変長のチャンクの切り出しのために必要であった2段階の識別子計算処理を1段階に減らすことができる。
また本実施形態では、仮チャンクC’(チャンクC)の長さが、Lmin以上となるように調整される。更に本実施形態では、仮チャンクC’(チャンクC)の長さ’の長さ、つまり開始オフセットOsの位置から仮終了オフセットOe’までの区間の長さがLmax以上になると、当該仮チャンクC’の識別子HC’の下位mビットが規定値Aに一致するか否かに無関係に、その仮終了オフセットOe’がチャンクCの切り出し点として決定される。これにより仮チャンクC’(チャンクC)の長さは、Lmin以上Lmax未満となるように調整される。
さて、切り出し点決定部333によってステップ409が実行されると、可変長重複排除モジュール33のチャンク登録部334は、チャンクCに関する情報を文書構成テーブル311及びチャンク一覧テーブル312に登録するためのチャンク登録処理(ステップ410)を実行する。このチャンク登録処理については後述する。
チャンク登録部334によるチャンク登録処理(ステップ410)が終了すると、仮チャンク区間設定部332は現在の仮終了オフセットOe’を新たな開始オフセットOsとしてレジスタ部342内の開始オフセットレジスタに設定する(ステップ411)。つまり仮チャンク区間設定部332は、レジスタ部342内の開始オフセットレジスタに設定されている開始オフセットOsが、仮終了オフセットOe’(=終了オフセットOe)の位置を次のチャンク切り出しのための開始位置(開始切り出し点)として示すように、当該開始オフセットOsを更新(再設定)する。
仮チャンク区間設定部332はステップ411を実行し終えるとステップ402に戻り、当該ステップ411で更新された開始オフセットOsに1を加算した位置を、新たな仮終了オフセットOe’としてレジスタ部342内の開始オフセットレジスタに設定する。すると可変長重複排除モジュール33では、ステップ403以降の処理が再び実行される。
やがて、仮終了オフセットOe’が文書データの終了位置に達したならば(ステップ404のYes)、切り出し点決定部333は現在の仮終了オフセットOe’を切り出し点であると決定する。この場合、切り出し点決定部333はステップ412に進む。ステップ412において切り出し点決定部333は、上記ステップ409と同様に、現在(当該ステップ412が実行される時点)の仮終了オフセットOe’、仮チャンクC’、当該仮チャンクC’の識別子HC’を、それぞれ、終了オフセットOe、チャンクC、当該チャンクCの識別子HCとして設定する。
切り出し点決定部333によってステップ412が実行されると、チャンク登録部334は、チャンクCに関する情報を文書構成テーブル311及びチャンク一覧テーブル312に登録するためのチャンク登録処理(ステップ413)を実行する。可変長重複排除モジュール33は、切り出し点決定部333によるチャンク登録処理(ステップ413)が終了すると、文書格納処理を終了する。この場合、可変長重複排除モジュール33は、命令受け付けモジュール32にクライアント装置20からの文書格納指示に対する文書格納処理の完了を通知する。すると命令受け付けモジュール32は、文書格納処理の完了を通知するための完了応答をクライアント装置20に返す。
次に、上記ステップ410または413でチャンク登録部334によって実行されるチャンク登録処理について、図5のフローチャートを参照して説明する。
まずチャンク登録部334は、直前のステップ409または412で設定されたチャンクCの識別子HC(に一致する識別子Hx)がチャンク一覧テーブル312に登録されているかを判定する(ステップ501)。このステップ501は、チャンクCと同一内容のチャンクCxが、既に文書格納部31に格納されている重複を検出するために実行される。
もし、チャンクCの識別子HC(に一致する識別子Hx)がチャンク一覧テーブル312に登録されているならば(ステップ501のYes)、チャンク登録部334はチャンクCの重複が検出されたものとしてステップ502に進む。
ここで、チャンクCの識別子HCに一致する識別子Hxと対応付けてチャンク一覧テーブル312に登録されているチャンクが、チャンクCxであるものとする。このチャンクCxのビット列とチャンクCのビット列とは、識別子の計算に用いるハッシュ関数によっては、必ずしも一致するとは限らない。そこで、上記ステップ501において、チャンクCの識別子HCに一致する識別子Hxがチャンク一覧テーブル312に登録されているけでなく、チャンクCのビット列に一致するチャンクCxのビット列が、当該識別子Hxと対応付けてチャンク一覧テーブル312に登録されているかを判定するとよい。このようにすると、より高精度の重複検出が行えて、いわゆるハッシュ衝突を防止することができる。
ステップ502においてチャンク登録部334は、チャンクCを含む文書の文書名に対応付けて当該チャンクCの識別子(ハッシュ値)HCを文書構成テーブル311に登録する。ここで、既にチャンクCを含む文書の文書名が文書構成テーブル311に登録されている場合、チャンク登録部334は、当該文書名に対応付けて文書構成テーブル311に既に登録されている識別子の配列の末尾にチャンクCの識別子HCを追加する。これにより、チャンクCを含む文書の文書名に対応付けて文書構成テーブル311に登録される識別子の並び順は、当該文書から対応するチャンクが切り出される順番、つまり対応するチャンクの当該文書における並び順に一致する。
本実施形態では、ステップ502において、チャンクCと当該チャンクCの識別子HCとの対がチャンク一覧テーブル312に登録されない点に注意されたい。つまり、クライアント装置20からの文書格納指示で指定された文書から切り出されたチャンクCと同一内容のチャンクCxが既に文書格納部31内のチャンク一覧テーブル312に登録されている重複が検出された場合(ステップ501のYes)、当該チャンクCが排除される。その一方、チャンクCを含む文書の文書名に対応付けて識別子HCが文書構成テーブル311に登録される。これにより、チャンク一覧テーブル312に既に登録されているチャンクCx(つまりチャンクCと同一内容のチャンクCx)は、チャンクCを含む文書の文書名に対応付けて文書構成テーブル311に登録された識別子HC、及び当該チャンクCxを含む文書の文書名に対応付けて文書構成テーブル311に既に登録されている識別子Hx(=HC)とリンク付けされる。つまり、チャンクCx(=C)が、チャンクCを含む文書の文書名に対応付けられた識別子HC及び当該チャンクCxを含む文書の文書名に対応付けられた識別子Hx(=HC)により共有される。
これに対し、チャンクCの識別子HC(に一致する識別子Hx)がチャンク一覧テーブル312に登録されていないならば(ステップ501のYes)、チャンク登録部334はステップ503に進む。ステップ503においてチャンク登録部334は、チャンクCと当該チャンクCの識別子HCとを対応付けてチャンク一覧テーブル312に登録し、且つ当該チャンクCを含む文書の文書名に対応付けて識別子HCを文書構成テーブル311に登録する。チャンク登録部334は、ステップ502または503を実行すると、チャンク登録処理を終了する。
<文書格納処理の具体例>
次に、可変長重複排除モジュール33による文書格納処理の具体例について、図6及び図7を参照して説明する。
図6はチャンク切り出し点を設定する動作の過程の一例を示す。
図6の例では、仮チャンクC’の識別子HC’の下位2ビット(m=2)が、規定値0x01(A=0x01)に一致したときに、当該仮チャンクC’の終了オフセットである仮終了オフセットOe’が、チャンクCの終了オフセットOeと決定される。このチャンクCの終了オフセットOeは、例えば次のように決定される。ここで、仮チャンクC’の識別子(ハッシュ値)HC’の計算に用いられるハッシュ関数をhβ( )のように表す。
文書データ“The fil…”における仮チャンクC’が仮チャンク“Th”であり、当該仮チャンク“Th”の識別子hβ(“Th”)が0x5Aであるものとする。この識別子0x5Aの下位2ビットは0x02である。この識別子0x5Aの下位2ビットは、当該識別子0x5Aとマスクデータ0x03との論理積演算0x5A&0x03によって求められる。識別子0x5Aの下位2ビット0x02は、規定値0x01に一致しない。このため、仮チャンクC’の区間は、文書データ“The fil…”の末尾側に1(1バイト)だけ広げられる。
すると仮チャンクC’は、仮チャンク“The”となる。仮チャンク“The”の識別子hβ(“The”)が0xF2であるものとする。この識別子0xF2の下位2ビットは0x02であり、規定値0x01に一致しない。このため、仮チャンクC’の区間は更に1だけ広げられる。すると仮チャンクC’は、仮チャンク“The ”となる。仮チャンク“The ”の識別子hβ(“The ”)が0x7Cであるものとする。この識別子0x7Cの下位2ビットは0x00であり、規定値0x01に一致しない。このため、仮チャンクC’の区間は更に1だけ広げられる。
すると仮チャンクC’は、仮チャンク“The f”となる。仮チャンク“The f”の識別子hβ(“The f”)が0x99であるものとする。この識別子0x99の下位2ビットは0x01であり、規定値0x01に一致する。したがって、仮チャンク“The f”の終端位置(仮終了オフセット)が切り出し点として決定される。
図7は、図6の例のようにしてチャンクを切り出しながら文書名が「文書#1」の文書701及び文書名が「文書#2」の文書702の2つの文書の重複検出・排除を行って、文書構成テーブル311及びチャンク一覧テーブル312を構成した例を示す。文書702は、文書701の一部を編集することによって、例えば文書701における文字列“name”及び“specified”の間に文字列“ABCD”を挿入することによって、生成された文書である。
図7の例では、文書701(のデータ)は、識別子HxがHA乃至HIの9つのチャンクを含むチャンクCxの群に分割される。文書701から切り出されるチャンクCxの群のそれぞれの識別子Hxは、図7に示されるように、当該文書701の文書名「文書#1」に対応付けて、当該チャンクCxが切り出される順の配列で文書構成テーブル311に保持される。また、識別子HA乃至HIを含む識別子Hxの群のそれぞれと、その識別子Hxに対応するチャンクCxとの一覧は、図7に示されるようにチャンク一覧テーブル312に保持される。
このような状態で、文書702を文書格納部31に格納するための文書格納処理が行われたものとする。また、この文書格納処理におけるチャンク切り出しにより、文書702が、識別子HxがHA乃至HIとHX及びHYとの11のチャンクを含むチャンクCxの群に分割されるものとする。この文書702から切り出されるチャンクCxの群のそれぞれの識別子Hxは、図7に示されるように、当該文書702の文書名「文書#2」に対応付けて文書構成テーブル311に保持される。ここで、文書702から切り出されるチャンクCxの群の識別子HxであるHA乃至HIとHX及びHYとのうち、HA乃至HIは、対応するチャンクと対をなして既にチャンク一覧テーブル312に登録されている。この場合、文書702から切り出されるチャンクCxの群の識別子Hxのうち、識別子HX及びHYのように未だチャンク一覧テーブル312に登録されていない識別子のみが、図7に示すように、対応するチャンクと対をなしてチャンク一覧テーブル312に登録される。
このように本実施形態においては、可変長でチャンクの切り出しが行われることで、文書名が「文書#1」の文書701と文書名が「文書#2」の文書702との間で重複する文字列が排除される形で当該文書701及び702が格納される。
<文書取得処理>
次に、文書格納装置10における文書取得処理について、図8のフローチャートを参照して説明する。
まず、クライアント装置20から文書格納装置10にネットワーク30を介して文書取得指示が送られたものとする。この文書取得指示は、文書格納装置10から取得されるべき文書を指定する文書名を含んでいる。
文書格納装置10に送られたクライアント装置20からの文書取得指示は、当該文書格納装置10の命令受け付けモジュール32で受け付けられる。命令受け付けモジュール32内の文書取得部320は、この文書取得指示が命令受け付けモジュール32で受け付けられると、当該文書取得指示で指定される文書名と対応付けて文書構成テーブル311に登録されている全てのチャンク群の識別子Hxを取得する(ステップ801)。取得されたチャンク群の識別子Hxの並び順は、前述したように、対応する文書におけるチャンク群の並びに一致する。
文書取得部320は、文書構成テーブル311から識別子Hxの群を取得すると、当該識別子Hxの群とそれぞれ対応付けてチャンク一覧テーブル312に登録されているチャンクCxの群を取得する(ステップ802)。
文書取得部320は、チャンク一覧テーブル312から取得したチャンクCxの群に基づき、当該チャンクCxの群の並び順が、先に取得した当該チャンクCxの群の識別子Hxの並び順に一致するように、クライアント装置20からの文書取得指示で指定された文書名の文書のデータを再構成する(ステップ803)。
命令受け付けモジュール32は、文書取得部320によって再構成された文書データを、クライアント装置20からの文書取得指示に対する応答として当該クライアント装置20に返す(ステップ804)。
ところで、クライアント装置20がユーザからの要求により、文書格納装置10から文書(文書データ)上のデータ断片を取得したい場合がある。クライアント装置20が文書格納装置10から文書上のデータ断片を取得するための方法として、当該文書の文書名に加えて、当該データ断片の当該文書上の位置及び当該データ断片の長さを指定する方法が知られている。文書格納装置10が、このような方法に適応するためには、クライアント装置20によって指定された文書名の文書の文書データを上述のように再構成した上で、当該文書データからクライアント装置20によって指定された位置・長さのデータ断片を取得する必要がある。
そこで、例えば前述のチャンク登録処理で指定の文書名に対応付けてチャンクCの識別子HCを文書構成テーブル311に登録する際に、当該チャンクCの対応する文書データ上での位置・長さを示す情報を当該チャンクCの識別子HCに付加するとよい。このようにすると、この情報を参照して、この情報が付加されている識別子に対応付けてチャンク一覧テーブル312に保持されているチャンクを特定するだけで、指定の文書上の指定の位置・長さのデータ断片を取得することができる。
<本実施形態のまとめ>
本実施形態によれば、可変長重複排除に関する従来の技術で必要であった、チャンクの切り出し点を求めるための識別子の計算と、重複検出に利用するたのチャンク自体の識別子の計算とを統合することができ、これにより、より高速に可変長重複排除を行うことができる。
[変形例]
次に上記実施形態の変形例について説明する。
上記実施形態では、チャンクの切り出し点を定めるときの判定に、「仮チャンクC’の識別子HC’の下位mビットが予め定められた値Aと一致する」という判定条件が適用されている。しかし、これ以外の判定条件を用いることも可能である。
本変形例の特徴は、切り出し点決定部333がチャンクの切り出し点を定めるときの判定に、次の判定条件を適用することを特徴とする。この判定条件とは、「仮チャンクC’の識別子HC’の下位mビットが、当該仮チャンクC’の末尾mビットの値と一致する」ことである。本変形例によれば、次の効果が期待できる。この効果とは、条件判定の対象となる値、つまり仮チャンクC’の末尾mビットの値が予め定められた固定値ではないことから、ハッシュ関数の特性や入力データの特性により仮チャンクC’の識別子(ハッシュ値)HC’の下位mビットの値に偏りがあったとしても、一致箇所(条件一致)の偏りが平準化されることである。
以下、本変形例で適用される、文書格納装置10における文書格納処理について、上記実施形態と相違する点を中心に図9のフローチャートを参照して説明する。なお、図9において、図4のフローチャートと等価な処理ステップには同一参照符号を付してある。
本変形例で適用される文書格納処理が、上記実施形態で適用される文書格納処理と相違する点は、ステップ405で、「Oe’−Os」の値、つまり仮チャンクC’の区間の長さがLmax未満であると判定された場合である。この場合、切り出し点決定部333は、識別子生成部331によって生成された識別子HC’の一部または全部の値が、仮チャンクC’の一部または全部の値に一致するかを判定する(ステップ406a)。ここでは、識別子HC’の下位mビットの値が、仮チャンクC’の末尾のmビットの値に一致するかが判定されるものとする。
もし、識別子HC’の下位mビットの値が仮チャンクC’の末尾のmビットの値に一致するならば(ステップ406aのYes)、上記実施形態におけるステップ406の判定がYesの場合と同様に、切り出し点決定部333によってステップ408の判定処理が行われる。これに対し、識別子HC’の下位mビットの値が仮チャンクC’の末尾のmビットの値に一致しないならば(ステップ406aのNo)、上記実施形態におけるステップ406の判定がNoの場合と同様に、仮チャンク区間設定部332によってステップ407が実行されて、仮チャンクC’の区間が終端側に1バイトだけ拡張される。
次に、本変形例におけるチャンク切り出し点を設定する動作の具体例について、図10を参照して説明する。図10はチャンク切り出し点を設定する動作の過程の一例を示す。
図10の例では、仮チャンクC’の識別子HC’の下位2ビット(m=2)の値が、当該仮チャンクC’の末尾の2ビットの値に一致したときに、当該仮チャンクC’の終了オフセットである仮終了オフセットOe’が、チャンクCの終了オフセットOeと決定される。このチャンクCの終了オフセットOeは、例えば次のように決定される。ここで、仮チャンクC’の識別子(ハッシュ値)HC’の計算に用いられるハッシュ関数をhγ( )のように表す。
文書データ“The fil…”における仮チャンクC’が仮チャンク“Th”であり、当該仮チャンク“Th”の識別子hγ(“Th”)が0xDDであるものとする。この識別子0xDDの下位2ビットは0x01である。この識別子0xDDの下位2ビットは、当該識別子0xDDとマスクデータ0x03との論理積演算0xDD&0x03によって求められる。一方、仮チャンク“Th”の末尾の1文字“h”は0x68であり、この“h”=0x68の下位2ビット、つまり仮チャンク“Th”の末尾の2ビットは0x00である。この仮チャンク“Th”の末尾の2ビットは、“h”=0x68とマスクデータ0x03との論理積演算“0x68&0x03”によって求められる。仮チャンク“Th”の識別子0xDDの下位2ビット0x01は、当該仮チャンク“Th”の末尾の2ビット0x00に一致しない。このため、仮チャンクC’の区間は、文書データ“The fil…”の末尾側に1(1バイト)だけ広げられる。
すると仮チャンクC’は、仮チャンク“The”となる。仮チャンク“The”の識別子hγ(“The”)が0x12であるものとする。この識別子0x12の下位2ビットは0x02である。一方、仮チャンク“The”の末尾の1文字“e”は0x65であり、この“e”=0x65の下位2ビット、つまり仮チャンク“The”の末尾の2ビットは0x01である。仮チャンク“The”の識別子0x12の下位2ビット0x02は、当該仮チャンク“The”の末尾の2ビット0x01に一致しない。このため、仮チャンクC’の区間は、文書データ“The fil…”の末尾側に1だけ広げられる。
すると仮チャンクC’は、仮チャンク“The ”となる。仮チャンク“The ”の識別子hγ(“The ”)が0x3Eであるものとする。この識別子0x3Eの下位2ビットは0x02である。一方、仮チャンク“The ”の末尾の1文字(スペース文字)“ ”は0x60であり、この“ ”=0x60の下位2ビット、つまり仮チャンク“The ”の末尾の2ビットは0x00である。仮チャンク“The ”の識別子0x3Eの下位2ビット0x02は、当該仮チャンク“The ”の末尾の2ビット0x00に一致しない。このため、仮チャンクC’の区間は、文書データ“The fil…”の末尾側に1だけ広げられる。
すると仮チャンクC’は、仮チャンク“The f”となる。仮チャンク“The f”の識別子hγ(“The f”)が0xA2であるものとする。この識別子0xA2の下位2ビットは0x02である。一方、仮チャンク“The f”の末尾の1文字“f”は0x66であり、この“f”=0x66の下位2ビット、つまり仮チャンク“The f”の末尾の2ビットは0x02である。仮チャンク“The f”の識別子0xA2の下位2ビット0x02は、当該仮チャンク“The f”の末尾の2ビット0x02に一致する。したがって、仮チャンク“The f”の終端位置(仮終了オフセット)が切り出し点として決定される。
<本変形例のまとめ>
本変形例によれば、上記実施形態と同様に、可変長重複排除に関する従来の技術で必要であった、チャンクの切り出し点を求めるための識別子の計算と、重複検出に利用するたのチャンク自体の識別子の計算とを統合することができ、これにより、より高速に可変長重複排除を行うことができる。しかも本変形例によれば、チャンクの切り出し点を定める際の条件判定の対象となる値として、仮チャンクC’の末尾mビットの値が用いられることから、ハッシュ関数の特性や入力データの特性により仮チャンクC’の識別子HC’の下位mビットの値に偏りがあったとしても、一致箇所の偏りが平準化される
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
10…文書格納装置、20…クライアント装置、30…ネットワーク、31…文書格納部、32…命令受け付けモジュール、33…可変長重複排除モジュール、34…作業用メモリ、311…文書構成テーブル、312…チャンク一覧テーブル、320…文書取得部、331…識別子生成部、332…仮チャンク区間設定部、333…切り出し点決定部、334…チャンク登録部、341…文書バッファ、342…レジスタ部。

Claims (10)

  1. 識別子生成手段、区間設定手段、切り出し点決定手段及び記憶手段を含む装置において、任意のデータから可変長のデータ断片を取り出すための開始・終了オフセットを決定する方法であって、
    前記任意のデータからデータ断片を取り出すための開始位置を示す開始オフセットを前記区間設定手段が前記記憶手段に設定するステップと、
    前記開始オフセットが設定された際に、当該開始オフセットに対応する仮の終了位置を示す仮終了オフセットを前記区間設定手段が前記記憶手段に設定するステップと、
    前記任意のデータ上の前記開始オフセットから前記仮終了オフセットまでの区間内のデータ断片を仮データ断片として、当該仮データ断片を識別するための当該仮データ断片の識別子を前記識別子生成手段が生成するステップと、
    前記仮データ断片の前記生成された識別子の値の一部または全部が予め定められた条件に合致するときに、前記仮終了オフセットを、前記開始オフセットを基準に前記任意のデータからデータ断片を取り出すための終了位置を示す終了オフセットとして前記切り出し点決定手段が決定するステップと
    を具備することを特徴とする可変長のデータ断片の開始・終了オフセットを決定する方法。
  2. 前記仮データ断片の前記生成された識別子の値の一部または全部が前記予め定められた条件に合致しないとき、前記開始オフセットから前記仮終了オフセットまでの区間が拡張されるように、前記区間設定手段が当該仮終了オフセットを設定し直すステップを更に具備することを特徴とする請求項1記載の可変長のデータ断片の開始・終了オフセットを決定する方法。
  3. 前記終了オフセットが決定された場合、前記記憶手段に設定されている前記開始オフセットが、当該決定された終了オフセットの位置を前記任意のデータから次のデータ断片を取り出すための開始位置として示すように、前記区間設定手段が当該開始オフセットを設定し直すステップを更に具備することを特徴とする請求項2記載の可変長のデータ断片の開始・終了オフセットを決定する方法。
  4. 前記予め定められた条件が、前記仮データ断片の前記生成された識別子の値の一部または全部が、予め定められた値と一致することである請求項3記載の可変長のデータ断片の開始・終了オフセットを決定する方法。
  5. 前記予め定められた条件が、前記仮データ断片の前記生成された識別子の値の一部または全部が、当該仮データ断片の値の一部または全部と一致することである請求項3記載の可変長のデータ断片の開始・終了オフセットを決定する方法。
  6. 前記開始オフセットから前記仮終了オフセットまでの区間の長さが予め定められた最大区間長以上である場合、前記仮データ断片の前記生成された識別子の値の一部または全部が前記予め定められた条件に合致するかに無関係に、当該仮終了オフセットが前記終了オフセットとして決定されることを特徴とする請求項3記載の可変長のデータ断片の開始・終了オフセットを決定する方法。
  7. 前記開始オフセットから前記仮終了オフセットまでの区間の長さが予め定められた最小区間長未満である場合には、前記仮データ断片の前記生成された識別子の値の一部または全部が前記予め定められた条件に合致していても、前記仮終了オフセットが前記終了オフセットとして決定されずに、前記開始オフセットから前記仮終了オフセットまでの区間が拡張されるように当該仮終了オフセットが設定し直されることを特徴とする請求項3記載の可変長のデータ断片の開始・終了オフセットを決定する方法。
  8. 任意のデータから可変長のデータ断片を取り出すための開始・終了オフセットを決定する装置において、
    記憶手段と、
    前記任意のデータからデータ断片を取り出すための開始位置を示す開始オフセット及び当該開始オフセットに対応する仮の終了位置を示す仮終了オフセットを前記記憶手段に設定する区間設定手段と、
    前記任意のデータ上の前記開始オフセットから前記仮終了オフセットまでの区間内のデータ断片を仮データ断片として、当該仮データ断片を識別するための当該仮データ断片の識別子を生成する識別子生成手段と、
    前記仮データ断片の前記生成された識別子の値の一部または全部が予め定められた条件に合致するときに、前記仮終了オフセットを、前記開始オフセットを基準に前記任意のデータからデータ断片を取り出すための終了オフセットとして決定する切り出し点決定手段と
    を具備することを特徴とする開始・終了オフセットを決定する装置。
  9. 前記区間設定手段は、前記仮データ断片の前記生成された識別子の値の一部または全部が前記予め定められた条件に合致しないとき、前記開始オフセットから前記仮終了オフセットまでの区間が拡張されるように当該仮終了オフセットを設定し直すことを特徴とする請求項8記載の開始・終了オフセットを決定する装置。
  10. 前記区間設定手段は、前記終了オフセットが決定された場合、前記記憶手段に設定されている前記開始オフセットが、当該決定された終了オフセットの位置を前記任意のデータから次のデータ断片を取り出すための開始位置として示すように、当該開始オフセットを設定し直し、且つ前記記憶手段に設定されている前記仮終了オフセットが当該設定し直された開始オフセットに対応するように当該仮終了オフセットを設定し直すことを特徴とする請求項9記載の開始・終了オフセットを決定する装置。
JP2009213534A 2009-09-15 2009-09-15 可変長のデータ断片の開始・終了オフセットを決定する方法及び装置 Active JP4960417B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009213534A JP4960417B2 (ja) 2009-09-15 2009-09-15 可変長のデータ断片の開始・終了オフセットを決定する方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009213534A JP4960417B2 (ja) 2009-09-15 2009-09-15 可変長のデータ断片の開始・終了オフセットを決定する方法及び装置

Publications (2)

Publication Number Publication Date
JP2011065268A JP2011065268A (ja) 2011-03-31
JP4960417B2 true JP4960417B2 (ja) 2012-06-27

Family

ID=43951474

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009213534A Active JP4960417B2 (ja) 2009-09-15 2009-09-15 可変長のデータ断片の開始・終了オフセットを決定する方法及び装置

Country Status (1)

Country Link
JP (1) JP4960417B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4852135B2 (ja) * 2009-09-30 2012-01-11 株式会社東芝 データ分割方法及び装置
US8990171B2 (en) * 2011-09-01 2015-03-24 Microsoft Corporation Optimization of a partially deduplicated file
KR101912727B1 (ko) 2014-02-14 2018-10-29 후아웨이 테크놀러지 컴퍼니 리미티드 데이터 흐름 분할 포인트를 검색하기 위한 서버 기반 방법, 및 서버
US11030156B2 (en) * 2015-12-28 2021-06-08 Sandisk Technologies Llc Key-value store with partial data access
JP6841024B2 (ja) 2016-12-09 2021-03-10 富士通株式会社 データ処理装置,データ処理プログラムおよびデータ処理方法
JP7295422B2 (ja) 2019-09-10 2023-06-21 富士通株式会社 情報処理装置および情報処理プログラム

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
US8819288B2 (en) * 2007-09-14 2014-08-26 Microsoft Corporation Optimized data stream compression using data-dependent chunking
JP4852135B2 (ja) * 2009-09-30 2012-01-11 株式会社東芝 データ分割方法及び装置

Also Published As

Publication number Publication date
JP2011065268A (ja) 2011-03-31

Similar Documents

Publication Publication Date Title
JP4960417B2 (ja) 可変長のデータ断片の開始・終了オフセットを決定する方法及び装置
US20170277599A1 (en) Data boundary identification for identifying variable size data chunks
KR101074010B1 (ko) 블록 단위 데이터 압축 및 복원 방법 및 그 장치
JP5719037B2 (ja) ストレージ装置及び重複データ検出方法
US8108348B2 (en) Multi-version control method for data documents and device thereof
US11249665B2 (en) Object synthesis
US20130067237A1 (en) Providing random access to archives with block maps
US9348832B2 (en) Method and device for reassembling a data file
KR101727860B1 (ko) 문서 파일의 복구 장치 및 그 방법
AU2013210018A1 (en) Location independent files
JP5237661B2 (ja) ファイル同期装置、ファイル同期方法及びファイル同期プログラム
US9465694B2 (en) Method and apparatus for recovering partition based on file system metadata
US8909606B2 (en) Data block compression using coalescion
CN116340055A (zh) 一种固态硬盘的数据恢复方法及系统
JP4852135B2 (ja) データ分割方法及び装置
US11182342B2 (en) Identifying common file-segment sequences
CN108021472B (zh) ReFS文件系统的格式化恢复方法及存储介质
KR101486235B1 (ko) 대용량 포렌식 이미지의 정보 추출 장치
US9496895B2 (en) Compression method and decompression method
WO2012053152A1 (ja) ストレージシステム、データ管理装置、方法及びプログラム
CN104991963B (zh) 文件处理方法和装置
JP4467965B2 (ja) 差分ファイル作成プログラム及び方法
JP2004062475A (ja) インデクス格納方法
EP2164005B1 (en) Content addressable storage systems and methods employing searchable blocks
US9189488B2 (en) Determination of landmarks

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120209

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: 20120228

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: 20120322

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

Free format text: PAYMENT UNTIL: 20150330

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4960417

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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