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

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

Info

Publication number
JPH0748220B2
JPH0748220B2 JP2019393A JP1939390A JPH0748220B2 JP H0748220 B2 JPH0748220 B2 JP H0748220B2 JP 2019393 A JP2019393 A JP 2019393A JP 1939390 A JP1939390 A JP 1939390A JP H0748220 B2 JPH0748220 B2 JP H0748220B2
Authority
JP
Japan
Prior art keywords
data
key
value
entry
offset
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.)
Expired - Fee Related
Application number
JP2019393A
Other languages
English (en)
Other versions
JPH02231675A (ja
Inventor
トツド・アレン・スミス
ロバート・ジヨン・アークハート
Original Assignee
インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
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 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン filed Critical インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
Publication of JPH02231675A publication Critical patent/JPH02231675A/ja
Publication of JPH0748220B2 publication Critical patent/JPH0748220B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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)

Description

【発明の詳細な説明】 A.産業上の利用分野 本発明はデータ処理システム中に記憶されたデータの検
索に関し、さらに詳しくはスペース効率ハツシユ検索テ
ーブルを用いてキーにより認識されるテーブル・エント
リの検索方法に関する。
B.従来技術および解決課題 データ処理プログラム情報の多くの部分は後の使用のた
めに記憶あるいは分離されている。この情報はデータ処
理プログラムによつて処理される対象として、例えばカ
スタマ、サプライア等の名前がついている。検索テーブ
ルは情報記憶のためのデータ構造としてよく使われる。
第4図および第5図に見られるようにテーブル10はエン
トリ16を有し、各エントリはキー12を有する。キー12に
加え、各エントリは分離された追加情報を持つ。第4
図、第5図の実施例においてはキー12としてラストネー
ムを持ち、追加情報として対応の電話番号を持つ。すな
わち、キー12に対するデータ14である。検索テーブルに
おいて実行される基本的な処理には次のようなものがあ
る。
INSERT テーブル中に新しいエントリを挿入 DELETE テーブル・エントリの削除 FIND 与えられたキーによつてすべての(又は1つの)
エントリを発見 これらの用語は本説明において通常使用されるものとし
て扱うが、他のシステムでは同様の処理を異なる用語で
行うこともある。
FINDがINSERTあるいはDELETEよりも頻繁に使用される環
境においては、検索テーブルは非常に有用である。とい
うのはFIND処理はINSERTあるいはDELETE処理に比較して
非常に早く処理できるからである。さらに、FINDは検索
テーブルの基本的処理であり、INSERTおよびDELETEは多
くの場合、必ずしも必要ではない。
多くのデータ構造においては、効率的な情報検索の問題
はアドレスである。第4図に示すように、最も単純な検
索テーブル構造はリスト中にエントリを順番に配列した
ものである。このようなテーブル10の検索は各エントリ
を初めから所定のキー12が見つかるまで順次確かめるも
のである。これは不要なエントリを見る必要があり、時
間のかかる結果となる。N個のエントリのテーブルで
は、目的のものを探すのに平均N/2のエントリを確かめ
なければならない。さらに、所定のキーがテーブル中に
存在しない場合にはすべてのNエントリを確認する必要
がある。この構成にも調書が無いわけではない。これは
シンプルであり、スペースの無駄がなく、エントリ・サ
イズのN倍のスペースを使用する。シーケンシヤル検索
テーブルのサーチをスピードアツプする方法もある。例
えば「テーブル・サーチ処理」“IBM Technical Disclo
sure Bulletin,Vo1.17,No.4,September 1984,page 964-
965"である。しかし、検索時間はテーブルの大きさNに
比例するという問題は解決されない。
検索テーブルの検索効率を高める方法として、シーケン
シヤル・テーブルの記憶データをキーの順序に上から順
に、あるいは下から順にソートすることである。例え
ば、第2図に示すようにデータ14をキー12のラストネー
ムのアルフアベツト順に上から配列する。テーブルがこ
のように構成されていれば、検索対象となる所定のキー
以降については検索必要のないことが確信できる。従つ
て、エントリ発見に要する時間は平均でN/2となり、テ
ーブル中に所定のキーがないことを確認するのに要する
時間もN/2となる。この検索方法はソート・リニア・サ
ーチと以下呼ぶ。
このようなソート・シーケンシヤル検索テーブルを用い
て、検索速度を高めることはできる。この検索技術を2
進サーチと呼ぶ。この2進サーチの使用により、FIND処
理の効率は大きく高められる。2進サーチの間、テーブ
ル・エントリの並びは維持される。検索キーはこのレン
ジにあるかもしれないし、このテーブルには無いかもし
れない。最初、このレンジはすべてのテーブルをカバー
する。2進サーチのかくステツプの間、このレンジの中
間が確かめられる。これが対象キーであれば値その時点
で検索は完了する。そうでなければ、中間のキーと検索
対象キーの比較結果に基づいて、中間エントリを上側値
又は下側に調整する。次に、新しいレンジにおいて、中
間エントリを確かめる。かくステツプにおいて、レンジ
は2分されるこの処理はレンジに残りのテーブル・エン
トリがなくなるか、所望のキーが見つかるまで続けられ
る。各ステツプにおいてレンジのエントリ数は半分に削
減される。従つて、サーチはlogNに比例して終息する。
この検索テーブル構成はコンパクトであり、エントリの
N倍に比例したスペースを必要とするのみである。しか
し、これはINSERT、DELEATE処理が実行されるごとにエ
ントリの再構成を必要とする。先に述べたように、FIND
処理を最大限に利用することが重要である。2進サーチ
手法については「テーブル検索」“IBM Technical Disc
losure Bulletin,Vol.14,No.10,March 1972"に記載され
ている。
さらに高速の検索テーブル構成は「ハツシング」を使用
したものである。このハツシングを基本としたテーブル
においてはテーブル中にエントリを入れる際の第1ステ
ツプはエントリ・キーをハツシユすることである。これ
はキーに対してハツシユ機能、すなわちキーによつて0
からM−1のランダムな値を応答する機能を付与するこ
とを含む。ここでMはテーブルのエントリ数の最大値で
ある。良好なハツシユ機能は2つの似たキーに対して全
く異なる値を生成する。例えば、挿入されるエントリに
対してHのハツシユ値が得られると、エントリはHによ
つて識別される位置、あるいはそれに続く位置であいて
いる部分に挿入される。重要なFIND処理は検索キーのハ
ツシング、その位置におけるテーブルのサーチを始める
ことによつて素早く実行される。同じインデツクスに複
数のキーがハツシユしている場合は複数のサーチが必要
となる。テーブル・エントリの10〜20%を未使用状態に
しておけば、2番目のサーチ総量はメモリの使用を最小
にしたものにできる。このハツシユ検索テーブル方法
は、テーブルが完全に埋まつた状況でない限りにおいて
は従来の2進サーチ技術よりも速いFIND処理を達成す
る。
ハツシユ・ベース検索テーブルの例を第6A〜第6J図の解
放アドレス・ハツシユ検索テーブル11として示す。テー
ブル11は0から11の12、すなわちM−1のエントリを持
つ。エントリ数は第6J図に示すようにデータ14よりも20
%多い。ハツシユ・ベース検索テーブル11は、例えばキ
ー12のラストネームをハツシユするために以下のハツシ
ユ関数13を適用する。
ハツシユ関数 f(A)=1,f(B)=2,...f(Z)=26 hash(“ABC")=(f(A)+f(B)+f(C))mo
d12 このハツシユ関数の意味はラストネームの各々にアルフ
アベツトに対応する1から26までの数字を付与すること
である。ラストネームの各々に数値が与えられる。加算
値が11に達したら、また0から11を繰り返す。このラス
トネーム12のハツシユ関数の結果は第6K図に示す。
テーブルへのデータ14の挿入は以下のようにして実行さ
れる。最初に「Johnson」がハツシユされ、第6A図に示
すようにテーブル11の位置11にデータ14とともに挿入さ
れる。同様に、次に続くネームとデータがテーブル11
に、以下のように挿入される。Backlundが8番目の位置
(第6B図)、Smithが9番目の位置(第6C図)、Gossが
0番目の位置(第6D図)、Bledsoeが2番目の位置(第6
E図)、Olsonが3番目の位置(第6F図)、である。「Tu
rner」のハツシユ関数結果は0であり、この場合は0番
に続くあいているスペースに入る。Gossが0番を占めて
いるので、第6G図に示すように次の1番のスペースに入
る。同様にWilsonはハツシユ関数結果が第6K図に示すよ
うにBucklundと同じ8である。Smithが9番目を占めて
いるので、8番に続く最初の空きスペースは第6H図に示
すように10番目の位置となる。次にNashのハツシユ関数
結果は6となる。Nashは第6I図のごとく、そのデータと
ともに6番目に挿入される。最後にハツシユ関数はMorg
anに適用され、値8が得られる。Backloundがすでに8
の値を持つているので、8番に続く空きスペースを捜
す。9番、10番、11番はすでにSmith、Wilson、Johson
によつて占有されているので、ここから0に戻つて捜す
こととなる。0番、1番、2番、3番もGoss、Turner、
Bledsoe、Olsonによつて占有されているので8番に続く
最初の空きスペースは第6J図に示すように4番となる。
第6J図において、FIND処理は以下のように実行される。
検索のキーがSmithであるとすると、ハツシユ関数がSmi
thに適用され、結果9を生成する。FIND処理は即座にキ
ーSmithおよび対応データを捜すために9番目の位置に
行く。同様に、Morganがキーである場合はハツシユ関数
がMorganに適用され、8が産出される。しかし、FIND処
理が8番目に直行しても、そこには検索キーはない。追
加サーチがキーMorganを検索するために、8番目の位置
から始められる。
第7A〜7J図に同じハツシユを有するテーブルの異なるハ
ツシユ構成リンク・エントリを示す。この方法ではエン
トリのM個のリンク・リストが保持される。検索キーが
第7Aに示すように0〜M−1の範囲にハツシユされる。
所望のキーを有するエントリをサーチするために対応リ
ンク・リストが検索される。この方法を使用したエント
リの検索に要する時間は平均N/(2M)である。これはリ
ストにおいてもハツシユ関数がNエントリに貢献するか
らである。しかし、速度はアツプするが、この方法はリ
ストの次のエントリへのリンクをホールドするために各
エントリに追加スペースが必要となる。
第7A〜7J図はリンク・ハツシユ検索テーブルによる方法
を示したものである。この例では第7A図における各キー
12は以下に示すハツシユ関数によつてハツシユされる。
ハツシユ関数 f(A)=1,f(B)=2,...f(Z)=26 hash(“ABC")=(f(A)+f(B)+f(C))mo
d10 このハツシユ関数から得られた値は第7A図13に示す。Jo
hnsonのハツシユ値は5であり、エントリのリンク・リ
スト18の5番目のエントリは0である。従つて、キーJo
hnsonおよび関連データは第7B図のテーブル17の0番の
位置にある。同様に、Backlundのハツシユ値は8であ
り、リンク・リストの8番目のエントリは1であるの
で、キーBacklundおよび関連データは第7C図のテーブル
17の1番の位置にある。このプロセスがSmith、Goss、B
ledsoeと第7D、7E、7F図に示すように進行する。しか
し、Olsonはハツシユ値が5となり、0番の位置にあるJ
ohnsonと同様になる。従つて、0番の位置において、5
を有するリンク15が0のハツシユ値のOlsonに対して5
番目の位置を提供する(第7G図、テーブル17参照)。同
様に、Wilsonのハツシユ値も第7A図に示すようにBledso
eと同じ2となる。リンク・リスト18の2番目の位置はB
ledsoeによつてテーブル17の4番目の位置が占められて
いる4番目の位置のリンク15は7の値を持ち、第7H図に
示すようにこの位置にWilsonを見つけることができる。
同様に、Nashも値2を持ち、リンク・リスト18の2番
は、位置4のBledsoeによつて占められ、この4番の位
置はWilsonに対応するリンク値7を持ち、この7番の位
置はリンク値8を持ち、ここに最終的なキーNashを見出
すことができる(第7I図参照)。10のエントリが完了し
た図を第7J図に示す。
ハツシユ手段を使用した他の態様としては以下に示す文
献に記載されている。「ハツシングによるインデツクス
手法」、IBM Technical Disclosure Bulletin,Vol.16,N
o.3,August 1973;「キヤツシユ及び/または仮想メモリ
を使用したコンピユータにおけるハツシユおよびインデ
ツクス技術の改良」、IBM Technical Disclosure Bulle
tin,Vol.31,No.1,June 1988;「ハツシユ・ツリー」、IB
M Technical Disclosure Bulletin,Vol.30,No.5,Octobe
r 1987. C.発明の概要および解決課題 本発明の目的は、従来の方法に比較して、より速い検索
テーブルにおけるエントリの検索手段を提供し、なお、
従来の方法よりも少ないスペースの使用を達成すること
を目的とする。
本発明のシステムおよび装置においては、高速検索テー
ブルは、1つの小さなエクストラルメモリを使用するよ
うに構成されている。通常のハツシユ・テーブルにおい
ては使用メモリの総量はエントリの数に比例し、エント
リ数の内容およびエントリ サイズには比例しない。
本発明の検索テーブルはエントリのベクトルとして考え
られる。テーブル中のエントリは、各エントリ・キーの
ハツシユ値によつて定義されるソート順に保持される。
単純なハツシングでは10〜20%の予約部分が要求される
のに対して、サイズNのベクトルにおいてはNエントリ
が保持される。オフセツト・テーブルと呼ばれるNオフ
セットのエクストラ・ベクトルが保持される。FIND処理
によつてキーがハツシユされ、オフセツト・テーブルで
のインデツクスを獲得する。さらに、オリジナル・イン
デツクスにオフセツト値を加算して、サーチの開始され
るテーブル・エントリのベクトルでのインデツクスを獲
得する。オフセツト・ベクトル中での次の位置(next p
osition)におけるオフセツトがテーブル・エントリす
なわち、キーによつて検索されていたテーブル・エント
リのベクトル中の位置を検索する。これらの手段はFIND
処理が、検索キーを持つエントリがないことを全くサー
チせずに判断することを可能とする。従つて、FIND処理
は第2のサーチに、速い2進サーチを適用できる。
このオフセツト・ハツシングはリンク・ハツシング法と
同じオーダーのサーチ・タイムを持つ。最初のハツシユ
はエントリ・バケツトのサーチに続いて実行される。オ
フセツト・ハツシング構成においては、エントリ・バケ
ツトは近接したものであり、位置h(キー)とh(キ
ー)+1のオフセツト・テーブル中にあるオフセツトに
よつて制限される。リンク・ハツシング構成においては
エントリ・バケツトはすなわちリンク・リストである。
従つて、オフセツト・ハツシングのスピードは上述の検
索テーブルのなかでも最も早いものと同じか、ときには
それ以上のスピードを持つ。というのは第2サーチがリ
ンク・リストとは違い、連続的に実行されるからであ
る。オフセツト・ハツシング方法における他のスピード
上のメリツトはアルゴリズムを使用したデータの良好な
配置にある。良好な配置は仮想メモリにおけるページ不
在を減少させる。
2進サーチ検索テーブル構成は最も小スペースではある
がオフセツト・ハツシングほどのスピードはない。他の
ハツシング法はスピードはあつても、より多くのスペー
スが必要となる。オフセツト・ハツシング法においてス
ペース効率も考慮されたものがオフセツトのベクトルで
ある。オフセツトは極めて小さくでき、リンク・ハツシ
ング法におけるリンクよりも小さい。リンク・ハツシン
グ法の一般的な構成ではリンク・リスト・アンカーのベ
クトルおよび各エントリ中のリンクが必要とされる。オ
フセツト・ハツシング法では各エントリごとのリンクは
必要としない。
かなり、大きなテーブルにおいても、1バイトのオフセ
ツトが適当である。ハツシユ関数がN個のテーブル・ス
ロツトに導入された場合、最悪のオフセツト(テーブル
の中心において)は標準偏差分布をする。オフセツトは
正でも負でも有りえるので、4096のエントリのテーブル
の場合は4シグマに対して、16384のテーブルの場合は
2シグマに対して、1バイト・オフセツトが適当とな
る。たつた10ビツトのオフセツトで100万のエントリを
越えるテーブルの2シグマをカバーする。もし、ある状
態におけるオフセツトが所定のビツト数に適合しない場
合には、エスケープが供給され、第2サーチがエントリ
の一部において単純な2進サーチを実行する。1バイト
・オフセツトにおける適当なエスケープは、検索エント
リはテーブルの127前のエントリより前であることを示
す』+128オフセツト、および検索エントリが127後のエ
ントリより後であることを示す−128のオフセツトであ
る。
D.実施例 本発明における検索テーブルにおいて、ハツシユ関数は
各キーにおいてある値を生成するのに使用される。本実
施例において使用されるシツシユ関数は以下に示す通り
である。
ハツシユ関数 f(A)=1,f(B)=2,...f(Z)=26 hash(“ABC")=(f(A)+f(B)+f(C))mo
d10 このハツシユ関数値を計算するいくつかのサンプル・コ
ードを以下に示す。
INPUT AS SUM=0 FOR I=1 TO LEN(AS) SUM=SUM+ASC(MIDS(AS,I,1)) −ASC(“a")+1 NEXT PRINT SUM MOD 10 上記のハツシユ関数の意味は、キーの各文字はアルフア
ベツトに対応した1から26までの値を持つということで
ある。各文字の値は加算される。加算がキー数−1の値
に達すると、加算は0に戻り繰り返される。第1A図に示
す場合、キー数は10である。したがつて、ハツシユ関数
は各キーに対して0から9までの値を生成する。第1A図
は各キー12に対するハツシユ関数13の値を示す。ここで
はキーはラスト・ネームを関連データは電話番号として
ある。
第1B図に示すごとく、エントリ16は、第1A図のリストの
各エントリ・キーのハツシユ関数13の値の順にソートさ
れたテーブル20中に保持されている。例えば、キーGoss
は0のハツシユ関数値13を持つ。従つて、エントリGoss
は第1B図のテーブル20の0番の位置にある。次のハツシ
ユ関数値は2であり、これはBledsoe、Wilson、およびN
ashに対応する。従つて、これらのエントリは第1B図の
テーブル20の次の位置に位置する。これらの3つのエン
トリはテーブル20の第1、第2、第3のどの位置に配置
されてもいいことになるが、この実施例ではアルフアベ
ツト順、すなわちBledsoeが1番、Nashが2番、そしてW
ilsonが3番の位置を占めている。これはすなわち、オ
フセツト・ハツシング検索テーブルにおいて、いくつか
のキーが同じ値になつたときのFIND処理の際に2進サー
チ、あるいはソート・リニア・サーチを可能とする。
第1A図に戻つて、値2の次のハツシユ値はキーJohnso
n、およびOlsonが持つ値5である。再び、同じハツシユ
値を持つものの2進サーチ用にテーブル20がアルフアベ
ツト順に構成される。すなわち、第1B図、テーブル20に
示すごとくJohnsonが次のスペース、第4番に入り、Ols
onが次のエントリ、すなわち第1番に入る。
同様、次のハツシユ値は第1B図に示すごとく6である。
Turnerが次の位置をしめる。次のハツシユ値は8であ
り、BacklundとMorganがアルフアベツト順にテーブルの
次のスペースを占める。次のそして最後のハツシユ値は
9であり、Smithがテーブル20の最後の位置を占める。
第1B図のベクトル22が次に0から始まり、N−1までの
位置に構成される。ここでNはエントリ数である。FIND
処理はオフセツトテーブルのインデツクスを獲得するた
めキーのハツシユを実行する。各位置(0からN−1)
の順24は、オフセツト・ベクトル22中の位置“i"に等し
い、あるいは大きいハツシユ値を持つテーブル20の第1
エントリを指示する。オフセツト・ベクトル22のそれぞ
れの“i"番の位置において、“i"23に位置“i"の値24が
加算されたものが、“i"より大きい、あるいは等しいハ
ツシユ値を持つた検索テーブルの第1エントリのインデ
ツクスである。これは以下のように表される。
オフセツト・ベクトル[i]+i =ハツシユ値を持つテーブルの第1エントリ・インデツ
クス >または=i 例えば、検索キーが値0にハツシユされたときは、オフ
セツト・ベクトル22の0番の位置の値が0に加算され
る。0+0=0であるから、テーブル22の0番の位置は
0より大きいあるいは等しいハツシユ値を持つた第1エ
ントリが占める。検索キーが値1にハツシユされると、
オフセツト・ベクトル22の1番の位置の値が1に加算さ
れる。1番の位置の値は0であるから、0+1=1とな
り、テーブル20の1番の位置はハツシユ値が1より大き
いが等しい第1エントリとなる。Bledsoeのハツシユ値
は2であるので、値1にハツシユされた検索キーを持つ
ものはテーブル20にはないことが即座に判明する。
他の例として、FIND処理の間に検索キーが2にハツシユ
されたとする。このとき、オフセツト・ベクトル中の位
置2の値が2に加算される。位置2の値は−1であるの
で、2+−1=1となり、テーブル20の1番の位置はハ
ツシユ値が2以上のものとなる。テーブル20の位置1か
らスタートして、検索キーを捜すためにハツシユ値2を
持つ他のエントリーのサーチが実行される。例えば、検
索キーがCoxであると、テーブル20中にCoxがあるとすれ
ば、それはBledsoeとNashとの間にあるはずであるの
で、ここでサーチは終了する。
さらに、他の例として検索キーが3にハツシユされたと
する。オフセツト・ベクトル22中の3番の位置の値が3
に加算される。3番の位置の値は+1であるので3+1
=4となり、テーブル20の4番の位置にはハツシユ値が
3以上のものが占めることになる。3または4の値のハ
ツシユ・キーは存在しないので4番の位置はハツシユ値
5が割当てられる。従つて、検索キーがハツシユ値3を
持つとすれば、FIND処理は大きなハツシユ値を持つ第1
エントリに行くので、検索キーはテーブル20には存在し
ないことが即座に判明する。従つて、FIND処理は検索キ
ーを持つエントリがないことをサーチを実行せずに判断
できる。
例えば、第1B図に示すごとくテーブル28のエントリは矢
印25で示すように位置h(キー)とh(キー)+1にお
いてオフセツト・テーブル22中でオフセツトにより区分
けされている。例えば、ハツシユ値0を持つキーはテー
ブル中の位置0と位置1の開始位置に境界がある。ハツ
シユ値1のキーは位置1の上と下の境界を持つ。従つ
て、テーブル20にはハツシユ値1を持つエントリが存在
しないことがサーチを実行することなく判明する。
第1B図のオフセツト・ハツシユ検索テーブルはオフセツ
ト・ベクトルのためのわずかな付加メモリを要するにす
ぎない。このオフセツト・ハツシング構成のスペース増
加はこのオフセツト・ベクトルのみである。オフセツト
は極めて小さくでき、第7J図のリンク・ハツシユ法のリ
ンク・リストよりも小さい。第1B図のオフセツト・ベク
トル22のためのメモリ量は第7J図のリンク15とリンク・
リスト18に必要なメモリよりも小さいものとなる。第7J
図のリンク・ハツシング法の基本的な構成ではリンク・
リスト・アンカーのベクトルと各エントリ中に保持され
たリンク15を必要とする。本発明のオフセツト・ハツシ
ング法は各エントリに対してリンクを必要としない。こ
のために追加のメモリ・スペースが小さくなる。さら
に、オフセツト・ベクトル22に必要なメモリの総量は第
6A〜6J図に示すオープン・アドレツシング検索テーブル
に必要な追加メモリの10%から20%よりも小さい。
オフセツト・ベクトルのエントリ・サイズは、同じハツ
シユ値を持つ対応キー・レンジの第1テーブル・エント
リの参照に必要なサイズよりも大きくてはならない。前
に述べたように、これらオフセツトは通常小さいサイズ
である。オフセツト・ベクトルのためのスペースが特定
のハツシユ値に対して適当なオフセツトを供与しないよ
うな特殊な場合は、いくつかの解決策がある。新しいハ
ツシユ関数が選択され、テーブル・エントリに適用され
る。これが適当なオフセツト・ベクトル・スペースに適
応するオフセツトを与えることとなる。他の解決策はオ
フセツトがオフセツト・ベクトル中に保持可能な範囲よ
りも大きいことを示すためにオフセツト値の絶対値にお
ける最大値(正でも負でも可)を供与することである。
この場合、サーチ幅はオフセツト幅よりも大であり、検
索キーのハツシユ値外のハツシユ値を含む。
テーブルが完全に満たされていない場合は、未使用テー
ブル・エントリが予約キーの値が検索可能なキーより大
きいことを示すか、または各テーブル・エントリが各々
特定フラグを持ち、それによつてその使用の有無を示
す。
第1B図に示す本発明のオフセツト・ハツシング法は第7J
図に示すリンク・ハツシング法と同じオーダの検索時間
を保持する。どちらの場合も最初のハツシユはエントリ
・バケツトのサーチに続いて実行される。しかし、本発
明のオフセツト・ハツシング法では同じハツシユ値を持
つエントリは連続しており、オフセツト・テーブルのh
(キー)とh(キー)+1との位置のオフセツトにより
限定されている。従つて、オフセツト・ハツシング法
は、テーブル28における第2サーチが連続エントリ中で
実行され、リンク・リストを持たないのでなお一層高速
となる。同じハツシユ値を持つ連続エントリはオフセツ
ト・ハツシング法に他の速度的効果をもたらす。さら
に、本発明で採用されているデータの良好な配置は仮想
メモリにおけるページ不在を削減する。
以下に示すプログラム・コードは本発明のオフセツト検
索テーブルの生成を説明したものである。
プロシージヤー構成 −−テーブル中に記憶されたNエントリに関するリスト
から、サイズNのオフセツト検索テーブルを構成する。
開始 リストからNエントリをテーブル中に挿入する。
テーブル・エントリの各々にハツシユ関数を適用する。
ハツシユ値に従つてテーブル・エントリをソートする。
同じハツシユ値はキーに従つてソートする。
−−オフセツト・ベクトルの生成。
OFFSET VECTOR[0} :0; for I =1 to N−1 do OFFSET VECTOR[I] : =OFFSET VECTOR[I−1]−1; while OFFSET VECTOR[I]+I<N and HASH(TABLE[OFFSET VECTOR [I]+I]KEY) <I do OFFSET VECTOR[I]= OFFSET VECTOR[I]+1; end while; end for; endprocedure construct; このプログラム言語をフローに示すと第3図のごとくな
る。オフセツト検索テーブルの構成はエントリのリスト
Nによつてステツプ80から開始される。これらのエント
リはステツプ81においてテーブルに挿入されるステツプ
82においてこれらのエントリの各々に対してハツシユ関
数が適用される。ステツプ83において、ハツシユ値に従
つて、同じハツシユ値に対してはキーの値に従つてテー
ブルの記憶が行なわれる。ここまでテーブル・エントリ
が完成する。ステツプ84-92ではオフセツト・ベクトル
を生成する。ステツプ84において、インデツクス0にお
いて、オフセツト・ベクトル中の第1エントリは0にセ
ツトされる。オフセツト・ベクトルに対するインデツク
ス、初期設定Iがステツプ85で1にセツトされる。ステ
ツプ86でIがNよりも小さい間は、ステツプ87からステ
ツプ91が繰り返される。一方、オフセツト・ベクトルが
完成し、ステツプ92で手続きが完了する。ステツプ87に
おいて、Iによつてインデツクスされたオフセツト・ベ
クトルの初期値OFFが、I−1によりインデックスされ
たオフセット・ベクトルの値を1減分することによって
得られる。この値OFFは、OFFの加算値OFF+IがNに等
しくなるまで(ステツプ88)、あるいはインデツクスOF
F+Iに保持されたテーブル・エントリのキーのハツシ
ユがIより大きいか等しい(ステツプ89)場合には、ス
テツプ90において増分される。ステツプ88、89、90にお
けるOFFの増分が終了すると、インデツクスIのオフセ
ツト・ベクトルはOFFの値を指定し、ステツプ91におい
てオフセツト・ベクトルの次のエントリをインデツクス
するためにIが増分される。
以下に検索キーに関連するデータの検索に使用可能なfi
nd処理を実行するプログラム言語コードを示す。
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
つ大のものにリミツトZをセツト if H=N−1 then Z :=N else Z :=OFFSET VECTOR[H+1]; −−Kに対するサーチ・レンジをJからZ−1とする。
while J<Z and TABLE[J].KEY<K do J :=J +1; −−Kを発見できた? if J=Z or TABLE[J].KEY>K then return −1 −−FAILURE else return J; −−SUCCESS end poeration find; 以上のプログラム言語コードを図に示したのが第2図で
ある。検索キーをKとして、ステツプ60において、FIND
処理が開始する。ステツプ61において、検索キーがハツ
シユ値にハツシユされる。Nエントリのテーブルではハ
ツシユ値は0からN−1の範囲である。検索キーを持つ
であろうテーブル中の第1エントリはステツプ62におい
て決定され、変数Jが指定される。ステツプ62におい
て、ハツシユ値がオフセツト・ベクトルのインデツクス
に使用される。このインデツクスのオフセツト・ベクト
ル中の値が第1エントリを決定したハツシユ値に加算さ
れる。検索キーを有するテーブル中の最終エントリはス
テツプ63、64、65で決定され、ここではテーブル・イン
デツクスより1大きい値に変数Zをセツトする。ステツ
プ66、67、68が、エントリをインデツクスJからZ−1
の間でサーチし、検索キーが見つかつた時点でストツプ
する。レンジすべての範囲のエントリの検索終了時点
(ステツプ66)、またはレンジ中の残りのエントリには
キーが存在しないことが判明したとき(ステツプ67)に
おいてストツプする。このサーチの出力を決定するテス
トがステツプ69と70で実行される。すべてのエントリが
検索が不成功であるとステツプ69で判断されたときはa
−1が失敗を示す意味で戻される(ステツプ72)。ステ
ツプ70において検索キーが発見されると、このキーを持
つテーブル・エントリのインデツクスJがステツプ71に
おいて戻される。さもなければ、a−1はステツプ72に
おいて失敗を示す意味で戻される。
E.発明の効果 上述のごとく本発明は、従来の方法に比較して、検索テ
ーブルにおけるより早いエントリの検索手段を従来の方
法よりも少ないスペースの使用によつて達成するもので
ある。
【図面の簡単な説明】
第1A図は本発明におけるオフセツト・ハツシング検索テ
ーブル中において使用される各キーのハツシユ値を示し
た図、第1B図は本発明のオフセツト・ハツシユ検索テー
ブルを示す図、第2図はオフセツト検索テーブル中に保
持されたデータの検索処理を示すフロー図、第3図はオ
フセツト検索テーブルを生成するステツプを示すフロー
図、第4図は従来のシーケンシヤル・サーチ検索テーブ
ルを示す図、第5図は従来のシンプル検索テーブルを示
す図、第6A〜第6J図は従来のオープン・アドレツシング
・ハツシング検索テーブルを生成する手段を示す図、第
6K図は第6A〜6J図の検索テーブルにおいて使用される各
キーのハツシユ関数の結果値を示す図、第7A図は従来の
第7A〜7J図のリンク・ハツシング検索テーブルにおいて
使用される各キーのハツシユ関数の結果値を示す図、第
7B〜第7J図は従来のリンク・ハツシング検索テーブルの
生成方法を示す図である。

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】データ処理装置中における検索のための複
    数のデータ要素の構成方法に関し、上記個々のデータ要
    素の対応する各々の検索キーのハッシュ値によって決定
    された順序で、該データを配列したテーブルを作成する
    ステップと、 目的とするキーに等しい検索キーに対応するデータ要素
    を持つ上記テーブル中の位置を決定するために、該目的
    キーのハッシュ値と組合わされるオフセット・ベクトル
    を作成するステップとからなる、データ構成方法。
  2. 【請求項2】データ処理装置中における検索のための複
    数のデータ要素の構成装置に関し、上記個々のデータ要
    素の対応する各々の検索キーのハッシュ値によって決定
    された順序で、該データを配列したテーブルと、 目的とするキーに等しい検索キーに対応するデータ要素
    を持つ上記テーブル中の位置を決定するために、該目的
    キーのハッシュ値と組合わされるオフセット・ベクトル
    を作成するためのオフセット・ベクトル管理手段とから
    なる、データ構成装置。
  3. 【請求項3】データ処理装置においてデータを管理する
    装置であって、 各データのエントリの検索キーのハッシュ値iに依存し
    た順序で、N個のエントリのベクトルとして該データを
    保持する手段と、 上記iの値とi番目の位置に含まれるオフセット値の合
    計値が、対応する上記データのエントリを決定するイン
    デックスとなるようなオフセット・ベクトルを保持する
    手段とを有することを特徴とする、データ管理装置。
  4. 【請求項4】データ処理装置においてデータを管理する
    装置であって、 データのN個のエントリの各々についてキーをハッシン
    グする手段と、 上記キーのハッシュ結果値iに従いソートされた順序
    で、上記エントリのベクトル中にデータを記憶する手段
    と、 上記iの値とi番目の位置に含まれるオフセット値の合
    計値が、対応する上記データのエントリを決定するイン
    デックスとなるようなオフセット・ベクトルを生成する
    手段とを有することを特徴とする、データ管理装置。
  5. 【請求項5】データ処理装置においてデータを管理する
    方法であって、 各データのエントリの検索キーのハッシュ値iに依存し
    た順序で、N個のエントリのベクトルとして該データを
    保持するステップと、 上記iの値とi番目の位置に含まれるオフセット値の合
    計値が、対応する上記データのエントリを決定するイン
    デックスとなるようなオフセット・ベクトルを保持する
    ステップとを有することを特徴とする、データ管理方
    法。
  6. 【請求項6】データ処理装置においてデータを管理する
    方法であって、 データのN個のエントリの各々について対応するキーを
    ハッシングするステップと、 上記キーのハッシュ結果値iに従いソートされた順序
    で、上記エントリのベクトル中にデータを記憶するステ
    ップと、 上記iの値とi番目の位置に含まれるオフセット値の合
    計値が、対応する上記データのエントリを決定するイン
    デックスとなるようなオフセット・ベクトルを生成する
    ステップとを有することを特徴とする、データ管理装
    置。
  7. 【請求項7】データ処理装置においてデータを検索する
    装置であって、 各データのエントリのキーのハッシュ値iに依存した順
    序で、N個のエントリのベクトルとして該データを保持
    する手段と、 上記iの値とi番目の位置に含まれるオフセット値の合
    計値が、対応する上記データのエントリを決定するイン
    デックスとなるようなオフセット・ベクトルを保持する
    手段と、 上記オフセット・ベクトルのi番目の位置の一つが検索
    されるように、検索対象であるデータの対応するキーの
    ハッシングを実行する手段と、 上記オフセット・ベクトルのi番目の位置へのハッシン
    グにより指示された上記エントリのベクトルから、検索
    対象であるデータを取り出す手段とからなる、データ検
    索装置。
  8. 【請求項8】データ処理装置においてデータを検索する
    方法であって、 上記データ処理装置が、各データのエントリのキーのハ
    ッシュ値iに依存した順序で、N個のエントリのベクト
    ルとして該データを保持する手段とともに、該iの値と
    i番目の位置に含まれるオフセット値の合計値が、対応
    する該データのエントリを決定するインデックスとなる
    ようなオフセット・ベクトルを保持する手段を具備して
    おり、 上記オフセット・ベクトルのi番目の位置の一つが検索
    されるように、検索対象であるデータの対応するキーの
    ハッシングを実行するステップと、 上記オフセット・ベクトルのi番目の位置へのハッシン
    グにより指示された上記エントリのベクトルから、検索
    対象であるデータを取り出すステップとからなる、デー
    タ検索方法。
JP2019393A 1989-01-31 1990-01-31 データを構成、管理又は検索するための方法及び装置 Expired - Fee Related 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 JPH02231675A (ja) 1990-09-13
JPH0748220B2 true JPH0748220B2 (ja) 1995-05-24

Family

ID=23177588

Family Applications (1)

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

Country Status (2)

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

Families Citing this family (16)

* 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
JP3466054B2 (ja) 1997-04-18 2003-11-10 富士通株式会社 グループ化と集計演算処理方式
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
KR100485819B1 (ko) * 2001-08-09 2005-04-28 삼성전자주식회사 디지털 데이터의 고속 전역 탐색 장치 및 방법
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
JP2006520493A (ja) 2002-09-06 2006-09-07 ユナイテッド ステイツ ポスタル サービス 安全な事前処理が施されたアクセス情報により、保護されているデータを効率的に検索する方法及びシステム
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
JP2007241378A (ja) * 2006-03-06 2007-09-20 Data Henkan Kenkyusho:Kk 検索装置及びそのプログラム
WO2018056993A1 (en) * 2016-09-22 2018-03-29 Visa International Service Association Techniques for in-memory data searching
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

Family Cites Families (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 ハツシングテ−ブルの動的サイズ変更方式

Also Published As

Publication number Publication date
EP0381418A3 (en) 1991-11-27
EP0381418A2 (en) 1990-08-08
JPH02231675A (ja) 1990-09-13

Similar Documents

Publication Publication Date Title
JPH0748220B2 (ja) データを構成、管理又は検索するための方法及び装置
McCreight A space-economical suffix tree construction algorithm
Aoe An efficient digital search algorithm by using a double-array structure
Morrison PATRICIA—practical algorithm to retrieve information coded in alphanumeric
US5287499A (en) Methods and apparatus for information storage and retrieval utilizing a method of hashing and different collision avoidance schemes depending upon clustering in the hash table
JP2502469B2 (ja) 文字デ―タを圧縮し圧縮済みデ―タを展開するための静的辞書構造を提供する方法および手段
US6643653B1 (en) Method and apparatus for identifying a data sequence related to a given data sequence
WO2004036589A1 (en) Virtual content addressable memory with high speed key insertion and deletion and pipelined key search
RU97112940A (ru) Способ и устройство сжатия данных с использованием ассоциативной памяти
KR100414052B1 (ko) 주기억장치 데이터베이스의 인덱스 데이터 관리방법
JP2004194343A (ja) パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおけるパス圧縮最適化のためのシステム及び方法
EP1040430B1 (en) Management in data structures
US8204882B2 (en) Method for accessing a storage unit during the search for substrings, and a corresponding storage unit
KR20210028576A (ko) 네트워크 키 값 인덱싱 설계
EP0567668A1 (en) A computer system for retrieval of information
Shishibori et al. An efficient compression method for Patricia tries
JP2000187607A (ja) 名前変換装置および記録媒体
JPH10177582A (ja) 最長一致検索方法及び装置
Grune Choosing a tag‐list algorithm for a compiler with special application to the ALEPH compiler
JP3564173B2 (ja) 相対編成フアイルのアクセス装置
JP2679627B2 (ja) フォント検索処理装置
JPS6261118A (ja) 木構造インデクスの検索方式
CN108133052A (zh) 一种多关键字的搜索方法、系统、介质及设备
CA2105046A1 (en) Sequential pattern memory searching and storage management technique
KR19990058595A (ko) 이진 트리에서의 동일 데이터 처리방법

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070905

Year of fee payment: 10

FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 11

Free format text: PAYMENT UNTIL: 20080905

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090905

Year of fee payment: 12

LAPS Cancellation because of no payment of annual fees