JPH1166095A - データ管理装置 - Google Patents

データ管理装置

Info

Publication number
JPH1166095A
JPH1166095A JP9227931A JP22793197A JPH1166095A JP H1166095 A JPH1166095 A JP H1166095A JP 9227931 A JP9227931 A JP 9227931A JP 22793197 A JP22793197 A JP 22793197A JP H1166095 A JPH1166095 A JP H1166095A
Authority
JP
Japan
Prior art keywords
index
data
registered
hash
index number
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
JP9227931A
Other languages
English (en)
Other versions
JP3056704B2 (ja
Inventor
Akihiro Oyamada
秋広 小山田
Masashige Nakamori
正茂 中森
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP9227931A priority Critical patent/JP3056704B2/ja
Publication of JPH1166095A publication Critical patent/JPH1166095A/ja
Application granted granted Critical
Publication of JP3056704B2 publication Critical patent/JP3056704B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【課題】 検索効率を犠牲にせず、有限なメモリ空間内
でデータ管理を効率的に行う。 【解決手段】 ハッシュ表において、インデックス番号
は、各データを登録するために設けられたインデックス
を識別するための番号である。ハッシュ値は、インデッ
クスに実際に登録されるデータのハッシュ値である。先
頭インデックス番号は、このインデックスに本来登録さ
れるべきデータを連結して形成したハッシュチェーンの
先頭のデータが実際に登録されているインデックスのイ
ンデックス番号である。後方インデックス番号は、この
インデックスを含むハッシュチェーンにおいてこのイン
デックスに続く直後のインデックスのインデックス番号
である。当該インデックスが終端の場合は終端識別情報
が設定される。データには、このインデックスにおいて
管理される実際のデータが格納される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータ等に
おいてデータを登録して管理するためのデータ管理装
置、特にデータの登録、検索をハッシングにより行う場
合の改良されたデータ管理装置に関する。
【0002】
【従来の技術】従来からコンピュータにおいてデータの
格納、検索等のデータ管理を行う一つの手法としてハッ
シュ法がある。ハッシュ法は、登録するレコードデータ
(以下、単に「データ」ともいう)又はその一部の値を
直接入力とするハッシュ関数を用いて、その出力(ハッ
シュ値)をデータの格納場所とすることを原理としてい
る。このハッシュ関数の入力値を一般に探索キーと称し
ている。例えば、人名とその人の年齢とのデータの組を
格納する際に人名をハッシュ関数の入力値としてその格
納場所を決定しようとする場合、人名及び年齢がレコー
ドデータであり、レコードデータの一部を構成する人名
が探索キーに相当する。ハッシュ法は、登録するデータ
そのものを用いるためデータの検索処理の高速化を図る
ことができる。
【0003】ハッシュ関数は、出力するハッシュ値が重
複しないように作成された演算式などから構成される
が、扱う探索キーの種別やデータ量によっては、同じハ
ッシュ値となる探索キーが存在する場合がある。この場
合、後から登録しようとするデータは、ハッシュ関数か
ら返されたハッシュ値をデータの格納場所とすることが
できない。このいわゆる衝突が発生した場合の代表的な
対処方法としてオープンアドレス法とチェーン法とがあ
る。
【0004】まず、オープンアドレス法について、図8
を用いて説明する。
【0005】オープンアドレス法は、クローズドハッシ
ュ法、再ハッシュ法とも呼ばれ、データ格納場所を予め
固定的に持つものである。なお、データを格納する場所
は、一般に「ハッシュ表」といわれている。また、これ
以降、各データの登録場所を「インデックス」と称する
ことにする。各インデックスにはインデックス番号が設
定されている。なお、この登録場所を「バケット」とい
う場合もある。
【0006】データを登録する際、図8において最初に
処理されるデータaのハッシュ値は3なので、データa
はインデックス番号が3のインデックスに登録される。
このように、ハッシュ法では、返されたハッシュ値と同
じインデックス番号の領域にデータを登録することを基
本としている。次に処理されるデータbのハッシュ値は
1なので、データbはインデックス番号が1のインデッ
クスに登録される。次に処理されるデータcのハッシュ
値は1なので、本来的にはインデックス番号が1のイン
デックスに登録されるべきであるが、そこには既にデー
タbが登録されているので、他の空のインデックスを探
さなくてはならない。衝突が発生した場合に他のインデ
ックスを取得する手法としては、複数のハッシュ関数を
用意しておく手法がある。衝突が発生した場合には登録
されるべきインデックスの後に続く最初の空きインデッ
クスに登録するというルールの場合のハッシュ関数は、
「元のハッシュ値+1」、「元のハッシュ値+2」・・
・という内容になる。従って、このルールに従えば、デ
ータcは、インデックス番号1に続くインデックス番号
2のインデックスに登録されることになる。続いて、デ
ータdのハッシュ値は2なので、本来的にはインデック
ス番号が2のインデックスに登録されるべきであるが、
そこには既にデータcが登録されているので、上述した
ルールに従うことによりデータdは、インデックス番号
が3のインデックスに登録される。このように、オープ
ンアドレス法では、衝突が発生したときには再ハッシュ
を行うことで有限のデータ格納領域に各データを登録し
ていく。
【0007】また、データ検索処理は、前述したデータ
登録処理と同様の手順で処理を実行すれば、所望のデー
タを検索することができる。
【0008】また、データを削除する場合には、多少の
工夫が必要となる。なぜなら、データ検索をする際の検
索処理の終了条件が空のインデックスに出会ったときな
ので、登録されたデータを無条件に削除してしまったら
その削除したデータのところでデータ検索が中断してし
まい、それ以降のインデックスに登録されたデータは検
索できなくなってしまうからである。そこで、物理的な
データ削除を行わずに削除データが登録されていたイン
デックスにフラグやマークを書き込むことで論理的な削
除を行い、データ検索の際にはこの論理的に削除したイ
ンデックス以降に対する検索を可能にしている。また、
検索途中に空のインデックスができないようにデータの
移動を行う場合もある。
【0009】次に、チェーン法について、図9を用いて
説明する。
【0010】チェーン法は、直接チェーン法、オープン
ハッシュ法とも呼ばれ、ハッシュ表以外にオーバーフロ
ー領域を持っている。
【0011】図9において、最初に処理されるデータa
のハッシュ値は1なので、データaはインデックス番号
が1のインデックスに登録される。次に処理されるデー
タbのハッシュ値は2なので、データbはインデックス
番号が2のインデックスに登録される。次に処理される
データcのハッシュ値は2なので、本来的にはインデッ
クス番号が2のインデックスに登録されるべきである
が、そこには既にデータbが登録されているので、他の
格納場所を探さなくてはならない。そこで、チェーン法
では、オーバーフロー領域に新たにインデックスを作成
し、本来登録されるべきインデックス番号2のインデッ
クスにあるポインタからそのインデックスを連結する。
次に、データcのハッシュ値は2なので、本来的にはイ
ンデックス番号が2のインデックスに登録されるべきで
あるが、そこには既にデータbが登録されているので、
オーバーフロー領域にインデックスを作成し、インデッ
クス番号2のインデックスから始めるチェーンの最後尾
にそのインデックスを連結する。同様にしてハッシュ値
2のデータeをそのチェーンの最後尾に接続する。この
同じハッシュ値を持つデータのチェーンを「クラスタ」
又は「リスト」という。クラスタの最後尾のインデック
スのポインタには、終端を意味する値が書き込まれる。
図9では、これを「×」で表す。このように、チェーン
法では、衝突が発生したときにはオーバーフロー領域に
インデックスを作成していくので、図8におけるデータ
dのように本来登録されるべきインデックス以外に再ハ
ッシュされることはない。
【0012】なお、チェーン法には、図9に示したダイ
ナミックな領域にインデックスを作成してクラスタを形
成する手法以外に、図10に示したようにスタティック
な領域すなわちハッシュ表内にクラスタを形成するとい
うややオープンアドレス法に近い手法もある。この手法
では、また、本来登録されるべきインデックスに他のハ
ッシュ値を持つデータが衝突回避により既に格納されて
いると、登録済みのデータを移動させるようにする場合
もある。
【0013】また、データ検索処理は、前述したデータ
登録処理と同様の手順で処理を実行すれば、所望のデー
タを検索することができる。
【0014】また、データを削除する場合には、オープ
ンアドレス法とほぼ同様でクラスタ内のチェーンを切ら
さないようにするために空きのインデックスをそのまま
残すなど対処する必要がある。
【0015】
【発明が解決しようとする課題】以上のように、従来の
検索途中に空きのインデックスを作らないようにするた
めにフラグ等を書き込むような手法を用いると、インデ
ックスの再利用をすることができず効率的でなく、かつ
データ記憶領域を無駄に使ってしまう。
【0016】また、データの追加若しくは削除の際に登
録済みのデータを移動させるような手法を用いると、そ
の処理が面倒でかつ煩雑である。
【0017】特に、複数のハッシュ表を対応させて管理
している場合、扱うデータを階層的に管理している場合
などでは、1つのデータの削除のみで他のデータに対し
てもデータの移動やポインタ等の更新などの更新処理を
行わなくてはならず、その処理が極めて煩雑となってし
まう。大量のデータを扱う場合はデータの保証ができな
くなってしまう可能性もあり得る。
【0018】本発明は以上のような問題を解決するため
になされたものであり、その目的は、検索効率を犠牲に
せず、有限なメモリ空間内でデータ管理を効率的に行う
ことのできるデータ管理装置を提供することにある。
【0019】
【課題を解決するための手段】以上のような目的を達成
するために、第1の発明に係るデータ管理装置は、ハッ
シュ関数を用いて登録するデータの格納場所を決定する
データ管理装置において、データを登録するためのイン
デックスを予め保持するハッシュ表を記憶するハッシュ
表記憶手段と、ハッシュ関数に用いて特定した前記イン
デックスにデータを登録し、また、登録したデータの検
索を行うデータ管理手段とを有し、前記ハッシュ表のイ
ンデックス毎に、インデックスを識別するためのインデ
ックス番号と、このインデックスに実際に登録したデー
タのハッシュ値と、このインデックスに本来登録される
べきデータを連結して形成したハッシュチェーンの先頭
のデータが実際に登録されているインデックスのインデ
ックス番号である先頭インデックス番号と、このインデ
ックスを含む前記ハッシュチェーンにおいてこのインデ
ックスに続く直後のインデックスのインデックス番号で
ある後方インデックス番号とをそれぞれ登録する領域を
持たせたものである。
【0020】第2の発明に係るデータ管理装置は、第1
の発明において、前記データ管理手段は、ハッシュ関数
に用いて特定した登録インデックスにデータを登録する
データ登録部を有し、前記データ登録部は、前記登録イ
ンデックスのハッシュ値の領域に登録データに基づく実
際のハッシュ値を登録し、また、前記登録インデックス
が前記ハッシュチェーンの先頭の場合は、本来的に前記
データが登録されるべきインデックスであるホームポジ
ションの先頭インデックス番号の領域に前記登録データ
が実際に登録されたインデックス番号を登録し、前記登
録インデックスが前記ハッシュチェーンの先頭でない場
合は、前記ハッシュチェーンにおける前記登録インデッ
クス直前のインデックスの後方インデックス番号に前記
登録インデックスのインデックス番号を登録し、前記登
録インデックスが前記ハッシュチェーンの終端でない場
合は、前記登録インデックスの後方インデックス番号に
前記ハッシュチェーンにおける前記登録インデックス直
後のインデックスのインデックス番号を登録するもので
ある。
【0021】第3の発明に係るデータ管理装置は、第1
の発明において、前記データ管理手段は、検索対象デー
タのホームポジションの先頭インデックス番号から前記
ハッシュチェーンをたどることによって前記検索対象デ
ータを検出するデータ検索部を有するものである。
【0022】第4の発明に係るデータ管理装置は、第1
の発明において、前記データ管理手段は、削除対象デー
タのホームポジションの先頭インデックス番号から前記
ハッシュチェーンをたどることによって前記削除対象デ
ータを登録している削除インデックスから前記削除対象
データを削除するデータ削除部を有し、前記データ削除
部は、前記削除対象データを登録した削除インデックス
のハッシュ値の領域を初期化し、また、前記削除インデ
ックスが前記ハッシュチェーンの終端でありかつ先頭で
ない場合は、前記ハッシュチェーンにおける前記削除イ
ンデックス直前のインデックスの後方インデックス番号
を初期化し、前記削除インデックスが前記ハッシュチェ
ーンの中間にある場合は、前記削除インデックスの後方
インデックス番号で前記ハッシュチェーンにおける前記
削除インデックス直前のインデックスの後方インデック
ス番号を更新すると共に、前記削除インデックスの後方
インデックス番号を初期化し、前記削除インデックスが
前記ハッシュチェーンの先頭にある場合は、前記削除イ
ンデックスの後方インデックス番号を初期化し、前記ハ
ッシュチェーンにおける前記削除インデックス直後にイ
ンデックスが存在した場合は、更に前記削除インデック
スの後方インデックス番号で前記ホームポジションの先
頭インデックス番号を更新するものである。
【0023】
【発明の実施の形態】以下、図面に基づいて、本発明の
好適な実施の形態について説明する。
【0024】図1は、本発明に係るデータ管理装置の一
実施の形態を示したブロック構成図である。このデータ
管理装置は、ハッシュ表を記憶するハッシュ表記憶部1
と、ハッシュ表へのデータの登録、検索、削除等のデー
タ管理を行うデータ管理部2と、外部から受け付けたデ
ータアクセス要求をデータ管理部2に渡すと共にその要
求に対する処理結果を返答する入出力処理部3とで構成
される。データ管理部2には、データの登録、検索、削
除処理をそれぞれ行うデータ登録部4、データ検索部5
及びデータ削除部6が含まれている。データ管理部2
は、一般的なコンピュータで実現可能であり、これらデ
ータ管理部2が提供する諸機能は、CPU及びCPUで
動作するアプリケーションプログラムによって実現され
る。
【0025】図2は、本実施の形態において管理される
ハッシュ表の内容構成を示した図である。ハッシュ表に
は、インデックス毎に、インデックス番号、ハッシュ
値、先頭インデックス番号、後方インデックス番号及び
データをそれぞれ登録するための各領域7〜11が設け
られている。このうち、インデックス番号は、各データ
を登録するために設けられたインデックスを識別するた
めの番号である。インデックス番号は、一般的にいうハ
ッシュ関数の出力(ハッシュ値)であり、0,1,2,
・・,N−1(Nは管理すべきデータ数)という格納ア
ドレスに相当する。本実施の形態においても従来と同様
に0,1,2,・・,N−1という連続した数字で表
す。ハッシュ値の領域8には、各インデックスに実際に
登録されたデータのハッシュ値が登録される。先頭イン
デックス番号の領域9には、このインデックスに本来登
録されるべきデータを連結して形成したハッシュチェー
ンの先頭のデータが実際に登録されているインデックス
のインデックス番号が登録される。ハッシュチェーンと
は、ハッシュ関数が返すハッシュ値が同一のデータを連
結して形成されるインデックスの連結リストのことであ
る。チェーン法ではこの連結リストのことをクラスタと
いうが、本実施の形態は同等の目的を有するものの従来
のクラスタとはチェーンの方法、用いるポインタ情報等
が異なるため「ハッシュチェーン」と称することにす
る。後方インデックス番号の領域10には、このインデ
ックスを含むハッシュチェーンにおいてこのインデック
スに続く直後のインデックスのインデックス番号が登録
される。当該インデックスが終端の場合は終端識別情報
が設定される。データの領域11には、このインデック
スにおいて管理される実際のデータが格納される。この
データの中には、検索キーが含まれている。
【0026】本実施の形態においては、チェーン法のよ
うなオーバーフロー領域を持たない。従って、予め用意
した有限のデータ領域のみを使用するという点ではオー
プンアドレス法を基本にしている。本実施の形態では、
少なくとも登録データ数分(N個)のインデックスを予
め保持するようにしている。一方、データを連結して管
理するという点では、チェーン法に類似している。
【0027】次に、本実施の形態におけるデータの登
録、検索、削除の各処理について説明する。図3及び図
4は、本実施の形態の各処理を説明するためにハッシュ
表の内容例の遷移を示した図である。図3及び図4に示
したハッシュ表においては、インデックス数を6として
いる。ハッシュ表のために必要な領域は、ハッシュ表記
億部1に予め確保されているが、その内容は初期化され
ている。このうち、全インデックスの後方インデックス
番号の領域10には、後方に連結するインデックスがな
いことを意味する終端識別情報が初期値として予め設定
されている。本実施の形態では“−1”を設定してい
る。なお、説明に関係のないインデックスの内容を省略
している。まず、データ登録部4におけるデータの登録
処理について図5に示したフローチャートに基づいて説
明する。
【0028】データの登録は、ハッシュ関数により返さ
れたハッシュ値と同じインデックス番号のインデックス
に登録できる場合と、既に他のデータが登録されていて
他の空きインデックスを探さなくてはならない場合とが
ある。また、ハッシュ値と同じインデックス番号のイン
デックスに登録できる場合でも当該ハッシュ値を持つデ
ータのハッシュ表への最初の登録の場合とインデックス
の再利用などによる2番目以降の登録の場合とがある。
一方、他のインデックスを探す場合でも本来登録される
べきインデックスが自己と同じハッシュ値を持つデータ
により使用されている場合と自己と異なるハッシュ値を
持つデータにより使用されている場合と、更には他のイ
ンデックスを探した結果、それが再利用可能なインデッ
クスの場合とがある。ここでは、最初にハッシュ値を持
つデータの最初の登録の場合から説明する。
【0029】データ登録部4は、登録すべきデータの検
索キーに基づいてハッシュ関数によりハッシュ値を取得
する(ステップ101)。なお、ハッシュ法では、一般
にハッシュ関数が返したハッシュ値に相当するインデッ
クスにデータを登録することを基本的な原理としている
が、本実施の形態では、この原理に基づくハッシュ関数
が返したハッシュ値、すなわち本来的にデータが登録さ
れるべきインデックスを「ホームポジション」と称する
ことにする。例えば、ハッシュ値1のデータAがインデ
ックス番号5のインデックスに登録された場合でも、そ
のデータAのホームポジションはインデックス番号1で
ある。次に、取得したハッシュ値に相当するインデック
スすなわちホームポジションの先頭インデックス番号
(先頭IDXno.)の設定内容を取得する(ステップ
102)。先頭インデックス番号は、このインデックス
に本来登録されるべきデータを連結したハッシュチェー
ンの先頭のデータが実際に登録されているインデックス
のインデックス番号であるので、ここに何か設定されて
いれば、同じハッシュ値のデータがハッシュ表に既に登
録されていることを意味している。逆に、ここに何か設
定されていないということは、同じハッシュ値のデータ
がハッシュ表に全く登録されていないことを意味してい
る。ここに何も設定されていない場合(ステップ10
3)、次にホームポジションのハッシュ値(hash)
を取得する(ステップ104)。ここの領域8には、こ
のインデックスに実際に登録されているデータのハッシ
ュ値が登録されるので、何も設定されていなければ、こ
のインデックスは、未使用であることを意味している。
従って、未使用の場合(ステップ105)、処理対象の
データは、ホームポジションへ登録することができるこ
とになる。登録すべきインデックスが特定できると、そ
のインデックスのハッシュ値の領域8に実際のハッシュ
値を、先頭インデックス番号の領域9には、自己のイン
デックス番号を、それぞれ登録する(ステップ10
6)。もちろん、データ(DATA)の領域11には、
登録すべきデータを格納する。なお、後方インデックス
番号(後方IDXno.)の領域10には、終端識別情
報が初期値として設定されているので、ここで改めて設
定する必要はない。
【0030】図3(a)には、ハッシュ値1及び3のデ
ータがそれぞれホームポジションに登録できた例が示さ
れており、各インデックスのハッシュ値の領域8に実際
のハッシュ値1,3が、各インデックスの先頭インデッ
クス番号の領域9には、自己のインデックス番号1,3
が、それぞれ登録されている。なお、ハッシュ値の右下
に付した番号i(iは自然数)は、便宜のため処理対象
のデータのうちそのハッシュ値となったi番目のデータ
であることを示している。
【0031】次に、ホームポジションに自己と同じハッ
シュ値を持つデータが既に登録されている場合について
説明する。すなわち、同一ハッシュ値における2番目以
降のデータの登録処理である。ここでは、図3(b)に
示したようにハッシュ値1のデータを登録する場合を例
にして説明する。
【0032】上記と同様にしてハッシュ値1を取得し
(ステップ101)、そのハッシュ値1のホームポジシ
ョンの先頭インデックス番号の設定内容を取得すると
(ステップ102)、ここでは当該データのハッシュ値
と同じ1が既に設定されていることがわかる。続いて、
そのインデックス番号1のハッシュ値を取得すると(ス
テップ107)、初期化されてなく1が既に登録されて
いるので他のデータが既に登録されていることがわか
る。従って、衝突を回避するために空きのインデックス
を見つけなくてはならない(ステップ108,10
9)。この空きのインデックスの検索方法は、従来と同
様でよい。本実施の形態では、ホームポジションの後に
続く最初の空きインデックスに登録するようにする。こ
の例では、インデックス番号2に当該データを格納する
ことになる。従って、このインデックス番号2のインデ
ックスのハッシュ値の領域8には実際のハッシュ値1
が、データの領域11には、登録すべきデータが、それ
ぞれ登録される(ステップ110)。なお、ここに登録
されるデータは、2番目のハッシュ値1のデータである
ため、ハッシュ値1の右下に“2”を付して示してい
る。この例だと、インデックス番号1と2のデータは、
ハッシュ値1のハッシュチェーンを形成することにな
る。なお、インデックス番号2の先頭インデックス番号
の領域9には、ハッシュ値2のデータを連結したハッシ
ュチェーンの先頭のデータが実際に登録されているイン
デックスのインデックス番号が登録されることになる
が、この例ではまだハッシュ値2のデータは存在しない
ので、初期値つまり未登録を示すハイフン“−”のまま
である。また、インデックス番号2のインデックスに登
録されるデータは、ハッシュ値1のデータで形成される
ハッシュチェーンの終端であるため、初期値“−1”が
そのまま設定される。このようにして、新たに登録する
データのインデックスは作成される。
【0033】一方、今までハッシュ値1のハッシュチェ
ーンの終端であったインデックス番号1のインデックス
は、終端でなくなるため、そのインデックスの後方イン
デックス番号にここで新たに登録したデータのインデッ
クス番号を登録しなければならない(ステップ11
1)。具体的には、インデックス番号1の後方インデッ
クス番号に2を登録しなければならない。これは、次の
ようにして行う。
【0034】まず、新たに登録したデータのハッシュ値
1のホームポジションの先頭インデックス番号を参照す
る。この例では、ハッシュ値1のホームポジション(イ
ンデックス番号1)のインデックスの先頭インデックス
番号を参照すると“1”が登録されている。次に、先頭
インデックス番号に登録されているインデックス番号1
のインデックスの後方インデックス番号を参照すると
“−1”が登録されているのでこのインデックスがハッ
シュチェーンの終端であることがわかる。従って、この
インデックス番号1の後方インデックス番号を新たに登
録したデータのインデックス番号“2”で更新する。も
し、図3(d)のようにインデックス番号1の後方イン
デックス番号が“2”のときには、続いてインデックス
番号2の後方インデックス番号を参照するというように
ハッシュチェーンをたどっていくように検索する。
【0035】以上のようにして、ホームポジションに自
己と同じハッシュ値を持つデータが既に登録されている
場合でも支障なくデータをハッシュチェーンの終端に登
録することができる。
【0036】次に、ホームポジションに自己と異なるハ
ッシュ値を持つデータによって既に登録されている場合
について説明する。ここでは、図3(c)に示したよう
にハッシュ値2のデータを登録する場合を例にして説明
する。
【0037】図3(b)において、上記と同様にしてハ
ッシュ値2を取得し(ステップ101)、そのハッシュ
値2のホームポジション(インデックス番号2)の先頭
インデックス番号の設定内容を取得すると(ステップ1
02)、ここでは未設定“−”であることがわかる。続
いて、そのインデックス番号2のハッシュ値を取得する
と(ステップ104)、1が既に登録されているので他
のデータが既に登録されていることがわかる(ステップ
105)。従って、衝突を回避するために空きのインデ
ックスを見つけなければならない(ステップ112)。
この空きのインデックスの検索方法は、上記と同様にホ
ームポジションの後に続く最初の空きインデックスに登
録するようにする。この例では、インデックス番号4に
当該データを格納することになる。従って、このインデ
ックス番号4のインデックスのハッシュ値の領域8には
実際のハッシュ値4が、データの領域11には、登録す
べきデータが、それぞれ登録される(ステップ11
3)。なお、ここに登録されるハッシュ値2のデータ
は、1番目のハッシュ値2のデータであるため、ハッシ
ュ値“2”の右下に“1”を付して示している。また、
ハッシュ表には、ハッシュ値4のデータがまだ登録され
ていないので、インデックス番号4のインデックスの先
頭インデックス番号の領域9には、初期値つまり未登録
を示すハイフン“−”のままである。また、インデック
ス番号4のインデックスに登録されるデータは、ハッシ
ュ値2のデータで形成されるハッシュチェーンの終端で
あるため、後方インデックス番号の領域10には初期値
“−1”がそのまま設定される。このようにして、新た
に登録するデータのインデックスは作成される。
【0038】更に、この場合は当該データのホームポジ
ション(インデックス番号2のインデックス)の先頭イ
ンデックス番号の領域9には、ハッシュ値2の最初のデ
ータが登録されたインデックス番号“4”が登録される
ことになる(ステップ114)。
【0039】この処理で明らかなように、各インデック
スの先頭インデックス番号は、当該インデックスに格納
されるデータに関する情報というよりも当該インデック
スのインデックス番号をハッシュ値とするデータに関す
る情報であるということができる。このように、本実施
の形態によれば、先頭インデックス番号をハッシュ表に
持たせるようにしたので、ホームポジションに自己と異
なるハッシュ値を持つデータによって既に登録されてい
る場合でもデータの移動をさせなくても支障なくデータ
の管理を行うことができる。
【0040】データ登録処理としては、インデックスの
再利用の場合についての説明が残っているが、この処理
については後述する。図3(d)には、ハッシュ値1の
データdata13を更に登録したときのハッシュ表の
内容例が示されているが、ホームポジションに自己と同
じハッシュ値を持つデータが既に登録されている場合の
登録処理を実行することでこの内容が得られる。
【0041】次に、データ検索部5におけるデータの検
索処理について図6に示したフローチャートに基づいて
説明する。ここでは、図3(d)のハッシュ表を用いて
データdata13を検索する場合を例にする。
【0042】データ検索部5は、指定された検索キーに
基づいてハッシュ関数によりハッシュ値を取得すると
(ステップ201)、その取得したハッシュ値に相当す
るインデックスすなわちホームポジションの先頭インデ
ックス番号の設定内容を取得する(ステップ202)。
図3(d)の例に基づくと、ハッシュ値1のホームポジ
ションの先頭インデックス番号“1”を取得する。先頭
インデックス番号は、このハッシュ値のデータにより形
成されるハッシュチェーンの先頭のデータが実際に登録
されているインデックスのインデックス番号であるの
で、このインデックスから順にハッシュチェーンをたど
っていけば、検索対象のデータを検索することができる
はずである。従って、ホームポジションの先頭インデッ
クス番号に登録されているインデックス番号を取得し、
更にそのインデックス番号のインデックスのデータの領
域11に含まれている検索キーを取得する(ステップ2
04)。図3(d)の例に基づくと、インデックス番号
1のインデックスの検索キーを取得する。ここで、指定
された検索キーとハッシュ表から取得した検索キーとを
比較し、一致すればデータが検出できたことになる(ス
テップ205,206)。一致しなければ、当該インデ
ックスの後方インデックス番号に登録されているインデ
ックス番号を取得する(ステップ207)。この処理
は、ハッシュチェーンをたどり、直後のインデックスに
処理の対象を移すことを意味している。図3(d)の例
では、インデックス番号1のインデックスの検索キーと
指定された検索キーとは一致しないので、インデックス
番号1のインデックスの後方インデックス番号“2”を
取得する。インデックス番号が取得できれば、更にその
インデックス番号のインデックスのデータの領域11に
含まれている検索キーを取得する(ステップ208,2
09)。そして、ステップ205に戻り、上述したよう
に検索キーの比較を行う。この処理を検索キーが一致す
るまで繰り返し行うことで処理対象となるデータを検出
することができる(ステップ205,206)。もし、
後方インデックス番号から取得した値が終端を示す値
“−1”であれば、既にハッシュチェーンの終端に達し
ていたことになるので、検索対象となるデータは、登録
されていないことになる(ステップ208,210)。
また、最初からホームポジションの先頭インデックス番
号にインデックス番号が登録されていない場合も(ステ
ップ203)、データは登録されていないことになる
(ステップ211)。
【0043】以上のようにして、検索されたデータは、
入出力処理部3を介して出力される。図3(d)の例で
は、インデックス番号1の後方インデックス番号“2”
を取得した後、インデックス番号2のインデックスの検
索キーと指定された検索キーとを比較し、一致しないの
で、更にインデックス番号2のインデックスの後方イン
デックス番号“5”を取得した後、インデックス番号5
のインデックスの検索キーと指定された検索キーとを比
較すると一致することになる。
【0044】本実施の形態によれば、ハッシュ関数を1
回だけ用いてハッシュ値を取得し、その後はハッシュチ
ェーンを単にたどっていくことでデータ検索を行うとい
う非常に簡単な処理で実現することができる。また、デ
ータ検索を、ポインタ情報つまり後方インデックス番号
に基づきハッシュチェーンをたどっていくという処理内
容としたので、ハッシュ表の途中に空きインデックスが
あったとしても中断されることなく最終的にデータを検
索することができる。もちろん、データ検索のために論
理的な削除を示すフラグ等は不要である。
【0045】次に、データ削除索部6におけるデータの
削除処理について図7に示したフローチャートに基づい
て説明する。
【0046】データ削除部6は、指定された検索キーに
基づき削除すべきデータを検索するが(ステップ30
1)、この処理は上記データ検索処理と同様なので説明
を省略する。削除すべきデータを登録しているインデッ
クスが特定できると(ステップ302)、そのインデッ
クスがハッシュチェーンの終端であるかどうかを調べる
(ステップ303)。これは、当該インデックスの後方
インデックス番号が“−1”であれば終端であると判断
できる。この場合、当該インデックスのハッシュ値及び
データを初期化する(ステップ304)。なお、当該イ
ンデックスの先頭インデックス番号は、更新せず、ま
た、後方インデックス番号は既に“−1”である。な
お、データ自体は、初期化してもしなくてもかまわない
が、本実施の形態ではデータ削除処理時に初期化するこ
とにする。続いて、ハッシュチェーンにおける当該イン
デックスの直前のインデックスの後方インデックス番号
を初期化する(ステップ305)。直前のインデックス
の後方インデックス番号には、削除対象のデータを含む
インデックスのインデックス番号が登録されているはず
なので、ホームポジションからハッシュチェーンをたど
っていけば、容易に直前のインデックスを見つけること
ができる。図3(d)の状態からインデックス番号5に
登録したデータをハッシュ表から削除したときの内容が
図3(c)になる。図3(c)に示したようにインデッ
クス番号2の後方インデックス番号は“−1”に戻る。
【0047】次に、当該インデックスがハッシュチェー
ンの終端でないとき、ハッシュチェーンの中間に位置す
るかどうかを調べる(ステップ306)。これは、当該
インデックスの後方インデックス番号が“−1”でなく
かつ当該インデックスのインデックス番号と先頭インデ
ックス番号が一致しなければ中間であると判断できる。
この場合、後方インデックス番号を一時保持した後、当
該インデックスのハッシュ値、データ及び後方インデッ
クス番号を初期化する(ステップ307)。なお、当該
インデックスの先頭インデックス番号は、更新しない。
続いて、一時保持した後方インデックス番号で、ハッシ
ュチェーンにおける当該インデックスの直前のインデッ
クスの後方インデックス番号を更新する(ステップ30
8)。この処理によって、ハッシュチェーンから当該イ
ンデックスを抜き去り、直前直後のインデックスをつな
ぎ合わせている。
【0048】この処理の例として、図3(d)に示した
インデックス番号1,2,5で形成されるハッシュ値1
のハッシュチェーンからインデックス番号2のデータを
削除した結果を図4(i)に示すが、この例によると、
図3(d)に示したインデックス番号2のインデックス
の後方インデックス番号“5”を一時保持した後にイン
デックス番号2のインデックスを初期化し、インデック
ス番号2のインデックスの直前のインデックス(インデ
ックス番号1のインデックス)の後方インデックス番号
を一時保持した後方インデックス番号“5”で更新する
ことになる。
【0049】次に、当該インデックスがハッシュチェー
ンの終端でも中間でもないとき、つまり当該インデック
スがハッシュチェーンの先頭にある場合であるが、これ
は次の2つのケースが考えられる。一つは、当該インデ
ックスがハッシュチェーンのホームポジションに登録さ
れている場合であり、もう一つはホームポジションに登
録されていない場合である。図3(c)を例に示すと、
インデックス番号1,3は前者に相当し、インデックス
番号4は後者に相当する。なお、当該インデックスのイ
ンデックス番号と先頭インデックス番号が一致すればハ
ッシュチェーンのホームポジションであると確認するこ
とができる。
【0050】前者の場合、当該インデックスの後方イン
デックス番号を一時保持した後、ハッシュ値、データ及
び後方インデックス番号を初期化する(ステップ30
9,310)。続いて、一時保持した後方インデックス
番号で、当該インデックスの先頭インデックス番号を更
新する(ステップ311)。すなわち、当該インデック
スを含んでいたハッシュチェーンの先頭を2番目のイン
デックスに譲り渡すことになる。図3(d)の状態から
インデックス番号1のデータを削除した場合、図3
(e)に示したように、インデックス番号1のインデッ
クスの先頭インデックス番号は、図3(d)に示したデ
ータ削除前の後方インデックス番号“2”で更新され
る。
【0051】一方、後者の場合、当該インデックスの後
方インデックス番号を一時保持した後、ハッシュ値、デ
ータ及び後方インデックス番号を初期化する(ステップ
309,312)。続いて、一時保持した後方インデッ
クス番号で、当該インデックスのホームポジションの先
頭インデックス番号を更新する(ステップ313)。図
4(f)の状態からインデックス番号4のデータを削除
した場合、図4(g)に示したように、インデックス番
号4のインデックスは初期化され、インデックス番号4
のデータのホームポジション(インデックス番号2のイ
ンデックス)の先頭インデックス番号は、図4(f)に
示したデータ削除前の後方インデックス番号“1”で更
新される。すなわち、ハッシュ値2のハッシュチェーン
の先頭は、インデックス番号1に登録されたデータとな
る。なお、削除すべきデータを登録しているインデック
スが特定できない場合は、データが登録されていないと
みなされる(ステップ302,314)。
【0052】本実施の形態によれば、上述したように非
常に簡単なハッシュチェーンのつながりを更新するだけ
データの削除を行うことができる。また、データを削除
する場合にも論理的な削除を示すフラグ等を用いたりす
る必要がないので後述するインデックスの再利用を可能
にすることができる。更に、データ削除に伴うデータの
格納先を移動する必要もない。
【0053】最後に、インデックスの再利用によるデー
タ登録処理について説明する。インデックスの再利用と
しては、そのインデックスをホームポジションとするデ
ータにより再利用される場合とホームポジションとしな
いデータにより再利用される場合とがある。まず、イン
デックスをホームポジションとするデータにより再利用
される場合について説明する。この処理において、図3
(e)の状態からインデックス番号1のインデックスに
ハッシュ値1のデータdata14を登録したときの結
果を図4(h)に示す。
【0054】データ登録部4は、登録すべきデータの検
索キーに基づいてハッシュ関数によりハッシュ値を取得
し(ステップ101)、そのハッシュ値1のホームポジ
ション(インデックス番号1のインデックス)の先頭イ
ンデックス番号の設定内容を取得すると(ステップ10
2)、ここでは2が既に設定されていることがわかる。
続いて、そのインデックス番号1のインデックスのハッ
シュ値を取得すると(ステップ107)、何も設定され
ていないので、インデックス番号1のインデックスは未
使用であることがわかる。すなわち、ハッシュ表の中に
は、同じハッシュ値1のデータは存在するが、ホームポ
ジションが空いていることがわかる。
【0055】このようにして、データを登録すべきイン
デックスが特定されると、このインデックス番号1のイ
ンデックスの先頭インデックス番号を一時保持した後、
当該インデックスのハッシュ値の領域8には実際のハッ
シュ値1が、データの領域11には登録すべきデータ
が、先頭インデックス番号の領域9には自己のインデッ
クス番号“1”が、それぞれ登録される(ステップ11
5)。なお、ここに登録されるデータは、4番目のハッ
シュ値1のデータであるため、ハッシュ値1の右下に
“4”を付して示している。続いて、一時保持した先頭
インデックス番号で、当該インデックスの後方インデッ
クス番号を更新する(ステップ116)。以上の処理に
より、新たに登録したデータは、ハッシュチェーンの先
頭に入ることになる。
【0056】次に、インデックスをホームポジションと
しないデータにより再利用される場合について説明す
る。この処理は、更に登録するデータが、同一ハッシュ
値がまだ登録されていないときのデータ登録処理と、同
一ハッシュ値における2番目以降のデータの登録処理と
に分けられる。但し、処理フローにおいては、前者は、
ホームポジションに自己と異なるハッシュ値を持つデー
タによって既に登録されている場合の処理(ステップ1
01〜105,112〜114、図3(a)から図3
(c))と、後者は、ホームポジションに自己と同じハ
ッシュ値を持つデータによって既に登録されている場合
の処理(ステップ101〜103,107〜111、図
3(a)から図3(b))と同じ処理で実現できる。
【0057】例えば、前者の場合、図3(e)の状態か
らインデックス番号1のインデックスにハッシュ値4の
データdata41を登録したときの結果は、図4
(j)のようになる。このとき、インデックス番号1の
インデックスのハッシュ値の領域8に実際のハッシュ値
4を登録し(ステップ113)、当該データのホームポ
ジション(インデックス番号4のインデックス)の先頭
インデックス番号の領域9に実際のデータを登録したイ
ンデックス番号1を登録すればよい(ステップ11
4)。
【0058】また、後者の場合、図3(e)の状態から
インデックス番号1のインデックスにハッシュ値2のデ
ータdata22を登録したときの結果は、図4(f)
のようになる。このとき、インデックス番号1のインデ
ックスのハッシュ値の領域8に実際のハッシュ値2を登
録し(ステップ110)、当該ハッシュ値2のハッシュ
チェーンの終端であったインデックス番号4のインデッ
クスの後方インデックス番号に新たに登録したデータの
インデックス番号1を登録すればよい(ステップ11
1)。なお、ハッシュ関数に従えば、ハッシュ値2のデ
ータdata22は、インデックス番号0のインデック
スに登録されるはずであるが、ここでは、便宜上、イン
デックス番号1のインデックスに登録されることにす
る。
【0059】本実施の形態によれば、以上のようにデー
タの登録処理を行っているので、論理的な削除を示すフ
ラグ等を用いなくても済むので、空になったインデック
スを再利用することができる。特に、ホームポジション
が空の場合には、ホームポジションに新たに登録したデ
ータを登録することになるが、この場合は他のインデッ
クスの更新をする必要が一切ない。また、新たに登録し
たデータは、ハッシュチェーンの先頭に入ることになる
が、何ら支障はない。
【0060】以上、本実施の形態におけるデータ管理装
置のデータ登録、検索、削除の各処理をデータが格納さ
れるインデックスの場所毎に説明したが、基本的には以
下の規則に基づき処理が行われる。
【0061】まず、本実施の形態では、同じハッシュ値
を持つデータをハッシュチェーンで連結し管理するよう
にしている。各ハッシュチェーンは、ホームポジション
の先頭インデックス番号に登録されたインデックス番号
のインデックスから始まるようにした。そして、同じハ
ッシュ値を持つ他のデータをハッシュ表に登録する場合
には、当該他のデータを登録するインデックスのインデ
ックス番号を、その先頭のインデックスの後方インデッ
クス番号に登録することで連結する。更に同じハッシュ
値を持つ他のデータを登録する場合も同様にして連結す
る。そして、終端のインデックスの後方インデックス番
号に終端識別情報“−1”を登録することで終端を示
す。
【0062】ハッシュ表にデータを登録する場合、ハッ
シュチェーンに1個のみ存在するときの登録データは、
先頭でもあり終端でもあるが、それ以外の場合は、どの
インデックスに登録するにしろハッシュチェーンの先頭
若しくは終端になる。ハッシュチェーンの先頭となるケ
ースとしては、ハッシュ表に最初の登録される場合とデ
ータが登録されるインデックス(登録インデックス)が
ホームポジションであり再利用される場合である。この
登録インデックスがハッシュチェーンの先頭の場合は、
ホームポジションの先頭インデックス番号の領域にその
登録データが実際に登録されたインデックス番号を登録
する。また、ホームポジションの再利用の場合は、ハッ
シュチェーンの終端でない場合にも相当するが、この場
合は、登録インデックス(ホームポジション)の後方イ
ンデックス番号にハッシュチェーンにおける登録インデ
ックス直後のインデックスのインデックス番号を登録す
る。このように、ハッシュチェーンの先頭になる場合
は、ホームポジションの先頭インデックス番号に登録
し、ホームポジションの再利用の場合は、更にその後方
インデックス番号に登録するだけで容易にハッシュチェ
ーンを形成できる。
【0063】また、データを登録する場合、通常は、終
端に逐次連結していくケースが多いと考えられるが、登
録インデックスがハッシュチェーンの先頭でない場合
は、ハッシュチェーンにおける登録インデックス直前の
インデックスの後方インデックス番号に登録インデック
スのインデックス番号を登録する。本実施の形態では、
各インデックスの後方インデックス番号に終端識別情報
を初期値として登録しているので、ハッシュチェーンの
先頭でない場合は、登録インデックス直前のインデック
スの後方インデックス番号に登録するだけで容易にハッ
シュチェーンを形成できる。
【0064】ハッシュ表に登録したデータを検索する場
合、本実施の形態では、上述したように同じハッシュ値
を持つデータを登録したインデックスをつないでハッシ
ュチェーンを形成しているので、検索対象データのホー
ムポジションの先頭インデックス番号からハッシュチェ
ーンをたどることによって検索対象データを確実に検出
することができる。これは、インデックス毎に先頭イン
デックス番号を持たせ、ホームポジションの先頭インデ
ックス番号を参照すれば、各ハッシュチェーンの先頭を
容易に見つけることができるようにしたからである。す
なわち、本実施の形態によれば、ハッシュ関数を1回だ
け用いてハッシュ値を取得し、その後はハッシュチェー
ンを単にたどっていくという非常に簡単な処理でデータ
を検索することができる。
【0065】ハッシュ表に登録したデータを削除する場
合、その削除対象となるデータを登録しているインデッ
クス(削除インデックス)は、基本的にはハッシュチェ
ーンの先頭、中間、終端のいずれかであるが、ハッシュ
チェーンのどこに存在していようともホームポジション
の先頭インデックス番号から始まったハッシュチェーン
を維持するような処理を行う。まず、削除インデックス
がハッシュチェーンの終端にある場合は、ハッシュチェ
ーンにおける削除インデックス直前のインデックスの後
方インデックス番号を初期化することで削除インデック
スを切り離す。もちろん、削除インデックスが先頭の場
合は、直前のインデックスがないので例外となる。削除
インデックスがハッシュチェーンの中間にある場合は、
削除インデックスの後方インデックス番号でハッシュチ
ェーンにおける削除インデックス直前のインデックスの
後方インデックス番号を更新すると共に、削除インデッ
クスの後方インデックス番号を初期化する。すなわち、
ハッシュチェーンから削除インデックスを抜き去り、そ
の直前直後のインデックスをつなぎ合わせる。削除イン
デックスがハッシュチェーンの先頭にある場合は、削除
インデックスの後方インデックス番号を初期化する。ま
た、通常はこのケースが多くなると考えられるが、ハッ
シュチェーンにおける削除インデックス直後にインデッ
クスが存在した場合は、更に削除インデックスの初期化
前の後方インデックス番号でホームポジションの先頭イ
ンデックス番号を更新する。すなわち、当該ハッシュチ
ェーンの先頭を2番目に引き継ぐ。このように、本実施
の形態によれば、どのインデックスのデータが削除され
ようとも形成したハッシュチェーンの連結を維持するよ
うに処理する。この処理は、上述したとおり、先頭イン
デックス番号や後方インデックス番号を更新するだけで
容易に実行できる。また、ハッシュチェーンを容易かつ
確実に維持できることにより、データ検索処理が確実に
実行できる。もちろん、データ削除処理において論理的
な削除を示すフラグ等を削除インデックスに書き込むよ
うな処理は不要となる。このため、データ記憶領域を無
用に消費することはなく、また、インデックスの再利用
を図ることができる。
【0066】本発明は、ハッシングによりデータを管理
するあらゆるシステムに利用でき、従来からあるオープ
ンアドレス法やチェーン法に並ぶ新たなハッシュ法の一
手法を提示しているといえる。
【0067】
【発明の効果】本発明によれば、ハッシュ表に登録した
インデックス毎に先頭インデックス番号と後方インデッ
クス番号を持たせて、同一のハッシュ値を持つデータを
連結して管理するようにしたので、ハッシュ関数を1回
だけ用いてハッシュ値を取得し、その後はハッシュチェ
ーンを単にたどっていくことでデータ検索を行うという
非常に簡単な処理でデータ検索を実現することができ
る。このため、データを削除したインデックスに論理的
な削除を行うためのフラグ等を書き込まなくてもよいの
で、データ記憶領域を無用に消費することなくデータ検
索を確実に行うことができる。また、データを削除した
インデックスを再利用することができる。
【0068】また、データを登録したり、削除する際に
登録済みのデータを移動させる必要もなく容易にデータ
の登録、削除処理を実行することができる。
【図面の簡単な説明】
【図1】 本発明に係るデータ管理装置の一実施の形態
を示したブロック構成図である。
【図2】 本実施の形態において管理されるハッシュ表
の内容構成を示した図である。
【図3】 本実施の形態の各処理を説明するためにハッ
シュ表の内容例の遷移を示した図である。
【図4】 本実施の形態の各処理を説明するためにハッ
シュ表の内容例の遷移を示した図である。
【図5】 本実施の形態におけるデータ登録処理を示し
たフローチャートである。
【図6】 本実施の形態におけるデータ検索処理を示し
たフローチャートである。
【図7】 本実施の形態におけるデータ削除処理を示し
たフローチャートである。
【図8】 オープンアドレス法を説明するために用いる
図である。
【図9】 チェーン法を説明するために用いる図であ
る。
【図10】 チェーン法を説明するために用いる図であ
る。
【符号の説明】
1 ハッシュ表記憶部、2 データ管理部、3 入出力
処理部、4 データ登録部、5 データ検索部、6 デ
ータ削除部、7 インデックス番号の領域、8ハッシュ
値の領域、9 先頭インデックス番号の領域、10 後
方インデックス番号の領域、11 データの領域。

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 ハッシュ関数を用いて登録するデータの
    格納場所を決定するデータ管理装置において、 データを登録するためのインデックスを予め保持するハ
    ッシュ表を記憶するハッシュ表記憶手段と、 ハッシュ関数に用いて特定した前記インデックスにデー
    タを登録し、また、登録したデータの検索を行うデータ
    管理手段と、 を有し、前記ハッシュ表のインデックス毎に、インデッ
    クスを識別するためのインデックス番号と、このインデ
    ックスに実際に登録したデータのハッシュ値と、このイ
    ンデックスに本来登録されるべきデータを連結して形成
    したハッシュチェーンの先頭のデータが実際に登録され
    ているインデックスのインデックス番号である先頭イン
    デックス番号と、このインデックスを含む前記ハッシュ
    チェーンにおいてこのインデックスに続く直後のインデ
    ックスのインデックス番号である後方インデックス番号
    とをそれぞれ登録する領域を持たせたことを特徴とする
    データ管理装置。
  2. 【請求項2】 前記データ管理手段は、ハッシュ関数に
    用いて特定した登録インデックスにデータを登録するデ
    ータ登録部を有し、 前記データ登録部は、 前記登録インデックスのハッシュ値の領域に登録データ
    に基づく実際のハッシュ値を登録し、 また、前記登録インデックスが前記ハッシュチェーンの
    先頭の場合は、本来的に前記データが登録されるべきイ
    ンデックスであるホームポジションの先頭インデックス
    番号の領域に前記登録データが実際に登録されたインデ
    ックス番号を登録し、 前記登録インデックスが前記ハッシュチェーンの先頭で
    ない場合は、前記ハッシュチェーンにおける前記登録イ
    ンデックス直前のインデックスの後方インデックス番号
    に前記登録インデックスのインデックス番号を登録し、 前記登録インデックスが前記ハッシュチェーンの終端で
    ない場合は、前記登録インデックスの後方インデックス
    番号に前記ハッシュチェーンにおける前記登録インデッ
    クス直後のインデックスのインデックス番号を登録する
    ことを特徴とする請求項1記載のデータ管理装置。
  3. 【請求項3】 前記データ管理手段は、検索対象データ
    のホームポジションの先頭インデックス番号から前記ハ
    ッシュチェーンをたどることによって前記検索対象デー
    タを検出するデータ検索部を有することを特徴とする請
    求項1記載のデータ管理装置。
  4. 【請求項4】 前記データ管理手段は、削除対象データ
    のホームポジションの先頭インデックス番号から前記ハ
    ッシュチェーンをたどることによって前記削除対象デー
    タを登録している削除インデックスから前記削除対象デ
    ータを削除するデータ削除部を有し、 前記データ削除部は、 前記削除対象データを登録した削除インデックスのハッ
    シュ値の領域を初期化し、 また、前記削除インデックスが前記ハッシュチェーンの
    終端でありかつ先頭でない場合は、前記ハッシュチェー
    ンにおける前記削除インデックス直前のインデックスの
    後方インデックス番号を初期化し、 前記削除インデックスが前記ハッシュチェーンの中間に
    ある場合は、前記削除インデックスの後方インデックス
    番号で前記ハッシュチェーンにおける前記削除インデッ
    クス直前のインデックスの後方インデックス番号を更新
    すると共に、前記削除インデックスの後方インデックス
    番号を初期化し、 前記削除インデックスが前記ハッシュチェーンの先頭に
    ある場合は、前記削除インデックスの後方インデックス
    番号を初期化し、前記ハッシュチェーンにおける前記削
    除インデックス直後にインデックスが存在した場合は、
    更に前記削除インデックスの後方インデックス番号で前
    記ホームポジションの先頭インデックス番号を更新する
    ことを特徴とする請求項1記載のデータ管理装置。
JP9227931A 1997-08-25 1997-08-25 データ管理装置 Expired - Fee Related JP3056704B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9227931A JP3056704B2 (ja) 1997-08-25 1997-08-25 データ管理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9227931A JP3056704B2 (ja) 1997-08-25 1997-08-25 データ管理装置

Publications (2)

Publication Number Publication Date
JPH1166095A true JPH1166095A (ja) 1999-03-09
JP3056704B2 JP3056704B2 (ja) 2000-06-26

Family

ID=16868537

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9227931A Expired - Fee Related JP3056704B2 (ja) 1997-08-25 1997-08-25 データ管理装置

Country Status (1)

Country Link
JP (1) JP3056704B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006518508A (ja) * 2003-02-21 2006-08-10 カリンゴ・インコーポレーテッド コンテンツベースのアドレシングにおける追加ハッシュ関数
JP2008234383A (ja) * 2007-03-22 2008-10-02 Hoya Corp パラメータ管理装置およびパラメータ管理方法
KR101058000B1 (ko) * 2003-12-30 2011-08-19 삼성전자주식회사 파일 검색 방법
JP2011203958A (ja) * 2010-03-25 2011-10-13 Nec System Technologies Ltd データ処理装置、データ処理方法およびプログラム
JP4810611B2 (ja) * 2006-09-06 2011-11-09 マイクロソフト コーポレーション 暗号化されたデータの検索
JP2014191405A (ja) * 2013-03-26 2014-10-06 Nec Corp 仮想化システム、仮想サーバ、ファイル書き込み方法、及びファイル書き込みプログラム
JP2015079473A (ja) * 2013-10-18 2015-04-23 ウィンウェイ システムズ, インコーポレイテッドWinway Systems, Inc. データ運用方法及びこれを支援するシステム
JP2020528606A (ja) * 2017-07-17 2020-09-24 アルテリックス インコーポレイテッド 並列処理を使用したハッシュ結合の実行

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006518508A (ja) * 2003-02-21 2006-08-10 カリンゴ・インコーポレーテッド コンテンツベースのアドレシングにおける追加ハッシュ関数
KR101058000B1 (ko) * 2003-12-30 2011-08-19 삼성전자주식회사 파일 검색 방법
JP4810611B2 (ja) * 2006-09-06 2011-11-09 マイクロソフト コーポレーション 暗号化されたデータの検索
JP2008234383A (ja) * 2007-03-22 2008-10-02 Hoya Corp パラメータ管理装置およびパラメータ管理方法
JP2011203958A (ja) * 2010-03-25 2011-10-13 Nec System Technologies Ltd データ処理装置、データ処理方法およびプログラム
JP2014191405A (ja) * 2013-03-26 2014-10-06 Nec Corp 仮想化システム、仮想サーバ、ファイル書き込み方法、及びファイル書き込みプログラム
JP2015079473A (ja) * 2013-10-18 2015-04-23 ウィンウェイ システムズ, インコーポレイテッドWinway Systems, Inc. データ運用方法及びこれを支援するシステム
JP2020528606A (ja) * 2017-07-17 2020-09-24 アルテリックス インコーポレイテッド 並列処理を使用したハッシュ結合の実行
US11334524B2 (en) 2017-07-17 2022-05-17 Alteryx, Inc. Performing hash joins using parallel processing

Also Published As

Publication number Publication date
JP3056704B2 (ja) 2000-06-26

Similar Documents

Publication Publication Date Title
US6553382B2 (en) Data management system for retrieving data based on hierarchized keywords associated with keyword names
US7769719B2 (en) File system dump/restore by node numbering
JPH03266039A (ja) フリーフォーマットデータリンク処理方式
KR100919441B1 (ko) 문서 처리 장치, 컴퓨터 판독 가능한 기록 매체, 및 문서처리 방법
JPH02501514A (ja) 属性データ モデル データベースを使用するソフトウエア応用プログラムを結合する方法
JP3056704B2 (ja) データ管理装置
CN108629026A (zh) 一种全文索引的更新方法、装置、设备和存储介质
JP2581375B2 (ja) 文書管理装置
JP2925042B2 (ja) 情報リンク生成方法
JP3441155B2 (ja) 情報管理検索装置
JP2002140218A (ja) データ処理方法、コンピュータ読み取り可能な記録媒体及びデータ処理装置
JP2002342137A (ja) 文書管理装置及び文書管理方法並びに記録媒体
JPH0581102A (ja) テーブル管理方式
JPH07121417A (ja) データ管理装置
JPH05151056A (ja) データ管理装置
JPS63307583A (ja) 再書込み不可能な媒体上のフアイル管理方式
JPH07319874A (ja) 文書処理装置
CN111831231A (zh) 分区合并、分区拆分的方法及装置
JPH06175862A (ja) 電子計算機装置
JPH0934764A (ja) 情報処理方法及び装置
JPH1153246A (ja) ハイパーリンク装置の自動更新装置及びその方法
JP2007219627A (ja) 大規模情報の検索方法および検索装置
JPH10187508A (ja) 電子ファイリング方法及び装置並びに記憶媒体
JPH08241239A (ja) データベース管理方法およびシステム
JPH02253451A (ja) データベース管理方式

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080414

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20090414

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20100414

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20100414

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20110414

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20120414

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20120414

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20130414

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20130414

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20140414

Year of fee payment: 14

LAPS Cancellation because of no payment of annual fees