JPH0581102A - テーブル管理方式 - Google Patents

テーブル管理方式

Info

Publication number
JPH0581102A
JPH0581102A JP3266909A JP26690991A JPH0581102A JP H0581102 A JPH0581102 A JP H0581102A JP 3266909 A JP3266909 A JP 3266909A JP 26690991 A JP26690991 A JP 26690991A JP H0581102 A JPH0581102 A JP H0581102A
Authority
JP
Japan
Prior art keywords
data
pointer
hash
hash value
registered
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP3266909A
Other languages
English (en)
Inventor
Toru Kayano
徹 茅野
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP3266909A priority Critical patent/JPH0581102A/ja
Publication of JPH0581102A publication Critical patent/JPH0581102A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【目的】 キーワードによりアクセス可能として各デー
タをデータテーブルに格納し、データテーブルに格納さ
れた各データを効率よくアクセスできるテーブル管理方
式に提供する。 【構成】 ハッシュテーブルと、該ハッシュテーブルか
ら求められるハッシュ値により示されるアドレスに各デ
ータが格納されるデータテーブルとを備え、ハッシユテ
ーブルからテータ格納先アドレスを求め、データテーブ
ルに格納されたデータをアクセスするテーブル管理方式
において、前記データテーブルにおける各データに対し
て、少なくても一方向に関連付ける関連付情報を付加
し、該関連付情報に基づきデータテーブルにおけるデー
タを順次に参照して、ハッシュテーブルによらずに各デ
ータをアクセス可能とする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、テーブル管理方式に関
し、特に、キーワードによりアクセス可能として各デー
タをデータテーブルに格納し、データテーブルに格納さ
れた各データを効率よくアクセスできるテーブル管理方
式に関するものである。
【0002】
【従来の技術】近年の計算機の処理速度向上,半導体集
積技術の進歩、補助記憶装置の高密度化,アクセスタイ
ムの高速化により、大量にデータを処理できる技術的な
基盤が整いつつある。これにつれて、大量にデータを処
理するニーズも増大して来ている。中でも最もニーズが
高いものはデータベースを扱うデータベースシステムで
ある。データベースシステムは、多数のデータのアクセ
スをキーワード等により効率よく行うことを可能とし、
各データを格納し管理/運用するためのシステムであ
る。ここでは多数のデータが格納されて、格納された多
数のデータがキーワード等によるアクセス要求に応じて
効率よく引き出されなければならない。
【0003】このため、データベースシステムにおいて
は、既に格納されている多数のデータの中から特定のキ
ーワードをもとに目的とするデータを捜して読み出す検
索機能は必須である。このような検索機能を実現するた
め、データの集合体であるデータファイルの他に、キー
ワードとデータファイルの関連性のみを集めたインデッ
クスファイルなどが利用される。
【0004】一方、規模の小さいデータベースを分散さ
せて設けるシステム構成も徐々にクローズアップされて
きている。このようなシステム構成の場合、ネットワー
クで結合された通信システムの形態をとる。このような
システム構成においては、アドレス情報を集めたアドレ
ステーブル、中継情報を集めたルーティングテーブルな
どのデータテーブルが多く設けられ、これらの各テーブ
ルのデータが、上述と同様なデータアクセス機能により
検索され読み出せるように構成されている。通信システ
ムではこれらのテーブルデータとして多くの制御データ
が格納され、システム運転において常にアクセスされ、
格納されたデータが参照される。
【0005】例えば、特開平3−42938号公報に記
載された「ブリッジ通信方式」においては、学習テーブ
ル,キーテーブル,MAC(メディア・アクセス・コン
トロール)テーブルなどのデータテーブルが用いられ、
データテーブルから制御データをアクセスしながらシス
テム運転が行なわれる。
【0006】
【発明が解決しようとする課題】ところで、ネットワー
クで結合された通信システムでは、扱う情報がデータベ
ースシステムに比較して、少ない反面、大型計算機で扱
うデータベース以上に必要なデータに高速にアクセスす
る必要がある場合が多い。このため、必要に応じてメモ
リシステムはキャッシュ方式(主記憶にディスク記憶の
上のデータの一部の写しをもつシステム)で実現され、
アクセスの高速性が図かられる。
【0007】したがって、ほとんどの通信システムで
は、主記憶上にこれらのキャッシュデータを記憶するデ
ータテーブルが設けられ、アクセス法ではキャッシュ方
式が併用されることが多い。通信システムでは、このよ
うなデータの集合体である小規模なデータベースのデー
タテーブルは単にテーブルと呼ばれる。ここでのテーブ
ルとはデータの集合体であり、データとは複数の項目か
ら構成されるアクセス単位である。このテーブルに対し
てデータを追加したり、削除したり、参照したりするテ
ーブル管理(データテーブル管理)が行われる。
【0008】これらのテーブル管理にかかる機能を効率
よく実現するための手法として、ソート機能が利用され
る。ソート機能は、特定の項目をキーワードとして、検
索するための項目をもとに昇順や降順などにデータをな
らベ換える機能であり、このソート機能の典型的な手法
として、バブルソート,シェルソート,ヒープソートな
どのソート手法がある。これらのソート手法を用いるこ
とにより、特定のデータを検索するために必要とする作
業量をかなり減少させることができる。しかしながら、
それでも特定のデータに辿りつくまでに費やす作業量
は、キーワードの種類により変動し、かなりの作業量と
なっている。また、特定のデータに辿りつくまでに費や
す作業量が固定的なソート法を用いる場合であってもそ
の作業量は無視できない。
【0009】また、テーブルデータをアクセスする際の
検索の処理時間および作業量の問題を解決する手法とし
て、ハッシュテーブルを用いる手法がある。テーブルの
データに追加登録が頻繁にあり、検索速度を要求される
ときにハッシュテーブルが用いられる。ハッシュテーブ
ルでは、各データに対するテーブルの位置をハッシュ関
数によって決める。ハッシュ関数は一種の疑似乱数を生
成する関数であり、検索を行うキーワードからテーブル
を参照するための値(アドレス)を生成し、この値のテ
ーブル位置に登録するデータを格納し、また、この値の
テーブル位置に登録されているデータを読み出す。次
に、このようなハッシュテーブルを用いてテーブル(デ
ータテーブル)管理する手法の概略を図18を参照して
説明する。
【0010】図18はハッシュテーブルを用いたテーブ
ル管理の一例を説明する図である。図18において、1
11はハッシュテーブル、112はデータテーブルであ
る。データテーブル112は、データ1,データ2,お
よびデータ3の3個のデータで構成されている。各々の
データは3個の項目で構成されており、データの各項目
の項目名はそれぞれ項目1,項目2,項目3となってい
る。データを検索する場合、検索の基となるキーワード
は、データの各項目の項目1〜3の何れかである。ま
ず、ハッシュテーブル111を利用するためにハッシュ
関数を定義する。このハッシュ関数の内容はどのような
ものでも良いが、例えば、項目2の内容をキーワードと
する場合には、コード化された項目2の内容“5”を4
で割った余りにするというもので良い。このハッシュ関
数から得られる値をハッシュ値と呼び、ハッシュテーブ
ルの何番目かに対応付けて、目的のデータをデータテー
ブルに書き込み読み出すために利用する。
【0011】通常の場合、ハッシュ関数はハッシュテー
ブルの何番目かを決定するための関数であり、ハッシュ
テーブルにはハッシュ値に対応してデータの実体が入っ
ているデータテーブルを関連付けるための数値化された
値(例えば主記憶のアドレス情報)が入っている。図1
8に示す例では、データ2を検索する場合、データ2の
項目2の内容“5”によりハッシュ値2が求められ、こ
のハッシュ値からハッシュテーブル111に格納されて
いるデータ2のアドレス情報であるアドレス情報2が求
められ、データ2がアクセスされる。ハッシュテーブル
111を利用すると、ハッシュ関数の定義の仕方により
殆ど1回のアクセス作業により、目的のデータを捜し当
てることができる。なお、この場合は、ハッシュ関数か
ら得られたハッシュ値が他のデータのものと一致せず、
一意に決まる場合である。
【0012】ところで、例えば、検索するデータのキー
ワードにより求めたハッシュ値が他のデータのハッシュ
値と一致してしまうと、1回のアクセス作業により目的
のデータを捜し当てることができなくなる。この場合の
例を図19により説明する。
【0013】図19はハッシュテーブルを用いたテーブ
ル管理を行う場合の効率が上がらない場合の例を説明す
る説明図である。上述のように、この場合のハッシュテ
ーブル113では、4で割った余りをハッシュ値とする
関数をハッシュ関数としている場合であるが、図19に
示すように、例えば、データ3を検索するため、キーワ
ードとする項目2の内容“5”により求めた関数値
“1”のハッシュ値が、ここでの検索で目的としない他
のデータであるデータ2の項目2の内容“1”により求
められるハッシュ関数の値“1”と一致してしまう場合
である。この場合には、1回のアクセス処理により目的
のデータを捜し当てることができない。
【0014】この場合、キーワードとする項目2の内容
“5”によりハッシュ関数で求めた値“1”のハッシュ
値によるアドレス情報2により、データテーブル114
をアクセスすると、2つのデータ2およびデータ3が読
み出されることになる。このため、更に、読み出された
データが、ここでの検索で目的としているデータ3に合
致しているか否かを判別しなければならない。なお、こ
こではハッシュテーブル113により管理するデータを
データテーブル114に格納する際、同じハッシュ値と
なるデータは次アドレス(アドレス情報2の次のアドレ
ス)に格納されるように予じめ決められており、データ
テーブル114の次アドレスに既に他のデータが格納さ
れている場合など更に次のアドレスに格納される。ハッ
シュ値が一致してしまうデータが多くあると、当該デー
タを登録できない場合もある。このように、ハッシュ関
数の定義の仕方によってはハッシュ値が一致してしまう
場合が多くあり、ハッシュ関数として上述のように、4
で割った余りをハッシュ値とするような関数を用いる場
合、商を捨ててハッシュ値を求めているため、ハッシュ
値が一致する確率は高い。従って、ハッシュテーブルを
利用する時のハッシュ関数の定義の仕方は非常に重要で
ある。
【0015】ところで、図19に示すように、ハッシュ
値が一致してしまう場合、一致するハッシュ値に対応し
ている複数のデータを、それぞれアクセス可能なように
してテーブル管理する必要がある。この場合、例えば、
前述の特開平3−42938号公報に記載のシステムに
おけるテーブル管理で用いられているように、リンクリ
ストを用いて、各データどうしを関係付ける方法(リン
クリスト;同公報の第3図およびその説明を参照)を利
用することができる。この方法を概要を図20により説
明する。
【0016】図20はハッシュ値が一致する場合のデー
タ管理の一例を説明する図である。ハッシュ値が一致す
る場合、図20に示すように、ハッシュテーブル115
の同一のハッシュ値によるアドレス(アドレス情報2)
で、データテーブル116に登録されているデータ2お
よびデータ3は、各データに付加された項目4の次ポイ
ンタ117の情報によってリンクされている。このた
め、同じハッシュ値のアドレス情報2でアクセスされた
データテーブル116のデータ2およびデータ3の各々
のデータに対しては、検索の対象のデータを判断するた
め、ハッシュ関数に与えたキーワードの項目2の内容に
対して、ハッシュテーブル115により求めたアドレス
情報2により、データテーブル116をアクセスして該
当する複数の各データを読み出し、更に該当データの項
目2の内容を読み出し、その次ポインタ117の情報に
よってリンクされている次のデータの項目2の内容を逐
次比較して、一致するデータを見つければならない。
【0017】このように、同一のハッシュ値で登録され
ているデータが複数個ある場合、同一のハッシュ値でア
クセスされた複数の各々のデータに対して、どのデータ
が検索の対象なのかを判断しなければならない。このた
め、ハッシュ関数に与えたキーワードが一致するまで、
データを読み出し逐次比較されることになる。
【0018】ハッシュテーブルを利用する際のテーブル
管理においては、ハッシュ関数の定義の仕方によって
は、異なるキーワードから求められるハッシュ値が一致
する場合があるため、ハッシュテーブルを利用する時の
データテーブル管理では、原理上、図20に示すような
データ構造になることを前提としなければならない。図
20に示すようなデータ構造でテーブル管理を行う場合
においては、例えばデータ1を検索する時は、ハッシュ
テーブル115のハッシュ値“0”→データ1の順で行
なわれ、また、データ2の場合は、ハッシュ値“1”→
データ2の順で行われる。データ3の場合は次ポインタ
117の情報を用いて、ハッシュ値“1”→データ2→
データ3の順で行われることになる。
【0019】ハッシュテーブルによる検索の処理は、以
上に説明したような流れで行なわれる。ところで、テー
ブルに登録されているデータの全てを調ベたい場合もあ
る。図20に示すようなデータ構造でテーブル管理を行
っている場合は、データテーブル116には連続したア
ドレスに各データが格納されていないことが前提となっ
ているので、データの全てを調ベたい場合、必ずハッシ
ュテーブル115を参照してから各データを調ベなけれ
ばならない。まず、データ1を参照するため、ハッシュ
テーブル115のハッシュ値“0”→データテーブル1
16のデータ1とアクセスし、次にデータ2およびデー
タ3を参照するため、ハッシュ値“1”→データ2→デ
ータ3とアクセスし、次にデータ4をアクセスするた
め、ハッシュ値“3”→データ4というように、必ずハ
ッシュテーブル115を参照してから各データを調ベな
ければならない。このようなデータテーブルのデータ読
み出し処理をプログラミングで実現する場合、ハッシュ
テーブル115のハッシュ値“1”〜ハッシュ値“3”
までを走査するためのポインタA,ハッシュ値の終了値
を示すポインタB,および読み出される各データを走査
するためのポインタCからなるポインタ制御レジスタ1
18を必要とすることになる。
【0020】図20に示す例で説明すると、データテー
ブル116の全てのデータを読み出すため、ポインタ制
御レジスタ118において、ポインタAの初期値として
ハッシュ値“0”が設定され、終了値を示すポインタB
にはハッシュ値“3”の次のエントリ(仮想的なエント
リ)のハッシュ値“4”が設定される。この場合、デー
タテーブル116の全データを走査して読み出す処理の
流れは図21に示すようになる。
【0021】ポインタ制御レジスタ118のポインタA
〜ポインタCを制御して、データテーブル116に登録
された全てデータを読み出す処理を、図21を参照して
説明すると、次のようになる。まず、ステップ121に
おいて、ポインタAとポインタBと等しいか否かを判定
する。ポインタAとポインタBとが等しい場合は、ここ
でデータ読み出しのために走査しているハッシュ値(ポ
インタA)が、終了値を示すハッシュ値(ポインタB)
と等しいので、データ読み出し走査は終了しており、処
理は終了とする。ポインタAとポインタBとが等しくな
い場合は、ステップ122に進み、ポインタAのハッシ
ュ値で登録されているデータがあるか否かを判定する。
ポインタAのハッシュ値で登録されているデータがある
場合、次のステップ123に進み、ポインタAのハッシ
ュ値で指示される読み出しアドレスをポインタCに格納
する。そして、次のステップ124において、ポインタ
Cが指示するアドレスでデータテーブル116のデータ
を読み出す。次にステップ125の判定処理において、
読み出したデータの次ポインタは次のデータを指示して
いるか否かを判定し、次ポインタが次のデータを指示し
ている場合、同じハッシュ値で続くデータがあるので、
次に、ステップ126において、次ポインタのアドレス
をポインタCに格納する。そして、次のステップ124
に戻り、ポインタCが指示するアドレスでデータテーブ
ルのデータを読み出す。以下同様にして、この処理を繰
り返し行い、データテーブルの各データに付加されてい
る項目の次ポインタにより、リンクされてる各データを
読み出す。
【0022】一方、ステップ125の判定処理により、
次ポインタが次データを指示していると判定されない場
合、現在のポインタAに登録されているハッシュ値によ
るデータ読み出しは終了したので、次にステップ127
に進み、ポインタAのハッシュ値を次に進める。そし
て、ステップ121に戻り、以下同様の処理を繰り返し
行う。
【0023】このようにして、図20に示すような構造
でデータテーブルに登録されているデータの全てを読み
出すためには、図21に示すようなアルゴリズムの読み
出し処理を行なわなければならない。この場合、読み出
し処理では、3個の制御ポインタを必要とし、また、図
21に示すような、ハーシュテーブルのハッシュ値の走
査と、読み出しデータの走査を行う複雑なアルゴリズム
の処理を行なわなければならない。
【0024】したがって、本発明の目的は、より少ない
数の制御ポインタで簡単なアルゴリズムによりデータテ
ーブルに登録されている全データを読み出すことができ
るテーブル管理方式を提供することにある。
【0025】本発明の他の目的は、キーワードによりア
クセス可能として各データをデータテーブルに格納し、
データテーブルに格納された各データを効率よくアクセ
スできるテーブル管理方式を提供することにある。
【0026】
【課題を解決するための手段】上述した目的を達成する
ため、本発明のテーブル管理方式は、ハッシュテーブル
(11;図1)と、該ハッシュテーブルから求められる
ハッシュ値により示されるアドレスに各データが格納さ
れるデータテーブル(12;図1)とを備え、ハッシユ
テーブルからテータ格納先アドレスを求め、データテー
ブルに格納されたデータをアクセスするテーブル管理方
式において、前記データテーブルにおける各データに対
して、少なくても一方向に関連付ける関連付情報(1
4;図1)を付加し、該関連付情報に基づきデータテー
ブルにおけるデータを順次に参照して各データをアクセ
スすることを特徴とする。
【0027】
【作用】本発明のテーブル管理方式においては、データ
テーブルに格納された各データをキーワードにより効率
良くアクセス可能とするため、ハッシュテーブルを用い
てテーブル管理を行い、データアクセスを行う。各デー
タはハッシュテーブルから求められるハッシュ値により
示されるアドレスで、データテーブルに格納される。デ
ータテーブルに格納された各データには、少なくても一
方向に関連付ける関連付情報が付加され、データテーブ
ルにおける各データは、当該データに付加された関連付
情報に基づき順次に参照できるようなデータ構造とされ
る。これにより、ハッシュテーブルによらずに容易に全
データがアクセス可能となる。
【0028】このように、データテーブルに格納され、
ハッシュテーブルを用いて管理されることによりキーワ
ードによりアクセス可能とされる各データには、当該デ
ータを構成する複数の項目の一部を用いて、少なくても
一方向に関連付ける関連付情報が付加される。この結
果、ハッシュテーブルには異なったハッシュ値として登
録されているデータどうしが、関連付け情報、例えばリ
ンクリストにより関係付けられる。このため、データテ
ーブルに格納されている全てのデータを参照する場合、
ハッシュテーブルによらずに、関係付け情報のリンクリ
ストにより直接的に全てデータの参照が可能となる。
【0029】
【実施例】以下、本発明の実施例を図面を参照して具体
的に説明する。図1は本発明の第1の実施例にかかるテ
ーブル管理方式のデータ構造例を説明する図であり、図
2は本発明の第2の実施例にかかるテーブル管理方式の
データ構造例を説明する図である。また、図3は本発明
の第3の実施例にかかるテーブル管理方式のデータ構造
例を説明する図である。
【0030】図1〜図3を参照して、本発明の実施例に
かかるテーブル管理方式の各データ構造例を説明する。
図1〜図3において、11はハッシュテーブル、12は
データテーブルである。また、13は第1の次ポインタ
(次ポインタ1)であり、これらは、図20により説明
したものと同様なものである。この実施例のテーブル管
理方式におけるデータ構造では、ハッシュテーブル11
と、該ハッシュテーブル11から求められるハッシュ値
により示されるアドレスで各データが格納されるデータ
テーブル12とが備えられる。データをアクセスする場
合、ハッシユテーブル11のハッシュ値からデータ格納
先アドレスを求めてデータテーブル12に格納されたデ
ータをアクセスする。また、ハッシュ関数により求めた
ハッシュ値が同一となる複数のデータに対しては、各デ
ータに付加されている第1の次ポインタ(次ポインタ
1)13により、該当する各データをリンクしてデータ
テーブルに格納されているので、これらの各データは第
1の次ポインタ(次ポインタ1)13を辿ることにより
アクセス可能となる。これは前述の例と同様である。
【0031】このようなデータ構造に対して、ここでは
更にデータテーブル12の各データに対して、第2の次
ポインタ(次ポインタ2)14を設け、この第2の次ポ
インタ14によりデータテーブル12の各データ(デー
タ1,データ2,データ3,データ4)を少なくても一
方向に関連付ける。この例では各データに付加される関
連付情報の第2の次ポインタ(次ポインタ2)14のリ
ンクリストで、各データの間を関連付けている。また、
図1に示すデータ構造においては、次ポインタ2は双方
向性ポインタとなっており、先頭データ(データ1)と
最終データ(データ4)を除いて、隣り合う各データの
間は双方向にリンクされている。すなわち、データ1→
データ2→データ3→データ4の方法の関連付け(2点
鎖線で示す)と、データ4→データ3→データ2→デー
タ1の方法の関連付け(1点鎖線で示す)とが、第2の
次ポインタ(次ポインタ2)14により付加されてい
る。
【0032】次の図2に示す第2の実施例のデータ構造
の例では、第2の次ポインタ(次ポインタ2)15は、
全て双方向性ポインタとなっており、データ1→データ
2→データ3→データ4の方向の関連付けに、更に、最
終データ(データ4)から先頭データ(データ1)に戻
る関連付けを加えて、第1方向の関連付け(2点鎖線で
示す)を行い、データ4→データ3→データ2→データ
1の方向の第2方向の関連付けに、更に、先頭データ
(データ1)から最終データ(データ4)に戻る関連付
けを加えて、第2方向の関連付け(1点鎖線で示す)を
行ったものとなっている。このようなデータ構造では、
関連付け情報で環状に各データが関連付けられているの
で、どのデータから開始しても一方向の関連付け(次ポ
インタ2)を辿ることにより全ての各データの参照が可
能となる。
【0033】図3に示す第3の実施例のデータ構造の例
では、第2の次ポインタ(次ポインタ2)16が一方向
性ポインタとなっている。この場合には、各データの間
に設けられる関連付けは、データ1→データ2→データ
3→データ4の方向の第1の方向の関連付け(2点鎖線
で示す)のみである。データテーブル12に格納する各
々のデータの個数が多い場合など、関連付けのみのため
に利用する次ポインタ2によるデータ容量の増加を押え
て、各データの項目を本来の目的に利用すると共に、デ
ータテーブルの各データの間を関係付けて、アクセス法
の多様性を図っている有効なデータ構造となっている。
【0034】なお、図1〜図3に示す各々の実施例のテ
ーブル管理方式のデータ構造において、各データの項目
1〜項目3は、説明上用意した項目であり、本来の目的
のデータ格納のために利用される項目である。項目4
(次ポインタ1)は同一のハッシュ値で格納される場合
のデータの間を結ぶポインタとして利用される項目であ
り、また、項目5(次ポインタ2)は、データテーブル
12の全てのデータの間を結ぶポインタとて利用される
項目となっている。これらの各データの項目は、実際は
もっと項目が多いこともあれば、少ないこともある。こ
こでの各実施例では、ハッシュテーブル11とは独立
に、データテーブル12に格納している各データ間を相
互に関係付けるためのポインタ情報として、データの項
目5を利用する。このポインタ情報(14,15,1
6)によって、ハッシュ値が異なって格納されているデ
ータどうしを関係付ける。図1の項目5(次ポインタ
2)は、2種類のポインタ情報を有し、各データどうし
を相互に参照するためのポインタ情報が格納されてい
る。この項目5のポインタ情報により、各データは双方
向に参照可能なリンクリストとになり、各データの間は
(データ1)←→(データ2)←→(データ3)←→
(データ4)のシーケンシャルな順序に関係付けられ
る。
【0035】この場合、関連付け情報のリンクリストは
ハッシュ値と独立しており、シーケンシャルな順序はハ
ッシュテーブルのハッシュ値と無関係であってもよい。
例えば、図2の第2の実施例に示すように、この場合、
ハッシュ値と対応関係とは無関係に各データは、(デー
タ2)←→(データ1)←→(データ4)←→(データ
3)などの順に隣りうデータどうしで関係付けられる。
この場合、順序がどのようなものであっても、全てのデ
ータを順番に参照できることに変わりはない。
【0036】また、図3の第3の実施例のように、一種
類のポインタを用いてハッシュ値が異なるデータどうし
を関係付けることも可能である。この場合は、各データ
どうしは単方向リンクリストで結び付られ、先頭のデー
タから最後のデータに向って順番に読み出すことが可能
である。この場合の項目5の次ポインタ2は単方向のポ
インタとなっている。
【0037】図4は本発明の第4の実施例のテーブル管
理方式によるデータ構造例を説明する図である。図4に
示すデータ構造は、図1に示すようなデータ構造の双方
向ポインタを、各データの項目4(次ポインタ3)およ
び項目5(次ポインタ4)を用いて個別に設定したデー
タ構造の例である。この例では、各データの項目のブロ
ックには次ポインタとして指示するデータ名が具体的に
示されており、各データのリンクリストにより関係付け
られるデータ構造が例示されている。
【0038】図4において、11はハッシュテーブル、
12はデータテーブル、20は管理情報テーブルであ
る。この例では、1個のデータは、項目1,項目2,項
目3,項目4,および項目5の5種類の項目から構成さ
れており、項目3の次ポインタ1は、当該データテーブ
ル12にデータを登録する際、ハッシュ値が一致した場
合に対し、該当のデータの間をリンクするためのポイン
タ情報であり、項目4の次ポインタ3および項目5の次
ポインタ4は、異なったハッシュ値で登録される各デー
タの間に関係を持たせるためのポインタ情報である。こ
の次ポインタ4および次ポインタ5により、各データを
双方向に参照可能とする。
【0039】ハッシュ関数は、前述したものと同様にキ
ーワードとなる項目2の内容を4で割った余りとする関
数を用いる。また、この第4の実施例のデータ構造で
は、データテーブル12の全てのデータを管理するため
の管理情報として、データテーブル12の外に、先頭デ
ータ20a,最終データ20bという2種類の変数デー
タを持つ管理情報テーブル20を備えている。先頭デー
タ20aおよび最終データ20bは、共に双方向に参照
しあっているデータの先頭と最後とを指示している。図
4の例では、先頭データ20aはデータ1となってお
り、最終データ20bはデータ4となっている。また、
各ポインタ情報によるリンクの最後は“0”により認識
する。
【0040】項目4の次ポインタ3は、先頭データから
最終データまで順番に参照するためのポインタ情報であ
り、項目5の次ポインタ4は逆に最終データから先頭デ
ータまでに逆順に参照するためのポインタ情報である。
ハッシュテーブル11の各ハッシュ値から延びる線は、
ハッシュテーブル11で参照される各データの参照関係
を示している。具体的にはハッシュテーブル11にはハ
ッシュ値により求められるデータテーブル12の各アド
レスが登録されており、当該アドレスによりデータテー
ブル12の各データのアクセス処理が行なわれる。
【0041】項目3の次ポインタ1は、前述したよう
に、データテーブル12に格納する複数の各データのハ
ッシュ値が一致した場合に、この複数のデータを管理す
るためのポインタ情報である。この例では、データ2お
よびデータ3のみが項目3の次ポインタ1によりリンク
されている場合を示している。項目4の次ポインタ3お
よび項目5の次ポインタ4は、ハッシュ値とは無関係に
各データどうしを関係付けるためのポインタ情報であ
る。データテーブル12は、このように各データどうし
が関係付けられているので、データテーブル12に登録
された全てのデータを読み出す場合、前述したようなハ
ッシュテーブルの走査と各データの走査とを合せた複雑
な処理を行うことなく、図5に示すような簡単な読み出
し処理の処理フローで高速に全てのデータを読み出すこ
とができる。
【0042】図5は、本発明の実施例によるデータ構造
でデータテーブルに登録されたデータを読み出す処理の
一例を示すフローチャートである。図5を参照して、こ
こでの読み出し処理を説明する。処理を開始すると、ま
ず、ステップ21において、変数ポインタに先頭データ
を代入する。すなわち、管理情報テーブル20から先頭
データ20aを得て、変数ポインタに代入する。ポイン
タ情報が“0”ならば後続するデータがないので、次に
ステップ22において、変数ポインタの内容が“0”で
ないことを確認して、次のステップ23で変数ポインタ
の内容を基にしてデータを読み出す。そして、ステップ
24において、順次に次のデータを読み出すため、読み
出したデータの次ポインタ3を読み出し、この次ポイン
タ3の内容を変数ポインタに代入し、再びステップ22
に戻り、ステップ22からの処理を繰り返し行う。これ
により、次ポインタ3が指示するポインタ情報により、
ハッシュテーブル11を常にアクセスすることなく、デ
ータテーブル12の各データが順次に読み出すことがで
きる。この読み出し処理において、必要とする変数ポイ
ンタは、1つの変数ポインタのみである。ハッシュテー
ブルによりデータ管理されているデータテーブルの全て
のデータを読み場合にも、従来のように3つの変数ポイ
ンタは必要とされず、アルゴリズムも、前述した図21
のものと比較してはるかに簡略化されている。
【0043】次に、図4に示すようなデータ構造で各デ
ータが格納されてデータテーブルに対して新たにデータ
を追加する場合の処理について説明する。この場合のデ
ータ追加(登録)処理では、各データの間を関係付けて
いるポインタ情報を整合させる処理が必要となる。
【0044】図6はデータ追加(登録)処理を示すフロ
ーチャートである。図6を参照してデータテーブルにデ
ータを追加する処理を説明する。この処理では、まず、
ステップ31において、キーワードからハッシュ値を計
算する。次に、ステップ32において、求めたハッシュ
値が既にハッシュテーブルに登録されているか否かを判
定する。ハッシュテーブルに登録されていない場合に
は、ステップ33において、ハッシュテーブルに追加デ
ータのアドレスを登録する処理を行う。また、求めたハ
ッシュ値が既にハッシュテーブルに登録されている場合
は、同じハッシュ値でデータテーブルに追加格納する必
要があるので、ステップ34に進み、当該ハッシュ値に
より既にデータテーブルに格納されているデータに対
し、リンクリストの最終データの次ポインタ1に追加す
るデータのアドレスを設定する。そして、次のステップ
35において、追加データの次ポインタ1に“0”を設
定し、追加データをデータテーブルの該当アドレスに格
納する。
【0045】次に、ステップ36において、管理情報テ
ーブル20の最終データ20bの値をチェックし、変数
[最終データ]は“0”であるか否かを判定する。変数
[最終データ]が“0”である場合は、これまでに当該
データテーブルに格納されているデータが無く、現在の
追加データが当該データテーブルに1番目に格納された
データであるため、次のステップ37において、追加デ
ータの次ポインタ3,次ポインタ4に“0”を設定し、
当該追加データが最終のデータであることを指示してお
く。そして、次のステップ38において、管理情報テー
ブル20の先頭データ20aおよび最終データ20b
に、当該データテーブルの先頭および最終のデータを指
示するため、変数[先頭データ],変数[最終データ]
を追加データのアドレスに変更する。
【0046】一方、ステップ36の判定において、変数
[最終データ]は“0”でない場合は、既に当該データ
テーブルに格納されているデータがあるため、ステップ
39において、変数[最終データ]が指示するデータの
次ポインタ3が追加データを指示するように設定する。
また、追加データはそのまま順方向のリストの最終のデ
ータでもあるので、次のステップ40において、追加デ
ータの次ポインタ3には“0”を設定する。また、逆方
向のポインタ情報の次ポインタ4に対しては、次のステ
ップ41において、追加データの次ポインタ4が変数
[最終データ]を指示するデータを示すように設定し、
次に、ステップ42において、変数[最終データ]を追
加データのアドレスに変更する。これにより、追加デー
タの次ポインタ4は、追加処理前の最終のデータを指示
するようになり、追加処理後の最終のデータを指示する
変数[最終データ]には、ここで追加した追加データの
アドレスが指示されることになる。
【0047】このような一連の処理により、データテー
ブル12に新たにデータを追加する処理が行なわれる。
この結果、図4に示すようにデータ構造となっているデ
ータテーブル12および管理情報テーブル20は、図7
または図8に示すような状態のデータ構造となる。
【0048】図7に示すデータ構造の追加処理の結果例
は、新たに登録しようとしているデータ5のハッシュ値
が示すアドレスに、既にデータ(データ2)が登録され
ている場合の例である。この場合、追加データのデータ
5は、データ2→データ3の後に配置され、データ3の
次ポインタ1のアドレス25はデータ5を示すように変
更される。また、追加するデータ5を最終データ(デー
タ4)の後ろに配置するため、データ4の次ポインタ3
のアドレス26はデータ5を指示するように変更され、
データ5の次ポインタ4のアドレス27はデータ4を指
示するように設定される。
【0049】図8に示すデータ構造の追加処理の結果例
は、新たに登録しようとしている追加データのデータ5
のハッシュ値が示すアドレスは、未だ当該アドレスでは
テータテーブル12にデータが登録されていない場合で
ある。この場合、追加データのデータ5に対するハッシ
ュ値3のアドレスが、新たにハッシュテーブル11に登
録され、このハッシュ値3により示されるアドレスで、
追加データのデータ5がデータテーブル12に登録され
る。この場合にも、追加されるデータ5は、最終データ
(データ4)の後ろに配置されるため、データ4の次ポ
インタ3のアドレス26はデータ5を指示するように変
更され、データ5の次ポインタ4のアドレス27はデー
タ4を指示するように設定される。これは、図7の場合
と同様である。
【0050】次に、データテーブル12におけるデータ
の削除処理について説明する。ここでは、図4に示すよ
うなデータ構造で各データが格納されてデータテーブル
に対して、データを削除する場合の処理を説明する。こ
の削除処理の場合にも、前述と同様に、削除した結果の
データ構造において、各データの間を関係付けているポ
インタ情報を整合させる処理が必要となる。
【0051】図9はデータ削除処理を示すフローチャー
トである。図9を参照して、データテーブルからデータ
を削除する処理を説明する。この処理では、まず、ステ
ップ43において、キーワードからハッシュ値を計算す
る。次に、ステップ44において、求めたハッシュ値が
既にハッシュテーブルに登録されているか否かを判定す
る。求めたハッシュ値がハッシュテーブルに登録されて
いない場合には、削除する対象となるデータが存在しな
いので、処理を終了する。また、求めたハッシュ値がハ
ッシュテーブルに登録されている場合は、ステップ45
に進み、ハッシュ値によりデータを読み出し、削除する
データはリンクリストの先頭であるか否かを判定する。
リンクリストの先頭である場合、削除するデータに対し
て、リンクリストにより後続するデータが存在するの
で、次のステップ46で、この削除するデータの次ポイ
ンタ1(後続するデータのアドレス)をハッシュテーブ
ルに登録する。また、ステップ45の判定処理で、削除
するデータがリンクリストの先頭であると判定されない
場合、削除するデータはリンクリストにより前のデータ
にリンクされているデータであるので、次のステップ4
7で、削除するデータの1つ前の次ポインタ1(削除す
るデータの自己アドレスを示している)に削除するデー
タの次ポインタ1の内容(削除するデータに後続するデ
ータのアドレスを示している)を設定する。
【0052】次に、各データの間を関係付けているポイ
ンタ情報を整合させる処理を行うため、ステップ48に
おいて、削除するデータの次ポインタ4は“0”である
か否かを判定する。次ポインタ4が“0”である場合
は、削除するデータがデータテーブルに1番目に格納さ
れたデータであるので、次のステップ49において、変
数[先頭データ]に削除するデータの次ポインタ3を設
定し、次のステップ50において、削除するデータの次
ポインタ3が指すデータの次ポインタ4に“0”を設定
する。これにより、逆方向ポインタの最終のデータを指
示するポインタ情報の更新が行なわれる。また、ステッ
プ48の判定において、削除するデータの次ポインタ4
は“0”でないと判定された場合は、ステップ51に進
み、削除するデータの次ポインタ3を次ポインタ4が指
示するデータの次ポインタ3に設定する。これにより、
順方向ポインタである次ポインタ3の更新が行なわれ
る。
【0053】また、逆方向ポインタの次ポインタ4に関
しては、ステップ52において、削除するデータの次ポ
インタ3は“0”であるか否かを判定し、削除するデー
タの次ポインタ3は“0”でないと判定された場合は、
順方向に続くデータがあり、後続するデータを繰り上げ
るポインタ情報の変更を行えば良いので、この場合、ス
テップ53に進み、削除するデータの次ポインタ4を次
ポインタ3が指示するデータの次ポインタ4に設定す
る。これにより、逆方向ポインタである次ポインタ4の
更新が行なわれる。また、次ポインタ3が“0”である
場合は、削除するデータがデータテーブルの最終番目に
格納されたデータとなっているので、ステップ54に進
み、変数[最終データ]に削除するデータの次ポインタ
4の内容を設定し、次のステップ55において、削除す
るデータの次ポインタ4が指すデータの次ポインタ3に
“0”を設定する。これにより、順方向ポインタの最終
のデータを指示するポインタ情報の更新が行なわれる。
【0054】このような一連の処理により、データテー
ブル12からデータを削除する処理が行なわれる。この
結果、図4に示すようにデータ構造となっているデータ
テーブル12および管理情報テーブル20は、図10に
示すような状態のデータ構造となる。図10に示すデー
タ構造の追加処理の結果例は、データ4を削除した場合
を示している。ハッシュテーブル11ではハッシュ値4
で登録されているアドレスが削除されている。また、デ
ータ4を削除したことにより最終データはデータ4から
データ3に変更されている。
【0055】データテーブル12にデータを追加または
削除する際には、上述のように、同じハッシュ値で登録
されるデータをリンクしている次ポインタ1と、順方向
で全データをリンクしている次ポインタ3と、逆方向で
全データをリンクしている次ポインタ4のつなぎ換えの
処理が伴うが、データテーブル12の登録されている全
データを読み出す処理は、前述の図5に示すような簡略
化されたものとなっている。ここで必要とする変数ポイ
ンタは1個のみである。
【0056】このようなテーブル管理方式を用いること
により、ハッシュ値が異なって登録されているデータど
うしが関連付け情報で関連付けられ、ハッシュテーブル
とは独立に登録された全てのデータを参照できる。ま
た、全てのデータを参照するために用いるポインタを1
つで済ますことができる。このため、例えば、通信シス
テムで利用されるルーティングテーブル等では、複数の
タスクがテーブルの一部または全ての内容を参照する場
合が多いが、この場合、本実施例のテーブル管理方式を
用いることにより、通信システムのシステム制御におい
て、それらの各タスクは簡略化されたアルゴリズムによ
りデータを参照することが可能となる。
【0057】次に、本実施例の応用例について説明す
る。まず、ここでの応用例となる通信システムのシステ
ム構成を図11に示す。ここでの通信システムは、図1
1に示すように、第1のネットワーク60,第2のネッ
トワーク61,第3のネットワーク62,および第4の
ネットワーク63の間が、第1のルータ64,第2のル
ータ65,第3のルータ66により結合されている通信
システムである。各ネットワーク60,61,62,6
3には、それぞれネットワーク番号700,710,8
00,810が付与されており、ネットワークの間を結
合する各々のルータにも、それぞれのルータに対するル
ータ名のルータA,ルータB,ルータCが付与されてい
る。このように構成されている通信システムにおいて、
各々の通信要求に対する通信経路が、各々のルータ毎
に、ネットワーク番号および宛先アドレス(ルータ名)
をルーティングテーブルに格納して管理される。
【0058】図12は、上述のような通信システムにお
けるルータAのルーティングテーブルのデータ内容を説
明する図である。ルータAのルーティングテーブル68
に格納され管理される各通信経路を表わす各データに
は、ネットワーク番号700,710,800,810
に関する情報,宛先アドレスの情報,および通信経路の
時間管理を行うためのタイマー値の情報が含まれてい
る。ここでは、図示するように、ルーティングテーブル
68の各々のデータの項目1としてネットワーク番号を
割り当て、項目2として宛先アドレス(ルータ名)を割
り当て、項目3としてタイマー値を割り当てている。ま
た、ここでの各データには、データ構造を特徴づける2
種類のポインタ情報を含んでおり、項目4の次ポインタ
1は、ハッシュテーブル67における同じハッシュ値で
登録される各データを結合するポインタ情報であり、項
目5の次ポインタ2は、前のデータおよび後のデータと
間の関係付けを指示する双方向ポインタ情報となってい
る。
【0059】図12におけるルーティングテーブル68
では、タイマ値が小さい値に順に並ぶように管理され
る。したがって、例えば10秒経過後にタイマー値が0
となったデータを削除する場合、ネットワーク番号71
0のデータ(データ2)から順に調ベることになる。1
0秒の経過後には、ルーティングテーブル68のデータ
2は、タイマー値が0となっているのでテーブルから削
除される。次に、小さいタイマー値のデータであるネッ
トワーク番号810のデータ(データ3)を調ベるが、
この時、タイマー値は40なので削除されない。ルーテ
ィングテーブルにおいてタイマー値が小さい値の順にテ
ーブルに格納されている場合、それ以降の各データのタ
イマー値は当然に大きい値になっているため、調ベる必
要はない。
【0060】このようなルーティングテーブル68に対
し、ネットワーク番号720,宛先アドレスがルータ
A,タイマー値が30となっているデータ5を新たに登
録する場合、図13に示すような処理フローにより、デ
ータ登録処理を行う。登録後のルーティングテーブル6
8は、図14に示すようなテーブル状態となる
【0061】図13はルーティングテーブルに通信経路
データを登録する登録処理を示すフローチャートであ
る。図13を参照して、通信経路データを登録する処理
を説明する。この処理では、ステップ70において、ネ
ットワーク番号をキーワードとして、登録するデータの
ハッシュ値を計算する。次に、ステップ71において、
求めたハッシュ値が既にハッシュテーブルに登録されて
いるか否かを判定する。ハッシュテーブルに登録されて
いない場合には、ステップ72において、新たな通信経
路データのデータ登録を行い、ハッシュテーブルを更新
する処理を行う。また、求めたハッシュ値が既にハッシ
ュテーブルに登録されている場合は、同じハッシュ値で
ルーティングテーブルに追加登録する必要があるので、
ステップ73に進み、当該ハッシュ値により既に登録さ
れているデータの次ポインタ1のリンクリストの最後ま
で順次に辿る。そして、次のステップ74において、通
信経路データのデータ登録を行い、登録したデータの次
ポインタ1を“0”に設定する。そして、次のステップ
75において、直前のデータの次ポインタ1が登録した
データを指示するように変更する。なお、ここでの登録
処理の例では、タイマー値30のデータ5を新たに追加
登録するので、直前のデータはタイマー値10のデータ
2である。
【0062】次に、ステップ76に進み、タイマー値に
より追加登録するデータの挿入すべき場所を、次ポイン
タ2により調ベる。次に、ステップ77において、登録
したデータの次ポインタ2が、直前,直後のデータを指
すように設定する。すなわち、データ2の次ポインタ2
が直前データのデータ2,直後データのデータ3を指示
するように設定する。次に、ステップ78において、直
前のデータの次ポインタ2が登録データを指すように変
更し、次のステップ79において、直後のデータの次ポ
インタ2が登録データを指すように変更する。
【0063】このような処理の結果、図12のルーティ
ングテーブル68は、図14に示すような状態となり、
通信経路データのデータ5が新たに登録されたデータ構
造となる。登録後のルーティングテーブルでは、データ
2の次ポインタ1はデータ5を指すように変更され、デ
ータ2の次ポインタ2はデータ3を指していたものがデ
ータ5を指すように変更される。また、逆にデータ3の
次ポインタ2はデータ2を指していたものをデータ5を
指すように変更される。これにより、ルーティングテー
ブル68では、次ポインタ2のポインタ情報により、タ
イマー値の大きさの順のリンクリストが付加された状態
となって、各々の通信経路データが登録されていること
になる。このため、タイマー値の大きさ順に通信経路デ
ータをアクセスする場合には、次ポインタ2のポインタ
情報により順次にアクセスするだけで、容易にデータ参
照が可能となる。
【0064】時間経過によりタイムアップした通信経路
データをルーティングテーブルから削除する処理につい
ては、前述したとおりであるが、次に不要となった任意
のデータを削除する処理について説明する。例えば、図
14に示すようなルーティングテーブル68からデータ
4のデータを削除する場合を説明する。この場合の処理
は、図15に示すような処理フローにより処理が行なわ
れ、データ削除後のルーティングテーブル68は、図1
6に示すようになる。この結果、データ3の次ポインタ
1はどのデータも指さなくなり、データ2の次ポインタ
2はデータ4を指していたものがデータ1を指すように
変更され、逆にデータ1の次ポインタ2はデータ4を指
していたものをデータ3を指すように変更される。
【0065】図15はルーティングテーブルから通信経
路データを削除する処理を示すフローチャートである。
図15を参照して、データ削除を行う処理を説明する。
この処理では、まず、ステップ80において、削除する
データのキーワード(ネットワーク番号)からハッシュ
値を計算する。次に、ステップ81において、求めたハ
ッシュ値が既にハッシュテーブルに登録されているか否
かを判定する。求めたハッシュ値がハッシュテーブルに
登録されていない場合には、削除する対象となるデータ
が存在しないので、処理を終了する。また、求めたハッ
シュ値がハッシュテーブルに登録されている場合は、ス
テップ82に進み、ハッシュ値によりデータを読み出
し、削除するデータの次ポインタのリンクリストを辿
り、削除するデータを捜して、データ削除を行う。次に
ステップ83において、直前のデータの次ポインタ1が
直後のデータを指すように変更する。次のステップ84
において、直前データの次ポインタ2が直後データを指
すように変更し、次のステップ85において、直後デー
タの次ポインタ2が直前データを指すように変更して、
処理を終了する。
【0066】この処理では、図14に示すルーティング
テーブル68において、データ4を削除するので、次ポ
インタ2の直前のデータとはデータ3であり、直後のデ
ータとはデータ1を意味する。この結果、データ削除後
のルーティングテーブル68は、図16に示すようにな
る。この結果、データ3の次ポインタ1はどのデータも
指さなくなり(ステップ83)、データ3の次ポインタ
2はデータ4を指していたものがデータ1を指すように
変更され(ステップ84)、逆にデータ1の次ポインタ
2はデータ4を指していたものをデータ3を指すように
変更される(ステップ85)。このようにして、ルーテ
ィングテーブル68から任意のデータを削除する処理が
行なわれるが、ルーティングテーブル68では、削除処
理が行なわれた後の状態でも、以前の状態と同様なデー
タ構造を保持した状態となっている。すなわち、図16
に示すルーティングテーブル68は、次ポインタ2のポ
インタ情報により、タイマー値の大きさの順のリンクリ
ストが付加された状態で各々の通信経路データが登録さ
れている。このため、データが追加された場合でも、デ
ータ削除が行なわれた場合でも、タイマー値の大きさ順
に通信経路データをアクセスする場合には、次ポインタ
2のポインタ情報により順次にアクセスするだけで、容
易にデータ参照が可能となる。
【0067】最後に、このようなルーティングテーブル
の各データを参照する処理について説明する。図17
は、次ポインタ2のポインタ情報を用いて、ルーティン
グテーブルの各データを参照する処理の一例を示すフロ
ーチャートである。このデータ参照処理では、次ポイン
タ2のポインタ情報を用いて、ルーティングテーブルの
各通信経路データを参照する処理を行う。まず、ステッ
プ91において、次ポインタ2のどちらかをワークポイ
ンタに設定する。この場合、ワークポインタに設定する
次ポインタ2の双方向ポインタ情報は、順方向ポインタ
情報または逆方向ポインタ情報のいずれであってもよ
い。次に、ステップ92において、ワークポインタが指
示するデータを参照する。そして、ステップ93におい
て、参照したデータが目的のデータであるか否かを判定
する。参照したデータが目的のデータである場合には処
理を終了する。また、参照したデータが目的のデータで
ない場合、次のステップ94に進み、ワークポインタが
指示するデータに含まれる次ポインタ2を次のワークポ
インタとする。そして、データ終了を判定するため、次
のステップ95において、ワークポインタが“0”であ
るか否かを判定する。ワークポインタが“0”である場
合は、参照したデータが最終データであるので、ここで
の処理を終了する。また、ワークポインタが“0”でな
い場合は、未だ参照していないデータがあるので、ステ
ップ92に戻り、ステップ92からの処理を繰り返し行
い、データの参照処理を続行する。
【0068】このように、ルーティングテーブル68を
参照する場合、次ポインタ2を利用することにより簡単
なアルゴリズムの処理により、ルーティングテーブルの
全てのデータが参照可能となる。各データを参照するた
めの次ポインタ2は2種類あり、どちらを利用しても構
わない。
【0069】
【発明の効果】以上、説明したように、本発明のテーブ
ル管理方式によれば、データテーブルに登録される各デ
ータに対し、ハッシュ値が異なって登録されているデー
タどうしが、関連付け情報の付加により関連付けられ、
ハッシュテーブルとは独立に登録された全てのデータを
参照できる。また、全てのデータを参照するために用い
る制御ポインタを1つで済ますことができる。特に、通
信システムで利用されるルーティングテーブル等では、
複数のタスクがテーブルの一部または全ての内容を参照
する場合が多く、それらのタスクは簡略化されたアルゴ
リズムでデータを参照することができるようになる。
【図面の簡単な説明】
【図1】 図1は本発明の第1の実施例にかかるテーブ
ル管理方式のデータ構造例を説明する図、
【図2】 図2は本発明の第2の実施例にかかるテーブ
ル管理方式のデータ構造例を説明する図、
【図3】 図3は本発明の第3の実施例にかかるテーブ
ル管理方式のデータ構造例を説明する図、
【図4】 図4は本発明の第4の実施例にかかるテーブ
ル管理方式によるデータ構造例を説明する図、
【図5】 図5は本発明の実施例によるデータ構造のデ
ータテーブルに登録されたデータを読み出す処理の一例
を示すフローチャート、
【図6】 図6は本発明の実施例によるデータ構造のデ
ータテーブルにデータを追加(登録)する処理の一例を
示すフローチャート、
【図7】 図7は本発明の実施例によるデータ構造のデ
ータテーブルに同一ハッシュ値で新たにデータを追加し
た結果のデータ構造例を説明する図、
【図8】 図8は本発明の実施例によるデータ構造のデ
ータテーブルに未使用のハッシュ値で新たにデータを追
加した結果のデータ構造例を説明する図、
【図9】 図9は本発明の実施例によるデータ構造のデ
ータテーブルからデータを削除する処理の一例を示すフ
ローチャート、
【図10】 図10は本発明の実施例によるデータ構造
のデータテーブルからデータを削除した結果のデータ構
造例を説明する図、
【図11】 図11は本発明の応用例となる通信システ
ムのシステム構成の一例を説明する図、
【図12】 図12は図11の通信システムにおけるル
ータAのルーティングテーブルのデータ構造のデータ内
容を説明する図、
【図13】 図13はルーティングテーブルに通信経路
データを登録する登録処理を示すフローチャート、
【図14】 図14は図12に示すルーティングテーブ
ルに通信経路データを登録した結果のデータ構造例を説
明する図、
【図15】 図15はルーティングテーブルから通信経
路データを削除する処理を示すフローチャート、
【図16】 図16は図14に示すルーティングテーブ
ルから通信経路データを削徐した結果のデータ構造例を
説明する図、
【図17】 図17はルーティングテーブルの各データ
を参照する処理の一例を示すフローチャート、
【図18】 図18はハッシュテーブルを用いたテーブ
ル管理の一例を説明する図、
【図19】 図19はハッシュテーブルを用いたテーブ
ル管理を行う場合の効率が上がらない場合の例を説明す
る説明図、
【図20】 図20はハッシュ値が一致する場合のデー
タ管理の一例を説明する図、
【図21】 図21はハッシュテーブルによりテーブル
管理されている全てのデータを読み出す処理の一例を示
すフローチャートである。
【符号の説明】
11,67,111,113,115…ハッシュテーブ
ル、12,112,114,116…データテーブル、
13…第1の次ポインタ(単方向ポインタ)、14,1
5…第2の次ポインタ(双方向ポインタ)、16…第2
の次ポインタ(単方向ポインタ)、20…管理情報テー
ブル、20a…先頭データ、20b…最終データ、6
0,61,62,63…ネットワーク、64,65,6
6…ルータ、68…ルーティングテーブル、118…ポ
インタ制御レジスタ。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 ハッシュテーブルと、該ハッシュテーブ
    ルから求められるハッシュ値により示されるアドレスに
    各データが格納されるデータテーブルとを備え、ハッシ
    ユテーブルからテータ格納先アドレスを求め、データテ
    ーブルに格納されたデータをアクセスするテーブル管理
    方式において、 前記データテーブルにおける各データに対して、少なく
    ても一方向に関連付ける関連付情報を付加し、 該関連付情報に基づきデータテーブルにおけるデータを
    順次に参照して各データをアクセスすることを特徴とす
    るテーブル管理方式。
JP3266909A 1991-09-19 1991-09-19 テーブル管理方式 Pending JPH0581102A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3266909A JPH0581102A (ja) 1991-09-19 1991-09-19 テーブル管理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3266909A JPH0581102A (ja) 1991-09-19 1991-09-19 テーブル管理方式

Publications (1)

Publication Number Publication Date
JPH0581102A true JPH0581102A (ja) 1993-04-02

Family

ID=17437351

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3266909A Pending JPH0581102A (ja) 1991-09-19 1991-09-19 テーブル管理方式

Country Status (1)

Country Link
JP (1) JPH0581102A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0764835A (ja) * 1993-08-24 1995-03-10 Nec Corp リレーショナルデータベースのデータ格納方式
JP2008085866A (ja) * 2006-09-28 2008-04-10 Oki Electric Ind Co Ltd データ格納方法、データ検索方法、データ検索回路及びデータ削除回路
JP2016006942A (ja) * 2014-06-20 2016-01-14 富士通株式会社 テーブル管理装置,及びテーブル管理方法
WO2016063344A1 (ja) * 2014-10-21 2016-04-28 三菱電機株式会社 サーバ装置及び検索システム及び端末装置及び検索方法及びサーバプログラム及び端末プログラム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0764835A (ja) * 1993-08-24 1995-03-10 Nec Corp リレーショナルデータベースのデータ格納方式
JP2008085866A (ja) * 2006-09-28 2008-04-10 Oki Electric Ind Co Ltd データ格納方法、データ検索方法、データ検索回路及びデータ削除回路
JP2016006942A (ja) * 2014-06-20 2016-01-14 富士通株式会社 テーブル管理装置,及びテーブル管理方法
WO2016063344A1 (ja) * 2014-10-21 2016-04-28 三菱電機株式会社 サーバ装置及び検索システム及び端末装置及び検索方法及びサーバプログラム及び端末プログラム
JPWO2016063344A1 (ja) * 2014-10-21 2017-04-27 三菱電機株式会社 サーバ装置及び検索システム及び端末装置及び検索方法及びサーバプログラム及び端末プログラム
US10361840B2 (en) 2014-10-21 2019-07-23 Mitsubishi Electric Corporation Server apparatus, search system, terminal apparatus, search method, non-transitory computer readable medium storing server program, and non-transitory computer readable medium storing terminal program

Similar Documents

Publication Publication Date Title
CA2434081C (en) Data structures utilizing objects and pointers in the form of a tree structure
JP3771271B2 (ja) コンパクト0完全木における順序付けられたキーの集まりの記憶と検索のための装置及び方法
CN1552032B (zh) 数据库
US6236988B1 (en) Data retrieval system
JP3485262B2 (ja) データ・パケットを分類する方法および手段
AU2002249161A1 (en) Data structure for information systems
JPH0675989A (ja) 概念辞書管理装置
JPH07219832A (ja) 概要カタログ
US20080133494A1 (en) Method and apparatus for searching forwarding table
US6735600B1 (en) Editing protocol for flexible search engines
JP2001101042A (ja) データ管理システム及びデータ管理方法
JPH08110912A (ja) 動画検索装置および動画検索方法
JPH0581102A (ja) テーブル管理方式
EP0394172A2 (en) Method of performing file services given partial file names
JP2675958B2 (ja) 情報検索用計算機システム及びその記憶装置の動作方法
US20050060314A1 (en) System and methods involving a data structure searchable with O(logN) performance
JP2008065716A (ja) データ管理装置、データ管理方法及びデータ管理プログラム
JPH09305611A (ja) データベースの検索装置
JPH113354A (ja) データキューブ制御方式
JPH06103134A (ja) インデックスの構築方法
JPH07210563A (ja) 索引処理方法
JP2001155028A (ja) リレーショナルデータベースにおける集約演算処理方法、その装置及び集約演算処理プログラムを記録したコンピュータ読み取り可能な記録媒体
JPH04199338A (ja) データベース管理システム
JP2000132433A (ja) 可変長の電子データを管理する方法及び装置
JP2000066933A (ja) 時系列データ管理方式

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040426