JP2002501256A - データベース装置 - Google Patents

データベース装置

Info

Publication number
JP2002501256A
JP2002501256A JP2000528930A JP2000528930A JP2002501256A JP 2002501256 A JP2002501256 A JP 2002501256A JP 2000528930 A JP2000528930 A JP 2000528930A JP 2000528930 A JP2000528930 A JP 2000528930A JP 2002501256 A JP2002501256 A JP 2002501256A
Authority
JP
Japan
Prior art keywords
index
key
data
data record
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
Application number
JP2000528930A
Other languages
English (en)
Other versions
JP2002501256A5 (ja
Inventor
シャドモン、モシェ
Original Assignee
オリ・ソフトウェア・ディベロップメント・リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オリ・ソフトウェア・ディベロップメント・リミテッド filed Critical オリ・ソフトウェア・ディベロップメント・リミテッド
Publication of JP2002501256A publication Critical patent/JP2002501256A/ja
Publication of JP2002501256A5 publication Critical patent/JP2002501256A5/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees

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

(57)【要約】 【課題】 本発明は、データベースを提供する。 【解決手段】データレコードにアクセスするためのデータベースファイル管理システムは、データ処理システム上で実行されており、データレコードはブロック(402,405,406及び407)の中で配列されるトリーインデックスにリンクされ、記憶媒体に記憶されている。トリーインデックス(A、B、I及び要素402)は、キーによってデータレコードへのアクセス又は更新を可能にし、ブロックの不均衡な構造に敏感である。トリーインデックスを提供し、代表的なインデックスをトリーインデックスの代表的なキーに構築するステップを含み、ブロックに配列された階層インデックスを構築する方法が提供される。階層インデックスは、キーまたは複数のキーによるデータレコードへのアクセス又はデータレコードを更新でき、ブロックの均衡構造を構成する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
本発明は、データベースおよびデータベース管理システムに関する。
【0002】
【従来の技術】
よく知られているように、データベースシステムとは、相互関連しているデー
タファイル、インデックス、および一人または複数のユーザがデータを追加、こ
れらのファイルに記憶されているデータを検索、修正することができるようにす
るプログラムセットの集合体である。データベースシステムの基本概念とは、デ
ータが物理的にどのように編成され、アクセスされるのかなどの詳細の処理から
従来のユーザを免除するいわゆる「抽象的な」簡略化されたデータのビュー(デ
ータモデルまたは概念構造と呼ばれることもある)をユーザに与えることである
【0003】 ここではよく知られているデータモデルのいくつか(つまり、「階層モデル」
、「ネットワークモデル」、「リレーショナルモデル」、および「オブジェクト
リレーショナルモデル」)が簡略に検討されるだろう。さらに詳細な説明は、例
えば、マグローヒルインターナショナルエディションズ(McGRAW-Hill Internat
ional Editions)のHenry F.Korth、Abraham Silberschatzの「データベースシス
テム概念(Detabase System Concepts)」、1986年(または(1997)年
第3版)の第3章から第5章、45頁から172頁に記載されている。
【0004】 一般的には、以下で説明されるすべてのモデルは、それらが、それぞれエンテ
ィティの指定されている属性を示している1つまたは複数の「フィールド」を有
する「レコード」としてそれぞれ「エンティティ」を表すという点で1つの共通
のプロパティを有している(例えば、指定されている書籍のレコードには、以下
のフィールド「本ID(BOOK ID)」、「書籍名(BOOK NAME)
」、「題名(TITLE)」があってよい)。通常、1つまたは複数の属性は「
キー」を構成する。つまり、それはレコードを識別する。後者の例では、「書籍
ID(BOOK−ID)」がキーとしての役割を果す。多様なモデルは、とりわ
け、これらのレコードがより複雑な構造に編成されるように、他方から一方が区
別されている。
【0005】 リレーショナルモデル−Coddによって紹介されたリレーショナルモデルは
、データベース開発の歴史の中の画期的な事件である。リレーショナルデータベ
ースでは、それに従って列がフィールドを表し、行がレコードを表すテーブル(
「リレーション」と呼ばれる)によりデータが表される抽象的な概念が導入され
てきた。
【0006】 テーブル間の結合は概念的にすぎない。それはデータベース定義の一部ではな
い。2つのテーブルは、それらが、その値が(「ドメイン」と呼ばれる)同じ値
のセットから採取される1つまたは複数の列を有するという事実により暗示的に
関連付けることができる。
【0007】 リレーショナルモデルにより導入されるその他の概念とは、テーブルに作用す
るハイレベル演算子(つまり、そのパラメータと結果の両方ともテーブルである
)および人がこれらの結果がどのようにして作り出されなければならないのかよ
りむしろ、何が必要とされている結果なのかを指定する(現在では第4世代言語
と呼ばれている)包括的なデータ言語である。このような非手続き的言語(SQ
L−構造化検索言語)は、業界規格となった。さらに、リレーショナルモデルは
、非常にハイレベルのデータ独立性を示唆している。これらの言語で作成された
プログラムには、データを編成し、記憶し、索引付けし、および並べる方法の変
更を原因としたいかなる影響も及ぼされてはならない。リレーショナルモデルは
、データアナリストのデファクトスタンダードとなったのである。
【0008】 ネットワークモデル−リレーショナルモデルでは、データ(およびデータ間の
関係性)はテーブルの集合体と見なされる。ネットワークモデルではそれと区別
して、データはレコードの集合体として表されているが、レコード(データ)間
の関係性はリンクとして表される。
【0009】 ネットワークモデルの中のレコードは、それが、それぞれが1つの種類のデー
タを保持しているフィールドの集合体であるという意味で、「エンティティ」に
類似している。リンクは、実際には、好ましくは(であるが必ずしもではない)
ポインタとして見られる。レコードの集合体およびその間の関係は、グラフの集
合体を構成する。
【0010】 階層モデル−階層モデルは、データとデータ間の関係を、つまりレコードとリ
ンクとして取扱う方法においてネットワークモデルに似ている。ただし、ネット
ワークモデルと区別して、レコードとそれらの間の関係は任意のグラフの集合体
よりむしろ、ツリーの集合体を構成する。階層モデルの構造は、特に、データベ
ースで編成される必要のあるデータが固有の階層性質を帯びているケースでは、
簡略かつ率直である。階層モデルには、いくつかの固有の欠点がある。例えば、
多くの実生活のシナリオでは、データを容易に階層のように配列できない。さら
に、データが階層のように編成できるにしても、データは他のデータベースモデ
ルに比較してより大きな量を必要とする。
【0011】 例えば、以下の下位(subordinated)属性「Employee_Salary」と「Employee_
Attendance」がある基本的なエンティティ「Employee(従業員)」を考えてみる
。後者も、「Employee_Entries」と「Employee_Exits」などの下位属性を有して
よい。このシナリオでは、データは固有の階層性質を持っているため、好ましく
は階層モデルで編成される必要がある。例えば、「Employee」が複数の「Projec
ts(プロジェクト)」に割り当てられ、彼/彼女が各プロジェクトで費やす時間
(「Time_Spent」)が「Employee」エンティティと「Projects」エンティティに
含まれる1つの属性であるシナリオを考えてみる。データのこのような配列は、
階層モデルでは容易に編成できず、考えられる1つの解決策は、アイテム「Time
_Spent」を複製し、それを「Employee」と「Project」の階層の中に別個に保持 することである。このアプローチは、現在では、「Time_Spent」の2つのインス
タンスがつねに同一に保たれることを保証することが必要とされているという意
味で扱いにくく、エラーを受けやすい。
【0012】 オブジェクト指向モデル−包括的な説明は、James Rumbaugh、Michael Blaha、W
illiam Premerlani、 Frederick EddiおよびWilliam Lorenseの「オブジェクト指
向型モデリング(Object Oriented Modeling and Design)」に記載されている。
【0013】 オブジェクト指向アプローチは、すべてのエンティティをオブジェクトと見な
す。各オブジェクトはクラスに属し、各クラスでは関連するメソッドとフィール
ドがある。カプセル化を可能にするために、フィールドはそのクラスのメソッド
だけがアクセス可能な非公開であるが、他はすべてがアクセスできる公開である
。したがって「Joe Smith」はpersons(人物)のクラスに属する。そのクラスに
は、非公開フィールド年齢が定義できる。クラスメソット゛update_age()をオ ブジェクトJoeに適用すると、彼の年齢が変更されるだろう。この方法論によ
り、スーパークラスのすべてのメソッドとフィールドを継承するサブクラスを定
義することができる。したがって、例えば、employeeクラスはpersonクラスのサ
ブクラスとして定義できる。加えて、人はサブクラスに追加のフィールドとメソ
ッドを定義してよい。このようにして、employeeクラスはsalaryフィールド、お
よびget_raise()メソッドをサポートできるだろう。
【0014】 オブジェクトリレーショナルモデルは、リレーショナル編成データ状でのオブ
ジェクトビューを可能にする。このようにして、人は、まるでそれがオブジェク
トとして編成されているかのようにデータに作用するのと同時にリレーショナル
アプローチをサポートすることができる。
【0015】 前記に言及されたように、データモデルはデータ表記の概念的または論理レベ
ルを処理し、データが物理的にどのように配列され、アクセスされるのかなどの
詳細は「非表示」にする。後者の特性は通常、いわゆるデータベースファイル管
理システムにより処理される。
【0016】 データベースファイル管理システムは、(データベースモデルという点で)論
理構造をデータ構造、関連動作およびおそらく他のデータにマッピングする。デ
ータ構造は、インデックスとデータレコードを含む。インデックスは、キーによ
るデータレコードのアクセスまたは更新を可能にする。検索というコンテキスト
では、検索キーという用語が使用される。データベースファイル管理システムは
、時間という点で(つまり、ユーザの観点からデータベースの高速応答時間)お
よび空間という点で(データベースファイルに割り当てられている記憶領域の量
を最小限に抑えるために)性能の拡張を達成するために、好ましくは、データレ
コードに作用しなければならない。技術では周知であるように、通常、時間と空
間の要件の間には交換条件がある。データベースの性能は、データを表すために
使用されるデータ構造の効率、およびシステムがこれらのデータにどの程度効率
的に作用できるのかに依存する。従来のファイルシステムおよび管理システムに
関する詳細な説明は、例えば同書「データベースシステム概念(Database Syste
m Concepts)」の第7章(ファイルシステム構造)と第8章(索引付け)に示さ
れている。
【0017】 既知のデータベースファイル管理システムは、典型的には、多元ツリーインデ
ックスおよびその他を含む以下の主要なカテゴリに該当する以下の索引付けスキ
ームを活用する。
【0018】 多元ツリーインデックス−これらの技法は、同じデータレコードへの1つまた
は複数のアクセスパス(検索パスとも呼ばれる)を作成するために使用できる。
検索パスは、多元ツリーを形成する。その主要な不利な点とは、それが空間(通
常、レコードに対するすべてのキーにいくつかのポインタを加えたもの)と保守
(更新トランザクション(以下の定義を参照のこと)が発生する、つまりレコー
ドが追加および/または削除されるたびのキーの追加および/または削除)を必
要とするという点である。通常、ファイル内に保持されるデータの量だけではな
く、索引付けスキームの性質が、指定されているデータレコードを発見または更
新(更新は、挿入、削除または修正を含む)するために必要とされるアクセスの
数を決定する。検討されている記憶媒体が外部メモリであるケースでは、アクセ
スの数は、実際にはI/Oアクセスの数である。以下に説明されるように、記憶
媒体へのアクセスのたびに、データのブロックがメモリの中にロードされる。
【0019】 多様な種類のツリー索引付けスキームが開発されてきたが、通常、索引付けの
インプリメンテーションは、指定されている直接アクセス索引付け技法よりはる
かに高価である。他方、ツリー索引付けは、逐次処理および部分範囲処理を可能
にする。最も幅広く使用されている索引付けスキームの1つが、キーが均衡した
ツリー構造の中に保たれ、最低レベルがデータ自体を指す(Bツリーなどの多
様な商用製品名およびインプリメンテーション可変要素が付けられている)Bツ
リーである。B−ツリー索引付けスキームの詳細な説明は、同書「データベース
システム概念」275頁から282頁に記載されている。I/Oアクセスの数は
アルゴリズム表記LogKN÷1に従い、この場合、Kはインプリメンテーショ
ンに依存する定数であり、Nはレコードの総数である。つまり、性能は、レコー
ドの数が増加するのに従って対数的に低下する。
【0020】 言うまでもなく、前記または前記の2つまたは3つ以上に従って実現される索
引付けスキームなどのその他の技法を使用することも可能である。
【0021】 前記の人気のあるBツリー索引付けスキームの重要な欠点の1つとは、キーが
データレコードの一部として保持されるだけではなく、インデックスの一部であ
るという点である。
【0022】 言うまでもなく、これは、インデックスサイズの望ましくない膨張を生じさせ
、後者の欠点は、大きなサイズのインデックスが活用されるときに(つまり、相
対的に大きい数のビットがキーを表すために必要とされるときに)さらに悪化す
る。
【0023】 この問題に対処するための考えられる1つのアプローチとは、トリー索引付け
スキームを利用することである。後者の例は、マグローヒル(Mcgraw-Hill)1 987年、G.Wiederholdの「データベース設計のためのファイル編成(File org
anization for Database design)」272頁、273頁、またはアディソンウ ェズレイ出版社(Addison-Wesley Publishing Company)1973年、D.E. Kuthの「コンピュータプログラミングの技術(The Art of Computer Prog
ramming)」481頁から505頁、681頁から687頁に説明されている。
【0024】 一般的には、トリー(trie)索引付けスキームは、例えばBツリー技法によっ
て明らかになったキーの複製を回避する一方で、高速検索を可能にする。トリー
索引付けスキームは、検索が検索キー部分(例えば、検索キー数字またはビット
)に従って検索を区分化することに基づいているツリーの一般的な構造を有する
。したがって、例えば、トリー検索付けファイル内の各ノードは検索キーのオフ
セットを表し、その子の内の任意の1つに対するリンクは前記オフセットでの文
字の値を表す。前述されたように、検索キーは全体として内部モードで保持され
ず、したがって例えばBツリー索引付け技法で示される複製は回避されるため、
トリー構造は、そのために割り当てられているメモリスペースという点で効率的
なデータ構造を提供する。
【0025】 同書「データベース設計用ファイル編成(File organization for Database d
esign)」に説明されているトリーなどのトリーの特定の可変要素において、応 答時間という点で性能の改善を達成するためには、検索空間の考えられる最良の
分割が得られるように、つまり言い替えると可能な限り均衡であるツリーを達成
するために、トリー索引付けファイルが、数字(またはビット)を検索キーから
選択することにより構築されなければならない。しかしながら、これには、トリ
ー(trie)のデータ構造の演繹的な知識を必要とし、並べ替えられていないデー
タを得るという不利益を被って達成されることになり、それは多くの実生活のシ
ナリオでは不適当である。並べ替えられたデータが必須である場合に、トリーの
データレコードの十分な演繹的な(prioiri)知識があったとしても均衡した構 造を保証できないことは注目に値する。指定されたトリーが逐次部分範囲処理を
サポートしていないことに注意する必要がある。
【0026】 大量のデータを考えるとき、ルートノードから求められるデータレコードと関
連したリーフノードへの指定されたデータレコードにアクセスするための長いパ
スを回避するために、ツリーインデックスのいわゆる均衡構造を維持することは
特に重要である。指定されたBツリー索引付けスキームは、ツリーが更新トラン
ザクションを受けた後も、固有の均衡ツリー構造を構成する。しかしながら、固
有の均衡した(あるいは本質的に均衡の)構造は、特に、多数のデータレコード
を保持する大きなツリーに関する限り、前述されたように、ツリー内のブロック
の内容を膨張させ、その結果インデックスを保持するファイルサイズを不当に拡
大するという不利益を被って達成される。大量のファイルは求められているデー
タに達するために、記憶媒体へのアクセスの数という点で(その結果アクセス時
間という点で)データ管理システムの性能に悪影響を及ぼし、これは明らかに望
まれていない。
【0027】 ここではインデックススキームの「その他」のカテゴリに目を向けると、それ
は例えば、いわゆる「スキップリストインデックス」を含む。スキップリストと
は、無作為化したデータ構造である。それは複数のレベル、最低レベル、レベル
0から成り立っており、減少しない順序で並べられているすべてのレコードのリ
ストから成り立っている。レベルi(i=0,...h)の各ノードは、確率p
で、レベルi+1を表すかどうかを選択する。レベルiの代表はレベルi+1の
ノードを構成する。これらの代表も、並べられたリストとして編成されている.
レベルh+1は第1空レベルである。
【0028】
【発明が解決しようとする課題】
これまで既知のインデックススキームの主要な欠点、つまり膨張したデータ量
(例えば、Bツリーとその可変要素)および不均衡な構造(例えば、ツリー)に
影響を受けやすいことを説明してきたが、データレコードの従属および多次元特
徴を含む、多様な特徴に関する別の態様での説明が後に続く。
【0029】 したがって、例えば、借り手がBorrower_Idによって識別され、書籍がBook_Id
によって識別される、それぞれが各一意キーに関連している2つのエンティティ
(テーブル)、つまりBooksとborrowers(借り手)として表されている2種類の
データレコードを考えてみる。実生活のシナリオでは、例えば公共の図書館では
、人は、例えば指定されている借り手によって借りられているすべての書式を見
ることに関心がある。後者のトランザクションはデータレコードの従属を例示し
、「書籍」は「借り手」に従属している。この問い合わせを解決するために、人
は、2つの問い合わせを適用しなければならない―1つは借り手情報に関して、
もう1つはその人によって借りられている書籍に関してである。
【0030】 Bツリー索引付けスキームに関する限り、指定された方法でのデータの従属を
サポートするために、以下のように、複数の別個のインデックスファイルが必要
とされる。
【0031】 ・book-Idキーを介してアクセス可能な書籍インデックスファイル ・borrower-id−キーを介してアクセス可能な借り手インデックスファイル ・複合キー(borrower-Id book-Id)を介して、アクセス可能な借り手を介し たトランザクション したがって、インデックススキームはここでは3つのインデックスファイルを
含む。これは、データ量と追加完全性保持とチェックに関する限り、明らかに望
ましくないオーバヘッドを提議する。したがって、例えば、指定されている書籍
を書籍ファイルから削除するには、それがborrower-bookインデックスファイル に存在するかどうかを問い合わせるための予備試験が必要となる。
【0032】 ここまで既知の技法の欠点を説明してきたが、データレコードの従属に関する
限り、扱いにくい表記およびその動作方法は、いわゆる多次元データコードのイ
ンプリメンテーションを考慮するのに値するようにもなる。
【0033】 ここでは後者の例に立ち返ると、テーブルBooksとborrowersは、いま、複数の
ビューから到達できる多次元テーブルと見なされている。したがって、前述され
た借り手−>書籍ビュー(borrower-book複合キー上でインデックスによって実 現される借り手(複数の場合がある)により借りられる書籍)に加えて、データ
ベースは、指定された書籍(複数の場合がある)を借りた借り手の代替ビューを
サポートする必要があり、それは言うまでもなく、代替複合キー(book-borrowe
r)を活用することを必要とする。
【0034】 Bツリー表記においては、したがって複合キー(book-Id borrower-Id)を介 してアクセス可能な別のインデックスファイルを追加することが必要とされ、合
計で4つのインデックスファイルを生じさせる。
【0035】 関連する欠点は自明であり、n次元テーブルにとっても価値があるようになる
(n>2)。
【0036】 したがって、技術では、これまで既知のデータベースファイル管理システムを
利用するデータ処理システムの欠点を削減する必要性がある。特に、技術では、
効率的なデータベースファイル管理システムを活用することによってデータベー
ス性能を示すデータ処理システムに備える必要性がある。
【0037】 しかも、技術では、本質的に、前述されたように不均衡な構造に影響を受けや
すくないインデックスを活用するデータベースファイル管理システムに備える必
要性もある。
【0038】 さらに、技術では、複数の種類のデータ、データレコードの従属、および/ま
たは多次元の表記を本質的にサポートするインデックスに備える必要性もある。
【0039】
【課題を解決するための手段】
用語の解説 説明の明快さのために、説明および添付クレームを通して頻繁に使用される追
加の用語の解説が続く。用語のいくつかは従来のものであり、それ以外は造り出
された。
【0040】 ブロック−ただ1回のI/O動作でアクセスできる記憶装置。ブロックは任意
の所望の方法で配列されているデータ、例えばツリーとして配列されているノー
ドおよびおそらく実際のデータレコードへのリンクも格納してよい。ブロックは
主要記憶域(内部とも呼ばれる)または二次(外部とも呼ばれる)記憶域内に常
駐してよい。
【0041】 ツリー−空であるか、d(d≧0)ポインタ(またはリンク)によってルート
のサブツリーと呼ばれる独立ツリーにリンクされるルートノードから成り立って
いるデータ構造。サブツリーのルートは、ツリーのルートノードの子ツリーと呼
ばれ、サブツリーのノードはルートの子孫ノードである。そのすべてのサブツリ
ーが空であるノードはリーフノードと呼ばれる。リーフではないツリー内のノー
ドが、内部ノードとして示される。
【0042】 本発明のコンテキストでは、リーフノードは、データレコードに関連するノー
ドでもある。
【0043】 ノードとツリーは、広義に解釈される必要がある。したがって、ツリーの定義
は、各ノードがブロックを構成するブロックのツリーも含む。同じようにして、
前記ブロックの子孫ブロックは、ブロックからアクセスできるすべてのブロック
である。「ツリー」の詳細な定義については、Cormen、LeisersonおよびRivestま
たはLewisとDenebergの「データ構造とそのアルゴリズム(Data structures and
their algorithms)」も参照すること。
【0044】 リーフノードとデータレコードの間の結合(例えば、リンク)は、リーフノー
ドからデータレコードにアクセスすることを可能にするあらゆる実現を含む。し
たがって、例証として、データレコードはリーフノードから直接的に(つまり、
ポインタを通して)アクセスしてよい。別の非制限例により、リーフノードは、
代わりにデータレコードにアクセスすることを可能にするデータ構造(例えば、
テーブル)を指す。言うまでもなく、その他の可変要素も実行可能である。
【0045】 インデックスの深さ−ルートブロックからデータレコードに関連するブロック
までの最大ブロック数として定義される。
【0046】 均衡インデックス−nが構造の中でのレコード数である場合に、任意のデータ
レコードに達するために必要とされるアクセスの数が、多くともclognであるよ うに、定数cが存在する場合に、インデックスは均衡である。
【0047】 均衡ツリーを得ることは、事後に(不均衡構造上で)均衡技術を適用すること
、均衡構造を生じさせること、あるいは所望される場合、均衡構造を維持するた
めに進行中に均衡技術を適用することを含む。
【0048】 インデックスにアクセスすることは、通常であり、必ずしもではないが、求め
られているデータレコードに達するために、あるノードからブロック内の別のノ
ードに、あるいは別のブロックに移動するプロセスと見なされるだろう。
【0049】 ナビゲーションは、(必ずしもではないが)通常、それらをそのキーごとに並
べて収集するためにデータレコードにアクセスすることと見なされる。
【0050】 検索スキーム:キーにより指定されたデータレコードにアクセスするために使
用されるインデックスに関連するアルゴリズムを意味する。ブロック内検索スキ
ームは、指定されたデータレコードまたは別のブロックにアクセスするためにブ
ロックの内側で使用されるアルゴリズムを意味する。データレコードは必ずしも
前記ブロックの中に収容されない。
【0051】 ブロックの共通キー−ブロックの共通キーは、関連する検索スキームによって
ブロックからアクセスできるデータレコードのすべてのキーの最も長いプレフィ
ックスである。所望される場合、共通キーの一部またはすべては、ブロック内で
明示的に保持されてよい。
【0052】 更新トランザクション−新規データレコードを挿入するか、あるいは既存のデ
ータレコードを削除したり、既存のデータレコードまたはその部分を修正するこ
とから成り立つトランザクション。
【0053】 垂直指向トリー構造−ルートからリーフまでのデジタルツリーの従来の向き。
以下に例証されるように、垂直トリー内でノードおよび/またはブロックの間の
すべてのリンクを維持することは必ずしも必須ではない。さらに詳細に後述され
るように、本発明のインデックスの中では、不均衡構造の影響を受けやすいトリ
ーは、垂直ツリーを構成する。後述されるように、いくつかの特定の実施形態に
おいては、トリーのデータレコードのキーの上でのインデックスの構築が、垂直
指向トリーを構成する。
【0054】 水平指向トリー構造−垂直トリー構造のhレベルを持つことであって、第1レ
ベルは最上レベルを表し、h番目のレベルは、通常データレコードと関連し、ブ
ロックの共通キー値に従って、i番目のレベルのブロックからi+1番目のレベ
ルのレコードへえ移動することを許す(不均衡構造の影響を受けやすいトリーを
構成する)最低レベルを表す。本発明の多様な実施形態においては、および以下
にさらに詳細に説明されるように、h上部レベルは最低レベルツリーのブロック
の共通キーの上の代表インデックスを構成する。
【0055】 記憶媒体−内部メモリと外部メモリのどちらか、あるいは両方を含む、データ
を記憶するために使用してよい任意の媒体。外部メモリは、以下の1つまたは複
数であってよい。つまり、磁気テープ、磁気ディスク、光ディスク、またはデー
タを記憶するために使用されるそれ以外の任意の物理的な媒体。内部メモリは、
内部メモリとしての役割を果すそれ以外の任意の物理的な記憶媒体だけではなく
、キャッシュメモリを含む既知のメインメモリを含む。
【0056】 短リンク−(近リンクとも呼ばれる)そのアクセスパスにノードbを含むデー
タレコードのキーが、キー位置rで値kを持つように、値rを持つノードaと同
じブロック内のノードbの間でkとラベルが付けられているリンク。
【0057】 長リンク−(遠リンクとも呼ばれる)レベルi−1のブロックBの中のノード
vとレベルiのブロックB’またはデータレコードとの間のリンク。vが値rを
有し、リンクのラベルがkである場合には、ブロックB’の共通キーまたはデー
タレコードのキーは、位置rでkである。
【0058】 短リンクまたは遠リンクのラベルは、リンクの値または方向とも呼ばれる 分割リンク−ブロックがオーバフローし、ノードaがノードbにリンクされる
場合に、および分割ノードbとその子孫ノードが別のブロック―ブロックB―に
収容された後、ノードaとノードbの間のリンクが分割リンクであるように、分
割プロセスが実行される。分割後、分割リンクは、ノードaと(ノードbを収容
している)ノードBの間のリンクである。分割リンクはラベルが付けられたリン
クである。
【0059】 PAIFなどの複数のインプリメンテーションにおいては、人は階層インデッ
クスを通してブロックBにアクセスできるので、ノードaから、ノードbが常駐
するブロックBへの分割リンクを維持することはオプションである。
【0060】 直接リンク−ノードvとv’が同じ値を持つようにノードv’を含む、レベル
iのブロックB内のノードvとレベルi−1のブロックB’の間のリンク。キー
kがあるデータレコードへの検索パスがノードvを含むが、その近リンクと遠リ
ンクのどれも含まない場合には、それはブロックB’への直接リンクを含む必要
がある。直接リンクにはラベルは付かない。
【0061】 ブロック分割手順で活用される用語、複製ノードおよびコピーノードに関する
説明が続く。
【0062】 このようにして、ノードv’が値kを有する場合には、v’およびそのラベル
が付けられたリンクからアクセス可能なデータレコードのすべてのキーが、位置
0,...k−1で一致する。
【0063】 ノードvが、それがノードv’の値に等しい値を持ち、vとそのラベルが付け
られたリンクからアクセス可能なすべてのデータレコードがノードv’とそのラ
ベルが付けられたリンクからアクセス可能であるように作成される場合、vはv
’の複製ノードと見なされる。複製ノードはノードv’を含むブロックに対する
直接リンクを維持する(複製ノードはコピーノードとも呼ばれる)。
【0064】 (発明の一般的な説明) 本発明のコンテキストで説明およびクレームの中で使用される多様な追加の用
語と手順での説明が続く。
【0065】 データレコードは、通常、複数のフィールドから成り立っており、素の内のい
くつかがキーとして示される。レコードが、一次キーと呼ばれる、キーの内の1
つにより並べられることもある。データレコードの上、または代表キーの上(後
者の定義に関しては、以下を参照のこと)でのインデックス(またはインデック
ススキーム)は、1つまたは複数のキーによる検索を容易にするデータ構造であ
る。インデックスの例は、指定されている多元ツリーインデックススキームのど
れかである。本発明に従ったインデックスは、複数のインデックススキームを使
用することにより構成されてよい。
【0066】 インデックスは、1つのファイル、あるいは内部メモリまたは外部メモリ内に
部分的にあるいは全体的に常駐する複数のファイルに記憶されてよい。
【0067】 本発明に従って、キーによる検索を可能にし、そのそれぞれが代表キーを含む
ブロックに区分される区分インデックス動的データ構造―を含むインデックスが
提供される。代表キーは、そのキーが(存在する場合には)検索キーに等しいレ
コードに関連するブロックを見つけるのに十分である必要がある。ブロックの位
置を発見すると、データレコードは容易に検索できる。代表キーは、必ずしもブ
ロックの中に物理的に記憶されない。
【0068】 区分インデックスの例は以下の通りである。
【0069】 1.一次キーのキー値を増加することにより並べられるファイルのブロックの
シーケンス。インデックスは、キーを含むブロックまで検索を引率する。一次キ
ーではないキーによる検索を可能にするために、区分インデックスは、レコード
ごとに区分インデックスがそのキーとそのリンクを含むように構築される。これ
らの組は、キーの減少しない値によって並べられる。インデックスは、所望のレ
コードのアドレスを含むブロックにつながる。
【0070】 2.ブロック内に配列されているトリー 3.区分インデックスの規定を満たすそれ以外の種類のインデックススキーム データレコードのキー上の区分インデックスは、基本区分インデックスと呼ば
れ、インデックス層Iで示される。
【0071】 この区分インデックスは不均衡になり、このようにしていくつかの長い検索パ
スを生じさせる可能性がある。
【0072】 区分インデックスを効率的に検索するために、追加インデックス層(インデッ
クス層は、省略してインデックスと示される)IがIの代表キーの上に構築
される。Iも区分インデックスである場合には、追加インデックスI2がI のブロックの代表キーの上に構築されてよい。このプロセスは、好ましくは単一
ブロック内に完全に含まれるインデックスI(これ以降、ルートインデックス
)を作成するまで繰り返されてよい。ルートインデックスIは必ずしも区分イ
ンデックスではない。(1つのインデックスも構成する)階層インデックスは、
...Iの集合体である。I...Iはいわゆる代表インデックスを
構成する。
【0073】 キーkによりレコードを検索する場合、後者は、kにつながるI−1のブロ
ックBを見つけるためにI(および場合によってはIh−1からIおよびデ
ータレコード(複数の場合がある))で検索される。このプロセスは、(存在す
る場合には)キーkのあるレコードに関連するIのブロックに達するまで繰り
返される。
【0074】 キーkのある新規レコードrを挿入する場合、ブロックBを見つけるために、
検索が上記のように実行される。IでBを発見したら、rがBに追加される。
【0075】 (Iの中の)Bがオーバフローすると、それは2つ(または3つ以上の)ブ
ロックに分割され、I内のBの代表が新規ブロックの代表により置換される。
内のブロックB1のオーバフローには、B1の分割が伴い、I2内のB1の
代表は新規ブロック等の代表により置換される。Iのブロックがオーバフロー
すると、追加層I+1が作成され、階層インデックスに追加される。「オーバ
フロー」状態が、特定のアプリケーションに従って決定されてよく、ブロックが
いぱいにされると、必ずしもトリガされるのではないことに注意する必要がある
。したがって、例えば、ある実施形態によって、オーバフローは、ブロックが少
なくとも半分のサイズでいっぱいのときに発生する。
【0076】 削除は挿入に類似しており、マージ―分割の反対のプロセスを伴う可能性があ
る。更新または分割は必ずしも進行中に実行される必要はないが、遅延されてよ
い(つまり、事後に(post factum)実行されてよい)。
【0077】 階層インデックスの構造が好ましくは均衡インデックスを保持することに注意
する必要がある。
【0078】 いくつかの実施形態においては、均衡インデックスで十分であり、(Iがな
い)階層インデックスが相対的に小さい量である(例えば、内部メモリの中に大
部分または完全に収容されてよい)いくつかのケースでは「均衡構造」要件が免
除されてよいことに注意する必要がある。
【0079】 本発明の第1の態様に従って、不均衡構造の影響を受けやすい基本区分インデ
ックス(例えば、トリー)の固有の制限には、インデックス、およびさらに特定
すると階層インデックスを指定された方法で提供することにより対処してよいこ
とが判明した。
【0080】 例えば、基本区分インデックス(例えば、トリー)に比較して階層インデック
スに集中すると、すぐに、選択されたデータレコードに階層インデックスを介し
てアクセスすることが、前記トリーを通して同じデータレコードにアクセスする
より、実質的にはさらに効率的であることが判明する。
【0081】 本発明のコンテキストでは、「さらに効率的」とは、データレコードで更新ト
ランザクション(例えば、挿入、削除または修正)を実行したり、データレコー
ドにアクセスするために階層インデックスを通って記憶媒体へアクセスする回数
が、基本区分インデックスを通って記憶媒体にアクセスする回数に比べて少ない
という意味である。アクセスの回数は、各アクセスで、ブロックが記憶媒体から
取り扱われる(つまり、ロードされるか、処理される)ように解釈されるべきで
ある。
【0082】 例えば、数ブロックしかなく、基本区分インデックスを通してデータレコード
にアクセスするには、前記階層インデックスを通すのと同じまたはより少ない動
作が必要になる可能性のある非常に小さいファイルのケースなどの後者の「さら
に効率的」な規定が適用しない例外的なシナリオがある場合がある。
【0083】 区分インデックスをトリーとして実現するためには、トリーである基本区分イ
ンデックスからの階層化インデックスの構築は、なんらかの追加の考慮が必要と
なる。
【0084】 このようにして、各キーは、文字またはビット文字列と見なされる。さらに、
トリーが単一ブロックに収容できない場合、それはブロックに区分され、その結
果各ブロックが、tリエの単一サブツリーを含む。ブロックの代表キーは、ブロ
ック内にトリーのルートノードに関連する文字列、つまりIのトリーのルート
からブロックのトリーのルートへのパスのラベルのシーケンスである。汎用階層
インデックススキームでのように、Iの代表キーはIi+1のキーである。I i+1 の中のキーkを検索するために、人はブロックIi+1のブロック内での
最長プレフィックスkを検索し、そこからIの適切なブロックに移動する。
【0085】 レコードの挿入は、そのキーをIに追加する、つまり任意の値をIのトリ
ーに追加することを伴う。その結果、ブロックがオーバフローすると、ブロック
は分割される―それは、典型的には2つ(インプリメンテーションによってはそ
れ以上)のブロックに区分化され、その結果、各ブロックは(接続されている)
トリーを含む。これを達成するために、ノードuとその子vの間のリンクが切断
され、vにルートがあるサブツリーが別のブロックに移動される。新規ブロック
の代表キーは、Iに追加される。汎用階層インデックススキームでのように、
このプロセスはI...Iまで続行する。
【0086】 基本区分インデックスが、Patricia(パトリシア)またはPAIFのような圧
縮されたトリーである場合、キーの部分だけが保存され、これでインデックス空
間が節約される。しかしながら、これらの節約は、検索が実行される方法に影響
を及ぼす。このような圧縮されたトリー(tries)では、通常2より大きいまた は2に等しい度数のノードだけが維持される。検索キーkが圧縮済みトリーにぞ
越していない場合、検索はレコードrで終了する可能性があり、わたしたちはk
がrのキーに等しいかどうかを調べなければならない。キーが異なっている場合
には、トリーはキーkのついたレコードを含んでいない。
【0087】 この戦略の階層インデックススキームに対する影響は、kのプレフィックスが
インデックス内で表されない可能性があるという点である。このようなケースで
検索を可能にするために、ブロックIからブロックIi−1のノードからの直
接リンクが導入される。これらのリンクには方向はなく、検索キーの適切な位置
が、ノードの方向のどれか1つに一致しない場合ときに取られる。
【0088】 検索が、その代表キーki−1がkのプレフィックスではないIi−1のブロ
ックBi−1に達すると仮定する(ki−1がBi−1で明示的に記録されてい
ない場合、私立ちは、Bi−1からアクセス可能な任意のデータレコードrに達
し、rのキーからki−1を決定することができる。)検索を続行するために、
私達はkとki−1を比較し、それらが異なる最初の文字の位置jを見つけ、直
接リンクとjより少ないか、それに等しい値のあるノードvをみつけるまでブロ
ックBのトリーを検索する。検索は、その直接リンクによって指されたIi− のブロックから続行した。(このようなノードが存在しない場合には、私達は
インデックスIi−1の第1ブロックに移動する。)このようにして、さらに悪
い場合には、各層は1つ過剰なアクセスを必要とする可能性がある。これにも関
わらず、および後述されるように、3つの層は、数十億のレコードを処理するの
に十分であり、通常2つの層がコンピュータの内部メモリ内で維持することがで
きる。したがって、任意のデータレコードに関連するブロックにアクセスするた
めに、外部記憶媒体へのわずか2回のI/Oアクセスを持つことが可能である。
【0089】 また、分割プロセスは、直接リンクも収容しなければならない。Ii−1のブ
ロックBi−1へのアクセスパスは、層IのブロックBから成り立っており
、Bi−1がオーバフローし、ブロックBi−1とBi−1’に分割される。ブ
ロックBは、いまIi−1内のすべてのその子孫ブロックへのリンクを含まな
ければならない。これは、以下の非制限技法により達成することができる。
【0090】 ki−1をBi−1の代表キーとし、このキーは、Bi−1の子孫のキーへの
検索がBi−1に達し、Bi−1の子孫の検索がBi−1に達するように、Ti
―Bの圧縮済みトリー―に挿入される。
【0091】 分割プロセスを達成するための非制限方法は、以下の通りです。
【0092】 1.少なくとも2つのトリーがブロック内に存在するように、ノード(この事
実に基づいて、分割ノード)の短リンクの間の少なくとも1つの短リンクが削除
される(この事実に基づいて、分割リンク)。
【0093】 2.サブツリーのそれぞれは別個のブロックに移動される。
【0094】 3.Bのブロックが存在しない場合、Bが作成され、分割ノードのコピー
済みノードがB内で作成される。
【0095】 4.B1のブロックが存在し、分割ノードのコピー済みノードがBの中に存
在しない場合には、分割ノードのコピー済みノードはBの中で作成され、(分
割プロセスの最後にある)Bi−1’が、Bi−1の代表キーに従って、B
ルートノードとコピー済みノード、およびそのラベル付きリンクを含む検索パス
でアクセス可能となるように、Bのトリーに接続される。
【0096】 5.コピー済みノードに直接リンクがない場合、直接リンクをコピー済みノー
ドからブロックBi−1に追加する。
【0097】 6.コピー済みノードからブロックBi−1’に遠リンクを追加するか、ある
いはコピー済みノードが遠リンクの方向で子ノードの短リンクを持つ場合には、
遠リンクは子ノードからブロックBi−1’への直接リンクによって置換できる
【0098】 前記インプリメンテーションにおいては、ik内のブロックの分割、k>0は
、(Ikの)分割リンクが、異なるブロック内に常駐する分割ノードのコピー済
みノード間のリンクであるように実行される。
【0099】 したがって、1つの態様に従って、本発明は、データ処理システム上で実行さ
れるデータベースファイル管理システムによって使用される記憶媒体の中で、 ブロックの中に配列されている階層インデックス。階層インデックスは、デー
タレコードと関連する基本区分インデックスを含む。基本区分インデックスは、
キーまたは複数のキーによるデータレコードのアクセスまたは更新を可能にし、
ブロックの不均衡な構造に影響を受けやすい。
【0100】 キーまたは複数のキーによるデータレコードのアクセスまたは更新を可能にし
、ブロックの均衡した構造を構成する前記階層インデックス。 を含むデータ構造に備える。
【0101】 本発明は、さらに、データ処理システム上で実行されるデータベースファイル
管理システムによって使用される記憶媒体の中で、 ブロックの中に配列され、データレコードのキーの上に構築されているインデ
ックス。インデックスは、データレコードと関連する基本区分インデックスを含
む。基本区分インデックスは、キーまたは複数のキーによるデータレコードのア
クセスまたは更新を可能にし、ブロックの不均衡な構造に影響を受けやすい。
【0102】 前記インデックスは、キーまたは複数のキーによるデータレコードのアクセス
または更新を可能にし、ブロックの均衡した構造を構成する。 を含むデータ構造に備える。
【0103】 まださらに、本発明は、データ処理システム上で実行されるデータベースファ
イル管理システムによる使用される記憶媒体の中で、 ブロックの中に配列され、データレコードのキーの上に構築されているインデ
ックス。インデックスはデータレコードに関連するトリーを含む。トリーは、キ
ーまたは複数のキーによるデータレコードのアクセスまたは更新を可能にし、ブ
ロックの不均衡な構造に影響を受けやすい。
【0104】 前記インデックスは、キーまたは複数のキーによるデータレコードのアクセス
または更新を可能にし、ブロックの均衡した構造を構成する。 を含むデータ構造に備える。
【0105】 まださらに、本発明は、データレコードにアクセスし、データ処理システム上
で実行されているデータベースファイル管理システムの中で以下に備える。つま
り、データレコードは、ブロックの中に配列され、記憶媒体の中で記憶されてい
る基本区分インデックスと関連している。基本区分インデックスは、キーまたは
複数のキーによるデータレコードのアクセスまたは更新を可能にし、ブロックの
不均衡な構造に影響を受けやすい。
【0106】 ブロックの中に配列される階層インデックスを構築するための方法は、 (a)前記基本区分インデックスを提供するステップと、 (b)前記基本区分インデックスの代表キーの上で代表インデックスを構築す
るステップであって、前記階層インデックスは、キーまたは複数のキーによるデ
ータレコードのアクセスまたは更新を可能にし、ブロックの均衡した構造を構成
する、代表インデックスを構築するステップと、を備える。
【0107】 本発明は、さらに、データレコードにアクセスし、データ処理システム上で実
行されるためのデータベースファイル管理システムの中で以下に備える。つまり
、データレコードは、ブロックの中に配列され、記憶媒体内に記憶されている基
本区分インデックスに関連する。基本区分インデックスは、キーまたは複数のキ
ーによるデータレコードのアクセスまたは更新を可能にし、ブロックの不均衡な
構造に影響を受けやすい。
【0108】 データレコードのキーの上でインデックスを構築するための方法であって、イ
ンデックスはブロックの中に配列され、 (a)前記基本区分インデックスを提供するステップと、 (b)前記基本区分インデックスの代表キーの上でインデックスを構築するス
テップであって、前記インデックスがキーまたは複数のキーによるデータレコー
ドのアクセスまたは更新を可能にし、ブロックの均衡した構造を構成するステッ
プと、を備える。
【0109】 本発明に従って、データレコードにアクセスし、データ処理システム上で実行
されるためのデータベースファイル管理システムの中で以下がさらに提供されて
いる。つまり、データレコードは、ブロックの中に配列されているトリーに関連
する。トリーはキーまたは複数のキーによるデータレコードのアクセスまたは更
新を可能にし、ブロックの不均衡な構造の影響を受けやすい。
【0110】 データレコードのキーの上でインデックスを構築するための方法は、インデッ
クスはブロックの中に配列されており、 (a)トリーを提供するステップと、 (b)前記トリーの代表キーの上にインデックスを構築するステップであって
、前記インデックスが、キーまたは複数のキーによるデータレコードのアクセス
または更新を可能にし、ブロックの均衡した構造を構成するステップと、を備え
る。
【0111】 本発明に従ったインデックスは、必ずしもではないが、好ましくは、指定され
たインデックススキームから選択された索引付けスキームの1つまたは複数によ
り構築される。典型的であるが、排他的ではない多元ツリーインデックスの例は
、Bツリー索引付けスキームである。
【0112】 1つの実施形態により、前記基本区分化検索スキームは、米国特許番号第5,
495,609号に開示されている種類のデジタルツリーによって構成されてい
るトリーである。
【0113】 別の実施形態により、前記トリーは、いわゆる確率的アクセス索引付けファイ
ル(PAIF)によって構成される。
【0114】 このようにして、特定の実施形態によって、データ処理システム上で実行され
るデータベースファイル管理システムによって使用される記憶媒体の中では、複
数のノードおよびリンクを有する少なくとも1つの確率的アクセス索引付けファ
イル(PAIF)を含むデータ構造と以下が提供される。
【0115】 前記PAIFのリーフノードは、前記ユーザアプリケーションプログラムがア
クセスかできる、それぞれ少なくとも1つのデータレコードと関連し、そこでは
前記データレコードの少なくとも部分が、少なくとも1つの検索キーを構成する
【0116】 前記PIAF内の選択されたノードは、それぞれ、前記挿入検索キー内の検索
キー部分の指定されたオフセットを表す。前記選択されたノードの間からの各指
定ノードから発するリンク(複数の場合がある)は、それぞれ前記検索キー部分
の一意の値を表す。
【0117】 ブロック内でそれぞれ配列されている、少なくとも2つのサブPIAFを有す
るPAIF 前記データベースファイル管理システムは、さらに、前記ブロックをブロック
の均衡した構造として配列することができる。
【0118】 PAIFというコンテキストでは、前記選択されたノードが、好ましくは指定
されたオフセットだけを含む一方で、これが必ずしもつねに当てはまらないこと
に注意する必要がある。したがって、前記ノードの1つまたは複数は、すべて必
要に応じて、適宜に、キーおよび/またはその他の情報の部分などのそれ以外の
情報を含んでよい。
【0119】 修正された実施形態に従って、トリーはPAIF型であるため、索引付けスキ
ームは、PAIFトリーの検索スキームに実質的には同一の検索スキームによっ
て構成される。
【0120】 さらに先に進む前に、説明の便利さのためだけに、本発明はおもに基本区分イ
ンデックスとしてのトリーに関しておもに説明されることに注意する必要がある
。技術に長けた者は、本発明が決してトリーによって拘束されず、したがって基
本区分インデックスが適用可能であることを容易に理解するだろう。
【0121】 したがって、本発明の階層インデックスを利用するデータベースファイル管理
システムは、とりわけ、以下の特徴のために、これまで既知である技法と比較し
て性能の拡張という点で有利である。
【0122】 ・データは、本質的に検索キーに従って並べ替えられた形式で保持される。す
なわち、人は、データレコードのキーの順でツリー内でナビゲーションすること
ができる。階層インデックスは、本質的には、「次を入手」および「前を入手」
などの逐次動作をサポートする。この点では、提案されている階層インデックス
は、例えば、ハッシュ(hashing)スキームおよびデジタルツリーのいくつかの インプリメンテーションに優る優位点を構成する。
【0123】 ・均衡したインデックスを維持するために、データベースのコンテンツに関す
る事前の知識に対する要件はない。
【0124】 ・均衡した階層インデックスが保持され、階層インデックスの深さは相対的に
小さく、それによって更新トランザクションを実行したり、データレコードにア
クセスするために必要とされるアクセスの数(通常は、低速I/O動作)を最小
限に抑える。1つの実施形態に従って、実際的には1つのI/O(およびせいぜ
い2つのI/O)(1つまたは2つのアクセスを構成する)動作が、数十億のデ
ータレコードの中から1つの指定されたデータレコードにアクセスするために必
要とされる。
【0125】 本発明は、さらに、10Mbyteから20Mbyteまたはそれ以上の範囲
となる少なくとも1つの内部メモリ、および外部メモリの記憶媒体を有するコン
ピュータシステム内で以下に備える。
【0126】 データレコードのキーの上でインデックスを含むデータ構造。インデックスは
ブロックの中に配列される。その結果、10億のデータレコードの場合、前記外
部メモリに対する実質的にはせいぜい2回のアクセスが、前記データレコードの
キーのサイズに関係なく、前記10億のデータレコードの任意の1つに関連する
ブロックにアクセスするために必要とされる。
【0127】 まださらに、本発明は、少なくとも1つの、10Mbyteから20Mbyt
eまたはそれ以上の範囲となる内部メモリおよび外部メモリの記憶媒体を有する
コンピュータシステムの中で、以下に備える。
【0128】 データレコードのキーの上でインデックスを含むデータ構造。インデックスは
ブロックの中に配列される。その結果、100万のデータレコードの場合、実質
的にはインデックスのすべてのブロックが、前記データレコードのキーのサイズ
に関係なく前記内部メモリの中に収容される。
【0129】 本発明は、さらに、記憶媒体を有するコンピュータシステム内で以下に備える
【0130】 データレコードのキーの上でインデックスを含むデータ構造。インデックスは
ブロックの均衡した構造で配列され、前記データレコードに対する逐次動作の実
行を可能にする.インデックスサイズは、本質的には前記キーのサイズから影響
を受けない。
【0131】 データレコードが階層インデックスのブロック内に常駐してよいか、あるいは
別個のデータファイル(1つまたは複数)の中に常駐してよいことに注意する必
要がある。後者の実施形態においては、データレコードは、言うまでもなく対応
する階層インデックスに関連する必要がある。以下の特定の実施形態の説明に関
してさらに明らかにされるように、指定データレコードは、複数の検索キーを処
理してよい。
【0132】 本発明に従ったインデックスは、必ずしもではないが、好ましくは特定のイン
デックススキームから選択される索引付けスキームの1つまたは複数によって構
築される。典型的であるが、排他的ではない多元ツリーインデックスの例は、B
ツリー索引付けスキームである。
【0133】 ここでは、本発明の第2の態様に関する説明が続く。
【0134】 したがって、通常、データは複数の種類のレコード(例えば、前記例では書籍
と借り手)から成り立っている。例えば、Bツリーインデックスを利用する種類
の従来のシステムにおいては、各キーのタイプはレコードとともに保持されず、
キーの一部と見なされない。プログラムは、レコードの種類、およびそれからデ
ータレコードのフィールドとその構造を「知っている」。
【0135】 本発明の第2態様に従って、別のアプローチが提案されている。各種のキーに
は、指名子―例えば、必ずしもではないが、通常、この種のすべてのキーに対す
るプレフィックスとして追加される1つまたは複数の文字の系列であるビットの
文字列が割り当てられている。指定されたキーは、その指名子が指定されたキー
のことである。指名子は、(検索または更新の目的のために)キーの一部として
取り扱われるため、インデックススキームの一部である。
【0136】 指名子は、種類の関数としてデータレコードの特性を得ることを可能にする。
したがって、キーの指名子を見ることによって、人は指名子を入手し、このため
レコードの種類を演繹することができ、レコードタイプを演繹的に知っている必
要はない。キーが指定されているデータレコードは、指定データレコードと呼ば
れる。指定インデックスとは、指定データレコードでの検索を可能にするインデ
ックスである。
【0137】 本発明に従って指名子の使用を例証した説明が続く。したがって、クラスCを
考えてみる。その結果、このクラスのすべてのデータレコードにはキーフィール
ド(またはフィールド)k、およびおそらく複数のそれ他のキー以外のフィー
ルドを有する。RをクラスCのデータレコードとする。この場合、R.k=F
IATである。kの指定子をAとしよう。指名子を追加することによって、人
は、キーAFIATを入手する。R.k=FIATが指定されるレコードにア
クセスするために、指定インデックスが、キーAFIATに関して検索される。
【0138】 指名子の特徴を説明してきたが、第2の態様に従った別の特徴―データレコー
ドの従属に関する説明が続く。キーKが指定されるレコードR1と、キーK 、K2の並べられた組から成り立つ複合キーが指定されるレコードR2を考えて
みる。(このケースでは、R2の指定されたキーは複合キーK’、K2’であ
り、この場合K2’は指定子D2によってプレフィックスが付けられたキーK2
から成り立つ(D2はR2の指名子と見なされる)。指定インデックスでは、人
は、キーK’―その指名子D1が指定されるキーKを検索することによって
R1を選択し、キーK’K2’―K’とK2’の連結で同じインデックスを
検索することによってR2を選択することができ、この場合、K2’はその指名
子D2が指定されるキーK2である。このケースでは、K2はKに従属する。
【0139】 従属関係は、レコードにも広がる。K2がKに従属する場合、K2’の指名
子はD2であり、R2の指名子もD2(またはD1、D2)である。R2がR1
に従属する場合、R2のキーはK2’をKに連結することにより構成される。
K2’内では、D2がK2の前に置かれる。
【0140】 ERDモデルにおいては、レコードR1のタイプとレコードR2のタイプは、
1対多の関係で有効であり、R2タイプの複数のレコードがR1タイプの単一の
レコードに関係してよいことを意味する。このような関係は、従属関係で実現で
きる。つまり、R2タイプの複数のレコードは、タイプの単一レコードに従属す
るだろう(例えば、複数の書籍は同じ借り手によって借りられる)。特に、この
関係が1対1である場合(例えば、1対1が、1冊の本だけが各借り手によって
借りられる関係である)には、キーK’D2である。この場合、D2はR2の
指名子であり、R2の位置を見つけ出すのに十分である。指名インデックスでは
、K’K2’への検索パスは、K’への検索パスを含む(これは、別のパス
を介してレコードR2に到達する可能性を排除していない)。後者の特徴は、第
2の態様に従った別の重要な特徴、つまりデータ完全性の固有の保守を示してい
る。このようにして、そのキーがK’K2’(またはK’D2)であるレコ
ードの挿入は、そのキーがK’であるレコードが存在する場合にだけ実行でき
る。前記例では、本(book_Id=2222)を借りた借り手のトランザクション (Borrower_Id=111111)の挿入は、指定された借り手(K=1111 11が指定されるデータレコードR1)が存在する場合に(前記例では、借り手
の指名子はAであり、従属借り手−書籍データレコードの指名子はBである)、
その指定キーがA111111B2222(この事実に基づいて、借り手−書籍
レコード)_onlyであるレコードR2の挿入を生じさせる。借り手−書籍レコー ドへのインデックス内のパスデータは、借り手が存在するかどうかを判断するた
めの十分な情報を含むので、完全性は、わずかなオーバヘッドだけで達成される
。借り手が存在しない場合、複合キーへのパスは借り手を通過しないだろう。こ
れは、挿入プロセスで自動的に検出されるだろう。対称的に、従来の技術に従っ
て、さまざまな種類のレコードはさまざまなインデックスファイルと関連してい
た。借り手−書籍インデックスファイルに(複合キーが指定される)新規データ
を挿入する前に、指定された借り手(レコードR1、キーK2)が素材するかど
うかを確定するために借り手インデックスファイル内で別個のチェックが実行さ
れ、このようにして、不当なオーバヘッドを提起しなければならない。
【0141】 従属関係が2つのレベルだけに制限されておらず、従属レコードはそれ自体、
それに従属するレコードを有することができ、したがってnレベルの従属が達成
できることに注意する。例えば、口座レコードが支店レコードに従属し、預金レ
コードが口座に従属する銀行業務データベースを考えてみる。
【0142】 ここでは、本発明の第2の態様に従った多次元特徴に目を向けると、Rを2つ
のキーKとK2のどちらかにより識別されるレコードとする。その場合、指定
インデックスは、指定キーKによる検索パスと指定キーK2’による指定キー
の、Rへの2つの検索パスを含む必要がある。したがって、Rは多次元レコード
を構成する。多次元インデックスは、指定インデックスと多次元データレコード
(複数の場合がある)を含む。
【0143】 多次元インデックスが従属データレコードに適用しない第1実施形態を考えて
みる。このようにして、例えば、このクラスのすべてのデータレコードが2つの
キーフィールドk―車型―とk―そのライセンスプレート番号―およびおそ
らくいくつかの非キーフィールドを有するように、クラスCを考えてみる。Rは
、クラスCのデータレコードとし、この場合R.k=FIATおよびR.k =127とする。kの指名子をAであるとし、kの指名子をBであるとする
。指名子を追加することによって、人はキーAFIATおよびB127を入手す
る。これらの拡張されたキーは、単一の指定インデックスの中に挿入される。R
.k=FIATが指定されるレコードにアクセスするには、指定インデックス
はキーAFIATに関して検索され、R.k=127が指定されるレコードを
選択するには、同じ指定インデックスがB127に関して検索される。
【0144】 前記説明および例は、データレコードが必ずしも従属関係を示さない多次元イ
ンデックスを考慮した。多次元インデックスは、要すれば従属データレコードに
も適用されてよい。例えば、銀預金が口座と預金者の両方に従属している行業務
データベースを考えてみる。単一指定インデックスは、(指定されたキーk
口座番号により)口座への、(指定キーk’預金者名により)預金者への、お
よびk’k’とk’k’の両方により預金へのアクセスを提供する。(
言うまでもなく、kにとって、それがkに従属しているときにkにとって
、およびそれがkに従属しているときにkに対し異なる指名子を使用するこ
とも可能である。) 多次元レコードの指名子は、レコードを検索または更新するために使用されて
いるキーの指名子に依存する。このようにして、車レコード(FIAT、127
)の指名子は、キーAFIATによってレコードを検索または更新しているとき
はAであり、ライセンスプレート番号B127を介してそれにアクセスしている
ときにはBである。
【0145】 データレコードに加えて、メタデータを維持することが必要とされる。メタデ
ータは、その種類の関数として異なるレコードに関する情報を含む。したがって
、それは指名子を識別するために必要とされ、その結果、例えば、多様なフィー
ルド、キー、従属、レコードサイズ等の説明など、レコードに関する情報が入手
できる。指定インデックスでの検索スキームは、メタデータに気付かれない。そ
れはレコードの位置を発見し、指名子を識別し(例えば、指名子はレコードの前
に置くことができる)、(複合)指定キーを構築する。
【0146】 このようにして、本発明の第2態様に従って、データ処理システム上で実行さ
れているデータベースファイル管理システムにより使用される記憶媒体内では、
以下を含むデータレコードが提供される。つまり、データレコードのキーの上の
インデックス、第2型のデータレコードが第1型のデータレコードに従属する少
なくとも2つの型であるデータレコード。
【0147】 依然として第2態様に従って、データ処理システム上で実行されるデータベー
スファイル管理システムにより使用される記憶媒体には、以下を含むデータ構造
が提供される。
【0148】 つまり、指定データレコードを構成し、データレコードの指定キー上の指定イ
ンデックス、第2型の指定データレコードが第1型の指定データレコードに従属
する、少なくとも2つの型であるデータレコード。
【0149】 第2値用に従って、以下を含む多様な優位点が達成される。 □指定インデックスと指定データを含むデータ構造は、さまざまなデータ項目間
の関係を維持することができる。 □指定インデックスと指定データを含むデータ構造は、論理的に関連する項目を
リンクすることができる。 □指定インデックスと指定データを含むデータ構造は、複数のデータモデルを同
じにかつ効率的にサポートすることができる。 □指定インデックスと指定データを含むデータ構造は、データ完全性を維持する
上での高い効率を可能にする。 □指定インデックスと指定データを含むデータ構造は、関連データを検索する上
で高い効率を可能にする。
【0150】 本発明のデータベースファイル管理システムにより提供される多様な優位点に
関する詳細な説明は、特定の実施形態に関して以下に示される。
【0151】 データレコードが、PAIFの一部を構成してよい、あるいは1つまたは複数
の別々のデータファイルの中に常駐してよいことに注意する必要がある。後者の
実施形態においては、データレコードは、言うまでもなく対応するPAIFni
リンクされなければならない。さらに、以下の特殊な実施形態の説明に関して明
確化されるように、指定されるデータレコードは、複数の検索キーを収容してよ
い。
【0152】 また、複雑なデータ構造とデータ関係が、新規の統一された簡略な技術によっ
てどのようにしてサポートできるのかも呈示されるだろう。
【0153】 また、インデックス構造が、どのようにすればキーのサイズによらずに、最小
のサイズであることができるのかも呈示されるだろう。
【0154】 前述された優位点のすべてが、データに関する予備的な考慮事項なしに本発明
によって本質的に支持される(つまり、キー範囲は未知であり、レコード数は未
知であり、データの無作為物理ロケーションが仮定される等)。
【0155】 依然として別の態様によって、本発明は、データ処理システムで実行されるデ
ータベースファイル管理システムにより使用される記憶媒体の中で、以下を含む
データ構造を提供する。
【0156】 記憶媒体に記憶され、ブロックに記憶されている前記データレコードのキーの
上で構築されているインデックス。インデックスはブロックの中に配列され、リ
ーフブロックがリンクによりデータレコードにリンクされている。
【0157】 前記インデックスは、前記リンクの少なくとも1つが、同じブロックに記憶さ
れている少なくとも2つのデータレコードによって共用されるという点で特徴付
けられている。
【0158】 1つの実施形態により、インデックスはトリーにより構成される。
【0159】 さらに、本発明は、データ処理システム上で実行されるデータベースファイル
管理システムにより使用される記憶媒体の中で、以下を含むデータ構造に備える
【0160】 記憶媒体の中に記憶され、ブロックに記憶される前記データレコードのキーの
上で構築されているインデックス。インデックスはブロックの中に配列され、リ
ーフブロックは、リンクによりデータレコードにリンクされている。
【0161】 前記インデックスは、前記リンクの少なくとも1つが、同じブロックに記憶さ
れている少なくとも2つのデータレコードにより共用されるという点で特徴付け
られている。
【0162】 請求項1に従って階層インデックスを構成する前記インデックス、および前記
基本区分インデックスのブロックが、前記データレコードにリンクされている。
【0163】
【発明の実施の形態】
本発明のデータベースファイル管理システムを使用するシステムの一般的ブロ
ック図を示している図1に最初に注目する。図示されているとおり、ペンティア
ムマイクロプロセッサ3を使用している、米国インテル社から購入できる汎用コ
ンピュータ、例えばパーソナルコンピューター(以下P.C.)は、米国マイク
ロソフト社から購入できる、プロセッサ3と連結されており、またコンピュータ
1全般を制御するオペレーティングシステムモジュール5、例えばウインドウス
ンNTを有している。
【0164】 P.C.1は、それぞれ7、9および11のみしか図示されていない複数のユ
ーザーアプリケーションプログラムを内蔵することができる。ユーザーアプリケ
ーションプログラムは、オペレーションシステム5の制御の下でプロセッサ2に
より、本質的に公知の方法で、実行され、また出入力ポート15とオペレーティ
ングシステム5を経由してキーボード13により供給されるユーザーの入力に反
応する。ユーザーアプリケーションプログラムは、出入力ポート17とオペレー
ティングシステム5を経由して、データを表示するために、更にモニター16に
連結されている。ユーザーアプリケーションプログラムで、データベース管理シ
ステムモジュール20によってデータベースの中に保存されているデータにアク
セスできる。一般に、図1の中で示されている、汎用データ管理システムは、ハ
イレベル管理システムとら成り、システムは、一般的に「論理的」方法で、存在
するデータを検索し、例えばSQLデータ定義とデータ操作言語(DDLとDM
L)のような本質的に公知のステップで、ステップによりユーザーアプリケーシ
ョンプログラムに反応する。データベース管理システムは、一般的に、本質的に
公知の方法で、存在するデータ上の情報を保持するメタデータを含むデータ辞書
24を利用する。
【0165】 存在するデータの構造は、データベースファイル管理システム26により管理
され、管理システムは、インデックススキームと実際のデータレコード28と関
連している。ハイレベル管理システム22により受信され処理された「ハイレベ
ル」論理命令(例えばSQLコマンド)は、データベースファイル(複数を含む
)の中に保存されてるデータレコードにアクセスしたり、それを更新する「ロー
レベル」コマンドに転換され、このために、データベースファイル管理システム
は、データレコードの実際の構造と組織を考慮に入れている。データベースファ
イル管理システムの「ハイレベル」と「ローレベル」の部分は、本質的に公知の
アプリケーションプログラマーインターフェース(API)例えばマイクロソフ
ト社から購入できるマイクロソフトのオープンデータベース互換性(ODBC)
インターフェースを経由して交信することができる。ODBCを利用することで
、データベースファイル管理システムあるいはアプリケーションの「ハイレベル
」モジュールを、ODBC規格をサポートしている他の「データベース管理シス
テム」と透過的に交信させることができる。本明細書の中の用語アクセスあるい
はデータレコードの更新の範囲は、データレコード(複数を含む)の「find(検
索)」、「insert(挿入)」、「delete(削除)」および「modify(修正)」お
よび、データベースの構築と、変更とまた削除を行うことができるようにする適
切なDDL(データ記述言語)コマンドを含む全ての種類のデータ操作まで及ぶ
ものとする。図1は、また概略的に、内部メモリーモジュール29(例えば16
メガバイドと場合によってはキャッシュメモリーサブモジュールを使用する)と
、外部メモリー29’(例えば1ギガバイト)の形式で記憶媒体を示している。
一般的に、外部メモリー29は、外部の、比較的遅い通信バス(図示されていな
い)を経由してアクセスされるのに対して、内部メモリーは、より早い通信バス
(図示されていない)を経由してアクセスされる。通常、内部メモリーのサイズ
が小さいので、現在実行中のアプリケーション(あるいはアプリケーションの一
部)は、外部メモリーから、内部メモリーにロードされる。同様に、内部メモリ
ーに全部納まりきれない大きなデータベースに対しては、データベースの大部分
は、外部メモリーに保存される。従って、データベースの中の一個あるいはそれ
以上のデータを求めるアプリケーションにより生成された問い合わせに答えて、
データベース管理システムは、オペレーティングシステムサービス(即ちI/O
オペレーション)を使用して、外部の通信バスを経由して、一個あるいはそれ以
上のデータのブロックを、外部から内部メモリーに対してロードする。求められ
ているデータレコードが、ロードされたブロックの中に発見できない場合は、求
められているデータレコードを探し当てるまで、追加のI/Oオペレーションが
、必要である。
【0166】 表示を簡素化するために、内部と外部のモジュール29、29’が、他の種々
のモジュール5、7、9、11および20から分離されていることに留意しなけ
ればならない。言うまでもなく、図示されていなが、種々のモジュール(オペレ
ーティングシステム、DBMSおよびユーザーアプリケーションプログラム)は
、外部メモリーに記憶され、あおれらの現在実行されている部分は内部メモリー
にロードされる。
【0167】 コンピュータ1は、また必ず図1と同じ構造を有するサーバを利用するLAN
(図示されていない)の一部を形成しているワークステーションとしての役割を
果たすことができる。ワークステーションとサーバが、プロトコルに基づくクラ
イアントサーバを利用する限り、(データベースレコード28それ自体を含む)
諸モジュールの大部分は、サーバの中に常駐する。
【0168】 当業者であれば、図1を参照して前記で説明された実施形態が、可能な多数の
変形のたった二つであること分かるはずでである。従って、これに限定されない
例として、データベースを、インターネットのウェブサイトに常駐するオンライ
ンのデータベースとすることができる。本発明は、言うまでもなく、小型の内部
メモリーと大型の外部メモリーの特定の区分に限定されるわけではない。従って
、例えば、修正された実施形態として、大型の内部と外部メモリーが、使用され
、更にもう一つの改造された実施形態として、たった一個の内部メモリーが使用
される。
【0169】 また更に、説明を明確にするために、システム1が、簡素化され一般的な方法
で図示されていることに留意しなければならない。データベースファイル管理シ
ステムと、特に通常データベースファイル管理システムの中に収容されている様
々のコンポーネントの更に詳しい解説については、例えば「データベースシステ
ムのコンセプト」の7章を参照することができる。
【0170】 本発明の一般的な構造を説明したので、ここで、エンティティ関係図(ERD
)として、また図示を目的とするサンプルデータベース構造を示している図2に
注目する。従って、図2のERD30は、所定のクライアントが1口以上を口座
を有していることを示しており、また同様に所定の預金が、一人以上のクライア
ントにより所有されていることとの関係を示すエンティティである、「CLIENT」
32と「ACCOUNT」34とまた同時に「nからm」「DEPOSIT」36の関係から成
る。
【0171】 図示されているとおり、エンティティ「CLIENT」は、次の属性(フィールド)
を有している:即ち、 各クライアントを識別する重要な属性である「Client_Id」38と、 クライアントの名前を表す「Name」39と、 クライアントの住所を表す「Address」40である。
【0172】 エンティティ「口座「は、次の属性(フィールド)を有している:即ち、 各クライアントを一意に識別するキー属性である「Acc_No」42と、また口座
の残高を維持する「Balance」43である。関係を保つ「DEPOSIT」は、「CLIENT
」と「ACCOUNT」のキーの複数の一対から成り、各対は、特定のクライアントが 所有する特定の預金の標識になるようになっている。
【0173】 ここで図3を説明する。ここには、関連データモデル32と、34および36
にそれぞれに対応する3個のテーブル50と、5lと、および52でテーブル示
されている図2のデータベースが示されておりテーブルの各々には、図示を目的
として、幾つかのデータの出現が記載されている。「CLIENT」テーブルの(「Cl
ient_ID)のキーフィールドの長さが、5桁であるのに対して、「ACCOUNT」テー
ブルの(「Acc_ID)のキーフィールドの長さが、6桁であることに留意しなけれ
ばならない。クライアントテーブルには、5個のデータ出現55−59が、記載
され、口座テーブルには、2個のデータ出現65と66と、また預金テーブルに
は3個のデータの出現70−72が、記載されている。
【0174】 従来の技術に従って、各テーブルに対して、一般的に、一次キーによる異なる
インデックスファイルがある。従って、図4は、従来のBツリー構造のインデッ
クススキームを使用するファイル管理システムによる図3の「CLIENT」テーブル
の索引ファイルを示している。図示されているとおり、索引付けファイル80は
、ルートブロックと、また2個のリーフブロックをそれぞれ表している3個のブ
ロック80a−cから成る。データレコードは、無作為に、5個のデータレコー
ド83−87を保持している別個のファイル81に、今、ランダムに組織化され
ている。各々のブロックは、一組のフィールド連続(例えばブロック80aの中
の82a−bと83a−b)から成る。各対の中で、第1フィールドは、検索キ
ー値を表しており、第2フィールドは、次の検索すべきブロックを識別する数字
のようなリンクを、あるいはリーフブロックの場合は、データレコードを識別す
る数字のようなデータレコードに対するリンクを表している。後者の実現は、デ
ータレコードをブロックに結び付ける限定されない実施形態を形成する。図4の
特定の実施形態の中で、12355に等しいかあるいはそれ以下の数値のキーに
よるレコードの検索は、ルートブロック80aからブロック80bに向けられる
【0175】 従って、誰のキーが12355(82a)であるかのレコードに対する検索は
、ルートブロック80aの中で開始されてから、リンク82aによりブロック8
0bに向けられる。ブロック80bの中で、検索キー12355(86a)は、
データファイル81の中の検索キーにより識別された各データレコードのアドレ
スを示しているリンク86bと関連する。言い替えれば、検索キー「12322
」(図3の中の57)により識別されたデータレコードは、データファイル81
の中の4番目の順序である。
【0176】 テーブル「ACCOUNT」と「DEPOSIT」は、同様に2個の別個のBツリーのツリー
索引ファイルの中にそれぞれ配置される。
【0177】 図4のBツリー索引ファイルは、キー(即ち検索キー)が、二重である、即ち
キーが、内部のブロック(即ちインデックススキーム)の中と、またBツリー索
引と関連するデータレコードの中の双方で維持されると言うアプローチの重要な
欠点の一つを示している。従って、例えば、データレコード57の検索キー(図
3の中)は、ファイル81の中のデータレコード86の一体化された部分として
保持されるばかりでなく、またブロック80b(検索キー86a)と、場合によ
っては80a(検索キー82)のような親ブロックの中に保持される。
【0178】 上記の場合であると仮定して、より大きなファイル(実際生活上の多数のシナ
リオの場合である)に対して、検索キーのコピー(と特に長いキーに対する)が
、大きな保存容積を必要とし、性能に悪影響を与える膨張したインデックスとな
ることが容易に分かる。
【0179】 図5は、既知のトリー索引付けスキームを使用するファイル管理システムに基
づく、図3の「CLIENT」テーブルの異なる索引付けススキームを示してい
る。従って、トリー索引付けファイル90は、複数のノードとリンクから成り、
各ノードは、オフセット一を表しており、またリンクは、オフセットの数値を表
している。テーブル91は4つの列を有している。第1列は、どの桁の位置が使
用されるかを示しており、第2列は、桁の数値を示している。桁数値は、キーを
2個のサブセットに分ける、列3と4は、検索手続きを次のステップに向ける。
【0180】 所定の検索キー、例えば12355を探すために、ルートにより示されている
位置の桁(ノード90aにより示されている位置「5」が、またテーブル91の
第1行目の第1列であったとして)は、同じ行の第2列で指定された数値と比較
される(数値「5」は、またトリー索引の中のリンク90bにより示される)。
求められている検索キー12355の位置5の桁が、実際5であるので、制御は
、行2に転送される(テーブル91の1行目の第3列により示されているとおり
)。次に、求められている検索キーの位置3の桁は(トリーの中の90cは、ま
たテーブル91の中の2行目の第1列の数値であるとして)、数値3と比較され
る(リンクa90が、またテーブル91の2行目の第2列であるとして)。整合
が起こるので、制御は、テーブルの中の3行目に転送される。ステップの中で、
求められている検索キーの位置4の桁は、ツリーの3行目の第2欄で指定された
数値と整合せず(即ち、「5」対「4」)、従って、テーブル91の中の第4欄
の中で示されているとおり(「等しくない」)、求められているデータレコード
57に対するリンクが、得られる。
【0181】 テーブル「ACCOUNT」および「DEPOSIT」は、同様に2個の別々のトリー索引付
けファイルにそれぞれ分けられる。図4のBツリー索引付けファイルとは反対に
、図5のものは、検索キーのコピーを必要としない。言い替えれば、オフセット
とリンク値のみで、キー全体がトリー(90)の中に保持されるわけではない。
この意味で、技術は、Bテクニックより優れている。
【0182】 しかし、すでに指摘したとおり、前記のトリーには、次の欠点を伴う、即ち、
トリーは、均整の取れた構造とするように、データベースの内容を推論で知り、
その結果キーを区分することに努力を傾注したために、均等に配分されたデータ
を保持している。図2の中で説明されている種類のデータベースが、例えば図2
の特定のデータベースに対してのような、新規のクライアントが、口座を開設し
たり、従来の得意先が、口座を解約したり、新規のクライアントが、現存の口座
の共同所有者として登録されたりするような動的な性格を有しているので、デー
タベースの内容を推論で知ることは、必要以上の束縛を生ずるので、明らかサポ
ート支援しないことである。ツリーの中を巡り回る結果、83、86、87、8
4、85(図4)の順序でアクセスすることになり、キーの順序とならない。
【0183】 公知のトリーインデックススキーム(図5を参照して)を示したので、次に、
基本区分インデックスから成り、前記に説明されたこれまでの公知の技術に関連
する問題点を解決する本発明の索引の種々の実施形態を下記のとおり説明する。
より具体的には、階層形態索引の索引の好ましい実施形態と、またツリー形態の
基本区分インデックスの好ましい実施形態が、示されている。これ等の例は、こ
れに拘束されるわけではない。
【0184】 種々の実施形態の説明に入る前に、図6A−Cを参照して、PAIFと呼ばれ
る新しいトリーインデックススキームを説明する。下記に示されているとおり、
PAIFは、ツリー構造に限定されるわけではない。PAIFに基づいて、図7
−9を参照して、PAIFの代表キーの上の構成された代表インデックスから成
る種々の階層インデックスの実施形態が、説明される。図7から9の実施形態で
は、代表インデックスのインデックススキームと基本的に区分された索引の代表
的なインデックススキームが、ほぼ同じPAIFとなっている。
【0185】 図10の中で、異なるトリーによる階層索引の更にもう一つの実施形態が説明
されている。図示されているとおり、図10の実施形態の中で、代表インデック
スとトリーはまたほぼ同じであるが、構造は、必ずしもこのとおりでなければな
らないわけではなく、例示されているとおり、例えば図11を参照して、トリー
と代表インデックスが異なる。
【0186】 ここで、図6A−Cに戻って、PAIFを使用するファイル管理システムに基
づく、図3の「CLIENT」テーブルの概略図の続きが示されている。「トランザク
ション」と「オペレーション」は、互換性を持たせて使用されている。
【0187】 下記の説明の中で、PAIFの中でデータを操作できる、即ち新しいデータレ
コードをPAIFに挿入し、PAIFの中でデータレコードを検索し、また現存
するデータレコードを削除する基本コマンド、を解説する。当業者であれば、こ
れ等の基本的な原始要素に基づいてより複雑なデータの操作(例えば「結合」)
を行うことができることが分かるはずである。
【0188】 初めに図6Aに戻って、検索キー「12345」(即ち5バイトの長さの検索
キー)を有するクライアントのデータレコード103(図3のクライアントテー
ブルの中の56)が、示されている。図6AのPAIFは、言うまでもなく、平
凡なものであり、長リンク102によってデータ103にリンクされている単独
のノード101(ルートノードとリーフノードを表している)から成る。
【0189】 ノード100は、検索キーの中のオフセット0を示しており、またリンク10
2は、特定のオフセットの検索キー部分(特定の実施形態により1バイトの長さ
)の数値「1」を示している。
【0190】 図6Aの中で明らかに示されているとおり、データレコード103は、ノード
101とリンク102から成る装置としての検索パスと関連しており、オフセッ
トと、また指定されたデータレコードの検索キーの範囲内の特定のオフセットで
対応する検索キー部分の数値と一致する関連する検索キー部分の数値を定義する
。より具体的には、検索キー「12345」の範囲内のオフセット0の1バイト
の検索キー部分の数値は、本当に「1」である。
【0191】 ここで。図6B−1に戻って、図の中に、Client_Id_No「12445」107
を有するデータレコードが挿入された(図3のクライアントテーブルの中のデー
タの出現58)、連続的なトランザクションの後のPAIF108が示されてい
る。データレコード103と107の検索キーは、第3バイト(オフセット2)
、即ちそれぞれ「3」と「4」の中でのみ区別される。
【0192】 ルートノード101とリンク102により画されている装置は、データ103
と107の双方に対するオフセット0の1バイトの検索キー部分の数値が、「1
」であるので、データレコード103と107の間を区別するのに不十分である
。それ故に、ノード104は、2個のレコードの間を区別する最も低いオフセッ
トを示し、またリンク105と106は、関連する1バイトキー部分はオフセッ
ト2で、「3」と「4」上で示す。PAIFの実現が、図の中に示されている特
定の例によって拘束されず、特定の応用に応じて種々の実施方法を適用させるこ
とができることに留意しなければならない。従って、例えば、図6B−2と6B
−3は、図6B−1のPAIFを実現している他の二つのオプションを示してお
り、場合、図6B−2の中で、完全なキーが、PAIFの中に示されている(例
えば、レコード12445の全桁が、ルートノードから始まりデータレコードで
終るリンクの中に指定されている)。後者の実施形態は、より明確であるが、絶
対に必要なノードのみが示されいる図6B−3の貧弱な実施形態と比較してスペ
ースの意味で効率が低い。言うまでもなく他の変形も応用可能である。
【0193】 新しいデータレコードを現存するデータベースに挿入する手続きの説明に移る
前に、ことに留意しなければならない。トリーPAIFの中のノードが、高けれ
ば高いほど、PAIFにより示されるオフセットは小さくなる(例えば、図6B
のPAIFの中で、ノード101はモード104より高く、従ってノードにはよ
り小さいオフセット−「0」対「2」)が割り当てられる。
【0194】 一般的には、新しいデータレコードを現存するPAIFに挿入するための好ま
しい手続きは、下記のステップの実行から成る: i. ルートノードからから始りデータレコードで終るリーフノード(「参照デ
ータレコード」として参照される)に関連する参照パスに沿って進める、 参照パスの中の各ノードの中で、リンクにより示されてる数値が、ノードによ
り指定されているオフセットの1ビットの長さのキー部分の数値と等しい場合は
、ノードから発するリンクに沿って進める、 ノードの中で指定されているオフセットが、キーの中の対応するキーの部分の
何れかを超えている場合か、数値のリンクがない場合は、任意のパスに沿って何
れかの参照データレコードに進める、 ii.参照データレコードの検索キーを、新しいデータレコードの検索キーと比
較して、二つを識別する検索キー部分の最も小さいオフセットを決定する(以下
識別オフセットと称す)。 iii.識別オフセットの数値に従って、下記のステップの何れか一つを進める
(iii.0−iii.3)。
【0195】 iii.0 データレコードが、等しい場合は、終了するか、あるいは iii.1 識別オフセットが、参照パスの中のノードの何れか一つにより示
されたオフセットと整合する場合は、一つのノードから発するもう一つのリンク
を加えて、リンクに、新しいデータレコードの検索キーから取り出された識別オ
フセットの検索キー部分の数値を割り当てるか、あるいは iii.2 識別オフセットが、リンクによって参照データレコードにリンク
されているリーフノードにより示されたものより大きい場合は: iii.2.1 リンクを、参照データレコードから切り放して(即ち、一時
的に「開放」のままになる)、リンクを、新しいノードに移動する。新しいノー
ドには、識別オフセットの数値が割り当てられる、 iii.2.2 参照データレコードと新しいノード(ここでリーフノードと
なる)を接続して、リンク(長リンク)に、参照データレコードの検索キーから
取り出された識別オフセットの検索キー部分の数値を割り当てる、 iii.2.3 リンクによって新しいデータレコードと新しいノードを接続
して、、リンク(長リンク)に、新しいデータレコードの検索キーから取り出さ
れた識別オフセットの検索キー部分の数値を割り当てるか、あるいは iii.3 iii.0と、iii.1およびiii.2の条件が満たされな
い場合は、識別オフセットが、同時に、親ノードに割り当てられたオフセットよ
り大きく、また子ノードに割り当てられたオフセットより小さいか(ケースAと
見なされる)、あるいは検索パスの中の全てのノードが、識別オフセットより大
きな数値を有しているような(ケースBと見なされる)、参照検索パスの中に、
パスの親ノードと子ノードが存在する。従って下記の二次ステップを応用する: iii.3.1 ケースAとBに対して、新しいノードを生成して、ノードに
識別オフセットを割り当てる、 ケースAのみに対しては、親ノードから子ノードへのリンクを、切り放して、
リンクを新しい内部ノードに向けて切り換える(即ち子ノードは、一時的に「開
放」のままになる)、 III.3.2 ケースAとBに対して、リンク(長リンク)によって新しい
データレコードと新しい内部ノードに接続する。リンクに割り当てられた数値は
、新しいデータレコードの検索キーから取り出されたとおりの識別オフセットの
検索キー部分の数値である。
【0196】 iii.3.3 ケースAとBの場合に対して、新しいリンクによって、新し
いノードに接続し、ケースAに対しては、子ノードに接続し、ケースBに対して
は、ルートノードに接続し(即ち、新しいノードは、ケースAに対しては、新し
い親ノードとなり、ケースBに対しては、新しいノードとなる)、またリンクに
割り当てられた数値は、参照データレコードの検索キーから取り出された、新し
いノードにより示されたオフセットの検索キー部分である。UUH 異なる参照パスに対しては、異なるPAIFを得ることができることに留意し
なければならない。
【0197】 より良く理解するために、前記の「データレコードを挿入する」操作は、連続
的に図6Bの特定のPAIFに、その都度、ステップiii.1−iii.3で
規定されている3個の全く異なるシナリオを例示して、図6C−1から6C−3
の中の3個のPAIFになるように、異なるデータレコードで適用される。
【0198】 第1の例の中で、Client_Id(あるいは検索キー)「12546」(
図3のクライアントテーブル59)を有するCLIENTデータレコードは、図
6BのPAIFの中に挿入される。ステップ(i)の中で規定されているとおり
、移動が、ルート101から始まり、例えば、「参照データレコード」をを表し
ているデータレコード103で終る参照パスに沿って行われる。操作は、ノード
101からリンク102(挿入されたデータレコードオフセット‘0’のなかで
、lの長さの桁の数値が‘1’である場合)に沿って進むことで実行され、それ
以降は、オフセット‘2’(ノード104により指定された)で、リンク105
と106(それぞれ4と3)の何れの数値も、オフセット2(‘5’)で挿入さ
れたキーと整合しないので、任意のパスで、参照データレコード103に向かっ
て進行が行われる(リンク106を経由する特定の実施形態により)。
【0199】 ステップ(ii)の比較操作は、オフセット2(“5”対“3”)と4(“6
”対“5”)での参照データレコードの検索とは区別される新しいデータレコー
ドの検索を生じる。最も小さいオフセット(「識別オフセット」)はそれゆえに
2である。
【0200】 ここでステップ(iii)に入って、識別オフセットが、ノード104に割り
当てられたオフセットと等しいので、ステップiii1の条件は、満たされる。
従って、また図6C−1の中で示されているとおり、新しいリンク111はノー
ド104を新しいデータレコード112に接続する。リンク111に割り当てら
れた数値は、新しいデータレコード112の検索キーの位置2のバイト値である
5である。図6C−1のPAIF110は、従って、データレコード112を図
6B−1のPAIF108へ挿入した結果である。
【0201】 ここで、第2例に移動して、Client_Id(あるいは検索キー)「12355」 (図3のクライアントテーブルの中の57)を有するCLIENTデータレコー
ドは、図6B−1のPAIFに挿入される。ステップiとiiは、前記で規定さ
れている、ノード101から始まりデータレコード103で終る参照パスとなる
【0202】 ここで、ステップ(iii)に入って、識別オフセット3が、参照検索パスの
中のリーフノード104のオフセット2より大きいので、段iii2の条件は、
満たされる。従って、ステップiii.2.1とまた結果としてできた図6C−
2のPAIF120に従って、リンク106は、参照データレコード103から
切り離されてから、新しいノード120に接続される。新しいノードには、識別
オフセット3が割り当てられる。次に、ステップiii.2.2に従って、参照
データレコード103と新しいノード121が、新しいリンク122のステップ
により接続される。新しいリンクには、数値4(参照データレコード103の検
索キー「12345」から取り出された識別オフセット3の桁数値として)が割
り当てられ、また最終的に、ステップiii.2.3の中で規定されているとお
り、新しいデータレコード123が、数値「5」(新しいデータレコード123
の検索キー「12355」から取り出された識別オフセット3の桁として)が割
り当てられたリンク124のステップによりノード121に接続される。図6C
−2のPAIF120は、従って、データレコード123を図6B−1のPAI
F108に挿入した結果である。
【0203】 第3の最後の例は、Client_Id(あるいは検索キー)「12346」(図3の クライアントテーブルの中の55)を有するCLIENTデータレコードを図6
B−1のPAIFに挿入することに関する。前記のステップiとiiを適用して
、ノード101からデータレコード103(図6Bの中の)に進めて、識別オフ
セットが、1となるように設定する。
【0204】 このようにして、ステップiiiの中で、ステップiii.3の条件が満たさ
れる。それに従って、ステップiii.3,1のとおりに、また結果として生じ
た図6C−3のPAIF130の中に示されているとおり、リンク102は、新
しい内部ノード131にシフトされる。新しい内部ノード131には、数値1(
識別オフセットとして)が割り当てられる。ステップiii.3.2の中で規定
されているとおり、新しいデータレコード132とノード131は、新しいリン
ク133によって直接接続される。リンク133に割り当てられる数値は、1(
新しいデータレコード132の検索キー「11346」から取り出された識別オ
フセット1の桁として)であり、最終的に、ステップiii.3.3に従って、
新しい内部ノード131は、数値2(参照データレコード103の検索キー「1
2345」から取り出された識別オフセット(1)の桁として)が割り当てられ
たリンク134によってノード104にリンクされる。
【0205】 図6A−6Cを参照して上記で説明されたPAIFは、一個のブロックの中に
納めようとすればそれができないこともないが、あくまでも、データレコードが
、明確に分けられた単一のあるいは複数のファイルの中にグループ化されるよう
に、「ノード」と「データレコード」を分離することが好ましい。図6C−3の
PAIFへのアプローチを適用することで、レコード132、103、107を
保持するデータレコードファイルの生成を行うことになり、リンク133と、1
06および05は、無論長リンクとなる。
【0206】 言うまでもなく、挿入手続きが、挿入されるべきデータレコードが、既にPA
IFの中に存在してることを検索することになり、適切なエラーメッセージが、
挿入コマンドを発した手続きに帰って来る。
【0207】 後者の例の中で、全PAIFが、単独のブロックの中に常駐していることを前
提条件とすることに留意しなければならない。言うまでもなく、追加のデータレ
コードが、前記の「挿入手続き」に続いてつ挿入されたときは、ブロックからオ
ーバーフローする可能性があり、このオーバーフローに対応するために、「ブロ
ック分割」手続きに訴える必要が生じ、その後で、探すブロックに進めてから、
上記で説明されている方法で挿入手続きを実行すことが必要である(下記で詳し
く解説される)。
【0208】 一般的な「挿入」トランザクションを説明したので、「データレコードのFi
nd(あるは検索)」トランザクションをここで説明する。従って、所定の検索
キーで、現存するPAIFの中でデータレコードを検索するために(以下記レコ
ードを探すと称す)、下記のステップを実行しなければならない: i. ルートノードから始まってデータレコードで終る検索パスに沿ってリー
フノードに進め、また検索パスの中の各ノード(以下「現在ノード」と称す)に
対して、下記の二次ステップを実行する: i.1 現在ノードをルート元とする各リンクに対して、 現在ノードの数値により定義されているオフセットの所にある求められているデ
ータレコードの検索キー部分を、リンクに割り当てられた数値と比較する、 整合した場合は、リンクに沿って進めてから、ステップi.1に戻る。
【0209】 i.2 現在ノードをルート元とする何れのリンクも、求められているデータ
レコードの検索キー部分と整合しない場合は、「見あたらない」に戻って、検索
手続きを打ち切る。
【0210】 i.3 データレコードに到達した場合は(以下「参照データレコード」と称
す)、求められているデータレコードの検索キーを全般的に参照データレコード
のキーと比較する、 i.3.1 「発見された」に戻った場合は(「検索」の場合は、またデータ
レコード全体を戻す)、検索手続きを打ち切るか、あるいは i.3.2 整合せず「見あたらない」に戻った場合は、検索手続きを打ち切
る。
【0211】 より良く理解するために、「find」の手続きを、それぞれ「発見した」あるは「見 あたらない」が起こるように図6C−3の特定のPAIFに対して2回行う。
【0212】 従って、検索キー「12445」によるデータレコード(以下求められている
データレコードと称す)の発見を考察する。ステップi.1に従って、求められ
ているデータレコードのルートノード(オフセット0)に割り当てられたオフセ
ットの桁「1」の数値が、リンク102(ノード101をルート元とする唯一の
リンクである)に割り当てられたものと比較される。整合が、発見されれば、制
御は、ノード131にシフトされる。再び、ステップi.1に従って、求められ
ているデータレコードのノード131に割り当てられたオフセット(オフセット
1)の桁の数値(「2」)が、リンク134に割り当てられたものと比較される
。ここで、また整合があれば、制御はノード104にシフトされる。次にステッ
プi.1に従って、求められているデータレコードのノード104(オフセット
2)に割り当てられたオフセットの桁「4」の数値が、ノード104をルートと
する各リンクに対して比較される。比較の結果、リンク105に整合したため、
制御はデータレコード107にシフトされる。
【0213】 ステップi.3に従って、求められているデータレコードの検索キーとデータ
レコード107の検索キーが、比較され、整合すれば、「発見」の結果が戻る(
ステップi.3.1) ここで第2例に入って、求められているデータレコードが、検索キー「124
63」を有している場合を考察する。前記の例を参照して説明された手続きが、
反復されるが、ステップi.3で、求められているデータレコードとデータレコ
ード107の間を比較することで、不整合が生じて、ステップi.3.2に従っ
て、「見あたらない」結果に戻る。
【0214】 一般的な「データレコード削除」トランザクションを、ここで説明する。従っ
て、第1段として、「データレコード検索」トランザクションを、PAIFに対
して行う。「見あたらない」の場合は、適切なエラーメッセージが、「削除」コ
マンドを発した手続きに帰って来る。そうでない場合は、求められているデータ
レコードが、発見される。「削除」手続きの説明を明確にするために、下記の名
称の一覧表が、導入される: 求められているデータレコードにリンクされているリーフノードは、「ターゲ
ットノード」と称す、 ターゲットノードの親ノードは、「先輩ターゲットノード」と称す。
【0215】 先輩ターゲットノードをターゲットノードと結び付けるリンクは、「先輩リン
ク」と称す、またターゲットノードを親の子ノードに(あるは求められいるデー
タレコード以外のデータレコードに)結び付けるリンクは、「ターゲットリンク
」と称す。名称を念頭に置いて、下記のステップが、実行される。
【0216】 i. 求められているデータレコードとターゲットノードをリンクに結び付け
ているリンクを削除する、 ii.ターゲットノードの中に残っているリンクの数が、2と等しいかそれ以
上である場合は、削除手続きを打ち切る、 iii.他方、ターゲットノードの中に残っているリンクの数が、丁度1であ
る場合は(即ち1個のターゲットリンク)、 iii.1 先輩ノードからの先輩リンクを子ノード(あるいはデータレコー
ド)に結び付けることでターゲットノードを「バイパス」する、また iii.2 ターゲットノードとターゲットリンクをを削除して、削除手続き
を打ち切る。
【0217】 ブロックの中の他のノードとリンクにターゲットノードを割当ることができる
ように、ターゲットノードとリンクに占有されるスペースを空けておくために、
使用中のステップが、より「控え目なメモリー管理」ステップであることに留意
しなければならない。更に、ステップ(iii)が、オプションであることに留
意しなければならない。
【0218】 より良く理解するために、前記の「データレコード削除」手続きを図6C−3
の特定のPAIFに対して行う。
【0219】 従って、コマンド「検索キー=「11346」を有するレコード削除」に対応
して、後者のレコードは、前記で説明されている手続きに従ってPAIFの中で
検索される。レコード132が、発見され、前記のステップiに従って、データ
レコードとまたデータレコードに導くリンク133の双方は、削除される。後者
の削除ステップの後で、ターゲットノード131は唯一のターゲットリンク13
4のみと共に残り、ステップiiiとiii.1を行い、従って、先輩リンク1
02は、ターゲットノード131をバイパスして、直接先輩リンクの子ノード1
04にリンクされる。
【0220】 次に、ステップii.2に従って、ターゲットノード131とターゲットノー
ド134が、削除され、削除により、図6B−1のPAIFを得る。 もう一つ
の例が、図6C−1のPAIFを参照して示される。従って、コマンド「検索キ
ー=「12546」を有するレコード削除」に対応して、後者のレコードが、前
記の手続きに従ってPAIFの中で検索される。データレコード112が発見さ
れ、前記のステップiに従って、データレコードとまたデータレコードに導くリ
ンク(111)の双方が削除される。それ以降、ステップiiの中で規定されて
いるとおり、ターゲットノード104の中に残っているリンクの数は、2であり
(即ち105と106)、それから削除手続きが打ち切られる。結果として生ず
るPAIFは、また図6B−1の中に示されている。
【0221】 もう一つの共通の原始要素は、「現存データレコードの訂正」、例えば現存す
るクライアントの自宅住所の変更である。「訂正」原始要素は、通常選択的に前
記の原始要素を使用することで実行される。「訂正」コマンドを実行するために
、下記の場合を区別しなければならない: 1.「訂正」は、検索キー(例えばClient_Id=「xxxxx」を有するクライアント
の住所変更)以外のフィールドに適用される。この場合、訂正手続きは、単に「
Find」操作を必要とするだけである(Client_Id=「xxxxx」を有するデータレコー ド)。求められているデータレコードが発見されたら、住所は、新しいものと交
換される。
【0222】 2. 「訂正」は、(例えば、口座番号のxxxxx」から「yyyyy」に
変更する)検索キーに適用される。このコマンドは、2個の原始要素の連続とし
て実行される、即ち、口座番号のxxxxxを有する」データレコードの削除し
てから、「口座番号」「yyyyy」を有するデータレコードを挿入したり、そ
の反対を行う。言うまでもなく訂正トランザクションが、双方の場合から成るこ
ともある。
【0223】 前記の例の中で、各々の検索キーは、直列バイトとして示されるので、検索手
続きは、各々が少なくとも1バイトから成る検索キー部分を区分することで実行
される。
【0224】 当業者であれば、バイトのみが可能な検索キーの表現ではないことが分かるは
ずである。従って、例えば、検索キーを、2進形式で表現させることができる、
即ち1と0の直列であり、従って、検索手続きの各々は、1ビット(即ち1=1
)あるいはそれ以上の、例えば1バイト(即ち1=8ビット)とその他から成る
。場合によっては、l数値が、PAIFの中の全てのノードに対して同じでない
ことがしばしばある。
【0225】 更に、関連する検索キー部分が、対応するノードにより知られている限り、所
定のPAIFの中の種々のリンクが、種々の長さの検索キー部分に割り当てられ
ることがあることに留意しなければならない。
【0226】 図6A−6Cの種々のPAIFから明かであるように、データレコードは、検
索キーに従って仕分け(昇順あるいは降順)された形態で記憶および保持される
。例えば図63−CのPAIFの中を巡ることで(右から左へ)、順序立った数
字順の「11346」、「12345」と「12445」となる。特性は、デー
タレコードが、仕分けされていない図5のツリーと比較してデータ操作を容易に
するもう一つの利点を構成する。前記で指摘されているとおり、PAIFの中の
ノードは、必ずしも独特な方法で分類する必要はない。従って、例えば図6C−
2のPAIF102の中で、ノード104は、同時にリーフノード(データレコ
ード107への長リンク105ステップによりリンクされた)とまた内部ノード
(ノード121への短リンク106によってリンクされた)である。
【0227】 当業者であれば、本明細書の中で説明されている「挿入」、「削除」、「検索
」と「訂正」手続きが、手続きを実行するための多くの可能な変形の中の一つに
過ぎず、また特定の実行に合わせて必要に応じて適切に変更できることがすぐに
分かるはずである。
【0228】 特定の挿入、削除と検索トランザクションは、ブロック間トランザクションと
呼ばれるものに応用される。下記に詳しく説明されいるとおり、ブロック間の意
味でのブロック間トランザクションには、ブロック間オペレーションに無関係の
シナリオへの取り組みを殆ど必要としない。
【0229】 PAIFトリーの構造を説明したので、本発明に従った種々の実施形態の説明
は、PAIFツリー(基礎的区分された索引としての)から成る階層インデック
スを基礎とするPAIFインデックススキームが示されている下記のとおりであ
る。
【0230】 ここで図7A−Hに入り、そこには、本発明の一つの実施形態に従って分割
されたブロックオペレーションの連続に答えて構築された階層インデックス略図
が示されている。例えば、メモリーのスペースの意味でオーバーフローした図7
Aの中のブロック140(基本区分インデックスの中で)を考察する。これは、
ルートブロック144と、また直接リンク145によってリーフブロック146
にリンクされ、また長リンク147によってリーフブロック148にリンクされ
たコピー済みノードA’(か55)ら成る図7Bの階層インデックス142とな
る「分割ブロック」手続きが開始される場合である。
【0231】 特定の例により、分割ポイントが、リンク149(図7A)(以下「分割リン
ク」と称する)であるように選択されており、分割により、ノードA、B、E、
DとFを新しいブロック146と、またノードC、G、I、J、K、LとHとま
た新しいブロック148に切り換える。分割リンクは、できれば新しいブロック
の間でノードとリンクのほぼ均等な配分を達成するように選択されることが好ま
しい(例えば、ブロック148と146の中に常駐する副PAIFのサイズが、
ほぼ同じになるように)。親ブロックが存在しない場合は、親ブロック−144
(I1を形成する)が、分割ノードA’(156)のコピー済みノードA’(1
55)で生成される。分割リンクをルートとするコピー済みノードが、未だ親ブ
ロック144の中に常駐していない場合は、ノードが、後者のブロック(A’と
マークされた)にコピーされ、A’(155)ノードとAが中に常駐しているブ
ロックの間の結合が、直接リンク145によって実行される。分割リンク149
(AとCの間の元々短いリングである)は、長リンク147また中にCが常駐す
るブロックに交換される。オプションとして、ノードAとC(それぞれ156と
153)を、破線150でマークされている分割リンクによってリンクさせるこ
とができる。
【0232】 正味の効果は、図7Bの中で、ブロック144により構成されている階層イン
デックスが、設けられており、トリーのブロックが146と148であるること
である。当業者であれば、ここで、トリーを経由しないで(即ちノードA156
から始まる)、むしろ階層インデックスを経由して(即ちノードA’155から
始まる)、データレコードをアクセスあるいは更新することが可能であることが
容易に分かるはずである。オペレーションに関連して、リンク147が、今度は
図7Aの元のリンク149の数値を有するリンク150と同じ数値を有している
ことに留意しなければならない。
【0233】 ここでブロック148が、オーバーフローし、ブロックが、図7Cの中の階層
インデックス151を生み出す同様の分割手続きを受けることを考察する。この
例により、分割リンクは、図7Bの短リンク152であり、従って、ノードCと
Hは、図7Cのブロック148Aの中に中に常駐する一方で、ノードG、L、K
、LとJはブロック148Bの中に常駐する。分割リンクをルートとするノード
(図7BのノードC−153)は、コピーされ(図7Cのコピー済みノード15
3aを作りだしながら)、またCとマークされたブロック140の中に置かれる
。前記と同様に、直接リンク154は、コピー済みノードC’153aをルート
の分割ノード153のブロック148Aに接続する一方で、リンク155は、分
割ブロック148Bから遠リンクであり、リンクの数値は、分割前の(と後の)
ノードCとGの間のリンク152の元の数値と同じである。
【0234】 図7Cの中で、階層インデックスは、ブロック141、148AおよびI を形成している148Bと、またトリーの共通キーにわたって代表インデックス
を形成しているブロック16から成るトリーにより構成されいる。
【0235】 図7Cの中で、ブロック141の中のノードAと、またブロック148Aの中
のノードCが、オプションとして切り放されており、同様に148AのノードC
と、また148BのノードGが、オプションとして切り放されれいることに留意
しなければならない。明らかに示されているとおり、ノードA’とC’は、ブロ
ック140の中で接続され、(結合されている)トリーを形成しており、また、
従ってノードA’と直接リンク156を経由してブロック141を、またノード
A’、C’と直接リンク155を経由してブロック148Bを、またノードA’
、C’と直接リンク155を経由してブロック148Bにアクセスすることが可
能である。ノードA’とC’の間(ブロック140の中の)のリンクの数値が、
ノードAとCの間の元の数値と同じであることに注目する必要がある(図7Aの
中のリンク149参照)。
【0236】 図7Cの中で明らかに分かるように、結果として作り出された階層インデック
スは、ブロックの均衡が取れた構造を構成しており、構造により、インデックス
の深さを最低限度に抑えており、その結果、所定のデータレコードを検索し、挿
入しあるは削除するのに必要とするアクセスの数を最小限度に抑えている(通常
、必ずしも必要としない出入力オペレーション)。ここで、データレコードにア
クセスするために、階層インデックスが、レコードの数に応じてほぼ対数機能を
維持しており、階層インデックスが、所定のデータレコードのアクセスに要する
出入力オペレーションの数の意味で、トリーを経由するデータレコードのアクセ
スに要する出入力オペレーションの数と比較して、より効率的であるることを考
察する。従って、例えば、階層インデックスを経由してノードJと関連するデー
タレコードにアクセスするために、最初にブロック140とその後にブロック1
48Bを、またその後で求められているデータレコードにアクセスすることが必
要である(即ち、3個の出入力オペレーション)。反対に、トリーを経由して同
じデータレコードにアクセスすることで、4回の出入力アクセスが起こる、つま
りブロック141、ブロック148Aとブロック148Bとデータレコード15
9である。図示されているとおり、トリーがより効率的であるという特定の例が
ほとんどないが(例えば、ノードAに関連するデータレコードにアクセスする)
、トリーが大きくなればなるほど(即ちより多数のブロックで構成されている)
、階層インデックスの索引を経由するアクセスが、より効率的である。
【0237】 図7の特定の実施形態により、代表インデックスとトリー(基本区分インデッ
クスの実施形態の一つとしての)は、同じインデックススキーム、即ちPAIF
とほぼ一致する。下記に図9Gを参照して説明されるとおり、「ほぼ」同じスキ
ームにより、一部の差があることを意味する。
【0238】 ノードをより高い階層索引Ijにコピーすることに関する考察は、更に、図7
Dから7Hの中の追加の図示を参照して説明される。中でブロックの分割が実行
される図7Dの階層インデックスを考察する。結果として生まれた階層インデッ
クスは、図7Eの中で示されており、図の中で、ブロック402が、作り出され
、、ノード401がより高いレベルのブロック402(階層インデックススキー
ムの一部を形成する)にコピーされ、ノードBとEの間の元のリンクは、オプシ
ョンとして維持される(破線リンク403を経由して)。ノードBを経由して、
ここで、それぞれリンク407と408によって、トリーの2個のブロック(4
05と406)にアクセスすることができる。
【0239】 つぎに、ここでブロック405を、例えばリンク409で分割しなければなら
ず、結果として生まれた構造は、ここでブロック402の中で、ブロック405
のノードAとIが、ブロック402のA’I’(410と411)にコピーされ
る図7Fのブロック402の中に現れる。ノードI’は、明らかにブロック40
5の中の分割されたノードIのコピー済みノードであるが、ノードAは、ノード
B(対象となるB’が推論的にブロック402の中に常駐している)とまたI(
そのI’が、ここでブロック402にコピーされている)が、Aの子孫のノード
であること考えると、またコピーされる。ノードAが、ノードBとIの最も低い
祖先ノードであるとして、(結合されている)トリーが、ブロック402の中で
形成される。短リンク141に関連する数値(ブロック402の中のブロックA
’とB’の間の)は、リンク412(ブロック405の中のAとBの間の)と同
じ数値である。リンク415の数値(ノードA’とI’の間)は、ノードBにア
クセスするのに必要な方向にあるノードAををルートとするリンク413の数値
と同じである。ブロック402の内部の構造は、ブロック405、406と40
7の代表を検索できるようになっている。
【0240】 ノード410が、アクセスパスの中に維持されていることからして、直接リン
ク418に沿ってブロック405に移動できるので、ノード422と411の直
接リンク416、417は、オプションとして、保持されている。
【0241】 図7Gは、図7Fのブロック407(リンク420の中の)を分割した結果と
した生じた階層インデックスを示しており、図7Hは、ブロック402を(ノー
ドI’とN’の間のリンクの中で)分割した結果として生じた階層インデックス
を示している。図7Hの中の結果として生じた階層インデックスは、図示されて
いるように3個の階層を有しており、第1のものは、ブロック430から成り、
第2のものは、ブロック402と408から成り、トリーは、ブロック405、
407、426と406から成る。
【0242】 当業者であれば、分割ブロックを実現する方法が、無論図7Dから7Hの例に
限定されないことが容易に分かるはずである。
【0243】 (図7を参照して)挿入トランザクションの連続の結果生まれた分割プロセス
により階層インデックスを構築する実施形態を説明したので、反対の手続き、す
なわち、データレコードが、ノードに関連するデータレコードを有さないたった
一個のノードをブロックの中に残して削除されたとき、即ち「ブロック削除」が
、作動させられることが分かる。
【0244】 当業者であれば、図7を参照して説明された階層インデックスが、代表インデ
ックスと基本区分インデックスが、ほぼ同じである階層インデックスを実現する
ための多数の可能な変形の唯一のものであることが容易に分かるはずである。
【0245】 特定の方法の中のPAIFの使用は、このようにして達成された階層インデッ
クスが、トリーが本質的に均衡を失う可能性があるという事実にもかかわらずブ
ロックの均整の取れた構造を有しているという意味で今までの公知のトリーより
優れた利点を構成する。
【0246】 ここで、本発明の技術の本発明の他の実施形態に対する応用を例示している関
連する2個の図を示している図8A−BBに注目する。
【0247】 従って、図8Aは、図示されているとおり、均衡が失われている、即ち、3個
のブロックの深さ(260、261と262)対2個のブロックの深さ(260
と264)の均衡が失われている、垂直の方向(即ち垂直ツリーを構成する)を
有する所定にトリー構造を示している。下記の説明の目的は、特定の垂直ツリー
の検索スキームを説明することではなく、均整の取れた階層インデックスを得る
のに必要な面のみを強調することである。しかし、トリー構造260の中のノー
ドが、図8Aの中で示されているデータレコード(a−k)の半バイトサイズの
中ののオフセットを意味していることに留意しなければならない(ノード数値は
、16進法で示されている)。
【0248】 図8Aの中で図示されているデータレコードbにアクセスするための1個のブ
ロック(あるいは3個の入出力オペレーション)と比較して、データレコードk
にアクセスするための、追加の一個の出入力オペレーション(あるいは3個の出
入力オペレーション)、即ち、3ブロックにアクセスすることが、均衡が取られ
ていると見なされていることに留意しなければならない。一部の実生活のシナリ
オの中で、全く同じ数の出入力オペレーションを必ずしも本発明を応用すること
を必要としない。言うまでもなく、本発明の技術で処理されないと、これ以上の
データレコードの挿入が、より高い「均衡が失われた」程度を生み出す恐れがあ
り、前記で詳しく説明されたとおり(従来の技術を参照して)、劣化した性能を
招く(不均衡構造のために)。図8は、本発明の一つの可能な実施形態を示して
いる。図示されているとおり、1個のブロック270(I1を形成している)か
ら成る代表インデックスは、ルートブロック270から全てのより低いレベルの
垂直ツリー(後者は不均衡なツリーを構成している)が、出入力オペレーション
を経由してアクセスされるルートブロック270を有する水平的に均衡が取れて
いるツリーが得られるという結果で構成されている。
【0249】 図示されているとおり、最初の垂直ツリー(トリーとしての)の中の諸ブロッ
クに対する実際のアクセスは、各々のブロックの共通キー数値によって達成され
る。これ以上進む前に、共通項キーは、図8を参照して例示されている。
【0250】 ブロック260の共通キー(半バイト単位の16進表示)は、Ox4が、文字
Aのバイトの最も有意なビットとし、Ox1が、文字Aのバイトの最も無意味な
ビットであり、またOx3が、データレコードのオフセット2の中に常駐する文
字の最も有意なビットを表すものとして、Ox4、Ox1とOx3である。
【0251】 ブロック266を経由してアクセスできる全てのデータレコードが、前記で規
定されている共通キーのプレフィックスを共有していることに留意しなければな
らない。
【0252】 同じ方法で、下記のテーブルは、各ブロックの共通キーの概略を記載している
【表1】
【0253】 ブロック261が、数値8のルートノードを受け入れることができ、従って、
ブロックの共通キー、以下kが、Ox4、Ox1、Ox3、Ox3、Ox3、O
x3、Ox3、Ox3に変わるること、即ち、8単位になること留意しなければ
ならない。この場合、Ilの中のブロック261の代表を、そのとおりに変えな
ければならない。異なる実施方法の中で、8の数値を有するルートノードが存在
しなくても。261の代表は、kである。
【0254】 共通キーを横断する索引は、キーが、最初の垂直ツリーの共通キーをアドレス
するトリーを構築するように、代表インデックス(ブロック270から成る)の
中で達成される。ここで、例として、データレコードgを見つけ出すために、ノ
ード290、リンク291からノード292を追う。それから、直接リンク29
3で、データレコードgに関連するブロック261に進める。結果として生ずる
階層インデックスは、均衡である。
【0255】 前記で規定されているとおり、トリー特定の場合に対して、ブロックの代表的
キーは、共通キーである。一般的に言って、ブロックの共通キーは、関連するイ
ンデックススキームによりブロックからアクセスできるデータレコードのすべて
のキーの内で最も長いプレフィックスである。PAIFに対して、特定のプレフ
ィックスサイズ(ビットの長さ単位で計算された)は、ブロックの中のルートノ
ード(呼び出されたホールドオフセット値としての)の数値と等しい。プレフィ
ックスサイズが、ビットの数で表現されてる場合は、プレフィックスサイズは、
1ビットの長さの数値を掛け合わせたオフセット値として計算される。
【0256】 ここで図9A−9Gを参照して、本発明の階層インデックスの構築するもう一
つの実施形態の説明が続く。
【0257】 従って、ここで、PAIF(不均衡構造となり易い)トリーを構成している)
上の変更(挿入)トランザクションの連続と、またそのようにして得られた階層
インデックスを示している図9Aから9Gに注目する。説明を容易にするために
、データレコードは、トリーの一部を形成して示されている。前記で規定されて
いるとおり、中でデータレコードが、トリーに関連している実際の方法は、特定
の適用次第で変わることがある。
【0258】 下記の数字の中で、階層インデックスは、連続的に下記の仕分けされていない
データレコードA−F(説明を簡素にするために、ブロックの一部を構成してい
る)を挿入することで構成されている。データのストリングは、1ビットの部分
が1を表しているビットの連続で示されている: A=001000011 B=110011100 C=011011111 D=011011011 E=101010101 F=111111111 第1ステップの中で(図9A)、レコードAが、後でブロック300である挿
入され、数値0を有するリンク302を経由して第1レコードAと関連するオフ
セット0を有するノード301から成る。この段階で、ツリーは、たった一個の
ノードを有するブロック100から成る。インデックススキームは、それぞれリ
ンク302とノード301上で図示されているとおり、データレコードAへの検
索が、オフセット0の数値0に従って決定されるように支配する。
【0259】 その後(図9B)、データレコードBが、挿入され、データレコードAから明
らかに見ることができ、区別できるとおり、挿入の中で、ゼロオフセットの中で
、キー値が1であり、従ってリンク302は、データレコードBに導き、数値1
を割り当てる。
【0260】 その後(図9C)、データレコードCが、挿入され、オフセット1の中のレコ
ードの数値は、レコードAから区別する役割を果たす。リンク303と304は
、ノード305(オフセット1を表す)を特定のデータレコードCとAにそれぞ
れ結合する。ブロック300が、ノード301と305を受け入れるので、ブロ
ックを分割する必要はまだない。
【0261】 次に、データレコードDが、挿入され、挿入オペレーションの後のブロックの
構造は、図9Dの中に示されている。しかし、データブロックが、2個以上のノ
ードを受け入れることができないので(オーバーフローが起こる)、ここでは、
ブロックを分割する必要がある。図9Eは、分割後のツリー構造を示している。
従って、リンク306は、半ブロックの内容が、ブロック300の中に保持され
、また残りの半ブロックの内容が、他のブロック310に移される誘因を有する
分割リンクである。言うまでもなく、他のリンクを、分割リンクとするように同
様に選択することができる。
【0262】 第1段階として、Iのブロック300が、2個のブロック300と310に
交換される。ノード0,1(311と313の符号が付けられた)とデータレコ
ードAとBは、分割ブロック300の中に保持される一方で、ノード6、データ
レコードDとC(この特定の実施形態の中では、残りのノードを表す)は、ブロ
ック310に移動させられる。従って、図9Eの基本区分インデックスは、ここ
で、2個のブロック300と310(事実、不均衡なトリーを形成する)から成
る。
【0263】 その後、ブロックBが、存在しないので、ブロックが生成され、従って、ブ
ロック312が設けられる。分割ノード(313)は、ブロック(312)にコ
ピーされ、コピーにより、コピー済みノード(314)を構成する。次に、コピ
ー済みノード(314)は、直接リンク316によってブロック300に接続さ
れ、コピー済みノード314は、遠リンク318によって、ブロック310にリ
ンクされる。遠リンクは、図9Eの中に破線でマークされている元の分割リンク
316に取って代わる。遠リンク318の数値は、分割リンクの数値と同じであ
る。。従って、代表インデックス(ブロック312で構成されている)で、基本
区分インデックスの共通キーに従って検索することができる。
【0264】 分割リンクを削除すべきか残すべきかどうかに関して制約が全くないことに留
意しなければならない。図示されているとおり、階層インデックス(ここではブ
ロック312、300と310上で、代表インデックスに所属する312から成
るもの)を構成する、方法で得られた水平ツリーは、均衡する。
【0265】 次に、データレコードEが、挿入される。場合は、ブロック312の第1ノー
ド(数値1を有する)からの314水平ツリー(階層インデックスの形態の一つ
としての)の中の遠リンク318のステップによる前進は、前進が、ノード31
4(1を有する)数値からの方向1に相当し、方向0のリンクが必要であるので
、不可能である。従って、直接リンク316のステップによりブロック300に
前進する。従って、新しいデータレコードと関連するブロックが、発見される。
同じ方法で、データレコードFは、挿入されて、図9Fの中で示されているツリ
ー構造となる。
【0266】 次に、ブロック300のノード320とノード312の間の分割が、実行され
た場合は、ノード320は、ブロック312のノード312にコピーされる(図
9の中で323の符号が与えられている)またノードが、ブロック312のノー
ド314にリンクすることができないので(リンクが、ノードの正しい相互間の
リンクを保持しないので)、ブロック300のノード311が、またブロックの
共通キーに従って検索スキームでブロック300、326、310に対して検索
を行うことができるうようにするトリー(接続された)を生成するために、ブロ
ック312(図9の中で322の符号が与えられている)にコピーされる。
【0267】 また、図9Gの中のブロック312の全てのコピー済みノード314、322
、323からの直接リンクを有する代わりに、ノード(322)からブロック3
00にコピーされた一個の直接リンクを有することで充分であることに留意しな
ければならない。ノード323からの遠リンク324が、分割前のリンクの方向
(図9Fのリンク315の方向)にブロック126に設定される。言うまでもな
く、もしもう一つの分割が、ブロック326の中で実行された場合は、分割は、
i−1とブロックBi−1への遠リンクへの直接リンクを有する方向1のリン
クによりノード323から結合されているノードによりブロック312の中で示
される。
【0268】 図9A−Gと8A−Bは、階層インデックスを構築することによる本発明の均
衡している機構を維持する分割ブロック機構を実現する多数の可能な方法の中の
2個を示している。もう一つの限定されない変形を採用するのに当たっての柔軟
性は、例えば図8Bの中に示されており、図の中で、近リンク271と直接リン
ク272は、リンク271の方向で遠リンク273により示されていおり(破線
でマークされている)、従ってノード276を余分のものにしている。
【0269】 多数の実施形態に関する限り、本発明の均衡技術は、そのようにして得られた
、「確率的アクセス」と呼ばれる特性の、水平の均衡指向のデジタルツリー(階
層インデックス構造の形態の一つとして)に与えられれいる。このことは、入力
データレコードに関する検索(例えばデータレコードAに対する検索)が、異な
るデータレコードあるいは、検索スキームにより規定されている方向に対するリ
ンクがなく、また究極的に求められているデータレコードにアクセスするために
「訂正」を行う必要があることもあるノードに導く可能性があることを意味する
【0270】 前記をより良く理解するために、例えば、図9Eを考察する。例えば、検索ト
ランザクションが、求められているデータレコードL=11101110で図9
Eの階層インデックスに応用されることを考察する。検索パスが、ノード314
とリンク318(それぞれオフセット1数値1)に続き、それからオフセット‘
6’で(ブロック310のルートノード)、リンク319(数値‘1’)を経由
してデータレコードCに続く。後者の例は、このようにして得られた階層インデ
ックスの確率的検索特性を例示している。
【0271】 特定の故障を解決するために、求められているデータレコードのキーの共通プ
レフィックスのサイズとデータレコードのキーが、計算される、ブロック(31
0)の共通キーは、実際のデータレコードCのキーのプレフィックス部分である
。従って、共通プレフィックスのサイズはゼロである。次にツリーを、直接リン
クを有する共通プレフィックスのサイズに等しいかそれ以下の数値を有するアク
セスパスの中でノードまで遡る。後者の必要条件が、満たされない場合は、即ち
、全てのノードが、計算されたプレフィックスのサイズより大きい数値を有して
いる場合は、直接リンクを有しているアクセスパスの中の第1ノードから(イン
デックスIi−lの第1ブロックを指していなければならない)。ここで、ノー
ド311から直接リンク316によってより低いレベルの垂直に向いているツリ
ーに(即ち、層Ii−lに)に移動し、ここから、検索スキームで指定されてい
る検索パスに続く。
【0272】 もう一つのシナリオに従って、インデックススキームが、所定の方向に行くこ
とを指定しており、希望する方向にリンクがない場合は、検索パスは、検索パス
(直接リンクを維持する)上で最も大きな数値を有するノードから直接リンクに
続く。ブロックからブロックへ進むとき、共通キー(入手できる場合)あるいは
ノード(入手できる場合)に関連するデータレコードに対する比較で、インデッ
クススキームで進めるかあるいは直接リンクを有するノードに戻るかどうかの判
定にもたらすことができる。共通キーが、必ずしも物理的にデータレコードに取
り付けられていないことに留意しなければならない。
【0273】 前記の例(求められているデータレコードL)と図9EのデータレコードCに
戻って、ブロック310の共通キー(011011として)が、ブロックの中に
維持されている場合は、データレコードCにアクセスする必要はない。従って、
Lのキーの共通プレフィックスとブロックの共通キーが、0であるので、レコー
ドCにアクセスしないでノード314とリンク316に戻ることができる。規定
された方法でデータレコードにアクセスしないで済むことは、言うまでもなく、
性能を向上させる利点である。求められているレコードがツリーの中に存在しな
いことを知る基準は、求められているデータレコードの共通キープレフィックス
のサイズとブロックの共通キーが、分割ノードの数値より大きいことである。
【0274】 後者の例の中で、分割ノードの数値(ノード313の)が1であれば、従って
、ブロック310は、レコードLを受け入れることができるブロックでない(該
レコードが存在する場合)。従って、レコードLに対する検索は、ノード314
とリンク316から継続される。該手続きは、全ての修正トランザクションに適
用される。
【0275】 挿入トランザクションに関する限り、ブロック300が特定の方法で見つけら
れ、新しいデータレコードと関連している。
【0276】 後者の例は、階層インデックスの特定の例が参照される。当業者であれば、確
率的アクセス特性が、他の階層インデックスが、他の必要な変更を加えて、基本
区分インデックスを使用する他の階層インデックスに適用されることが分かるは
ずである。
【0277】 「エラー」がもたらされる確率的検索索特性は、必ずしも階層Ih−1の中の
ロックの中の完全な共通キ−が、Ih−1の中のブロックまでの検索パスの中に
常駐しているノ−ドの数値から知られていない事実に由来する。従って、求めら
れているデ−タレコードのキ−に従って特定のブロックへの検索パスが、検索パ
スと整合しているかどうか検証するために、Ih−1の中のブロックの共通キー
を知ることが必要である。共通キ−が、ブロックの中に維持されていない場合は
、共通キー値を知るために索引の中でデータレコードに進める必要がある。
【0278】 階層インデックスの内在するエラーしやすい特性とその取り扱い方法は、前記
の図9を参照して例示されており、下記に更に一般的に説明される:レコードを
キ−kで検索するために、後者が、Ihの中(および場合によっては、Ih−1 からIへのあるはデータレコードへの中で)kにもたらすIh−1のブロックB
を探すために検索される。このプロセスは、キーkを有する(もし存在すれば)
デ−タレコードに関連するブロックIに到達するまで反復される。
【0279】 図7から9の説明は、基本区分インデックスとまた代表インデックスとしての
索引付けスキームを基礎とするPAIFを使用する階層インデックスを例示して
いる。当業者は、本発明の階層インデックスが、PAIFのみに拘束されないこ
とが容易に分かるはずである。従って、例えば米国特許5,495,69は、異
なるトリーを示している。例えば、特定の609特許に従って、図10Aのトリ
ーを考察して、またトリーが、ノード11、12、13および14を受け入れる
ブロックから成ると仮定する。新しいノードのツリーへの挿入に続いてブロック
を分割することが必要である場合は、従来の技術に従ったブロックを分割する可
能なアプローチは、例えば、ノード12と14の間でリンクを切断して、該操作
で、2個のブロック、すなわち一方はノ−ド11、12および13を受け入れ、
他方はノード14(以下新しいブロック)を受け入れるブロックを得ることであ
ろう。第1ブロックが、内部メモリーの中に常駐するものと仮定して、ここでレ
コード26に到達する必要がある場合は、1個のみの出入力オペレーションが必
要である。他方、レコード20が、関係がある場合は、新しいブロック(即ち1
方の受け入れノード14)にアクセスするために、第1出入力オペレーションが
、必要であり、その後は、レコード20にアクセスするためにもう一個の出入力
オペレーションが、必要である。従って、分割ブロックが、不均衡なツリ−とな
ったことを理解しなければならない。それに続く挿入トランザクションが、ツリ
ーの不均衡特性に悪影響を与える可能性がある、即ち当然好ましくない多重の出
入力アクセスを必要とする。
【0280】 本発明の技術を適用して、不均衡なツリーの欠点に対応して、結果として生じ
た階層インデックスは、図10Bの中に示されており、該図の中で、代表インデ
ックスが、トリー(ブロック159bと159cにより構成されている)の代表
的キーの上にブロック159Aにより構成されている。ここで、また、ノ−ド1
2と14の間のリンクが、分割リンクと見なされ、新しいノード159D(ノー
ド12の複製として)は、159Aとして符合が付けられた新しいブロックにコ
ピーされる。ここで、レコード20と26にアクセスするために、同じ回数の、
該特定の場合は、2回の出入力オペレ−ションが必要である。トリーのサイズが
、大きくなればなるほど、階層インデックスを使用するアクセスは、効率的にな
る。
【0281】 図10Bの階層インデックスは、従って、同じ回数の出入力オペレ−ションが
、ツリ−の中の各々および全てのデ−タに到達するために、必ず必要のなること
を確実にするブロックの均整が取れたツリーとなる。当業者であれば、できれば
、出入力オペレ−ションが、デ−タレコードの数とブロックを根源とするリンク
の数次第で、対数関数であることが好ましいことが分かるはずである。従って、
例えば、1000の遠リンクが、ブロックから始まっている場合は、3レベルを
有する階層インデックスで、1,000,000,000のデ−タレコードにア
クセスすることができる。
【0282】 前記の説明をより良く理解するために、数字による例が続く。各のブロックが
、1000の遠リンクを有しているものと仮定して、遠リンクのサイズが、4バ
イトと仮定して、遠リンクを示すのに必要なサイズが、4000バイトであるこ
とが容易に起こる。更に、ブロックの中のノードと近リンクが、他の4000バ
イトを占領するものと仮定して、結果として生ずるブロックのサイズは、10,
000バイト以下である。解説のために、各ブロックのサイズを20,000バ
イトとする。
【0283】 ここで、インデックス層1としての1個のブロック(例えば、図7Bのブロッ
ク144)から成る階層インデックスを考察して、インデックスが、層I0の中
の1,000のブロック(内2個のブロック146と148のみが、図7Bの中
に示されている)にリンクされていると仮定して、階層インデックスの総計は、
各々が20,000バイトを有する1001ブロックとなる。従って、階層イン
デックスのブロックを維持するために割り当てられるべき全スペースは、約20
メガバイトである。このくらいのサイズは、容易に、例えばパソコンのような内
部メモリーに収容できる。ここで、Iの中の各ブロックは、他の千のデータレ
コードと関連し、正味の効果は、完全に内部メモリーの中に収容されている本発
明の階層インデックス(後者の実施例に従って)を使用することで、百万のデー
タレコードを、出入力インデックスなしでアクセスできる。
【0284】 同様の理由で、10億のレコードにアクセスするには、実際的に、追加の1個
の出入力オペレーションを必要とするもう一つのインデックス層が必要である。
【0285】 前記をより良く理解するために、例えば、図6B−1あるいは6B−3の中の
階層インデックス(PAIFインデックススキ−ム)のインプリメンテーション
を考察する。デ−タレコード103と107のキ−のサイズ(例えば100バイ
トの長さ)が、より長かったとすれば、キーは、PAIFのサイズを変えなかっ
たはずである。もう一つの非制限的例を図8Bの中に示すことができる、インデ
ックスによりアドレスされたデ−タレコードaからkのキーのサイズーが、20
0バイトの長さである場合は、階層インデックスのサイズと構造が、変更されな
いはずである。自明の理であるが、キーの順序に従ってインデックスの中を名日
ゲートし、デ−タaからkを検索することも可能である。これは、連続オペレー
ションの一つの形態を例示したものである。
【0286】 図示されているとおり、図10Bの結果として生じた階層インデックスは、垂
直の方向を有する、2個のツリーから成る、即ち、第1構造が、ブロック159
bと159C(基本区分インデックスIの形態の一つとして)とまた1個のブ
ロック159A(基本区分インデックスIの形態の一つとして)を有する第2
ツリ−から成る。
【0287】 このようにして達成されたブロックの水平ツリー(階層インデックスの形態の
一つとして)は、均衡が取られる、即ち、出入力を経由して、ルートブロック1
59Aで、全てのリンクが、デ−タレコードにアクセスできる。Iのブロック
の中で追加の分割をもたらすデ−タレコードのこれ以上の挿入には、無論、階層
インデックスIの更新が必要である。Iのブロック159Aの中のノードの
数が、所定の数を超えた時は、ブロック159Aは、分割機構に従って分割され
る。
【0288】 本発明の技術が関連するツリー索引は、特許609の中で開示されている検索
ツリーに限定されなず、前記で説明された多数の他のタイプのツリーを包含する
ことができる。
【0289】 ブロック間構造が、必ずしも均衡していない、即ち、ブロック内のノードが、
必ずしも均衡の取れた構造で配置されていないことに留意しなければならない。
この事実は、欠点のように見えるが、当業者であれば、全体のデ−タベースの性
能上の実行が、実際には重要でないことが容易に分かるはずである。これが、ブ
ロック間検索スキームが、通常早い内部メモリーの中で実行される事実に由来す
る。ブロック間検索スキームに対して、階層インデックスの中のブロックの配置
は、均衡が取れた構造の中で保持されるので、検索パスの中のブロックの数は、
デ−タレコードの数によって対数関数であり、希望するブロックを内部メモリ−
にロードするために、外部メモリーに対する出入力アクセス(本質的に遅いオペ
レーション)する数を反映する。
【0290】 これに関連して、当業者は、本発明が、理由の如何を問わず与えらえた物理的
実現に限定されないことが容易に分かるはずである。従って、例えば、本発明の
技術を適用して、ブロック間で、検索スキームを保持する一方で、検索スキーム
に関する限り、これは、例えば、オフセットとオフセットの数値に従って階層イ
ンデックスの中に進める論理的コンセプトに適用される。後者の一般的コンセプ
トは、本発明の技術によって達成されるすべての方法で実現される。従って、例
えば、各ノードの中に収容するオフセットのサイズ(ビットの数の意味で)を、
変更でき、空のポインタ(即ち、ヌルを指す、子を有していないポインタ)と他
のものを実現する方法である。後者の物理的実現の弾力性が、またブロック間部
分に適用される。
【0291】 図7から10の全てを参照して説明された階層インデックスは、必ずトリーと
代表インデックススキームの双方に対して同じインデックススキームを保持する
(上記の図10Gを参照して説明されたとおり、インデックスを経由してデ−タ
レコードにアクセスするときに遭遇する可能性があるエラー処理に対するものを
除く)。
【0292】 トリーと代表インデックスの双方に対するインデックススキームの保持は、図
11を参照して例示されたとおり必ずしも必要ではない。
【0293】 図11は、均衡が失われたトリーの代表的キー上の代表インデックスとしての
従来のBツリーを使用する、図8A(即ち階層インデックスを構築している)の
均衡が失われたツリーを均衡させるもう一つのアプローチを示している。このよ
うにして得られた水平指向の均整が取れたツリー(階層インデックス)は、上位
レベル(インデックス層I)のブロック272,と下位のレベル(インデック
ス層I)の270と271とまた均衡が失われた垂直指向の図8Aの最も低い
所の(ブロック260、261、262、264)インデックス層Iのツリー
の元のブロックから成る。図4は、代表インデックスのインデックススキームが
、元の均衡が失われているトリーのスキ−ムと必ずしも同じでないことを実証し
ている。所望なら、全体的にBツリー(代表インデックスを形成してる)を、イ
ンデックス層Iとして見なすことができる。
【0294】 本発明のデータベース管理システムは、従来のツリーインデックスファイルの
欠点に対応するだけでなく、またユーザーアプリケ−ションプログラムを使用す
ることでデ−タのアクセスを容易にしまた改善する他の利点を提供する。
【0295】 従って、ブロックの均整が取れた構造が、保持されるという事実により、平均
して、遅い出入力オペレーションで、必ず確実に最適に保たれること、即ち、特
に多数のブロックが関わる大きなファイルのとき、より効率的な結果が確実に得
られる。
【0296】 当業者であれば、階層インデックスの構造が、例えば、遅い外部の記憶媒体に
対するアクセスの回数を最小限度に抑えるために、遅い出入力オペレーションに
適用されることが好ましい一方で、本発明が、理由の如何を問わず特定の記憶媒
体に制約されないことが容易に分かるはずである。従って、例えば、本発明が適
用できる記憶媒体が、また内部メモリーとなることができる。このことは、本発
明に従って実現される効率的なアクセス制御を必要とする、外部メモリーより早
い常に増大する内部メモリーの容量に対処するために特に必要不可欠である。
【0297】 本発明の第2の態様が続く。
【0298】 説明を容易にするために、本発明の第2の態様は、PAIFインデックス(指
定されたインデックスを構成する)を参照して説明される。本発明は、理由の如
何を問わず、特定の例に拘束されないものとする。
【0299】 前記で述べられているとおり、本発明のデ−タベ−スファイル管理システムで
、単独のインデックスを使用して、デ−タレコードの種々のタイプをアドレスで
きる。
【0300】 同じPAIFインデックスによりアドレスされる種々のタイプのデ−タレコー
ドの間をより良く区別するために、所定のタイプに属する各デ−タレコードは、
所定の指定子と関連している。後者は、指定子を形成しているデ−タレコードの
キーの一部を形成している。該指定子は、デ−タレコードに対して一意のもので
ある。従って、例えば、エンティティ「Borrower」に所属するデ−タレ
コードのキーには、指定子Aのプレフィックスが付くのに対して、エンテッィテ
ィ「Book」に所属するデ−タレコードの全てのキーには、指定子Bのプレフ
ィックスが付く。Borrowerに所属するデ−タレコードの新しいキーは、
ここで‘A’の連鎖と元の借入人から成る指定されたキーとなり、同様の理由で
、デ−タレコードの新しい指定されたキーは、書籍に所属し、ここで、’B’と
Bookの元のキーの連鎖から成る。
【0301】 本発明の第2の態様の「指定子」と呼ばれる特徴を解説したので、ここで、メ
タデ−タと呼ばれる説明が続く。
【0302】 本発明の一面に従って、デ−タ辞書は、レコードタイプの機能に応じてデ−タ
レコードに関する情報を提供するメタデ−タ情報を保持する。従って、デ−タレ
コードの他に、指定子を識別することができ、またメタデ−タ情報を使用するこ
とで、識別するか指定されたキーとまたレコードのサイズのような他の情報を構
築するための指定子を保存する必要がある。インデックスの検索スキムは、メタ
デ−タを忘れている。該メタデータは、メタデ−タを使用しないでレコードを指
定子(あるいは合成)キーから探しだす。メタデ−タには、(複合)指定子キー
を構築する必要があり、一度レコードが検索されたら、レコードの特性を決定す
る。従って、例えば、書籍のデ−タレコードを検索し、レコード上の定されたB
情報を、メタデ−タから入手できる。例えば、書籍のレコードのサイズ、そのフ
ィールイドとキーフィールドであるフィ−ルドである。
【0303】 指定されたデ−タレコードの使用は、一つのタイプに拘束されることなく、む
しろ、(できれば)1個以上のタイプを、指定されたインデックスより処理する
ことができ、関係と従属関係と共に下記で説明される。
【0304】 従って、これまでの解決のとおり、本発明の指定されたインデックスを使用し
て、デ−タベース管理システムに従って異なるタイプのデ−タは、一般的に複数
のファイルの中に保持され(それから、複数のインデックスファイルによりアド
レスされる)、種々のタイプのデ−タレコードを、同じインデックスからアドレ
スすることができる。異なるタイプに所属する(同じ指定された索引によりアド
レスされた)デ−タレコードのキーが、必ずしも同じ長さを有する必要がないこ
とに留意しなければならない。従って、例えば、また図8Aの中で示されている
基本区分階層インデックスのようなトリーに基づく指定されたインデックスであ
る階層インデックスを考察する。「Borrower」エンティティに属するレコードの
キーのサイズは、6バイトの長さであるのに対して、「Book」エンティティ
に所属するレコードのキーのサイズは、5バイトの長さである。書籍を、指定子
キーB11111とB22222を付けて図8Aの指定された索引に挿入するこ
とで、2個のタイプのデ−タレコードである、すなわち指定子Aが割り当てられ
たデ−タレコードaからkと指定子Bが割り当てられたデ−タレコードwからx
をアドレスする指定されたインデックスから成る図12のデ−タ構造が生ずる。
下記の説明の中で、用語タイプXのレコードあるいは、Xと指定されてるレコー
ドが、指定されたキーと指定子Xを有するレコードを説明するために使用される
【0305】 後者の例は、指定されたデ−タ(即ち、前に垂れ下がっているプレフィックス
、文字列あるいは全ての数のビット)を実現している一つの方法を示している。
当業者であれば、これが、多数の可能な変形の中で、唯一のものであることが容
易に分かるはずである。事実、指定子が、キーの一部として扱われ、検索の一部
を形成する異なるデ−タレコードの間で識別することを条件として、提案された
指定子を公知の方法で実現できる。
【0306】 後者の説明は、指定子が、下記の何れかを問わず適用される: (i)デ−タレコード(あるいはキー部分の一部)を形成する、 (ii)別の所に保存される、(例えば異なるデ−タ構造)、または (iii)別の所で定義されるか、他の方法で定義される、 後者の例は、全て同じタイプのデ−タレコード(例えば、全てが、文字Aで指
定されている)と関連するトリー構造である。言うまでもなく、この例で、指定
子が、全てのレコードに共通であるので、物理的に指定子をデ−タレコードのイ
ンスタンスに付ける必要はない。しかし、デ−タレコードが、アクセスされる場
合は、指定子を識別して、それにキーを加える必要がある。
【0307】 もう一つの可能な解決は、デ−タレコードがアクセスされたとき、指定子が、
入手できるように指定子をデータレコードにプレフィックスすることである。例
えば、図12を考察する。デ−タレコードは、リンク270によりノ−ド266
からアクセスされる。デ−タレコードの最初の文字は、Aの指定子である。
【0308】 従属関係をより良く理解すために、図13から13Eに注目する。図13Aは
、4個のデ−タレコード802、804、806および808(指定子キーのみ
が示されている)を有している指定されているインデックス800(PAIFの
形態で)を示している。各デ−タレコードに予め用意されている指定子’A’か
らたやすく生ずるデ−タレコードは、全て同じタイプである。
【0309】 ここで、図13Bに戻って、PAIF800が、複合キーA12355B94
0201333333(レコード81の指定子がB)が付いた新しいデ−タレコ
ード(812)が付いて示されている。新しいデ−タレコードは、A12355
のキーを有するデ−タレコード86に従属する。PAIFインデックスに従って
、ノード814は、識別オフセットが6であることと、またこ数値Bが、デ−タ
レコード812にリンクさているとを示した(オフセット6で数値Bを有する)
。レコード806が、オフセット6で数値を有さないので、該レコードには、識
別オフセットを他のレコードとを突き合わせて判定するために該オフセットの所
で仮想の数値(ヌル)が、割り当てられ、リンク818が、ヌルとマークされた
方向に設定される。
【0310】 図13Cは、PAIF800を示しており、該PAIFの中で、他のデ−タレ
コード820が、挿入される。Bタイプのデ−タレコードのもう一つのインスタ
ンスを示す、タイプAのデ−タレコード(806)に従属するデ−タレコード2
0が、PAIFに挿入される。識別オフセットは、11であり(新しいノード8
22の数値)、デ−タレコード812と820に対するリンク値は、それぞれ‘
0’と‘1’である。
【0311】 図13Dは、PAIF800を示しており、該PAIFの中で、レコードの異
なるタイプが、レコード806に従属する。タイプ‘A’のデ−タレコードに従
属させられるタイプ‘D’(824)のデ−タレコードは、数値Dを有するリン
ク823によりノード814からリンクされる。前記のとおり、PAIFは、既
にBと指定されているデ−タレコードを示しており、該場合、後者は、Aと指定
されているデ−タレコードに従属する。‘A’タイプに従属した‘B’は、サプ
ライヤー(‘A’)により保存された項目(‘B’)であり、また(‘A’)に
従属した(‘D’)タイプは、サプライヤ−(‘A’)のサ−ビスを受けるクラ
イアント(‘D’)である。
【0312】 ここで図13Eに戻って、やや異なって実行される図13Dのもう一つの実施
形態が、示されている。特に従属デ−タレコード812、820及び824が、
示されており、レコード806の指定子キーであるキープレフィックスなしでデ
−タファイルに維持されている(即ち、プレフィックスキーA12355が、欠
落している)。例えば、デ−タレコード812にアクセスするときは、指定子B
に従ってメタデ−タから入手できる情報で、下記の情報を引き出すことができる
。 (i)キーの一部が欠落していることを調べる (ii)該レコード812は、6の数値(814)を有するノードからおよび、
ヌル数値(818)を有するリンクによりアクセスすることができるAと指定さ
れているレコードに従属させられる。
【0313】 従って、デ−タレコード806にアクセスして、レコード812の完全なキー
を構築することができる。PAIF800が、階層インデックスである場合は、
ノード814と822が、異なるブロックの中に常駐している可能性があり、レ
コード812と関連するブロックへのアクセスパスは、ノード814を含んでい
ない。この場合、従属させられているレコードからレコード806へのリンク(
リンク826、828および830)で、デ−タレコード806にアクセスして
、キーを構築することができる。上記に説明されているインプリメンテーション
は、各従属させられたデ−タレコードに関してデ−タレコード806の指定され
たキーの表示のコピーの必要性を無くす(図13Dの特定の例により、特定のプ
レフィックスA12355が、レコード812、820および824に対して3
回コピーされる)。キープレフィックスを、リンクと取り替えることで、スペ−
スを節約でき(プレフィックスのサイズが、リンクの表示より大きい場合に)、
従属が、別個の検索を必要としないものに関連しているレコードにアクセスでき
る 図13Dと13Eは、本発明の従属関係特性が、全ての実現に対して制約され
ないことを示している。
【0314】 本発明の従属関係で、一個のインデックスを、種々のデ−タのタイプとまた従
来の技術に従った別個のインデックスファイルと比較して従属関係に関連させる
ことができると言う意味で、デ−タの低いレベルのインプリメンテーションを、
これまでの公知の技術と比較してより効率的にすることができる。これに限らず
、言うまでもなく1個以上のインデックスファイルが使用される本発明に従った
適用がある。
【0315】 言うまでもなく、従属されらているレコード812、820、824の各々に
、諸レコードを従属させることができる。
【0316】 更に、本発明の提案されている技術を利用して、例えば、データの完全性の維
持のような生ずる幾つかの利点がある。例えば、データレコード806(指定さ
れているキーA12355を有している)に従属している複合キーA12355
B930101123456を有するデータレコードで指定されているBの図1
3EのPAIF800に適用される挿入トランザクションを考察する。検索は、
ノード822に導かれる。挿入されたデータレコードキーオフセット11の数値
は0であるので、レコード812が、アクセスされる。レコード812の検索キ
ーを、構築する必要があり(リンク826を経由してレコード806にアクセス
することで)、また、新しいデータレコードの挿入を達成させることができる。
レコード806へのリンクにより、レコードの存在を確認するために、検索キー
によりレコード806に対する別個の検索作業を省くことができることに留意し
なければならない。従って、データの完全性の維持がより効率的になる。
【0317】 特定のBツリーインデックスを使用して同じデータの完全性のチェックを実施
することは、2段階の操作を必要とするので、大幅な間接経費の増大を招く。最
初に、キー12355を有するデータレコードを発見するために、タイプ「A」
のデータレコードのインデックスに対して検索を行う。レコードを発見した後で
なければ、タイプBのレコードを挿入することができない(それから、別個のイ
ンデックスファイルが、通常更新される)。
【0318】 データを検索するとき、図20Eのデータの構造は、従属させられているデー
タレコードが、「親」レコードにリンクされていると言う事実からから生ずるこ
れ以外の利点を例示している。タイプAからのレコードが、クライアントであり
、タイプBからのレコードが、インボイスである場合、通常、クライアントの詳
細と共にインボイの明細にアクセスすることが必要である。インボイスからクラ
イアントへのリンクにより、クライアントの詳細の検索を省くことができる。
【0319】 連続操作を完了するためのインデックスの閲覧に当たって、この方法で得られ
た本発明の指定されたインデックスから、重要な利点を引き出すことができる。
【0320】 例えば、図13EのPAIFを考察する。この場合では、昇順で、全てのデー
タレコードを「検索」する必要がある。従って、PAIF(逐次作業として知ら
れる)の閲覧を行うことができ、データレコード802、804、806、81
2、820、824および808が、指定子キーの順序で検索される。例えばタ
イプAのレコードのようなあるタイプのレコードのみ必要な場合、インデックス
の中で、無関係なノードとレコードにアクセスすることなく、同じ方法で閲覧で
きる。従って、ノード814から、レコード806にアクセスされ、またノード
814からリンクと孫ノードによりアクセスできるデータレコードが、レコード
806に従属させられていることを予見できるので、リンク833、832を省
くことできる。この例の中で、レコード802、804、806および808だ
けが、検索される。タイプAとBのレコードのみ必要な場合は、レコード806
をアドレスする数値6を有するノードからの数値Dを有するリンクが、Dと指定
されているデータレコードに従属させられているリンクであることを予見できる
ので、同じ方法で、リンク823に沿って移動しなくて済む。
【0321】 PAIFインデックスが、階層インデックスである場合で、ノード814が、
ノード822以外のブロックに常駐していると仮定して、ノード814からノー
ド812の移動を、分割リンクにより行うことができる。図7Fの中で例示され
ているように、分割リンクが、存在しない場合は、リンク400によりノードB
(423)からノードE(424)に進む必要があるときに、ノードB’(42
2)のリンク421を使用する必要がある。
【0322】 図13の特定の実施形態を引用して、従属関係を例示したので、本発明の第2
の態様に従った多次元特性に関連する説明を続ける。
【0323】 図14に戻って、図の中には、本発明に従った指定されたインデックスが概略
的に示されている。インデックスは、キーフィールド口座番号、日付およびクラ
イアント番号から成る指定されたキーと、またキーフィールドクライアント番号
、日付および口座番号から成る指定されたキーである2個の複合キーの各々によ
り預金にアクセスできるような、一個の指定されたデータレコード(「DEPO
SIT」データレコード)への2本の検索パスから成る。上記の例に戻って、口
座データレコードは、指定されているキー「A133333(1201)」を有
しており、口座に対する預金(口座に従属している預金)の更新は、指定された
レコード201に従属している指定されたレコード203によって実行できる。
PAIFで、リンク206でノード207からレコード201、203にアクセ
スできる。同じ理由で、データレコード204は、クライアントの預金を示して
いる。レコード202のキーは、B133333である。データレコード204
にリンク(208)されているインデックス200とノード209により、クラ
イアント202に対する預金204の更新を実施することができる。データレコ
ード203のキーは、「A133333C010198113461」(k
である。レコード204のきーは、B11346D010198133333(
)である。
【0324】 図示されているとおり、ClientとAccountのフィールドは、レコ
ード203、204の中にコピーされる(日付と金額のような追加の情報も同時
に)が、この作業は、言うまでもなく不必要にファイルを膨らませると言う欠点
を有している。
【0325】 欠点を、単独のDEPOSITレコードを多次元レコード210として示すこ
とで克服できる。
【0326】 データレコード210(図14)は、指定子キーk(指定子C)に従って、
また指定子k(指定子D)に従って指定されたインデックス200により更新
されアクセスされた多次元レコードである。(データレコードが、多次元レコー
ドであるとき、レコードの指定子は、使用されるキーに左右されることに留意し
なければならない。)kによるインデックスの中のパスは、ノード207に導
かれ、ノードからレコード210の指定子Cに導かれる。指定子Cに従ったメタ
データの中の情報で、必要な構造を構築できる。例えば、リンク213、214
によりキーkから成るデータ構造を構築して、レコード201と202がアク
セスされ、そこでレコード210の日付フィールドで、全てのフィールドが構築
される。kによるインデックスの中のパスは、ノード209に導かれ、ノード
からレコード210の指定子Dに導かれる。指定子Dに従ったメタデータの中の
情報で、例えばキーkから成るデータ構造を構築するような、必要な構造を構
築できる。図示されているように、レコード203の検索キーにより画されてい
る検索パスは、数値「C」(検索キーkに従った指定子である)を有する第1
フィールド212に導かれる。第3フィールドは、データレコード201を指し
ている。同じデータ構造210の第2フィールド215(キーkに従った指定
子である数値「D」を有する)は、レコード204の検索キーにより画されてい
る検索パスによりアクセス可能である。第4フィールドは、実際のデータレコー
ド202に対するリンクを有している。この方法で、口座、クライアント、日付
と金額のフィールドをコピーすることを省いており、レコード「DEPOSIT
」は、口座とクライアントの双方の従属を示している。データのエレメントであ
る口座とクライアントが、元のデータレコード(201と202)に向かってい
るリンクによってアクセスされ、またデータの残り(日付と金額)が、データの
エレメント210の中に一度だけ存在するることに留意しなければならない。言
うまでもなく、データレコード210に、他のフィールドを含めることができる
。本発明は、理由の如何を問わず、所与の実現に拘束されず、従って、図14の
中で図示されているデータレコード210を実現する方法は、多数の可能な変形
の内の一つである。検索パスの数は、制限されない。図13Eを引用して前記で
説明されているとおり、求められているデータレコードが、Axxxxである場
合は(即ち本質的に口座レコード201)、検索キー「Axxxx」のインデッ
クスの中で、単に該当する従属させられているレコードの何れかに向かって移動
するだけで、従属させられているレコードからタイプAのレコードに向かってい
るリンクによりAタイプのレコードにアクセスする。例えば図14のリンク21
3に対するものと同様に、他のインプリメンテーションは、言うまでもなく、全
ての要求に応じて適切に実現可能である(例えば、インデックスの中にレコード
Aに対するリンクを維持する)。物理的出現に対する2つの検索パスを設ける具
体的な説明は、1個のデータレコード(多次元レコードと呼ばれる)に向かう少
なくとも2つの検索パスから成る指定されたインデックスである多次元データ構
造を構成する。
【0327】 データエレメント間の関係に就いて、図15は、本発明のもう一つの特徴、即
ち、データ関係の特徴を示している。従って、データレコード(書籍レコード)
は、それに従属させられたC、F、J、KおよびLのデータレコードを有してい
る。階層の実現は、前記で示された。本関係の特徴に従って、一対一および一対
多数の関係を、容易に実現できる。例えば、書籍が多数のカテゴリー(L)即ち
一対多数を有していが、カテゴリーがたった一個の要約(K)、即ち一対一を有
していることを考察する。
【0328】 提案されている特徴に従って、一対一の関係は、2個の構成要素の指定された
(複合)キーにより実行される。即ち、第1は、その従属されられたレコードの
指定されたキーであり、第2は、従属させられたレコードの指定子である(構成
要素が、一対一の関係であるので、従属させられているレコードのキーフィール
ドを使用する必要がないので)。一対多数の関係は、指定子の第1構成要素が、
従属させられているレコードの指定子キーである指定子(複合キー)で実施され
るのに対して、第2構成要素は、指定子と従属指せられているレコードのキーか
ら成っている。
【0329】 この例の中で、書籍とその要約の間の一対一関係は、Axxxを、Lの指定さ
れたキーとし、Lを、レコードLの指定子として、LのキーをAxxxLとなる
ように定義することで維持される。書籍とカテゴリーの間の一対多数の関係は、
Axxxを、Aの指定されたキーとし、Lをキーの指定子とし、またyyyをレ
コードLのキーフィールド(複数を含む)として、LのキーをAxxxLyyy
となるように定義することで維持される。
【0330】 続けて、多重モデル表現に関する本発明の第2の態様に従ったもう一つの特徴
に関するものを説明する。この特徴に従って、また下記に更に詳しく説明して、
一個あるいはそれ以上の下記の(あるいは他のものに及ぶことがある)モデルが
、特定の指定されたインデックスにより示される。
【0331】 多重モデルの指定されたインデックスにより相関関係テーブルを示す。
【0332】 相関関係モデルは、全てのデータをテーブルで構成されているものと見なす。
各テーブルは、タブル(tuples)と呼ばれる、同じ構造のレコードから成る。タ
ブルが、フィールドF1,F2およびF3から成るものと仮定する。フィールド
の各々はキーである。キーF2が、キーF1に従属し、またキーF3が、キーF
2に従属している場合は、テーブルを容易に構築することができる。タブルを検
索するには、キーF1の指定子に従い、そこからF1の数値に向かう、指定子F
2に従い、次に同じ方法でF3に更に向かう。タブルの各々は、テーブルのtu
pleを定義する。一部の立案は、これより容易でさえある。数値F3が存在す
る数値F1とF2の一対の全てを発見するために、処理の後で(F1,F2)検
索を打ち切る。(F2,F3s)の立案を実施するには、初めにF1の数値の全
てを検索する必要なあるので、費用がかかる。しかし、このオペレーションが、
共通であれば、指定されたインデックスも、また検索パス(F2,F3,F1)
を維持する。即ち、新しい指定子が付いた新しい指定子複合キーF2’F3’F
1’を構築して、追加のパスを、指定されたインデックスに挿入することである
。このようにして、各レコードを、双方のパスを経由して到達させて、多次元レ
コードを構成することができる。
【0333】 多重モデルの指定されたインデックスに関する追加のモデル: 指定されたインデックスで、相関関係データベース、オブジェクト指向システ
ムと階層データベースから成り、ほとんどデータのコピーがない、追加のデータ
モデルを示すことができる。
【0334】 多重モデルの指定されたインデックスによるオブジェクト指向(持続性データ
構造)の実行: オブジェクト指向のアプローチは、全てのデータをオブジェクトと見なす。各
オブジェクトは、構造を決め、方法(機能)を適用できるクラスに属する。クラ
スは、階層別に組織されており、階層から、構造と方法を、継がせることができ
る。オブジェクト指向のアプローチは短命であり、オブジェクトは、作られたプ
ログラムが作動している間のみ存在する。長期間サポートされることを必要とす
るオブジェクトは持続的であると定義される。これらのオブジェクトは、ディス
クに記憶され、他の(許可された)プログラムに使用することができる。多重モ
デルの指定されたインデックスで、オブジェクトを簡単にサポートできる。構造
が、指定子の助けを借りて統一されて符号化されているので、事後に復活された
プログラムまた同時に他のプログラムは、持続的オブジェクトをアクセスできる
。同時に持続的オブジェクトを、相関関係テーブルの一部とすることができ、デ
ータをコピーする必要がないことに留意しなければならない。
【0335】 例えば、図16のデータ構造220を考察する。データレコード223、22
4、225および226は、データレコード221に従属しており、レコード2
21と共に、オブジェクトと見なされる。検索の中で、レコード221の指定さ
れたキーと等しいキープレフィックスで効率的に全てのデータレコードを検索し
て(部分的キー検索)、オブジェクト全体を検索することができる。Aタイプレ
コードと従属させられているBタイプレコードのようなオブジェクトのデータの
一部のに必要な場合は、ここでも、レコードタイプA(例えば221)の指定さ
れたキーと、また次のキーフィールドとしての指定子Bと等しいキープレフィッ
クスで、データレコードに対して、部分的キー検索が行われる。
【0336】 多重モデルの指定されたインデックスによるオブジェクト相関関係の実行: オブジェクト指向のアプローチとは反対に、相関関係のアプローチは、全ての
データをテーブルと見なす。従って、SQL照会を、オブジェクト指向のプログ
ラム言語に統合することが困難である(C++あるいはJava)。オブジェク
ト相関関係の取り組みで、テーブルをオブジェクトに転換するインターフェース
を設けることができる。ユーザーは、インターフェースにオブジェクトとテーブ
ルの属性の間の関係を指定する必要がある。一部の属性自身がテーブルである場
合は、テーブル上で、相関関係代数計算をできるようにする必要がある。これら
の換算は、アプリケーションプログラムにより実行される。従って、データベー
スは照会を最適化できない。指定されたインデックスは、データを統一された方
法で処理するので、オブジェクト指向アプリケーションプログラムとデータ構造
の間で理想的なインターフェースを提供する。アプリケーションプログラムの照
会は、指定されたキーの意味で公式化されているので、データベースは照会戦略
を最適化することができる。データベースは、オブジェクト指向アプリケーショ
ンプログラムが、オブジェクト指向方法論で何時でも処理できる、指定されたキ
ーとなる。オブジェクトに向かう検索パスの指定子のシーケンスは、そのクラス
を決定し、種々のフィールドに対する指定子で、オブジェクトプログラムが、要
求されている方法の多様性を解決できるようにする。
【0337】 指定されたキーは、全ての関連するデータをアドレスする。例えば、図16が
、タイプAのレコードが、カスタマであり、タイプBのレコードが、カスタマの
保険金請求で、またタイプCのレコードがクライアントの支払であるとする保険
会社のデータ構造を説明しているものと仮定して、明確に図示されているとおり
、全てのレコードは、単独のインデックス構造でアドレスされる。
【0338】 ここで、インデックスで、カスタマから関連するデータ、即ち保険金の請求と
支払を閲覧できるので、全てのオブジェクトインスタンスを効率的にアクセスす
ることができる。同時に、インデックス構造を、効率的に閲覧して、カスタマの
テーブル(タイプAのレコードの集合体)とクライアントの支払テーブル(Aと
Cタイプのレコードの集合体)を完成できる。データ構造が、データの物理的ク
ラスタを招かないので、データが個となるオブジェクトの間で共有されれば、異
なるオブジェクト閲覧により効率的にアクセスでき、従って、データレコードは
、多次元レコードである。この例において、保険金支払請求を、カスタマのオブ
ジェクトと証券オブジェクトと図16の中の例としてのタイプの構造(構造21
0)になっているものから効率的にアクセスできる。
【0339】 オブジェクト指向のアプローチで、ユーザーは、ユーザーが定義したタイプ(
UDF)とユーザーが定義した機能(UDF)を追加することができる。例の中
で、事故の写真を、保険会社のデータベースに加えることができる。この例の中
で、タイプAデータレコードに従属させられている新しい指定されたデータレコ
ードが定義される。保険金請求の詳細が検索されるとき、事故の写真がアクセス
され、写真プリントアウトアプリケーションに送られる。指定されたインデック
スで、保険金請求に対する写真データの関係は、内蔵されているクラスとの関係
と同じ方法で取り扱われる。新しいUDTが全ての他のデータタイプに基づきあ
るいは関連(従属により)するもとすることができる。ここで、指定されたイン
デックスで、アプリケーションが、UDTが特有の方法と他の特性を持たすこと
ができる定義されたクラスからの新しいUDTを閲覧できる。例えば、インデッ
クスの中で閲覧を行うとき、通常我々は、中から写真と他の保険請求のデータの
一部に到達することができる保険請求を閲覧する。 ネットワークと階層モデル 多重モデルの指定されたインデックスによるネットワークと階層モデル ネットワークと階層モデルは、相関関係モデルに取って代わられたが、これら
のモデルはたとえ陳腐化しても、テーブル指向のインプリメンテーションより優
れた、ある程度の利点を(また同時に多くの欠点)を持っている。レコードが、
一旦検索されると、関連するレコードのアドレスは、何時でも入手できる。
【0340】 例えば、カスタマとローンを有する銀行を考察する。各カスタマは、一個のア
ドレスと複数のローンを有している一方で、貸出は、一人あるいはそれ以上のカ
スタマにより引受られている。ネットワークのモデルの中では、各カスタマは、
カスタマへのリンクから成るノードで示され、ノードへのリンクは、カスタマに
より取り上げられているローンを示している。ローンを示しているノードは、同
様にローンを引き受けているカスタマのノードにリンクされている。従って、ロ
ーンが与えられれば、ローンを引き受けているカスタマを容易にアクセスして、
自宅の住所を取り入れることができる。
【0341】 Bツリーインプリメンテーションでは、2つのツリーが、必要である、即ちそ
の一つは、カスタマの自宅の住所であり、二つ目はローンとカスタマである。従
って、ローンのデータを検索したら、ローンを引き受けたカスタマの名前を入手
できる。彼らの住所を発見するためには、別個の独立した各カスタマに対するB
ツリー検索が必要である。
【0342】 提案されている多重モデルの指定されたインデックスの中で(例えば図16)
、一旦ローンを示すノードに到達すれば、ローンを引き受けているカスタマを識
別する指定子まで継続することができる(例えば、Bタイプレコード)。通常、
各クライアントのために少なくとも1個のディスクが必要である。提案されれい
る多次元の指定されたインデックスは、欠点が無いネットワークモデルの利点を
有している。ネットワークモデルが、各ノードを別々に処理し、検索パスが長く
なる傾向があるのに対して、多重モデルの指定されているインデックスは、全て
のデータを均一に処理し、検索パスの長さは、対数の基礎が、ブロックのサイズ
になるようNなっている多分対数式である。従って、実際には、検索には単一の
ディスクアクセスを要する。
【0343】 指定されたインデックスによるオブジェクト指向によるサーバ/クライアント
モデルの実施 クライアント/サーバモデルで、相関関係モデルの効率的なインプリメンテー
ションができる。このモデルに従って、全てのデータは、中央コンピュータの中
に常駐し(サーバと呼ばれる)、またアプリケーションプログラムは、コンピュ
ータ以外の所で実行される(クライアントと呼ばれる)。アプリケーションがデ
ータを必要とするときは、アプリケーションは、クライアントによりサーバに送
信されるSQL照会を形成する。サーバは、照会を査定して、結果として生じた
テーブルをクライアントに戻す。
【0344】 従って、クライアントとサーバの間のインターフェースは、SQL照会を経由
し、サーバは、内部のデータ構造とアプリケーションのコードを知っている。ク
ライアントとサーバは、テーブルの名前とテーブルの属性に合意するだけである
【0345】 オブジェクト指向のアプローチの中で、モデルは破壊される。各データ項目が
、オブジェクトであるので、サーバは、内部の構造を知らなければならない。こ
の問題は、多様性方法の存在で深刻化する。サーバは、全てのクラスの階層の構
造と詳細を知らなければならない。
【0346】 指定されているインデックスで、クライアント/サーバアプローチにオブジェ
クト指向とオブジェクト相関関係モデルを適用できる。例えば、各属性に対して
、アプリケーションプログラムは、キーのパスを送り、リンク指定子は、サーバ
へ向けた希望するノードに導く。データに基づいて、サーバは、アプリケーショ
ンプログラムのデータ構造の如何なる知識も持たないで要求を満たすことができ
る。
【0347】 クライアントとサーバは、フィールドの名前とフィールドの指定子に合意しな
ければならない。サーバは、各フィールドのデータのタイプとデータの語義の内
容を知る必要がない。
【0348】 本発明のもう一つ態様に従って、更にインデックスの表現を圧縮することが提
案されており、圧縮により、より効率的になっている。以後、スペースの必要条
件を削減するためのトリーと方法に必要なスペースの評価が解説される。
【0349】 トリーが、階層インデックスである場合、トリーインデックス構造を分析は、
最後の層(I)に集中される、即ち: トリーの一時キーインデックスのための記憶必要条件。
【0350】 トリーベースのデータ構造の最も重要な特徴の一つは、その表現の丁度良いサ
イズである。例えば、圧縮された表現であるので、PAIFは、従来のトリーよ
り小さいサイズを維持する。 PAIFの最後のレベルのインデックスは、同じブロックの中で他のトリーノー
ドを指しているリンクと、またレコードを指しているリンクを有するトリーから
成る。Nをデータベースの中のレコードの数とする。インデックスは、丁度Nだ
けの各レコードに向いているポインタから成る。各ポインタに、4バイトが必要
である場合は、ポインタに要するサイズは、4Nバイトである。更に、各ポイン
タ(1バイト)が、方向を有しているので、合計は5Nバイトである。
【0351】 ここで、PAIFトリーに必要なスペースを考察する。Nポインタは、インデ
ックスから生じ、また各トリーノードは、2個の子を有しているので、ここには
、最大n≦のトリーノードがある。dが、トリーのノードの子供平均数を表すも
のとして、n≦N/(d−1)となる。実際には、d>>2、n<<Nである。
各トリーノードは、レベル番号(1バイト)を有している。各トリーのノードが
、最大1本の流入トリーリンクを有しているので、最大n−1のトリーリンクが
あり、各リンクは、ラベルを有しており、ラベルは、単一文字であり、またブロ
ック間の1つのポインタ(1バイト)であるので、合計は、3nバイトとなる。
従って、最悪の場合で、3n+4N≦7Nバイトが最悪の場合に必要である。4
Nと6Nバイトの間が、実際に使用される。
【0352】 同じ分析を実行するが、他の角度からである、即ち、レベルkのノードvから
生ずる2本のポインタpとpを考察する。xを、pがら到達可能なキー
とし、xを、pから到達可能なキーとする。xとxが、最初のk−1文
字を共有する。PAIF構造の中で、これらの文字のなかの一つは、最大一回示
される。Bツリー表現の中で、各キーの最初のk文字を明確に表示することが必
要である。
【0353】 PAIFの中の節約は、2倍となる、即ち、最初の初めの文字は、最大一回各
レベルに記憶され、二番目は、全ての文字を表示させる必要はない。
【0354】 インデックスの更なる圧縮 前記の解説の中で、スペースの大部分は、レコードに向けたポインタに割かれ
る。ここで、ポインタのスペースを節約することができる方法が、示される。方
法は、レコードに向けられた複数のリンクを同じポインタに共有させることがで
きることを基礎とする。初めに、レコードが、固定しているサイズを有している
ものと仮定する。最初の2個のレコードが同じブロックの中に常駐している場合
は、ブロックに向いている最初のポインタに対して、ポインタを完全なサイズに
維持することができ、各残りの外向けのリンクの各々にポインタを、ブロックに
向けたままにする代わりに、その変位を計算する、即ち、最初の2個のレコード
が、ブロック番号2000の中に常駐し、ブロック7000の中に第3レコード
が常駐している場合は、構造2000(E、f)7000(h)を維持すること
ができる。より大きな数の外向きリンクが、同じブロックの全てを指している場
合は、節約はより大きい。kリンクが、ブロックを指している場合は、ポインタ
の4Bは、全てのkレコードの間で分割されるので、各レコードをアドレスする
ためのスペースは、4kバイトに方向(1バイト)のためのスペースが加えられ
て削減される。k≧4に対して、インデックスの中で各レコードが2バイトを必
要とすることを意味する。
【0355】 可変サイズのレコードに対して、ブロックの中で変位を維持することができる
、例えば、2000(e:d,f:d)7000(h:d)である。完全
なポインタを維持する代わりに、単独のバイトに納めることができる変位は維持
される。従って、各レコードに対して、共有のためにポインタの中に、方向のた
めの1バイトが、変位のために1バイトが必要であり、レコード毎に合計3バイ
トが必要である。
【0356】 図17の例に注目して、図17は、それぞれアドレス300、5000、70
00で、3つのデータレコード2002、2004、2006をアドレスする、
リンク2010、2011、2012(数値が、そいれぞれ5、9、A)を有す
るトリーのノード2000を示している。リンク値(各リンクに対して1バイト
)と、またデータを指すポインタ(4バイト)の示すのに必要なサイズは、15
バイトである。
【0357】 ここで、ノード2000は、データレコード(2002、2004、2006
)に向かっている共有されているリンク(2010)を維持する図17Bに目を
向ける。リンクを示す情報は、ブロック2020(4バイト)に向かうアドレス
と、ブロックの中に常駐するデータレコード2002、2004、2006に向
かうリンク値(各リンク値に対して1バイト)である。データブロックを指して
いるポインタとリンクの数値を示すのに必要なサイズは、たった7バイトである
−(3000:5、9、A)。
【0358】 ここで、データレコード2004をアクセスするために、データブロック+デ
ータブロックの中のレコードのサイズが全て等しいと仮定してレコードのサイズ
に左右される変位としてアドレスとしてアドレスを計算することができる。
【0359】 前記で説明されているとおり、ノード2000に、データレコードあるはデー
タブロックに向かうリンクを含めることができる(データレコード2008を受
け入れるデータブロック2002に向かうリンク2024のような)。
【0360】 できれば、複数のユーザーが、ほぼ同時にデータベースにアクセスできるよう
に、本発明のデータベースのファイル管理システムが、公知の並行性および/ま
たは配分されている性能と関連することが好ましい。データベースの場所を、中
央の場所に集中させるか、あるいは2個あるいはそれ以上の遠隔の場所に分散さ
せることができる。
【0361】 ここで、図18A−Dに注目して、この図の中で、市販のCツリーベースデー
タベースと対比した、本発明のシステムを利用するファイル管理システムを使用
したレスポンス時間とデータベースのファイルのサイズの意味で、向上されてい
る性能を実証する4個のベンチマークのグラフが示されている。挿入は、ウイン
ドウスで実行されるUniface(作業グループのための)オペレーションシ
ステムを経由して実現されている。
【0362】 図18Aのベンチマークは、常に増大する予めソートされたデータレコードの
数をファイル(0−1,000,000)に挿入するために要した分単位の時間
の計測に関する。図18Aの中に示されてるとおり、挿入の数が大きくなればな
るほど、本発明のデータベースファイル管理システムのレスポンスについて改善
されている。従って、百万のレコードを挿入するのに、Cツリーベースデータベ
ースでは約669分を要するのと比較して、本発明のシステムでは、たったの6
5分で済む。更に、本発明のファイル管理システムによるレスポンス時間は、レ
コードの数が増えるにつれて、従来の技術に従った対比されるシステムによるレ
スポンス時間が大幅に増えるのとは反対に、僅かに増えるだけである。
【0363】 図18Bのベンチマークは、ファイルの中のデータレコード(0−1,000
,000)に比例するメガバイトでのファイルサイズを示している。図18Bの
中で示されているとおり、レコードの数が大きくなればなるほど、本発明のファ
イル管理システムの中のファイルサイズについて改善が大きくなる。従って、百
万のレコードに対して、Cツリーベースファイルのサイズは、約151メガバイ
トであるのと対比して、本発明のデータベースファイル管理システムでは、たっ
た22メガバイトである。
【0364】 グラフ18Cと18Dは、前者(18Cと18D)中で、データレコードが、
無作為に挿入されるのに対して、後者(18Aと18B)の中では、データレコ
ードが、検索キーに従って予めソートされていると言う事実を除いて、図18A
と12Bの中で示されているものとほぼ同じである。
【0365】 図19A−Dは、本発明のシステム(DOSオペレーティングシステムの下で
操作される)対市販のBツリーベースデータベースシステムのベンチマークグラ
フを示している。結果は、前記と同じである、即ち、本発明のシステムが、レス
ポンス時間とファイルのサイズについてより効率的である。
【0366】 当業者であれば、アルファベット順とローマ字で指定されている保険請求段階
が、説明の便宜上使用されたものであり、その理由の如何を問わず、段階の順序
を押し付けたり、方法の他の段階に対して逐次実行された段階の回数と解釈され
ないものであることが分かるはずである。
【0367】 本発明は、ある程度の特殊性で説明されたが、当業者であれば、別添の請求項
の本発明の範囲と精神から乖離することなく種々の改造と変更を実行することが
できることが分かるはずである。
【図面の簡単な説明】
本発明を理解するために、およびそれが実践でどのように実施されてよいのか
を理解するために、好ましい実施形態は、添付図面に関して、ここでは非制限例
だけによって説明されるだろう。
【図1】 データベースファイル管理システムを利用するシステムの汎用ブロック図を示
す。
【図2】 エンティティ関係図(ERD)として表され、説明の目的に役立つサンプルデ
ータベース構造を示す。
【図3】 それぞれのテーブルがほとんどデータ発生を保持しないリレーショナルデータ
モデルに従ってテーブルとしてあらわされている図2のデータベースを示す。
【図4】 従来のB+ツリーインデックススキームを利用するファイル管理システムに従
った図3の「CLIENT(クライアント)」テーブルを示す。
【図5】 従来のトリーインデックススキームを利用するファイル管理システムに従った
図3の「CLIENT」テーブルを示す。
【図6A〜6C】 PAIFインデックススキームを利用するファイル管理システムに従った図3
の「CLIENT」テーブルを示す。
【図7A〜7H】 本発明の1つの実施形態に従った階層インデックスの構築を例証する概略図を
示す。
【図8A〜8B】 本発明の別の実施形態に従った階層インデックスの構築を例証する概略図を示
す。
【図9A〜9G】 本発明の別の実施形態に従った階層インデックスの構築を例証する概略図を示
す。
【図10A〜10B】 本発明の別の実施形態に従った階層インデックスの構築を例証する概略図を示
す。
【図11】 本発明のまだ別の実施形態に従った階層インデックスの構築を例証する概略図
を示す。
【図12】 本発明の1つの実施形態に従った指定インデックス内での指名子の使用を例証
するための概略図を示す。
【図13A〜13E】 本発明の1つの実施形態に従って、指定インデックス内のデータレコードの従
属の特徴を例証する5つの概略図を示す。
【図14】 本発明のある実施形態に従った多次元レコードを例証する指定インデックスの
概略図を示す。
【図15】 本発明の別の実施形態に従った指定インデックスの概略図を示す。
【図16】 本発明の1つの実施形態に従って提供されるデータレコード間の関係の特徴を
例証するための概略図を示す。
【図17A〜17B】 本発明の1つの実施形態にしたがったデータレコードへのリンクの圧縮された
表記の概略図を示す。
【図18A〜18D】 市販されているCtreeをベースにしたデータベースに対する、本発明のフ
ァイル管理システムを活用するデータベースの、応答時間とファイルサイズとい
う点での性能の拡張を証明する4つのベンチマークグラフを示す。
【図19A〜19D】 市販されているBtreeをベースにしたデータベースに対する、本発明のフ
ァイル管理システムを活用するデータベースの、応答時間とファイルサイズとい
う点での性能の拡張を証明する4つのベンチマークグラフを示す。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SZ,UG,ZW),EA(AM ,AZ,BY,KG,KZ,MD,RU,TJ,TM) ,AL,AM,AT,AU,AZ,BA,BB,BG, BR,BY,CA,CH,CN,CU,CZ,DE,D K,EE,ES,FI,GB,GD,GE,GH,GM ,HR,HU,ID,IL,IN,IS,JP,KE, KG,KP,KR,KZ,LC,LK,LR,LS,L T,LU,LV,MD,MG,MK,MN,MW,MX ,NO,NZ,PL,PT,RO,RU,SD,SE, SG,SI,SK,SL,TJ,TM,TR,TT,U A,UG,US,UZ,VN,YU,ZW

Claims (98)

    【特許請求の範囲】
  1. 【請求項1】 データ処理システム上で実行されるデータベースファイル管 理システムにより使用される記憶媒体において、 ブロックに配列され、データレコードと関連しており、キーまたは複数のキー
    によりデータレコードのアクセスまたは更新を可能にし、ブロックの不均衡の構
    造の影響を受けやすい基本区分インデックスを含む階層インデックスを含み、 前記階層インデックスはキーまたは複数のキーによるデータレコードのアクセ
    スまたは更新を可能にし、ブロックの均衡構造を構成する、データ構造。
  2. 【請求項2】 前記基本区分インデックスがトリー(trie)である、請求項
    1に記載の階層インデックス。
  3. 【請求項3】 データ処理システム上で実行されるデータベースファイル管
    理システムにより使用される記憶媒体において、 データレコードに関連し、キーまたは複数のキーによる前記データレコードの
    アクセスまたは更新を可能にし、ブロックの不均衡の構造の影響を受けやすい基
    本区分インデックスを有し、ブロックに配列され、前記データレコードのキーの
    上に構築されるインデックスを含み、 前記インデックスはキーまたは複数のキーによるデータレコードのアクセスま
    たは更新を可能にし、ブロックの均衡した構造を構成する、データ構造。
  4. 【請求項4】 データ処理システムで実行されるデータベースファイル管理
    システムにより使用される記憶媒体において、 データレコードに関連し、キーまたは複数のキーによるデータレコードのアク
    セスまたは更新を可能にし、ブロックの不均衡な構造に影響を受けやすいトリー
    を含み、ブロックに配列され、データレコードのキーの上で構築されているイン
    デックスを含み、 前記インデックスはキーまたは複数のキーによるデータレコードのアクセスま
    たは更新を可能にし、ブロックの均衡した構造を構成する、データ構造。
  5. 【請求項5】 前記記憶媒体が外部メモリである、請求項1に記載の階層イ
    ンデックス。
  6. 【請求項6】 前記記憶媒体が、さらに内部メモリである、請求項5に記載
    の階層インデックス。
  7. 【請求項7】 前記記憶媒体が、内部メモリである、請求項1に記載の階層
    インデックス。
  8. 【請求項8】 前記トリーがPAIFトリーである、請求項2に記載の階層
    インデックス。
  9. 【請求項9】 前記階層インデックスの基本区分インデックスおよび代表イ
    ンデックスが、実質的には同じインデックススキームである、請求項1に記載の
    階層インデックス。
  10. 【請求項10】 前記階層インデックスの基本区分インデックスおよび代表
    インデックスが、異なるインデックススキームである、請求項1に記載の階層イ
    ンデックス。
  11. 【請求項11】 前記階層インデックスの代表インデックスが、Btree
    インデックススキームである、請求項8に記載の階層インデックス。
  12. 【請求項12】 代表インデックスがBtreeインデックススキームであ
    る、請求項10に記載の階層インデックス。
  13. 【請求項13】 前記階層インデックスの代表インデックスが、実質的には
    PAIFインデックススキームである、請求項8に記載の階層インデックス。
  14. 【請求項14】 代表インデックスが、実質的にはPAIFインデックスス
    キームである、請求項9に記載の階層インデックス。
  15. 【請求項15】 ODBC規格をサポートできる、請求項1に記載の階層イ
    ンデックス。
  16. 【請求項16】 任意のIjが、Ij−1の代表キーの上で構築されるよう
    に構築されている代表インデックスI...Iと、 を備える、請求項1に記載の階層インデックスI...I
  17. 【請求項17】 Iが完全に1つのブロックの中に含まれている、請求項
    16に記載の階層インデックスI...I
  18. 【請求項18】 前記記憶媒体が外部メモリである、請求項3に記載の階層
    インデックス。
  19. 【請求項19】 前記記憶媒体が内部メモリである、請求項18に記載の階
    層インデックス。
  20. 【請求項20】 前記記憶媒体が内部メモリである、請求項3に記載の階層
    インデックス。
  21. 【請求項21】 ODBC規格をサポートできる、請求項3に記載の階層イ
    ンデックス。
  22. 【請求項22】 前記記憶媒体が外部メモリである、請求項4に記載の階層
    インデックス。
  23. 【請求項23】 前記記憶媒体がさらに内部メモリである、請求項22に記
    載の階層インデックス。
  24. 【請求項24】 前記記憶媒体が内部メモリである、請求項4に記載の階層
    インデックス。
  25. 【請求項25】 ODBC規格をサポートすることができる、請求項4に記
    載の階層インデックス。
  26. 【請求項26】 データレコードをアクセスし、データ処理システムで実行
    されるためのデータファイル管理システムにおいて、データレコードは、ブロッ
    クに配列される基本区分インデックスと関連し、記憶媒体の中に記憶され、基本
    区分インデックスはキーまたは複数のキーによるデータレコードのアクセスまた
    は更新を可能にし、ブロックの不均衡な構造に影響を受けやすく、 (a)前記基本区分インデックスを提供するステップと、 (b)前記基本区分インデックスの代表キーの上で代表インデックスを構築し
    、前記階層インデックスがキーまたは複数のキーによるデータレコードのアクセ
    スまたは更新を可能にし、ブロックの平行した構造を構成するステップとでなる
    、ブロックの中に配列される階層インデックスを構築するための方法。
  27. 【請求項27】 前記基本区分インデックスがトリーである、請求項26に
    記載の階層インデックス。
  28. 【請求項28】 データレコードにアクセスし、データ処理システムで実行
    されるためのデータベースファイル管理システムにおいて、データレコードは、
    ブロックの中に配列されている基本区分インデックスと関連し、記憶媒体の中で
    記憶され、基本区分インデックスはキーまたは複数のキーによるデータレコード
    のアクセスまたは更新を可能にし、ブロックの不均衡な構造に影響をうけやすく
    、 (a)前記基本区分インデックスを提供するステップと、 (b)キーまたは複数のキーによるデータレコードのアクセスまたは更新を可
    能にし、ブロックの均衡した構造を構成するインデックスを前記基本区分インデ
    ックスの代表キーの上に構築ステップとでなる、ブロックに配列されるインデッ
    クスをデータレコードのキーの上に構築するための方法。
  29. 【請求項29】 データレコードにアクセスし、データ処理システムで実行
    されるためのデータファイル管理システムにおいて、データレコードがブロック
    の中に配列されているトリーに関連し、記憶媒体の中に記憶され、トリーがキー
    または複数のキーによるデータレコードのアクセスまたは更新を可能にし、ブロ
    ックの不均衡な構造に影響を受けやすく、 (a)トリーを提供するステップと、 (b)キーまたは複数のキーによるデータレコードのアクセスまたは構築を可
    能にし、ブロックの均衡した構造を構成するインデックスを前記トリーの代表キ
    ーの上に構築するステップと、 でなる、ブロックに配列されるインデックスを前記データレコードのキー嬢に
    構成する方法。
  30. 【請求項30】 前記記憶媒体が外部メモリである、請求項26に記載の方
    法。
  31. 【請求項31】 前記記憶媒体が、さらに内部メモリである、請求項30に
    記載の方法。
  32. 【請求項32】 前記記憶媒体が内部メモリである、請求項26に記載の方
    法。
  33. 【請求項33】 前記トリーがPAIFトリーである、請求項27に記載の
    方法。
  34. 【請求項34】 基本区分インデックスおよび代表インデックスが、実質的
    に同じインデックススキームである、請求項26に記載の方法。
  35. 【請求項35】 基本区分インデックスおよび代表インデックスが、異なっ
    たインデックススキームである、請求項26に記載の方法。
  36. 【請求項36】 代表インデックスがBtreeインデックススキームであ
    る、請求項33に記載の方法。
  37. 【請求項37】 代表インデックスがBtreeインデックススキームであ
    る、請求項35に記載の方法。
  38. 【請求項38】 代表インデックスがPAIFインデックススキームである
    、請求項33に記載の階層インデックス。
  39. 【請求項39】 代表インデックスがPAIFインデックススキームである
    、請求項34に記載の階層インデックス。
  40. 【請求項40】 ODBC規格をサポートできる、請求項26に記載の方法
  41. 【請求項41】 前記記憶媒体が外部メモリである、請求項28に記載の方
    法。
  42. 【請求項42】 前記記憶媒体が、さらに内部メモリである、請求項41に
    記載の方法。
  43. 【請求項43】 前記記憶媒体が内部メモリである、請求項28に記載の方
    法。
  44. 【請求項44】 ODBC規格をサポートできる、請求項28に記載の方法
  45. 【請求項45】 前記インデックスが逐次動作をサポートする、請求項26
    に記載の方法。
  46. 【請求項46】 前記インデックスが逐次動作をサポートする、請求項28
    に記載の方法。
  47. 【請求項47】 前記インデックスが逐次動作をサポートする、請求項29
    に記載の方法。
  48. 【請求項48】 (a)h≧k≧0の場合に、およびkにつながるIh−1 のブロックを見つけるためにデータレコードのキーの中でそれが見つからないケ
    ースで、IからIの中でkを検索することと、 (b)存在する場合は、キーkが指定されるデータレコードに関連するI
    ブロックに達するまでステップ(a)を繰り返すこととでなる、請求項1に記載
    の階層インデックス内でキーkにより求められているデータレコードrにアクセ
    スするための方法。
  49. 【請求項49】 (a)h≧k≧0の場合、およびkにつながるIh−1
    ブロックを見つけるためにデータレコードのキーの中でそれが見つからないケー
    スで、IからIの中でkを検索することと、 (b)存在する場合は、キーkが指定されるデータレコードに関連するI
    ブロックBni達するまでステップ(a)を繰り返すことと、 (c)rをBに結合することとでなる、請求項1に記載の階層インデックスで
    キーkによりデータレコードrを挿入するための方法。
  50. 【請求項50】 (a)h≧k≧0の場合に、およびkにつながるIh−1 のブロックを見つけるために、データレコードのキーの中でそれが見つからない
    ケースで、IからIの中でkを検索することと、 (b)存在する場合は、キーkが指定されるデータレコードに関連するI
    ブロックBに達するまでステップ(a)を繰り返すことと、 (c)Bからrを切断することとでなる、請求項1に記載の階層インデックス
    でキーkによりデータレコードrを削除するための方法。
  51. 【請求項51】 (a)h≧k≧0の場合、およびkにつながるIh−1
    ブロックを見つけるためにデータレコードのキーの中でそれが見つからないケー
    スで、IからIの中でkを検索することと、 (b)存在する場合は、キーkが指定されるデータレコードに関連するI
    ブロックに達するまでステップ(a)を繰り返すこととでなる、請求項3に記載
    の階層インデックスでキーkにより求められているデータレコードrにアクセス
    するための方法。
  52. 【請求項52】 (a)h≧k≧0の場合、およびkにつながるIh−1
    ブロックを見つけるために、データレコードのキーの中でそれが見つからないケ
    ースで、IからIの中でkを検索することと、 (b)存在する場合は、キーkが指定されるデータレコードに関連するI
    ブロックBに達するまでステップ(a)を繰り返すことと、 (c)rをBに結合することとでなる、請求項3に記載の階層インデックスで
    キーkによりデータレコードrを挿入するための方法。
  53. 【請求項53】 (a)h≧k≧0の場合、およびkにつながるIh−1
    ブロックを見つけるためにデータレコードのキーの中でそれが見つからないケー
    スで、IからIの中でkを検索することと、 (b)存在する場合、キーkが指定されるデータレコードに関連するIのブ
    ロックBに達するまでステップ(a)を繰り返すことと、 (c)rをBから切り離すこととでなる、請求項3に記載の階層インデックス
    でキーkによりデータレコードdを削除するための方法。
  54. 【請求項54】 前記構築ステップ(b)が、 (Ih−1の中の)Bがオーバフローする場合、それは2つ(または3つ以上
    )のブロックに分割され、IでのBの代表は、新規ブロックの代表によって置
    換される。 (b)Iのブロックがオーバフローすると、追加層Ih+1が作成され、階
    層インデックスに加えられる。を含む、請求項26に記載の方法。
  55. 【請求項55】 進行中に実行される、請求項54に記載の方法。
  56. 【請求項56】 事後に実行される、請求項54に記載の方法。
  57. 【請求項57】 前記構築ステップ(b)が、 (a)(Ih−1内の)Bは、オーバフローする場合、それは2つ(または3
    つ以上)のブロックに分割され、I内のBの代表は新規ブロックの代表によっ
    て置換される。 (b)Iのブロックがオーバフローすると、追加層Ih+1が作成され、階
    層インデックスに追加される。
  58. 【請求項58】 進行中に実行される、請求項57に記載の方法。
  59. 【請求項59】 事後に実行される、請求項57に記載の方法。
  60. 【請求項60】 構築ステップ(b)が、 (a)(Bi−1の)ブロック内のノード(この事実に基づいて分割ノード)
    の短リンクの間の少なくとも1つの短リンクは、少なくとも2つのトリーがブロ
    ック内に存在するように、削除され(この事実に基づいて分割ノード)、 (b)サブツリーのそれぞれが別個のブロックに移動され、 (c)Bのブロックが存在しない場合、Bが作成され、分割ノードのコピ
    ー済みノードはBの中で作成され、 (d)Bのブロックが存在し、分割ノードのコピー済みノードがBの中に
    存在しない場合には、分割ノードのコピー済みノードは、(分割プロセスの最後
    で)Bi−1が、Bの中にルートノードを含む検索パス内でアクセス可能であ
    るように、Bの中で作成され、Bのトリーに接続され、 (e)コピー済みノードに直接リンクがない場合、直接リンクはコピー済みノ
    ードからブロックBi−1に追加され、 (f)コピー済みノードからブロックBi−1’ni追加される遠リンク、ま
    たはKピー済みノードが遠リンクの方向で子ノードに対する短リンクを有する場
    合、遠リンクは子ノードからブロックBi−1への直接リンクにより置換される
    ことを含む、請求項26に記載の方法。
  61. 【請求項61】 データ処理システムで実行されるデータベースファイル管
    理システムによって使用される記憶媒体において、複数のノードとリンクを有す
    る少なくとも1つの確率的アクセス索引付けファイル(PAIF)を含むデータ
    構造であって、 前記PAIFのリーフノードは、それぞれ前記ユーザアプリケーションプログ
    ラムがアクセス可能な少なくとも1つのデータレコードに関連し、そこでは前記
    データレコードの少なくとも一部が少なくとも1つの検索キーを構成し、 前記PIAF内の選択されたノードは、それぞれ、前記挿入検索キー内の検索
    キー部分の指定オフセットを表し、前記選択ノードの中からの各指定ノードから
    生じるリンク(複数の場合がある)は、それぞれ前記検索キー部分の一意の値を
    表し、 PIAFは、それぞれブロックの中に配列されている少なくとも2つのサブP
    IAFを有するPIAFと、 前記データベースファイル管理システムが、均衡したブロックの構造としてさ
    らに前記ブロックを配列できる、データ処理システム。
  62. 【請求項62】 前記リーフノードに関連する少なくともいくつかのデータ
    レコードが、少なくとも1つの別個のファイルに保持される、請求項61に記載
    のデータ処理システム。
  63. 【請求項63】 少なくとも1つのリーフが複数のデータレコードと関連す
    る、請求項61に記載のデータ処理システム。
  64. 【請求項64】 以下のステップの実行を含む、請求項61に記載の既存の
    PAIFの中に新規データレコードを挿入するための方法。 i.ルートノードから始まり、リーフノードに関連するデータレコード(「参
    照データレコード」と呼ばれる)で終わる基準パスに沿って進むステップであっ
    て、基準パス内の各ノードで、リンクにより表される値が前記ノードにより指定
    されるオフセットでのIビット長のキー部分の値に等しい場合に、前記ノードか
    ら生じるリンクに沿って進むステップであって、ノードに指定されるオフセット
    がキーの中の対応するキー部分を超える場合、あるいは前記値とのリンクがない
    場合、任意の基準データレコードへの任意のパスに沿って進むステップと、 ii.(これ以降識別オフセット)2つを識別する検索キー部分の最小オフセ
    ットを決定するための新規データレコードの検索キーに、基準データレコードの
    検索キーを比較するステップと、 iii.識別オフセットの値に応じて以下のステップ(iii.0からiii
    .3)の1つに進み、 iii.0 データレコードが等しい場合には、終了する、あるいは iii.1 識別オフセットが基準パス内のノードの1つにより示されるオフ
    セットに一致する場合には、前記1つのノードから別のリンクを追加し、新規デ
    ータレコードの検索キーから取られる識別オフセットで検索キー部分の値を前記
    リンクに割り当て、 iii.2 識別オフセットが、リンクにより基準データレコードにリンクさ
    れているリーフノードによって示されるものより大きい場合、 iii.2.1 基準データレコードからリンクを切断し(つまり、それは一
    時的に「緩んだ(loose)」のままとなる)、該リンクを新規ノードに移動する 。該新規ノードには、識別オフセットの値が割り当てられ、 iii.2.2 基準データレコードと(現在リーフノードになる)新規ノー
    ドを接続し、該リンク(長リンク)に、基準データレコードの検索キーから取ら
    れる識別オフセットでの検索キー部分の値を割り当て、 iii.2.3 リンクにより新規データレコードと新規ノードを接続し、リ
    ンク(長リンク)に新規データレコードの検索キーから取られる識別オフセット
    での検索キー部分の値を割り当て、 iii.3 条件iii.0、iii.1およびiii.2が満たされると、
    識別オフセットが同時に親ノードに割り当てられているオフセットより大きく、
    子ノードに割り当てられているオフセットより小さくなる(―ケースAと考えら
    れる)、あるいは基準検索パス内のすべてのノードが識別オフセットより大きい
    値を有する(―ケースBと考えラ得る)ように、基準検索パス内には親ノードと
    その子ノードが存在する。したがって、以下のサブステップを適用し、 iii.3.1ケースAおよびBの場合、新規ノードを作成し、ノードに、前
    記識別オフセットの値を割り当て、 ケースAだけの場合−親ノードから子ノードへのリンクを切断し、リンクを新
    規内部ノードに移す(つまり、子ノードは一時的に「緩んだ」のままとなる)、
    iii.3.2 ケースAおよびBの場合、リンク(長リンク)によって、新規
    データレコードおよび新規内部ノードを接続する。リンクに割り当てられる値は
    、新規データレコードの検索キーから取られるように、識別オフセットでの検索
    キー部分の値であり、 iii.3.3 ケースAおよびBの場合、新規リンクによって、新規ノード
    を接続し、ケースAの場合―子ノード、ケースBの場合―ルートノードを接続し
    (つまり、新規ノードは、ケースAの場合―新規親ノードとなり、ケースBの場
    合―新規ルートノードになる)、前記リンクに割り当てられた値が、基準データ
    レコードの検索キーから取られる、新規ノードによって示されているオフセット
    での検索キー部分である。
  65. 【請求項65】 均衡したPAIFインデックスを得るための方法であって
    、PAIFは、それぞれが前記ノードから発する複数のノードとリンクを収容す
    るブロックを含み、前記ノードの中からのリーフノードがデータレコードと関連
    し、 (i)前記分割ブロックのノードの中からほとんどが前記分割ブロックの内の
    1つの中に収容されず、前記分割ブロックのノードの中から残りのノードがそれ
    以外の分割ブロックの中に収容されるように、ブロックを置換し、置換されたブ
    ロックを、少なくとも2つの分割ブロックで構成するステップと、 (ii)前記置換されたブロックのノードの中から少なくとも1つのノードを
    、前記少なくとも2つの分割ブロックがその子ブロックであるように1つのブロ
    ックの中にコピーするステップと、を必要な同数だけ実行することを備える方法
  66. 【請求項66】 10Mbyteから20Mbyteの間、またはそれ以上
    の範囲となる 少なくとも1つの内部メモリ、および外部メモリという記憶媒体
    を有するコンピュータシステムにおいて、 データレコードのキーの上にインデックスを含むデータ構造であって、該イン
    デックスがブロック内に配列され、その結果、10億データレコードの場合、前
    記データレコードのキーのサイズには関係なく、前記10億のデータレコードの
    内の任意の1つに関連するブロックにアクセスするためには、前記外部メモリへ
    の実質的にはせいぜい2回のアクセスが必要とされるデータ構造。
  67. 【請求項67】 10Mbyteから20Mbyteの間、またはそれ以上
    の範囲となる少なくとも1つの内部メモリ、および外部メモリという記憶媒体を
    有するコンピュータシステムにおいて、 データレコードのキー上にインデックスを含むデータ構造であって、該インデ
    ックスがブロック内に配列され、その結果100万データレコードの場合、前記
    データレコードのキーのサイズに関係なく、インデックスの実質的にはすべての
    ブロックが前記内部メモリに収容される、データ構造。
  68. 【請求項68】 記憶媒体を有するコンピュータシステムにおいて、 データレコードのキーの上にインデックスを含むデータ構造であって、該イン
    デックスはブロックの均衡した構造の中で配列され、前記データレコードに対す
    る逐次動作を実行することを可能にし、インデックスサイズは本質的に前記キー
    のサイズから影響を受けないデータ構造。
  69. 【請求項69】 データ処理システム上で実行されるデータベースファイル
    管理システムにより使用される記憶媒体内で、データレコードのキーの上でのイ
    ンデックスを含むデータ構造であって、前記データレコードが、第2型のデータ
    レコードが第1型ので−アレコードに従属する少なくとも2種類である、データ
    構造。
  70. 【請求項70】 データ処理システム上で実行されるデータベースファイル
    管理システムにより使用される記憶媒体において、 データレコードの指定キー上の指定インデックス、指定データレコードを構成
    し、第2型の指定データレコードが第1型の指定データレコードに従属している
    少なくとも2種類であるデータレコードとを含むデータ構造。
  71. 【請求項71】 前記インデックスが階層インデックスを構成する、請求項
    69に記載の記憶媒体。
  72. 【請求項72】 前記指定インデックスが階層インデックスを構成する、請
    求項70に記載の記憶媒体。
  73. 【請求項73】 前記指定インデックスが多次元インデックスを構成する、
    請求項70に記載の記憶媒体。
  74. 【請求項74】 前記指定インデックスが多次元インデックスを構成する、
    請求項72に記載の記憶媒体。
  75. 【請求項75】 前記指定インデックスが、マルチモデルインデックスを構
    成する、請求項70に記載の記憶媒体。
  76. 【請求項76】 前記指定インデックスがマルチモデルインデックスを構成
    する、請求項72に記載の記憶媒体。
  77. 【請求項77】 前記指定インデックスがマルチモデルインデックスを構成
    する、請求項74に記載の記憶媒体。
  78. 【請求項78】 第1型のデータレコードおよび第2型の従属データレコー
    ドが、1対1の関係性を構成する、請求項69に記載の記憶媒体。
  79. 【請求項79】 第1型のデータレコードと第2型の従属データレコードが
    、1対多の関係性を構成する、請求項70に記載の記憶媒体。
  80. 【請求項80】 第1型のデータレコードおよび第2型の従属データレコー
    ドが、1対1の関係性を構築する、請求項71に記載の記憶媒体。
  81. 【請求項81】 第1型のデータレコードと第2型のデータレコードが、1
    対多の関係性を構築する、請求項73に記載の記憶媒体。
  82. 【請求項82】 前記インデックスがトリーを含む、請求項69に記載の記
    憶媒体。
  83. 【請求項83】 前記インデックスがトリーを含む、請求項70に記載の記
    憶媒体。
  84. 【請求項84】 前記階層インデックスの基本区分インデックスがトリーで
    ある、請求項71に記載の記憶媒体。
  85. 【請求項85】 複合キーK...Kを有する従属データレコードとい
    う点でのアクセストランザクションまたは更新トランザクションのために、複合
    キーK...Kに従った従属データレコードにつながる従属検索パスがイン
    デックス内に存在し、従属検索パスが、キーK...kn−1を有するデータ
    レコードへの検索パスを含む、請求項69に記載の記憶媒体。
  86. 【請求項86】 複合キーK...Kを有する従属データレコードとい
    う点でのアクセストランザクションまたは更新トランザクションのために、複合
    キーK...Kに従った従属データレコードにつながる従属検索パスがイン
    デックス内に存在し、従属検索パスが、キーK...kn−1を有するデータ
    レコードへの検索パスを含む、請求項70に記載の記憶媒体。
  87. 【請求項87】 前記マルチモデルがリレーショナルモデルを含む、請求項
    75に記載の記憶媒体。
  88. 【請求項88】 前記マルチモデルがオブジェクト指向型モデルを含む、請
    求項75に記載の記憶媒体。
  89. 【請求項89】 前記マルチモデルがオブジェクトリレーショナルモデルを
    含む、請求項75に記載の記憶媒体。
  90. 【請求項90】 前記マルチモデルがクライアントサーバモデルに適合する
    、請求項75に記載の記憶媒体。
  91. 【請求項91】 前記マルチモデルがリレーショナルモデルを含む、請求項
    76に記載の記憶媒体。
  92. 【請求項92】 前記マルチモデルがオブジェクト指向モデルを含む、請求
    項76に記載の記憶媒体。
  93. 【請求項93】 前記マルチモデルがオブジェクトリレーショナルモデルを
    含む、請求項76に記載の記憶媒体。
  94. 【請求項94】 前記マルチモデルがクライアントサーバモデルと適合する
    、請求項76に記載の記憶媒体。
  95. 【請求項95】 データ処理システム上で実行されるデータベースファイル
    管理システムにより使用される記憶媒体において、 記憶媒体に記憶され、ブロックに記憶される前記データレコードのキー上で構
    築されているインデックスであって、該インデックスはブロック内に配列され、
    リーフブロックがリンクによってデータリンクにリンクされているインデックス
    と、 前記リンクの少なくとも1つが、同じブロック内に記憶されている少なくとも
    2つのデータレコードによって共用されるという点で特徴付けられている前記イ
    ンデックスと、を含むデータ構造。
  96. 【請求項96】 前記インデックスがトリーによって構成されている、請求
    項95に記載の記憶媒体。
  97. 【請求項97】 データ処理システム上で実行されるデータベースファイル
    管理システムにより使用される記憶媒体において、 記憶媒体の中に記憶され、ブロック内に記憶される前記データレコードのキー
    上で構築されているインデックスであって、該インデックスがブロック内に配列
    され、リーフブロックが、リンクによりデータレコードにリンクされるインデッ
    クスと、 前記リンクの少なくとも1つが、同じブロック内に記憶されている少なくとも
    2つの出たレコードによって共用されるという点で特徴付けられている前記イン
    デックスと、 請求項1に記載の階層インデックスを構成する前記インデックスであって、前
    記基本区分インデックスのブロックが前記データレコードにリンクされている前
    記インデックスと、を含む、データ構造。
  98. 【請求項98】 前記基本区分インデックスがトリーにより構成されている
    、請求項97に記載の記憶媒体。
JP2000528930A 1998-01-22 1999-01-22 データベース装置 Pending JP2002501256A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IL9800029 1998-01-22
IL9800029 1998-01-22
PCT/IL1999/000038 WO1999038094A1 (en) 1998-01-22 1999-01-22 Database apparatus

Publications (2)

Publication Number Publication Date
JP2002501256A true JP2002501256A (ja) 2002-01-15
JP2002501256A5 JP2002501256A5 (ja) 2006-04-06

Family

ID=11062302

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000528930A Pending JP2002501256A (ja) 1998-01-22 1999-01-22 データベース装置

Country Status (12)

Country Link
EP (1) EP1049990A4 (ja)
JP (1) JP2002501256A (ja)
CN (1) CN1292901A (ja)
AU (1) AU759360B2 (ja)
BR (1) BR9907227A (ja)
CA (1) CA2319177A1 (ja)
HU (1) HUP0101298A3 (ja)
NO (1) NO20003759L (ja)
NZ (1) NZ505767A (ja)
RU (1) RU2000122092A (ja)
TR (1) TR200002119T2 (ja)
WO (1) WO1999038094A1 (ja)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6208993B1 (en) 1996-07-26 2001-03-27 Ori Software Development Ltd. Method for organizing directories
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
US6675173B1 (en) 1998-01-22 2004-01-06 Ori Software Development Ltd. Database apparatus
AU4927599A (en) * 1999-07-22 2001-02-13 Ori Software Development Ltd Method for organizing directories
GB0007868D0 (en) 2000-03-31 2000-05-17 Koninkl Philips Electronics Nv Methods and apparatus for editing digital video recordings and recordings made by such methods
GB2367917A (en) 2000-10-12 2002-04-17 Qas Systems Ltd Retrieving data representing a postal address from a database of postal addresses using a trie structure
GB2406680B (en) * 2000-11-30 2005-05-18 Coppereye Ltd Database
US6804677B2 (en) * 2001-02-26 2004-10-12 Ori Software Development Ltd. Encoding semi-structured data for efficient search and browsing
US7287033B2 (en) 2002-03-06 2007-10-23 Ori Software Development, Ltd. Efficient traversals over hierarchical data and indexing semistructured data
EP1437662A1 (en) * 2003-01-10 2004-07-14 Deutsche Thomson-Brandt Gmbh Method and device for accessing a database
US7366725B2 (en) 2003-08-11 2008-04-29 Descisys Limited Method and apparatus for data validation in multidimensional database
US7734661B2 (en) 2003-08-11 2010-06-08 Descisys Limited Method and apparatus for accessing multidimensional data
US20050065960A1 (en) * 2003-09-19 2005-03-24 Jen-Lin Chao Method and system of data management
US7908242B1 (en) 2005-04-11 2011-03-15 Experian Information Solutions, Inc. Systems and methods for optimizing database queries
US8005759B2 (en) 2006-08-17 2011-08-23 Experian Information Solutions, Inc. System and method for providing a score for a used vehicle
US7912865B2 (en) 2006-09-26 2011-03-22 Experian Marketing Solutions, Inc. System and method for linking multiple entities in a business database
US8036979B1 (en) 2006-10-05 2011-10-11 Experian Information Solutions, Inc. System and method for generating a finance attribute from tradeline data
US8606666B1 (en) 2007-01-31 2013-12-10 Experian Information Solutions, Inc. System and method for providing an aggregation tool
US8204856B2 (en) 2007-03-15 2012-06-19 Google Inc. Database replication
US8285656B1 (en) 2007-03-30 2012-10-09 Consumerinfo.Com, Inc. Systems and methods for data verification
US20080294540A1 (en) 2007-05-25 2008-11-27 Celka Christopher J System and method for automated detection of never-pay data sets
US9690820B1 (en) 2007-09-27 2017-06-27 Experian Information Solutions, Inc. Database system for triggering event notifications based on updates to database records
US8312033B1 (en) 2008-06-26 2012-11-13 Experian Marketing Solutions, Inc. Systems and methods for providing an integrated identifier
US8478798B2 (en) 2008-11-10 2013-07-02 Google Inc. Filesystem access for web applications and native code modules
US9152727B1 (en) 2010-08-23 2015-10-06 Experian Marketing Solutions, Inc. Systems and methods for processing consumer information for targeted marketing applications
US9147042B1 (en) 2010-11-22 2015-09-29 Experian Information Solutions, Inc. Systems and methods for data verification
US9483606B1 (en) 2011-07-08 2016-11-01 Consumerinfo.Com, Inc. Lifescore
US20130013605A1 (en) * 2011-07-08 2013-01-10 Stanfill Craig W Managing Storage of Data for Range-Based Searching
US9853959B1 (en) 2012-05-07 2017-12-26 Consumerinfo.Com, Inc. Storage and maintenance of personal data
US9697263B1 (en) 2013-03-04 2017-07-04 Experian Information Solutions, Inc. Consumer data request fulfillment system
US10223637B1 (en) 2013-05-30 2019-03-05 Google Llc Predicting accuracy of submitted data
US10102536B1 (en) 2013-11-15 2018-10-16 Experian Information Solutions, Inc. Micro-geographic aggregation system
US9529851B1 (en) 2013-12-02 2016-12-27 Experian Information Solutions, Inc. Server architecture for electronic data quality processing
US10262362B1 (en) 2014-02-14 2019-04-16 Experian Information Solutions, Inc. Automatic generation of code for attributes
US9576030B1 (en) 2014-05-07 2017-02-21 Consumerinfo.Com, Inc. Keeping up with the joneses
US10445152B1 (en) 2014-12-19 2019-10-15 Experian Information Solutions, Inc. Systems and methods for dynamic report generation based on automatic modeling of complex data structures
US10678894B2 (en) 2016-08-24 2020-06-09 Experian Information Solutions, Inc. Disambiguation and authentication of device users
CN110383319B (zh) 2017-01-31 2023-05-26 益百利信息解决方案公司 大规模异构数据摄取和用户解析
CN110807028B (zh) * 2018-08-03 2023-07-18 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
US10963434B1 (en) 2018-09-07 2021-03-30 Experian Information Solutions, Inc. Data architecture for supporting multiple search models
US11941065B1 (en) 2019-09-13 2024-03-26 Experian Information Solutions, Inc. Single identifier platform for storing entity data
US11880377B1 (en) 2021-03-26 2024-01-23 Experian Information Solutions, Inc. Systems and methods for entity resolution

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5276872A (en) * 1991-06-25 1994-01-04 Digital Equipment Corporation Concurrency and recovery for index trees with nodal updates using multiple atomic actions by which the trees integrity is preserved during undesired system interruptions
US5404510A (en) * 1992-05-21 1995-04-04 Oracle Corporation Database index design based upon request importance and the reuse and modification of similar existing indexes
JP2583010B2 (ja) * 1993-01-07 1997-02-19 インターナショナル・ビジネス・マシーンズ・コーポレイション 多層インデックス構造におけるローカルインデックステーブル及び大域インデックステーブルの間の一貫性を維持する方法
JP3433803B2 (ja) * 1993-07-07 2003-08-04 ヨーロピアン コンピューター − インダストリー リサーチ センター ゲーエムベーハー データベースの構造
US5651099A (en) * 1995-01-26 1997-07-22 Hewlett-Packard Company Use of a genetic algorithm to optimize memory space
US5765168A (en) * 1996-08-09 1998-06-09 Digital Equipment Corporation Method for maintaining an index

Also Published As

Publication number Publication date
AU2071999A (en) 1999-08-09
WO1999038094A1 (en) 1999-07-29
TR200002119T2 (tr) 2000-12-21
HUP0101298A2 (hu) 2001-08-28
HUP0101298A3 (en) 2003-07-28
NZ505767A (en) 2003-09-26
NO20003759D0 (no) 2000-07-21
EP1049990A4 (en) 2004-09-08
NO20003759L (no) 2000-09-20
CA2319177A1 (en) 1999-07-29
EP1049990A1 (en) 2000-11-08
CN1292901A (zh) 2001-04-25
BR9907227A (pt) 2001-09-04
RU2000122092A (ru) 2002-07-27
AU759360B2 (en) 2003-04-10

Similar Documents

Publication Publication Date Title
JP2002501256A (ja) データベース装置
US6175835B1 (en) Layered index with a basic unbalanced partitioned index that allows a balanced structure of blocks
US6208993B1 (en) Method for organizing directories
US6240418B1 (en) Database apparatus
US5649181A (en) Method and apparatus for indexing database columns with bit vectors
EP1393206B1 (en) Data structure for information systems
US6029170A (en) Hybrid tree array data structure and method
US6035303A (en) Object management system for digital libraries
Krishnan et al. Estimating alphanumeric selectivity in the presence of wildcards
US20040133581A1 (en) Database management system, data structure generating method for database management system, and storage medium therefor
ZA200100187B (en) Value-instance-connectivity computer-implemented database.
US20040015486A1 (en) System and method for storing and retrieving data
JPH10505440A (ja) プログラミング言語−具体的データファイルのsqlベースの操作を可能にするコンピュータベースの情報アクセス方法および装置
US6675173B1 (en) Database apparatus
JP2003505791A (ja) ディレクトリを構成する方法
US7373340B2 (en) Computer implemented method and according computer program product for storing data sets in and retrieving data sets from a data storage system
EP1116137B1 (en) Database, and methods of data storage and retrieval
JP3601719B2 (ja) 相関のあるデータ組み合わせの数え上げ方式
CA2262593C (en) Database apparatus
US8849866B2 (en) Method and computer program product for creating ordered data structure
IL137347A (en) Database apparatus
MXPA00007026A (en) Database apparatus
Helmer Indexing fuzzy data
JPH1011338A (ja) リレーショナル・データベース・システム,該システムへのデータ格納・読み出し方法,およびそのためのプログラムを記録した記録媒体
JP2643850B2 (ja) ファイル処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090414

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090915