JPH1153199A - ハッシング制御方法及び装置 - Google Patents
ハッシング制御方法及び装置Info
- Publication number
- JPH1153199A JPH1153199A JP9204350A JP20435097A JPH1153199A JP H1153199 A JPH1153199 A JP H1153199A JP 9204350 A JP9204350 A JP 9204350A JP 20435097 A JP20435097 A JP 20435097A JP H1153199 A JPH1153199 A JP H1153199A
- Authority
- JP
- Japan
- Prior art keywords
- hash table
- hash
- name
- entry
- processed
- 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
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【課題】 ハッシュ表を制御するためのハッシング制御
技術に関し、名称の衝突の発生によるハッシュ表の索引
効率の低下をできる限り抑制することにある。 【解決手段】 名称登録装置101によって、ハッシュ
表に名称が登録される際に、ハッシュ表のエントリの衝
突が生じた場合に、そのエントリ下に下位のハッシュ表
が作成され、ハッシュ表それぞれに異なるハッシュ値を
求めるためのハッシュキーが与えられ、上位ハッシュ表
と名称登録の分散傾向が変えられて名称が登録される。
名称索引装置102によって、上位及び下位の各ハッシ
ュ表のエントリ毎に、そのエントリに対応する名称が索
引された回数を示す索引カウントが記憶され、その索引
カウントに基づいて頻繁に索引される名称が上位のハッ
シュ表に自動的に再配置させられる。
技術に関し、名称の衝突の発生によるハッシュ表の索引
効率の低下をできる限り抑制することにある。 【解決手段】 名称登録装置101によって、ハッシュ
表に名称が登録される際に、ハッシュ表のエントリの衝
突が生じた場合に、そのエントリ下に下位のハッシュ表
が作成され、ハッシュ表それぞれに異なるハッシュ値を
求めるためのハッシュキーが与えられ、上位ハッシュ表
と名称登録の分散傾向が変えられて名称が登録される。
名称索引装置102によって、上位及び下位の各ハッシ
ュ表のエントリ毎に、そのエントリに対応する名称が索
引された回数を示す索引カウントが記憶され、その索引
カウントに基づいて頻繁に索引される名称が上位のハッ
シュ表に自動的に再配置させられる。
Description
【0001】
【発明の属する技術分野】本発明は、ハッシュ表を制御
するためのハッシング制御技術に関する。
するためのハッシング制御技術に関する。
【0002】
【従来の技術】コンピュータのソースプログラムをオブ
ジェクトプログラムにコンパイルするためには、ソース
プログラムで用いられる各名称の属性を管理する必要が
ある。この管理を目的として、名称と、それに関する型
(名称が変数である場合)、値(名称が定数である場
合)、パラメータ情報(名称が関数や手続きである場
合)、スコープ(名称がブロックである場合)等の情
報、或いはそれらへのポインタ情報をまとめたものを記
号表という。
ジェクトプログラムにコンパイルするためには、ソース
プログラムで用いられる各名称の属性を管理する必要が
ある。この管理を目的として、名称と、それに関する型
(名称が変数である場合)、値(名称が定数である場
合)、パラメータ情報(名称が関数や手続きである場
合)、スコープ(名称がブロックである場合)等の情
報、或いはそれらへのポインタ情報をまとめたものを記
号表という。
【0003】コンパイラは、名称の宣言時に、記号表の
1つのエントリにその名称の情報又はその情報へのポイ
ンタを登録する名称登録処理を実行する。また、コンパ
イラは、名称の使用時に、記号表からその名称に対応す
るエントリを索引し、その名称に関する情報を取得しチ
ェックする索引処理(探索処理)を実行する。このよう
に、記号表は、コンパイラによる意味解析処理において
重要な役割を担っている。
1つのエントリにその名称の情報又はその情報へのポイ
ンタを登録する名称登録処理を実行する。また、コンパ
イラは、名称の使用時に、記号表からその名称に対応す
るエントリを索引し、その名称に関する情報を取得しチ
ェックする索引処理(探索処理)を実行する。このよう
に、記号表は、コンパイラによる意味解析処理において
重要な役割を担っている。
【0004】コンパイラが用いる記号表の代表的な制御
技術として、ハッシュ法又はハッシングと呼ばれる技法
が知られている。ハッシュ法では、名称に対して或る変
換が実行され、その結果得られる値に対応する記号表内
のエントリ位置に、その名称に関する情報又はその情報
へのポインタが格納される。この変換を行うための関数
はハッシュ関数と呼ばれ、ハッシュ法によって生成され
る記号表はハッシュ表と呼ばれる。
技術として、ハッシュ法又はハッシングと呼ばれる技法
が知られている。ハッシュ法では、名称に対して或る変
換が実行され、その結果得られる値に対応する記号表内
のエントリ位置に、その名称に関する情報又はその情報
へのポインタが格納される。この変換を行うための関数
はハッシュ関数と呼ばれ、ハッシュ法によって生成され
る記号表はハッシュ表と呼ばれる。
【0005】図8は、従来のハッシュ表の構成図であ
り、図9は、従来のハッシュ表への名称登録処理を示す
動作フローチャートである。名称登録処理が起動される
と、まず、入力された名称からハッシュ値mが計算され
る(図9のステップ901)。ハッシュ値mは、例え
ば、次式に従って計算される。
り、図9は、従来のハッシュ表への名称登録処理を示す
動作フローチャートである。名称登録処理が起動される
と、まず、入力された名称からハッシュ値mが計算され
る(図9のステップ901)。ハッシュ値mは、例え
ば、次式に従って計算される。
【0006】
【数1】m=f(名称) % M ここで、f(名称)は、例えば入力された名称に対応す
る内部コード値を演算する関数であり、”%”は、剰余
演算であり、Mは、ハッシュ表の最大エントリ数(配列
数)である。従って、上記数1式の演算例では、ハッシ
ュ値mは、入力された名称に対応する内部コード値をハ
ッシュ表の最大エントリ数Mで割って得られる剰余とし
て、演算される。関数f(名称)としては、各名称に対
応するハッシュ値mがハッシュ表内においてできる限り
一様に分散するようなものが、選択される。
る内部コード値を演算する関数であり、”%”は、剰余
演算であり、Mは、ハッシュ表の最大エントリ数(配列
数)である。従って、上記数1式の演算例では、ハッシ
ュ値mは、入力された名称に対応する内部コード値をハ
ッシュ表の最大エントリ数Mで割って得られる剰余とし
て、演算される。関数f(名称)としては、各名称に対
応するハッシュ値mがハッシュ表内においてできる限り
一様に分散するようなものが、選択される。
【0007】ハッシュ値mが計算された後、ハッシュ表
の第m番目のエントリがチェックされ(ステップ90
2)、そのエントリに既登録名称が存在するか否かが判
定される(ステップ903)。
の第m番目のエントリがチェックされ(ステップ90
2)、そのエントリに既登録名称が存在するか否かが判
定される(ステップ903)。
【0008】ステップ903での判定の結果、ハッシュ
表の第m番目のエントリに既登録名称が存在しなけれ
ば、入力された名称はコンパイラの意味解析において初
めて出現したものであるため、そのエントリにその入力
された名称に関する情報又はその情報が記憶される記憶
アドレスへのポインタが登録され(ステップ903→9
04)、名称登録処理を終了する。
表の第m番目のエントリに既登録名称が存在しなけれ
ば、入力された名称はコンパイラの意味解析において初
めて出現したものであるため、そのエントリにその入力
された名称に関する情報又はその情報が記憶される記憶
アドレスへのポインタが登録され(ステップ903→9
04)、名称登録処理を終了する。
【0009】ステップ903での判定の結果、ハッシュ
表の第m番目のエントリに既登録名称が存在する場合に
は、更にそのエントリの既登録名称が入力された名称と
同一の名称であるか否かが判定される(ステップ90
6)。
表の第m番目のエントリに既登録名称が存在する場合に
は、更にそのエントリの既登録名称が入力された名称と
同一の名称であるか否かが判定される(ステップ90
6)。
【0010】ステップ906での判定の結果、ハッシュ
表の第m番目のエントリの既登録名称が入力された名称
と同一である場合には、入力された名称はコンパイラの
意味解析において既に出現しているものであり再度登録
する必要はないため、そのまま名称登録処理を終了する
(ステップ906の判定がYES)。
表の第m番目のエントリの既登録名称が入力された名称
と同一である場合には、入力された名称はコンパイラの
意味解析において既に出現しているものであり再度登録
する必要はないため、そのまま名称登録処理を終了する
(ステップ906の判定がYES)。
【0011】ステップ906での判定の結果、ハッシュ
表の第m番目のエントリの既登録名称が入力された名称
と同一ではない場合には、そのエントリにリンクされて
いるチェイン上の各エントリがチェックされる(ステッ
プ906→907)。この結果、そのチェイン上の何れ
かのエントリの既登録名称が入力された名称と同一であ
る場合には、入力された名称はコンパイラの意味解析に
おいて既に出現しているものであり再度登録する必要は
ないため、そのまま名称登録処理を終了する。一方、そ
のチェイン上のどのエントリの既登録名称も入力された
名称と同一ではない場合には、入力された名称はコンパ
イラの意味解析において初めて出現したものであるた
め、そのチェインの最後にその入力された名称に関する
情報又はその情報が記憶される記憶アドレスへのポイン
タが登録され、名称登録処理を終了する。
表の第m番目のエントリの既登録名称が入力された名称
と同一ではない場合には、そのエントリにリンクされて
いるチェイン上の各エントリがチェックされる(ステッ
プ906→907)。この結果、そのチェイン上の何れ
かのエントリの既登録名称が入力された名称と同一であ
る場合には、入力された名称はコンパイラの意味解析に
おいて既に出現しているものであり再度登録する必要は
ないため、そのまま名称登録処理を終了する。一方、そ
のチェイン上のどのエントリの既登録名称も入力された
名称と同一ではない場合には、入力された名称はコンパ
イラの意味解析において初めて出現したものであるた
め、そのチェインの最後にその入力された名称に関する
情報又はその情報が記憶される記憶アドレスへのポイン
タが登録され、名称登録処理を終了する。
【0012】今、例えば図8に示される従来のハッシュ
表の構成において、その最大エントリ数M=11であ
り、名称が、GREEN、RED、YELLOW、PI
NK、ORENGE、WHITE、GRAY、BLU
E、BROWN、BLACK、及びVIOLETの順で
出現し、それぞれのハッシュ値mが、前述の数1式に従
って、下記のように計算されるとする。 m=f(GREEN) % M=4 m=f(RED) % M=2 m=f(YELLOW) % M=6 m=f(PINK) % M=11 m=f(GRAY) % M=8 m=f(WHITE) % M=1 m=f(ORENGE) % M=8 m=f(BLUE) % M=3 m=f(BROWN) % M=7 m=f(BLACK) % M=2 m=f(VIOLET) % M=8 この結果、図9の動作フローチャートに従えば、各名称
GREEN、RED、YELLOW、PINK、GRA
Y、WHITE、BLUE、BROWNは、各ハッシュ
値mによって示されるエントリに既登録名称が存在しな
いため、各名称に関する情報又はその情報が記憶される
記憶アドレスへのポインタが登録される(図9のステッ
プ903→904)。なお、図8に示されるハッシュ表
のデータ構成においては、説明の簡単のために、名称フ
ィールドと次アドレスフィールドのみが示されている
が、実際には名称に関する情報を格納するフィールドも
存在するか、或いは、名称フィールドに名称の情報が記
憶される記憶アドレスへのポインタが登録される。ま
た、次アドレスフィールドに”¥0”が記憶されている
場合は、その”¥0”は、そのエントリにはチェインは
付加されていないことを示している。
表の構成において、その最大エントリ数M=11であ
り、名称が、GREEN、RED、YELLOW、PI
NK、ORENGE、WHITE、GRAY、BLU
E、BROWN、BLACK、及びVIOLETの順で
出現し、それぞれのハッシュ値mが、前述の数1式に従
って、下記のように計算されるとする。 m=f(GREEN) % M=4 m=f(RED) % M=2 m=f(YELLOW) % M=6 m=f(PINK) % M=11 m=f(GRAY) % M=8 m=f(WHITE) % M=1 m=f(ORENGE) % M=8 m=f(BLUE) % M=3 m=f(BROWN) % M=7 m=f(BLACK) % M=2 m=f(VIOLET) % M=8 この結果、図9の動作フローチャートに従えば、各名称
GREEN、RED、YELLOW、PINK、GRA
Y、WHITE、BLUE、BROWNは、各ハッシュ
値mによって示されるエントリに既登録名称が存在しな
いため、各名称に関する情報又はその情報が記憶される
記憶アドレスへのポインタが登録される(図9のステッ
プ903→904)。なお、図8に示されるハッシュ表
のデータ構成においては、説明の簡単のために、名称フ
ィールドと次アドレスフィールドのみが示されている
が、実際には名称に関する情報を格納するフィールドも
存在するか、或いは、名称フィールドに名称の情報が記
憶される記憶アドレスへのポインタが登録される。ま
た、次アドレスフィールドに”¥0”が記憶されている
場合は、その”¥0”は、そのエントリにはチェインは
付加されていないことを示している。
【0013】名称ORENGEが登録される際には、そ
のハッシュ値m=8に対応するハッシュ表のエントリの
名称フィールドには、既に名称GRAYが登録されてお
り、かつその時点ではそのエントリの次アドレスフィー
ルドには”¥0”が記憶されているため、そのエントリ
に新たに、名称ORENGEに関するエントリがチェイ
ンとして接続される(図9のステップ907)。この場
合、名称GRAYが登録されてハッシュ表のエントリの
次アドレスフィールドには、名称ORENGEに関する
チェインエントリの記憶アドレスへのポインタが記憶さ
れる。
のハッシュ値m=8に対応するハッシュ表のエントリの
名称フィールドには、既に名称GRAYが登録されてお
り、かつその時点ではそのエントリの次アドレスフィー
ルドには”¥0”が記憶されているため、そのエントリ
に新たに、名称ORENGEに関するエントリがチェイ
ンとして接続される(図9のステップ907)。この場
合、名称GRAYが登録されてハッシュ表のエントリの
次アドレスフィールドには、名称ORENGEに関する
チェインエントリの記憶アドレスへのポインタが記憶さ
れる。
【0014】更に、名称VIOLETが登録される際に
は、そのハッシュ値m=8に対応するハッシュ表のエン
トリの名称フィールドには既に名称GRAYが登録され
ており、かつその時点でそのエントリの次アドレスフィ
ールドには名称ORENGEに関するチェインエントリ
の記憶アドレスへのポインタが記憶されており、名称O
RENGEに関するチェインエントリの次アドレスフィ
ールドには”¥0”が記憶されているため、名称ORE
NGEに関するチェインエントリに新たに、名称VIO
LETに関するエントリがチェインとして接続される
(図9のステップ907)。この場合、名称ORENG
Eが登録されてチェインエントリの次アドレスフィール
ドには、名称VIOLETに関するチェインエントリの
記憶アドレスへのポインタが記憶される。
は、そのハッシュ値m=8に対応するハッシュ表のエン
トリの名称フィールドには既に名称GRAYが登録され
ており、かつその時点でそのエントリの次アドレスフィ
ールドには名称ORENGEに関するチェインエントリ
の記憶アドレスへのポインタが記憶されており、名称O
RENGEに関するチェインエントリの次アドレスフィ
ールドには”¥0”が記憶されているため、名称ORE
NGEに関するチェインエントリに新たに、名称VIO
LETに関するエントリがチェインとして接続される
(図9のステップ907)。この場合、名称ORENG
Eが登録されてチェインエントリの次アドレスフィール
ドには、名称VIOLETに関するチェインエントリの
記憶アドレスへのポインタが記憶される。
【0015】名称BLACKが登録される際には、その
ハッシュ値m=2に対応するハッシュ表のエントリの名
称フィールドには、既に名称REDが登録されており、
かつその時点ではそのエントリの次アドレスフィールド
には”¥0”が記憶されているため、そのエントリに新
たに、名称BLACKに関するエントリがチェインとし
て接続される(図9のステップ907)。この場合、名
称REDが登録されてハッシュ表のエントリの次アドレ
スフィールドには、名称BLACKに関するチェインエ
ントリの記憶アドレスへのポインタが記憶される。
ハッシュ値m=2に対応するハッシュ表のエントリの名
称フィールドには、既に名称REDが登録されており、
かつその時点ではそのエントリの次アドレスフィールド
には”¥0”が記憶されているため、そのエントリに新
たに、名称BLACKに関するエントリがチェインとし
て接続される(図9のステップ907)。この場合、名
称REDが登録されてハッシュ表のエントリの次アドレ
スフィールドには、名称BLACKに関するチェインエ
ントリの記憶アドレスへのポインタが記憶される。
【0016】上述のようにして生成された従来のハッシ
ュ表に対して、名称索引処理が実行される場合には、以
下の処理が実行される。 (1) 入力された名称から前述の数1式に従いハッシュ値
mが計算される。
ュ表に対して、名称索引処理が実行される場合には、以
下の処理が実行される。 (1) 入力された名称から前述の数1式に従いハッシュ値
mが計算される。
【0017】(2) ハッシュ値mに対応するハッシュ表の
エントリがチェックされる。 (a) そのエントリに登録されている名称が入力された名
称と同一であれば、そのエントリに登録されている名称
に関する情報が返される。
エントリがチェックされる。 (a) そのエントリに登録されている名称が入力された名
称と同一であれば、そのエントリに登録されている名称
に関する情報が返される。
【0018】(b) そのエントリに登録されている名称が
入力された名称と同一ではなく、かつそのエントリに1
つ以上のチェインエントリがチェインされていれば、そ
のチェインが辿られながら各チェインエントリの名称が
入力された名称と比較され、入力された名称と同一の名
称が検出されれば、そこに登録されている名称に関する
情報が返される。上述の従来技術においては、ハッシュ
値の計算の結果、ハッシュ表上のエントリにおいて名称
の衝突が発生した場合には、そのエントリに順次外部的
なエントリがチェインされることにより、衝突の問題が
解決されている。
入力された名称と同一ではなく、かつそのエントリに1
つ以上のチェインエントリがチェインされていれば、そ
のチェインが辿られながら各チェインエントリの名称が
入力された名称と比較され、入力された名称と同一の名
称が検出されれば、そこに登録されている名称に関する
情報が返される。上述の従来技術においては、ハッシュ
値の計算の結果、ハッシュ表上のエントリにおいて名称
の衝突が発生した場合には、そのエントリに順次外部的
なエントリがチェインされることにより、衝突の問題が
解決されている。
【0019】
【発明が解決しようとする課題】しかし、上述の従来技
術においては、名称の衝突が発生すればするほど、1つ
のエントリに接続されるチェインの長さが長くなるた
め、そのようなエントリに対して名称索引処理が実行さ
れた場合に、チェインを順次辿らなければならなくな
り、メモリアクセス回数の増加により索引効率が低下し
てしまう。このため、結局は、名称の衝突が発生しにく
くなるように、元のハッシュ表のサイズを大きくしなけ
ればならないという問題点を有している。
術においては、名称の衝突が発生すればするほど、1つ
のエントリに接続されるチェインの長さが長くなるた
め、そのようなエントリに対して名称索引処理が実行さ
れた場合に、チェインを順次辿らなければならなくな
り、メモリアクセス回数の増加により索引効率が低下し
てしまう。このため、結局は、名称の衝突が発生しにく
くなるように、元のハッシュ表のサイズを大きくしなけ
ればならないという問題点を有している。
【0020】本発明の課題は、名称の衝突の発生による
ハッシュ表の索引効率の低下をできる限り抑制すること
にある。
ハッシュ表の索引効率の低下をできる限り抑制すること
にある。
【0021】
【課題を解決するための手段】本発明の第1の態様は、
ハッシュ表データに対する名称登録処理を制御するため
のハッシング制御装置を前提とする。
ハッシュ表データに対する名称登録処理を制御するため
のハッシング制御装置を前提とする。
【0022】そしてまず、ハッシュ表データへの入力名
称の登録時に、処理対象のハッシュ表において、その処
理対象のハッシュ表に対応して一意に定義されているハ
ッシュキーを用いて、入力名称に対応するハッシュ値を
計算するハッシュ値計算手段(ハッシュ値計算部10
9)を有する。
称の登録時に、処理対象のハッシュ表において、その処
理対象のハッシュ表に対応して一意に定義されているハ
ッシュキーを用いて、入力名称に対応するハッシュ値を
計算するハッシュ値計算手段(ハッシュ値計算部10
9)を有する。
【0023】次に、処理対象のハッシュ表において、ハ
ッシュ値計算手段によって計算されたハッシュ値に対応
するエントリを探索する探索手段(登録時ハッシュ表探
索部103)を有する。
ッシュ値計算手段によって計算されたハッシュ値に対応
するエントリを探索する探索手段(登録時ハッシュ表探
索部103)を有する。
【0024】次に、その探索手段により、処理対象のハ
ッシュ表において、ハッシュ値計算手段によって計算さ
れたハッシュ値に対応するエントリに、どの名称も登録
されていないことが探索された場合に、そのエントリ
に、入力名称に関する情報を登録する名称登録手段(名
称登録部104)を有する。
ッシュ表において、ハッシュ値計算手段によって計算さ
れたハッシュ値に対応するエントリに、どの名称も登録
されていないことが探索された場合に、そのエントリ
に、入力名称に関する情報を登録する名称登録手段(名
称登録部104)を有する。
【0025】次に、探索手段により、処理対象のハッシ
ュ表において、ハッシュ値計算手段によって計算された
ハッシュ値に対応するエントリに、入力名称と異なる名
称が登録されていることが探索された場合に、そのエン
トリに下位のハッシュ表がリンクされていれば、それを
新たな処理対象のハッシュ表とし、そのエントリに下位
のハッシュ表がリンクされていなければ、そのエントリ
にリンクさせて新たな下位のハッシュ表を生成しそれを
新たな処理対象のハッシュ表とすると共に、そのハッシ
ュ表に対応する一意なハッシュキーを定義するハッシュ
表作成手段(ハッシュ表作成部105)を有する。
ュ表において、ハッシュ値計算手段によって計算された
ハッシュ値に対応するエントリに、入力名称と異なる名
称が登録されていることが探索された場合に、そのエン
トリに下位のハッシュ表がリンクされていれば、それを
新たな処理対象のハッシュ表とし、そのエントリに下位
のハッシュ表がリンクされていなければ、そのエントリ
にリンクさせて新たな下位のハッシュ表を生成しそれを
新たな処理対象のハッシュ表とすると共に、そのハッシ
ュ表に対応する一意なハッシュキーを定義するハッシュ
表作成手段(ハッシュ表作成部105)を有する。
【0026】そして、その新たな処理対象のハッシュ表
に対し、ハッシュ値計算手段、探索手段、名称登録手
段、及びハッシュ表作成手段による一連の処理を繰り返
し実行させるハッシュ表階層制御手段(登録時ハッシュ
表探索部103)を有する。
に対し、ハッシュ値計算手段、探索手段、名称登録手
段、及びハッシュ表作成手段による一連の処理を繰り返
し実行させるハッシュ表階層制御手段(登録時ハッシュ
表探索部103)を有する。
【0027】上述した本発明の第1の態様の構成によっ
て実現される名称登録処理により、ほとんどの場合、上
位のハッシュ表の1つのエントリで衝突が発生しても、
そのエントリにリンクする下位のハッシュ表のエントリ
への登録が成功するため、エントリ毎にそれに接続され
る下位のハッシュ表の数は、従来のチェインエントリ数
よりもはるかに少なくすることができる。このため、そ
のようなエントリに対して名称索引処理が実行された場
合に、下位のハッシュ表のエントリを辿る回数が少な
く、メモリアクセス回数を抑制することができ、索引効
率の低下を防止することができる。
て実現される名称登録処理により、ほとんどの場合、上
位のハッシュ表の1つのエントリで衝突が発生しても、
そのエントリにリンクする下位のハッシュ表のエントリ
への登録が成功するため、エントリ毎にそれに接続され
る下位のハッシュ表の数は、従来のチェインエントリ数
よりもはるかに少なくすることができる。このため、そ
のようなエントリに対して名称索引処理が実行された場
合に、下位のハッシュ表のエントリを辿る回数が少な
く、メモリアクセス回数を抑制することができ、索引効
率の低下を防止することができる。
【0028】このため、名称の衝突が発生しにくくなる
ように、最上位のハッシュ表のサイズを大きくしなけれ
ばならないといった処置を講じる必要がないという特徴
を有する。
ように、最上位のハッシュ表のサイズを大きくしなけれ
ばならないといった処置を講じる必要がないという特徴
を有する。
【0029】本発明の第2の態様は、ハッシュ表データ
に対する名称索引処理を制御するためのハッシング制御
装置を前提とする。そしてまず、ハッシュ表データに対
する入力名称の索引時に、処理対象のハッシュ表におい
て、その処理対象のハッシュ表に対応して一意に定義さ
れているハッシュキーを用いて、入力名称に対応するハ
ッシュ値を計算するハッシュ値計算手段(ハッシュ値計
算部109)を有する。
に対する名称索引処理を制御するためのハッシング制御
装置を前提とする。そしてまず、ハッシュ表データに対
する入力名称の索引時に、処理対象のハッシュ表におい
て、その処理対象のハッシュ表に対応して一意に定義さ
れているハッシュキーを用いて、入力名称に対応するハ
ッシュ値を計算するハッシュ値計算手段(ハッシュ値計
算部109)を有する。
【0030】次に、処理対象のハッシュ表において、ハ
ッシュ値計算手段によって計算されたハッシュ値に対応
するエントリを探索する探索手段(索引時ハッシュ表探
索部106)を有する。
ッシュ値計算手段によって計算されたハッシュ値に対応
するエントリを探索する探索手段(索引時ハッシュ表探
索部106)を有する。
【0031】次に、探索手段により、処理対象のハッシ
ュ表において、ハッシュ値計算手段によって計算された
ハッシュ値に対応するエントリに、入力名称と同一の名
称が登録されていることが探索された場合に、そのエン
トリに登録されている索引回数を更新する索引回数更新
手段(索引回数更新部107)を有する。
ュ表において、ハッシュ値計算手段によって計算された
ハッシュ値に対応するエントリに、入力名称と同一の名
称が登録されていることが探索された場合に、そのエン
トリに登録されている索引回数を更新する索引回数更新
手段(索引回数更新部107)を有する。
【0032】次に、その索引回数の更新の後、そのエン
トリの索引回数を、そのエントリが含まれるハッシュ表
がリンクする上位のハッシュ表のエントリに登録されて
いる索引回数と比較することにより、それら2つのエン
トリの登録内容の再配置を制御する最適化手段(最適化
部108)を有する。この再配置の制御は、例えば、そ
の2つのエントリのうち下位の方のエントリの索引回数
が上位の方のエントリの索引回数よりも所定回数以上多
くなった場合に、その2つのエントリの登録内容を入れ
替える処理である、そして、探索手段により、処理対象
のハッシュ表において、ハッシュ値計算手段によって計
算されたハッシュ値に対応するエントリに、入力名称と
異なる名称が登録されていることが探索された場合に、
そのエントリにリンクされる下位のハッシュ表を新たな
処理対象のハッシュ表として、それに対して、ハッシュ
値計算手段、探索手段、索引回数更新手段、及び最適化
手段による一連の処理を繰り返し実行させるハッシュ表
階層制御手段(索引時ハッシュ表探索部106)を有す
る。
トリの索引回数を、そのエントリが含まれるハッシュ表
がリンクする上位のハッシュ表のエントリに登録されて
いる索引回数と比較することにより、それら2つのエン
トリの登録内容の再配置を制御する最適化手段(最適化
部108)を有する。この再配置の制御は、例えば、そ
の2つのエントリのうち下位の方のエントリの索引回数
が上位の方のエントリの索引回数よりも所定回数以上多
くなった場合に、その2つのエントリの登録内容を入れ
替える処理である、そして、探索手段により、処理対象
のハッシュ表において、ハッシュ値計算手段によって計
算されたハッシュ値に対応するエントリに、入力名称と
異なる名称が登録されていることが探索された場合に、
そのエントリにリンクされる下位のハッシュ表を新たな
処理対象のハッシュ表として、それに対して、ハッシュ
値計算手段、探索手段、索引回数更新手段、及び最適化
手段による一連の処理を繰り返し実行させるハッシュ表
階層制御手段(索引時ハッシュ表探索部106)を有す
る。
【0033】上述した本発明の第2の態様の構成により
実現される名称索引処理における最適化処理によって、
索引され易い名称が常に上位のハッシュ表にエントリさ
れるように再配置することができ、その結果メモリアク
セス回数が削減されて、索引効率を最適化することがで
きる。
実現される名称索引処理における最適化処理によって、
索引され易い名称が常に上位のハッシュ表にエントリさ
れるように再配置することができ、その結果メモリアク
セス回数が削減されて、索引効率を最適化することがで
きる。
【0034】なお、本発明は、上述した本発明の第1又
は第2の態様と同等の機能を実現する方法カテゴリの発
明として実現することが可能である。また、本発明は、
計算機により使用されたときに、上述の本発明の第1又
は第2の態様の構成によって実現される機能と同様の機
能を計算機に行わせるための計算機読出し可能記憶媒体
として構成することもできる。
は第2の態様と同等の機能を実現する方法カテゴリの発
明として実現することが可能である。また、本発明は、
計算機により使用されたときに、上述の本発明の第1又
は第2の態様の構成によって実現される機能と同様の機
能を計算機に行わせるための計算機読出し可能記憶媒体
として構成することもできる。
【0035】
【発明の実施の形態】以下、図面を参照しながら本発明
の実施の形態について詳細に説明する。全体構成 本実施の形態は、ハッシュ表に名称が登録される際に、
ハッシュ表のエントリの衝突が生じた場合に、そのエン
トリ下に下位のハッシュ表が作成され、ハッシュ表それ
ぞれに異なるハッシュ値を求めるためのパラメータ(ハ
ッシュキー)が与えられ、上位ハッシュ表と名称登録の
分散傾向が変えられて名称が登録される構成を有するこ
とが、本発明に関連する第1の特徴である。
の実施の形態について詳細に説明する。全体構成 本実施の形態は、ハッシュ表に名称が登録される際に、
ハッシュ表のエントリの衝突が生じた場合に、そのエン
トリ下に下位のハッシュ表が作成され、ハッシュ表それ
ぞれに異なるハッシュ値を求めるためのパラメータ(ハ
ッシュキー)が与えられ、上位ハッシュ表と名称登録の
分散傾向が変えられて名称が登録される構成を有するこ
とが、本発明に関連する第1の特徴である。
【0036】この第1の特徴的な構成により、エントリ
毎にそれに接続される下位のハッシュ表の数は、従来の
チェインエントリ数よりもはるかに少なくすることがで
きるため、そのようなエントリに対して名称索引処理が
実行された場合に、下位のハッシュ表のエントリを辿る
回数が少なく、メモリアクセス回数を抑制することがで
き、索引効率の低下を防止することができる。
毎にそれに接続される下位のハッシュ表の数は、従来の
チェインエントリ数よりもはるかに少なくすることがで
きるため、そのようなエントリに対して名称索引処理が
実行された場合に、下位のハッシュ表のエントリを辿る
回数が少なく、メモリアクセス回数を抑制することがで
き、索引効率の低下を防止することができる。
【0037】このため、名称の衝突が発生しにくくなる
ように、最上位のハッシュ表のサイズを大きくしなけれ
ばならないといった処置を講じる必要がないという特徴
を有する。
ように、最上位のハッシュ表のサイズを大きくしなけれ
ばならないといった処置を講じる必要がないという特徴
を有する。
【0038】また、本実施の形態は、上位及び下位の各
ハッシュ表のエントリ毎に、そのエントリに対応する名
称が索引された回数を示す索引カウントが記憶され、そ
の索引カウントに基づいて頻繁に索引される名称が上位
のハッシュ表に自動的に再配置(スワップ)させられる
構成を有することが、本発明に関連する第2の特徴であ
る。
ハッシュ表のエントリ毎に、そのエントリに対応する名
称が索引された回数を示す索引カウントが記憶され、そ
の索引カウントに基づいて頻繁に索引される名称が上位
のハッシュ表に自動的に再配置(スワップ)させられる
構成を有することが、本発明に関連する第2の特徴であ
る。
【0039】この第2の特徴的な構成により、索引効率
を最適化することができる。図1は、本発明の実施の形
態の全体構成図である。名称登録装置101は、名称登
録処理を実行し、登録時ハッシュ表探索部103、名称
登録部104、及びハッシュ表作成部105とから構成
される。
を最適化することができる。図1は、本発明の実施の形
態の全体構成図である。名称登録装置101は、名称登
録処理を実行し、登録時ハッシュ表探索部103、名称
登録部104、及びハッシュ表作成部105とから構成
される。
【0040】名称索引装置102は、名称索引処理を実
行し、索引時ハッシュ表探索部106、索引回数更新部
107、及び最適化部108とから構成される。ハッシ
ュ値計算部109は、名称登録装置101内の登録時ハ
ッシュ表探索部103又は名称索引装置102内の索引
時ハッシュ表探索部106からの指示に従って、入力さ
れた名称に対応するハッシュ値を計算し、その結果を返
す。
行し、索引時ハッシュ表探索部106、索引回数更新部
107、及び最適化部108とから構成される。ハッシ
ュ値計算部109は、名称登録装置101内の登録時ハ
ッシュ表探索部103又は名称索引装置102内の索引
時ハッシュ表探索部106からの指示に従って、入力さ
れた名称に対応するハッシュ値を計算し、その結果を返
す。
【0041】図2は、名称索引装置102内の最適化部
108の構成図である。この構成及び動作については、
名称索引処理の説明において後述する。図3は、本実施
の形態で使用されるハッシュ表のデータ構成図である。
108の構成図である。この構成及び動作については、
名称索引処理の説明において後述する。図3は、本実施
の形態で使用されるハッシュ表のデータ構成図である。
【0042】本実施の形態は、コンピュータのソースプ
ログラムにおいて記述されるEnv名称(環境変数名
称)に対してコンパイラが名称登録処理及び名称索引処
理を実行する場合を例としたもので、図3は、それらの
処理のためのハッシュ表であるEnv管理ハッシュ表3
02を中心とするデータ群のデータ構成図である。
ログラムにおいて記述されるEnv名称(環境変数名
称)に対してコンパイラが名称登録処理及び名称索引処
理を実行する場合を例としたもので、図3は、それらの
処理のためのハッシュ表であるEnv管理ハッシュ表3
02を中心とするデータ群のデータ構成図である。
【0043】まず、名称ポインタには、名称登録処理又
は名称索引処理が実行される入力された名称のハッシュ
値がセットされ、そのハッシュ値によってEnv管理ハ
ッシュ表302(302a、302b、302c)がア
クセスされる。
は名称索引処理が実行される入力された名称のハッシュ
値がセットされ、そのハッシュ値によってEnv管理ハ
ッシュ表302(302a、302b、302c)がア
クセスされる。
【0044】Env管理ハッシュ表302の各エントリ
には、Env名称テーブル303に記憶されている実際
のEnv名称の記憶アドレスへのポインタである名称ア
ドレスと、そのエントリに下位のEnv管理ハッシュ表
302(302b、302c等)が接続される場合に、
それらのハッシュ表の記憶アドレス(先頭アドレス)を
示す次Envアドレスと、そのエントリに対応する名称
が索引された回数を示す索引カウント(索引回数)とが
記憶される。
には、Env名称テーブル303に記憶されている実際
のEnv名称の記憶アドレスへのポインタである名称ア
ドレスと、そのエントリに下位のEnv管理ハッシュ表
302(302b、302c等)が接続される場合に、
それらのハッシュ表の記憶アドレス(先頭アドレス)を
示す次Envアドレスと、そのエントリに対応する名称
が索引された回数を示す索引カウント(索引回数)とが
記憶される。
【0045】また、各Env管理ハッシュ表302の先
頭には、それぞれにおいてハッシュ値が計算される場合
のパラメータとして、それぞれ異なるハッシュキー(H
ashKey)の値が記憶される。
頭には、それぞれにおいてハッシュ値が計算される場合
のパラメータとして、それぞれ異なるハッシュキー(H
ashKey)の値が記憶される。
【0046】本実施の形態においては、実際のEnv名
称はEnv名称テーブル303に記憶され、各Env管
理ハッシュ表302のエントリには、そのエントリに対
応する名称の、Env名称テーブル303上での記憶ア
ドレスへのポインタである名称アドレスが記憶される。
このような構成により、Env名称が可変長となった
り、Env名称以外の名称が処理されるシステムにおい
てその名称に対応する各種情報(型情報等)が必要とな
ったりした場合であっても、それらの情報はハッシュ表
とは別のテーブルの各エントリに記憶させるようにする
ことによって、ハッシュ表の構造を変更することなく対
処することができる。名称登録処理 図1の名称登録装置101によって実行される名称登録
処理の動作について、図4の動作フローチャートと図7
の動作説明図に基づいて説明する。
称はEnv名称テーブル303に記憶され、各Env管
理ハッシュ表302のエントリには、そのエントリに対
応する名称の、Env名称テーブル303上での記憶ア
ドレスへのポインタである名称アドレスが記憶される。
このような構成により、Env名称が可変長となった
り、Env名称以外の名称が処理されるシステムにおい
てその名称に対応する各種情報(型情報等)が必要とな
ったりした場合であっても、それらの情報はハッシュ表
とは別のテーブルの各エントリに記憶させるようにする
ことによって、ハッシュ表の構造を変更することなく対
処することができる。名称登録処理 図1の名称登録装置101によって実行される名称登録
処理の動作について、図4の動作フローチャートと図7
の動作説明図に基づいて説明する。
【0047】まず、登録時ハッシュ表探索部103は、
入力されたEnv名称を登録するためのEnv管理ハッ
シュ表302が存在するか否かを判定する(図4のステ
ップ401)。
入力されたEnv名称を登録するためのEnv管理ハッ
シュ表302が存在するか否かを判定する(図4のステ
ップ401)。
【0048】ハッシュ表が存在しない場合は、ハッシュ
表作成部105(図1)が、登録時ハッシュ表探索部1
03からの指示により、図3に示されるデータ構成を有
する最上位のEnv管理ハッシュ表302aを生成する
(図4のステップ402)。このときハッシュ表作成部
105は、そのEnv管理ハッシュ表302aに一意に
対応するハッシュキーを決定し、そのEnv管理ハッシ
ュ表302aの先頭に記憶させる。
表作成部105(図1)が、登録時ハッシュ表探索部1
03からの指示により、図3に示されるデータ構成を有
する最上位のEnv管理ハッシュ表302aを生成する
(図4のステップ402)。このときハッシュ表作成部
105は、そのEnv管理ハッシュ表302aに一意に
対応するハッシュキーを決定し、そのEnv管理ハッシ
ュ表302aの先頭に記憶させる。
【0049】登録時ハッシュ表探索部103は、入力さ
れたEnv名称と、生成された最上位のEnv管理ハッ
シュ表302aの最大エントリ数M及びハッシュキー
を、ハッシュ値計算部109に引き渡す(図4のステッ
プ402→403)。
れたEnv名称と、生成された最上位のEnv管理ハッ
シュ表302aの最大エントリ数M及びハッシュキー
を、ハッシュ値計算部109に引き渡す(図4のステッ
プ402→403)。
【0050】一方、ハッシュ表が存在する場合は、登録
時ハッシュ表探索部103は、その最上位のEnv管理
ハッシュ表302aを取得し、その最大エントリ数Mと
そのハッシュ表の先頭に記憶されているハッシュキー
を、入力されたEnv名称と共に、ハッシュ値計算部1
09に引き渡す(図4のステップ401→403)。
時ハッシュ表探索部103は、その最上位のEnv管理
ハッシュ表302aを取得し、その最大エントリ数Mと
そのハッシュ表の先頭に記憶されているハッシュキー
を、入力されたEnv名称と共に、ハッシュ値計算部1
09に引き渡す(図4のステップ401→403)。
【0051】次に、ハッシュ値計算部109は、登録時
ハッシュ表探索部103からの指示により、入力された
Env名称に対応するハッシュ値mを、次式に従って計
算する(図4のステップ403)。
ハッシュ表探索部103からの指示により、入力された
Env名称に対応するハッシュ値mを、次式に従って計
算する(図4のステップ403)。
【0052】
【数2】m=f′(名称、ハッシュキー) % M ここで、ハッシュキーは、前述したように、登録時ハッ
シュ表探索部103から引き渡され、ハッシュ値mを計
算するハッシュ表毎に予め与えられているパラメータで
ある。
シュ表探索部103から引き渡され、ハッシュ値mを計
算するハッシュ表毎に予め与えられているパラメータで
ある。
【0053】f′(名称、ハッシュキー)は、例えば入
力された名称(Env名称)とハッシュキーに対応する
内部コード値を演算する関数であり、例えば、そのEn
v名称を構成する各文字のアスキーコード値をC1 、C
2 、・・・、Ck とするときに、次式によって計算され
る。
力された名称(Env名称)とハッシュキーに対応する
内部コード値を演算する関数であり、例えば、そのEn
v名称を構成する各文字のアスキーコード値をC1 、C
2 、・・・、Ck とするときに、次式によって計算され
る。
【0054】
【数3】 h0 =0 hi =(ハッシュキー)×hi-1 +Ci (1≦i≦k) 更に、”%”は、剰余演算であり、Mは、登録時ハッシ
ュ表探索部103から引き渡された、対象とするEnv
管理ハッシュ表302aの最大エントリ数である。
ュ表探索部103から引き渡された、対象とするEnv
管理ハッシュ表302aの最大エントリ数である。
【0055】ハッシュ値計算部109によってハッシュ
値mが計算された後、登録時ハッシュ表探索部103
は、最上位のEnv管理ハッシュ表302a(図3参
照)の第m番目のエントリをチェックし(図4のステッ
プ404)、そのエントリに既登録名称が存在するか否
かを判定する(ステップ405)。
値mが計算された後、登録時ハッシュ表探索部103
は、最上位のEnv管理ハッシュ表302a(図3参
照)の第m番目のエントリをチェックし(図4のステッ
プ404)、そのエントリに既登録名称が存在するか否
かを判定する(ステップ405)。
【0056】図4のステップ405での判定の結果、最
上位のEnv管理ハッシュ表302aの第m番目のエン
トリに既登録名称が存在しなければ、入力されたEnv
名称はコンパイラの意味解析において初めて出現したも
のであるため、登録時ハッシュ表探索部103は名称登
録部104を起動する。この結果、名称登録部104
は、まず、Env名称テーブル303(図3)内の任意
の空き記憶アドレスに入力されたEnv名称を記憶し、
続いて、最上位のEnv管理ハッシュ表302aの第m
番目のエントリに、上記Env名称テーブル303の記
憶アドレスを名称アドレス(図3参照)として登録する
(図4のステップ406、図7(a) )。
上位のEnv管理ハッシュ表302aの第m番目のエン
トリに既登録名称が存在しなければ、入力されたEnv
名称はコンパイラの意味解析において初めて出現したも
のであるため、登録時ハッシュ表探索部103は名称登
録部104を起動する。この結果、名称登録部104
は、まず、Env名称テーブル303(図3)内の任意
の空き記憶アドレスに入力されたEnv名称を記憶し、
続いて、最上位のEnv管理ハッシュ表302aの第m
番目のエントリに、上記Env名称テーブル303の記
憶アドレスを名称アドレス(図3参照)として登録する
(図4のステップ406、図7(a) )。
【0057】これにより、名称登録処理が終了する。一
方、図4のステップ405での判定の結果、最上位のE
nv管理ハッシュ表302aの第m番目のエントリに既
登録名称が存在する場合には、登録時ハッシュ表探索部
103は、更にそのエントリの既登録名称と入力された
Env名称とを比較し(図4のステップ407)、それ
らが同一であるか否かを判定する(ステップ408)。
方、図4のステップ405での判定の結果、最上位のE
nv管理ハッシュ表302aの第m番目のエントリに既
登録名称が存在する場合には、登録時ハッシュ表探索部
103は、更にそのエントリの既登録名称と入力された
Env名称とを比較し(図4のステップ407)、それ
らが同一であるか否かを判定する(ステップ408)。
【0058】ステップ408での判定の結果、最上位の
Env管理ハッシュ表302aの第m番目のエントリの
既登録名称が入力されたEnv名称と同一である場合に
は、入力されたEnv名称はコンパイラの意味解析にお
いて既に出現しているものであり再度登録する必要はな
いため、登録時ハッシュ表探索部103は、そのまま名
称登録処理を終了する(ステップ408の判定がYE
S)。
Env管理ハッシュ表302aの第m番目のエントリの
既登録名称が入力されたEnv名称と同一である場合に
は、入力されたEnv名称はコンパイラの意味解析にお
いて既に出現しているものであり再度登録する必要はな
いため、登録時ハッシュ表探索部103は、そのまま名
称登録処理を終了する(ステップ408の判定がYE
S)。
【0059】一方、ステップ408での判定の結果、最
上位のEnv管理ハッシュ表302aの第m番目のエン
トリの既登録名称が入力されたEnv名称と同一ではな
い場合は、登録時ハッシュ表探索部103は、そのエン
トリに次Envアドレス(図3参照)が登録されている
か否か、即ちそのエントリに次階層のEnv管理ハッシ
ュ表302b(図3参照)がリンクされているか否かを
判定する(図4のステップ409)。
上位のEnv管理ハッシュ表302aの第m番目のエン
トリの既登録名称が入力されたEnv名称と同一ではな
い場合は、登録時ハッシュ表探索部103は、そのエン
トリに次Envアドレス(図3参照)が登録されている
か否か、即ちそのエントリに次階層のEnv管理ハッシ
ュ表302b(図3参照)がリンクされているか否かを
判定する(図4のステップ409)。
【0060】ステップ409で次Envアドレスが登録
されていないと判定された場合は、最上位のEnv管理
ハッシュ表302aの第m番目のエントリに次階層のE
nv管理ハッシュ表302bはリンクされていないた
め、登録時ハッシュ表探索部103はハッシュ表作成部
105を起動する。この結果、ハッシュ表作成部105
は、図3に示されるデータ構成を有する下位のEnv管
理ハッシュ表302bを生成する(図4のステップ40
9→402、図7(b) )。このときハッシュ表作成部1
05は、そのEnv管理ハッシュ表302bに一意に対
応するハッシュキーを決定し、そのEnv管理ハッシュ
表302bの先頭に記憶させる。
されていないと判定された場合は、最上位のEnv管理
ハッシュ表302aの第m番目のエントリに次階層のE
nv管理ハッシュ表302bはリンクされていないた
め、登録時ハッシュ表探索部103はハッシュ表作成部
105を起動する。この結果、ハッシュ表作成部105
は、図3に示されるデータ構成を有する下位のEnv管
理ハッシュ表302bを生成する(図4のステップ40
9→402、図7(b) )。このときハッシュ表作成部1
05は、そのEnv管理ハッシュ表302bに一意に対
応するハッシュキーを決定し、そのEnv管理ハッシュ
表302bの先頭に記憶させる。
【0061】登録時ハッシュ表探索部103は、入力さ
れたEnv名称と、新たに生成された最上位のEnv管
理ハッシュ表302aの最大エントリ数K及びハッシュ
キーを、ハッシュ値計算部109に引き渡す(図4のス
テップ402→403)。
れたEnv名称と、新たに生成された最上位のEnv管
理ハッシュ表302aの最大エントリ数K及びハッシュ
キーを、ハッシュ値計算部109に引き渡す(図4のス
テップ402→403)。
【0062】一方、ステップ409で次Envアドレス
が登録されていると判定された場合には、最上位のEn
v管理ハッシュ表302aの第m番目のエントリに次階
層のEnv管理ハッシュ表302bがリンクされている
ため、登録時ハッシュ表探索部103は、その下位のE
nv管理ハッシュ表302bを取得し(図4のステップ
410)、そのハッシュ表の最大エントリ数Kと、その
ハッシュ表の先頭に記憶されているハッシュキーを、入
力されたEnv名称と共に、ハッシュ値計算部109へ
引き渡す(図4のステップ410→403)。
が登録されていると判定された場合には、最上位のEn
v管理ハッシュ表302aの第m番目のエントリに次階
層のEnv管理ハッシュ表302bがリンクされている
ため、登録時ハッシュ表探索部103は、その下位のE
nv管理ハッシュ表302bを取得し(図4のステップ
410)、そのハッシュ表の最大エントリ数Kと、その
ハッシュ表の先頭に記憶されているハッシュキーを、入
力されたEnv名称と共に、ハッシュ値計算部109へ
引き渡す(図4のステップ410→403)。
【0063】続いて、ハッシュ値計算部109は、登録
時ハッシュ表探索部103からの指示により、入力され
たEnv名称に対応し下位のEnv管理ハッシュ表30
2bに対する新たなハッシュ値kを、前述した数2式と
同様の次式に従って計算する(図4のステップ40
3)。
時ハッシュ表探索部103からの指示により、入力され
たEnv名称に対応し下位のEnv管理ハッシュ表30
2bに対する新たなハッシュ値kを、前述した数2式と
同様の次式に従って計算する(図4のステップ40
3)。
【0064】
【数4】k=f′(名称、ハッシュキー) % K ここで、ハッシュキーは、登録時ハッシュ表探索部10
3から引き渡された、最上位のEnv管理ハッシュ表3
02aのハッシュキーとは異なるEnv管理ハッシュ表
302b独自のパラメータであり、また、Kは、登録時
ハッシュ表探索部103から引き渡された、Env管理
ハッシュ表302bの最大エントリ数である。
3から引き渡された、最上位のEnv管理ハッシュ表3
02aのハッシュキーとは異なるEnv管理ハッシュ表
302b独自のパラメータであり、また、Kは、登録時
ハッシュ表探索部103から引き渡された、Env管理
ハッシュ表302bの最大エントリ数である。
【0065】このようにして、ハッシュ値計算部109
で新たに計算されたハッシュ値kに基づいて、新たなE
nv管理ハッシュ表302bのエントリへの登録が試み
られる(図4のステップ404〜408、図7(c) )。
この場合、ハッシュ値mとハッシュ値kとではそれぞれ
の計算に使用されたハッシュキーが異なるため、下位の
Env管理ハッシュ表302bに対して新たに計算され
たハッシュ値kは、最上位のEnv管理ハッシュ表30
2aに対して計算されたハッシュ値mとは異なる分散傾
向を示す。このため、最上位のEnv管理ハッシュ表3
02a上の1つのエントリで衝突した各Env名称が、
そのエントリにリンクされている下位のEnv管理ハッ
シュ表302bにおいても再度衝突する確率は低くする
ことができる。
で新たに計算されたハッシュ値kに基づいて、新たなE
nv管理ハッシュ表302bのエントリへの登録が試み
られる(図4のステップ404〜408、図7(c) )。
この場合、ハッシュ値mとハッシュ値kとではそれぞれ
の計算に使用されたハッシュキーが異なるため、下位の
Env管理ハッシュ表302bに対して新たに計算され
たハッシュ値kは、最上位のEnv管理ハッシュ表30
2aに対して計算されたハッシュ値mとは異なる分散傾
向を示す。このため、最上位のEnv管理ハッシュ表3
02a上の1つのエントリで衝突した各Env名称が、
そのエントリにリンクされている下位のEnv管理ハッ
シュ表302bにおいても再度衝突する確率は低くする
ことができる。
【0066】新たなEnv管理ハッシュ表302bのエ
ントリへの登録の試みが失敗した場合には、それにリン
クされる更に下位のEnv管理ハッシュ表302c(図
3参照)に対して、同様の処理が繰り返される(図4の
ステップ409→402→403又はステップ409→
410→403のループ)。
ントリへの登録の試みが失敗した場合には、それにリン
クされる更に下位のEnv管理ハッシュ表302c(図
3参照)に対して、同様の処理が繰り返される(図4の
ステップ409→402→403又はステップ409→
410→403のループ)。
【0067】以上説明した名称登録処理により、ほとん
どの場合、上位のEnv管理ハッシュ表302の1つの
エントリで衝突が発生しても、そのエントリにリンクす
る下位のEnv管理ハッシュ表302のエントリへの登
録が成功するため、エントリ毎にそれに接続される下位
のハッシュ表の数は、従来のチェインエントリ数よりも
はるかに少なくすることができる。このため、そのよう
なエントリに対して次に説明する名称索引処理が実行さ
れた場合に、下位のハッシュ表のエントリを辿る回数が
少なく、メモリアクセス回数を抑制することができ、索
引効率の低下を防止することができる。名称索引処理 続いて、図1の名称索引装置102によって実行される
名称索引処理の動作について、図5及び図6の動作フロ
ーチャートと図7の動作説明図に基づいて説明する。
どの場合、上位のEnv管理ハッシュ表302の1つの
エントリで衝突が発生しても、そのエントリにリンクす
る下位のEnv管理ハッシュ表302のエントリへの登
録が成功するため、エントリ毎にそれに接続される下位
のハッシュ表の数は、従来のチェインエントリ数よりも
はるかに少なくすることができる。このため、そのよう
なエントリに対して次に説明する名称索引処理が実行さ
れた場合に、下位のハッシュ表のエントリを辿る回数が
少なく、メモリアクセス回数を抑制することができ、索
引効率の低下を防止することができる。名称索引処理 続いて、図1の名称索引装置102によって実行される
名称索引処理の動作について、図5及び図6の動作フロ
ーチャートと図7の動作説明図に基づいて説明する。
【0068】まず、索引時ハッシュ表探索部106は、
入力されたEnv名称を索引するための最上位のEnv
管理ハッシュ表302aが存在するか否かを判定する
(図5のステップ501)。
入力されたEnv名称を索引するための最上位のEnv
管理ハッシュ表302aが存在するか否かを判定する
(図5のステップ501)。
【0069】Env管理ハッシュ表302aが存在しな
い場合は、そのまま名称索引処理を終了する(ステップ
501の判定がNO)。Env管理ハッシュ表302a
が存在する場合には、索引時ハッシュ表探索部106
は、入力されたEnv名称と、最上位のEnv管理ハッ
シュ表302aの最大エントリ数M及びそのハッシュ表
の先頭に記憶されているハッシュキーを、ハッシュ値計
算部109に引き渡す(図5のステップ501→50
2)。
い場合は、そのまま名称索引処理を終了する(ステップ
501の判定がNO)。Env管理ハッシュ表302a
が存在する場合には、索引時ハッシュ表探索部106
は、入力されたEnv名称と、最上位のEnv管理ハッ
シュ表302aの最大エントリ数M及びそのハッシュ表
の先頭に記憶されているハッシュキーを、ハッシュ値計
算部109に引き渡す(図5のステップ501→50
2)。
【0070】次に、ハッシュ値計算部109は、索引時
ハッシュ表探索部106からの指示により、入力された
Env名称に対応するハッシュ値mを、前述した数2式
に従って計算する(図5のステップ502)。
ハッシュ表探索部106からの指示により、入力された
Env名称に対応するハッシュ値mを、前述した数2式
に従って計算する(図5のステップ502)。
【0071】ハッシュ値計算部109によってハッシュ
値mが計算された後、索引時ハッシュ表探索部106
は、最上位のEnv管理ハッシュ表302aの第m番目
のエントリをチェックし(図5のステップ503)、そ
のエントリに登録名称が存在するか否かを判定する(ス
テップ504)。
値mが計算された後、索引時ハッシュ表探索部106
は、最上位のEnv管理ハッシュ表302aの第m番目
のエントリをチェックし(図5のステップ503)、そ
のエントリに登録名称が存在するか否かを判定する(ス
テップ504)。
【0072】図5のステップ504での判定の結果、最
上位のEnv管理ハッシュ表302aの第m番目のエン
トリに登録名称が存在しなければ、そのまま名称索引処
理を終了する(ステップ504の判定がNO)。
上位のEnv管理ハッシュ表302aの第m番目のエン
トリに登録名称が存在しなければ、そのまま名称索引処
理を終了する(ステップ504の判定がNO)。
【0073】一方、図5のステップ504での判定の結
果、最上位のEnv管理ハッシュ表302aの第m番目
のエントリに登録名称が存在する場合には、索引時ハッ
シュ表探索部106は、更にそのエントリの登録名称と
入力されたEnv名称とを比較し(図5のステップ50
5)、それらが同一であるか否かを判定する(ステップ
506)。
果、最上位のEnv管理ハッシュ表302aの第m番目
のエントリに登録名称が存在する場合には、索引時ハッ
シュ表探索部106は、更にそのエントリの登録名称と
入力されたEnv名称とを比較し(図5のステップ50
5)、それらが同一であるか否かを判定する(ステップ
506)。
【0074】ステップ506での判定の結果、最上位の
Env管理ハッシュ表302aのm番目のエントリの登
録名称が入力されたEnv名称と同一であり、入力され
たEnv名称に対応するエントリの探索に成功した場合
には(図7(a) )、索引時ハッシュ表探索部106は、
探索成功を示す情報の返送又はEnv名称テーブル30
3にその名称に対応する各種情報が記憶されている場合
にはそれらの情報の返送を行った後、索引回数更新部1
07を起動する(ステップ506→507)。この結
果、索引回数更新部107は、そのエントリの索引カウ
ント(図3参照、又は索引回数)を更新(+1)する
(ステップ507)。
Env管理ハッシュ表302aのm番目のエントリの登
録名称が入力されたEnv名称と同一であり、入力され
たEnv名称に対応するエントリの探索に成功した場合
には(図7(a) )、索引時ハッシュ表探索部106は、
探索成功を示す情報の返送又はEnv名称テーブル30
3にその名称に対応する各種情報が記憶されている場合
にはそれらの情報の返送を行った後、索引回数更新部1
07を起動する(ステップ506→507)。この結
果、索引回数更新部107は、そのエントリの索引カウ
ント(図3参照、又は索引回数)を更新(+1)する
(ステップ507)。
【0075】その後、索引時ハッシュ表探索部106
は、最適化部108を起動する(図5のステップ50
8、図6)。この最適化部108の動作については後述
する。一方、ステップ506での判定の結果、最上位の
Env管理ハッシュ表302aの第m番目のエントリの
登録名称が入力されたEnv名称と同一ではない場合に
は、索引時ハッシュ表探索部106は、そのエントリに
次Envアドレス(図3参照)が登録されているか否
か、即ちそのエントリに次階層のEnv管理ハッシュ表
302b(図3参照)がリンクされているか否かを判定
する(図5のステップ509)。
は、最適化部108を起動する(図5のステップ50
8、図6)。この最適化部108の動作については後述
する。一方、ステップ506での判定の結果、最上位の
Env管理ハッシュ表302aの第m番目のエントリの
登録名称が入力されたEnv名称と同一ではない場合に
は、索引時ハッシュ表探索部106は、そのエントリに
次Envアドレス(図3参照)が登録されているか否
か、即ちそのエントリに次階層のEnv管理ハッシュ表
302b(図3参照)がリンクされているか否かを判定
する(図5のステップ509)。
【0076】ステップ509で次Envアドレスが登録
されていないと判定された場合は、そのまま名称索引処
理を終了する(ステップ509の判定がNO)。一方、
ステップ509で次Envアドレスが登録されていると
判定された場合には、最上位のEnv管理ハッシュ表3
02aの第m番目のエントリに次階層のEnv管理ハッ
シュ表302bがリンクされているため、索引時ハッシ
ュ表探索部106は、その下位のEnv管理ハッシュ表
302bを取得し(図5のステップ510、図7(b)
)、そのハッシュ表の最大エントリ数Kと、そのハッ
シュ表の先頭に記憶されているハッシュキーを、入力さ
れたEnv名称と共に、ハッシュ値計算部109へ引き
渡す(図5のステップ510→502)。
されていないと判定された場合は、そのまま名称索引処
理を終了する(ステップ509の判定がNO)。一方、
ステップ509で次Envアドレスが登録されていると
判定された場合には、最上位のEnv管理ハッシュ表3
02aの第m番目のエントリに次階層のEnv管理ハッ
シュ表302bがリンクされているため、索引時ハッシ
ュ表探索部106は、その下位のEnv管理ハッシュ表
302bを取得し(図5のステップ510、図7(b)
)、そのハッシュ表の最大エントリ数Kと、そのハッ
シュ表の先頭に記憶されているハッシュキーを、入力さ
れたEnv名称と共に、ハッシュ値計算部109へ引き
渡す(図5のステップ510→502)。
【0077】このようにして下位のEnv管理ハッシュ
表302bに対して新たに計算されるハッシュ値kを用
いて、索引時ハッシュ表探索部106は、入力されたE
nv名称に対応する下位のEnv管理ハッシュ表302
bに対する探索を続行し(図5のステップ503〜50
8、図7(c) )、それでも対応するエントリが見つから
ない場合には、更に下位のEnv管理ハッシュ表302
cに対する探索を繰り返す(図5のステップ508→5
09→510→502のループ)。
表302bに対して新たに計算されるハッシュ値kを用
いて、索引時ハッシュ表探索部106は、入力されたE
nv名称に対応する下位のEnv管理ハッシュ表302
bに対する探索を続行し(図5のステップ503〜50
8、図7(c) )、それでも対応するエントリが見つから
ない場合には、更に下位のEnv管理ハッシュ表302
cに対する探索を繰り返す(図5のステップ508→5
09→510→502のループ)。
【0078】以上の処理の結果、何れかの階層のEnv
管理ハッシュ表302において、入力されたEnv名称
に対応するエントリの探索が成功すると、前述したよう
に、索引時ハッシュ表探索部106は、探索成功を示す
情報の返送又はEnv名称テーブル303にその名称に
対応する各種情報が記憶されている場合にはそれらの情
報の返送を行った後に、索引回数更新部107を起動し
てそのエントリの索引カウントを更新させた後(ステッ
プ507)、最適化部108を起動する(図5のステッ
プ508)。
管理ハッシュ表302において、入力されたEnv名称
に対応するエントリの探索が成功すると、前述したよう
に、索引時ハッシュ表探索部106は、探索成功を示す
情報の返送又はEnv名称テーブル303にその名称に
対応する各種情報が記憶されている場合にはそれらの情
報の返送を行った後に、索引回数更新部107を起動し
てそのエントリの索引カウントを更新させた後(ステッ
プ507)、最適化部108を起動する(図5のステッ
プ508)。
【0079】図2は、最適化部108の構成図であり、
図6は、その構成によって実行される図5のステップ5
08の最適化処理を示す動作フローチャートである。ま
ず、上位ハッシュエントリ索引回数取得部201は、図
5のステップ507で索引カウントを更新したエントリ
が含まれるEnv管理ハッシュ表302がリンクする上
位のEnv管理ハッシュ表302のエントリに登録され
ている索引カウント(上位索引回数)を取得する(図6
のステップ601)。
図6は、その構成によって実行される図5のステップ5
08の最適化処理を示す動作フローチャートである。ま
ず、上位ハッシュエントリ索引回数取得部201は、図
5のステップ507で索引カウントを更新したエントリ
が含まれるEnv管理ハッシュ表302がリンクする上
位のEnv管理ハッシュ表302のエントリに登録され
ている索引カウント(上位索引回数)を取得する(図6
のステップ601)。
【0080】次に、現在ハッシュエントリ索引回数取得
部202は、図5のステップ507で索引カウントを更
新したエントリのその索引カウント(現索引回数)を取
得する(図6のステップ602)。
部202は、図5のステップ507で索引カウントを更
新したエントリのその索引カウント(現索引回数)を取
得する(図6のステップ602)。
【0081】次に、索引回数比較部203は、ステップ
601と602の処理結果に基づいて、現索引回数が上
位索引回数よりも10回以上多いか否かを判定する(図
6のステップ603)。
601と602の処理結果に基づいて、現索引回数が上
位索引回数よりも10回以上多いか否かを判定する(図
6のステップ603)。
【0082】現索引回数が上位索引回数よりも10回以
上多くなければ、索引回数比較部203は、索引回数の
最適化は実行せずに、最適化図5のステップ508の最
適化処理を終了する。
上多くなければ、索引回数比較部203は、索引回数の
最適化は実行せずに、最適化図5のステップ508の最
適化処理を終了する。
【0083】現索引回数が上位索引回数よりも10回以
上多ければ、索引回数比較部203は最適化制御部20
4を起動する(図6のステップ603→604)。最適
化制御部204は、まず、上位エントリ退避部205を
起動する。これにより、上位エントリ退避部205は、
図5のステップ507で索引カウントを更新したエント
リが含まれるEnv管理ハッシュ表302がリンクする
上位のEnv管理ハッシュ表302のエントリの登録情
報(図3の名称アドレス及び索引カウント)を、特には
図示しない第1の退避記憶領域に退避させる(図6のス
テップ604)。なお、そのエントリに登録されている
次Envアドレスは、そのまま残される。
上多ければ、索引回数比較部203は最適化制御部20
4を起動する(図6のステップ603→604)。最適
化制御部204は、まず、上位エントリ退避部205を
起動する。これにより、上位エントリ退避部205は、
図5のステップ507で索引カウントを更新したエント
リが含まれるEnv管理ハッシュ表302がリンクする
上位のEnv管理ハッシュ表302のエントリの登録情
報(図3の名称アドレス及び索引カウント)を、特には
図示しない第1の退避記憶領域に退避させる(図6のス
テップ604)。なお、そのエントリに登録されている
次Envアドレスは、そのまま残される。
【0084】最適化制御部204は、次に、現在エント
リ移動部206を起動する。これにより、現在エントリ
移動部206は、図5のステップ507で索引カウント
を更新したエントリの登録情報(図3の名称アドレス及
び索引カウント)を、そのエントリが含まれるEnv管
理ハッシュ表302がリンクする上位のEnv管理ハッ
シュ表302のエントリに登録し直す(図6のステップ
605)。なお、移動元のエントリに次Envアドレス
が登録されている場合には、現在エントリ移動部206
は、その次Envアドレスを特には図示しない第2の退
避領域に退避させておく。
リ移動部206を起動する。これにより、現在エントリ
移動部206は、図5のステップ507で索引カウント
を更新したエントリの登録情報(図3の名称アドレス及
び索引カウント)を、そのエントリが含まれるEnv管
理ハッシュ表302がリンクする上位のEnv管理ハッ
シュ表302のエントリに登録し直す(図6のステップ
605)。なお、移動元のエントリに次Envアドレス
が登録されている場合には、現在エントリ移動部206
は、その次Envアドレスを特には図示しない第2の退
避領域に退避させておく。
【0085】最適化制御部204は、最後に上位エント
リ再登録部207を起動する。これにより、上位エント
リ再登録部207は、まず、ハッシュ値計算部109を
起動して、前述の上位エントリ退避部205が第1の退
避記憶領域に退避させていた登録情報である名称アドレ
スから得られるEnv名称テーブル303内のEnv名
称に対応するハッシュ値を再計算させる(図6のステッ
プ606)。この場合に、上位エントリ再登録部207
は、上記Env名称と共に、図5のステップ507で索
引カウントを更新したエントリが含まれる回のEnv管
理ハッシュ表302の最大エントリ数と、その先頭に記
憶されているハッシュキーを、ハッシュ値計算部109
に引き渡す。
リ再登録部207を起動する。これにより、上位エント
リ再登録部207は、まず、ハッシュ値計算部109を
起動して、前述の上位エントリ退避部205が第1の退
避記憶領域に退避させていた登録情報である名称アドレ
スから得られるEnv名称テーブル303内のEnv名
称に対応するハッシュ値を再計算させる(図6のステッ
プ606)。この場合に、上位エントリ再登録部207
は、上記Env名称と共に、図5のステップ507で索
引カウントを更新したエントリが含まれる回のEnv管
理ハッシュ表302の最大エントリ数と、その先頭に記
憶されているハッシュキーを、ハッシュ値計算部109
に引き渡す。
【0086】最後に、上位エントリ再登録部207は、
図5のステップ507で索引カウントを更新したエント
リが含まれる下位のEnv管理ハッシュ表302におい
て、ハッシュ値計算部109が再計算したハッシュ値に
対応するエントリに、前述の上位エントリ退避部205
が第1の退避記憶領域に退避させていた登録情報である
名称アドレスと索引カウント、及び現在エントリ移動部
206が第2の退避領域に大使させていた次Envアド
レスを再登録し(図6のステップ607)、図5のステ
ップ508の最適化処理を終了する。
図5のステップ507で索引カウントを更新したエント
リが含まれる下位のEnv管理ハッシュ表302におい
て、ハッシュ値計算部109が再計算したハッシュ値に
対応するエントリに、前述の上位エントリ退避部205
が第1の退避記憶領域に退避させていた登録情報である
名称アドレスと索引カウント、及び現在エントリ移動部
206が第2の退避領域に大使させていた次Envアド
レスを再登録し(図6のステップ607)、図5のステ
ップ508の最適化処理を終了する。
【0087】このようにして、現索引回数が上位索引回
数よりも10回以上多くなった場合に、現在処理を行っ
ている下位のEnv管理ハッシュ表302のエントリの
登録内容とそのハッシュ表がリンクする上位のEnv管
理ハッシュ表302のエントリの登録内容とがスワップ
される。このように、現索引回数が上位索引回数よりも
ある程度以上多くならないと最適化処理が実行されない
のは、最適化処理が頻発することによる索引性能の劣化
を防止するためにである。
数よりも10回以上多くなった場合に、現在処理を行っ
ている下位のEnv管理ハッシュ表302のエントリの
登録内容とそのハッシュ表がリンクする上位のEnv管
理ハッシュ表302のエントリの登録内容とがスワップ
される。このように、現索引回数が上位索引回数よりも
ある程度以上多くならないと最適化処理が実行されない
のは、最適化処理が頻発することによる索引性能の劣化
を防止するためにである。
【0088】以上説明した最適化処理により、索引され
易いEnv名称が常に上位のEnv管理ハッシュ表30
2にエントリされるように再配置することができ、その
結果メモリアクセス回数が削減されて、索引効率を最適
化することができる。他の実施の形態 本発明は、上記実施の形態が実現する名称登録処理の機
能及び名称索引処理の機能と同等の機能を実現するコン
ピュータプログラムを記憶したフロッピィディスク、C
D−ROMディスク、光ディスク、可搬型(リムーバブ
ル)ハードディスク等の記憶媒体、又はネットワーク記
憶媒体をも特許請求の範囲とする。
易いEnv名称が常に上位のEnv管理ハッシュ表30
2にエントリされるように再配置することができ、その
結果メモリアクセス回数が削減されて、索引効率を最適
化することができる。他の実施の形態 本発明は、上記実施の形態が実現する名称登録処理の機
能及び名称索引処理の機能と同等の機能を実現するコン
ピュータプログラムを記憶したフロッピィディスク、C
D−ROMディスク、光ディスク、可搬型(リムーバブ
ル)ハードディスク等の記憶媒体、又はネットワーク記
憶媒体をも特許請求の範囲とする。
【0089】
【発明の効果】本発明の第1の態様の構成によって実現
される名称登録処理によれば、ほとんどの場合、上位の
ハッシュ表の1つのエントリで衝突が発生しても、その
エントリにリンクする下位のハッシュ表のエントリへの
登録が成功するため、エントリ毎にそれに接続される下
位のハッシュ表の数は、従来のチェインエントリ数より
もはるかに少なくすることができる。このため、そのよ
うなエントリに対して名称索引処理が実行された場合
に、下位のハッシュ表のエントリを辿る回数が少なく、
メモリアクセス回数を抑制することができ、索引効率の
低下を防止することが可能となる。
される名称登録処理によれば、ほとんどの場合、上位の
ハッシュ表の1つのエントリで衝突が発生しても、その
エントリにリンクする下位のハッシュ表のエントリへの
登録が成功するため、エントリ毎にそれに接続される下
位のハッシュ表の数は、従来のチェインエントリ数より
もはるかに少なくすることができる。このため、そのよ
うなエントリに対して名称索引処理が実行された場合
に、下位のハッシュ表のエントリを辿る回数が少なく、
メモリアクセス回数を抑制することができ、索引効率の
低下を防止することが可能となる。
【0090】このため、名称の衝突が発生しにくくなる
ように、最上位のハッシュ表のサイズを大きくしなけれ
ばならないといった処置を講じる必要がないという特徴
を有する。
ように、最上位のハッシュ表のサイズを大きくしなけれ
ばならないといった処置を講じる必要がないという特徴
を有する。
【0091】本発明の第2の態様の構成により実現され
る名称索引処理における最適化処理によれば、索引され
易い名称が常に上位のハッシュ表にエントリされるよう
に再配置することができ、その結果メモリアクセス回数
が削減されて、索引効率を最適化することが可能とな
る。
る名称索引処理における最適化処理によれば、索引され
易い名称が常に上位のハッシュ表にエントリされるよう
に再配置することができ、その結果メモリアクセス回数
が削減されて、索引効率を最適化することが可能とな
る。
【図面の簡単な説明】
【図1】本発明の実施の形態の全体構成図である。
【図2】最適化部の構成図である。
【図3】ハッシュ表のデータ構成図である。
【図4】名称登録処理の動作フローチャートである。
【図5】名称索引処理の動作フローチャートである。
【図6】最適化処理の動作フローチャートである。
【図7】本発明の実施の形態の動作説明図である。
【図8】従来のハッシュ表のデータ構成図である。
【図9】従来技術の動作フローチャートである。
101 名称登録装置 102 名称索引装置 103 登録時ハッシュ表探索部 104 名称登録部 105 ハッシュ表作成部 106 索引時ハッシュ表探索部 107 索引回数更新部 108 最適化部 201 上位ハッシュエントリ索引回数取得部 202 現在ハッシュエントリ索引回数取得部 203 索引回数比較部 204 最適化制御部 205 上位エントリ退避部 206 現在エントリ移動部 207 上位エントリ再登録部
Claims (7)
- 【請求項1】 ハッシュ表データに対する名称登録処理
を制御するためのハッシング制御方法であって、 ハッシュ表データへの入力名称の登録時に、処理対象の
ハッシュ表において、その処理対象のハッシュ表に対応
して一意に定義されているハッシュキーを用いて、前記
入力名称に対応するハッシュ値を計算し、 前記処理対象のハッシュ表において、前記ハッシュ値に
対応するエントリに、どの名称も登録されていない場合
に、そのエントリに、前記入力名称に関する情報を登録
し、 前記処理対象のハッシュ表において、前記ハッシュ値に
対応するエントリに、前記入力名称と異なる名称が登録
されている場合に、そのエントリに下位のハッシュ表が
リンクされていれば、それを新たな処理対象のハッシュ
表とし、そのエントリに下位のハッシュ表がリンクされ
ていなければ、そのエントリにリンクさせて新たな下位
のハッシュ表を生成しそれを新たな処理対象のハッシュ
表とすると共に、そのハッシュ表に対応する一意なハッ
シュキーを定義し、 その新たな処理対象のハッシュ表に対して、前記一連の
各処理を繰り返し実行させる、 過程を含むことを特徴とするハッシング制御方法。 - 【請求項2】 ハッシュ表データに対する名称索引処理
を制御するためのハッシング制御方法であって、 ハッシュ表データに対する入力名称の索引時に、処理対
象のハッシュ表において、その処理対象のハッシュ表に
対応して一意に定義されているハッシュキーを用いて、
前記入力名称に対応するハッシュ値を計算し、 前記処理対象のハッシュ表において、前記ハッシュ値に
対応するエントリに、前記入力名称と同一の名称が登録
されていることが探索された場合に、そのエントリに登
録されている索引回数を更新し、 その後、そのエントリの索引回数を、そのエントリが含
まれるハッシュ表がリンクする上位のハッシュ表のエン
トリに登録されている索引回数と比較することによっ
て、それら2つのエントリの登録内容の再配置を制御
し、 前記処理対象のハッシュ表において、前記ハッシュ値に
対応するエントリに、前記入力名称と異なる名称が登録
されていることが探索された場合に、そのエントリにリ
ンクされる下位のハッシュ表を新たな処理対象のハッシ
ュ表として、それに対して、前記一連の各処理を繰り返
し実行させる、 過程を含むことを特徴とするハッシング制御方法。 - 【請求項3】 ハッシュ表データに対する名称登録処理
を制御するためのハッシング制御装置であって、 ハッシュ表データへの入力名称の登録時に、処理対象の
ハッシュ表において、その処理対象のハッシュ表に対応
して一意に定義されているハッシュキーを用いて、前記
入力名称に対応するハッシュ値を計算するハッシュ値計
算手段と、 前記処理対象のハッシュ表において、前記ハッシュ値計
算手段によって計算されたハッシュ値に対応するエント
リを探索する探索手段と、 該探索手段により、前記処理対象のハッシュ表におい
て、前記ハッシュ値計算手段によって計算されたハッシ
ュ値に対応するエントリに、どの名称も登録されていな
いことが探索された場合に、そのエントリに、前記入力
名称に関する情報を登録する名称登録手段と、 前記探索手段により、前記処理対象のハッシュ表におい
て、前記ハッシュ値計算手段によって計算されたハッシ
ュ値に対応するエントリに、前記入力名称と異なる名称
が登録されていることが探索された場合に、そのエント
リに下位のハッシュ表がリンクされていれば、それを新
たな処理対象のハッシュ表とし、そのエントリに下位の
ハッシュ表がリンクされていなければ、そのエントリに
リンクさせて新たな下位のハッシュ表を生成しそれを新
たな処理対象のハッシュ表とすると共に、そのハッシュ
表に対応する一意なハッシュキーを定義するハッシュ表
作成手段と、 その新たな処理対象のハッシュ表に対して、前記ハッシ
ュ値計算手段、前記探索手段、前記名称登録手段、及び
前記ハッシュ表作成手段による一連の処理を繰り返し実
行させるハッシュ表階層制御手段と、 を含むことを特徴とするハッシング制御装置。 - 【請求項4】 ハッシュ表データに対する名称索引処理
を制御するためのハッシング制御装置であって、 ハッシュ表データに対する入力名称の索引時に、処理対
象のハッシュ表において、その処理対象のハッシュ表に
対応して一意に定義されているハッシュキーを用いて、
前記入力名称に対応するハッシュ値を計算するハッシュ
値計算手段と、 前記処理対象のハッシュ表において、前記ハッシュ値計
算手段によって計算されたハッシュ値に対応するエント
リを探索する探索手段と、 前記探索手段により、前記処理対象のハッシュ表におい
て、前記ハッシュ値計算手段によって計算されたハッシ
ュ値に対応するエントリに、前記入力名称と同一の名称
が登録されていることが探索された場合に、そのエント
リに登録されている索引回数を更新する索引回数更新手
段と、 該索引回数の更新の後、そのエントリの索引回数を、そ
のエントリが含まれるハッシュ表がリンクする上位のハ
ッシュ表のエントリに登録されている索引回数と比較す
ることによって、それら2つのエントリの登録内容の再
配置を制御する最適化手段と、 前記探索手段により、前記処理対象のハッシュ表におい
て、前記ハッシュ値計算手段によって計算されたハッシ
ュ値に対応するエントリに、前記入力名称と異なる名称
が登録されていることが探索された場合に、そのエント
リにリンクされる下位のハッシュ表を新たな処理対象の
ハッシュ表として、それに対して、前記ハッシュ値計算
手段、前記探索手段、前記索引回数更新手段、及び前記
最適化手段による一連の処理を繰り返し実行させるハッ
シュ表階層制御手段と、 を含むことを特徴とするハッシング制御装置。 - 【請求項5】 前記2つのエントリの登録内容の再配置
の制御は、該2つのエントリのうち下位の方のエントリ
の索引回数が上位の方のエントリの索引回数よりも所定
回数以上多くなった場合に、該2つのエントリの登録内
容を入れ替える処理である、 ことを特徴とする請求項2又は4の何れか1項に記載の
ハッシング制御方法又は装置。 - 【請求項6】 計算機により使用されたときにそれによ
って読み出される記憶媒体であって、 ハッシュ表データへの入力名称の登録時に、処理対象の
ハッシュ表において、その処理対象のハッシュ表に対応
して一意に定義されているハッシュキーを用いて、前記
入力名称に対応するハッシュ値を計算する機能と、 前記処理対象のハッシュ表において、前記ハッシュ値に
対応するエントリに、どの名称も登録されていない場合
に、そのエントリに、前記入力名称に関する情報を登録
する機能と、 前記処理対象のハッシュ表において、前記ハッシュ値に
対応するエントリに、前記入力名称と異なる名称が登録
されている場合に、そのエントリに下位のハッシュ表が
リンクされていれば、それを新たな処理対象のハッシュ
表とし、そのエントリに下位のハッシュ表がリンクされ
ていなければ、そのエントリにリンクさせて新たな下位
のハッシュ表を生成しそれを新たな処理対象のハッシュ
表とすると共に、そのハッシュ表に対応する一意なハッ
シュキーを定義する機能と、 その新たな処理対象のハッシュ表に対して、前記一連の
各処理を繰り返し実行させる機能と、 を前記計算機に行わせるための計算機読出し可能記憶媒
体。 - 【請求項7】 計算機により使用されたときにそれによ
って読み出される記憶媒体であって、 ハッシュ表データに対する入力名称の索引時に、処理対
象のハッシュ表において、その処理対象のハッシュ表に
対応して一意に定義されているハッシュキーを用いて、
前記入力名称に対応するハッシュ値を計算する機能と、 前記処理対象のハッシュ表において、前記ハッシュ値に
対応するエントリに、前記入力名称と同一の名称が登録
されていることが探索された場合に、そのエントリに登
録されている索引回数を更新する機能と、 その後、そのエントリの索引回数を、そのエントリが含
まれるハッシュ表がリンクする上位のハッシュ表のエン
トリに登録されている索引回数と比較することによっ
て、それら2つのエントリの登録内容の再配置を制御す
る機能と、 前記処理対象のハッシュ表において、前記ハッシュ値に
対応するエントリに、前記入力名称と異なる名称が登録
されていることが探索された場合に、そのエントリにリ
ンクされる下位のハッシュ表を新たな処理対象のハッシ
ュ表として、それに対して、前記一連の各処理を繰り返
し実行させる機能と、 を前記計算機に行わせるための計算機読出し可能記憶媒
体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP9204350A JPH1153199A (ja) | 1997-07-30 | 1997-07-30 | ハッシング制御方法及び装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP9204350A JPH1153199A (ja) | 1997-07-30 | 1997-07-30 | ハッシング制御方法及び装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH1153199A true JPH1153199A (ja) | 1999-02-26 |
Family
ID=16489058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9204350A Pending JPH1153199A (ja) | 1997-07-30 | 1997-07-30 | ハッシング制御方法及び装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH1153199A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100325688B1 (ko) * | 1999-11-19 | 2002-02-25 | 오길록 | 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어방법 및 이를 이용한 엔트리 삽입, 삭제, 검색 방법 |
-
1997
- 1997-07-30 JP JP9204350A patent/JPH1153199A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100325688B1 (ko) * | 1999-11-19 | 2002-02-25 | 오길록 | 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어방법 및 이를 이용한 엔트리 삽입, 삭제, 검색 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106528579A (zh) | 一种基于分库分表结构数据库的查询方法、装置及系统 | |
CN112131218B (zh) | 一种基因对比的哈希查表方法、装置、设备及存储介质 | |
US20050216468A1 (en) | Data retrieval system, data retrieval method and data retrieval program | |
CN114077680A (zh) | 一种图数据的存储方法、系统及装置 | |
CN113553339B (zh) | 数据查询方法、中间件、电子装置和存储介质 | |
CN114090695A (zh) | 分布式数据库的查询优化的方法和装置 | |
CN112639761B (zh) | 一种为数据建立索引的方法以及装置 | |
CN117389950A (zh) | 基于学习索引的lsm树层设计方法及系统 | |
CN108549666A (zh) | 一种数据表的排序方法、装置、设备及存储介质 | |
JPH1153199A (ja) | ハッシング制御方法及び装置 | |
US6963865B2 (en) | Method system and program product for data searching | |
US20190163810A1 (en) | Search User Interface | |
JPH06215037A (ja) | インデックスの自動更新装置 | |
CN113536058A (zh) | 一种空间索引修改方法、装置、设备及存储介质 | |
JPH05266085A (ja) | 動的概念辞書を用いた類似検索方法及びその装置 | |
CN113821514A (zh) | 数据拆分方法、装置、电子设备和可读存储介质 | |
JP2020135530A (ja) | データ管理装置、データ検索方法及びプログラム | |
JPS63226727A (ja) | 情報検索装置 | |
JPH05334364A (ja) | 検索条件式作成方法 | |
JP3337717B2 (ja) | データベース処理装置およびデータベース処理方法 | |
JPS63257826A (ja) | デ−タベ−ス検索装置 | |
JPH07105223A (ja) | データベース検索装置 | |
JPH0749862A (ja) | 文書管理システム | |
KR0123248B1 (ko) | 분산 시스템에서 데이타베이스 관리시스템(dbms)의 데이타 고속 변경 방법 | |
JP2003271649A (ja) | リレーショナルデータベース問い合わせ処理方式及びリレーショナルデータベース問い合わせ処理システム |