JPH07191891A - 多次元データを格納しかつアクセスするコンピュータ方法及び格納構造 - Google Patents
多次元データを格納しかつアクセスするコンピュータ方法及び格納構造Info
- Publication number
- JPH07191891A JPH07191891A JP6254923A JP25492394A JPH07191891A JP H07191891 A JPH07191891 A JP H07191891A JP 6254923 A JP6254923 A JP 6254923A JP 25492394 A JP25492394 A JP 25492394A JP H07191891 A JPH07191891 A JP H07191891A
- Authority
- JP
- Japan
- Prior art keywords
- node
- data
- unit
- storing
- 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
両方向にページ分割する。 【構成】 データを格納する多次元Bトリーは、サブト
リーがノード内に格納されるようにする、埋め込み“親
−子”構造を有し、サブトリーは、次にサブトリーを包
含できるサブノードを包含する。ノードは、主キー・バ
リューによってインデックスされ、サブトリーのサブノ
ードは、二次キー・バリューによってインデックスされ
る。多次元Bトリーのノードは、キー・バリュー表、サ
ブノード表、及びデータ領域を包含する。トリー・マネ
ージャがデータのユニットをページに格納する場合、そ
のページに対してあまりにも大きいときに、ページに現
在格納されているノードをサブノード及びサブトリーに
分割することを試みる。もしデータのユニットがサブノ
ード及びサブトリーに分割できないならば、ページに現
在格納されている一つ以上のノードが新しいページに移
される。
Description
かつアクセスするコンピュータ方法及び格納構造に関
し、より特定的には、多次元データを格納しかつアクセ
スするコンピュータ方法及び格納構造に関する。
造は、二次記憶装置に記憶された(データベースのデー
タレコードのような)データの特定ユニットを速く捜し
出すために用いられる。Bトリーは、データのユニット
へのポインタをクラスタする手段を提供して、ユニット
を速く捜し出すことができる。ポインタは、典型的に小
さくかつ固定の長さを有する。図1は、データベース・
インデックスを格納している通常のBトリー100のブ
ロック図である。Bトリー100は、根ノード(root n
odes)101、内部ノード102、103、104、及
び葉ノード(leaf nodes)105、106、107、1
08、109、110、111、112、113を有す
る。根ノード101は、トリー100の頂部のノードで
あり、葉ノード105、106、107、108、10
9、110、111、112及び113は、トリーの底
部のノードであり、内部ノード102、103及び10
4は、根ノードと葉ノードの間のノードの全部である。
根ノード101は、一つ以上のキー・バリュー(key va
lues)及び内部ノード102、103及び104への二
つ以上のポインタを包含する。各内部ノード102、1
03及び104は、一つ以上のキー・バリュー及び下方
レベルの内部ノードまたは葉ノード105、106、1
07、108、109、110、111、112及び1
13への二つ以上のポインタを包含する。各葉ノード1
05、106、107、108、109、110、11
1、112及び113は、キー・バリュー及びキー・バ
リューによってインデックスされたデータのユニットへ
のポインタを包含する。例えば、葉ノード107は、キ
ー・バリュー“40”及びキー・バリュー“40”に対
応するデータレコード119へのポインタ118を包含
する。葉ノードの全ては、Bトリーにおいて同じ深度で
ある。
ントする子ノードと考えられるノードに対する親ノード
と考えられる。葉ノードは、子ノードを有していない。
例えば、内部ノード102は、根ノード101に対する
子ノードであり、かつ葉ノード105、106、107
に対する親ノードである。各キー・バリューは、ノード
が親ノードであるサブトリーのそのノードに保持される
最も高くインデックスされたキー・バリューを示す。一
般に、ある非葉ノード(non-leaf node )xに対して、
もしノードxがn[x]キー・バリューを包含するなら
ば、ノードxは、子ノードへのn[x]+1ポインタを
も包含する。ノードxのキー・バリューは、ノードxに
よって処理されたキー・バリューのレンジ(range )を
n[x]+1サブレンジ(subranges )に分けるための
分割点(ディバイディング・ポイント)として用いられ
る。各サブレンジは、ノードxの一つの子によって処理
される。この命題は、例により説明することができる。
図1において、内部ノード102は、二つのキー・バリ
ュー(“12”及び“32”)及び、葉ノード105へ
の一つのポインタ、葉ノード106への一つのポインタ
及び葉ノード107への一つのポインタの三つのポイン
タを包含する。葉ノード105は、“12”以下の値を
有するキー・バリューを包含し、葉ノード106は、
“12”よりも大きくかつ“32”以下の値を有するキ
ー・バリューを包含し、葉ノード107は、“32”よ
りも大きくかつ“50”以下の値を有するキー・バリュ
ーを包含する。
で、共通(一般)の最適化(commonoptimization )
は、ページ全体を占有するノードを有することである。
データは、一度に一ページ、二次記憶装置から主記憶装
置へ一般に転送されるので、ノードのキー・バリューの
全てを読取るためにただ一つの二次記憶アクセスが要求
される。ノードがページ全体を占有することを許容され
るときには、ノード及びページがいっぱいになるまで、
即ちページに利用できる空間がなくなるまで、キー・バ
リュー及びポインタがノードへ加えられる。いっぱいの
ノードへキー・バリューを加えるために、ノードは、二
つのノードに分割され、付加のページがBトリーに割り
当てられ、そして二つのノードの一つが新しいページに
格納される。他のノードは、付加のページに、分割され
たノードとしてBトリーの同じレベルで格納される。キ
ー・バリュー及び新しいノードへのポインタは、分割さ
れたノードの親ノードに付加される。親ノードがいっぱ
いになったときには、同じ技法を用いて親ノードも分割
される。分割は、根ノードまでずっと伝搬されて、根が
分割されるといつでもBトリーに新しいレベルを生成す
る。
探索することは、各非葉ノードで双方向分岐決定をする
(即ち、二つの子ノードのどれを検査すべきかを決定す
る)代わりに、多方向分岐決定がなされることを除い
て、2分木(binary tree )を探索することに類似す
る。多方向分岐決定は、ノードの子ノードに依存する。
上述したように、n[x]キー・バリューを包含してい
るノードxに対して、ノードxは、n[x]+1子ノー
ドを有する。従って、各ノードxで、n[x]+1方向
分岐決定がなされる。Bトリーにおいてどのように探索
が実行されるのかを明らかにするために、例を考慮する
ことが有用である。図1のBトリーがデータベースファ
イルへのインデックスであり、かつ各ノードのキー・バ
リューがデータベースファイルのデータレコードにおけ
るキー・バリュー・フィールドに対応するものと想定す
る。“50”以下のキー・バリュー・フィールド・バリ
ュー(key value field value )を有するデータレコー
ドを捜し出すために、根ノード101から第1のポイン
タ114が追従される。“50”以上でかつ“82”以
下のキー・バリュー・フィールド・バリューを有するデ
ータレコードを捜し出すために、根ノード101から第
2のポインタ115が追従される。“82”以上のキー
・バリュー・フィールド・バリューを有するデータレコ
ードを捜し出すために、根ノード101から第3のポイ
ンタ116が追従される。(キー・バリュー“40”に
対応している)データレコード119を捜し出すため
に、ポインタは、根ノード101からずっとデータレコ
ード119まで追従されうる。[根ノード101から内
部ノード102まで第1のポインタ114を追従する。
次に、内部ノード102から葉ノード107まで第3の
ポインタ117を追従する。キー・バリュー“40”が
見つかるまで葉ノード107におけるキー・バリューを
探索する。最後に、葉ノード107からデータレコード
119までポインタ118を追従する。]Bトリーの総
合的論考及びBトリー保守アルゴリズムについて、Corm
en著、Introduction to Algorithms(The MIT Press 19
91)、pp. 381-399 を参照されたい。
多次元“親−子”関係で関連付けられたものである。フ
ァイルシステムにおいて、例えば、ファイル及びサブデ
ィレクトリは、主ディレクトリから降順する。システム
における各逐次的下方レベル(each successively lowe
r level )は、それの上のものから分岐するサブディレ
クトリである。ファイルシステムは、各ディレクトリま
たはサブディレクトリがファイルと他のディレクトリの
両方を包含できるので、多重レベルを包含する。階層デ
ータモデルにおいて、使用者は、トリーとして論理的に
編成されてデータを見る、そしてデータの“ユニット”
は、それら自体がトリー或いはサブトリーでありうる。
Bトリーは、データのフラット(即ち、埋め込み構造
(imbeddedstructure)でない)な同種の収集に対して
のみ有用なので、伝統的なBトリー構造及び保守アルゴ
リズムは、階層データモデルを格納するのに不適当であ
る。葉ノードがデータの実際のユニットを包含するB*
トリーでさえも、データのユニットがより小さなユニッ
トへ論理的に可分であると考慮されないので不適当であ
る。
は、一つのページにあまりにも多くのデータのユニット
を格納しようと試みること、或いはユニットがページの
利用可能な空間よりも大きいときに、一つのページに単
一のデータのユニットを格納しようと試みることのいず
れかにより“ページ溢れ”の原因となりうるという問題
点があった。本発明の目的は、上記従来の技術における
問題点に鑑み、ページ溢れを処理する水平及び垂直の両
方向ページ分割の方法及びその方法を備えたコンピュー
タシステムを提供する。
ータの一群をインデックスするトリーデータ構造の一部
として格納装置に第1の関連するノード識別子を有する
第1のノードエントリーを格納し、第1のノードエント
リーは、キー・バリューを格納するフィールドと、サブ
ノードに対する識別情報を格納するフィールドと、デー
タのユニットを格納する第1のデータ領域とを備え、デ
ータのユニットを第1のデータ領域に格納する段階を具
備する、格納装置にデータのユニットを格納するコンピ
ュータシステムの方法によって達成される。本発明の方
法では、トリーデータ構造の一部として格納装置に第2
のノードエントリーを格納し、第1のノードエントリー
にサブノードに対する識別情報を格納するためにフィー
ルドに第2のノードエントリーに対する識別子情報を格
納する段階を更に具備してもよい。本発明の方法では、
トリーデータ構造の一部として格納装置に第2のノード
エントリーを格納する段階は、データだけからなりかつ
トリー構造の一部として格納装置にキー・バリュー及び
サブノードに対する識別情報を有していない、第2のノ
ードエントリーを格納する段階を更に具備してもよい。
部として格納装置に第2のノードエントリーを格納する
段階は、トリー構造の一部として格納装置に、フィール
ド格納キー・バリュー、サブノードに対するフィールド
格納識別子情報、及びデータのユニットを格納するため
のデータ領域を備えている、第2のノードエントリーを
格納する段階を更に具備してもよい。本発明の方法で
は、格納装置に前記トリー構造のデータのサブトリーを
格納する段階を更に備え、そして第2のノードエントリ
ーを格納する手段は、トリー構造の一部として記憶装置
に第2のノードエントリーとしてポインタノードを格納
する段階を更に具備し、ポインタノードは、データのユ
ニットのサブトリーへのポインタを保持するようにして
もよい。本発明の方法では、トリーデータ構造に、第1
のノードエントリーに対する親ノードエントリーを格納
し、親ノードエントリーは、それに対応付けられた第2
のノード識別子を有しかつキー・バリューを格納するフ
ィールドと、サブトリーに対する識別子情報を格納する
フィールドと、データのユニットを格納するデータ領域
とを備え、データのユニットは、キー・バリューを有
し、親ノードエントリーのキー・バリューを格納するた
めのフィールドにデータのユニットのキー・バリューを
格納し、親ノードエントリーのサブノードに対する識別
子情報を格納するためのフィールドに第1のノード識別
子を格納する段階を更に具備してもよい。
デックスするトリーデータ構造の一部として格納装置に
第1の関連するノード識別子を有する第1のノードエン
トリーを供給し、第1のノードエントリーは、キー・バ
リューを格納するフィールドと、サブノードに対する識
別子情報を格納するフィールドと、データのユニットを
格納する第1のデータ領域とを備え、格納装置にデータ
のユニットを格納するために要求を受け取り、データの
ユニットが第1のデータ領域に格納されうるかどうかを
決定し、データのユニットが第1のデータ領域に格納さ
れえないことが決定されたときに、格納装置に新しいノ
ードエントリーを生成し、新しいノードエントリーは、
新しいノード識別子を有しかつ新しいキー・バリュー表
と、新しいサブノード表と、新しいデータ領域とを備
え、データのユニットを新しいデータ領域に格納し、格
納装置にポインタノードエントリーを生成し、ポインタ
ノードエントリーは、ポインタノード識別子を有し、新
たなノード識別子をポインタノードエントリーに格納
し、ポインタノード識別子を第1のサブノード表に格納
し、データのユニットが第1のデータ領域に格納されう
ることが決定されたときに、データのユニットを第1の
データ領域に格納する段階を具備する、格納装置にデー
タのユニットを格納するコンピュータシステムの方法に
よっても達成される。
エントリー群を格納装置に格納し、各ノードエントリー
群は、一つ以上のノードエントリーを備えかつある量の
利用可能な空間を有し、各ノードエントリーは、固有な
ノード識別子を有しかつキー・バリュー表と、サブノー
ド表と、データのユニットを格納するデータ領域とを備
え、データのユニットのキー・バリューに基づいて、複
数のノードエントリー群のいずれに選択されたデータの
ユニットを記憶すべきかを決定し、データのユニットの
大きさと決定されたノードエントリー群の利用可能な空
間の量とに基づいて、選択されたデータのユニットが決
定されたノードエントリー群に格納されうるかどうかを
決定し、決定されたノードエントリー群の利用可能な空
間の量がデータのユニットの大きさよりも小さいとき
に、格納装置に新しいノードエントリー群を生成し、新
しいノードエントリー群は、新しいノード識別子を有す
る新しいノードエントリーを包含しかつ新しいキー・バ
リュー表と、新しいサブノード表と、新しいデータ領域
とを備え、データのユニットを新しいデータ領域に格納
し、新しいノードエントリーの新しいノード識別子を決
定されたノードエントリーのサブノード表に格納する段
階を具備する、格納装置に関連するキー・バリュー及び
大きさを有するデータの選択されたユニットを格納する
ためのコンピュータシステムの方法によっても達成され
る。
ずれに選択されたデータのユニットを記憶すべきかを決
定する段階は、選択されたデータのユニットのキー・バ
リューを各ノードエントリーに格納されたキー・バリュ
ーと比較する段階を含むようにしてもよい。本発明の方
法では、決定されたノードエントリーは、ある量の利用
可能な空間を有する固定サイズのページ内に包含され、
選択されたデータのユニットは、ある大きさを有し、選
択されたデータのユニットが決定されたノードエントリ
ーに格納されうるかどうかを決定する段階は、選択され
たデータのユニットの大きさをページの利用可能な空間
の量と比較することを含むようにしてもよい。更に、本
発明の上記目的は、格納装置に選択されたデータユニッ
トを格納するコンピュータシステムの方法であり、格納
装置は、複数の固定サイズブロックに論理的に分けら
れ、各ブロックは、ブロックヘッダーと、タグのアレイ
と、複数のノードエントリーとを備え、各ノードエント
リーは、キー・バリュー表と、サブノード表と、データ
表とを備えている方法であって、キー・バリューを選択
されたデータユニットに割り当て、割り当てられたキー
・バリューに基づいて、どのノードエントリーに選択さ
れたデータユニットが格納されるべきかを決定し、選択
されたデータユニットが決定されたノードエントリーを
包含するブロックに格納されうるかどうかを決定し、選
択されたデータユニットが決定されたノードエントリー
を包含するブロックに格納されうるときに、選択された
データユニットが決定されたノードエントリーに格納さ
れうるかどうかを決定し、選択されたデータユニットが
決定されたノードエントリーに格納されうるときに、選
択されたデータユニットを決定されたノードエントリー
に格納し、選択されたデータユニットが決定されたノー
ドエントリーに格納されえないが決定されたノードエン
トリーを包含するブロックに格納されうるときに、新し
いノードエントリーを生成しかつ選択されたデータユニ
ットを新しいノードエントリーに格納し、新しいノード
エントリーのノード識別子を決定されたノードエントリ
ーのサブノード表に格納し、選択されたデータユニット
のキー・バリューを決定されたノードエントリーのキー
・バリュー表に格納し、選択されたデータユニットが決
定されたノードエントリーに格納されえずかつ決定され
たノードエントリーを包含するブロックに格納されえな
いときに、新しいブロックの割り当てを要求し、新しい
ノードエントリーを生成しかつ選択されたデータユニッ
トを新しいノードエントリーに格納し、ポインタノード
を決定れたノードエントリーを包含するブロックに格納
しかつ新しいノードエントリーのノード識別子をポイン
タノードに格納し、ポインタノードのノード識別子を決
定されたノードエントリーのサブノード表に格納し、選
択されたデータユニットのキー・バリューを決定された
ノードエントリーのキー・バリュー表に格納する段階を
具備するコンピュータシステムの方法によっても達成さ
れる。
ットを格納装置に格納するコンピュータシステムであっ
て、一群のデータをインデックスするトリーデータ構造
の一部として格納装置にノードエントリーを格納するノ
ード格納機構と、ノードエントリーは、それに対応付け
られて第1のノード識別子を有しかつキー・バリューを
格納する第1のキー・バリュー表と、サブノードのノー
ド識別子を格納する第1のサブノード表と、データのユ
ニットを格納する第1のデータ領域とを備え、データの
ユニットを第1のデータ領域に格納するデータ格納機構
とを備えているコンピュータシステムによっても達成さ
れる。本発明のコンピュータシステムでは、ノードエン
トリーは、トリーデータ構造に親ノードエントリーを有
し、親ノードエントリーは、それに対応付けられた第2
のノード識別子を有しかつキー・バリューを格納する第
2のキー・バリュー表と、サブノードのノード識別子を
格納する第2のサブノード表と、データのユニットを格
納する第2のデータ領域とを備え、データのユニット
は、キー・バリューを有し、データのユニットのキー・
バリューを第2のキー・バリュー表に格納するキー格納
機構と、第1のノード識別子を第2のサブノード表に格
納するサブノード格納機構とを更に備えてもよい。
タのユニットが第1のデータ領域に格納されうるかどう
かを決定する機構と、データのユニットが第1のデータ
領域に格納されうると決定されたときに、新しいノード
エントリーを格納装置に生成するノード生成機構と、新
しいノードエントリーは、新しいノード識別子を有しか
つ新しいキー・バリュー表と、新しいサブノード表と、
新しいデータ領域と備え、データのユニットを新しいデ
ータ領域に格納する第2のデータ格納機構と、ポインタ
ノードエントリーを格納装置に生成するポインタノード
生成機構と、ポインタノードエントリーは、ポインタノ
ード識別子を有し、新しいノード識別子をポインタノー
ドエントリーに格納する第2のノード格納機構と、ポイ
ンタノード識別子を第1のサブノード表に格納すうポイ
ンタノード格納機構と、データのユニットが第1のデー
タ領域に格納されうると決定されたときに、データのユ
ニットを第1のデータ領域に格納する第3のデータ格納
機構とを更に備えてもよい。本発明の上記目的は、選択
されたデータのユニットを格納装置に格納するコンピュ
ータシステムであり、選択されたデータのユニットは、
関連するキー・バリューとある大きさを有し、格納装置
は、複数のノードエントリー群(ページ)を格納し、各
ノードエントリー群(ページ)は、一つ以上のノードエ
ントリーを備えかつある量の利用可能な空間を有し、各
ノードエントリーは、固有のノード識別子を有しかつキ
ー・バリュー表と、サブノード表と、データのユニット
を格納するデータ領域とを備えるコンピュータシステム
であって、データのユニットのキー・バリューに基づい
て、複数のノードエントリー群(ページ)のどれに選択
されたデータのユニットが格納されるべきかを決定する
手段と、データのユニットの大きさ及び決定されたノー
ドエントリー群(ページ)の利用可能な空間の量に基づ
いて、選択されたデータのユニットが決定されたノード
エントリー群(ページ)に格納されうるかどうかを決定
する手段と、決定されたノードエントリー群の利用可能
な空間の量がデータのユニットの大きさよりも小さいと
きに、新しいノードエントリー群(ページ)を格納装置
に生成する手段と、新しいノードエントリー群(ペー
ジ)は、新しいノード識別子を有する新しいノードエン
トリーを包含しかつ新しいキー・バリュー表と、新しい
サブノード表と、新しいデータ領域とを備え、データの
ユニットを新しいデータ領域に格納する手段と、新しい
ノードエントリーの新しいノード識別子を決定されたノ
ードエントリーのサブノード表に格納する手段とを備え
ているコンピュータシステムによっても達成される。
ドエントリーのどれに選択されたデータのユニットが格
納されるべきかを決定する手段は、選択されたデータの
ユニットのキー・バリューを各ノードエントリーに格納
されたキー・バリューと比較する手段を含むように構成
してもよい。本発明のコンピュータシステムでは、決定
されたノードエントリーは、利用可能な空間のある量を
有している固定サイズのページ内に包含され、選択され
たデータのユニットは、ある大きさを有し、選択された
データのユニットが決定されたノードエントリーに格納
されうるかどうかを決定する手段は、選択されたデータ
のユニットの大きさをページの利用可能な空間の量と比
較することを含むように構成してもよい。更に、本発明
の上記目的は、選択されたデータユニットを格納装置に
格納するコンピュータシステムであり、格納装置は、複
数の固定サイズブロックに論理的に分けられ、各ブロッ
クは、ブロックヘッダーと、タグのアレイと、複数のノ
ードエントリーとを備え、各ノードエントリーは、キー
・バリュー表と、サブノード表と、データ表とを備えて
いるコンピュータシステムであって、キー・バリューを
選択されたデータユニットに割り当てる手段と、割り当
てられたキー・バリューに基づいて、どのノードエント
リーに選択されたデータユニットが格納されるべきかを
決定する手段と、選択されたデータユニットが決定され
たノードエントリーを包含するブロックに格納されうる
かどうかを決定する手段と、選択されたデータユニット
が決定されたノードエントリーを包含するブロックに格
納されうるときに、選択されたデータユニットが決定さ
れたノードエントリーに格納されうるかどうかを決定す
る手段と、選択されたデータユニットが決定されたノー
ドエントリーに格納されうるときに、選択されたデータ
ユニットを決定されたノードエントリーに格納する手段
と、選択されたデータユニットが決定されたノードエン
トリーに格納されえないが決定されたノードエントリー
を包含するブロックに格納されうるときに、新しいノー
ドエントリーを生成しかつ選択されたデータユニットを
新しいノードエントリーに格納する手段と、新しいノー
ドエントリーのノード識別子を決定されたノードエント
リーのサブノード表に格納する手段と、選択されたデー
タユニットのキー・バリューを決定されたノードエント
リーのキー・バリュー表に格納する手段と、選択された
データユニットが決定されたノードエントリーに格納さ
れえずかつ決定されたノードエントリーを包含するブロ
ックに格納されえないときに、新しいブロックの割り当
てを要求する手段と、新しいノードエントリーを生成し
かつ選択されたデータユニットを新しいノードエントリ
ーに格納する手段と、ポインタノードを決定れたノード
エントリーを包含するブロックに格納しかつ新しいノー
ドエントリーのノード識別子をポインタノードに格納す
る手段と、ポインタノードのノード識別子を決定された
ノードエントリーのサブノード表に格納する手段と、選
択されたデータユニットのキー・バリューを決定された
ノードエントリーのキー・バリュー表に格納する手段と
を備えているコンピュータシステムによっても達成され
る。
しかつアクセスするコンピュータ方法及び格納構造を提
供する。多次元データは、それがデータのサブユニット
に論理的に分けられることを許容する隠れ構造(埋め込
み構造)を有する。本発明により提供されるトリー・マ
ネージャは、ポインタ、可変長データレコード、他のB
トリー、及びディレクトリのようなデータを多次元Bト
リー(MDBトリー)に格納する。MDBトリーの各ノ
ードは、ゼロまたはそれ以上のキー・バリュー、サブノ
ード・テーブル、及びデータを包含することが可能な、
バイドの物理的に隣接のストリングである。二次記憶装
置は、固定サイズのブロックまたはページにしばしば論
理的に分けられるので、MDBトリーのデータのユニッ
トは、ページサイズ・サブトリーに物理的に分けられ
る。トリー・マネージャは、一つのページにあまりにも
多くのデータのユニットを格納しようと試みること、或
いはユニットがページの利用可能な空間よりも大きいと
きに、一つのページに単一のデータのユニットを格納し
ようと試みることのいずれかにより“ページ溢れ”の原
因となりうる。本発明の方法は、ページ溢れを処理する
水平及び垂直の両方向ページ分割を提供する。
りにも多くのデータのユニットを格納しようと試みると
きには、トリー・マネージャは、通常のBトリーノード
分割スキームである、ページを水平方向に分割しなけれ
ばならない。単一ページの水平分割は、別のレベルがM
DBトリーへ付加されるようにすることができ、それに
よってトリーの探索をスローダウンする。トリー・マネ
ージャが一つのページにデータのユニットを格納しよう
と試みかつデータのユニットがページの利用可能な空間
よりも大きいときには、トリー・マネージャは、データ
のユニットを選択し、かつデータのユニットを垂直方向
に分割する。垂直方向に分割されるデータのユニット
は、その挿入が溢れの原因となったデータのユニットで
あることを必要としない。トリー・マネージャは、分割
するのに最適であると考えられるデータのユニットを選
択する。垂直方向の分割は、データのユニットがサブト
リーに分けられうるということを想定する。データのユ
ニットを垂直方向に分割するために、トリー・マネージ
ャは、新しいページの割り当てを最初に要求し、次に、
第1ノードとしてトップ・オブ・ページ(TOP)ノー
ドを生成しかつ新しいページに格納する。新しいページ
は、継子ページと称される。次に、トリー・マネージャ
は、データのユニットを第1及び第2のサブトリーに分
け、かつ第2のサブトリーを新しいページに移す。第2
のサブトリーは、TOPノードに対する子ノードにな
る。トリー・マネージャは、第2のサブトリーが格納さ
れていた、継子ページへのポインタだけを包含する、ポ
インタノードを格納する。トリー・マネージャは、次
に、ポインタノードへのポインタを分割ノードのサブノ
ード・テーブルに配置する。
トに別のレベルを付加するが、しかしMDBトリーのデ
ータの別のユニットに別のレベルを付加しない。従っ
て、データのユニットを垂直方向に分割することは、M
DBトリーの探索をスローダウンしない。従って、MD
Bトリーを走査するときには、トリー・マネージャは、
もしサブトリーの最高のノードが必要なキー・バリュー
を有しないならば、複数のページにまたがっているサブ
トリーを効果的に無視する。ポインタノード及びTOP
ノードは、トリー・マネージャを除き、全てに対して見
えない。
トリー(MDBトリー)として知られているトリーデー
タ構造は、データベースような、データの量に対するイ
ンデックスとして役立つ。MDBトリーは、それらがデ
ータを保持しうるように全てが構築される、ノードで形
成される。それゆえに、MDBトリーの葉ノード及び非
葉ノードの両方とも、データを保持しうる。MDBトリ
ーに保持されうるデータの形式は、階層データを含む。
階層データに伴う一つの問題点(difficulty)は、階層
データが一般的にノードに格納するにはあまりにも大き
すぎることである;その結果、MDBトリーにおいて、
階層データは、別個のサブトリー(separate subtree)
として格納される。MDBトリーの対応するノードは、
サブトリーをアクセスするためのポインタを保持する。
MDBトリーのノードは、ノードに保持されたキー・バ
リューの探索を実行することによって捜し出される。サ
ブトリーのノードは、しかしながら、サブトリーに対す
るキー・バリューを有するノードを捜し出すための探索
をまず実行し、次に所望のノードを捜し出すためのサブ
トリーのノードの第2の探索を実行することによって見
出される。そのようにして、サブトリーは、トリーを多
次元にするトリーに、追加の次元を供給することがわか
る。
るためのコンピュータシステム20の好ましい実施例の
ブロック図である。コンピュータシステム20は、中央
処理装置(CPU)21、ランダムアクセスメモリ装置
(RAM)22、二次記憶装置23、出力装置24、及
び入力装置25を備えている。二次記憶装置23は、あ
る種のディスクシステムであることが好ましい。上述し
たように、MDBトリーは、ノードで構成されている。
図3は、ノード29のフォーマットを示す図である。ノ
ード29は、キー・バリュー表26、サブノード表2
7、及びデータ領域28を含む。キー・バリュー表は、
キー・バリュー、即ちキー・バリューK1及びK2を保
持する。これらのキー・バリューは、MDBトリーを探
索するのに用いられる探索キーとして作用する。サブノ
ード表27は、サブノードへのポインタ、即ちポインタ
1、ポインタ2、及びポインタ3を格納する。サブノー
ドは、他のノード或いはポインタノード(詳細は後述す
る)でありうる。データ領域28は、ノードにデータを
直接的に取り入れる(組み込む:incorporate )ことが
望ましいデータを保持する。キー・バリュー表26のキ
ー・バリュー及びサブノード表27のポインタによって
サーブ(提供)された役割(役務)は、MDBトリーの
小さな部分を調査することによってたぶん最もよく表さ
れる。図4は、親ノード30、第1の子ノード34、及
び第2の子ノード35を含むMDBトリーの部分のブロ
ック図である。親ノード30は、そのキー・バリュー表
にキー・バリュー“K1”を保持する。親ノード30
は、(“K1”以下のキー・バリューに対応付けられた
データを保持する)第1の子ノード34にポイントする
そのサブノード表のポインタ31及び、(“K1”より
大きいキー・バリューに対応付けられたデータを保持す
る)第2の子ノード35にポイントするポインタ33を
も保持する。
ノード表のポインタは、子ノードにだけポイントする。
サブノード表のポインタがポインタノードにもポイント
しうるということは、評価されるべきである。ポインタ
ノードは、階層データを保持するサブノードへのアクセ
スを供給する。図5は、図4の第1の子ノード34がそ
のサブノード表のポインタノード38へのポインタを含
むときを説明する図である。ポインタノード38は、次
に、サブトリー37にポイントする。サブトリー37
は、トップ・オブ・ページ(TOP)ノード39、第1
のサブノード40、及び第2のサブノード41を含む。
TOPノードは、ノード識別子(即ち、ポインタ)だけ
を保持する特種なノードである。TOPノードは、キー
・バリュー或いは他のデータを含まない。ポインタノー
ド38に対するノード識別子は、親ノード30のサブノ
ード表にポインタとして格納される。TOPノード39
に対するノード識別子は、ポインタノード38にポイン
タとして格納される。加えて、第1のサブノード40及
び第2のサブノード41に対するノード識別子は、TO
Pノード39に格納される。ポインタノード38によっ
て供給されるインダイレクション(indirection )の追
加のレベルは、あたかもそれが第1の子ノード34の
“内部(within)”に格納されるようにサブトリー37
を論理的に現すことを許容する。ポインタノード38及
びTOPノード39の詳細は、後述する。
ンタノードにもっぱらポイントしているポインタを示し
ているけれども、ノードのサブノード表は、サブノード
の多重形式に対するポインタを同時に保持しうるという
ことは、評価されるべきである。それゆえに、ノードの
サブノード表は、子ノードへのポインタ及びポインタノ
ードへのポインタを同時に含みうる。図6は、MDBト
リー46を説明するブロック図である。根ノード48
は、三つの子サブノード50、52、及び54を有す
る。次に、サブノード50は、三つのサブノード56、
58、及び60を有する。サブノード56及び58は、
それらが子ノードを有しないので葉ノードとして知られ
る。葉ノードは、キー・バリュー或いはサブノードへの
ポインタを包含しない。サブノード60は、サブノード
76、78、80、及び82を含むサブトリー74への
ポインタを包含するポインタノードである。根ノード4
8のサブノード52は、複数のサブノード62、64、
66をも含む。サブノード62、64及び66は、全て
葉ノードである。根ノード48のサブノード54は、同
様に複数のサブノード68、70及び72を有する。サ
ブノード68及び72は、葉ノードであり、サブノード
70は、サブトリー84にポイントするポインタノード
である。サブトリー84は、TOPノード86及び葉ノ
ード88を含む。
リーがデータをインデックスするのに用いられうるかを
説明するために一つの例が有用であろう。以下に示す表
Aは、MDBトリーに格納されるべくよく適合した実例
のデータファイルを包含する。データファイルのデータ
のユニットは、各ユニットに包含される詳細の種々なレ
ベルにより、種々の長さを有する。階層データを表わす
データのユニットは、ビジネス電話帳(business telep
hone directory)(即ち、電子ビジネス電話帳(electr
onic business telephone directory )))に一般的に
見出される。電話帳は、通常、三つ以上の主題ヘッディ
ング(subject headings)を包含するけれども、説明の
簡単化のために、データファイルは、三つの主題ヘッデ
ィング(I、II、III )だけで示されている。データの
ユニットは、主題ヘッディング(“AUTOMOTIVE PARTS
(自動車部品)”、“MOVING COMPANIES(引っ越し会
社)”、及び“WASHERS & DRYERS(洗濯機及び乾燥
機)”)によってアルファベット順に示されている。こ
の形式の情報の典型であるように、データのユニットの
あるものは、サブユニットに論理的に分けられうる。例
えば、引っ越し会社(moving company)“U-HAUL-IT CO
MPANY ”の異なる店の位置(store locations )は、1
0のサブユニットに論理的に分かれている。サブユニッ
トは、店の番号順である。
23に効率的に編成されかつ格納されるようにする(図
2)。 通常のBトリーは、キー・バリュー及びデータ
へのポインタだけを格納するので、通常のBトリーは、
表Aに示されたデータを収容できない。
B* トリーでさえも、B* トリーがその葉ノードに小さ
な、データの最小単位だけを格納するので、表Aに示さ
れたデータを収容することができない。MDBトリー
は、データを格納できるので、データのユニットは、サ
ブトリーを包含しえ、かつサブトリーのサブノードは、
別のサブトリーを包含しうる、等。MDBトリーは、サ
ブユニットへのデータの論理的な分割を考慮して、それ
によりデータの大きなユニットがその中に格納されるこ
とを許容する。表Aのデータを保持する例示のMDBト
リーの説明を続ける前に、MDBトリーに対するページ
フォーマットを最初に説明することが必要である。図7
は、本発明の好ましい実施例のMDBトリーのページ8
8に対する格納フォーマットのブロック図である。ペー
ジは、格納空間の隣接のブロックであり、一般的に4K
Bの大きさを有する。MDBトリーは、二次記憶装置2
3に書き込まれかつページユニットで二次記憶装置23
から読み取られる。空間最適化のために、MDBトリー
の各ノードは、長さにおいて一ページであることが好ま
しい。ページ88は、ページ識別子92及びタグ94の
アレイを包含する、ヘッダー(見出し)領域90を包含
する。ヘッダー領域90は、ページ88に残された自由
空間の量を特定するインディケータ(標識)をも包含し
うる。ページ88の残った部分は、トップ・オブ・ザ・
ページ(TOP)ノード・エントリー96、複数のノー
ド・エントリー96、98、100、及び104、そし
て自由空間領域106を包含する。自由空間領域106
は、現在割り当てられていない格納空間である。タグ9
4のアレイは、ページ88に格納された各ノードエント
リーの開始を識別するオフセットを包含する。各ノード
エントリー96、98、100、及び104は、他のノ
ードエントリーと同じ大きさである必要はない。TOP
ノードエントリー96は、TAB[0](即ち、タグ9
4のアレイにおける最初のタグ)によって常に識別され
ることが好ましい。タグ94のアレイがページ88のノ
ードエントリー96、98、100、及び104の位置
の跡をつけるので、ノードエントリーへの外部参照は、
ページ数とタグ数だけの跡をつけなければならない。二
次記憶装置にデータのユニットを格納するときに、本願
発明によって供給されたトリー・マネージャは、一つの
ページにあまりにも多くのデータのユニットを格納しよ
うと試みることによって、或いはユニットがページの利
用可能な空間よりも大きいときにページにデータのユニ
ットを格納しようと試みることによるいずれかで“ペー
ジ溢れ”の原因となりうる。本願発明の方法は、ページ
溢れを処理する、水平及び垂直の、双方向ページ分割を
提供する。水平分割は、通常のBトリーアルゴリズムに
よって用いられる分割の形式である。水平及び垂直ペー
ジ分割は、図12〜8Cを参照して、以下に詳細に説明
する。
ときの表Aの上部に示されたデータのブロック図であ
る。第1のページ110は、ノード112、114、1
16、118、120、122、124及び126を包
含する。ページ110は、TOPノード128及びポイ
ンタノード130、132を更に含む。MDBトリー1
08の第2のページ134は、TOPノード136とノ
ード138を包含する。MDBトリー108の第3のペ
ージは、ノード142、144、及び146とTOPノ
ード148を包含する。根ノード112は、そのキー・
バリュー表にキー・バリュー“B”及び“P”を、そし
てそのサブノード表に子ノード114、116、及び1
18に対するノード識別子を包含する。通常のBトリー
におけるように、ノード112に格納されたキー・バリ
ューは、MDBトリー108を探索するときに次の下方
レベルへのどの経路を追従すべきかを決定する基礎を供
給する。それゆえに、探索されているキー・バリューが
“B”以下であるときには、子ノード114にポイント
する、ポインタ113が追従される。探索されているキ
ー・バリューが“B”よりも大きいが“P”以下である
ときには、子ノード116にポイントするポインタ11
5が追従される。最後に、探索されているキー・バリュ
ーが“P”よりも大きいときには、子ノード118にポ
イントするポインタ117が追従される。ノード112
は、そのデータ領域にいかなるデータをも含まない。よ
り実用的な電話帳は、更に多くのキー・バリューを包含
することに注目すべきである。
主題ヘッディング(主題見出し)の下にエントリーをイ
ンデックスする、二次キー・バリュー“G”を包含す
る。ノード114のサブノード表は、サブノード120
と122に対するノード識別子(即ち、ポインタ119
と121)を包含する。サブノード120は、いかなる
キー・バリューもノード識別子も包含していない。サブ
ノード120は、店名(the name of the store )、店
のアドレス(address of the store)、店の電話番号
(telephone number of the store )、及び部品一覧表
(parts list)を含む、“AL'S PARTS STORE”に対する
データを包含する。サブノード122は、サブノード1
20のように、キー・バリューを包含しないが、しかし
ポインタノード130に対するノード識別子133を包
含する。ポインタノード130は、ノード122以外の
ページに格納されるサブトリー134に対するノード識
別子131を包含する。サブトリー134は、TOPノ
ード136及びサブノード138からなる。TOPノー
ド136は、サブノード122と同じページに格納され
るにはあまりにも大きいデータを包含する、サブノード
138に対するノード識別子137を包含する。サブノ
ード138のデータ領域に格納されたデータは、絵(pi
cture )のビットマップ及び部品一覧表を含む。サブノ
ード138は、そのキー・バリュー表にキー・バリュー
を包含せず、かつそのサブノード表にノード識別子を包
含しない。
VING COMPANIES”の下にエントリーをインデックスす
る、二次キー・バリュー“P”を包含する。子ノード1
16のサブノード表は、二つのノード識別子125と1
27を包含する。ノード識別子125は、サブノード1
24にポイントし、かつ“P”以下の二次キー・バリュ
ーを捜しているときに追従される。ノード識別子127
は、サブノード126にポイントし、かつ“P”よりも
大きい二次キー・バリューを捜しているときに追従され
る。サブノード124は、キー・バリュー或いはノード
識別子を含まない葉ノードである。ノード124のデー
タ領域は、しかしながら、“JOE'S MOVERS, INC.”に対
するデータを保持する。サブノード126もキー・バリ
ューを含まない。ノード126は、他方、ポインタノー
ド132にポイントするノード識別子133を含む。ポ
インタノード132は、サブトリー140にポイントす
る。サブトリー140は、TOPノード148、及び三
つのサブノード142、144、及び146からなる。
TOPノード148は、サブノード144及び146に
包含されたデータをインデックスする、サブノード14
2にポイントするノード識別子141を包含する。サブ
ノード144及び146のデータ領域は、“U-HAUL-IT-
COMPANY ”に関するデータを包含する。
“5”を包含する。サブノード142は、更に、それぞ
れサブノード144及び146にポイントする、ノード
識別子143及び145を含む。ノード識別子143
は、“5”以下の格納番号二次キー・バリューに対して
追従される。ノード144は、そのデータ領域の格納
“1”から“5”までに対するデータを保持するサブト
リー140の葉ノードである。サブノード144は、キ
ー・バリュー或いはノード識別子を含まない。サブノー
ド146もサブトリー140の葉ノードであるが、しか
しそのデータ領域の格納“6”から“10”までに対す
るデータを保持する。サブノード144のように、サブ
ノード146は、キー・バリュー或いはノード識別子を
含まない。サブノード144及び146は、サブノード
142の子ノードである。子ノード118は、MDBト
リー108の葉ノードである。子ノード118は、キー
・バリュー或いはノード識別子を含まない。ノード11
8のデータ領域は、主題ヘッディング“WASHERS & DRYE
RS”及び相互参照“SEE APPLIANCES”を識別する。サブ
トリー140がどのように実際に二次記憶装置に格納さ
れるかを理解することは、有用である。しかし、まず初
めに、サブトリー146に包含されるデータのユニット
の構造を調べることは、重要である。図9は、データの
ユニット150のブロック図であり、図10は、それが
サブユニット152、154、及び156に区分された
後のデータのユニット150のブロック図である。
き二次記憶装置に格納されたサブトリー140のブロッ
ク図である。サブトリー140は、四つのノードエント
リー148、142、144、及び146からなる。T
OPノード148は、サブノード142へのポインタ1
41を包含する。TOP140は、キー・バリュー或い
はデータを包含しない。サブノード142は、そのキー
・バリュー表に“5”を包含し、そのサブノード表にポ
インタ143及び145を包含する。ポインタ143
は、サブノード144にポイントし、ポインタ145
は、サブノード146にポインタする。サブノード14
4は、キー・バリュー或いはサブノードへのポインタを
包含しないが、データのサブユニット152(図10)
を包含する。同様に、サブノード146は、キー・バリ
ュー或いはサブノードへのポインタを包含しないが、デ
ータのサブユニット154(図10)を包含する。ここ
で図8を参照すると、MDBトリー108は、適当なキ
ー・バリューが見出されたときに依存してキー・バリュ
ーを調べかつポインタを追従する通常のBトリー走査ル
ーチンを用いて走査される。ポインタノード130及び
132そしてTOPノード136及び148は、ルーチ
ンがノード122、126の“内部を見る(捜す)”こ
とがないかぎり、MDBトリー108を保守するルーチ
ンに対して見えない。
挿入するために、本発明の好ましい実施例は、挿入ルー
チンを提供する。挿入ルーチンは、図12〜8Cを参照
して以下に詳細に説明する。しかしながら、挿入ルーチ
ンの詳細を述べる前に、挿入ルーチン及び水平・垂直分
割の概要を最初に述べることは、有用である。MDBト
リー108のどこ(即ち、どのページ)にデータのユニ
ットが属するのかを決定した後に、トリー・マネージャ
は、ページにデータのユニットを格納することを試み
る。もしユニットがページの利用可能な空間よりも大き
いならば、好ましい実施例は、ページに現在格納された
データのユニット、挿入されているデータのユニット、
或いはページ自体のいずれかを分割することを試みる。
データのユニットを分割することは、垂直分割と呼ば
れ、ページを分割することは、水平分割と呼ばれる。一
般的に、垂直分割は、分割されるデータのユニットがサ
ブノードに区分されうることを想定する。サブノードの
一つは、ページに格納され、そして他のサブノードは、
新しいページにサブトリーとして格納される。(サブト
リーは、一つのサブノードだけで表されうる。)次に、
新しいページへのポインタは、サブノードのサブノード
表にノードエントリーとしてリストされた、ポインタノ
ードに格納される。ポインタノード及び新しいページの
生成は、MDBトリー全体に別のレベルを付加しない。
それよりも、分割されたデータのユニットだけが追加の
レベルを得る。
トの数の決定は、ページで利用可能な自由空間の数及び
データのユニットの構造に依存する。データのユニット
150(図9)は、あらゆる数のサブユニットに分割さ
れうる。本発明の好ましい実施例がページにあまりにも
多くのデータのユニットを格納することを試みるときに
は、もしデータのユニットが垂直方向に分割されえない
ならば、ページは水平方向に分割されうる。一般的に、
ページを水平方向に分割するために、トリー・マネージ
ャは、ページのノードエントリーのサブセットを新しい
隣接ページに移動し、かつ新しいキー・バリュー及び新
しいページへのポインタを、分割されるページの親ペー
ジに格納する。通常のBトリーにおけるように、古いペ
ージと新しい隣接ページは、ページヘッダー(page hea
ders)の次ページ及び前ページ・リンクフィールド(ne
xt page and previous page link fields )によってリ
ンクされる。次ページ及び前ページ・リンクフィールド
は、トリーの上部レベルページを巡回することを必要と
せずにトリー走査を容易にする。MDBトリーの構造の
上記説明を与えて、どのようにトリーが保守されるかを
調べることは、有用である。本発明の好ましい実施例に
おいて、MDBトリーは、ファイルシステムの一部であ
るトリー・マネージャによって保守される。図12は、
MDBトリーに新しいデータのユニットを格納すること
におけるトリー・マネージャによって実行されるステッ
プスのフロー図である。ステップ160では、トリー・
マネージャは、新しいデータのユニットが格納されるべ
きページを選択する。この選択は、適当なページを見出
すためにMDBトリーの探索を要求する。ステップ16
2では、現行ページ変数を選択されたページに設定す
る。現行ページ変数は、値を保持するのに適用なあらゆ
るデータ構造である。ステップ164では、トリー・マ
ネージャは、MDBトリーに挿入されるべき新しいデー
タのユニットが、現行ページ変数によって指定されたよ
うに現行ページに適合するかどうかを決定する。即ち、
トリー・マネージャは、データのユニットの大きさが現
行ページの利用可能な空間の大きさよりも小さいかどう
かを決定する。もしデータのユニットが現行ページに適
合するならば、ステップ166では、トリー・マネージ
ャが現行ページにデータのユニットを格納し、そして挿
入されたユニットの親ノードを更新する。親ノードの更
新は、挿入されたユニットへのポインタを親ノードのサ
ブノード表に格納することを含む。
しないならば(ステップ164)、ステップ168で
は、トリー・マネージャが現行ページの全てのサブトリ
ーの重みを決定する。サブトリーの“重み”は、サブト
リーの全てのサブノードの大きさである。もし1KBよ
りも大きな重みを有するサブトリーが存在するならば
(ステップ170)、例えば、トリー・マネージャは、
そのサブトリーを垂直方向に分割する。垂直分割は、図
13を参照してより詳細に説明する。もし1KBよりも
大きな重みを有するサブトリーが存在しないならば(ス
テップ170)、トリー・マネージャは、現行ページを
水平方向に分割する。水平分割は、図14を参照してよ
り詳細に説明する。図13は、ノード(図12及び図1
3の“B”を参照)を垂直方向に分割するためにトリー
・マネージャによって実行されるステップのフロー図で
ある。ノードの垂直分割は、ノードのサブトリーを新し
いページに移動させる。ステップ172では、トリー・
マネージャは、1KBよりも大きい重みを有するサブト
リーを選択する(ステップ170参照)。ステップ17
4では、トリー・マネージャは、ポインタノードを生成
し、かつ現行ページにポインタノードを格納する。ステ
ップ176では、トリー・マネージャは、選択されたサ
ブトリーの親ノードのサブノード表にポインタノードの
ノード識別子を格納する。ステップ178では、トリー
・マネージャは、ファイルシステムによって供給された
メモリマネージメントルーチンから新しいページの割り
当てを要求し、新しいページにTOPノードを格納す
る。ステップ180では、トリー・マネージャは、選択
されたサブトリーを新しいページに格納し(TOPノー
ドのサブトリーとして)、かつサブトリーへのポインタ
をTOPノードのサブノード表に格納する。ステップ1
82では、トリー・マネージャは、TOPノードへのポ
インタをポインタノードに格納する。垂直分割の後、ス
テップ184では、トリー・マネージャは、データのユ
ニットが現行ページに適合するかどうかを再び決定する
(図12の“C”を参照)。もしデータのユニットが現
行ページにまだ適合しないならば、トリー・マネージャ
は、現行ページを水平方向に分割する。もしデータのユ
ニットが現行ページに適合するならば、ステップ186
では、トリー・マネージャは、データのユニットを現行
ページに格納し、かつデータのユニットへのポインタを
挿入されたユニットの親ノードのサブノード表に格納す
る。
トリー・マネージャによって用いられるステップのフロ
ー図である。ステップ188では、トリー・マネージャ
は、ファイルシステムによって供給されたメモリマネー
ジメントルーチンから新しいページの割り当てを要求す
る。トリーの終わり(または始まり)に新しいノードを
挿入するときに、水平分割の特別の場合が発生する。ペ
ージの次ページ(または前ページ)リンク・フィールド
が空白(null)なので、トリーの終わり(または始ま
り)を認識することは、容易である。ステップ190で
は、トリー・マネージャは、現行ページがMDBトリー
の終わりであるか或いは始まりであるかを決定する。も
しそうであれば、半分にページを分割する代わりに、ス
テップ196では、トリー・マネージャは、新しいデー
タのユニットだけを新たに割り当てられた次ページに格
納する。これは、オーバーヘッドをセーブし、かつノー
ドがキー・バリュー・シーケンスで一度に一つ加えられ
るときに、短縮空間利用(compact space utilization
)に導く。もし現行ページがMDBトリーの終わりま
たは始まりでないならば、ステップ192では、トリー
・マネージャは、新しいページが現行ページの下(即
ち、現行ページよりも下方のアドレス)に物理的に位置
付けられているかどうかを決定する。もし新しいページ
が分割されるページの下に物理的に位置付けられている
ならば、ステップ194では、トリー・マネージャは、
中間のキー・バリュー以下のキー・バリューを有する子
ノードの全てを新しいページに移動する。中間キー・バ
リューは、分割されるページに格納された順序付けられ
たキー・バリューの全ての中間である。もし新しいペー
ジが現行ページの上(即ち、より高位のメモリアドレ
ス)に物理的に位置付けられているならば、ステップ1
98では、トリー・マネージャは、中間キー・バリュー
以上のキー・バリューを有する子ノードの全てを新しい
ページに移動する。子ノードを新しいページに移動した
後に、ステップ200では、トリー・マネージャは、中
間キー・バリューを、移動した子ノードに対する親ノー
ドのキー・バリュー表に格納し、かつ新しいページのT
OPノードのノード識別子を、移動した子ノードに対す
る親ノードのサブノード表に格納する。
キー・バリューを有する全ての子ノードを隣接次ページ
に移動する。左水平分割は、分割キー・バリュー以下の
キー・バリューを有する全ての子ノードを隣接前ページ
に移動する。オリジナル・ページでは、ノードの削除さ
れたサブセットは、ページ空間及びページタグをフリー
アップ(free-up )する。本発明の好ましい実施例にお
いて、上記方法は、格納された情報を表しかつ検索する
ための均一でかつ容易に保守可能な手段に導く。上記方
法は、例えば、大きなレコード、非常に大きなフィール
ド・オカレンス(field occurrences )(バイナリ・ラ
ージ・オブジェクト)、及びビットマップを表わすのに
有用である。ビットマップ、例えばビデオ画像は、しば
しば時間と共に成長するので、ビットマップは、多次元
Bトリーによって特によく表される。本発明により提供
される保守アルゴリズムは、サイズにおけるビットマッ
プの増大を効果的に扱う。本発明の方法及びシステム
は、好ましい実施例により記載されたけれども、本発明
がこの実施例に限定されたことを企図していない。本発
明のスピリット内における変更は、この技術分野の者に
とっては自明であろう。本発明のスコープは、特許請求
の範囲によってのみ規定される。
は、データの一群をインデックスするトリーデータ構造
の一部として格納装置に第1の関連するノード識別子を
有する第1のノードエントリーを格納し、第1のノード
エントリーは、キー・バリューを格納するフィールド
と、サブノードに対する識別情報を格納するフィールド
と、データのユニットを格納する第1のデータ領域とを
備え、データのユニットを第1のデータ領域に格納する
段階を具備するので、ページ溢れを生じることなく効率
よく格納装置にデータのユニットを格納することができ
る。本発明のコンピュータシステムの方法では、データ
の一群をインデックスするトリーデータ構造の一部とし
て格納装置に第1の関連するノード識別子を有する第1
のノードエントリーを供給し、第1のノードエントリー
は、キー・バリューを格納するフィールドと、サブノー
ドに対する識別子情報を格納するフィールドと、データ
のユニットを格納する第1のデータ領域とを備え、格納
装置にデータのユニットを格納するために要求を受け取
り、データのユニットが第1のデータ領域に格納されう
るかどうかを決定し、データのユニットが第1のデータ
領域に格納されえないことが決定されたときに、格納装
置に新しいノードエントリーを生成し、新しいノードエ
ントリーは、新しいノード識別子を有しかつ新しいキー
・バリュー表と、新しいサブノード表と、新しいデータ
領域とを備え、データのユニットを新しいデータ領域に
格納し、格納装置にポインタノードエントリーを生成
し、ポインタノードエントリーは、ポインタノード識別
子を有し、新たなノード識別子をポインタノードエント
リーに格納し、ポインタノード識別子を第1のサブノー
ド表に格納し、データのユニットが第1のデータ領域に
格納されうることが決定されたときに、データのユニッ
トを第1のデータ領域に格納する段階を具備するので、
ページ溢れを生じることなく効率よく格納装置にデータ
のユニットを格納することができる。
法では、複数のノードエントリー群を格納装置に格納
し、各ノードエントリー群は、一つ以上のノードエント
リーを備えかつある量の利用可能な空間を有し、各ノー
ドエントリーは、固有なノード識別子を有しかつキー・
バリュー表と、サブノード表と、データのユニットを格
納するデータ領域とを備え、データのユニットのキー・
バリューに基づいて、複数のノードエントリー群のいず
れに選択されたデータのユニットを記憶すべきかを決定
し、データのユニットの大きさと決定されたノードエン
トリー群の利用可能な空間の量とに基づいて、選択され
たデータのユニットが決定されたノードエントリー群に
格納されうるかどうかを決定し、決定されたノードエン
トリー群の利用可能な空間の量がデータのユニットの大
きさよりも小さいときに、格納装置に新しいノードエン
トリー群を生成し、新しいノードエントリー群は、新し
いノード識別子を有する新しいノードエントリーを包含
しかつ新しいキー・バリュー表と、新しいサブノード表
と、新しいデータ領域とを備え、データのユニットを新
しいデータ領域に格納し、新しいノードエントリーの新
しいノード識別子を決定されたノードエントリーのサブ
ノード表に格納する段階を具備するので、関連するキー
・バリュー及び大きさを有するデータの選択されたユニ
ットを、ページ溢れを発生しないで効率よく格納装置に
格納することができる。
は、格納装置は、複数の固定サイズブロックに論理的に
分けられ、各ブロックは、ブロックヘッダーと、タグの
アレイと、複数のノードエントリーとを備え、各ノード
エントリーは、キー・バリュー表と、サブノード表と、
データ表とを備えている方法であって、キー・バリュー
を選択されたデータユニットに割り当て、割り当てられ
たキー・バリューに基づいて、どのノードエントリーに
選択されたデータユニットが格納されるべきかを決定
し、選択されたデータユニットが決定されたノードエン
トリーを包含するブロックに格納されうるかどうかを決
定し、選択されたデータユニットが決定されたノードエ
ントリーを包含するブロックに格納されうるときに、選
択されたデータユニットが決定されたノードエントリー
に格納されうるかどうかを決定し、選択されたデータユ
ニットが決定されたノードエントリーに格納されうると
きに、選択されたデータユニットを決定されたノードエ
ントリーに格納し、選択されたデータユニットが決定さ
れたノードエントリーに格納されえないが決定されたノ
ードエントリーを包含するブロックに格納されうるとき
に、新しいノードエントリーを生成しかつ選択されたデ
ータユニットを新しいノードエントリーに格納し、新し
いノードエントリーのノード識別子を決定されたノード
エントリーのサブノード表に格納し、選択されたデータ
ユニットのキー・バリューを決定されたノードエントリ
ーのキー・バリュー表に格納し、選択されたデータユニ
ットが決定されたノードエントリーに格納されえずかつ
決定されたノードエントリーを包含するブロックに格納
されえないときに、新しいブロックの割り当てを要求
し、新しいノードエントリーを生成しかつ選択されたデ
ータユニットを新しいノードエントリーに格納し、ポイ
ンタノードを決定れたノードエントリーを包含するブロ
ックに格納しかつ新しいノードエントリーのノード識別
子をポインタノードに格納し、ポインタノードのノード
識別子を決定されたノードエントリーのサブノード表に
格納し、選択されたデータユニットのキー・バリューを
決定されたノードエントリーのキー・バリュー表に格納
する段階を具備するので、ページ溢れを発生することな
く、効率的に選択されたデータユニットを格納装置に格
納することができる。
のデータをインデックスするトリーデータ構造の一部と
して格納装置にノードエントリーを格納するノード格納
機構と、ノードエントリーは、それに対応付けられて第
1のノード識別子を有しかつキー・バリューを格納する
第1のキー・バリュー表と、サブノードのノード識別子
を格納する第1のサブノード表と、データのユニットを
格納する第1のデータ領域とを備え、データのユニット
を第1のデータ領域に格納するデータ格納機構とを備え
ているので、ページ溢れを発生することなく効率よくデ
ータのユニットを格納装置に格納することができる。本
発明のコンピュータシステムでは、選択されたデータの
ユニットは、関連するキー・バリューとある大きさを有
し、格納装置は、複数のノードエントリー群(ページ)
を格納し、各ノードエントリー群(ページ)は、一つ以
上のノードエントリーを備えかつある量の利用可能な空
間を有し、各ノードエントリーは、固有のノード識別子
を有しかつキー・バリュー表と、サブノード表と、デー
タのユニットを格納するデータ領域とを備えるコンピュ
ータシステムであって、データのユニットのキー・バリ
ューに基づいて、複数のノードエントリー群(ページ)
のどれに選択されたデータのユニットが格納されるべき
かを決定する手段と、データのユニットの大きさ及び決
定されたノードエントリー群(ページ)の利用可能な空
間の量に基づいて、選択されたデータのユニットが決定
されたノードエントリー群(ページ)に格納されうるか
どうかを決定する手段と、決定されたノードエントリー
群の利用可能な空間の量がデータのユニットの大きさよ
りも小さいときに、新しいノードエントリー群(ペー
ジ)を格納装置に生成する手段と、新しいノードエント
リー群(ページ)は、新しいノード識別子を有する新し
いノードエントリーを包含しかつ新しいキー・バリュー
表と、新しいサブノード表と、新しいデータ領域とを備
え、データのユニットを新しいデータ領域に格納する手
段と、新しいノードエントリーの新しいノード識別子を
決定されたノードエントリーのサブノード表に格納する
手段とを備えているので、ページ溢れを発生することな
く効率よく選択されたデータのユニットを格納装置に格
納することができる。
装置は、複数の固定サイズブロックに論理的に分けら
れ、各ブロックは、ブロックヘッダーと、タグのアレイ
と、複数のノードエントリーとを備え、各ノードエント
リーは、キー・バリュー表と、サブノード表と、データ
表とを備えているコンピュータシステムであって、キー
・バリューを選択されたデータユニットに割り当てる手
段と、割り当てられたキー・バリューに基づいて、どの
ノードエントリーに選択されたデータユニットが格納さ
れるべきかを決定する手段と、選択されたデータユニッ
トが決定されたノードエントリーを包含するブロックに
格納されうるかどうかを決定する手段と、選択されたデ
ータユニットが決定されたノードエントリーを包含する
ブロックに格納されうるときに、選択されたデータユニ
ットが決定されたノードエントリーに格納されうるかど
うかを決定する手段と、選択されたデータユニットが決
定されたノードエントリーに格納されうるときに、選択
されたデータユニットを決定されたノードエントリーに
格納する手段と、選択されたデータユニットが決定され
たノードエントリーに格納されえないが決定されたノー
ドエントリーを包含するブロックに格納されうるとき
に、新しいノードエントリーを生成しかつ選択されたデ
ータユニットを新しいノードエントリーに格納する手段
と、新しいノードエントリーのノード識別子を決定され
たノードエントリーのサブノード表に格納する手段と、
選択されたデータユニットのキー・バリューを決定され
たノードエントリーのキー・バリュー表に格納する手段
と、選択されたデータユニットが決定されたノードエン
トリーに格納されえずかつ決定されたノードエントリー
を包含するブロックに格納されえないときに、新しいブ
ロックの割り当てを要求する手段と、新しいノードエン
トリーを生成しかつ選択されたデータユニットを新しい
ノードエントリーに格納する手段と、ポインタノードを
決定れたノードエントリーを包含するブロックに格納し
かつ新しいノードエントリーのノード識別子をポインタ
ノードに格納する手段と、ポインタノードのノード識別
子を決定されたノードエントリーのサブノード表に格納
する手段と、選択されたデータユニットのキー・バリュ
ーを決定されたノードエントリーのキー・バリュー表に
格納する手段とを備えているので、ページ溢れを発生す
ることなく効率よく選択されたデータユニットを格納装
置に格納することができる。
タシステムの好ましい実施例のブロック図である。
ブル、及びデータ領域を備えているノードのブロック図
である。
及び第2の子ノードのブロック図である。
第1の子ノードのブロック図である。
する格納フォーマットのブロック図である。
されたデータを説明するためのブロック図である。
に格納されたデータのユニットのブロック図である。
ニットのブロック図である。
置に格納された図10のデータのサブユニットのブロッ
ク図である。
置にデータのユニットを格納するために好ましい実施例
に用いた方法の詳細なフロー図である。
置にデータのユニットを格納するために好ましい実施例
に用いた方法の詳細なフロー図である。
置にデータのユニットを格納するために好ましい実施例
に用いた方法の詳細なフロー図である。
Claims (18)
- 【請求項1】 格納装置にデータのユニットを格納する
コンピュータシステムの方法であって、データの一群を
インデックスするトリーデータ構造の一部として格納装
置に第1の関連するノード識別子を有する第1のノード
エントリーを格納し、該第1のノードエントリーは、キ
ー・バリューを格納するフィールドと、サブノードに対
する識別情報を格納するフィールドと、データのユニッ
トを格納する第1のデータ領域とを備え、 前記データのユニットを前記第1のデータ領域に格納す
る段階を具備することを特徴とする方法。 - 【請求項2】 前記トリーデータ構造の一部として前記
格納装置に第2のノードエントリーを格納し、 前記第1のノードエントリーにサブノードに対する識別
情報を格納するために前記フィールドに前記第2のノー
ドエントリーに対する識別子情報を格納する段階を更に
具備することを特徴とする請求項1に記載の方法。 - 【請求項3】 前記トリーデータ構造の一部として前記
格納装置に前記第2のノードエントリーを格納する段階
は、データだけからなりかつ前記トリー構造の一部とし
て前記格納装置にキー・バリュー及びサブノードに対す
る識別情報を有していない、前記第2のノードエントリ
ーを格納する段階を更に具備することを特徴とする請求
項2に記載の方法。 - 【請求項4】 前記トリーデータ構造の一部として前記
格納装置に前記第2のノードエントリーを格納する段階
は、該トリー構造の一部として該格納装置に、フィール
ド格納キー・バリュー、サブノードに対するフィールド
格納識別子情報、及びデータのユニットを格納するため
のデータ領域を備えている、前記第2のノードエントリ
ーを格納する段階を更に具備することを特徴とする請求
項2に記載の方法。 - 【請求項5】 前記格納装置に前記トリー構造のデータ
のサブトリーを格納する段階を更に備え、そして前記第
2のノードエントリーを格納する手段は、前記トリー構
造の一部として前記記憶装置に前記第2のノードエント
リーとしてポインタノードを格納する段階を更に具備
し、前記ポインタノードは、前記データのユニットのサ
ブトリーへのポインタを保持することを特徴とする請求
項2に記載の方法。 - 【請求項6】 前記トリーデータ構造に、前記第1のノ
ードエントリーに対する親ノードエントリーを格納し、
該親ノードエントリーは、それに対応付けられた第2の
ノード識別子を有しかつキー・バリューを格納するフィ
ールドと、サブトリーに対する識別子情報を格納するフ
ィールドと、データのユニットを格納するデータ領域と
を備え、該データのユニットは、キー・バリューを有
し、 前記親ノードエントリーのキー・バリューを格納するた
めの前記フィールドに前記データのユニットの前記キー
・バリューを格納し、 前記親ノードエントリーのサブノードに対する識別子情
報を格納するためのフィールドに前記第1のノード識別
子を格納する段階を更に具備することを特徴とする請求
項1に記載の方法。 - 【請求項7】 格納装置にデータのユニットを格納する
コンピュータシステムの方法であって、 データの一群をインデックスするトリーデータ構造の一
部として前記格納装置に第1の関連するノード識別子を
有する第1のノードエントリーを供給し、該第1のノー
ドエントリーは、キー・バリューを格納するフィールド
と、サブノードに対する識別子情報を格納するフィール
ドと、データのユニットを格納する第1のデータ領域と
を備え、 前記格納装置に前記データのユニットを格納するために
要求を受け取り、 前記データのユニットが前記第1のデータ領域に格納さ
れうるかどうかを決定し、 前記データのユニットが前記第1のデータ領域に格納さ
れえないことが決定されたときに、 前記格納装置に新しいノードエントリーを生成し、該新
しいノードエントリーは、新しいノード識別子を有しか
つ新しいキー・バリュー表と、新しいサブノード表と、
新しいデータ領域とを備え、 前記データのユニットを前記新しいデータ領域に格納
し、 前記格納装置にポインタノードエントリーを生成し、該
ポインタノードエントリーは、ポインタノード識別子を
有し、 前記新たなノード識別子を前記ポインタノードエントリ
ーに格納し、 前記ポインタノード識別子を前記第1のサブノード表に
格納し、 前記データのユニットが前記第1のデータ領域に格納さ
れうることが決定されたときに、該データのユニットを
該第1のデータ領域に格納する段階を具備することを特
徴とする方法。 - 【請求項8】 格納装置に関連するキー・バリュー及び
大きさを有するデータの選択されたユニットを格納する
ためのコンピュータシステムの方法であって、 複数のノードエントリー群を前記格納装置に格納し、各
ノードエントリー群は、一つ以上のノードエントリーを
備えかつある量の利用可能な空間を有し、各ノードエン
トリーは、固有なノード識別子を有しかつキー・バリュ
ー表と、サブノード表と、データのユニットを格納する
データ領域とを備え、 前記データのユニットの前記キー・バリューに基づい
て、前記複数のノードエントリー群のいずれに前記選択
されたデータのユニットを記憶すべきかを決定し、 前記データのユニットの前記大きさと前記決定されたノ
ードエントリー群の利用可能な空間の量とに基づいて、
前記選択されたデータのユニットが前記決定されたノー
ドエントリー群に格納されうるかどうかを決定し、 前記決定されたノードエントリー群の前記利用可能な空
間の量が前記データのユニットの前記大きさよりも小さ
いときに、前記格納装置に新しいノードエントリー群を
生成し、該新しいノードエントリー群は、新しいノード
識別子を有する新しいノードエントリーを包含しかつ新
しいキー・バリュー表と、新しいサブノード表と、新し
いデータ領域とを備え、 前記データのユニットを前記新しいデータ領域に格納
し、 前記新しいノードエントリーの前記新しいノード識別子
を前記決定されたノードエントリーの前記サブノード表
に格納する段階を具備することを特徴とする方法。 - 【請求項9】 前記ノードエントリーのいずれに前記選
択されたデータのユニットを記憶すべきかを決定する段
階は、前記選択されたデータのユニットの前記キー・バ
リューを各ノードエントリーに格納されたキー・バリュ
ーと比較する段階を含むことを特徴とする請求項8に記
載の方法。 - 【請求項10】 前記決定されたノードエントリーは、
ある量の利用可能な空間を有する固定サイズのページ内
に包含され、前記選択されたデータのユニットは、ある
大きさを有し、前記選択されたデータのユニットが前記
決定されたノードエントリーに格納されうるかどうかを
決定する段階は、前記選択されたデータのユニットの前
記大きさを前記ページの利用可能な空間の前記量と比較
することを含む請求項8に記載の方法。 - 【請求項11】 格納装置に選択されたデータユニット
を格納するコンピュータシステムの方法であり、該格納
装置は、複数の固定サイズブロックに論理的に分けら
れ、各ブロックは、ブロックヘッダーと、タグのアレイ
と、複数のノードエントリーとを備え、各ノードエント
リーは、キー・バリュー表と、サブノード表と、データ
表とを備えている方法であって、 キー・バリューを前記選択されたデータユニットに割り
当て、 前記割り当てられたキー・バリューに基づいて、どのノ
ードエントリーに前記選択されたデータユニットが格納
されるべきかを決定し、 前記選択されたデータユニットが前記決定されたノード
エントリーを包含する前記ブロックに格納されうるかど
うかを決定し、 前記選択されたデータユニットが前記決定されたノード
エントリーを包含する前記ブロックに格納されうるとき
に、前記選択されたデータユニットが前記決定されたノ
ードエントリーに格納されうるかどうかを決定し、 前記選択されたデータユニットが前記決定されたノード
エントリーに格納されうるときに、前記選択されたデー
タユニットを前記決定されたノードエントリーに格納
し、 前記選択されたデータユニットが前記決定されたノード
エントリーに格納されえないが前記決定されたノードエ
ントリーを包含する前記ブロックに格納されうるとき
に、 新しいノードエントリーを生成しかつ前記選択されたデ
ータユニットを前記新しいノードエントリーに格納し、 前記新しいノードエントリーの前記ノード識別子を前記
決定されたノードエントリーの前記サブノード表に格納
し、 前記選択されたデータユニットの前記キー・バリューを
前記決定されたノードエントリーのキー・バリュー表に
格納し、 前記選択されたデータユニットが前記決定されたノード
エントリーに格納されえずかつ前記決定されたノードエ
ントリーを包含する前記ブロックに格納されえないとき
に、 新しいブロックの割り当てを要求し、 新しいノードエントリーを生成しかつ前記選択されたデ
ータユニットを前記新しいノードエントリーに格納し、 ポインタノードを前記決定れたノードエントリーを包含
する前記ブロックに格納しかつ前記新しいノードエント
リーの前記ノード識別子を前記ポインタノードに格納
し、 前記ポインタノードの前記ノード識別子を前記決定され
たノードエントリーの前記サブノード表に格納し、 前記選択されたデータユニットの前記キー・バリューを
前記決定されたノードエントリーの前記キー・バリュー
表に格納する段階を具備することを特徴とする方法。 - 【請求項12】 データのユニットを格納装置に格納す
るコンピュータシステムであって、 一群のデータをインデックスするトリーデータ構造の一
部として前記格納装置にノードエントリーを格納するノ
ード格納機構と、該ノードエントリーは、それに対応付
けられて第1のノード識別子を有しかつキー・バリュー
を格納する第1のキー・バリュー表と、サブノードのノ
ード識別子を格納する第1のサブノード表と、データの
ユニットを格納する第1のデータ領域とを備え、 前記データのユニットを前記第1のデータ領域に格納す
るデータ格納機構とを備えていることを特徴とするコン
ピュータシステム。 - 【請求項13】 前記ノードエントリーは、前記トリー
データ構造に親ノードエントリーを有し、該親ノードエ
ントリーは、それに対応付けられた第2のノード識別子
を有しかつキー・バリューを格納する第2のキー・バリ
ュー表と、サブノードのノード識別子を格納する第2の
サブノード表と、データのユニットを格納する第2のデ
ータ領域とを備え、該データのユニットは、キー・バリ
ューを有し、 前記データのユニットの前記キー・バリューを前記第2
のキー・バリュー表に格納するキー格納機構と、 前記第1のノード識別子を前記第2のサブノード表に格
納するサブノード格納機構とを更に備えていることを特
徴とする請求項12に記載のコンピュータシステム。 - 【請求項14】 前記データのユニットが前記第1のデ
ータ領域に格納されうるかどうかを決定する機構と、 前記データのユニットが前記第1のデータ領域に格納さ
れうると決定されたときに、 新しいノードエントリーを前記格納装置に生成するノー
ド生成機構と、該新しいノードエントリーは、新しいノ
ード識別子を有しかつ新しいキー・バリュー表と、新し
いサブノード表と、新しいデータ領域と備え、 前記データのユニットを前記新しいデータ領域に格納す
る第2のデータ格納機構と、 ポインタノードエントリーを前記格納装置に生成するポ
インタノード生成機構と、該ポインタノードエントリー
は、ポインタノード識別子を有し、 前記新しいノード識別子を前記ポインタノードエントリ
ーに格納する第2のノード格納機構と、 前記ポインタノード識別子を前記第1のサブノード表に
格納すうポインタノード格納機構と、 前記データのユニットが前記第1のデータ領域に格納さ
れうると決定されたときに、該データのユニットを該第
1のデータ領域に格納する第3のデータ格納機構とを更
に備えていることを特徴とする請求項13に記載のコン
ピュータシステム。 - 【請求項15】 選択されたデータのユニットを格納装
置に格納するコンピュータシステムであり、該選択され
たデータのユニットは、関連するキー・バリューとある
大きさを有し、該格納装置は、複数のノードエントリー
群を格納し、各ノードエントリー群は、一つ以上のノー
ドエントリーを備えかつある量の利用可能な空間を有
し、各ノードエントリーは、固有のノード識別子を有し
かつキー・バリュー表と、サブノード表と、データのユ
ニットを格納するデータ領域とを備えるコンピュータシ
ステムであって、 前記データのユニットの前記キー・バリューに基づい
て、前記複数のノードエントリー群のどれに前記選択さ
れたデータのユニットが格納されるべきかを決定する手
段と、 前記データのユニットの前記大きさ及び前記決定された
ノードエントリー群の利用可能な空間の量に基づいて、
前記選択されたデータのユニットが前記決定されたノー
ドエントリー群に格納されうるかどうかを決定する手段
と、 前記決定されたノードエントリー群の利用可能な空間の
量が前記データのユニットの前記大きさよりも小さいと
きに、新しいノードエントリー群を前記格納装置に生成
する手段と、該新しいノードエントリー群は、新しいノ
ード識別子を有する新しいノードエントリーを包含しか
つ新しいキー・バリュー表と、新しいサブノード表と、
新しいデータ領域とを備え、 前記データのユニットを前記新しいデータ領域に格納す
る手段と、 前記新しいノードエントリーの前記新しいノード識別子
を前記決定されたノードエントリーの前記サブノード表
に格納する手段とを備えていることを特徴とするコンピ
ュータシステム。 - 【請求項16】 前記ノードエントリーのどれに前記選
択されたデータのユニットが格納されるべきかを決定す
る手段は、前記選択されたデータのユニットの前記キー
・バリューを各ノードエントリーに格納された前記キー
・バリューと比較する手段を含むことを特徴とする請求
項15に記載のコンピュータシステム。 - 【請求項17】 前記決定されたノードエントリーは、
利用可能な空間のある量を有している固定サイズのペー
ジ内に包含され、前記選択されたデータのユニットは、
ある大きさを有し、前記選択されたデータのユニットが
前記決定されたノードエントリーに格納されうるかどう
かを決定する手段は、前記選択されたデータのユニット
の前記大きさを前記ページの利用可能な空間の前記量と
比較することを含むことを特徴とする請求項15に記載
のコンピュータシステム。 - 【請求項18】 選択されたデータユニットを格納装置
に格納するコンピュータシステムであり、該格納装置
は、複数の固定サイズブロックに論理的に分けられ、各
ブロックは、ブロックヘッダーと、タグのアレイと、複
数のノードエントリーとを備え、各ノードエントリー
は、キー・バリュー表と、サブノード表と、データ表と
を備えているコンピュータシステムであって、 キー・バリューを前記選択されたデータユニットに割り
当てる手段と、 前記割り当てられたキー・バリューに基づいて、どのノ
ードエントリーに前記選択されたデータユニットが格納
されるべきかを決定する手段と、 前記選択されたデータユニットが前記決定されたノード
エントリーを包含する前記ブロックに格納されうるかど
うかを決定する手段と、 前記選択されたデータユニットが前記決定されたノード
エントリーを包含する前記ブロックに格納されうるとき
に、前記選択されたデータユニットが前記決定されたノ
ードエントリーに格納されうるかどうかを決定する手段
と、 前記選択されたデータユニットが前記決定されたノード
エントリーに格納されうるときに、前記選択されたデー
タユニットを前記決定されたノードエントリーに格納す
る手段と、 前記選択されたデータユニットが前記決定されたノード
エントリーに格納されえないが前記決定されたノードエ
ントリーを包含する前記ブロックに格納されうるとき
に、 新しいノードエントリーを生成しかつ前記選択されたデ
ータユニットを前記新しいノードエントリーに格納する
手段と、 前記新しいノードエントリーの前記ノード識別子を前記
決定されたノードエントリーの前記サブノード表に格納
する手段と、 前記選択されたデータユニットの前記キー・バリューを
前記決定されたノードエントリーのキー・バリュー表に
格納する手段と、 前記選択されたデータユニットが前記決定されたノード
エントリーに格納されえずかつ前記決定されたノードエ
ントリーを包含する前記ブロックに格納されえないとき
に、 新しいブロックの割り当てを要求する手段と、 新しいノードエントリーを生成しかつ前記選択されたデ
ータユニットを前記新しいノードエントリーに格納する
手段と、 ポインタノードを前記決定れたノードエントリーを包含
する前記ブロックに格納しかつ前記新しいノードエント
リーの前記ノード識別子を前記ポインタノードに格納す
る手段と、 前記ポインタノードの前記ノード識別子を前記決定され
たノードエントリーの前記サブノード表に格納する手段
と、 前記選択されたデータユニットの前記キー・バリューを
前記決定されたノードエントリーの前記キー・バリュー
表に格納する手段とを備えていることを特徴とするコン
ピュータシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13991693A | 1993-10-20 | 1993-10-20 | |
US08/139916 | 1993-10-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07191891A true JPH07191891A (ja) | 1995-07-28 |
JP3844370B2 JP3844370B2 (ja) | 2006-11-08 |
Family
ID=22488876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25492394A Expired - Lifetime JP3844370B2 (ja) | 1993-10-20 | 1994-10-20 | 多次元データを格納しかつアクセスするコンピュータ方法及び格納構造 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5752243A (ja) |
EP (1) | EP0650131A1 (ja) |
JP (1) | JP3844370B2 (ja) |
CA (1) | CA2117846C (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10124528A (ja) * | 1996-10-16 | 1998-05-15 | Toshiba Corp | 多次元データ管理方法、多次元データ管理装置、多次元データ管理プログラムを記録した媒体 |
JP2001043237A (ja) * | 1999-07-30 | 2001-02-16 | Mitsubishi Electric Corp | データファイル及びデータ検索方法 |
JP2002532918A (ja) * | 1998-11-06 | 2002-10-02 | ザ トゥルスティーズ オブ コロンビア ユニバーシティ イン ザ シティ オブニュー ヨーク | 映像記述システムおよび方法 |
KR100385528B1 (ko) * | 1997-10-31 | 2003-05-27 | 인터내셔널 비지네스 머신즈 코포레이션 | 다차원 데이터 표시 방법 및 기록 매체 |
WO2013035287A1 (ja) * | 2011-09-08 | 2013-03-14 | 日本電気株式会社 | データベース管理装置、データベース管理方法、及びプログラム |
WO2015129109A1 (ja) * | 2014-02-27 | 2015-09-03 | ウイングアーク1st株式会社 | インデックス管理装置 |
JPWO2013171953A1 (ja) * | 2012-05-15 | 2016-01-12 | 日本電気株式会社 | 分散データ管理装置及び分散データ操作装置 |
Families Citing this family (103)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE210856T1 (de) * | 1994-06-06 | 2001-12-15 | Nokia Networks Oy | Verfahren zum daten speichern und daten wiederfinden und eine speicheranordnung |
DE19621788A1 (de) * | 1995-08-30 | 1997-03-06 | Bayerisches Forschungszentrum | Datenbanksystem zur Verwaltung von Arrays |
US6272501B1 (en) | 1995-08-30 | 2001-08-07 | Peter Baumann | Database system for management of arrays |
US5968152A (en) * | 1996-04-10 | 1999-10-19 | Apple Computer, Inc. | Method and apparatus for extending key space in a plug and play ROM |
US5893104A (en) * | 1996-07-09 | 1999-04-06 | Oracle Corporation | Method and system for processing queries in a database system using index structures that are not native to the database system |
US6208993B1 (en) * | 1996-07-26 | 2001-03-27 | Ori Software Development Ltd. | Method for organizing directories |
IL118959A (en) | 1996-07-26 | 1999-07-14 | Ori Software Dev Ltd | Database apparatus |
US6175835B1 (en) * | 1996-07-26 | 2001-01-16 | Ori Software Development, Ltd. | Layered index with a basic unbalanced partitioned index that allows a balanced structure of blocks |
DE19709041A1 (de) * | 1997-03-06 | 1998-09-10 | Rudolf Prof Bayer | Datenbanksystem und Verfahren zum Betrieb eines Datenbanksystems |
FI102425B1 (fi) * | 1997-03-14 | 1998-11-30 | Nokia Telecommunications Oy | Menetelmä muistin toteuttamiseksi |
FI102426B1 (fi) * | 1997-03-14 | 1998-11-30 | Nokia Telecommunications Oy | Menetelmä muistin toteuttamiseksi |
FI102424B (fi) * | 1997-03-14 | 1998-11-30 | Nokia Telecommunications Oy | Menetelmä muistin toteuttamiseksi |
US6115716A (en) * | 1997-03-14 | 2000-09-05 | Nokia Telecommunications Oy | Method for implementing an associative memory based on a digital trie structure |
JP3034483B2 (ja) * | 1997-04-21 | 2000-04-17 | 核燃料サイクル開発機構 | オブジェクト探索方法およびその方法を用いた装置 |
US6021180A (en) * | 1997-04-30 | 2000-02-01 | The Business Edge Group, Inc. | Processing of telecommunications transmissions and directing consumers to need providers |
US6073134A (en) * | 1997-05-29 | 2000-06-06 | Oracle Corporation | Method article of manufacture, and apparatus for generating a multi-dimensional record management index |
US6278994B1 (en) | 1997-07-10 | 2001-08-21 | International Business Machines Corporation | Fully integrated architecture for user-defined search |
US6285996B1 (en) | 1997-07-10 | 2001-09-04 | International Business Machines Corp. | Run-time support for user-defined index ranges and index filters |
US6192358B1 (en) | 1997-07-10 | 2001-02-20 | Internatioanal Business Machines Corporation | Multiple-stage evaluation of user-defined predicates |
US6266663B1 (en) | 1997-07-10 | 2001-07-24 | International Business Machines Corporation | User-defined search using index exploitation |
DE19743267C1 (de) * | 1997-09-30 | 1998-12-03 | Siemens Ag | Verfahren zum Aufsuchen einer Adresse in einem teilbesetzten, nicht balancierten Binären Baum |
DE19743266C1 (de) * | 1997-09-30 | 1999-03-11 | Siemens Ag | Verfahren zum Hinzufügen bzw. Entfernen einer Adresse in einem teilbesetzten Suchbaum |
US6675173B1 (en) | 1998-01-22 | 2004-01-06 | Ori Software Development Ltd. | Database apparatus |
US6792432B1 (en) * | 1998-03-31 | 2004-09-14 | Sybase, Inc. | Database system with methods providing high-concurrency access in B-Tree structures |
US6081624A (en) * | 1998-06-01 | 2000-06-27 | Autodesk, Inc. | Spatial index compression through spatial subdivision encoding |
US6070164A (en) | 1998-05-09 | 2000-05-30 | Information Systems Corporation | Database method and apparatus using hierarchical bit vector index structure |
US6151630A (en) * | 1998-05-15 | 2000-11-21 | Avaya Technology Corp. | Non-redundant browsing of a sequencing of web pages |
EP0977128A1 (en) * | 1998-07-28 | 2000-02-02 | Matsushita Electric Industrial Co., Ltd. | Method and system for storage and retrieval of multimedia objects by decomposing a tree-structure into a directed graph |
US6356902B1 (en) | 1998-07-28 | 2002-03-12 | Matsushita Electric Industrial Co., Ltd. | Method and system for storage and retrieval of multimedia objects |
US6266660B1 (en) * | 1998-07-31 | 2001-07-24 | Unisys Corporation | Secondary index search |
FI981917A (fi) | 1998-09-08 | 2000-03-09 | Nokia Networks Oy | Menetelmä FIFO-jonon toteuttamiseksi muistissa ja muistijärjestely |
KR100284778B1 (ko) | 1998-10-28 | 2001-03-15 | 정선종 | 내용기반 이미지 검색을 위한 고차원 색인구조의 삽입 방법 |
US6470344B1 (en) * | 1999-05-29 | 2002-10-22 | Oracle Corporation | Buffering a hierarchical index of multi-dimensional data |
US6381605B1 (en) | 1999-05-29 | 2002-04-30 | Oracle Corporation | Heirarchical indexing of multi-attribute data by sorting, dividing and storing subsets |
US6370534B1 (en) * | 1999-06-01 | 2002-04-09 | Pliant Technologies, Inc. | Blocking techniques for data storage |
US6813611B1 (en) * | 1999-06-08 | 2004-11-02 | International Business Machines Corporation | Controlling, configuring, storing, monitoring and maintaining accounting of bookkeeping information employing trees with nodes having embedded information |
US6334123B1 (en) | 1999-09-03 | 2001-12-25 | Whamtech, Inc. | Index relational processor |
US6829695B1 (en) | 1999-09-03 | 2004-12-07 | Nexql, L.L.C. | Enhanced boolean processor with parallel input |
US20040225865A1 (en) * | 1999-09-03 | 2004-11-11 | Cox Richard D. | Integrated database indexing system |
US6532476B1 (en) | 1999-11-13 | 2003-03-11 | Precision Solutions, Inc. | Software based methodology for the storage and retrieval of diverse information |
US6826472B1 (en) * | 1999-12-10 | 2004-11-30 | Tele Atlas North America, Inc. | Method and apparatus to generate driving guides |
US6750883B1 (en) | 2000-04-05 | 2004-06-15 | Microsoft Corporation | Identity-based context aware computing systems and methods |
US7743074B1 (en) * | 2000-04-05 | 2010-06-22 | Microsoft Corporation | Context aware systems and methods utilizing hierarchical tree structures |
US7213048B1 (en) | 2000-04-05 | 2007-05-01 | Microsoft Corporation | Context aware computing devices and methods |
US7076255B2 (en) * | 2000-04-05 | 2006-07-11 | Microsoft Corporation | Context-aware and location-aware cellular phones and methods |
US7421486B1 (en) | 2000-04-05 | 2008-09-02 | Microsoft Corporation | Context translation methods and systems |
US7096029B1 (en) * | 2000-04-05 | 2006-08-22 | Microsoft Corporation | Context aware computing devices having a common interface and related methods |
FR2811101B1 (fr) * | 2000-07-03 | 2002-09-20 | Axicare | Procede de traitement de donnees structurees utilisant un langage informatique oriente objet |
EP1338129B1 (en) * | 2000-09-02 | 2006-11-29 | Emageon, Inc. | Method and communication module for transmission of dicom objects through data element sources |
US6578038B1 (en) * | 2000-09-29 | 2003-06-10 | International Business Machines Corporation | Managing directory listings in a relational database |
US7269684B2 (en) * | 2000-09-29 | 2007-09-11 | International Business Machines Corporation | Method and system for persistently storing objects in an object oriented environment |
US7406443B1 (en) * | 2000-12-18 | 2008-07-29 | Powerloom | Method and system for multi-dimensional trading |
US6944679B2 (en) * | 2000-12-22 | 2005-09-13 | Microsoft Corp. | Context-aware systems and methods, location-aware systems and methods, context-aware vehicles and methods of operating the same, and location-aware vehicles and methods of operating the same |
US7493565B2 (en) | 2000-12-22 | 2009-02-17 | Microsoft Corporation | Environment-interactive context-aware devices and methods |
US7072956B2 (en) * | 2000-12-22 | 2006-07-04 | Microsoft Corporation | Methods and systems for context-aware policy determination and enforcement |
KR100488414B1 (ko) * | 2000-12-30 | 2005-05-11 | 한국전자통신연구원 | 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된 다중탐색 트리 구조의 자료 탐색 방법 |
US6804677B2 (en) * | 2001-02-26 | 2004-10-12 | Ori Software Development Ltd. | Encoding semi-structured data for efficient search and browsing |
US7170521B2 (en) * | 2001-04-03 | 2007-01-30 | Ultravisual Medical Systems Corporation | Method of and system for storing, communicating, and displaying image data |
AU2002318380A1 (en) * | 2001-06-21 | 2003-01-08 | Isc, Inc. | Database indexing method and apparatus |
JP4490012B2 (ja) * | 2001-11-26 | 2010-06-23 | 富士通株式会社 | ファイル検索装置、ファイル検索プログラム |
KR20030044498A (ko) * | 2001-11-30 | 2003-06-09 | 엘지전자 주식회사 | 주기억 장치 데이터베이스 관리 시스템의 자료 구조와블록 할당 및 레코드 검색 방법 |
FR2836573A1 (fr) * | 2002-02-27 | 2003-08-29 | France Telecom | Representation informatique d'une structure de donnees arborescente et methodes de codage/decodage associees |
US7287033B2 (en) * | 2002-03-06 | 2007-10-23 | Ori Software Development, Ltd. | Efficient traversals over hierarchical data and indexing semistructured data |
US6999966B2 (en) * | 2002-04-23 | 2006-02-14 | International Business Machines Corporation | Content management system and methodology for implementing a complex object using nested/recursive structures |
WO2003107174A1 (en) * | 2002-06-13 | 2003-12-24 | Cerisent Corporation | Xml database mixed structural-textual classification system |
US7171404B2 (en) | 2002-06-13 | 2007-01-30 | Mark Logic Corporation | Parent-child query indexing for XML databases |
AU2003236543A1 (en) * | 2002-06-13 | 2003-12-31 | Mark Logic Corporation | A subtree-structured xml database |
US20040133590A1 (en) * | 2002-08-08 | 2004-07-08 | Henderson Alex E. | Tree data structure with range-specifying keys and associated methods and apparatuses |
GB2394803A (en) * | 2002-10-31 | 2004-05-05 | Hewlett Packard Co | Management of security key distribution using an ancestral hierarchy |
US7146371B2 (en) * | 2002-12-05 | 2006-12-05 | International Business Machines Corporation | Performance and memory bandwidth utilization for tree searches using tree fragmentation |
US7039646B2 (en) * | 2002-12-18 | 2006-05-02 | International Business Machines Corporation | Method and system for compressing varying-length columns during index high key generation |
US20050102255A1 (en) * | 2003-11-06 | 2005-05-12 | Bultman David C. | Computer-implemented system and method for handling stored data |
US6839005B1 (en) * | 2003-11-07 | 2005-01-04 | Broadcom Corporation | Low memory and MIPS efficient technique for decoding Huffman codes using multi-stage, multi-bits lookup at different levels |
US7633886B2 (en) * | 2003-12-31 | 2009-12-15 | University Of Florida Research Foundation, Inc. | System and methods for packet filtering |
US7668845B1 (en) | 2004-02-18 | 2010-02-23 | Microsoft Corporation | C-tree for multi-attribute indexing |
WO2005086003A1 (ja) * | 2004-03-08 | 2005-09-15 | Annex Systems Incorporated | データベース・システム |
US7483906B2 (en) * | 2004-04-14 | 2009-01-27 | Microsoft Corporation | Method and system for renaming consecutive keys in a B-tree |
US7599949B1 (en) * | 2004-04-30 | 2009-10-06 | Unisys Corporation | Database management system and method for maintaining a database in a range sensitive manner |
US8572233B2 (en) * | 2004-07-15 | 2013-10-29 | Hewlett-Packard Development Company, L.P. | Method and system for site path evaluation using web session clustering |
KR100622945B1 (ko) * | 2004-07-27 | 2006-09-19 | 재단법인서울대학교산학협력재단 | 복수 로드 스토어 명령어를 통한 코드 크기 감소 방법 |
GB2418747A (en) * | 2004-09-29 | 2006-04-05 | Siemens Ag | A data structure distributed over a number of pages |
US8150857B2 (en) * | 2006-01-20 | 2012-04-03 | Glenbrook Associates, Inc. | System and method for context-rich database optimized for processing of concepts |
FR2904447B1 (fr) * | 2006-07-27 | 2008-10-03 | Canon Kk | Procede et dispositif de recherche d'un sous-element contenant une information d'identification d'une entite recherchee dans un fichier ecrit en langage de balisage. |
US20080097954A1 (en) * | 2006-10-20 | 2008-04-24 | Microsoft Corporation | Ranged lookups |
US9146948B2 (en) * | 2006-12-12 | 2015-09-29 | International Business Machines Corporation | Hilbert ordering of multidimensional tuples within computing systems |
JP2009009545A (ja) * | 2007-01-31 | 2009-01-15 | Hewlett-Packard Development Co Lp | データ処理システム及び方法 |
US20080307012A1 (en) * | 2007-06-05 | 2008-12-11 | Microsoft Corporation | Tsb-tree page split strategy |
CA2708669A1 (en) * | 2007-12-13 | 2009-06-18 | Redknee Inc. | Method and system for storage |
US20090254594A1 (en) * | 2008-04-02 | 2009-10-08 | Microsoft Corporation | Techniques to enhance database performance |
US8126927B1 (en) * | 2008-06-06 | 2012-02-28 | Amdocs Software Systems Limited | Data structure, method, and computer program for providing a linked list in a first dimension and a plurality of linked lists in a second dimension |
US8682872B2 (en) * | 2009-12-17 | 2014-03-25 | Bmc Software, Inc. | Index page split avoidance with mass insert processing |
US9092335B2 (en) * | 2010-03-26 | 2015-07-28 | Red Hat, Inc. | Representing a tree structure on a flat structure |
CN101866358B (zh) * | 2010-06-12 | 2012-09-05 | 中国科学院计算技术研究所 | 一种多维区间查询方法及系统 |
US8375012B1 (en) * | 2011-08-10 | 2013-02-12 | Hewlett-Packard Development Company, L.P. | Computer indexes with multiple representations |
CN103514263B (zh) * | 2013-08-21 | 2016-12-28 | 中国传媒大学 | 一种采用双key值的高维索引结构构建方法和检索方法 |
US10083195B2 (en) * | 2014-04-24 | 2018-09-25 | Futurewei Technologies, Inc. | System and method for composing a multidimensional index key in data blocks |
CN104112013A (zh) * | 2014-07-17 | 2014-10-22 | 浪潮(北京)电子信息产业有限公司 | HBase二级索引方法及装置 |
CN104317536B (zh) * | 2014-11-12 | 2017-09-15 | 中国石油集团川庆钻探工程有限公司地球物理勘探公司 | 存储地震数据体和读取地震道的地震数据的设备及方法 |
US20170060924A1 (en) * | 2015-08-26 | 2017-03-02 | Exablox Corporation | B-Tree Based Data Model for File Systems |
US10698865B2 (en) * | 2017-06-26 | 2020-06-30 | Vmware, Inc. | Management of B-tree leaf nodes with variable size values |
FR3103664B1 (fr) * | 2019-11-27 | 2023-04-07 | Amadeus Sas | Système de stockage distribué pour stocker des données contextuelles |
US11671492B2 (en) * | 2020-09-10 | 2023-06-06 | EMC IP Holding Company LLC | Multipart upload for distributed file systems |
CN115374124B (zh) * | 2022-08-29 | 2023-05-12 | 钟士平 | 基于a+树数据结构存储的数据查询方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4344134A (en) * | 1980-06-30 | 1982-08-10 | Burroughs Corporation | Partitionable parallel processor |
US4606002A (en) * | 1983-05-02 | 1986-08-12 | Wang Laboratories, Inc. | B-tree structured data base using sparse array bit maps to store inverted lists |
US4841435A (en) * | 1986-10-29 | 1989-06-20 | Saxpy Computer Corporation | Data alignment system for random and block transfers of embedded subarrays of an array onto a system bus |
GB2196764A (en) * | 1986-10-30 | 1988-05-05 | Apple Computer | Hierarchical file system |
CA2001390C (en) * | 1988-12-19 | 1997-12-30 | Ming-Chien Shan | View composition in a data-base management system |
US5408652A (en) * | 1990-08-31 | 1995-04-18 | Fujitsu Limited | Method and apparatus for heterogenous database access by generating different access procedures for different database data structures |
US5560007A (en) * | 1993-06-30 | 1996-09-24 | Borland International, Inc. | B-tree key-range bit map index optimization of database queries |
US5613105A (en) * | 1993-06-30 | 1997-03-18 | Microsoft Corporation | Efficient storage of objects in a file system |
US5446887A (en) * | 1993-09-17 | 1995-08-29 | Microsoft Corporation | Optimal reorganization of a B-tree |
-
1994
- 1994-10-11 CA CA002117846A patent/CA2117846C/en not_active Expired - Lifetime
- 1994-10-19 EP EP94116500A patent/EP0650131A1/en not_active Ceased
- 1994-10-20 JP JP25492394A patent/JP3844370B2/ja not_active Expired - Lifetime
-
1996
- 1996-10-08 US US08/727,131 patent/US5752243A/en not_active Expired - Lifetime
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10124528A (ja) * | 1996-10-16 | 1998-05-15 | Toshiba Corp | 多次元データ管理方法、多次元データ管理装置、多次元データ管理プログラムを記録した媒体 |
KR100385528B1 (ko) * | 1997-10-31 | 2003-05-27 | 인터내셔널 비지네스 머신즈 코포레이션 | 다차원 데이터 표시 방법 및 기록 매체 |
JP2002532918A (ja) * | 1998-11-06 | 2002-10-02 | ザ トゥルスティーズ オブ コロンビア ユニバーシティ イン ザ シティ オブニュー ヨーク | 映像記述システムおよび方法 |
JP2001043237A (ja) * | 1999-07-30 | 2001-02-16 | Mitsubishi Electric Corp | データファイル及びデータ検索方法 |
WO2013035287A1 (ja) * | 2011-09-08 | 2013-03-14 | 日本電気株式会社 | データベース管理装置、データベース管理方法、及びプログラム |
JPWO2013171953A1 (ja) * | 2012-05-15 | 2016-01-12 | 日本電気株式会社 | 分散データ管理装置及び分散データ操作装置 |
WO2015129109A1 (ja) * | 2014-02-27 | 2015-09-03 | ウイングアーク1st株式会社 | インデックス管理装置 |
JP2015162042A (ja) * | 2014-02-27 | 2015-09-07 | ウイングアーク1st株式会社 | インデックス管理装置 |
Also Published As
Publication number | Publication date |
---|---|
EP0650131A1 (en) | 1995-04-26 |
US5752243A (en) | 1998-05-12 |
CA2117846C (en) | 2001-02-20 |
JP3844370B2 (ja) | 2006-11-08 |
CA2117846A1 (en) | 1995-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3844370B2 (ja) | 多次元データを格納しかつアクセスするコンピュータ方法及び格納構造 | |
Lomet et al. | A robust multi-attribute search structure | |
US6438562B1 (en) | Parallel index maintenance | |
US5404510A (en) | Database index design based upon request importance and the reuse and modification of similar existing indexes | |
Henrich | The LSD/sup h/-tree: an access structure for feature vectors | |
US6029170A (en) | Hybrid tree array data structure and method | |
US5515531A (en) | Parallel database processing system and retrieval method using secondary key | |
US5852822A (en) | Index-only tables with nested group keys | |
US5701467A (en) | Computer data storage management system and methods of indexing a dataspace and searching a computer memory | |
US8271530B2 (en) | Method and mechanism for managing and accessing static and dynamic data | |
US8099421B2 (en) | File system, and method for storing and searching for file by the same | |
Evangelidis et al. | The hB-tree: A multi-attribute index supporting concurrency, recovery and node consolidation | |
EP0437159B1 (en) | Method for identifying documents having a particular attribute using a vector relational characteristical object | |
JP5152877B2 (ja) | 文書ベースシステムにおける文書データ記憶方法およびその装置 | |
Ooi | Spatial kd-tree: A data structure for geographic database | |
Ramamohanarao et al. | Recursive linear hashing | |
US7310719B2 (en) | Memory management tile optimization | |
Hammer et al. | Data structures for databases | |
Freeston | A well-behaved file structure for the storage of spatial objects | |
JPH08235040A (ja) | データファイル管理システム | |
JPH09305622A (ja) | 文書検索機能を有するデータベース管理方法およびシステム | |
Norvag | The Vagabond temporal OID index: An index structure for OID indexing in temporal object database systems | |
Henrich | Adapting a spatial access structure for document representations in vector space | |
Song et al. | Managing frequent updates in R-trees for update-intensive applications | |
KR20010109945A (ko) | 비공간검색조건이 포함된 케이-최근접 질의를 위한알에스트리구조 및 점증적 최근접 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051212 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060313 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060316 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060612 |
|
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: 20060807 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060815 |
|
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: 20090825 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100825 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110825 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110825 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120825 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130825 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |