JP2006099524A - データ構造およびデータ検索方法 - Google Patents

データ構造およびデータ検索方法 Download PDF

Info

Publication number
JP2006099524A
JP2006099524A JP2004286099A JP2004286099A JP2006099524A JP 2006099524 A JP2006099524 A JP 2006099524A JP 2004286099 A JP2004286099 A JP 2004286099A JP 2004286099 A JP2004286099 A JP 2004286099A JP 2006099524 A JP2006099524 A JP 2006099524A
Authority
JP
Japan
Prior art keywords
record
data
index
bit string
pointer
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.)
Pending
Application number
JP2004286099A
Other languages
English (en)
Inventor
Akira Kondo
亮 近藤
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.)
NEC Communication Systems Ltd
Original Assignee
NEC Communication Systems 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 NEC Communication Systems Ltd filed Critical NEC Communication Systems Ltd
Priority to JP2004286099A priority Critical patent/JP2006099524A/ja
Publication of JP2006099524A publication Critical patent/JP2006099524A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

【課題】 チェイン付きハッシュ法によるデータ検索を高速化する。
【解決手段】 ハッシュ表11とチェイン付きインデックス12と実データファイル13とを有するデータ構造であって、ハッシュ表11は検索キーのハッシュ値を構成するビット列の一部分である部分ビット列が指すアドレスにチェイン付きインデックス12へのポインタhpを保持し、ポインタhpが指すチェイン付きインデックスのレコードIRに、検索キーのハッシュ値を構成するビット列の残りのビット列が上位ハッシュ値uhとして保持されている。
【選択図】 図2

Description

本発明はデータ検索に関し、特にチェイン付きハッシュ法によるデータ検索およびそれに好適なデータ構造に関する。
検索キーに基づくデータ検索を高速に行えるデータ構造として、ハッシュ法が知られている。ハッシュ法は、チェイン付きハッシュ法とオープンハッシュ法とに大別され、一般に同じハッシュ値となる検索キーの数が多い、つまりキー衝突が多い場合には、チェイン付きハッシュ法が採用されている。
従来のチェイン付きハッシュ法は、全体集合UからZm={0,1,…,m−1}へのハッシュ関数を用いて、集合Uの部分集合Sをm本のチェイン(リスト)と、そのチェインへのポインタを格納するサイズmのハッシュ表Hからなる構造で管理する。検索キーをx、そのハッシュ値をH[h(x)]とすると、xによる検索はH[h(x)]で指されるリストを走査すればよく、xの挿入はH[h(x)]で指されるリストに挿入すればよく、xの削除はH[h(x)]で指されるリストからxを削除すればよい。ただし、実データを二次記憶装置にファイルとして格納する場合には、チェインから実データを取り除き、チェイン付きインデックスから実データファイルのレコードをポイントする構成が採用される。
チェイン付きハッシュ法によるデータ検索を高速化するには、キー衝突自体を減らすか、キー衝突時の処理を高速化する必要がある。ハッシュ演算結果のビット数を増大してハッシュ表のエントリ数を増加させると、1つのチェインに繋がるデータ数が少なくなるので、キー衝突自体を減らすことができる。しかし、ハッシュ表のサイズが指数関数的に拡大するため、メモリの制限から、増やすにしても1〜2ビット程度が限度である。このため、キー衝突した際の処理をいかに高速化するかが重要である。
チェイン付きハッシュ法におけるキー衝突時の高速化手法の一例が特許文献1に記載されている。この特許文献1では、チェイン付きインデックス内のチェインポインタに、実データファイルのデータが持つ登録キーの情報を示す識別子を付加する。具体的には登録キーの文字コード列に含まれる各文字コードの下位1バイトと0080Hの論理和のバイト列を識別子として付加する。そして、検索キーに基づくデータ検索時には、検索キーからハッシュ値を求め、そのハッシュ値をアドレスとしてハッシュ表からチェイン付きインデックスのチェインポインタをアクセスし、そのチェインポインタに付加されている上記識別子と、検索キーから同様に求めた識別子、つまり検索キーの文字コード列に含まれる各文字コードの下位1バイトと0080Hの論理和のバイト列との一致をチェックし、若し一致すればデータポインタが指し示す実データを検索データとして読み込む。
ハッシュを用いたデータ検索技術に関する他の文献として、特許文献2および特許文献3があるが、これらの文献はチェイン付きハッシュ法に関するものではなく、またキー衝突時における処理高速化を図る技術ではない。
特開平5−28194号公報 特開平9−91303号公報 特開2000−90115号公報
チェイン付きハッシュ法におけるキー衝突時の高速化手法として特許文献1に記載された方法が知られているが、この特許文献1記載の技術では、検索キーからハッシュ値を求める計算以外に、検索キーから識別子を求める計算、具体的には検索キーの文字コード列に含まれる各文字コードの下位1バイトと0080Hの論理和のバイト列を求める計算が必要になる。このため、検索を行う際の計算量が増加し、高速な検索が困難になるという課題がある。
本発明の目的は、チェイン付きハッシュ法によるデータ検索を高速に行えるようにすることにある。
本発明の第1のデータ構造は、ハッシュ表とチェイン付きインデックスと実データファイルとを有するデータ構造であって、前記ハッシュ表は検索キーのハッシュ値を構成するビット列の一部分である部分ビット列が指すアドレスに前記チェイン付きインデックスへのポインタを保持し、該ポインタが指す前記チェイン付きインデックスのレコードに、前記検索キーのハッシュ値を構成するビット列の残りのビット列の全部あるいは一部を保持することを特徴とする。
本発明の第2のデータ構造は、第1のデータ構造において、前記チェイン付きインデックスのレコードに、前記部分ビット列が同じになる他のインデックスレコードを指すインデックスポインタと、前記実データファイルのレコードへのポインタとを保持し、前記実データファイルのレコードに、登録キーと、実データと、前記ハッシュ値が同じになる他のデータレコードを指すポインタとを保持することを特徴とする。
本発明の第3のデータ構造は、第1または第2のデータ構造において、前記チェイン付きインデックスのレコードに、自レコードに保持された前記ハッシュ値にかかるビット列が前記ハッシュ値のどのビット位置のビット列であるかを示すビット位置情報を保持することを特徴とする。
本発明の第1のデータ検索方法は、a)検索キーからハッシュ値を計算するステップ、b)ハッシュ表における前記ハッシュ値を構成するビット列の一部分である部分ビット列が指すアドレスに保持されたポインタを取得するステップ、c)前記取得したポインタが指すチェイン付きインデックスのインデックスレコードを処理対象インデックスレコードとするステップ、d)前記処理対象インデックスレコードに保持されたビット列と、前記ハッシュ値を構成するビット列の残りのビット列の全部あるいは一部とを比較するステップ、e)前記ステップdで比較一致した場合に前記インデックスレコードに保持された実データポインタが指す実データファイルのデータレコードを処理対象データレコードとするステップ、f)前記処理対象データレコードに保持された登録キーと前記検索キーとを比較するステップ、を含むことを特徴とする。
本発明の第2のデータ検索方法は、第1のデータ検索方法において、前記ステップfで比較不一致した場合、前記処理対象データレコードに保持された次ポインタが指すデータレコードを次の処理対象データレコードとして前記ステップfを繰り返すことを特徴とする。
本発明の第3のデータ検索方法は、第1または第2のデータ検索方法において、前記ステップdで比較不一致した場合、前記処理対象インデックスレコードに保持されたインデックスポインタが指すインデックスレコードを次の処理対象インデックスレコードとして前記ステップdを繰り返すことを特徴とする。
本発明の第4のデータ検索方法は、第1、第2または第3のデータ検索方法において、前記ステップdにおいては、前記処理対象インデックスレコードに保持されたビット列と、前記ハッシュ値を構成するビット列の残りのビット列のうち前記処理対象インデックスレコードに保持されたビット位置情報が示すビット列とを比較することを特徴とする。
『作用』
本発明にあっては、ハッシュ表は、検索キーのハッシュ値を構成するビット列の一部分である部分ビット列が指すアドレスにチェイン付きインデックスへのポインタを保持し、そのポインタが指すチェイン付きインデックスのレコードに、検索キーのハッシュ値を構成するビット列の残りのビット列の全部あるいは一部を保持するため、ハッシュ表の同じアドレスを引くこととなる複数の異なる検索キーであっても、ハッシュ値のビット列のうちハッシュ表のアドレスとして使用していない残りのビット列に相違があれば、チェイン付きインデックス上のハッシュビット列の比較により区別することができる。また、検索キーのハッシュ値の一部をチェイン付きインデックス上に保持するため、特許文献1のようにハッシュ演算とは別に識別子のための特別な演算を行う必要がない。
本発明によれば、チェイン付きハッシュ法によるデータ検索を高速化することができる。その理由は、ハッシュ表の同じアドレスを引くこととなる複数の異なる検索キーであっても、ハッシュ値のビット列のうちハッシュ表のアドレスとして使用していないビット列に相違があれば、チェイン付きインデックス上のハッシュビット列の比較により区別することができるからであり、かつ、特許文献1のようにハッシュ演算とは別に識別子のための特別な演算を行う必要がないからである。
『第1の実施の形態』
次に本発明のデータ構造およびデータ検索方法をルータ装置に適用した場合の実施の形態について図面を参照して説明する。
図1を参照すると、本実施の形態にかかるルータ装置20は、イーサネット(登録商標)などのネットワークから転送対象パケットを含むフレームを送受信するインタフェース部であるファイ/マック(PHY/MAC)21、26と、パケットのルーティングプロトコル(OSPFなど)を制御する制御部22と、処理過程のパケットや制御情報など高速に処理することが必要な情報を格納するRAMなどの高速メモリ24と、大量のデータやプログラムなどを記憶する磁気ディスクなどの低速メモリ25と、パケットの転送処理を行う転送装置23とを含んで構成される。
転送装置23では、入力されたパケットが転送可能なパケットかどうかを判断するために、入力されたパケットの情報と低速メモリ25に予め登録されているパケット情報とを比較する。例えば、送信元IPアドレスや送信先IPアドレス或いはその組み合わせ又はそれらの一部毎に、それらのアドレスを持つパケットの取り扱いを記述したアクションデータを低速メモリ25に保持し、入力されたパケットの送信元IPアドレスや送信先IPアドレス或いはその組み合わせ又はそれらの一部に一致するアクションデータを低速メモリ25から検索し、そのアクションデータに従った転送制御を実施する。本実施の形態では、転送装置23におけるこのようなデータ検索に対して、本発明のデータ構造およびデータ検索方法を適用する。
図2に本実施の形態にかかるデータ構造の例を示す。この例のデータ構造は、ハッシュ表11とチェイン付きインデックス12と実データファイル13とから構成される。このうち、ハッシュ表11とチェイン付きインデックス12は、高速メモリ24に記憶され、実データファイル13は、低速メモリ25に記憶される。
ハッシュ表11は、オフセットアドレス0x00〜0xffを持ち、各オフセットアドレス0x00〜0xffの箇所にチェイン付きインデックス12へのポインタhpを保持する。ポイントするインデックスがない箇所のポインタhpはNULLである。
チェイン付きインデックス12は、ハッシュ表11のポインタhpによってポイントされる箇所毎に、少なくとも1つのインデックスレコードIRから構成されるインデックスレコードのチェインが設けられている。1つのインデックスレコードIRは、実データポインタrp、上位ハッシュ値uhおよびインデックスポインタipを保持する。
実データポインタrpは、実データファイル13へのポインタである。上位ハッシュ値uhは、ハッシュ値の上位4ビットの値である。ハッシュ値の下位4ビットは、前述したオフセットアドレス0x00〜0xffである。従って、ハッシュ値は合計8ビットである。インデックスポインタipは、インデックスレコードのチェインにおける次のインデックスレコードIRへのポインタである。次のインデックスレコードIRが存在しない場合、インデックスポインタipはNULLである。
実データファイル13は、チェイン付きインデックス12の実データポインタrpによってポイントされる箇所毎に、少なくとも1つのデータレコードDRから構成されるデータレコードのチェインが設けられている。1つのデータレコードDRは、登録キーrk、アクションデータadおよび次ポインタnpを保持する。
登録キーrkは、例えば12ビットで構成される。登録キーrkに所定のハッシュ演算を施して求めた8ビットのハッシュ値の上位4ビットが、この登録キーrkを持つデータレコードのチェインをポイントするインデックスレコードIRに上位ハッシュ値uhとして保持され、このインデックスレコードをポインタするハッシュ表11のオフセットアドレスが前記ハッシュ値の下位4ビットとなる。アクションデータadは、登録キーrkと一致する検索キーを持つパケットに対して施すべき処理、つまり転送装置23がそのパケットに行うべき動作方法を示す。次ポインタnpは、データレコードのチェインにおける次のデータレコードDRへのポインタである。次のデータレコードDRが存在しない場合、次ポインタnpはNULLである。
図3は本実施の形態にかかるデータ検索の処理例を示すフローチャートである。図3に示される処理は、転送装置23に含まれるCPUによって実行される。転送装置23に含まれるCPUにそのような処理を行わせるプログラムは、高速メモリ24あるいは低速メモリ25に記憶され、実行時にCPUによって読み取られる。以下、図1乃至図3を参照して本実施の形態の動作を説明する。
転送装置23は、ファイ/マック21から入力した転送対象パケットについて、その取り扱い方法を調べるために、例えば、転送対象パケットの送信元IPアドレス、送信先IPアドレス或いはその組み合わせ、またはその一部分を検索キーkkとして、図3に示されるデータ検索処理を開始する。ここでは、検索キーkkは12ビットの値である。
まず転送装置23は、検索キーkkに所定のハッシュ演算を施して、8ビットのハッシュ値hを求める(ステップS101)。次に転送装置23は、ハッシュ値hの下位4ビットをオフセットアドレスとしてハッシュ表11をアクセスし、チェイン付きインデックス11へのポインタhpを取得する(ステップS102)。
次に転送装置23は、ポインタhpが指すチェイン付きインデックス12のインデックスレコードIDを処理対象インデックスレコードとし(ステップS103)、ハッシュ値hの上位4ビットと処理対象インデックスレコード中の上位ハッシュ値uhとを比較する(ステップS104)。双方が一致した場合(ステップS105でYES)、ステップ108へ処理を進める。双方が異なる場合(ステップS105でNO)、処理対象インデックスレコードのインデックスポインタipがNULLであれば(ステップS106でYES)、検索に失敗したのでデータ不一致とし、NULLでなければ(ステップS106でNO)、インデックスポインタipが指すインデックスレコードIDを処理対象インデックスレコードとし(ステップS107)、ステップS104に戻って上述した処理と同様の処理を繰り返す。
ステップS108において転送装置23は、処理対象インデックスレコードIDの実データポインタrpが指す実データファイル13のデータレコードDRを処理対象データレコードとする。次に転送装置23は、検索キーkkと処理対象データレコードDRに記録された登録キーrkとを比較する(ステップS109)。双方が一致した場合(ステップS110でYES)、処理対象データレコードDRに記録されたアクションデータadを読み出し(ステップS113)、データ検索の処理を終える。双方が異なる場合(ステップS110でNO)、処理対象データレコードの次ポインタnpがNULLであれば(ステップS111でYES)、検索に失敗したのでデータ不一致とし、NULLでなければ(ステップS111でNO)、次ポインタnpが指すデータレコードDRを処理対象データレコードとし(ステップS112)、ステップS108に戻って上述した処理と同様の処理を繰り返す。
図4に検索キー0xabcと検索キー0xffcによる検索時の様子を示す。図4では、検索キー0xabcと検索キー0xffcをハッシュ演算した結果が、それぞれ、0xbcと0xfcとなり、オフセットアドレスとして下位の4ビットを使用するようにしているため、ハッシュ表11の同じオフセットアドレス0xcという値になっている。このようにハッシュ表11のオフセットアドレスが同じになる検索キー0xabcと検索キー0xffcは、キー衝突しているため、一般的なハッシュ法では実データファイル13上の登録キーを読み出して比較する必要がある。しかし、本実施の形態では、チェイン付きインデックス12内にハッシュ演算結果の上位の4ビットが格納されているため、検索キーから計算したハッシュ値の上位4ビットと格納されている上位ハッシュ値を比較することにより、実データファイル上の登録キーと比較する前に、候補を絞り込むことができる。
具体的には、検索キー0xabcによる検索時、そのハッシュ値の上位4ビットは0xbであり、下位4ビット0xcをオフセットアドレスとしてハッシュ表11をアクセスして得られるチェイン付きインデックス12のインデックスレコード中の上位ハッシュ値0xbと一致するため、このインデックスレコード中の実データポインタでポイントされている実データファイル13のデータレコードのチェインを走査すればよい。他方、検索キー0xffcによる検索時は、そのハッシュ値の上位4ビットは0xfであり、下位4ビット0xcをオフセットアドレスとしてハッシュ表11をアクセスして得られるチェイン付きインデックス12のインデックスレコード中の上位ハッシュ値0xbとは相違するが、このインデックスレコード中のインデックスポインタが指す次のインデックスレコード中の上位ハッシュ値が0xfで一致するため、そのインデックスレコード中の実データポインタでポイントされている実データファイル13のデータレコードのチェインを走査すればよい。そして、何れの場合も、すでにチェイン付きインデックス上で候補を絞り込んでいるため、データレコードのチェインにおける検索数は少なくて済むことになる。
次に本実施の形態の効果を説明する。
本実施の形態では、ハッシュ表11は、検索キーのハッシュ値を構成する8ビットのうちの下位4ビットが指すオフセットアドレスにチェイン付きインデックス12へのポインタhpを保持し、そのポインタhpが指すチェイン付きインデックスのレコードIDに、検索キーのハッシュ値を構成する8ビットのうちの上位4ビットを保持しているため、ハッシュ表11の同じオフセットアドレスを引くこととなる複数の異なる検索キーであっても、ハッシュ値のビット列のうちハッシュ表のアドレスとして使用していない残りのビット列に相違があれば、チェイン付きインデックス12上の上位ハッシュ値の比較により区別することができ、キー衝突時の処理の高速化が可能である。また、検索キーのハッシュ値の一部をチェイン付きインデックス12上に保持するため、特許文献1のようにハッシュ演算とは別に識別子のための特別な演算を行う必要がない。このように、チェイン付きインデックス12中にオフセットアドレスに使用していないハッシュ演算結果の一部を置き、チェイン付きインデックス12上でハッシュ演算値を比較することにより、衝突した検索キーを高速に検索比較することができる。
また、実データファイル13のデータレコードに登録キーrkと次ポインタnpを持ち、検索キーと登録キーrkとが一致するデータレコードを検索するので、検索キーに一致する登録キーを持つデータを正確に検索することが可能である。
このように高速なデータ検索が可能になり、また低速メモリ25上の実データファイル13へのアクセス回数が低減するため、本実施の形態にかかるルータ装置の性能(パケットのスループットなど)を向上させることができる。
『第2の実施の形態』
第1の実施の形態では、検索キーのハッシュ値の一部をハッシュ表のオフセットアドレスに使用し、残りの全ビットをチェイン付きインデックスに保持するようにしたが、本実施の形態では、残りの全ビットのうちの一部をチェイン付きインデックスに保持する。
本実施の形態のデータ構造は、第1の実施の形態のデータ構造と比較して、チェイン付きインデックスのインデックスレコードの構成が相違し、その他は第1の実施の形態のデータ構造と同じである。
図5を参照すると、本実施の形態のデータ構造におけるチェイン付きインデックスを構成するインデックスレコードIRは、上位ハッシュ値uhの代わりに、部分ハッシュ値bhおよびビット位置情報ssを保持する点で第1の実施の形態におけるインデックスレコードと相違する。
部分ハッシュ値bhは、検索キーのハッシュ値を構成するビット列のうち、ハッシュ表のオフセットアドレスに使用したビット列を除くビット列の任意の1ビットあるいは数ビットである。ハッシュ値を構成するビット列のどのビットが部分ハッシュ値bhであるかは、ビット位置情報ssで示される。例えば、ハッシュ値を16ビットとし、その下位4ビットをハッシュ表のオフセットアドレスに使用し、残りの12ビットのうち、或るインデックスレコードIRにおいては上位4ビットだけを部分ハッシュ値bhとして使う場合、ビット位置情報ssには、上位4ビットを示す、bit#<15−12>といったデータが設定される。
本実施の形態の場合、図3のステップS104において、転送装置23は、処理対象インデックスレコード中のビット位置情報ssを参照して、ハッシュ値のビット列のうち、ビット位置情報ssで指定されるビット列を、部分ハッシュ値bhと比較する。
次に本実施の形態の効果を説明する。
本実施の形態によれば、第1の実施の形態と同様の効果が得られるのに加えて、チェイン付きインデックスに保持する部分ハッシュ値を検索キー毎に設定できる効果がある。キー衝突をより低減するためにハッシュ値のビット列を8ビットから16ビットに拡大すると、第1の実施の形態では上位ハッシュ値uhが4ビットから12ビットに増加し、インデックスレコードIRのサイズが拡大するが、若し、12ビットのうちで上位4ビットで相違があれば、本実施の形態ではこの4ビットだけを部分ハッシュ値bhとして設定することで同様の効果が得られる。
以上本発明の実施の形態について説明したが、本発明は以上の実施の形態にのみ限定されず、その他各種の付加変更が可能である。例えば、本発明のデータ構造およびデータ検索方法はチェイン付きハッシュ法一般に適用可能であり、上記実施の形態に示したルータ装置だけに限定されず、各種の辞書システムやデータベースシステムにおけるデータ構造およびデータ検索に適用可能である。
また以上の実施の形態では、データ検索のみ説明したが、データ構造へのデータの挿入、データ構造からのデータの削除を同時に実施するシステムに対しても適用可能である。この場合、データの挿入時は、実データファイル13へのデータレコードの追加以外にチェイン付きインデックス12へのインデックスレコードの追加が必要になる場合があり、データの削除時は、実データファイル13からのデータレコードの削除以外にチェイン付きインデックス12からのインデックスレコードの削除が必要になる場合がある。従って、チェイン付きインデックス12の1つのインデックスレコードの読み出しに2度アクセスが必要になる場合には、アクセスとアクセスの間に違う書き込みが入った場合にコヒーレンシ(データの整合性)がとれなくなってしまう問題が発生するため、2度のアクセス間に書き込みが入らないようにメモリのアクセスロックを行う必要がある。ただし、インデックスレコードのサイズをCPUが1度に読み出すことのできるサイズ(例えば64ビットを1度にリード可能なCPUであれば64ビット)に納めることにより、アクセスロックを行う必要はなく、チェイン付きインデックスの管理が容易になる。
本発明のデータ構造およびデータ検索方法を適用したルータ装置のブロック図である。 本発明の第1の実施の形態のデータ構造を示す図である。 本発明の第1の実施の形態にかかるデータ検索の処理例を示すフローチャートである。 本発明の第1の実施の形態にかかるデータ検索における検索キー0xabcと検索キー0xffcによる検索時の様子を示す図である。 本発明の第2の実施の形態にかかるデータ構造におけるチェイン付きインデックスを構成するインデックスレコードの構成図である。
符号の説明
11…ハッシュ表
12…チェイン付きインデックス
13…実データファイル

Claims (11)

  1. ハッシュ表とチェイン付きインデックスと実データファイルとを有するデータ構造であって、前記ハッシュ表は検索キーのハッシュ値を構成するビット列の一部分である部分ビット列が指すアドレスに前記チェイン付きインデックスへのポインタを保持し、該ポインタが指す前記チェイン付きインデックスのレコードに、前記検索キーのハッシュ値を構成するビット列の残りのビット列の全部あるいは一部を保持することを特徴とするデータ構造。
  2. 前記チェイン付きインデックスのレコードに、前記部分ビット列が同じになる他のインデックスレコードを指すインデックスポインタと、前記実データファイルのレコードへのポインタとを保持し、前記実データファイルのレコードに、登録キーと、実データと、前記ハッシュ値が同じになる他のデータレコードを指すポインタとを保持することを特徴とする請求項1記載のデータ構造。
  3. 前記チェイン付きインデックスのレコードに、自レコードに保持された前記ハッシュ値にかかるビット列が前記ハッシュ値のどのビット位置のビット列であるかを示すビット位置情報を保持することを特徴とする請求項1または2記載のデータ構造。
  4. a)検索キーからハッシュ値を計算するステップ、
    b)ハッシュ表における前記ハッシュ値を構成するビット列の一部分である部分ビット列が指すアドレスに保持されたポインタを取得するステップ、
    c)前記取得したポインタが指すチェイン付きインデックスのインデックスレコードを処理対象インデックスレコードとするステップ、
    d)前記処理対象インデックスレコードに保持されたビット列と、前記ハッシュ値を構成するビット列の残りのビット列の全部あるいは一部とを比較するステップ、
    e)前記ステップdで比較一致した場合に前記インデックスレコードに保持された実データポインタが指す実データファイルのデータレコードを処理対象データレコードとするステップ、
    f)前記処理対象データレコードに保持された登録キーと前記検索キーとを比較するステップ、
    を含むことを特徴とするデータ検索方法。
  5. 前記ステップfで比較不一致した場合、前記処理対象データレコードに保持された次ポインタが指すデータレコードを次の処理対象データレコードとして前記ステップfを繰り返すことを特徴とする請求項4記載のデータ検索方法。
  6. 前記ステップdで比較不一致した場合、前記処理対象インデックスレコードに保持されたインデックスポインタが指すインデックスレコードを次の処理対象インデックスレコードとして前記ステップdを繰り返すことを特徴とする請求項4または5記載のデータ検索方法。
  7. 前記ステップdにおいては、前記処理対象インデックスレコードに保持されたビット列と、前記ハッシュ値を構成するビット列の残りのビット列のうち前記処理対象インデックスレコードに保持されたビット位置情報が示すビット列とを比較することを特徴とする請求項4、5または6記載のデータ検索方法。
  8. コンピュータに下記の処理を行わせるためのプログラム。
    a)検索キーからハッシュ値を計算するステップ
    b)ハッシュ表における前記ハッシュ値を構成するビット列の一部分である部分ビット列が指すアドレスに保持されたポインタを取得するステップ
    c)前記取得したポインタが指すチェイン付きインデックスのインデックスレコードを処理対象インデックスレコードとするステップ
    d)前記処理対象インデックスレコードに保持されたビット列と、前記ハッシュ値を構成するビット列の残りのビット列の全部あるいは一部とを比較するステップ
    e)前記ステップdで比較一致した場合に前記インデックスレコードに保持された実データポインタが指す実データファイルのデータレコードを処理対象データレコードとするステップ
    f)前記処理対象データレコードに保持された登録キーと前記検索キーとを比較するステップ
  9. 前記ステップfで比較不一致した場合、前記処理対象データレコードに保持された次ポインタが指すデータレコードを次の処理対象データレコードとして前記ステップfを繰り返すことを特徴とする請求項8記載のプログラム。
  10. 前記ステップdで比較不一致した場合、前記処理対象インデックスレコードに保持されたインデックスポインタが指すインデックスレコードを次の処理対象インデックスレコードとして前記ステップdを繰り返すことを特徴とする請求項8または9記載のプログラム。
  11. 前記ステップdにおいては、前記処理対象インデックスレコードに保持されたビット列と、前記ハッシュ値を構成するビット列の残りのビット列のうち前記処理対象インデックスレコードに保持されたビット位置情報が示すビット列とを比較することを特徴とする請求項8、9または10記載のプログラム。
JP2004286099A 2004-09-30 2004-09-30 データ構造およびデータ検索方法 Pending JP2006099524A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004286099A JP2006099524A (ja) 2004-09-30 2004-09-30 データ構造およびデータ検索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004286099A JP2006099524A (ja) 2004-09-30 2004-09-30 データ構造およびデータ検索方法

Publications (1)

Publication Number Publication Date
JP2006099524A true JP2006099524A (ja) 2006-04-13

Family

ID=36239256

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004286099A Pending JP2006099524A (ja) 2004-09-30 2004-09-30 データ構造およびデータ検索方法

Country Status (1)

Country Link
JP (1) JP2006099524A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013097592A (ja) * 2011-11-01 2013-05-20 Nec Corp クライアント装置、サーバ装置、通信システム、及び通信方法
CN111190930A (zh) * 2019-12-29 2020-05-22 杭州拓深科技有限公司 融合哈希和分块的消防设备历史数据定位系统及定位方法
WO2021183228A1 (en) * 2020-03-09 2021-09-16 Microsoft Technology Licensing, Llc Searching for a hash string stored in an indexed array

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0528194A (ja) * 1991-07-23 1993-02-05 Fuji Xerox Co Ltd データアクセス方式
JP2001357071A (ja) * 2000-04-06 2001-12-26 Internatl Business Mach Corp <Ibm> ネットワーク・プロセッサ用の完全一致(fm)サーチ・アルゴリズムの実装

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0528194A (ja) * 1991-07-23 1993-02-05 Fuji Xerox Co Ltd データアクセス方式
JP2001357071A (ja) * 2000-04-06 2001-12-26 Internatl Business Mach Corp <Ibm> ネットワーク・プロセッサ用の完全一致(fm)サーチ・アルゴリズムの実装

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013097592A (ja) * 2011-11-01 2013-05-20 Nec Corp クライアント装置、サーバ装置、通信システム、及び通信方法
CN111190930A (zh) * 2019-12-29 2020-05-22 杭州拓深科技有限公司 融合哈希和分块的消防设备历史数据定位系统及定位方法
CN111190930B (zh) * 2019-12-29 2023-11-28 杭州拓深科技有限公司 融合哈希和分块的消防设备历史数据定位系统及定位方法
WO2021183228A1 (en) * 2020-03-09 2021-09-16 Microsoft Technology Licensing, Llc Searching for a hash string stored in an indexed array
US11354270B2 (en) 2020-03-09 2022-06-07 Microsoft Technology Licensing, Llc Searching for a hash string stored in an indexed array

Similar Documents

Publication Publication Date Title
US9465860B2 (en) Storage medium, trie tree generation method, and trie tree generation device
JP4879580B2 (ja) ユーザ・インタフェースに自動探索メニューを与えるシステムおよび方法
US6754799B2 (en) System and method for indexing and retrieving cached objects
WO2011004846A1 (ja) 情報検索システム、情報管理装置、情報検索方法、情報管理方法、及び、記録媒体
EP1508864A2 (en) Apparatus and method for searching data of structured document
JP2004172917A (ja) パケット検索装置及びそれに用いるパケット処理検索方法並びにそのプログラム
Awad et al. Chaotic searchable encryption for mobile cloud storage
WO2009067915A1 (fr) Procede d&#39;identification d&#39;un type de service correspondant a un message et dispositif associe
WO2022148055A1 (zh) 一种文件检索方法及计算设备
CN111538724A (zh) 管理索引的方法
CN111858678A (zh) 基于Redis的key值删除方法、计算机设备、装置和存储介质
CN109150962B (zh) 一种通过关键字快速识别http请求头的方法
JP2000324172A (ja) アドレスに関するプレフィクスの格納方法
JP3868171B2 (ja) 文書のデジタル署名付き管理方法および文書管理装置
CN117390029B (zh) 一种表项插入方法、装置、电子设备及存储介质
JP2006099524A (ja) データ構造およびデータ検索方法
JP2011133928A (ja) 記憶装置に記憶してある文書ファイルを検索する検索装置、検索システム、検索方法及びコンピュータプログラム
US8199756B2 (en) Forwarding apparatus, forwarding method, and computer product
CN112910894A (zh) 一种实现策略的快速匹配的方法
JPH1040255A (ja) ハッシュ表管理装置
CN116962321B (zh) 数据包传输方法、传输配置方法、装置、设备及介质
US20050060314A1 (en) System and methods involving a data structure searchable with O(logN) performance
CN111353018A (zh) 基于深度包检测的数据处理方法、装置和网络设备
US8166018B2 (en) Browsing a list of data items
CN111211966A (zh) 一种用于存储聊天工具中传输文件的方法及系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070810

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090610

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090610

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100302

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100629