JP2011233016A - Management program, management device, and management method - Google Patents

Management program, management device, and management method Download PDF

Info

Publication number
JP2011233016A
JP2011233016A JP2010104015A JP2010104015A JP2011233016A JP 2011233016 A JP2011233016 A JP 2011233016A JP 2010104015 A JP2010104015 A JP 2010104015A JP 2010104015 A JP2010104015 A JP 2010104015A JP 2011233016 A JP2011233016 A JP 2011233016A
Authority
JP
Japan
Prior art keywords
bloom filter
transposed bloom
transposed
tbf
bit
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
JP2010104015A
Other languages
Japanese (ja)
Other versions
JP5526987B2 (en
Inventor
Takashi Watanabe
高志 渡辺
Yoshihiro Tsuchiya
芳浩 土屋
Yasuo Noguchi
泰生 野口
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 JP2010104015A priority Critical patent/JP5526987B2/en
Priority to US13/064,674 priority patent/US8560558B2/en
Publication of JP2011233016A publication Critical patent/JP2011233016A/en
Application granted granted Critical
Publication of JP5526987B2 publication Critical patent/JP5526987B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

PROBLEM TO BE SOLVED: To increase efficiency of search by a Bloom filter.SOLUTION: A second transposed Bloom filter row tBF(p)s, tBFa(p)s are divided per word into words W1-1 to W1-12 and W2-1 to W2-12, and the words W1-1 to W1-12 and W2-1 to W2-12 are grouped in accordance with the identical arrangement position. Specifically, words having the same # in the words W1-# and W2-# are arranged in order of the word arrangement. For example, since both of the word W1-1 and the word W2-1 have 1 at the tail, the words W1-1 and W2-1 are arranged in this order. As a result, an original first transposed Bloom filter tbf(p-1) is restored. The other words are transposed in the same way, so that a first transposed Bloom filter row new-tBF(p) is restored.

Description

本発明は、ブルームフィルタを管理する管理プログラム、管理装置、および管理方法に関する。   The present invention relates to a management program, a management apparatus, and a management method for managing a Bloom filter.

従来、大規模なデータを木構造で管理する場合、B木(Btree)と呼ばれるデータ構造での管理が比較的多く行われていた。B木は、単純な2分木に比べて、一つのブロックに複数のデータエントリを格納するので、データエントリの追加があっても木構造の形の変化が波及する範囲を狭くできるという利点がある。このため、B木はハードディスクなどのディスク向けのデータ管理方法として利用されることが多い。   Conventionally, when large-scale data is managed in a tree structure, a relatively large amount of data is managed in a data structure called a B-tree. Compared to a simple binary tree, the B-tree stores a plurality of data entries in one block, and therefore has an advantage that the range in which the change in the shape of the tree structure spreads can be narrowed even if data entries are added. is there. For this reason, the B-tree is often used as a data management method for a disk such as a hard disk.

しかしながら、ディスク上において木構造で管理されたデータを検索する場合、複数のデータブロックを実際に読み込む必要がある。また、一般に、ディスクに対するI/O(input/output)は、メモリアクセスに比べると遅いことから、ディスク上でのデータ検索には手間と時間を要するおそれがある。   However, when retrieving data managed in a tree structure on the disk, it is necessary to actually read a plurality of data blocks. In general, I / O (input / output) for a disk is slower than memory access, and thus searching for data on the disk may take time and effort.

このため、最近では、ディスクI/Oによる検索の遅延を避けるためには、メモリ中に木構造をもつなどの対応も考えられている。しかるに、B木では、データエントリ数が多くなると、それに応じて必要なメモリ量が増えてしまうおそれがある。このため、木構造のうち最も良く読みこまれる部分のみをメモリ中に格納する方法(キャッシュ)を利用する方法も考えられている。   For this reason, recently, in order to avoid a search delay due to disk I / O, a countermeasure such as having a tree structure in the memory has been considered. However, in the B-tree, when the number of data entries increases, there is a possibility that the required memory amount increases accordingly. For this reason, a method using a method (cache) in which only the most read portion of the tree structure is stored in the memory is also considered.

これに対し、最近では、ブルームフィルタ(Bloom Filter)と呼ばれるデータ構造も知られてきている。ブルームフィルタは、あるエントリが既存の集合に属するかどうかを効率的に調べる方法である。また、電子交換機のダイヤルパルス処理で、ダイヤルパルスにパルス速度ビットと偶数/奇数ビットの2つを設けておき、そのビットを取り込む群処理も開示されている。また、暗号化や認証に適用できるデータ攪拌回路で、転置と換字を繰り返しおこなう技術も開示されている。   On the other hand, a data structure called a Bloom filter has recently been known. The Bloom filter is a method for efficiently checking whether an entry belongs to an existing set. In addition, there is also disclosed a group process in which two pulse speed bits and even / odd bits are provided in the dial pulse in the dial pulse process of the electronic exchange, and the bits are fetched. Also disclosed is a technique for repeatedly performing transposition and substitution in a data agitation circuit applicable to encryption and authentication.

また、ユーザ毎の「利用者インデックス」、複数ユーザで使える「グループインデックス」、全ユーザが使える「システム共有インデックス」を併合することで処理時間を短縮する技術も開示されている。また、可変長のインデックスを固定長の領域に追加していき、溢れると判断した場合にインデックスからキーフレームの情報を間引いて空き領域を確保する技術も開示されている。   Also disclosed is a technique for shortening the processing time by combining a “user index” for each user, a “group index” that can be used by a plurality of users, and a “system shared index” that can be used by all users. Also disclosed is a technique for securing a free area by adding a variable-length index to a fixed-length area and thinning the key frame information from the index when it is determined that the area overflows.

特開2007−52698号公報JP 2007-52698 A 特開平4−18895号公報Japanese Patent Laid-Open No. 4-18895 特開平7−177139号公報JP 7-177139 A 特開2003−289495号公報JP 2003-289495 A

上述したように、B木は多量のデータを扱うことができるため、キャッシュを適切に実装すれば、ディスクI/Oを減らすことは可能である。しかしながら、その回数はある一定以上減らすことはできない。また、データエントリの追加により木構造が変化すると、木構造管理のためのI/Oが必要になることもある。また、ブルームフィルタは、データエントリの存在だけがわかるものであるため、そのままではデータ管理に使うことはできない。   As described above, since the B-tree can handle a large amount of data, it is possible to reduce disk I / O if a cache is appropriately mounted. However, the number of times cannot be reduced beyond a certain level. Further, when the tree structure changes due to the addition of the data entry, I / O for managing the tree structure may be required. In addition, the Bloom filter can only be used for data management because it knows only the existence of a data entry.

また、空き領域から溢れる場合にインデックスを間引くと、ブルームフィルタ内のビット列が変化してしまい、検索の際、本来登録されているにもかかわらず、検索されたデータブロックにデータが存在しないといった誤判定をしてしまうことになる。また、本来登録されていないにもかかわらず、検索されたデータブロックにデータが存在するといった誤判定もしてしまい、擬陽性の発生確率が高くなってしまうことになる。   In addition, if the index is thinned out when it overflows from the free space, the bit string in the Bloom filter changes, and there is an error that there is no data in the retrieved data block even though it was originally registered at the time of retrieval. Judgment will be made. Moreover, although it is not originally registered, an erroneous determination is made that data exists in the retrieved data block, and the probability of occurrence of false positives increases.

本発明は、上述した従来技術による問題点を解消するため、ブルームフィルタを用いたときのデータ検索の効率化を図ることができる管理プログラム、管理装置、および管理方法を提供することを目的とする。   An object of the present invention is to provide a management program, a management apparatus, and a management method capable of improving the efficiency of data retrieval when using a Bloom filter in order to solve the above-described problems caused by the conventional technology. .

上述した課題を解決し、目的を達成するため、データブロックごとに登録済のデータ群を含むデータブロック集合と、所定数のデータブロック内での陰性を示すビットがm個配列されたn個のブルームフィルタ内のビット列を同一位置のビットどうしでまとめたnビットの第1の転置ブルームフィルタをm個配列したj個の第1の転置ブルームフィルタ列と、にアクセス可能な場合に、前記j個の第1の転置ブルームフィルタ列の保存要求を受け付け、前記保存要求が受け付けられた場合、前記第1の転置ブルームフィルタごとに前記各第1の転置ブルームフィルタのビット列をnの約数となる分割数cで分割することにより、n/cビットのc個のワードを(c×m×j)個生成し、前記第1の転置ブルームフィルタ列ごとに、分割されたワードを前記各第1の転置ブルームフィルタでの同一位置でまとめることにより、{(n/c)×m}ビットの第2の転置ブルームフィルタをc個配列した第2の転置ブルームフィルタ列に転置し、転置されたj個の第2の転置ブルームフィルタ列を記憶装置に保存し、前記第1の転置ブルームフィルタ列への復元指示を受け付け、復元指示が受け付けられた場合、前記第2の転置ブルームフィルタ列ごとに、前記第2の転置ブルームフィルタ列を、前記分割数cで分割することにより、前記第2の転置ブルームフィルタごとに、n/cビットのワードをm個生成し、前記j個の第2の転置ブルームフィルタ列において、前記第2の転置ブルームフィルタごとに分割されたm個のワードを配列位置が共通するものどうしで前記第2の転置ブルームフィルタの配列順にまとめることにより、前記j個の第2の転置ブルームフィルタ列を、前記j個の第1の転置ブルームフィルタ列が一列に配列して統合された第3の転置ブルームフィルタ列に転置することを要件とする。   In order to solve the above-described problems and achieve the object, a data block set including a registered data group for each data block, and n number of bits in which m bits indicating negative in a predetermined number of data blocks are arranged If it is possible to access j first transposed Bloom filter sequences in which m n-bit first transposed Bloom filters in which bit sequences in the Bloom filter are collected by bits at the same position are arranged, the j pieces The first transposed Bloom filter string storage request is received, and when the storage request is received, the bit sequence of each first transposed Bloom filter is divided into n divisors for each first transposed Bloom filter By dividing by the number c, c words of n / c bits are generated (c × m × j), and the divided words are divided for each of the first transposed Bloom filter columns. By combining the first transposed Bloom filters at the same position in the first transposed Bloom filters, a second transposed Bloom filter array in which c second transposed Bloom filters of {(n / c) × m} bits are arranged. Transpose and store the transposed j second transposed Bloom filter strings in the storage device, accept a restoration instruction to the first transposed Bloom filter string, and if the restoration instruction is accepted, the second By dividing the second transposed Bloom filter string by the division number c for each transposed Bloom filter string, m words of n / c bits are generated for each second transposed Bloom filter, In j second transposed Bloom filter rows, the second transposed blue is obtained by arranging m words divided for each of the second transposed Bloom filters at the same arrangement position. The j second transposed Bloom filter trains are transposed into a third transposed Bloom filter train in which the j first transposed Bloom filter trains are arranged in one row by combining them in the order of filters. It is a requirement to do.

本発明にかかる管理プログラム、管理装置、および管理方法によれば、ブルームフィルタを用いたときのデータ検索の効率化を図ることができるという効果を奏する。   According to the management program, management device, and management method of the present invention, there is an effect that it is possible to improve the efficiency of data search when using the Bloom filter.

実施の形態にかかる管理装置のハードウェア構成例を示すブロック図である。It is a block diagram which shows the hardware structural example of the management apparatus concerning embodiment. 本実施の形態にかかる管理装置の構成例を示すブロック図である。It is a block diagram which shows the structural example of the management apparatus concerning this Embodiment. ハッシュテーブル群の一例を示す説明図である。It is explanatory drawing which shows an example of a hash table group. 階層型ブルームフィルタの一例を示す説明図である。It is explanatory drawing which shows an example of a hierarchical Bloom filter. 登録処理部による階層型ブルームフィルタの学習処理例を示す説明図である。It is explanatory drawing which shows the learning process example of the hierarchical Bloom filter by a registration process part. 検索処理部による階層型ブルームフィルタの検索処理例を示す説明図である。It is explanatory drawing which shows the example of a search process of the hierarchical Bloom filter by a search process part. 階層型ブルームフィルタ内の第p段のブルームフィルタ列の転置例を示す説明図である。It is explanatory drawing which shows the transposition example of the Bloom filter row | line | column of the p-th stage in a hierarchical Bloom filter. 検索処理部による階層型転置ブルームフィルタの検索処理例を示す説明図である。It is explanatory drawing which shows the search processing example of the hierarchical transposed Bloom filter by a search process part. 検索処理部の機能的構成例を示すブロック図である。It is a block diagram which shows the functional structural example of a search process part. 登録処理部による階層型ブルームフィルタの学習処理手順を示すフローチャートである。It is a flowchart which shows the learning processing procedure of the hierarchical Bloom filter by a registration process part. 検索処理部による検索処理手順を示すフローチャート(その1)である。It is a flowchart (the 1) which shows the search processing procedure by a search process part. 検索処理部による検索処理手順を示すフローチャート(その2)である。It is a flowchart (the 2) which shows the search processing procedure by a search process part. 登録処理部による階層型転置ブルームフィルタtBFの学習処理例を示す説明図である。It is explanatory drawing which shows the learning process example of the hierarchical transposition Bloom filter tBF by a registration process part. 登録処理部による階層型ブルームフィルタBFの学習処理手順を示すフローチャートである。It is a flowchart which shows the learning processing procedure of the hierarchical Bloom filter BF by a registration process part. 転置ブルームフィルタ列tBF(p)の再転置および保存例を示す説明図である。It is explanatory drawing which shows the re-transposition and preservation | save example of transposition Bloom filter row | line | column tBF (p). 第2の転置ブルームフィルタ列tBF(p)sの更新例を示す説明図である。It is explanatory drawing which shows the example of an update of 2nd transposed Bloom filter row | line | column tBF (p) s. 図2に示した保存/復元処理部の詳細な機能的構成例を示すブロック図である。FIG. 3 is a block diagram illustrating a detailed functional configuration example of a save / restore processing unit illustrated in FIG. 2. 保存/復元処理部による第1の階層型転置ブルームフィルタtBFの保存処理手順を示すフローチャートである。It is a flowchart which shows the preservation | save processing procedure of 1st hierarchical transposition Bloom filter tBF by a preservation | save / restoration process part. 図18の全保存処理(ステップS1803)の詳細な処理手順を示すフローチャートである。It is a flowchart which shows the detailed process sequence of all the preservation | save processes (step S1803) of FIG. 図18の部分保存処理(ステップS1804)の詳細な処理手順を示すフローチャートである。It is a flowchart which shows the detailed process sequence of the partial preservation | save process (step S1804) of FIG. 保存/復元処理部による復元処理手順を示すフローチャートである。It is a flowchart which shows the restoration process procedure by a preservation | save / restoration process part. 第2の転置ブルームフィルタ列tBF(p)sが複数保存されている場合の復元例(その1)を示す説明図である。It is explanatory drawing which shows the restoration example (the 1) in case two or more 2nd transposed Bloom filter row | line | columns tBF (p) s are preserve | saved. 第2の転置ブルームフィルタ列tBF(p)s,tBFa(p)sの統合復元例を示す説明図である。It is explanatory drawing which shows the integrated restoration example of 2nd transposed Bloom filter row | line | columns tBF (p) s and tBFa (p) s. 保存/復元処理部による統合復元処理手順を示すフローチャートである。It is a flowchart which shows the integrated restoration process procedure by a preservation | save / restoration process part.

以下に添付図面を参照して、本発明にかかる管理プログラム、管理装置、および管理方法の実施の形態を詳細に説明する。まず、本実施の形態にかかる管理装置の構成例について説明する。   Exemplary embodiments of a management program, a management device, and a management method according to the present invention will be described below in detail with reference to the accompanying drawings. First, a configuration example of the management apparatus according to the present embodiment will be described.

<管理装置のハードウェア構成例>
図1は、実施の形態にかかる管理装置のハードウェア構成例を示すブロック図である。図1において、検索装置は、CPU(Central Processing Unit)101と、ROM(Read Only Memory)102と、RAM(Random Access Memory)103と、磁気ディスクドライブ104と、磁気ディスク105と、光ディスクドライブ106と、光ディスク107と、ディスプレイ108と、I/F(Interface)109と、キーボード110と、マウス111と、スキャナ112と、プリンタ113と、を備えている。また、各構成部はバス100によってそれぞれ接続されている。
<Hardware configuration example of management device>
FIG. 1 is a block diagram of a hardware configuration example of the management apparatus according to the embodiment. In FIG. 1, the search device includes a CPU (Central Processing Unit) 101, a ROM (Read Only Memory) 102, a RAM (Random Access Memory) 103, a magnetic disk drive 104, a magnetic disk 105, and an optical disk drive 106. An optical disk 107, a display 108, an I / F (Interface) 109, a keyboard 110, a mouse 111, a scanner 112, and a printer 113. Each component is connected by a bus 100.

ここで、CPU101は、管理装置の全体の制御を司る。ROM102は、ブートプログラムなどのプログラムを記憶している。RAM103は、CPU101のワークエリアとして使用される。磁気ディスクドライブ104は、CPU101の制御にしたがって磁気ディスク105に対するデータのリード/ライトを制御する。磁気ディスク105は、磁気ディスクドライブ104の制御で書き込まれたデータを記憶する。   Here, the CPU 101 controls the entire management apparatus. The ROM 102 stores a program such as a boot program. The RAM 103 is used as a work area for the CPU 101. The magnetic disk drive 104 controls reading / writing of data with respect to the magnetic disk 105 according to the control of the CPU 101. The magnetic disk 105 stores data written under the control of the magnetic disk drive 104.

光ディスクドライブ106は、CPU101の制御にしたがって光ディスク107に対するデータのリード/ライトを制御する。光ディスク107は、光ディスクドライブ106の制御で書き込まれたデータを記憶したり、光ディスク107に記憶されたデータをコンピュータに読み取らせたりする。   The optical disk drive 106 controls reading / writing of data with respect to the optical disk 107 according to the control of the CPU 101. The optical disc 107 stores data written under the control of the optical disc drive 106, and causes the computer to read data stored on the optical disc 107.

ディスプレイ108は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ108は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。   The display 108 displays data such as a document, an image, and function information as well as a cursor, an icon, or a tool box. As this display 108, for example, a CRT, a TFT liquid crystal display, a plasma display, or the like can be adopted.

インターフェース(以下、「I/F」と略する。)109は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク114に接続され、このネットワーク114を介して他の装置に接続される。そして、I/F109は、ネットワーク114と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F109には、たとえばモデムやLANアダプタなどを採用することができる。   An interface (hereinafter abbreviated as “I / F”) 109 is connected to a network 114 such as a LAN (Local Area Network), a WAN (Wide Area Network), and the Internet through a communication line. Connected to other devices. The I / F 109 controls an internal interface with the network 114 and controls data input / output from an external device. For example, a modem or a LAN adapter may be employed as the I / F 109.

キーボード110は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス111は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。   The keyboard 110 includes keys for inputting characters, numbers, various instructions, and the like, and inputs data. Moreover, a touch panel type input pad or a numeric keypad may be used. The mouse 111 performs cursor movement, range selection, window movement, size change, and the like. A trackball or a joystick may be used as long as they have the same function as a pointing device.

スキャナ112は、画像を光学的に読み取り、管理装置内に画像データを取り込む。なお、スキャナ112は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ113は、画像データや文書データを印刷する。プリンタ113には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。   The scanner 112 optically reads an image and takes in the image data into the management apparatus. The scanner 112 may have an OCR (Optical Character Reader) function. The printer 113 prints image data and document data. For example, a laser printer or an ink jet printer can be employed as the printer 113.

<管理装置の機能的構成例>
図2は、本実施の形態にかかる管理装置の構成例を示すブロック図である。管理装置200は、データブロック集合dbと、ハッシュテーブル群HTsと、階層型ブルームフィルタBFと、階層型転置ブルームフィルタtBFと、登録処理部201と、検索処理部202と、保存/復元処理部203と、を備えている。
<Functional configuration example of management device>
FIG. 2 is a block diagram illustrating a configuration example of the management apparatus according to the present embodiment. The management device 200 includes a data block set db, a hash table group HTs, a hierarchical Bloom filter BF, a hierarchical transposed Bloom filter tBF, a registration processing unit 201, a search processing unit 202, and a save / restore processing unit 203. And.

データブロック集合dbは、複数のデータブロックを有しており、各データブロックは、登録されたデータを保持している。なお、個々のデータブロックをdb#と表記する。#は数字であり、ブロック番号を示す。ブロック番号#は、そのデータブロックdb#のビット位置に対応する。   The data block set db has a plurality of data blocks, and each data block holds registered data. Each data block is represented as db #. # Is a number indicating the block number. The block number # corresponds to the bit position of the data block db #.

ハッシュテーブル群HTsは、データブロック集合db内の各データブロックdb#に対応するハッシュテーブルの集合である。なお、個々のハッシュテーブルをHT#と表記する。#は数字であり、データブロックdb#のブロック番号と一致する。ハッシュテーブルHT#は、データをある特定のハッシュ関数に与えたときのハッシュ値と、ハッシュ値の生成元となるデータ(データそのものでもデータへのポインタでもよい)を関連付けたテーブルである。   The hash table group HTs is a set of hash tables corresponding to each data block db # in the data block set db. Each hash table is represented as HT #. # Is a number and matches the block number of the data block db #. The hash table HT # is a table in which a hash value when data is given to a specific hash function is associated with data that is a generation source of the hash value (data itself or a pointer to the data).

図3は、ハッシュテーブル群HTsの一例を示す説明図である。図3では、ハッシュ関数としてSHA−1を用いている。なお、どのハッシュ関数を用いるかはあらかじめ設定しておけばよい。   FIG. 3 is an explanatory diagram showing an example of the hash table group HTs. In FIG. 3, SHA-1 is used as the hash function. In addition, what hash function is used may be set in advance.

図2に戻って、階層型ブルームフィルタBFは、ブルームフィルタを階層構造にしたインデックス情報である。階層型ブルームフィルタBFについては後述する。ブルームフィルタとは、所定数のデータブロック内での擬陽性(疑陽性、偽陽性ともいう)/陰性を示すビットが複数配列されたインデックス情報である。ブルームフィルタのビットがONのときは擬陽性を示し、OFFのときは陰性を示す。なお、ビットの値が1をONとし、0をOFFとしてもよく、逆に、ビットの値が0をONとし、1をOFFとしてもよい。本実施の形態では、ビットの値が1をONとし、0をOFFとする。   Returning to FIG. 2, the hierarchical Bloom filter BF is index information in which the Bloom filter has a hierarchical structure. The hierarchical Bloom filter BF will be described later. The Bloom filter is index information in which a plurality of bits indicating false positives (also called false positives or false positives) / negatives in a predetermined number of data blocks are arranged. When the Bloom filter bit is ON, it indicates false positive, and when it is OFF, it indicates negative. The bit value may be set to 1 and 0 may be set to OFF. Conversely, the bit value may be set to 0 and 1 may be set to OFF. In this embodiment, the bit value is set to 1 and 0 is set to OFF.

階層型転置ブルームフィルタtBFは、階層型ブルームフィルタBFを転置したインデックス情報である。階層型転置ブルームフィルタtBFは、検索処理部202により生成される。階層型転置ブルーフィルタtBFの詳細は後述する。   The hierarchical transposed Bloom filter tBF is index information obtained by transposing the hierarchical Bloom filter BF. The hierarchical transposed Bloom filter tBF is generated by the search processing unit 202. Details of the hierarchical transposed blue filter tBF will be described later.

データブロック集合db、ハッシュテーブル群HTs、および階層型ブルームフィルタBFは、図1に示したROM102、RAM103、磁気ディスク105などの記憶装置に記憶される。また、図2では、データブロック集合db、ハッシュテーブル群HTs、および階層型ブルームフィルタBFは、管理装置200内に記憶させているが、管理装置200外の外部装置に記憶させてもよい。この場合、管理装置200は、ネットワークを介して外部装置から読み出したり、外部装置に書き込んだりする。   The data block set db, the hash table group HTs, and the hierarchical Bloom filter BF are stored in a storage device such as the ROM 102, the RAM 103, and the magnetic disk 105 shown in FIG. In FIG. 2, the data block set db, the hash table group HTs, and the hierarchical Bloom filter BF are stored in the management device 200, but may be stored in an external device outside the management device 200. In this case, the management apparatus 200 reads out from or writes to the external apparatus via the network.

登録処理部201は、データブロック集合dbに登録したいデータがエントリされると、データブロック集合dbの空き領域に登録する。データの登録の際には、ハッシュ関数によりハッシュ値を求め、登録先のデータブロックdb#に対応するハッシュテーブルHT#に、データ(またはそのポインタ)とハッシュ値とを追加する。また、登録先のデータブロックdb#にデータが新規に登録されたことを階層型ブルームフィルタBFに学習させるため、登録処理部201は、階層型ブルームフィルタBFを更新する。   When the data to be registered is entered in the data block set db, the registration processing unit 201 registers in the free area of the data block set db. When registering data, a hash value is obtained by a hash function, and the data (or its pointer) and the hash value are added to the hash table HT # corresponding to the data block db # of the registration destination. In addition, the registration processing unit 201 updates the hierarchical Bloom filter BF so that the hierarchical Bloom filter BF learns that data has been newly registered in the registration destination data block db #.

検索処理部202は、検索対象データが入力されると、階層型ブルームフィルタBFを参照して、検索対象データが存在するであろうデータブロックdb#を特定する。検索対象データが存在するであろうデータブロックdb#が特定されなかった場合は、いずれのデータブロックdb#にも検索対象データは存在しない(陰性)。逆に、検索対象データが存在するであろうデータブロックdb#が特定された場合でも、特定されたデータブロックdb#には、必ずしも検索対象データが存在するとは限らない(擬陽性)。   When the search target data is input, the search processing unit 202 refers to the hierarchical Bloom filter BF and specifies the data block db # in which the search target data will exist. When the data block db # that may contain the search target data is not specified, the search target data does not exist in any data block db # (negative). On the other hand, even when the data block db # that may contain the search target data is specified, the specified data block db # does not necessarily include the search target data (false positive).

なお、擬陽性が陽性になるか陰性になるかは、検索処理部202により最終的に特定されたデータブロックdb#に対応するハッシュテーブルHT#での検索結果に依存する。たとえば、検索処理部202により最終的に特定されたデータブロックdb#に対応するハッシュテーブルHT#において、検索対象データのハッシュ値がヒットすれば陽性、ヒットしなければ陰性となる。   Whether the false positive becomes positive or negative depends on the search result in the hash table HT # corresponding to the data block db # finally specified by the search processing unit 202. For example, in the hash table HT # corresponding to the data block db # finally specified by the search processing unit 202, it is positive if the hash value of the search target data is hit, and is negative if it is not hit.

保存/復元処理部203は、詳細は後述するが、階層型ブルームフィルタBFや後述する階層型転置ブルームフィルタtBFを保存したり、復元したりする。保存先としては、たとえば、図1に示したROM102、RAM103、磁気ディスク105、光ディスク107などの記憶装置とする。また、保存先は、管理装置200内の記憶領域でもよく、管理装置200外の記憶装置でもよい。   The save / restore processing unit 203 saves and restores the hierarchical Bloom filter BF and the hierarchical transposed Bloom filter tBF described later, details of which will be described later. The storage destination is, for example, a storage device such as the ROM 102, RAM 103, magnetic disk 105, and optical disk 107 shown in FIG. Further, the storage destination may be a storage area in the management device 200 or a storage device outside the management device 200.

なお、上述した登録処理部201〜保存/復元処理部203は、具体的には、たとえば、図1に示したROM102、RAM103、磁気ディスク105、光ディスク107などの記憶装置に記憶されたプログラムをCPU101に実行させることにより、その機能を実現する。   Note that the registration processing unit 201 to the storage / restoration processing unit 203 described above specifically, for example, stores a program stored in a storage device such as the ROM 102, the RAM 103, the magnetic disk 105, and the optical disk 107 illustrated in FIG. This function is realized by executing this function.

<階層型ブルームフィルタBF>
図4は、階層型ブルームフィルタBFの一例を示す説明図である。階層型ブルームフィルタBFは、h段×sビット幅のメモリ領域で構成されている。sビット幅は、データブロック集合dbのビット幅に対応する。また、各段のビット長sは最上段である第h段の分割数dに基づいて分割される。分割された各々はブルームフィルタであり、各段においてブルームフィルタ列を構成する。分割数dは基本的には2以上の整数であるが、最上段である第h段を単一のブルームフィルタとする場合は、d=1としてもよい。
<Hierarchical Bloom Filter BF>
FIG. 4 is an explanatory diagram showing an example of the hierarchical Bloom filter BF. The hierarchical Bloom filter BF is configured by a memory area of h stages × s bits width. The s bit width corresponds to the bit width of the data block set db. The bit length s of each stage is divided based on the division number d of the h-th stage that is the uppermost stage. Each of the divided parts is a Bloom filter and forms a Bloom filter row in each stage. The number of divisions d is basically an integer of 2 or more, but d = 1 may be used when the h-th stage as the uppermost stage is a single Bloom filter.

任意の段をpとすると、第p段のブルームフィルタ列BF(p)を構成するブルームフィルタbf(p)のビット幅mは、m=s/d[h-(p-1)]となる。図4では、d=2としている。また、第p段のブルームフィルタ列BF(p)のブルームフィルタbf(p)の配列数nは、n=d[h-(p-1)]となる。 When an arbitrary stage is p, the bit width m of the Bloom filter bf (p) constituting the p-th Bloom filter row BF (p) is m = s / d [h− (p−1)]. . In FIG. 4, d = 2. The number n of arrangement of the Bloom filters bf (p) in the p-th Bloom filter row BF (p) is n = d [h− (p−1)] .

したがって、階層型ブルームフィルタBFでは、段が下がる(hが小さくなる)につれ、第p段のブルームフィルタ列BF(p)のブルームフィルタbf(p)の配列数が増加する。なお、最下段(第1段)のブルームフィルタ列Bf(1)のブルームフィルタbf(1)の配列個数は、データブロックdb#の個数と同一とする。   Therefore, in the hierarchical Bloom filter BF, the number of arrangements of the Bloom filters bf (p) in the p-th Bloom filter row BF (p) increases as the level decreases (h decreases). Note that the number of arrangement of the bloom filters bf (1) in the lowermost (first) Bloom filter row Bf (1) is the same as the number of data blocks db #.

これにより、第1段までたどり着いたときにビットしたブルームフィルタbf(1)とデータブロックdb#とが一対一対応することになる。また、階層型ブルームフィルタBFの段数hは基本的には複数段であるが、1段(h=1)としてもよい。ただし、この場合は、d≠1とする。   As a result, the Bloom filter bf (1) bitted when reaching the first level has a one-to-one correspondence with the data block db #. The number of stages h of the hierarchical Bloom filter BF is basically a plurality of stages, but may be one stage (h = 1). However, in this case, d ≠ 1.

<階層型ブルームフィルタBFの学習処理例>
図5は、登録処理部201による階層型ブルームフィルタBFの学習処理例を示す説明図である。図5では、説明上、全ビット幅s=4096ビット、段数h=3段、第h段での分割数d=2とする。
<Example of learning process of hierarchical Bloom filter BF>
FIG. 5 is an explanatory diagram showing an example of learning processing of the hierarchical Bloom filter BF by the registration processing unit 201. In FIG. 5, for the sake of explanation, it is assumed that the total bit width s = 4096 bits, the number of stages h = 3, and the number of divisions d = 2 at the h-th stage.

したがって、最下段である第1段のブルームフィルタ列BF(1)は、8(=d[h-(p-1)]=23)分割されてブルームフィルタbf(1−1)〜bf(1−8)により構成される。また、第2段のブルームフィルタ列BF(2)は、4(=d[h-(p-1)]=22)分割されてブルームフィルタbf(2−1)〜bf(2−4)により構成される。また、最上段である第3段のブルームフィルタ列BF(3)は、2(=d[h-(p-1)]=21)分割されてブルームフィルタbf(3−1)〜bf(3−2)により構成される。 Accordingly, the first-stage Bloom filter row BF (1), which is the lowermost stage, is divided into 8 (= d [h- (p-1)] = 2 3 ) and Bloom filters bf (1-1) to bf ( 1-8). The second-stage Bloom filter row BF (2) is divided into 4 (= d [h- (p-1)] = 2 2 ) to obtain Bloom filters bf (2-1) to bf (2-4). Consists of. The third-stage Bloom filter row BF (3), which is the uppermost stage, is divided into 2 (= d [h- (p-1)] = 2 1 ) and Bloom filters bf (3-1) to bf ( 3-2).

また、登録される対象データDが与えられるハッシュ関数の種類数kをk=3とする。ここでは、ハッシュ関数H1(),H2(),H3()を用いることとする。また、ハッシュテーブルの登録対象となるハッシュ関数をH1()とする。   Further, the number k of hash functions to which the registered target data D is given is set to k = 3. Here, the hash functions H1 (), H2 (), and H3 () are used. A hash function to be registered in the hash table is H1 ().

まず、データブロック集合dbのうちデータブロックdb3に対象データDが登録されたものとする。対象データDを各ハッシュ関数H1(),H2(),H3()に与えたときのハッシュ値は、例として以下の値とする。
H1(D)=1234567
H2(D)=3984012
H3(D)=9803323
First, it is assumed that the target data D is registered in the data block db3 in the data block set db. As an example, the hash values when the target data D is given to the hash functions H1 (), H2 (), and H3 () are as follows.
H1 (D) = 1234567
H2 (D) = 3984012
H3 (D) = 9803323

また、階層型ブルームフィルタBFの学習処理では、更新対象となるブルームフィルタ内の特定のビットをONにするが、その特定のビットがすでにONになっている場合はそのままとする。   In the learning process of the hierarchical Bloom filter BF, a specific bit in the Bloom filter to be updated is turned on, but if the specific bit is already turned on, it is left as it is.

ここで、登録処理部201は、登録先のデータブロックdb3のブロック番号3のハッシュテーブルHT3に対するハッシュテーブルエントリE3を作成する。そして、登録処理部201は、作成されたハッシュテーブルエントリE3を、ハッシュテーブルHT3に追加登録する。   Here, the registration processing unit 201 creates a hash table entry E3 for the hash table HT3 of the block number 3 of the data block db3 of the registration destination. Then, the registration processing unit 201 additionally registers the created hash table entry E3 in the hash table HT3.

つぎに、登録処理部201は、更新対象となるブルームフィルタを、第1段のブルームフィルタ列BF(1)の中から特定する。最下段では、登録先のデータブロックdb3のブロック番号3と同一配列番号であるブルームフィルタbf(1−3)が対応する。したがって、ブルームフィルタbf(1−3)を更新対象とする。ブルームフィルタbf(1−3)は512ビットのビット列である。   Next, the registration processing unit 201 specifies a Bloom filter to be updated from the first-stage Bloom filter row BF (1). In the bottom row, the Bloom filter bf (1-3) having the same array number as the block number 3 of the data block db3 of the registration destination corresponds. Therefore, the Bloom filter bf (1-3) is the update target. The Bloom filter bf (1-3) is a 512-bit bit string.

また、登録処理部201は、各ハッシュ値を、第1段のブルームフィルタbf(1)のビット幅である512で割り算し、余り値を算出する。ハッシュ値H1(D)の余り値は「135」、ハッシュ値H2(D)の余り値は「140」、ハッシュ値H3(D)の余り値は「59」になったものとする。   Also, the registration processing unit 201 divides each hash value by 512 that is the bit width of the first-stage Bloom filter bf (1), and calculates a remainder value. It is assumed that the remainder value of the hash value H1 (D) is “135”, the remainder value of the hash value H2 (D) is “140”, and the remainder value of the hash value H3 (D) is “59”.

つぎに、登録処理部201は、更新対象のブルームフィルタにおいて余り値に対応する位置のビットをONにする。なお、余り値が0の場合は、更新対象のブルームフィルタの末尾ビットをONにする。図5の例では、ブルームフィルタbf(1−3)は、512ビット有するため、余り値「135」については、先頭から135番目のビットをONにする。同様に、余り値「140」については、先頭から140番目のビットをONにする。余り値「59」については、先頭から59番目のビットをONにする。これにより、第1段での学習処理を終了する。   Next, the registration processing unit 201 turns on the bit at the position corresponding to the remainder value in the Bloom filter to be updated. If the remainder value is 0, the last bit of the Bloom filter to be updated is turned ON. In the example of FIG. 5, the Bloom filter bf (1-3) has 512 bits, so the 135th bit from the beginning is turned ON for the remainder value “135”. Similarly, for the remainder value “140”, the 140th bit from the beginning is turned ON. For the remainder value “59”, the 59th bit from the beginning is turned ON. This completes the learning process in the first stage.

つぎに、第2段の学習処理に移る。登録処理部201は、更新対象となるブルームフィルタを、第2段のブルームフィルタ列BF(2)の中から特定する。具体的には、第1段での更新対象のブルームフィルタbf(1−3)のビット位置を包含するブルームフィルタを、第2段のブルームフィルタ列BF(2)の中から特定する。本例では、ブルームフィルタbf(2−2)となる。より具体的には、前段の第1段での更新対象のブルームフィルタbf(1−3)の配列番号3を、分割数d(=2)で割り算し、端数を切り上げることで、更新対象の配列番号は2となる。したがって、ブルームフィルタbf(2−2)が特定される。   Next, the learning process of the second stage is started. The registration processing unit 201 identifies the Bloom filter to be updated from the second-stage Bloom filter row BF (2). Specifically, the Bloom filter including the bit position of the Bloom filter bf (1-3) to be updated in the first stage is specified from the Bloom filter string BF (2) in the second stage. In this example, the Bloom filter bf (2-2) is obtained. More specifically, the array number 3 of the Bloom filter bf (1-3) to be updated in the first stage of the previous stage is divided by the division number d (= 2), and the fraction is rounded up to round up the update target. The sequence number is 2. Therefore, the Bloom filter bf (2-2) is specified.

そして、登録処理部201は、各ハッシュ値を、第2段のブルームフィルタbf(2)のビット幅である1024で割り算し、余り値を算出する。ハッシュ値H1(D)の余り値は「647」、ハッシュ値H2(D)の余り値は「652」、ハッシュ値H3(D)の余り値は「571」になったものとする。   Then, the registration processing unit 201 divides each hash value by 1024 which is the bit width of the second-stage Bloom filter bf (2), and calculates a remainder value. It is assumed that the remainder value of the hash value H1 (D) is “647”, the remainder value of the hash value H2 (D) is “652”, and the remainder value of the hash value H3 (D) is “571”.

つぎに、登録処理部201は、更新対象のブルームフィルタにおいて余り値に対応する位置のビットをONにする。なお、余り値が0の場合は、更新対象のブルームフィルタの末尾ビットをONにする。図5の例では、ブルームフィルタbf(2−2)は、1024ビット有するため、余り値「647」については、先頭から647番目のビットをONにする。同様に、余り値「652」については、先頭から652番目のビットをONにする。余り値「571」については、先頭から571番目のビットをONにする。これにより、第2段での学習処理を終了する。   Next, the registration processing unit 201 turns on the bit at the position corresponding to the remainder value in the Bloom filter to be updated. If the remainder value is 0, the last bit of the Bloom filter to be updated is turned ON. In the example of FIG. 5, the Bloom filter bf (2-2) has 1024 bits, so the 647th bit from the beginning is turned ON for the remainder value “647”. Similarly, for the remainder value “652,” the 652nd bit from the beginning is turned ON. For the remainder value “571”, the 571st bit from the beginning is turned ON. Thereby, the learning process in the second stage is completed.

つぎに、最上段である第3段の学習処理に移る。登録処理部201は、更新対象となるブルームフィルタを、第3段のブルームフィルタ列BF(3)の中から特定する。具体的には、第2段での更新対象のブルームフィルタbf(2−2)のビット位置を包含するブルームフィルタを、第3段のブルームフィルタ列BF(3)の中から特定する。本例では、ブルームフィルタbf(3−1)となる。より具体的には、前段の第2段での更新対象のブルームフィルタbf(2−2)の配列番号2を、分割数d(=2)で割り算することで、更新対象の配列番号は1となる。したがって、ブルームフィルタbf(3−1)が特定される。   Next, the process moves to the third-stage learning process, which is the uppermost stage. The registration processing unit 201 specifies the Bloom filter to be updated from the third-stage Bloom filter row BF (3). Specifically, the Bloom filter including the bit position of the Bloom filter bf (2-2) to be updated in the second stage is specified from the third stage Bloom filter string BF (3). In this example, the Bloom filter bf (3-1) is obtained. More specifically, by dividing the array number 2 of the Bloom filter bf (2-2) to be updated in the second stage of the previous stage by the division number d (= 2), the array number to be updated is 1 It becomes. Therefore, the Bloom filter bf (3-1) is specified.

そして、登録処理部201は、各ハッシュ値を、第3段のブルームフィルタbf(3)のビット幅である2048で割り算し、余り値を算出する。ハッシュ値H1(D)の余り値は「1671」、ハッシュ値H2(D)の余り値は「652」、ハッシュ値H3(D)の余り値は「1595」になったものとする。   Then, the registration processing unit 201 divides each hash value by 2048 which is the bit width of the third-stage Bloom filter bf (3) to calculate a remainder value. It is assumed that the remainder value of the hash value H1 (D) is “1671”, the remainder value of the hash value H2 (D) is “652”, and the remainder value of the hash value H3 (D) is “1595”.

つぎに、登録処理部201は、更新対象のブルームフィルタにおいて余り値に対応する位置のビットをONにする。なお、余り値が0の場合は、更新対象のブルームフィルタの末尾ビットをONにする。図5の例では、ブルームフィルタbf(3−1)は、2048ビット有するため、余り値「1671」については、先頭から1671番目のビットをONにする。同様に、余り値「652」については、先頭から652番目のビットをONにする。余り値「1595」については、先頭から1595番目のビットをONにする。これにより、第3段での学習処理を終了する。   Next, the registration processing unit 201 turns on the bit at the position corresponding to the remainder value in the Bloom filter to be updated. If the remainder value is 0, the last bit of the Bloom filter to be updated is turned ON. In the example of FIG. 5, the Bloom filter bf (3-1) has 2048 bits, so the 1671th bit from the beginning is turned ON for the remainder value “1671”. Similarly, for the remainder value “652,” the 652nd bit from the beginning is turned ON. For the remainder value “1595”, the 1595th bit from the beginning is turned ON. Thereby, the learning process in the third stage is finished.

このような手順により、登録処理部201は、階層型ブルームフィルタBFにデータエントリを学習させることとなる。   With this procedure, the registration processing unit 201 causes the hierarchical Bloom filter BF to learn data entries.

<階層型ブルームフィルタBFを用いた検索処理例>
図6は検索処理部202による階層型ブルームフィルタBFの検索処理例を示す説明図である。図6では、図5と同一の階層型ブルームフィルタBFを用いて説明する。なお、図6では、図5で登録された対象データDを検索対象データとして検索する例について説明する。
<Example of search processing using hierarchical Bloom filter BF>
FIG. 6 is an explanatory diagram showing an example of search processing of the hierarchical Bloom filter BF by the search processing unit 202. 6 will be described using the same hierarchical Bloom filter BF as in FIG. Note that FIG. 6 illustrates an example in which the target data D registered in FIG. 5 is searched as search target data.

図5に示した学習処理では、最下段の第1段から処理したが、検索処理では最上段(図6の場合は第3段)から処理をおこなう。まず、検索処理部202は、対象データDについての3個のハッシュ値を、第3段の各ブルームフィルタbf(3)のビット幅2048で割り算したときの余り値「1671」、「652」、「1595」を求める。   In the learning process shown in FIG. 5, processing is performed from the first stage at the bottom, but in the search process, processing is performed from the top (the third stage in the case of FIG. 6). First, the search processing unit 202 divides the three hash values for the target data D by the bit widths 2048 of the third-stage Bloom filters bf (3), resulting in residual values “1671”, “652”, “1595” is obtained.

つぎに、検索処理部202は、フィルタリング対象となるブルームフィルタを第3段のブルームフィルタ列BF(3)から特定する。第3段は最上段であるため、無条件で第3段のすべてのブルームフィルタbf(3−1),bf(3−2)が特定される。   Next, the search processing unit 202 specifies the Bloom filter to be filtered from the third-stage Bloom filter row BF (3). Since the third stage is the top stage, all the Bloom filters bf (3-1) and bf (3-2) in the third stage are specified unconditionally.

そして、検索処理部202は、フィルタリング対象に特定されたブルームフィルタ群の中から、算出した余り値に対応する位置のビットがすべてONになっているブルームフィルタを特定する。第3段の場合、ブルームフィルタbf(3−1),bf(3−2)はいずれも、算出した余り値に対応する位置のビットがすべてONになっているものとする。これにより、第3段でのフィルタリング処理を終了する。   Then, the search processing unit 202 specifies a Bloom filter in which all the bits at the position corresponding to the calculated remainder value are ON from the Bloom filter group specified as the filtering target. In the case of the third stage, it is assumed that all of the bits at the position corresponding to the calculated remainder value are ON in the Bloom filters bf (3-1) and bf (3-2). Thereby, the filtering process in the third stage is finished.

つぎに、第2段のフィルタリング処理に移る。検索処理部202は、対象データDについての3個のハッシュ値を、第2段の各ブルームフィルタbf(2)のビット幅1024で割り算したときの余り値「647」、「652」、「571」を求める。   Next, the process proceeds to the second-stage filtering process. The search processing unit 202 divides the three hash values of the target data D by the bit width 1024 of each second-stage Bloom filter bf (2), and the remainder values “647”, “652”, “571 "

つぎに、検索処理部202は、フィルタリング対象となるブルームフィルタを第2段のブルームフィルタ列BF(2)から特定する。最上段を除く残余の段の場合、1つ上の段において、算出した余り値に対応する位置のビットがすべてONになっているブルームフィルタbf(p+1)を探し、そのブルームフィルタbf(p+1)のビット位置に包含されるブルームフィルタbf(p)をフィルタリング対象とする。   Next, the search processing unit 202 specifies the Bloom filter to be filtered from the second-stage Bloom filter row BF (2). In the case of the remaining stages excluding the uppermost stage, the Bloom filter bf (p + 1) in which all the bits in the position corresponding to the calculated remainder value are turned on is searched in the upper stage, and the Bloom filter bf (p + 1). The Bloom filter bf (p) included in the bit positions of is the filtering target.

第2段の場合、第3段で算出した余り値に対応する位置のビットがすべてONになっているブルームフィルタbf(3−1),bf(3−2)のビット位置に包含されるブルームフィルタbf(2−1)〜bf(2−4)をフィルタリング対象とする。   In the case of the second stage, the blooms included in the bit positions of the Bloom filters bf (3-1) and bf (3-2) in which all the bits at the positions corresponding to the remainder values calculated in the third stage are ON. Filters bf (2-1) to bf (2-4) are targeted for filtering.

そして、検索処理部202は、フィルタリング対象に特定されたブルームフィルタ群の中から、算出した余り値に対応する位置のビットがすべてONになっているブルームフィルタを特定する。第2段の場合、ブルームフィルタbf(2−2),bf(2−3)は、算出した余り値に対応する位置のビットがすべてONになっているものとする。一方、ブルームフィルタbf(2−1),bf(2−4)については、算出した余り値に対応する位置のビットのいずれかがOFFであるものとする。   Then, the search processing unit 202 specifies a Bloom filter in which all the bits at the position corresponding to the calculated remainder value are ON from the Bloom filter group specified as the filtering target. In the case of the second stage, the Bloom filters bf (2-2) and bf (2-3) are assumed to have all the bits at the positions corresponding to the calculated remainder values turned on. On the other hand, for the Bloom filters bf (2-1) and bf (2-4), it is assumed that one of the bits at the position corresponding to the calculated remainder value is OFF.

したがって、ブルームフィルタbf(2−1),bf(2−4)のビット位置に包含される下位の段のブルームフィルタbf(1−1),bf(1−2),bf(1−7),bf(1−8)は、フィルタリング対象外となり、対象データDの存在するデータブロックdb#は、ブルームフィルタbf(2−2),bf(2−3)のビット位置に包含されるデータブロックdb#に絞り込まれる。これにより、第2段でのフィルタリング処理を終了する。   Therefore, the lower-stage Bloom filters bf (1-1), bf (1-2), bf (1-7) included in the bit positions of the Bloom filters bf (2-1) and bf (2-4). , Bf (1-8) are excluded from filtering, and the data block db # in which the target data D exists is a data block included in the bit positions of the Bloom filters bf (2-2), bf (2-3). It is narrowed down to db #. Thereby, the filtering process in the second stage is completed.

つぎに、最下段である第1段のフィルタリング処理に移る。検索処理部202は、対象データDについての3個のハッシュ値を、第1段の各ブルームフィルタbf(1)のビット幅512で割り算したときの余り値「135」、「140」、「59」を求める。   Next, the process proceeds to the first-stage filtering process which is the lowest stage. The search processing unit 202 divides the three hash values for the target data D by the bit width 512 of each Bloom filter bf (1) in the first stage, resulting in residual values “135”, “140”, “59 "

つぎに、検索処理部202は、フィルタリング対象となるブルームフィルタを第1段のブルームフィルタ列BF(1)から特定する。第1段の場合、第2段で算出した余り値に対応する位置のビットがすべてONになっているブルームフィルタbf(2−2),bf(2−3)のビット位置に包含されるブルームフィルタbf(1−3)〜bf(1−6)をフィルタリング対象とする。   Next, the search processing unit 202 specifies a Bloom filter to be filtered from the first-stage Bloom filter row BF (1). In the case of the first stage, the bloom included in the bit positions of the Bloom filters bf (2-2) and bf (2-3) in which all the bits at the positions corresponding to the remainder values calculated in the second stage are ON. Filters bf (1-3) to bf (1-6) are targeted for filtering.

そして、検索処理部202は、フィルタリング対象に特定されたブルームフィルタ群の中から、算出した余り値に対応する位置のビットがすべてONになっているブルームフィルタを特定する。第1段の場合、ブルームフィルタbf(1−3),bf(1−6)は、算出した余り値に対応する位置のビットがすべてONになっているものとする。一方、ブルームフィルタbf(1−4),bf(1−5)については、算出した余り値に対応する位置のビットのいずれかがOFFであるものとする。   Then, the search processing unit 202 specifies a Bloom filter in which all the bits at the position corresponding to the calculated remainder value are ON from the Bloom filter group specified as the filtering target. In the case of the first stage, the Bloom filters bf (1-3) and bf (1-6) are assumed to have all the bits at positions corresponding to the calculated remainder values turned ON. On the other hand, for the Bloom filters bf (1-4) and bf (1-5), it is assumed that one of the bits at the position corresponding to the calculated remainder value is OFF.

最下段では、これ以上、下位の段が存在しないため、ブルームフィルタbf(1−3),bf(1−6)に擬陽性がある。検索処理部202は、特定されたブルームフィルタbf(1−3)の配列番号「3」に対応するハッシュテーブルHT3に、ハッシュ値H1(D)が登録されているかを判定する。ハッシュテーブルHT3では、エントリE3が登録されているため、ハッシュテーブルHT3に対応するデータブロックdb3の中に対象データDが登録されていることが判明する。   At the bottom level, there are no further lower levels, so the Bloom filters bf (1-3) and bf (1-6) have false positives. The search processing unit 202 determines whether or not the hash value H1 (D) is registered in the hash table HT3 corresponding to the array number “3” of the identified Bloom filter bf (1-3). Since the entry E3 is registered in the hash table HT3, it is found that the target data D is registered in the data block db3 corresponding to the hash table HT3.

一方、検索処理部202は、特定されたブルームフィルタbf(1−6)の配列番号「6」に対応するハッシュテーブルHT6に、ハッシュ値H1(D)が登録されているかも判定する。ハッシュテーブルHT6では、ハッシュ値H1(D)=1234567が登録されていないため、ハッシュテーブルHT6に対応するデータブロックdb6の中に対象データDが登録されていないことが判明する。これにより、検索処理を終了する。   On the other hand, the search processing unit 202 also determines whether or not the hash value H1 (D) is registered in the hash table HT6 corresponding to the array number “6” of the identified Bloom filter bf (1-6). In the hash table HT6, since the hash value H1 (D) = 1234567 is not registered, it is found that the target data D is not registered in the data block db6 corresponding to the hash table HT6. Thereby, the search process is terminated.

このような手順により、検索処理部202は、階層型ブルームフィルタBFを利用して対象データDが存在するデータブロックを特定することができる。   By such a procedure, the search processing unit 202 can specify the data block in which the target data D exists using the hierarchical Bloom filter BF.

次に、ブルームフィルタの擬陽性による影響について説明する。   Next, the influence of the false positive of the Bloom filter will be described.

ブルームフィルタの擬陽性の発生確率FPRは、ビット長がmのブルームフィルタがh段ある場合、データ登録数N(N<m)、ハッシュ関数の個数をk個とすると、ブルームフィルタの性質より、次式(2)のように表すことができる。   The Bloom filter false-positive occurrence probability FPR is as follows when the number of data registrations is N (N <m) and the number of hash functions is k when there are h Bloom filters with a bit length of m. It can be expressed as equation (2).

FPR={1−(1−1/m)kNk≒{1−e(-kN/m))}k …(1) FPR = {1- (1-1 / m ) kN} k ≒ {1-e (-kN / m))} k ... (1)

この場合、k,m,Nを変更することにより、擬陽性の発生確率FPRを非常に小さくすることができる。すなわち、本実施形態では、k,m,Nの設定次第で、擬陽性の発生確率FPRを1よりも非常に小さい値(ほぼ0)に設定することができるようになる。したがって、図5の例では、ブルームフィルタbf(1−6)が選ばれることはほとんどありえない。   In this case, by changing k, m, and N, the false positive occurrence probability FPR can be made very small. That is, in the present embodiment, the false positive occurrence probability FPR can be set to a value (substantially 0) that is much smaller than 1 depending on the setting of k, m, and N. Therefore, in the example of FIG. 5, the Bloom filter bf (1-6) is almost never selected.

また、本実施形態では、データブロック数Ndbはdhであるため、高さ段数hは、次式(2)にて表すことができる。 In the present embodiment, since the data block number Ndb is d h , the height step number h can be expressed by the following equation (2).

h=log(Ndb)/log(d)+1 …(2)   h = log (Ndb) / log (d) +1 (2)

上記式(2)は、log(Ndb)/log(d)が割り切れる場合を前提にしたが、そうでない場合、段によりdの値を他の段とは変えることで、hを決定することができる。   The above formula (2) is based on the assumption that log (Ndb) / log (d) is divisible, but if not, h can be determined by changing the value of d from other stages depending on the stage. it can.

また、上述した検索処理では、ハッシュ値の数(k回(定数))だけ照合を行う必要があり、検索における1段あたりのフィルタリング対象の数は多くてもd個である。したがって、検索によるメモリアクセス回数MAは、最大でも次式(3)で表される程度である。   Further, in the above-described search process, it is necessary to perform collation as many times as the number of hash values (k times (constant)), and the number of filtering targets per search is at most d. Therefore, the memory access count MA by search is at most about the level expressed by the following equation (3).

MA=k×d×log(Ndb)/log(d) …(3)   MA = k * d * log (Ndb) / log (d) (3)

すなわち、段数h(=メモリ量)は、分割数dを増やすことにより小さくすることができ、その一方で、検索回数は分割数dの増加とともに大きくなるというトレードオフの関係にある。したがって、この関係を考慮することで、適切なメモリの運用が可能となる。   That is, the number of stages h (= memory amount) can be reduced by increasing the number of divisions d, while the number of searches is in a trade-off relationship that increases as the number of divisions d increases. Therefore, by considering this relationship, an appropriate memory operation can be performed.

<階層型転置ブルームフィルタ>
つぎに、階層型転置ブルームフィルタについて説明する。上述した説明では、階層型ブルームフィルタBFの登録処理や検索処理について説明したが、検索速度をより高速化させるため、階層型ブルームフィルタBFを転置させる。
<Hierarchical transposed Bloom filter>
Next, the hierarchical transposed Bloom filter will be described. In the above description, the registration process and the search process of the hierarchical Bloom filter BF have been described. However, the hierarchical Bloom filter BF is transposed in order to increase the search speed.

図7は、階層型ブルームフィルタBF内の第p段のブルームフィルタ列bf(p)の転置例を示す説明図である。(A)は、ブルームフィルタ列BF(p)を示している。ここでは、ブルームフィルタ列BF(p)は、例として、4分割されたブルームフィルタbf(p−1)〜bf(p−4)を示している。すなわち、ブルームフィルタ列BF(p)は、10ビット×4フィルタ数のビット列である。転置する場合は、4ビット×10フィルタ数のビット列となる。   FIG. 7 is an explanatory diagram showing a transposition example of the p-th Bloom filter row bf (p) in the hierarchical Bloom filter BF. (A) shows the Bloom filter row BF (p). Here, the Bloom filter row BF (p) shows Bloom filters bf (p−1) to bf (p−4) divided into four as an example. That is, the Bloom filter string BF (p) is a bit string of 10 bits × 4 filters. In the case of transposition, the bit string is 4 bits × 10 filters.

(B)は、ブルームフィルタ列BF(p)の転置を示している。転置する場合、各ブルームフィルタbf(p−1)〜bf(p−4)の同一位置のビットを集めて、同一位置ごとに集められたビット列を、ビット位置順に配列させる。   (B) shows transposition of the Bloom filter row BF (p). When transposing, the bits at the same position of each of the Bloom filters bf (p-1) to bf (p-4) are collected, and the bit strings collected at the same positions are arranged in the order of the bit positions.

具体的には、各ブルームフィルタbf(p−1)〜bf(p−4)の各先頭ビットを配列番号順にまとめてビット列{0110}とする。左から先頭ビット「0」がブルームフィルタbf(p−1)の先頭ビット、2番目のビット「1」がブルームフィルタbf(p−2)の先頭ビット、3番目のビット「1」がブルームフィルタbf(p−3)の先頭ビット、末尾ビット「0」がブルームフィルタbf(p−4)の先頭ビットである。   Specifically, the first bits of each of the Bloom filters bf (p-1) to bf (p-4) are grouped in the order of the array number to form a bit string {0110}. From the left, the first bit “0” is the first bit of the Bloom filter bf (p−1), the second bit “1” is the first bit of the Bloom filter bf (p−2), and the third bit “1” is the Bloom filter The leading bit and trailing bit “0” of bf (p−3) are the leading bit of the Bloom filter bf (p−4).

このビット列{0110}を、転置ブルームフィルタtbf(p−1)と称す。2番目〜末尾のビット位置についても同様にまとめることで、転置ブルームフィルタtbf(p−1)〜tbf(p−10)を得る。転置ブルームフィルタtbf(p−1)〜tbf(p−10)がビット位置順に配列されたインデックス情報を、転置ブルームフィルタ列tBF(p)と称す。転置ブルームフィルタ列tBF(p)をすべての段で生成することで、階層型転置ブルームフィルタtBFとなる。   This bit string {0110} is referred to as a transposed Bloom filter tbf (p−1). The transposed Bloom filters tbf (p-1) to tbf (p-10) are obtained by collecting the second to last bit positions in the same manner. The index information in which the transposed Bloom filters tbf (p-1) to tbf (p-10) are arranged in the order of bit positions is referred to as a transposed Bloom filter row tBF (p). By generating the transposed Bloom filter row tBF (p) at all stages, the hierarchical transposed Bloom filter tBF is obtained.

(C)は、ブルームフィルタ列BF(p)と転置ブルームフィルタ列tBF(p)との検索比較例を示している。ここでは、2種類のハッシュ関数により対象データDのハッシュ値を2つ求め、ブルームフィルタ列BF(p)を構成するブルームフィルタbf(p)のビット幅10で割り算した余り値を、「4」および「8」とする。   (C) shows a search comparison example between the Bloom filter row BF (p) and the transposed Bloom filter row tBF (p). Here, two hash values of the target data D are obtained by two types of hash functions, and a remainder value obtained by dividing by the bit width 10 of the Bloom filter bf (p) constituting the Bloom filter string BF (p) is “4”. And “8”.

ブルームフィルタ列BF(p)で検索する場合、余り値「4」および「8」となるビット位置「4」および「8」がすべてONになっているブルームフィルタbf(p)をブルームフィルタ列BF(p)から探す。この場合、ブルームフィルタbf(p−2)が該当する。   When searching with the Bloom filter column BF (p), the Bloom filter bf (p) in which the bit positions “4” and “8” having the remainder values “4” and “8” are all ON is selected as the Bloom filter column BF. Search from (p). In this case, the Bloom filter bf (p-2) is applicable.

一方、転置ブルームフィルタ列tBF(p)を用いる場合、ブルームフィルタ列BF(p)のように、ビット位置「4」および「8」がすべてONになっているブルームフィルタbf(p)を検索せず、余り値「4」および「8」と同一配列番号の転置ブルームフィルタtbf(p−4),tbf(p−8)を抽出する。そして、抽出された転置ブルームフィルタtbf(p−4),tbf(p−8)をAND演算することで、ともにONになっているビット位置「2」を特定する。   On the other hand, when the transposed Bloom filter row tBF (p) is used, the Bloom filter bf (p) in which the bit positions “4” and “8” are all ON, such as the Bloom filter row BF (p), is searched. First, transposed Bloom filters tbf (p-4) and tbf (p-8) having the same sequence numbers as the remainder values “4” and “8” are extracted. Then, an AND operation is performed on the extracted transposed Bloom filters tbf (p−4) and tbf (p−8) to identify the bit position “2” that is both ON.

ブルームフィルタ列BF(p)の場合は、4個のブルームフィルタbf(p−1)〜bf(p−4)内の4ビット目と8ビット目を参照するため、8(=4×2)のメモリアクセスが必要となる。一方、転置ブルームフィルタ列tBF(p)は、転置前のブルームフィルタbf(p−1)〜bf(p−4)のビット位置ごとに折りたたまれたインデックス情報である。したがって、転置ブルームフィルタtbf(p−4),tbf(p−8)を抽出するという2回のメモリアクセスとそのAND演算により判定することが可能となる。したがって、メモリアクセス頻度が低減され、検索速度が高速化することとなる。   In the case of the Bloom filter string BF (p), since the fourth and eighth bits in the four Bloom filters bf (p-1) to bf (p-4) are referred to, 8 (= 4 × 2) Memory access is required. On the other hand, the transposed Bloom filter row tBF (p) is index information folded for each bit position of the Bloom filters bf (p-1) to bf (p-4) before transposition. Therefore, it is possible to make a determination by two memory accesses of extracting the transposed Bloom filters tbf (p-4) and tbf (p-8) and their AND operation. Therefore, the memory access frequency is reduced, and the search speed is increased.

<階層型転置ブルームフィルタを用いた検索処理例>
図8は検索処理部202による階層型転置ブルームフィルタの検索処理例を示す説明図である。図8では、説明上、全ビット幅s=64ビット、段数h=3段、第h段での分割数d=2とする。
<Example of search processing using hierarchical transposed Bloom filter>
FIG. 8 is an explanatory diagram showing a search process example of the hierarchical transposed Bloom filter by the search processing unit 202. In FIG. 8, for the sake of explanation, the total bit width s = 64 bits, the number of stages h = 3, and the number of divisions d = 2 at the h-th stage.

最下段である第1段のブルームフィルタ列BF(1)を構成するブルームフィルタのビット幅は、8(=s/dh=64/23)ビットであるため、最下段である第1段の転置ブルームフィルタ列tBF(1)は、8(=s/dh=64/23)個の転置ブルームフィルタtbf(1−1)〜tbf(1−8)により構成される。 Since the bit width of the Bloom filter constituting the first-stage Bloom filter column BF (1) which is the lowest stage is 8 (= s / d h = 64/2 3 ) bits, the first stage which is the lowest stage The transposed Bloom filter row tBF (1) includes 8 (= s / d h = 64/2 3 ) transposed Bloom filters tbf (1-1) to tbf (1-8).

また、第2段の転置ブルームフィルタ列tBF(2)を構成するブルームフィルタのビット幅は、16(=s/dh=64/22)ビットであるため、第2段の転置ブルームフィルタ列tBF(2)は、16(=s/dh=64/22)個の転置ブルームフィルタtbf(2−1)〜tbf(2−16)により構成される。 Further, since the bit width of the Bloom filter constituting the second-stage transposed Bloom filter string tBF (2) is 16 (= s / d h = 64/2 2 ) bits, the second-stage transposed Bloom filter string tBF (2) is composed of 16 (= s / d h = 64/2 2 ) transposed Bloom filters tbf (2-1) to tbf (2-16).

また、最上段である第3段のブルームフィルタ列BF(3)を構成するブルームフィルタのビット幅は、32(=s/dh=64/21)ビットであるため、最上段である第3段の転置ブルームフィルタ列tBF(3)は、32(=s/dh=64/21)個の転置ブルームフィルタtbf(3−1)〜tbf(3−32)により構成される。 The bit width of the Bloom filter constituting the third-stage Bloom filter column BF (3), which is the uppermost stage, is 32 (= s / d h = 64/2 1 ) bits, so The three-stage transposed Bloom filter row tBF (3) includes 32 (= s / d h = 64/2 1 ) transposed Bloom filters tbf (3-1) to tbf (3-32).

なお、図8では、説明上、比較のため、転置ブルームフィルタ列tBF(1)〜tBF(3)とともに、転置前のブルームフィルタ列BF(1)〜BF(3)を併記しておく。   In FIG. 8, for the purpose of explanation, the transposed Bloom filter rows tBF (1) to tBF (3) and the pre-transposed Bloom filter rows BF (1) to BF (3) are also shown for comparison.

まず、検索処理部202は、検索対象データDxについてのハッシュ関数H1()〜H3()での3個のハッシュ値を、第3段の転置ブルームフィルタ数32で割り算したときの余り値「2」、「19」、「27」を求める。   First, the search processing unit 202 divides the three hash values of the hash functions H1 () to H3 () for the search target data Dx by the number of transposed Bloom filters 32 in the third stage “2” ”,“ 19 ”,“ 27 ”.

つぎに、検索処理部202は、フィルタリング対象となる転置ブルームフィルタを第3段の転置ブルームフィルタ列tBF(3)から特定する。具体的には、余り値と同一ビット位置(余り値が0の場合は末尾位置)となる転置ブルームフィルタtbf(3−2),tbf(3−19),tbf(3−27)を特定する。そして、特定された転置ブルームフィルタtbf(3−2),tbf(3−19),tbf(3−27)の各ビット列{10},{11},{10}のAND演算をおこなう。そのAND結果は、{10}となる。   Next, the search processing unit 202 identifies the transposed Bloom filter to be filtered from the third-stage transposed Bloom filter string tBF (3). Specifically, the transposed Bloom filters tbf (3-2), tbf (3-19), and tbf (3-27) that are in the same bit position as the remainder value (or the end position when the remainder value is 0) are specified. . Then, an AND operation is performed on each bit string {10}, {11}, {10} of the identified transposed Bloom filter tbf (3-2), tbf (3-19), tbf (3-27). The AND result is {10}.

検索処理部202は、AND結果に「1」が含まれていない場合は、データブロック集合dbには検索対象データDxが存在しないと判定する。一方、AND結果に「1」が含まれている場合、検索対象データDxを登録したかもしれないため、1つ下の段に移る。   When “1” is not included in the AND result, the search processing unit 202 determines that the search target data Dx does not exist in the data block set db. On the other hand, when “1” is included in the AND result, the search target data Dx may be registered, and the process moves to the next lower level.

第2段においても、まず、検索処理部202は、検索対象データDxについての3個のハッシュ値を、第2段の転置ブルームフィルタ数16で割り算したときの余り値「8」、「11」、「13」を求める。   Also in the second stage, first, the search processing unit 202 divides the three hash values for the search target data Dx by the number of transposed Bloom filters 16 in the second stage, “8” and “11”. , “13” is obtained.

つぎに、検索処理部202は、フィルタリング対象となる転置ブルームフィルタを第2段の転置ブルームフィルタ列tBF(2)から特定する。具体的には、余り値と同一ビット位置(余り値が0の場合は末尾位置)となる転置ブルームフィルタtbf(2−8),tbf(2−11),tbf(2−13)を特定する。そして、特定された転置ブルームフィルタtbf(2−8),tbf(2−11),tbf(2−13)の各ビット列{0110},{0100},{0110}のAND演算をおこなう。そのAND結果は、{0100}となる。   Next, the search processing unit 202 specifies the transposed Bloom filter to be filtered from the second-stage transposed Bloom filter row tBF (2). Specifically, the transposed Bloom filters tbf (2-8), tbf (2-11), and tbf (2-13) that have the same bit position as the remainder value (or the end position when the remainder value is 0) are specified. . Then, an AND operation is performed on each bit string {0110}, {0100}, {0110} of the identified transposed Bloom filters tbf (2-8), tbf (2-11), and tbf (2-13). The AND result is {0100}.

検索処理部202は、AND結果に「1」が含まれていない場合は、データブロック集合dbには検索対象データDxが存在しないと判定する。一方、AND結果に「1」が含まれている場合、検索対象データDxを登録したかもしれないため、1つ下の段に移る。   When “1” is not included in the AND result, the search processing unit 202 determines that the search target data Dx does not exist in the data block set db. On the other hand, when “1” is included in the AND result, the search target data Dx may be registered, and the process moves to the next lower level.

最下段である第1段においても、まず、検索処理部202は、検索対象データDxについての3個のハッシュ値を、第1段の転置ブルームフィルタ数8で割り算したときの余り値「2」、「5」、「7」を求める。   Even in the first level, which is the lowest level, first, the search processing unit 202 divides the three hash values for the search target data Dx by the number of transposed Bloom filters of the first level “8”. , “5”, “7” are obtained.

つぎに、検索処理部202は、フィルタリング対象となる転置ブルームフィルタを第1段の転置ブルームフィルタ列tBF(1)から特定する。具体的には、余り値と同一ビット位置(余り値が0の場合は末尾位置)となる転置ブルームフィルタtbf(1−2),tbf(1−5),tbf(1−7)を特定する。そして、特定された転置ブルームフィルタtbf(1−2),tbf(1−5),tbf(1−7)の各ビット列{00110110},{10011010},{00110111}のAND演算をおこなう。そのAND結果は、{00010010}となる。   Next, the search processing unit 202 identifies the transposed Bloom filter to be filtered from the first-stage transposed Bloom filter string tBF (1). Specifically, the transposed Bloom filters tbf (1-2), tbf (1-5), and tbf (1-7) that are in the same bit position as the remainder value (or the end position when the remainder value is 0) are specified. . Then, an AND operation is performed on each bit string {00110110}, {10011010}, and {00110111} of the identified transposed Bloom filters tbf (1-2), tbf (1-5), and tbf (1-7). The AND result is {00010010}.

これ以上下の段は存在しないため、擬陽性により、AND結果{00010010}が「1」のビット位置4,7に対応するデータブロックdb4,db7に検索対象データDxが存在する可能性がある。   Since there is no lower stage, there is a possibility that the search target data Dx exists in the data blocks db4 and db7 corresponding to the bit positions 4 and 7 whose AND result {00010010} is “1” due to false positive.

この場合、ハッシュテーブルHT4,HT7に対しハッシュ関数H1()でのハッシュ値をキーにして検索することで、データブロックdb4がヒットし、データブロックdb7はヒットしなかったものとする。これにより、検索対象データDxは、データブロックdb4に登録されていることが判明する。これにより、検索処理を終了する。   In this case, it is assumed that the data block db4 is hit and the data block db7 is not hit by searching the hash tables HT4 and HT7 using the hash value of the hash function H1 () as a key. Thereby, it is found that the search target data Dx is registered in the data block db4. Thereby, the search process is terminated.

このような手順により、検索処理部202は、階層型転置ブルームフィルタを利用することで、階層型ブルームフィルタBFに比べてもより高速に対象データを検索することができる。   By such a procedure, the search processing unit 202 can search for target data at a higher speed than the hierarchical Bloom filter BF by using the hierarchical transposed Bloom filter.

<検索処理部202の詳細な機能的構成例>
つぎに、検索処理部202の詳細な機能的構成例について説明する。
<Detailed Functional Configuration Example of Search Processing Unit 202>
Next, a detailed functional configuration example of the search processing unit 202 will be described.

図9は、検索処理部202の機能的構成例を示すブロック図である。検索処理部202は、受付部901と、転置部902と、変換部903と、第1の特定部904と、第2の特定部905と、判断部906と、判定部907と、抽出部908と、出力部909とを備えている。   FIG. 9 is a block diagram illustrating a functional configuration example of the search processing unit 202. The search processing unit 202 includes a receiving unit 901, a transposing unit 902, a converting unit 903, a first specifying unit 904, a second specifying unit 905, a determining unit 906, a determining unit 907, and an extracting unit 908. And an output unit 909.

受付部901は、ブルームフィルタ列BF(p)の転置要求を受け付ける機能を有する。たとえば、階層型ブルームフィルタBFから階層型転置ブルームフィルタtBFへの転置要求を受け付ける。   The receiving unit 901 has a function of receiving a transposition request for the Bloom filter row BF (p). For example, a transposition request from the hierarchical Bloom filter BF to the hierarchical transposed Bloom filter tBF is accepted.

ここで、転置要求とは、ブルームフィルタ列BF(p)を転置ブルームフィルタ列tBF(p)に転置させるリクエストである。たとえば、管理装置200が起動して起動が完了した旨の起動完了通知を転置要求とする。これにより、管理装置200が起動することで、階層型ブルームフィルタBFが階層型転置ブルームフィルタtBFに転置される。このように起動時に一括して、階層型転置ブルームフィルタtBFに転置しておけば、シャットダウンするまでは常時転置ブルームフィルタtBFを利用することができる。   Here, the transposition request is a request for transposing the Bloom filter string BF (p) to the transposed Bloom filter string tBF (p). For example, the activation completion notification that the management apparatus 200 is activated and the activation is completed is used as the transposition request. Thereby, when the management apparatus 200 is activated, the hierarchical Bloom filter BF is transposed to the hierarchical transposed Bloom filter tBF. In this way, if the entire transposed Bloom filter tBF is transposed at the time of activation, the transposed Bloom filter tBF can be used at all times until shutdown.

また、データブロック集合dbに対する検索要求を転置要求としてもよい。これにより、検索処理部202は、検索要求があるまでは待機しておき、検索要求があると、階層型ブルームフィルタBFのうち検索処理部202で用いられるブルームフィルタ列BF(p)を転置させることとなる。これにより、検索頻度が高くなるにつれ、転置ブルームフィルタ列tBF(p)が増加する。したがって、検索に必要なブルームフィルタ列BF(p)から徐々に転置させるため、シャットダウンまでに利用されなかったブルームフィルタ列の無駄な転置処理を低減することができる。   The search request for the data block set db may be a transposition request. Thereby, the search processing unit 202 stands by until a search request is made, and when there is a search request, the Bloom filter string BF (p) used in the search processing unit 202 is transposed among the hierarchical Bloom filters BF. It will be. Thereby, the transposed Bloom filter string tBF (p) increases as the search frequency increases. Therefore, since it is gradually transposed from the Bloom filter row BF (p) necessary for the search, it is possible to reduce useless transposition processing of the Bloom filter row that was not used until the shutdown.

転置部902は、受付部901によって転置要求が受け付けられた場合、ブルームフィルタ列BF(p)を、転置ブルームフィルタ列tBF(p)に転置する機能を有する。具体的には、転置部902では、ブルームフィルタ列BF(p)を、図7に示したような手法により、転置ブルームフィルタ列tBF(p)に転置する。   The transposition unit 902 has a function of transposing the Bloom filter string BF (p) to the transposed Bloom filter string tBF (p) when the transposition request is accepted by the accepting unit 901. Specifically, the transposition unit 902 transposes the Bloom filter row BF (p) to the transposed Bloom filter row tBF (p) by the method shown in FIG.

たとえば、ブルームフィルタ列BF(p)は、n(=d[h-(p-1)])個のブルームフィルタbf(p−1)〜bf(p−n)が配列されたインデックス情報である。また、各ブルームフィルタbf(p−1)〜bf(p−n)のビット幅は、m(=s/n)ビットである。 For example, the Bloom filter row BF (p) is index information in which n (= d [h− (p−1)] ) Bloom filters bf (p−1) to bf (pn) are arranged. . The bit width of each of the Bloom filters bf (p−1) to bf (p−n) is m (= s / n) bits.

ブルームフィルタ列BF(p)を図7にしたがって転置すると、転置ブルームフィルタ列tBF(p)は、m(=s/n)個の転置ブルームフィルタtbf(p−1)〜tbf(p−m)が配列されたインデックス情報となる。各転置ブルームフィルタtbf(p−1)〜tbf(p−m)のビット幅は、n(=d[h-(p-1)])ビットとなる。このように転置により、配列数とビット幅が入れ替わる。 When the Bloom filter row BF (p) is transposed according to FIG. 7, the transposed Bloom filter row tBF (p) has m (= s / n) transposed Bloom filters tbf (p−1) to tbf (p−m). Becomes the index information arranged. The bit width of each transposed Bloom filter tbf (p-1) to tbf (pm) is n (= d [h- (p-1)] ) bits. In this way, the number of arrays and the bit width are interchanged by transposition.

変換部903は、複数種類(種類数k)のハッシュ関数に基づいて、ハッシュ関数ごとに、検索対象データを、転置ブルームフィルタの配列位置をあらわす位置情報に変換する機能を有する。具体的には、たとえば、k個の異なるハッシュ関数H1()〜Hk()に検索対象データを与えることで、k個のハッシュ値が得られる。   The conversion unit 903 has a function of converting the search target data into position information representing the array position of the transposed Bloom filter for each hash function based on a plurality of types (number of types k) of hash functions. Specifically, for example, k hash values are obtained by providing search target data to k different hash functions H1 () to Hk ().

図5に示したブルームフィルタ列BF(p)へのエントリでは、ブルームフィルタ列BF(p)を構成するブルームフィルタのビット幅m(=s/n)でハッシュ値を除算し、その余り値に対応するビット位置をONにしていた。   In the entry to the Bloom filter column BF (p) shown in FIG. 5, the hash value is divided by the bit width m (= s / n) of the Bloom filter constituting the Bloom filter column BF (p), and the remainder is obtained. The corresponding bit position was set to ON.

このため、変換部903では、k個のハッシュ値が得られると、転置ブルームフィルタ列tBF(p)を構成する転置ブルームフィルタの配列数m(=s/n)でハッシュ値を除算し、その余り値を算出する。このk個の余り値が、転置ブルームフィルタの配列位置をあらわす位置情報である。なお、算出された余り値が0の場合の位置情報は、mとする。   Therefore, when k hash values are obtained, the conversion unit 903 divides the hash value by the number m (= s / n) of transposed Bloom filter arrays constituting the transposed Bloom filter sequence tBF (p), Calculate the remainder value. The k remainder values are position information representing the arrangement position of the transposed Bloom filter. Note that the position information when the calculated remainder value is 0 is m.

第1の特定部904は、転置ブルームフィルタ列tBF(p)の中から、変換部903によって変換された位置情報に対応する転置ブルームフィルタを位置情報ごとに特定する機能を有する。具体的には、変換部903から得られた位置情報と配列番号が一致する転置ブルームフィルタを転置ブルームフィルタ列tBF(p)の中から特定する。   The first specifying unit 904 has a function of specifying, for each positional information, a transposed Bloom filter corresponding to the positional information converted by the converting unit 903 from the transposed Bloom filter row tBF (p). Specifically, a transposed Bloom filter whose array number matches the position information obtained from the conversion unit 903 is specified from the transposed Bloom filter row tBF (p).

図8に示した例では、第3段の転置ブルームフィルタ列tBF(3)では、余り値(位置情報)が「2」、「19」、「27」であるため、配列番号が「2」、「19」、「27」である転置ブルームフィルタtbf(3−2),tbf(3−19),tbf(3−27)を特定する。   In the example illustrated in FIG. 8, in the third-stage transposed Bloom filter row tBF (3), the remainder values (position information) are “2”, “19”, and “27”, so the array element number is “2”. , “19”, “27” are specified as transposed Bloom filters tbf (3-2), tbf (3-19), tbf (3-27).

第2の特定部905は、第1の特定部904によって特定された複数の転置ブルームフィルタtbf(p)に共通する位置情報に対応するブルームフィルタbf(p)を、ブルームフィルタ列BF(p)の中から特定する機能を有する。具体的には、第1の特定部904によって特定された複数の転置ブルームフィルタtbf(p)のビット列をAND演算する。このAND演算によって「1」が出現したビットの位置が、転置前のブルームフィルタ列BF(p)でエントリ時にONになったであろうビットを有するブルームフィルタである。   The second specifying unit 905 generates the Bloom filter bf (p) corresponding to the position information common to the plurality of transposed Bloom filters tbf (p) specified by the first specifying unit 904, and the Bloom filter row BF (p). It has a function to identify from. Specifically, an AND operation is performed on the bit strings of the plurality of transposed Bloom filters tbf (p) specified by the first specifying unit 904. The bit position where “1” appears by the AND operation is a Bloom filter having a bit that would have been turned ON at the time of entry in the Bloom filter string BF (p) before transposition.

図8に示した例では、第3段において転置ブルームフィルタtbf(3−2),tbf(3−19),tbf(3−27)をAND演算すると、AND結果では先頭のビット位置が「1」となる。したがって、転置前のブルームフィルタ列BF(3)のうちブルームフィルタbf(3−1)のいずれかのビットが、検索対象データのエントリ時にONになった可能性があることがわかる。   In the example shown in FIG. 8, when the transposed Bloom filters tbf (3-2), tbf (3-19), and tbf (3-27) are ANDed in the third stage, the leading bit position in the AND result is “1”. " Therefore, it can be seen that any bit of the Bloom filter bf (3-1) in the Bloom filter row BF (3) before transposition may have been turned ON at the time of entry of search target data.

このように、第1の特定部904および第2の特定部905により、転置ブルームフィルタ列tBF(p)へのアクセス回数が転置前のブルームフィルタ列BF(p)よりも減少する。したがって、転置ブルームフィルタtbf(p)の段数pが増加すればするほど、転置前のブルームフィルタ列BF(p)よりもアクセス回数が格段に抑えられ、検索速度の高速化を実現することができる。   As described above, the first specifying unit 904 and the second specifying unit 905 reduce the number of accesses to the transposed Bloom filter row tBF (p) than that before the transposed Bloom filter row BF (p). Therefore, as the number of stages p of the transposed Bloom filter tbf (p) increases, the number of accesses is significantly suppressed compared to the pre-transposed Bloom filter string BF (p), and the search speed can be increased. .

判断部906は、第2の特定部905によって特定されたブルームフィルタを配列要素とするブルームフィルタ列が存在するか否かを判断する機能を有する。具体的には、転置ブルームフィルタ列tBF(p)の1つ下の段の転置ブルームフィルタ列が存在するか否かを判断するだけでよい。より具体的には、p=1であるか否かをみるだけでよい。   The determination unit 906 has a function of determining whether there is a Bloom filter row having the Bloom filter specified by the second specifying unit 905 as an array element. Specifically, it is only necessary to determine whether or not there is a transposed Bloom filter row one level below the transposed Bloom filter row tBF (p). More specifically, it is only necessary to check whether p = 1.

1つ下の段の転置ブルームフィルタ列が存在する場合(p≠1)は、第1の特定部904により、1つ下の段の転置ブルームフィルタ列をあらたに転置ブルームフィルタ列tBF(p)とする。一方、1つ下の段の転置ブルームフィルタ列が存在しない場合(p=1)、転置ブルームフィルタ列tBF(p)は、最下段である第1段の転置ブルームフィルタ列tBF(1)となる。   When the transposed Bloom filter row of the next lower stage exists (p ≠ 1), the first specifying unit 904 newly converts the transposed Bloom filter row of the lower stage to the transposed Bloom filter row tBF (p). And On the other hand, when there is no lower-stage transposed Bloom filter row (p = 1), the transposed Bloom filter row tBF (p) becomes the first-stage transposed Bloom filter row tBF (1), which is the lowest stage. .

判定部907は、判断部906によって存在しないと判断された場合、データブロック集合dbのうち、第2の特定部905によって特定されたブルームフィルタbf(p)に対応するデータブロックdb#内での検索対象データの有無を判定する機能を有する。p=1の場合、第2の特定部905によって特定されたブルームフィルタbf(1)はデータブロックと一対一対応するため、第2の特定部905でのAND結果で「1」になったビットの位置をブロック番号#とするデータブロックdb#を判定対象とする。判定部907では、判定対象のデータブロックdb#は擬陽性であるため、陽性であるか陰性であるかを判定することとなる。   If the determination unit 906 determines that the data does not exist, the determination unit 907 includes the data block db # corresponding to the Bloom filter bf (p) specified by the second specification unit 905 in the data block set db. It has a function of determining the presence or absence of search target data. When p = 1, since the Bloom filter bf (1) specified by the second specifying unit 905 has a one-to-one correspondence with the data block, the bit that is “1” in the AND result of the second specifying unit 905 The data block db # having the block number # as the position is determined as a determination target. The determination unit 907 determines whether the determination target data block db # is positive or negative and therefore is positive or negative.

そして、判定対象のデータブロックdb#のハッシュテーブルHT#を参照して、検索対象データの擬陽性/陰性を判定する。この場合、階層型ブルームフィルタBFを用いた検索処理と同様、特定のハッシュ関数(たとえば、H1())による検索対象データのハッシュ値をキーにして、ハッシュテーブルHT#からデータ(またはそのポインタ)の有無を判定する。存在しない場合は、擬陽性によりヒットミスしたこととなる。   Then, with reference to the hash table HT # of the determination target data block db #, false positive / negative of the search target data is determined. In this case, similarly to the search process using the hierarchical Bloom filter BF, data (or a pointer thereof) from the hash table HT # using a hash value of search target data by a specific hash function (for example, H1 ()) as a key. Determine the presence or absence. If it does not exist, it means that a miss has occurred due to a false positive.

抽出部908は、判定部907によって陽性であると判定された場合、判定対象のデータブロックdb#から検索対象データを抽出する機能を有する。具体的には、たとえば、判定対象のデータブロックに対応するハッシュテーブルHT#によりデータの格納位置が判明するため、抽出部908は、その格納位置から検索対象データや検索対象データに関連するデータを抽出する。   The extraction unit 908 has a function of extracting search target data from the determination target data block db # when the determination unit 907 determines that the data is positive. Specifically, for example, since the data storage position is determined by the hash table HT # corresponding to the determination target data block, the extraction unit 908 obtains the search target data and the data related to the search target data from the storage position. Extract.

たとえば、検索対象データそのものを判定対象のデータブロックdb#から抽出する。抽出できた場合は、検索対象データが登録されていることが判明する。また、検索対象データがファイル番号である場合は、ファイル番号に関連するファイルデータを抽出する。また、検索対象データが辞書や用語の見出し語である場合は、見出し語の用語解説データを抽出する。   For example, the search target data itself is extracted from the determination target data block db #. If it can be extracted, it is found that the search target data is registered. If the search target data is a file number, file data related to the file number is extracted. In addition, when the search target data is a dictionary or a term headword, the term explanation data of the headword is extracted.

出力部909は、判定部907による判定結果や抽出部908によって抽出されたデータを出力する。たとえば、検索対象データの陽性または陰性といった判定結果や、陽性である場合の抽出データを出力する。出力形式としては、ディスプレイ108への表示、音声出力、印刷出力、他の装置への送信などがある。   The output unit 909 outputs the determination result by the determination unit 907 and the data extracted by the extraction unit 908. For example, the determination result such as positive or negative of the search target data and the extracted data when it is positive are output. Examples of the output format include display on the display 108, audio output, print output, transmission to another apparatus, and the like.

<登録処理部201による階層型ブルームフィルタBFの学習処理手順>
図10は、登録処理部201による階層型ブルームフィルタBFの学習処理手順を示すフローチャートである。まず、登録処理部201は、登録したいデータ(対象データD)があるか否かを判断する(ステップS1001)。対象データDがある場合(ステップS1001:Yes)、登録処理部201は、段数pをp=1に設定し(ステップS1002)、p>h(hは階層型ブルームフィルタBFの最上段)であるか否かを判断する(ステップS1003)。p>hでない場合(ステップS1003:No)、登録処理部201は、k種類のハッシュ関数を用いて、対象データのk個のハッシュ値を算出する(ステップS1004)。そして、k個のハッシュ値をブルームフィルタ列BF(p)のビット幅で除算して、k個の余り値を算出する(ステップS1005)。
<Learning Processing Procedure of Hierarchical Bloom Filter BF by Registration Processing Unit 201>
FIG. 10 is a flowchart showing the learning processing procedure of the hierarchical Bloom filter BF by the registration processing unit 201. First, the registration processing unit 201 determines whether there is data to be registered (target data D) (step S1001). When there is target data D (step S1001: Yes), the registration processing unit 201 sets the number of stages p to p = 1 (step S1002), and p> h (h is the uppermost stage of the hierarchical Bloom filter BF). Whether or not (step S1003). If p> h is not satisfied (step S1003: NO), the registration processing unit 201 calculates k hash values of the target data using k types of hash functions (step S1004). Then, k hash values are divided by the bit width of the Bloom filter string BF (p) to calculate k remainder values (step S1005).

つぎに、登録処理部201は、p段目のブルームフィルタ列BF(p)の中から登録先のブルームフィルタbf(p)rを特定する(ステップS1006)。p=1の場合は、保存先のデータブロックdb#のブロック番号#に対応するブルームフィルタbf(1−#)を登録先のブルームフィルタbf(p)rとする。   Next, the registration processing unit 201 identifies the bloom filter bf (p) r that is the registration destination from the p-th Bloom filter row BF (p) (step S1006). When p = 1, the bloom filter bf (1- #) corresponding to the block number # of the data block db # of the storage destination is set as the bloom filter bf (p) r of the registration destination.

具体的には、図5に示したように、対象データDをデータブロックdb3に登録する場合は、データブロックdb3のブロック番号3と同一配列番号である第1段のブルームフィルタbf(1−3)を登録先のブルームフィルタbf(1)rとする。   Specifically, as shown in FIG. 5, when registering the target data D in the data block db3, the first-stage Bloom filter bf (1-3) having the same array number as the block number 3 of the data block db3. ) Is the bloom filter bf (1) r of the registration destination.

p≠1の場合は、p段目のブルームフィルタ列BF(p)の中から、(p−1)段目の登録先のブルームフィルタbf(p−1)rのビット位置に対応するブルームフィルタbf(p)をあらたな登録先のブルームフィルタbf(p)rとする。   If p ≠ 1, the Bloom filter corresponding to the bit position of the (p−1) -th registered Bloom filter bf (p−1) r from the p-th Bloom filter string BF (p) Let bf (p) be the newly registered Bloom filter bf (p) r.

具体的には、図5に示したように、P=2とすると、2段目のブルームフィルタ列BF(2)の中から、1段目の登録先のブルームフィルタbf(1)rであるブルームフィルタbf(1−3)のビット位置を包含するブルームフィルタbf(2−2)をあらたな登録先のブルームフィルタbf(2)rとする。   Specifically, as shown in FIG. 5, when P = 2, the Bloom filter bf (1) r of the first registration destination is selected from the second-stage Bloom filter row BF (2). The Bloom filter bf (2-2) including the bit position of the Bloom filter bf (1-3) is set as a new registration destination Bloom filter bf (2) r.

そして、登録先のブルームフィルタbf(p)rに、ステップS1005で算出されたk個の余り値をエントリする(ステップS1007)。すなわち、余り値と同一ビット位置のビットをONにする。余り値が0の場合は、末尾ビットをONにする。そして、段数pをインクリメントして(ステップS1008)、ステップS1003に戻る。   Then, the k remainder values calculated in step S1005 are entered in the registered Bloom filter bf (p) r (step S1007). That is, the bit at the same bit position as the remainder value is turned ON. When the remainder value is 0, the tail bit is turned ON. Then, the stage number p is incremented (step S1008), and the process returns to step S1003.

ステップS1003において、p>hである場合(ステップS1003:Yes)、対象データのハッシュテーブルエントリを追加する(ステップS1009)。具体的には、たとえば、図4に示したように、ハッシュテーブルエントリE3をハッシュテーブルHT3に追加登録する。   If p> h in step S1003 (step S1003: Yes), a hash table entry of the target data is added (step S1009). Specifically, for example, as shown in FIG. 4, the hash table entry E3 is additionally registered in the hash table HT3.

そして、ステップS1001に戻る。ステップS1001において、対象データDがない場合(ステップS1001:No)、登録処理部201による階層型ブルームフィルタBFの学習処理を終了する。このような処理手順により、階層型ブルームフィルタBFが構築されることとなる。   Then, the process returns to step S1001. In step S1001, if there is no target data D (step S1001: No), the learning process of the hierarchical Bloom filter BF by the registration processing unit 201 is terminated. By such a processing procedure, the hierarchical Bloom filter BF is constructed.

<検索処理部202による検索処理手順>
図11および図12は、検索処理部202による検索処理手順を示すフローチャートである。なお、検索処理部202により利用されるブルームフィルタは、すでに一括転置済みの階層型転置ブルームフィルタtBFでもよく、階層型ブルームフィルタBFでもよい。階層型ブルームフィルタBFを用いる場合は、未転置のブルームフィルタが特定される都度転置処理をおこなう。
<Search Processing Procedure by Search Processing Unit 202>
FIG. 11 and FIG. 12 are flowcharts showing a search processing procedure by the search processing unit 202. Note that the Bloom filter used by the search processing unit 202 may be a hierarchical transposed Bloom filter tBF that has already been transposed, or a hierarchical Bloom filter BF. When the hierarchical Bloom filter BF is used, a transposition process is performed each time an untransposed Bloom filter is specified.

すなわち、検索しながら階層型転置ブルームフィルタtBFを構築していく。図11および図12では、検索しながら階層型転置ブルームフィルタtBFを構築していく場合の修理手順について説明する。なお、一括転置済みの場合は、転置済みか否かの判断(ステップS1104)と転置処理(ステップS1105)を省略するだけでよい。   That is, the hierarchical transposed Bloom filter tBF is constructed while searching. 11 and 12, the repair procedure when the hierarchical transposed Bloom filter tBF is constructed while searching will be described. In addition, when batch transposition has been completed, it is only necessary to omit the determination of whether transposition has been performed (step S1104) and the transposition processing (step S1105).

まず、図11において、検索処理部202は、受付部901により、検索対象データDxを待ち受け(ステップS1101:No)、検索対象データDxが受け付けられた場合(ステップS1101:Yes)、検索処理部202は、変換部903により、検索対象データDxをk種類のハッシュ関数に与えてk個のハッシュ値を算出する(ステップS1102)。   First, in FIG. 11, the search processing unit 202 waits for the search target data Dx by the receiving unit 901 (step S1101: No), and when the search target data Dx is received (step S1101: Yes), the search processing unit 202. The conversion unit 903 gives the search object data Dx to k types of hash functions to calculate k hash values (step S1102).

そして、検索処理部202は、p=h、すなわち、段数pを最大段数hに設定し(ステップS1103)、p段目のブルームフィルタ列BF(p)が転置済みであるか否かを判断する(ステップS1104)。転置済みである場合(ステップS1104:Yes)、ステップS1106に移行する。一方、未転置である場合(ステップS1104:No)、検索処理部202は、転置部902により、p段目のブルームフィルタ列BF(p)を転置して(ステップS1105)、ステップS1106に移行する。   Then, the search processing unit 202 sets p = h, that is, sets the number of stages p to the maximum number of stages h (step S1103), and determines whether or not the p-th Bloom filter string BF (p) has been transposed. (Step S1104). When it has been transposed (step S1104: Yes), the process proceeds to step S1106. On the other hand, if it is not transposed (step S1104: No), the search processing unit 202 transposes the p-th Bloom filter row BF (p) by the transposing unit 902 (step S1105), and proceeds to step S1106. .

ステップS1106では、検索処理部202は、変換部903により、k個のハッシュ値を転置ブルームフィルタの配列数で除算して、k個の余り値を算出する(ステップS1106)。そして、検索処理部202は、第1の特定部904により、p段目の転置ブルームフィルタ列tBF(p)から、k個の余り値に対応するk個の転置ブルームフィルタtbf(p)rを特定する(ステップS1107)。   In step S1106, the search processing unit 202 uses the conversion unit 903 to divide k hash values by the number of arrays of transposed Bloom filters to calculate k remainder values (step S1106). Then, the search processing unit 202 uses the first specifying unit 904 to extract k transposed Bloom filters tbf (p) r corresponding to k remainder values from the p-th transposed Bloom filter sequence tBF (p). Specify (step S1107).

そして、検索処理部202は、第2の特定部905により、k個の転置ブルームフィルタtbf(p)rをAND演算し(ステップS1108)、図12のステップS1201に移行する。   Then, the search processing unit 202 performs an AND operation on the k transposed Bloom filters tbf (p) r by the second specifying unit 905 (step S1108), and proceeds to step S1201 in FIG.

図12において、検索処理部202は、第2の特定部905により、AND結果の先頭ビットを対象ビットに設定し(ステップS1201)、対象ビットがONであるか否かを判断する(ステップS1202)。ONでない場合、検索処理部202は、判定部907により、対象ビットがシフト可能か否かを判断する(ステップS1203)。具体的には、対象ビットが末尾ビットであるか否かを判断する。   In FIG. 12, the search processing unit 202 uses the second specifying unit 905 to set the first bit of the AND result as the target bit (step S1201), and determines whether the target bit is ON (step S1202). . If not ON, the search processing unit 202 uses the determination unit 907 to determine whether the target bit can be shifted (step S1203). Specifically, it is determined whether or not the target bit is the tail bit.

シフト可能である場合(ステップS1203:Yes)、検索処理部202は、対象ビットを1ビット末尾方向へシフトし(ステップS1204)、ステップS1202に戻る。一方、ステップS1203においてシフト可能でない場合(ステップS1203:No)、検索処理部202は、判定部907により、検索結果(陰性)と判定し、出力部909から出力する(ステップS1205)。これにより、検索結果が陰性である場合の処理手順を終了する。   When the shift is possible (step S1203: Yes), the search processing unit 202 shifts the target bit toward the end of one bit (step S1204), and returns to step S1202. On the other hand, if the shift is not possible in step S1203 (step S1203: No), the search processing unit 202 determines the search result (negative) by the determination unit 907 and outputs it from the output unit 909 (step S1205). Thereby, the processing procedure when the search result is negative is terminated.

一方、ステップS1202において、対象ビットがONであった場合(ステップS1202:Yes)、検索処理部202は、判断部906により、現在の段数pがp=1であるか否かを判断する(ステップS1206)。p=1でない場合(ステップS1206:No)、pをデクリメントして(ステップS1207)、ステップS1104に戻る。   On the other hand, if the target bit is ON in step S1202 (step S1202: Yes), the search processing unit 202 determines whether the current stage number p is p = 1 by the determination unit 906 (step S1202). S1206). When p is not 1 (step S1206: No), p is decremented (step S1207), and the process returns to step S1104.

一方、p=1である場合(ステップS1206:Yes)、検索処理部202は、判定部907により、対象ビットのビット位置に対応するハッシュテーブルを検索する(ステップS1208)。そして、検索対象データDxが存在するか否かを判断する(ステップS1209)。   On the other hand, if p = 1 (step S1206: Yes), the search processing unit 202 uses the determination unit 907 to search for a hash table corresponding to the bit position of the target bit (step S1208). Then, it is determined whether or not the search target data Dx exists (step S1209).

検索対象データが存在しない場合(ステップS1209:No)、ステップS1203に戻り、対象ビットがシフト可能か否かを判断することとなる。一方、検索対象データが存在する場合(ステップS1209:Yes)、検索処理部202は、検索結果(陽性)を出力する(ステップS1210)。検索処理部202は、必要に応じて抽出部908により関連するデータを抽出して検索結果として出力する。これにより、検索結果が陰性である場合の処理手順を終了する。   When the search target data does not exist (step S1209: No), the process returns to step S1203 to determine whether the target bit can be shifted. On the other hand, when search target data exists (step S1209: Yes), the search processing unit 202 outputs a search result (positive) (step S1210). The search processing unit 202 extracts related data by the extraction unit 908 as necessary and outputs it as a search result. Thereby, the processing procedure when the search result is negative is terminated.

以上説明したように、本実施の形態によれば、ブルームフィルタ列BF(p)を転置して転置ブルームフィルタ列tBF(p)とすることで、メモリアクセスが低減され、検索速度が高速化するという効果を奏する。特に、階層型転置ブルームフィルタtBFとすることで、段ごとのメモリアクセスが低減されるため、より高速に検索をおこなうことができる。   As described above, according to the present embodiment, transposing the Bloom filter string BF (p) to the transposed Bloom filter string tBF (p) reduces the memory access and increases the search speed. There is an effect. In particular, by using the hierarchical transposed Bloom filter tBF, memory access at each stage is reduced, so that a search can be performed at a higher speed.

また、起動完了通知を転置要求とすることで、管理装置200が起動すると、階層型ブルームフィルタBFが階層型転置ブルームフィルタtBFに転置される。このように起動時に一括して、階層型転置ブルームフィルタtBFに転置しておけば、シャットダウンするまでは常時階層型転置ブルームフィルタtBFを利用することができる。   Moreover, when the management apparatus 200 is activated by using the activation completion notification as a transposition request, the hierarchical Bloom filter BF is transposed to the hierarchical transposed Bloom filter tBF. In this way, if the transposition to the hierarchical transposed Bloom filter tBF is collectively performed at the time of startup, the hierarchical transposed Bloom filter tBF can be used at all times until the shutdown.

また、データブロック集合dbに対する検索要求を転置要求とすることで、検索要求があると、階層型ブルームフィルタBFのうち検索処理部202で用いられるブルームフィルタ列BF(p)を転置させることとなる。これにより、検索頻度が高くなるにつれ、転置ブルームフィルタ列tBF(p)が増加する。したがって、検索に必要なブルームフィルタ列BF(p)から徐々に転置させるため、シャットダウンまでに利用されなかったブルームフィルタ列の無駄な転置処理を低減することができる。   Also, by making the search request for the data block set db a transposition request, when there is a search request, the Bloom filter string BF (p) used in the search processing unit 202 in the hierarchical Bloom filter BF is transposed. . Thereby, the transposed Bloom filter string tBF (p) increases as the search frequency increases. Therefore, since it is gradually transposed from the Bloom filter row BF (p) necessary for the search, it is possible to reduce useless transposition processing of the Bloom filter row that was not used until the shutdown.

また、階層型ブルームフィルタBFから転置された階層型転置ブルームフィルタtBFの場合、最下段になるまでは、AND結果のONの有無だけで擬陽性であるか陰性であるかを判断し、AND結果に1つでもONのビットがあれば、擬陽性と判断して、1つ下の段に移行する。このように、AND結果を利用することで、陰性か否かを容易に判断でき、検索対象データが存在しないことを早期に特定することができる。   Further, in the case of the hierarchical transposed Bloom filter tBF transposed from the hierarchical Bloom filter BF, until the bottom level is reached, whether the AND result is ON or not is determined whether it is false positive or negative, and the AND result is If there is even one ON bit, it is determined as a false positive and the process proceeds to the next lower stage. Thus, by using the AND result, it can be easily determined whether or not the result is negative, and it can be identified early that the search target data does not exist.

<階層型転置ブルームフィルタtBFの学習処理例>
図13は、登録処理部201による階層型転置ブルームフィルタtBFの学習処理例を示す説明図である。ここでは、図8に示した階層型転置ブルームフィルタtBFを例にあげて説明する。また、図8では、検索対象データDxを検索してヒットさせた例について説明したが、図13では、検索対象データDx(図13では、対象データDxとする)がデータブロック集合dbにまだ登録されていないものとして説明する。
<Example of learning process of hierarchical transposed Bloom filter tBF>
FIG. 13 is an explanatory diagram illustrating a learning process example of the hierarchical transposed Bloom filter tBF by the registration processing unit 201. Here, the hierarchical transposed Bloom filter tBF shown in FIG. 8 will be described as an example. Further, FIG. 8 illustrates an example in which the search target data Dx is searched and hit, but in FIG. 13, the search target data Dx (referred to as target data Dx in FIG. 13) is still registered in the data block set db. It will be described as not being done.

また、登録される対象データDが与えられるハッシュ関数の種類数kをk=3とする。ここでは、ハッシュ関数H1(),H2(),H3()を用いることとする。また、ハッシュテーブルの登録対象となるハッシュ関数をH1()とする。   Further, the number k of hash functions to which the registered target data D is given is set to k = 3. Here, the hash functions H1 (), H2 (), and H3 () are used. A hash function to be registered in the hash table is H1 ().

まず、データブロック集合dbのうちデータブロックdb4に対象データDxが登録されたものとする。対象データDxを各ハッシュ関数H1(),H2(),H3()に与えたときのハッシュ値は、例として以下の値とする。
H1(Dx)=x1
H2(Dx)=x2
H3(Dx)=x3
First, it is assumed that the target data Dx is registered in the data block db4 in the data block set db. As an example, the hash value when the target data Dx is given to each hash function H1 (), H2 (), H3 () is as follows.
H1 (Dx) = x1
H2 (Dx) = x2
H3 (Dx) = x3

また、階層型転置ブルームフィルタtBFの学習処理では、更新対象となる転置ブルームフィルタtbf(p)内の特定のビットをONにするが、その特定のビットがすでにONになっている場合はそのままとする。   Further, in the learning process of the hierarchical transposed Bloom filter tBF, a specific bit in the transposed Bloom filter tbf (p) to be updated is turned ON, but if the specific bit is already ON, it is left as it is. To do.

ここで、登録処理部201は、登録先のデータブロックdb4のブロック番号4のハッシュテーブルHT4に対するハッシュテーブルエントリE4を作成する。そして、登録処理部201は、作成されたハッシュテーブルエントリE4を、ハッシュテーブルHT4に追加登録する。   Here, the registration processing unit 201 creates a hash table entry E4 for the hash table HT4 of the block number 4 of the registration destination data block db4. Then, the registration processing unit 201 additionally registers the created hash table entry E4 in the hash table HT4.

そして、第1段の学習処理に移る。登録処理部201は、更新対象となる転置ブルームフィルタtbf(1)を、第1段の転置ブルームフィルタ列tBF(1)の中から特定する。具体的には、登録処理部201は、各ハッシュ値x1〜x3を、第1段の転置ブルームフィルタ列tBF(1)の配列個数である8で割り算し、余り値を算出する。ハッシュ値x1の余り値は「2」、ハッシュ値x2の余り値は「5」、ハッシュ値x3の余り値は「7」になったものとする。したがって、第1段での更新対象となる転置ブルームフィルタtbf(1)は、転置ブルームフィルタtbf(1−2),tbf(1−5),tbf(1−7)となる。   Then, the process proceeds to the first stage learning process. The registration processing unit 201 identifies the transposed Bloom filter tbf (1) to be updated from the first-stage transposed Bloom filter row tBF (1). Specifically, the registration processing unit 201 divides each hash value x1 to x3 by 8, which is the number of arrays of the first-stage transposed Bloom filter string tBF (1), and calculates a remainder value. It is assumed that the remainder value of the hash value x1 is “2”, the remainder value of the hash value x2 is “5”, and the remainder value of the hash value x3 is “7”. Therefore, the transposed Bloom filter tbf (1) to be updated in the first stage is the transposed Bloom filter tbf (1-2), tbf (1-5), tbf (1-7).

また、最下段では、登録先のデータブロックdb4のブロック番号4に対応するビット位置を更新対象ビットとする。したがって、更新対象となる転置ブルームフィルタの先頭から4ビット目のビットをONにする。これにより、第1段の転置ブルームフィルタ列tBF(1)の学習処理を終了する。   In the lowest level, the bit position corresponding to the block number 4 of the registration-destination data block db4 is set as the update target bit. Therefore, the fourth bit from the beginning of the transposed Bloom filter to be updated is turned ON. Thereby, the learning process of the first-stage transposed Bloom filter row tBF (1) is completed.

つぎに、第2段の学習処理に移る。登録処理部201は、更新対象となる転置ブルームフィルタtbf(2)を、第2段の転置ブルームフィルタ列tBF(2)の中から特定する。具体的には、登録処理部201は、各ハッシュ値x1〜x3を、第2段の転置ブルームフィルタ列tBF(2)の配列個数である16で割り算し、余り値を算出する。ハッシュ値x1の余り値は「8」、ハッシュ値x2の余り値は「11」、ハッシュ値x3の余り値は「13」になったものとする。したがって、第2段での更新対象となる転置ブルームフィルタtbf(2)は、転置ブルームフィルタtbf(2−8),tbf(2−11),tbf(2−13)となる。   Next, the learning process of the second stage is started. The registration processing unit 201 identifies the transposed Bloom filter tbf (2) to be updated from the second-stage transposed Bloom filter row tBF (2). Specifically, the registration processing unit 201 divides each hash value x1 to x3 by 16, which is the number of arrays of the second-stage transposed Bloom filter string tBF (2), and calculates a remainder value. It is assumed that the remainder value of the hash value x1 is “8”, the remainder value of the hash value x2 is “11”, and the remainder value of the hash value x3 is “13”. Therefore, the transposed Bloom filter tbf (2) to be updated in the second stage is the transposed Bloom filter tbf (2-8), tbf (2-11), tbf (2-13).

つぎに、転置ブルームフィルタtbf(2−8),tbf(2−11),tbf(2−13)内のどのビット位置のビットをONにするかについて説明する。転置前の階層型ブルームフィルタBFでは、分割数をdとして、各ブルームフィルタ列BF(p)をn(=d[h-(p-1)])個に分割した。そして、これにより、各ブルームフィルタ列BF(p)のビット幅は、m(=s/n)ビットになった。 Next, the bit position of the bit in the transposed Bloom filter tbf (2-8), tbf (2-11), tbf (2-13) will be described. In the hierarchical Bloom filter BF before transposition, the number of divisions is d, and each Bloom filter row BF (p) is divided into n (= d [h− (p−1)] ). As a result, the bit width of each Bloom filter column BF (p) is m (= s / n) bits.

このため、階層型ブルームフィルタBFの学習処理では、第(p−1)段での更新対象のブルームフィルタbf((p−1)−#)のビット位置を包含するブルームフィルタbf(p)を、第p段のブルームフィルタ列BF(p)の中から特定していた。   For this reason, in the learning process of the hierarchical Bloom filter BF, the Bloom filter bf (p) including the bit position of the Bloom filter bf ((p-1)-#) to be updated in the (p-1) -th stage is used. The p-th Bloom filter row BF (p) is specified.

たとえば、図5の例では、第2段において、前段の第1段での更新対象のブルームフィルタbf(1−3)の配列番号3を、分割数d(=2)で割り算し、端数を切り上げることで、更新対象の配列番号は2となる。したがって、ブルームフィルタbf(2−2)が特定される。   For example, in the example of FIG. 5, in the second stage, the array number 3 of the Bloom filter bf (1-3) to be updated in the first stage of the previous stage is divided by the division number d (= 2), and the fraction is calculated. By rounding up, the array number to be updated becomes 2. Therefore, the Bloom filter bf (2-2) is specified.

これに対し、階層型転置ブルームフィルタtBFでは、配列個数nとビット幅mが入れ替わっているため、第(p−1)段の更新対象のブルームフィルタbf((p−1)−#)の配列番号#ではなく、第(p−1)段での更新対象ビット位置を分割数dで割り算し、端数を切り上げる。   On the other hand, in the hierarchical transposed Bloom filter tBF, the array number n and the bit width m are interchanged, so the array of Bloom filters bf ((p-1)-#) to be updated in the (p-1) stage. Instead of the number #, the bit position to be updated at the (p−1) -th stage is divided by the division number d, and the fraction is rounded up.

第2段の場合、第1段での更新対象ビットは、先頭から4ビット目のビットであり、転置ブルームフィルタtbf(1−2),tbf(1−5),tbf(1−7)の4ビット目がONにされた。したがって、第2段の更新対象ビットは、d=2であるため、先頭から4/d=2ビット目のビットを更新対象ビットとする。本例では、転置ブルームフィルタtbf(2−8),tbf(2−11),tbf(2−13)の先頭から2ビット目のビットをONにすることになる。これにより、第2段の転置ブルームフィルタ列tBF(2)の学習処理を終了する。   In the case of the second stage, the update target bit in the first stage is the fourth bit from the head, and the transposed Bloom filters tbf (1-2), tbf (1-5), tbf (1-7) The 4th bit was turned ON. Therefore, since the update target bit in the second stage is d = 2, the bit of 4 / d = 2 bit from the head is set as the update target bit. In this example, the second bit from the beginning of the transposed Bloom filters tbf (2-8), tbf (2-11), and tbf (2-13) is turned ON. Thereby, the learning process of the second-stage transposed Bloom filter row tBF (2) is completed.

つぎに、第3段の学習処理に移る。登録処理部201は、更新対象となる転置ブルームフィルタtbf(3)を、第3段の転置ブルームフィルタ列tBF(3)の中から特定する。具体的には、登録処理部201は、各ハッシュ値x1〜x3を、第3段の転置ブルームフィルタ列tBF(3)の配列個数である32で割り算し、余り値を算出する。ハッシュ値x1の余り値は「2」、ハッシュ値x2の余り値は「19」、ハッシュ値x3の余り値は「27」になったものとする。したがって、第3段での更新対象となる転置ブルームフィルタtbf(3)は、転置ブルームフィルタtbf(3−2),tbf(3−19),tbf(3−27)となる。   Next, the process moves to the third stage learning process. The registration processing unit 201 identifies the transposed Bloom filter tbf (3) to be updated from the third-stage transposed Bloom filter row tBF (3). Specifically, the registration processing unit 201 divides each hash value x1 to x3 by 32, which is the number of arrays of the third-stage transposed Bloom filter string tBF (3), and calculates a remainder value. It is assumed that the remainder value of the hash value x1 is “2”, the remainder value of the hash value x2 is “19”, and the remainder value of the hash value x3 is “27”. Therefore, the transposed Bloom filter tbf (3) to be updated in the third stage is the transposed Bloom filter tbf (3-2), tbf (3-19), tbf (3-27).

つぎに、転置ブルームフィルタtbf(3−2),tbf(3−19),tbf(3−27)内の更新対象ビットを決める。第2段と同様、第(p−1)段の更新対象のブルームフィルタbf((p−1)−#)の配列番号#ではなく、第(p−1)段での更新対象ビット位置を分割数dで割り算し、端数を切り上げる。   Next, the update target bits in the transposed Bloom filters tbf (3-2), tbf (3-19), and tbf (3-27) are determined. Similar to the second stage, not the array number # of the Bloom filter bf ((p-1)-#) to be updated in the (p-1) stage, but the bit position to be updated in the (p-1) stage. Divide by the division number d and round up the fraction.

第3段の場合、前段である第2段での更新対象ビットは、先頭から2ビット目のビットであり、転置ブルームフィルタtbf(2−8),tbf(2−11),tbf(2−13)の2ビット目がONにされた。したがって、第3段の更新対象ビットは、d=2であるため、先頭から2/d=1ビット目のビットを更新対象ビットとする。本例では、転置ブルームフィルタtbf(3−2),tbf(3−19),tbf(3−27)の先頭ビットをONにすることになる。これにより、第3段の転置ブルームフィルタ列tBF(3)の学習処理を終了する。   In the case of the third stage, the update target bit in the second stage, which is the previous stage, is the second bit from the beginning, and is a transposed Bloom filter tbf (2-8), tbf (2-11), tbf (2- The second bit of 13) was turned ON. Accordingly, since the update target bit in the third stage is d = 2, the bit of 2 / d = 1 bit from the head is set as the update target bit. In this example, the first bit of the transposed Bloom filter tbf (3-2), tbf (3-19), tbf (3-27) is turned ON. Thereby, the learning process of the third-stage transposed Bloom filter row tBF (3) is completed.

<登録処理部201による階層型転置ブルームフィルタtBFの学習処理手順>
図14は、登録処理部201による階層型ブルームフィルタBFの学習処理手順を示すフローチャートである。まず、登録処理部201は、登録したいデータ(対象データDx)があるか否かを判断する(ステップS1401)。対象データDxがある場合(ステップS1401:Yes)、登録処理部201は、段数pをp=1に設定し(ステップS1402)、p>h(hは階層型転置ブルームフィルタtBFの最上段)であるか否かを判断する(ステップS1403)。p>hでない場合(ステップS1403:No)、登録処理部201は、k種類のハッシュ関数を用いて、対象データDxのk個のハッシュ値を算出する(ステップS1404)。
<Learning Processing Procedure of Hierarchical Transposed Bloom Filter tBF by Registration Processing Unit 201>
FIG. 14 is a flowchart showing the learning processing procedure of the hierarchical Bloom filter BF by the registration processing unit 201. First, the registration processing unit 201 determines whether there is data to be registered (target data Dx) (step S1401). When there is target data Dx (step S1401: Yes), the registration processing unit 201 sets the number of stages p to p = 1 (step S1402), and p> h (h is the uppermost stage of the hierarchical transposed Bloom filter tBF). It is determined whether or not there is (step S1403). If p> h is not satisfied (step S1403: NO), the registration processing unit 201 calculates k hash values of the target data Dx using k types of hash functions (step S1404).

つぎに、登録処理部201は、k個のハッシュ値を第p段の転置ブルームフィルタtBF(p)の配列個数で除算して、k個の余り値を算出する(ステップS1405)。そして、登録処理部201は、k個の余り値と同一配列番号のk個の転置ブルームフィルタtbf(p)rを特定する(ステップS1406)。   Next, the registration processing unit 201 divides the k hash values by the number of arrays of the p-th transposed Bloom filter tBF (p) to calculate k remainder values (step S1405). Then, the registration processing unit 201 identifies k transposed Bloom filters tbf (p) r having the same array number as the k remainder values (step S1406).

このあと、p=1であるか否かを判断し(ステップS1407)、p=1である場合(ステップS1407:Yes)、登録処理部201は、特定されたk個の転置ブルームフィルタtbf(p)rに、対象データDxの所属データブロックdb#のブロック番号#をエントリする(ステップS1408)。すなわち、対象データDxの所属データブロックdb#のブロック番号#を更新対象ビット位置#に設定し、特定されたk個の転置ブルームフィルタtbf(p)rの更新対象ビット位置#のビットをONにする。そして、ステップS1410に移行する。   Thereafter, it is determined whether or not p = 1 (step S1407). If p = 1 (step S1407: Yes), the registration processing unit 201 determines k transposed Bloom filters tbf (p ) In r, the block number # of the data block db # to which the target data Dx belongs is entered (step S1408). That is, the block number # of the data block db # to which the target data Dx belongs is set as the update target bit position #, and the bit at the update target bit position # of the identified k transposed Bloom filters tbf (p) r is turned ON. To do. Then, control goes to a step S1410.

一方、ステップS1407において、p≠1である場合(ステップS1407:No)、特定されたk個の転置ブルームフィルタtbf(p)rに、対象データDxの第(p−1)段での更新対象ビット位置を分割数dで除算した商(端数切り上げ)をエントリする(ステップS1409)。すなわち、対象データDxの第(p−1)段での更新対象ビット位置を分割数dで除算した商(端数切り上げ)を更新対象ビット位置に設定し、特定されたk個の転置ブルームフィルタtbf(p)rの更新対象ビット位置のビットをONにする。そして、ステップS1410に移行する。   On the other hand, if p ≠ 1 in step S1407 (step S1407: No), the k-th transposed Bloom filter tbf (p) r is updated in the (p−1) th stage of the target data Dx. A quotient (rounded up) obtained by dividing the bit position by the division number d is entered (step S1409). That is, the quotient (rounded up) obtained by dividing the update target bit position in the (p−1) -th stage of the target data Dx by the division number d is set as the update target bit position, and the identified k transposed Bloom filters tbf (P) The bit at the update target bit position of r is turned ON. Then, control goes to a step S1410.

ステップS1410において、登録処理部201は、段数pをインクリメントし(ステップS1410)、ステップS1403に戻る。これにより、最下段から最上段まで更新対象ビットをONにすることができる。   In step S1410, the registration processing unit 201 increments the number of stages p (step S1410) and returns to step S1403. Thereby, the update target bit can be turned ON from the lowest level to the highest level.

一方、ステップS1403において、p>hである場合(ステップS1403:Yes)、登録処理部201は、対象データのハッシュテーブルエントリを追加して(ステップS1411)、ステップS1401に戻る。対象データDxがない場合(ステップS1401:No)、登録処理部201による階層型転置ブルームフィルタtBFの学習処理を終了する。   On the other hand, in step S1403, when p> h (step S1403: Yes), the registration processing unit 201 adds a hash table entry of the target data (step S1411), and returns to step S1401. If there is no target data Dx (step S1401: No), the learning process of the hierarchical transposed Bloom filter tBF by the registration processing unit 201 is terminated.

このような手順により、登録処理部201は、階層型転置ブルームフィルタtBFにデータエントリを学習させることとなる。すなわち、転置後にデータが登録される場合も、階層型転置ブルームフィルタtBFから階層型ブルームフィルタBFに戻す必要がなく、転置後の階層型転置ブルームフィルタtBFのまま学習させることができる。したがって、転置前に戻すといった無駄な処理がなくなり、検索効率の向上も図ることができる。   By such a procedure, the registration processing unit 201 causes the hierarchical transposed Bloom filter tBF to learn the data entry. That is, even when data is registered after transposition, it is not necessary to return from the hierarchical transposed Bloom filter tBF to the hierarchical Bloom filter BF, and learning can be performed with the transposed hierarchical transposed Bloom filter tBF. Therefore, useless processing such as returning before transposition is eliminated, and search efficiency can be improved.

<転置ブルームフィルタ列tBF(p)の再転置および保存>
つぎに、転置ブルームフィルタ列tBF(p)の再転置および保存について説明する。転置ブルームフィルタ列tBF(p)の再転置および保存は、図2に示した保存/復元処理部203がおこなう。転置ブルームフィルタ列tBF(p)をそのまま保存することも可能であるが、管理装置200の再起動後、サービス開始までの時間を考えると、インデックス情報はストレージデバイスに保存できることが望ましい。転置ブルームフィルタ列tBF(p)をメモリ配置のまま保存する場合は、更新におけるローカリティがなくなり、部分的な更新がおこなえなくなる。
<Retransposition and storage of transposed Bloom filter row tBF (p)>
Next, re-transposition and storage of the transposed Bloom filter row tBF (p) will be described. The transposition and storage of the transposed Bloom filter row tBF (p) is performed by the storage / restoration processing unit 203 shown in FIG. Although the transposed Bloom filter string tBF (p) can be stored as it is, it is desirable that the index information can be stored in the storage device in consideration of the time from the restart of the management apparatus 200 to the start of the service. When the transposed Bloom filter row tBF (p) is stored in the memory arrangement, there is no locality in updating, and partial updating cannot be performed.

ここで、ローカリティとは、対象となるビット群が1つのフィルタ内に集まっていることをいう。対象となるビット群が複数のフィルタにまたがってしまう場合は、ローカリティがないこととなる。   Here, locality means that the target bit group is gathered in one filter. If the target bit group spans multiple filters, there is no locality.

すなわち、転置ブルームフィルタ列tBF(p)内の各転置ブルームフィルタtbf(p)では、配列個数nとビット幅mが入れ替わっている。したがって、転置ブルームフィルタtbf(p)内のビット配列が、転置前のブルームフィルタbf(p)の配列となり、転置ブルームフィルタtbf(p)の配列が、転置前のブルームフィルタbf(p)内のビット配列となる。このため、転置ブルームフィルタtbf(p)内の各ビットは、転置前の全ブルームフィルタbf(p)にまたがってしまい、部分的な更新を妨げてしまう。   That is, in each transposed Bloom filter tbf (p) in the transposed Bloom filter row tBF (p), the arrangement number n and the bit width m are interchanged. Therefore, the bit arrangement in the transposed Bloom filter tbf (p) becomes the arrangement of the Bloom filter bf (p) before transposition, and the arrangement of the transposed Bloom filter tbf (p) becomes in the Bloom filter bf (p) before transposition. It becomes a bit array. For this reason, each bit in the transposed Bloom filter tbf (p) straddles all the Bloom filters bf (p) before transposition, thereby preventing a partial update.

そこで、転置ブルームフィルタ列tBF(p)による検索速度の向上を図りつつ、保存時のローカリティを担保するため、転置ブルームフィルタ列tBF(p)内の各転置ブルームフィルタtbf(p)を所定のワード(のビット幅)で分割し、同一ワード位置の分割ビット列をまとめる。ワードのビット幅wは、分割数cにより決定される。たとえば、転置ブルームフィルタtbf(p)のビット幅n(n=d[h-(p-1)])を分割数cで割った値(w=n/c)となる。 Therefore, in order to improve the search speed by the transposed Bloom filter string tBF (p) and to ensure the locality at the time of storage, each transposed Bloom filter string tbf (p) in the transposed Bloom filter string tBF (p) is set to a predetermined word. (Bit width) to divide divided bit strings at the same word position. The bit width w of the word is determined by the division number c. For example, the bit width n (n = d [h− (p−1)] ) of the transposed Bloom filter tbf (p) is divided by the division number c (w = n / c).

これにより、ワード位置ごとに、転置前の複数のブルームフィルタbf(p)が分割数c分まとめられたブルームフィルタに再転置される。たとえば、n=15ビットの場合、c=3またはc=5とする。c=3の場合、転置ブルームフィルタtbf(p)はそれぞれ3等分される。c=5の場合、転置ブルームフィルタtbf(p)はそれぞれ5等分される。分割数cはあらかじめ設定しておく。   As a result, for each word position, a plurality of Bloom filters bf (p) before transposition are re-transposed into Bloom filters in which the number of divisions c is collected. For example, when n = 15 bits, c = 3 or c = 5. When c = 3, each transposed Bloom filter tbf (p) is divided into three equal parts. When c = 5, the transposed Bloom filter tbf (p) is divided into five equal parts. The division number c is set in advance.

なお、分割数cはnの約数(ただし、c=1,nを除く)とする。c=1の場合、分割していないこととなるため除外する。c=nの場合、転置前のブルームフィルタ列BF(p)に戻される。この場合、全ビット数分アクセスが必要となり、再転置および保存処理に時間がかかるため、除外する。以下、図を用いて説明する。   The division number c is a divisor of n (except c = 1 and n). In the case of c = 1, it is excluded because it is not divided. In the case of c = n, it is returned to the Bloom filter row BF (p) before transposition. In this case, access is required for the total number of bits, and it is excluded because re-transposition and storage processing take time. This will be described below with reference to the drawings.

<転置ブルームフィルタ列tBF(p)の再転置および保存例>
図15は、転置ブルームフィルタ列tBF(p)の再転置および保存例を示す説明図である。図15では、図7に示したブルームフィルタ列BF(p)および転置ブルームフィルタ列tBF(p)を例に挙げて説明する。図15では、転置ブルームフィルタtbf(p)のビット幅nをn=4、分割数cをc=2、ワードのビット幅w=4/2=2とする。
<Re-transposition and storage example of transposed Bloom filter row tBF (p)>
FIG. 15 is an explanatory diagram illustrating an example of re-transposition and storage of the transposed Bloom filter row tBF (p). In FIG. 15, the Bloom filter row BF (p) and the transposed Bloom filter row tBF (p) shown in FIG. 7 will be described as an example. In FIG. 15, it is assumed that the bit width n of the transposed Bloom filter tbf (p) is n = 4, the division number c is c = 2, and the word bit width w = 4/2 = 2.

(A)は、図7に示した転置例(1回目の転置)である。(A)の説明は図7と同じであるため省略する。(B)は、再転置(2回目の転置)を示している。以降、1回目の転置による転置ブルームフィルタ列tBF(p)を「第1の転置ブルームフィルタ列tBF(p)」、転置ブルームフィルタtbf(p)を「第1の転置ブルームフィルタtbf(p)」と表記する。また、第1段〜第h段の第1の転置ブルームフィルタ列tBF(1)〜tBF(h)で構成される階層型転置ブルームフィルタtBFを「第1の階層型転置ブルームフィルタtBF」と表記する。   (A) is the transposition example (1st transposition) shown in FIG. Description of (A) is the same as FIG. (B) shows re-transposition (second transposition). Thereafter, the transposed Bloom filter row tBF (p) by the first transposition is “first transposed Bloom filter row tBF (p)”, and the transposed Bloom filter tbf (p) is “first transposed Bloom filter tbf (p)”. Is written. Further, the hierarchical transposed Bloom filter tBF composed of the first transposed Bloom filter rows tBF (1) to tBF (h) from the first stage to the hth stage is expressed as “first hierarchical transposed Bloom filter tBF”. To do.

また、第1の転置ブルームフィルタ列tBF(p)から2回目の転置によって転置されたブルームフィルタ列を「第2の転置ブルームフィルタ列tBF(p)s」、第2の転置ブルームフィルタ列tBF(p)sを構成する分割数cのブルームフィルタを「第2の転置ブルームフィルタtbf(p−1)s〜tbf(p−c)s」と表記する。   In addition, the Bloom filter row transposed by the second transposition from the first transposed Bloom filter row tBF (p) is referred to as “second transposed Bloom filter row tBF (p) s”, and the second transposed Bloom filter row tBF ( p) The Bloom filter of the division number c constituting s is expressed as “second transposed Bloom filter tbf (p−1) s to tbf (p−c) s”.

また、任意の第2の転置ブルームフィルタを「tbf(p)s」と表記する。また、第1段〜第h段の第2の転置ブルームフィルタ列tBF(1)s〜tBF(h)sで構成される階層型転置ブルームフィルタを「第2の階層型転置ブルームフィルタtBFs」と表記する。   An arbitrary second transposed Bloom filter is denoted as “tbf (p) s”. Further, the hierarchical transposed Bloom filter composed of the first to h-th second transposed Bloom filter rows tBF (1) s to tBF (h) s is referred to as “second hierarchical transposed Bloom filter tBFs”. write.

(B)の場合、分割数c=2であるため、第2の転置ブルームフィルタ列tBF(p)sは、c=2個の転置ブルームフィルタtbf(p−1)s,tbf(p−2)sにより構成される。   In the case of (B), since the division number c = 2, the second transposed Bloom filter row tBF (p) s has c = 2 transposed Bloom filters tbf (p−1) s, tbf (p−2). ) S.

2回目の転置では、第1の転置ブルームフィルタtbf(p)をワードのビット幅wでc個に分割する。(B)の例では、第1の転置ブルームフィルタtbf(p)は4ビットのビット幅を有するため、2ビットのワードを2個に分割する。本例では、第1の転置ブルームフィルタtbf(p)の先頭ワードを第1ワードとし、次のワードを第2ワードとする。第1ワードは、ビット番号1,2のビット列であり、第2ワードは、ビット番号3,4のビット列である。   In the second transposition, the first transposed Bloom filter tbf (p) is divided into c pieces with the word bit width w. In the example of (B), since the first transposed Bloom filter tbf (p) has a bit width of 4 bits, a 2-bit word is divided into two. In this example, the first word of the first transposed Bloom filter tbf (p) is the first word, and the next word is the second word. The first word is a bit string of bit numbers 1 and 2, and the second word is a bit string of bit numbers 3 and 4.

そして、第1の転置ブルームフィルタtbf(p)の第1ワードどうしを第1の転置ブルームフィルタtbf(p)の配列順にまとめて、第2の転置ブルームフィルタtbf(p−1)sとする。   Then, the first words of the first transposed Bloom filter tbf (p) are grouped in the order of arrangement of the first transposed Bloom filter tbf (p) to be a second transposed Bloom filter tbf (p−1) s.

同様に、第1の転置ブルームフィルタtbf(p)の第2ワードどうしを第1の転置ブルームフィルタtbf(p)の配列順にまとめて、第2の転置ブルームフィルタtbf(p−2)sとする。そして、第2の転置ブルームフィルタtbf(p−1)s,tbf(p−2)sをワードの配列順に並べることで、第2の転置ブルームフィルタ列tBF(p)sに変換される。   Similarly, the second words of the first transposed Bloom filter tbf (p) are grouped in the order of arrangement of the first transposed Bloom filter tbf (p) to be the second transposed Bloom filter tbf (p−2) s. . Then, the second transposed Bloom filter string tbf (p−1) s and tbf (p−2) s are arranged in the order of word arrangement to be converted into the second transposed Bloom filter string tBF (p) s.

このように転置することで、第2の転置ブルームフィルタtbf(p)sでは、同一ワードが集められるため、ビット位置を示すビット番号が連続することとなる。ビット位置が近いとデータブロックbd#も近接することになる。   By transposing in this way, the second transposed Bloom filter tbf (p) s collects the same word, so that bit numbers indicating bit positions are consecutive. When the bit positions are close, the data block bd # is also close.

このように、第2の転置ブルームフィルタtbf(p)sは、隣接するブルームフィルタbf(p)を複数(分割数c分)まとめたビット配列となるため、ローカリティを維持することができる。   As described above, the second transposed Bloom filter tbf (p) s has a bit arrangement in which a plurality of adjacent Bloom filters bf (p) (for the number of divisions c) are collected, and thus locality can be maintained.

つぎに、第2の転置ブルームフィルタ列tBF(p)sから第1の転置ブルームフィルタ列tBF(p)への復元について説明する。第2の転置ブルームフィルタ列tBF(p)sは、分割数c分の第2の転置ブルームフィルタtbf(p)sが、第1の転置ブルームフィルタtbf(p)に配列順に配列されている。   Next, the restoration from the second transposed Bloom filter row tBF (p) s to the first transposed Bloom filter row tBF (p) will be described. In the second transposed Bloom filter row tBF (p) s, the second transposed Bloom filter tbf (p) s corresponding to the division number c is arranged in the order of arrangement in the first transposed Bloom filter tbf (p).

第2の転置ブルームフィルタtbf(p−1)sは、1回目の転置前のブルームフィルタbf(p−1),bf(p−2)の同一ビット位置のビットを、ブルームフィルタbf(p−1),bf(p−2)の配列順に並べたインデックス情報となる。同様に、第2の転置ブルームフィルタtbf(p−2)sは、1回目の転置前のブルームフィルタbf(p−3),bf(p−4)の同一ビット位置のビットを、ブルームフィルタbf(p−3),bf(p−4)の配列順に並べたインデックス情報となる。   The second transposed Bloom filter tbf (p−1) s is the bit at the same bit position of the Bloom filters bf (p−1) and bf (p−2) before the first transposition, and the Bloom filter bf (p− The index information is arranged in the order of 1) and bf (p-2). Similarly, the second transposed Bloom filter tbf (p-2) s is a bit at the same bit position of the Bloom filters bf (p-3) and bf (p-4) before the first transposition. The index information is arranged in the order of (p-3) and bf (p-4).

図15の場合、第2の転置ブルームフィルタtbf(p−1)sは、先頭フィルタであるため、第1の転置ブルームフィルタtbf(p−1)〜tbf(p−10)の先頭の分割位置のビット列を、第1の転置ブルームフィルタtbf(p−1)〜tbf(p−10)の配列順に配列させたフィルタである。   In the case of FIG. 15, since the second transposed Bloom filter tbf (p-1) s is a head filter, the first division position of the first transposed Bloom filters tbf (p-1) to tbf (p-10). Are arranged in the order of arrangement of the first transposed Bloom filters tbf (p-1) to tbf (p-10).

したがって、復元する場合は、第2の転置ブルームフィルタ列tBF(p)sのビット幅分のメモリ領域を確保しておく。また、このメモリ領域では、第1の転置ブルームフィルタtbf(p−1)〜tbf(p−10)を復元させるため、第1の転置ブルームフィルタtbf(p−1)〜tbf(p−10)ごとに領域を設定しておく。そして、第2の転置ブルームフィルタtbf(p)sを、分割数c分のビット幅ごとに、第1の転置ブルームフィルタtbf(p)の配列個数で分割する。   Therefore, when restoring, a memory area corresponding to the bit width of the second transposed Bloom filter row tBF (p) s is secured. In this memory area, the first transposed Bloom filters tbf (p-1) to tbf (p-10) are restored in order to restore the first transposed Bloom filters tbf (p-1) to tbf (p-10). An area is set for each. Then, the second transposed Bloom filter tbf (p) s is divided by the number of arrangement of the first transposed Bloom filter tbf (p) for each bit width corresponding to the division number c.

図16では、たとえば、第2の転置ブルームフィルタ列tBF(p−1)sの場合、ワードのビット幅w(=2)で分割していくと、10分割される。そして、各ワードのビット幅のビット列を、第1の転置ブルームフィルタtbf(p−1)〜tbf(p−10)ごとに用意された領域に書き込む。具体的には、第2の転置ブルームフィルタtbf(p−1)sの先頭ワード{01}は、第1の転置ブルームフィルタtbf(p−1)の復元領域に書き込まれる。   In FIG. 16, for example, in the case of the second transposed Bloom filter row tBF (p−1) s, dividing by the bit width w (= 2) of the word results in 10 divisions. Then, the bit string having the bit width of each word is written in an area prepared for each of the first transposed Bloom filters tbf (p−1) to tbf (p−10). Specifically, the first word {01} of the second transposed Bloom filter tbf (p−1) s is written in the restoration area of the first transposed Bloom filter tbf (p−1).

第2の転置ブルームフィルタtbf(p−1)sの2番目のワード{00}は、第1の転置ブルームフィルタtbf(p−2)の復元領域に書き込まれる。このように順次書込をおこない、第2の転置ブルームフィルタtbf(p−1)sの10番目のワード{10}は、第1の転置ブルームフィルタtbf(p−10)の復元領域に書き込まれる。第2の転置ブルームフィルタtbf(p−2)sについても同様に書込をおこなう。この場合、すでに書込のあるビット列に続けて書き込むことで、配列順序が保たれる。   The second word {00} of the second transposed Bloom filter tbf (p-1) s is written into the restoration area of the first transposed Bloom filter tbf (p-2). Thus, the sequential writing is performed, and the tenth word {10} of the second transposed Bloom filter tbf (p-1) s is written in the restoration area of the first transposed Bloom filter tbf (p-10). . The second transposed Bloom filter tbf (p-2) s is similarly written. In this case, the arrangement order is maintained by writing to a bit string that has already been written.

このように転置することで、第2の転置ブルームフィルタ列tBF(p)sが第1の転置ブルームフィルタ列tBF(p)に復元される。   By transposing in this way, the second transposed Bloom filter row tBF (p) s is restored to the first transposed Bloom filter row tBF (p).

復元すると、第1の転置ブルームフィルタ列tBF(p)に戻るため、検索速度の高速化も維持することができる。なお、図15に示した2回目の転置を、第1段〜第h段の転置ブルームフィルタ列tBF(1)〜tBF(h)で実行することで、第1の階層型転置ブルームフィルタtBFが第2の階層型転置ブルームフィルタtBFsに転置される。   Since restoration returns to the first transposed Bloom filter row tBF (p), it is possible to maintain an increase in search speed. The second transposition shown in FIG. 15 is executed by the first to h-th transposed Bloom filter rows tBF (1) to tBF (h), so that the first hierarchical transposed Bloom filter tBF is obtained. Transposed to the second hierarchical transposed Bloom filter tBFs.

<第2の転置ブルームフィルタ列tBF(p)sの更新例>
つぎに、データブロック集合dbにデータが新規に登録されたり、登録済のデータが更新された場合(以下、まとめて「更新」とする)について説明する。データが更新された場合、図13および図14に示したように、第1の階層型転置ブルームフィルタtBFの一部が更新される。
<Update example of second transposed Bloom filter row tBF (p) s>
Next, a case where data is newly registered in the data block set db or registered data is updated (hereinafter collectively referred to as “update”) will be described. When the data is updated, as shown in FIGS. 13 and 14, a part of the first hierarchical transposed Bloom filter tBF is updated.

図13の例では、第1段では、第1の転置ブルームフィルタtbf(1−2),tbf(1−5),tbf(1−7)の4ビット目のビットが更新された。第2段では、第1の転置ブルームフィルタtbf(2−8),tbf(2−11),tbf(2−13)の2ビット目のビットが更新された。第3段では、第1の転置ブルームフィルタtbf(3−2),tbf(3−19),tbf(3−27)の先頭ビットが更新された。   In the example of FIG. 13, in the first stage, the fourth bit of the first transposed Bloom filter tbf (1-2), tbf (1-5), tbf (1-7) is updated. In the second stage, the second bit of the first transposed Bloom filter tbf (2-8), tbf (2-11), tbf (2-13) is updated. In the third stage, the first bit of the first transposed Bloom filter tbf (3-2), tbf (3-19), tbf (3-27) is updated.

このように、第1の転置ブルームフィルタtbf(p)が更新された場合、その段pにおいては、同一ビット位置のビット(第1段は4ビット目、第2段は2ビット目、第3段は先頭ビット)が更新される。この場合、第1の転置ブルームフィルタ列tBF(p)を転置して、更新後における、第2の転置ブルームフィルタtBF(p)sを生成するのではなく、第1の転置ブルームフィルタtbf(p)の更新にかかわっているビットを含む第2の転置ブルームフィルタtbf(p)sを更新する。   Thus, when the first transposed Bloom filter tbf (p) is updated, the bit at the same bit position in the stage p (the first stage is the fourth bit, the second stage is the second bit, the third bit The first bit in the stage is updated. In this case, instead of transposing the first transposed Bloom filter row tBF (p) and generating the updated second transposed Bloom filter tBF (p) s, the first transposed Bloom filter tbf (p ) To update the second transposed Bloom filter tbf (p) s including the bits involved in the update.

したがって、第2の階層型転置ブルームフィルタtBFsへの転置は、最初の1回だけでよく、それ以降は、更新に該当する第2の転置ブルームフィルタtbf(p)sを部分的に更新すればよい。このように、部分的に更新することで、管理装置200の性能劣化を抑制することができる。   Therefore, the transposition to the second hierarchical transposed Bloom filter tBFs may be performed only once, and thereafter, if the second transposed Bloom filter tbf (p) s corresponding to the update is partially updated. Good. In this way, by partially updating, the performance degradation of the management device 200 can be suppressed.

図16は、第2の転置ブルームフィルタ列tBF(p)sの更新例を示す説明図である。図16では、図15に示した第1の転置ブルームフィルタ列tBF(p)および第2の転置ブルームフィルタ列tBF(p)sを用いて説明する。   FIG. 16 is an explanatory diagram illustrating an update example of the second transposed Bloom filter row tBF (p) s. FIG. 16 will be described using the first transposed Bloom filter row tBF (p) and the second transposed Bloom filter row tBF (p) s shown in FIG.

図13および図14による学習処理時にハッシュ関数をk種類(ここでは、k=3とする)使用した場合、第1の転置ブルームフィルタ列tBF(p)では、k個の第1の転置ブルームフィルタtBf(p)が特定される。図16では、第1の転置ブルームフィルタtbf(p−1),tbf(p−4),tbf(p−9)が特定されたものとする。   When k types of hash functions (here, k = 3) are used in the learning process according to FIGS. 13 and 14, k first transposed Bloom filters are used in the first transposed Bloom filter string tBF (p). tBf (p) is specified. In FIG. 16, it is assumed that the first transposed Bloom filters tbf (p-1), tbf (p-4), and tbf (p-9) are specified.

そして、特定された第1の転置ブルームフィルタtbf(p−1),tbf(p−4),tbf(p−9)では、同一ビット位置のビットが更新されてONになる。図16では、特定された第1の転置ブルームフィルタtbf(p−1),tbf(p−4),tbf(p−9)の各々において、先頭から3番目のビットがONにされたものとする。   Then, in the identified first transposed Bloom filters tbf (p−1), tbf (p−4), and tbf (p−9), the bit at the same bit position is updated and turned ON. In FIG. 16, in each of the identified first transposed Bloom filters tbf (p-1), tbf (p-4), and tbf (p-9), the third bit from the beginning is turned ON. To do.

なお、上記更新をブルームフィルタ列BF(p)でみると、3番目の配列位置のブルームフィルタbf(p−3)の先頭から1番目、4番目、9番目のビットが更新されたことと同じである。   When the above update is seen in the Bloom filter row BF (p), it is the same as that the first, fourth, and ninth bits from the top of the Bloom filter bf (p-3) at the third array position are updated. It is.

第1の転置ブルームフィルタ列tBF(p)が更新された場合、更新ビット位置から第2の転置ブルームフィルタtbf(p)sを特定する。具体的には、ビット位置テーブルBTを参照して、更新ビット位置を含む第2の転置ブルームフィルタtbf(p)sを特定する。   When the first transposed Bloom filter row tBF (p) is updated, the second transposed Bloom filter tbf (p) s is specified from the updated bit position. Specifically, the second transposed Bloom filter tbf (p) s including the updated bit position is specified with reference to the bit position table BT.

図16の例では、特定された第1の転置ブルームフィルタtbf(p−1),tbf(p−4),tbf(p−9)の各々において、先頭から3番目のビットがONにされている。したがって、ビット位置「3」を含む第2の転置ブルームフィルタtbf(p−2)sを特定することになる。   In the example of FIG. 16, the third bit from the beginning is turned ON in each of the identified first transposed Bloom filters tbf (p-1), tbf (p-4), and tbf (p-9). Yes. Therefore, the second transposed Bloom filter tbf (p−2) s including the bit position “3” is specified.

さらにこのあと、別のデータが更新されて、第1の転置ブルームフィルタtbf(p−3),tbf(p−8),tbf(p−10)の4番目のビットが特定されたものとする。この場合も同様に、特定された第1の転置ブルームフィルタtbf(p−3),tbf(p−8),tbf(p−10)の各々において、先頭から4番目のビットがONに更新される。したがって、ビット位置「4」を含む第2の転置ブルームフィルタtbf(p−2)sを特定することになる。   Thereafter, another data is updated, and the fourth bit of the first transposed Bloom filter tbf (p-3), tbf (p-8), tbf (p-10) is specified. . Similarly, in this case, the fourth bit from the head is updated to ON in each of the specified first transposed Bloom filters tbf (p-3), tbf (p-8), and tbf (p-10). The Therefore, the second transposed Bloom filter tbf (p−2) s including the bit position “4” is specified.

このように、上述した2回のデータ更新では、第1の転置ブルームフィルタ列tBF(p)を構成する第1の転置ブルームフィルタtbf(p−1)〜tbf(p−10)の一部において、3ビット目と4ビット目のビットが更新されている。したがって、更新対象となる第2の転置ブルームフィルタtbf(p)sは、第2の転置ブルームフィルタtbf(p−2)sとなる。   As described above, in the two data updates described above, a part of the first transposed Bloom filters tbf (p−1) to tbf (p−10) constituting the first transposed Bloom filter row tBF (p). The third and fourth bits are updated. Therefore, the second transposed Bloom filter tbf (p) s to be updated is the second transposed Bloom filter tbf (p-2) s.

これにより、第2の転置ブルームフィルタtbf(p−2)sを更新する。一方、第2の転置ブルームフィルタtbf(p−1)sは今回、更新対象外であるため、更新する必要はない。このように、更新されたフィルタのみ部分的に更新をおこなうことにより、更新処理を短時間で完了することができる。   Thereby, the second transposed Bloom filter tbf (p-2) s is updated. On the other hand, the second transposed Bloom filter tbf (p−1) s is not updated at this time, and thus does not need to be updated. In this way, the update process can be completed in a short time by partially updating only the updated filter.

<保存/復元処理部203の詳細な機能的構成例>
つぎに、保存/復元処理部203の詳細な機能的構成例について説明する。
<Detailed Functional Configuration Example of Save / Restore Processing Unit 203>
Next, a detailed functional configuration example of the save / restore processing unit 203 will be described.

図17は、図2に示した保存/復元処理部203の詳細な機能的構成例を示すブロック図である。図17において、保存/復元処理部203は、受付部1701と、転置部1703と、保存部1704と、更新検出部1705と、特定部1706と、を備えている。   FIG. 17 is a block diagram illustrating a detailed functional configuration example of the save / restore processing unit 203 illustrated in FIG. In FIG. 17, the storage / restoration processing unit 203 includes a reception unit 1701, a transposition unit 1703, a storage unit 1704, an update detection unit 1705, and a specification unit 1706.

受付部1701は、第1の転置ブルームフィルタ列tBF(p)の保存要求や復元要求を受け付ける機能を有する。具体的には、たとえば、ユーザの操作入力によって保存要求や復元要求を受け付ける。また、管理装置200をシャットダウンするときに第1の転置ブルームフィルタ列の保存要求をすることとしてもよい。さらに、管理装置200の起動が完了したときに第1の転置ブルームフィルタ列tBF(p)の復元要求をすることとしてもよい。   The accepting unit 1701 has a function of accepting a storage request and a restoration request for the first transposed Bloom filter row tBF (p). Specifically, for example, a storage request or a restoration request is accepted by a user operation input. In addition, when the management apparatus 200 is shut down, the storage request for the first transposed Bloom filter row may be requested. Furthermore, a restoration request for the first transposed Bloom filter string tBF (p) may be made when the activation of the management apparatus 200 is completed.

分割部1702は、受付部1701によって保存要求が受け付けられた場合、各第1の転置ブルームフィルタtbf(p)のビット列をnの約数となる分割数cで分割することにより、n/cビットのc個のワードを生成する機能を有する。具体的には、たとえば、図15の例では、n=4、c=2であるため、ビット幅n=4の第1の転置ブルームフィルタtbf(p)を、ビット位置1および2のビット列からなる第1ワードと、ビット位置3および4のビット列からなる第2ワードとに分割する。   When the storage unit 1701 receives a storage request, the dividing unit 1702 divides the bit string of each first transposed Bloom filter tbf (p) by a division number c that is a divisor of n, thereby obtaining n / c bits. Has the function of generating c words. Specifically, for example, in the example of FIG. 15, since n = 4 and c = 2, the first transposed Bloom filter tbf (p) having the bit width n = 4 is extracted from the bit string at the bit positions 1 and 2. And a second word consisting of a bit string at bit positions 3 and 4.

分割部1702は、第1の転置ブルームフィルタtbf(p)ごとに分割をおこなうため、総ワード数は、c×m(mは第1の転置ブルームフィルタtbf(p)の配列個数)となる。図15の場合は、m=10であるため、第1の転置ブルームフィルタ列tBF(p)の総ワード数は、20個である。   Since the dividing unit 1702 performs division for each first transposed Bloom filter tbf (p), the total number of words is c × m (m is the number of arrays of the first transposed Bloom filter tbf (p)). In the case of FIG. 15, since m = 10, the total number of words in the first transposed Bloom filter row tBF (p) is 20.

また、分割部1702は、復元指示が受け付けられた場合、第2の転置ブルームフィルタ列tBF(p)sを、分割数cで分割することにより、第2の転置ブルームフィルタtbf(p)sごとに、n/cビットのワードをm個生成する。具体的には、たとえば、図15の例では、第2の転置ブルームフィルタtbf(p−1)sでは、n/c=4/2=2ビット単位で分割して、m=10個のワードを生成する。同様に、第2の転置ブルームフィルタtbf(p−2)sでも、n/c=4/2=2ビット単位で分割して、m=10個のワードを生成する。   In addition, when the restoration instruction is received, the dividing unit 1702 divides the second transposed Bloom filter string tBF (p) s by the division number c, thereby obtaining each second transposed Bloom filter tbf (p) s. Next, m words of n / c bits are generated. Specifically, for example, in the example of FIG. 15, in the second transposed Bloom filter tbf (p−1) s, n / c = 4/2 = 2 bits are divided and m = 10 words. Is generated. Similarly, the second transposed Bloom filter tbf (p−2) s also divides n / c = 4/2 = 2 bit units to generate m = 10 words.

転置部1703は、第1の階層型転置ブルームフィルタtBFを第2の階層型転置ブルームフィルタtBFsに転置する機能を有する。具体的には、たとえば、保存要求が受け付けられた場合、第1の階層型転置ブルームフィルタtBFを第2の階層型転置ブルームフィルタtBFsに転置する。この転置は、図15に示した1回目の転置に相当する。   The transposition unit 1703 has a function of transposing the first hierarchical transposed Bloom filter tBF to the second hierarchical transposed Bloom filter tBFs. Specifically, for example, when a storage request is accepted, the first hierarchical transposed Bloom filter tBF is transposed to the second hierarchical transposed Bloom filter tBFs. This transposition corresponds to the first transposition shown in FIG.

転置部1703は、図15に示した1回目の転置では、同一位置のワードを第1の転置ブルームフィルタtbf(p)の配列順に並べて、第2の転置ブルームフィルタtbf(p)sとする。転置の際には、ワードの転置先をビット位置テーブルに書き込む。たとえば、図15の例では、第1ワードについては、第2の転置ブルームフィルタtbf(p−1)sとし、第2ワードについては、第2の転置ブルームフィルタtbf(p−2)sとする。   In the first transposition shown in FIG. 15, the transposing unit 1703 arranges the words at the same position in the order of arrangement of the first transposed Bloom filter tbf (p) to obtain the second transposed Bloom filter tbf (p) s. At the time of transposition, the transposition destination of the word is written in the bit position table. For example, in the example of FIG. 15, the second transposed Bloom filter tbf (p-1) s is used for the first word, and the second transposed Bloom filter tbf (p-2) s is used for the second word. .

そして、各第1の転置ブルームフィルタtbf(p−1)〜tbf(p−10)の第1ワードを、第1の転置ブルームフィルタtbf(p−1)〜tbf(p−10)の順に並べて、第2の転置ブルームフィルタtbf(p−1)sとする。   Then, the first words of the first transposed Bloom filters tbf (p-1) to tbf (p-10) are arranged in the order of the first transposed Bloom filters tbf (p-1) to tbf (p-10). , A second transposed Bloom filter tbf (p−1) s.

同様に、各第1の転置ブルームフィルタtbf(p−1)〜tbf(p−10)の第2ワードを、第1の転置ブルームフィルタtbf(p−1)〜tbf(p−10)の順に並べて、第2の転置ブルームフィルタtbf(p−2)sとする。   Similarly, the second word of each first transposed Bloom filter tbf (p-1) to tbf (p-10) is replaced with the first transposed Bloom filter tbf (p-1) to tbf (p-10) in this order. These are arranged as a second transposed Bloom filter tbf (p-2) s.

また、転置部1703は、第2の階層型転置ブルームフィルタtBFsを第1の階層型転置ブルームフィルタtBFに転置する機能を有する。具体的には、たとえば、復元要求が受け付けられた場合、記憶装置に保存された第2の階層型ブルームフィルタtBFsを第1の階層型転置ブルームフィルタtBFに転置する。これにより、第1の階層型転置ブルームフィルタtBFが復元する。   The transposition unit 1703 has a function of transposing the second hierarchical transposed Bloom filter tBFs to the first hierarchical transposed Bloom filter tBF. Specifically, for example, when a restoration request is accepted, the second hierarchical Bloom filter tBFs stored in the storage device is transposed to the first hierarchical transposed Bloom filter tBF. Thereby, the first hierarchical transposed Bloom filter tBF is restored.

具体的には、たとえば、分割部1702によって第2の転置ブルームフィルタtbf(p)sごとに分割されたm個のワードを配列位置が共通するものどうしで第2の転置ブルームフィルタtbf(p)sの配列順にまとめる。図15の例では、分割部1702により、第2の転置ブルームフィルタtbf(p)sごとに10個のワードが生成される。この10個のワードの配列位置が共通するものどうし、すなわち、先頭ワードどうし、2番目の配列位置のワードどうし、…、末尾位置(右端)の配列位置のワードどうしをまとめる。まとめる際には、第2の転置ブルームフィルタtbf(p)sの配列順にしたがって配列させる。これにより、第1の転置ブルームフィルタtbf(p)が復元されることになる。   Specifically, for example, the second transposed Bloom filter tbf (p) between the m words divided by the dividing unit 1702 for each second transposed Bloom filter tbf (p) s and having the same arrangement position. These are arranged in the order of the arrangement of s. In the example of FIG. 15, the dividing unit 1702 generates 10 words for each second transposed Bloom filter tbf (p) s. The words having the same arrangement position of the ten words, that is, the first word, the words at the second arrangement position,..., The words at the arrangement position at the end position (right end) are collected. At the time of grouping, the second transposed Bloom filter tbf (p) s is arranged in the order of arrangement. As a result, the first transposed Bloom filter tbf (p) is restored.

保存部1704は、転置部1703によって転置された第2の階層型ブルームフィルタtBFsを、記憶装置に保存する機能を有する。具体的には、たとえば、図15に示したように、第2の階層型ブルームフィルタtBFsが階層構造となった第2の階層型転置ブルームフィルタtBFsを記憶装置に保存する。また、更新があった場合、更新された第2の転置ブルームフィルタtbf(p)sを上書き保存する。   The storage unit 1704 has a function of storing the second hierarchical Bloom filter tBFs transposed by the transposition unit 1703 in a storage device. Specifically, for example, as shown in FIG. 15, the second hierarchical transposed Bloom filter tBFs in which the second hierarchical Bloom filter tBFs has a hierarchical structure is stored in the storage device. If there is an update, the updated second transposed Bloom filter tbf (p) s is overwritten and saved.

更新検出部1705は、第1の転置ブルームフィルタ列tBF(p)の中から、更新された第1の転置ブルームフィルタtbf(p)の更新ビット位置を検出する機能を有する。具体的には、たとえば、図16に示したように、第1の転置ブルームフィルタtbf(p−1),tbf(p−4),tbf(p−9)の3ビット目のビットが更新された場合は、ビット位置「3」を検出する。   The update detection unit 1705 has a function of detecting an update bit position of the updated first transposed Bloom filter tbf (p) from the first transposed Bloom filter string tBF (p). Specifically, for example, as shown in FIG. 16, the third bit of the first transposed Bloom filter tbf (p-1), tbf (p-4), tbf (p-9) is updated. If it does, bit position “3” is detected.

特定部1706は、更新検出部1705によって検出された更新ビット位置を含むワードと同一配列位置のワード群を、第1の転置ブルームフィルタ列tBF(p)の中から特定する機能を有する。具体的には、たとえば、図16の例では、第1ワードに対応するビット番号は1,2であり、第2ワードに対応するビット番号は3,4である。したがって、更新ビット位置が「3」を含むワードは、第2ワードであると特定できる。   The specifying unit 1706 has a function of specifying, from the first transposed Bloom filter string tBF (p), a word group having the same arrangement position as the word including the update bit position detected by the update detection unit 1705. Specifically, for example, in the example of FIG. 16, the bit numbers corresponding to the first word are 1 and 2, and the bit numbers corresponding to the second word are 3 and 4. Therefore, a word whose update bit position includes “3” can be specified as the second word.

これにより、転置部1703は、第1の転置ブルームフィルタ列tBF(p)の中から第2ワードをすべて集め、第1の転置ブルームフィルタtbf(p)での配列順に並べることで、更新後の第2の転置ブルームフィルタtbf(p)sが生成される。このあと、更新後の第2の転置ブルームフィルタtbf(p)sは、保存部1704により保存される。   Thereby, the transposing unit 1703 collects all the second words from the first transposed Bloom filter row tBF (p) and arranges them in the order of arrangement in the first transposed Bloom filter tbf (p). A second transposed Bloom filter tbf (p) s is generated. Thereafter, the updated second transposed Bloom filter tbf (p) s is stored by the storage unit 1704.

<保存/復元処理部203による第1の階層型転置ブルームフィルタtBFの保存処理>
図18は、保存/復元処理部203による第1の階層型転置ブルームフィルタtBFの保存処理手順を示すフローチャートである。
<Saving Process of First Hierarchical Transposed Bloom Filter tBF by Saving / Restoring Processing Unit 203>
FIG. 18 is a flowchart showing a storage processing procedure of the first hierarchical transposed Bloom filter tBF by the storage / restoration processing unit 203.

まず、保存/復元処理部203は、受付部1701により、保存指示を待ち受け(ステップS1801:No)、保存指示が受け付けられた場合(ステップS1801:Yes)、保存/復元処理部203は、すでに保存済みであるか否かを判断する(ステップS1802)。保存済みでない場合(ステップS1802:No)、新規保存に該当するため、保存/復元処理部203は、第1の階層型転置ブルームフィルタtBFについて全保存処理を実行する(ステップS1803)。全保存処理は、第1の階層型転置ブルームフィルタtBFを構成するすべての第1の転置ブルームフィルタ列tBF(p)を一括保存する処理である。これにより、保存/復元処理部203による第1の階層型転置ブルームフィルタtBFの保存処理を終了する。   First, the save / restore processing unit 203 waits for a save instruction by the accepting unit 1701 (step S1801: No). When the save instruction is accepted (step S1801: Yes), the save / restore process unit 203 has already saved. It is determined whether it has been completed (step S1802). If it has not been saved (step S1802: No), since it corresponds to a new save, the save / restore processing unit 203 executes a full save process for the first hierarchical transposed Bloom filter tBF (step S1803). The all storage process is a process for collectively storing all the first transposed Bloom filter strings tBF (p) constituting the first hierarchical transposed Bloom filter tBF. Thereby, the storage process of the first hierarchical transposed Bloom filter tBF by the storage / restoration processing unit 203 ends.

一方、ステップS1802において、保存済みである場合(ステップS1802:Yes)、保存/復元処理部203は、部分保存処理を実行する(ステップS1804)。部分保存処理は、保存済みの第2の階層型転置ブルームフィルタtBFsのうち、更新対象となる第2の転置ブルームフィルタtbf(p)sを上書き保存する処理である。これにより、保存/復元処理部203による第1の階層型転置ブルームフィルタtBFの保存処理を終了する。   On the other hand, if the data has been saved in step S1802 (step S1802: Yes), the save / restore processing unit 203 executes a partial save process (step S1804). The partial saving process is a process of overwriting and saving the second transposed Bloom filter tbf (p) s to be updated among the saved second hierarchical transposed Bloom filter tBFs. Thereby, the storage process of the first hierarchical transposed Bloom filter tBF by the storage / restoration processing unit 203 ends.

<全保存処理手順>
図19は、図18の全保存処理(ステップS1803)の詳細な処理手順を示すフローチャートである。まず、保存/復元処理部203は、段数pをp=1に設定し(ステップS1901)、段数pがp>h(hは最上段)であるか否かを判断する(ステップS1902)。
<All save processing procedure>
FIG. 19 is a flowchart showing a detailed processing procedure of the entire storage process (step S1803) in FIG. First, the save / restore processing unit 203 sets the number of stages p to p = 1 (step S1901), and determines whether the number of stages p is p> h (h is the uppermost stage) (step S1902).

p>hでない場合(ステップS1902:No)、保存/復元処理部203は、p段目の第2の転置ブルームフィルタtbf(p)sのための保存領域を確保する(ステップS1903)。具体的には、p段目の第2の転置ブルームフィルタ列tBF(p)のビット幅s(=n×m)と分割数cがわかっているため、ビット幅s/cとなるc個の保存領域を確保する。   If p> h is not satisfied (step S1902: NO), the storage / restoration processing unit 203 secures a storage area for the p-th second transposed Bloom filter tbf (p) s (step S1903). Specifically, since the bit width s (= n × m) and the number of divisions c of the second transposed Bloom filter row tBF (p) at the p-th stage are known, c pieces having the bit width s / c are obtained. Reserve a storage area.

そして、保存/復元処理部203は、分割部1702により、p段目の各第1の転置ブルームフィルタtbf(p)をワード単位でc個に分割する(ステップS1904)。そして、保存/復元処理部203は、第1の転置ブルームフィルタtbf(p)の分割後における同一位置のワードごとに、第1の転置ブルームフィルタtbf(p)の配列順で、保存領域に同一位置のワード群を配列する(ステップS1905)。これにより、第2の転置ブルームフィルタ列tBF(p)sが生成される。   Then, the storage / restoration processing unit 203 uses the dividing unit 1702 to divide each first transposed Bloom filter tbf (p) at the p-th stage into c pieces in units of words (step S1904). Then, the storage / restoration processing unit 203 is identical to the storage area in the arrangement order of the first transposed Bloom filter tbf (p) for each word at the same position after the division of the first transposed Bloom filter tbf (p). The word group at the position is arranged (step S1905). As a result, the second transposed Bloom filter row tBF (p) s is generated.

このあと、段数pをインクリメントし(ステップS1906)、ステップS1902に戻る。これにより、第1段〜第h段まで第2の転置ブルームフィルタtBf(p)sを生成することができる。   Thereafter, the stage number p is incremented (step S1906), and the process returns to step S1902. Thereby, the second transposed Bloom filter tBf (p) s can be generated from the first stage to the h-th stage.

そして、ステップS1902において、p>hである場合(ステップS1902:Yes)、保存/復元処理部203は、保存領域内の第2の階層型転置ブルームフィルタtBFsを記憶装置に保存する(ステップS1907)。これにより、全保存処理(ステップS1803)を終了する。   In step S1902, if p> h (step S1902: Yes), the save / restore processing unit 203 saves the second hierarchical transposed Bloom filter tBFs in the save area in the storage device (step S1907). . As a result, the entire storage process (step S1803) is terminated.

<部分保存処理手順>
図20は、図18の部分保存処理(ステップS1804)の詳細な処理手順を示すフローチャートである。まず、保存/復元処理部203は、段数pをp=1に設定し(ステップS2001)、段数pがp>h(hは最上段)であるか否かを判断する(ステップS2002)。
<Partial storage processing procedure>
FIG. 20 is a flowchart showing a detailed processing procedure of the partial storage processing (step S1804) of FIG. First, the save / restore processing unit 203 sets the stage number p to p = 1 (step S2001), and determines whether the stage number p is p> h (h is the top stage) (step S2002).

p>hでない場合(ステップS2002:No)、保存/復元処理部203は、更新検出部1705により、更新された第1の転置ブルームフィルタtbf(p)の更新ビット位置を検出する(ステップS2003)。   When p> h is not satisfied (step S2002: No), the storage / restoration processing unit 203 uses the update detection unit 1705 to detect the updated bit position of the updated first transposed Bloom filter tbf (p) (step S2003). .

そして、特定部1706により、更新ビット位置を含むワードと同一配列位置のワードを、第1の転置ブルームフィルタtbf(p)の中から特定する(ステップS2004)。そして、保存領域を確保する(ステップS2005)。この場合は、更新ビット位置を含むワードが所属する第2の転置ブルームフィルタtbf(p)s分のビット幅を確保する。具体的には、ワードのビット幅wはw=n/cであり、第1の転置ブルームフィルタtbf(p)の配列個数はmであるため、(n/c)×m=s/cのビット幅を確保すればよい。   Then, the specifying unit 1706 specifies the word at the same arrangement position as the word including the update bit position from the first transposed Bloom filter tbf (p) (step S2004). Then, a storage area is secured (step S2005). In this case, the bit width corresponding to the second transposed Bloom filter tbf (p) s to which the word including the update bit position belongs is secured. Specifically, since the bit width w of the word is w = n / c and the number of arrays of the first transposed Bloom filter tbf (p) is m, (n / c) × m = s / c A bit width should be secured.

つぎに、転置部1703により、特定された同一配列位置のワード群を保存領域に配列することで、更新ビットを含む第2の転置ブルームフィルタtbf(p)sが生成される(ステップS2006)。このあと、段数pをインクリメントし(ステップS2007)、ステップS2002に戻る。これにより、第1段〜第h段まで更新することができる。   Next, the transposition unit 1703 generates the second transposed Bloom filter tbf (p) s including the update bit by arranging the specified word group at the same arrangement position in the storage area (step S2006). Thereafter, the stage number p is incremented (step S2007), and the process returns to step S2002. Thereby, it is possible to update from the first stage to the h-th stage.

そして、ステップS2002において、p>hである場合(ステップS2002:Yes)、保存/復元処理部203は、保存領域内の第2の転置ブルームフィルタtbf(p)sを記憶装置に上書き保存する(ステップS2008)。すなわち、記憶装置内の更新前の第2の転置ブルームフィルタtbf(p)sに対し上書き保存する。これにより、部分保存処理(ステップS1804)を終了する。   In step S2002, if p> h (step S2002: Yes), the save / restore processing unit 203 overwrites and saves the second transposed Bloom filter tbf (p) s in the save area in the storage device ( Step S2008). That is, the second transposed Bloom filter tbf (p) s before update in the storage device is overwritten and saved. Thereby, the partial storage process (step S1804) is terminated.

<保存/復元処理部203による復元処理>
図21は、保存/復元処理部203による復元処理手順を示すフローチャートである。まず、保存/復元処理部203は、受付部1701により復元指示を待ち受け(ステップS2101:No)、復元指示が受け付けられた場合(ステップS2101:Yes)、保存/復元処理部203は、段数pをp=1に設定し(ステップS2102)、段数pがp>h(hは最上段)であるか否かを判断する(ステップS2103)。
<Restoration Process by Save / Restore Processing Unit 203>
FIG. 21 is a flowchart showing a restoration processing procedure by the save / restore processing unit 203. First, the save / restore processing unit 203 waits for a restore instruction by the accepting unit 1701 (step S2101: No). When the restore instruction is accepted (step S2101: Yes), the save / restore process unit 203 sets the number of steps p. p = 1 is set (step S2102), and it is determined whether or not the number of stages p is p> h (h is the uppermost stage) (step S2103).

p>hでない場合(ステップS2103:No)、保存/復元処理部203は、復元領域を確保する(ステップS2104)。復元領域は、第1の転置ブルームフィルタ列tBF(p)のビット幅であり、第1の転置ブルームフィルタtbf(p)ごとに区分けされる。   If p> h is not satisfied (step S2103: NO), the storage / restoration processing unit 203 secures a restoration area (step S2104). The restoration region is the bit width of the first transposed Bloom filter row tBF (p) and is divided for each first transposed Bloom filter tbf (p).

そして、保存/復元処理部203は、未選択の第2の転置ブルームフィルタtbf(p)sがあるかを判断する(ステップS2105)。未選択の第2の転置ブルームフィルタtbf(p)sがある場合(ステップS2105:Yes)、保存/復元処理部203は、配列位置の先頭から未選択の第2の転置ブルームフィルタtbf(p)sを選択する(ステップS2106)。図15の例では、第2の転置ブルームフィルタtbf(p−1)s、tbf(p)sの順に選択することとなる。   Then, the storage / restoration processing unit 203 determines whether there is an unselected second transposed Bloom filter tbf (p) s (step S2105). When there is an unselected second transposed Bloom filter tbf (p) s (step S2105: Yes), the save / restore processing unit 203 selects the second transposed Bloom filter tbf (p) that has not been selected from the top of the array position. s is selected (step S2106). In the example of FIG. 15, the second transposed Bloom filter tbf (p−1) s and tbf (p) s are selected in this order.

このあと、保存/復元処理部203は、分割部1702により、選択された第2の転置ブルームフィルタtbf(p)sをワード単位で分割する(ステップS2107)。そして、保存/復元処理部203は、転置部1703により、分割されたワード群を、第1の転置ブルームフィルタtbf(p)ごとの復元領域に書き込む(ステップS2108)。このあと、ステップS2105に戻る。   Thereafter, the saving / restoring processing unit 203 divides the selected second transposed Bloom filter tbf (p) s by word unit by the dividing unit 1702 (step S2107). Then, the storage / restoration processing unit 203 writes the divided word group in the restoration area for each first transposed Bloom filter tbf (p) by the transposing unit 1703 (step S2108). Thereafter, the process returns to step S2105.

ステップS2105において、未選択の第2の転置ブルームフィルタtbf(p)sがない場合(ステップS2105:No)、保存/復元処理部203は、段数pをインクリメントし(ステップS2109)、ステップS2102に戻る。これにより、第1段〜第h段まで復元することができる。そして、ステップS2103において、p>hである場合(ステップS2103:Yes)、復元処理を終了する。   In step S2105, when there is no unselected second transposed Bloom filter tbf (p) s (step S2105: No), the save / restore processing unit 203 increments the number of stages p (step S2109) and returns to step S2102. . Thereby, it is possible to restore from the first stage to the h-th stage. In step S2103, when p> h is satisfied (step S2103: Yes), the restoration process is terminated.

このように、本実施の形態によれば、ワード単位で転置して保存するため、メモリアクセス回数が低減される。すなわち、第1の転置ブルームフィルタ列tBF(p)を元のブルームフィルタ列BF(p)に戻すと、ビット単位で転置しなければならず、メモリアクセスが多くなり、時間がかかったが、本実施の形態では、保存処理の高速化を実現することができる。   Thus, according to the present embodiment, the number of memory accesses is reduced because transposition and storage are performed in units of words. That is, when the first transposed Bloom filter row tBF (p) is returned to the original Bloom filter row BF (p), it must be transposed bit by bit, which increases memory access and takes time. In the embodiment, the storage process can be speeded up.

また、ワード単位でまとめることで、第1の転置ブルームフィルタ列tBF(p)の隣り合うものどうしがまとまって保存される。したがって、近接するデータブロックで更新があった場合、第1の転置ブルームフィルタ列tBF(p)のうち更新ビットを含む第1の転置ブルームフィルタtbf(p)だけを更新すればよい。このように、第1の階層型転置ブルームフィルタtBFをすべて転置して保存するのではなく、更新箇所のみ部分的に転置して再保存することで、保存処理の効率化を図ることができる。   Further, by grouping together in units of words, adjacent ones of the first transposed Bloom filter row tBF (p) are stored together. Therefore, when there is an update in the adjacent data block, only the first transposed Bloom filter tbf (p) including the update bit needs to be updated in the first transposed Bloom filter row tBF (p). As described above, the first hierarchical transposed Bloom filter tBF is not transposed and stored, but only the updated portion is partially transposed and re-saved, so that the efficiency of the saving process can be improved.

<第2の転置ブルームフィルタ列tBF(p)sが複数保存されている場合の復元例>
つぎに、第2の転置ブルームフィルタ列tBF(p)sが複数保存されている場合の復元例について説明する。データブロック集合dbへのデータ登録数が一定以上になると、ブルームフィルタの検索精度が低下する。したがって、データ登録数が一定以上になると、あらたに、同一サイズの階層型ブルームフィルタBFを設定する。
<Example of restoration when a plurality of second transposed Bloom filter rows tBF (p) s are stored>
Next, a restoration example when a plurality of second transposed Bloom filter rows tBF (p) s are stored will be described. When the number of data registrations in the data block set db exceeds a certain level, the Bloom filter search accuracy decreases. Therefore, when the number of registered data exceeds a certain level, a hierarchical Bloom filter BF having the same size is newly set.

このあらたに設定された階層型ブルームフィルタBFについても、上述したように転置されて、第1の階層型転置ブルームフィルタtBFとなる。ここでは、新規な第1の階層型転置ブルームフィルタtBFを、すでに登録済の第1の階層型転置ブルームフィルタtBFと区別するため、「第1の階層型転置ブルームフィルタtBFa」と表記する。   The newly set hierarchical Bloom filter BF is also transposed as described above to become the first hierarchical transposed Bloom filter tBF. Here, in order to distinguish the new first hierarchical transposed Bloom filter tBF from the already registered first hierarchical transposed Bloom filter tBF, it is referred to as “first hierarchical transposed Bloom filter tBFa”.

また、第1の階層型転置ブルームフィルタtBFaを構成する第p段の転置ブルームフィルタ列を、「第1の転置ブルームフィルタ列tBFa(p)」と表記する。さらに、第1の転置ブルームフィルタ列tBFa(p)を構成する転置ブルームフィルタを、「第1の転置ブルームフィルタtbfa(p)」と表記する。   Further, the p-th stage transposed Bloom filter row constituting the first hierarchical transposed Bloom filter tBFa is referred to as “first transposed Bloom filter row tBFa (p)”. Further, the transposed Bloom filter constituting the first transposed Bloom filter row tBFa (p) is denoted as “first transposed Bloom filter tbfa (p)”.

第1の階層型転置ブルームフィルタtBFaが生成されると、第1の階層型転置ブルームフィルタ数が2個となる。対象データDを検索する場合、まず、第1の階層型転置ブルームフィルタtBFを用いて検索をおこない、次いで、第1の階層型転置ブルームフィルタtBFaを用いて検索をおこなうこととなる。   When the first hierarchical transposed Bloom filter tBFa is generated, the number of first hierarchical transposed Bloom filters is two. When searching for the target data D, the search is first performed using the first hierarchical transposed Bloom filter tBF, and then the search is performed using the first hierarchical transposed Bloom filter tBFa.

第1の階層型転置ブルームフィルタtBF,tBFaを保存する際は、一旦別々に「2回目の転置」をおこなって記憶装置に保存することになる。これにより、第1の階層型転置ブルームフィルタtBFは、第2の階層型転置ブルームフィルタtBFsとして記憶装置に保存されることとなる。一方、第1の階層型転置ブルームフィルタtBFaもデータ構造は、第1の階層型転置ブルームフィルタtBFと同一であるため、同じように保存される。   When the first hierarchical transposed Bloom filters tBF and tBFa are stored, the “second transposition” is once performed separately and stored in the storage device. Thereby, the first hierarchical transposed Bloom filter tBF is stored in the storage device as the second hierarchical transposed Bloom filter tBFs. On the other hand, the data structure of the first hierarchical transposed Bloom filter tBFa is the same as that of the first hierarchical transposed Bloom filter tBF, and is thus stored in the same manner.

ここで、第1の階層型転置ブルームフィルタtBFaに対する第2の階層型転置ブルームフィルタを、「第2の階層型転置ブルームフィルタtBFas」と表記する。また、第2の階層型転置ブルームフィルタtBFasを構成する第p段の転置ブルームフィルタ列を、「第2の転置ブルームフィルタ列tBFa(p)s」と表記する。さらに、第2の転置ブルームフィルタ列tBFa(p)sを構成する転置ブルームフィルタを、「第2の転置ブルームフィルタtbfa(p)s」と表記する。   Here, the second hierarchical transposed Bloom filter for the first hierarchical transposed Bloom filter tBFa is referred to as “second hierarchical transposed Bloom filter tBFas”. Further, the p-th stage transposed Bloom filter row constituting the second hierarchical transposed Bloom filter tBFas is denoted as “second transposed Bloom filter row tBFa (p) s”. Further, the transposed Bloom filter constituting the second transposed Bloom filter row tBFa (p) s is denoted as “second transposed Bloom filter tbfa (p) s”.

図22は、第2の転置ブルームフィルタ列tBF(p)sが複数保存されている場合の復元例(その1)を示す説明図である。   FIG. 22 is an explanatory diagram of a restoration example (part 1) when a plurality of second transposed Bloom filter rows tBF (p) s are stored.

図22において、左側は、既存のブルームフィルタBF(p)、第1の転置ブルームフィルタtBF(p)、第2の転置ブルームフィルタtBF(p)sを示している。右側は、新規に追加されたブルームフィルタBFa(p),第1の転置ブルームフィルタtBFa(p),第2の転置ブルームフィルタtBFa(p)sである。なお、ブルームフィルタBFa(p)は、「1回目の転置」での第1の転置ブルームフィルタtBFa(p)の転置元となるブルームフィルタ列である。   In FIG. 22, the left side shows an existing Bloom filter BF (p), a first transposed Bloom filter tBF (p), and a second transposed Bloom filter tBF (p) s. The right side is a newly added Bloom filter BFa (p), a first transposed Bloom filter tBFa (p), and a second transposed Bloom filter tBFa (p) s. The Bloom filter BFa (p) is a Bloom filter row that is a transposition source of the first transposed Bloom filter tBFa (p) in the “first transposition”.

図22では、一例として、ブルームフィルタ列BF(p),BFa(p)のビット幅sをs=24ビットとする。また、各ブルームフィルタ列BF(p),BFa(p)を構成するブルームフィルタの配列個数nをn=4とする。さらに、ブルームフィルタbf(p−1)〜bf(p−8)のビット幅mをm=6とする。   In FIG. 22, as an example, the bit width s of the Bloom filter columns BF (p) and BFa (p) is s = 24 bits. In addition, the arrangement number n of Bloom filters constituting each Bloom filter row BF (p), BFa (p) is n = 4. Further, the bit width m of the Bloom filters bf (p−1) to bf (p−8) is set to m = 6.

また、分割数cをc=2とする。したがって、第1の転置ブルームフィルタtBF(p),tBFa(p)では、ビット幅n/c(=4/2=2)のc(=2)個のワードが生成される。生成されたワードのうち先頭位置のワードをワードW1−#とし、次の配列位置のワードをワードW2−#とする。   Further, the division number c is set to c = 2. Therefore, in the first transposed Bloom filters tBF (p) and tBFa (p), c (= 2) words having a bit width n / c (= 4/2 = 2) are generated. Of the generated words, the word at the head position is designated as word W1- #, and the word at the next array position is designated as word W2- #.

たとえば、ワードW1−1は、第1の転置ブルームフィルタtbf(p−1)の先頭ワードであり、ワードW2−1は、第1の転置ブルームフィルタtbf(p−1)のワードW1−1に続くワードである。   For example, the word W1-1 is the first word of the first transposed Bloom filter tbf (p-1), and the word W2-1 is the word W1-1 of the first transposed Bloom filter tbf (p-1). The following word.

同様に、ワードW1−7は、第1の転置ブルームフィルタtbfa(p−7)の先頭ワードであり、ワードW2−7は、第1の転置ブルームフィルタtbfa(p−7)のワードW1−7に続くワードである。   Similarly, the word W1-7 is the first word of the first transposed Bloom filter tbfa (p-7), and the word W2-7 is the word W1-7 of the first transposed Bloom filter tbfa (p-7). It is the word that follows.

図22では、保存/復元処理部203による保存処理により、第1の転置ブルームフィルタ列tBF(p),tBFa(p)が、それぞれ、第2の転置ブルームフィルタ列tBF(p)s,tBFa(p)sに転置されて記憶装置に保存される。   In FIG. 22, the first transposed Bloom filter sequence tBF (p), tBFa (p) is converted into the second transposed Bloom filter sequence tBF (p) s, tBFa ( p) transposed to s and stored in storage.

また、保存/復元処理部203による復元処理により、第2の転置ブルームフィルタ列tBF(p)s,tBFa(p)sが、それぞれ、第1の転置ブルームフィルタ列tBF(p),tBFa(p)に転置されて記憶装置から復元される。   Further, the second transposed Bloom filter string tBF (p) s, tBFa (p) s is converted into the first transposed Bloom filter string tBF (p), tBFa (p by the restoration process by the storage / restoration processing unit 203, respectively. ) And restored from the storage device.

このように、図22に示した例では、第1の転置ブルームフィルタ列tBF(p),tBFa(p)が別個に存在するため、データ検索をおこなうときは、まず、検索処理部202は、まず、第1の転置ブルームフィルタ列tBF(p)を用いて検索を実行し、ついで、第1の転置ブルームフィルタ列tBFa(p)を用いて検索を実行する。   Thus, in the example shown in FIG. 22, since the first transposed Bloom filter string tBF (p), tBFa (p) exists separately, when performing a data search, first, the search processing unit 202 First, a search is performed using the first transposed Bloom filter string tBF (p), and then the search is performed using the first transposed Bloom filter string tBFa (p).

図22に示した例では、検索の際、第1の転置ブルームフィルタ列tBF(p),tBFa(p)という2つのブルームフィルタを別個に用いることになるが、登録データ数が多くなった場合、ブルームフィルタも多くなり、検索効率が低下することとなる。したがって、以下の例では、第1の転置ブルームフィルタ列tBF(p),tBFa(p)として別個に保存されている状態から復元するときに、第1の転置ブルームフィルタ列tBF(p)に統合する。これにより、検索効率の向上を図る。   In the example shown in FIG. 22, two Bloom filters of the first transposed Bloom filter string tBF (p) and tBFa (p) are separately used for the search, but the number of registered data increases. As a result, the number of Bloom filters increases, and the search efficiency decreases. Therefore, in the following example, when restoring from the state stored separately as the first transposed Bloom filter row tBF (p) and tBFa (p), the first transposed Bloom filter row tBF (p) is integrated. To do. Thereby, the search efficiency is improved.

また、統合された第1の転置ブルームフィルタ列tBF(p)を保存するときも、「2回目の転置」により、第2の転置ブルームフィルタ列tBF(p)sとなる。このように、ブルームフィルタが追加される都度、転置ブルームフィルタの統合がおこなわれ、第1の転置ブルームフィルタ列tBF(p)が拡大する。   Also, when the integrated first transposed Bloom filter row tBF (p) is stored, the second transposed Bloom filter row tBF (p) s is obtained by the “second transposition”. Thus, each time a Bloom filter is added, the transposed Bloom filter is integrated, and the first transposed Bloom filter row tBF (p) is expanded.

統合後の第1の転置ブルームフィルタ列tBF(p)で検索をおこなう場合、統合前にくらべて各段の転置ブルームフィルタ列tBF(p)のビット幅が2倍になるが、段ごとに検索することで絞込みが2倍になる。   When searching with the first transposed Bloom filter string tBF (p) after the integration, the bit width of the transposed Bloom filter string tBF (p) at each stage is doubled before the integration, but the search is performed for each stage. By doing so, the narrowing down doubles.

たとえば、統合前では、第1の転置ブルームフィルタ列tBF(p)ではヒットせず,第1の転置ブルームフィルタ列tBFa(p)でヒットするデータがあるとすると、第1の転置ブルームフィルタ列tBF(p)を用いた検索が無駄になり、その分ヒットするまで時間がかかることとなる。   For example, if there is data that does not hit in the first transposed Bloom filter string tBF (p) and hits in the first transposed Bloom filter string tBFa (p) before the integration, the first transposed Bloom filter string tBF The search using (p) is wasted, and it takes time until the hit.

一方、統合後では、第1の転置ブルームフィルタ列tBF(p)だけで絞り込むことができるため、統合前の状態よりも無駄な検索を低減することができ、検索効率の向上を図ることができる。   On the other hand, after integration, since it can be narrowed down only by the first transposed Bloom filter row tBF (p), useless searches can be reduced as compared with the state before integration, and search efficiency can be improved. .

<第2の転置ブルームフィルタ列tBF(p)s,tBFa(p)sの統合復元例>
図23は、第2の転置ブルームフィルタ列tBF(p)s,tBFa(p)sの統合復元例を示す説明図である。図23では、第2の転置ブルームフィルタ列tBF(p)s,tBFa(p)sをワード単位で、ワードW1−1〜W1−12,W2−1〜W2−12に分割する。
<Example of Integrated Restoration of Second Transposed Bloom Filter Sequence tBF (p) s, tBFa (p) s>
FIG. 23 is an explanatory diagram illustrating an example of integrated restoration of the second transposed Bloom filter row tBF (p) s, tBFa (p) s. In FIG. 23, the second transposed Bloom filter row tBF (p) s, tBFa (p) s is divided into words W1-1 to W1-12 and W2-1 to W2-12 in units of words.

そして、ワードW1−1〜W1−12,W2−1〜W2−12を同一配列位置でまとめる。具体的には、ワードW1−#とW2−#の#がおなじワードをワードの配列にしたがって並べる。たとえば、ワードW1−1とワード2−1は末尾がともに1であるため、ワードW1−1,W2−1の順に並べる。   Then, the words W1-1 to W1-12 and W2-1 to W2-12 are grouped at the same arrangement position. Specifically, the same word is arranged according to the word arrangement in the words W1- # and W2- #. For example, since the word W1-1 and the word 2-1 both end with 1, the words W1-1 and W2-1 are arranged in this order.

これにより、元の第1の転置ブルームフィルタtbf(p−1)に復元される。他のワードについても同様に転置することで、第1の転置ブルームフィルタ列tBF(p)に統合される。なお、統合後の第1の転置ブルームフィルタ列tBF(p)を「第1の転置ブルームフィルタ列new−tBF(p)」と表記する。   As a result, the original first transposed Bloom filter tbf (p−1) is restored. The other words are similarly transposed to be integrated into the first transposed Bloom filter row tBF (p). Note that the first transposed Bloom filter string tBF (p) after integration is referred to as “first transposed Bloom filter string new-tBF (p)”.

本例の統合では、第2の転置ブルームフィルタ列tBF(p)s,tBFa(p)sという2つのフィルタを統合したため、第1の転置ブルームフィルタ列new−tBF(p)のビット幅は、s×2=n×m×2=48ビットとなる。統合対象のフィルタ個数をjとして一般化すると、統合後のビット幅は、n×m×jビットとなる。   In the integration of this example, since the two filters of the second transposed Bloom filter sequence tBF (p) s and tBFa (p) s are integrated, the bit width of the first transposed Bloom filter sequence new-tBF (p) is s × 2 = n × m × 2 = 48 bits. When the number of filters to be integrated is generalized as j, the bit width after integration is n × m × j bits.

そして、第1の転置ブルームフィルタ列new−tBF(p)は、統合前の第1の転置ブルームフィルタ列tBF(p)とビット幅やフィルタ数、ビットの値が異なるだけで、データ構造は同一である。したがって、第1の転置ブルームフィルタ列tBF(p)を同じように転置して保存することができる。第1の転置ブルームフィルタ列new−tBF(p)から転置された第2の転置ブルームフィルタ列tBF(p)sを、「第2の転置ブルームフィルタ列new−tBF(p)s」と表記する。   The first transposed Bloom filter string new-tBF (p) has the same data structure as the first transposed Bloom filter string tBF (p) before integration, except for the bit width, the number of filters, and the bit value. It is. Therefore, the first transposed Bloom filter row tBF (p) can be transposed and stored in the same manner. The second transposed Bloom filter row tBF (p) s transposed from the first transposed Bloom filter row new-tBF (p) is expressed as “second transposed Bloom filter row new-tBF (p) s”. .

第2の転置ブルームフィルタ列new−tBF(p)sは、第2の転置ブルームフィルタnew−tBF(p−1)s,new−tBF(p−2)sとが配列されて構成される。第2の転置ブルームフィルタnew−tBF(p−1)sは、ワードW1−1〜W1−12が配列されて構成されている。   The second transposed Bloom filter row new-tBF (p) s is configured by arranging second transposed Bloom filters new-tBF (p-1) s and new-tBF (p-2) s. The second transposed Bloom filter new-tBF (p-1) s is configured by arranging words W1-1 to W1-12.

すなわち、第2の転置ブルームフィルタnew−tBF(p−1)sは、第2の転置ブルームフィルタtBF(p−1)s,tBFa(p−1)sが統合された転置ブルームフィルタである。同様に、第2の転置ブルームフィルタnew−tBF(p−2)sは、ワードW2−1〜W2−12が配列されて構成されている。すなわち、第2の転置ブルームフィルタnew−tBF(p−2)sは、第2の転置ブルームフィルタtBF(p−2)s,tBFa(p−2)sが統合された転置ブルームフィルタである。   That is, the second transposed Bloom filter new-tBF (p-1) s is a transposed Bloom filter in which the second transposed Bloom filters tBF (p-1) s and tBFa (p-1) s are integrated. Similarly, the second transposed Bloom filter new-tBF (p-2) s is configured by arranging words W2-1 to W2-12. That is, the second transposed Bloom filter new-tBF (p-2) s is a transposed Bloom filter in which the second transposed Bloom filters tBF (p-2) s and tBFa (p-2) s are integrated.

<保存/復元処理部203による統合復元処理手順>
図24は、保存/復元処理部203による統合復元処理手順を示すフローチャートである。図24において、保存/復元処理部203は、受付部1701により、復元指示を待ち受け(ステップS2401:No)、復元指示が受け付けられた場合(ステップS2401:Yes)、第2の階層型転置ブルームフィルタtBFsの保存個数jを検出する(ステップS2402)。
<Integrated Restoration Processing Procedure by Save / Restore Processing Unit 203>
FIG. 24 is a flowchart showing an integrated restoration processing procedure by the storage / restoration processing unit 203. In FIG. 24, the storage / restoration processing unit 203 waits for a restoration instruction by the accepting unit 1701 (step S2401: No). When the restoration instruction is accepted (step S2401: Yes), the second hierarchical transposed Bloom filter The stored number j of tBFs is detected (step S2402).

図23に示した例では、第2の転置ブルームフィルタ列tBF(p)s,tBFa(p)sが保存されているため、保存個数jはj=2である。   In the example shown in FIG. 23, since the second transposed Bloom filter row tBF (p) s, tBFa (p) s is saved, the number j to be saved is j = 2.

そして、保存/復元処理部203は、段数pをp=1に設定し(ステップS2403)、p段目での保存個数j分の復元領域を管理装置200内のメモリ領域に確保する(ステップS2404)。そして、保存/復元処理部203は、j個の第2の転置ブルームフィルタ列tBF(p)sのうち、未選択の第2の転置ブルームフィルタ列tBF(p)sがあるか否かを判断する(ステップS2405)。   Then, the save / restore processing unit 203 sets the number of stages p to p = 1 (step S2403), and reserves a restore area for the number j of saves in the p-th stage in the memory area in the management apparatus 200 (step S2404). ). Then, the storage / restoration processing unit 203 determines whether or not there is an unselected second transposed Bloom filter row tBF (p) s among the j second transposed Bloom filter rows tBF (p) s. (Step S2405).

そして、未選択の第2の転置ブルームフィルタ列tBF(p)sがある場合(ステップS2405:Yes)、保存/復元処理部203は、未選択の第2の転置ブルームフィルタ列tBF(p)sを選択する(ステップS2406)。未選択の第2の転置ブルームフィルタ列tBF(p)sがない場合(ステップS2405:No)、ステップS2409に移行する。   If there is an unselected second transposed Bloom filter string tBF (p) s (step S2405: Yes), the save / restore processing unit 203 selects the unselected second transposed Bloom filter string tBF (p) s. Is selected (step S2406). When there is no unselected second transposed Bloom filter row tBF (p) s (step S2405: No), the process proceeds to step S2409.

図23に示した例では、j=2であり、第2の転置ブルームフィルタ列tBF(p)s,tBFa(p)sが存在する。そして、第2の転置ブルームフィルタ列tBF(p)s,tBFa(p)sがともに未選択であれば、保存/復元処理部203は、まず、第2の転置ブルームフィルタ列tBF(p)sを選択する。その後、またステップS2405に移行した場合に、保存/復元処理部203は、第2の転置ブルームフィルタ列tBFa(p)sを選択する。つぎに、ステップS2405に移行したときは、未選択のものはないこととなる。   In the example shown in FIG. 23, j = 2 and there are second transposed Bloom filter rows tBF (p) s and tBFa (p) s. If both the second transposed Bloom filter sequence tBF (p) s and tBFa (p) s are not selected, the storage / restoration processing unit 203 firstly stores the second transposed Bloom filter sequence tBF (p) s. Select. Thereafter, when the process proceeds to step S2405 again, the storage / restoration processing unit 203 selects the second transposed Bloom filter string tBFa (p) s. Next, when the process proceeds to step S2405, there is no unselected one.

そして、未選択の第2の転置ブルームフィルタ列tBF(p)sを選択したあと、保存/復元処理部203は、分割部1702により、選択された第2の転置ブルームフィルタ列tBF(p)sをワード単位に分割する(ステップS2407)。   After selecting the unselected second transposed Bloom filter string tBF (p) s, the storage / restoration processing unit 203 uses the dividing unit 1702 to select the selected second transposed Bloom filter string tBF (p) s. Is divided into words (step S2407).

図23に示した例では、第2の転置ブルームフィルタ列tBF(p)sが選択された場合は、保存/復元処理部203は、第2の転置ブルームフィルタtBF(p)sをワードW1−1〜W1−6,W2−1〜W2−6に分割する。第2の転置ブルームフィルタtBFa(p)sが選択された場合は、保存/復元処理部203は、第2の転置ブルームフィルタtBFa(p)sをワードW1−7〜W1−12,W2−7〜W2−12に分割する。   In the example shown in FIG. 23, when the second transposed Bloom filter string tBF (p) s is selected, the save / restore processing unit 203 converts the second transposed Bloom filter tBF (p) s into the word W1- 1 to W1-6, W2-1 to W2-6. When the second transposed Bloom filter tBFa (p) s is selected, the storage / restoration processing unit 203 converts the second transposed Bloom filter tBFa (p) s into the words W1-7 to W1-12, W2-7. Divide into ~ W2-12.

そして、転置部1703により、保存/復元処理部203は、分割されたワード群をワードの配列位置が同じものどうしで並べて復元領域に書き込む(ステップS2408)。   Then, the transposition unit 1703 causes the storage / restoration processing unit 203 to arrange the divided word groups with the same word arrangement position and write them in the restoration area (step S2408).

図23に示した例では、保存/復元処理部203は、ワードW1−1〜W1−6,W2−1〜W2−6については、ワードの配列位置が同じものどうし、すなわち、末尾番号がおなじものどうしをまとめる。すなわち、{W1−1,W2−1}、{W1−2,W2−2}、…、{W1−6,W2−6}でまとめて書き込む。   In the example shown in FIG. 23, the save / restore processing unit 203 uses the same word arrangement positions for the words W1-1 to W1-6 and W2-1 to W2-6, that is, the end numbers are the same. Put things together. That is, {W1-1, W2-1}, {W1-2, W2-2},..., {W1-6, W2-6} are collectively written.

同様に、保存/復元処理部203は、ワードW1−7〜W1−12,W2−7〜W2−12についても、ワードの配列位置が同じものどうし、すなわち、末尾番号がおなじものどうしをまとめる。すなわち、{W1−7,W2−7}、{W1−8,W2−8}、…、{W1−12,W2−12}でまとめて書き込む。   Similarly, the save / restore processing unit 203 also collects words W1-7 to W1-12 and W2-7 to W2-12 that have the same word arrangement position, that is, the same end numbers. That is, {W1-7, W2-7}, {W1-8, W2-8},..., {W1-12, W2-12} are written together.

そして、ステップS2405に戻る。ステップS2405において、未選択の第2の転置ブルームフィルタ列tBF(p)がない場合(ステップS2405:No)、保存/復元処理部203は、段数pをインクリメントして(ステップS2409)、p>hであるか否かを判断する(ステップS2410)。p>hでない場合(ステップS2410:No)、ステップS2404に戻る。一方、p>hである場合(ステップS2410:Yes)、保存/復元処理部203による統合復元処理を終了する。   Then, the process returns to step S2405. If there is no unselected second transposed Bloom filter string tBF (p) in step S2405 (step S2405: No), the save / restore processing unit 203 increments the number of stages p (step S2409), and p> h It is determined whether or not (step S2410). If p> h is not satisfied (step S2410: NO), the process returns to step S2404. On the other hand, if p> h (step S2410: YES), the integrated restoration process by the save / restore processing unit 203 is terminated.

このように、本実施の形態によれば、保存と復元を繰り返していくことで、第2の階層型転置ブルームフィルタtBFsが複数個(たとえば、第2の階層型転置ブルームフィルタtBFs,tBFas)保存されていても、1つのメモリブロックに収まることとなり、検索に最適なデータ構造となる。このように、第2の転置ブルームフィルタtBFsを拡大していくことにより、メモリ領域の続く限り、データのインデックス化が可能となる。   As described above, according to the present embodiment, a plurality of second hierarchical transposed Bloom filters tBFs (for example, the second hierarchical transposed Bloom filters tBFs and tBFas) are stored by repeatedly storing and restoring. Even in such a case, it will fit in one memory block, and the data structure is optimal for retrieval. In this way, by expanding the second transposed Bloom filter tBFs, data can be indexed as long as the memory area continues.

以上のことから、保存と復元を繰り返すことにより最適化され、検索時間の劣化を抑えることができる。すなわち、最初から大きなメモリ領域を使うのではなく、最初は小さく、そして、登録データ数の増加に応じて、だんだん大きくスケールしていけるようになる。   From the above, it is optimized by repeating storage and restoration, and it is possible to suppress degradation of search time. That is, instead of using a large memory area from the beginning, it is small at the beginning and can be scaled up gradually as the number of registered data increases.

なお、上述した説明では、一度統合復元すると、次の保存処理は、単一の階層型転置ブルームフィルタtBFsとして保存することとしたが、保存処理においては、統合前の状態のように分割したまま保存することとしてもよい。この場合、統合後の第1の転置ブルームフィルタ列new−tBF(p)を分割数cで分割することで、第1の転置ブルームフィルタ列tBF(p)ごとに転置(「2回目の転置」)をおこなって第2の転置ブルームフィルタ列tBF(p)sとしてそれぞれ記憶装置に保存することになる。   In the above description, once integrated and restored, the next storage process is stored as a single hierarchical transposed Bloom filter tBFs. However, in the storage process, it remains divided as in the state before the integration. It may be stored. In this case, the first transposed Bloom filter string new-tBF (p) after the integration is divided by the division number c, thereby transposing each first transposed Bloom filter string tBF (p) ("second transposition"). ) And stored in the storage device as the second transposed Bloom filter row tBF (p) s.

このように、分割して保存しても再統合すれば、第1の転置ブルームフィルタ列new−tBF(p)に復元することができる。また、分割保存することにより、各第1の転置ブルームフィルタ列tBF(p)の保存処理を並列実行することができ、保存時間の短縮化を図ることができる。   As described above, even if the data is divided and stored, it can be restored to the first transposed Bloom filter string new-tBF (p) if reintegrated. Moreover, by storing separately, the storage processing of each first transposed Bloom filter row tBF (p) can be executed in parallel, and the storage time can be shortened.

なお、本実施の形態で説明した検索方法や管理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本検索プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本検索プログラムは、インターネット等のネットワークを介して配布してもよい。   The search method and management method described in this embodiment can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation. The search program is recorded on a computer-readable recording medium such as a hard disk, a flexible disk, a CD-ROM, an MO, and a DVD, and is executed by being read from the recording medium by the computer. The search program may be distributed via a network such as the Internet.

200 管理装置
201 登録処理部
202 検索処理部
203 保存/復元処理部
901 受付部
902 転置部
903 変換部
904 第1の特定部
905 第2の特定部
906 判断部
907 判定部
908 抽出部
909 出力部
1701 受付部
1702 分割部
1703 転置部
1704 保存部
1705 更新検出部
1706 特定部
BF 階層型ブルームフィルタ
db データブロック集合
HTs ハッシュテーブル群
tBF (第1の)階層型転置ブルームフィルタ
tBFs 第2の階層型転置ブルームフィルタ
200 Management Device 201 Registration Processing Unit 202 Search Processing Unit 203 Save / Restore Processing Unit 901 Reception Unit 902 Transposition Unit 903 Conversion Unit 904 First Specification Unit 905 Second Specification Unit 906 Determination Unit 907 Determination Unit 908 Extraction Unit 909 Output Unit 1701 Reception unit 1702 Division unit 1703 Transposition unit 1704 Storage unit 1705 Update detection unit 1706 Specific unit BF Hierarchical Bloom filter db Data block set HTs Hash table group tBF (first) hierarchical transposition Bloom filter tBFs Second hierarchical transposition Bloom filter

Claims (5)

データブロックごとに登録済のデータ群を含むデータブロック集合と、所定数のデータブロック内での陰性を示すビットがm個配列されたn個のブルームフィルタ内のビット列を同一位置のビットどうしでまとめたnビットの第1の転置ブルームフィルタをm個配列したj個の第1の転置ブルームフィルタ列と、にアクセス可能なコンピュータに、
前記j個の第1の転置ブルームフィルタ列の保存要求を受け付ける第1の受付工程と、
前記第1の受付工程によって前記保存要求が受け付けられた場合、前記第1の転置ブルームフィルタごとに前記各第1の転置ブルームフィルタのビット列をnの約数となる分割数cで分割することにより、n/cビットのワードを(c×m×j)個生成する第1の分割工程と、
前記第1の転置ブルームフィルタ列ごとに、前記第1の分割工程によって分割されたワードを前記各第1の転置ブルームフィルタでの同一位置でまとめることにより、{(n/c)×m}ビットの第2の転置ブルームフィルタをc個配列した第2の転置ブルームフィルタ列に転置する第1の転置工程と、
前記第1の転置工程によって転置されたj個の第2の転置ブルームフィルタ列を記憶装置に保存する保存工程と、
前記第1の転置ブルームフィルタ列への復元指示を受け付ける第2の受付工程と、
前記第2の受付工程によって復元指示が受け付けられた場合、前記第2の転置ブルームフィルタ列ごとに、前記第2の転置ブルームフィルタ列を、前記分割数cで分割することにより、前記第2の転置ブルームフィルタごとに、n/cビットのワードをm個生成する第2の分割工程と、
前記j個の第2の転置ブルームフィルタ列において、前記第2の分割工程によって前記第2の転置ブルームフィルタごとに分割されたm個のワードを配列位置が共通するものどうしで前記第2の転置ブルームフィルタの配列順にまとめることにより、前記j個の第2の転置ブルームフィルタ列を、前記j個の第1の転置ブルームフィルタ列が一列に配列して統合された第3の転置ブルームフィルタ列に転置する第2の転置工程と、
を実行させることを特徴とする管理プログラム。
A data block set including a registered data group for each data block and a bit string in n Bloom filters in which m bits indicating negative in a predetermined number of data blocks are arranged together by bits at the same position And a computer having access to j first transposed Bloom filter arrays in which m n-bit first transposed Bloom filters are arranged,
A first receiving step of receiving a storage request for the j first transposed Bloom filter rows;
When the storage request is accepted by the first acceptance step, by dividing the bit string of each first transposed Bloom filter by a division number c that is a divisor of n for each first transposed Bloom filter , A first dividing step for generating (c × m × j) n / c-bit words;
For each first transposed Bloom filter string, {(n / c) × m} bits are obtained by grouping the words divided by the first dividing step at the same position in each first transposed Bloom filter. A first transposing step of transposing a second transposed Bloom filter array of c second transposed Bloom filters;
A storage step of storing in the storage device the j second transposed Bloom filter trains transposed by the first transposing step;
A second receiving step of receiving a restoration instruction to the first transposed Bloom filter row;
When the restoration instruction is accepted by the second accepting step, the second transposed Bloom filter row is divided by the division number c for each of the second transposed Bloom filter rows, so that the second A second splitting step for generating m n / c-bit words for each transposed Bloom filter;
In the j second transposed Bloom filter rows, the second transposition is performed between m words divided by the second transposing step for each of the second transposed Bloom filters in common arrangement positions. The j second transposed Bloom filter rows are combined into a third transposed Bloom filter row in which the j first transposed Bloom filter rows are arranged in one row by combining the Bloom filters in the order of arrangement. A second transposition step to transpose;
A management program characterized by causing
前記第1の受付工程は、
前記第3の転置ブルームフィルタ列の保存要求を受け付け、
前記第1の分割工程は、
前記第1の受付工程によって前記第3の転置ブルームフィルタ列の保存要求が受け付けられた場合、前記第3の転置ブルームフィルタ列を構成する前記各第1の転置ブルームフィルタのビット列を前記分割数cで分割することにより、前記第1の転置ブルームフィルタごとに、n/cビットのワードをc個生成し、
前記第1の転置工程は、
前記第1の分割工程によって分割されたワードを前記各第1の転置ブルームフィルタでの同一位置でまとめることにより、{(n/c)×m×j}ビットの第2の転置ブルームフィルタをc個配列した第4の転置ブルームフィルタ列に転置し、
前記保存工程は、
前記第1の転置工程によって転置された第4の転置ブルームフィルタ列を前記記憶装置に保存することを特徴とする請求項1に記載の管理プログラム。
The first receiving step includes
Accepting a save request for the third transposed Bloom filter row;
The first dividing step includes
When the storage request for the third transposed Bloom filter string is accepted in the first accepting step, the bit number of each of the first transposed Bloom filter strings constituting the third transposed Bloom filter string is the division number c. To generate c n / c-bit words for each of the first transposed Bloom filters,
The first transposing step includes
The second transposed Bloom filter of {(n / c) × m × j} bits is represented by c by grouping the words divided in the first dividing step at the same position in each first transposed Bloom filter. Transpose to the fourth array of transposed Bloom filter rows,
The storage step includes
The management program according to claim 1, wherein the fourth transposed Bloom filter row transposed by the first transposing step is stored in the storage device.
前記第1の受付工程は、
前記第3の転置ブルームフィルタ列の保存要求を受け付け、
前記第1の分割工程は、
前記第1の受付工程によって前記第3の転置ブルームフィルタ列の保存要求が受け付けられた場合、前記第3の転置ブルームフィルタ列を前記分割数cによりc個の前記第1の転置ブルームフィルタ列に分割し、前記第1の転置ブルームフィルタ列の各々において、前記第1の転置ブルームフィルタのビット列を前記分割数cで分割することにより、n/cビットのc個のワードを前記第1の転置ブルームフィルタごとに生成し、
前記第1の転置工程は、
前記第1の転置ブルームフィルタ列の各々において、前記第1の分割工程によって分割されたワードを前記各第1の転置ブルームフィルタでの同一位置でまとめることにより、c個の前記第2の転置ブルームフィルタ列に転置し、
前記保存工程は、
前記第1の転置工程によって転置されたc個の前記第2の転置ブルームフィルタ列を前記記憶装置に保存することを特徴とする請求項1に記載の管理プログラム。
The first receiving step includes
Accepting a save request for the third transposed Bloom filter row;
The first dividing step includes
When the storage request for the third transposed Bloom filter row is accepted by the first accepting step, the third transposed Bloom filter row is changed to c first transposed Bloom filter rows by the division number c. In each of the first transposed Bloom filter sequences, the first transposed Bloom filter bit sequence is divided by the division number c, so that n words / c bits of c words are converted into the first transposed Bloom sequence. Generate for each Bloom filter,
The first transposing step includes
In each of the first transposed Bloom filter rows, the c pieces of the second transposed Bloom are collected by grouping the words divided by the first dividing step at the same position in each of the first transposed Bloom filters. Transpose to filter column,
The storage step includes
2. The management program according to claim 1, wherein the c second transposed Bloom filter trains transposed by the first transposing step are stored in the storage device.
データブロックごとに登録済のデータ群を含むデータブロック集合と、所定数のデータブロック内での陰性を示すビットがm個配列されたn個のブルームフィルタ内のビット列を同一位置のビットどうしでまとめたnビットの第1の転置ブルームフィルタをm個配列したj個の第1の転置ブルームフィルタ列と、にアクセス可能な管理装置であって、
前記j個の第1の転置ブルームフィルタ列の保存要求を受け付ける第1の受付手段と、
前記第1の受付手段によって前記保存要求が受け付けられた場合、前記第1の転置ブルームフィルタごとに前記各第1の転置ブルームフィルタのビット列をnの約数となる分割数cで分割することにより、n/cビットのワードを(c×m×j)個生成する第1の分割手段と、
前記第1の転置ブルームフィルタ列ごとに、前記第1の分割手段によって分割されたワードを前記各第1の転置ブルームフィルタでの同一位置でまとめることにより、{(n/c)×m}ビットの第2の転置ブルームフィルタをc個配列した第2の転置ブルームフィルタ列に転置する第1の転置手段と、
前記第1の転置手段によって転置されたj個の第2の転置ブルームフィルタ列を記憶装置に保存する保存手段と、
前記第1の転置ブルームフィルタ列への復元指示を受け付ける第2の受付手段と、
前記第2の受付手段によって復元指示が受け付けられた場合、前記第2の転置ブルームフィルタ列ごとに、前記第2の転置ブルームフィルタ列を、前記分割数cで分割することにより、前記第2の転置ブルームフィルタごとに、n/cビットのワードをm個生成する第2の分割手段と、
前記j個の第2の転置ブルームフィルタ列において、前記第2の分割手段によって前記第2の転置ブルームフィルタごとに分割されたm個のワードを配列位置が共通するものどうしで前記第2の転置ブルームフィルタの配列順にまとめることにより、前記j個の第2の転置ブルームフィルタ列を、前記j個の第1の転置ブルームフィルタ列が一列に配列して統合された第3の転置ブルームフィルタ列に転置する第2の転置手段と、
を備えることを特徴とする管理装置。
A data block set including a registered data group for each data block and a bit string in n Bloom filters in which m bits indicating negative in a predetermined number of data blocks are arranged together by bits at the same position A j-th transposed Bloom filter array in which m n-bit first transposed Bloom filters are arranged;
First receiving means for receiving a storage request for the j first transposed Bloom filter rows;
When the storage request is received by the first receiving means, by dividing the bit string of each first transposed Bloom filter by a division number c that is a divisor of n for each first transposed Bloom filter , First dividing means for generating (c × m × j) n / c-bit words;
For each first transposed Bloom filter string, {(n / c) × m} bits are obtained by grouping the words divided by the first dividing means at the same position in each first transposed Bloom filter. First transposing means for transposing a second transposed Bloom filter array in which c second transposed Bloom filters are arranged;
Storage means for storing the j second transposed Bloom filter trains transposed by the first transposing means in a storage device;
Second receiving means for receiving a restoration instruction to the first transposed Bloom filter row;
When the restoration instruction is accepted by the second accepting unit, the second transposed Bloom filter row is divided by the division number c for each of the second transposed Bloom filter rows, so that the second A second dividing means for generating m n / c-bit words for each transposed Bloom filter;
In the j second transposed Bloom filter trains, the second transposing is performed by using the m words divided by the second dividing unit for each of the second transposed Bloom filters in common arrangement positions. The j second transposed Bloom filter rows are combined into a third transposed Bloom filter row in which the j first transposed Bloom filter rows are arranged in one row by combining the Bloom filters in the order of arrangement. A second transposing means for transposing;
A management apparatus comprising:
データブロックごとに登録済のデータ群を含むデータブロック集合と、所定数のデータブロック内での陰性を示すビットがm個配列されたn個のブルームフィルタ内のビット列を同一位置のビットどうしでまとめたnビットの第1の転置ブルームフィルタをm個配列したj個の第1の転置ブルームフィルタ列と、にアクセス可能なコンピュータが、
前記j個の第1の転置ブルームフィルタ列の保存要求を受け付ける第1の受付工程と、
前記第1の受付工程によって前記保存要求が受け付けられた場合、前記第1の転置ブルームフィルタごとに前記各第1の転置ブルームフィルタのビット列をnの約数となる分割数cで分割することにより、n/cビットのワードを(c×m×j)個生成する第1の分割工程と、
前記第1の転置ブルームフィルタ列ごとに、前記第1の分割工程によって分割されたワードを前記各第1の転置ブルームフィルタでの同一位置でまとめることにより、{(n/c)×m}ビットの第2の転置ブルームフィルタをc個配列した第2の転置ブルームフィルタ列に転置する第1の転置工程と、
前記第1の転置工程によって転置されたj個の第2の転置ブルームフィルタ列を記憶装置に保存する保存工程と、
前記第1の転置ブルームフィルタ列への復元指示を受け付ける第2の受付工程と、
前記第2の受付工程によって復元指示が受け付けられた場合、前記第2の転置ブルームフィルタ列ごとに、前記第2の転置ブルームフィルタ列を、前記分割数cで分割することにより、前記第2の転置ブルームフィルタごとに、n/cビットのワードをm個生成する第2の分割工程と、
前記j個の第2の転置ブルームフィルタ列において、前記第2の分割工程によって前記第2の転置ブルームフィルタごとに分割されたm個のワードを配列位置が共通するものどうしで前記第2の転置ブルームフィルタの配列順にまとめることにより、前記j個の第2の転置ブルームフィルタ列を、前記j個の第1の転置ブルームフィルタ列が一列に配列して統合された第3の転置ブルームフィルタ列に転置する第2の転置工程と、
を実行することを特徴とする管理方法。
A data block set including a registered data group for each data block and a bit string in n Bloom filters in which m bits indicating negative in a predetermined number of data blocks are arranged together by bits at the same position And a computer having access to j first transposed Bloom filter rows in which m n-bit first transposed Bloom filters are arranged,
A first receiving step of receiving a storage request for the j first transposed Bloom filter rows;
When the storage request is accepted by the first acceptance step, by dividing the bit string of each first transposed Bloom filter by a division number c that is a divisor of n for each first transposed Bloom filter , A first dividing step for generating (c × m × j) n / c-bit words;
For each first transposed Bloom filter string, {(n / c) × m} bits are obtained by grouping the words divided by the first dividing step at the same position in each first transposed Bloom filter. A first transposing step of transposing a second transposed Bloom filter array of c second transposed Bloom filters;
A storage step of storing in the storage device the j second transposed Bloom filter trains transposed by the first transposing step;
A second receiving step of receiving a restoration instruction to the first transposed Bloom filter row;
When the restoration instruction is accepted by the second accepting step, the second transposed Bloom filter row is divided by the division number c for each of the second transposed Bloom filter rows, so that the second A second splitting step for generating m n / c-bit words for each transposed Bloom filter;
In the j second transposed Bloom filter rows, the second transposition is performed between m words divided by the second transposing step for each of the second transposed Bloom filters in common arrangement positions. The j second transposed Bloom filter rows are combined into a third transposed Bloom filter row in which the j first transposed Bloom filter rows are arranged in one row by combining the Bloom filters in the order of arrangement. A second transposition step to transpose;
The management method characterized by performing.
JP2010104015A 2010-04-28 2010-04-28 Management program, management apparatus, and management method Expired - Fee Related JP5526987B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010104015A JP5526987B2 (en) 2010-04-28 2010-04-28 Management program, management apparatus, and management method
US13/064,674 US8560558B2 (en) 2010-04-28 2011-04-07 Computer product, search apparatus, management apparatus, search method, and management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010104015A JP5526987B2 (en) 2010-04-28 2010-04-28 Management program, management apparatus, and management method

Publications (2)

Publication Number Publication Date
JP2011233016A true JP2011233016A (en) 2011-11-17
JP5526987B2 JP5526987B2 (en) 2014-06-18

Family

ID=45322265

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010104015A Expired - Fee Related JP5526987B2 (en) 2010-04-28 2010-04-28 Management program, management apparatus, and management method

Country Status (1)

Country Link
JP (1) JP5526987B2 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001043237A (en) * 1999-07-30 2001-02-16 Mitsubishi Electric Corp Data file and data retrieving method
JP2002171525A (en) * 2000-11-29 2002-06-14 Canon Inc Simd type arithmetic unit provided with bit plane arithmetic instruction
JP2007088962A (en) * 2005-09-26 2007-04-05 Nippon Telegr & Teleph Corp <Ntt> Ordinal data compressing method, ordinal data decompressing method, ordinal data processing program, ordinal data compressing apparatus, ordinal data decompressing apparatus, and ordinal data processing system
JP2008299585A (en) * 2007-05-31 2008-12-11 Hiroshima Univ Method of processing information for information retrieval, information processing program, and information processing system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001043237A (en) * 1999-07-30 2001-02-16 Mitsubishi Electric Corp Data file and data retrieving method
JP2002171525A (en) * 2000-11-29 2002-06-14 Canon Inc Simd type arithmetic unit provided with bit plane arithmetic instruction
JP2007088962A (en) * 2005-09-26 2007-04-05 Nippon Telegr & Teleph Corp <Ntt> Ordinal data compressing method, ordinal data decompressing method, ordinal data processing program, ordinal data compressing apparatus, ordinal data decompressing apparatus, and ordinal data processing system
JP2008299585A (en) * 2007-05-31 2008-12-11 Hiroshima Univ Method of processing information for information retrieval, information processing program, and information processing system

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNB200200183001; 赤間 世紀: はやわかり Maple 初版 , 20000810, p.52-56, 共立出版株式会社 *
JPN6013056429; 赤間 世紀: はやわかり Maple 初版 , 20000810, p.52-56, 共立出版株式会社 *

Also Published As

Publication number Publication date
JP5526987B2 (en) 2014-06-18

Similar Documents

Publication Publication Date Title
US8560558B2 (en) Computer product, search apparatus, management apparatus, search method, and management method
JP5716554B2 (en) SEARCH PROGRAM, SEARCH METHOD, SEARCH DEVICE, AND NODE
JP4271227B2 (en) Bit string search device, search method and program
CN108205577B (en) Array construction method, array query method, device and electronic equipment
JP4438448B2 (en) Structured document display processing device, structured document display method, structured document display program
CN101099129A (en) Organizing pointers to objects
KR102482391B1 (en) A method for presenting candidate words as substitutes for an input string received at an electronic device
CN106649286B (en) One kind carrying out the matched method of term based on even numbers group dictionary tree
JPWO2017072890A1 (en) Data management system, data management method and program
JP6428615B2 (en) Multidimensional range search apparatus and multidimensional range search method
JP5083367B2 (en) SEARCH DEVICE, SEARCH METHOD, AND COMPUTER PROGRAM
JP5664467B2 (en) SEARCH PROGRAM, SEARCH METHOD, SEARCH DEVICE, AND NODE
US20120239664A1 (en) Bit string search apparatus, search method, and program
JP5526987B2 (en) Management program, management apparatus, and management method
JP5526985B2 (en) Search program, search device, and search method
JP5526986B2 (en) Management program, management apparatus, and management method
KR101694179B1 (en) Method and apparatus for indexing based on removing vowel
JP2011257877A (en) Device and method for information retrieval, and program
JP5472929B2 (en) Document search apparatus, document search method, and document search program
JP5601123B2 (en) Transposed index generation method and generation apparatus for N-gram search, search method and search apparatus using the inverted index, and computer program
JP5582358B2 (en) Document search system, document search method, and program
JP2013156822A (en) Sequence data retrieval apparatus, sequence data retrieval method and program
JP5648360B2 (en) Character string search device, character string search method, and character string search program
KR101095580B1 (en) L-gram Indexing method
KR20170005428A (en) A method of searching text based on two computer hardware processing properties: indirect memory addressing and ascii encoding

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140120

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140331

R150 Certificate of patent or registration of utility model

Ref document number: 5526987

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees