(57)【特許請求の範囲】
【請求項１】
相対レコード番号により一意に識別される複数のデータレコードを格納している相対編成フアイルと、前記データレコードの１つの項目を索引キーとし前記索引キーを少なくとも前記索引キーの一部の数字のみより構成される第２の索引キーとその残余から構成される第１の索引キーとに２分して作られた前記第１の索引キーとこの第１の索引キーに属する複数の相対レコード番号を前記第２の索引キーの示す位置情報に基づいて配列したデータ部とから構成される索引レコードを複数格納している索引編成フアイルと、前記索引キーを入力する索引キー入力手段と、入力された前記索引キーの第１の索引キーの供給に応答して前記索引編成フアイルから対応する索引レコードを取得しこのデータ部を出力する索引レコード取得手段と、入力された前記索引キーの第２の索引キーの供給を受け、これと相対レコード番号の桁数を用いて、前記索引レコード取得手段から供給されるデータ部におけるアドレスを算出し、これにより対応する相対レコード番号を取得する相対レコード番号取得手段と、前記相対レコード番号の供給を受け前記相対編成フアイルから対応するデータレコードを取得するデータレコード取得手段と、前記データレコードの供給を受けこれを外部に出力する出力手段とを含むことを特徴とする相対編成フアイルのアクセス装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は相対編成フアイルのアクセス装置に関し、特に相対編成フアイルのレコードの任意項目を索引キーとして索引編成フアイルを利用して高速にアクセスする相対編成フアイルのアクセス装置に関する。
【０００２】
【従来の技術】
相対編成フアイルとは、相対レコード番号で一意に識別される複数のレコードに一定のスペースが割当てられ、通常は相対レコード番号がそれに対応するレコードの先頭からの相対位置を表すように編成されたフアイルをいう。
【０００３】
図６に相対編成フアイルのレコードとその格納状態が図示されている。すなわち、レコードは、そのレコードを一意に識別する相対レコード番号を格納する相対レコード番号部６１とデータを格納するデータ部６２とから構成されており、相対レコード番号順に格納されている。
【０００４】
従来の相対編成フアイルのアクセス装置では、レコードの任意項目をキーとして（キーを例えば図７（ａ）の形式とする）これによりそのキーに対応する指定レコードにアクセスする場合に、予め図７（ｂ）に示すようなキーと相対レコード番号との対応表である索引編成フアイルを作成しておき、これを参照してキーに対応する相対レコード番号を調べ、その相対レコード番号により指定レコードにアクセスしていた。この索引編成フアイルでは、収容されている索引キーの数は相対編成フアイルのレコード件数と同じとなっている。
【０００５】
索引編成フアイルを使用してレコードを検索する場合に、レコード件数の大小に対応して最上位、中位、…、最下位などのように複数階層から構成される索引ブロックを使用して効率的にアクセスする公知の方法が、よく知られている。
【０００６】
そして、この方法では、階層数を削減すればアクセスの高速化ができるので、キーを図８（ａ）のように、メインキーとサブキーとの２レベルに分け、メインキーによる索引編成フアイルを作成して索引編成フアイルに収容され索引レコードの件数はメインキーの数に削減し、それに伴なって索引ブロックの階層数も削減できてアクセスの高速化を行なっている。
【０００７】
索引編成フアイルのレコード（最下位の索引ブロックに相当）は図８（ｂ）に示すように、メインキーを収容するキー部８１と、それに所属するサブキーの個数８３と、サブキー８４−１−１とそれに対応するレコードのデータフアイル内相対ブロック番号ｓ1 とブロック内開始位置ｓ2 とそのレコード長ｓ3 とからなるデータレコード位置情報８４−１−２とから構成される複数のレコード位置情報８４−１〜８４−ｎとから構成されている。
【０００８】
そして、指定レコードの検索に際しては、先ず指定されたメインキーにより索引編成フアイルから上述の公知の方法により、対応する最下位索引ブロックを読み出し、次いで、この索引ブロック内の各サブキー８４−１−１〜８４−ｎ−１と指定されたサブキーとを比較して同一サブキーを探索して指定レコードのフアイル内位置情報を獲得し、それにより、指定レコードにアクセスしている。
【０００９】
【発明が解決しようとする課題】
上述した従来の相対編成フアイルのアクセス装置は、索引編成フアイルの索引キーの数が相対編成フアイルに収容しているレコードの数と同じとなり、アクセスに要する時間が長くなるという問題がある。
【００１０】
また、これを改善して索引編成フアイルの索引キーの数をメインキーの数に削減した発明では、サブキーによる対応するレコードの位置情報の検索に際しては、サブキーの比較動作を行なわなければならず、メインキーに所属するサブキーの数が多くなった場合には、アクセスに要する時間が長くなるという問題がある。
【００１１】
本発明の目的は、索引キーを２分し、その一方を数字のみより構成される第２の索引キーとし、残余を第１の索引キーとする場合に、索引キーに対応するレコードの位置情報を第１の索引キーにより検索された索引レコード内の第２の索引キーの数字に対応する位置に格納することにより格段にアクセスを高速化した相対編成フアイルのアクセス装置を提供することにある。
【００１２】
【課題を解決するための手段】
第１の発明の相対編成フアイルのアクセス装置は、相対レコード番号により一意に識別される複数のデータレコードを格納している相対編成フアイルと、前記データレコードの１つの項目を索引キーとし前記索引キーを少なくとも前記索引キーの一部の数字のみより構成される第２の索引キーとその残余から構成される第１の索引キーとに２分して作られた前記第１の索引キーとこの第１の索引キーに属する複数の相対レコード番号を前記第２の索引キーの示す位置情報に基づいて配列したデータ部とから構成される索引レコードを複数格納している索引編成フアイルと、前記索引キーを入力する索引キー入力手段と、入力された前記索引キーの第１の索引キーの供給に応答して前記索引編成フアイルから対応する索引レコードを取得しこのデータ部を出力する索引レコード取得手段と、入力された前記索引キーの第２の索引キーの供給を受け、これと相対レコード番号の桁数を用いて、前記索引レコード取得手段から供給されるデータ部におけるアドレスを算出し、これにより対応する相対レコード番号を取得する相対レコード番号取得手段と、前記相対レコード番号の供給を受け前記相対編成フアイルから対応するデータレコードを取得するデータレコード取得手段と、前記データレコードの供給を受けこれを外部に出力する出力手段とを含んで構成されている。
【００１５】
【実施例】
次に、本発明の実施例について図面を参照して説明する。
【００１６】
データレコードにアクセスするための索引キーはデータレコードの１項目をそれに使用できるが、以下の説明では、便宜上図２（ａ）に示すように６個の数字または文字等より構成される索引キー２５を例にとって説明する。そして索引キーを上位部分２１と下位部分２２とに２分し（必ずしも等分ではない）、それぞれ第１の索引キー、第２の索引キーと以下呼称する。第２の索引キー２２は数字のみから構成されているものとする。第１の索引キー２１は文字のみの構成、数字のみの構成または文字と数字の混在の構成いずれでもよいとする。
【００１７】
図１は本発明の相対編成フアイルのアクセス装置の一実施例を示すブロック図である。
【００１８】
本実施例の相対編成フアイルのアクセス装置は、図１に示すように、索引キーを入力する索引キー入力部１と、入力された索引キーに対応するデータレコードを出力する出力部２と、相対レコード番号により一意に識別される複数のレコードを格納している相対編成フアイル４と、第１の索引キーとその第１の索引キーに属する複数の相対レコード番号からなる索引レコードを複数格納している索引編成フアイル５と、入力された第１の索引キーの供給に応答して索引編成フアイル５から対応する索引レコードを取得する索引レコード取得部６と、入力された第２の索引キーと供給される第１の索引キーに対応する索引レコードとから入力された索引キー（入力された第１の索引キーと入力された第２の索引キーとからなる索引キー）に対応するデータレコードの相対レコード番号を取得する相対レコード番号取得部７と、供給される相対レコード番号により相対編成フアイル４から対応するデータレコードを取得し出力部２へ出力するデータレコード取得部８とを含んで構成されている。
【００１９】
索引レコード取得部６と相対レコード番号取得部７とデータレコード取得部８とは、主記憶および中央処理装置等から構成されるデータ処理部３としてプログラム制御により動作する。
【００２０】
索引編成フアイル５はデータレコードのどの項目を索引キーとするかに応じて予め作成される。その索引レコードは前述のように第１の索引キーと、その第１の索引キーに属する複数の相対レコード番号から構成されているが、ここにその詳細を図２（ｂ）を参照して説明する。
【００２１】
図２（ｂ）は索引編成フアイル５に格納されている索引レコードのデータの格納状態を示すデータ格納図である。図２（ｂ）の索引レコード２０はキー部２３とデータ部２４とから構成されており、キー部２３には第１の索引キーが格納されており、データ部２４にはキー部２３に格納されている第１の索引キーに属する複数のデータレコードのそれぞれの相対レコード番号が２進数表示で格納されている。
【００２２】
そしてこの第１の索引キーに属するデータレコードの数は第２の索引キーの１０進法上の桁数で決る。すなわち、第２の索引キーの１０進法上の桁数が２であれば１００個、３であれば１０００個である。
【００２３】
次に、データ部２４に収容される複数の相対レコード番号の収容形態であるが、相対レコード番号の２進数表示の場合の桁数に第２の索引キーの１０進数表示の数字を乗じた桁数番目の次の位置から収容されている。索引キーが６個の場合のデータレコードの数は、索引キーが全て数字とした場合には１００万個となり、したがって相対レコード番号の２進数表示の場合の桁数は２０桁（図２（ｂ）でＬに相当する）となる。そして第２の索引キーが「１２３」（図２（ｂ）でｄ１  ＝１，ｅ１  ＝２，ｆ１  ＝３の場合に相当）の場合には１２３＊２０＝２４６０番目（図２（ｂ）でｍに相当する）の桁の次から始まる２０桁に対応する相対レコード番号の２進数表示のデータが格納される。すなわち、このようにすることにより第２の索引キーは求める相対レコード番号のデータ部２４内の格納位置を示す位置情報として使用できることになる。
【００２４】
データレコードのどの項目を索引キーとするかを決めたら、上述のようにして、予め索引編成フアイル５を作成しておく。
【００２５】
以後の説明では、相対レコード番号取得部７の動作により３つの実施例にわけて説明する。
【００２６】
次に、図１、図２および図３を参照して第１の実施例の動作について説明する。
【００２７】
索引キー入力部１から索引キー「ａ１  ｂ１  ｃ１  ｄ１  ｅ１  ｆ１  」を入力する。
【００２８】
索引レコード取得部６は入力された索引キーのうちの上位部分の第１の索引キーである「ａ１  ｂ１  ｃ１  」の供給をうけて、これをキーとして前述の公知の方法により、索引編成フアイル５を検索してこれに対応する索引レコード２０を取得し、そのデータ部２４を相対レコード番号取得部７に供給する。
【００２９】
相対レコード番号取得部７は、索引レコード取得部６から供給される第１の索引キーに対応するデータ部２４と、入力された索引キーのうちの下位部分の第２の索引キーである「ｄ１  ｅ１  ｆ１  」の供給をうけて、入力された索引キーに対応するデータレコードの相対レコード番号を取得する。
【００３０】
次に相対レコード番号取得部７の動作を図３の動作流れ図を参照して説明する。図３において、Ｌは相対レコード番号の２進数表示の場合のビット数、Ｐは探索する相対レコード番号の、データ部２４における格納場所の始点のビット位置、Ｓは探索する相対レコード番号の値である。
【００３１】
始めに、探索する相対レコード番号のデータ部２４における格納場所の始点を、第２の索引キーの示す数字を１０進数としてこれに相対レコード番号の２進数表示の場合のビット数Ｌを乗じて、これに１を加算して始点Ｐを計算する（ステップ３１）。始点Ｐにより、相対レコード番号Ｓを読み出してデータレコード取得部８にこれを供給する（ステップ３４）。
【００３２】
次に、データレコード取得部８は、相対レコード番号取得部７から入力された索引キー「ａ１  ｂ１  ｃ１  ｄ１  ｅ１  ｆ１  」に対応する相対レコード番号の供給をうけて、これをキーとして前述の公知の検索法により相対編成フアイル４から供給された相対レコード番号に対応するデータレコードを検索して出力部２に供給し、出力部２はこれを出力する。
【００３３】
次に、本発明の第２の実施例について説明する。
【００３４】
第２の実施例では索引レコードのデータ部から相対レコード番号を探索するときに、データ部の末尾から先頭に向かって丁度第１の実施例とは逆方向に探索するものである。したがって、第１の実施例とは相対レコード番号取得部７の動作を異にするのみである。
【００３５】
そこで第２の実施例の相対レコード番号取得部７の動作を図４を参照して説明する。図４において、Ｑは探索する相対レコード番号の格納場所の終点の桁位置、Ｎはデータ部２４の全体の桁数、他の記号の意味は第１の実施例の同一である。
【００３６】
始めに、探索する相対レコード番号のデータ部２４における格納場所の終点を、第２の索引キーの示す数字を１０進数としてこれに１を加算した数に相対レコード番号の２進数表示の場合の桁数Ｌを乗じて終点Ｑを計算する（ステップ４１）。次にデータ部２４の末尾から順に先頭方向に向かって、探索する終点の桁位置を探し（ステップ４２）、その終点の桁位置にある値から順に先頭方向に向かって相対レコード番号値を読み出して記憶し（ステップ４３）、最後に記憶した相対レコード番号を読み出してデータレコード取得部８にこれを供給する（ステップ４４）。
【００３７】
次に本発明の第３の実施例について説明する。
【００３８】
第３の実施例では索引レコードのデータ部から相対レコード番号を探索するときに、第２の索引キーの位置情報の示す位置を探索する際に、第１の実施例のようにデータ部の先頭から探索した方が早いか、第２の実施例のようにデータ部の末尾から探索した方が早いかを判断してから探索動作に入るものである。
【００３９】
そこで、その判断機能を相対レコード番号取得部７に有せしめるとともに、その後の動作を行なうために、第３の実施例の相対レコード番号取得部７は第１の実施例および第２の実施例の相対レコード番号取得部７の探索動作を共に行なえるようにしてあり、その他の構成および動作は、第１および２の実施例と同一である。
【００４０】
そこで、第３の実施例の相対レコード番号取得部７の動作を図５を参照して説明する。
【００４１】
先ず、第２の索引キーの示す相対レコード番号の格納位置の中央桁のデータ部の先頭より数えた桁番とデータ部の中央桁の桁番とを比較し（ステップ５１）、データ部の中央桁の桁番以下のときには第１の実施例のようにデータ部の先頭から探索し（ステップ５１のＹ枝）、データ部の中央桁の桁番より大きいときには第２の実施例のようにデータ部の末尾から探索させる（ステップ５１のＮ枝）。
【００４２】
以上説明したように、第１の実施例では索引キーを２分しその一方を数字のみより構成される第２の索引キーとし、残余を第１の索引キーとする場合に、索引キーに対応するデータレコードの位置情報を第１の索引キーにより検索された索引レコード内の第２の索引キーの数字に対応する位置に格納することにより格段にアクセスを高速化できるという効果を有する。
【００４３】また第１の索引キーにより検索された索引レコードには第２の索引キーの情報が顕在していないため、索引編成フアイルのフアイル容量を削減できるという効果を有する。
【発明の効果】
以上説明したように、本発明の相対編成フアイルのアクセス装置は、索引キーを２分しその一方を数字のみより構成される第２の索引キーとし、残余を第１の索引キーとする場合に、索引キーに対応するデータレコードの位置情報を第１の索引キーにより検索された索引レコード内の第２の索引キーの数字に対応する位置に格納することにより格段にアクセスを高速化できるという効果を有する。
【００４４】
更に、第３の実施例では探索方向を判断してから探索動作に移行するため、第１および第２の実施例よりも更にアクセスを高速化できるという効果を有する。
【００４５】
以上の説明では第１の索引キーを索引キーの上位部分、第２の索引キーを下位部分としたが、本発明はこれに限定されるものではなく、索引キー中の数字部分の少なくとも１部を第２の索引キーとし、その他を第１の索引キーとしても適用できることは自明である。
【００４６】
【発明の効果】
以上説明したように、本発明の相対編成フアイルのアクセス装置は、索引キーを２分しその一方が数字の場合に、指定キーに対応するデータレコードの位置情報を指定第１の索引キーにより検索された索引レコード内の指定第２の索引キーの数字に対応する位置に格納することにより格段にアクセスを高速化できるという効果を有する。
【００４７】
また第１の索引キーにより検索された索引レコードには第２の索引キーの情報が顕在していないため、索引編成フアイルのフアイル容量を削減できるという効果を有する。
【図面の簡単な説明】
【図１】本発明の相対編成フアイルのアクセス装置の一実施例を示すブロック図である。
【図２】（ａ）は図１の実施例の索引キーの一例を示すキー形式図、（ｂ）は図１の実施例の索引編成フアイルの索引レコードの格納状態を示すデータ格納図である。
【図３】第１の実施例の相対レコード番号取得部の動作を示す流れ図である。
【図４】第２の実施例の相対レコード番号取得部の動作を示す流れ図である。
【図５】第３の実施例の相対レコード番号取得部の動作を示す流れ図である。
【図６】相対編成フアイルのデータ格納図である。
【図７】（ａ）は従来例の索引キーの一例を示すキー形式図、（ｂ）はその索引編成フアイルの索引レコードの格納状態を示すデータ格納図である。
【図８】（ａ）は他の従来例の索引キーの一例を示すキー形式図、（ｂ）はその索引編成フアイルの索引レコードの格納状態を示すデータ格納図である。
【符号の説明】
１    索引キー入力部
２    出力部
３    データ処理部
４    相対編成フアイル
５    索引編成フアイル
６    索引レコード取得部
７    相対レコード番号取得部
８    データレコード取得部
２０    索引レコード
２１    第１の索引キー
２２    第２の索引キー
２３、７１、８１    キー部
２４、６２、７２、８２    データ部
２５    索引キー
６１    相対レコード番号部
８３    サブキーの個数
８４−１〜８４−ｎ    レコード位置情報
８４−１−１〜８４−ｎ−１    サブキー
８４−１−２〜８４−ｎ−２    データレコード位置情報
【図１】
0003564173.tif 000002
【図２】
0003564173.tif 000003
【図３】
0003564173.tif 000004
【図４】
0003564173.tif 000005
【図５】
0003564173.tif 000006
【図６】
0003564173.tif 000007
【図７】
0003564173.tif 000008
【図８】
0003564173.tif 000009