JP4866495B2 - データベースシステムにおいて結合質問を実行する方法及び装置 - Google Patents
データベースシステムにおいて結合質問を実行する方法及び装置 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24561—Intermediate data storage techniques for performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99934—Query formulation, input preparation, or translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99935—Query 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
【産業上の利用分野】
本発明は、データベース・システムに関し、特に、データベース・システムによって結合述語を有するクエリーを処理する方法及び該方法の各ステップをコンピュータに実行させるためのプログラムを記録したコンピュータ読取り可能媒体に関する。
【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の表と第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の複数のフラグメントから削除するステップと、
削除されなかったフラグメントに対して前記結合述語を含む前記クエリーを実行するステップと
を含む、前記方法。 - データベースにおいて、第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の複数のフラグメントから識別するステップと、
前記識別されたフラグメントに対して前記結合述語を含む前記クエリーを実行するステップと
を含む、前記方法。 - 前記フラグメントを識別するステップが、前記結合フラグメント・マップを用いて、前記結合述語を満足しうる前記第1のフラグメントのセットを識別するステップを含む、請求項2に記載の方法。
- 前記フラグメントを識別するステップが、前記結合フラグメント・マップを用いて、前記第1のフラグメントの前記セットを有し前記結合述語を満足するところの前記第2のフラグメントのセットを識別するステップを更に含む、請求項3に記載の方法。
- 前記フラグメントを識別するステップが、前記結合フラグメント・マップを用いて、前記第2のフラグメントの前記セットを有し前記結合述語を満足するところの前記第1のフラグメントの前記セットのサブセットを識別するステップを更に含む、請求項4に記載の方法。
- 前記フラグメントを識別するステップが、前記結合フラグメント・マップを用いて、前記第1のフラグメントの前記セットを有し前記結合述語を満足するところの前記第2のフラグメントの前記セットのサブセットを識別するステップを更に含む、請求項5に記載の方法。
- 前記第1のフラグメントの前記サブセットを識別するステップ及び前記第2のフラグメントの前記サブセットを識別するステップが、更なるフラグメントが削除されなくなるまで繰り返される、請求項6に記載の方法。
- コンピュータ読取り可能媒体であって、コンピュータに、請求項1〜7のいずれか1項に記載の方法の各ステップを実行させるためのプログラムを記録したコンピュータ読取り可能媒体。
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)
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)
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 |
-
1997
- 1997-04-07 US US08/833,519 patent/US5987453A/en not_active Expired - Lifetime
-
1998
- 1998-03-20 AU AU59437/98A patent/AU752283B2/en not_active Ceased
- 1998-03-24 CA CA002232938A patent/CA2232938C/en not_active Expired - Lifetime
- 1998-04-06 BR BR9804282-3A patent/BR9804282A/pt not_active IP Right Cessation
- 1998-04-07 EP EP98302804A patent/EP0877327B1/en not_active Expired - Lifetime
- 1998-04-07 JP JP09482898A patent/JP4866495B2/ja not_active Expired - Lifetime
- 1998-04-07 DE DE69839747T patent/DE69839747D1/de not_active Expired - Lifetime
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 |