JP4866495B2 - データベースシステムにおいて結合質問を実行する方法及び装置 - Google Patents

データベースシステムにおいて結合質問を実行する方法及び装置 Download PDF

Info

Publication number
JP4866495B2
JP4866495B2 JP09482898A JP9482898A JP4866495B2 JP 4866495 B2 JP4866495 B2 JP 4866495B2 JP 09482898 A JP09482898 A JP 09482898A JP 9482898 A JP9482898 A JP 9482898A JP 4866495 B2 JP4866495 B2 JP 4866495B2
Authority
JP
Japan
Prior art keywords
fragment
fragments
map
query
join
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.)
Expired - Lifetime
Application number
JP09482898A
Other languages
English (en)
Other versions
JPH10320423A (ja
Inventor
エム クリシュナ ムラリー
カシャップ アヌーラグ
ハワード ガーバー ロバート
シャーウッド テイラー ポール
アレン シャーツ スコット
ニー シェンソン
スンダレサン プラカシュ
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 JPH10320423A publication Critical patent/JPH10320423A/ja
Application granted granted Critical
Publication of JP4866495B2 publication Critical patent/JP4866495B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

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/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24561Intermediate data storage techniques for performance improvement
    • 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/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • 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
    • Y10S707/99934Query formulation, input preparation, or translation
    • 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
    • Y10S707/99935Query augmenting and refining, e.g. inexact access

Landscapes

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

Description

【0001】
【産業上の利用分野】
本発明は、データベース・システムに関し、特に、データベース・システムによって結合述語を有するクエリーを処理する方法及び該方法の各ステップをコンピュータに実行させるためのプログラムを記録したコンピュータ読取り可能媒体に関する。
【0002】
【従来の技術】
データベースは、情報の集合である。リレーショナル・データベースは、一つ以上の二次元表として一般に示される。各表は、行及び列に項目及び項目の属性を配列している。各表の行は、項目(レコードと称する)に対応し、かつ各表の列は、項目の属性(フィールドと称する)に対応する。リレーショナル・データベースでは、表の集合は、共通の属性または“キー”を介して相互に関連付けることができる。共通キーは、一つの表の情報を別の表の対応する情報に自動的に相互参照されることができる。
複雑な検索は、“クエリー”によりデータベースで実行されうる。クエリーは、データベースから検索するためにデータベース・システムに対する情報を特定すべき一つ以上の述語を含む。結合クエリーは、二つ以上の表からの情報を要求するクエリーである。例えば、一つの表に顧客情報を、別の表にクレジットカード・トランザクションを記憶するデータベースでは、結合クエリーは、住居が存在している州で顧客が買い物をしたようなトランザクションを要求しうる。結合クエリーは、二つの表からのレコードを選択するために基準を特定すべく少なくとも一つの結合述語を含まなければならない(例えば、顧客の住居の州がトランザクションが発生する州と同じである)。結合クエリーは、また、個々の表からのレコードを選択すべく一つ以上の単一表述語を含みうる。
【0003】
結合クエリーを実行するために、通常のデータベース・システムは、いずれかのレコードが結合述語を満足するかどうかを決定すべく第1の表の各レコードに対して第2の表の全てのレコードを検査する。そのようなレコードは、“マッチ(match) ”したと言いうる。次いで、データベース・システムは、マッチしたレコードからのクエリー表を構築する。
多くの状況において、通常のデータベース動作は、結合クエリーを実行するときには許容できない程にスローでありうる。結合クエリーを処理するために必要な時間を低減するために複数の技術が開発されている。結合クエリーの性能を改良するための一つの技術は、データベース・システムによって検索するデータの量を低減することである。特に、結合述語を満足することができないレコードは、クエリーの両方の表から削除されるべきである。
【0004】
そのような技術の一例は、以下のクエリーで説明されうる:
[例1]
SELECT * FROM R, S
WHERE R.r = S.s
and R.r < 10;
このクエリーは、結合述語R.r = S.s を満足させる全てのレコードを見つけることを試みる。
また、表Rからのレコードは、述語R.r < 10も満足させなければならないしかつR.r は、S.s に等しくなければならないので、推移の代数律(algegraic rule of transitivity)を適用することによって、データベース・システムは、表Sのマッチングレコードが条件S.s < 10も満足させなければならないということを決定する。
【0005】
Sの述語を演繹した後、データベース・システムは、結合の結果に寄与することができないかもしれないSの走査からのレコードを削除するために述語を適用しうる。フラグメンテーションは、クエリーの処理スピードを増すために用いる別の技術である。
フラグメンテーションは、フラグメントと呼ばれる水平区分に表を分ける。フラグメンテーションの後、表は、フラグメントの集合から構成される。
フラグメントは、一組のレコードを含む。フラグメントにレコードを記憶するための基準は、ユーザによって定義されかつ“フラグメンテーション・スキーム”として知られている。いずれのレコードも基準を満足させないならばフラグメントは、空であることが可能である。
【0006】
【発明が解決しようとする課題】
“走査”は、表のフラグメントを読み出す処理である。フラグメントは、クラスタまたはネットワーク・アーキテクチャの個別のディスクまたは個別のノードに個々に記憶されうる。論理的に、全てのフラグメントは、同時に走査されうるし、それにより、完全な表を読み取ることができる全体の速度を増大する。定義により、同時に二つ以上のフラグメントを読み取るために、データベース・システムは、多重走査演算子を用いなければならない。“フラグメント削除”は、データベース・システムが、クエリーの結果に参加することができない表からのフラグメントを識別しかつ考慮からそれらのフラグメントを除去することができるような処理である。フラグメント削除の例は、以下のクエリーで説明されうる:
[例2]
SELECT * FROM R where R.month > “September ”
表Rが12のフラグメントを有し(一つが一年の各月)かつR.month (月)列が表Rの各レコードのフラグメントを識別するということを想定する。例えば、第1番目のフラグメントは、そのR.month 値が“January(1月)”である全てのレコードを含み、第2番目のフラグメントは、そのR.month 値が“February (2月)”である全てのレコードを含む、等である。
【0007】
例2のクエリー及びフラグメンテーション・スキームを用いて、データベース・システムは、そのR.month 値が“October(10月)”、“November(11月)”、または“December(12月)”であるレコードに対応している3個のフラグメント、具体的にはfragments #10 - #12 (第10番目のフラグメント〜第12番目のフラグメント)以外の、全てを削除することができる。削除された第1番目〜第9番目のフラグメントは、クエリーを満足させているレコードを戻すことができないかもしれないしかつ走査される必要もない。それゆえに、フラグメント削除は、データベース・システムに12の全ての代わりに3個のフラグメントを走査することを可能にする。
本発明は、結合への応答を生成するためのコンピュータに実装される方法を提供することを課題とする。
【0008】
【課題を解決するための手段】
本発明は、データベースにおいて、第1の複数のフラグメントを有する第1の表(table)と第2の複数のフラグメントを有する第2の表との間に結合述語を有する結合への応答を生成するためにコンピュータに下記ステップを実行させる方法であって、
結合フラグメント・マップを検索するステップであって、該結合フラグメント・マップは、前記第1の表からの個々のフラグメントについて、前記第2の表からの前記フラグメントを識別し、該第2の表からのフラグメントは前記第1の表からの前記個々のフラグメントからのレコードを伴前記結合述語を満足するところのレコードを含む、前記検索するステップと、
前記マップを用いて、前記結合述語を満足することができないフラグメントを削除するステップと、
削除されなかった前記フラグメント上の前記結合述語を実行するステップと
を含む、前記方法を提供する。
【0009】
データベースにおいて、第1の複数のフラグメントを有する第1の表(table)と第2の複数のフラグメントを有する第2の表との間の結合を処理するためにコンピュータに下記ステップを実行させる方法であって、
結合フラグメント・マップを検索するステップであって、該結合フラグメント・マップは、前記第1の表からの個々のフラグメントについて、前記第2の表からのフラグメントを識別し、該第2の表からのフラグメントは前記第1の表からの前記個々のフラグメントからのレコードを伴ところの前記結合の結合述語を満足するところのレコードを含む、前記検索するステップと、
前記マップを用いて、前記結合述語を満足するレコードを有しうるフラグメントを識別するステップと、
前記識別されたフラグメント上の前記結合述語を実行するステップと
を含む、前記方法。
【0010】
本発明の1つの実施態様では、前記第1の表からの、前記結合の単一表述語を満足するところの第1のフラグメントのセットを識別するステップを更に含む。
【0011】
本発明の1つの実施態様では、前記フラグメントを識別するステップが、前記マップを用いて、前記フラグメントの第1のセットを伴前記結合述語を満足するところの前記第2の表からの第2のフラグメントのセットを識別するステップを含む。
【0012】
本発明の1つの実施態様では、クエリーを実行するステップをさらに含み、該クエリーを実行するステップは、前記第1のフラグメントのセット及び前記第2のフラグメントのセット上で該クエリーを実行するステップを含む。
【0013】
本発明の1つの実施態様では、前記フラグメントを識別するステップが、前記マップを用いて、前記結合述語を満足しうる前記第1の表からの第1のフラグメントのセットを識別するステップを含む、請求項2に記載の方法。
【0014】
本発明の1つの実施態様では、前記フラグメントを識別するステップが、前記マップを用いて、前記第1のフラグメントのセットを伴前記結合述語を満足するところの前記第2の表からの第2のフラグメントのセットを識別するステップを更に含む。
【0015】
本発明の1つの実施態様では、前記フラグメントを識別するステップが、前記マップを用いて、前記第2のフラグメントのセットを伴前記結合述語を満足するところの前記第1のフラグメントのセットのサブセットを識別するステップを更に含む。
【0016】
本発明の1つの実施態様では、前記フラグメントを識別するステップが、前記マップを用いて、前記第1のフラグメントのセットを伴前記結合述語を満足するところの前記第2のフラグメントのセットのサブセットを識別するステップを更に含む。
【0017】
本発明の1つの実施態様では、前記サブセットを識別するステップが、更なるフラグメントが削除されなくなるまで繰り返される。
【0018】
本発明は、データベースにおいて、データベース表のクエリーを実行すべく動作しかつフラグメントへの表(table)の分離を支持するシステムにおいて、第1の表及び第2の表に結合演算を適用するためにコンピュータに下記ステップを実行させる方法であって、
前記第1の表の各フラグメントについて、前記第2の表のそれらのフラグメントを識別し、該識別をマップに記憶するステップステップであって、該第2の表からのフラグメントは前記第1の表フラグメントからのレコードを伴前記結合述語を満足するところのレコードを含む、前記記憶するステップと、
前記クエリーの単一表述語を満足するレコードを有する前記第1の表からの第1のフラグメントのセットを識別するステップと、
前記マップを適用することによって、前記第2の表からの第2のフラグメントのセットを識別するステップであって、該第2の表からのフラグメントは前記第1のフラグメントのセットからのレコードを伴前記結合述語を満足するところのレコードを含む、前記識別するステップと、
前記第1のフラグメントのセット及び前記第2のフラグメントのセット上の前記クエリーを実行するするステップと
を含む、前記方法を提供する。
【0019】
本発明は、データベースにおいて、第1の複数のフラグメントを有する第1の表(table)と第2の複数のフラグメントを有する第2の表との間の結合を処理するためにコンピュータに下記ステップを実行させる方法であって、
前記第1の表からの個々のフラグメントについて、前記第2の表からのフラグメントを識別するマップを検索するステップであって、該第2の表からのフラグメントは前記第1の表からの前記個々のフラグメントからのレコードを伴前記結合述語を満足するところのレコードを含む、前記検索するステップと、
前記第1の表からレコードを受け取るステップと、
前記マップを用いて、前記第2の表からのフラグメントのセットを識別するステップであって、該第2の表からのフラグメントは、前記受け取ったレコードの前記フラグメントを伴い、前記結合述語を満足する、前記識別するステップと、
前記受け取ったレコードを伴前記結合述語を満足するところのレコードに対して前記識別されたフラグメントのセットを走査するステップと
を含む、前記方法を提供する。
【0020】
本発明の1つの実施態様では、前記マップを用いて、前記結合述語を満足するレコードを含むフラグメントを選択するためにするステップを更に含み、前記受け取るステップ、使用するステップ及び走査するステップが、前記選択したフラグメントからの全てのレコードに適用される。
【0021】
本発明は、データベース表のクエリーを実行すべく動作しかつフラグメントへの表(table)の分離を支持するシステムにおいて、第1の表及び第2の表に結合演算を適用するためにコンピュータに下記ステップを実行させる方法であって、
前記第1の表の各フラグメントについて、前記第2の表のそれらのフラグメントを識別し、該識別をマップに記憶するステップであって、該第2の表からのフラグメントは前記第1の表フラグメントからのレコードを伴前記結合述語を満足するところのレコードを含む、前記記憶するステップと、
前記クエリーの単一表述語を満足するレコードを有する前記第1の表からの第1のフラグメントのセットを識別するステップと、
前記第1の表からレコードを受け取るステップと、
前記マップを適用することによって、前記第2の表からのフラグメントのセットを識別するステップであって、該第2の表からのフラグメントは前記受け取ったレコードを伴い、前記結合述語を満足するレコードを含む、前記識別するステップと、
前記受け取ったレコードを伴前記結合述語を満足するところのレコードに対して、前記識別されたフラグメントのセットを走査するステップと
を含む、前記方法を提供する。
【0022】
本発明は、リレーショナル・データベース表(table)のクエリーを実行すべく動作しかつフラグメントへの表の分離を支持するシステムにおいて、第1の表及び第2の表で結合述語を有するクエリーを最適化するためにコンピュータに下記ステップを実行させる方法であって、
第1のフラグメントのセットを識別するステップであって、該第1のフラグメントは、前記結合述語を満足することができるレコードを有する前記第1の表のフラグメントである、前記識別するステップと、
第2のフラグメントのセットを識別するステップであって、該第2のフラグメントは、前記結合述語を満足することができるレコードを有する前記第2の表のフラグメントである、前記識別するステップと、
前記識別されたフラグメントの前記クエリーを実行するステップと
を含む、前記方法を提供する。
【0023】
本発明の1つの実施態様では、前記第1のフラグメントのセットは、結合フラグメント・マップによって識別され、該結合フラグメント・マップは、前記第1の表の各フラグメントについて、前記第2の表のフラグメントを識別し、該第2の表からのフラグメントは前記第1の表の個々のフラグメントからのレコードを伴前記結合述語を満足するところのレコードを含む。
【0024】
本発明の1つの実施態様では、前記識別されたフラグメントの前記クエリーを実行するステップは、
前記第1のフラグメントのセットからの選択したフラグメントからのレコードを検索するステップと、
前記第2のフラグメントのセットからのフラグメントのサブセットを識別するステップであって、前記サブセットは、前記選択したフラグメントを伴前記結合述語を満足しうるところのレコードを有する前記第2の表のフラグメントである、前記識別するステップと、
前記結合述語を満足するレコードに対して前記フラグメントのサブセットを走査するステップと
を含む。
【0025】
本発明は、リレーショナル・データベース表(table)のクエリーを実行すべく動作しかつフラグメントへの表の分離を支持するシステムにおける結合述語を処理するためにコンピュータに下記ステップを実行させる方法であって、
結合述語を有する簡略化されたクエリーを実行して、結合フラグメント・マップを生成するステップであって、前記結合フラグメント・マップは、前記第1の表の各フラグメントについて、前記第2の表のフラグメントを識別し、該第2の表からのフラグメントは前記第1の表フラグメントからのレコードを伴前記結合述語を満足するところのレコードを含む、前記生成するステップと、
前記結合述語を満足するレコードを有する前記第1の表のフラグメントである第1のフラグメントのセットを識別すべく前記結合フラグメント・マップを使用するステップと、
前記結合フラグメント・マップを用いて、前記結合述語を満足するレコードを有する前記第2の表のフラグメントである第2のフラグメントのセットを識別するステップと、
前記第1のフラグメントのセットからの選択したフラグメントからのレコードを検索するステップと、
第2のフラグメントのセットからのフラグメントのサブセットを識別するステップであって、前記サブセットは、前記第2の表のフラグメントであり、該第2の表からのフラグメントは、前記選択したフラグメントを伴前記結合述語を満足するところのレコードを有する、前記識別するステップと、
前記結合述語を満足するレコードに対して前記フラグメントのサブセットを走査するステップを具備する、前記方法を提供する。
【0026】
本発明は、コンピュータ読取り可能媒体であって、コンピュータに、請求項1〜18のいずれか1項に記載の方法の各ステップを実行させるためのプログラムを記録したコンピュータ読取り可能媒体を提供する。
【0027】
本発明は、表のフラグメントへの分離を支持するデータベース・システムにおいて、第1の表(table)及び第2の表に結合述語を有する結合を最適化するためにコンピュータに下記ステップを実行させる方法であって、
前記結合述語を有する簡略化されたクエリーを実行して、結合フラグメント・マップを生成するステップを含み、前記結合フラグメント・マップは、前記第1の表の各フラグメントについて、前記第2の表のフラグメントを識別し、該第2の表からのフラグメントは前記第1の表フラグメントからのレコードを伴前記結合述語を満足するところのレコードを含む、前記方法を提供する。
【0028】
本発明の1つの実施態様では、前記結合フラグメント・マップは、前記第2の表のフラグメントを前記第1の表の各フラグメントについてリストし、該第2の表からのフラグメントは前記第1の表フラグメントからのレコードを伴前記結合述語を満足するところのレコードを含む。
【0029】
本発明の1つの実施態様では、前記結合フラグメント・マップは、前記第1の表及び前記第2の表からの各対のフラグメントに対するビットを有するビットマップである。
【0030】
本発明の1つの実施態様では、前記ビットマップを圧縮するステップを更に含む。
【0031】
本発明の1つの実施態様では、前記第1の表から第1のフラグメントを選択し、前記第2の表から第2のフラグメントを選択し、かつフラグメントのペアリングが前記結合述語を満足するレコードを含むかどうかを決定すべく前記第1のフラグメントと第2のフラグメントの前記ペアリングに対応するビットをチェックするステップを更に含む。
【0032】
本発明の1つの実施態様では、前記ビットマップを生成するステップが、当該ビットマップがいっぱいになったならば打ち切られる。
【0033】
本発明の1つの実施態様では、前記第1及び第2の表は、前記ビットマップが十分にスパースであるかどうかを決定すべくサンプルされる。
【0034】
本発明の1つの実施態様では、前記ビットマップの生成は、サーバが、オンにされたスパースな数のビットを有するビットマップを探し出すために異なる表の種々のカラムを結合するようなディスカバリ処理によってトリガされる。
【0035】
本発明の1つの実施態様では、結合フラグメント・マップが、揮発性メモリに記憶される。
【0036】
本発明の1つの実施態様では、結合フラグメント・マップの生成が、明示的ユーザデータ定義コマンドによってトリガされる。
【0037】
本発明の1つの実施態様では、結合フラグメント・マップの生成が、二つの表の間の参照保全規約の定義によってトリガされる。
【0038】
本発明の1つの実施態様では、前記簡略化されたクエリーは、前記クエリーからの単一表述語を含まない。
【0039】
本発明の1つの実施態様では、前記簡略化されたクエリーは、単一簡略結合述語を含む。
【0040】
本発明の1つの実施態様では、前記第1の表または前記第2の表からのレコードが追加されるかまたは変更されたならば前記結合フラグメント・マップを更新するステップを更に含む。
【0041】
本発明の1つの実施態様では、最初のクエリーと同じ結合述語及び少なくとも一つの異なる述語を有するところの新しいクエリーに対して、前記結合フラグメント・マップを検索するステップを更に含む。
【0042】
本発明の1つの実施態様では、前記結合フラグメント・マップを用いて、前記最初のクエリーを適用する前記第1の表のフラグメント及び前記第2の表のフラグメントを選択するステップを更に含む。
【0043】
本発明の更なる利点は、以下の詳細な説明に示されるであろうし、部分的には説明から自明であろうし、また、本発明を実施することによって修得しうる。本発明の利点は、及び特許請求の範囲において特に指摘された手段及び組合せにより認識されかつ得られうる。
【0044】
【発明を実施するための最良の形態】
本発明は、データベース・システムが別の表からの情報を用いて一つの表からのフラグメントを削除することによって結合の処理を最適化することができる、“コ・フラグメント削除(Co-Fragment Elimination) ”と呼ばれるものを取り入れた方法及び装置を提供する。明細書及び特許請求の範囲で用いたように、用語“表(table) ”は、あらゆるレコードの集合を表すために用いる。
【0045】
結合は、その最も一般的な形において、二つ以上の表からの情報を収集する動作である。これは、含まれる表のレコードからの情報を組み合わせる一つ以上の結合述語を特定することによって行われる。例えば、二つの表R及びSの間の一般的な単一述語 結合は、以下のクエリーによって特定することができる:
SELECT R.all, S.all
FROM R,S
WHERE f(r) relop g(s)
ここでf(r)は、Rのレコードrのフィールドから導出された任意の関数を示し、g(s)は、Sのレコードsのフィールドから導出された任意の関数を示し、relop は、=, !=, <, <=, >, >=のいずれか一つである。上記クエリーの結合述語は、f(r) relop g(s) である。f(r)は、R.state (R. 州)のように簡単でありうるかまたは一つ以上のR の列の任意の関数であるようなより複雑な何かでありうる。
【0046】
結合動作の結果は、ユーザに直接戻されうるかまたはそれがユーザに戻される前に更に処理されうる。また、結合出力のそのような後続処理は、データベースにおける他のデータレコードを更新し、挿入しまたは削除する目的のためにも用いられうる。本発明は、結合の出力に基づいて全てのそのようなアクティビティに適用される。
【0047】
図1を参照すると、汎用コンピュータ・システム10は、ユーザデータベースのデータ上でクエリーを見ること及び実行することを可能にするプログラムを走らせる。コンピュータ・システム10は、(パーソナルコンピュータまたはワークステーションのような)ディジタル・コンピュータ12、ディスプレイ14、(フロッピディスクドライブ、ハードディスクドライブ、CD−ROMドライブ、または磁気光学ディスクドライブのような)大量記憶装置16、キーボード18、及びマウス20または(入力タブレットのような)他のポインタ装置を含む。コンピュータ12は、通常の構成のものでありかつメモリ22、プロセッサ24、及び、メモリバス及び周辺バス(図示省略)のような、他の慣用のコンポーネントを含む。また、コンピュータ12は、コンピュータ・システム10がそれによってコンピュータネットワークを形成すべく通信リンク(図示省略)にわたり他のコンピュータ(図示省略)に接続されるような通信ハードウェア及びプログラム(図示省略)も含む。
【0048】
コンピュータ・システム10は、データを記憶しかつ処理するためのデータベース30を含む。データベース30は、単一コンピュータに集中化されうるか、またはそれは、コンピュータネットワークにわたり分散される。この説明では、データベース管理システムは、コンピュータ12上で実行されるように示されるけれども、一般に、データベース30は、永続的または一時的のいずれかで、データベースにリンクされたコンピュータ上で実行されるデータベース管理システム38によって管理される。
【0049】
本発明は、クレジッドカード会社に対する情報を記憶するように構成されたデータベースを用いて説明される。データベース30は、顧客表(“表R”)32及びトランザクション表(“表S”)34を伴うリレーショナル・データベースである。更に、データベース30は、結合フラグメント・マップ36ビットマップ(図5〜6を参照して以下に説明する)を含む。データベース30はまた、オブジェクト、インデックス表と相互作用しかつ操作するための規律のような、他の資源、及びクエリー要求(図示省略)を実行するためのインタプリタ(解釈プログラム)を含みうる。
【0050】
図2Aを参照すると、顧客表32は、各顧客に対するレコード40を含む。各レコード40は、顧客番号フィールド(R.番号(R.number))42、顧客名前フィールド(R.名前(R.name))44、顧客州フィールド(R.州(R.state) )46を含む一つ以上の顧客住所フィールド、及びクレジットカード有効月フィールド(R.月(R.month) )48を含む。顧客表32は、各有効月に対して一つずつ、12のフラグメントに区分される。各フラグメントは、その有効月だけのレコードを含む。
【0051】
図2Bを参照すると、トランザクション表34は、各クレジットカード・トランザクションに対するレコード50を含む。各レコード50は、トランザクション番号フィールド(S.番号(S.number))52、販売者名前フィールド(S.名前(S.name))54、販売者州フィールド(S.州(S.state)56、トランザクション日付フィールド(S.週(S.week))58、及び顧客番号フィールド(S.r番号(S.rnumber) )59を含む。
【0052】
顧客番号フィールド42及び59は、表Sを表Rにリンクするためのキーとして用いられうる。これらの説明のために、トランザクション表34は、52のフラグメントにフラグメントされる。各フラグメントが、一年の52週の一つにおけるトランザクション日付を有するトランザクションに対するレコード含む
【0053】
図1に戻り、ユーザ(人間またはプログラム)は、データベース30からの情報を検索するために結合クエリーを提出しうる。例えば、ユーザは、顧客州フィールドR.state 及びトランザクション州フィールドS.state が同じ値を有するようなレコードをリストすべくデータベース30にクエリーを行いうる。ここで次のクエリーを考慮する:
[例3]
SELECT * FROM R, S
WHERE R.month > "September"
AND R.state = S. state
例2のクエリーを参照して説明したように、データベース・システムは、既知の単一表技術を適用することによって表Rから9のフラグメントを削除することができる。
【0054】
他のフラグメントを削除するために、データベース・システムは、結合フラグメント・マップ36を生成またはアクセスする。結合フラグメント・マップ36は、二つの表からのどのフラグメントが結合述語を満足することができるレコードを含まずかつクエリー実行中に探索される必要がないかを示す。それゆえに、結合フラグメント・マップは、データベースの内容及び結合述語の両方に対して特異的である。データベースの内容が変化したならば、結合フラグメント・マップは、無効になりうる。結合フラグメント表36は、ビットマップとして、多重フィールド−フラグメント・マップとして、または、どの対のフラグメントが結合述語を満足することができるレコードを含まないかを示す、フラグメント−フラグメント・マップまたは他のデータ構造として記憶されうる。結合フラグメント・マップは、クエリーにおける二つの表に対して二つのフィールド−フラグメント・マップ60及び70(図3A及び3B参照)から構成されうる。結合フラグメント・マップは、リレーショナル、階層構造、オブジェクト指向型、または非リレーショナル・データベースを用いているデータベース・システムで実行されうる。
【0055】
図3Bを参照すると、データベース・システム30は、フィールド−フラグメント・マップ70を生成またはアクセスする。フィールド−フラグメント・マップ70は、表Sからのいずれのフラグメントがどの州からのレコードを含むかを示す。フィールド−フラグメント・マップ70は、各州に対するエントリ72を含みうる。各エントリ72は、州がマッチするレコードを含む表Sからのフラグメントのリスト76に対して特定の州74をマッチする。例えば、フィールド−フラグメント・マップ70は、S.state = "CA"を伴うレコードを含む表Sからのフラグメントのリスト、S.state = "AZ"を伴うレコードを含むフラグメントのリスト、等を含む。50の州が存在するので、フィールド−フラグメント・マップ70において、あるものは空きでありうる、50エントリ72が存在しうる。各リスト76は、表Sに52個のフラグメントが存在するので最大で52個のフラグメント番号を含みうる。
【0056】
図3Aを参照して、データベース・システム30は、表Rに対して同様なフィールド−フラグメント・マップ60を生成またはアクセスする。また、フィールド−フラグメント・マップ60も各州に対してエントリ62を含む。各エントリ62は、特定の州にマッチするレコードを含む表Rからのフラグメントのリスト66に対して特定の州64をマッチする。あるものが空きでありうる、50のエントリ62が存在すべきであるが、各リスト66は、表Rに12個のフラグメントだけが存在するので、最大12個のフラグメント番号を含みうる。図3A及び3Bを参照すると、一緒にフィールド−フラグメント・マップ60及び70の最初の行を読み込むことによって、データベース・システムは、表Rのあるフラグメント番号(4、5、9及び12)からのあるレコードが、表Sのあるフラグメント番号(2、4、7、27及び39)からのあるレコードにマッチするということを決定しうる。同様に、各マップの第2の行を読み込むことによって、データベース・システムは、表Rのあるフラグメント番号(1、2、7、9及び11)からのレコードが、表Sのあるフラグメント番号(5、7、27、30、31及び45)からのレコードにマッチするということを決定しうる。
【0057】
図4を参照すると、結合フラグメント・マップは、二つのフラグメント・マップ60及び70を組み合わせることによって形成された、単一のフィールド−フラグメント・マップ80から構成されうる。フィールド−フラグメント・マップは、二つのフィールド−フラグメント・マップから州列64及び74を削除することによって生成されうる。フィールド−フラグメント・マップ結合マップ80は、12のエントリ82、即ち、表Rの各フラグメントについて一つのエントリを含む。エントリ82は、表Rの上記関連付けられたフラグメント84からのレコードを伴結合述語を満足するところのレコードを含む表Sからのフラグメント番号のリスト86を含む。例えば、最初のエントリは、表Rの第1番目のフラグメントからの一つ以上のレコードを伴結合述語を満足するところのレコードを含む表Sからのフラグメント(5、7、27、30、31、45)のリストを有する。この説明では、フィールド−フラグメント・マップ80は、二つのフィールド−フラグメント・マップ60及び70の最初の二つの行だけを組み合わせることによって生成された。
【0058】
図5を参照すると、フィールド−フラグメント・マップ80は、ビットマップ90に変形することができる。フラグメント番号のリストの代わりに、ビットマップ90は、表Rの各フラグメントに対する行92及び表Sの各フラグメントに対する列94を含む。ビットマップ90では、“on(オン)”ビット(図においてシェードされた)は、表Sのフラグメントにおけるあるレコードが表Rの対応するフラグメントに結合しうることを示す。ビットマップ90は、例えば、ラン−レングス符号化または他の技術によって、圧縮されうる。ビットマップ90は、この例及び例3のクエリーにより記述されるように、結合クエリーに含まれるいずれかの表からフラグメントを削除するために用いることができる。単一表述語(R.month > "September") を用いて、表9の第1番目〜第9番目のフラグメントが削除される。ビットマップ90から、第10番目のフラグメントのような、表Rのある一定の残りのフラグメントは、それらが表Sのいずれかのフラグメントからのレコードを伴結合述語を満足するところのレコードを含まないので、削除できる。同様に、ビットマップ90は、表Sのある一定のフラグメントが表Rの第10番目〜第12番目のフラグメントのレコードにマッチするレコードを含まないということを示す。例えば、表Sの第1番目、第3番目、第6番目、第8番目〜第26番目、第28番目〜第29番目、第32番目〜第38番目、第40番目〜第44番目及び第46番目〜第52番目のフラグメントは、結合述語を満足するいかなるレコードにも寄与することができない。従って、ビットマップ90を用いて、データベース・システムは、表Rからの2個のフラグメント以外の全て及び表Sからの9個のフラグメント以外の全てを削除することができる。
【0059】
コ・フラグメント削除の後、データベース・システムは、表Rの2個のフラグメントにおける各レコードに対して表Sの9個のフラグメントだけを探索しなければならない。対照的に、従来の技術では、表Sの全ての52個のフラグメントは、表Rの3個のフラグメントにおける各レコードに対して探索される。一般的に用いられ結合方法は、ハッシュ結合方法、ソフトマージ結合方法、及びネステッド・ループ方法である。後者は、インデックスでまたはインデックスなしで実行されうる。本発明は、いずれの結合方法にも適用される。特許請求の範囲の目的に対して、用語“サーチング”は、一つの特定の結合方法の使用を意味しない。ビットマップ90は、可逆的である。即ち、(単一表述語に基づいて)表Sから削除されたフラグメントは、ビットマップ90で、表Sの削除されたフラグメントにだけ結合する表Rからのフラグメントを削除するために用いることができる。
【0060】
また、ビットマップ90は、フラグメントを動的に削除するためにクエリーの実行でも使用することができる。再び、例3のクエリーを参照すると、最適化の後、データベース・システムは、表Rからの2個のフラグメント以外及び表Sの9個のフラグメント以外の全てを削除した。従来の技術では、結合演算子は、3個のフラグメントから表Rの各レコードを読み出しかつ結合述語を満足するレコードに対して表Sの残りの9個のフラグメントのそれぞれを走査する。しかしながら、表Rの特定のレコードに対して、表Sの全ての9個のフラグメントを探索する必要がない。ビットマップは、第11番目のフラグメントから取り出された表Rからのレコードが、表Sの9つの残っているフラグメントの6つ、具体的には、第5番目、第7番目、第27番目、第30番目及び第45番のフラグメントにだけマッチを見出すことができる、ということを示している。従って、表Rからのこの特定のレコードに対して、表Sの6個のフラグメントだけが走査される必要がある。同様に、表Rから取り出されたレコードが第12番目のフラグメントからであるならば、表Sから5個のフラグメント、具体的には、第2番目、第4番目、第7番目、第27番目及び第39番目のフラグメントだけが走査される必要がある。
【0061】
ビットマップの生成は、多くの方法でトリガすることができる。クエリー最適化装置は、クエリー処理戦略としてビットマップを生成すべく決定できる。ユーザは、インデックスの生成と同様な方法で所与のデータベースに対してデータ定義言語を用いてビットマップを明示的に生成できる。データベース・システムは、外部キー関係が完全性拘束条件として特定されるときにビットマップを潜在的に生成することができる。システムは、スパースビットマップをもたらす表間の結合に対して徹底的に探索できる。これらの場合の全てにおいて、システムは、合成ビットマップの期待スパース性を確認するためにサンプリングを用いることができる。スパース性は、マッチングタプルを有する2つの表からのフラグメントを示しているビットマップにおいてオンにされるビットの割合である。
【0062】
ビットマップ90を生成(または構築)するために、データベース・システムは、最初のクエリーに基づいて“簡略化されたクエリー”を実行する。簡略化されたクエリーは、最初のクエリーと同じ結合述語を含むが、単一表述語を全く含まない。例えば、例3のクエリーに対する簡略化されたクエリーは:
[例4]
SELECT R.fragment#, S.fragment# FROM R, S
WHERE R.state = S.state
簡略化されたクエリーを実行することは、マッチングレコードを含む各表からの対応するフラグメント番号を戻す。ビットマップ90は、上述した中間結合マップ80を生成することなく、直接的に生成されうる。簡略化されたクエリーが実行される速さを増大するために種々の技術を用いうる。第1及び第2の表からのレコードの必要なフィールドは、表自信よりも表インデックスのリーブ(葉)から検索されることが好ましい。更に、それらが存在するならば、列インデックスを用いることができる。別の例として、フラグメンテーション・スキームからの情報を用いうる。簡略化されたクエリーのある一定の実行の下で、一度マッチが、二つの表からのフラグメント間で行われたならば、他のレコードは、同じマッチに対して検索する必要がない。
【0063】
ビットマップがあまりにも充填されているならば、ビットマップの生成は、取り止められうる、即ち、非スパーズであり、第1の表のフラグメントからのレコードが、第2の表からのフラグメントの大きな割合で対応マッチングレコードを有するということを示している。サンプリングは、ビットマップが十分にスパースであるか否かの早期決定に到着すべくビットマップを構築する目的に対して第1及び第2の表の両方で用いられる。ビットマップは、データベースに対して不揮発性メタデータに記憶されるのとは反対に揮発性メモリにだけ記憶されうる。ビット90を構築するために性能費用がある。特に、簡略化されたクエリーを実行しかつ結果のビットマップを記憶するための費用がある。従って、データベース・システムは、ビットマップがビットマップを構築するための費用を保証するために性能において十分なゲインを供給するかどうかを決定しなければならない。一般的に、ビットマップは、それが、例えば、連続したクエリーにおいて、二度以上用いることができるならば最大の利益を供給することができる。
【0064】
ビットマップが生成されるときにはいつでも、ビットマップがシステムしきい値と比較して十分にスパースでないならば、システムは、ビットマップを再生成する不必要な後続の試みを回避するためにデータベースのメタデータ定義においていつまでもその事実を記憶している。フラグメント結合マップは、ユーザがマップを十分にスパースにするためにデータを明示的にフラグメントするときに用いられうる。また、それは二つの表の間のデータが潜在的に“相関される”ならば、十分なスパース・コ・フラグメンテーションマップを結果として生ずるように用いることもできる。データベース・システムは、表、列、及び結合述語の各組合せに対して異なるビットマップ90を必要とする。例えば、以下の二つのクエリーに対して個別のビットマップを必要とするであろう:
[例5]
SELECT * FROM R, S WHERE R.state = S.state
[例6]
SELECT * FROM R, S WHERE R.state < S.state
しかしながら、クエリーが同じ結合述語を用いるが異なる単一表述語を含むならば、同じビットマップを用いることができる。
【0065】
クエリーが複数の結合述語を含むならば、フラグメント結合マップは、複数の結合マップにおける各サンプル結合に対して生成されうる。例えば、もしクエリー
[例7]
SELECT * FROM R, S
WHERE R.state = S.state and R.name = S.name
であれば、一つのフラグメント結合マップがR.state = S.state を伴う簡単なクエリーを用いて生成されかつ別のフラグメント結合マップがR.name = S.name を伴う簡単なクエリーを用いて生成される。更に、簡単な結合述語のビットマップは、多重結合クエリーに対するビットマップを生成するために組み合わせることができる。この説明では述語P1は、R.state= S.state であり述語P2は、R.name = S.name である。クエリー
[例8]
SELECT * FROM R, S WHERE P1 and P2
に対するビットマップは、 P1 及びP2に対するビットマップに論理ANDを適用することによって生成することができる。同様に、クエリー
[例9]
SELECT * FROM R, S WHERE P1 or P2
に対するビットマップは、 P1 及びP2に対するビットマップに論理ORを適用することによって生成することができる。
【0066】
一般に、データベースは、多重結合述語を扱うことができる。例えば、クエリーが:
SELECT R.all, S.all
FROM R,S
WHERE f1(r) relop1 g1(s) and/or
F2(r) relop2 g2(s) and/or
・・・
・・・
・・・
fn(n) relopn gn(s)
であるならば、データベース・システムは、組み合わされた全てのn述語に対して一つのフラグメント結合マップを構築することができるか、または、それは、各結合述語に対して一つの、nの個別のフラグメント結合マップ、またはこれら二つの極端間のフラグメント結合マップの中間組合せを構築することができる。しかしながら、データベース・システムが二つ以上の述語に対応しているビットマップを構築するならば、そのビットマップは、同じ述語を含むクエリーに対してだけ用いることができる。クエリーがより少ない数の述語を有するならばそのビットマップを用いることができない。それゆえに、最大効用のために、各単一結合述語に対して一つのフラグメント結合マップを構築することは利益がありうる。これらの個々の結合フラグメント・マップは、クエリーによって後述されるようにANDまたはORにされうる。また、コ・フラグメント削除は、
SELECT * FROM R,S,T WHERE R.a = S.a AND S.a = T.a
と同じであるクエリー
[例10]
SELECT * FROM R,S,T WHERE R.a = S.a = T.a
のように、3つ以上の表の結合上で実行されうる。例10の例では、B1は、“ R.a = S.a”に対するビットマップでありかつB2は、“ S.a = T.a”に対するビットマップである。
【0067】
上述したように、ビットマップB1は、表R及びSからのフラグメントを削除するために用いることができ、ビットマップB2は、表S及びTからのフラグメントを削除するために用いることができる。表RとTの間のフラグメントを低減するために二つの技術を用いうる。第1の技術では、ビットマップB3は、ビットマップB1とB2を組み合わせることによって構築される。この技術は、ビットマップを構築するために結合マップを組み合わせることに類似する。次に、ビットマップB3は、R及びTを低減するために用いることができる。第2の技術では、(ビットマップB2により)表Sから削除されたフラグメントは、再び表Rからフラグメントを削除するために用いることができる。一般に、データベース・システムは、個々に表R、S及びTからのフラグメントを削除するために単一表フラグメント削除を用いることによって始動されうる。そして、ビットマップB1は、表Sからのフラグメントを削除するために表Rに対抗して用いられ、ビットマップB2は、表Tにおけるフラグメントを削除するために表Sに対抗して用いることができる。次いで、データベース・システムは、再び表Sを低減するために表Tにおいて新たに削除されたフラグメントを用い、そして、それは、再び表Rを低減するために表Sにおいて新たに削除されたフラグメントを用いる。データベース・システムは、いずれの表からもはやフラグメントを削除することができなくなるまでこの手順を繰り返し続ける。
【0068】
その手順が記憶することができかつ後で用いることができる(“簡略化されたビットマップクエリー”を用いてそれを明示的に構築することなしに)ビットマップB3を発生することを結果として生ずるので、表RとTの間の結合クエリーが共通であるならば、データベース・システムは、前の手順を選ぶべきである。他方、データベース・システムは、表RとTの間の結合クエリーが相対的に稀でありビットマップB3を維持することのオーバーヘッドを保証しないならば、後者の手順を選ぶべきである。結合フラグメント・マップが実際の結合クエリーの結果から生成されるので、即ち、マップが表における実際のデータに依存するので、その有用性は、基礎をなしている表が変更される場合に消滅するかあるいは破壊される。
【0069】
レコードが一つのまたは両方の表から削除されても、ビットマップをまだ使用することができる。データベース・システムがもはやマッチングレコードを有していないフラグメントを探索するので、性能は理想よりも低くなるであろう。レコードが一つのまたは両方の表において追加されたかまたは更新されたならば、ビットマップの完全性は、破壊されうる。フラグメントを更新する前までは認可されなかったが、追加されたかまたは変更された値がマッチングレコードを含むものとしてフラグメントをここで認めるならば、ビットマップの完全性が違反されてしまう。それゆえに、データベース・システムは、システムが変更されたかまたは新たなレコードに対抗して述語をチェックしない限りレコードが追加または更新されたときにはいつでもビットマップの完全性が違反されると想定しなければならない。
【0070】
ビットマップを無効にする更新が生じた場合、システムは、ビットマップの完全性を増加的に更新しかつ維持することを決定できる。代替的に、システムは、ビットマップを無効にしかつそれを再生成することを決定できる。そのようなビットマップの再生成は、ビットマップが最適化装置によって必要と思われる次の瞬間に、即にかまたはユーザによる特定の、手動によるコマンド(命令)の結果としてのいずれかにより達成することができる。ビットマップの完全性が破壊されたときに、将来のクエリーで用いることができる前にそれは、復元されなければならない。先に示したように、ビットマップ90を変更するために費用がかかり、かつそれを廃棄しかつ再生成することに費用がかかる。データベース・システムは、二つの代替のより良い方を選択すべくビットマップを変更または再生成するために必要な時間を推測しうる。例えば、データベース・システムに対して小さな増分変化が行われたならば、ビットマップは、変更されるであろうし、データベースにおいてより多くの数の変化が行われたならば、ビットマップは、再生成されるであろう。
【0071】
図6を参照すると、データベース・システムは、最適化装置110、ビットマップ発生装置170、辞書管理装置190、及び実行装置200を含んでいる複数のソフトウェアサブシステムを含む。サブシステムは、ビットマップを生成しかつ使用すべく相互作用する。最適化装置110は、コ・フラグメント削除を実行するためにビットマップに対する必要性を認識し、ビットマップを構築させる事象をトリガし、かつフラグメントを削除するためにビットマップを用いる。ビットマップ発生装置170は、ビットマップを生成するためにクエリーを形成し、簡略化されたクエリーを実行し、結果からフラグメント番号を収集し、そして収集したフラグメント番号からビットマップを生成する。辞書管理装置190は、他のクエリー及びユーザにアクセスさせるべくビットマップをグローバル的にアクセス可能な不揮発性記憶装置に保存し、要求によりビットマップを最適化装置に供給する。更に、辞書管理装置190は、先のビットマップを無効にする基礎をなしている表の一つまたは両方に対してデータ変更が発生したならば、無効としてビットマップに印を付ける。実行装置200は、結合述語の実行中に動的コ・フラグメント削除を実行するためにビットマップを用いる。
【0072】
図7を参照すると、ユーザからのクエリーを処理するためにデータベース・システムによって用いられる方法100が示されている。まず、データベース・システムは、最適化装置を参照して以下に説明するように、クエリーを最適化する(ステップ102)。次に、データベース・システムは、表の一つのアクティブフラグメントを走査する(ステップ104)。可能ならば、データベース・システムは、同時にフラグメントを走査すべきである。結合述語は、走査中に受け取った各レコードに対して実行される(ステップ106)。一度結合述語の実行が終了したならば、処理が完了する。図8を参照すると、最適化装置は、例2を参照して先に説明したように、単一表クエリー述語を用いて両方の表R及びS上で単一表フラグメント削除を実行する(ステップ112)。
【0073】
次いで、データベース・システムは、新しいビットマップが生成されるべきかどうかを決定する(ステップ114)。ユーザは、コマンドを挿入することによりまたはデフォルトを設定することによってデータベース・システムにビットマップを生成することを強制する。代替的に、ユーザは、データベース・システムにビットマップが生成されるべきかどうかを決定させる。この場合には、データベース・システムは、ビットマップを構築する費用が利益の価値があるかどうかを決定する。特に、通常の技術を用いて、コンピュータ・システムは、簡略化されたクエリーを実行し、ビットマップを生成し、ビットマップを記憶し、かつビットマップを用いてクエリーを実行する時間の長さを推測し、かつビットマップなしでクエリーを実行するために推測した時間の長さとその時間を比較する。
【0074】
ビットマップが必要であるならば、データベース管理システムは、ビットマップがクエリーに対して利用可能であるかどうかを決定する(ステップ115)。ビットマップは、それが現行クエリーの結合述語に正確にマッチする結合述語によって生成され、かつビットマップの完全性が違反されていないときにだけ利用可能であると考えられうる。ビットマップが必要であるならば、最適化装置は、ビットマップ発生装置を呼出す(ステップ116)。ビットマップを生成するためにビットマップ発生装置を呼び出した後、またはステップ115で決定されたようにビットマップが既に利用可能であるならば、最適化装置は、ビットマップを取り出し(ステップ117)、かつ表Rのような、表の一つを最適化するためにサブルーチンを呼出す(ステップ118)。
【0075】
図9を参照して、データベース・システムは、表Rを最適化するための方法120を含む。データベース・システムは、インアクティブとしてステップ112における単一表述語を用いて表Rから削除されたフラグメントに印を付け、かつアクティブとして残りのフラグメントに印を付けることによって始動する(ステップ122)。次いで、表Rは、インアクティブとして印が付けられる(ステップ124)。ビットマップは、次いで、表Sのどのフラグメントが、もしあれば、表Rからの各アクティブフラグメントに結合するかということを決定するために用いられる。データベース・システムは、表Rからの各アクティブフラグメントを検査するためにループを入力する(ステップ128)。データベース・システムは、表Rからのフラグメントが表Sのフラグメントからのレコードを伴結合述語を満足するところのレコードを含むかどうかを決定するためにビットマップを用いる(ステップ130)。マッチが存在しないならば、表Rからのフラグメントは、インアクティブとして印が付けられる(ステップ132)。他方、マッチが存在すれば、フラグメントは、アクティブのままであり表Rは、また、アクティブと印を付けられる(ステップ134)。一度、表Rからの最後のアクティブフラグメントが検査されたならば、データベース・システムは、表Sを最適化すべくサブルーチンに進む(ステップ136)。
【0076】
図10を参照すると、データベース・システムは、表Sを最適化するための方法140を含む。データベース・システムは、インアクティブとしてステップ112において表Sから削除されたフラグメントに印を付け、かつアクティブとして表Sの残りのフラグメントに印を付けることによって始動する(ステップ142)。コンピュータ・システムは、フラグ(fragment _ eliminated _from_S)を“フォールス(false)”に設定し(ステップ144)かつ、インアクティブとして表Sに印を付ける(ステップ146)。ビットマップは、次いで、表Rのどのフラグメントが、もしあれば、表Sからの各アクティブフラグメントに結合するかということを決定するために用いられる。データベース・システムは、表Sからの各アクティブフラグメントを検査するためにループを入力する(ステップ148)。データベース・システムは、表Sからのフラグメントが表Rのフラグメントからのレコードを伴結合述語を満足するところのレコードを含むかどうかを決定するためにビットマップを用いる(ステップ152)。マッチが存在しないならば、表Rからのフラグメントは、インアクティブとして印が付けられ(ステップ154)かつフラグは、“真(true)”として設定される(ステップ156)。他方、マッチが存在すれば、フラグメントは、アクティブのままであり表Sは、アクティブと印を付けられる(ステップ158)。一度、両方の表におけるフラグメントが検査され、いずれかの表がインアクティブとして印を付けられたならば、クエリーは、それがゼロのレコードを戻すように、一時停止できる。
【0077】
一度表Sからの最後のアクティブフラグメントが検査されたならば、データベースプログラムは、フラグをチェックする(ステップ164)。表Sからのあるフラグがビットマップを用いて削除されているので、表Sからの新たに削除されたフラグメントは、表Rからのフラグメントのあるものを削除することを試みるために用いることができる。従って、フラグが“真”に設定されるならば、データベース・システムは、表Rを最適化するための方法120に戻る(ステップ166)。一度サブルーチン120が終了したならば、表Rからの新しく削除されたフラグメントは、表Sからの更なるフラグメントを削除するために用いられる。それゆえに、データベース・システムは、もはやフラグメントが削除できなくなるまでサブルーチン120と140の間を交互にする。この時点ではフラグは、“フォールス”に設定されかつデータベース・システムは、クエリーの実行を行うために最適化装置に戻る(ステップ168)。
【0078】
図9に戻り、サブルーチン120がサブルーチン140から呼び出されかつ追加フラグが表Rからインアクティブとして印を付けられたならば、ステップ136においてデータベース・システムは、表Sを最適化するためにサブルーチン140に進むより最適化装置に戻る。図11を参照すると、ビットマップ発生装置170は、それが構築されている間に破損されることからビットマップを防ぐべく両方の表をロックすることによって始動する(ステップ172)。次いで、簡略化されたクエリーが構築される(ステップ174)。簡略化されたクエリーは、ユーザによって与えられたクエリーと同じ結合述語を含むが、全ての単一表述語は、除去される。簡略化されたクエリーは、実行され、かつ両方の表からのフラグメント番号は、二つのフィールド−フラグメント表(例えば、フラグメント表60及び70)を供給するためにクエリー結果から収集される(ステップ176)。次いで、フィールド−フラグメント表60及び70からのフラグメント番号は、ビットマップ90を構築するために用いられる(ステップ178)。最後に、辞書管理装置サブルーチン190が呼び出され(ステップ180)、ロックが解除され、かつデータベース・システムは、最適化装置に戻る(ステップ182)。
【0079】
図12を参照すると、辞書管理装置190は、先のビットマップが現行のクエリーの結合述語に対して生成されたかどうかを決定することによって始動する(ステップ192)。先のビットマップが存在するならば、古いビットマップは、廃棄され(ステップ194)かつ新しいビットマップが保存される(ステップ196)。このクエリーに対して古いビットマップが存在しないならば、先のビットマップを廃棄するステップは、省略される。最後に、データベース・システムは、ビットマップ発生装置サブルーチンに戻る(ステップ198)。
【0080】
図13を参照することにより、実行装置200は、データベース・システムがステップ106において結合述語を実行するときに呼び出される(図7参照)。簡単に言うと、実行装置は、表の一つのアクティブフラグメントからのレコードを受け取る。実行装置は、走査されるべき他の表からのフラグメントを識別するためにフラグメント番号及びビットマップを用いる。実行装置は、それらのフラグメントを走査し、フラグメントからのマッチングレコードレコードを収集し、かつマッチングレコードをユーザに戻す。実行装置は、一つの表Rのアクティブフラグメントからのレコードを受け取ることによって始動する(ステップ202)。レコードは、表RとSが以下に説明する動作において切り替えうるけれども、この例では表Rから受け取られる。次いで、データベース・システムは、マッチングレコードに対して走査されるべき表Sのフラグメントを識別するために結合フラグメント・マップを用いる(ステップ204)。特に、結合フラグメント・マップがビットマップであるならば、データベース・システムは、フラグメントのその対が結合述語を満足するレコードを含むかどうかを決定すべく表Rのフラグメント番号に等しい行及び表Sのフラグメント番号に等しい列におけるビットをアクセスする。表Sの識別されたフラグメントは、結合述語を満足するレコードに対して走査される(ステップ206)。これらのレコードは、収集され(ステップ208)かつユーザに戻される(ステップ210)。最後に、完了メッセージがユーザに送られ(ステップ212)かつ実行装置が終了する(ステップ214)。
【0081】
線形処理として説明されたけれども、実行装置200の方法は、表Sからの各アクティブフラグメントが検査されるようなループされた処理で実行することができ、ビットマップは、フラグメントが走査されるべきかどうかを決定するために用いられ、フラグメントは、走査され(それがマッチングレコードを含んでいるものと想定する)かつ結合述語を満足するレコードは、ユーザに戻され、そして処理は、次のアクティブフラグメントに進む。
【0082】
本発明は、ソフトウェア実装により説明されたが、本発明は、ソフトウェアまたはハードウェアまたはファームウェア、またはそれら3つの組合せで実現されうる。本発明は、実施例により説明されたが、本発明は、提示しかつ説明した実施例に限定されるものではない。それよりも、本発明の範疇は、特許請求の範囲によって画定される。
【図面の簡単な説明】
【図1】本発明によるプログラマブルでかつリレーショナル・データベースを含んでいる汎用コンピュータ・システムを示す図である。
【図2A】図1のリレーショナル・データベースの表を示す図である。
【図2B】図1のリレーショナル・データベースの表を示す図である。
【図3A】図2Aの表のフラグメント・マップを示す図である。
【図3B】図2Bの表のフラグメント・マップを示す図である。
【図4】本発明による結合マップを示す図である。
【図5】図4の結合マップから導出されたビットマップを示す図である。
【図6】データベース管理システムのコンポーネントを示す図である。
【図7】結合クエリーの処理のフロー図です。
【図8】本発明による結合クエリーを最適化する方法のフロー図である。
【図9】本発明による結合クエリーを最適化する方法のフロー図である。
【図10】本発明による結合クエリーを最適化する方法のフロー図である。
【図11】本発明による結合ビットマップを生成する方法のフロー図である。
【図12】本発明による結合ビットマップを生成する方法のフロー図である。
【図13】本発明によるクエリーを実行する方法のフロー図である。
【符号の説明】
10 汎用コンピュータ・システム
12 ディジタル・コンピュータ
14 ディスプレイ
16 マス記憶装置16
18 キーボード18
20 マウス
22 メモリ
24 プロセッサ
30 データベース
32 顧客表(“表R”)
34 トランザクション表(“表S”)
36 結合フラグメント・マップ
38 データベース管理システム

Claims (8)

  1. データベースにおいて、第1の複数のフラグメントを有する第1の表第2の複数のフラグメントを有する第2の表との間に結合述語を有する結合への応答を生成する方法であって、前記第1の複数のフラグメントのそれぞれは前記第1の表の水平区分のうちのいずれか1つであり、及び前記第2の複数のフラグメントのそれぞれは前記第2の表の水平区分のうちのいずれか1つであり、
    前記方法は、コンピュータに下記ステップを実行させることを含み、該ステップが、
    結合述語を有するクエリーの実行要求に応じて、結合フラグメント・マップをメモリから検索するステップであって、該結合フラグメント・マップは、前記第1の表から作成される第1のフラグメント・マッ及び前記第2の表から作成される第2のフラグメント・マッから作成され、前記第1のフラグメント・マップは、前記第1の表と前記第2の表との間の前記クエリーによって共通すると指定された属性、及び該共通すると指定された属性ごとに、前記第1の表からの第1のフラグメント番を含み、及び前記第2のフラグメント・マップは、前記第1の表と前記第2の表との前記クエリーによって共通すると指定された属性、及び該共通すると指定された属性ごとに、前記第2の表からの第2のフラグメント番を含み、前記結合フラグメント・マップは、前記第1のフラグメント番号と、該第1のフラグメント番号ごとに、該第1のフラグメント番号の前記共通すると指定された属性に属し且つ前記結合述語を満足する前記第2のフラグメント番号とを含む、前記検索するステップと、
    前記結合フラグメント・マップを用いて、前記結合述語を満足することができないフラグメントを前記第1の複数のフラグメント及び前記第2の複数のフラグメントから削除するステップと、
    削除されなかったフラグメントに対して前記結合述語を含む前記クエリーを実行するステップと
    を含む、前記方法。
  2. データベースにおいて、第1の複数のフラグメントを有する第1の表第2の複数のフラグメントを有する第2の表との間の結合を処理する方法であって、前記第1の複数のフラグメントのそれぞれは前記第1の表の水平区分のうちのいずれか1つであり、及び前記第2の複数のフラグメントのそれぞれは前記第2の表の水平区分のうちのいずれか1つであり、
    前記方法は、コンピュータに下記ステップを実行させることを含み、該ステップが、
    結合述語を有するクエリーの実行に応じて、結合フラグメント・マップをメモリから検索するステップであって、該結合フラグメント・マップは、前記第1の表から作成される第1のフラグメント・マッ及び前記第2の表から作成される第2のフラグメント・マッから作成され、前記第1のフラグメント・マップは、前記第1の表と前記第2の表との間の前記クエリーによって共通すると指定された属性、及び該共通すると指定された属性ごとに、前記第1の表からの第1のフラグメント番を含み、及び前記第2のフラグメント・マップは、前記第1の表と前記第2の表との前記クエリーによって共通すると指定された属性、及び該共通すると指定された属性ごとに、前記第2の表からの第2のフラグメント番を含み、前記結合フラグメント・マップは、前記第1のフラグメント番号と、該第1のフラグメント番号ごとに、該第1のフラグメント番号の前記共通すると指定された属性に属し且つ前記結合述語を満足する前記第2のフラグメント番号とを含む、前記検索するステップと、
    前記結合フラグメント・マップを用いて、前記結合述語を満足するレコードを有しうるフラグメントを前記第1の複数のフラグメント及び前記第2の複数のフラグメントから識別するステップと、
    前記識別されたフラグメントに対して前記結合述語を含む前記クエリーを実行するステップと
    を含む、前記方法。
  3. 前記フラグメントを識別するステップが、前記結合フラグメント・マップを用いて、前記結合述語を満足しうる前記第1のフラグメントのセットを識別するステップを含む、請求項2に記載の方法。
  4. 前記フラグメントを識別するステップが、前記結合フラグメント・マップを用いて、前記第1のフラグメントの前記セットを有し前記結合述語を満足するところの前記第2のフラグメントのセットを識別するステップを更に含む、請求項3に記載の方法。
  5. 前記フラグメントを識別するステップが、前記結合フラグメント・マップを用いて、前記第2のフラグメントの前記セットを有し前記結合述語を満足するところの前記第1のフラグメントの前記セットのサブセットを識別するステップを更に含む、請求項4に記載の方法。
  6. 前記フラグメントを識別するステップが、前記結合フラグメント・マップを用いて、前記第1のフラグメントの前記セットを有し前記結合述語を満足するところの前記第2のフラグメントの前記セットのサブセットを識別するステップを更に含む、請求項5に記載の方法。
  7. 前記第1のフラグメントの前記サブセットを識別するステップ及び前記第2のフラグメントの前記サブセットを識別するステップが、更なるフラグメントが削除されなくなるまで繰り返される、請求項6に記載の方法。
  8. コンピュータ読取り可能媒体であって、コンピュータに、請求項1〜7のいずれか1項に記載の方法の各ステップを実行させるためのプログラムを記録したコンピュータ読取り可能媒体。
JP09482898A 1997-04-07 1998-04-07 データベースシステムにおいて結合質問を実行する方法及び装置 Expired - Lifetime JP4866495B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/833519 1997-04-07
US08/833,519 US5987453A (en) 1997-04-07 1997-04-07 Method and apparatus for performing a join query in a database system

Publications (2)

Publication Number Publication Date
JPH10320423A JPH10320423A (ja) 1998-12-04
JP4866495B2 true JP4866495B2 (ja) 2012-02-01

Family

ID=25264637

Family Applications (1)

Application Number Title Priority Date Filing Date
JP09482898A Expired - Lifetime JP4866495B2 (ja) 1997-04-07 1998-04-07 データベースシステムにおいて結合質問を実行する方法及び装置

Country Status (7)

Country Link
US (1) US5987453A (ja)
EP (1) EP0877327B1 (ja)
JP (1) JP4866495B2 (ja)
AU (1) AU752283B2 (ja)
BR (1) BR9804282A (ja)
CA (1) CA2232938C (ja)
DE (1) DE69839747D1 (ja)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6112198A (en) * 1997-06-30 2000-08-29 International Business Machines Corporation Optimization of data repartitioning during parallel query optimization
JP3571201B2 (ja) * 1997-12-12 2004-09-29 富士通株式会社 データベース検索装置及びデータベース検索プログラムを記録したコンピュータ読み取り可能な記録媒体
US6167399A (en) * 1998-05-05 2000-12-26 Ncr Corporation Join index for relational databases
US6438542B1 (en) 1999-08-30 2002-08-20 International Business Machines Corporation Method of optimally determining lossless joins
JP3211956B2 (ja) * 1999-08-31 2001-09-25 勲 清水 データベースシステム
US7336790B1 (en) * 1999-12-10 2008-02-26 Sun Microsystems Inc. Decoupling access control from key management in a network
US7765581B1 (en) 1999-12-10 2010-07-27 Oracle America, Inc. System and method for enabling scalable security in a virtual private network
US6938169B1 (en) 1999-12-10 2005-08-30 Sun Microsystems, Inc. Channel-specific file system views in a private network using a public-network infrastructure
US6970941B1 (en) * 1999-12-10 2005-11-29 Sun Microsystems, Inc. System and method for separating addresses from the delivery scheme in a virtual private network
US6977929B1 (en) 1999-12-10 2005-12-20 Sun Microsystems, Inc. Method and system for facilitating relocation of devices on a network
AUPQ585100A0 (en) * 2000-02-25 2000-03-16 Canon Kabushiki Kaisha Customisable filter interface
US6618729B1 (en) * 2000-04-20 2003-09-09 Ncr Corporation Optimization of a star join operation using a bitmap index structure
US6505188B1 (en) 2000-06-15 2003-01-07 Ncr Corporation Virtual join index for relational databases
US6618720B1 (en) 2000-06-15 2003-09-09 Ncr Corporation Common spool files for maintaining join indexes
US6505189B1 (en) 2000-06-15 2003-01-07 Ncr Corporation Aggregate join index for relational databases
US7552135B2 (en) * 2001-11-15 2009-06-23 Siebel Systems, Inc. SQL adapter business service
US6983275B2 (en) * 2002-04-16 2006-01-03 International Business Machines Corporation Optimizing database query by generating, determining the type of derived predicate based on monotonicity of the column generating expression for each remaining inequality predicate in the list of unexamined predicates
US7765211B2 (en) * 2003-04-29 2010-07-27 International Business Machines Corporation System and method for space management of multidimensionally clustered tables
US7111025B2 (en) * 2003-04-30 2006-09-19 International Business Machines Corporation Information retrieval system and method using index ANDing for improving performance
US7401069B2 (en) * 2003-09-11 2008-07-15 International Business Machines Corporation Background index bitmapping for faster query performance
ATE515746T1 (de) 2003-09-15 2011-07-15 Ab Initio Technology Llc Datenprofilierung
US7240078B2 (en) * 2003-11-25 2007-07-03 International Business Machines Corporation Method, system, and program for query optimization with algebraic rules
US20050222980A1 (en) * 2004-03-31 2005-10-06 International Business Machines Corporation Fragment elimination
US7596546B2 (en) * 2004-06-14 2009-09-29 Matchett Douglas K Method and apparatus for organizing, visualizing and using measured or modeled system statistics
US8145642B2 (en) * 2004-11-30 2012-03-27 Oracle International Corporation Method and apparatus to support bitmap filtering in a parallel system
US7536379B2 (en) * 2004-12-15 2009-05-19 International Business Machines Corporation Performing a multiple table join operating based on generated predicates from materialized results
US20060235834A1 (en) * 2005-04-14 2006-10-19 Microsoft Corporation Path expression in structured query language
US7428524B2 (en) * 2005-08-05 2008-09-23 Google Inc. Large scale data storage in sparse tables
EP1785396A1 (en) * 2005-11-09 2007-05-16 Nederlandse Organisatie voor Toegepast-Natuuurwetenschappelijk Onderzoek TNO Process for preparing a metal hydroxide
US7660814B2 (en) * 2005-12-21 2010-02-09 Teradata Us, Inc. Techniques for mapping a physical table to multiple virtual tables
US7865503B2 (en) * 2006-05-15 2011-01-04 Algebraix Data Corporation Systems and methods for data storage and retrieval using virtual data sets
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
US7769754B2 (en) * 2006-05-15 2010-08-03 Algebraix Data Corporation Systems and methods for data storage and retrieval using algebraic optimization
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
US7797319B2 (en) * 2006-05-15 2010-09-14 Algebraix Data Corporation Systems and methods for data model mapping
US7769843B2 (en) * 2006-09-22 2010-08-03 Hy Performix, Inc. Apparatus and method for capacity planning for data center server consolidation and workload reassignment
US7685227B2 (en) * 2006-11-10 2010-03-23 Gerber Robert H Message forwarding backup manager in a distributed server system
US7957948B2 (en) * 2007-08-22 2011-06-07 Hyperformit, Inc. System and method for capacity planning for systems with multithreaded multicore multiprocessor resources
US8788986B2 (en) 2010-11-22 2014-07-22 Ca, Inc. System and method for capacity planning for systems with multithreaded multicore multiprocessor resources
US8010547B2 (en) * 2008-04-15 2011-08-30 Yahoo! Inc. Normalizing query words in web search
US8073840B2 (en) * 2008-06-17 2011-12-06 Attivio, Inc. Querying joined data within a search engine index
US8145806B2 (en) 2008-09-19 2012-03-27 Oracle International Corporation Storage-side storage request management
US8868831B2 (en) 2009-09-14 2014-10-21 Oracle International Corporation Caching data between a database server and a storage system
US8484351B1 (en) 2008-10-08 2013-07-09 Google Inc. Associating application-specific methods with tables used for data storage
US8438153B2 (en) * 2010-10-11 2013-05-07 Hewlett-Packard Development Company, L.P. Performing database joins
CN103348598B (zh) 2011-01-28 2017-07-14 起元科技有限公司 生成数据模式信息
US9965500B2 (en) * 2011-12-12 2018-05-08 Sap Se Mixed join of row and column database tables in native orientation
CN103294525A (zh) 2012-02-27 2013-09-11 国际商业机器公司 利用用户自定义函数进行数据库查询的方法和系统
US9747363B1 (en) 2012-03-01 2017-08-29 Attivio, Inc. Efficient storage and retrieval of sparse arrays of identifier-value pairs
EP2833274A4 (en) * 2012-03-29 2015-12-23 Nec Corp ENCRYPTED DATABASE SYSTEM, CLIENT DEVICE, DATABASE SERVER, DATA CONNECTION PROCEDURE AND PROGRAM
US8583687B1 (en) 2012-05-15 2013-11-12 Algebraix Data Corporation Systems and methods for indirect algebraic partitioning
US8862571B2 (en) * 2012-06-29 2014-10-14 International Business Machines Corporation Predicate pushdown with late materialization in database query processing
US9087209B2 (en) * 2012-09-26 2015-07-21 Protegrity Corporation Database access control
US9323748B2 (en) 2012-10-22 2016-04-26 Ab Initio Technology Llc Profiling data with location information
US9892026B2 (en) 2013-02-01 2018-02-13 Ab Initio Technology Llc Data records selection
US20140236857A1 (en) * 2013-02-21 2014-08-21 Bank Of America Corporation Data Communication and Analytics Platform
US9275103B2 (en) * 2013-02-28 2016-03-01 International Business Machines Corporation Optimization of JOIN queries for related data
US10528590B2 (en) 2014-09-26 2020-01-07 Oracle International Corporation Optimizing a query with extrema function using in-memory data summaries on the storage server
US10642837B2 (en) 2013-03-15 2020-05-05 Oracle International Corporation Relocating derived cache during data rebalance to maintain application performance
US10268639B2 (en) * 2013-03-15 2019-04-23 Inpixon Joining large database tables
US9953054B2 (en) * 2013-04-22 2018-04-24 Salesforce.Com, Inc. Systems and methods for implementing and maintaining sampled tables in a database system
US11487732B2 (en) 2014-01-16 2022-11-01 Ab Initio Technology Llc Database key identification
EP3114578A1 (en) 2014-03-07 2017-01-11 AB Initio Technology LLC Managing data profiling operations related to data type
US9275155B1 (en) 2015-01-23 2016-03-01 Attivio Inc. Querying across a composite join of multiple database tables using a search engine index
US10437824B2 (en) 2015-01-23 2019-10-08 Attivio, Inc. Querying across a composite join of multiple database tables using a search engine index
US10977251B1 (en) * 2015-12-30 2021-04-13 Teradata Us, Inc. Join index bitmap for non-equality query conditions
EP3333794A1 (en) * 2016-12-08 2018-06-13 Mastercard International Incorporated Multi-merchant portal for e-commerce
US10977434B2 (en) * 2017-07-11 2021-04-13 Asana, Inc. Database model which provides management of custom fields and methods and apparatus therfor
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US11068540B2 (en) 2018-01-25 2021-07-20 Ab Initio Technology Llc Techniques for integrating validation results in data profiling and related systems and methods
US11157478B2 (en) 2018-12-28 2021-10-26 Oracle International Corporation Technique of comprehensively support autonomous JSON document object (AJD) cloud service
US11200234B2 (en) 2019-06-14 2021-12-14 Oracle International Corporation Non-disruptive dynamic ad-hoc database catalog services
US10990596B2 (en) 2019-06-14 2021-04-27 Oracle International Corporation Non-disruptive referencing of special purpose operators for database management systems
US12086136B2 (en) * 2020-02-04 2024-09-10 Disney Enterprises, Inc. Techniques for executing join operations using bitmap indices

Family Cites Families (7)

* 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 リレ−シヨナル・モデルにおけるジヨイン演算処理方式
US5452238A (en) * 1989-06-13 1995-09-19 Schlumberger Technology Corporation Method for solving geometric constraint systems
US5210870A (en) * 1990-03-27 1993-05-11 International Business Machines Database sort and merge apparatus with multiple memory arrays having alternating access
JPH077422B2 (ja) * 1991-08-23 1995-01-30 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ処理データベース・システムにおけるジョインの実行方法及びシステム
US5412804A (en) * 1992-04-30 1995-05-02 Oracle Corporation Extending the semantics of the outer join operator for un-nesting queries to a data base
AU4843693A (en) * 1992-09-01 1994-03-29 Bertram G Brehm Information model based on a physical system
CA2095311A1 (en) * 1993-04-30 1994-10-31 Richard E. Swagerman Conversation management routine for co-operative processing applications

Also Published As

Publication number Publication date
DE69839747D1 (de) 2008-09-04
AU752283B2 (en) 2002-09-12
AU5943798A (en) 1998-10-08
EP0877327B1 (en) 2008-07-23
CA2232938C (en) 2006-07-04
EP0877327A3 (en) 2000-09-06
JPH10320423A (ja) 1998-12-04
US5987453A (en) 1999-11-16
MX9802587A (es) 1998-12-31
CA2232938A1 (en) 1998-10-07
BR9804282A (pt) 1999-11-16
EP0877327A2 (en) 1998-11-11

Similar Documents

Publication Publication Date Title
JP4866495B2 (ja) データベースシステムにおいて結合質問を実行する方法及び装置
US6694323B2 (en) System and methodology for providing compact B-Tree
JP4073033B1 (ja) 結合演算の処理機能の向上を考慮した合成関係演算を利用したマルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム
US8140495B2 (en) Asynchronous database index maintenance
US6484181B2 (en) Method and system for handling foreign key update in an object-oriented database environment
US6463439B1 (en) System for accessing database tables mapped into memory for high performance data retrieval
US6738790B1 (en) Approach for accessing large objects
US5685003A (en) Method and system for automatically indexing data in a document using a fresh index table
US7243110B2 (en) Searchable archive
JP3914662B2 (ja) データベース処理方法及び実施装置並びにその処理プログラムを記憶した媒体
US6243718B1 (en) Building indexes on columns containing large objects
US6549895B1 (en) Method and apparatus for analyzing data retrieval using index scanning
US20040205044A1 (en) Method for storing inverted index, method for on-line updating the same and inverted index mechanism
US6366902B1 (en) Using an epoch number to optimize access with rowid columns and direct row access
JP4071816B1 (ja) 合成関係演算を利用したマルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム
US6343286B1 (en) Efficient technique to defer large object access with intermediate results
JPH10143538A (ja) 一般化されたキーインデックス
Taniar et al. A taxonomy of indexing schemes for parallel database systems
US6513028B1 (en) 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
JP4109305B1 (ja) マルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム
JPH08235033A (ja) オブジェクト指向データベース管理システムにおける結合演算方式
Banerjee et al. A methodology for supporting existing CODASYL databases with new database machines
Deppisch et al. Managing complex objects in the Darmstadt database kernel system
Goldstein et al. Database management with sequence trees and tokens
MXPA98002587A (en) Method and apparatus for carrying out a joint consultation in a da base system

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20040227

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080422

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080617

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080617

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20080617

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080617

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080930

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090115

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090115

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090220

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20090327

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110427

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110921

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111102

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20111102

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111114

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141118

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080617

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141118

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141118

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term