JPS59146339A - 情報検索方式 - Google Patents
情報検索方式Info
- Publication number
- JPS59146339A JPS59146339A JP58018824A JP1882483A JPS59146339A JP S59146339 A JPS59146339 A JP S59146339A JP 58018824 A JP58018824 A JP 58018824A JP 1882483 A JP1882483 A JP 1882483A JP S59146339 A JPS59146339 A JP S59146339A
- Authority
- JP
- Japan
- Prior art keywords
- node
- key
- n0de
- parent
- entry
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔発明の利用分野〕
本発明は、演算処理装置、主記憶装置、補助記憶装置お
よび入出力装置からなる電子計算機システムにおける平
衡木を用いた情報検索機構に係υ、特に情報の追加およ
び削除を高速に行える情報検索方式。
よび入出力装置からなる電子計算機システムにおける平
衡木を用いた情報検索機構に係υ、特に情報の追加およ
び削除を高速に行える情報検索方式。
従来よりディジタル型の電子計算機システムにおいては
、キーに対応する情報を検索するために平衡木が用いら
れている。その代表的なものがB−’f) re eと
呼ばれているものでろ沙、種々のB −Treeの変形
も考えられている。B−T r e eについては、D
o Comer:”The Ul)iquitou3
33−’pree’AcM Computing 5u
rveys。
、キーに対応する情報を検索するために平衡木が用いら
れている。その代表的なものがB−’f) re eと
呼ばれているものでろ沙、種々のB −Treeの変形
も考えられている。B−T r e eについては、D
o Comer:”The Ul)iquitou3
33−’pree’AcM Computing 5u
rveys。
VOl、 11. No、 2. pp121〜138
を参照のこと。
を参照のこと。
B−Treeの変型の代表的なものに13”−Tree
があシ、広く用いられている。
があシ、広く用いられている。
今、B”−’l’reeのエントリが満杯のNodeに
ヤ−を追加することを考えてみる。この場合、新しいN
odeを確保して満杯のN □ d eの半分のキーを
新しいN Od eに移すことにより、キーを追加する
ことができ、通常の処理を5plit処理と呼んでいる
。5plii処理を行う場合には対象N0deの親のN
Od eも更新することが必要である。
ヤ−を追加することを考えてみる。この場合、新しいN
odeを確保して満杯のN □ d eの半分のキーを
新しいN Od eに移すことにより、キーを追加する
ことができ、通常の処理を5plit処理と呼んでいる
。5plii処理を行う場合には対象N0deの親のN
Od eも更新することが必要である。
一方、B” −’l’reeにおいてはNode内ツエ
フッエントリ位数すなわちNodeに入り得る最大エン
トリ数の半分と最大エントリ数の間に入るように制御す
る。このためエントリを削除することによジエントリの
数が位数以下になる場合には隣りのNodeからエント
リを融通したシ、あるいは隣りのN0deを併合する処
理が必要で、この時5plit処理と同じく親N Od
eの更新を行う。
フッエントリ位数すなわちNodeに入り得る最大エン
トリ数の半分と最大エントリ数の間に入るように制御す
る。このためエントリを削除することによジエントリの
数が位数以下になる場合には隣りのNodeからエント
リを融通したシ、あるいは隣りのN0deを併合する処
理が必要で、この時5plit処理と同じく親N Od
eの更新を行う。
従来、親のN Od eを更新する時には、R,oot
N Od eからたどりなおして、該当N□aeを指す
ポインタを含むNodeを探していた。通常水を磁気デ
ィスク装置(以外ディスクと略す)等の補助記憶装置上
に記憶しているので、R,oot Nodeからたど
りなおすのに補助記憶装置へのアクセスが必要となり、
性能上問題であった。
N Od eからたどりなおして、該当N□aeを指す
ポインタを含むNodeを探していた。通常水を磁気デ
ィスク装置(以外ディスクと略す)等の補助記憶装置上
に記憶しているので、R,oot Nodeからたど
りなおすのに補助記憶装置へのアクセスが必要となり、
性能上問題であった。
本発明の目的はB”−Tree等のようにキーの追加や
削除を行なう時に親のN0deまで、更新処理が必要と
なる可能性がある平衡木において、親N Od eを探
す処理を高速に行えるようにして、キーの追加や削除処
理を高速化することにある。
削除を行なう時に親のN0deまで、更新処理が必要と
なる可能性がある平衡木において、親N Od eを探
す処理を高速に行えるようにして、キーの追加や削除処
理を高速化することにある。
13”−Tree等の平衡木では、キーの追加あるいは
削除を行うに先立って、該当キーの入るべきあるいは入
っているLeaf Node まで、Rootからたど
る処理を行う必要であり、この時に、Root No
de から該当Le af Node ’!JT(7
)NOde番号(Nodeを職別するだめの番号)をR
,ootから順に主記憶装置上のテーブルに記憶し、親
N□deのNode番号が必要になった場合には、この
テーブルをサーチして、カ(当Node番号を検索する
。このテーブルの該当Node番号を含むケースの1つ
前に記憶されているN Od e番号が親N0deのN
□de番号である。このようにして、高速に親No d
eを知ることができる。
削除を行うに先立って、該当キーの入るべきあるいは入
っているLeaf Node まで、Rootからたど
る処理を行う必要であり、この時に、Root No
de から該当Le af Node ’!JT(7
)NOde番号(Nodeを職別するだめの番号)をR
,ootから順に主記憶装置上のテーブルに記憶し、親
N□deのNode番号が必要になった場合には、この
テーブルをサーチして、カ(当Node番号を検索する
。このテーブルの該当Node番号を含むケースの1つ
前に記憶されているN Od e番号が親N0deのN
□de番号である。このようにして、高速に親No d
eを知ることができる。
以下、本発明の一実施例を第1図〜第11図により説明
する。第1図に本発明の全体の構成を示す。lは磁気デ
ィスク装置(以後ディスクと略す)、2は13”−Tr
eeからなるインデックスファイル、21はインデック
スファイル内のNodeの使用・未使用をビットのon
−offで管理するビットマツプ、22はB”−Tre
eの本体を含む部分である。201〜208ばB” −
T r e eを構成するNodeで、201は1oo
t Node 、205〜208はLeaf No
deである。3はファイルラベルエリアで31〜32は
ファイルラベルである。
する。第1図に本発明の全体の構成を示す。lは磁気デ
ィスク装置(以後ディスクと略す)、2は13”−Tr
eeからなるインデックスファイル、21はインデック
スファイル内のNodeの使用・未使用をビットのon
−offで管理するビットマツプ、22はB”−Tre
eの本体を含む部分である。201〜208ばB” −
T r e eを構成するNodeで、201は1oo
t Node 、205〜208はLeaf No
deである。3はファイルラベルエリアで31〜32は
ファイルラベルである。
ファイルラベルにi−j:、311にファイルのセクタ
アドレス、312にピットマツプの管理情報、313に
Root NodeのNode4’号(すなわち、B”
−Tr e e本体22のエリアの先頭から順にN0d
eにつけられた番号)、314にキー長および315に
レコードサイズを含む。
アドレス、312にピットマツプの管理情報、313に
Root NodeのNode4’号(すなわち、B”
−Tr e e本体22のエリアの先頭から順にN0d
eにつけられた番号)、314にキー長および315に
レコードサイズを含む。
4は主メモリで、5ばB” −T r e eを制御す
るシステムのプログラム群で、51はエントリを追加す
る、52はエントリを削除する、53はエントリを検索
するプログラムである。54.55は、51.52のプ
ログラムが1吏用するサフ゛ルーチンで、後に述べるN
’N4.’l[1111つたN Od e (7J)
N Od e番号を登録するプログラム、55は指定さ
れたN Od eの親のNode番号を得るプログラム
である。
るシステムのプログラム群で、51はエントリを追加す
る、52はエントリを削除する、53はエントリを検索
するプログラムである。54.55は、51.52のプ
ログラムが1吏用するサフ゛ルーチンで、後に述べるN
’N4.’l[1111つたN Od e (7J)
N Od e番号を登録するプログラム、55は指定さ
れたN Od eの親のNode番号を得るプログラム
である。
以降、54をNode番号登録プログラム、55を親N
0de番号検索プログラムを呼ぶ。
0de番号検索プログラムを呼ぶ。
なお、今まで木にキーを追加あるいは削除すると表現1
〜たが、正確には、キーとレコードからなるエントリを
追加あるいは削除すると表現するのが正しく、以後、後
者のように記述する。8はディスク上のN’odeやビ
ットマツプを読むだめのバッファである。6はユーザプ
ログラムを含むエリアで、61はユーザプログラム本体
で B+−Tree全市11@するプログラム51〜5
3を呼ぶ。
〜たが、正確には、キーとレコードからなるエントリを
追加あるいは削除すると表現するのが正しく、以後、後
者のように記述する。8はディスク上のN’odeやビ
ットマツプを読むだめのバッファである。6はユーザプ
ログラムを含むエリアで、61はユーザプログラム本体
で B+−Tree全市11@するプログラム51〜5
3を呼ぶ。
62は検索・追加あるいは削除するキーを、63は追加
するレコードをそれぞれ設定するエリアで、これらのア
ドレスをB” −T r e ei131) @プログ
ラムに渡すことにより所望の処理を行うことができる。
するレコードをそれぞれ設定するエリアで、これらのア
ドレスをB” −T r e ei131) @プログ
ラムに渡すことにより所望の処理を行うことができる。
7はNNLT(Node Numl)Cr Li5t
)と呼んでいるテーブルで、B+−TreeをRoot
’Nodeから対象キーを含むLeafNOdeまで
辿った時のN□de番号を先頭から順に記憶する。
)と呼んでいるテーブルで、B+−TreeをRoot
’Nodeから対象キーを含むLeafNOdeまで
辿った時のN□de番号を先頭から順に記憶する。
64〜68には33”−’l”ree制御プログラムの
処理の中間情報を記憶する。64には追加するエントリ
のキーを記憶する。65には同じく追加するエン1すの
レコード本体あるいは子N□deのN□de番号を記憶
している。66にはエン) IJ追加対象N0deのN
ode番号を記憶する。
処理の中間情報を記憶する。64には追加するエントリ
のキーを記憶する。65には同じく追加するエン1すの
レコード本体あるいは子N□deのN□de番号を記憶
している。66にはエン) IJ追加対象N0deのN
ode番号を記憶する。
67には、削除するエントリのN□de内の相対エント
り番号を、68にはエントリ削除対象・N(+deのN
□de番号をそれぞれ記憶する。
り番号を、68にはエントリ削除対象・N(+deのN
□de番号をそれぞれ記憶する。
第2図にNodeの詳細な構造を示す。9はNodeの
全体で、Root Leaf 6るいはこれら以外の
N□deであるかの如何にかかわらず長さば1セクタ固
定とする。91はNodeの制御情報を含むエリアで固
定長である。92〜93は二ントりである。エントリ内
には921で示されるキーと、922で示されるVコー
ドfLeaf Node時)あるいは下位N Od
eのNc) d e番号(LeafN□de以外の時)
を含む。
全体で、Root Leaf 6るいはこれら以外の
N□deであるかの如何にかかわらず長さば1セクタ固
定とする。91はNodeの制御情報を含むエリアで固
定長である。92〜93は二ントりである。エントリ内
には921で示されるキーと、922で示されるVコー
ドfLeaf Node時)あるいは下位N Od
eのNc) d e番号(LeafN□de以外の時)
を含む。
911には右隣りのN(+deのN Od e 9号を
、912にはNode内に含まれるエントリの数、91
3にばRoot Nodeか否かを表示するフラグお
よび914にはi、e3f Nodeか否かを表現する
フラグをそれぞれ記憶している。
、912にはNode内に含まれるエントリの数、91
3にばRoot Nodeか否かを表示するフラグお
よび914にはi、e3f Nodeか否かを表現する
フラグをそれぞれ記憶している。
Node内のエントリの数は、N0deに入り得る最大
のエントリ数とこの値の1/2である位数との間に入る
ように制御される。
のエントリ数とこの値の1/2である位数との間に入る
ように制御される。
以上の構成に関する説明を基にして、以下エントリの追
加および削除α理を述べ、本方式を詳細に説明するとと
もに、本方式の有効性について述べる。
加および削除α理を述べ、本方式を詳細に説明するとと
もに、本方式の有効性について述べる。
第3図に二ントりを追加するプログラムのフローチャー
トを示す。このフローチャートを第4図および第5図に
示したB”−Treeの例に基づいて説明する。
トを示す。このフローチャートを第4図および第5図に
示したB”−Treeの例に基づいて説明する。
まず第4図のAに示したB“−Treeにキーの値が2
5のエントリを追加することを考える。ここで第4図の
Aは追加前のB”−TreeXBは追加後のB”−Tr
ee、 211ば[Loot Node テ、Node
番号、1は、212〜215はLeaf Node
で、Node番号はそれぞれj、に、t、mである。第
3図の101にて、第1図の7で示したNNLTの全ケ
ースをゼロクリアする。第3図の102にで、第1の3
13からR,oot NodeのNode番号、第4図
の例ではiを得る。第3図の103にて、ファイル管理
にて通常行われているように第1図の31にて示したフ
ァイルラベル上の情報に基づいて、Node番号iのデ
ィスク上のセクタアドレスを求め、このN□deを第1
図の8のシステムバッファに読む。第3図の104にて
、読込んたNode(7)Node番号iをNNLTに
登録する。
5のエントリを追加することを考える。ここで第4図の
Aは追加前のB”−TreeXBは追加後のB”−Tr
ee、 211ば[Loot Node テ、Node
番号、1は、212〜215はLeaf Node
で、Node番号はそれぞれj、に、t、mである。第
3図の101にて、第1図の7で示したNNLTの全ケ
ースをゼロクリアする。第3図の102にで、第1の3
13からR,oot NodeのNode番号、第4図
の例ではiを得る。第3図の103にて、ファイル管理
にて通常行われているように第1図の31にて示したフ
ァイルラベル上の情報に基づいて、Node番号iのデ
ィスク上のセクタアドレスを求め、このN□deを第1
図の8のシステムバッファに読む。第3図の104にて
、読込んたNode(7)Node番号iをNNLTに
登録する。
この処理は第1図の54で示したNode番号登録プロ
グラムによる。NNLTの詳細とN Od e番号登録
プログラムを第9図および第10図に示す。
グラムによる。NNLTの詳細とN Od e番号登録
プログラムを第9図および第10図に示す。
第9図にて、7ばNNLTで全体で、各々のケース71
〜77は4バイトで構成され、71から順にケース番号
が振られる。71にばNNLTに登録されているN O
d eの数を記1意する。72〜77には、)3”−’
l:’reeをR,oot Nodeから対象キーヲ含
むLeaf N0deまで辿った時のN Od e番号
が先頭から順に入る。登録できる最大のN□ d eO
数はNNLT内のケース数によるが、この値は想定でき
るB+−Treeの最大の段数分だけあればよく、ここ
では、ファイルの最大の大きさから15ケース固定とし
ている。
〜77は4バイトで構成され、71から順にケース番号
が振られる。71にばNNLTに登録されているN O
d eの数を記1意する。72〜77には、)3”−’
l:’reeをR,oot Nodeから対象キーヲ含
むLeaf N0deまで辿った時のN Od e番号
が先頭から順に入る。登録できる最大のN□ d eO
数はNNLT内のケース数によるが、この値は想定でき
るB+−Treeの最大の段数分だけあればよく、ここ
では、ファイルの最大の大きさから15ケース固定とし
ている。
第10図にNNLT登録プログラムのフローチャートを
示す。701にて、NNLTの登録されているN0dC
数(第9図の71に記憶)に1を加える。
示す。701にて、NNLTの登録されているN0dC
数(第9図の71に記憶)に1を加える。
この場合、最初0であったので、701の処理終了後、
登録されているN0de数は1となる。
登録されているN0de数は1となる。
702では、NNLT元頭アドレスに登録NOd e数
と1ケース当シのバイト数4を掛けたものを加え、登録
すべきNNLTのケースのアドレスを得る。
と1ケース当シのバイト数4を掛けたものを加え、登録
すべきNNLTのケースのアドレスを得る。
この場合、第9図の72で示したケースのアドレスが計
算される。
算される。
703にて、702でアドレスを計算したケースに指定
N0de番号を設定する。この場合、Root Nod
e番号iが、第9図の72のケースに設定される。
N0de番号を設定する。この場合、Root Nod
e番号iが、第9図の72のケースに設定される。
第3図の105にて読込んだNodeのLeafN□d
e表示(第2図の914で示す。)を参照して、Lea
f Node T:hるか判定する。この場合、LC
afNodeでないので、第3図の106にジャンプす
る。106では、読込んだNode内のエントリのキー
を第1エントリから順に比較して最初に追加するエント
リのキーの値を越えるエントリを見つける。この場合キ
ーの値が30の第1エントリが咳当する。このエントリ
のポインタ値(一般には第2図の922にて示される。
e表示(第2図の914で示す。)を参照して、Lea
f Node T:hるか判定する。この場合、LC
afNodeでないので、第3図の106にジャンプす
る。106では、読込んだNode内のエントリのキー
を第1エントリから順に比較して最初に追加するエント
リのキーの値を越えるエントリを見つける。この場合キ
ーの値が30の第1エントリが咳当する。このエントリ
のポインタ値(一般には第2図の922にて示される。
)から下位のN Od eのN□d、e番号、この場合
Jを得る。
Jを得る。
この後第3図の103へ実り、下位のNodeすなわち
Node番号JのN Od eをシステムノ(ソファに
読み、104にて、Node番号登録プログラムをFF
[読込ンだN Od e t7) N Od e番号j
を、NNLTに登録する。この場合、第9図の73のケ
ースにjが設定され、71の登録N0de数ば2となる
。
Node番号JのN Od eをシステムノ(ソファに
読み、104にて、Node番号登録プログラムをFF
[読込ンだN Od e t7) N Od e番号j
を、NNLTに登録する。この場合、第9図の73のケ
ースにjが設定され、71の登録N0de数ば2となる
。
105においては、Lear Nodeであるので、1
07へ進み、ここで、第1図の64〜66で示すワーク
にそれぞれ、追加するエントリのキー((すなわち25
)、ンコードおよびエントリ追加対象N0deのNod
e番号(すなわちj)を設定する。このように131〜
137においては、追加するエントリが入るべきLea
f Node iで辿るとともに、NNLT K R
,o o tからLeaf tで辿つたNode番号を
登録し、かつワーク上に追加するエントリに関する情報
を設定する。NNLTは第4図のCのようになる。
07へ進み、ここで、第1図の64〜66で示すワーク
にそれぞれ、追加するエントリのキー((すなわち25
)、ンコードおよびエントリ追加対象N0deのNod
e番号(すなわちj)を設定する。このように131〜
137においては、追加するエントリが入るべきLea
f Node iで辿るとともに、NNLT K R
,o o tからLeaf tで辿つたNode番号を
登録し、かつワーク上に追加するエントリに関する情報
を設定する。NNLTは第4図のCのようになる。
第3図の108にて、現在にN0de内に入っているエ
ントリ数(第2図の912に記憶)とN0deに入り得
るエントリの数を比較する。
ントリ数(第2図の912に記憶)とN0deに入り得
るエントリの数を比較する。
N□deに入り得るエントリの数は、エントリ長すなわ
ち、Leaf N□de時はキー長とンコード長を加
えた値、Leaf以外の時はキー長とポインタ値を入れ
るエリアの長さ4バイト固定を加えた値で、N0deの
制(財)情報を含む部分の長さく固定値)を1余いた1
直を割ることにより求める。第4図のAの場合、現在の
エントリ数が4で、N0deに入り得るエン) l)の
数が4であるので第5図の108の判定では、109へ
進む。109においては、N0deの制御情報の内のR
,oot表示(第2図の913で示す。)を参照して、
追加対象N0deがRoot Nodeであるかを判定
する。この場合R,ootでないので110へ進む。)
ここでは、第1図の21で示されるビットマツプを参照
して空Nodeを得る。この場合、第4図のBの216
で示したN0deが新しく確保されたN0de″′Cあ
り、Node番号がnである。
ち、Leaf N□de時はキー長とンコード長を加
えた値、Leaf以外の時はキー長とポインタ値を入れ
るエリアの長さ4バイト固定を加えた値で、N0deの
制(財)情報を含む部分の長さく固定値)を1余いた1
直を割ることにより求める。第4図のAの場合、現在の
エントリ数が4で、N0deに入り得るエン) l)の
数が4であるので第5図の108の判定では、109へ
進む。109においては、N0deの制御情報の内のR
,oot表示(第2図の913で示す。)を参照して、
追加対象N0deがRoot Nodeであるかを判定
する。この場合R,ootでないので110へ進む。)
ここでは、第1図の21で示されるビットマツプを参照
して空Nodeを得る。この場合、第4図のBの216
で示したN0deが新しく確保されたN0de″′Cあ
り、Node番号がnである。
第3図の111においては、エントリ追加対象N Od
eの後半のエントリを、新しく確保したN Od e
へ移す。その後追加するエントリのキーと前半のエント
リ入っているN0deの最大キーとを比転して、追加す
るエントリの方が大きい場合には新しく確保したN O
d eにエントリを追加する。
eの後半のエントリを、新しく確保したN Od e
へ移す。その後追加するエントリのキーと前半のエント
リ入っているN0deの最大キーとを比転して、追加す
るエントリの方が大きい場合には新しく確保したN O
d eにエントリを追加する。
もし、追加するエントリの方が小さい場合には、前半の
エントリが入っているN Od eに追加する。
エントリが入っているN Od eに追加する。
この場合、第4図のBの216で示したN0deに、エ
ントリが追加される。この処理を5plit処理と呼ぶ
。
ントリが追加される。この処理を5plit処理と呼ぶ
。
第3図の113においては、親N0ae番号検索プログ
ラムを呼び5plitを起したN0deの親のN0de
のN’ocie番号をNNLT7から求める。親Nod
e番号検索プログラムのフローチャートを第11図に示
す。このフローチャートをNNLTが第4図のCに示し
たような一場合を例にとって説明する。ここでエントリ
追加対象NodeのNode番号がJ′?1″ある。
ラムを呼び5plitを起したN0deの親のN0de
のN’ocie番号をNNLT7から求める。親Nod
e番号検索プログラムのフローチャートを第11図に示
す。このフローチャートをNNLTが第4図のCに示し
たような一場合を例にとって説明する。ここでエントリ
追加対象NodeのNode番号がJ′?1″ある。
第11回の801にて、カウンタ■(主メモリ上のエリ
アでもレンスタでもよい)にNNLTのN□ d e登
録数、この場合2を設定する。802にて、■+1番目
のケース(この場合第4図のCの73)のアドレスを計
算し、803にて、802にてアドレスを計算したケー
スに記憶されているN0cieA’号(この場合J)と
指定されたN Od e番+3′(この場合J)とを比
較する。この場合一致するので805ヘジャンブl、、
NNLTの工番目のケース(この場合、第4図のCの7
2で示すケース)から親NodeのNode番号(この
場合i)を得ることができる。もし、第11図の803
で一致し々い場合には804へ進み、カウンタエを1だ
け減算し、80.2ヘジヤンプし、指定Node番号を
記憶しているケースの検索処理を続行する。このように
して指定Nodeの親のN Od eのNode番号を
得ることができる。
アでもレンスタでもよい)にNNLTのN□ d e登
録数、この場合2を設定する。802にて、■+1番目
のケース(この場合第4図のCの73)のアドレスを計
算し、803にて、802にてアドレスを計算したケー
スに記憶されているN0cieA’号(この場合J)と
指定されたN Od e番+3′(この場合J)とを比
較する。この場合一致するので805ヘジャンブl、、
NNLTの工番目のケース(この場合、第4図のCの7
2で示すケース)から親NodeのNode番号(この
場合i)を得ることができる。もし、第11図の803
で一致し々い場合には804へ進み、カウンタエを1だ
け減算し、80.2ヘジヤンプし、指定Node番号を
記憶しているケースの検索処理を続行する。このように
して指定Nodeの親のN Od eのNode番号を
得ることができる。
第3図の114においては、113で得たN o d
e番号にて親Nodeを読み、5plitを起したN
Od eをポイントしていた親N0de内のエントリの
ポインタを、5plitのために追加したN0deのN
ode番号に変更する。すなわち、第4図のAにて21
2のNodeをポイントしていた親1’Jode 21
.1のエントリのポインタの値Jを第4図のBのように
nに変更する。
e番号にて親Nodeを読み、5plitを起したN
Od eをポイントしていた親N0de内のエントリの
ポインタを、5plitのために追加したN0deのN
ode番号に変更する。すなわち、第4図のAにて21
2のNodeをポイントしていた親1’Jode 21
.1のエントリのポインタの値Jを第4図のBのように
nに変更する。
第3図の115において、追加対象N0deをポイント
するエントリを親N0deに追加するための追加エント
リ情報を作成する。この場合、キーの値としては15、
ポインタ値はj1追加対象N0de番号はiである。こ
の処理後、108へ戻り、゛再びN0deへのエントリ
を追加する処理を開始する。この場合、追加対象N□d
eが満杯なので、109へ進む。この時の追加対象N0
deはR,ootNOdeであるので、117ヘジヤン
プする。117にて、第4図のBの217で示す5pl
it処理を行うだめのN0de用と218で示す新しい
RootN Od e用のN Od eを2ケ確保する
。118,119は前に述べた5plit処理である。
するエントリを親N0deに追加するための追加エント
リ情報を作成する。この場合、キーの値としては15、
ポインタ値はj1追加対象N0de番号はiである。こ
の処理後、108へ戻り、゛再びN0deへのエントリ
を追加する処理を開始する。この場合、追加対象N□d
eが満杯なので、109へ進む。この時の追加対象N0
deはR,ootNOdeであるので、117ヘジヤン
プする。117にて、第4図のBの217で示す5pl
it処理を行うだめのN0de用と218で示す新しい
RootN Od e用のN Od eを2ケ確保する
。118,119は前に述べた5plit処理である。
120においては今までのRoot N0deがそう
でなくなるので、第4図のBの211で示すN0deの
Root表示をクリアする。第5図の121においては
、5plit (〜だ2つのN0deを指す2個のエン
トリを含む新しいRoot Nodeを作る。122
にて、ファイルラベル内のR,oot Nodeへの
ポインタ(第1図の313で示す。)を新しいRoot
Nodeへ更新する。この結果、B” −T r e
eの形は図4のBのようになる。
でなくなるので、第4図のBの211で示すN0deの
Root表示をクリアする。第5図の121においては
、5plit (〜だ2つのN0deを指す2個のエン
トリを含む新しいRoot Nodeを作る。122
にて、ファイルラベル内のR,oot Nodeへの
ポインタ(第1図の313で示す。)を新しいRoot
Nodeへ更新する。この結果、B” −T r e
eの形は図4のBのようになる。
このように5plit処理にて、親N□deを変更する
ことが必要となるが、NNLTにRootからLeaf
Nodeまで辿った時に、これらのNode番号を記
憶しておくことにより、再びRootN Od eから
辿りなおさずに親N Od e番号を得ることができ、
高速にエントリの追加処理を行うことができる。
ことが必要となるが、NNLTにRootからLeaf
Nodeまで辿った時に、これらのNode番号を記
憶しておくことにより、再びRootN Od eから
辿りなおさずに親N Od e番号を得ることができ、
高速にエントリの追加処理を行うことができる。
Spl+を処理が不要な場合を第5図を用いて説明する
。第5図のAのf3”−’I’reeにキーの値が15
のエントリを追加する場合を考える。第3図の101〜
107にて、Rootからエントリを追加する対象のL
eaf Node iで辿り、これらのNode番号を
NNLTに登録し、追加エンl−IJ情報をワーク上に
設定する。第3図の108にて、N Od e内のエン
トリの数が3個で、満杯でないので、116へ進み、エ
ントリを追加して処理を終了する。この結果B”−Tl
eeは、第5図のBのようになる。この場合には親N0
deの更新は不要である。
。第5図のAのf3”−’I’reeにキーの値が15
のエントリを追加する場合を考える。第3図の101〜
107にて、Rootからエントリを追加する対象のL
eaf Node iで辿り、これらのNode番号を
NNLTに登録し、追加エンl−IJ情報をワーク上に
設定する。第3図の108にて、N Od e内のエン
トリの数が3個で、満杯でないので、116へ進み、エ
ントリを追加して処理を終了する。この結果B”−Tl
eeは、第5図のBのようになる。この場合には親N0
deの更新は不要である。
第6〜8図を用いてエントリ削除処理を説明する。まず
第7図のAのB”−Treeからキーの値が10のエン
トリを削除することを考える。Aはエン)・りを削除す
る前のB”−Tree、、 )3は削除後のB”−4:
’reeである。第7図にて、501はRootNod
e、 502 、503 、504および505ばLe
af Nodeであり、Node番号はそレソレ、i、
j、に、Aおよびmである。
第7図のAのB”−Treeからキーの値が10のエン
トリを削除することを考える。Aはエン)・りを削除す
る前のB”−Tree、、 )3は削除後のB”−4:
’reeである。第7図にて、501はRootNod
e、 502 、503 、504および505ばLe
af Nodeであり、Node番号はそレソレ、i、
j、に、Aおよびmである。
第6図にて、401〜403にて、エントリの追加処理
と同様にRoot Node から削除エントリを含
むLeaf Nodeまで辿シ、辿ったN□、deのN
ode番号をNNLTに登録する。この結果NNL’l
tj:第7図のCのようになる。403にて、第1図の
67に削除エントリ情報すなわち削除するエントリのN
0de内相対工ントリ番号および68に削除対象N O
d eのNode番号を設定する。
と同様にRoot Node から削除エントリを含
むLeaf Nodeまで辿シ、辿ったN□、deのN
ode番号をNNLTに登録する。この結果NNL’l
tj:第7図のCのようになる。403にて、第1図の
67に削除エントリ情報すなわち削除するエントリのN
0de内相対工ントリ番号および68に削除対象N O
d eのNode番号を設定する。
第6図の404にて、削除対象N0de内のエントリ数
と位数すなわち、N0de内に入り得るエントリの数の
量大値の1/2とを比べる。最大エントリ数はエントリ
の追加の所で述べた方法により求める。この場合のNo
de内のエントリ数が2で位数と同じであるので、40
5へ進む。
と位数すなわち、N0de内に入り得るエントリの数の
量大値の1/2とを比べる。最大エントリ数はエントリ
の追加の所で述べた方法により求める。この場合のNo
de内のエントリ数が2で位数と同じであるので、40
5へ進む。
第6図の405に2いてエントリ削除対象N Od e
がR,oot N□de かどうか判定t る。コレ
はエントリ追加の場合と同様の方法にて行う。この第7
図の例では、R,oot Node でないので、4
06へ進む。
がR,oot N□de かどうか判定t る。コレ
はエントリ追加の場合と同様の方法にて行う。この第7
図の例では、R,oot Node でないので、4
06へ進む。
第9図の406においては、親N0de番号検索プログ
ラムを呼び、NNLTのNode番号の記憶しているケ
ースをサーチして、エントリ削除対象N0deのNod
e番号が記憶されているケースを探し、このケースの直
前のケースに入っている1’tJQde番号を得る。こ
れが親N0deのNod e番号である。この場合、第
7図のCのNNLTをjで検索し、Jの入っているケー
スの直前のケースに入っているN□de番号iが親N
Od e番号である。
ラムを呼び、NNLTのNode番号の記憶しているケ
ースをサーチして、エントリ削除対象N0deのNod
e番号が記憶されているケースを探し、このケースの直
前のケースに入っている1’tJQde番号を得る。こ
れが親N0deのNod e番号である。この場合、第
7図のCのNNLTをjで検索し、Jの入っているケー
スの直前のケースに入っているN□de番号iが親N
Od e番号である。
407にて親N0deを読む。
第6図の408においては、親Node内の削除対象N
0deをポイントするエントリの隣のエントリから削除
対象N Od eここでは第7図の503のNodeの
隣のNodeのNode番号Rを得て、このNodeを
システムバッファに読み込む。409において、全読込
んだN0de内のエントリ数、ここでは3と位数、ここ
でば2とを比較する。エントリ数が位数よシ大きいので
、410へ進む。
0deをポイントするエントリの隣のエントリから削除
対象N Od eここでは第7図の503のNodeの
隣のNodeのNode番号Rを得て、このNodeを
システムバッファに読み込む。409において、全読込
んだN0de内のエントリ数、ここでは3と位数、ここ
でば2とを比較する。エントリ数が位数よシ大きいので
、410へ進む。
第6図の410においては、第7図のAの501゜50
2および503のN Od eを第7図のBの501゜
502および503のN□deのようにする。すなわち
削除エントリ情報(第1図の67.68に記憶されてい
る。)によシ指定されだエントリを削数が位数より小さ
くならないようにする。この処理を均衡化処理と呼ぶ。
2および503のN Od eを第7図のBの501゜
502および503のN□deのようにする。すなわち
削除エントリ情報(第1図の67.68に記憶されてい
る。)によシ指定されだエントリを削数が位数より小さ
くならないようにする。この処理を均衡化処理と呼ぶ。
これでエントリ削除処理を終了する。この結果、B”−
Treeは第7図のBのようになる。
Treeは第7図のBのようになる。
第8図のB“−’14eeからキーの値が70のエント
リを削除することを考える。
リを削除することを考える。
第6図にて、401〜407までで、第7図の例と同様
の処理が行われる。ただし、NNLTは第8図のCに示
したようになり、601と603のN Od eがシス
テムバッファに読込まれる。408では、親N Od
e内の対象Nodeのエントリの隣のエントリから隣の
NodeのNode番号を得て、こ(7)Nodelシ
ステムバッファに読み込む。
の処理が行われる。ただし、NNLTは第8図のCに示
したようになり、601と603のN Od eがシス
テムバッファに読込まれる。408では、親N Od
e内の対象Nodeのエントリの隣のエントリから隣の
NodeのNode番号を得て、こ(7)Nodelシ
ステムバッファに読み込む。
第6図の409にて、隣のN c) d eのエン)
IJ数と、位数とを比較する。この場合、エントリ数が
2で、位数が2であるので、411ヘジヤンプする。4
11においては、指定エントリを削除後、左隣のN O
d eへ残りのエントリを移し、このNo d eを空
Nodeとして返却する。この処理を併合処理と呼ぶ。
IJ数と、位数とを比較する。この場合、エントリ数が
2で、位数が2であるので、411ヘジヤンプする。4
11においては、指定エントリを削除後、左隣のN O
d eへ残りのエントリを移し、このNo d eを空
Nodeとして返却する。この処理を併合処理と呼ぶ。
第6図の411の併合処理によりエントリを移したN0
deの最大キーが変わる、すなわち第8図のNode6
02の最大キーが、50から仮想的最大キー(B”−T
reeに対する処理を簡易にするためにあらかじめ、B
“−Treeに加えておくキー)に変わったのに伴い、
親Node内のこのNodeをポイントしているエン)
IJのキーをNode内の新しい最大キーに更新し、
削除されたNodeをポイントしているエン) l)を
削除するように、削除エントリの情報を第1図の67.
68に設定する。
deの最大キーが変わる、すなわち第8図のNode6
02の最大キーが、50から仮想的最大キー(B”−T
reeに対する処理を簡易にするためにあらかじめ、B
“−Treeに加えておくキー)に変わったのに伴い、
親Node内のこのNodeをポイントしているエン)
IJのキーをNode内の新しい最大キーに更新し、
削除されたNodeをポイントしているエン) l)を
削除するように、削除エントリの情報を第1図の67.
68に設定する。
この場合、67に削除エントリのNode内相対エント
リ番号2.68に削除対象N□deのNode番号iを
設定する。
リ番号2.68に削除対象N□deのNode番号iを
設定する。
第6図にて親N Q d eから削除し九N Od e
をポイントしていたエントリを削除すべく404へ戻る
。
をポイントしていたエントリを削除すべく404へ戻る
。
404にて、Node内のエントリ数は2で位数に等し
いので、405へ進む。405にて対象l’J o d
eはR,oot Node であるので、413ヘ
ジヤンプする。413にて、対象N□deはLeafN
Od eでないので、414へ進む。414にて対象
Node内のエン) l)数は2イ固であるので、41
5へ進む。415にて併合によ91個になったN。
いので、405へ進む。405にて対象l’J o d
eはR,oot Node であるので、413ヘ
ジヤンプする。413にて、対象N□deはLeafN
Od eでないので、414へ進む。414にて対象
Node内のエン) l)数は2イ固であるので、41
5へ進む。415にて併合によ91個になったN。
N o d eを新しいRoot Nodeとし、今
tでのRoot Nodeを返却する。この結果13
”−Tr eeは第8図の13のようになる。
tでのRoot Nodeを返却する。この結果13
”−Tr eeは第8図の13のようになる。
一方、Nodeが11固のB”−’preeで、しかも
エントリ数が位数以下の場合には、第6図にて401〜
405,413と処理が進み、413にて416へジャ
ンプして指定エントリを削除して終る。
エントリ数が位数以下の場合には、第6図にて401〜
405,413と処理が進み、413にて416へジャ
ンプして指定エントリを削除して終る。
また、削除対象のエントリを含むLeaf Nodeに
位数より多いエン11が存在している場合は、第6図に
で、401〜404と処理進み、404から416ヘジ
ヤンプして指定エントリをMll除して終る。
位数より多いエン11が存在している場合は、第6図に
で、401〜404と処理進み、404から416ヘジ
ヤンプして指定エントリをMll除して終る。
さらに、エントリの削除が下位のN0deからRoot
Nocie−5で波及し、1oot Nade内
のエントリ数が3個以上で、位数以下の場合は、第6図
の414の判定で416ヘンヤンプし、エントリを削除
して処理を終了する。これは、ROotN Od eの
エントリ数は位数以下も認めるためである。
Nocie−5で波及し、1oot Nade内
のエントリ数が3個以上で、位数以下の場合は、第6図
の414の判定で416ヘンヤンプし、エントリを削除
して処理を終了する。これは、ROotN Od eの
エントリ数は位数以下も認めるためである。
このようにエントリ削除処理においても、併合および均
衡化を行う場合、親Nodeを更新する必要がるシ、こ
の時に、NNLTを検索するだけで、親N0deのNo
de番号を得ることができる。
衡化を行う場合、親Nodeを更新する必要がるシ、こ
の時に、NNLTを検索するだけで、親N0deのNo
de番号を得ることができる。
B”−Treeに対してエントリを追加することによる
5plit処理およびエントリを削除することによる均
衡化あるいは併合処理にて、処理対象N0deの親のN
Od eを参照および更新する必要がある。本発明に
よれば、親N□deをRoot N□deから辿りなお
さずに知ることが出来、高速に親N0deの参照あるい
は更新することが可能となり、B”−Treeへのエン
トリ追加および削除処理を高速に行うことができる。
5plit処理およびエントリを削除することによる均
衡化あるいは併合処理にて、処理対象N0deの親のN
Od eを参照および更新する必要がある。本発明に
よれば、親N□deをRoot N□deから辿りなお
さずに知ることが出来、高速に親N0deの参照あるい
は更新することが可能となり、B”−Treeへのエン
トリ追加および削除処理を高速に行うことができる。
第1図は本発明の全体構成を示し、第2図はNodeの
内部構成を示し、第3図はB”−4’reeヘエントリ
を追加するプログラムのフローを示し、第4図および第
5図はB” −’I” r e eヘエン) IJを追
よび第8図はB+〜Treeからエントリを削除する例
を示している。第9図ばNNLT、第10図ばNNLT
KNode番号登録するプログラムのフローチャート、
第11図は親Node番号をNNLTから検索するプロ
グラムのフローチャートを示す。
内部構成を示し、第3図はB”−4’reeヘエントリ
を追加するプログラムのフローを示し、第4図および第
5図はB” −’I” r e eヘエン) IJを追
よび第8図はB+〜Treeからエントリを削除する例
を示している。第9図ばNNLT、第10図ばNNLT
KNode番号登録するプログラムのフローチャート、
第11図は親Node番号をNNLTから検索するプロ
グラムのフローチャートを示す。
Claims (1)
- 【特許請求の範囲】 演算処理装置と主メモリと補助記憶装置と入出力装置か
らなる電子計算機システムにおいて、キーにて情報を検
索するだめの平衡木に対して、Root Nodeから
Leaf Node まで辿ツタN Od eの識別情
報を辿った順に記憶するテーブル。 キーを平衡木に+li加する場合には、追加キーを格納
ずべきLeaf NodeまでR,oot Node
から辿る時に、辿った順にNodeの識別情報を前述し
たテーブルに記憶しておき、木を平衡化するために処理
中のN0deの親のNodeの識別情報が必要になった
時には、前述のテーブルを参照して親のN0deの識別
情報を得る論理のキーの追加処理を行うプログラム、キ
ーを平衡木から削除する場合においても、削除するキー
を含んでいるLeafN□deまでROOl N0de
から辿る時に、辿ったNodeの識別情報を順に前述し
たテーブルに記憶し、平衡化のため必要となる処理中の
Nodeの親のNodeの識別情報をキーの追加処理と
同様にして、前述したテーブルから得る論理のキーを平
衡木から削除するプログラム、これらのプログラムのた
めに、指定されだN0deの識別情報を前述したテーブ
ルに、Nodeを辿った順に登録するサブルーチンおよ
びこのテーブルを参照して指定されたN □ d e
t7) 職別情報を探し、この直前に記憶されている親
のN Od eの識別情報を得るサブルーチンを設ける
ことによシ、平衡化時に必要となる処理中のN Od、
eの親のN Od eの識別情報をR,ootN□c
ieから再び辿りなおす処理を不要とし、平衡木に対し
て、特に高速なキーの追加および削除が可能な情報検索
方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP58018824A JPS59146339A (ja) | 1983-02-09 | 1983-02-09 | 情報検索方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP58018824A JPS59146339A (ja) | 1983-02-09 | 1983-02-09 | 情報検索方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS59146339A true JPS59146339A (ja) | 1984-08-22 |
JPH0524549B2 JPH0524549B2 (ja) | 1993-04-08 |
Family
ID=11982304
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP58018824A Granted JPS59146339A (ja) | 1983-02-09 | 1983-02-09 | 情報検索方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPS59146339A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04229372A (ja) * | 1990-04-26 | 1992-08-18 | Internatl Business Mach Corp <Ibm> | メモリ空間再使用管理方法及びシステム |
KR20000037515A (ko) * | 1998-08-19 | 2000-07-05 | 윤종용 | 히스토리 관리용 비플러스 트리 구성 방법 |
WO2008012190A1 (de) * | 2006-07-25 | 2008-01-31 | Robert Bosch Gmbh | Aktualisierungsverfahren für datenbasen, insbesondere navigationsdatenbasen |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1040255A (ja) * | 1996-07-29 | 1998-02-13 | Nec Software Ltd | ハッシュ表管理装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS4871106A (ja) * | 1971-12-25 | 1973-09-26 | ||
JPS57103181A (en) * | 1980-12-19 | 1982-06-26 | Fujitsu Ltd | Main storage residing system for index |
JPS57139848A (en) * | 1981-02-23 | 1982-08-30 | Hitachi Ltd | Picture control system of display data input terminal equipment |
-
1983
- 1983-02-09 JP JP58018824A patent/JPS59146339A/ja active Granted
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS4871106A (ja) * | 1971-12-25 | 1973-09-26 | ||
JPS57103181A (en) * | 1980-12-19 | 1982-06-26 | Fujitsu Ltd | Main storage residing system for index |
JPS57139848A (en) * | 1981-02-23 | 1982-08-30 | Hitachi Ltd | Picture control system of display data input terminal equipment |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04229372A (ja) * | 1990-04-26 | 1992-08-18 | Internatl Business Mach Corp <Ibm> | メモリ空間再使用管理方法及びシステム |
KR20000037515A (ko) * | 1998-08-19 | 2000-07-05 | 윤종용 | 히스토리 관리용 비플러스 트리 구성 방법 |
WO2008012190A1 (de) * | 2006-07-25 | 2008-01-31 | Robert Bosch Gmbh | Aktualisierungsverfahren für datenbasen, insbesondere navigationsdatenbasen |
US9378222B2 (en) | 2006-07-25 | 2016-06-28 | Robert Bosch Gmbh | Updating method for databases, in particular navigation databases |
Also Published As
Publication number | Publication date |
---|---|
JPH0524549B2 (ja) | 1993-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4914569A (en) | Method for concurrent record access, insertion, deletion and alteration using an index tree | |
US6546394B1 (en) | Database system having logical row identifiers | |
JPH02501514A (ja) | 属性データ モデル データベースを使用するソフトウエア応用プログラムを結合する方法 | |
JPH11212980A (ja) | インデクス作成方法および検索方法 | |
US4780810A (en) | Data processor with associative memory storing vector elements for vector conversion | |
JP3205406B2 (ja) | 参照対象変数決定処理方法および翻訳処理システム | |
CN111666302A (zh) | 用户排名的查询方法、装置、设备及存储介质 | |
JPS59146339A (ja) | 情報検索方式 | |
JP2001229060A (ja) | ディレクトリ検索システム及び方法、ディレクトリ検索プログラムを記録したコンピュータ読取可能な記録媒体 | |
CN111581440B (zh) | 硬件加速b+树操作装置及其方法 | |
JPH09305622A (ja) | 文書検索機能を有するデータベース管理方法およびシステム | |
JP2000090115A (ja) | インデクス作成方法および検索方法 | |
EP0170442A2 (en) | A method for searching sparse databases using an associative technique | |
JPH08255170A (ja) | ソート付き検索処理装置 | |
JPH03129570A (ja) | データベース検索方式 | |
JPH0456344B2 (ja) | ||
JP2690648B2 (ja) | ネットワークアドレス管理装置 | |
JP2604787B2 (ja) | 二次元データ格納方式 | |
JPH06214849A (ja) | データベースシステム | |
JPS61184635A (ja) | デ−タベ−スシステムの検索方式 | |
JPS63150724A (ja) | デ−タアクセス処理方式 | |
JPS6327927A (ja) | 予約情報検索システムにおけるインデツクス作成方式 | |
JPH0795300B2 (ja) | データベースにおける名称管理方式 | |
JPH02259942A (ja) | データベース世代管理処理方式 | |
JPS633351A (ja) | バツフア検索制御方式 |