JPH02231675A - データを構成、管理又は検索するための方法及び装置 - Google Patents

データを構成、管理又は検索するための方法及び装置

Info

Publication number
JPH02231675A
JPH02231675A JP2019393A JP1939390A JPH02231675A JP H02231675 A JPH02231675 A JP H02231675A JP 2019393 A JP2019393 A JP 2019393A JP 1939390 A JP1939390 A JP 1939390A JP H02231675 A JPH02231675 A JP H02231675A
Authority
JP
Japan
Prior art keywords
vector
key
value
information
entry
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
JP2019393A
Other languages
English (en)
Other versions
JPH0748220B2 (ja
Inventor
Todd A Smith
トツド・アレン・スミス
Robert John Urquhart
ロバート・ジヨン・アークハート
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH02231675A publication Critical patent/JPH02231675A/ja
Publication of JPH0748220B2 publication Critical patent/JPH0748220B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables

Landscapes

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

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 A.産業上の利用分野 本発明はデータ処理システム中K記憶されたデータの検
索に関し、さらに詳しくはスペース効率ハツシュ検索テ
ーブルを用いてキーにより認識されるテーブル・エント
リの検索方法に関する。
B.従来技術および解決課題 データ処理プログラム情報の多くの部分は後の使用のた
めに記憶あるいは分離されている。この情報はデータ処
理プログラムによって処理される対象として、例えばカ
スタマ、サプライア等の名前がついている。検索テーブ
ルは情報記憶のためのデータ構造としてよく使われる。
第4図および第5図に見られるようにテーブル10はエ
ントリ16を有し、各エントリはキー12を有する。キ
ー12に加え、各エントリは分離された追加情報を持つ
。第4図,第5図の実施例においてはキー12としてラ
ストネームを持ち、追加情報として対応の電話番号を持
つ。すなわち、キー12に対するデータ14である。検
索テーブルにおいて実行される基本的な処理Kは次のよ
うなものがある。
I NS ERT  テーブル中に新しいエントリを挿
入DELETE  テーブル●エントリの削除FIND
  与えられたキーによってすべての(又は1つの)エ
ントリを発見 これらの用語は本説明において通常使用されるものとし
て扱うが、他のシステムでは同様の処理を異なる用語で
行うこともある。
FINDがINSERTあるいはDELETEよりも頻
繁に使用される環境においては、検索テーブルは非常に
有用である。というのはF I ND処理はINSER
TあるいはDELETE処理に比較して非常に早く処理
できるからである。さらに、FINDは検索テーブルの
基本的処理であり、INSERTおよびDELETEは
多くの場合、必ずしも必要ではない。
多ぐのデータ病造においては、効率的な情報検索の問題
はアドレスである。第4図に示すように、最も単純な検
索テーブル構造はリスト中にエントリを順番に配列した
ものである。このようなテーブル10の検索は各工冫ト
リを初めから所定のキー12が見つかるまで順次確かめ
るものである。
これは不要なエン} IJを見る必要が.1,時間のか
かる結果となる。N個のエンlのテーブルでは、目的の
ものを探すのに平均N/2のエントリを確かめなければ
ならない。さらに、所定のキーがテーブル中に存在しな
い場合にはすべてO,Nエントリを確認する必要がある
。この構成にも調書が無いわけではない。これはシンプ
ルであり、スペースの無駄がなく、エントリ・サイズの
N倍のスペースを使用する。シーケンシャル検索テーフ
ルのサーチをスピードアップする方法もある。
例えば「テーブルmサーテ処理」″I BM Tech
nicalDisclosure Bulletin,
 Vol. 17, No.4,September 
 1984,page 964−965”である。しか
し、検索時間はテーブルの大きさNに比例するという問
題は解決されない。
検索テーブルの検索効率を高める方法として、シーケン
シャル―テーブルの記憶データをキーの順序に上から順
に、あるいは下から順にソートすることである。例えば
、第2図に示すようにデータ14をキー12のラストネ
ームのアルファベット順に上から配列する。テーブルが
このように構成されていれば、検索対象となる所定のキ
ー以降については検索必要のないことが確信できる。従
って、エントリ発見に要する時間は平均でN/2となシ
、テーブル中に所定のキーがないことを確認するのに要
する時間もN/2となる。この検索方法はソート●リニ
ア・サーチと以下呼ぶ。
このようなソート・シーケンシャル検索テーブルを用い
て、検索速度を高めることはできる。この検索技術を2
進サーチと呼ぶ。この2進サーチの使用により、FIN
D処理の効率は大きく高められる。2進サーチの間、テ
ーフルeエントリの並びは維持される。検索キーはこの
レンジにあるかもしれないし、このテーブルには無いか
もしれない。最初、このレンジはすべてのデーブルをカ
バーする。2進サーチのかくステップの間、このレンジ
の中間が確かめられる。これが対象キーであれば値その
時点で検索は完了する。そうでなけれは、中間のキーと
検索対象キーの比較結果に基づいて、中間エントリを上
側値又は下側に調整する。次に、新しいレンジにおいて
、中間エン} IJを確かめる。
かくステップにおいて、レンジは2分されるこの処理は
レンジに残りのテーブル・エントリがなくなるか、所望
のキーが見つかるまで続けられる。
各ステップにおいてレンジのエントリ数は半分に削減さ
れる。従って、サーチはlogNに比例して終息する。
この検索テーブル構成はコンパクトであり、エントリの
N倍に比例したスペースを必要とするのみである。しか
し、これはINSERT%DELEATE処理が実行さ
れるごとにエントリの再構成を必要とする。先K述べた
ように、FIND処理を最大限に利用することが重要で
ある。2進サーチ手法については「テーブル検索」″’
 IBM Technical Disclosure
 Bulletin,Vol. 14, No. 10
, March  1 972”に記載されている。
さらに高速の検索テーブル構成は「ハツシング」を使用
したものである。このハツシングを基本としたテーブル
においてはテーブル中にエントリを入れる際の第1ステ
ップはエントリ・キーをハッシュすることである。これ
はキーに対してハッシュ機能,すなわちキーによって0
からM−1のランダムな値を応答する機能を付与するこ
とを含む。
ここでMはテーブルのエントリ数の最大値である。
良好なハツシュ機能は2つの似たキーに対して全く異な
る値を生成する。例えば、挿入されるエントリに対して
Hのノ・ツシュ値が得られると、エントリはHによって
識別される位置、あるいはそれに続く位置であいている
部分に挿入される。重要なFIND処理は検索キーのハ
ツシング、その位置におけるテーブルのサーチを始める
ことによって素早く実行される。同じインデックスに複
数のキーがハツシュしている場合は複数のサーチが必要
となる。テーブル・エントリの10〜2096を未使用
状態にしておけば、2番目のサーテ総量はメモリの使用
を最小にしたものにできる。このハツシュ検索テーブル
方法は、テーブルが完全に埋まった状況でない限シにお
いては従来の2進サーチ技術よりも速いFIND処理を
達成する。
ハツシュ●ベース検索テーブルの例を第6A〜第6J図
の解放アドレス・ハツシュ検索テーブル11として示す
。テーブル11は0から11の12、すなわちM−1の
エントリを持つ。エントリ数は第65図に示すようにデ
ータ14よりも20%多い。ハツシュ●ペース検索テー
ブル11は、例えばキー12のラストネームをハツシュ
するために以下のハツシュ関数13を適用する。
ハツシュ関数 f(A)−1,f(B)=2,...f(Z)=26h
ash (”ABC”)=(f (A )+f ( B
 )+t (c ) )mod 12このハツシュ関数
の意味はラストネームの各々にアルファベットに対応す
る1から26までの数字を付与することである。ラスト
ネームの各々に数値が与えられる。加算値が11K達し
たら、また0から11を繰シ返す。このラストネーム1
2のハツシュ関数の結果は第6K図に示す。
テーブルへのデータ14の挿入は以下のようにして実行
される。最初に[JohnsonJがハツシュされ、第
6A図に示すようにテーブル11の位Djt11にデー
タ14とともに挿入される。同様に、次に続くネームと
データがテーブル11に、以下のように挿入される。B
acklundが8番目の位置(第6B図)%Smit
hが9番目の位置(第6C図)、Qossが0番目の位
置(第6D図)、Bledsoeが2番目の位置(第6
E図)、Olsonが3番目の位置(第6F図)、であ
る。[TurnerJのハツシュ関数結果は0であり、
この場合は0番に続くあいているスペースに入る。Go
ssが0番を占めているので、第6G図に示すように次
の1番のスペースに入る。同様にWilsonはハツシ
ュ関数結果が第6K図に示すようにBucklundと
同じ8である。Smithが9番目を占めているので、
8番に続く最初の空きスペースは第6H図に示すように
10番目の位置となる。次にNashのハツシュ関数結
果は6となる。Nashは第6I図のごとく、そのデー
タとともに6番目に挿入される。最後にハツシュ関数は
Morgan に適用され、値8が得られる。Back
loundがすでに8の値を持っているので、8番に続
く空きスペースを捜す。9番、10番、11番はすでに
Smith1Wilson%Johsonによって占有
されているので、ここから0に戻って捜すこととなる。
0番、1番、2番、3番もGoss%Turner%B
ledsoe1Qlsonによって占有されているので
8番に続く最初の空きスペースは第65図に示すように
4番となる。
第65図において,FIND処理は以下のように実行さ
れる。検索のキーがSmithであるとすると、ハツシ
ュ関数がSmithに適用され、結果9を生成する。F
IND処理は即座にキーSmithおよび対応データを
捜すために9番目の位置に行く。同様に、Morgan
 がキーである場合はノ・ツシュ関数がMorgan 
に適用され、8が産出される。しかし、FIND処理が
8番目に直行しても、そこには検索キーはない。追加サ
ーチがキーMargan を検索するために、8番目の
位置から始められる。
第7A〜75図に同じノ’%ツシュを有するテープk 
t7)異なるハツシュ構成リンク・エントリを示す。
この方法ではエントリのM個のリンク・リストが保持さ
れる。検索キーが第7Aに示すように0〜M−1の範囲
にハツシュされる。所望のキーを有するエントリをサー
チするために対応リンク・リストが検索される。この方
法を使用したエントリの検索に要する時間は平均N/(
2M)である。
これはリストにおいてもノ・ツシュ関数がNエントリに
負献するからである。しかし、速度はアップするが、こ
の方法はリストの次のエントリへのリンクをホールドす
るために各エントリに追加スペースが必要となる。
第7A〜7J図はり冫ク・ノ1ツシュ検索テーブルによ
る方法を示したものである。この例では第7A図におけ
る各キー12は以下に示すノ・ツシュ関数によってノ・
ツシュされる。
ハツシュ関数 f(A)=1,f(B)=2,...f(Z)=26h
ash(″’ABC”)=(f (A)+f (B)+
f(C))mod10このハツシュ関数から得られた値
は第7A図13に示す。Johnsonのノ1ツシュ値
は5であり、エントリのリンク拳リスト18の5番目の
エントリは0である。従って、キーJohnaonおよ
び関連データは第7B図のテーブル17の0番の位置に
ある。同様に、Baeklundのノ1ツシュ値は8で
あり、リンク・リストの8番目のエントリは1であるの
で、キーBacklundおよび関連データは第7C図
のテーブル17の1番の位置にある。
このプロセスがSmith,Goss%Bledsoe
と第7Ds 7E、7F図に示すように進行する。しか
し、Olsonはノ・ツシュ値が5となシ、0番の位置
にあるJohnaonと同様Kなる。従って、0番の位
置において、5を有するり冫ク15がOのハッシュ値の
Qlsonに対して5番目の位置を提供する(第7G図
、テーブル17参照)。同様に、Wil’gonのハツ
シュ値も第7A図に示すようにBledsoeと同じ2
となる。リンク・リスト18の2番目の位置はBled
soeによってテーブル17の4番目の位置が占められ
ている4番目の位置のリンク15は7の値を持ち、第7
H図K示すようにこの位置にW目son を見つけるこ
とができる。同様に,Naahも値2を持ち、リンク・
リスト18の2番は、位置4のBledsoeによって
占められ、この4番の位置はWilson に対応する
リンク値7を持ち、この7番の位置はリンク値8を持ち
、ここに最終的なキーNashを見出すことができる(
第7I図参照)。1ロのエントリが完了した図を第75
図に示す。
ハツシュ手段を使用した他の態様としては以下に示す文
献に記載されている。「ハッシングによるインデックス
手法」、IBM  TechnicalDiscloa
ure  Bulletin,Mol.16,No.5
.Augu!It  1973;  rキャッシュ及び
/または仮想メモリを使用したコンピュータにおけるハ
ツシュおよびインデックス技術の改良J % IBMT
echnical  Disclosure  Bul
letin,Mol.31,No.1,June  1
988 ; rノ1ツシュ●ツリーJ ,  I BM
 Technical DisclosureBull
etin,Vol.30,No.5,October1
987. C.発明の概要および解決課題 本発明の目的は、従来の方法に比較して、より速い検索
テーブルにおけるエントリの検索手段を提供し、なお、
従来の方法よりも少ないスペースの使用を達成すること
を目的とする。
本発明のシステムおよび装置においては、高速検索テー
ブルは、1つの小さなエクストラルメモリを使用するよ
うに構成されている。通常のハッシュ・テーブルにおい
ては使用メモリの総量はエントリの数に比例し、エン}
 IJ数の内容およびエントリ サイズには比例しない
本発明の検索テーブルはエントリのベクトルとして考え
られる。テーブル中のエントリは、各エントリ・キーの
ハッシュ値によって定義されるソート順に保持される。
単純なハッシングでは10〜2096の予約部分が要求
されるのに対して、サイズNのベクトルにおいてはNエ
ントリが保持される。オフセット−テーブルと呼ばれる
N,?7セットのエクストラ慟ベクトルが保持される。
PIND処理によってキーがハッシュされ、オフセット
・テーブルでのインデックスを獲得する。さらに、オリ
ジナル・インデックスにオフセット値を加算して,サー
チの開始されるテーブル・エントリのベクトルでのイン
デックスを獲得する。オフセット・ベクトル中での次の
位tit(next position)におけるオフ
セットがテーブル・エントリナなわち、キーによって検
索されていたテーブル・エントリのベクトル中の位置を
検索する。これらの手段はFIND処理が、検索キーを
持つエントリがないことを全くサーチせずに判断するこ
とを可能とする。従って、FIND処理は第2のサーチ
に、速い2進サーチを適用できる。
このオフセット●ハツシングはリンク●ハツシング法と
同じオーダーのサーチ・タイムを持つ。
最初のハツシュはエントリ・パケットのサーチに続いて
実行される。オフセット・ハツシング構成においては、
エントリ・パケットは近接したものであり、位fith
(キー)とh(キー)+1のオフセット・テーブル中に
あるオフセットによって制限される。リンク・ハツシン
グ構成においてはエントリ・パケットはすなわちリンク
・リストである。従って、オフセット・ハツシングのス
ピードは上述の検索テーブルのなかでも最も早いものと
同じか、ときにはそれ以上のスピードを持つ。というの
は第2サーチがリンク・リストとは違い、連続的に実行
されるからである。オフセット・ノ1ッシング方法にお
ける他のスピード上のメリットはアルゴリズムを使用し
たデータの良好な配置にある。良好な配置は仮想メモリ
におけるページ不在を減少させる。
2進サーチ検索テーブル構成は最も小スペースではある
がオフセット・ハッシングほどのスピードはない。他の
ハツシング法はスピードはあっても、よル多くのスペー
スが必要となる。オフセット・ハツシング法においてス
ペース効率も考慮されたものがオフセットのベクトルで
ある。オフセットは極めて小さくでき、リンク・ハッシ
ング法Kおけるリンクよクも小さい。リンク・ハッシン
グ法の一般的な構成ではリンク・リスト・アンカーのベ
クトルおよび各エントリ中のリンクが必要とされる。オ
フセット●ハッシング法では各工yトリごとのリンクは
必要としない。
かなり、大きなテーブルにおいても、1バイトのオフセ
ットが適当である。ハッシュ関数がN個のテーブル・ス
ロツ}K導入された場合、最悪のオフセット(テーブル
の中心において)は標準偏差分布をする。オフセットは
正でも負でも有りえるので、4096のエントリのテー
ブルの場合は4シグマK対して、16384のテーブル
の場合は2シグマに対して、1バイト・オフセットが適
当となる。たった10ビットのオフセットで1oO万の
エントリを超えるテーブルの2シグマをカバーする。も
し、ある状態におけるオフセットが所定のビット数に適
合しない場合には、エスケープが供給され、第2サーチ
がエントリの一部において単純な2進サーチを実行する
。1バイト・オフセットにおける適当なエスケープは.
検索エントリはテーブルの127前のエントリより前で
あることを示すJ +1 28オフセット、および検索
エントリが127後のエントリより後であることを示す
−128のオフセットである。
D.実施例 本発明における検索テーブルにおいて、ハッシュ関数は
各キーにおいてある値を生成するのに使用される。本実
施例において使用されるハッシュ関数は以下に示す通り
である。
ハツシュ関数 f(A)=i,f(B)=2,..yr(Z)=26h
ash (″ABC″)=(f(A)十f(B)+f(
C))mod10このハツシュ関数値を計算するいくつ
かのサンプル・コードを以下に示す。
INPUT   AS SUM=O FOR  I = I  TO  LEN(AS)SU
M = SUM+ASC(MIDS(AS,I,1))
−ASC(″a”)+1 NEXT PRINT  SUM  MOD   10上記のハツ
シュ関数の意味は、キーの各文字はアルファベットに対
応した1から26までの値を持つということである。各
文字の値は加算される。
加算がキー数−1の値に達すると、加算はOK戻り繰シ
返される。第1A図に示す場合、キー数は10である。
したがって、ハツシュ関数は各キーに対して0から9ま
での値を生成する。第1A図は各キー12に対するハツ
シュ関数13の値を示す。ここではキーはラスト・ネー
ムを関連データは電話番号としてある。
第1B図に示すごとく、エントリ16は、第1A図のリ
ストの各エントリ・キーのハツシュ関数13の値の順に
ソートされたテーブル20中に保持されている。例えば
、キーGossは0のハッシュ関数値13を持つ。従っ
て、工7 } ’) Gosaは第1B図のテーブル2
0の0番の位置にある。次のハッシュ関数値は2であり
、これはBledsoe,Wilson,およびNas
h に対応する。従って、これらのエントリは第1B図
のテープA/20の次の位置に位置する。これらの3つ
のエントリはテーブル20の第1、第2、第3のどの位
置に配置されてもいいことになるが、この実施例ではア
ルファペット順、すなわちBledsoeが1番、Na
ahが2番、そしてW目sonが3番の位置を占めてい
る。これはすなわち、オフセット・ハッシング検索テー
ブルにおいて、いくつかのキーが同じ値になったときの
FIND処理の際K2進サーチ、あるいはソート・リニ
ア●サーチを可能とする。
第1A図に戻って、値20次のハツシュ値はキ− J 
o h n ts o n1およびOlsonが持つ値
5である。
再び、同じハツシュ値を持つものの2進サーチ用にテー
フル20がアルファベット順に構成される。
すなわち、第1B図、テーブル20に示すごとくJoh
nsonが次のスペース、第4番に入り、Olsonが
次の工冫ト1ハすなわち第1番に入る。
同様、次のハツシュ値は第1B図に示すととく6である
。Turner が次の位置をしめる。次のハツシュ値
は8であり、BacklundとMorganがアルフ
ァペット順にテーブルの次のスペースを占める。次のそ
して最後のハッシュ値は9であり、Smithがテーブ
ル20の最後の位置を占める。
第1B図のベクトル22が次に0から始まり、N−1ま
での位置に構成される。ここでNはエントリ数である。
FIND処理はオフセットテーブルのインデックスを獲
得するためキーのハッシュを実行する。各位置(0から
N−1)の値24は、オフセット・ベクトル22中の位
置1’li11に等しい、あるいは大きいハッシュ値を
持つテーブル20の第1エントリを指示する。オフセッ
ト・ベクトル22のそれぞれの″i”番の位置において
、″i”23に位置Ni”の値24が加算されたものが
、”i”より大きい、あるいは等しいハツシュ値ヲ持っ
た検索テーブルの第1二ントリのインデックスである。
これは以下のように表される。
オフセット働ベクトル[i]十i =ハツシュ値を持つテーブルの第1エントリ・インデッ
クス 〉または=i 例えば、検索キーが値0にハツシュされたときは、オフ
セット・ベクトル22の0番の位置の値が0に加算され
る。0十〇=0であるから、テーブル20の0番の位置
は0より太きいあるいは等しいハツシュ値を持った第1
エントリが占める。
検索キーが値1にハツシュされると、オフセット・ベク
トル22の1番の位置の値が1に加算される。1番の位
置の値は0であるから、0+1=1となり、テーブル2
0の1番の位置はハツシュ値が1より大きいが等しい第
1エントリとなる。
Bledsoaのハツシュ値は2であるので、値1にハ
ツシュされた検索キーを持つものはテーブル20にはな
いことが即座に判明する。
他の例として、FIND処理の間に検索キーが2にハツ
シュされたとする。このとき、オフセット・ベクトル中
の位置2の値が2に加算される。
位置2の値は−1であるので,2+−1=1となり、テ
ーブル2001番の位置はハツシュ値が2以上のものと
なる。テーブル20の位置1からスタートして、検索キ
ーを捜すためにノ・ツシュ値2を持つ他のエン} IJ
−のサーチが実行される。例えば、検索キーがCoxで
あると、テーブル20中にCoxがあるとすれば、それ
は旧edsoeとNashとの間にあるはずであるので
、とζでサーチは終了する。
さらに,他の例として検索キーが3に7・ツシュされた
とする。オフセット・ベクトル22中の3番の位置の値
が3に加算される。3番の位置の値は+1であるので3
+1=4となり、テーブル20の4番の位置にはハツシ
ュ値が3以上のものが占めることになる。3または4の
値のハッシュ・キーは存在しないので4番の位置はハツ
シュ値5が割当てられる。従って、検索キーがハツシュ
値3を持つとすれば、FIND処理は太き表ハツシュ値
を持つ第1エントリに行くので、検索キーはテーブル2
0には存在しないことが即座に判明する。従って、FI
ND処理は検索キーを持つエントリがないことをサーチ
を実行せずに判断できる。
例えば、第1B図に示すごとくテーブル28のエントリ
は矢印25で示すように位置h(キー)とh(キー)+
1においてオフセット・テーブル22中でオフセットに
より区分けされている。例えば、ハツシュ値0を持つキ
ーはテーブル中の位[0と位置1の開始位置に境界があ
る。ハツシュ値1のキーは位置1の上と下の境界を持つ
。従って、テーブル20にはハツシュ値1を持つエント
リが存在しな・いことがサーチを実行することなく判明
する。
第1B図のオフセット●ハツシュ検索テーブルはオフセ
ット・ベクトルのためのわずかな付加メモリを要するに
すぎない。このオフセット・ハツシンク構成のスペース
増加はこのオフセット・ベクトルのみである。オフセッ
トは極めて小さくで@、第7.r図のリンク・ハツシュ
法のリンク費リストよりも小さい。第1B図のオフセッ
ト・ベクトル22のためのメモリ量は第7J図のリンク
15とリンク・リスト18に必要なメモリよりも小さい
ものとなる。第7J図のリンク・ハツシング法の基本的
な構成ではリンク・リスト・アンカーのベクトルと各エ
ンドリ中に保持されたリンク15を必要とする。本発明
のオフセット・ハツシング法は各エントリに対してリン
クを必要としない。
このために追加のメモリ・スペースが小さくなる。
さらに、オフセット・ベクトル22に必要なメモリの総
量は第6A〜65図に示すオープン・アドレツシング検
索テーブルに必要な追加メモリの1096から20%よ
りも小さい。
オフセット・ベクトルの二ントリ・サイズは、同じハツ
シュ値を持つ対応キー・レンジの第1テーブル・エント
リの参照に必要なサイズよリモ大きくてはならない。前
に述べたように、これらオフセットは通常小さいサイズ
である。オフセット・ベクトルのためのスペースが特定
のノ・ツシュ値に対して適当なオフセットを供与しない
ような特殊な場合は、いくつかの解決策がある。新しい
ハツシュ関数が選択され、テーブル・エントリに適用さ
れる。これが適当なオフセツ.ト・ベクトル・スペース
に適応するオフセットを与えることとなる。他の解決策
はオフセットがオフセット・ベクトル中に保持可能な範
囲よりも大きいことを示すためにオフセット値の絶対値
における最大値(正でも負でも可)を供与することであ
る。この場合、サーチ幅はオフセット幅よりも大であり
、検索キーのハツシュ値外のハツシュ値ヲ含む。
テーブルが完全に満たされていない場合は、未使用テー
ブル・エントリが予約キーの値が検索可能なキーより大
きいことを示すか、または各テーブル・エントリが各々
特定フラグを持ち、それによってその使用の有無を示す
第1B図に示す本発明のオフセット・ノ1ノシング法は
第7J図に示すリンク・ハッシング法と同じオーダの検
索時間を保持する。どちらの場合も最初のハツシュはエ
ントリ・パケットのサーチに続いて実行される。しかし
、本発明のオフセット・ハツシング法では同じノ・ツシ
ュ値を持つエントリは連続しておシ、オフセット・テー
ブルのh(キー).!:h(キー)+1との位置のオフ
セットにより限定されている。従って、オフセット・ハ
ッシング法は、テーブル28における第2サーチが連続
エントリ中で実行され、リンク・リストを持たないので
なお一層高速となる。同じノ・ツシュ値ヲ持つ連続エン
トリはオフセット・ハッシング法に他の速度的効果をも
たらす。さらに、本発明で採用されているデータの良好
な配置は仮想メモリにおけるページ不在を削減する。
以下に示すプログラム・コードは本発明のオフセット検
索テーブルの生成を説明したものである。
グロシージャー構成 一デープル中に記憶されたNエン} IJに関するリス
トから、サイズNのオフセット検索テープルを構成する
開始 リストからNエントリをテーブル中に挿入する。
テーブル・エントリの各々にノ・ツシュ関数を適用する
ハツシュ値KKつでテーブル・エントリヲソートする。
同じハツシュ値はキーに従ってソートする。
一一オフセット・ベクトルの生成。
OFFSET  VECTOR[0}  :0;for
  I  =1  to  N −1  doOFFS
ET  VECTOR[Iコ  ::OFFSET V
FJCTOR[I−1] ;while  OFFSE
T−VECTOR[I]+(Na n d    HA
SH(TABLE [OFFSET−VECTOR[■
コ+■コKEY) 〈I do OFFSET−VECTOR [1]  :OFFSE
T  VECTOR [I]  + 1 ;end  
while; erld  for; endprocedure  construct;こ
のプログラム言語をフローに示すと第6図のごとくなる
。オフセット検索テーブルの構成はエントリのリス}N
によってステップ80から開始される。これらのエント
リはステップ81においてテーブルに挿入されるステッ
プ82においてこれらのエントリの各々に対してノ・ツ
シュ関数が適用される。ステップ86において、ノ〜ツ
シュ値に従って,同じハツシュ値に対してはキーの値に
従ってテーブルの記憶が行なわれる。ζとまででテーブ
ル・エントリが完成する。ステップ84−92ではオフ
セット・ベクトルを生成する。ステップ84において、
インデックス0において、オフセット・ベクトル中の第
1エントリは0にセットされる。オフセット・ベクトル
に対するインデックス、初期設定Iがステップ85で1
にセットされる。ステップ86でIがNよりも小さい間
は、ステップ87からステップ91が繰り返される。
一方、オフセット・ベクトルが完成し、ステップ92で
手続きが完了する。ステップ87において、夏によって
インデックスされたオフセット・ベクトルの初期値がI
−1によるインデックス・オフセット・ベクトルの値か
ら得られる。この値OFFは,OFFの加算値プラスI
がNに等しくなるまで(ステップ88),あるいはイン
デックスOFF−1−Iに保持されたテーブル・エント
リのキーのハツシュがIより大きいか等しい(ステップ
89)場合には、ステップ90において増分される。
ステップ88、89、90におけるOFFの増分が終了
すると、インデックス■のオフセット・ベクトルはOF
Fの値を指定し、ステップ91においてオフセット・ベ
クトルの次のエントリをインデックスするためにlが増
分される。
以下に検索キーに関連するデータの検索に使用可能なf
ind処理を実行するプログラム言語コードを示す。
operation  find(K)一一テーブル中
に検索キーが存在する場合は、その検索キー、Kに等し
いテーブル・エントリのインデックスに戻り、存在しな
い場合は−1にもどる。
begin −−データは0からN−1の値によってインデックスさ
れたオフセット・−ベクトルおよび,長さNのテーブル
を持つと仮定する。
H :=HASH(K); −一注:Hは0からN−1
一一検索キーを持つ第1エントリのインデックスにJを
セット J :=OFFSET VECTOR[H] 十H;一
検索キーを持つ最終エントリのインデックスより1つ大
のものにリミット2をセットifH=N−f then Z  := N else Z := OFFSET−VECTOR[H
+1] ;−−一Kに対するサーチ・レンジをJからZ
−1とする。
whtle J ( Z and TABLE [J]
 .KEY  ( K doJ:=J+1; −−Kを発見できた? if  J =Z  or  TABLE[J] .K
EY )Kthen  return −1   −−
FAILUREelse  return  J;  
 −−SUCCESSend  operation 
 find;以上のプログラム言語コードを図に示した
のが第2図である。検索キーをKとして、ステップ60
において、FIND処理が開始する。ステップ61にお
いて、検索キーがハツシュ値にハツシュされる。Nエン
トリのテーブルではハツシュ値は0からN−iの範囲で
ある。検索キーを持つであろうテーブル中の第1エント
リはステップ62において決定され,変数Jが指定され
る。ステップ62において、ハツシュ値がオフセット・
ベクトルのインデックスに使用される。仁のインデック
スのオフセット・ベクトル中の値が第1エントリを決定
したハツシュ値に加算される。検索キーを有するテーブ
ル中の最終エン} IJはステップ63、64、65で
決定され、ζこではテーブルやインデックスより1大き
い値に変数2をセットする。
ステップ66、67、68が、エントリをインデックス
JからZ−1の間でサーチし、検索キーが見つかった時
点でストップする。レンジすべての範囲のエントリの検
索終了時点(ステップ66)、またはレンジ中の残シの
エントリにはキーが存在しないことが判明したとき(ス
テップ67)においてストップする。このサーチの出力
を決定するテストがステップ69と70で実行される。
すべてのエントリが検索が不成功であるとステップ69
で判断されたときはa−1が失敗を示す意味で戻される
(ステップ72)。ステップ70において検索キーか発
見されると,このキーを持つテーブル・エントリのイン
デックスJがステップ71において戻される。さもなけ
れば、a−1はステップ72において失敗を示す意味で
戻される。
E.発明の効果 上述のごとく本発明は、従来の方法に比較して、検索テ
ーブルにおけるより早いエントリの検索手段を゜従来の
′方法よりも少ないスペースの使用によって達成するも
のである。
【図面の簡単な説明】
第1A図は本発明Kおけるオフセット・ハツシング検索
テーブル中において使用される各キーのハツシュ値を示
した図、第1B図は本発明のオフセット・ハツシュ検索
テーブルを示す図、第2図はオフセット検索テーブル中
に保持されたデータの検索処理を示すフロー図、第3図
はオフセット検索テーブルを生成するステップを示すフ
ロー図、第4図は従来のシーケンシャル・サーチ検索テ
ーブルを示す図、第5図は従来のシンプル検索テーブル
を示す図,第6A〜第6J図は従来のオープン●アドレ
ツシング●ハツシング検索テーブルを生成する手段を示
す図、第6K図は第6A〜6J図の検索テーブルにおい
て使用される各キーのハツシュ関数の結果値を示す図、
第7A図は従来の第7A〜ZJ図のリンク魯ハツシング
検索テーブルにおいて使用される各キーのハツシュ関数
の結果値を示す図、第7B〜第7J図は従来のリンク・
ハツシング検索テーブルの生成方法を示す図である。 く 8\ ”\ へ QF囚のマIJ)一さQll O) C) 一JOHN
SON BACKLUND SMIT}l GOSS BLEDSOε OLSON TURNER WILSON NASH MORGAN JOHNSON BACKLLIND SMffH GOSS O BLEDSOE OLSON TURNER MORGAN 第71図

Claims (9)

    【特許請求の範囲】
  1. (1)データ処理装置中における検索のための複数デー
    タの構成方法に関し、 上記個々のデータ要素の各々の対応検索キーのハッシュ
    値によつて決定された順に個々のデータを配列したテー
    ブルを保持するステップと、目的とするキーに等しい検
    索、キーに対応するデータ要素を持つ上記テーブル中の
    位置を決定するため、目的キーのハッシュ値と結合する
    オフセット・ベクトルを保持するステップとからなるデ
    ータ処理装置におけるデータ構成方法。
  2. (2)データ処理装置中における検索のための複数デー
    タの構成装置に関し、 上記個々のデータ要素の各々の対応検索キーのハッシュ
    値によつて決定された順に個々のデータを配列したテー
    ブルと、 目的とするキーに等しい検索キーに対応するデータ要素
    を持つ上記テーブル中の位置を決定するため、目的キー
    のハッシュ値と結合するオフセット・ベクトルとからな
    るデータ処理装置におけるデータ構成装置。
  3. (3)データ処理装置における情報記憶装置であり、エ
    ントリ・キーのハッシュ値に従つた順にN個のエントリ
    の第1ベクトルとして情報を保持する手段と、 i番目の位置の値とiの値との合計値がi−1より大き
    いハッシュ値を持つ上記第1ベクトルにおける情報の第
    1エントリを決定するインデツククスとなるようにi番
    目の位置のオフセット・ベクトルを保持する手段とを有
    することを特徴とするデータ処理装置における情報記憶
    装置。
  4. (4)データ処理装置における情報記憶装置であり、情
    報のN個のエントリの各々のキーをハッシングする手段
    と、 上記ハッシュ・キーのハッシュ結果値に従つた順に上記
    エントリの第1ベクトル中に情報を記憶する手段と、 i番目の内容とiの値との合計がiより大、または等し
    いハッシュ値を持つ第1ベクトル中の第1エントリを決
    定するインデックスとなるNエントリのオフセット・ベ
    クトルを生成する手段とを有することを特徴とするデー
    タ処理装置における情報記憶装置。
  5. (5)データ処理装置における情報記憶方法であり、エ
    ントリ・キーのハッシュ値に従つた順にN個のエントリ
    の第1ベクトルとして情報を保持するステップと i番目の位置の値とiの値との合計値がiより小さくな
    いハッシュ値を持つ上記第1ベクトルにおける情報の第
    1エントリを決定するインデックスとなるようなi番目
    の位置のオフセット・ベクトルを保持するステップとを
    有することを特徴とするデータ処理装置における情報記
    憶方法。
  6. (6)データ処理装置における情報記憶方法であり、情
    報のN個のエントリの各々のキーをハッシングするステ
    ップと、 上記ハッシュ・キーのハッシュ結果値に従つた順に上記
    エントリの第1ベクトル中に情報を記憶するステップと
    、 i番目の位置の内容とiの値との合計がiより大、また
    は等しいハッシュ値を持つ第1ベクトル中の第1エント
    リを決定するインデックスとなるOからN−1までのN
    エントリのオフセット・ベクトルを生成するステップと
    を有することを特徴とするデータ処理装置における情報
    記憶方法。
  7. (7)データ処理装置における情報検索装置であり、エ
    ントリ・キーのハッシュ値に従つた順にN個のエントリ
    の第1ベクトルとして情報を保持する手段と、 i番目の位置の値とiの値との合計値がiより小さくな
    いハッシュ値を持つ上記第1ベクトルにおける情報の第
    1エントリを決定するインデックスとなるようなi番目
    の位置のオフセット・ベクトルを保持する手段と、 上記オフセット・ベクトルのi番目の位置の一つが検索
    されるように上記情報の目的キーのハッシングを実行す
    る手段と、 上記オフセット・ベクトルのi番目の位置へのハッシュ
    により指示された上記第1ベクトルから情報を取り出す
    手段とからなる情報検索装置。
  8. (8)データ処理装置における情報検索方法であり、エ
    ントリ・キーのハッシュ値に従つた順にN個のエントリ
    の第1ベクトルとして情報を保持するステップと、 i番目の位置の値とiの値との合計値がiより小さくな
    いハッシュ値を持つ上記第1ベクトルにおける情報の第
    1エントリを決定するインデックスとなるようなi番目
    の位置のオフセット・ベクトルを保持するステップと、 上記オフセット・ベクトルのi番目の位置の一つが検索
    されるように上記情報の目的キーのハッシングを実行す
    るステップと、 上記オフセット・ベクトルのi番目の位置へのハッシュ
    により指示された上記第1ベクトルから情報を取り出す
    ステップとからなる情報検索方法。
  9. (9)データ処理装置に記憶された情報のエントリの第
    1ベクトルを検索する方法に関し、 各エントリのキーのハッシュ値によつて決定された順番
    に上記情報のエントリの上記第1ベクトルを保持するス
    テップと、 上記第1ベクトルと同じ数のエントリを持つオフセット
    ・ベクトルを保持するステップと、オフセット・ベクト
    ル中の第1インデックスを得るために検索すべき情報の
    キーをハッシングするステップと、 情報検索を開始すべき検索位置での第1ベクトル中にお
    ける第2インデックスを得るために、得られたインデッ
    クス位置におけるオフセット・ベクトルの内容を第1イ
    ンデックスに加えるステップとを有することを特徴とす
    る情報検索方法。
JP2019393A 1989-01-31 1990-01-31 データを構成、管理又は検索するための方法及び装置 Expired - Lifetime JPH0748220B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US30469589A 1989-01-31 1989-01-31
US304695 1989-01-31

Publications (2)

Publication Number Publication Date
JPH02231675A true JPH02231675A (ja) 1990-09-13
JPH0748220B2 JPH0748220B2 (ja) 1995-05-24

Family

ID=23177588

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019393A Expired - Lifetime JPH0748220B2 (ja) 1989-01-31 1990-01-31 データを構成、管理又は検索するための方法及び装置

Country Status (2)

Country Link
EP (1) EP0381418A3 (ja)
JP (1) JPH0748220B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226634B1 (en) 1997-04-18 2001-05-01 Fujitsu Limited Association rule generation and group-by processing system
KR100485819B1 (ko) * 2001-08-09 2005-04-28 삼성전자주식회사 디지털 데이터의 고속 전역 탐색 장치 및 방법
JP2007241378A (ja) * 2006-03-06 2007-09-20 Data Henkan Kenkyusho:Kk 検索装置及びそのプログラム
JP2014238892A (ja) * 2002-09-06 2014-12-18 ユナイテッド ステイツ ポスタル サービス 保護されているデータを検索する方法、コンピュータシステム及びコンピュータプログラム

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4421640C1 (de) * 1994-06-21 1995-08-03 Siemens Ag Hash-Adressierungs- und Speicherverfahren zum Ablegen und Wiedergewinnen von Daten in einem adressierbaren Speicher
AU2001285161A1 (en) 2000-08-21 2002-03-04 United States Postal Services Delivery point validation system
DE10064526A1 (de) * 2000-12-14 2002-06-27 Helmut Schumacher Verfahren zur Generierung von Objektidentifikationen, insbesondere bei Datenbanken
US7664731B2 (en) 2002-03-21 2010-02-16 United States Postal Service Method and system for storing and retrieving data using hash-accessed multiple data stores
US7587408B2 (en) 2002-03-21 2009-09-08 United States Postal Service Method and system for storing and retrieving data using hash-accessed multiple data stores
US7159119B2 (en) 2002-09-06 2007-01-02 United States Postal Service Method and system for efficiently retrieving secured data by securely pre-processing provided access information
US8090698B2 (en) 2004-05-07 2012-01-03 Ebay Inc. Method and system to facilitate a search of an information resource
US7805430B2 (en) 2005-12-22 2010-09-28 Sap Ag Evaluation of name prefix and suffix during a search
WO2018056993A1 (en) * 2016-09-22 2018-03-29 Visa International Service Association Techniques for in-memory data searching
EP3516539B1 (en) 2016-09-22 2024-03-13 Visa International Service Association Techniques for in-memory key range searches
US11580084B2 (en) * 2017-06-22 2023-02-14 Microsoft Technology Licensing, Llc High performance dictionary for managed environment
CN114185486B (zh) * 2021-11-17 2024-07-30 深圳市德明利技术股份有限公司 一种dram存储器的数据写入方法和dram控制系统
US12007911B2 (en) 2022-03-10 2024-06-11 Samsung Electronics Co., Ltd System and method for efficiently obtaining information stored in an address space

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6148034A (ja) * 1984-08-15 1986-03-08 Hitachi Ltd ハツシングテ−ブルの動的サイズ変更方式

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6148034A (ja) * 1984-08-15 1986-03-08 Hitachi Ltd ハツシングテ−ブルの動的サイズ変更方式

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226634B1 (en) 1997-04-18 2001-05-01 Fujitsu Limited Association rule generation and group-by processing system
KR100485819B1 (ko) * 2001-08-09 2005-04-28 삼성전자주식회사 디지털 데이터의 고속 전역 탐색 장치 및 방법
JP2014238892A (ja) * 2002-09-06 2014-12-18 ユナイテッド ステイツ ポスタル サービス 保護されているデータを検索する方法、コンピュータシステム及びコンピュータプログラム
JP2007241378A (ja) * 2006-03-06 2007-09-20 Data Henkan Kenkyusho:Kk 検索装置及びそのプログラム

Also Published As

Publication number Publication date
JPH0748220B2 (ja) 1995-05-24
EP0381418A3 (en) 1991-11-27
EP0381418A2 (en) 1990-08-08

Similar Documents

Publication Publication Date Title
US8335889B2 (en) Content addressable storage systems and methods employing searchable blocks
JP5506290B2 (ja) 検索可能なブロックを用いた連想記憶システムおよびその方法
JP3178475B2 (ja) データ処理装置
CN100377154C (zh) 改进型多路基数树
JPS59146356A (ja) キイ・アクセス型ファイル管理方法
US7231383B2 (en) Search engine for large-width data
US7895211B2 (en) Method and system for reinserting a chain in a hash table
US20080133494A1 (en) Method and apparatus for searching forwarding table
JPH0748220B2 (ja) データを構成、管理又は検索するための方法及び装置
JPH08129551A (ja) ハッシュ方式
KR20210028576A (ko) 네트워크 키 값 인덱싱 설계
US8204882B2 (en) Method for accessing a storage unit during the search for substrings, and a corresponding storage unit
JP2015176407A (ja) 検索装置、検索方法、検索用プログラムおよび検索用データ構造
JPH1166095A (ja) データ管理装置
JP2675958B2 (ja) 情報検索用計算機システム及びその記憶装置の動作方法
JP2003030040A (ja) オブジェクトデータベースシステムの複数ハッシュインデックスおよび非ユニークインデックス管理方式
EP2164005B1 (en) Content addressable storage systems and methods employing searchable blocks
JPH0581102A (ja) テーブル管理方式
JP2000090115A (ja) インデクス作成方法および検索方法
CN119484378B (zh) 一种路由表的空间管理方法、装置、程序产品及网络设备
JP2874810B2 (ja) キーの記憶割り当て方法
JPH0380367A (ja) ファイル管理方式
CN116795944A (zh) 基于非易失性内存的文件系统新型索引方法及系统
CN117667922A (zh) 一种金融行情数据存储的快速排序方法、系统及相关设备
JP3008500B2 (ja) 更新レコード読み出し機構