JPH09171478A - 改良された索引によるアクセスを使用するデータベース管理システム - Google Patents

改良された索引によるアクセスを使用するデータベース管理システム

Info

Publication number
JPH09171478A
JPH09171478A JP8182656A JP18265696A JPH09171478A JP H09171478 A JPH09171478 A JP H09171478A JP 8182656 A JP8182656 A JP 8182656A JP 18265696 A JP18265696 A JP 18265696A JP H09171478 A JPH09171478 A JP H09171478A
Authority
JP
Japan
Prior art keywords
value
column
predicate
search
computer
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
JP8182656A
Other languages
English (en)
Inventor
Harry A Leslie
ハリー・エイ・レスリー
David W Birdsall
デビッド・ダブリュ・バーズオール
Rohit N Jain
ロヒト・エヌ・ジェイン
Hedieh Yaghmai
ヘディー・ヤグマイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tandem Computers Inc
Original Assignee
Tandem Computers Inc
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 Tandem Computers Inc filed Critical Tandem Computers Inc
Publication of JPH09171478A publication Critical patent/JPH09171478A/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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24547Optimisations to support specific applications; Extensibility of optimisers
    • 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
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24526Internal representations for queries
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching

Abstract

(57)【要約】 【課題】 簡単且つ効率的にデータベースをサーチでき
るようにする。 【解決手段】 各サーチキーは、データベース管理シス
テムのコンパイラでサーチ質問に基づいて作成される一
般表現文から構築される。各キーコラムは他の次元を示
し、レンジおよびINリストは、サーチ質問により明示
することができ、マルチコラム述語値として使用可能で
ある。前記質問で指定されない述語は、関連キーコラム
の最小値および最大値の明示として解釈される。コンパ
イラは、サーチキーを作成するために前記システムのエ
クスキュータによって使用される一般表現を生成する。
コンパイラは、述語を、前記質問表現における各論理和
項に割当てられたクラスタと論理和項番号に関連づける
ことによって、サーチ質問を評価する。エクスキュータ
は、コンパイラからの一般表現を使用し、同じコラム述
語間の矛盾を除去し、述語値および論理和項の冗長性を
除去し、アクセスすべきレコード数を必要最少限に減じ
る。サーチキーは、サーチが属する索引と同順序で生成
される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、リレーショナル
データベース管理システムに関し、改良された索引付き
アクセスによるリレーショナルデータベース管理システ
ムに関する。
【0002】
【従来の技術】ほとんどの従来のリレーショナルデータ
ベース管理システム(DBMS)においては、ユーザが
SQL(structured query language:構造化質問言
語)コマンドのような適当なコマンドを使用して大きな
データベースまたはテーブルに関する質問を行えるよう
にするB−木(B―tree)を使用している。B−木は、
データベースメモリに格納され、1つまたは複数のコラ
ムを有する索引であり、各前記コラムは、該索引におけ
る他の次元を示すものである。前記B−木は、適当な質
問コマンドを介してユーザによって指定される1つまた
は複数のキーを使用して、データベース内のレコードを
サーチすることを可能にする。前記キーは全レコードテ
ーブルの部分集合を定義するので、索引付きサーチは、
ユーザの質問に関するレコードのより小さい部分集合を
読み出すために前記全レコードテーブルをサーチする必
要を無くする。
【0003】理想的には、索引付きアクセスは、ほとん
どの質問に関して、関係するレコードが最小のトランザ
クションコスト(該コストは、前記質問を完了するため
に必要な補助記憶アクセスの等価数のような適当なパラ
メータによって測定される)でアクセスされることを可
能にする。
【0004】
【発明が解決しようとする課題】しかし、ユーザがB−
木の索引構造を使用してDBMSに対して行う多くの質
問は、索引付きアクセス技術を使用して処理できない。
このような場合、全レコードテーブルをサーチしなけれ
ばならないので、時間がかかり、比較的効率が悪い。さ
らに、あるレンジまたは特定の値リスト(INリストと
言う)内の値を指定する場合、1つの索引におけるただ
1つのキーコラムのみが使用可能であるという制約によ
って、サーチすべき合計レコード数を減少できる程度が
相当制限される。
【0005】例えば、コラムa,b,c,d,e,f,
gを有するテーブルT、および、コラムa,b,c,d
を有する対応する索引Iを仮定する。 where a = 10 and b = between 20 and 30 and c = 40 and d = 50 という述語に関するすべてのレコードを選択するよう要
求するユーザの質問は、 begin key : a = 10, b ≧ 20 end key : a = 10, b ≦ 30 という形態のビギン−エンドキーとになる。前記述語は
c = 40,d = 50と指定しているが、キーコラムcおよび
dに関するこれら2つの等号述語は、bについてのレン
ジにより、サーチキーには含まれない。その結果、前記
索引における前記述語に一致するレコードのサーチは、
最も近い(a,b)対を捜すことができることになる
が、精確に所望の(a,b,c,d)値に達することが
できない。言い換えると、前記索引におけるすべてのc
およびdの値が調べられ、所望のcおよびdの値と比較
されなければならない。前記cコラムおよびdコラムに
おけるレコード数によるが、前記索引サーチを行うため
に必要な時間の長さ(従ってコスト)は、よくても、最
適値より長い。
【0006】既存のB−木索引構造のその他の問題点
は、キーコラム述語が不明(未指定)の場合に課される
制約である。例えば、 where a = 10 and c = 40 and d = 50 という述語を仮定する。従来のキー構築方法によって構
成されるビギン−エンドキーは、 begin key : a = 10 end key : a = 10 のようになる。この場合、コラムbに関する述語が無い
ことによって、コラムcおよびdに関する述語の使用が
阻止される。その結果、索引テーブルがすべての値
(b,c,d)についてサーチされなければならない。
キー述語が指定されていないコラムが分割キーの1番目
のコラムがである場合、特別な情況が発生する。
【0007】例えば、 where a = 30 and c = 40 and d = 50 という述語を仮定する。分割キーの1番目のコラムaに
関する述語が指定されていないので、従来のキー構築方
法は、これらの述語からサーチキーを構築することがで
きない。その結果、前記DBMSによって構成される質
問実行案は、全面的なテーブルスキャンを行わなければ
ならない。
【0008】前記サーチ質問にIN述語が介在している
場合、前記B−木索引構造にその他の問題点が発生す
る。例えば、 where a = 10 and b in (20,30) and c = 40 and d = 50 という述語を仮定する。コラムbに関する前記IN述語
は、1組の値との同等比較を指定する。
【0009】従来のキー構築方法は、1組の複数の値で
はなくまさに1つの値に関する同等比較を行うことがで
きる。従って、前記IN述語はキーに使用できない。そ
の結果、サーチキーはコラムaのみを含み、 begin key : a = 10 end key : a = 10 となる。コラムbに関する使用可能なキー述語が無いこ
とによって、コラムcおよびdに関する述語の使用が阻
止される。その結果、コラムb,c,dの完全なサーチ
を行わなければならない。
【0010】質問コマンドの述語に関して論理和標準形
(disjunctive normal form)を強制的に使用することに
よって、B−木索引に基づくDBMSにその他の問題点
が発生する。より詳しくは、例えば、
【数1】 SELECT * FROM T WHERE (a = 5 and ( (b=1 and c IN (2,4,9)) OR (b=8 and c=7)) OR (a between 4 and 6 and ( (b between 8 and 10 and c between 6 and 9) OR (b=9 and c=11) という質問コマンドを仮定する。
【0011】この表現における論理和は次の通りであ
る。
【数2】 (a=5 and b=1 and c IN (2,4,9) OR (a=5 and b=8 and c=7) OR (a≧4 and a≦6 and b≧8 and b≦10 and c≧6 and c≦9) OR (a≧4 and a≦6 and b=9 and c=11) 典型的な従来のDBMSにおいて、質問コマンドに関係
するすべてのレコードのサーチは、1番目の論理和項
(disjunct) から始まる。すべてのこのようなレコード
が見つけられると、2番目の論理和項(disjunct) に関
係するすべてのレコードのサーチが行われ、その後、3
番目の論理和項(disjunct) に関係するすべてのレコー
ドのサーチが行われ、4番目の論理和項(disjunct) に
関係するすべてのレコードのサーチで終わる。3番目の
論理和項に関係するレコードのサーチ時に2番目の論理
和項に関係する1つのレコードが再度アクセスされると
いう事実により、この技術は効率的ではない。上記の例
はただ1回だけ同一レコードの反復読出しを必要とする
が、実際には、比較的大きなデータベースのレコードに
アクセスする場合、比較的多数の反復読出しが日常的に
発生する。
【0012】この反復レコードの問題をさらに大きくす
るのは、当該システムによって課される意味的な制約の
ために、アクセス中に1つのレコードがユーザに対して
2度戻され得ないという事実である。従って、ほとんど
のDBMSは、アクセス中に読み出されたレコードのテ
ーブルを作成しなければならず、これは、サーチ質問に
よって指定されたレコード数に応じて、相当量のメモリ
スペースを必要とする可能性がある。反復レコードアク
セスの問題は、質問コマンドにおける相反する述語の出
現によって大きくなることがある。ユーザが相反する述
語を有する質問コマンドを提起することはほとんどない
が、隠された述語を有するビューが使用される場合、ま
たは、ホスト変数が固定値と組合わせて使用される場
合、または、ソフトウエアによって質問が発生される場
合、上記問題点は頻繁に発生する可能性がある。
【0013】例えば、 Create view VT as SELECT * from where b IN (3,9,1
6,25,36) というビューVTが存在すると仮定する。また、ユーザ質
問が、 であると仮定する。
【0014】この例において、20〜30のレンジのビ
ューには1つのb値しか存在していない場合でも、ユー
ザは、意識することなく、20〜30のレンジにあるビ
ューにおけるbのすべての値をサーチするよう前記DB
MSに対して要求している。その結果、20〜30のレ
ンジのすべてのb値がアクセスされ、30個のレコード
が不必要になる(10個の不必要なb値×3個のc
値)。この発明は、上述の点に鑑みてなされたもので、
効率的且つ簡単に、データベースをサーチする方法およ
びシステムを提供しようとするものである。
【0015】
【課題を解決するための手段】この発明は、リレーショ
ナルデータベース管理システムにおいて、ある特定のサ
ーチにおいてアクセスされるレコードの合計数を実質的
に減らすことができ、サーチキーの多数のコラムに関す
る複数のレンジおよびINリストを可能にし、1つまた
は複数のコラム値が無い場合でも使用可能なサーチキー
を構築でき、且つ、前記サーチキーの個々のコラムを該
キーが属するテーブルと同様に配列することが可能な、
改良された索引付きコードアクセスを実現する方法およ
びシステムを提供する。
【0016】この発明は、オプティマイザおよびDBM
Sエクスキュータと称するDBMSコンパイラの一部分
によって実行される。前記オプティマイザは、先ずサー
チ質問を評価し、前記DBMSエクスキュータのための
キー表現を生成する。該キー表現は、個々のコラムのレ
ンジおよびINリスト述語を含むマルチコラムキーを記
述するものである。前記オプティマイザは、一般的なO
R最適化を実行し、質問文の述語を、クラスタおよび論
理和項番号(disjunct numbers)に関連づける。このオプ
ティマイザにおける論理和項番号の使用によって、この
発明によれば、述語および論理和項(disjunct)のための
メモリスペース使用量を最少化することができる。とい
うのは、述語が繰り返される代りに、各述語が現れる論
理和項番号のリストが作成されるからである。述語は、
共通する1組の論理和項番号を共有してよい。INリス
トは、論理和項の数を最少化できるよう、単一の論理和
として処理される。なお、クラスタは、同じコラムにお
ける同等の述語の集まりである。
【0017】前記DBMSエクスキュータは、データベ
ーステーブル、ビューまたはカタログに対してコンパイ
ルされた質問文を実行するDBMSシステムライブラリ
における1組の手続きから構成される。前記DBMSエ
クスキュータは、GEM−木と称されるデータ構造を作
成するために、前記DBMSコンパイラのオプティマイ
ザ部分によって供給されるキー表現を評価する。各GE
M−木は、レンジおよび真値を記述するキーコラムに関
する情報、各コラムについて定義された述語、比較演算
子およびその他の情報を含んでいる。前記DBMSエク
スキュータで実行されるGEM−木構築処理は、各コラ
ムにおける順序(すなわち、昇順または降大順)を維持
しながら、レンジを組合わせ、キーコラムにおける重複
を除去することを含むものである。前記DBMSエクス
キュータによってGEM−木が構築されると、必要なテ
ーブルからデータを読み出すための実際のキーを構築す
るために、前記木から値が取り出される。
【0018】前記GEM−木を構築する処理において、
前記DBMSエクスキュータは、個々のレコードがただ
一度読み出されるよう、異なる論理和項からの値を分類
し、1つのコラムに畳込む。これにより、すべての重複
した値が除去されるので、サーチ案を実行するためのコ
ストをかなり節約できる。さらに、多数の論理和項が存
在している場合でも、各索引からのデータが索引順に読
み出されるよう複数のキーが構築される。これは、個々
のレコードのアクセスを容易にする。
【0019】前記DBMSエクスキュータにおいて各コ
ラムごとに論理和項番号を使用することによって、同じ
レコードが決して二度読みされることのないような、多
数のコラム論理和項の組み立てが実現される。これは、
前記DBMSエクスキュータによる値の分類および畳込
みを容易にする。
【0020】また、前記DBMSエクスキュータは、1
つの論理和項におけるそのコラムに関するすべての述語
から、1つの論理和項に関するすべての述語の極小組を
捜し出す。これは、単一のコラムに相反する述語が多数
存在する場合に行われる。前記すべての述語の極小組
は、述語の組合わせに必要な値の極小組を求めることに
よって決定される。この技術が前記異なる論理和項から
の値を分類し1つのコラムに畳込む処理と共に行われる
ことによって、最少量のデータのみを読み出せばよいこ
とになる。
【0021】前記GEM−木を構築する処理において、
前記DBMSエクスキュータは、指定されていないキ
ー、および、前記DBMSコンパイラのオプティマイザ
部分によって供給される一般化されたキー表現における
レンジおよびINリストの指定を認識する。これは、索
引の多次元のビューを可能にし、効率的なアクセスを可
能にする。
【0022】
【発明の実施の形態】本発明の本質と利点をよく理解す
るために、以下、添付図面を参照してこの発明の一実施
の形態を詳細に説明する。図1には、格納されたデータ
ベースにデータを格納し、該データにユーザがアクセス
できるようにするコンピュータシステム100が示され
ている。該システム100は、ローカルエリアネットワ
ーク媒体および広域ネットワーク媒体108によって相
互接続された多数のコンピュータ102、104、10
6を有する分散型コンピュータシステムである。前記シ
ステム100は、少なくとも1つのデータベースサーバ
102と、多数のユーザワークステーションコンピュー
タまたは端末装置104、106を備えている。
【0023】システムに極めて大きなデータベースが格
納される場合、該データベースのテーブルは分割され、
該データベースの異なる分割部分は、しばしば、異なる
CPUによって制御される異なる物理的なディスクに格
納されることになる。しかし、ユーザワークステーショ
ンコンピュータ104、106から見ると、前記データ
ベースサーバ102は単一の構成要素のように見える。
データベースの分割は当業者に周知の技術である。
【0024】図1に示すように、データベースサーバ1
02は、CPU110と、主メモリ112と、前記ユー
ザワークステーションコンピュータ104、106およ
びこの発明とは関係のない他のシステム資源との通信を
行うための通信インターフェース114とを備えてい
る。該データベースサーバ102における補助メモリ
(典型的には、磁気ディスク記憶装置)116は、デー
タベーステーブル120、データベース索引122、ユ
ーザおよびオペレータが前記データベーステーブルにア
クセスできるようにするデータベース管理システム(D
BMS)123と、前記データベーステーブル120に
関するスキーマ情報、および、前記データベーステーブ
ル120にアクセスするために使用されるプログラムの
ためのディレクトリ情報を格納する1つまたは複数のカ
タログ126を格納している。前記DBMS123は、
SQL(structured query language)エクスキュータ
124と、SQLカタログマネージャー125およびS
QLコマンドインタプリタのようなその他のデータベー
ス管理サブシステムとを含んでいる。さらに、前記DB
MS123は、ソースコードデータベース質問プログラ
ム130をコンパイル済み実行案132にコンパイルす
るSQLコンパイラ128を含んでいる。該SQLコン
パイラ128は、指定されたSQL文をコンパイルして
実行案を生成するためにも使用可能である。
【0025】エンドユーザワークステーションコンピュ
ータ104、106は、典型的には、CPU140と、
主メモリ142と、前記データベースインターフェース
102およびその他のシステム資源との通信を行うため
の通信インターフェース144と、補助メモリ146
と、ユーザインターフェース148とを備えている。該
ユーザインターフェース148は、典型的にはキーボー
ドと表示装置とを備え、多くのものは、位置決め装置や
プリンタのような付加的な資源を備えている。前記補助
メモリ146は、データベースサーバ102にアクセス
するために使用される通信ソフトウエアなどのコンピュ
ータプログラムを格納するために使用される。いくつか
のエンドユーザワークステーションコンピュータ106
は、補助メモリ146を備えていない“無言”端末装置
であってよく、データベースサーバ102またはファイ
ルサーバ(図示せず)などのサーバコンピュータから主
メモリ142にダウンロードされたソフトウエアのみを
実行する。
【0026】〔用語解説〕この明細書で使用される用語
を説明すると次のようである。 SQL:“構造化質問言語”を意味する。ほとんどの商
用的なデータベースは、SQLを使用している。ここ
で、SQLを使用するデータベースのデータにアクセス
するプログラムを、“SQLプログラム”と言う。ま
た、データベースのデータにアクセスするSQLプログ
ラムにおける各文を、“SQL文”と言う。1つのSQ
Lプログラムは、1つまたは複数のSQL文を含むもの
である。
【0027】実行案:データベースのデータに効率的に
アクセスする手法を指定する中間形態にコンパイルされ
たSQL文。 実行特徴:その意味(すなわち、操作性)に影響を与え
ない実行案の特徴。一例として、案の性能およびその資
源消費がある。
【0028】オブジェクト:オブジェクトとは、単一の
構造としてプログラムによってアクセスされるファイ
ル、データベーステーブルまたはその他のカプセル化さ
れたコンピュータ資源のことである。好ましい実施の形
態において、オブジェクトはデータベーステーブルであ
る。この発明の他の実施の形態において、オブジェクト
は、有効性が確認された指定された方法(すなわち、プ
ログラム)を介してエンドユーザがアクセスするその他
のカプセル化されたコンピュータ資源であってもよい。
【0029】DDL文:data definition language sta
tementすなわちデータ定義言語文。該DDL文は、デー
タベースオブジェクト(例えば、テーブルおよび索引)
を作成するため、および、データベースオブジェクトを
変形するために使用される。定義名:実行案によってア
クセスされるべきオブジェクトを示すオブジェクトハン
ドルまたはリンク。SQL文は、直接的にオブジェクト
を参照する代りに、定義名によってオブジェクトを参照
することができる。こうして、前記プログラムを変更す
る必要なしに、オペレータは、単に、プログラムを実行
する前に新たなオブジェクトを指示するよう定義名を変
更するだけで、前記プログラムがコンパイル時オブジェ
クトとは異なるオブジェクト組にアクセスさせることが
できる。
【0030】ソースコードプログラム/文:各実行案ご
とに、これに対応するソースコードSQL文が存在す
る。ソースコードプログラムは、ここではまとめて“コ
ンパイル済みプログラム”と言う1組の実行案に対応す
る1組のSQL文である。 SQLコンパイル:SQL文プログラムすなわちSQL
プログラムをコンパイルする動作。そのコンパイルは、
当該プログラムのSQL文に関する新たな実行案を生成
するために、例えばTandemの“SQLCOMP(登録商標)”
のようなSQLコンパイラを実行することによって行わ
れる“静的”コンパイルであってよい。SQLコンパイ
ルは、また、プログラムが無効であると記すことによっ
て、または、SQL文と該文によって参照されるオブジ
ェクトとの時刻印(タイムスタンプ)不一致によって開
始される、自動的な再コンパイルのような動的コンパイ
ルであってもよい。
【0031】エンドユーザ:ワークステーションを使用
して、データベースサーバにおけるデータベースにアク
セスする人。典型的には、エンドユーザは、データベー
ステーブルの構造を変形する権限を有さない。 オペレータ:データベーステーブルの構造を変形し、S
QLソースコードプログラムのコンパイルを手操作で開
始する権限およびアクセス権を有する人。 ビュー:物理的な存在を伴わない関係に関する論理的な
定義、すなわち、仮想リレーション。ビューによって示
されるデータは、ベーステーブルから得られる。
【0032】GEM:genral expression method(一般
的表現法)の頭文字語であって、この発明のいくつかの
特徴を示すために使用される。 MDAM:multiーdimensional access method(多次元
アクセス法)の頭文字語であって、この発明を示す代替
語。
【0033】〔データベースサーバの説明〕図2は、前
記データベースサーバ102に格納されたデータ構造と
プログラムとの間の相互関係のいくつかを示すものであ
る。ソースコードプログラム130―1は、SQLソー
スコード文160のシーケンス、および、その他の非S
QLソースコード文(例えば、割当て、および、プログ
ラムフロー文)を含んでいる。SQLコンパイラ128
は、SQLソースコード文を、ここでは実行案と言うコ
ンパイルされた文162のシーケンスを有するコンパイ
ル済みプログラム132―1にコンパイルする。各前記
ソースコード文160は、対応する実行案162を有す
る。前記コンパイル済みプログラム132は、後述する
ように、SQLエクスキュータ124によって使用され
る1組の実行時(ランタイム)特性を格納する“ファイ
ルラベル”164(すなわち、プログラムにおけるデー
タ構造)を含んでいる。さらに、各実行案162は、コ
ンパイルされた質問に加えて、該実行案によってアクセ
スされるべき各データベースオブジェクトごとに時刻印
166および1組のスキーマ情報170を含んでいる。
【0034】各データベーステーブルまたはデータベー
スオブジェクト120は、ここでは“オブジェクトヘッ
ダ”と言うディスクラベル180と、オブジェクト本体
182を含んでいる。前記オブジェクトヘッダ180
は、データベースオブジェクト120の構造、識別およ
びその他の特徴についての情報を格納しており、一方、
オブジェクト本体182は、該データベースオブジェク
トのデータ内容を格納している。前記オブジェクトヘッ
ダ180は、オブジェクト名フィールド184と、該デ
ータベースオブジェクト120におけるデータの構造お
よびその他の特徴を定義するオブジェクトスキーマ18
6とを含んでいる。前記データベースオブジェクトの
“ディスクラベル”180に格納されたオブジェクトス
キーマ186は、該データベーステーブルに関してSQ
Lカタログ126に格納されたカタログ情報の圧縮され
た表現であり、従って、データ属性定義188、時刻印
190およびその他のオブジェクトパラメータ192を
含んでいる。
【0035】前記カタログ126自体は、前記データベ
ースサーバに格納されたデータベースオブジェクト(例
えば、テーブルおよび索引)についての情報、および、
前記データベースサーバに格納されたプログラムについ
ての情報を格納する1組のテーブルを有するデータベー
スである。このカタログ126の構造については、図3
〜図11を参照して後で詳述する。
【0036】上述したように、前記コンパイラ128
は、SQLプログラム130を、1組の実行案162を
有するコンパイル済みSQLプログラム132にコンパ
イルするものである。該コンパイラ128の動作は、手
操作によって入力されるコンパイラコマンド194、ま
たは、無効または動作不能な実行案を実行する場合に前
記SQLエクスキュータ124によって生成される再コ
ンパイルコマンド196によって開始される。手操作に
よって開始されるコンパイルは、ユーザまたはオペレー
タによって入力されるコマンド194、または、より普
通には、データ定義およびコンパイラコマンドのシーケ
ンスを含むユーザまたはオペレータによって開始される
スクリプトによって制御される。
【0037】前記SQLエクスキュータ124は、エン
ドユーザおよびオペレータの実行時コマンド198に応
答する。このような実行時コマンド198は、例えばデ
ータベーステーブルからデータを読出し、データベース
テーブルにデータを付加するために、エンドユーザによ
って開始される標準的なコマンドを含む。また、前記実
行時コマンド198は、データベーステーブルを作成
し、既存のデータベーステーブルの構造を変形するため
のDDL(data definition language)文を含んでい
る。しかし、これらの実行時コマンド198を使用する
権限は、通常、ここではオペレータと呼ばれる人に制限
されている。図1のシステム動作をより詳しく理解する
ために、1988年7月発行の“TANDEM SYSTEMS REVIE
W”第4巻、No.2を参照されたし。
【0038】〔カタログおよびディスクラベルのデータ
構造〕図3において、好ましい実施の形態におけるカタ
ログ126は、1つデータベースサーバまたは1組のデ
ータベースサーバにおけるデータベーステーブルおよび
プログラムを示す1組のテーブル200〜220で構成
されている。図4において、“TABLES”テーブル200
は、前記データベースサーバにおける各データベーステ
ーブルごとに、1つのレコード222を含んでいる。各
レコード222は、次のようなフィールドを有する:前
記データベーステーブルの名前を示すTableNameフィー
ルド224;参照されたデータベーステーブルが真のデ
ータベーステーブルか、または、SQL文によってデー
タベーステーブルと同様に参照される1つまたは複数の
データベーステーブルの部分集合である“ビュー”であ
るかをTableTypeフィールド225;
【0039】当該テーブル(またはビュー)における異
なるコラムの数を示すColumCountフィールド226;当
該テーブル(またはビュー)が最初に作成された時を示
す時刻印値であるCreateTimeフィールド227;前記テ
ーブル(またはビュー)が最後に変更された時を示す時
刻印値であるRedeTimeフィールド228;当該テーブル
についての類似チェックが許可される場合に“イネーブ
ル”を示し、そうでない場合に“ディスエーブル”を示
すフラグであるSimilarityCheckフィールド229;そ
の他のパラメータ230はここでは関係ない。図5にお
いて、“BASETABLES”テーブル202は、前記データベ
ースサーバにおける各データベーステーブルごとに1つ
のレコード232を含んでいる。各前記レコード232
は、次のようなフィールドを有する:
【0040】前記データベーステーブルの名前を示すTa
bleNameフィールド234;参照されたデータベーステ
ーブルが格納されているディスクファイルの名前を示す
FileNameフィールド235;当該テーブルにおけるロー
の数を示すRowCountフィールド236;各ローの最大サ
イズ(バイトまたはワード単位)を示すRowSizeフィー
ルド237;前記ファイルが有効な定義、正しいファイ
ルラベルおよびカタログエントリを有するか否かを示す
フラグ値(イエスまたはノー)であるValidDefフィール
ド238;当該テーブルにおけるデータがこのテーブル
の索引に一致し、該テーブルに関する制限を満たすか否
かを示すフラグ値(イエスまたはノー)であるValidDat
aフィールド239;
【0041】当該テーブルが定義された制限を有するか
否かを示すフラグ値(イエスまたはノー)であるConstr
aintsフィールド240;その他のパラメータ241は
ここでは関係ない。図6において、“COLUMNS”テーブ
ル204は、前記データベースサーバにおける各データ
ベーステーブルごとに1つのレコード252を含んでい
る。各前記レコード252は、1つのデータベーステー
ブルコラムの特徴を示すもので、次のようなフィールド
を有する:このレコード252に対応するコラムが含ま
れているデータベーステーブルの名前を示すTableName
フィールド254;当該テーブルの各ローにおけるコラ
ムの位置を示す数であって、1番目のコラムはコラムナ
ンバ0を有するColumnNumberフィールド255;
【0042】当該コラムのSQL識別子とも言うコラム
名を示すColumnNameフィールド256;当該コラムにお
けるデータのサイズ(バイトまたはワード単位)を示す
ColumnSizeフィールド257;当該テーブルまたはテー
ブル部分に関する前記コラムの特有のデータエントリの
数を示すUniqueEntryCountフィールド258;当該デー
タベーステーブルのコラムから抽出されたデータを印刷
する場合に、デフォルトコラムヘッディングとして使用
されるテキスト列であるHeadingTextフィールド25
9;その他のパラメータ260はここでは関係ない。
【0043】図7において、“INDEXES”テーブル21
0は、前記データベースサーバにおける各データベース
索引ごとに1つのレコード262を含んでいる。各前記
レコード262は、次のようなフィールドを有する:デ
ータベーステーブルの名前を示すTableNameフィールド
263;当該索引の名前を示すIndexNameフィールド2
64;当該索引に使用される主要キーコラムを含むコラ
ムの数を示すColCountフィールド265;当該データベ
ーステーブルに関する主要キー索引である場合、キータ
ッグを指定するKeytagフィールド266;当該索引の定
義が有効であるか否かを示すフラグ値(イエスまたはノ
ー)であるValidDefフィールド267;当該索引が有効
データを有するか否かを示すフラグ値(イエスまたはノ
ー)であるValidDataフィールド268;前記索引にお
けるすべてのエントリがユニークなものか否かを示すフ
ラグ値(イエスまたはノー)であるUniqueValueフィー
ルド269;当該索引における索引レベルの数を示すIn
dexLevelsフィールド270;各索引レコードのサイズ
を示すRowSize271;当該索引を含んだファイルを示
すFileName272;ここでは、その他のパラメータ27
3は関係ない。
【0044】図8において、“KEYS”テーブル212
は、主要キーの各コラムごとに1つのレコード282を
有すると共に、前記データベースサーバにおける各デー
タベーステーブルごとに1つの索引を有する。各前記レ
コード282は、1つのキーまたは索引に関するテーブ
ルコラムを示し、次のようなフィールドを有する:当該
索引の名前を示すIndexNameフィールド283;当該索
引ローにおけるコラムの位置を示すKeySequenceNumber
フィールド284;各テーブルローにおけるコラムの位
置を示すTableColumnNumberフィールド285;当該コ
ラムが昇順または降順のコラムかを示すOrderingフィー
ルド286。
【0045】図9において、“FILES”テーブル206
は、前記データベースサーバにおける各データベーステ
ーブルおよび索引ごとに1つのレコード292を有す
る。各前記レコード292は、1つのデータベースファ
イルの特徴を示し、次のようなフィールドを有する:デ
ータベースファイルの名前を示し、ベーステーブルレコ
ード232のFileNameエントリ235または索引レコー
ド262のエントリ272に対応するFileNameフィール
ド294;当該ファイル内におけるデータがどのように
して連続しているか(例えば、エントリ連続、キー連続
など)を示すFileTypeフィールド295;当該ファイル
が格納されている補助メモリブロックのサイズ(例え
ば、512,1024,2048または4096バイ
ト)を示すBlockSizeフィールド296;
【0046】当該ファイルが分割されているか否かを示
すフラグ値(イエスまたはノー)であるPartitionedフ
ィールド297;当該ファイルにおけるレコードの最大
長さを示すRecordSizeフィールド298;当該ファイル
のデータページおよび索引ページのデータが圧縮されて
いるか否かを示すフラグ値(イエスまたはノー)である
CompressionInfoフィールド299;当該ファイルにお
ける主要レンジおよび補助レンジのサイズ、ならびに、
該ファイルにおけるレンジの最大数を示すExtensionInf
oフィールド299;ここでは、その他のパラメータ3
01は関係ない。ファイルが分割される場合、分割テー
ブル214は、該ファイルの各分割部分ごとに、分割部
分名およびカタログエントリを示す1つのレコード、お
よび、該ファイルの主要キーにおける各コラムのスター
ト値を含むことになる。
【0047】図10において、“PROGRAMS”テーブル2
08は、前記データベースサーバにおける各登録された
プログラムごとに1つのレコード312を有する。各前
記レコード312は、1つのプログラムの特徴を示し、
次のようなフィールドを含んでいる。該プログラムの名
前を示すProgramNameフィールド314;該プログラム
の所有者を示すOwnerIDフィールド315;該プログラ
ムが最初にSQLコンパイルされた時を示す時刻印値で
あるCreateTimeフィールド316;該プログラムが最後
にコンパイルされた時を示す時刻印値であるRecompileT
imeフィールド317;
【0048】該プログラムが有効か否かを示すフラグ値
(イエスまたはノー)であるValidフィールド318;
必要な場合、当該プログラムの自動的な再コンパイルが
実行時に可能か否かを示すフラグ値(イエスまたはノ
ー)であるAutoCompileフィールド319;後で詳述す
るように、“All”または“OnDemand”に設定され、(A
utoCompileパラメータおよびCheckModeパラメータと共
に)該プログラム内のプログラムおよび文が再コンパイ
ルされる時を制御するモード値であるRecompileModeフ
ィールド320;“InvalidProgram”,“InvalidPlan
s”または“InoperableProgram”に設定され、(AutoCo
mpileパラメータおよびRecompileModeパラメータと共
に)該プログラム内のプログラムおよび文が再コンパイ
ルされる時を制御するモード値であるCheckModeフィー
ルド321;
【0049】コンパイル済みプログラムが該プログラム
のコンパイルされた文ごとに類似情報を有するか否かを
示すフラグ値(イエスまたはノー)であるSimilarityIn
fo322;ここでは、各文ごとの類似情報は、その文に
よってアクセスされるデータベーステーブルに関するス
キーマの部分集合からなる。その他のパラメータ323
はここでは関係ない。
【0050】さらに、図11において、“USAGES”テー
ブル220は、1つのオブジェクトの他のオブジェクト
による使用ごとに1つのレコード330を含んでいる。
各前記レコード330は、データベーステーブルを使用
する各プログラムごとにその関係を示し、次のようなフ
ィールドを有する:“使用される方の”オブジェクトの
名前を示し、この明細書では、データベーステーブルの
テーブル名であるUsedObjectNameフィールド332;前
記使用される方のオブジェクトの種類を示し、この場合
“テーブル”であるUsedObjectTypeフィールド334;
使用される方のオブジェクトに関する他の定義された種
類は“ビュー”および“索引”である。使用する方のオ
ブジェクトが前記使用される方のオブジェクトに依存し
ている場合にイネーブル状態にされるフラグであるRela
tionshipTypeフィールド336;
【0051】前記使用する方のオブジェクトの名前を示
し、この明細書では、プログラムの名前であるUsingObj
ectNameフィールド337;前記使用する方のオブジェ
クトの種類を示し、この明細書では、プログラムである
UsingObjectTypeフィールド338;前記使用する方の
オブジェクトに関する他の定義された種類は“ビュー”
および“索引”である。その他のパラメータ339はこ
こでは関係ない。
【0052】この発明を実施するために使用される図1
のシステムの主要な構成要素は、オプティマイザおよび
SQLエクスキュータ124と称するSQLコンパイラ
128の一部分である。前記オプティマイザは、前記S
QLコンパイラ128において、最初にサーチ質問を評
価し、SQLエクスキュータ124のためのキー表現を
生成する処理要素である。前記キー表現は、個々のコラ
ムに関するレンジおよびINリスト述語を含む、マルチ
コラムキーを記述する。前記オプティマイザは、後述の
付録Aで説明されたやり方で、一般的な論理和(OR)
最適化を実行し、述語をクラスタおよび論理和項番号
(disjunct numbers)に関連づける。
【0053】前記オプティマイザにおける論理和項番号
の使用によって、この発明は、前記述語および論理和項
(disjunct)のためのメモリスペース使用量を最少化す
る。より詳しくは、従来のコンパイラにおいては、サー
チ質問を論理和標準形に変換する処理では、述語が、該
述語が現れるすべての論理和項について繰り返されるこ
とを必要とする。しかし、この発明においては、述語が
繰り返される代りに、各述語が現れる論理和項のリスト
が、付録Aに記載された方法で作成される。
【0054】さらに、多くの述語は、共通の1組の論理
和項番号を共用する。この発明の他の利点は、論理和項
の数を最少化するために、INリストを単一の論理和と
して処理することに在る。INリストは、まとめて論理
和処理(ORed)される同一のコラムの単一の述語のリ
ストを明示する(specify)簡潔な方法である。このまと
めて論理和処理される同一のコラムの述語のリストは、
単一の論理和項として処理される。
【0055】前記SQLエクスキュータ124は、デー
タベーステーブル、ビューまたはデータベースカタログ
に対して、コンパイル済みのSQL文を実行する、シス
テムライブラリにおける1組の処理からなる。前記SQ
Lエクスキュータ124は、GEM−木と称するデータ
構造を作成するために、前記SQLコンパイラ128の
オプティマイザデータベースによって供給されるキー表
現を評価する。各GEM−木は、レンジおよび真値を記
述するキーコラムに関する情報、各コラムについて定義
された述語、比較演算子およびその他の情報を含んでい
る。前記SQLエクスキュータ124において実行され
るGEM−木の構築処理は、各コラムの順序(すなわ
ち、昇順または降順)を保持しながら、レンジを組合わ
せ、キーコラムにおける重複を除去することを含む。前
記SQLエクスキュータ124によってGEM−木が構
築された後、必要なテーブルからデータを読み出すため
の実際のキーを構築するために、前記木から値が読み出
される。このように、GEM−木を構築し、テーブルか
らデータを読み出すための実際のキーを構築する前記S
QLエクスキュータ124によるGEM木構築方法は、
後述の付録Bにおいて説明されている。
【0056】前記GEM木を構築する方法において、前
記SQLエクスキュータ124は、個々のレコードが1
度だけ読み出されるよう、異なる論理和項からの値を分
類し、1つのコラムに畳込む。すべての重複した値が除
去されるので、これは、サーチ案を実行する上でかなり
のコスト節約になる。さらに、多数の論理和項が存在し
ている場合でも、各索引のデータが索引順に読み出され
るよう前記キーが構築され、これは、個々のレコードの
アクセスを容易にする。
【0057】前記SQLエクスキュータ124において
各コラムごとに論理和項番号を使用することによって、
同一のレコードが二度読み出しされる必要のないよう、
多数のコラム論理和項の畳み込みが可能になる。これ
は、前記SQLエクスキュータ124による値の分類お
よび畳込みを容易にする。また、前記SQLエクスキュ
ータ124は、1つの論理和項に関するすべての述語の
極小組を、1つの論理和項におけるそのコラムに関する
すべての述語の中から見つけ出す。これは、単一のコラ
ムについて相反する多数の述語が存在している場合に生
じる。前記SQLエクスキュータ124は、述語の組合
わせに必要な値の極小組を見つけることによって、すべ
ての述語の極小組を求める。これは、データの不必要な
読み出しを防止する。異なる論理和項からの値を分類し
畳込むことによって、必要最少量のデータが読み出され
ることを可能にする。
【0058】GEM木を構築する処理において、前記S
QLエクスキュータ124は、前記SQLコンパイラ1
28のオプティマイザ部によって供給される一般化され
たキー表現における、指定されていないキーと、レンジ
およびINリストの明示を認識する。これは、索引の多
次元のビューを可能にし、且つ、ユーザが純粋に分割目
的で索引の始めのコラムを定義した場合でも効率的なア
クセスを可能にする。上記特徴の一例は次のようであ
る。
【0059】〔介在するレンジ〕 WHERE a=10 AND b between 20 and 30 AND c=40 AND d=50 という述語を含むユーザサーチ質問を仮定する。従来の
システムにおいて、コラムcおよびdにおける述語は、
bに関する介在するレンジ述語により、キーとして使用
できない。この発明は、次のようにして、4つのキーコ
ラムのすべての使用を可能にする。
【0060】レンジ述語は、該レンジのコラムのすべて
の値を実行することによって、前記SQLエクスキュー
タ124において処理される。20〜30のbの値が
(20、23、25、30)であると仮定する。前記S
QLエクスキュータ124は、先ず、 a=10、b=20、c=40、d=50 についてキーによるアクセスを実行する。前記SQLエ
クスキュータ124がこれらのキーコラムに関するすべ
てのレコードを受け取ると、該エクスキュータ124
は、ファイルシステムに対して、23であるbの次の値
をリクエストする。次に、a=10、b=23; c=40、d=50のよ
うに、この値23はbのキー値として代入される。これ
らのレコードが読み出されると、bの次の値(すなわ
ち、25)が選択される。
【0061】〔指定されていないキー述語〕 WHERE b between 20 and 30 AND c=40 AND d=50 という述語を含むユーザサーチ質問を仮定する。この場
合、キーコラムaは指定されていないので、従来のシス
テムは、この索引をキーによるアクセスに使用できな
い。しかし、この発明によると、コラムaの指定されて
いない述語は、MIN_VALUEからMAX_VALUEまでの暗黙のレ
ンジ(ゼロを含む)として処理される。前記SQLエク
スキュータ124は、先ず、前記ファイルシステムに対
してコラムaの1番目の値を要求し、該値をビギン・キ
ー値に代入する。
【0062】ここで、コラムaの値が1から100まで
のすべての値を含むものと仮定する。前記SQLエクス
キュータ124は、先ず、 a=1、b=20、c=40、d=50 の値を使用してキーによるアクセスを行う。この1組の
値に関するレコードを読み出した後、前記SQLエクス
キュータ124は、次のようにコラムbを残りの3つの
値に変える。 a=1、b=23、c=40、d=50 a=1、b=25、c=40、d=50 a=1、b=30、c=40、d=50 その後、前記SQLエクスキュータ124は、前記ファ
イルシステムからコラムaの次の値を得て、コラムbの
上記値を繰り返す。 a=2、b=20、c=40、d=50 a=2、b=23、c=40、d=50 等々である。その結果、合計400回のアクセスとな
る。
【0063】〔INリスト〕 WHERE b between 20 and 30 AND c IN(40、100、150) AND d=50 という述語を含むユーザサーチ質問を仮定する。この場
合、コラムaおよびコラムbは、上述した指定されてい
ないキー述語と同様に処理される。さらに、コラムcの
値が含まれている。前記SQLエクスキュータ124
は、コラムa、b、cについて与えられたすべての値を
実行する。しかし、コラムcの3つの値が前記INリス
トによって明示されているので、前記SQLエクスキュ
ータ124は、これらの値を直接に使用できる(そし
て、前記ファイルシステムに対してこれらの値を要求す
る必要がない)。
【0064】〔相反する述語の除去〕 SELECT * from T WHERE b IN(3,9,16,25,36)のよう
に、ビューVTを作成する。 SELECT * from VT WHERE b between 20 and 30 AND c IN(40、100、150) AND d=50 というユーザ質問を仮定する。この質問におけるコラム
bに関する唯一の有効な値は25である。前記SQLエ
クスキュータ124は、コラムbに関するすべての述語
の和を求め、25という値のみが両組に存在することを
認識し、その結果、コラムbに関する該値のみがレコー
ド読み出しのために使用されることになる。
【0065】〔一般的論理和最適化〕上記のように、述
語を論理和標準形における異なる述語に関連づけること
によって(1ユニットとして処理されるINリストを除
いて)、一般的論理和最適化が実現される。外部レベル
に論理和(ORs)のみが存在する場合、述語は論理和
標準形である。例えば、
【数3】 SELECT* FROM T WHERE (a = 5 and ( (b=1 and c IN (2,4,9)) OR (b=8 and c=7)) OR (a between 4 and 6 and ( (b between 8 and 10 and c between 6 and 9) OR (b=9 and c=11) という質問コマンドを仮定する。この表現の論理和項
(disjuncts)は下記の通りである。
【数4】 (a=5 and b=1 and c IN (2,4,9) OR (a=5 and b=8 and c=7) OR (a≧4 and a≦6 and b≧8 and b≦10 and c≧6 and c≦9) OR (a≧4 and a≦6 and b=9 and c=11)
【0066】前記SQLエクスキュータ124は、各論
理和項内のすべての相反する述語を除去し、しかる後、
極小組のレコードのみが索引順に読み出されるよう、前
記論理和項間の重複を結合する。この例に関して、次の
ような検索がなされる。 a=4、 b=8 and c≧6 and c≦9 a=4、 b=9 and c≧6 and c≦9 a=4、 b=9、 c=11 a=4、 b=10 and c≧6 and c≦9 a=5、 b=1、 c=2 a=5、 b=1、 c=4 a=5、 b=9、 c=11 a=5、 b=8 and c≧6 and c≦9 a=5、 b=9 and c≧6 and c≦9 a=5、 b=9、 c=11 a=5、 b=10 and c≧6 and c≦9 a=6、 b=8 and c≧6 and c≦9 a=6、 b=9 and c≧6 and c≦9 a=6、 b=9、 c=11 a=6、 b=10 and c≧6 and c≦9
【0067】上記から明らかなように、この発明は、従
来のB−木索引によるアクセス技術に対していくつかの
利点をもたらす。第1に、述語をクラスタに間連づけ、
クラスタを論理和項番号に関連づけることによって、こ
の発明は、大変複雑なユーザサーチ質問の使用を可能に
し、従って、述語が既に論理和標準形で表されている質
問に制限されない。さらに、これらの関連づけ技術の使
用は、同一の述語の数個のコピーを格納する必要を無く
することによって、メモリスペースの実質的な節約を可
能にする。また、ユーザは、多くのキーコラムのレンジ
およびINリストを指定できる、これらのレンジおよび
INリストは、キーを構築する際に観察されることにな
る。同様に、指定されなかったキー述語は、故意にまた
は不注意から省かれたのかに関わらず、使用可能なキー
索引の構築を阻止しない。さらに、異なる論理和項から
の値を分類して畳込み、1つの論理和項のすべての述語
の極小組を求めることによって、サーチキーから同一の
レコードが反復的に読み出されることが防止され(これ
は、既に読み出されたレコードのテーブルを構築する必
要を除去する)、最少量のデータのみが適当な順序で読
み出されることになる。
【0068】以上の説明は、本発明の好ましい実施の形
態の十分かつ完全な開示を提供するものであるが、更に
様々な変形や選択的構成や等価物が有りうることは、当
業者であれば明らかであろう。例えば、上記では本発明
をSQLを使用したDBMSに関して説明してきたが、
その他の質問言語が必要に応じて使用されてもよい。従
って、上述の記述及び説明は本発明を限定するように解
されるべきではなく、本発明は特許請求の範囲によって
定義される。
【0069】〔付録A〕〔一般的表現法(GEM)の内
部設計仕様・バージョン1.1〕 目的:ここでは、GEMにとって必要な構造を生成する
ための質問用の構文解析木を、オプティマイザが如何に
して処理するかにつき記述することを試みる。これらの
構造は、見積りのために使用され、GEMを実行するエ
クスキュータによって必要とされる適当な構造を生成す
るために使用される。これは、一例を用いて行うのがベ
ストである。そこで、下記のWHEREクローズについて考
えてみる。
【数5】 ((C=10 and B between 5 and 10) or A in (2, 4, 5)) and ((A=4 and C=5) or (C in (5, 10) and (B=5 or A=2))) エクスキュータがGEMのための上記の述語の組を使用
することができるようにするためには、それらは論理和
標準形(disjunctive normal form)でなければならな
い。これらの述語は、次のフォームで得られる。
【数6】 (A in (2, 4, 5) and A=2 and C in (5, 10)) or (A=2 and B between 5 and 10 and C=10 and C in (5, 10)) or (A in (2, 4, 5) and B=5 and C in (5, 10)) or (B between 5 and 10 and B=5 and C=10 and C in (5, 10)) or (A in (2, 4, 5) and A=4 and C=5) or (A=4 and B between 5 and 10 and C=10 and C=5)
【0070】上記から判るように、これは、INリスト
のフォームで記述される同じコラムについての論理和群
(ORs)の組を持つので、全くの論理和標準形である
わけではない。エクスキュータはそれを処理することが
できる。一緒に論理和化(ORed)されている上記の6組
の述語の各々を、論理和項(disjunct)と称する。いくつ
かの述語、例えば最初の論理和項(disjunct)の中の (A
in (2, 4, 5) and A=2) は、A=2に、変形できること
に気付くであろう。同様に、(B between5 and 10 and B
=5) は、B=5に変形できる。また、Cは同時に=10
と=5になり得ないので、上記の6番目の論理和項をそ
っくり廃棄することができる。その他の多くのそのよう
な変形が可能である。オプティマイザにおいてそれらを
行うことを試みずに、エクスキュータにそれらを任せ
る。エクスキュータは、それに利用可能なパラム(param
s)とホスト変数の値群を持つ。明らかなように、上記の
4番目の論理和項はコラムAについての述語を持ってい
ない。インデックスコラムがA,B,Cであるとする
と、エクスキュータはすべてのコラムについての述語が
GEMを使用する必要がある。これを容易にするため
に、(A≧Low and A≦high)というフォームの指定さ
れていない述語が追加される。オプティマイザはこれを
行わない。オプティマイザは、エクスキュータのための
個々のGEMキー述語を生成しているので、単純なNO
T変換を同様に実行できる。「コラムNOT=バリュ
ー」(ここで、このバリューは、或る定数、リテラル、
パラム、又はホスト変数である)のフォームの述語を、
「コラム<バリュー or コラム>バリュー」に変換でき
る。コラムの選択力が低いとき、これは非常に有益であ
る。
【0071】〔付録B〕 〔3.3.1 GEM−木の構築〕概念的には、GEM−木
の構築は、2つのステップからなる。最初に、単一の論
理和項(disjunct)のためのGEM−木を構築する。それ
から、それらの論理和項を一緒に統合する。これは、各
キーコラム毎に独立に行われる。そのためのプログラム
は、例えば下記のようである。
【0072】
【数7】 In pseudo-code, For each disjunct For each column, from rightmost key to leftmost (*) Build a GEM-tree for that column and that disjunct (Stage 1) If it is empty Exit inner for loop, advancing to next disjunct (**) Else Merge it into the result GEM-tree (Stage 2) End if End for End for
【0073】上記プログラムの意味は、大略、次の通り
である。 「仮のコードにおいて、 各論理和項毎に、 各コラム毎に、最右のキーから最左のキーまで(*)、 そのコラムとその論理和項についてのGEM−木を構築し(ステージ1 )、 もし、それが空ならば、ループのために内側に出て、次の論理和項に進 む(**)。 空でなければ、それを、それまでの結果であるGEM−木に組み入れる (ステージ2)。」
【0074】上記(*)と(**)での論理は、いくら
かの説明に値する。もし、或る与えられた論理和項につ
いての或るコラムのGEM−木が空であれば、それはそ
のコラムについての述語がお互いに正しくないというこ
とを意味する。すなわち、その論理和項についてのコラ
ム述語を満足させる値がない、ということである。そこ
で、その論理和項を全部廃棄することができる。上記
(**)では、その論理和項について調査漏れがないよ
うに、最右キーから最左キーまで、作業する。もし最左
から最右へと作業するならば、その論理和項についての
第1のコラムについてのGEM−木の登録が有るかもし
れない。I/Oに、そのコラムのための値を見つけ出す
ようにさせてよい。それから、次のコラムにトラバース
し、その論理和項についての何の値もないことを見つけ
出す。不必要なI/Oを実行してしまう。一方、右から
左へと作業するならば、コラムにおけるGEM−木の登
録を、トラバースすることのない、右の方に得るであろ
う。これは、不都合がない(多分トラバーサル中に幾分
多くのCPU以外は)ものであり、I/Oのコストが不
要である。以下のようにGEM−木のトラバーサルアル
ゴリズムが説明されれば、これは一層明らかになる。も
し、或る論理和項において、或るキーコラムについての
述語がないならば、それは単に、それらのコラムにおけ
る全ての可能な値が選択されているということを意味す
る。
【0075】〔3.3.2 GEM−木のトラバーサル〕G
EM−木のトラバーサル中において、オリジナルの述語
を満足させるキー値を生成する。全ての可能な値を列挙
する(“密”アルゴリズム)か、または、ベーステーブ
ルにおいて存在していることが知られていない値をスキ
ップする(“粗”アルゴリズム)ようにしてよい。ま
ず、GEM−木のトラバーサル・アルゴリズムについて
一般的に説明し、それから、その“密”と“粗”の変形
について説明する。
【0076】〔3.3.2.1 GEM−木のトラバーサル・
アルゴリズム〕このアルゴリズムの2つの説明をする。
第1の説明は、概念的なものであり、それは、キー値の
組にわたって如何に繰り返すかを示す。一般的にフェッ
チ処理でこの繰り返しをインターリーブするので、この
アルゴリズムを直接的に実行することはしない。第2の
説明は、このインターリーブを認めるやり方で、アルゴ
リズムを再フォーミュレートする。この第2の説明が実
際に実行される。概念的には、GEM−木のトラバーサ
ルは繰り返し処理である。下記において、Gはnコラム
についてのGEM−木であり(各繰り返し呼出しの都
度、nは実効的に減少される)、Rは参照組(どの論理
和項が部分的なキー値を満足させるかを告げる文脈の集
積)、PKは部分的なキーであって、手続の高レベルの
インボケーション(invokations)からのキー値を選択す
るものである。そのためのプログラムは、例えば下記の
ようである。
【0077】
【数8】 Traverse (G, R, PK): For each GEM-interval {Ii, Ri} of the first column of G Rx=R intersect Ri (1) If Rx is non-empty If there are more columns in G For each value V in the interval Ii (2) Traverse (G minus its first column, Rx, PK || V) (3) End for Else Denote Ii as [a, b] (4) Emit the begin key value PK || a Emit the end key value PK || b End if End if End for
【0078】上記Traverse(トラバース)処理の変数
は、GEM−木のGと、参照組のRと、部分的キーのP
Kである。メインラインのコードにおいて、このトラバ
ース処理を、変数(G,空の組,空のキー)で呼び出
す。ここで、GはオリジナルのGEM−木である。上記
の(1)では、共通集合(intersection)をとることによ
り、前のコラムの値であるかもしれない現キーコラムの
値を見つけ出す。もし、この文脈を感服させならば、オ
リジナルの述語を満足させないキー値を生成するかもし
れない。上記の(2)において、この繰り返しは、
“密”又は“粗”のアルゴリズムであってよい。“密”
アルゴリズムは、そのインターバルにおける全ての可能
な値を列挙するが、“粗”アルゴリズムは、ベーステー
ブルにおいて実際に存在していない値をスキップする。
夫々独立に、いくつかのコラムについては“密”を使用
し、その他については“粗”を使用してよい。上記の
(3)において、この繰り返し部の呼出しは、GEM−
木の次のコラムへと実際にトラバースする。上記の
(4)において、このアルゴリズムは1つの閉鎖された
インターバルについての処理を示す。もしそれが開かれ
ていれば、開始キー(ビギンキー)についての後フラグ
(アフターフラグ)と終了キー(エンドキー)について
の前フラグ(ビフォアフラグ)とをセットする。セミ・
オープンなインターバルに対する一般化は、まっすぐ前
である。
【0079】次に、フェッチ実行でそれがインターリー
ブすることを許すやり方で、このアルゴリズムを再キャ
ストする。文脈を各コラムに関係づけることにより、繰
り返しを解く。この文脈における情報は、下記を含む。 ・ C_Intvで示す「現在のGEM−インターバ
ル」(もしあれば)。 ・ C_Valで示す「そのインターバル内の現在
値」、すなわち、最後の呼出し時にこのコラムについて
繰り返し部に戻される値。 ・ C_Refで示す「現GEM−インターバルに与え
られた左のコラムの参照組の共通集合」。 また、全体としてのGEM−木について、現GEM−イ
ンターバルを持たない第1のコラムのトラックを維持す
る。これは、下記で、C_Colで示されるものであ
り、かつ、それを数字で表わす。すなわち、「1」は、
第1のコラムが現GEM−木インターバルを持たないこ
とを意味し、「2」は、第1のコラムは現GEM−木イ
ンターバルを持つが、第2のコラムはそれを持たないこ
とを意味し、以下同様である。GEM−木はn個のコラ
ムを持つものとする。C_Col=n+1は、全てのコ
ラムが現GEM−インターバルを持つことを意味し、C
_Col=0は、GEM−木のトラバースを終了した
(すなわち、End−of−Fileをヒットした)こ
とを意味する、との約束を使用する。(余談: この実
行にあたっては、アレイ・インデックス又はポインタ又
はその他のC_Colの物理的表現を使用してよい。G
EM−木がアレイで表現されねばならないことを暗示し
ているわけではない。) 以下、「Traverse_init」と、「Trav
erse_next」と、「Traverse_en
d」の3つの方法を定義する。
【0080】
【数9】 Traverse_init: C_Col = 1 Column[1].C_Intv = none Column[1].C_Ref = the set of all possible disjuncts
【数10】 Traverse_next: While C_Col > 0 and we don't have a key value to return If Column[C_Col].C_Intv = none Find the first GEM-interval in this column, { I, R }, such that R intersect Column[C_Col].C_Ref is non-empty (1) Column[C_Col].C_Intv = { I, R } If C_Col < n Column[C_Col].C_Val = first value in I (2) End if C_Col = C_Col + 1 If C_Col = n+1 Set begin key (3) Set end key (4) Else Column[C_Col].C_Intv = none End if Else If C_Col = n Find the next GEM-interval { I, R } such that R intersect Column[C_Col].C_Ref is non-empty If one exists Column[C_Col].C_Intv = that interval Set begin key (3) Set end key (4) Else C_Col = C_Col - 1 End if Else Find the next value in Column[C_Col].C_Intv (5) after Column[C_Col].C_Val If one exists Column[C_Col].C_Val = that value C_Col = C_Col + 1 Column[C_Col].C_Intv = none Else Find the next GEM-interval { I, R } such that R intersect Column[n].C_Ref is non-empty If one exists Column[C_Col].C_Intv = { I, R } Column[C_Col].C_Val = first value in I C_Col =C_Col + 1 Else C_Col =C_Col - 1 (6) End if End if End if End if End while Return begin/end key or EOF indication
【数11】
【0081】上記の(1)において、常に少なくとも1
つあることに注意されたい。これは最後のコラムで始ま
り最初のコラムで終わる論理和項においてマージしたか
らである。もし与えられた論理和項についての或るコラ
ムでのGEM−木が空ならば、マージを中止し、最初の
コラムについての参照組において論理和項がはっきり見
えないようにする。上記の(2)において、もし、I=
[a,b]または[a,b)ならば、“first value in
I"(Iの中の最初の値)はaである。もし、I=
(a,b]または(a,b)ならば、“first value in
I"はaの後の次の値である。該次の値は密又は粗のア
ルゴリズムのいずれかを介して決定されてよい。最右コ
ラムのためにC_Valを計算する必要がない。何故な
らば、キー構築において現インターバル終了点を直接的
に使用するであろうからである(適当な後フラグ及び前
フラグのセッティングで)。上記の(3)において、開
始キー(begin key)は最右コラム以外の全ての現在の値
と最右コラムの現インターバルIの開始点との連鎖から
なっている。もし、I=(a,b]または(a,b)な
らば、後フラグがセットされる。そうでなければ、セッ
トされない。上記の(4)において、終了キー(end ke
y)は最右コラム以外の全ての現在の値と最右コラムの現
インターバルIの終了点との連鎖からなっている。も
し、I=[a,b)または(a,b)ならば、前フラグ
がセットされる。そうでなければ、セットされない。上
記の(5)において、該次の値(the next value)は密
又は粗のアルゴリズムのいずれかを介して決定されてよ
い。上記の(6)において、C_Colが0に行くなら
ば、そのGEM−木のEnd−of−Fileに到達し
たことに注意されたい。Traverse−nextに
よって戻された開始及び終了キーは、DM^START
(又はDM^KEYPOSITION)を介してサブセ
ットを定義するために使用されることができる。フェッ
チ処理は、それから、このサブセットにわたって繰り返
すことができる。サブセットが使い尽くされると、フェ
ッチ処理はTraverse−nextを呼出し、次の
サブセットを見つける。
【0082】
【発明の効果】以上のように、この発明は、効率的に複
雑なユーザサーチ質問の使用を可能にし、メモリスペー
スの実質的な節約を可能にし、且つ、データ読出し必要
量を最少化できるので、効率的且つ簡単にデータベース
をサーチできる、という優れた効果を奏する。
【図面の簡単な説明】
【図1】データベースにデータを格納し、該データにユ
ーザがアクセスできるようにするコンピュータシステム
のブロック図。
【図2】データベース管理システムに格納されたデータ
構造のブロック図。
【図3】データベーステーブルおよびプログラムを示す
図2のカタログデータ構造のブロック図。
【図4】図3のカタログデータ構造に含まれるテーブル
の一部分を示すブロック図。
【図5】図3のカタログデータ構造に含まれるテーブル
のその他の部分を示すブロック図。
【図6】図3のカタログデータ構造に含まれるテーブル
のさらにその他の部分を示すブロック図。
【図7】図3のカタログデータ構造に含まれるテーブル
のさらにその他の部分を示すブロック図。
【図8】図3のカタログデータ構造に含まれるテーブル
のさらにその他の部分を示すブロック図。
【図9】図3のカタログデータ構造に含まれるテーブル
のさらにその他の部分を示すブロック図。
【図10】図3のカタログデータ構造に含まれるテーブ
ルのさらにその他の部分を示すブロック図。
【図11】図3のカタログデータ構造に含まれるテーブ
ルのさらにその他の部分を示すブロック図。
【符号の説明】
102 コンピュータ 104 ユーザワークステーションコンピュータ 110 CPU 112 RAM 114 通信インターフェース 120 データベーステーブル 122 データベース索引 123 DBMS
───────────────────────────────────────────────────── フロントページの続き (72)発明者 デビッド・ダブリュ・バーズオール アメリカ合衆国 カリフォルニア 95051, サンタ・クララ, ベントン・ストリー ト 3708 (72)発明者 ロヒト・エヌ・ジェイン アメリカ合衆国 ミシガン 48309, ロ チェスター・ヒルズ, ワージントン・コ ート 3658 (72)発明者 ヘディー・ヤグマイ アメリカ合衆国 カリフォルニア 95129, サンノゼ, クラレンドン・ストリート 7202

Claims (21)

    【特許請求の範囲】
  1. 【請求項1】 サーチキーコラムの値に対応する述語の
    値を明示するサーチ質問に従って構築された個々のマル
    チコラムサーチキーを使用して、データベースをサーチ
    する方法であって、 (a)前記サーチ質問によって明示された述語の値を評
    価するステップと、 (b)1つのレンジの値として明示された各述語の値ご
    とに、これに対応するキーコラムに同等レンジの値を割
    当てるステップと、 (c)INリストの値として明示された各述語の値ごと
    に、これに対応するキーコラムに同等レンジの値を割当
    てるステップと、 (d)指定されていない各述語の値ごとに、これに対応
    するキーコラムに或るレンジの値を割当てるステップ
    と、 (e)前記割当てるステップ(b)〜(d)の前記値を
    使用して、個々のサーチキーを構築するステップとを具
    備する方法。
  2. 【請求項2】 サーチ質問が複数の論理和項を含み、前
    記評価するステップ(a)が、前記複数の論理和項の各
    々に対して特有の論理和項番号を割当てるステップを含
    む請求項1に記載の方法。
  3. 【請求項3】 前記論理和項番号を割当てるステップ
    が、INリスト述語に対して特有の論理和項番号を割当
    てるステップを含む請求項2に記載の方法。
  4. 【請求項4】 前記ステップ(b)で割当てられた前記
    同等レンジの値が、対応するキーコラムの最小値および
    最大値として明示される請求項1に記載の方法。
  5. 【請求項5】 前記評価するステップ(a)が、述語を
    クラスタに関連付け、クラスタを論理和項番号に関連づ
    けるステップを含む請求項1又は2に記載の方法。
  6. 【請求項6】 前記使用するステップ(e)が、同一の
    コラムからの相反する述語の値を除去することによっ
    て、該コラムに関する潜在的なサーチキーの値の数を減
    じるステップを含む請求項1に記載の方法。
  7. 【請求項7】 前記使用するステップ(e)が、前記論
    理和項によって明示される冗長な値を除去することによ
    って、前記サーチ質問を実行するために必要なサーチキ
    ーの数を最少化するステップを含む請求項1に記載の方
    法。
  8. 【請求項8】 データベースオブジェクトを格納し、ユ
    ーザが格納された該データベースオブジェクトにおける
    データにアクセスできるようにするコンピュータシステ
    ムであって、 前記データベースオブジェクトを格納するメモリと、 ユーザによるデータベース質問がユーザワークステーシ
    ョンから前記コンピュータシステムに中継されるように
    し、前記コンピュータシステムからの質問結果が前記ユ
    ーザワークステーションによって利用されるようにする
    ための通信インターフェイスと、 ユーザワークステーションから受信したサーチ質問に応
    じて、前記メモリと前記通信インターフェイスとの間の
    インタラクションを制御し、サーチキーコラム値に対応
    する述語値を指定するプロセッサと、 前記プロセッサがサーチキーコラム値に対応する述語値
    を明示するサーチキーに従って個々のマルチコラムサー
    チキーを構築するようにするコンピュータプログラムで
    あって、前記サーチ質問によって明示された前記述語値
    を評価する第1の手続きを含むものと、 前記サーチ質問によって明示される各述語値ごとに、同
    等レンジの値を、あるレンジの値として、対応するキー
    コラムに割り当てる第2の手続きと、 前記サーチ質問によって明示された各述語値ごとに、同
    等の値を、INリストの値として、対応するキーコラム
    に割り当てる第3の手続きと、 各明示されていない述語値ごとに、或るレンジの値を対
    応するキーコラムに割り当てる第4の手続きと、 前記第1の手続き〜第4の手続きによって割り当てられ
    た値から、個々のサーチキーを構築する第5の手続きと
    を具備したコンピュータシステム。
  9. 【請求項9】 サーチ質問が複数の論理和項を含み、前
    記第1の手続きが、前記サーチ質問における前記複数の
    論理和項の各々に対して特有の論理和項番号を割り当て
    るよう前記プロセッサを動作させる請求項8に記載のコ
    ンピュータシステム。
  10. 【請求項10】 前記第1の手続きが、INリスト述語
    に対して特有の論理和項番号を割り当てるよう前記プロ
    セッサを動作させる請求項8又は9に記載のコンピュー
    タシステム。
  11. 【請求項11】 前記第2の手続きに応じて前記プロセ
    ッサによって割り当てられる同等レンジの値が、対応す
    るキーコラムの最小値および最大値として明示される請
    求項8に記載のコンピュータシステム。
  12. 【請求項12】 前記第1の手続きが、述語をクラスタ
    に関連づけ、クラスタを論理和項番号に関連づけるよう
    前記プロセッサを動作させる請求項8又は9に記載のコ
    ンピュータシステム。
  13. 【請求項13】 前記第5の手続きが、同一のコラムか
    らの相反する述語値を削除し、該コラムに関する潜在的
    なサーチキー値の数を減じるよう前記プロセッサを動作
    させる請求項8に記載のコンピュータシステム。
  14. 【請求項14】 前記第5の手続きが、前記論理和項に
    よって明示される冗長な値を除去することによって、前
    記サーチ質問を実行するために必要なサーチキーの数を
    最少化するよう前記プロセッサを動作させる請求項8に
    記載のコンピュータシステム。
  15. 【請求項15】 データベースをサーチするために使用
    する個々のマルチコラムサーチキーを構築するための、
    コンピュータによって読取り可能なコードを格納したコ
    ンピュータが使用可能な媒体を備え、前記サーチキーが
    サーチキーコラム値に対応する述語値を明示するサーチ
    質問に従って構築されているコンピュータプログラム製
    品であって、 前記サーチ質問によって明示される前記述語値を評価す
    るようコンピュータを動作させる、第1のコンピュータ
    によって読み取り可能なプログラムコード装置と、 或るレンジの値として明示される各述語値ごとに前記対
    応する述語値に対して同等レンジの値を割当てるようコ
    ンピュータを動作させる、第2のコンピュータによって
    読み取り可能なプログラムコード装置と、 INリストの値として明示される各述語値ごとに前記対
    応する述語値に対して同等の値を割当てるようコンピュ
    ータを動作させる、第3のコンピュータによって読み取
    り可能なプログラムコード装置と、 各明示されていない述語値ごとに前記対応する述語値に
    対して或るレンジの値を割当てるようコンピュータを動
    作させる、第4のコンピュータによって読み取り可能な
    プログラムコード装置と、 前記同等の値を使用して個々のサーチキーを構築するよ
    うコンピュータを動作させる、第5のコンピュータによ
    って読み取り可能なプログラムコード装置とを具備した
    コンピュータプログラム製品。
  16. 【請求項16】 サーチ質問が複数の論理和項を含み、
    前記第1のコンピュータによって読み取り可能なプログ
    ラムコード装置が、前記複数の論理和項の各々に対して
    特有の論理和項番号を割当てるようコンピュータを動作
    させるものである請求項15に記載のコンピュータプロ
    グラム製品。
  17. 【請求項17】 前記コンピュータが、INリスト述語
    に対して特有の論理和項番号を割当てるよう動作される
    請求項16に記載のコンピュータプログラム製品。
  18. 【請求項18】 前記第2のコンピュータによって読み
    取り可能なプログラムコード装置に応答して前記コンピ
    ュータによって割当てられた前記値が、対応するキーコ
    ラムの最小値および最大値として明示される請求項15
    に記載のコンピュータプログラム製品。
  19. 【請求項19】 前記第1のコンピュータによって読み
    取り可能なプログラムコード装置が、述語をクラスタに
    関連づけ、クラスタを論理和項番号に関連づけるよう前
    記コンピュータを動作させる請求項16に記載のコンピ
    ュータプログラム製品。
  20. 【請求項20】 前記第5のコンピュータによって読み
    取り可能なプログラムコード装置が、さらに、同一のコ
    ラムからの相反する述語の値を除去することによって、
    該コラムに関する潜在的なサーチキーの値の数を減じる
    よう前記コンピュータを動作させる請求項15に記載の
    コンピュータプログラム製品。
  21. 【請求項21】 前記第5のコンピュータによって読み
    取り可能なプログラムコード装置が、さらに、前記論理
    和項によって明示される冗長な値を除去することによっ
    て、前記サーチ質問を実行するために必要なサーチキー
    の数を最少化するよう前記コンピュータを動作させる請
    求項15に記載のコンピュータプログラム製品。
JP8182656A 1995-06-07 1996-06-07 改良された索引によるアクセスを使用するデータベース管理システム Pending JPH09171478A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/481,649 1995-06-07
US08/481,649 US5778354A (en) 1995-06-07 1995-06-07 Database management system with improved indexed accessing

Publications (1)

Publication Number Publication Date
JPH09171478A true JPH09171478A (ja) 1997-06-30

Family

ID=23912827

Family Applications (2)

Application Number Title Priority Date Filing Date
JP8168445A Pending JPH1125096A (ja) 1995-06-07 1996-06-07 データベースをサーチする方法およびコンピュータシステム
JP8182656A Pending JPH09171478A (ja) 1995-06-07 1996-06-07 改良された索引によるアクセスを使用するデータベース管理システム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP8168445A Pending JPH1125096A (ja) 1995-06-07 1996-06-07 データベースをサーチする方法およびコンピュータシステム

Country Status (4)

Country Link
US (1) US5778354A (ja)
EP (1) EP0747839A1 (ja)
JP (2) JPH1125096A (ja)
CA (1) CA2178264A1 (ja)

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0916607A (ja) * 1995-06-26 1997-01-17 Hitachi Ltd データベース管理システムにおけるインデクス管理方法
US5790861A (en) * 1995-07-07 1998-08-04 Sun Microsystems, Inc. Method and apparatus for generating executable code from object-oriented C++ source code
US6147773A (en) * 1995-09-05 2000-11-14 Hewlett-Packard Company System and method for a communication system
US5913208A (en) * 1996-07-09 1999-06-15 International Business Machines Corporation Identifying duplicate documents from search results without comparing document content
GB9706400D0 (en) * 1997-03-27 1997-05-14 British Telecomm Distributed computing
US6073134A (en) * 1997-05-29 2000-06-06 Oracle Corporation Method article of manufacture, and apparatus for generating a multi-dimensional record management index
US6108657A (en) * 1997-05-29 2000-08-22 Oracle Corporation Method, article of manufacture, and apparatus for generating a multi-dimensional record layout mapping
US5970493A (en) * 1997-05-29 1999-10-19 Oracle Corporation Method, article of manufacture, and apparatus for generating a multi-dimensional record display
US5937408A (en) * 1997-05-29 1999-08-10 Oracle Corporation Method, article of manufacture, and apparatus for generating a multi-dimensional record structure foundation
US5940818A (en) * 1997-06-30 1999-08-17 International Business Machines Corporation Attribute-based access for multi-dimensional databases
US6285996B1 (en) * 1997-07-10 2001-09-04 International Business Machines Corp. Run-time support for user-defined index ranges and index filters
US6243703B1 (en) * 1997-10-14 2001-06-05 International Business Machines Corporation Method of accessing and displaying subsystem parameters including graphical plan table data
US6195653B1 (en) * 1997-10-14 2001-02-27 International Business Machines Corporation System and method for selectively preparing customized reports of query explain data
US6185552B1 (en) * 1998-03-19 2001-02-06 3Com Corporation Method and apparatus using a binary search engine for searching and maintaining a distributed data structure
US6154746A (en) * 1998-04-22 2000-11-28 At&T Corp. High-dimensional index structure
US6466942B1 (en) 1998-11-30 2002-10-15 Fmr Corp. Using indexes to retrieve stored information
US7801913B2 (en) 1998-12-07 2010-09-21 Oracle International Corporation System and method for querying data for implicit hierarchies
US6587856B1 (en) * 1998-12-07 2003-07-01 Oracle International Corporation Method and system for representing and accessing object-oriented data in a relational database system
US6356286B1 (en) 1998-12-10 2002-03-12 International Business Machines Corporation User-interactive computer display interface with a tree having a plurality of user selectable nodes representing a plurality of search queries to a tabular database
US6615207B1 (en) 1998-12-10 2003-09-02 International Business Machines Corporation Method of formulating and presenting search queries to a tabular database through a user-interactive computer display interface
US6922708B1 (en) * 1999-02-18 2005-07-26 Oracle International Corporation File system that supports transactions
US6513028B1 (en) 1999-06-25 2003-01-28 International Business Machines Corporation Method, system, and program for searching a list of entries when search criteria is provided for less than all of the fields in an entry
CA2279222C (en) * 1999-07-30 2002-07-16 Ibm Canada Limited-Ibm Canada Limitee Direct call threaded code
US8335775B1 (en) * 1999-08-05 2012-12-18 Oracle International Corporation Versioning in internet file system
US7693844B1 (en) 1999-10-29 2010-04-06 Computer Sciences Corporation Configuring processing relationships among entities of an organization
US7546304B1 (en) * 1999-10-29 2009-06-09 Computer Sciences Corporation Configuring keys for use in processing business data
US6353821B1 (en) * 1999-12-23 2002-03-05 Bull Hn Information Systems Inc. Method and data processing system for detecting patterns in SQL to allow optimized use of multi-column indexes
CA2307155A1 (en) 2000-04-28 2001-10-28 Ibm Canada Limited-Ibm Canada Limitee Execution of database queries including filtering
US7269786B1 (en) 2000-05-04 2007-09-11 International Business Machines Corporation Navigating an index to access a subject multi-dimensional database
US6915289B1 (en) * 2000-05-04 2005-07-05 International Business Machines Corporation Using an index to access a subject multi-dimensional database
US6728721B1 (en) * 2000-06-23 2004-04-27 Microsoft Corporation System and method for maintaining a user's state within a database table
US6892205B1 (en) * 2001-02-28 2005-05-10 Oracle International Corporation System and method for pre-compiling a source cursor into a target library cache
US6668258B2 (en) * 2001-09-26 2003-12-23 Alain De Cheveigne Method for the scaling of the indexing data of a multimedia document
US20030110153A1 (en) * 2001-12-11 2003-06-12 Sprint Communications Company L.P. Database performance monitoring method and tool
US7472127B2 (en) * 2002-12-18 2008-12-30 International Business Machines Corporation Methods to identify related data in a multidimensional database
US7124137B2 (en) * 2002-12-19 2006-10-17 International Business Machines Corporation Method, system, and program for optimizing processing of nested functions
US7243098B2 (en) * 2002-12-19 2007-07-10 International Business Machines Corporation Method, system, and program for optimizing aggregate processing
US8239343B2 (en) * 2003-05-23 2012-08-07 Bmc Software, Inc. Database reorganization technique
US8972380B2 (en) * 2003-09-29 2015-03-03 International Business Machines Corporaton System and method for monitoring events against continual range queries
US7835953B2 (en) * 2003-09-29 2010-11-16 International Business Machines Corporation Method and structure for monitoring moving objects
US7376638B2 (en) * 2003-12-24 2008-05-20 International Business Machines Corporation System and method for addressing inefficient query processing
US7120864B2 (en) 2004-01-27 2006-10-10 International Business Machines Corporation Eliminating superfluous namespace declarations and undeclaring default namespaces in XML serialization processing
US8037102B2 (en) 2004-02-09 2011-10-11 Robert T. and Virginia T. Jenkins Manipulating sets of hierarchical data
US7624119B2 (en) * 2004-02-11 2009-11-24 International Business Machines Corporation Low-overhead built-in timestamp column for relational database systems
US7406477B2 (en) * 2004-03-12 2008-07-29 Sybase, Inc. Database system with methodology for automated determination and selection of optimal indexes
US20050210023A1 (en) * 2004-03-18 2005-09-22 Renato Barrera Query optimizer using implied predicates
US7620632B2 (en) * 2004-06-30 2009-11-17 Skyler Technology, Inc. Method and/or system for performing tree matching
US7801923B2 (en) 2004-10-29 2010-09-21 Robert T. and Virginia T. Jenkins as Trustees of the Jenkins Family Trust Method and/or system for tagging trees
US7627591B2 (en) 2004-10-29 2009-12-01 Skyler Technology, Inc. Method and/or system for manipulating tree expressions
US7630995B2 (en) 2004-11-30 2009-12-08 Skyler Technology, Inc. Method and/or system for transmitting and/or receiving data
US7636727B2 (en) 2004-12-06 2009-12-22 Skyler Technology, Inc. Enumeration of trees from finite number of nodes
US7921076B2 (en) 2004-12-15 2011-04-05 Oracle International Corporation Performing an action in response to a file system event
US8316059B1 (en) 2004-12-30 2012-11-20 Robert T. and Virginia T. Jenkins Enumeration of rooted partial subtrees
US7580922B2 (en) * 2005-01-04 2009-08-25 International Business Machines Corporation Methods for relating data in healthcare databases
US8615530B1 (en) 2005-01-31 2013-12-24 Robert T. and Virginia T. Jenkins as Trustees for the Jenkins Family Trust Method and/or system for tree transformation
US7681177B2 (en) 2005-02-28 2010-03-16 Skyler Technology, Inc. Method and/or system for transforming between trees and strings
US8356040B2 (en) 2005-03-31 2013-01-15 Robert T. and Virginia T. Jenkins Method and/or system for transforming between trees and arrays
US7899821B1 (en) 2005-04-29 2011-03-01 Karl Schiffmann Manipulation and/or analysis of hierarchical data
US8949455B2 (en) 2005-11-21 2015-02-03 Oracle International Corporation Path-caching mechanism to improve performance of path-related operations in a repository
US20070192215A1 (en) * 2006-02-10 2007-08-16 Taylor Thomas B Computer-implemented registration for providing inventory fulfillment services to merchants
US7769754B2 (en) * 2006-05-15 2010-08-03 Algebraix Data Corporation Systems and methods for data storage and retrieval using algebraic optimization
US7865503B2 (en) * 2006-05-15 2011-01-04 Algebraix Data Corporation Systems and methods for data storage and retrieval using virtual data sets
US7797319B2 (en) * 2006-05-15 2010-09-14 Algebraix Data Corporation Systems and methods for data model mapping
US7720806B2 (en) * 2006-05-15 2010-05-18 Algebraix Data Corporation Systems and methods for data manipulation using multiple storage formats
US7613734B2 (en) * 2006-05-15 2009-11-03 Xsprada Corporation Systems and methods for providing data sets using a store of albegraic relations
US7877370B2 (en) * 2006-05-15 2011-01-25 Algebraix Data Corporation Systems and methods for data storage and retrieval using algebraic relations composed from query language statements
US8024235B2 (en) 2006-06-21 2011-09-20 Microsoft Corporation Automatic search functionality within business applications
US7831620B2 (en) * 2006-08-31 2010-11-09 International Business Machines Corporation Managing execution of a query against a partitioned database
US7840590B2 (en) * 2006-12-18 2010-11-23 Oracle International Corporation Querying and fragment extraction within resources in a hierarchical repository
US7853480B2 (en) * 2007-05-21 2010-12-14 Amazon Technologies, Inc. System and method for providing export services to merchants
US7725448B2 (en) * 2007-08-31 2010-05-25 International Business Machines Corporation Method and system for disjunctive single index access
US8135738B2 (en) * 2008-08-20 2012-03-13 International Business Machines Corporation Efficient predicate evaluation via in-list
US20110082855A1 (en) * 2009-10-01 2011-04-07 Al-Omari Awny K Multi-dimensional access to data
US8200660B2 (en) 2009-10-22 2012-06-12 Hewlett-Packard Development Company, L.P. System and method for executing queries
US8359316B2 (en) * 2010-03-01 2013-01-22 International Business Machines Corporation Database table look-up
JP5460486B2 (ja) * 2010-06-23 2014-04-02 インターナショナル・ビジネス・マシーンズ・コーポレーション データをソートする装置及び方法
US8738673B2 (en) 2010-09-03 2014-05-27 International Business Machines Corporation Index partition maintenance over monotonically addressed document sequences
US10346375B2 (en) * 2012-04-26 2019-07-09 Entit Software Llc In-database parallel analytics
US8583687B1 (en) 2012-05-15 2013-11-12 Algebraix Data Corporation Systems and methods for indirect algebraic partitioning
US8849871B2 (en) 2012-10-04 2014-09-30 Oracle International Corporation Efficient pushdown of joins in a heterogeneous database system involving a large-scale low-power cluster
US9135301B2 (en) * 2013-03-14 2015-09-15 Oracle International Corporation Pushdown of sorting and set operations (union, intersection, minus) to a large number of low-power cores in a heterogeneous system
US10204140B2 (en) 2013-03-14 2019-02-12 Oracle International Corporation Massively parallel and in-memory execution of grouping and aggregation in a heterogeneous system
US10310466B2 (en) * 2013-08-29 2019-06-04 Hitachi Systems, Ltd. Managing energy consumption of a building in an interconnected wide area management system
US9519662B2 (en) * 2013-09-10 2016-12-13 International Business Machines Corporation Boolean term conversion for null-tolerant disjunctive predicates
KR101679011B1 (ko) * 2014-06-26 2016-11-24 주식회사 알티베이스 데이터베이스에서 데이터 이동을 처리하는 방법 및 장치
US10382056B2 (en) 2015-11-10 2019-08-13 International Business Machines Corporation Fast evaluation of predicates against compressed data
US11093500B2 (en) 2019-10-28 2021-08-17 Ocient Holdings LLC Enforcement of minimum query cost rules required for access to a database system

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS583031A (ja) * 1981-06-30 1983-01-08 Fujitsu Ltd リレ−シヨナル・モデルにおけるジヨイン演算処理方式
US4506326A (en) * 1983-02-28 1985-03-19 International Business Machines Corporation Apparatus and method for synthesizing a query for accessing a relational data base
US4967341A (en) * 1986-02-14 1990-10-30 Hitachi, Ltd. Method and apparatus for processing data base
US5043872A (en) * 1988-07-15 1991-08-27 International Business Machines Corporation Access path optimization using degrees of clustering
US5560006A (en) * 1991-05-15 1996-09-24 Automated Technology Associates, Inc. Entity-relation database
JPH077422B2 (ja) * 1991-08-23 1995-01-30 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ処理データベース・システムにおけるジョインの実行方法及びシステム
US5559948A (en) * 1992-12-23 1996-09-24 International Business Machines Corporation Apparatus and method for manipulating an object in a computer system graphical user interface
US5560007A (en) * 1993-06-30 1996-09-24 Borland International, Inc. B-tree key-range bit map index optimization of database queries
US5519859A (en) * 1993-11-15 1996-05-21 Grace; John A. Method and apparatus for automatic table selection and generation of structured query language instructions

Also Published As

Publication number Publication date
JPH1125096A (ja) 1999-01-29
US5778354A (en) 1998-07-07
CA2178264A1 (en) 1996-12-08
EP0747839A1 (en) 1996-12-11

Similar Documents

Publication Publication Date Title
JPH09171478A (ja) 改良された索引によるアクセスを使用するデータベース管理システム
US7080062B1 (en) Optimizing database queries using query execution plans derived from automatic summary table determining cost based queries
US5761657A (en) Global optimization of correlated subqueries and exists predicates
US7111025B2 (en) Information retrieval system and method using index ANDing for improving performance
Dreseler et al. Quantifying TPC-H choke points and their optimizations
US6338056B1 (en) Relational database extender that supports user-defined index types and user-defined search
US5752017A (en) Method and apparatus for executing complex SQL queries using projection operations
US5855019A (en) Enumerating projections in SQL queries containing outer and full outer joins in the presence of inner joins
US7409385B2 (en) Method, system and program for executing a query having a UNION operator
US6466931B1 (en) Method and system for transparently caching and reusing query execution plans efficiently
US6618719B1 (en) Database system with methodology for reusing cost-based optimization decisions
US5590324A (en) Optimization of SQL queries using universal quantifiers, set intersection, and max/min aggregation in the presence of nullable columns
US6915290B2 (en) Database query optimization apparatus and method that represents queries as graphs
US6789071B1 (en) Method for efficient query execution using dynamic queries in database environments
US5615361A (en) Exploitation of uniqueness properties using a 1-tuple condition for the optimization of SQL queries
US20040220896A1 (en) System and method for optimizing queries on views defined by conditional expressions having mutually exclusive conditions
US6834279B1 (en) Method and system for inclusion hash joins and exclusion hash joins in relational databases
US6826562B1 (en) Method of simplifying and optimizing scalar subqueries and derived tables that return exactly or at most one tuple
US7542962B2 (en) Information retrieval method for optimizing queries having maximum or minimum function aggregation predicates
US6343286B1 (en) Efficient technique to defer large object access with intermediate results
JPH07141236A (ja) 外部関数を有するリレーショナル・データベース・システムにおける照会最適化方法及び装置
US6421663B1 (en) Optimization of joined table expressions by extended access path selection
US6385603B1 (en) Joined table expression optimization by query transformation
JPH0527149B2 (ja)
US6748377B1 (en) Facilitating query pushdown in a multi-tiered database environment

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070206

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070703