JPH10247203A - リレーショナル・データベースに照会処理ツリーを適用する方法及びシステム - Google Patents

リレーショナル・データベースに照会処理ツリーを適用する方法及びシステム

Info

Publication number
JPH10247203A
JPH10247203A JP10009164A JP916498A JPH10247203A JP H10247203 A JPH10247203 A JP H10247203A JP 10009164 A JP10009164 A JP 10009164A JP 916498 A JP916498 A JP 916498A JP H10247203 A JPH10247203 A JP H10247203A
Authority
JP
Japan
Prior art keywords
vector
operator
block
record
record block
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
JP10009164A
Other languages
English (en)
Inventor
Ramesh Chandra Agarwal
ラメシュ・チャンドラ・アガーワル
Anant Deep Jhingran
アナント・ディープ・ジングラン
Timothy Ray Malkemus
ティモシー・レイ・マルケムス
Sriram Kolijivadi Padmanabhan
シリラム・コリジヴァディ・パドマナブハン
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH10247203A publication Critical patent/JPH10247203A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/24539Query rewriting; Transformation using cached or materialised query results
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24561Intermediate data storage techniques for performance improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 データベース処理技術において、データベー
ス・システム内で、照会ツリーをより効率的に構成及び
処理する方法及びシステムを提供する。 【解決手段】 リレーショナル・データベースから導出
される複数の入力レコードからのデータを用いて、ベク
トル・レコード・ブロックを生成し、次に照会処理ツリ
ーの少なくとも1つのベクトル演算子をベクトル・レコ
ード・ブロックに適用する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は一般にデータベース
・システムにおける照会処理に関し、特に、照会ツリー
内の少なくとも1つのベクトル演算子、並びに1つ以上
のデータベース内のデータから導出される複数の入力レ
コードから生成されるレコードの少なくとも1つのベク
トル・ブロックを用いる方法及びシステムに関する。
【0002】
【従来の技術】次の定義が、以下の議論のためのフレー
ムワークとして提供される。 リレーショナル・データベース・システム:リレーショ
ナル・データベース、及びリレーショナル・データベー
スを管理するソフトウェア リレーショナル・データベース:たくさんの論理的に接
続されるテーブルまたは関係の集合 テーブルまたは関係:同一のまたは類似の構造を有する
レコードまたは行の集合 レコード、行または組:列値のセットにより記述される
論理エンティティ 列:テーブル内の全てのレコードに関連付けられる特定
の属性 SQL照会:データベース内のデータのサブセットを表
現する米国規格協会(ANSI)規定アプローチ 照会ツリー(または照会処理ツリー):照会結果を計算
するデータ・フロー実行シーケンス 演算子:照会ツリー内の特定ノード レコードのブロック:論理的に一緒に接続されるレコー
ドのセット
【0003】以下で詳述されるように、データベース照
会処理は通常、データベースのセットの各レコードに、
スカラ演算子ツリーを含むSQL照会を順次適用するこ
とにより達成される。処理モードは各レコードに対し
て、スカラ演算子の連鎖を入力し、照会ツリーの演算に
より決定されるように連鎖を進行する。実行の制御フロ
ーは通常、トップ・ダウンであり、上位の演算子(利用
者演算子)がその入力演算子(製作者演算子)を呼び出
し、それが消費するレコードを生成する。各演算子は、
それが必要とする入力を有する場合、その入力を処理
し、制御を呼び出し側演算子に返却する。それ以外で
は、各演算子は下位の演算子を呼び出し、入力を生成す
る。演算子がセット入力を要求し、その下位のスカラ演
算子がレコードだけを生成する場合、下位の演算子が繰
り返し呼び出される。演算子がセットに作用するとき、
これは従来通り、演算子がループ内で下位の演算子を呼
び出し、下位の演算子が"新たなレコード無し"を返却す
るまで、呼び出しが継続されて達成される。
【0004】しかしながら、データベース内の照会処理
のための従来のスカラ・アプローチは、時間集中型であ
る。データベース・システムにおける主な不利益は、通
常、演算子呼び出しのオーバヘッドに由来する。これは
従来のアプローチにおいては、特に不利である。なぜな
ら、入力としてセットを要求する演算子に対してさえ
も、演算子が1レコードにつき呼び出されるからであ
る。これは、それらの入力が一度に1レコードに対して
生成され、通常、演算子がそのレコードに対して、増分
的に実現されるからである。
【0005】
【発明が解決しようとする課題】従って、データベース
処理技術において、データベース・システム内で、照会
ツリーをより効率的に構成及び処理する新たな技術が待
望される。
【0006】
【課題を解決するための手段】要約すると、本発明はそ
の1つの態様として、リレーショナル・データベースに
照会処理ツリーを適用する方法を含む。この方法は、リ
レーショナル・データベースから導出される複数の入力
レコードからのデータを用いて、ベクトル・レコード・
ブロックを生成するステップと、照会処理ツリーの少な
くとも1つのベクトル演算子を、ベクトル・レコード・
ブロックに適用するステップとを含む。拡張として、少
なくとも1つのベクトル演算子が複数のベクトル演算子
を含み、それらには第1のベクトル演算子及び第2のベ
クトル演算子が含まれる。この場合、この方法は、照会
処理ツリーの第1のベクトル演算子を、ベクトル・レコ
ード・ブロックに適用するステップと、ベクトル・レコ
ード・ブロックの制御を、第1のベクトル演算子から第
2のベクトル演算子に渡すステップと、照会処理ツリー
の第2のベクトル演算子を、ベクトル・レコード・ブロ
ックに適用するステップとを含む。
【0007】別の態様では、本発明はリレーショナル・
データベースを処理する方法を提供する。この方法は、
少なくとも1つのベクトル演算子を有する照会処理ツリ
ーを生成するステップと、少なくとも1つのベクトル演
算子を、リレーショナル・データベース内のデータから
導出されるベクトル・レコードのブロックに適用するス
テップとを含む。この方法は更に、リレーショナル・デ
ータベースから導出される複数の入力レコードからのデ
ータを用いて、ベクトル・レコード・ブロックを生成す
るステップを含む。ベクトル演算子をベクトル・レコー
ド・ブロックに適用するステップ同様、ベクトル・レコ
ード・ブロックを生成するステップは、照会処理ツリー
内の任意のポイントにおいて発生し得る。
【0008】更に別の態様では、本発明は、リレーショ
ナル・データベース内の照会ツリーを処理する方法を含
む。この方法は、照会ツリーの第1のベクトル演算子
を、リレーショナル・データベース内のデータから導出
されるベクトル・レコードのブロックに適用するステッ
プと、それに引き続き、照会処理ツリーの第2のベクト
ル演算子を、リレーショナル・データベース内のデータ
から導出されるベクトル・レコードのブロックに適用す
るステップとを含む。拡張として、この方法は更に、ベ
クトル・レコード・ブロックの制御を、第1のベクトル
演算子から第2のベクトル演算子に受け渡すステップを
含む。この制御の受け渡しは、ベクトル・レコード・ブ
ロックに関連付けられるベクトル記述子制御ブロックを
介して、容易に実現され得る。制御の受け渡しは、ベク
トル記述子制御ブロックへのアクセスを、第1のベクト
ル記述子から第2のベクトル記述子に受け渡すことによ
り、実現される。
【0009】上述の方法の各々に対する様々な拡張が、
本明細書で述べられる。更に、対応するシステム及びコ
ンピュータ・プログラム製品についても述べられる。
【0010】繰り返しになるが、本発明はリレーショナ
ル・データベース・システムにおいて、照会ツリーを構
成及び処理する、より効率的な方法及びシステムを含
む。このアプローチは任意のリレーショナル・データベ
ース・システムと共に使用され、様々なタイプのデータ
ベース演算子に適用することができる。それらには、走
査演算子、述語演算子、分類演算子、集合演算子、結合
演算子、及び算術演算子が含まれる。ベクトル演算子
は、照会処理ツリーの間に任意の時刻にコンパイルされ
るベクトル・レコード・ブロックに適用される。ベクト
ル・レコード・ブロックは、1ベクトル演算子により生
成されることができ、ベクトル記述子制御ブロックの使
用を通じて、制御が照会処理ツリーの第2のベクトル演
算子に渡される。利点として、本発明によるベクトル演
算子は、非常に多数のレコードに対して、1度呼び出さ
れるだけでよい。従って、本発明は、リレーショナル・
データベース内の照会の、より効率的で、時間を消費し
ない処理を提供する。
【0011】
【発明の実施の形態】1つの実施例では、本発明の照会
処理機構が、図1に示されるようなコンピュータ・シス
テムに組み込まれ、使用される。コンピュータ・システ
ム10は、例えば1つ以上の中央処理ユニット12、主
記憶装置14、及び1つ以上の記憶装置16を含む。こ
れらの各々について、次に述べることにする。
【0012】既知のように、中央処理ユニット(CP
U)12は、コンピュータ・システム10の制御中心で
あり、命令実行、割込みアクション、タイミング機能、
初期プログラム・ローディング、及び他のマシン関連機
能のためのシーケンス機構及び処理機構を提供する。中
央処理ユニットは、少なくとも1つのオペレーティング
・システムを実行し、これは既知のように、他のプログ
ラムの実行を制御し、周辺装置との通信を制御し、コン
ピュータ資源の使用を制御することにより、コンピュー
タの操作を制御するために使用される。本発明の照会処
理機構は、他のコンピュータ・プログラムのオペレーテ
ィング・システムと類似のオペレーティング・システム
により制御される。
【0013】中央処理ユニット12は主記憶装置14に
接続され、これは直接アドレス指定可能であり、中央処
理ユニットによるデータの高速処理を提供する。主記憶
装置はCPUと一緒に物理的に統合されるか、或いは独
立型のユニット内で構成される。
【0014】主記憶装置14はまた、記憶装置16に接
続され、これは他のタイプの記憶装置の他に、入出力装
置を含む様々な記憶装置を含み得る。1つの実施例で
は、データが主記憶装置14から記憶装置16に、及び
反対に記憶装置16から主記憶装置14に転送される。
【0015】本発明の照会処理機構を組み込み、また使
用するコンピュータ・システム10の1つの例は、IB
Mにより提供されるRS−6000コンピュータ・シス
テムである。しかしながら、これは1つの例に過ぎず、
本発明の機構は、本発明の趣旨から逸脱すること無し
に、他のコンピュータ環境または他のコンピュータ・シ
ステムとも一緒に使用され得る。
【0016】Oracleなどのリレーショナル・データベー
ス・システム(例えばOracle社発行のORACLE 7.0 User
Manual参照)、或いはSybase(例えばSybase社発行のSy
baseSQL Server 11 User Manual参照)は、現在データ
の記憶装置として、普及している。
【0017】図2に示されるように、リレーショナル・
データベース・システム20は通常、複数のデータベー
ス24を管理し(22)、それらの各々はたくさんのデ
ータベース・テーブル26の集合である。テーブル26
は行またはレコード28の集合を含み、全てのレコード
は同一のまたは類似の構造を有する。テーブルのスキー
マは、レコードを形成する列(または属性)30を記述
し、それにはその列のデータ・タイプ(例えば整数、文
字など)が含まれる。個々の行またはレコードは、各列
の実際の値を指定する。
【0018】データベース・テーブル26内のデータ
は、INSERTS(新たなレコードを追加する)、DELETES
(既存のレコードを除去する)、及びUPDATES(既存の
レコードを変更する)を通じて操作される。データは照
会言語を通じて照会され、その最も一般的なものはSQ
Lである。これに関しては、例えばSQL 2.0 Standar
d、ANSI、1990を参照されたい。SQLでは、
ユーザが関心を持つデータのサブセットが、 SELECT columns from {tables} WHERE condition のように指定される。SQLの構文は、本発明に関連し
て簡単に説明される。
【0019】照会を処理するために、データベース・シ
ステムは照会を演算子ツリーにコンパイルする。例え
ば、 SELECT a, sum(b) from t1 group by a のような単純な照会における演算子ツリー、及び照会の
入出力が図3に示される。
【0020】テーブルt1(40)が2つの列、すなわ
ち列a及び列bを含み、図示のように5つのレコードか
らの値を有する場合、照会の結果は、列a及び列sum
(b)を有するテーブルt2(42)となる。回答はaの
各固有の値に対して、aのその値を含む全てのレコード
からの、対応するbの値の合計を含む。照会が回答を返
却することを可能にする演算子ツリーが、図3の左側に
示される。
【0021】演算子ツリーはデータ・フロー・ツリーで
あり、そこではデータがリーフ・ノードに入力し、トッ
プから出力する。実行の制御フローは通常トップ・ダウ
ンであり、上位の演算子(利用者演算子)がその入力演
算子(製作者演算子)を呼び出し、自身が利用するレコ
ードを生成する。データは下から上に流れる。
【0022】SCAN(T1)演算子44はテーブルt
1を走査し、レコードを次の演算子SORT(X)46
に受け渡す。SORT(X)演算子は、テーブルt1の
全てのレコードが尽きるまで、SCAN(T1)にルー
プして戻る。SORT演算子はSCAN(T1)からの
レコードに遭遇するとき、或いは全てのレコードに遭遇
した後、分類済みのレコードのセットを生成し、これが
新たな一時テーブルX(図示せず)により表される。こ
の場合、レコードはそれらの列'a'の値により分類され
る。次に、制御が次の演算子SCAN(X)48に移行
する。この演算子はSCAN(T1)同様、テーブルX
を走査し、レコードを次の演算子AGG50に受け渡
す。入力レコードは、グループ化列の順に分類されてい
るので、AGG演算子は、それが以前に処理した時(す
なわちグループの最後)と異なる'a'値を有するレコー
ドに遭遇するとき、新たな合計を増分式に計算し、グル
ープ値及び合計を返却することができる。異なるデータ
ベース・システムは異なる演算子のセットを有するが、
後述のようなセットが通常、市販のデータベース・シス
テムにおいて実現されるという、関係代数及びSQL技
法にもとづく一般的な合意が存在する。
【0023】このツリー内の演算子は、1つまたは2つ
のいずれかの入力を取る。入力は単一のレコードまたは
レコードのセットである。次のテーブルは、様々な演算
子による演算、すなわち出力が入力の関数であることを
記述する。
【表1】
【0024】これらに対して多くの細かい区別が存在す
るが、これは本発明を理解する上で十分である。 SELECT a from t1 where b=c and e=f に対するツリー例が、図4に示される。
【0025】このツリーの実行は、通常、トップから下
流に向けて行われる。各演算子は、それが必要とする入
力を有するならば、入力を処理し、制御を呼び出し側演
算子に戻す。それ以外では、下位の演算子を呼び出し、
入力を生成する。演算子がセット入力を要求し、下位の
スカラ演算子がレコードだけを生成する場合、下位の演
算子が繰り返し呼び出される。演算子が従来通りセット
に作用するとき、それは通常、演算子がループ内でツリ
ー内の下位の演算子を呼び出し、これが"新たなレコー
ド無し"を返却するまで呼び出しが継続されて、達成さ
れる。例えば、図3では、SORT演算子は、その入力
から到来する全てのレコードを使い果たすまで、データ
をSCAN(X)演算子に渡さない。制御フローは次
に、利用者演算子から製作者演算子に移行するが、図3
では便宜上示されていない。
【0026】図4の例を参照すると、SCAN(T1)
演算子60は以前と同じである。演算子60は3つの演
算子、PRED(b=c)62、PRED(e=f)6
4及びSELECT66を提供する。PREDからのブ
ール出力は論理和され(68)、真偽値がSELECT
66の第2の入力となる。SELECTは、レコードが
述語の論理和を満足しない場合、SCANにループして
戻る。それ以外では、データを次の演算子PROJ70
に受け渡す。PROJ演算子はレコードから'a'値を抽
出し、SELECT演算子に更にもう1つレコードを返
却するように要求する。SELECT演算子が今度SC
AN演算子に要求し、サイクルはテーブルが尽きるまで
継続する。従って、制御は演算子間で、通常1度に1レ
コードをやり取りする。これらの演算子は通常、関数呼
び出しを通じて実現される。更に、非常に多様な入力の
組み合わせが存在するので(演算子、データ・タイプな
ど)、演算子は通常、a+bなどの単純な演算を実行す
るために、数10の命令を要求する。従って、データベ
ースは1レコードにつき、たくさんのCPUサイクルを
消費する傾向がある。
【0027】データベース・システムにおける望ましい
命題は、可能である都度、レコードのコピーを回避する
ことである。従って、レコードが幾つかの演算子を通じ
て流れるとき、各演算子はレコードの1コピーを指し示
すポインタを含む。レコードの幅(すなわちレコードが
含む列数)は、演算子ツリーを上流に移動するとき変化
し得る。例えば、MATH演算子は既存の列の表現にも
とづき、新たな列を生成し、PROJ演算子は、ツリー
上の上位の演算子にとって関連しない幾つかの列を除去
し得る。理想的には、データベース・システムは、上位
の演算において要求される列だけを送信したいが、演算
子当たりの空間再利用が高価であるので、一般にはレコ
ード・ベースでのみ実行される(すなわち、レコードは
通常、結局はそのレコードに対する演算に要求される全
ての真の計算済みの列に等しい空間を使用し、次のレコ
ードも同一の空間を使用する)。
【0028】図示のように、演算子は特定のオペランド
を要求する。1つ以上のオペランドが入力値を指定し、
通常、1つのオペランドが出力値を指定する。入力値の
指定は、通常ポインタを入力値に関連付けることによる
(しばしばこれは、レコード内の特定の列を指し示すポ
インタであるが、一時結果を指し示すポインタでもあっ
たりする)。出力は通常、ポインタにより指定され、そ
こに結果が記憶され得る。1演算子の出力オペランド
は、通常、ツリー内の更に上位の演算子に対する入力オ
ペランドとなる。
【0029】図5では、演算子及びそれらの入出力オペ
ランドが示される。照会は、 SELECT sum(a+b) from t1 である。
【0030】SCAN演算子は、入力としてテーブルを
要求するだけである。走査の出力は、次のレコード80
を指し示すポインタである。多くのレコードが、1デー
タ・ページ82上に存在し得る。そして、SCAN演算
子は、ページ内の全てのレコードにわたって繰り返し、
次のページに進む。次の演算子ADDは、入力として、
2つのオペランド'a'84及び'b'86の列値を取る。
オペランドは、(図示のように)適切な列を指し示す直
接ポインタとして、または対応するレコードまでのオフ
セットとして指定され得る。本発明の以下の説明では、
後者の場合を想定する。各オペランドに対して要求され
る追加の情報は、オペランドの長さ及びデータ・タイプ
である。ADDにおける結果オペランドは、a+bが記
憶され得る一時空間90である。最後の演算子SUM
は、入力オペランドとして、現レコードのa+bの値を
取り、全てのレコードに対して、合計を結果オペランド
領域92内に計算する。従って、合計に対するオペラン
ド・ポインタは、SCANが次のレコードに移動すると
き、変化しない。それに対して、SCAN及びADDの
両者においては、オペランドは現レコードに直接的また
は間接的に変更される。
【0031】こうしたデータベース演算がいかに高価で
あるかを示すために、TPCDベンチマークのQ1につ
いて考えてみよう。照会の単純化したバージョンを下記
に示す。 SELECT 1_returnflag,1_statusflag,sum(L_extendedpri
ce) from lineitem where 1_shipdate<=date('04/09/1998')-90 days group by 1_returnflag,1_statusflag order by 1_returnflag,1_statusflag IBMのDB2(例えば、"DB2 Parallel Edition、IBM
Software Solutions、1995"を参照)などの、通常のデ
ータベース・システムにおけるこの照会の実行ツリー
が、図6に示される。
【0032】上述のように、データベース・システムに
おける主な不利益は、演算子呼び出しのオーバヘッドに
由来する。これは特に不利である。なぜなら、演算子は
通常1レコードにつき呼び出され、これは入力としてセ
ットを要求する演算子にも当てはまるからである。なぜ
なら、それらの入力は、1度に1レコードが生成され、
通常、演算子がその1レコードに対して、増分式に実現
されるからである。例えば、AGG演算子は、それが遭
遇する新たなレコードにもとづき、新たなSUMを計算
する。
【0033】それに対して、本発明では、(ベクトル・
ブロック生成コードを用いて)ベクトル・レコード・ブ
ロックが、第1のベクトル演算子内で生成され、次に制
御が照会ツリーの第2のベクトル演算子に渡される。こ
のことは、より効率的な照会処理に導き、任意の通常の
データベース演算子に適用され得る。
【0034】本発明は以下では、データベース演算子ツ
リーの実行と同一の目的を達成する擬似Cコードを用い
て説明される。次の単純な例について、最初に論じるこ
とにする。 SELECT sum(a+b) from t1 where d = 30
【0035】上述のように、データベース処理は、本質
的に演算子に対する再帰呼び出しであり、ツリーのプリ
オーダ横断のようなものである。しかしながら、本発明
の目的のために、等価な"反復"表現について論じること
にし、これは図7に対応して、次のように示される。 ans = 0 start scan of T1; /* これは実行される第1の演算子である */ while (!end-of-tuple) { fetch columns A, B and D from tuple; /* 走査T1 */ if (d ! = 30) goto end-of-loop; /* 選択 */ temp = add (a,b); /* 加算 */ ans = sum (ans, temp); /* 合計 */ end-of-loop: }
【0036】前記のように、処理モードはあらゆるレコ
ードに対して、演算子の連鎖を入力する。しかしなが
ら、幾つかのレコードは、例えばそれらがSELECT
評価を失敗するとき、連鎖を更に上流には進行しない。
このモードでは、製作者演算子(すなわち入力となる演
算子)は、高々1レコードへのハンドルを、利用者演算
子に提供する必要がある(ハンドルは、演算子が何を実
行するかに依存して、入力レコードよりも広かったり、
狭かったりする)。
【0037】本発明により、処理は次のようになる。 ans = 0 start scan of T1; while (!end-of-tuple) { block = NULL; while (#tuple<blocksize) /* 第1の演算子に対してバッファを生成 */ { fetch columns A, B and D from tuple; /* 走査T1 */ block = block + tuple; /* 組をブロックに追加 */ } newblock = predicate (block, d= 30, block); /* 述語をブロック全体に適用し、新たなブロックを生成。これ がいかに効率的に実現されるかに関しては、後述 */ nextblock = add (block, block->a block->b, newblock); /* ブロック全体にベクトルのような演算を実行 */ ans = sum (ans, nextblock, nextblock->c); /* 次のブロックのc列の合計を計算し、それを既存の合計に加 算 * / }
【0038】ここで注意する点は、各レコードにつき1
度呼び出されるPRED、ADD、SUMのような演算
子の代わりに、最初の演算子、すなわちこの場合にはS
CANが、レコードの"ブロック"を生成するベクトル・
ブロック生成機能を開始することであり、この例では、
各演算子がこのブロックに作用する。用語"ベクトル・
レコードのブロック(またはベクトル・レコード・ブロ
ック)"及び"ベクトル・ブロック"は、本明細書を通じ
て、互換に使用される。
【0039】本発明の構造は、各演算子に入力ブロック
及び出力ブロックを持たせ、演算子自体にベクトル演算
子を含ませる。1つのレコードに演算を実行する代わり
に、演算子がブロック全体に作用する。入力ブロック及
び出力ブロックは、別々のメモリ領域であり得る。しか
しながら、次に示す2つの最適化が可能である。
【0040】1.演算子がレコードの数を減少すると
き、ブロック内のレコードが"除去済み"としてマークさ
れ得る。これは、例えばポインタまたはビットのベクト
ルを維持することにより達成される(後述)。
【0041】2.演算子が新たな値のセットを生成する
とき(例えば新たな式を計算するMATH演算子な
ど)、入力演算子が空間を事前に割当て(すなわち、各
レコードを空白により拡張する)、そこに利用者演算子
が書込むことができる。これは特に有用である。なぜな
ら、しばしば演算子の連鎖が同一の列値を要求し、その
度に列値をある演算子から次の演算子にコピーすること
は、非効率的であるからである。
【0042】従来式に1つのレコードに作用する演算子
のシーケンスについて、考えてみよう(シーケンスを決
定する幾つかのパラメータについては、後述する)。そ
の次に、本発明に従い、演算子がベクトル化演算に変換
されるときに、受け渡される必要のあるデータ構造につ
いて述べる。図8は、汎用演算子OPRを示す。
【0043】通常のデータベース処理の間、演算子は現
レコードの列に作用する。ベクトル化演算における演算
子は、現レコードのセットまたはブロックに作用する。
現レコードのセット(及び潜在的にそれらの列値)が、
ベクトル・ブロック100として指定される。異なる演
算子に対して要求されるレコード内の列値が、ベクトル
・ブロック内の列102にコピーされるか、基本データ
・レコード内に保持される。後者の場合、レコード(入
力または出力オペランド)を指し示すポインタ104ま
たは106が、ベクトル・ブロック内に保持される。例
えば、ポインタは、図5の80及び81に示される入力
レコードを指し示すことができる。
【0044】本発明により、図5に示されるオペランド
が、ベクトル指定により置換される。前述のように、ベ
クトル・オペランドに対するオフセット表現が使用され
得る。オフセットは、ベクトル・ブロック内のレコード
までのオフセット、またはコピーされなかったデータ・
レコードまでのオフセットのいずれかである。換言する
と、オペランドは次の3つ組により指定され得る。 (vector_table_pointer, copied?,[11/12/O], offset) ここでvector_table_pointerは、ベクトル・ブロックの
開始へのポインタであり、copied?は、オペランドがベ
クトル・ブロック内で見い出されるか否かを示すブール
値であるか、または入力または出力レコード・ポインタ
による間接手段を使用する。特定の間接列、すなわち入
力または出力レコード・ポインタが、そのオペランドの
タイプ、すなわち入力110または出力112により決
定されるか、或いは明示的にI1(左側の入力)、I2
(右側の入力)またはO(出力)として指定され得る。
最後に、オフセットは、レコードの開始から、オペラン
ド値が見い出される位置までのバイト数である。通常、
OPRから明らかでない場合、オペランド内のバイト数
及びそのデータ・タイプが指定される必要がある。
【0045】更に追加の補助データ構造が、各入力及び
出力レコード指定に対して必要とされる。特定の演算子
(例えばPRED)は、レコードの数を低減する。結果
的に、たとえベクトルの連鎖を完全なベクトル・ブロッ
ク上で開始しても、幾つかのレコードが連鎖内の異なる
演算子により除去され得る。従って、同一のベクトル・
ブロックを使用する連鎖内の上位の演算子に対して、ベ
クトル・テーブル内のどのレコードが要求されるかを示
せることが必要である。入力レコード・データ構造12
0は、1つのこうした方法であり、そこには現レコード
番号のアレイが保持される。レコード番号は基本的に、
ベクトル・ブロック内のそのレコードの位置である。出
力レコード122は、結果オペランドに対する類似の構
造である。ベクトル・ブロック内の有効レコードのセッ
トをサブセット化する他の任意選択も存在し、もう1つ
の任意選択について以下で論じることにする。
【0046】図9は、本発明に従うベクトル記述子制御
ブロックの1つの実施例を示す。この制御ブロックは、
図示のベクトル・レコード・ブロックに関連付けられ
る。ベクトル記述子は、ベクトル・ブロックに関する全
ての情報を含むインメモリ制御ブロックであり、その内
容はベクトル演算子がそれらの機能を実行するために必
要とする。この例では、ベクトル記述子制御ブロック情
報が、次のようにコード化される。
【0047】コード1:ベクトル・ブロックのアドレ
ス。これはまた、ベクトル・ブロックが空でない場合、
そのベクトル・ブロックの最初のベクトル・レコードの
アドレスでもある。 コード2:ベクトル・ブロック内のベクトル・レコード
の数。この例では3が任意に選択されている。 コード3:ベクトル・ブロックに追加される次のベクト
ル・レコードが存在する場合、そのレコードの位置のア
ドレス。これはベクトル・ブロック内の最後のベクトル
・レコードのアドレスを越えるnバイトであり、nは各
ベクトル・レコードのサイズである。この例では、ベク
トル・レコードが等しいサイズと仮定する。 コード4:各ベクトル・レコードのサイズであり、再度
16が例として選択されている。 コード5:出力レコード・ポインタまでのオフセット。
各ベクトル・レコードは、ベクトル・ブロックの特定の
使用に対して要求される場合に、そのベクトル・レコー
ドに関連する出力レコードのアドレスを含むフィールド
を有する。例えば、これはグループ化演算において必要
であり、この場合、各ベクトル・レコードが幾つかの可
能なグループの1つに属するデータを含む。 コード6:入力レコード・ポインタが要求される場合、
そこまでのオフセット。 コード7:各ベクトル・レコードを生成するために要求
される情報。この情報は、ベクトル・レコード内に配置
される入力値のアドレス及びサイズ、並びにそれらのベ
クトル・レコード内でのオフセット(すなわち、各ベク
トル・レコードに対して、何をコピーし、それをどこに
コピーするか)のリストを含み得る。
【0048】ベクトル・レコード・ブロックの制御は、
関連付けられるベクトル記述子制御ブロックの制御を移
すことにより、照会処理ツリー内の第1のベクトル演算
子から第2のベクトル演算子に渡される。これは第2の
ベクトル演算に、例えばポインタにより、ベクトル記述
子へのアクセスを提供することにより達成される。ベク
トル記述子制御ブロックは、照会入力フェーズにおいて
コンパイルされる。制御ブロック内の情報は、ベクトル
演算の間に、ベクトル・レコード・ブロックをアクセス
するために使用される。
【0049】上で概要を述べたベクトル・ブロックの任
意選択について、以下で詳述することにする。
【0050】ベクトル・ブロック:本発明によるベクト
ル処理の中心的なテーマは、1つ以上の一時テーブルの
存在であり、これはレコード・ポインタの他に、様々な
一時列を含む。このレコードのブロックまたはテーブル
は、ここではベクトル・テーブルまたはベクトル・ブロ
ック100として参照される。ベクトル・テーブルは、
各々がMバイトのN個の一時レコードとして見なされる
記憶領域である。図8では、N=9、M=28であり、
すなわち各列が4バイト長と仮定する。ここでNは最大
ベクトル・サイズ、Mは1レコード当たり必要とされ得
る最大バイト数である。ベクトル・ブロックは通常、照
会処理の最初に、例えばベクトル・ブロック生成コード
を用いて生成され、照会の終わりまでアクティブに維持
され得る。ベクトル・ブロック生成コードは、本明細書
に従って、当業者により生成され得る。しかしながら一
般的に、レコードのブロックは、照会処理の任意の時点
に生成(割当て)及び破壊(割当て解除)され得る。
【0051】ベクトル・ブロックを考察する別の方法
は、この記憶領域が照会処理の様々なステージにおい
て、再フォーマットされ得るということである。照会処
理の間の任意の時点iにおいて、ベクトル・ブロックは
N(i)×M(i)バイトの記憶領域と見なされ、ここ
でN(i)×M(i)は、このベクトル・ブロックのた
めに使用可能な一時領域に過ぎない。このことはまた、
1度に2つ以上のアクティブなベクトル・テーブルを有
する可能性を大きくする。JOINなどの幾つかの照会
では、異なるデータベース入力テーブル(結合されるテ
ーブル)及び出力テーブル(生成されるテーブル)に対
応する、異なるベクトル・テーブルを有することが、よ
り効率的である。
【0052】ベクトル列:ベクトル列は、ベクトル・テ
ーブル内のオフセット、並びに潜在的にデータ・タイプ
及び長さにより定義される。オフセットは0乃至M−1
である。しかしながら、効率化のために、オフセットを
ワード境界上で指定することが最善である。ベクトル列
のこの定義は、テーブル空間の再利用を可能にする。例
えば、8バイトの空間は、ある演算においては2つの4
バイト整数として使用され、別の演算では、8バイトの
浮動小数点数として使用され得る。データベース・コン
パイラは、レコード空間の使用を追跡する。図8の最初
の2つのベクトル列は、レコードを指し示すポインタを
含み、残りの5列は、各レコードに対する実際の列値を
含む。
【0053】ベクトル・オペランド:ベクトル演算子は
通常、1つ以上のベクトル・オペランドに作用し、ベク
トル・オペランドを出力として生成する。これらのオペ
ランドの幾つかはベクトル列であり、他は(従来のスカ
ラ演算子内で見られるような)スカラ・オペランドであ
り得る。結果もまた、(集合体内で見られるような)ス
カラ・オペランドであり得る。オペランドがベクトル列
の場合、それはベクトル・ブロックに内在するか(copi
ed?が真にセットされているとき)、入力または出力ポ
インタを介して、間接的にアクセスされ得る。レコード
を間接的にアクセスする特殊な場合は、次のN個のレコ
ードをアクセスすることによる。
【0054】次に示す状況があり得る。
【0055】ベクトル列オペランドが、固定のデータ・
タイプ及び幅を有する(ベクトル・オペコード内のオペ
ランドとして指定される)。
【表2】
【0056】データ・レコードをコピーするか、または
指し示すかの実際の選択は、性能的なトレードオフを伴
う。コピーは、次に示す幾つかの最適化にもとづき、非
常に安価に達成され得る。
【0057】1.列(a(4)、b(4)、c(8)、
d(8)、e(8)、f(2))を有する入力レコー
ド't'について、考えてみることにする。()内の数
は、列のサイズを示す。次の演算子が列a、b、e及び
fを要求するものと仮定する。その場合、4つの列を1
度に1つずつコピーする代わりに、2つのメモリ・コピ
ー、すなわち、第1は列aのオフセットで始まる8バイ
ト、第2は列eで始まる10バイトが使用され得る。長
いコピーは、1つの小さなコピーとほとんど同程度に効
率的であるので、この場合の命令の数は、事実上半分に
なる。
【0058】2.次の2つの演算子が、a+e及びb+
fであると仮定する。明らかに、それらに対するブロッ
ク演算は、16バイトを要求する(各合計に対して8バ
イト)。それらのために新たな空間を割当てる代わり
に、レコード全体が1メモリ・コピーにおいて、ブロッ
ク内にコピーされ、バイト8乃至15が列a及びbとし
て使用され、バイト16乃至23が列e及びfとして使
用される。
【0059】レコードのサブセット化:ベクトル列オペ
ランド内の全てのレコード値が、ベクトル演算子により
使用される必要がある訳ではない。的確なサブセットが
多様に指定され得る。
【表3】
【0060】ベクトル列のサブセットを選択する別の機
構は、間接アドレス指定を介する。ベクトル・ブロック
に対する指標を含む別の記憶領域が存在する。これらの
指標は、ベクトル・ブロック内のレコードのサブセット
を選択する。ビット・ベクトルに対して、"or"、"and"
及び"not"などの論理演算と等価なものを容易にするた
めに、これらの指標は常時、順序化形式で記憶される。
従って、ビット・ベクトルの"論理積"は、2つの指標ベ
クトルから共通指標のサブセットを取り出すことに等価
である。指標ベクトル式アプローチは、レコードの小セ
ットが選択されるか、または同義的に、ビット・ベクト
ル内の1の密度が低いときのみ、ビット・ベクトル式ア
プローチに比較して効率的である。ビット・ベクトル・
マスクの下でベクトル演算を実行する際、全てのビット
が調査されなければならない。ビット・ベクトル内の特
定のビットの調査は、相当に高価である。このオーバヘ
ッドは、ビットの総数(ベクトル長)に比例する。指標
ベクトルを用いることにより、オーバヘッドは、テーブ
ル内の非ゼロの数またはアクティブ行に比例する。指標
ベクトルが、ベクトル・ブロックを指し示すメモリ・ポ
インタとして記憶される場合、間接アドレス指定におい
て、追加のコストが掛からない。
【0061】ベクトル演算子例:ベクトル化形式の演算
子の幾つかの詳細について、次に論じることにする。図
10は、入力レコード値がコピーされ、ビット・マップ
が使用されるときのデータ構造を表す。実行される照会
は、 SELECT sum(a+b) from t1 wherein d=30 である。図10では、ベクトルがレコードのセットを含
む。各レコードは演算子の連鎖に関連する列、すなわち
A、B、D及びA+Bを含む。列値は入力データ・レコ
ードからコピーされるので、入力データ・レコード・ポ
インタ130がNULLを指し示す。同様に、ベクトルに対
する全ての出力計算がこのベクトル領域に記憶され、出
力レコード・ポインタ132がまたNULLを指し示す。
【0062】演算子SCANは入力として、次のものを
取る。 テーブル(この場合T1)。 コピーされる必要のある列(入力レコード内のそれらの
オフセット/タイプ/長さ、及び出力ベクトル内のそれ
らのオフセット/タイプ/長さ)。出力列としてベクト
ル列A、B及びDを指し示す3つのポインタにより、示
される。SCANはまた、オール1を含むビットマップ
(図示せず)をセットする。
【0063】演算子PREDは入力として、次のものを
取る。 RELOP(演算子、この場合=)。 左側。この場合、定数30。 右側。この場合、D値のベクトル。 PREDの出力は、述語が真でない箇所に0を有するビ
ット・ベクトル(図示せず)である。
【0064】SELECTはこの場合、ノップ(NO-O
P)である。
【0065】MATHは入力として、次のものを取る。 OP(演算子。この場合+)。 オペランド。この場合、ベクトル列A及びB。 結果。この場合、結果のA+Bを含むベクトル列。
【0066】AGGは入力として、次のものを取る。 OP(演算子。この場合、合計)。 オペランド。すなわち、A+Bを含むベクトル列。 結果(一時変数134に記憶される)。
【0067】入力レコードがコピーされない場合の実施
例は、図11に示されるようなベクトル領域を含む。
【0068】この例では、ベクトル領域140が、1列
A+Bに対応する空間だけを含む。更に、入力レコード
142が提供され、レコードはデータ/ディスク・ペー
ジ144のメモリ表現145に配置される。出力レコー
ド列146は依然、NULLだけを含む。ベクトル演算のほ
とんどの構造は、図10に示されるものと同様であり、
明確なためにここでは示さない。
【0069】SORT及びJOIN演算子について、次
に論じることにする。
【0070】SORT:この場合、入力はテーブル内の
N個のレコードのセットであり、出力は入力テーブルを
指標化する指標ベクトルである。或いは、出力が指標ベ
クトルと一緒に、分類済みキー列を含むテーブルであっ
てもよい。これは分類がメモリに対してブロック化さ
れ、幾つかのサブ分類がテーブルのセクションに対して
実行されるときに役立つ。この時、分類済み(キー、指
標)テーブルが併合され、単一の分類済みテーブルが生
成される。2つの分類済みベクトルを併合するベクトル
分類−併合演算子を定義することができる。
【0071】指標ベクトルを用いて入力テーブルを指標
化することにより、出力テーブルを生成するベクトル順
列演算も、当業者により定義され得る。これは通常、分
類の間に生成されるキーに対する指標に従い、テーブル
を順列化するために使用される。あるテーブルから別の
テーブルへの行の移動が、入力または出力上の指標ベク
トルを用いて、ループ・モードにおいて非常に効率的に
実行され得る。テーブルがメモリ内に固定され、行ポイ
ンタが使用可能であれば、単一の呼び出し内のCプログ
ラムは、本質的にオーバヘッド無しに、演算全体を実行
できる。
【0072】ベクトルJOIN演算子(分類済みキーに
対する−併合結合):2つのテーブルが所望のキーに対
して分類済み(または指標化済み)であり、等しいキー
に対して、2つのテーブルが結合されているものと仮定
する。この場合、3つのベクトル・テーブルが想定さ
れ、それらの2つは2つの入力テーブルにそれぞれ対応
し、別の1つは出力テーブルに対応する。当初、2つの
入力ベクトル・テーブルの各々は、N行またはレコード
を有し、これらの各々は2つの入力テーブルに由来す
る。一般的に、Nは2つのテーブルにおいて異なる。"
現処理指標ポインタ"の概念も導入される。これらのポ
インタは、テーブル間の結合演算のステータスを追跡す
る。当初、両方の入力ベクトル・テーブルは、各々が入
力テーブルに由来する1ブロック(関連する列)をロー
ドされる。次に、ベクトル結合演算子が呼び出される。
この演算子は、次の条件、すなわち処理が入力テーブル
の1つ上で尽きるか、または出力ベクトル・テーブルが
フルであるとき、復帰する。
【0073】出力ベクトル・テーブルがフルの場合、そ
の内容が出力テーブルに転送される。同様に、入力ベク
トル・テーブルの1つが尽きた場合、別のブロックが適
切な入力テーブルから、対応するベクトル・テーブルに
コピーされ、処理が再開される。従って、ベクトル結合
演算では、処理が尽きるまで、制御が利用者と製作者と
の間で行き来する。
【0074】ベクトル結合演算子(ネスト化ループ結
合):ネスト化ループ結合は、論理的に外積である。入
力テーブルの各々が、幾つかのブロックにブロック化さ
れ得る。K1及びK2を、2つの入力テーブル内のブロ
ックの数としよう。この時、論理的には、2つのテーブ
ル上の外積は、K1×K2ベクトル外積に等価である。
各ベクトル外積は、キーに対する順序化が存在しない以
外は、上述のように処理される。この機構により、ベク
トル・ネスト化ループ結合が、ベクトル併合結合と類似
と思われる。ベクトル併合結合では、入力テーブルが順
次アクセスされ、以前のブロックを引き返す必要がな
い。しかしながら、ネスト化ループ結合では、2つの入
力テーブルからのベクトル・ブロックの全ての可能な組
み合わせK1×K2に対して、ベクトル演算子が呼び出
される。
【0075】上述の議論から、当業者には、本発明がリ
レーショナル・データベース・システム内の照会ツリー
を構成及び処理する、より効率的な方法及びシステムを
提供することが理解されよう。このアプローチがリレー
ショナル・データベース・システムと一緒に使用され、
走査演算子、述語演算子、分類演算子、集合演算子、結
合演算子、及び算術演算子などの、様々なタイプのデー
タベース演算子に適用され得る。ベクトル演算子は、照
会処理ツリーの間の任意の時刻にコンパイルされるベク
トル・レコード・ブロックに適用される。ベクトル・レ
コード・ブロックが、1ベクトル演算子により生成さ
れ、制御がベクトル記述子制御ブロックの使用を通じ
て、照会処理ツリーの第2のベクトル演算子に渡され
る。有利な点として、本発明によるベクトル演算子は、
非常に多数のレコードに対して、1度呼び出されるだけ
でよい。従って、本発明はリレーショナル・データベー
ス内の照会を、より効率的に、時間を消費しないで処理
する。
【0076】本発明は、コンピュータ使用可能媒体を含
む1つ以上のコンピュータ・プログラム製品内に含まれ
得る。そして媒体が、本発明の機構を提供及び容易にす
るコンピュータ読出し可能プログラム・コード手段を含
む。製品はコンピュータ・システムの一部として含まれ
るか、或いは別々に販売される。当業者は、上述の開示
にもとづき提供される概念を、容易に実現することがで
きよう。
【0077】本発明の特定の実施例が、付随する図面に
おいて示され、また詳細に上述されてきたが、本発明が
ここで述べられた特定の実施例に制限されるものではな
く、多数の再構成、変更及び置換が、本発明の範囲から
逸脱すること無しに可能であることが理解されよう。
【0078】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0079】(1)リレーショナル・データベースに照
会処理ツリーを適用する方法であって、 a)前記リレーショナル・データベースから導出される
複数の入力レコードからのデータを用いて、ベクトル・
レコード・ブロックを生成するステップと、 b)前記照会処理ツリーの少なくとも1つのベクトル演
算子を、前記ベクトル・レコード・ブロックに適用する
ステップと、を含む、方法。 (2)前記少なくとも1つのベクトル演算子が、第1の
ベクトル演算子及び第2のベクトル演算子を含む複数の
ベクトル演算子を含み、前記方法が、前記照会処理ツリ
ーの前記第1のベクトル演算子を、前記ベクトル・レコ
ード・ブロックに適用するステップと、前記ベクトル・
レコード・ブロックの制御を、前記第1のベクトル演算
子から前記第2のベクトル演算子に受け渡すステップ
と、前記照会処理ツリーの前記第2のベクトル演算子
を、前記ベクトル・レコード・ブロックに適用するステ
ップと、を含む、前記(1)記載の方法。 (3)前記ベクトル・レコード・ブロックを生成するス
テップa)が、前記第1のベクトル演算子により達成さ
れる、前記(2)記載の方法。 (4)前記ベクトル・レコード・ブロックを生成するス
テップが、ベクトル記述子を、前記ベクトル・レコード
・ブロックをアクセスするための制御ブロックとして使
用するステップを含み、前記ベクトル・レコード・ブロ
ックの制御を、前記第1のベクトル演算子から前記第2
のベクトル演算子に受け渡すステップが、前記ベクトル
記述子制御ブロックへのアクセスを、前記第1のベクト
ル演算子から前記第2のベクトル演算子に受け渡すステ
ップを含む、前記(2)記載の方法。 (5)前記ベクトル・レコード・ブロックを生成するス
テップa)が、複数のベクトル・レコードを有するベク
トル・レコード・ブロックを生成するステップと、前記
ベクトル・レコード・ブロックの複数のベクトル・レコ
ードに対して、少なくとも1つの出力レコードを生成す
るステップと、を含む、前記(4)記載の方法。 (6)前記生成ステップa)の前記ベクトル・レコード
・ブロックが、前記少なくとも1つの出力レコードを指
し示すポインタ用の列と、前記複数の入力レコードから
のデータを有する複数の列とを含む、前記(5)記載の
方法。 (7)前記ベクトル・レコード・ブロックのコンパイル
時に、メモリを事前に割当てるステップを含む、前記
(1)記載の方法。 (8)前記少なくとも1つのベクトル演算子が、走査演
算子、述語演算子、分類演算子、集合演算子、結合演算
子、及び算術演算子の少なくとも1つを含む、前記
(1)記載の方法。 (9)前記ステップa)及びb)を、前記照会処理ツリ
ーの処理内の任意のポイントにおいて達成するステップ
を含む、前記(1)記載の方法。 (10)前記生成ステップa)が、前記リレーショナル
・データベースから導出される複数の入力レコードから
のデータを用いて、n個(n≧1)の追加のベクトル・
レコード・ブロックを生成するステップを含み、前記適
用ステップb)の前記少なくとも1つのベクトル演算子
が、複数のベクトル演算子を含み、前記複数のベクトル
演算子の各々が、前記ベクトル・レコード・ブロック及
び前記n個の追加のベクトル・レコード・ブロックの少
なくとも1つに適用される、前記(1)記載の方法。 (11)リレーショナル・データベースを処理する方法
であって、 a)少なくとも1つのベクトル演算子を有する照会処理
ツリーを生成するステップと、 b)前記少なくとも1つのベクトル演算子を、前記リレ
ーショナル・データベース内のデータから導出されるベ
クトル・レコードのブロックに適用するステップと、を
含む、方法。 (12)前記適用ステップb)に先立ち、前記リレーシ
ョナル・データベースから導出される複数の入力レコー
ドからのデータを用いて、前記ベクトル・レコード・ブ
ロックを生成するステップを含む、前記(11)記載の
方法。 (13)前記ベクトル・レコード・ブロックの生成が、
前記照会処理ツリーの少なくとも1つのベクトル演算子
により達成される、前記(12)記載の方法。 (14)前記少なくとも1つのベクトル演算子が、第1
のベクトル演算子及び第2のベクトル演算子を含む複数
のベクトル演算子を含み、前記適用ステップb)が、前
記第1のベクトル演算子を前記ベクトル・レコード・ブ
ロックに適用するステップと、前記ベクトル・レコード
・ブロックの制御を、前記第1のベクトル演算子から前
記第2のベクトル演算子に受け渡すステップと、前記第
2のベクトル演算子を、前記ベクトル・レコード・ブロ
ックに適用するステップと、を含む、前記(11)記載
の方法。 (15)前記ベクトル・レコード・ブロックの制御を、
前記第1のベクトル演算子から前記第2のベクトル演算
子に受け渡すステップが、ベクトル記述子制御ブロック
へのアクセスを、前記第1のベクトル演算子から前記第
2のベクトル演算子に受け渡すステップを含む、前記
(14)記載の方法。 (16)前記少なくとも1つのベクトル演算子が、テー
ブル走査演算子、述語演算子、分類演算子、集合演算
子、結合演算子、及び算術演算子の少なくとも1つを含
む、前記(11)記載の方法。 (17)リレーショナル・データベース内の照会ツリー
を処理する方法であって、 a)前記照会ツリーの第1のベクトル演算子を、前記リ
レーショナル・データベース内のデータから導出される
ベクトル・レコードのブロックに適用するステップと、 b)前記適用ステップa)に引き続き、前記照会ツリー
の第2のベクトル演算子を、前記リレーショナル・デー
タベース内のデータから導出される前記ベクトル・レコ
ード・ブロックに適用するステップと、を含む、方法。 (18)前記適用ステップb)に先立ち、前記ベクトル
・レコード・ブロックの制御を、前記第1のベクトル演
算子から前記第2のベクトル演算子に受け渡すステップ
を含む、前記(17)記載の方法。 (19)前記ベクトル・レコード・ブロックの制御を、
前記第1のベクトル演算子から前記第2のベクトル演算
子に受け渡すステップが、前記ベクトル・レコード・ブ
ロックに関連付けられるベクトル記述子制御ブロックへ
のアクセスを、前記第1のベクトル演算子から前記第2
のベクトル演算子に受け渡すステップを含む、前記(1
8)記載の方法。 (20)リレーショナル・データベースに照会処理ツリ
ーを適用するシステムであって、前記リレーショナル・
データベースから導出される複数の入力レコードからの
データを用いて、ベクトル・レコード・ブロックを生成
する手段と、前記照会処理ツリーの少なくとも1つのベ
クトル演算子を、前記ベクトル・レコード・ブロックに
適用する手段と、を含む、システム。 (21)前記ベクトル・レコード・ブロックが複数の列
を含み、前記複数の列の少なくとも1つが、前記ベクト
ル・レコード・ブロックのベクトル・レコードにおい
て、出力レコードを指し示すポインタを含み、前記生成
する手段が、前記ベクトル・レコード・ブロックのベク
トル・レコードにおいて、前記出力レコードを生成する
手段を含む、前記(20)記載のシステム。 (22)前記少なくとも1つのベクトル演算子が、第1
のベクトル演算子及び第2のベクトル演算子を含む複数
のベクトル演算子を含み、前記システムが、前記照会処
理ツリーの前記第1のベクトル演算子を、前記ベクトル
・レコード・ブロックに適用する手段と、前記ベクトル
・レコード・ブロックの制御を、前記第1のベクトル演
算子から前記第2のベクトル演算子に受け渡す手段と、
前記照会処理ツリーの前記第2のベクトル演算子を、前
記ベクトル・レコード・ブロックに適用する手段と、を
含む、前記(20)記載のシステム。 (23)前記ベクトル・レコード・ブロックに関連付け
られるベクトル記述子制御ブロックを含み、前記ベクト
ル・レコード・ブロックの制御を、前記第1のベクトル
演算子から前記第2のベクトル演算子に受け渡す手段
が、前記ベクトル記述子制御ブロックへのアクセスを、
前記第1のベクトル演算子から前記第2のベクトル演算
子に受け渡す手段を含む、前記(22)記載のシステ
ム。 (24)前記少なくとも1つのベクトル演算子が、走査
演算子、述語演算子、分類演算子、集合演算子、結合演
算子、及び算術演算子の少なくとも1つを含む、前記
(20)記載のシステム。 (25)リレーショナル・データベースを処理するシス
テムであって、少なくとも1つのベクトル演算子を有す
る照会処理ツリーを生成する手段と、前記少なくとも1
つのベクトル演算子を、前記リレーショナル・データベ
ース内のデータから導出されるベクトル・レコードのブ
ロックに適用する手段と、を含む、システム。 (26)前記リレーショナル・データベースから導出さ
れる複数の入力レコードからのデータを用いて、前記ベ
クトル・レコード・ブロックを生成する手段を含む、前
記(25)記載のシステム。 (27)前記少なくとも1つのベクトル演算子が、第1
のベクトル演算子及び第2のベクトル演算子を含む複数
のベクトル演算子を含み、前記適用する手段が、前記第
1のベクトル演算子を前記ベクトル・レコード・ブロッ
クに適用する手段と、前記ベクトル・レコード・ブロッ
クの制御を、前記第1のベクトル演算子から前記第2の
ベクトル演算子に受け渡す手段と、前記第2のベクトル
演算子を前記ベクトル・レコード・ブロックに適用する
手段と、を含む、前記(25)記載のシステム。 (28)前記ベクトル・レコード・ブロックに関連付け
られるベクトル記述子制御ブロックを含み、前記ベクト
ル・レコード・ブロックの制御を、前記第1のベクトル
演算子から前記第2のベクトル演算子に受け渡す手段
が、前記ベクトル記述子制御ブロックへのアクセスを、
前記第1のベクトル演算子から前記第2のベクトル演算
子に受け渡す手段を含む、前記(27)記載のシステ
ム。 (29)リレーショナル・データベース内の照会ツリー
を処理するシステムであって、前記照会ツリーの第1の
ベクトル演算子を、前記リレーショナル・データベース
内のデータから導出されるベクトル・レコードのブロッ
クに適用する手段と、前記照会ツリーの第2のベクトル
演算子を、前記リレーショナル・データベース内のデー
タから導出される前記ベクトル・レコード・ブロックに
適用する手段と、を含む、システム。 (30)前記ベクトル・レコード・ブロックの制御を、
前記第1のベクトル演算子から前記第2のベクトル演算
子に受け渡す手段を含む、前記(29)記載のシステ
ム。 (31)前記ベクトル・レコード・ブロックに関連付け
られるベクトル記述子制御ブロックを含み、前記ベクト
ル・レコード・ブロックの制御を、前記第1のベクトル
演算子から前記第2のベクトル演算子に受け渡す手段
が、前記ベクトル記述子制御ブロックへのアクセスを、
前記第1のベクトル演算子から前記第2のベクトル演算
子に受け渡す手段を含む、前記(30)記載のシステ
ム。 (32)前記第1のベクトル演算子及び前記第2のベク
トル演算子の各々が、テーブル走査演算子、述語演算
子、分類演算子、集合演算子、結合演算子、及び算術演
算子の少なくとも1つを含む、前記(31)記載のシス
テム。 (33)照会処理ツリーをリレーショナル・データベー
スに適用するために使用される、コンピュータ読出し可
能プログラム・コード手段を有するコンピュータ使用可
能媒体を含むコンピュータ・プログラム製品であって、
前記コンピュータ読出し可能プログラム・コード手段
が、前記リレーショナル・データベースから導出される
複数の入力レコードからのデータを用いて、ベクトル・
レコード・ブロックを生成するコンピュータ読出し可能
プログラム・コード手段と、前記照会処理ツリーの少な
くとも1つのベクトル演算子を、前記ベクトル・レコー
ド・ブロックに適用するコンピュータ読出し可能プログ
ラム・コード手段と、を含む、コンピュータ・プログラ
ム製品。 (34)前記少なくとも1つのベクトル演算子が、第1
のベクトル演算子及び第2のベクトル演算子を含む複数
のベクトル演算子を含み、前記少なくとも1つのベクト
ル演算子を適用するコンピュータ読出し可能プログラム
・コード手段が、前記照会処理ツリーの前記第1のベク
トル演算子を、前記ベクトル・レコード・ブロックに適
用するコンピュータ読出し可能プログラム・コード手段
と、前記ベクトル・レコード・ブロックの制御を、前記
第1のベクトル演算子から前記第2のベクトル演算子に
受け渡すコンピュータ読出し可能プログラム・コード手
段と、前記照会処理ツリーの前記第2のベクトル演算子
を、前記ベクトル・レコード・ブロックに適用するコン
ピュータ読出し可能プログラム・コード手段と、を含
む、前記(33)記載のコンピュータ・プログラム製
品。 (35)前記少なくとも1つのベクトル演算子が、走査
演算子、述語演算子、分類演算子、集合演算子、結合演
算子、及び算術演算子の少なくとも1つを含む、前記
(33)記載のコンピュータ・プログラム製品。 (36)リレーショナル・データベースを処理するため
に使用されるコンピュータ読出し可能プログラム・コー
ド手段を有するコンピュータ使用可能媒体を含むコンピ
ュータ・プログラム製品であって、前記コンピュータ読
出し可能プログラム・コード手段が、少なくとも1つの
ベクトル演算子を有する照会処理ツリーを生成するコン
ピュータ読出し可能プログラム・コード手段と、前記少
なくとも1つのベクトル演算子を、前記リレーショナル
・データベース内のデータから導出されるベクトル・レ
コードのブロックに適用するコンピュータ読出し可能プ
ログラム・コード手段と、を含む、コンピュータ・プロ
グラム製品。 (37)前記リレーショナル・データベースから導出さ
れる複数の入力レコードからのデータを用いて、前記ベ
クトル・レコード・ブロックを生成するコンピュータ読
出し可能プログラム・コード手段を含む、前記(36)
記載のコンピュータ・プログラム製品。 (38)前記少なくとも1つのベクトル演算子が、第1
のベクトル演算子及び第2のベクトル演算子を含む複数
のベクトル演算子を含み、前記少なくとも1つのベクト
ル演算子を適用するコンピュータ読出し可能プログラム
・コード手段が、前記第1のベクトル演算子を前記ベク
トル・レコード・ブロックに適用するコンピュータ読出
し可能プログラム・コード手段と、前記ベクトル・レコ
ード・ブロックの制御を、前記第1のベクトル演算子か
ら前記第2のベクトル演算子に受け渡すコンピュータ読
出し可能プログラム・コード手段と、前記第2のベクト
ル演算子を前記ベクトル・レコード・ブロックに適用す
るコンピュータ読出し可能プログラム・コード手段と、
を含む、前記(36)記載のコンピュータ・プログラム
製品。 (39)リレーショナル・データベース内の照会ツリー
を処理するために使用されるコンピュータ読出し可能プ
ログラム・コード手段を有するコンピュータ使用可能媒
体を含むコンピュータ・プログラム製品であって、前記
コンピュータ読出し可能プログラム・コード手段が、前
記照会ツリーの第1のベクトル演算子を、前記リレーシ
ョナル・データベース内のデータから導出されるベクト
ル・レコードのブロックに適用するコンピュータ読出し
可能プログラム・コード手段と、前記照会ツリーの第2
のベクトル演算子を、前記リレーショナル・データベー
ス内のデータから導出される前記ベクトル・レコード・
ブロックに適用するコンピュータ読出し可能プログラム
・コード手段と、を含む、コンピュータ・プログラム製
品。 (40)前記ベクトル・レコード・ブロックの制御を、
前記第1のベクトル演算子から前記第2のベクトル演算
子に受け渡すコンピュータ読出し可能プログラム・コー
ド手段を含む、前記(39)記載のコンピュータ・プロ
グラム製品。 (41)前記ベクトル・レコード・ブロックに関連付け
られるベクトル記述子制御ブロックを含み、前記ベクト
ル・レコード・ブロックの制御を、前記第1のベクトル
演算子から前記第2のベクトル演算子に受け渡すコンピ
ュータ読出し可能プログラム・コード手段が、前記ベク
トル・レコード・ブロックに関連付けられる前記ベクト
ル記述子制御ブロックへのアクセスを、前記第1のベク
トル演算子から前記第2のベクトル演算子に受け渡すコ
ンピュータ読出し可能プログラム・コード手段を含む、
前記(40)記載のコンピュータ・プログラム製品。
【図面の簡単な説明】
【図1】本発明のデータベース処理概念を使用するコン
ピュータ・システムの一般ブロック図である。
【図2】本発明による処理概念を使用する典型的なデー
タベース・システムを示す図である。
【図3】単純な構造化照会言語(SQL)照会の演算子
ツリー及び入出力セットを示す図である。
【図4】データの記述を容易にするより複雑な演算子ツ
リー、及び照会の実行の間の制御フローを示す図であ
る。
【図5】単純な照会の演算子のオペランドを示す図であ
る。
【図6】典型的なデータベース・システムにおける照会
例の実行ツリーを示す図である。
【図7】本発明を述べるために有用な照会の実行ツリー
を示す図である。
【図8】本発明に従う、演算子のベクトル化演算に関連
付けられるデータ構造を示す図である。
【図9】本発明に従う、ベクトル記述子制御ブロック及
び関連付けられるベクトル・レコード・ブロック、入力
レコード、及び複数の出力レコードを示す図である。
【図10】入力レコード値がコピーされるときのデータ
構造を表す図である。
【図11】入力レコードがコピーされないときの、特定
のデータ構造を示す図である。
【符号の説明】
10 コンピュータ・システム 12 中央処理ユニット 14 主記憶装置 16 記憶装置 20 リレーショナル・データベース 22 データベース・マネージャ 24 データベース 26 データベース・テーブル 28 行 30 列 40 テーブルt1 42 テーブルt2 44 SCAN(T1)演算子 46 SORT(X)演算子 48 SCAN(X)演算子 50 AGG演算子 62 PRED(b=c)演算子 64 PRED(e=f)演算子 66 SELECT演算子 70 PROJ演算子 80、81 入力レコード 82 データページ 84 オペランド'a' 86 オペランド'b' 90 一時空間 92 結果オペランド領域 100 ベクトル・ブロック 104 入力レコード・ポインタ 106 出力レコード・ポインタ 110 入力オペランド 112 出力オペランド 120 入力レコード・データ構造 122 出力レコード・データ構造 134 一時変数 140 ベクトル領域
───────────────────────────────────────────────────── フロントページの続き (72)発明者 アナント・ディープ・ジングラン アメリカ合衆国10523、ニューヨーク州エ ルムスフォード、ノブ・ヒル・ドライブ 47 (72)発明者 ティモシー・レイ・マルケムス アメリカ合衆国78681、テキサス州ラウン ド・ロック、ロック・クリーク・ドライブ 1602 (72)発明者 シリラム・コリジヴァディ・パドマナブハ ン アメリカ合衆国10510、ニューヨーク州ブ リアクリフ・マナー、オーチャード・ロー ド、1−アール 161

Claims (41)

    【特許請求の範囲】
  1. 【請求項1】リレーショナル・データベースに照会処理
    ツリーを適用する方法であって、 a)前記リレーショナル・データベースから導出される
    複数の入力レコードからのデータを用いて、ベクトル・
    レコード・ブロックを生成するステップと、 b)前記照会処理ツリーの少なくとも1つのベクトル演
    算子を、前記ベクトル・レコード・ブロックに適用する
    ステップと、 を含む、方法。
  2. 【請求項2】前記少なくとも1つのベクトル演算子が、
    第1のベクトル演算子及び第2のベクトル演算子を含む
    複数のベクトル演算子を含み、前記方法が、 前記照会処理ツリーの前記第1のベクトル演算子を、前
    記ベクトル・レコード・ブロックに適用するステップ
    と、 前記ベクトル・レコード・ブロックの制御を、前記第1
    のベクトル演算子から前記第2のベクトル演算子に受け
    渡すステップと、 前記照会処理ツリーの前記第2のベクトル演算子を、前
    記ベクトル・レコード・ブロックに適用するステップ
    と、 を含む、請求項1記載の方法。
  3. 【請求項3】前記ベクトル・レコード・ブロックを生成
    するステップa)が、前記第1のベクトル演算子により
    達成される、請求項2記載の方法。
  4. 【請求項4】前記ベクトル・レコード・ブロックを生成
    するステップが、ベクトル記述子を、前記ベクトル・レ
    コード・ブロックをアクセスするための制御ブロックと
    して使用するステップを含み、 前記ベクトル・レコード・ブロックの制御を、前記第1
    のベクトル演算子から前記第2のベクトル演算子に受け
    渡すステップが、前記ベクトル記述子制御ブロックへの
    アクセスを、前記第1のベクトル演算子から前記第2の
    ベクトル演算子に受け渡すステップを含む、請求項2記
    載の方法。
  5. 【請求項5】前記ベクトル・レコード・ブロックを生成
    するステップa)が、 複数のベクトル・レコードを有するベクトル・レコード
    ・ブロックを生成するステップと、 前記ベクトル・レコード・ブロックの複数のベクトル・
    レコードに対して、少なくとも1つの出力レコードを生
    成するステップと、 を含む、請求項4記載の方法。
  6. 【請求項6】前記生成ステップa)の前記ベクトル・レ
    コード・ブロックが、前記少なくとも1つの出力レコー
    ドを指し示すポインタ用の列と、前記複数の入力レコー
    ドからのデータを有する複数の列とを含む、請求項5記
    載の方法。
  7. 【請求項7】前記ベクトル・レコード・ブロックのコン
    パイル時に、メモリを事前に割当てるステップを含む、
    請求項1記載の方法。
  8. 【請求項8】前記少なくとも1つのベクトル演算子が、
    走査演算子、述語演算子、分類演算子、集合演算子、結
    合演算子、及び算術演算子の少なくとも1つを含む、請
    求項1記載の方法。
  9. 【請求項9】前記ステップa)及びb)を、前記照会処
    理ツリーの処理内の任意のポイントにおいて達成するス
    テップを含む、請求項1記載の方法。
  10. 【請求項10】前記生成ステップa)が、前記リレーシ
    ョナル・データベースから導出される複数の入力レコー
    ドからのデータを用いて、n個(n≧1)の追加のベク
    トル・レコード・ブロックを生成するステップを含み、
    前記適用ステップb)の前記少なくとも1つのベクトル
    演算子が、複数のベクトル演算子を含み、前記複数のベ
    クトル演算子の各々が、前記ベクトル・レコード・ブロ
    ック及び前記n個の追加のベクトル・レコード・ブロッ
    クの少なくとも1つに適用される、請求項1記載の方
    法。
  11. 【請求項11】リレーショナル・データベースを処理す
    る方法であって、 a)少なくとも1つのベクトル演算子を有する照会処理
    ツリーを生成するステップと、 b)前記少なくとも1つのベクトル演算子を、前記リレ
    ーショナル・データベース内のデータから導出されるベ
    クトル・レコードのブロックに適用するステップと、 を含む、方法。
  12. 【請求項12】前記適用ステップb)に先立ち、前記リ
    レーショナル・データベースから導出される複数の入力
    レコードからのデータを用いて、前記ベクトル・レコー
    ド・ブロックを生成するステップを含む、請求項11記
    載の方法。
  13. 【請求項13】前記ベクトル・レコード・ブロックの生
    成が、前記照会処理ツリーの少なくとも1つのベクトル
    演算子により達成される、請求項12記載の方法。
  14. 【請求項14】前記少なくとも1つのベクトル演算子
    が、第1のベクトル演算子及び第2のベクトル演算子を
    含む複数のベクトル演算子を含み、前記適用ステップ
    b)が、 前記第1のベクトル演算子を前記ベクトル・レコード・
    ブロックに適用するステップと、 前記ベクトル・レコード・ブロックの制御を、前記第1
    のベクトル演算子から前記第2のベクトル演算子に受け
    渡すステップと、 前記第2のベクトル演算子を、前記ベクトル・レコード
    ・ブロックに適用するステップと、 を含む、請求項11記載の方法。
  15. 【請求項15】前記ベクトル・レコード・ブロックの制
    御を、前記第1のベクトル演算子から前記第2のベクト
    ル演算子に受け渡すステップが、ベクトル記述子制御ブ
    ロックへのアクセスを、前記第1のベクトル演算子から
    前記第2のベクトル演算子に受け渡すステップを含む、
    請求項14記載の方法。
  16. 【請求項16】前記少なくとも1つのベクトル演算子
    が、テーブル走査演算子、述語演算子、分類演算子、集
    合演算子、結合演算子、及び算術演算子の少なくとも1
    つを含む、請求項11記載の方法。
  17. 【請求項17】リレーショナル・データベース内の照会
    ツリーを処理する方法であって、 a)前記照会ツリーの第1のベクトル演算子を、前記リ
    レーショナル・データベース内のデータから導出される
    ベクトル・レコードのブロックに適用するステップと、 b)前記適用ステップa)に引き続き、前記照会ツリー
    の第2のベクトル演算子を、前記リレーショナル・デー
    タベース内のデータから導出される前記ベクトル・レコ
    ード・ブロックに適用するステップと、 を含む、方法。
  18. 【請求項18】前記適用ステップb)に先立ち、前記ベ
    クトル・レコード・ブロックの制御を、前記第1のベク
    トル演算子から前記第2のベクトル演算子に受け渡すス
    テップを含む、請求項17記載の方法。
  19. 【請求項19】前記ベクトル・レコード・ブロックの制
    御を、前記第1のベクトル演算子から前記第2のベクト
    ル演算子に受け渡すステップが、前記ベクトル・レコー
    ド・ブロックに関連付けられるベクトル記述子制御ブロ
    ックへのアクセスを、前記第1のベクトル演算子から前
    記第2のベクトル演算子に受け渡すステップを含む、請
    求項18記載の方法。
  20. 【請求項20】リレーショナル・データベースに照会処
    理ツリーを適用するシステムであって、 前記リレーショナル・データベースから導出される複数
    の入力レコードからのデータを用いて、ベクトル・レコ
    ード・ブロックを生成する手段と、 前記照会処理ツリーの少なくとも1つのベクトル演算子
    を、前記ベクトル・レコード・ブロックに適用する手段
    と、 を含む、システム。
  21. 【請求項21】前記ベクトル・レコード・ブロックが複
    数の列を含み、前記複数の列の少なくとも1つが、前記
    ベクトル・レコード・ブロックのベクトル・レコードに
    おいて、出力レコードを指し示すポインタを含み、前記
    生成する手段が、前記ベクトル・レコード・ブロックの
    ベクトル・レコードにおいて、前記出力レコードを生成
    する手段を含む、請求項20記載のシステム。
  22. 【請求項22】前記少なくとも1つのベクトル演算子
    が、第1のベクトル演算子及び第2のベクトル演算子を
    含む複数のベクトル演算子を含み、前記システムが、 前記照会処理ツリーの前記第1のベクトル演算子を、前
    記ベクトル・レコード・ブロックに適用する手段と、 前記ベクトル・レコード・ブロックの制御を、前記第1
    のベクトル演算子から前記第2のベクトル演算子に受け
    渡す手段と、 前記照会処理ツリーの前記第2のベクトル演算子を、前
    記ベクトル・レコード・ブロックに適用する手段と、 を含む、請求項20記載のシステム。
  23. 【請求項23】前記ベクトル・レコード・ブロックに関
    連付けられるベクトル記述子制御ブロックを含み、前記
    ベクトル・レコード・ブロックの制御を、前記第1のベ
    クトル演算子から前記第2のベクトル演算子に受け渡す
    手段が、前記ベクトル記述子制御ブロックへのアクセス
    を、前記第1のベクトル演算子から前記第2のベクトル
    演算子に受け渡す手段を含む、請求項22記載のシステ
    ム。
  24. 【請求項24】前記少なくとも1つのベクトル演算子
    が、走査演算子、述語演算子、分類演算子、集合演算
    子、結合演算子、及び算術演算子の少なくとも1つを含
    む、請求項20記載のシステム。
  25. 【請求項25】リレーショナル・データベースを処理す
    るシステムであって、 少なくとも1つのベクトル演算子を有する照会処理ツリ
    ーを生成する手段と、 前記少なくとも1つのベクトル演算子を、前記リレーシ
    ョナル・データベース内のデータから導出されるベクト
    ル・レコードのブロックに適用する手段と、 を含む、システム。
  26. 【請求項26】前記リレーショナル・データベースから
    導出される複数の入力レコードからのデータを用いて、
    前記ベクトル・レコード・ブロックを生成する手段を含
    む、請求項25記載のシステム。
  27. 【請求項27】前記少なくとも1つのベクトル演算子
    が、第1のベクトル演算子及び第2のベクトル演算子を
    含む複数のベクトル演算子を含み、前記適用する手段
    が、 前記第1のベクトル演算子を前記ベクトル・レコード・
    ブロックに適用する手段と、 前記ベクトル・レコード・ブロックの制御を、前記第1
    のベクトル演算子から前記第2のベクトル演算子に受け
    渡す手段と、 前記第2のベクトル演算子を前記ベクトル・レコード・
    ブロックに適用する手段と、 を含む、請求項25記載のシステム。
  28. 【請求項28】前記ベクトル・レコード・ブロックに関
    連付けられるベクトル記述子制御ブロックを含み、前記
    ベクトル・レコード・ブロックの制御を、前記第1のベ
    クトル演算子から前記第2のベクトル演算子に受け渡す
    手段が、前記ベクトル記述子制御ブロックへのアクセス
    を、前記第1のベクトル演算子から前記第2のベクトル
    演算子に受け渡す手段を含む、請求項27記載のシステ
    ム。
  29. 【請求項29】リレーショナル・データベース内の照会
    ツリーを処理するシステムであって、 前記照会ツリーの第1のベクトル演算子を、前記リレー
    ショナル・データベース内のデータから導出されるベク
    トル・レコードのブロックに適用する手段と、 前記照会ツリーの第2のベクトル演算子を、前記リレー
    ショナル・データベース内のデータから導出される前記
    ベクトル・レコード・ブロックに適用する手段と、 を含む、システム。
  30. 【請求項30】前記ベクトル・レコード・ブロックの制
    御を、前記第1のベクトル演算子から前記第2のベクト
    ル演算子に受け渡す手段を含む、請求項29記載のシス
    テム。
  31. 【請求項31】前記ベクトル・レコード・ブロックに関
    連付けられるベクトル記述子制御ブロックを含み、前記
    ベクトル・レコード・ブロックの制御を、前記第1のベ
    クトル演算子から前記第2のベクトル演算子に受け渡す
    手段が、前記ベクトル記述子制御ブロックへのアクセス
    を、前記第1のベクトル演算子から前記第2のベクトル
    演算子に受け渡す手段を含む、請求項30記載のシステ
    ム。
  32. 【請求項32】前記第1のベクトル演算子及び前記第2
    のベクトル演算子の各々が、テーブル走査演算子、述語
    演算子、分類演算子、集合演算子、結合演算子、及び算
    術演算子の少なくとも1つを含む、請求項31記載のシ
    ステム。
  33. 【請求項33】照会処理ツリーをリレーショナル・デー
    タベースに適用するために使用される、コンピュータ読
    出し可能プログラム・コード手段を有するコンピュータ
    使用可能媒体を含むコンピュータ・プログラム製品であ
    って、前記コンピュータ読出し可能プログラム・コード
    手段が、 前記リレーショナル・データベースから導出される複数
    の入力レコードからのデータを用いて、ベクトル・レコ
    ード・ブロックを生成するコンピュータ読出し可能プロ
    グラム・コード手段と、 前記照会処理ツリーの少なくとも1つのベクトル演算子
    を、前記ベクトル・レコード・ブロックに適用するコン
    ピュータ読出し可能プログラム・コード手段と、 を含む、コンピュータ・プログラム製品。
  34. 【請求項34】前記少なくとも1つのベクトル演算子
    が、第1のベクトル演算子及び第2のベクトル演算子を
    含む複数のベクトル演算子を含み、前記少なくとも1つ
    のベクトル演算子を適用するコンピュータ読出し可能プ
    ログラム・コード手段が、 前記照会処理ツリーの前記第1のベクトル演算子を、前
    記ベクトル・レコード・ブロックに適用するコンピュー
    タ読出し可能プログラム・コード手段と、 前記ベクトル・レコード・ブロックの制御を、前記第1
    のベクトル演算子から前記第2のベクトル演算子に受け
    渡すコンピュータ読出し可能プログラム・コード手段
    と、 前記照会処理ツリーの前記第2のベクトル演算子を、前
    記ベクトル・レコード・ブロックに適用するコンピュー
    タ読出し可能プログラム・コード手段と、 を含む、請求項33記載のコンピュータ・プログラム製
    品。
  35. 【請求項35】前記少なくとも1つのベクトル演算子
    が、走査演算子、述語演算子、分類演算子、集合演算
    子、結合演算子、及び算術演算子の少なくとも1つを含
    む、請求項33記載のコンピュータ・プログラム製品。
  36. 【請求項36】リレーショナル・データベースを処理す
    るために使用されるコンピュータ読出し可能プログラム
    ・コード手段を有するコンピュータ使用可能媒体を含む
    コンピュータ・プログラム製品であって、前記コンピュ
    ータ読出し可能プログラム・コード手段が、 少なくとも1つのベクトル演算子を有する照会処理ツリ
    ーを生成するコンピュータ読出し可能プログラム・コー
    ド手段と、 前記少なくとも1つのベクトル演算子を、前記リレーシ
    ョナル・データベース内のデータから導出されるベクト
    ル・レコードのブロックに適用するコンピュータ読出し
    可能プログラム・コード手段と、 を含む、コンピュータ・プログラム製品。
  37. 【請求項37】前記リレーショナル・データベースから
    導出される複数の入力レコードからのデータを用いて、
    前記ベクトル・レコード・ブロックを生成するコンピュ
    ータ読出し可能プログラム・コード手段を含む、請求項
    36記載のコンピュータ・プログラム製品。
  38. 【請求項38】前記少なくとも1つのベクトル演算子
    が、第1のベクトル演算子及び第2のベクトル演算子を
    含む複数のベクトル演算子を含み、前記少なくとも1つ
    のベクトル演算子を適用するコンピュータ読出し可能プ
    ログラム・コード手段が、 前記第1のベクトル演算子を前記ベクトル・レコード・
    ブロックに適用するコンピュータ読出し可能プログラム
    ・コード手段と、 前記ベクトル・レコード・ブロックの制御を、前記第1
    のベクトル演算子から前記第2のベクトル演算子に受け
    渡すコンピュータ読出し可能プログラム・コード手段
    と、 前記第2のベクトル演算子を前記ベクトル・レコード・
    ブロックに適用するコンピュータ読出し可能プログラム
    ・コード手段と、 を含む、請求項36記載のコンピュータ・プログラム製
    品。
  39. 【請求項39】リレーショナル・データベース内の照会
    ツリーを処理するために使用されるコンピュータ読出し
    可能プログラム・コード手段を有するコンピュータ使用
    可能媒体を含むコンピュータ・プログラム製品であっ
    て、前記コンピュータ読出し可能プログラム・コード手
    段が、 前記照会ツリーの第1のベクトル演算子を、前記リレー
    ショナル・データベース内のデータから導出されるベク
    トル・レコードのブロックに適用するコンピュータ読出
    し可能プログラム・コード手段と、 前記照会ツリーの第2のベクトル演算子を、前記リレー
    ショナル・データベース内のデータから導出される前記
    ベクトル・レコード・ブロックに適用するコンピュータ
    読出し可能プログラム・コード手段と、 を含む、コンピュータ・プログラム製品。
  40. 【請求項40】前記ベクトル・レコード・ブロックの制
    御を、前記第1のベクトル演算子から前記第2のベクト
    ル演算子に受け渡すコンピュータ読出し可能プログラム
    ・コード手段を含む、請求項39記載のコンピュータ・
    プログラム製品。
  41. 【請求項41】前記ベクトル・レコード・ブロックに関
    連付けられるベクトル記述子制御ブロックを含み、前記
    ベクトル・レコード・ブロックの制御を、前記第1のベ
    クトル演算子から前記第2のベクトル演算子に受け渡す
    コンピュータ読出し可能プログラム・コード手段が、前
    記ベクトル・レコード・ブロックに関連付けられる前記
    ベクトル記述子制御ブロックへのアクセスを、前記第1
    のベクトル演算子から前記第2のベクトル演算子に受け
    渡すコンピュータ読出し可能プログラム・コード手段を
    含む、請求項40記載のコンピュータ・プログラム製
    品。
JP10009164A 1997-01-27 1998-01-20 リレーショナル・データベースに照会処理ツリーを適用する方法及びシステム Pending JPH10247203A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US79144497A 1997-01-27 1997-01-27
US08/791444 1997-01-27

Publications (1)

Publication Number Publication Date
JPH10247203A true JPH10247203A (ja) 1998-09-14

Family

ID=25153754

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10009164A Pending JPH10247203A (ja) 1997-01-27 1998-01-20 リレーショナル・データベースに照会処理ツリーを適用する方法及びシステム

Country Status (4)

Country Link
EP (1) EP0855656A3 (ja)
JP (1) JPH10247203A (ja)
KR (1) KR19980069967A (ja)
TW (1) TW400496B (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100473054B1 (ko) * 2001-12-27 2005-03-08 삼성에스디에스 주식회사 다단질의를 이용한 데이터베이스 표현방법
JP2005316980A (ja) * 2004-04-30 2005-11-10 Microsoft Corp 順序なしコレクションおよび順序つきコレクションをデータストアに構築するためのシステムおよび方法
JP2010044523A (ja) * 2008-08-11 2010-02-25 Fujitsu Ltd 真偽判定方法
JP2013525881A (ja) * 2010-04-06 2013-06-20 ジャストワン・データベース・インコーポレイテッド データベースモデル非依存、スキーマ非依存および作業負荷非依存のデータ記憶ならびにアクセスモデルに基づくデータ記憶および/または検索

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5920855A (en) * 1997-06-03 1999-07-06 International Business Machines Corporation On-line mining of association rules
US6185556B1 (en) * 1999-05-04 2001-02-06 Amazon.Com, Inc. Method and apparatus for changing temporal database
US5999924A (en) * 1997-07-25 1999-12-07 Amazon.Com, Inc. Method and apparatus for producing sequenced queries
US7500111B2 (en) * 2003-05-30 2009-03-03 International Business Machines Corporation Querying encrypted data in a relational database system
US7685437B2 (en) * 2003-05-30 2010-03-23 International Business Machines Corporation Query optimization in encrypted database systems
US10152504B2 (en) 2009-03-11 2018-12-11 Actian Netherlands B.V. Column-store database architecture utilizing positional delta tree update system and methods
US9922090B1 (en) 2012-03-27 2018-03-20 Actian Netherlands, B.V. System and method for automatic vertical decomposition of a table for improving input/output and memory utilization in a database
US20130332434A1 (en) 2012-06-11 2013-12-12 Actian Netherlands, B.V. System and method using partial just-in-time complation to resolve memory access pattern problems in hash table probing
US11507574B1 (en) 2013-03-13 2022-11-22 Actian Netherlands B.V. Adaptive selection of a processing method based on observed performance for improved and robust system efficiency
US9230136B2 (en) 2013-09-30 2016-01-05 Protegrity Corporation Tokenization column replacement
KR102690828B1 (ko) * 2023-10-26 2024-08-05 주식회사 쿼드마이너 사용자 특성기반 자산 군집화 분류 방법 및 장치

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694591A (en) * 1995-05-02 1997-12-02 Hewlett Packard Company Reducing query response time using tree balancing

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100473054B1 (ko) * 2001-12-27 2005-03-08 삼성에스디에스 주식회사 다단질의를 이용한 데이터베이스 표현방법
JP2005316980A (ja) * 2004-04-30 2005-11-10 Microsoft Corp 順序なしコレクションおよび順序つきコレクションをデータストアに構築するためのシステムおよび方法
JP2010044523A (ja) * 2008-08-11 2010-02-25 Fujitsu Ltd 真偽判定方法
JP2013525881A (ja) * 2010-04-06 2013-06-20 ジャストワン・データベース・インコーポレイテッド データベースモデル非依存、スキーマ非依存および作業負荷非依存のデータ記憶ならびにアクセスモデルに基づくデータ記憶および/または検索
US9965481B2 (en) 2010-04-06 2018-05-08 Edge Intelligence Software, Inc. Apparatus, systems and methods for data storage and/or retrieval based on a database model-agnostic, schema-agnostic and workload-agnostic data storage and access models

Also Published As

Publication number Publication date
EP0855656A2 (en) 1998-07-29
EP0855656A3 (en) 1999-06-30
KR19980069967A (ko) 1998-10-26
TW400496B (en) 2000-08-01

Similar Documents

Publication Publication Date Title
US11899644B2 (en) Technique of efficiently, comprehensively and autonomously support native JSON datatype in RDBMS for both OLTP and OLAP
US4769772A (en) Automated query optimization method using both global and parallel local optimizations for materialization access planning for distributed databases
US7483890B2 (en) Method, computer program product, and system of optimized data translation from relational data storage to hierarchical structure
Lohman Grammar-like functional rules for representing query optimization alternatives
US5659725A (en) Query optimization by predicate move-around
US6505189B1 (en) Aggregate join index for relational databases
US7016910B2 (en) Indexing, rewriting and efficient querying of relations referencing semistructured data
US6141655A (en) Method and apparatus for optimizing and structuring data by designing a cube forest data structure for hierarchically split cube forest template
US6424967B1 (en) Method and apparatus for querying a cube forest data structure
US8316060B1 (en) Segment matching search system and method
US20180144029A1 (en) Methods And Apparatus Of Shared Expression Evaluation Across RDBMS And Storage Layer
US20070050381A1 (en) Indexes that are based on bitmap values and that use summary bitmap values
WO2003098465A1 (en) Database system and methods
JPH10247203A (ja) リレーショナル・データベースに照会処理ツリーを適用する方法及びシステム
US20070038658A1 (en) Communication optimization for parallel execution of user-defined table functions
US11314736B2 (en) Group-by efficiency though functional dependencies and non-blocking aggregation functions
Guravannavar et al. Rewriting procedures for batched bindings.
CN107851003A (zh) 用于改进程序性能的字段专业化系统和方法
EP4305531B1 (en) Technique of comprehensively supporting multi-value, multi-field, multilevel, multi-position functional index over stored aggregately stored data in rdbms
US20030154189A1 (en) Indexing, rewriting and efficient querying of relations referencing spatial objects
Fegaras An algebra for distributed big data analytics
US6618720B1 (en) Common spool files for maintaining join indexes
US6745173B1 (en) Generating in and exists queries using tensor representations
Afrati et al. Storing and querying tree-structured records in Dremel
US8515983B1 (en) Segment matching search system and method