JPH0267648A - ツリー構造データベースのレコード追加方式 - Google Patents
ツリー構造データベースのレコード追加方式Info
- Publication number
- JPH0267648A JPH0267648A JP63218340A JP21834088A JPH0267648A JP H0267648 A JPH0267648 A JP H0267648A JP 63218340 A JP63218340 A JP 63218340A JP 21834088 A JP21834088 A JP 21834088A JP H0267648 A JPH0267648 A JP H0267648A
- Authority
- JP
- Japan
- Prior art keywords
- page
- record
- records
- tree
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims description 40
- 238000007792 addition Methods 0.000 claims 4
- 238000010586 diagram Methods 0.000 description 9
- 230000001174 ascending effect Effects 0.000 description 8
- 230000006835 compression Effects 0.000 description 7
- 238000007906 compression Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 2
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は、ツリー構造データベースのレコード追加方式
に関し、特に、各レコードの集合をページ単位に格納す
るデータベースを、各々のページ単位にツリー構造デー
タベースとして、B −tree(B alanced
tree)型式のファイル構造をとるデータベースに
おいて、該当ページ内に追加レコードを追加し、または
、該当ページ内に追加レコードが追加できない場合は、
ページ分割を行い、レコードの追加を行うツリー構造デ
ータベースのレコード追加方式に関するものである。
に関し、特に、各レコードの集合をページ単位に格納す
るデータベースを、各々のページ単位にツリー構造デー
タベースとして、B −tree(B alanced
tree)型式のファイル構造をとるデータベースに
おいて、該当ページ内に追加レコードを追加し、または
、該当ページ内に追加レコードが追加できない場合は、
ページ分割を行い、レコードの追加を行うツリー構造デ
ータベースのレコード追加方式に関するものである。
従来、データベースシステムの各々の要素のレコードデ
ータは、所定のアクセス速度で読み出せる性能が要求さ
れるため、各レコードの集合をページ単位に格納するデ
ータベースは、各々ノヘージ単位にツリー構造データベ
ースとして管理するB−tree型式のファイル構造を
とるデータベースが用いられるようになっている。この
ようなり−tree型式のファイル構造をとるデータベ
ースは、レコード検索をツリー構造データのインデック
スによって行う。このため、レコード検索のためのイン
デックスを数階層の本構造として構成し、インデックス
の最上位のルートノードからリーフノートのデータレコ
ードに至る本構造の階層数がどのデータレコードに対し
ても常に等しい構造とされるので、各レコードのアクセ
ス時間が均一化されるという特徴を有する、なお、この
場合、階層構造のインデックスレコード、データベース
のデータ要素のデータレコード等が共に格納される物理
ファイルは、いわゆるDASD (直接アクセス記憶装
置)である磁気ディスク装置が使用されるので、ファイ
ル処理を行う場合のアクセスされる単位はページ単位と
なっている。
ータは、所定のアクセス速度で読み出せる性能が要求さ
れるため、各レコードの集合をページ単位に格納するデ
ータベースは、各々ノヘージ単位にツリー構造データベ
ースとして管理するB−tree型式のファイル構造を
とるデータベースが用いられるようになっている。この
ようなり−tree型式のファイル構造をとるデータベ
ースは、レコード検索をツリー構造データのインデック
スによって行う。このため、レコード検索のためのイン
デックスを数階層の本構造として構成し、インデックス
の最上位のルートノードからリーフノートのデータレコ
ードに至る本構造の階層数がどのデータレコードに対し
ても常に等しい構造とされるので、各レコードのアクセ
ス時間が均一化されるという特徴を有する、なお、この
場合、階層構造のインデックスレコード、データベース
のデータ要素のデータレコード等が共に格納される物理
ファイルは、いわゆるDASD (直接アクセス記憶装
置)である磁気ディスク装置が使用されるので、ファイ
ル処理を行う場合のアクセスされる単位はページ単位と
なっている。
このように、ページ単位に各レコードの集合を格納する
ファイル装置を利用して、各々のレコードをツリー構造
データとして管理するツリー構造データベースにおいて
は、B−tree型式データ構造のファイル構造をとる
データベースが用いられるようになっている。
ファイル装置を利用して、各々のレコードをツリー構造
データとして管理するツリー構造データベースにおいて
は、B−tree型式データ構造のファイル構造をとる
データベースが用いられるようになっている。
第5図は、B−tree型式データ構造のデータベース
のファイル構造を説明する図である。第5図において、
51はルートノードのページであるルートページ、52
.53.541:Lインデックスノードのページである
インデックスページ、また、55はインデックスノード
の各々のポインタでポイントされるデータノードのり一
フページである。この例のB−tree型式のデータ構
造としては、インデックスノードが1階層となっており
、ルートノードの1階層と合せて、インデックス部が2
階層のツリー構造データとなっている。ルートノードの
ページおよび各々のインデックスノードのページのポイ
ンタからの縦方向ポインタ(実線)によりツリー構造の
データ構造を形成すると共に、同じ階層ではポインタ、
レコードキーが昇順となって、横方向にも検索できるよ
うになっている。また、レコードを格納する場合、ソー
トした状態でページ単位に格納するので、各々のページ
の間にはページ単位に横方向ポインタ(破線)をも有す
る構造となっている。このようなデータ構造のデータベ
ースにおいては、各々の上位ノードのポインタが、下位
ノードのポインタの最大値を格納することにより、下位
ノードの1つの管理単位のページをポイントする。例え
ば、ルートノードのルートページ51のポインタ51a
は「50」となっており、ポインタの最大値が「50」
のインデックスノードであるインデックスページ52を
ポイントしている。
のファイル構造を説明する図である。第5図において、
51はルートノードのページであるルートページ、52
.53.541:Lインデックスノードのページである
インデックスページ、また、55はインデックスノード
の各々のポインタでポイントされるデータノードのり一
フページである。この例のB−tree型式のデータ構
造としては、インデックスノードが1階層となっており
、ルートノードの1階層と合せて、インデックス部が2
階層のツリー構造データとなっている。ルートノードの
ページおよび各々のインデックスノードのページのポイ
ンタからの縦方向ポインタ(実線)によりツリー構造の
データ構造を形成すると共に、同じ階層ではポインタ、
レコードキーが昇順となって、横方向にも検索できるよ
うになっている。また、レコードを格納する場合、ソー
トした状態でページ単位に格納するので、各々のページ
の間にはページ単位に横方向ポインタ(破線)をも有す
る構造となっている。このようなデータ構造のデータベ
ースにおいては、各々の上位ノードのポインタが、下位
ノードのポインタの最大値を格納することにより、下位
ノードの1つの管理単位のページをポイントする。例え
ば、ルートノードのルートページ51のポインタ51a
は「50」となっており、ポインタの最大値が「50」
のインデックスノードであるインデックスページ52を
ポイントしている。
また、ルートノードのルートページ51のポインタ51
bは「90」となっており、最大値がr90Jのポイン
タを有するインデックスノードであるインデックスペー
ジ53をポイントしている。
bは「90」となっており、最大値がr90Jのポイン
タを有するインデックスノードであるインデックスペー
ジ53をポイントしている。
このように、B−tree型式のデータ構造を有するデ
ータベースにおいては、各々のページ内のレコードキー
、ポインタ等のキーデータが、例えば昇順にソートされ
て格納される。また、データベースのページに、キーデ
ータを各ページ内に昇順に格納するについては、ページ
内のキーデータのキー値の共通部分を左から圧縮して格
納する。キー値を圧縮して格納する例を第6図に示す。
ータベースにおいては、各々のページ内のレコードキー
、ポインタ等のキーデータが、例えば昇順にソートされ
て格納される。また、データベースのページに、キーデ
ータを各ページ内に昇順に格納するについては、ページ
内のキーデータのキー値の共通部分を左から圧縮して格
納する。キー値を圧縮して格納する例を第6図に示す。
第6図に示すように、一連のキーレコード61を格納し
ているページ内のキーレコードのキー値として、 r4
71J 、 r472J 、r473J 。
ているページ内のキーレコードのキー値として、 r4
71J 、 r472J 、r473J 。
r475J 、r476Jのキー値を格納する場合、前
の2桁は共通なので、最初のキー値はr471Jと記憶
するが、それに続く後のキーのr472J。
の2桁は共通なので、最初のキー値はr471Jと記憶
するが、それに続く後のキーのr472J。
r473」、r475」、r476」に対しては、前の
2桁を省略するキー値圧縮処理を行い5その結果、格納
するキー値としてはr471J、r2Jr3J、r5」
、16ノとする。これらのキー値は順に格納して、キー
値が圧縮された状態で格納される。
2桁を省略するキー値圧縮処理を行い5その結果、格納
するキー値としてはr471J、r2Jr3J、r5」
、16ノとする。これらのキー値は順に格納して、キー
値が圧縮された状態で格納される。
キー値の圧縮方式は、データベースで扱うデータのレコ
ード数は非常に多くなるので、データベースにおいては
良く用いられている手法である。
ード数は非常に多くなるので、データベースにおいては
良く用いられている手法である。
このようにページ内のキー値の共通部分を左から圧縮し
て格納する方式は、従来から、データベースシステムの
データ構造として良く用いられている。
て格納する方式は、従来から、データベースシステムの
データ構造として良く用いられている。
なお、上述のようなり−tree型式のデータ構造をと
るデータにレコード追加するためのデータアクセス法に
関しては、ファイルの1ページに1ノードを格納し、ペ
ージ内にレコードを詰めていって一杯になったらページ
を分割して格納していく方式が、エイ・シー・エム、ト
ランザクション。
るデータにレコード追加するためのデータアクセス法に
関しては、ファイルの1ページに1ノードを格納し、ペ
ージ内にレコードを詰めていって一杯になったらページ
を分割して格納していく方式が、エイ・シー・エム、ト
ランザクション。
オン、データベースシステムズ、第2巻、第1号(19
77年3月)、第11頁〜第26頁(ACM Tran
saction on Database Syste
ms、Vol、2゜No、l、March、1977、
pp11〜26)なる文献に記載されている。
77年3月)、第11頁〜第26頁(ACM Tran
saction on Database Syste
ms、Vol、2゜No、l、March、1977、
pp11〜26)なる文献に記載されている。
しかしながら、上述の従来の技術においては。
B−tree型式のデータ構造のデータベースにレコー
ド追加する場合、レコード追加によりページ分割を行う
必要が生じた時にページ分割が行われるが、ページが分
割されるタイミングと、キーデータの圧縮処理が行われ
るタイミングとが同一であるため、ページ分割した後の
2つのページのスペース効率が、50%を下まわる点に
ついて配慮がされていない。すなわち、レコード追加に
よりページ分割を行った後にキーデータのキー値の圧縮
が行われるため、キー値の圧縮の結果として、ペジ分割
を行なわなくてもレコードのキーの追加が可能な場合に
もページ分割が行なわれて、ページ分割後の2つのペー
ジのスペース効率が50%を下まわる場合が多くある。
ド追加する場合、レコード追加によりページ分割を行う
必要が生じた時にページ分割が行われるが、ページが分
割されるタイミングと、キーデータの圧縮処理が行われ
るタイミングとが同一であるため、ページ分割した後の
2つのページのスペース効率が、50%を下まわる点に
ついて配慮がされていない。すなわち、レコード追加に
よりページ分割を行った後にキーデータのキー値の圧縮
が行われるため、キー値の圧縮の結果として、ペジ分割
を行なわなくてもレコードのキーの追加が可能な場合に
もページ分割が行なわれて、ページ分割後の2つのペー
ジのスペース効率が50%を下まわる場合が多くある。
特に、キー値が近接したレコード群をキー上昇順または
キー下降順に連続して追加した場合には、キー圧縮率が
大きく、ページ分割後においてスペース効率が極端に悪
化するという問題がある。
キー下降順に連続して追加した場合には、キー圧縮率が
大きく、ページ分割後においてスペース効率が極端に悪
化するという問題がある。
本発明は、上記問題点を解決するためになされたもので
ある。
ある。
本発明の目的は、キー値の圧縮の度合にかかわらずに、
ページ分割後のスペース効率を低下させないツリー構造
データベースのレコード追加方式を提供することにある
。
ページ分割後のスペース効率を低下させないツリー構造
データベースのレコード追加方式を提供することにある
。
本発明の前記ならびにその他の目的と新規な特徴は、本
明細書の記述及び添付図面によって明らかになるであろ
う。
明細書の記述及び添付図面によって明らかになるであろ
う。
前記目的を達成するため、本発明においては、各レコー
ドの集合をページ単位に格納するデータベースを、各々
のページ単位にツリー構造データとして管理するツリー
構造データベースにおいて、ツリー構造データベースの
要素のページにレコードを追加する際、まず、ページの
内部を論理的に2つのノードに分割し、レコードの追加
処理を行い、レコード追加ができない場合のみページの
分割を行い、レコードの追加処理を行うことを特徴とす
る。
ドの集合をページ単位に格納するデータベースを、各々
のページ単位にツリー構造データとして管理するツリー
構造データベースにおいて、ツリー構造データベースの
要素のページにレコードを追加する際、まず、ページの
内部を論理的に2つのノードに分割し、レコードの追加
処理を行い、レコード追加ができない場合のみページの
分割を行い、レコードの追加処理を行うことを特徴とす
る。
また、ツリー構造データベースの要素のページにレコー
ドを追加する際、まず、ページの内部を論理的に2つの
ノードに分割し、レコードの追加処理を行い、1ページ
内の2つのノードの間でレコードの移動を行い、各ノー
ドのレコードの格納領域をバランスさせた後にページの
分割を行うことを特徴とする。
ドを追加する際、まず、ページの内部を論理的に2つの
ノードに分割し、レコードの追加処理を行い、1ページ
内の2つのノードの間でレコードの移動を行い、各ノー
ドのレコードの格納領域をバランスさせた後にページの
分割を行うことを特徴とする。
前記手段によれば、ツリー構造データベースの要素のペ
ージにレコードを追加する際、まず、ページの内部を論
理的に2つのノードに分割し、レコードの追加処理を行
い、レコード追加ができない場合のみページの分割を行
い、レコードの追加処理を行う。すなわち、ページ内が
レコードで満杯に近づき、空スペースがなく、レコード
追加が行えなくなると、ページ分割を行い、各ページ内
でレコードを追加するスペースを形成してレコード追加
する。この場合、まず、ページの内部を論理的に2つの
ノードに分割する。この時、キー値の圧縮が行われるた
め、同一ページ内に、更に多くのレコードを格納できる
空スペースが形成されて、レコード追加が可能となる。
ージにレコードを追加する際、まず、ページの内部を論
理的に2つのノードに分割し、レコードの追加処理を行
い、レコード追加ができない場合のみページの分割を行
い、レコードの追加処理を行う。すなわち、ページ内が
レコードで満杯に近づき、空スペースがなく、レコード
追加が行えなくなると、ページ分割を行い、各ページ内
でレコードを追加するスペースを形成してレコード追加
する。この場合、まず、ページの内部を論理的に2つの
ノードに分割する。この時、キー値の圧縮が行われるた
め、同一ページ内に、更に多くのレコードを格納できる
空スペースが形成されて、レコード追加が可能となる。
このように、まず、論理的に2つのノードに分割し、レ
コード追加が可能な場合にはそのままレコード追加を行
うので、ページ分割を行わなくてすむ。レコード追加が
できなくなった時に、ページ分割を行う・このため、そ
の後のページの分割の後には、ページ分割によって作ら
れた2つのページのスペース効率は全体として50%を
割ることがない。
コード追加が可能な場合にはそのままレコード追加を行
うので、ページ分割を行わなくてすむ。レコード追加が
できなくなった時に、ページ分割を行う・このため、そ
の後のページの分割の後には、ページ分割によって作ら
れた2つのページのスペース効率は全体として50%を
割ることがない。
更に、ツリー構造データベースの要素のページにレコー
ドを追加する際、まず、ページの内部を論理的に2つの
ノードに分割し、レコードの追加処理を行い、1ページ
内の2つのノートの間でレコードの移動を行い、各ノー
ドのレコードの格納領域をバランスさせた後にページの
分割を行う。
ドを追加する際、まず、ページの内部を論理的に2つの
ノードに分割し、レコードの追加処理を行い、1ページ
内の2つのノートの間でレコードの移動を行い、各ノー
ドのレコードの格納領域をバランスさせた後にページの
分割を行う。
これにより、論理的に2つのノードに分割した1ページ
内の2つのノードの間の格納領域に、大きさに不均衡が
あれば、大きい方から小さい方へレコードを移す処理を
行う。このため、ページ分割後に、2つのページの一方
のスペース効率が、特に悪くなることはない。
内の2つのノードの間の格納領域に、大きさに不均衡が
あれば、大きい方から小さい方へレコードを移す処理を
行う。このため、ページ分割後に、2つのページの一方
のスペース効率が、特に悪くなることはない。
このように、ツリー構造データベースの各ページの中に
より多くのレコードを格納することができ5全体として
スペース効率が向上する。
より多くのレコードを格納することができ5全体として
スペース効率が向上する。
以下、本発明の一実施例を図面を用いて具体的に説明す
る。
る。
第1図は、本発明の一実施例にかかるツリー構造データ
ベースのレコード追加方式の処理例を示すフローチャー
トである。第1図を参照して、本実施例におけるレコー
ドを追加する処理を説明する。
ベースのレコード追加方式の処理例を示すフローチャー
トである。第1図を参照して、本実施例におけるレコー
ドを追加する処理を説明する。
ツリー構造データベースにレコードを追加する処理を行
う場合、まず、ステップ1において、B−tree型式
のデータベースにおけるツリー構造データのインデック
ス部を検索し、ポインタをたどって追加レコードの入る
べきデータノートのリーフ(最下段)ページを見つける
。次に、ステップ2において、検索したデータノードの
リーフページが論理的に2ノードに分かれたページか否
かを判定する。論理的に2ノードに分かれたページでな
ければ、当該リーフページのデータノードは。
う場合、まず、ステップ1において、B−tree型式
のデータベースにおけるツリー構造データのインデック
ス部を検索し、ポインタをたどって追加レコードの入る
べきデータノートのリーフ(最下段)ページを見つける
。次に、ステップ2において、検索したデータノードの
リーフページが論理的に2ノードに分かれたページか否
かを判定する。論理的に2ノードに分かれたページでな
ければ、当該リーフページのデータノードは。
未だレコード追加が可能なノードであるので、ステップ
3に進み、レコード追加処理を行う。次にステップ4に
おいて、レコード追加処理を行った結果、当該ページに
格納するレコードのページ内使用長が分割限界値より大
であるか否かを判定する。このステップ4の判定の結果
、ページ内使用長が分割限界値より大であれば、次のレ
コード追加処理は行えなくなるので、ステップ5に進ん
で。
3に進み、レコード追加処理を行う。次にステップ4に
おいて、レコード追加処理を行った結果、当該ページに
格納するレコードのページ内使用長が分割限界値より大
であるか否かを判定する。このステップ4の判定の結果
、ページ内使用長が分割限界値より大であれば、次のレ
コード追加処理は行えなくなるので、ステップ5に進ん
で。
当該ページ内を論理的に2ノードに分ける処理を行う。
これにより、レコードのキー値により圧縮できるものは
圧縮されて、当該ページにスペースが増大する場合があ
る。なお、ステップ4の判定の結果、ページ内使用長が
分割限界値より大でなければ、次のレコード追加処理が
可能なので、そのまま処理を終了する。
圧縮されて、当該ページにスペースが増大する場合があ
る。なお、ステップ4の判定の結果、ページ内使用長が
分割限界値より大でなければ、次のレコード追加処理が
可能なので、そのまま処理を終了する。
一方、ステップ2の判定処理において、追加レコードの
入るべき検索したデータノードのリーフページが論理的
に2ノードに分かれたページであれば、当該リーフペー
ジのデータノードは、レコード追加により物理的にペー
ジ分割を行うことが必要となる可能性があるので、次の
ステップ6において、当該ページ内に追加レコードが入
るか否かを判定する。ステップ6に判定の結果、ページ
内に追加レコードが入る場合には1次のステップ゛7に
おいて、レコードの追加処理を行う。レコード追加処理
の結果により論理的に分割したノードの間に不均衡が生
じる場合には、ページ分割処理を行った場合のスペース
効率が悪くなるので、次のステップ8において、左右の
ノードの間でレコードを移せるか否かを判定し、左右の
ノードの間でレコードを移せる場合には、ステップ9に
おいて、論理的に分割した左右のノードの間でレコード
を移動する処理を行う。
入るべき検索したデータノードのリーフページが論理的
に2ノードに分かれたページであれば、当該リーフペー
ジのデータノードは、レコード追加により物理的にペー
ジ分割を行うことが必要となる可能性があるので、次の
ステップ6において、当該ページ内に追加レコードが入
るか否かを判定する。ステップ6に判定の結果、ページ
内に追加レコードが入る場合には1次のステップ゛7に
おいて、レコードの追加処理を行う。レコード追加処理
の結果により論理的に分割したノードの間に不均衡が生
じる場合には、ページ分割処理を行った場合のスペース
効率が悪くなるので、次のステップ8において、左右の
ノードの間でレコードを移せるか否かを判定し、左右の
ノードの間でレコードを移せる場合には、ステップ9に
おいて、論理的に分割した左右のノードの間でレコード
を移動する処理を行う。
また、ステップ6の判定処理において、当該ページ内に
追加レコードが入らない場合には、ステップ10に進み
、ステップ10において論理的に分かれている各ノード
対応にして、物理的に2つのページに分割するページ分
割処理を行う。ページ分割により各ページに追加レコー
ドが入る未使用領域が増大したので、次のステップ11
において、追加レコードが入る該当ページ内にレコード
を追加する処理を行い処理を終了する。
追加レコードが入らない場合には、ステップ10に進み
、ステップ10において論理的に分かれている各ノード
対応にして、物理的に2つのページに分割するページ分
割処理を行う。ページ分割により各ページに追加レコー
ドが入る未使用領域が増大したので、次のステップ11
において、追加レコードが入る該当ページ内にレコード
を追加する処理を行い処理を終了する。
このような処理を行うことにより、一連のツリ−構造デ
ータベースにおけるレコードの追加処理を行う。
ータベースにおけるレコードの追加処理を行う。
第2a図、第2b図、第2C図、第2d図、および第2
e図は、それぞれ、上述のレコード追加処理によって、
ページにレコードを追加した場合の各ステップの処理の
具体的な説明図である。これらの各図は、それぞれに、
レコード追加処理を行う場合に、ページにレコードを追
加する処理を行い、ノートの分割、ページの分割が起き
る様子を示している。各回において、21は上位ページ
、22はレコードが追加される下位ページである。上位
ページ内のキー値80は、下位ページ内の最大キー値の
一部分を表わし、このキー値により、下位ページ22を
ポイントしている。
e図は、それぞれ、上述のレコード追加処理によって、
ページにレコードを追加した場合の各ステップの処理の
具体的な説明図である。これらの各図は、それぞれに、
レコード追加処理を行う場合に、ページにレコードを追
加する処理を行い、ノートの分割、ページの分割が起き
る様子を示している。各回において、21は上位ページ
、22はレコードが追加される下位ページである。上位
ページ内のキー値80は、下位ページ内の最大キー値の
一部分を表わし、このキー値により、下位ページ22を
ポイントしている。
ツリー構造のデータベースが、第2a図に示すような状
態にあるものとする。まず、第2a図に示すように、イ
ンデックス部の上位ページ21のポインタ21aがポイ
ントしている下位ページ22のレコード20に対して、
r47FJなるキーレコードを追加する場合、未使用領
域が十分にある場合には、そのままr47FJなるキー
レコード27が追加されて(ステップ3)、第2b図に
示すようになる。この時点で下位ページ22におけるキ
ーレコードを格納しているページ内使用長が分割限界値
より大となるので、ページ内部が論理的に2つのノード
に分割され(ステップ4.5)、第2c図に示すような
状態となる。
態にあるものとする。まず、第2a図に示すように、イ
ンデックス部の上位ページ21のポインタ21aがポイ
ントしている下位ページ22のレコード20に対して、
r47FJなるキーレコードを追加する場合、未使用領
域が十分にある場合には、そのままr47FJなるキー
レコード27が追加されて(ステップ3)、第2b図に
示すようになる。この時点で下位ページ22におけるキ
ーレコードを格納しているページ内使用長が分割限界値
より大となるので、ページ内部が論理的に2つのノード
に分割され(ステップ4.5)、第2c図に示すような
状態となる。
第2c図において、24は論理的に分割した左部分ノー
ド、25は右部分ノードである。また、23は2つのノ
ードのキー値の境界点を表わすセパレータである。論理
的に分割した場合、キー値の圧縮の処理が行われ、左部
分ノード24内の先頭以外のレコードは2バイト分が左
から圧縮された状態となる。これにより、未使用領域が
増大する。
ド、25は右部分ノードである。また、23は2つのノ
ードのキー値の境界点を表わすセパレータである。論理
的に分割した場合、キー値の圧縮の処理が行われ、左部
分ノード24内の先頭以外のレコードは2バイト分が左
から圧縮された状態となる。これにより、未使用領域が
増大する。
更に、キーレコードr474J 、r4.76J 。
r485J 、r487Jが追加されると、レコード追
加処理(ステップ7)が行われて、第2d図に示すよう
な状態となる。この状態は満杯状態であり、この状態に
おいて、更にキーレコード[475」を追加することに
なると、ページ分割処理が行なわれた後に、レコード追
加が行なわれることになる(ステップ10.11)。こ
の結果、第2e図に示すような状態となる。ここでのペ
ージ分割の処理では、セパレータ23が、上位ページ2
1におけるポインタ21bとして追加される。
加処理(ステップ7)が行われて、第2d図に示すよう
な状態となる。この状態は満杯状態であり、この状態に
おいて、更にキーレコード[475」を追加することに
なると、ページ分割処理が行なわれた後に、レコード追
加が行なわれることになる(ステップ10.11)。こ
の結果、第2e図に示すような状態となる。ここでのペ
ージ分割の処理では、セパレータ23が、上位ページ2
1におけるポインタ21bとして追加される。
次に、ページ内の2つのノードの間でのレコードの移動
(ステップ9)を説明する。第3a図および第3b図は
、ページ内の2つのノードの間でのレコードの移動を説
明する説明図である。
(ステップ9)を説明する。第3a図および第3b図は
、ページ内の2つのノードの間でのレコードの移動を説
明する説明図である。
第3a図および第3b図において、31は上位ページ、
32は下位ページ、33は論理的に2ノードに分けたセ
パレータ、34は左部分ノード、35は右部分ノードで
ある。また、36はレコード移動後の下位ページである
。ここでは、左部分ノード34内の先頭以外のレコード
は、左から3バイト圧縮されている。ここでの圧縮長は
、セパレータ33と上位ページ31内のキー値rAAA
KJ との共通部分の長さに等しい。この論理的に2ノ
ードの分割している状態において、右部分ノードから左
部分ノードへのレコードの移動後には、第3b図に示す
ような状態の下位ページ36となる。これにより、右部
分ノード35から左部分ノード34へ、4個のレコード
が移動されて圧縮されたため、未使用の領域が増え、当
該ページ内には更に多くのレコードを格納できるように
なる状態を示している。
32は下位ページ、33は論理的に2ノードに分けたセ
パレータ、34は左部分ノード、35は右部分ノードで
ある。また、36はレコード移動後の下位ページである
。ここでは、左部分ノード34内の先頭以外のレコード
は、左から3バイト圧縮されている。ここでの圧縮長は
、セパレータ33と上位ページ31内のキー値rAAA
KJ との共通部分の長さに等しい。この論理的に2ノ
ードの分割している状態において、右部分ノードから左
部分ノードへのレコードの移動後には、第3b図に示す
ような状態の下位ページ36となる。これにより、右部
分ノード35から左部分ノード34へ、4個のレコード
が移動されて圧縮されたため、未使用の領域が増え、当
該ページ内には更に多くのレコードを格納できるように
なる状態を示している。
第3a図および第3b図は、右部分ノードから左部分ノ
ードへのレコードの移動を示す説明図であるが、また、
第4a図および第4b図に示すように、逆に、左部分ノ
ード44から右部分ノード45へのレコードの移動も行
われる。この結果、第4a図に示すような上位ページ4
1に対する下位ページ42は、セパレータ43のデータ
を変更して、レコード移動を行い、第4b図に示すよう
な下位ページ46となる。これによりレコードの圧縮率
が増大して、より多くの追加レコードの格納が可能とな
る。
ードへのレコードの移動を示す説明図であるが、また、
第4a図および第4b図に示すように、逆に、左部分ノ
ード44から右部分ノード45へのレコードの移動も行
われる。この結果、第4a図に示すような上位ページ4
1に対する下位ページ42は、セパレータ43のデータ
を変更して、レコード移動を行い、第4b図に示すよう
な下位ページ46となる。これによりレコードの圧縮率
が増大して、より多くの追加レコードの格納が可能とな
る。
また、このように論理的に2ノードに分割されたノード
間のレコード移動を示す第3a図および第3b図と、第
4a図および第4b図においては、それぞれ、キーレコ
ードがキー上昇順、キー下降順にレコードが追加された
場合に、スペース効率が悪化しないような状態となる方
法の例を示している。
間のレコード移動を示す第3a図および第3b図と、第
4a図および第4b図においては、それぞれ、キーレコ
ードがキー上昇順、キー下降順にレコードが追加された
場合に、スペース効率が悪化しないような状態となる方
法の例を示している。
以上、説明したように、本実施例の要部をまとめれば、
次のようになる。
次のようになる。
(1)ツリ一端造データベースにおいて、ページ内にレ
コードを追加していく際に、残り未使用領域の長さでは
、レコード追加が不可能となってしまう場合に、まず、
論理的に2ノードに分割し、その後にページ分割を行う
。
コードを追加していく際に、残り未使用領域の長さでは
、レコード追加が不可能となってしまう場合に、まず、
論理的に2ノードに分割し、その後にページ分割を行う
。
(2)このページ分割は、残り未使用領域の長さが所定
の割合を下まわった時に、ページの内部を論理的に2つ
のノードに分割することとする。
の割合を下まわった時に、ページの内部を論理的に2つ
のノードに分割することとする。
(3)そして、論理的にノート分割したページに更にレ
コードを追加して行って、ページ内に追加レコードが格
納できなくなった時に、実際の物理的なページ分割を行
う。
コードを追加して行って、ページ内に追加レコードが格
納できなくなった時に、実際の物理的なページ分割を行
う。
(4)論理的にノード分割したページの1ページ内に2
つのノードがある時に、必要に応じて一方のノートから
他のノードへレコードを移して2つのノードの間のデー
タの偏りを調整する。
つのノードがある時に、必要に応じて一方のノートから
他のノードへレコードを移して2つのノードの間のデー
タの偏りを調整する。
(5)これにより、ページ内がレコードで満杯に近づき
、空きの未使用領域がなくなり、レフ−1〜追加が行え
なくなると、ページ分割を行い、各ページ内でレコード
を追加する未使用領域を増大させてレコード追加する。
、空きの未使用領域がなくなり、レフ−1〜追加が行え
なくなると、ページ分割を行い、各ページ内でレコード
を追加する未使用領域を増大させてレコード追加する。
(6)この場合、ページの内部を論理的に2つのノード
に分割すると、この時、キー値の圧縮が行われるため、
同一ページ内に、更に多くのレコードを格納できる空ス
ペースが形成されて、レコード追加が可能となる。
に分割すると、この時、キー値の圧縮が行われるため、
同一ページ内に、更に多くのレコードを格納できる空ス
ペースが形成されて、レコード追加が可能となる。
(7)論理的に2つのノードに分割し、レコード追加が
可能な場合にはそのままレコード追加を行うので、ペー
ジ分割を行わなくてすむ。
可能な場合にはそのままレコード追加を行うので、ペー
ジ分割を行わなくてすむ。
(8)そして、レコード追加ができなくなった時にペー
ジ分割を行うため、その後のページの分割の後には、ペ
ージ分割によって作られた2つのページのスペース効率
は全体として50%を割ることがない。
ジ分割を行うため、その後のページの分割の後には、ペ
ージ分割によって作られた2つのページのスペース効率
は全体として50%を割ることがない。
(9)論理的に2つのノードに分割した1ページ内の2
つのノードの間で、大きさに不均衡があれば、大きい方
から小さい方へレコードを移す処理を行う。このため、
ページ分割後に、2つのページの一方のスペース効率が
、特に悪くなることはない。
つのノードの間で、大きさに不均衡があれば、大きい方
から小さい方へレコードを移す処理を行う。このため、
ページ分割後に、2つのページの一方のスペース効率が
、特に悪くなることはない。
(10)そのため、B−tree型式のツリー構造デー
タベースに格納されているすべてのレコードをキー上昇
順に入力する場合にもディスクのアクセスを要するペー
ジ入力回数が削減でき処理能力が向上する。
タベースに格納されているすべてのレコードをキー上昇
順に入力する場合にもディスクのアクセスを要するペー
ジ入力回数が削減でき処理能力が向上する。
(11)更に、参照頻度の高い磁気ディスク装置のペー
ジをメモリ内に常駐する方法を用いて、B−tree型
式のツリー構造データベースにアクセスする場合には、
同じページの中により多くのレコードが格納されるため
、キー値によりランダムにB−tree型式のツリー構
造データベースにアクセスする場合に、目的とするレコ
ードがメモリ内に常駐されている確率が高くなるので、
磁気ディスク装置のページ入力回数が削減され処理能力
が向上する。
ジをメモリ内に常駐する方法を用いて、B−tree型
式のツリー構造データベースにアクセスする場合には、
同じページの中により多くのレコードが格納されるため
、キー値によりランダムにB−tree型式のツリー構
造データベースにアクセスする場合に、目的とするレコ
ードがメモリ内に常駐されている確率が高くなるので、
磁気ディスク装置のページ入力回数が削減され処理能力
が向上する。
以上、本発明を実施例にもとづき具体的に説明したが、
本発明は、前記実施例に限定されるものではなく、その
要旨を逸脱しない範囲において種々変更可能であること
は言うまでもない。
本発明は、前記実施例に限定されるものではなく、その
要旨を逸脱しない範囲において種々変更可能であること
は言うまでもない。
以上、説明したように、本発明によれば、ツリ構造デー
タベースにおいて、同じページの中により多くのレコー
ドを格納することができ、B−tree型式のツリー構
造データベースのスペース効率が向上する。そのため、
B−treeに格納されているすべてのレコードをキー
上昇順に入力する場合にもディスクのアクセスを要する
ページ入力回数が削減でき処理能力が向上する。
タベースにおいて、同じページの中により多くのレコー
ドを格納することができ、B−tree型式のツリー構
造データベースのスペース効率が向上する。そのため、
B−treeに格納されているすべてのレコードをキー
上昇順に入力する場合にもディスクのアクセスを要する
ページ入力回数が削減でき処理能力が向上する。
第1図は、本発明の一実施例にかかるツリー構造データ
ベースのレコード追加方式の処理例を示すフローチャー
ト、 第2a図、第2b図、第2c図、第2d図、および第2
e図は、それぞれ、上述のレコード追加処理によって、
ページにレコードを追加した場合の各ステップの処理の
具体的な説明図、第3a図および第3b図は、ページ内
の2つのノードの間での左側ノードから右側ノートへの
レコード移動を説明する説明図、 第4a図および第4b図は、逆に、左部分ノードから右
部分ノートへのレコードの移動を示す説明図、 第5図は、B−tree型式データ構造のデータベース
のファイル構造を説明する図、 第6図は、昇順にソートされたページ内のキ値の共通部
分を左から圧縮して格納する処理を説明する説明図であ
る。 図中、21.31.41・・・上位ページ、22.32
.36゜42.46・・・下位ページ、23.33.4
3・・セパレータ、24、34.44・・・左部分ノー
ト、25.35.45・・・右部分ノード、27・・・
追加されたレコード、51・・ルートページ、52.5
3.54・・・インデックスページ、55・・・リーフ
ページ。 !f12a図 11、2b面 箱2a図 箋2d圓 悌2e図 箋4a回 第4b回 笥3a口 ?!、3b圓 雉5図 算6図 ら1
ベースのレコード追加方式の処理例を示すフローチャー
ト、 第2a図、第2b図、第2c図、第2d図、および第2
e図は、それぞれ、上述のレコード追加処理によって、
ページにレコードを追加した場合の各ステップの処理の
具体的な説明図、第3a図および第3b図は、ページ内
の2つのノードの間での左側ノードから右側ノートへの
レコード移動を説明する説明図、 第4a図および第4b図は、逆に、左部分ノードから右
部分ノートへのレコードの移動を示す説明図、 第5図は、B−tree型式データ構造のデータベース
のファイル構造を説明する図、 第6図は、昇順にソートされたページ内のキ値の共通部
分を左から圧縮して格納する処理を説明する説明図であ
る。 図中、21.31.41・・・上位ページ、22.32
.36゜42.46・・・下位ページ、23.33.4
3・・セパレータ、24、34.44・・・左部分ノー
ト、25.35.45・・・右部分ノード、27・・・
追加されたレコード、51・・ルートページ、52.5
3.54・・・インデックスページ、55・・・リーフ
ページ。 !f12a図 11、2b面 箱2a図 箋2d圓 悌2e図 箋4a回 第4b回 笥3a口 ?!、3b圓 雉5図 算6図 ら1
Claims (1)
- 【特許請求の範囲】 1、各レコードの集合をページ単位に格納するデータベ
ースを、各々のページ単位にツリー構造データとして管
理するツリー構造データベースにおいて、ツリー構造デ
ータベースの要素のページにレコードを追加する際、ま
ず、ページの内部を論理的に2つのノードに分割し、レ
コードの追加処理を行い、レコード追加ができない場合
のみページの分割を行い、レコードの追加処理を行うこ
とを特徴とするツリー構造データベースのレコード追加
方式。 2、各レコードの集合をページ単位に格納するデータベ
ースを、各々のページ単位にツリー構造データとして管
理するツリー構造データベースにおいて、ツリー構造デ
ータベースの要素のページにレコードを追加する際、ま
ず、ページの内部を論理的に2つのノードに分割し、レ
コードの追加処理を行い、1ページ内の2つのノードの
間でレコードの移動を行い、各ノードのレコードの格納
領域をバランスさせた後にページの分割を行うことを特
徴とするツリー構造データベースのレコード追加方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63218340A JPH0267648A (ja) | 1988-09-02 | 1988-09-02 | ツリー構造データベースのレコード追加方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63218340A JPH0267648A (ja) | 1988-09-02 | 1988-09-02 | ツリー構造データベースのレコード追加方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0267648A true JPH0267648A (ja) | 1990-03-07 |
Family
ID=16718333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP63218340A Pending JPH0267648A (ja) | 1988-09-02 | 1988-09-02 | ツリー構造データベースのレコード追加方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0267648A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02194472A (ja) * | 1989-01-23 | 1990-08-01 | Matsushita Electric Ind Co Ltd | 情報検索装置 |
JPH0689215A (ja) * | 1992-04-27 | 1994-03-29 | Internatl Business Mach Corp <Ibm> | 情報検索用コンピュータシステム及び同システムの記憶装置の操作方法 |
GB2418747A (en) * | 2004-09-29 | 2006-04-05 | Siemens Ag | A data structure distributed over a number of pages |
JP2013033306A (ja) * | 2011-07-29 | 2013-02-14 | Fujitsu Ltd | データ分割装置、データ分割方法およびデータ分割プログラム |
-
1988
- 1988-09-02 JP JP63218340A patent/JPH0267648A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02194472A (ja) * | 1989-01-23 | 1990-08-01 | Matsushita Electric Ind Co Ltd | 情報検索装置 |
JPH0689215A (ja) * | 1992-04-27 | 1994-03-29 | Internatl Business Mach Corp <Ibm> | 情報検索用コンピュータシステム及び同システムの記憶装置の操作方法 |
GB2418747A (en) * | 2004-09-29 | 2006-04-05 | Siemens Ag | A data structure distributed over a number of pages |
JP2013033306A (ja) * | 2011-07-29 | 2013-02-14 | Fujitsu Ltd | データ分割装置、データ分割方法およびデータ分割プログラム |
US9235578B2 (en) | 2011-07-29 | 2016-01-12 | Fujitsu Limited | Data partitioning apparatus and data partitioning method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0124097B1 (en) | Method for storing and retrieving data in a data base | |
Arge et al. | Optimal dynamic interval management in external memory | |
US5649181A (en) | Method and apparatus for indexing database columns with bit vectors | |
Faloutsos et al. | Fast text access methods for optical and large magnetic disks: Designs and performance comparison | |
JP3251138B2 (ja) | ハッシュ方式 | |
Fox et al. | FAST-INV: A fast algorithm for building large inverted files | |
JPH0267648A (ja) | ツリー構造データベースのレコード追加方式 | |
KR100878142B1 (ko) | 플래시 메모리 상에서의 효율적인 동작을 위한 수정된b-트리 인덱스 구성 방법 | |
JP2675958B2 (ja) | 情報検索用計算機システム及びその記憶装置の動作方法 | |
US7577673B2 (en) | Organising data in a database | |
JP2001331353A (ja) | データベースへのデータ入力システム及びそのプログラムを記憶した記録媒体 | |
KR20010109945A (ko) | 비공간검색조건이 포함된 케이-최근접 질의를 위한알에스트리구조 및 점증적 최근접 방법 | |
JPS62287350A (ja) | インデツクス一括更新方式 | |
Scheuermann et al. | A heuristic file reorganization algorithm based on record clustering | |
Gardarin et al. | Predicate trees: An approach to optimize relational query operations | |
JPS63318628A (ja) | データベース管理システム | |
Shanthi et al. | On the SD-tree construction for optimal signature operations | |
JPH02222044A (ja) | データ処理装置 | |
CN117573634A (zh) | 一种基于多日志结构合并树的键值存储方法 | |
Rishe et al. | Storage Types in the Semantic Binary Database Engine. | |
Eastman | Handling incrementally specified Boolean queries: a comparison of inverted and signature file organizations | |
JPH0388069A (ja) | 記憶媒体接続装置 | |
JPH01144136A (ja) | データアクセス方式 | |
JPS63276639A (ja) | レコ−ド追加処理方法 | |
JPH05274196A (ja) | 多重ファイルによる二次記憶管理方法 |