Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP2874810B2 - キーの記憶割り当て方法 - Google Patents
[go: Go Back, main page]

JP2874810B2 - キーの記憶割り当て方法 - Google Patents

キーの記憶割り当て方法

Info

Publication number
JP2874810B2
JP2874810B2 JP3267232A JP26723291A JP2874810B2 JP 2874810 B2 JP2874810 B2 JP 2874810B2 JP 3267232 A JP3267232 A JP 3267232A JP 26723291 A JP26723291 A JP 26723291A JP 2874810 B2 JP2874810 B2 JP 2874810B2
Authority
JP
Japan
Prior art keywords
key
index
length
area
node
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
Application number
JP3267232A
Other languages
English (en)
Other versions
JPH0581101A (ja
Inventor
豊明 鈴鹿
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.)
Hitachi Software Engineering Co Ltd
Original Assignee
Hitachi Software Engineering 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 Hitachi Software Engineering Co Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP3267232A priority Critical patent/JP2874810B2/ja
Publication of JPH0581101A publication Critical patent/JPH0581101A/ja
Application granted granted Critical
Publication of JP2874810B2 publication Critical patent/JP2874810B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、データベース検索のた
め、二次記憶装置上に木構造インデックスを構築する際
のキーの記憶割り当て方法に係り、特にインデックスノ
ードのキー格納効率向上、ひいてはデータベース検索の
高速化に好適なキー記憶割り当て方法に関する。
【0002】
【従来の技術】ここでは、VSAMデータベースを例に
説明する。VSAM(VirtualStorage Access Meth
od;仮想記憶アクセス方式)は、データ管理プログラム
の内の一つのアクセス技法であり、外部記憶装置である
磁気ディスク装置と仮想記憶装置内のプログラムとのデ
ータのやり取りを行うもので、外部記憶装置の物理的属
性から独立するように、その記憶形式が設計されてい
る。図5に示すように、VSAMでは、複数個のレコー
ドからなるコントロールインタバル(CI)を単位とし
て、磁気ディスク装置とメモリ間で入出力データの転送
が行われる。更に、VSAMでは、連続した領域にある
複数個のCIの集合であるコントロールエリア(CA)
を単位にして管理し、CAは磁気ディスク装置上の連続
した領域(エクステント)に割り付けられる。VSAM
データセットはVSAMを介して処理するレコードの集
合である。
【0003】VSAMデータセットの編成法の一つにキ
ー順データセット(Key SeqencedData Set;KSD
S)がある。このデータセットは、キー(例えば、社員
番号、年齢等)の昇順にレコードが順序付けられてい
て、レコードの取りだしを高速に行うためのインデック
スを持っている。
【0004】インデックスは、木構造を用いて作成され
る。木構造とは、図6に示すように、根を上に葉を下に
して構成され、A,B,C,...J,Kをノード
(節)といい、根以外のノードは上位のノードに接続さ
れ、末端のノード(C,E,F,G,I,J,K)を葉
という。
【0005】図7は、VSAMにおける木構造インデッ
クスを示し、最下位のインデックスレコードの集まりで
あるシーケンスセットと、それよりも一つ上のレベルの
インデックスレコードの集まりであるインデックスセッ
トからなる階層構造となっている。図中における各箱は
前述したCIを示している。
【0006】図8は、KSDSのデータセット構成図で
ある。シーケンスセットにおけるインデックスレコード
は、一つのCA対応に作成され、CAを構成する各CI
内のレコードの最高キーと、それに対応する各CIへの
ポインタ(垂直ポインタ)が格納されている。この最高
キーと垂直ポインタのペアをインデックスエントリとい
う。一方、インデックスセット内のインデックスレコー
ドは、一つ下位にある複数のインデックスレコードを管
理し、それらのインデックスレコード内の最高キーと、
それに対応する各インデックスレコードへのポインタ
(垂直ポインタ)を持っている。さらに、シーケンスセ
ット、インデックスセットとも、同レベルの次につづく
インデックスレコードへのポインタ(水平ポインタ)を
持っている。
【0007】キーによってレコードを検索する場合に
は、最上位のインデックスから垂直ポインタをたどって
シーケンスセットのCIを探す。このCIは一つのCA
内のレコードを指しているので、そのポインタをたどる
ことによってレコードを検索する。また、キー順処理の
場合は、シーケンスセットを使用し、CA内の最高キー
を処理した後、次のCAに移るとき、シーケンスセット
の水平ポインタをたどっ次のシーケンスセットを読み込
み、キー順にレコードをアクセスする。
【0008】上記したデータセット編成法は、レコード
の挿入、削除処理が頻繁に行われても、インデックスを
動的に再配置することで、データセットのどのレコード
に対しても平均的な処理効率が保証される(つまり、イ
ンデックスセットからシーケンスセットを経てレコード
に至るどのルートにおいても、そのアクセス時間にバラ
ツキがない)このような木構造インデックスをB+‐
treeという。
【0009】
【発明が解決しようとする課題】上述のような木構造イ
ンデックス(B+‐tree)を磁気ディスク装置等の二次
記憶装置上に構築する場合、通常、ノードの大きさと、
キーを格納する領域の大きさを固定長としている。この
ため、データ中に一つでも長いキーがある場合、ノード
内の各キー格納領域の大きさをそれに合わせて確保しな
ければならず、短いキーが格納される領域については、
その記憶領域が無駄になってしまうという問題があっ
た。
【0010】また、1ノード中に格納されるキーの数
は、ノード内に確保されるキー格納領域の大きさで決ま
り、一つでも長いキーがあると、1ノードに格納される
キー数は削減される。一方、インデックスの階層数は、
1ノードに格納されるキー数が減少すると、逆に増加す
る(一般にインデックスの階層数は1ノードのキー格納
エントリ数を底とした対数で表わされる)。一般に、イ
ンデックスを持つデータベースの検索においては、イン
デックスが最も頻繁にアクセスされるものである。そし
て、このインデックスへのアクセス回数の多少はインデ
ックスの階層数に依存するため、階層数が増加すると、
データベース検索の高速化の点で問題がある。
【0011】更に、1ノード中に格納されるキーの数
は、前述したように木の分岐数となるので、ノードの大
きさに対してキーの格納領域をあまり大きく確保するこ
とができず、このためノード長を越えるような長さのキ
ーを処理することができないという問題があった。
【0012】本発明の目的は、二次記憶装置上に多分岐
の木構造インデックスを構築する際、インデックスノー
ドのキー格納効率の向上を図り、その結果としてデータ
ベース検索の高速化も可能になるキーの記憶割り当て方
法を提供することにある。
【0013】
【課題を解決するための手段】前記目的を達成するため
に、本発明は、それぞれが垂直ポインタ部とキー部とか
らなる複数のキー格納部をインデックスノードとして、
二次記憶装置上に木構造インデックスを構築する際、イ
ンデックスノードのキー部には、キー先頭から所定長ま
でのキー部分(キー先頭部分)と、該キー先頭部分以外
の部分(キー後尾部分)を格納する領域の位置を示すポ
インタと、該キー先頭部分とキー後尾部分とからなるキ
ー全体の長さを示すキー長とを格納し、インデックスノ
ード以外の前記ポインタが示す領域に、キー後尾部分を
格納するようにしたことを特徴とする。
【0014】
【実施例】以下、本発明の一実施例を図面を用いて具体
的に説明する。図2は、本発明が適用されるデータ処理
装置のブロック構成図を示し、キーボード、マウス等か
らなる入力装置21、中央処理装置22Aと主記憶装置
22Bからなるデータ処理装置22、後述する入出力ブ
ロックが記憶されている二次記憶装置23、処理された
情報を表示するための表示装置24、処理された情報を
記憶印刷するためのプリンタ25から構成されている。
【0015】図1は、本発明に係る二次記憶装置23上
木構造インデックスを構築する際のキーの記憶割り当
てを説明する図である。B+‐treeのノード(VSAM
のコントロールインタバル,CI)14は、複数のキー
格納部からなり、それぞれがキー1やキー2と垂直ポイ
ンタ15からなり、各キーは、キー長16と、ポインタ
17とキー先頭部18からなっている。キー長16に
は、キー全体の長さが格納され、キー先頭部18は、ノ
ードに格納されたキーの先頭部分を表し、ノードに格納
されないキーの後尾部分は、ポインタ17で指示された
入出力ブロックに格納される。
【0016】入出力ブロックは、前(低位のアドレス)
からブロック管理領域10、キースロット領域11、空
き領域12、キー記憶領域13の順に配列構成されてい
る。ブロック管理領域10には、入出力ブロックの空き
領域12の長さを表す空き長さデータ記憶領域10A
と、空き領域12の先頭位置を表す空き先頭アドレス記
憶領域10Bと、空き最終位置を表す空き最終スロット
領域10Cからなっている。キースロット領域11に
は、ノードに全てを格納できない各キーについて、入出
力ブロック中に格納されるキー後尾部分のキーの長さ
(第1キー長、第2キー長等)とその格納位置(第1キ
ー位置、第2キー位置等)が記憶されている。この第1
キー長と第1キー位置を合わせた長さをスロット長とい
う。そして、キー記憶領域13には、入出力ブロックの
最後(高位のアドレス)から前の方に順に、それぞれキ
ー後尾部分の第1キー13A、第2キー13B,第3キ
ー13Cが記憶されている。このように、本実施例で
は、一つの入出力ブロック中には複数個のキーが格納さ
れる。
【0017】このように構成された本発明の入出力ブロ
ックは、以下のようにして管理される。すなわち、 (1)キーは入出力ブロックの最後から順に、可変長領
域に割り当てられて格納される。 (2)スロットは、オーバーフローしたキー後尾部分
キー長とキー位置(つまり入出力ブロックの先頭からの
オフセット)のペアからなり、各キーが管理される。 (3)スロットは入出力ブロックの先頭から確保され
る。 (4)レコードが削除されてそのレコードのキーを削除
する場合は、スロットは空きスロットとなり(空きスロ
ットマークを付ける)、キー記憶領域13は後につめら
れる。 (5)ノードからキーを指すために張るポインタ17
は、キーを直接指さずに、そのキーを管理しているスロ
ットを指しているので、削除処理によってキーを削除し
てもスロットを空きスロットにするだけで、キーを指す
ポインタを張り変える必要がない。 (6)B+‐treeは、一つの木の中に同じキーが複数回
現われるが、これらの同一のキーは1ヶ所に格納共用さ
れ、重複することはない。
【0018】図3は、本実施例のキー格納領域確保の処
理を表すフローチャートである。すなわち、この処理
は、B+‐treeに新しくレコードを挿入する際に、キー
の長さがノード内の固定長領域より長い場合に、キー格
納用のブロックに領域を確保して、ノードに格納できな
いオーバーフローしたキーの後尾部分を該領域中に入れ
る処理である。
【0019】ブロック管理領域10のデータ記憶領域1
0Aに示される空き長さが、“オーバーフロー部分のキ
ー長+スロット長”以上あるか否かをステップ301で
判断し、“オーバーフロー部分のキー長+スロット長”
以上ある場合は、ステップ302に、そうでない場合
は、ステップ305に進む。“オーバーフロー部分のキ
ー長+スロット長”以上ある場合は、ステップ302
で、空きスロットマークの付いたスロットが調べられ、
空きスロットマークの付いたスロットがないときには、
ブロック管理領域10の最終スロット領域10Cを変更
してスロットを確保し、次いでステップ303で、ブロ
ック管理領域10の空き先頭アドレス記憶領域10Bを
変更して、キー格納領域を確保し、ステップ304で入
出力ブロックの空き領域12を変更する。
【0020】ステップ301で、ブロック管理領域10
のデータ記憶領域10Aに示される空き長さが、“オー
バーフロー部分のキー長+スロット長”に満たない場合
は、ステップ305で、他の入出力ブロックを生成し
て、前記したステップ301からステップ304と同様
にしてキー格納領域を確保する。
【0021】図4は、本実施例のキー格納領域解放処理
のフローチャートである。レコードが削除されてそのレ
コードのキーを削除するときは、ステップ401で削除
されるキー(例えば、図1の第2キーとする)より前に
あるキー(図1の第3キー)を全て後に移動することに
よって、当該キーを削除し、ステップ402に進む。ス
テップ402では、移動したキーを管理するスロットの
キー位置を変更し、次いでステップ403では、空き領
域12の長さを表す空き長さデータ記憶領域10Aの長
さを、削除したオーバーフロー部分のキー長分だけ増加
し、ステップ404では、削除されたキーのスロットに
空きスロットマークを付けて処理を終了する。
【0022】
【発明の効果】本発明のキーの記憶割り当て方法によれ
ば、次のような効果が得られる。 (1) 長さが異なるキーをインデックスノードへ高効率
に格納でき、インデックスノード内に空き領域が生じる
のを防止できると同時に、インデックス階層数が削減で
きるため、インデックスノードのアクセス回数が減少
し、データベース検索の高速化が実現する。 (2) キーを任意の位置で分割し、ノード外の領域に動
作することにより、可変長キーに対して、システムに最
適な分割キー長をもつインデックスを作成できる。ま
た、インデックスノードに格納できないような長いキー
が存在する場合でも、インデックスを作成できるため、
インデックスノード長をシステムに最適な長さとするこ
とができる。 (3) キー先頭部は必ずインデックスノード内にあるた
め、このインデックスノード内のキー先頭部だけを参照
することによって検索することも可能である。このた
め、二次記憶アクセスにおけるデータベース検索の高速
化を更に図ることができる。 (4) 任意の1ケのキーKjが、あるインデックスノー
ド内で最高キーの場合、当該ノードから最下位置までの
各階層に必ずキーKjが1ケ現れるが、これらKj出現
ノードにおいても「キーKj分割後後尾部分長×キーK
j出現回数」すなわち「全キーについて、Σ(キーKj
分割後後尾部分長×キーKj出現回数)」の領域削減が
でき、さらにインデックスノードへの格納効率向上が図
れる。
【図面の簡単な説明】
【図1】本発明に係るキーの記憶割り当て方法を説明す
図である。
【図2】本発明が適用されるデータ処理装置のブロック
構成図である。
【図3】本実施例のキー格納領域確保処理のフローチャ
ートである。
【図4】本実施例のキー格納領域解放処理のフローチャ
ートである。
【図5】VSAMにおけるファイル構成図である。
【図6】木構造の例を示す図である。
【図7】VSAMにおける木構造インデックスを示す図
である。
【図8】KSDSのデータセット構成図である。
【符号の説明】
10 ブロック管理領域 11 キースロット領域 12 空き領域 13 キー記憶領域 14 B+‐treeのノード 15 垂直ポインタ 16 キー長 17 ポインタ 18 キー先頭部13A、13B、13C キー後尾部
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭60−24657(JP,A) 特開 昭60−129852(JP,A) 特開 平1−315843(JP,A) 特開 平2−161541(JP,A) 特開 平2−216552(JP,A) 特開 平3−44746(JP,A) 特開 平3−100742(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 12/00

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】 それぞれが垂直ポインタ部とキー部とか
    らなる複数のキー格納部をインデックスノードとして、
    二次記憶装置上に木構造インデックスを構築する際のキ
    ーの記憶割り当て方法において、 前記インデックスノードのキー部に、キーの先頭から所
    定長までのキー部分であるキー先頭部分と、該キー先頭
    部分以外の部分であるキー後尾部分を格納する領域の位
    置を示すポインタと、前記キー先頭部分と前記キー後尾
    部分とからなるキー全体の長さを示すキー長とを格納
    し、 前記ポインタが示す領域に、前記キー後尾部分を格納す
    る、 ことを特徴とするキーの記憶割り当て方法。
JP3267232A 1991-09-18 1991-09-18 キーの記憶割り当て方法 Expired - Fee Related JP2874810B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3267232A JP2874810B2 (ja) 1991-09-18 1991-09-18 キーの記憶割り当て方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3267232A JP2874810B2 (ja) 1991-09-18 1991-09-18 キーの記憶割り当て方法

Publications (2)

Publication Number Publication Date
JPH0581101A JPH0581101A (ja) 1993-04-02
JP2874810B2 true JP2874810B2 (ja) 1999-03-24

Family

ID=17441977

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3267232A Expired - Fee Related JP2874810B2 (ja) 1991-09-18 1991-09-18 キーの記憶割り当て方法

Country Status (1)

Country Link
JP (1) JP2874810B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000037515A (ko) * 1998-08-19 2000-07-05 윤종용 히스토리 관리용 비플러스 트리 구성 방법
US10579680B2 (en) * 2016-05-13 2020-03-03 Tibco Software Inc. Using a B-tree to store graph information in a database

Also Published As

Publication number Publication date
JPH0581101A (ja) 1993-04-02

Similar Documents

Publication Publication Date Title
US5752243A (en) Computer method and storage structure for storing and accessing multidimensional data
US5687361A (en) System for managing and accessing a dynamically expanding computer database
JP3024619B2 (ja) ファイル管理方法
JPH05189490A (ja) 関数結果をセーブし検索する方法と装置
JPH08129551A (ja) ハッシュ方式
JP6006740B2 (ja) インデックス管理装置
JP2874810B2 (ja) キーの記憶割り当て方法
JP2675958B2 (ja) 情報検索用計算機システム及びその記憶装置の動作方法
JP4306281B2 (ja) リレーショナルデータベースにおける階層型データのマッピングプログラム、装置、および方法
JP2679761B2 (ja) データ管理システム
JPS62287350A (ja) インデツクス一括更新方式
JP3578501B2 (ja) 文書検索方法及び装置
JP2615046B2 (ja) レコード追加処理方法
JPH01145720A (ja) B木のノード管理方式
JPS593549A (ja) フアイル管理方式
JPH0833899B2 (ja) 索引更新方式
JPS595372A (ja) フアイル処理システム
JPH08328946A (ja) 2次記憶領域の管理方法
KR20030044498A (ko) 주기억 장치 데이터베이스 관리 시스템의 자료 구조와블록 할당 및 레코드 검색 방법
JPH07152623A (ja) ファイルシステムおよびそのアクセス方法
JPS61278932A (ja) デ−タ追加処理方法
JPH0557624B2 (ja)
JPH02222044A (ja) データ処理装置
JPS62239249A (ja) フアイル管理装置
JPS63239540A (ja) 記憶媒体におけるデ−タ管理方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees