JP6767825B2 - Data management equipment, data management methods, and data management programs - Google Patents
Data management equipment, data management methods, and data management programs Download PDFInfo
- Publication number
- JP6767825B2 JP6767825B2 JP2016182586A JP2016182586A JP6767825B2 JP 6767825 B2 JP6767825 B2 JP 6767825B2 JP 2016182586 A JP2016182586 A JP 2016182586A JP 2016182586 A JP2016182586 A JP 2016182586A JP 6767825 B2 JP6767825 B2 JP 6767825B2
- Authority
- JP
- Japan
- Prior art keywords
- identification information
- data
- determination table
- target data
- registered
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000013523 data management Methods 0.000 title claims description 41
- 238000000034 method Methods 0.000 title claims description 39
- 238000003491 array Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 description 21
- 239000013598 vector Substances 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 239000000284 extract Substances 0.000 description 3
- 238000000547 structure data Methods 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000005401 electroluminescence Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、データ管理装置、データ管理方法、およびデータ管理プログラムに関する。 The present invention relates to a data management device, a data management method, and a data management program.
従来、ウェブブラウザやメールソフトウェアなどにおいて、膨大な量のデータから所望のデータを検索する技術が利用されている(例えば、特許文献1参照)。このような技術では、検索対象のデータごとに検索済みまたは未検索といった情報をテーブルによって管理している。例えば、検索対象のデータに対して一対一に対応したビット配列のテーブルを用意しておき、検索対象のデータが既に検索したデータであるのか否かを評価する手法が知られている。また、C言語などで実装された既存のハッシュテーブルに検索したデータの識別子を登録することで、検索対象のデータが既に検索したデータであるのか否かを評価する手法が知られている。 Conventionally, a technique for searching a desired data from a huge amount of data has been used in a web browser, an email software, or the like (see, for example, Patent Document 1). In such a technology, information such as searched or unsearched is managed by a table for each data to be searched. For example, there is known a method of preparing a bit array table having a one-to-one correspondence with the data to be searched and evaluating whether or not the data to be searched is already searched data. Further, there is known a method of evaluating whether or not the data to be searched is the data that has already been searched by registering the identifier of the searched data in an existing hash table implemented in C language or the like.
従来の技術では、例えばビット配列のテーブルを利用する場合、検索対象のデータ数が増加するのに応じて、検索開始時にテーブルを初期化するのに要する時間が増加してしまう。 In the conventional technique, for example, when a bit array table is used, the time required to initialize the table at the start of the search increases as the number of data to be searched increases.
一方で、既存のハッシュテーブルを利用する場合、データの識別子同士をポインタで関連付けて管理するリスト構造のデータ構造を利用するため、データの取得に時間がかかってしまう。 On the other hand, when an existing hash table is used, it takes time to acquire the data because the data structure of the list structure that manages the data identifiers by associating them with pointers is used.
本発明は、上記の課題に鑑みてなされたものであって、膨大な量のデータからの検索を高速化することを目的としている。 The present invention has been made in view of the above problems, and an object of the present invention is to speed up a search from a huge amount of data.
本発明の一態様は、対象データに対する所定の処理の要否を判定するデータ管理装置であって、前記対象データの識別情報を記憶する領域を有する一次判定テーブルと、前記対象データの識別情報をリスト構造で記憶する二次判定テーブルと、前記対象データの識別情報を第1のハッシュ関数でハッシュ化したハッシュ値に対応する前記一次判定テーブルのアドレスに、識別情報の登録の有無を判定し、識別情報が登録されていないと判定された場合に、前記所定の処理を行うこととして、前記一次判定テーブルのアドレスに前記対象データの識別情報を登録し、前記対象データの識別情報が登録されていると判定された場合に、前記対象データに関する前記所定の処理を不要と判定し、前記登録判定部により前記二次判定テーブルに識別情報が登録されていると判定された場合、前記対象データの識別情報を第2のハッシュ関数でハッシュ化したハッシュ値をキーとして前記二次判定テーブルを参照し、前記所定の処理の要否を判定するデータ管理部と、を備えるデータ管理装置である。 One aspect of the present invention is a data management device that determines the necessity of predetermined processing for the target data, and uses a primary determination table having an area for storing the identification information of the target data and the identification information of the target data. Whether or not the identification information is registered is determined at the addresses of the secondary determination table stored in the list structure and the primary determination table corresponding to the hash value obtained by hashing the identification information of the target data with the first hash function. When it is determined that the identification information is not registered, the identification information of the target data is registered at the address of the primary determination table as the predetermined processing is performed, and the identification information of the target data is registered. If it is determined that the target data is present, it is determined that the predetermined processing related to the target data is unnecessary, and if the registration determination unit determines that the identification information is registered in the secondary determination table, the target data It is a data management device including a data management unit that refers to the secondary determination table using a hash value obtained by hashing identification information with a second hash function as a key, and determines the necessity of the predetermined processing.
本発明の一態様によれば、膨大な量のデータからの検索を高速化することができる。 According to one aspect of the present invention, it is possible to speed up a search from a huge amount of data.
以下、本発明を適用したデータ管理装置、データ管理方法、およびデータ管理プログラムを、図面を参照して説明する。 Hereinafter, a data management device, a data management method, and a data management program to which the present invention is applied will be described with reference to the drawings.
[概要]
データ管理装置は、一以上のプロセッサによって実現される。データ管理装置は、例えば、インターネット検索においてユーザが所望するデータを検索する際に、既に探索したデータとそうでないデータとを判別するためのデータ管理を行う装置である。
[Overview]
The data management device is realized by one or more processors. The data management device is, for example, a device that manages data for discriminating between already searched data and non-searched data when searching for data desired by a user in an Internet search.
(第1の実施形態)
[全体構成]
図1は、第1の実施形態におけるデータ管理装置100を中心とした構成図である。第1の実施形態におけるデータ管理装置100は、一以上のクライアント端末10とネットワークNWを介して接続される。クライアント端末10は、パーソナルコンピュータ、スマートフォンなどの携帯電話、タブレット端末などである。ネットワークNWは、無線基地局、公衆回線、専用回線、プロバイダ端末、インターネットなどを含む。ネットワークNWは、無線基地局、公衆回線、専用回線、プロバイダ端末、インターネットなどを含む。
(First Embodiment)
[overall structure]
FIG. 1 is a configuration diagram centered on the
データ管理装置100は、クライアント端末10からクエリデータを受信すると、クエリデータに類似するデータを検索し、検索結果のデータをクライアント端末10に返信する。クエリデータは、例えば、クライアント端末10において実行されるウェブブラウザの検索窓に入力されたキーワードや、データの検索条件を記述したデータなどである。データ管理装置100が返信するデータは、データそのもの(例えば拡張子がjpgなどの画像データ)であってもよいし、データを参照するための識別子(例えばURL(Uniform Resource Locator)など)であってもよい。また、クエリデータや検索の対象データは、画像データ、音声データ、テキストデータなど、如何なる種類のデータであってもよい。
When the
データ管理装置100は、例えば、ネットワークインターフェース102と、入出力装置104と、制御部110と、記憶部120と、データサーバ130とを備える。ネットワークインターフェース102は、例えば、NIC(Network Interface Card)である。
The
入出力装置104は、データ管理装置100の管理者による入力操作を受け付ける。例えば、入出力装置104は、マウスやキーボード、タッチパネルなどの入力装置と、LCD(Liquid Crystal Display)や有機EL(Electroluminescence)表示装置、スピーカなどの出力装置とを含む。
The input /
[制御部]
制御部110は、例えば、データオブジェクト生成部112と、インデックス検索部(データ管理部の一例)114とを備える。これらの制御部110の構成要素は、例えば、CPU(Central Processing Unit)などのプロセッサがプログラムを実行することにより実現される。また、これらの構成要素のうち一部または全部は、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、またはFPGA(Field-Programmable Gate Array)などのハードウェアによって実現されてもよいし、ソフトウェアとハードウェアが協働して実現されてもよい。なお、制御部110は、一つのプロセッサにより実現される必要はなく、機能ごとに分散処理を行ってもよい。例えば、データオブジェクト生成部112およびインデックス検索部114は、それぞれ別体のプロセッサにより実現されてもよい。
[Control unit]
The
データオブジェクト生成部112は、例えば、クライアント端末10などから受信した入力データに基づいて、入力データのオブジェクトを生成する。入力データが画像である場合、オブジェクトは、例えば、局所特徴量やBoF(Bag of Features)、色のヒストグラムなど、或いはこれらの組み合わせである。また、入力データがテキストデータである場合、オブジェクトは、例えば、単語の出現頻度のベクトルデータ、ニューラルネットワークを用いて抽出した意味ベクトル、或いは、他の単語と共に出現する頻度その他の相対関係に基づくベクトルなどである。オブジェクトは、オブジェクト間の距離が定義可能であれば、如何なるデータであってもよい。
The data
インデックス検索部114は、データサーバ130を検索し、データオブジェクト生成部112により生成されたオブジェクト(以下、新規オブジェクトと称する)に類似するオブジェクトを、既存データオブジェクト132から抽出する。データサーバ130には、例えば、既存データオブジェクト132と、グラフインデックス134とが格納される。グラフインデックス134は、オブジェクトを高速に検索するためのインデックスであり、エッジとオブジェクト(ノード)で構成されるグラフ構造のデータである。
The
データサーバ130は、HDDやフラッシュメモリなどの記憶装置により実現される。また、データサーバ130は、データ管理装置100からネットワークNWを介してアクセス可能なNAS(Network Attached Storage)装置などの外部記憶装置により実現されてもよい。
The
データサーバ130には、既存データオブジェクト132と、グラフインデックス134とが格納される。既存データオブジェクト132やグラフインデックス134は、データサーバ130からRAM(Random Access Memory)などの高速アクセス可能なメモリに展開(ロード)されて使用される。既存データオブジェクト132は、検索対象となるデータから生成されたオブジェクトである。既存データオブジェクト132には、その既存データオブジェクト132を生成する元となったデータ、或いはデータを参照する識別子が対応付けられている。データ管理装置100は、新規オブジェクトをクエリとして得られた既存オブジェクト、すなわち新規オブジェクトに類似するオブジェクトに対応付けられたデータ、或いはそのデータを参照する識別子をクライアント端末10に送信する。
The
図2は、既存データオブジェクト132の内容の一例を示す図である。図示するように、既存データオブジェクト132は、オブジェクトの識別情報(図中、オブジェクトID)に対して、オブジェクト(図ではベクトルデータ)、およびそのオブジェクトを生成する元となったデータ、或いはデータを参照する識別子が対応付けられたデータである。
FIG. 2 is a diagram showing an example of the contents of the existing
グラフインデックス134は、複数の既存ベクトルデータ132を接続するエッジに関する情報であり、既存ベクトルデータ134のうち任意の二つを接続する複数のエッジにより形成されるグラフ構造のデータである。グラフインデックス134に含まれるエッジは、例えば、双方向のエッジ(無向エッジ)である。図3は、グラフインデックス134の内容の一例を示す図である。図示するように、グラフインデックス134は、各エッジの識別情報であるエッジIDに対して、そのエッジが接続する両端の既存オブジェクトのオブジェクトIDが対応付けられたデータである。なお、オブジェクトは、双方向のエッジに代えて、一方向のエッジ(有向エッジ)で接続されてもよい。
The
以下、インデックス検索部114の処理について、より詳細に説明する。インデックス検索部114は、グラフインデックス134により規定されたエッジによって辿ることのできるオブジェクトのうち、新規オブジェクトに対する距離が短いものから順に所定数のオブジェクトを、新規オブジェクトに類似するオブジェクトとして抽出する。なお、グラフインデックス134が有向エッジで構成されている場合、インデックス検索部114は、参照元のオブジェクトから参照先のオブジェクトへの向きに従って辿ることのできるオブジェクトのうち、新規オブジェクトに対する距離が短いものから順に所定数のオブジェクトを、新規オブジェクトに類似するオブジェクトとして抽出する。オブジェクト間の距離とは、例えば、オブジェクトがベクトルである場合、ベクトル要素間の差分についてLpノルム(p=1、2、…)を求めたものと定義される。
Hereinafter, the processing of the
また、インデックス検索部114は、グラフインデックス134により規定されたエッジによって辿ることのできるオブジェクトのうち、新規オブジェクトに対して既定の距離以内にあるオブジェクトを、新規オブジェクトに類似するオブジェクトとして抽出してもよい。そして、インデックス検索部114は、既存データオブジェクト132において、抽出したオブジェクトに対応付けられているデータまたはその識別子を、ネットワークインターフェース102およびネットワークNWを介してクライアント端末10に送信する。
Further, the
図4は、インデックス検索部114による検索処理の内容を模式的に示す図である。まず、インデックス検索部114は、グラフ構造(グラフインデックス)G、新規オブジェクトq、検索範囲rを入力する(S100)。次に、インデックス検索部114は、グラフ構造Gからランダムにオブジェクトの集合Sを生成する(S102)。
FIG. 4 is a diagram schematically showing the content of the search process by the
次に、インデックス検索部114は、出力データとなる集合Rをクリアする(S104)。次に、インデックス検索部114は、集合Sに含まれるオブジェクトのうち、最も新規オブジェクトqに近いオブジェクトを選択し、オブジェクトsとし(S106)、集合Sからオブジェクトsを除外する(S108)。
Next, the
次に、インデックス検索部114は、オブジェクトsと新規オブジェクトqとの距離が検索半径rを超えるか否かを判定する(S110)。オブジェクトsと新規オブジェクトqとの距離が検索半径rを超えない場合、インデックス検索部114は、オブジェクトsの近傍オブジェクト集合N(G,s)からオブジェクトを一つ選択し、オブジェクトoとする(S112)。そして、インデックス検索部114は、オブジェクトoが集合Cに含まれるか否かを判定する(S114)。集合Cは、重複選択を回避するために設定される集合であり、このフローチャートの処理の開始時または終了時にデータが削除される。
Next, the
オブジェクトoが集合Cに含まれない場合、インデックス検索部114は、オブジェクトoと新規オブジェクトqとの距離が検索半径r以下であるか否かを判定する(S118)。オブジェクトoと新規オブジェクトqとの距離が検索半径r以下である場合、オブジェクトoを集合Sと集合Rのそれぞれに入れる(S120)。オブジェクトoと新規オブジェクトqとの距離が検索半径rを超える場合、S120の処理はスキップされる。また、S114においてオブジェクトoが集合Cに含まれると判定された場合、S116〜S120の処理はスキップされる。
When the object o is not included in the set C, the
次に、インデックス検索部114は、オブジェクトsの近傍オブジェクト集合N(G,s)から全てのオブジェクトを選択したか否かを判定する(S122)。オブジェクトsの近傍オブジェクト集合N(G,s)から全てのオブジェクトを選択していない場合、S112に処理が戻される。
Next, the
オブジェクトsの近傍オブジェクト集合N(G,s)から全てのオブジェクトを選択した場合、インデックス検索部114は、集合Sが空集合であるか否かを判定する(S124)。集合Sが空集合でない場合、S106に処理が戻される。
When all the objects are selected from the neighboring object set N (G, s) of the object s, the
S124において集合Sが空集合であると判定された場合、またはS110においてオブジェクトsとqの距離が検索半径rを超えると判定された場合、インデックス検索部114は、集合Rを出力する(S126)。この集合Rに含まれるオブジェクトが、新規オブジェクトに類似するオブジェクトである。なお、ここで説明した検索処理の内容は、あくまで一例であり、他の手法により検索処理が行われてもよい。
When it is determined in S124 that the set S is an empty set, or when it is determined in S110 that the distance between the objects s and q exceeds the search radius r, the
ここで、インデックス検索部114は、S114において、S116で集合Cに入れ、且つS118で距離を計算したオブジェクトであるか否かを判定するために、記憶部120に格納された一次判定テーブル122および二次判定テーブルを使用して、「既に距離を計算したオブジェクト」であるか否かを判定する。記憶部120は、例えば、RAMやフラッシュメモリなどの読み書き可能なメモリによって実現される。
Here, the
図5は、一次判定テーブル122のデータ構造の一例を示す図である。一次判定テーブル122は、一次元の配列構造を有するテーブルであり、メモリ領域における固定アドレスに格納されるテーブルである。一次判定テーブル122を分割した各領域には、それぞれ、オブジェクトIDを第1のハッシュ関数でハッシュ化して得られるハッシュ値が対応付けられている。図では、各領域を代表して示す情報として、開始アドレスを例示している。それぞれのハッシュ値に対応する領域には、ハッシュ値の元となったオブジェクトのオブジェクトIDと、二次判定テーブル124にデータが格納されているか否かを示すフラグとが格納される。第1のハッシュ関数は、例えば、オブジェクトIDを2nで除算した剰余を求める関数である。これを実現するために、インデックス検索部114は、例えば、入力データのバイナリ列の下位nビットをハッシュ値として利用することで、実際に演算を行うよりも高速に処理を行うことができる。第1のハッシュ関数がオブジェクトIDを2nで除算した剰余を求める関数である場合、図中のN=2nである。例えば、Nが、既存ベクトルデータ132の全データ数の1/10程度の値に設定されると好適である。
FIG. 5 is a diagram showing an example of the data structure of the primary determination table 122. The primary determination table 122 is a table having a one-dimensional array structure, and is a table stored at a fixed address in the memory area. Each area obtained by dividing the primary determination table 122 is associated with a hash value obtained by hashing the object ID with the first hash function. In the figure, the start address is illustrated as information showing each area as a representative. In the area corresponding to each hash value, the object ID of the object that is the source of the hash value and the flag indicating whether or not the data is stored in the secondary determination table 124 are stored. The first hash function is, for example, a function for obtaining a remainder obtained by dividing an object ID by 2 n . In order to realize this, the
インデックス検索部114は、既に距離を計算したか否かを判断する対象として着目するオブジェクト(以下、着目オブジェクト)について「新規オブジェクトとの距離を計算したか否か」を判定する際に、まず、着目オブジェクトのオブジェクトID(以下、着目ID)をハッシュ化したハッシュ値に対応するアドレスに、着目IDが格納されている(登録されている)か否かを判定する。着目IDが格納されている場合、インデックス検索部114は、着目オブジェクトについて「新規オブジェクトとの距離を計算した」と判定する。
The
着目IDが格納されていない場合、インデックス検索部114は、着目オブジェクトからのハッシュ値に対応するアドレスに、他のオブジェクトのオブジェクトIDが格納されているか否かを判定する。他のオブジェクトのオブジェクトIDが格納されていない場合(すなわち何も格納されていない場合)、インデックス検索部114は、着目オブジェクトについて「新規オブジェクトとの距離を計算していない」と判定する。この場合、インデックス検索部114は、着目オブジェクトと新規オブジェクトとの距離を計算すると共に、着目IDを、着目オブジェクトからのハッシュ値に対応するアドレスに書き込む。
When the object ID of interest is not stored, the
一方、インデックス検索部114は、着目オブジェクトからのハッシュ値に対応するアドレスに、他のオブジェクトのオブジェクトIDが格納されている場合、一次判定テーブル122のフラグを参照し、二次判定テーブル124に、第1のハッシュ関数によって同じハッシュ値が導出される(ハッシュ衝突する)一つ以上のオブジェクトIDが格納されているか否かを判定する。例えば、フラグ値が1であれば、一つ以上のオブジェクトIDが二次判定テーブル124に格納されている(ハッシュ衝突が起こっている)ことを示し、フラグ値が0であれば、オブジェクトIDが格納されていない(ハッシュ衝突が起こっていない)ことを示す。
On the other hand, when the object ID of another object is stored in the address corresponding to the hash value from the object of interest, the
従って、フラグ値が0であれば、インデックス検索部114は、着目オブジェクトについて「新規オブジェクトとの距離を計算していない」と判定する。この場合、インデックス検索部114は、着目オブジェクトと新規オブジェクトとの距離を計算すると共に、二次判定テーブル124における着目IDを第2のハッシュ関数(後述)でハッシュ化したハッシュ値に対応した領域に、着目IDを書き込む。また、フラグ値が1であれば、インデックス検索部114は、二次判定テーブル124を参照して、着目オブジェクトについて「新規オブジェクトとの距離を計算したか否か」を判定する。
Therefore, if the flag value is 0, the
図6は、二次判定テーブル124のデータ構造の一例を示す図である。二次判定テーブル124は、第2のハッシュ関数により導出されるハッシュ値のとり得る値分の一次元の配列構造のデータ格納領域(図中、配列部分)を有すると共に、リスト構造のデータ格納領域(図中、リスト部分)を有する。配列部分には、リスト部分の先頭のアドレス(リンク先)が格納されている。第2のハッシュ関数は、例えば、入力データから、Nよりも十分に小さいM個のハッシュ値のいずれかを導出する関数である。なお、第2のハッシュ関数は、例えば、オブジェクトIDのバイナリ列の下位mビットをハッシュ値として利用する関数である(n>m)。 FIG. 6 is a diagram showing an example of the data structure of the secondary determination table 124. The secondary determination table 124 has a one-dimensional array structure data storage area (array portion in the figure) for the possible value of the hash value derived by the second hash function, and has a list structure data storage area. (List part in the figure). The address (link destination) at the beginning of the list part is stored in the array part. The second hash function is, for example, a function for deriving any of M hash values sufficiently smaller than N from the input data. The second hash function is, for example, a function that uses the lower m bits of the binary string of the object ID as a hash value (n> m).
二次判定テーブル124のリスト部分には、オブジェクトIDが順次登録されていく。リスト部分にオブジェクトIDが登録されている場合、例えば、配列部分におけるオブジェクトIDに続く末尾部分には、次に参照すべきリスト部分のアドレスが格納されている。この関係を、ポインタによって次に参照すべきアドレスが示されていると称する。図中、矢印はポインタを示している。 Object IDs are sequentially registered in the list portion of the secondary determination table 124. When the object ID is registered in the list part, for example, the address of the list part to be referred to next is stored in the end part following the object ID in the array part. This relationship is referred to as the pointer indicating the address to be referenced next. In the figure, the arrow indicates a pointer.
インデックス検索部114は、二次判定テーブル124を参照し、ポインタを辿りながら着目IDが格納されているか否かを判定する。いずれかの時点で着目IDが格納されている場合、インデックス検索部114は、着目オブジェクトについて「新規オブジェクトとの距離を計算した」と判定する。
The
一方、ポインタを辿って最後の領域まで到達した場合、インデックス検索部114は、着目オブジェクトについて「新規オブジェクトとの距離を計算していない」と判定する。なお、インデックス検索部114は、次に参照すべきリスト部分のアドレスが格納されていないデータが出現した場合に、「最後の領域まで到達した」と判定する。この場合、インデックス検索部114は、着目オブジェクトのオブジェクトIDを任意のアドレスに格納すると共に、直前の領域に対して、着目オブジェクトのオブジェクトIDを格納したアドレスを示すポインタを追加する。
On the other hand, when the pointer is traced to reach the last area, the
図7および図8は、インデックス検索部114により実行される、新規オブジェクトとの距離を計算したか否かを判定する処理の流れの一例を示すフローチャートである。
7 and 8 are flowcharts showing an example of a flow of processing executed by the
まず、インデックス検索部114は、一次判定テーブル122と二次判定テーブル124のデータを消去(クリア)する(S200)。
First, the
次に、インデックス検索部114は、着目IDを第1のハッシュ関数でハッシュ化する(S202)。次に、インデックス検索部114は、一次判定テーブル122を参照し(S204)、S202で求めたハッシュ値に対応するアドレスにデータが登録されているか否かを判定する(S206)。S202で求めたハッシュ値に対応するアドレスにデータが登録されていない場合、一次判定テーブルに着目IDを登録し(S208)、着目オブジェクトについて「新規オブジェクトとの距離を計算していない」と判定し(S210)、本フローチャートの処理を終了する。
Next, the
S206において、S202で求めたハッシュ値に対応するアドレスにデータが格納されていると判定した場合、インデックス検索部114は、S202で求めたハッシュ値に対応するアドレスに着目IDが登録されているか否かを判定する(S212)。S202で求めたハッシュ値に対応するアドレスに着目IDが登録されている場合、インデックス検索部114は、着目オブジェクトについて「新規オブジェクトとの距離を計算した」と判定し(S214)、本フローチャートの処理を終了する。
When it is determined in S206 that the data is stored in the address corresponding to the hash value obtained in S202, the
S202で求めたハッシュ値に対応するアドレスに着目IDが登録されていない場合、(以下、図8)インデックス検索部114は、一次判定テーブル122における、S202で求めた第1のハッシュ関数によるハッシュ値に対応する領域に付与されたフラグが1であるか0であるかを判定する(S216)。フラグが0である場合、インデックス検索部114は、着目IDを第2のハッシュ関数でハッシュ化し(S218)、二次判定テーブル124に着目IDを登録する(S224)。この際に、インデックス検索部114は、二次判定テーブル124の配列部分における、S218で得られたハッシュ値に対応する領域に、着目IDを登録したアドレスを示すポインタを付与しておく。そして、インデックス検索部114は、(以下、図7)着目オブジェクトについて「新規オブジェクトとの距離を計算していない」と判定して(S210)、本フローチャートの処理を終了する。
When the attention ID is not registered in the address corresponding to the hash value obtained in S202 (hereinafter, FIG. 8), the
一方、フラグが1である場合、インデックス検索部114は、着目IDを第2のハッシュ関数でハッシュ化し(S220)、S220で求めたハッシュ値に対応するアドレスからポインタを順次辿った先に着目IDが登録されているか否かを判定する(S222)。ポインタを順次辿った先に着目IDが登録されていない場合、インデックス検索部114は、S224以下の処理を行う。ポインタを順次辿った先に着目IDが登録されている場合、インデックス検索部114は、(以下、図7)着目オブジェクトについて「新規オブジェクトとの距離を計算した」と判定し(S214)、本フローチャートの処理を終了する。
On the other hand, when the flag is 1, the
以上説明した第1の実施形態によれば、一次元の配列構造を有する一次判定テーブル122と、一次元の配列構造およびリスト構造を有する二次判定テーブル124とが格納される記憶部120と、着目オブジェクト(対象データ)について新規オブジェクトとの距離を計算したか否かを判定する際に、一次判定テーブル122における、着目IDを第1のハッシュ関数でハッシュ化したハッシュ値に対応するアドレスに、着目IDまたは他のオブジェクトのオブジェクトIDが登録されているか否かを判定し、それらのいずれかが登録されていない場合、そのアドレスに着目IDを登録し、着目IDが登録されている場合、着目オブジェクトについて新規オブジェクトとの距離を計算したと判定し、他のオブジェクトのオブジェクトIDが登録されている場合、着目オブジェクトのオブジェクトIDを第2のハッシュ関数でハッシュ化したハッシュ値をキーとして二次判定テーブル122を参照するインデックス検索部122と、を備えることにより、高速処理を実現することができる。
According to the first embodiment described above, the
ここで、配列構造のみ、またはリスト構造のみで上記と同様の判定を行うものとの比較について説明する。 Here, a comparison with a case where the same determination as above is performed only with the sequence structure or the list structure will be described.
仮に、一次判定テーブル122の配列数を、例えば既存データオブジェクト132に含まれるオブジェクトの数と同じだけ用意した場合、リスト構造においてポインタを辿る処理が不要となる。このため、新規オブジェクトを既に選択したか否かを判定する処理自体は高速に行うことができるが、図7のS200で示した「データを消去する処理」に要する時間が長くなってしまい、検索処理全体に要する時間が長くなってしまう。
If the number of arrays in the primary determination table 122 is prepared to be the same as the number of objects included in the existing
一方、リスト構造のみで同様の判定を行う場合、ハッシュ衝突が起きていないオブジェクトについてもポインタを辿る処理が発生するため、一つ一つの判定処理に要する時間が長くなってしまう。また、ハッシュ衝突が起きる度にポインタが追加されるので、判定処理に要する時間が更に長くなってしまう。 On the other hand, when the same determination is made only with the list structure, the process of tracing the pointer occurs even for the object in which the hash collision does not occur, so that the time required for each determination process becomes long. Further, since the pointer is added every time a hash collision occurs, the time required for the determination process becomes longer.
通常、検索処理の対象となる範囲(探索範囲)は、グラフインデックス134全体に対して限られた範囲内である。従って、探索範囲に相当する配列数の配列構造を設定しておけば、判定処理に要する時間は十分に短縮することができる。この部分が一次判定テーブル122に相当する。二次判定テーブル124を使用することで処理時間は長くなってしまうが、一次判定テーブル122の配列数に余裕を持たせておけば、ハッシュ衝突の起きる可能性を小さくすることができ、全体として検索処理を高速化することができる。
Usually, the target range (search range) of the search process is a limited range with respect to the
なお、一次判定テーブル122は、一段の配列構造を有するものとして説明したが、多段の配列構造を有するようにしてもよい。図9は、一次判定テーブル122の他の例を示す図である。この場合、オブジェクトIDは、一段目が空いていれば一段目に、一段目が空いておらず二段目が空いていれば二段目に格納され、二段目も空いていない場合に二次判定テーブル124が参照される。 Although the primary determination table 122 has been described as having a one-stage array structure, it may have a multi-stage array structure. FIG. 9 is a diagram showing another example of the primary determination table 122. In this case, the object ID is stored in the first stage if the first stage is empty, in the second stage if the first stage is not empty and the second stage is empty, and second if the second stage is also empty. The next determination table 124 is referred to.
また、「一次判定テーブル122のそれぞれのエントリに、二次判定テーブル124にデータが格納されているか否かを示すフラグを付与する」ものとしたが、このフラグの付与を省略し、インデックス検索部114は、一次判定テーブル122に着目ID以外のオブジェクトのIDが格納されている場合、二次判定テーブル124の最初のデータを参照して、二次判定テーブル124にデータが格納されているか否かを確認してもよい。 In addition, "a flag indicating whether or not data is stored in the secondary judgment table 124 is added to each entry of the primary judgment table 122", but the addition of this flag is omitted and the index search unit is used. When the ID of the object other than the attention ID is stored in the primary determination table 122, 114 refers to the first data of the secondary determination table 124 and determines whether or not the data is stored in the secondary determination table 124. May be confirmed.
また、データ管理装置100が既に実行したか否かを判定する「所定の処理」は、グラフ構造のデータを用いたデータ検索処理において、対象データを検索対象のノードとして、クエリに対応するノード(新規オブジェクト)との距離を計算する処理に限らず、他の種類の処理であってもよい。
Further, the "predetermined process" for determining whether or not the
以上、本発明を実施するための形態について実施形態を用いて説明したが、本発明はこうした実施形態に何ら限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。 Although the embodiments for carrying out the present invention have been described above using the embodiments, the present invention is not limited to these embodiments, and various modifications and substitutions are made without departing from the gist of the present invention. Can be added.
10…クライアント端末、100…データ管理装置、102…ネットワークインターフェース、104…入出力装置、110…制御部、112…データオブジェクト生成部、114…インデックス検索部、120…記憶部、122…一次判定テーブル、124…二次判定テーブル、130…データサーバ、132…既存ベクトルデータ、134…グラフインデックス 10 ... Client terminal, 100 ... Data management device, 102 ... Network interface, 104 ... Input / output device, 110 ... Control unit, 112 ... Data object generation unit, 114 ... Index search unit, 120 ... Storage unit, 122 ... Primary judgment table , 124 ... Secondary judgment table, 130 ... Data server, 132 ... Existing vector data, 134 ... Graph index
Claims (11)
前記対象データの識別情報を記憶する領域を有する一次判定テーブルと、
前記対象データの識別情報をリスト構造で記憶する二次判定テーブルと、
前記対象データの識別情報を第1のハッシュ関数でハッシュ化したハッシュ値に対応する前記一次判定テーブルのアドレスに、識別情報の登録の有無を判定し、
識別情報が登録されていないと判定された場合に、前記所定の処理を行うこととして、前記一次判定テーブルのアドレスに前記対象データの識別情報を登録し、
前記対象データの識別情報が登録されていると判定された場合に、前記対象データに関する前記所定の処理を不要と判定し、
前記二次判定テーブルに識別情報が登録されていると判定された場合、前記対象データの識別情報を第2のハッシュ関数でハッシュ化したハッシュ値をキーとして前記二次判定テーブルを参照し、前記所定の処理の要否を判定するデータ管理部と、
を備えるデータ管理装置。 A data management device that determines the necessity of predetermined processing for target data.
A primary determination table having an area for storing the identification information of the target data, and
A secondary judgment table that stores the identification information of the target data in a list structure,
Whether or not the identification information is registered is determined at the address of the primary determination table corresponding to the hash value obtained by hashing the identification information of the target data with the first hash function.
When it is determined that the identification information is not registered, the identification information of the target data is registered in the address of the primary determination table as the predetermined processing is performed.
When it is determined that the identification information of the target data is registered, it is determined that the predetermined processing related to the target data is unnecessary.
When it is determined that the identification information is registered in the secondary determination table, the secondary determination table is referred to by using the hash value obtained by hashing the identification information of the target data with the second hash function as a key. A data management unit that determines the necessity of predetermined processing,
A data management device equipped with.
請求項1記載のデータ管理装置。 The data management unit refers to a flag stored in the primary determination table, which indicates whether or not the identification information is stored in the secondary determination table, and whether the identification information is registered in the secondary determination table. Judge whether or not
The data management device according to claim 1.
請求項1または2記載のデータ管理装置。 The data management unit sequentially traces the address indicated by the pointer stored in the address of the secondary determination table corresponding to the hash value obtained by hashing the identification information of the target data with the second hash function. It is determined whether or not the identification information of the target data is registered in the secondary determination table.
The data management device according to claim 1 or 2.
請求項3記載のデータ管理装置。 When the identification information of the target data is registered in the secondary determination table, the data management unit determines that the predetermined processing is necessary.
The data management device according to claim 3.
請求項1から4のうちいずれか1項記載のデータ管理装置。 The number of possible values of the hash value obtained by the first hash function is larger than the number of possible values of the hash value obtained by the second hash function.
The data management device according to any one of claims 1 to 4.
請求項1から5のうちいずれか1項記載のデータ管理装置。 The first hash function is a function whose hash value is the lower n bits of the binary string of the input data.
The data management device according to any one of claims 1 to 5.
請求項1から6のうちいずれか1項記載のデータ管理装置。 The primary determination table has a plurality of one-dimensional array structures.
The data management device according to any one of claims 1 to 6.
請求項1から7のうちいずれか1項に記載のデータ管理装置。 The predetermined process is a process of calculating the distance to a node corresponding to a query by using the target data as a search target node in a data search process using graph-structured data.
The data management device according to any one of claims 1 to 7.
請求項8記載のデータ管理装置。 The number of arrays in the primary determination table is set to a value of about 1/10 of the number of nodes to be searched.
The data management device according to claim 8.
前記対象データの識別情報を第1のハッシュ関数でハッシュ化したハッシュ値に対応する前記一次判定テーブルのアドレスに、識別情報の登録の有無を判定し、
識別情報が登録されていないと判定された場合に、前記所定の処理を行うこととして、前記アドレスに前記対象データの識別情報を登録し、
前記対象データの識別情報が登録されていると判定された場合に、前記対象データに関する前記所定の処理を不要と判定し、
前記二次判定テーブルに識別情報が登録されていると判定された場合、前記対象データの識別情報を第2のハッシュ関数でハッシュ化したハッシュ値をキーとして前記二次判定テーブルを参照し、前記所定の処理の要否を判定する、
データ管理方法。 It has a primary determination table having an area for storing the identification information of the target data and a secondary determination table for storing the identification information of the target data in a list structure, and determines the necessity of predetermined processing for the target data. Data management device
Whether or not the identification information is registered is determined at the address of the primary determination table corresponding to the hash value obtained by hashing the identification information of the target data with the first hash function.
When it is determined that the identification information is not registered, the identification information of the target data is registered at the address as the predetermined processing is performed.
When it is determined that the identification information of the target data is registered, it is determined that the predetermined processing related to the target data is unnecessary.
When it is determined that the identification information is registered in the secondary determination table, the secondary determination table is referred to by using the hash value obtained by hashing the identification information of the target data with the second hash function as a key. Judging the necessity of a predetermined process,
Data management method.
前記対象データの識別情報を第1のハッシュ関数でハッシュ化したハッシュ値に対応する前記一次判定テーブルのアドレスに、識別情報の登録の有無を判定させ、
識別情報が登録されていないと判定された場合に、前記所定の処理を行うこととして、前記アドレスに前記対象データの識別情報を登録させ、
前記対象データの識別情報が登録されていると判定された場合に、前記対象データに関する前記所定の処理を不要と判定させ、
前記二次判定テーブルに識別情報が登録されていると判定された場合、前記対象データの識別情報を第2のハッシュ関数でハッシュ化したハッシュ値をキーとして前記二次判定テーブルを参照し、前記所定の処理の要否を判定させる、
データ管理プログラム。 It has a primary determination table having an area for storing the identification information of the target data and a secondary determination table for storing the identification information of the target data in a list structure, and determines the necessity of predetermined processing for the target data. To the data management device
The address of the primary determination table corresponding to the hash value obtained by hashing the identification information of the target data with the first hash function is made to determine whether or not the identification information is registered.
When it is determined that the identification information is not registered, the identification information of the target data is registered at the address by performing the predetermined process.
When it is determined that the identification information of the target data is registered, the predetermined processing relating to the target data is determined to be unnecessary.
When it is determined that the identification information is registered in the secondary determination table, the secondary determination table is referred to by using the hash value obtained by hashing the identification information of the target data with the second hash function as a key. Lets determine the necessity of predetermined processing,
Data management program.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016182586A JP6767825B2 (en) | 2016-09-20 | 2016-09-20 | Data management equipment, data management methods, and data management programs |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016182586A JP6767825B2 (en) | 2016-09-20 | 2016-09-20 | Data management equipment, data management methods, and data management programs |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018049315A JP2018049315A (en) | 2018-03-29 |
JP6767825B2 true JP6767825B2 (en) | 2020-10-14 |
Family
ID=61767616
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016182586A Active JP6767825B2 (en) | 2016-09-20 | 2016-09-20 | Data management equipment, data management methods, and data management programs |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6767825B2 (en) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5051061B2 (en) * | 2008-08-20 | 2012-10-17 | 富士通株式会社 | Information retrieval device |
WO2014155668A1 (en) * | 2013-03-29 | 2014-10-02 | 株式会社 東芝 | Storage system for eliminating data duplication on basis of hash table, storage controller, and method |
-
2016
- 2016-09-20 JP JP2016182586A patent/JP6767825B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2018049315A (en) | 2018-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2015202478B2 (en) | Combining internal and external search results | |
US9237190B2 (en) | Node and method for generating shortened name robust against change in hierarchical name in content-centric network (CCN) | |
US9087111B2 (en) | Personalized tag ranking | |
TWI524193B (en) | Computer-readable media and computer-implemented method for semantic table of contents for search results | |
US11341761B2 (en) | Revealing content reuse using fine analysis | |
US10268655B2 (en) | Method, device, server and storage medium of searching a group based on social network | |
CN108256718B (en) | Policy service task allocation method and device, computer equipment and storage equipment | |
CN109948122B (en) | Error correction method and device for input text and electronic equipment | |
US8032550B2 (en) | Federated document search by keywords | |
CN111026765A (en) | Dynamic processing method, equipment, storage medium and device for strictly balanced binary tree | |
WO2015165230A1 (en) | Social contact message monitoring method and device | |
CN110120918B (en) | Identification analysis method and device | |
JP6767825B2 (en) | Data management equipment, data management methods, and data management programs | |
CN110955822B (en) | Commodity searching method and device | |
KR101592670B1 (en) | Apparatus for searching data using index and method for using the apparatus | |
JP6739379B2 (en) | Information processing apparatus, information processing method, program, and advertisement information processing system | |
US20170180511A1 (en) | Method, system and apparatus for dynamic detection and propagation of data clusters | |
JP6333306B2 (en) | SEARCH DATA MANAGEMENT DEVICE, SEARCH DATA MANAGEMENT METHOD, AND SEARCH DATA MANAGEMENT PROGRAM | |
JP2017004500A (en) | Analysis assistance method, analysis assistance program, and analysis assistance device | |
JP5308199B2 (en) | Document search system | |
JP2011227655A (en) | Information retrieval system, information retrieval method, and program | |
EP2654269B1 (en) | Node and method for generating shortened name robust against change in hierarchical name in content-centric network (CCN) | |
JP6300982B2 (en) | SEARCH DATA MANAGEMENT DEVICE, SEARCH DATA MANAGEMENT METHOD, AND SEARCH DATA MANAGEMENT PROGRAM | |
JP5477139B2 (en) | Information search system, information search method and program | |
JPWO2011122572A1 (en) | Grouping device, grouping program, and grouping method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190325 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20191101 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20191108 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200225 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200310 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200420 |
|
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: 20200915 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200918 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6767825 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |