JP3647940B2 - データ管理装置 - Google Patents
データ管理装置 Download PDFInfo
- Publication number
- JP3647940B2 JP3647940B2 JP24486195A JP24486195A JP3647940B2 JP 3647940 B2 JP3647940 B2 JP 3647940B2 JP 24486195 A JP24486195 A JP 24486195A JP 24486195 A JP24486195 A JP 24486195A JP 3647940 B2 JP3647940 B2 JP 3647940B2
- Authority
- JP
- Japan
- Prior art keywords
- hash value
- data
- stored
- index table
- identification information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の属する技術分野】
本発明はデータ管理装置に関する。さらに詳細には、データ部に格納したデータを、各データに対応する識別情報とデータの格納位置とを格納した索引を用いて管理するデータ管理装置に関する。
【0002】
【従来の技術】
一般に、記憶手段に格納した複数のデータを管理するため、このデータから抽出した検索用の識別情報とデータの格納位置とを格納する索引を作成し、データへのアクセス時間を短縮して検索効率を向上するようにしている。
【0003】
例えば、図5に示すように、従来のデータ管理装置は、記憶手段20に形成され複数のデータと各データに対応する識別情報とを格納したデータ部50と、この各データの識別情報とデータ部における各データの格納位置を示すポインタとを二組格納する二つのブロック41、42からなる第1の索引テーブル40と、第1の索引テーブル40の見出しとなる識別情報を格納した第2の索引テーブル30と、この第1の索引テーブル40と第2の索引テーブル30とを用いてデータ部50のデータを検索する検索手段13とを備えている。
【0004】
そして、データ部50にはデータとして氏名が格納され、識別情報として従業員番号が格納されている。また、第2の索引テーブル30は、各ブロック41、42に格納した識別情報のうち大きい値が格納されている。
【0005】
このようなデータ管理装置において、例えば、氏名上田、従業員番号5787を検索する場合を説明する。まず、検索手段13に従業員番号5787を入力する。すると、検索手段13が、第2の索引テーブル30において、従業員番号5787と第2の索引テーブル30に格納されている従業員番号とを対比する。そして、第1索引テーブル40のうち、従業員番号5787が格納されるブロック41を特定する。
【0006】
次に、ブロック41において、入力された従業員番号5787と格納されている従業員番号とを対比して検索対象の従業員番号5787を特定する。最後にこの従業員番号5787に対応するポインタの指示に従い、データ部50から氏名上田を検索する。
【0007】
【発明が解決しようとする課題】
しかし、従来のデータ管理装置は、前記例のように、第1の索引テーブル40と第2の索引テーブル30とに識別情報を格納しデータ検索の際のキーとしている。このため、識別情報のビット長が長い場合や複数の識別情報に対する索引(複合インデックス)の場合は、各索引テーブル30、40に格納される情報量が大きくなり、データのアクセスに時間を要するという問題点がある。
【0008】
本発明は、前記問題点に鑑みなされたものであり、索引テーブルに格納される情報量を減少し、データへの検索時間を短縮し得るデータ管理装置を提供することを技術的課題とする。
【0009】
【課題を解決するための手段】
本発明は、データ管理装置であって、前記技術的課題を解決するために以下の手段を採用する。
【0010】
すなわち、複数のデータと各データに対応する検索用の識別情報とを格納するデータ部と、
前記各識別情報がハッシュ関数に従って変換された前記識別情報のビット長よりも短いハッシュ値を格納した第1索引テーブルであって、ハッシュ値としてとり得る値が相互に重ならないように区分けされた所定の数値範囲の夫々に対応する複数のブロックを有し、各ブロックには、そのブロックに対応する数値範囲に夫々属する前記変換されたハッシュ値と、各ハッシュ値に対応する識別情報と、各識別情報の前記データ部における格納位置とが格納された第1索引テーブルと、
前記第1索引テーブルの各ブロックに対応する数値範囲の最大値又は最小値、及び、各最大値又は最小値の前記第1索引テーブルにおける格納位置、を格納する第2索引テーブルと、
データ検索時に入力された識別情報をハッシュ値に変換し、このハッシュ値と第2索引テーブルに格納された各最大値又は最小値との大小を比較して当該ハッシュ値が属する数値範囲に対応する最大値又は最小値を特定し、該最大値又は最小値の第1索引テーブルにおける格納位置に基づき、当該ハッシュ値と同一のハッシュ値が格納された前記第1索引テーブルのブロックを特定し、そのブロックに格納された各ハッシュ値と前記変換されたハッシュ値とを対比して同一のハッシュ値を検索し、検索したハッシュ値に対応する識別情報と検索用に入力した識別情報とを対比して同一の識別情報を検索対象として特定し、この識別情報の前記データ部における格納位置より前記データ部から対応データを検索する検索手段と、を備えている。
【0011】
以下、本発明の構成要素を説明する。
(データ部)データ部は、複数のデータと各データに対応する検索用の識別情報を格納するものである。識別情報は、データの一部を指定したものでも良く、また、別個に指定したものでも良い。識別情報には、例えば、データが氏名である場合は、年齢、従業員番号、生年月日等が用いられる。このデータ部は、例えばテーブル状にし、各データと識別情報とを組として格納するのが好ましい。
【0012】
(ハッシュ変換手段)
ハッシュ変換手段は、識別情報をハッシュ関数に従って識別情報のビット長よりも短いハッシュ値に変換し、索引テーブルに格納する情報量を小さくするものである。このハッシュ変換手段は、ハッシュ関数を格納してあり、識別情報が入力されると、識別情報をハッシュ値に変換するようにしてある。ハッシュ関数は一定の法則に基づき識別情報を短いハッシュ値に変換できるものであれば良い。
【0013】
例えば、ハッシュ関数を以下のように定義しても良い。
データ=abcd
ハッシュ関数h=(ab+cd)mod100
このようなハッシュ関数により、例えば識別情報5443を変換すると、ハッシュ値は97となり、識別情報よりも短いものとなる。この変換されたハッシュ値は、第1の索引テーブルと第2の索引テーブルとに格納され、この格納したハッシュ値を検索することによりデータ部に格納したデータの検索を行う。
【0014】
(第1索引テーブル)
第1索引テーブルは、データ部に格納した各データの索引となるものである。この第1索引テーブルは複数のブロックからなる。各ブロックには、ハッシュ変換手段により変換されたハッシュ値を複数所定範囲でまとめたハッシュ値群が格納される。
【0015】
この所定範囲は、自由に定め得るものであるが、変換されたハッシュ値の分布状況を考慮し、各ハッシュ値群がほぼ同数の変換されたハッシュ値を有するようにまとめる。なお、ブロックの数は、このハッシュ値群の数に対応して設ける。このとき、ブロックに格納するハッシュ値の数が多くなり、ブロック内の検索に時間がかからないようにする。また、各ブロックに格納されるハッシュ値は、大きい順または小さい順に並べて格納し、各ブロックの先頭には各ハッシュ値群の最大値または最小値を格納するのが好ましい。
【0016】
例えば、ハッシュ値が99,44,91及び97の4つ存在する場合は、ハッッシュ値を大きい順に並べ、99と97とで一つのハッシュ値群を形成し、所定範囲をハッシュ値99から92までと定める。また、同様にして91と44とでもう一つのハッシュ値群を形成し、所定範囲を91から00と定める。そして、第1索引テーブルを2つのブロックから構成し、ブロックの一方にハッシュ値99を先頭として格納し、ブロックの他方にハッシュ値91を先頭として格納する。なお、この後に、追加されたデータの識別情報がハッシュ値70に変換された場合は、ブロックの他方にハッシュ値70を格納する。もっとも、データの増加に伴い、変換されたハッシュ値の数が増加した場合は、所定範囲を変更してブロック数を増加しても良い。
【0017】
また、各ブロックにはハッシュ値に対応する識別情報が格納される。これは、例えば二つの識別情報をハッシュ値に変換すると、識別情報の値が異なるにも拘わらずハッシュ値が同一値となる場合がある(ハッシュ値の衝突)。従って、この識別情報を格納しないと、ハッシュ値によりデータを検索した場合に、いずれの識別情報に対応するハッシュ値であるのか判断できず、データ検索が不正確なものとなるおそれがある。このため、ハッシュ値を変換する元となった識別情報をハッシュ値とともに格納することにより、ハッシュ値の衝突によるデータ検索ミスを回避しようとするものである。従って、一つのハッシュ値に対応する識別情報が複数ある場合は、その全てを格納する。
【0018】
さらに、各ブロックには、データ部における識別情報の格納位置を格納する。これらのハッシュ値と識別情報と格納位置とは一組として各ブロックに格納するのが良い。
【0019】
なお、各ブロックにはさらに一つのハッシュ値に属する識別情報の格納数を格納するようにしても良い。
(第2索引テーブル)
第2索引テーブルは、第1索引テーブルの索引の役目を果たすものである。この第2索引テーブルは、第1索引テーブルの各ブロックの先頭に格納されるハッシュ値を格納する。この第2索引テーブルに格納されるハッシュ値は、第1索引テーブルの各ブロックの見出しとされる。また、この見出しとなるハッシュ値の第1索引テーブルにおける格納位置を格納する。なお、格納されるハッシュ値は、大きい順か小さい順にならべて格納するのが好ましい。
【0020】
この第2索引テーブルにより、データ検索の際に、まず第2索引テーブルを検索し、第1テーブルのどのブロックに検索データの識別情報を変換したハッシュ値が格納されているかを特定できるようにする。
【0021】
例えば、ハッシュ値が上限を99とし下限を00とする場合において、0から50までのハッシュ値を所定範囲とするブロックと、51から99までのハッシュ値を所定範囲とするブロックとから第1索引テーブルが形成されている場合には、第2索引テーブルにハッシュ値99とハッシュ値50とを格納する。そして、検索データのハッシュ値が例えば70である場合は、50と70を対比し、さらに99と70とを対比し、50<70≦99と特定し、ハッシュ値51からハッシュ値99までを所定範囲とするブロックを検索するようにする。
【0022】
なお、この第2索引テーブルに格納するハッシュ値の数は、第1の索引テーブルのブロック数に対応するものであるが、この格納数が増加した場合は、第2の索引に格納されたハッシュ値を所定範囲のハッシュ値群に分けるとともに、第2索引テーブルを各ハッシュ値群を格納する複数のブロックからなるようにし、さらに上位に第3の索引テーブルを作成し、この第2の索引テーブルに格納したハッシュ値の格納位置と、第2の索引テーブルに格納したハッシュ値の見出しとなるハッシュ値とを格納するようにしても良い。要するに本発明は、格納されるデータの数に応じて索引テーブルを2階層以上に形成しても良いものであり、幾階層に形成しても良いものである。
【0023】
(検索手段)
検索手段は、ハッシュ変換手段により変換したハッシュ値に基づき、第2索引テーブル、第1索引テーブルの順に検索し、データ部に格納したデータを検索するものである。
【0024】
検索手段は、まずデータ検索時に入力された識別情報をハッシュ値に変換する。次に、第2索引テーブルにおいて、変換されたハッシュ値と第2索引テーブルとに格納されたハッシュ値との大小を比較する。そして、同一のハッシュ値が格納されたブロックを特定する。
【0025】
このブロックの特定にあたり、例えば、検索手段に、予めハッシュ値群の所定の範囲と先頭の値を登録しておく。そして、検索手段が変換したハッシュ値と格納された各ハッシュ値との大小を順に比較して、変換したハッシュ値が含まれるハッシュ値群を特定するようにする。そして、特定されたハッシュ値群の先頭に格納されるハッシュ値に対応して格納された第1索引テーブルの格納位置に従って第1索引テーブルのブロックを検索するようにする。
【0026】
次に、特定したハッシュ値群を格納するブロックにおいて変換したハッシュ値と同一のハッシュ値を検索する。これは、例えば、変換したハッシュ値と特定ブロックに格納されたハッシュ値とを順次対比し、一致するハッシュ値を検索することにより行う。
【0027】
次に検索した同一のハッシュに対応して格納されている識別情報と検索用に入力した識別情報とを対比して同一の識別情報を検索し、この識別情報を検索対象として特定する。このとき、第1索引テーブルにハッシュ値に対応する識別情報を格納しておくと、検索手段が識別情報同士を対比する回数を指定することができる点で好ましい。
【0028】
最後に、この識別情報より前記データ部から対応データを検索する。これは、識別情報に対応して格納されているデータ部における対象データの格納位置に従ってデータ部を検索することにより行う。
【0029】
(本発明の付随的構成要素)
本発明のデータ管理装置は、以上説明した必須の構成要素からなるものであるが、以下に説明する付随的構成要素を付加した場合であっても成立する。
【0030】
(登録手段)
本発明のデータ管理装置は、新規データを追加したとき、第1索引テーブルにおいて、前記新規データに対応する新規識別情報のハッシュ値がすでに存在するときは、そのハッシュ値下に属するものとして前記新規識別情報とこの識別情報に対応するデータのデータ部における格納位置とを前記第1索引テーブルに登録する登録手段を備えていても良い。
【0031】
(削除手段)
登録手段に加え、さらに、データを削除する際、削除データに対応する識別情報のハッシュ値を検索し、第1索引テーブルにおいて、前記ハッシュ値に属する識別情報が1つ格納されているとき、当該識別情報とハッシュ値とを削除し、そのハッシュ値に属する識別情報が複数格納されているとき、削除データ対応の識別情報を削除する削除手段を備えても良い。
【0032】
このように登録手段と削除手段とを備えると、データの追加と削除とに対応して第1索引テーブルと第2索引テーブルとの格納内容が変更されることとなり、検索手段は、適切な内容の第1索引テーブルと第2索引テーブルとを検索してデータ検索を行うことが可能となる。
【0033】
(本発明の作用)
本発明のデータ管理装置によると、データと識別情報とがデータ部に格納されると、ハッシュ変換手段は、識別情報をハッシュ関数に従って識別情報のビット長より短いハッシュ値に変換する。このハッシュ値は、第1索引テーブルに格納される。また、ハッシュ値群の先頭となるハッシュ値は、第2索引テーブルに格納される。また、第1索引テーブルには、格納したハッシュ値に対応する識別情報が格納され、さらにデータ部における各データの格納位置が格納される。
【0034】
また、第2索引テーブルには、格納したハッシュ値の第1の索引テーブルにおける格納位置が格納され、第2索引テーブルに格納した各ハッシュ値の第1索引テーブルにおける格納位置が格納される。
【0035】
次に、データ検索時のデータ管理装置の作用を説明する。
検索手段にデータの識別情報が入力されると、検索手段は、まず、入力された識別情報をハッシュ値に変換する。次に、第2索引テーブルにおいて、変換したハッシュ値と第2索引テーブルに格納されたハッシュ値とを比較して同一のハッシュ値が格納された第1索引テーブルのブロックを特定する。
【0036】
例えば、第2索引テーブルにハッシュ値99と91が格納されている場合において、検索手段がある識別情報をハッシュ値93に変換したとする。この場合、検索手段は第2索引テーブルにおいて、ハッシュ値93とハッシュ値99とを比較し93≦99と認識する。また、検索手段は、ハッシュ値93とハッシュ値91とを比較して91<93≦99と認識する。これにより、変換したハッシュ値93が含まれるハッシュ値群を特定する。すなわち、第2索引テーブルに格納されたハッシュ値99は、ハッシュ値99からハッシュ値92までを所定範囲とする第1検索テーブルのブロックの見出しと認識する。
【0037】
このように、ブロックを特定すると、検索手段は、第2索引テーブルに格納されているハッシュ値と同一のハッシュ値が第1索引テーブルに格納されている位置の指示に従い、特定した第1索引テーブルにおいて、変換したハッシュ値と同一のハッシュ値を対比することにより検索する。この同一のハッシュ値を検索すると、このハッシュ値に対応して格納された識別情報と検索用に入力されたハッシュ値とを対比して一致する識別情報を検索対象として特定する。これは、識別情報が複数の場合は、一致する識別情報を検索するまで繰り返して行われる。
【0038】
最後に、検索対象として特定した識別情報に対応するデータ部のデータ格納位置の指示に従いデータ部から対応データを検索する。
なお、第1検索テーブルに一つのハッシュ値に属する識別情報の格納数が格納されている場合は、第1索引テーブルの特定ブロックにおいて同一のハッシュ値を検索した際、検索したハッシュ値下に属する識別情報の格納数が一つのときはその識別情報により記憶手段から対応データを検索する。
【0039】
一方、検索したハッシュ値下に属する識別情報の格納数が複数のときは検索用に入力された識別情報とハッシュ値下に属する複数の識別情報とを対比して、同一の識別情報を検索対象として特定する。そして、当該識別情報によりデータ部から対応データを検索する。
【0040】
また、本発明が登録手段を備える場合は以下のようになる。
データ部に新規データを追加した際、新規データに対応する識別情報はハッシュ変換手段によりハッシュ値に変換される。登録手段は、このハッシュ値により、第2索引テーブルにおいて変換したハッシュ値を格納したブロックを特定し、第1索引テーブルにおいて既に同一のハッシュ値が格納されているかを調べる。そして、新規識別情報のハッシュ値が既に第1索引テーブルに存在するときは、新規識別情報をそのハッシュ値下に属するものとして第1索引テーブルに登録し、さらにこの新規識別情報に対応するデータのデータ部における格納位置を登録する。一方、新規識別情報のハッシュ値が第1索引テーブルに存在しない場合は、ハッシュ値、識別情報、データ部における格納位置を登録する。
【0041】
さらに、本発明が削除手段を備える場合は以下のようになる。
データ部からデータを削除する際、削除手段は削除データに対応する識別情報のハッシュ値をデータ検索の際と同様にして、第1索引テーブルにおいて検索する。そして、そのハッシュ値に属する識別情報が1つ格納されているとき、当該識別情報とハッシュ値と削除データのデータ部における格納位置を削除する。
【0042】
一方、そのハッシュ値に属する識別情報が複数格納されているとき、削除手段は削除データ対応の識別情報を削除し、さらに削除した識別情報に対応する削除データのデータ部における格納位置を削除する。
【0043】
【発明の実施の形態】
以下、本発明のデータ管理装置の好適な実施の形態を図を用いてさらに詳細に説明する。図1には、本実施の形態にかかるデータ管理装置10の概要が示されている。このデータ管理装置10は、ハッシュ変換部12と、検索部13と、登録部14と、削除部15と、第2索引テーブル30と、第1索引テーブル40とを備える。
【0044】
なお、このデータ管理装置10は、記憶部20に形成したデータ部50にデータである氏名と識別情報である従業員番号とを格納して管理するものである。
〈実施の形態のハード的構成〉
実施の形態にかかるデータ管理装置10は、ハード的には、システムバスを介して接続されたCPUと主記憶装置と補助記憶装置とから構成されている。データ管理装置10の構成要素のうち、ハッシュ変換部12と検索部13と登録部14と削除部15とは、補助記憶装置に格納されたプログラムであり、必要に応じて主記憶装置に読み出され、CPUによりロードされて実現する機能である。
【0045】
〈記憶部〉
記憶部20には補助記憶装置が用いられている。この補助記憶装置は、フロッピーディスク、ハードディスク、MO(Magnet Optical)等を用いることができる。この記憶部20に氏名と従業員番号を対応させて格納するためのデータ部50が形成されている。
【0046】
〈データ部〉
データ部50は、二つのセル縦列により形成されている。そして、左側のセル縦列に従業員番号がそれぞれ格納され、右側のセル縦列に従業員番号に対応する氏名が格納される。ここでは、6人の氏名がデータとして格納されており、また、各氏名に対応する従業員番号がそれぞれ格納されている。
【0047】
〈ハッシュ変換部〉
ハッシュ変換部12は、入力された従業員番号をハッシュ関数に従って従業員番号のビット長よりも短いハッシュ値に変換するものである。このハッシュ変換部12には一定の法則に基づくハッシュ関数が格納されている。ここで用いられているハッシュ関数は、氏名に対応する従業員番号を1バイト単位に区切り、区切ったそれぞれの値を合計するものがである。数式で表せば、
従業員番号=abcd
h=(ab+cd) mod 100
である。従ってハッシュ値の上限は99であり、下限は00である。
【0048】
ハッシュ変換部12は、このハッシュ値を必要に応じて検索部13、登録部14、削除部15のいずれかに送るようにしてある。
〈第1索引テーブル〉
第1索引テーブル40は、第1ブロック41と第2ブロック42とから形成されている。各ブロック41、42は、4つのセル縦列から形成されている。このセル縦列のうち、左端のセル縦列には、ハッシュ変換部12により変換されたハッシュ値が上から大きい順に並べて格納される。また、左から2番目のセル縦列は、一つのハッシュ値に属する従業員番号の数が格納される。さらに、左から3番目のセル縦列はハッシュ値に対応する従業員番号が格納される。そして、右端のセル縦列は、データ部50における従業員番号と氏名との格納位置を示すポインタが格納される。
【0049】
なお、従業員番号を格納するセルとポインタを格納するセルとは、ハッシュ値の衝突が生じる場合には横に分割され、それぞれの従業員番号が格納される。また、ポインタを格納するセルには、データ部50における各従業員番号及び氏名の格納位置がそれぞれ格納される。
【0050】
この第1索引テーブル40の第1ブロック41は、先頭をハッシュ値99とし所定範囲をハッシュ値99からハッシュ値92までとし、この範囲のハッシュ値を格納するものである。また、第2ブロック42は、先頭をハッシュ値91とし所定範囲をハッシュ値91からハッシュ値00までとし、この範囲のハッシュ値を格納するものである。
【0051】
〈第2索引テーブル〉
第2索引テーブル30は、二つのセル縦列から形成され、左側のセル縦列には、ハッシュ変換部12により変換されたハッシュ値のうち、第1索引テーブル40の各ブロックの先頭に格納されるハッシュ値が、上から大きい順に格納される。右側のセル縦列にはここに格納された各ハッシュ値の第1索引テーブル40における格納位置を示すポインタが格納される。
【0052】
ここでは、第2索引テーブルには、ハッシュ値99とハッシュ値91とが格納されている。このハッシュ値99は、第1索引テーブルにおけるハッシュ値99から92までのハッシュ値群を格納する第1ブロック41の見出しとなっている。また、ハッシュ値91は、ハッシュ値91から00までのハッシュ値群を格納する第2ブロック42の見出しとなっている。
【0053】
〈検索部〉
検索部13は、第2索引テーブル30、第1索引テーブル40の順に検索してデータ部50からデータを検索するものである。
【0054】
この検索部13は、ハッシュ関数を有し、従業員番号が入力されると、従業員番号をハッシュ値に変換するようにされている。検索部13は、変換したハッシュ値により第2索引テーブル30を検索し、変換したハッシュ値と同一のハッシュ値が格納されているブロックを、第1ブロック41と第2ブロック42とのいずれか一方から特定する。これは、変換したハッシュ値と、第2索引テーブル30に格納されているハッシュ値との大小を順に比較することにより、ハッシュ値が属するハッシュ値群を特定することにより行う。
【0055】
検索部13は、各ハッシュ値群の先頭の値であるハッシュ値99とハッシュ値91とを有しており、その特定したハッシュ値群の先頭に格納されているハッシュ値99またはハッシュ値91に対応して格納されたポインタに従い、第1索引テーブル40の第1ブロック41と第2ブロック42との一方において変換したハッシュ値を検索する。
【0056】
次に、検索したハッシュ値に対応する従業員番号と検索用に入力した従業員番号とを対比し、同一の従業員番号を検索対象として特定する。最後に、この従業員番号に対応して格納されたポインタの指示に従いデータ部50から氏名を検索するようにされている。
【0057】
〈登録部〉
登録部14は、氏名と従業員番号とが入力されると、データ部50にこれらを登録するようにされている。また、ハッシュ変換部12からハッシュ値が入力されるようになっており、ハッシュ値が入力されると、第2索引テーブル30において、ハッシュ値を格納する第1索引テーブルのブロックを第1ブロック41と第2ブロック42との一方から特定する。次に特定したブロックにおいて、ハッシュ値とこのハッシュ値に対応する従業員番号とこの従業員番号のデータ部50における格納位置を示すポインタとを格納し、さらに、一つのハッシュ値下に属する従業員番号の格納数を1つ加算するようにされている。
【0058】
もっとも、第1索引テーブル40の特定したブロックにおいて、入力されたハッシュ値と同一のハッシュ値が既に格納されている場合は、そのハッシュ値に属するものとして従業員番号を第1索引テーブル40に登録するとともに、当該ハッシュ値に属する従業員番号数の値を1つ加算するようにされている。
【0059】
〈削除部〉
削除部14は、氏名と従業員番号とが入力されると、データ部50から氏名と従業員番号とを削除するようにされている。また、ハッシュ変換部12からハッシュ値が入力される。すると、まず、第2索引テーブル30において、入力されたハッシュ値と格納されたハッシュ値との大小を比較して、同一のハッシュ値が格納されたブロックを第1ブロック41と第2ブロック42との一方から特定する。
【0060】
次に、特定した第1索引テーブル40のブロックにおいて、削除氏名に対応する従業員番号のハッシュ値を検索する。そして、そのハッシュ値に属する従業員番号が1のとき、当該従業員番号とハッシュ値とポインタとを削除するとともに従業員番号の格納数を1つ減算するようにされている。
【0061】
このとき、ハッシュ値に属する従業員番号の格納数が複数のときは、入力された従業員番号と格納されている従業員番号とを対比して、削除氏名対応の従業員番号を特定する。そして、この従業員番号とポインタとを削除するとともに、当該ハッシュ値下に属する従業員番号の数の値を1つ減算するようにされている。
【0062】
〈実施の形態の作用〉
以上説明したデータ管理装置10の作用を図1と図2とを用いて説明する。例えば、氏名香川、従業員番号5443を新規に登録する場合と追加する場合とにおけるデータ管理10の動作について説明する。
【0063】
まず、登録部14に氏名香川、従業員番号5443が入力されると、登録部14はこれらをデータ部50に登録する。このとき、ハッシュ変換部12に従業員番号5443が入力される。
【0064】
次にハッシュ変換部12は従業員番号5443をハッシュ値97に変換する。すなわちh=(54+43)mod100=97である。このハッシュ値97は登録部14に入力される。
【0065】
次に、登録部14は、この変換されたハッシュ値97と第2索引テーブル30に格納されているハッシュ値99との大小を比較し97≦99と認識する。同様にハッシュ値97とハッシュ値91との大小を比較し、91<97と認識する。これにより、登録部14は、ハッシュ値97を格納するハッシュ値群の所定範囲は、91<97≦99と認識する。このとき、登録部14に格納されているハッシュ値群の先頭の値99より、登録部14は、ハッシュ値99が先頭に格納されている第1ブロック41をハッシュ値97が格納されるブロックと特定する。
【0066】
次に、第2索引テーブル30に格納されたハッシュ値99に対応するポインタの指示に従い、第1ブロック41において変換したハッシュ値97と格納してあるハッシュ値とを先頭のハッシュ値99から順に対比することにより同一のハッシュ値97を検索する。
【0067】
このとき、第1ブロック41には同一のハッシュ値97は格納されていないものとする。登録部14は、未だハッシュ値97が格納されていないことを認識すると、第1ブロック41にハッシュ値97を登録する。また、このハッシュ値97を変換する元になった従業員番号5443とデータ部50における従業員番号5443の格納位置を示すポインタとを登録する。また、ハッシュ値97下に属する従業員番号の格納数を1つ換算する。
【0068】
なお、第1ブロック41に既にハッシュ値97が格納されている場合は、同一のハッシュ値97を検索すると、登録部14は、ハッシュ値97に対応する従業員番号を格納するセルに既に格納されている従業員番号5443に加え、従業員番号4354を登録する。また、従業員番号4354のデータ部50における格納位置を示すポインタを登録する。さらに、ハッシュ値97下に属する従業員番号の格納数1に1つ加算し2とする。
【0069】
このようにして、次々とデータを登録すると、図1に示すデータ部50と第1索引テーブル40とのようになる。このようなデータの格納状況において、データ部50から、例えば、氏名佐々木、従業員番号4354を検索する場合のデータ管理装置10の動作を図1と図3とを用いて以下に説明する。
【0070】
まず、検索部13に従業員番号4354が入力される。すると、検索部13はハッシュ関数を呼び出し、h=(43+54)mod100=97の演算を行い、従業員番号4354をハッシュ値97に変換する。次に、検索部13はハッシュ値97により、第2索引テーブル30において、変換されたハッシュ値97と格納されているハッシュ値99とを比較し、97≦99と認識する。
【0071】
同様にハッシュ値97とハッシュ値91との大小を比較し、91<97と認識する。これにより、検索部13は、ハッシュ値97を格納するハッシュ値群の所定範囲は、91<97≦99と認識する。このとき、検索部13に格納されているハッシュ値群の先頭の値99より、検索部13は、ハッシュ値99が先頭に格納されている第1ブロック41をハッシュ値97が格納されるブロックと特定する。
【0072】
次に、第2索引テーブル30に格納されたハッシュ値99に対応して格納されたポインタの指示に従い、第1ブロック41において変換したハッシュ値97と格納してあるハッシュ値とを先頭のハッシュ値99から順に対比することにより同一のハッシュ値97を検索する。
【0073】
この同一のハッシュ値97を検索すると、次に検索部13は、このハッシュ値97下に属する従業員番号の格納数2を検索し、格納されている従業員番号と、検索用に入力された従業員番号4354との比較を最大2回行えば良いことを認識する。そして、従業員番号を上から順に対比し、2回目の対比において、同一の従業員番号4354を検索し、この同一の従業員番号4354を検索対象として特定する。
【0074】
最後に、この従業員番号4354に対応して格納されたデータ部50における従業員番号4354の格納位置を示すポインタに従い、データ部50から氏名佐々木を検索する。
【0075】
このとき、ハッシュ値97下に属する従業員番号の格納数が1である場合は、従業員番号の対比を一度だけ行い検索対象を特定し、従業員番号4354に対応するポインタに従ってデータ部50から氏名佐々木を検索する。
【0076】
なお、検索部13は、第1索引テーブル40においてハッシュ値97を検索できないときは該当氏名なしのメッセージを出し、CRT等の出力装置が表示するようにされている。
【0077】
〈データの削除〉
次に、データ部50に格納した氏名山田、従業員番号8110を削除する場合のデータ管理装置10の動作を図1と図4とを用いて以下に説明する。
【0078】
まず、削除部15に氏名山田と従業員番号8110とが入力されると、ハッシュ変換部12に従業員番号8110が入力される。すると、ハッシュ変換部12がハッシュ関数を呼び出し、h=(81+10)mod100=91の演算を行い、従業員番号8110をハッシュ値91に変換する。このハッシュ値91は削除部15に送られる。
【0079】
次に、削除部15は、この変換されたハッシュ値91と第2索引テーブル30に格納されているハッシュ値99との大小を比較し91≦99と認識する。次ににハッシュ値91とハッシュ値91とを比較し、91≦91と認識する。この場合は、変換したハッシュ値91がハッシュ値群の先頭の値91と一致するため、削除部15は、ハッシュ値91が先頭に格納されている第2ブロック42をハッシュ値91が格納されるブロックと特定する。
【0080】
次に、第2索引テーブル30に格納されたハッシュ値91に対応するポインタの指示に従い、第1ブロック41において変換したハッシュ値91と格納してあるハッシュ値とを先頭のハッシュ値99から順に対比することにより同一のハッシュ値91を検索する。
【0081】
このとき、ハッシュ値91下に属する従業員番号の格納数が1である場合は、入力された従業員番号8110と格納されている従業員番号8110とを1回対比し、削除データに対応する従業員番号8110を特定する。そして、第1索引テーブル40からハッシュ値91と従業員番号8110とポインタとを削除する。また、ハッシュ値91下に属する従業員番号の格納数を1つ減算する。
【0082】
そして、削除するポインタをもとに、データ部50から氏名山田と従業員番号8110とを削除する。
一方、従業員番号の格納数が複数の場合、すなわち、図1のように、従業員番号8110の他に従業員番号1081が格納されている場合は、入力された従業員番号8110と格納されている従業員番号との対比を最大2回行えば良いことを認識する。そして、従業員番号の格納順に上から対比を行い、一回目の対比で従業員番号同士が一致するため、この従業員番号8110を削除氏名に対応する従業員番号8110と特定する。そして、第1索引テーブル40の第2ブロック42から従業員番号8110とこの8110に対応するポインタとを削除する。また、ハッシュ値91下に属する従業員番号の格納数を一つ減算する。
【0083】
そして、ポインタをもとに、データ部50から氏名山田と従業員番号8110とを削除する。
〈データの更新〉
データ部50に格納した氏名を更新する場合におけるデータ管理装置の動作は、データ部50から氏名と従業員番号とを削除し、続けて氏名と従業員番号とを追加する場合の動作と同様にして行われる。したがって、詳細な説明は省略する。
【0084】
〈実施の形態の効果〉
以上説明した実施の形態にかかるデータ管理装置の効果を以下に述べる。
データ管理装置10によると、第2索引テーブル30と第1索引テーブル40とには、ハッシュ変換手段12により変換されたハッシュ値が格納されている。このハッシュ値は、元の識別情報である従業員番号に比べると2分の1のビット長である。従って、第2索引テーブル30と第1索引テーブル40とに格納された情報量は全体として減少する。このため、検索部13は、データ検索を短時間で行うことができる。
【0085】
また、第2索引テーブル30を有しているため、変換されたハッシュ値が格納されたブロック41、42を早く検索することができる。
また、登録部14と削除部15とを備えることにより、常に最新のデータ部50の格納内容に対応する索引テーブル30と第1索引テーブル40とを再編成することができる。この再編成も短時間で処理することができる。
【0086】
また、第1索引テーブル40に従業員番号を格納するため、ハッシュ値の衝突が生じる場合であっても、検索手段は正確にデータを検索することができる。
【0087】
【発明の効果】
本発明のデータ管理装置によると、ハッシュ変換手段によりデータの識別情報をハッシュ関数に従って識別情報のビット長よりも短いハッシュ値に変換するため、索引テーブルに格納する情報量の減少を図ることができる。このため、記憶手段に格納したデータの検索時間を短縮することができる。また、ハッシュ値の衝突の発生に拘わらず適切にデータを検索することができる。
【図面の簡単な説明】
【図1】図1は、本発明の実施の形態にかかるデータ管理装置の概要を示すブロック図である。
【図2】図2は、データ部にデータを登録する際におけるデータ管理装置の動作の手順を示すフローチャートである。
【図3】図4は、データ部に格納したデータを検索する際におけるデータ管理装置の動作の手順を示すフローチャートである。
【図4】図4は、データ部からデータを削除する際におけるデータ管理装置の動作の手順を示すフローチャートである。
【図5】図5は、従来のデータ管理装置の概要を示すブロック図である。
【符号の説明】
12 ハッシュ変換部
13 検索部
14 登録部
15 削除部
20 記憶部
30 第2索引テーブル
40 第1索引テーブル
41 第1ブロック
42 第2ブロック
50 データ部
Claims (1)
- 複数のデータと各データに対応する検索用の識別情報とを格納するデータ部と、
前記各識別情報がハッシュ関数に従って変換された前記識別情報のビット長よりも短いハッシュ値を格納した第1索引テーブルであって、ハッシュ値としてとり得る値が相互に重ならないように区分けされた所定の数値範囲の夫々に対応する複数のブロックを有し、各ブロックには、そのブロックに対応する数値範囲に夫々属する前記変換されたハッシュ値と、各ハッシュ値に対応する識別情報と、各識別情報の前記データ部における格納位置とが格納された第1索引テーブルと、
前記第1索引テーブルの各ブロックに対応する数値範囲の最大値又は最小値、及び、各最大値又は最小値の前記第1索引テーブルにおける格納位置、を格納する第2索引テーブルと、
データ検索時に入力された識別情報をハッシュ値に変換し、このハッシュ値と第2索引テーブルに格納された各最大値又は最小値との大小を比較して当該ハッシュ値が属する数値範囲に対応する最大値又は最小値を特定し、該最大値又は最小値の第1索引テーブルにおける格納位置に基づき、当該ハッシュ値と同一のハッシュ値が格納された前記第1索引テーブルのブロックを特定し、そのブロックに格納された各ハッシュ値と前記変換されたハッシュ値とを対比して同一のハッシュ値を検索し、検索したハッシュ値に対応する識別情報と検索用に入力した識別情報とを対比して同一の識別情報を検索対象として特定し、この識別情報の前記データ部における格納位置より前記データ部から対応データを検索する検索手段と、
を備えたデータ管理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24486195A JP3647940B2 (ja) | 1995-09-22 | 1995-09-22 | データ管理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24486195A JP3647940B2 (ja) | 1995-09-22 | 1995-09-22 | データ管理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0991303A JPH0991303A (ja) | 1997-04-04 |
JP3647940B2 true JP3647940B2 (ja) | 2005-05-18 |
Family
ID=17125088
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP24486195A Expired - Fee Related JP3647940B2 (ja) | 1995-09-22 | 1995-09-22 | データ管理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3647940B2 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3638220B2 (ja) | 1998-10-06 | 2005-04-13 | 株式会社日立製作所 | 不正電子記憶媒体の検出方法とそれを用いたicカードシステム |
KR100325688B1 (ko) * | 1999-11-19 | 2002-02-25 | 오길록 | 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어방법 및 이를 이용한 엔트리 삽입, 삭제, 검색 방법 |
JP4812508B2 (ja) * | 2006-05-12 | 2011-11-09 | 富士通株式会社 | プレゼンス情報を取り扱うシステム |
US7689547B2 (en) * | 2006-09-06 | 2010-03-30 | Microsoft Corporation | Encrypted data search |
JP5207721B2 (ja) * | 2007-12-07 | 2013-06-12 | 株式会社日立製作所 | 転置インデックス作成装置及びフォワードインデックス作成装置 |
JP2011203958A (ja) * | 2010-03-25 | 2011-10-13 | Nec System Technologies Ltd | データ処理装置、データ処理方法およびプログラム |
CN101957858A (zh) * | 2010-09-27 | 2011-01-26 | 中兴通讯股份有限公司 | 数据比对方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2987942B2 (ja) * | 1990-12-25 | 1999-12-06 | ソニー株式会社 | データ検索方法 |
JPH06162092A (ja) * | 1992-11-18 | 1994-06-10 | Fujitsu Ltd | 情報検索装置 |
-
1995
- 1995-09-22 JP JP24486195A patent/JP3647940B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH0991303A (ja) | 1997-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5745904A (en) | Buffered table user index | |
US6513041B2 (en) | Value-instance-connectivity computer-implemented database | |
US7076507B1 (en) | Value-instance-connectivity computer-implemented database | |
JP2888188B2 (ja) | 情報検索装置 | |
JP3647940B2 (ja) | データ管理装置 | |
JPH08329116A (ja) | 構造化文書検索方法 | |
JP3360693B2 (ja) | 顧客情報検索方式 | |
JPH05257774A (ja) | インデックス・レコード番号を圧縮・格納した情報検索装置 | |
JP2000322416A (ja) | 文書検索装置 | |
JPH06274102A (ja) | 地図設備図面情報管理処理方法 | |
JPH03137772A (ja) | データベース利用システム | |
JP3644765B2 (ja) | 文書管理方式および文書管理方法 | |
JPH09179762A (ja) | 索引順編成型ファイルの簡易照会方法 | |
JPH05165891A (ja) | データベースのデータ登録・検索方式 | |
JPH05181719A (ja) | 可変長データの格納および参照システム | |
JPH0962696A (ja) | データベース管理システム | |
JP3570082B2 (ja) | データベース装置及びデータベース検索方法 | |
JPH09147039A (ja) | 為替処理方法及び装置 | |
JPS62186362A (ja) | 情報検索装置 | |
JPS61281368A (ja) | 画像情報検索装置 | |
JPH0546666A (ja) | 情報検索装置 | |
JPS6295628A (ja) | インデクスキ−管理方式 | |
JPS62114060A (ja) | 画像フアイル装置 | |
JPH0388069A (ja) | 記憶媒体接続装置 | |
JPH0451362A (ja) | 索引検索処理方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041019 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041210 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050201 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050210 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080218 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090218 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090218 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100218 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110218 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110218 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120218 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |