JP2011186954A - データ管理装置及びデータ管理方法 - Google Patents

データ管理装置及びデータ管理方法 Download PDF

Info

Publication number
JP2011186954A
JP2011186954A JP2010053795A JP2010053795A JP2011186954A JP 2011186954 A JP2011186954 A JP 2011186954A JP 2010053795 A JP2010053795 A JP 2010053795A JP 2010053795 A JP2010053795 A JP 2010053795A JP 2011186954 A JP2011186954 A JP 2011186954A
Authority
JP
Japan
Prior art keywords
data
filter
stage
entry
bloom filter
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.)
Granted
Application number
JP2010053795A
Other languages
English (en)
Other versions
JP5359941B2 (ja
Inventor
Yoshihiro Tsuchiya
芳浩 土屋
Yasuo Noguchi
泰生 野口
Takashi Watanabe
高志 渡辺
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010053795A priority Critical patent/JP5359941B2/ja
Priority to US13/028,409 priority patent/US8255406B2/en
Publication of JP2011186954A publication Critical patent/JP2011186954A/ja
Application granted granted Critical
Publication of JP5359941B2 publication Critical patent/JP5359941B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】記憶手段へのアクセス回数を低減する。
【解決手段】複数段のブルームフィルタの1段目が、複数のデータブロックと少なくとも同一数のフィルタ部f(1)に分割され、p(pは2以上の整数)段目が、(p−1)段目のフィルタ部を複数個まとめた大きさのフィルタ部に分割される。データのハッシュ値を用いてデータのエントリを登録する登録部13は、1段目において、データが記憶されているデータブロックに対応するフィルタ部にデータのエントリを登録するとともに、p段目において、1段目のブルームフィルタでデータのエントリが登録されたフィルタ部に対応するフィルタ部にデータのエントリを登録する。検索部15は、検索対象のデータのエントリが1段目のブルームフィルタのフィルタ部のいずれに登録されているかを、ブルームフィルタの段数の大きい側から絞り込みながら検索する。
【選択図】図2

Description

本件は、データ管理装置及びデータ管理方法に関する。
従来、大規模なデータを木構造で管理する場合、B木(Btree)と呼ばれるデータ構造での管理が比較的多く行われていた。B木は、単純な2分木に比べて、一つのブロックに複数のデータエントリ(以下、エントリと呼ぶ)を格納するので、エントリの追加があっても木構造の形の変化が波及する範囲を狭くできるという利点がある。このため、B木はハードディスクなどのディスク向けのデータ管理方法として利用されることが多い。
しかしながら、ディスク上において木構造で管理されたデータを検索する場合、複数のデータブロックを実際に読み込む必要がある。また、一般に、ディスクに対するI/O(input/output)は、メモリアクセスに比べると遅いことから、ディスク上でのデータ検索には手間と時間を要するおそれがある。このため、最近では、ディスクI/Oによる検索の遅延を避けるためには、メモリ中に木構造をもつなどの対応も考えられている。しかるに、B木では、エントリ数が多くなると、それに応じて必要なメモリ量が増えてしまうおそれがある。このため、木構造のうち最も良く読みこまれる部分のみをメモリ中に格納する方法(キャッシュ)を利用する方法も考えられている。
これに対し、最近では、ブルームフィルタ(Bloom Filter)と呼ばれるデータ構造も知られてきている。ブルームフィルタは、あるエントリが既存の集合に属するかどうかを効率的に調べる方法である(例えば、特許文献1参照)。
特開2007−52698号公報
上述したように、B木は多量のデータを扱うことができるため、キャッシュを適切に実装すれば、ディスクI/Oを減らすことは可能である。しかしながら、その回数はある一定以上減らすことはできないし、また、エントリの追加により木構造が変化すると、木構造管理のためのI/Oが必要になることもある。また、ブルームフィルタは、エントリの存在だけがわかるものであるため、そのままではデータ管理に使うことはできない。
そこで本件は上記の課題に鑑みてなされたものであり、記憶手段へのアクセス回数を低減することが可能なデータ管理装置及びデータ管理方法を提供することを目的とする。
本明細書に記載のデータ管理装置は、複数のデータブロックを有し、当該データブロック上にデータを記憶する記憶手段と、前記データのハッシュ値を生成するハッシュ値生成手段と、複数段のブルームフィルタを有し、当該ブルームフィルタの1段目が、前記複数のデータブロックと少なくとも同一数のフィルタ部に分割され、p(pは2以上の整数)段目が、(p−1)段目のフィルタ部を複数個まとめた大きさのフィルタ部に分割された、メモリ手段と、前記データのハッシュ値を用いて前記データのエントリを複数段のブルームフィルタそれぞれに登録する登録手段と、前記複数段のブルームフィルタの各フィルタ部に、検索対象のデータのエントリが登録されている可能性があるか否かを、前記ハッシュ値生成手段において生成された前記検索対象のデータのハッシュ値を用いて検索する検索手段と、を備え、前記登録手段は、前記1段目のブルームフィルタにおいて、前記データが記憶されているデータブロックに対応するフィルタ部に前記データのエントリを登録するとともに、前記p段目のブルームフィルタにおいて、前記1段目のブルームフィルタで前記データのエントリが登録されたフィルタ部に対応するフィルタ部に前記データのエントリを登録し、前記検索手段は、前記検索対象のデータのエントリが前記1段目のブルームフィルタのフィルタ部のいずれに登録されているかを、前記ブルームフィルタの段数の大きい側から絞り込みながら検索するデータ管理装置である。
本明細書に記載のデータ管理方法は、記憶手段が有する複数のデータブロックにデータを記憶する工程と、前記データのハッシュ値を生成する工程と、前記複数のデータブロックと少なくとも同一数のフィルタ部に分割された1段目のブルームフィルタと、(p−1)段目(pは2以上の整数)のブルームフィルタのフィルタ部を複数個まとめた大きさのフィルタ部に分割されたp(pは2以上の整数)段目のブルームフィルタと、を含む複数段のブルームフィルタに、前記ハッシュ値を用いて前記データのエントリを登録する工程と、前記複数段のブルームフィルタに検索対象のデータのエントリが登録されているか可能性があるか否かを、前記検索対象のデータのハッシュ値から検索する工程と、を含み、前記登録する工程では、前記1段目のブルームフィルタにおいて、前記データが記憶されているデータブロックに対応するフィルタ部に前記データのエントリを登録し、前記p段目のブルームフィルタにおいて、前記1段目のブルームフィルタで前記データのエントリが登録されたフィルタ部に対応するフィルタ部に前記データのエントリを登録し、前記検索する工程では、前記検索対象のデータのエントリが前記1段目のブルームフィルタのフィルタ部のいずれに登録されているかを、前記ブルームフィルタの段数の大きい側から絞り込みながら検索するデータ管理方法である。
本明細書に記載のデータ管理装置及びデータ管理方法は、記憶手段へのアクセス回数を低減することができるという効果を奏する。
一実施形態に係る情報処理システムの構成を概略的に示すブロック図である。 多段ブルームフィルタの構成及び役割を説明するための図である。 多段ブルームフィルタを模式的に示した図である。 データの登録処理を示すフローチャートである。 登録する対象データのハッシュ値及びハッシュ値を1024,2048,4096で除したときの余りを示す表である。 データの登録処理を説明するための図である。 データの検索処理を示すフローチャートである。 検索する対象データのハッシュ値及びハッシュ値を1024,2048,4096で除したときの余りを示す表である。 データの検索処理を説明するための図(その1)である。 データの検索処理を説明するための図(その2)である。 データの検索処理の変形例を示す図である。
以下、データ管理装置及びデータ管理方法の一実施形態について、図1〜図10に基づいて詳細に説明する。
図1には、データ管理装置としての情報処理システム100の概略構成がブロック図にて示されている。図1に示すように、情報処理システム100は、情報処理装置10と、記憶手段としての磁気記録装置(HDD(Hard disk drive))20と、を備えている。
情報処理装置10は、CPU(Central Processing Unit)12と、メモリ手段としてのメモリ14と、を有する。CPU12は、HDD20におけるI/Oの制御や、HDD20に記憶されているデータ管理などを行う。CPU12は、図1に示すように、ハッシュ値生成手段としてのハッシュ値生成部16と、登録手段としての登録部13と、検索手段としての検索部15と、を有する。ハッシュ値生成部16は、k個のハッシュ値を生成する。登録部13は、ハッシュ値生成部16で生成されたハッシュ値を用いて、HDD20に記憶されたデータのエントリをメモリ14に登録する。検索部15は、ハッシュ値生成部16で生成されたハッシュ値を用いて、メモリ14上で、HDD20に記憶されたデータエントリを検索する。メモリ14は、RAM(Random Access Memory)から成り、多段ブルームフィルタ18を有している。多段ブルームフィルタ18には、HDD20のデータブロックに記録されたデータのエントリが登録される。
HDD20は、記憶媒体としてのハードディスク上に、多数(ここでは、b個とする)のデータブロック(図2の最下部参照)を有している。1つのデータブロックには、固定長のデータをa個記憶できる容量が設定されており、データはいずれかのデータブロックに追記されるものとする。すなわち、本実施形態では、HDD20のハードディスク上に、最大でn=a×b個のエントリを記憶できるようになっている。HDD20の動作は、CPU12により制御されており、CPU12では、b個のデータブロックのうち、現在書き込み中のブロック番号(i)を管理している。また、CPU12は、データブロック中で最後に書き込みが行われたオフセット(j)を管理している。なお、HDD20に記憶されるデータは固定長である場合に限らず、不定長であっても勿論良い。
図2は、多段ブルームフィルタ18の構成及び役割を説明するための図である。この図2に示すように、多段ブルームフィルタ18は、メモリ量sビットのブルームフィルタをh段含んでいる。この場合、多段ブルームフィルタ18全体でのメモリ量はh×sビットとなる。
h段のブルームフィルタのうち、最上段(h段目)のブルームフィルタ18(h)は、n個のデータエントリすべてを登録する役割を有している。すなわち、h段目のブルームフィルタ18(h)は、データエントリが全て登録される1つのフィルタ部f(h)を有している。
(h−1)段目のブルームフィルタ18(h−1)は、s/xビットごとに分割されたフィルタ部f(h−1)をx個(図2ではx=2)有している。これらs/xビットのフィルタ部f(h−1)それぞれには、HDD20のb個のデータブロックをx等分したグループが対応しており、各フィルタ部f(h−1)は、n/xエントリを登録する役割を有している。
(h−2)段目のブルームフィルタ18(h−2)では、s/x2ビットごとに分割されたフィルタ部f(h−2)をx2個有している。これらs/x2ビットのフィルタ部f(h−2)それぞれには、HDD20のb個のデータブロックをx2等分したグループが対応しており、各フィルタ部f(h−2)は、n/x2エントリを登録する役割を有している。
すなわち、換言すれば、本実施形態では、p(pは2以上の整数)段目のブルームフィルタ18(p)は、(p−1)段目のブルームフィルタ18(p−1)のフィルタ部を複数個(ここでは2個)まとめた大きさのフィルタ部に分割されているともいえる。
最後の段(1段目)のブルームフィルタ18(1)も同様に分割されているが、特に、1段目のブルームフィルタ18(1)では、s/bビットごとに分割されたフィルタ部f(1)をb個有している。すなわち、1段目のブルームフィルタのフィルタ部の数は、データブロックの数と同一数に設定されている。これらs/bビットのフィルタ部f(1)それぞれには、HDD20のb個のデータブロックをb等分したグループ(データブロック1つ)が対応しており、各フィルタ部f(1)は、n/bエントリを登録する役割を有している。なお、bは、次式(1)にて表すことができる。
b=x(h-1) …(1)
なお、上記においては、上式(1)を満たす整数hが存在することを前提としているが、これに限られるものではない。整数hが存在しない場合には、例えば各段で用いているxの値を異なる値にしても良く、要は、結果的に1段目のブルームフィルタのフィルタ部f(1)の数がb個となるようにすれば良い。
図3は、説明を簡易にするために、多段ブルームフィルタ18を模式的に示した図である。この図3の例は、多段ブルームフィルタ18がブルームフィルタを3段有している例である。1段目のブルームフィルタ18(1)は、4つのデータブロックと同一数のフィルタ部f(1)を有している。2段目のブルームフィルタ18(2)は、1段目のブルームフィルタ18(1)のフィルタ部f(1)を2つ分まとめた大きさのフィルタ部f(2)を2つ有している。3段目のブルームフィルタ18(3)は、2段目のブルームフィルタ18(2)のフィルタ部f(2)を2つ分まとめた大きさの1つのフィルタ部f(3)を有している。なお、図3では、フィルタ部f(1)が1024ビット、フィルタ部f(2)が2048ビット、フィルタ部f(3)が4096ビットであるものとする。
次に、本実施形態の情報処理システム100におけるデータ管理方法(データ(エントリ)の登録方法及びデータ(エントリ)の検索方法)について、図3の場合を例に採り、図4〜図10に基づいて詳細に説明する。
(データ(エントリ)の登録方法)
まず、データ(エントリ)の登録方法について、図4のフローチャートに沿って、その他の図面を適宜参照しつつ説明する。なお、本処理の前提として、データは、HDD20に対して入力されるが、HDD20から削除されることはないものとする。
図4では、まず、ステップS10において、CPU12の登録部13が、段数を示すパラメータpを1に設定する。次いで、ステップS12では、登録部13が、対象データを受領したか、すなわち、データエントリがあったか否かを判断する。ここでの判断が肯定されると、次のステップS14において、ハッシュ値生成部16が、対象データのk個のハッシュ値を計算する。本実施形態では、ハッシュ値生成部16は、1つのデータにつき、ハッシュ値を3個計算するものとする(すなわち、k=3)。ここでは、例えば、図5の表に示すように、対象データのハッシュ値として、「1234567」、「3984012」、「9803323」が算出されたものとする。
図4に戻り、次のステップS16では、登録部13は、p段目、ここでは1段目、のブルームフィルタに、k個、ここでは3個、のハッシュ値を用いてデータエントリを登録する。具体的には、登録部13は、1段目のブルームフィルタのフィルタ部f(1)それぞれのメモリ量(1024ビット)を用い、3つのハッシュ値を1024で割った余りを算出する。そして、登録部13は、図5に示すように算出された余り「647」、「652」、「571」を、対象データが格納されたデータブロックに対応するフィルタ部に登録する。この場合の登録は、対応するフィルタ部の1024ビットのうち、647ビット、652ビット、571ビットをONにすることにより行う。なお、図6の1段目のブルームフィルタf(1)では、当該ブルームフィルタのフィルタ部に対象データのエントリが登録された状態が示されている。
次いで、ステップS18においては、登録部13は、pがh(ここでは、h=3)であるか否かを判断する。すなわち、登録部13は、最上段のブルームフィルタまで、対象データを登録したか否かを判断する。ここでの判断が否定されると、ステップS20に移行し、登録部13は、pを1インクリメント(p←p+1、すなわちP←2)して、ステップS16に戻る。
次のステップS16では、登録部13は、p段目(ここでは、2段目)のブルームフィルタにデータエントリを登録する。この場合、登録部13は、2段目のブルームフィルタ18(2)の1つのフィルタ部f(2)のメモリ量(2048ビット)を用いて、3つのハッシュ値を2048で割った余りを算出する。そして、登録部13は、図5に示すように算出された余り「1671」、「652」、「1595」を1段目のブルームフィルタ18(1)においてデータが登録されたフィルタ部f(1)に対応する2段目のブルームフィルタ19(2)のフィルタ部f(2)に登録する。ここで、「データが登録されたフィルタ部f(1)に対応するフィルタ部f(2)」とは、データが登録されたフィルタ部f(1)の真上に位置するフィルタ部f(2)(図6においてハッチングを付して示すフィルタ部f(2))を意味する。この登録においては、ハッチングを付して示すフィルタ部f(2)の2048ビットのうち、1671ビット、652ビット、1595ビットをONにする。
次いで、ステップS18では、登録部13は、pがh(ここでは、h=3)であるか否かを判断する。ここでの判断が否定されると、ステップS20に移行し、登録部13は、pを1インクリメント(p←p+1、すなわちP←3)して、ステップS16に戻る。
次のステップS16では、登録部13は、p段目(ここでは、3段目)のブルームフィルタ18(3)にデータエントリを登録する。この場合、登録部13は、3段目のブルームフィルタ18(3)の1つのフィルタ部f(3)のメモリ量(4096ビット)を用いて、3つのハッシュ値を4096で割った余りを算出する。そして、登録部13は、図5に示すように算出された余り「1671」、「2700」、「1595」を1、2段目のブルームフィルタ18(1)、18(2)においてデータが登録されたフィルタ部に対応する3段目のブルームフィルタ18(3)のフィルタ部f(3)に登録する。この登録では、フィルタ部f(3)の4096ビットのうち、1671ビット、2700ビット、1595ビットをONにする。図6の3段目のブルームフィルタ18(3)では、当該ブルームフィルタのフィルタ部f(3)に対象データのエントリが登録された状態が示されている。
以上のようにして、ステップS16の処理が終了すると、ステップS18の判断が肯定されるので、図4の対象データの登録処理が全て終了することとなる。
(データ(エントリ)の検索方法)
次に、データ(エントリ)の検索方法について、図7のフローチャートに沿って、その他の図面を適宜参照しつつ説明する。
図7のフローチャートでは、まず、ステップS30において、CPU12の検索部15が、段数を示すパラメータpをh(ここではh=3)に設定する。次いで、ステップS32では、検索部15が、h段目のブルームフィルタの全フィルタ部を対象フィルタに設定する。本実施形態では、図3における3段目のブルームフィルタ18(3)の1つのフィルタ部f(3)が対象フィルタに設定される。
次いで、検索部15は、ステップS34において、検索対象データの検索要求を受領したか否かを判断する。ここでの判断が肯定されると、ステップS36に移行し、ハッシュ値生成部16が、検索対象データのk個(ここでは3個)のハッシュ値を計算する。本実施形態では、図8に示すような3つのハッシュ値「8324797」、「5890831」、「3980339」が算出されたものとする。
次いで、ステップS38では、検索部15が、p段目(3段目)の対象フィルタにおいて、k個のハッシュ値を用いた照合を行う。この照合では、検索部15は、登録の場合と同様、図8に示すように、ハッシュ値を3段目のビット数(4096)で除したときの余り「1725」、「783」、「3123」ビットを算出する。そして、検索部15は、これら各ビットが、対象フィルタ部においてONになっているか否かを判定する。
次いで、ステップS40では、検索部15が、余りのビットの全てがONであるフィルタ部の抽出を行う。なお、ここでは、対象フィルタ部において余りのビットの全てがONになっていたものとする。図9では、余りのビットが全てONになっていた対象フィルタに、「○」印を付し、余りのビットの全てがONではなかった対象フィルタに、「×」印を付している。なお、「○」印が付されたフィルタ部は、陽性、又は疑陽性のフィルタ部であると言うことができ、「×」印が付されたフィルタ部は、陰性のフィルタ部であると言うことができる。
次いで、ステップS42では、検索部15は、抽出されたフィルタ部があったか否かを判断する。ここでの判断が否定された場合には、ステップS56に移行し、検索部15は、検索対象データが新たなデータ、すなわちHDD20に記憶されていないデータであるとの判定を行い、図7の全処理を終了する。一方、ステップS42の判断が肯定された場合には、ステップS44に移行する。
ステップS44では、検索部15は、pが1であるか否かを判断する。ここでの判断が否定された場合には、ステップS46に移行し、検索部15は、抽出されたフィルタ部に対応する(p−1)段目のフィルタ部を新たな対象フィルタ部に設定する。本実施形態では、3段目のフィルタ部f(3)の直下に位置する2段目の2つのフィルタ部f(2)の両方が対象フィルタ部に設定されることになる。
次いで、ステップS48では、検索部15が、pを1デクリメント(p←p−1,ここではp←2)した後、ステップS38に戻る。
ステップS38では、検索部15が、p段目(2段目)の対象フィルタ部において、k個(3個)のハッシュ値を用いた照合を行う。この照合では、検索部15は、ハッシュ値を2段目のビット数(2048)で除したときの余り「1725」、「783」、「1075」を算出し、これらのビットが、対象フィルタ部f(2)においてONになっているか否かを判定する。そして、ステップS40では、検索部15は、余りのビットの全てがONになっていたフィルタ部を抽出する。なお、ここでは、図9の2段目のブルームフィルタ18(2)の左側のフィルタ部f(2)のみが抽出されたものとする。
次いで、ステップS42では、検索部15は、抽出されたフィルタ部があったか否かを判断する。ここでの判断が否定された場合には、ステップS56に移行するが、肯定された場合には、ステップS44に移行する。ステップS44では、検索部15が、pが1であるか否かを判断する。ここでの判断が否定された場合には、ステップS46に移行し、検索部15が、抽出されたフィルタ部に対応する(p−1)段目のフィルタ部を新たな対象フィルタ部に設定する。本実施形態では、2段目の左端のフィルタ部f(2)の直下に位置する1段目の2つのフィルタ部(左端及び左から2番目のフィルタ部f(1))が対象フィルタ部に設定されることになる。
次いで、ステップS48では、検索部15がpを1デクリメント(p←p−1,ここではp←1)した後、ステップS38に戻る。ステップS38では、検索部15が、p段目(1段目)の対象フィルタにおいて、k個(3個)のハッシュ値を用いた照合を行う。この照合では、検索部15は、ハッシュ値を1段目のビット数(1024)で除したときの余り「701」、「783」、「51」を算出し、これらのビットが、対象フィルタ部においてONになっているか否かを判定する。そして、ステップS40では、検索部15は、余りのビットの全てがONになっていたフィルタ部を抽出する。なお、ここでは、図9の1段目のブルームフィルタ18(1)の左端のフィルタ部のみが抽出されたものとする。
次いで、ステップS42では、検索部15は、抽出されたフィルタ部があったか否かを判断する。ここでの判断が否定された場合には、ステップS56に移行するが、肯定された場合には、ステップS44に移行する。ステップS44では、検索部15が、pが1であるか否かを判断する。ここでの判断が肯定されると、ステップS50に移行する。
ステップS50では、検索部15は、抽出されたフィルタ部に対応するディスクブロックを読み出してデータの有無をチェックする。このステップS52においてデータの有無を実際にチェックするのは、ブルームフィルタでは、疑陽性の発生の可能性があり、抽出されたフィルタ部に対応するデータブロックにデータが存在しない場合があるからである。なお、疑陽性については、後述する。
次いで、ステップS52では、検索部15は、対象データが存在していた否かを判断する。ここでの判断が肯定された場合には、ステップS54において検索対象データがHDD20に保存されていると判定して、図7の全処理を終了する。一方、ステップS52の判断が否定された場合には、ステップS50に戻り、検索部15は、抽出されたフィルタ部が複数あれば、先ほどチェックしたフィルタ部以外のフィルタ部に対応するディスクブロックを読み出して、検索対象データが存在するか否かをチェックする。
なお、上記においては、ブルームフィルタが3段で、ディスクブロックが4個である場合を例に採り説明したが、図4、図7の処理は、ブルームフィルタの段数、ディスクブロックの個数等にかかわらず、実行することができる。
次に、ブルームフィルタの疑陽性による影響について説明する。
疑陽性とは、図10の1段目のブルームフィルタの左端のフィルタ部に示すように、検索対象データがないにもかかわらず、対応するデータブロックに検索対象データが存在すると判定される場合をいう。ブルームフィルタには、このような疑陽性が発生する可能性がある。
ブルームフィルタの疑陽性の発生確率FPRは、ビット長がmのブルームフィルタがh段ある場合、エントリ数n(n<m)、ハッシュ関数の個数をk個とすると、ブルームフィルタの性質より、次式(2)のように表すことができる。
FPR=(1−(1−1/m)kn)k≒(1−e(-kn/m)k …(2)
この場合、k,m,nを変更することにより、FPRを非常に小さくすることができる。すなわち、本実施形態では、k,m、nの設定次第で、FPRを1よりも非常に小さい値(ほぼ0)に設定することができるようになる。このため、図7のステップS52の判断が否定される可能性をほぼ0とすることができる(つまりFPR=0)ので、ステップS50におけるデータのチェック回数をほぼ1回(1+FPR)に抑えることが可能である。
また、上述したように、本実施形態では、x(h-1)=bの関係が成り立っていることから、高さ(段数)hは、次式(3)にて表すことができる。
h=log(b)/log(x)+1 …(3)
上記は、log(b)/log(x)が割り切れる場合を前提にしたが、そうでない場合、段によりxの値を他の段とは変えることで、hを決定することができる。
ここで、一つのフィルタ部ではハッシュ値の数(k回(定数))だけ照合を行う必要があり、検索における1段あたりのフィルタ部の数は多くてもxである。したがって、検索によるメモリアクセス回数Mは、最大でも次式(3)で表される程度である。
M=k×x×log(b)/log(x) …(3)
すなわち、高さ(段数)h(=メモリ量)は、xを増やすことにより小さくすることができ、その一方で、検索回数はxの増加とともに大きくなるというトレードオフの関係にある。したがって、この関係を考慮することで、適切なメモリの運用が可能となる。
以上、詳細に説明したように、本実施形態によると、メモリ14が、複数段のブルームフィルタ18を有し、当該ブルームフィルタの1段目が、複数のデータブロックと少なくとも同一数のフィルタ部f(1)に分割され、p(pは2以上の整数)段目が、(p−1)段目のフィルタ部を複数個まとめた大きさのフィルタ部に分割されている。また、ハッシュ値生成部16により生成されたデータのハッシュ値を用いてデータのエントリを複数段のブルームフィルタそれぞれに登録する登録部13は、1段目のブルームフィルタにおいて、データが記憶されているデータブロックに対応するフィルタ部にデータのエントリを登録するとともに、p段目のブルームフィルタにおいて、1段目のブルームフィルタで前記データのエントリが登録されたフィルタ部に対応するフィルタ部にデータのエントリを登録する。更に、検索部15は、検索対象のデータのエントリが1段目のブルームフィルタのフィルタ部のいずれに登録されているかを、ブルームフィルタの段数の大きい側から絞り込みながら検索する。このように、本実施形態では、データが記憶されているデータブロックに対応する多段ブルームフィルタの各フィルタ部にデータのエントリを登録をすることで、検索対象データを読み出すためのHDD20に対するアクセス(I/O)を、ほぼ1回とすることができる。また、本実施形態では、管理するデータのビット長(例えば160ビット)とは関係なく、メモリ14の大きさに合わせて、ブルームフィルタの段数hを変更することができるので、メモリ効率を向上することが可能である。また、エントリの追加によりブルームフィルタの構造等が変化することがないため、簡易にエントリの追加を行うことができる。
なお、上記実施形態では、図10のように、検索対象データが存在する可能性のあるデータブロックが複数ある場合に、当該可能性のあるデータブロックを全て抽出した上で、データブロックのチェックを行う場合について説明した。しかしながら、これに限られるものではなく、例えば、図11に示すように、検索対象データが存在する可能性のあるデータブロックを1つ抽出した直後に、当該データブロックのチェックを行うこととしても良い。この場合、当該データブロックにデータがないと判断された場合にのみ、次のデータブロックのチェックを行うこととすれば良い。このようにすることで、データチェックの効率を向上することが可能となる。
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
13 登録部(登録手段)
14 メモリ(メモリ手段)
15 検索部(検索手段)
16 ハッシュ値生成部(ハッシュ値生成手段)
18 多段ブルームフィルタ
100 情報処理システム(データ管理装置)

Claims (2)

  1. 複数のデータブロックを有し、当該データブロック上にデータを記憶する記憶手段と、
    前記データのハッシュ値を生成するハッシュ値生成手段と、
    複数段のブルームフィルタを有し、当該ブルームフィルタの1段目が、前記複数のデータブロックと少なくとも同一数のフィルタ部に分割され、p(pは2以上の整数)段目が、(p−1)段目のフィルタ部を複数個まとめた大きさのフィルタ部に分割された、メモリ手段と、
    前記データのハッシュ値を用いて前記データのエントリを複数段のブルームフィルタそれぞれに登録する登録手段と、
    前記複数段のブルームフィルタの各フィルタ部に、検索対象のデータのエントリが登録されている可能性があるか否かを、前記ハッシュ値生成手段において生成された前記検索対象のデータのハッシュ値を用いて検索する検索手段と、を備え、
    前記登録手段は、前記1段目のブルームフィルタにおいて、前記データが記憶されているデータブロックに対応するフィルタ部に前記データのエントリを登録するとともに、前記p段目のブルームフィルタにおいて、前記1段目のブルームフィルタで前記データのエントリが登録されたフィルタ部に対応するフィルタ部に前記データのエントリを登録し、
    前記検索手段は、前記検索対象のデータのエントリが前記1段目のブルームフィルタのフィルタ部のいずれに登録されているかを、前記ブルームフィルタの段数の大きい側から絞り込みながら検索することを特徴とするデータ管理装置。
  2. 記憶手段が有する複数のデータブロックにデータを記憶する工程と、
    前記データのハッシュ値を生成する工程と、
    前記複数のデータブロックと少なくとも同一数のフィルタ部に分割された1段目のブルームフィルタと、(p−1)段目(pは2以上の整数)のブルームフィルタのフィルタ部を複数個まとめた大きさのフィルタ部に分割されたp(pは2以上の整数)段目のブルームフィルタと、を含む複数段のブルームフィルタに、前記ハッシュ値を用いて前記データのエントリを登録する工程と、
    前記複数段のブルームフィルタに検索対象のデータのエントリが登録されているか可能性があるか否かを、前記検索対象のデータのハッシュ値から検索する工程と、を含み、
    前記登録する工程では、前記1段目のブルームフィルタにおいて、前記データが記憶されているデータブロックに対応するフィルタ部に前記データのエントリを登録し、前記p段目のブルームフィルタにおいて、前記1段目のブルームフィルタで前記データのエントリが登録されたフィルタ部に対応するフィルタ部に前記データのエントリを登録し、
    前記検索する工程では、前記検索対象のデータのエントリが前記1段目のブルームフィルタのフィルタ部のいずれに登録されているかを、前記ブルームフィルタの段数の大きい側から絞り込みながら検索することを特徴とするデータ管理方法。
JP2010053795A 2010-03-10 2010-03-10 データ管理装置及びデータ管理方法 Expired - Fee Related JP5359941B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010053795A JP5359941B2 (ja) 2010-03-10 2010-03-10 データ管理装置及びデータ管理方法
US13/028,409 US8255406B2 (en) 2010-03-10 2011-02-16 Data management using multi-state bloom filter

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010053795A JP5359941B2 (ja) 2010-03-10 2010-03-10 データ管理装置及びデータ管理方法

Publications (2)

Publication Number Publication Date
JP2011186954A true JP2011186954A (ja) 2011-09-22
JP5359941B2 JP5359941B2 (ja) 2013-12-04

Family

ID=44560924

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010053795A Expired - Fee Related JP5359941B2 (ja) 2010-03-10 2010-03-10 データ管理装置及びデータ管理方法

Country Status (2)

Country Link
US (1) US8255406B2 (ja)
JP (1) JP5359941B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103440249A (zh) * 2013-07-23 2013-12-11 南京烽火星空通信发展有限公司 一种非结构化数据快速检索的系统及方法
JP2014130549A (ja) * 2012-12-28 2014-07-10 Fujitsu Ltd ストレージ装置、制御方法、および制御プログラム
US10007436B2 (en) 2013-03-29 2018-06-26 Fujitsu Limited Storage control apparatus and control method of storage control apparatus
US10048866B2 (en) 2013-03-29 2018-08-14 Fujitsu Limited Storage control apparatus and storage control method
EP3835971A1 (en) 2019-12-10 2021-06-16 Fujitsu Limited Data processing apparatus, data processing program, and data processing method

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9740714B2 (en) * 2014-02-06 2017-08-22 International Business Machines Corporation Multilevel filters for cache-efficient access
US10509769B1 (en) * 2014-06-12 2019-12-17 EMC IP Holding Company LLC Method to efficiently track I/O access history
US9940356B2 (en) * 2014-07-31 2018-04-10 International Business Machines Corporation Efficient join-filters for parallel processing
CN104199781A (zh) * 2014-08-14 2014-12-10 深圳百科信息技术有限公司 一种基于共享内存的内存碎片分配方法和装置
US10198325B2 (en) * 2016-05-24 2019-02-05 Mastercard International Incorporated Method and system for desynchronization recovery for permissioned blockchains using bloom filters

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008102795A (ja) * 2006-10-19 2008-05-01 Fuji Xerox Co Ltd ファイル管理装置、システム及びプログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996025801A1 (en) * 1995-02-17 1996-08-22 Trustus Pty. Ltd. Method for partitioning a block of data into subblocks and for storing and communicating such subblocks
US7814129B2 (en) * 2005-03-11 2010-10-12 Ross Neil Williams Method and apparatus for storing data with reduced redundancy using data clusters
JP4722620B2 (ja) 2005-08-19 2011-07-13 Kddi株式会社 暗号化文書検索方法および暗号化文書検索システム
US7894358B2 (en) * 2007-03-15 2011-02-22 Cisco Technology, Inc. Detection of heavy users of network resources
US9179305B2 (en) * 2009-06-11 2015-11-03 Qualcomm Incorporated Bloom filter based device discovery
US8996568B2 (en) * 2009-07-14 2015-03-31 Qualcomm Incorporated Methods and apparatus for efficiently processing multiple keyword queries on a distributed network
US8352490B2 (en) * 2009-10-22 2013-01-08 Vmware, Inc. Method and system for locating update operations in a virtual machine disk image
US8396873B2 (en) * 2010-03-10 2013-03-12 Emc Corporation Index searching using a bloom filter

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008102795A (ja) * 2006-10-19 2008-05-01 Fuji Xerox Co Ltd ファイル管理装置、システム及びプログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
三橋孝平、外2名: "階層型Bloom Filterを用いた分散ファイル管理", 第15回データ工学ワークショップ(DEWS2004)論文集 [ONLINE], JPN6013038637, 18 June 2004 (2004-06-18), ISSN: 0002600080 *
若林繁寿、外1名: "B木構造に基づくBloomフィルタの提案", 情報処理学会研究報告, vol. 第2008巻、第117号, JPN6013038634, 20 November 2008 (2008-11-20), pages 43 - 48, ISSN: 0002600079 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014130549A (ja) * 2012-12-28 2014-07-10 Fujitsu Ltd ストレージ装置、制御方法、および制御プログラム
US10007436B2 (en) 2013-03-29 2018-06-26 Fujitsu Limited Storage control apparatus and control method of storage control apparatus
US10048866B2 (en) 2013-03-29 2018-08-14 Fujitsu Limited Storage control apparatus and storage control method
CN103440249A (zh) * 2013-07-23 2013-12-11 南京烽火星空通信发展有限公司 一种非结构化数据快速检索的系统及方法
EP3835971A1 (en) 2019-12-10 2021-06-16 Fujitsu Limited Data processing apparatus, data processing program, and data processing method
US11372576B2 (en) 2019-12-10 2022-06-28 Fujitsu Limited Data processing apparatus, non-transitory computer-readable storage medium, and data processing method

Also Published As

Publication number Publication date
JP5359941B2 (ja) 2013-12-04
US8255406B2 (en) 2012-08-28
US20110225182A1 (en) 2011-09-15

Similar Documents

Publication Publication Date Title
JP5359941B2 (ja) データ管理装置及びデータ管理方法
US8271462B2 (en) Method for creating a index of the data blocks
JP4669067B2 (ja) 動的フラグメントマッピング
TWI515561B (zh) 使用快閃記憶體之頁結構的資料樹儲存方法、系統以及電腦產品
JP5842768B2 (ja) 重複除去装置、重複除去方法及び重複除去プログラム
JP5499825B2 (ja) データベース管理方法、データベースシステム、プログラム及びデータベースのデータ構造
JP2012526320A5 (ja)
KR102310246B1 (ko) 세컨더리 인덱스 생성 방법 및 세컨더리 인덱스 저장 장치
JP2014099163A (ja) バッファ・プールをメモリ常駐型データのための常在インメモリ・ストレージとして用いた、ハイブリッド・テーブル実装のための方法、システム、およびコンピュータ・プログラム製品
CN107305586A (zh) 索引生成方法、索引生成装置及搜索方法
WO2019034136A1 (zh) 表项数据的存储和查询
US8909897B2 (en) Method for generating a delta for compressed data
JP5790755B2 (ja) データベース管理装置及びデータベース管理方法
JP5382383B2 (ja) データベース処理装置、データベース処理方法、プログラム及びデータベースのデータ構造
JP2013149061A (ja) 文書類似性評価システム、文書類似性評価方法およびコンピュータ・プログラム
US9286934B2 (en) Data duplication in tape drives
JP5664467B2 (ja) 検索プログラム、検索方法、検索装置、およびノード
JP6110354B2 (ja) 異種記憶サーバおよびそのファイル記憶方法
TWI420306B (zh) 支援重複數據刪除程序的數據區塊查詢方法
JP5626561B2 (ja) 情報処理システム及びそのデータ管理方法
US20150134939A1 (en) Information processing system, information processing method and memory system
JP5526985B2 (ja) 検索プログラム、検索装置、および検索方法
US20160103623A1 (en) Method for controlled collision of hash algorithm based on nand flash memory
JP2011165000A (ja) データ蓄積装置及び方法及びプログラム及びデータ検索装置及び方法及びプログラム
US20160098422A1 (en) File accessing system and file accessing method thereof

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120910

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130730

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130819

R150 Certificate of patent or registration of utility model

Ref document number: 5359941

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees