JP3640346B2 - データベース管理システムにおける集合述部および検索 - Google Patents

データベース管理システムにおける集合述部および検索 Download PDF

Info

Publication number
JP3640346B2
JP3640346B2 JP2001034814A JP2001034814A JP3640346B2 JP 3640346 B2 JP3640346 B2 JP 3640346B2 JP 2001034814 A JP2001034814 A JP 2001034814A JP 2001034814 A JP2001034814 A JP 2001034814A JP 3640346 B2 JP3640346 B2 JP 3640346B2
Authority
JP
Japan
Prior art keywords
group
computer
predicate
round radius
tuple
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 - Fee Related
Application number
JP2001034814A
Other languages
English (en)
Other versions
JP2001273327A (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 JP2001273327A publication Critical patent/JP2001273327A/ja
Application granted granted Critical
Publication of JP3640346B2 publication Critical patent/JP3640346B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/242Query formulation
    • G06F16/2433Query languages
    • G06F16/244Grouping and aggregation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24547Optimisations to support specific applications; Extensibility of optimisers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24556Aggregation; Duplicate elimination
    • 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/99937Sorting
    • 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/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

Landscapes

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

Description

【0001】
【発明の属する技術分野】
本発明は、全般的にはコンピュータ実施されるデータベース管理システムに関し、具体的には、データベース管理システムの集合述部(aggregate predicate)および検索に関する。
【0002】
【従来の技術】
データベースとは、コンピュータ化された情報記憶システムおよび情報検索システムである。たとえば、リレーショナル・データベース管理システム(RDBMS)は、データの記憶および検索に関係技法を使用するデータベース管理システム(DBMS)である。リレーショナル・データベースは、データの行および列からなる物理テーブルに編成される。行は、形式的にはタプルまたはレコードと呼ばれる。データベースは、通常、多数の物理テーブルを有し、各物理テーブルが、通常は複数のタプルおよび複数の列を有する。物理テーブルは、通常は、半永久的な記憶のために磁気ディスク・ドライブまたは光ディスク・ドライブなどのランダム・アクセス記憶装置(RASD)に格納される。
【0003】
さらに、論理テーブルまたは「ビュー」を、物理テーブルに基づいて生成し、データベースを見る特定の方法を提供することができる。ビューによって、データベースの物理編成に影響せずに、行をある順序で配置することができる。
【0004】
既存のデータベース・システムでは、集合述部サポートが使用可能でない。しかし、多くの応用分野が、集合述部を使用する検索機能を必要とする。たとえば、集合述部は、下記の状況に必要である。
・画像または文書に対する類似性検索。
・空間的オブジェクトに対する最近隣(nearest neighbor)検索。
【0005】
既存のデータベース・システムでは、ユーザは、標準の関係演算子(<、<=、=、<>、>、>=)および論理演算子(and、or、not)を使用することによって、照会の結果を制限することができる。これらの関係演算子および論理演算子のほかに、International Business Machines, CorporationのDB2(登録商標)などのオブジェクト・リレーショナル・データベースでは、ユーザが、照会に使用することができ、照会最適化プログラムによって利用することができる述部を定義することができる。W.チェン(Chen)、J.−H.チョウ(Chow)、Y.−C.ユウ(You)、J.グランボア(Grandbois)、M.ジョウ(Jou)、N.マットス(Mattos)、B.トラン(Tran)、Y.ウォン(Wang)著、「High Level Indexing of User-Defined Types」、Proceedings of the 25th International Conference on Very Large Data Bases、Edinburgh、1999年9月、第554〜564ページ。
【0006】
これらの述部は、他の個々の値から独立な、個々の値について真または偽になるスカラ述部である。たとえば、distance (customer.location、store.location) < 5などの条件を検討されたい。このdistance(距離)条件の場合、customer(顧客)およびstore(店舗)のlocation(位置)の任意の対に対して、distance条件によって、他の顧客または店舗の位置とは独立に、顧客の位置と店舗の位置の間の距離が5未満であるか否かが評価される(すなわち、条件が真または偽のいずれかとして評価される)。
【0007】
既存のデータベース・システムは、スカラ関数と少数の総計関数の両方をサポートする。たとえば、スカラ関数の例が、abs(絶対値を返す)およびsqrt(引数の平方根を返す)である。総計関数は、値の集合(すなわち列)を操作し、スカラ値を返す。総計関数の例には、max(列内の最大の非ヌル値を返す)、min(列内の最小の非ヌル値を返す)、およびavg(列内の非ヌル値の平均を返す)が含まれる。スカラ関数と総計関数の主な相違は、総計関数が値の組を操作するのに対して、スカラ関数が引数として個々の値だけをとることである。最近、総計関数が、オンライン分析処理(OLAP)関数に一般化された。F.ゼムケ(Zemke)、K.クルカーニ(Kulkarni)、A.ウィトカウスキ(Witkowski)、B.ライル(Lyle)著、「Introduction to OLAP Functions」、ISO/IEC JTC1/SC32 WG3−YGJ−nnn、ANSI NCITS H2−99−154、1999年4月12日。OLAP関数は、総計関数である。OLAP関数の呼出しのそれぞれは、OLAP関数が適用される値の組を指定する関連ウィンドウを有する。
【0008】
関数とは異なり、既存のデータベース・システムは、値の所与の組に関して個々の値の真または偽になる集合述部をサポートしない。多くの実世界の応用分野が、集合述部を必要とする。下記は、一般的な例の一部にすぎない。
1.所与の画像に似ている上位10個の画像を見つける。
2.ある家に最も近い上位5個の断層はどれか。
3.所与の位置に最も近い病院はどれか。
4.各店舗について、先月の売上上位10位までの製品を見つける。
【0009】
これらの例は、いくつかの共通の態様を共有する。第1に、例のそれぞれに、集合述部が含まれる。たとえば、所与の位置に対する相対的な他の病院の位置と比較しなければ、ある病院がその所与の位置に最も近いかどうかを判定することはできない。第2に、例のすべてが、集合述部に基づく検索を必要とする。言い換えると、目標は、所与の病院がある位置に最も近いかどうかを知るために検査することではない。そうではなくて、所与の位置に最も近い病院(おそらくは多数の病院のグループから)を探しているのである。
【0010】
【発明が解決しようとする課題】
したがって、当技術分野には、既存のデータベース・システムに集合述部を導入し、集合述部に基づく検索を可能にすることの必要が存在する。
【0011】
【課題を解決するための手段】
上で説明した従来技術の制限を克服し、本明細書を読み、理解した後に明白になる他の制限を克服するために、本発明は、データベース管理システム内で集合述部および検索を可能にする、コンピュータ実施される技法のための方法、装置、および製造品を開示する。
【0012】
本発明によれば、コンピュータ内でステートメントを実行して、コンピュータに接続されたデータ・ストア内のデータを操作する。まず、集合述部を有するステートメントを受け取る。その後、ステートメントを評価する時に、集合述部を処理してランク・データにする。さらに、評価には、早期終了(early termination)を有する拡張ソート演算子の実行が含まれる。
【0013】
これから図面を参照するが、図では、同様の符号が図を通じて対応する部分を表す。
【0014】
【発明の実施の形態】
本発明の実施形態の以下の説明では、本明細書の一部を形成し、本発明を実施することができる具体的な実施形態を例として示す添付図面を参照する。本発明の範囲から逸脱せずに構造的変更を行うことができるので、他の実施形態を使用することができることを理解されたい。
【0015】
ハードウェア環境
図1に、本発明に従って使用することができる例示的コンピュータ・ハードウェア環境を示す。この例示的環境では、コンピュータ・システム102は、ハード・ディスク・ドライブ、フロッピ・ディスク・ドライブ、CD−ROMドライブ、テープ・ドライブ、または他の装置など、1つまたは複数のリレーショナル・データベースを記憶する、1つまたは複数のデータ記憶装置104に接続された1つまたは複数のプロセッサからなる。
【0016】
コンピュータ・システム102のオペレータは、標準的なオペレータ・インターフェース106を使用して、照会と称する、データベースに対するさまざまな検索機能および取出機能を実行するコマンドを表す電気信号を、コンピュータ・システム102との間で送受する。本発明の1実施形態では、これらの照会が、構造化照会言語(SQL)標準規格に従い、リレーショナル・データベース管理システム(RDBMS)ソフトウェアによって実行される機能を呼び出す。
【0017】
SQLインターフェースは、RDBMSソフトウェアの標準言語に進化し、したがって、米国規格協会(ANSI)および国際標準化機構(ISO)の両方によって採用されている。SQLインターフェースによって、ユーザが、対話的に、バッチ・ファイルで、またはCおよびCOBOLなどのホスト言語に埋め込んでのいずれかで、テーブルに対する関係演算を定式化できるようになる。SQLによって、ユーザがデータを操作できるようになる。
【0018】
本発明の好ましい実施形態では、RDBMSソフトウェアに、International Business Machines, Corporationが提供するDB2(登録商標)for Universal Database(UDB)製品が含まれる。しかし、本発明が、すべてのデータベース・ソフトウェアに対する応用性を有することを、当業者は理解するであろう。
【0019】
SQLステートメントが実行のために準備される時に、UDB最適化プログラムが、ステートメントを分析し、要求を満足する代替方法を検討し、各代替案のコストを見積もり、最も低いコスト(処理要件および入出力要件に関して)を有する代替案を選択する。これを行う際に、最適化プログラムは、ステートメント実行のためのアクセス・プランを生成する。このアクセス・プランによって、要求を満足する方法(たとえば、索引を使用するか2つのテーブルからデータを結合することによるなど)が示される。アクセス・プランは、しばしば、1つまたは複数のテーブルまたは索引から処理ノード(たとえば結合ノード)を介して元のSQLステートメントを満足する結果セットへデータがどのように流れるかを示すグラフとして示すことができる。
【0020】
DB2(登録商標)for UDBシステムの中心に、データベース・サービス・モジュール108がある。データベース・サービス・モジュール108には、リレーショナル・データベース・サービス(RDS)110、データ・マネージャ112、バッファ・マネージャ114、およびSQLコンパイラ/インタープリタなどの他のコンポーネント116を含む複数のサブモジュールが含まれる。これらのサブモジュールは、SQL言語の機能すなわち、ユーザ・データおよびシステム・データの定義、アクセス制御、解釈、コンパイル、データベース検索、および更新をサポートする。
【0021】
本発明は、全般的に、データベース・サービス・モジュール108の制御下で実行されるSQLステートメントを使用して実施される。データベース・サービス・モジュール108は、SQLステートメントを取り出すか受け取り、このSQLステートメントは、一般に、データ記憶装置104にテキスト・ファイルとして格納されるか、オペレータ・インターフェース106を介してモニタ118の前のオペレータによってコンピュータ・システム102に対話的に入力される。データベース・サービス・モジュール108は、コンピュータ・システム102による実行のためにSQLステートメントから命令を導出または合成する。
【0022】
一般に、RDBMSソフトウェア、SQLステートメント、およびそれから導出される命令のすべてが、たとえば1つまたは複数のデータ記憶装置104などのコンピュータ可読媒体内で具体的に実施される。さらに、RDBMSソフトウェア、SQLステートメント、およびそれから導出される命令のすべてが、コンピュータ・システム102によって読み取られ実行される時に、本発明を実施するか使用するのに必要なステップをコンピュータ・システム102に実行させる命令からなる。オペレーティング・システムの制御下で、RDBMSソフトウェア、SQLステートメント、およびそれから導出される命令を、実際の動作中に使用するためにデータ記憶装置104からコンピュータ・システム102のメモリにロードすることができる。
【0023】
したがって、本発明は、標準的なプログラミング技法またはエンジニアリング技法もしくはその両方を使用して、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組合せを作る方法、装置、または製造品として実施することができる。本明細書で使用する用語「製造品」(または、その代替として「コンピュータ・プログラム製品」)は、すべてのコンピュータ可読装置、担体、または媒体からアクセス可能なコンピュータ・プログラムを含むことが意図されている。もちろん、当業者は、本発明の範囲から逸脱せずに、この構成に多数の変更を行うことができることを理解するであろう。
【0024】
当業者は、図1に示された例示的環境が、本発明を制限する目的でないことを理解するであろう。実際、当業者は、本発明の範囲から逸脱せずに、他の代替ハードウェア環境を使用することができることを理解するであろう。
【0025】
図2は、SQLステートメントを評価する処理を示す図である。SQLプログラム200に、SQLステートメントが含まれる。コンパイラ202が、SQLプログラム200を解釈済みコード204にコンパイルする。解釈済みコード204およびデータベース・ランタイム・ライブラリ206(たとえば、ストアド・プロシージャおよびユーティリティを含む)が、インタープリタ208に入力される。インタープリタ208の出力は、リレーショナル・データベース・マネージャ210にアクセスし、SQLステートメントによって要求されたデータをデータベース212から取り出すのに使用される。本発明の1実施形態では、本発明の一部が、コンパイラ内に常駐し、集合述部を含むSQLステートメントをコンパイルして、拡張ソート演算子を含むアクセス・プランを形成する。
【0026】
データベース管理システム内での集合述部および検索
本発明は、集合述部のための構文を提供する。さらに、本発明は、集合述部検索のためのアクセス技法を提供する。
【0027】
具体的に言うと、SQL言語は、SQL照会またはSQLステートメントに検索条件を含める能力を備える。検索条件(たとえばx<5)は、ブール値をもたらす。本発明は、SQLステートメントの検索条件(たとえばWHERE文節またはHAVING文節)に含めることができる集合述部を定義することによって、SQL言語を拡張する。ランク演算子を定義した後に、SQL言語用のコンパイラが、そのランク演算子を処理できなければならない。したがって、本発明は、コンパイラが集合述部を含むSQLステートメントのアクセス・プランに含めるrk_sort演算(すなわち、拡張されたソート操作)も提供する。
【0028】
以下の説明は、次のように編成されている。
A.データベース・システムへの集合述部の導入
B.集合述部の言語およびセマンティクス
C.集合述部検索のための拡張された索引方法およびアクセス方法
D.照会の例
E.流れ図
F.要約と本発明の追加の長所
【0029】
A.データベース・システムへの集合述部の導入
本発明は、いくつかの点でDBMS(データ・ベース管理システム)での集合述部および検索に貢献する。第1に、本発明は、集合述部という概念によってDBMSで使用されるSQLを拡張する。集合述部は、照会で従来のスカラ述部(すなわち関係演算子および論理演算子)と同一の形で使用することができる。第2に、本発明によって、集合述部のための柔軟な言語機構が設計される。集合述部は、プリミティブ述部または複合述部(論理演算子を伴う)のいずれかとすることができる。集合述部は、ウィンドウ指定によって決定される値の組を操作する。
【0030】
第3に、本発明によって、明示的な束縛のないランク付き増分検索と、具体的な束縛(上位10位など)を有するランク付き増分検索の両方をサポートする、集合述部のためのラン・タイム照会実行戦略が設計される。集合述部に基づいて検索を近似しようとするのではなく、本発明の戦略では、正しく集合述部に基づく検索の結果を計算する。
【0031】
第4に、本発明によって、集合述部のランクがシステム定義関数だけを使用して計算される時の集合述部のための索引付け最適化戦略および照会最適化戦略が設計される。最後に、本発明によって、ランクがユーザ定義関数によって計算される集合述部のために索引付け最適化戦略および照会最適化戦略が拡張される。本発明は、集合述部に関する拡張可能な索引付けをサポートする。
【0032】
本発明の使用には、以下を含む複数の長所がある。
・照会言語の機能強化された表現力。
・多くの応用分野に関する性能改善。
・データベース・システムのより広い適用度。
・集合述部に関するユーザ定義の検索技法。
【0033】
本発明の主要な長所は、ユーザが、データベース・アプリケーションで集合述部に基づく検索を実行でき、よりよい性能を得ることができることである。より具体的な長所を、下で示す。
【0034】
第1に、集合述部のSQL言語への導入は、ユーザに機能強化された表現力を与える。ユーザは、SQL言語によって提供される総計関数を呼び出すアプリケーション・プログラムまたはストアド・プロシージャを使用して多少の集合述部をシミュレートすることができる可能性があるが、そのような手法は、使用可能度の問題と性能の問題を有する。これは、総計関数および集合述部が、異なる目的のために働くからである。総計関数の目的は、max、min、avg、count、またはoutなど、値の組に対してスカラ値を計算することである。集合述部の目的は、特定の集合特性を満足する値を検索することである。総計関数を用いると、使用可能度に関して、ユーザが上位5つの最も近いレストランを探したい場合に、ユーザは、レストランのランキングのデータを格納する明示的な列を作成した後に、その明示的なランキング列に対する条件を作成しなければならない。性能に関して、総計関数は、必ず計算される。その一方で、集合述部に基づく検索は、そのような計算を回避するか、制限することができる。
【0035】
第2に、集合述部に基づく検索を直接にサポートすることによって、本発明は、多くの応用分野で性能改善をもたらすことができる。集合述部を評価する単純な手法は、集合述部のすべての可能な候補のランキングを計算し、その後、集合述部を満足する候補だけを選択することである。たとえば、上位5位までの最も近いレストランを見つけるには、単純な手法では、現在位置とすべてのレストランの位置との間の距離を計算し、その後、最短距離を用いて上位5つの最も近いレストランを選択することになる。本発明の1実施形態は、回答の正しさを保証しながら検索空間を制限する、集合述部のための検索機構を提供する。
【0036】
第3に、本発明は、従来のスカラ述部(関係演算子および論理演算子)と集合述部の均一な取扱を提供する。その結果、索引付けおよび照会の最適化の既存のフレームワークを、集合述部に一般化することができる。たとえば、ローカル述部(local predicate)およびキー述部という概念は、スカラ述部と集合述部に同等に適用可能である。
【0037】
第4に、本発明は、初めて、集合述部に関する拡張可能な索引付けをサポートする。さまざまな応用分野に関して、集合述部は、しばしば、ユーザ定義関数に基づくランキングを伴う。1実施形態では、データベース・システムが、集合述部に基づく検索方法を決定しない。この実施形態の場合、本発明は、アプリケーション開発者に権限を与え、その結果、アプリケーション開発者が、その専門領域の知識を利用して、集合述部に関する効率的な検索戦略を開発できるようになる。
【0038】
総合的に、本発明からの使用可能度および性能の長所が、データベース技術をより広範囲の応用分野に適用することを可能にする。
【0039】
B.集合述部の言語およびセマンティクス
本発明の1実施形態は、集合述部をサポートするためのSQL拡張を提供する。この手法では、スカラ述部と集合述部を均一な形で扱い、その結果、スカラ述部用の既存のインフラストラクチャを集合述部に使用できるようにする。
【0040】
c1<c2+10などのスカラ述部を検討されたい。スカラ述部の真の値を判定するためには、c1とc2の値だけが必要である。これに対して、集合述部は、その真の値を判定するためにより多くの情報を必要とする。たとえば、上位5位までの給料を見つけるためには、以下の情報が必要である。
・集合述部に使用されるランキング:salary(給料)。
・所望の順序:上位5位の給料の降順または下位5位の給料の昇順。
・所望の回答の数:この場合は5つ。この数は、値が増分的に取り出され、いつでも停止または継続が可能である場合には省略することができる。
・集合述部が評価される対象の値の組(たとえば、あるテーブルのすべての給料の値、または各部署のすべての給料の値の組とすることができる)。
【0041】
本発明では、新しい構文である集合述部を、SQL言語の「検索条件」に定義する(説明を簡単にするために、以下の構文では複合集合述部を示さない。しかし、当業者は、本発明の範囲内で複合集合述部を使用することができることを理解するであろう)。拡張された構文は次の通りである。
Figure 0003640346
【0042】
述部は、スカラ述部または集合述部のいずれかとすることができる。さらに、集合述部の場合、RANKキーワード(すなわち集合述部識別子)によって、スカラ式が集合述部として識別される。ランキングの所望の順序は、ASC(すなわち昇順)キーワードまたはDESC(すなわち降順)キーワード(すなわち結果順序付けインジケータ)に従って実行される。所望の結果の個数は、FIRST文節で指定される。FIRST文節が省略された場合には、すべての結果が、指定された順序で出力される。OVER文節のウィンドウ指定が存在する場合には、これによって、集約を実行する方法が決定される(すなわち、集合述部が評価される対象の値の組が指定される)。集合ウィンドウが指定されない場合には、結果は、テーブル全体に対して集約される。
【0043】
集合述部を評価する時には、まず、必要な情報のすべてを取り込む。その後、下で説明するその後の処理を実行する。
【0044】
1特定の例として、name(名前)、dept(部署)、salary(給料)、およびage(年齢)という列がある、empという名前のテーブルがあると仮定する。次の例のSQLステートメントは、上位5位の給料とそれに対応する名前を要求するステートメントである。
SELECT name,salary
FROM emp
WHERE RANK (salary) DESC FIRST 5
【0045】
上のステートメントの場合、照会を評価する方法の1つは、すべてのレコードを取り出し、salaryに基づいてソートすることである。その後、上位5つを降順で返す。
【0046】
各部署の上位5位までの給料を取り出すためには、次の例のSQLステートメントを使用することができる。
SELECT dept,name,salary
FROM emp
WHERE RANK (salary) DESC FIRST 5 OVER(dept)
【0047】
上では、ウィンドウ指定がdeptになっている。したがって、2つの部署がある場合には、各部署の上位5人の従業員が返される。
【0048】
集合述部は、スカラ述部と一緒に使用することができる。次の例のSQLステートメントを検討されたい。
SELECT dept,name,salary
FROM emp
WHERE RANK (salary) DESC FIRST 5 OVER (dept)
AND age < 25
【0049】
集合述部とスカラ述部が同一レベルにあるので、上のSQLステートメントのセマンティクスは、各部署でその部署内で上位5位までの給料を稼ぎ、年齢が25歳未満の従業員の、部署、名前、および給料を見つけることである。
【0050】
各部署の若い従業員の間で上位5位までの給料を見つけるには、次の例のSQLステートメントを使用することができる。
SELECT dept,name,salary
FROM emp
WHERE age < 25
HAVING RANK (salary) DESC FIRST 5 OVER(dept)
【0051】
HAVING文節が集合述部を有しない時に、HAVING文節内のすべてのスカラ述部の評価によって引き起こされる副作用がない場合に、それらのスカラ述部を、WHERE文節内の述部とマージできることに留意されたい。しかし、一般に、そのようなマージは、HAVING文節が少なくとも1つの集合述部を有する場合には実行されない)。
【0052】
GROUP BY文節がある場合であっても、集合述部がそれ自体のグループ指定(OVERによって示される)を有するので、GROUP BY文節は問題なく集合述部と相互作用する。
【0053】
給料の例で、上位第5位と上位第6位の給料が同一である場合に、1実施形態では、第6位の給料も回答セットに含まれる。この場合、RANKGAPなどの追加キーワードを使用して、重複する項目(たとえば同一の給料)がある時にそれらを表示することを示す。もう1つの実施形態では、重複する項目が表示されない(たとえば、第5位の給料だけが表示され、第6位は表示されない)。
【0054】
上の例では、分離された集合述部を検討した。スカラ述部と同様に、集合述部は、AND、OR、またはNOTなどの論理演算子を使用して組み合わせることができる。そのような集合述部の組み合わせは、R.ファギン(Fagin)著、「Fuzzy Queries in Multimedia Database Systems」、Proceedings of the 1998 ACM SIGACT-SIGMOD-SIGART Symposium on Principles of Database Systemsでファギンによって検討されたものと異なることに留意されたい。R.ファギン(Fagin)の論文「Fuzzy Queries in Multimedia Database Systems」、Proceedings of the 1998 ACM SIGACT-SIGMOD-SIGART Symposium on Principles of Database Systemsに記載のものと同様の複合集合述部をサポートするために、以下の例の構文を使用することができる。
SELECT dept,name,salary
FROM emp
WHERE (RANK (salary) DESC AND RANK(age) ASC) FIRST 5 OVER(dept)
【0055】
上のステートメントでは、部署ごとに、上位5人の若い高給取りの従業員を見つけようとする。複合集合述部のランキングは、各構成集合述部のランキングを互いに組み合わせる方法に依存する。1実施形態では、各構成集合述部に特定の重みを与えるための新しい構文が定義される(実際、上で示したファギンの論文では、各構成集合述部が、[0、1]の範囲のランキング値を備え、組み合わせ関数を使用して、構成集合述部のランキング値を計算する)。
【0056】
もう1つの例として、distance(距離)が、2つの2次元点(たとえばx−y平面内)の間のユークリッド距離を計算するユーザ定義関数(UDF)であるものとする。次のステートメントは、例のSQLステートメントのWHERE文節内で「集合述部」を使用して、所与の位置から最も近い10個のATM(自動預金支払機)を見つける。
SELECT a.name,a.location,a.address
FROM ATM a
WHERE RANK ( distance(a.location,:whereIAm)) FIRST 10
【0057】
直観的に、照会エンジンは、ATMテーブルのタプルを取り出し、WHERE文節のUDF呼出しの値に基づいてこれらのタプルをソートする。ソート順で上位10個のタプルを、結果として返す。レコードが10個未満の場合には、テーブル全体を返す。1実施形態では、重複するタプルは、上位10個のリストの末尾に現れる場合に、結果セットから削除される。
【0058】
WHERE文節に現れるほかに、集合述部は、次の例のSQLステートメントに示されているように、HAVING文節にも現れることができる。
SELECT s.id,c.name,c.address,c.income
FROM customers c,storess
WHERE within (c.location,s.zone)= 1
HAVING RANK (c.income) FIRST COUNT(*) * 0.1 OVER(s.id)
【0059】
このステートメントの結果セットには、store(店)ごとに、年収に関する顧客の上位10%を表すタプルが含まれる。WHERE文節では、2つのテーブルの間の結合条件が指定され、HAVING文節では、店ごとに行われる集約が指定される。
【0060】
C.集合述部検索のための拡張された索引方法およびアクセス方法
本発明の1実施形態は、集合述部検索のための拡張された索引方法およびアクセス方法を提供する。
【0061】
以下は、既存のSQL言語の例である。
SELECT s.id,AVG(c.income)
FROM customers c,stores s
WHERE within(c.location,s.zone) = 1
GROUP BY s.id,s.expense
HAVING s.expense <= SUM(c.income) * 0.45
【0062】
図3は、例のSQLステートメントのための通常のアクセス・プラン300を示す図である。JOINノードは、2つのテーブル(すなわちcustomersおよびstores)を結合することによって、結合タプルを作る。すなわち、「within(c.location,s.zone) = 1」が、ローカル述部として使用される。結合されたタプルは、指定されたGROUP BY式(すなわちs.idおよびs.expense)に基づいて、SORTノードによってソートされる。GROUP BYノードは、現在のグループ内のソート順の結合されたタプルを走査し、そのグループの総計関数(すなわちAVGおよびSUM)を計算し、代表的なグループ化タプルをその出力ストリームにパイピングする。MATERIALIZEノードが、最終的なフィルタリング(すなわち、s.expense <= SUM(c.income) * 0.45)を実行して、最終結果セットを生成する。
【0063】
集合述部をサポートするために、本発明の1実施形態では、新しいアクセス・プラン演算子rk_sortを定義する。このrk_sortは、SORTノードのバリエーション(すなわち、拡張ソート演算子)である。rk_sort演算子は、4つの入力をとり、出力として、ランクによってソートされたタプルの組を作る。
【0064】
最初の引数は、入力ストリームである。「ラウンド半径(round radius)」のために指定された列が、入力ストリームの各タプルに関連する。ラウンド半径の概念は、入力ストリームが複数のラウンドに分割され、ラウンドnまでに、ラウンドnの半径以下のスコアリング式を有する少なくともk個のタプルがある場合に、そのグループに属する残りのタプルを無視することによってそのグループのrk_sortを終了することができる場合の、rk_sort演算の早期終了を容易にするのに使用される。
【0065】
図4は、ラウンド半径の説明に使用されるテーブル400を示す図である。例として1次元検索を取り上げると、50000ドル未満で上位5位までの給料を有する従業員について5人の従業員の名前を選択する場合、ラウンド半径は、図4のラウンド半径列402に示されているようにセットすることができる。具体的に言うと、本発明への入力は、当初はラウンド1から来る。これによって、所望のデータにあてはまる3人の従業員の名前が選択される。その後、ラウンド2のデータが来る。このデータは、特定のラウンドから来るものとしてタグを付けられるので、ラウンド半径によって、新しいラウンドが開始されることが示されることに留意されたい。また、あるラウンド内のレコードは、順序がソートされていない可能性があることに留意されたい。新しいラウンドで継続する前に、そのラウンドのレコードをソートし、その後、所望の数のレコードが選択された(この場合では5個)かどうかを判定する。3人の従業員の名前だけが選択されており、5が所望されるので、処理が継続される。その後、ラウンド2の3つの名前を処理し、所望のデータにあてはまるもう2人の従業員の名前(ApostolおよびJoan)が、ラウンド2から選択される。ラウンドのすべての項目を処理し(たとえば、ラウンド2では3レコード)、その後、所望の数のレコードが選択されたかどうかを判定する。この時点で、5人の従業員の名前が選択されている。したがって、レコードの処理を継続する必要はない。したがって、この例では、6レコードだけを処理した後に、5つの所望の従業員の名前が選択された。
【0066】
直観的に、候補の検索は、内側から外側への「リング」のシーケンスに基づいて実行される。図5は、半径を表すリングの組500を示す図である。具体的に言うと、リングに、図4に示された半径に対応する1、2、および3のラベルが付けられている。ラウンド半径には、問題の点とリングの外側の円の間の距離がセットされる。したがって、ラウンド半径の変更は、検索リングの変更を示す。たとえば、ラウンド1からラウンド2に移ると、評価される値は、リング2に含まれる値になる。「リング検索」が可能または使用可能でない場合には、入力ストリームのラウンド半径に無限大をセットし、その結果、タプルのすべてがrk_sort演算で評価されるようにする。
【0067】
ラウンド半径は、データの分布を理解している人によってレコードに割り当てられる。データに関する統計は、たとえば、RUNSTATSなどの統計ユーティリティを実行することによって得ることができる。ラウンド半径は、列の値(たとえばsalary)に対応する。これを行った後に、アクセス・プランによって、処理のためにそのラウンド半径に基づいてレコードを取り出す。ラウンド半径に関連する列値に対して索引を作成する場合には、アクセス・プランでその索引を使用して、問題のラウンド半径内のレコードだけを取り出す。これによって、処理されソートされるレコードの量が減る。すなわち、ソートの早期終了がある。したがって、本発明の技法によって効率が改善される。
【0068】
第2の引数rankは、検索のランクであり、これによって、結果セットのグループ・カーディナリティが決定される。すなわち、上位5位の給料を選択する例では、ランクが5である。ランクは、集合述部の数式(FIRSTに続く)から得られる。
【0069】
第3の引数groupByListは、グループの形成を定義する式のリストである。たとえば、従業員の名前を部署によって選択する場合には、groupByListは部署になる。groupByListは、集合述部のウィンドウ指定(OVERに続く)から得られる。
【0070】
第4の引数scoringExpは、集合述部の左側の式である。たとえば、salary<50000をscoringExpとすることができる。scoringExpは、集合述部のスカラ式(RANKに続く)から得られる。
【0071】
rk_sort演算子の形式的なセマンティクスを、以下の擬似コードによって説明する。
rk_Sort(stream(roundRadius),rank,groupByList,scoringExp)=
1.すべてのグループについてラウンド番号を−1に初期化する。
2.While not ストリームの終り
a.ストリーム内の次に使用可能なタプルを取り出す
b.If 新しいタプルの目標グループが凍結されている then 新しいタプルを破棄し、ステップ1に進む
c.If タプルのラウンド半径(roundRadiusがグループ・ラウンド半径と異なる then
i.グループ・ラウンド半径に新しい値をセットする
ii.If 現在のラウンド半径以下のスコアリング式(scoringExpを有するタプルの数がランク(rank以上である then 現在のグループを「凍結」し、1に進む
d.GROUP BY リスト(groupByListおよびスコアリング式(scoringExpの式に基づいて、ソートされたテーブルに新しいタプルを挿入する
3.まだ凍結されていないグループを凍結する。
4.ランクによってソートされたテーブルを、プランの次のステージにパイピングする
【0072】
用語「凍結」は、このラウンドについてそれ以上レコードを調べる必要がないことを示すことに留意されたい。上の擬似コードを、下で図16ないし18の流れ図を使用して説明する。
【0073】
D.照会の例
以下では、異なる集合述部のシナリオについてアクセス・プランを示す。すべてのテーブル操作の例において、rk_SORT演算子に渡されるラウンド半径は、無限大の値であり、絶対に変更されず、その結果、すべてのレコードが単一のラウンドで取り出される。これは、索引活用(index exploitation)の例にもあてはまり、活用される索引は、集合述部からの属性以外の属性に対して定義される。そのような場合には、いくつかのレコードをフィルタ・アウトするための部分的な索引活用があるが、ランキングに基づく早期終了のための索引活用はない。ランクに基づく早期終了のために索引を完全に活用できるようにするために、rk_SORT演算子は、ISCANの後のFETCH演算子の直後に現れ、集合述部はローカル述部として使用される。
【0074】
以下は、単純な集合述部の例のSQLステートメントである。
SELECT *
FROM customer c
WHERE RANK(dist(c.loc,:stl)) ASC FIRST 10
【0075】
上のステートメントでは、STL(すなわちSanta Teresa Laboratory)に最も近い10人の顧客(customer)が選択される。単純な集合述部のもう1つの例のSQLステートメントを下に示す。
SELECT *
FROM customer c
WHERE RANK(c.income) DESC FIRST 10
【0076】
上のステートメントでは、最も高い収入(income)を有する上位10人の顧客が選択され、このステートメントでは、集合述部としてUDFではなくテーブル属性(すなわち、customerテーブルのincome列)が使用されている。図6は、索引活用を有しないアクセス・プラン600と、上の照会の両方が生成する索引活用があるアクセス・プラン602を示す図である。第2のステートメントは、customer.incomeの索引を活用できるように、customer.locではなくcustomer.incomeに対する索引を必要とすることに留意されたい。
【0077】
索引活用がないアクセス・プラン600では、TSCANノードが、タプルについてcustomerテーブルを走査する。テーブル・レコードおよびラウンド半径が、TSCANノードからrk_SORTノードに渡される。rk_SORTノードは、集合述部を評価し、タプルにランクを付け、上位10個をMATERIALIZEノードにパイピングし、MATERIALIZEノードは、パイピングされたタプルから属性を最終結果セットで返す。
【0078】
索引活用がある場合、ISCANノードは、ローカル述部としてdist(c.loc,:stl)を使用して、レコード識別子(RID)についてcustomer.loc索引を走査する。さらに、データの統計を知っているユーザによって提供される範囲ジェネレータが、範囲データをISCANノードに供給する。その後、ISCANノードは、レコード識別子およびラウンド半径をFETCHノードに渡す。FETCHノードは、RIDからタプルを取り出し、テーブル・レコードおよびラウンド半径をrk_SORTノードに渡す。rk_SORTノードは、集合述部を評価し、タプルにランクを付け、上位10個のタプルをMATERIALIZEノードに渡し、MATERIALIZEノードは、最終結果セットのために、パイピングされたタプルから属性を返す。
【0079】
以下は、ブール式の集合述部に関する例のSQLステートメントである。
SELECT *
FROM customer c
WHERE RANK(dist(c.loc,:stl)) ASC FIRST 10
AND c.income > 50000
【0080】
上のステートメントでは、STL(すなわちSanta Teresa Laboratory)に最も近い10人の顧客から、収入が50000を超える顧客だけが選択される。図7は、loc属性に対する索引活用があるアクセス・プラン700を示す図である。具体的に言うと、c.locに対する索引がある場合に、上のステートメントによって生成されるアクセス・プラン700が、図7に示されている。述部c.income>50000が、rk_SORTノードに付加され、このノードに対する後フィルタとして働くことに留意されたい。具体的に言うと、ISCANノードは、ローカル述部としてdist(c.loc, :stl)を使用することによって、customerテーブルの行のレコード識別子(RID)について索引を走査する。その後、ISCANノードは、レコード識別子およびラウンド半径をFETCHノードに渡す。FETCHノードは、RIDからタプルを取り出し、テーブル・レコードおよびラウンド半径をrk_SORTノードに渡す。rk_SORTノードは、集合述部を評価し、タプルにランクを付け、上位10個のタプルを選択し、後フィルタとしてc.income>50000を使用する。フィルタリングされた上位10個のテーブル・レコードが、MATERIALIZEノードに渡され、MATERIALIZEノードは、最終結果セットのために、パイピングされたタプルから属性を返す。
【0081】
以下は、HAVING文節内の集合述部に関する例のSQLステートメントである。
SELECT *
FROM customer c
WHERE c.income > 50000
HAVING RANK(dist(c.loc,:stl)) ASC FIRST 10
【0082】
上のステートメントでは、収入が50000を超え、STL(すなわちSanta Teresa Laboratory)に最も近い10人の顧客が選択される。図8は、loc属性に対する索引活用があるアクセス・プラン800を示す図である。上のステートメントについて生成される図8のアクセス・プラン800は、前のステートメントのアクセス・プラン700とほとんど同等であるが、述部c.income > 50000が、rk_SORTノードの前のFETCHノードに付加され、FETCHノードに対する前フィルタとして働く。
【0083】
具体的に言うと、ISCANノードは、ローカル述部としてdist(c.loc, :stl)を使用して、customerテーブルのレコードのレコード識別子(RID)について索引を走査する。ISCANノードは、レコード識別子およびラウンド半径をFETCHノードに渡す。FETCHノードは、前フィルタとしてc.income>50000を使用して、RIDからタプルを取り出す。rk_SORTノードは、テーブル・レコードおよびラウンド半径を受け取る。次に、rk_SORTノードは、集合述部を評価し、タプルにランクを付け、上位10個のタプルを選択する。これらは、MATERIALIZEノードに渡され、MATERIALIZEノードは、最終結果セットとしてパイピングされたタプルから属性を返す。
【0084】
代替案は、c.locではなくc.incomeに対する索引を活用し、その後、1ラウンドでランク付きソートを行うことである。これは、income属性に対する索引活用があるアクセス・プラン900を示す図である図9に示されたアクセス・プラン900をもたらす。具体的に言うと、ISCANノードは、ローカル述部としてc.income>50000を使用して、customerテーブルのレコードのレコード識別子(RID)について索引を走査する。ISCANノードは、レコード識別子およびラウンド半径をFETCHノードに渡す。FETCHノードは、RIDからタプルを取り出す。rk_SORTノードは、テーブル・レコードおよびラウンド半径を受け取る。次に、rk_SORTノードは、集合述部を評価し、タプルにランクを付け、上位10個のタプルを選択する。これらは、MATERIALIZEノードに渡され、MATERIALIZEノードは、最終結果セットとしてパイピングされたタプルから属性を返す。
【0085】
どの索引が使用可能であるか、または、両方の索引が使用可能である場合に各述部の選択性見積もりがどれであるかに依存して、コンパイラは、2つのアクセス・プラン800およびアクセス・プラン900の間で選択することができ、また、索引が使用可能でない場合には、コンパイラは、図10に示された簡単なテーブル走査のアクセス・プラン1000を生成する。図10は、索引活用なしのアクセス・プラン1000を示す図である。アクセス・プラン1000の場合、TSCANノードは、フィルタとしてc.income>50000を使用して、タプルについてcustomerテーブルを走査する。TSCANノードは、テーブル・レコードおよびラウンド半径をrk_SORTノードに渡す。rk_SORTノードは、集合述部を評価し、タプルにランクを付け、上位10個のタプルを選択する。これらは、MATERIALIZEノードに渡され、MATERIALIZEノードは、最終結果セットとしてパイピングされたタプルから属性を返す。
【0086】
以下は、JOIN内のウィンドウに対する集合述部に関する例のSQLステートメントである。
SELECT *
FROM customer c,stores s
WHERE RANK(dist(c.loc,s.loc)) ASC FIRST 10 OVER (s.id)
【0087】
上のステートメントでは、すべてのstore位置について最も近い10人の顧客が選択される。これによって生成されるアクセス・プランを、図11、図12、および図13に示す。
【0088】
図11は、索引活用がなく、検索引数と外部テーブルの間の機能的依存性もないアクセス・プラン1100を示す図である。具体的に言うと、あるTSCANノードが、テーブル・レコードについてcustomerテーブルを走査し、これらをJOINノードに渡す。もう1つのTSCANノードが、テーブル・レコードについてstoreテーブルを走査し、これらを、ラウンド半径と共にJOINノードに渡す。次に、JOINノードが、受け取ったレコードを結合し、これらを、ラウンド半径と共にrk_SORTノードに渡す。rk_SORTノードは、集合述部を評価し、タプルにランクを付け、上位10個のタプルをMATERIALIZEノードに渡し、MATERIALIZEノードは、最終結果セットとしてパイピングされたタプルから属性を返す。
【0089】
図12は、索引活用はないが、検索引数と外部テーブルの間の機能的依存性があるアクセス・プラン1200を示す図である。具体的に言うと、あるTSCANノードが、テーブル・レコードについてstoreテーブルを走査し、これらをJOINノードに渡す。もう1つのTSCANノードが、テーブル・レコードについてcustomerテーブルを走査し、これらを、ラウンド半径と共にrk_SORTノードに渡す。rk_SORTノードは、集合述部を評価し、タプルにランクを付け、上位10個のタプルをJOINノードに渡す。次に、JOINノードが、受け取ったレコードを結合し、これらをMATERIALIZEノードに渡し、MATERIALIZEノードは、最終結果セットとして、パイピングされたタプルから属性を返す。
【0090】
図13は、索引活用があり、検索引数と外部テーブルの間の機能的依存性があるアクセス・プラン1300を示す図である。具体的に言うと、TSCANノードが、テーブル・レコードについてstoreテーブルを走査し、これらをJOINノードに渡す。ISCANノードが、ローカル述部としてdist(c.loc,s.loc)を使用してcustomerテーブルのレコード識別子(RID)について索引を走査し、これらを、ラウンド半径と共にFETCHノードに渡す。FETCHノードは、RIDを使用してcustomerテーブルからタプルを取り出し、これらを、ラウンド半径と共にrk_SORTノードに渡す。rk_SORTノードは、集合述部を評価し、タプルにランクを付け、上位10個のタプルをJOINノードに渡す。次に、JOINノードは、受け取ったレコードを結合し、これらをMATERIARIZEノードに渡し、MATERIARIZEノードは、最終結果セットとして、パイピングされたタプルから属性を返す。
【0091】
以下は、GROUP BY文節を有するJOIN内の集合述部に関する例のSQLステートメントである。
SELECT s.id,sum(c.income)
FROM customer c,store s
WHERE within(c.loc,s.zone) = 1
GROUP BY s.id HAVING RANK(sum(c.income)) DESC FIRST 10
【0092】
上のステートメントでは、最も高い総合累積収入を有する顧客にサービスする、上位10位までの店が選択される。この場合、ランキングが各グループの総計関数に基づくので、早期終了のために索引を活用することはできない。その関数は、グループのすべてのレコードを取り出し、ソートするまでは評価できないので、ランキングは、その後に開始しなければならず、テーブル全体を走査する前に終了することができない。しかし、customer.locに対して定義された索引がある場合には、その索引を活用して、ランキングを開始する前にいくつかのレコードをフィルタ・アウトすることができる。図14は、部分的索引活用があるアクセス・プラン1400を示す図である。
【0093】
具体的に言うと、あるTSCANノードが、テーブル・レコードについてstoreテーブルを走査し、これらをJOINノードに渡す。TSCANノードが、ローカル述部として(within(c.loc,s.zone) = 1)を使用して、customerテーブルのレコード識別子(RID)について索引を走査し、これらを、ラウンド半径と共にFETCHノードに渡す。FETCHノードは、RIDを使用してcustomerテーブルからタプルを取り出し、これらを、ラウンド半径と共にJOINノードに渡す。次に、JOINノードが、受け取ったレコードを結合し、これらを、ラウンド半径と共にSORTノードに渡す。SORTノードは、s.idによってタプルをソートし、これらを、ラウンド半径と共にGROUP BYノードに渡す。GROUP BYノードは、総計関数を評価し、タプルをグループ化する。グループ化されたタプルおよびラウンド半径が、rk_SORTノードに渡される。rk_SORTノードは、集合述部を評価し、タプルにランクを付け、上位10個のタプルをMATERIALIZEノードに渡し、MATERIALIZEノードは、最終結果セットとして、パイピングされたタプルから属性を返す。
【0094】
以下は、GROUP BY文節を伴う集合述部の例のSQLステートメントである。
SELECT s.sizeRating,sum(c.purchases)
FROM customer c,store s
WHERE within(c.loc,store.loc) = 1
GROUP BY s.sizeRating
HAVING RANK(s.sizeRating) DESC FIRST 10
【0095】
上のステートメントについて、storeテーブルのsizeRating属性が、ある外部レーティングによる、所与の店の顧客ベースのサイズを表すと仮定する。上のステートメントは、上位10サイズ・グループのそれぞれの店の総売上を返す。この例の集合述部store.sizeRatingは属性であり、前の例のような総計関数ではないが、ランキングが個々のテーブル・レコードではなくグループ・レコードに対して実行されるので、上のステートメントは、store.sizeRatingに対する索引を活用することができない。したがって、このステートメントに対して生成されるアクセス・プランは、store.locに対して定義された索引がある場合にはアクセス・プラン1400と同一になる。活用すべき索引がない場合には、アクセス・プランは、単純なテーブル走査アクセス・プランになる。
【0096】
E.流れ図
図15は、本発明を使用する処理を示す流れ図である。具体的に言うと、ブロック1500は、集合述部を有する照会を作成することを表す。ブロック1502は、コンパイラが、集合述部を処理するために、拡張ソート演算子(rk_sort)を有するアクセス・プランを生成することを表す。ブロック1504は、アクセス・プランを実行し、それが実行される時に、集合述部を評価し、ランキング演算を実行することを表す。
【0097】
図16ないし18は、集合述部を処理するための拡張ソート演算子(rk_sort)の処理を示す流れ図である。ブロック1600は、拡張ソート演算子が、ストリーム(ラウンド半径を含む)、ランク、GROUP BYリスト、およびスコアリング式を受け取ることを表す。ストリームは、タプルからなり、各タプルは、ラウンド半径の列値を有する。ランクは、集合述部の数式に対応し、GROUP BYリストは、集合述部のウィンドウ指定に対応し、スコアリング式は、集合述部のスカラ式に対応する。
【0098】
ブロック1602は、拡張ソート演算子が、すべてのグループについてグループ・ラウンド番号を−1に初期化することを表す。ブロック1604で、拡張ソート演算子が、ストリームの終りである(すなわち、すべてのタプルを処理した)かどうかを判定する。ストリームの終りである場合には、拡張ソート演算子は、ブロック1622に継続し、そうでない場合には、拡張ソート演算子は、ブロック1606に継続する。
【0099】
ブロック1606では、拡張ソート演算子が、ストリーム内の次に使用可能なタプルを取り出す。ブロック1608では、拡張ソート演算子が、タプルの目標グループが凍結されているかどうかを判定する。そうである場合には、拡張ソート演算子は、ブロック1610に継続し、そうでない場合には、拡張ソート演算子は、ブロック1612に継続する。ブロック1610では、拡張ソート演算子が、タプルを破棄し、ブロック1604にループ・バックする。
【0100】
ブロック1612では、拡張ソート演算子が、タプルのラウンド半径がグループ・ラウンド半径と異なるかどうかを判定する。そうである場合には、拡張ソート演算子は、ブロック1614に継続し、そうでない場合には、拡張ソート演算子は、ブロック1620に継続する。
【0101】
ブロック1614では、拡張ソート演算子が、グループ・ラウンド半径に新しいラウンド半径をセットする。ブロック1616では、拡張ソート演算子(現在のグループ・ラウンド半径以下のスコアリング式を有するタプルの数)が、ランク(すなわちタプルの所望の個数)以上であるかどうかを判定する。そうである場合には、拡張ソート演算子は、ブロック1618に継続し、そうでない場合には、拡張ソート演算子は、ブロック1620に継続する。ブロック1618では、拡張ソート演算子が、現在のグループを凍結する(すなわち、そのグループについてこれ以上タプルが処理されないことを示す)。その後、拡張ソート演算子は、ブロック1604にループ・バックする。
【0102】
ブロック1620では、拡張ソート演算子が、GROUP BYリストの値およびスコアリング式の値に基づいて、ソートされたテーブルにタプルを挿入する。その後、拡張ソート演算子は、ブロック1604にループ・バックする。
【0103】
ブロック1604で、ストリームの終りに達した場合、拡張ソート演算子は、ブロック1622に継続し、まだ凍結されていないグループを凍結する。その後、拡張ソート演算子は、ランクによってソートされたテーブルを、アクセス・プランの次のステージにパイピングする。
【0104】
F.本発明の追加の長所
この節では、本発明の追加の長所を示す。これらの記述された長所は、例示のみのために提供され、本発明の長所のすべてを表すものではない。
【0105】
集合述部をサポートするための複数の手法が探求されてきた。1つの手法は、特定の応用分野を目標とする索引付け機構を開発することである。たとえば、R−木を使用する最近隣照会の評価が、ロウスポウロス(Nick Roussopoulos)、ケリー(Stephen Kelley)、およびビンセント(Frederic Vincent)著、「Nearest Neighbor Queries」、Proceedings of the 1995 ACM-SIGMOD International Conference on Management of Data、米国カリフォルニア州サンノゼで調査された。
【0106】
D.A.ホワイト(White)およびR.ジェイン(Jain)著、「Similarity Indexing with the SS-tree」、Proceedings of the 12th IEEE International Conference on Data Engineering、1996年2月、第516〜523ページに記載のSS−木などの、新しい索引付けデータ構造も開発された。この手法は、特定の領域で機能するが、新しい応用分野は、検索、並行性、および回復のために通常の木機構の新しい実装を必要とする。特定の応用分野のためのそのような木の実装のコストは高い。
【0107】
もう1つの手法は、最近隣検索およびランク付き検索をサポートする一般化された検索木を開発することである。この手法は、アオキ(Paul Aoki)著、「Generalizing ”Search” in Generalized Search Trees」に記載のGiSTの拡張によって例示される。この手法は、ユーザが木のトラバースのすべてのステップを制御できるようにすることによる拡張性という長所を有する。短所は、そのようなユーザ制御が、しばしばユーザ定義関数を介して達成されることである。木トラバースの各ステップでのユーザ定義関数の呼び出しは、大きい実行時オーバーヘッドを引き起こす可能性がある。
【0108】
第3の手法は、たとえばチャウドゥーリィ(Surajit Chaudhuri)およびグラバノ(Luis Gravano)著、「Evaluating Top-k Selection Queries」、Proceedings of the 25th VLDB Conference、1999年に記載のものなどの、上位k位選択照会を範囲を使用する通常の選択照会に変形することである。この手法の主な問題は、上位k位選択照会に対応する範囲照会をコンパイル時に決定する必要があることである。コンパイル時の推定が正しくない場合には、上位k位選択照会に対する回答を得ることができない可能性がある。
【0109】
本明細書に記載の発明は、複数の長所を有する。第1に、本発明は、ユーザがランク付き検索を制御でき、領域固有の手法の短所が回避されるという意味で、拡張可能である。第2に、そのような制御が、基礎となるアクセス方法によって使用される一連の検索範囲を生成することによって、フレームワークの上位レベルで行われる。これによって、GiSTでの手法の実行時オーバーヘッドが回避される。第3に、本発明は、動的であり増分的である。
【0110】
結論
これで本発明の好ましい実施形態の説明を終える。以下で、本発明を達成するためのいくつかの代替実施形態を説明する。たとえば、メインフレーム、ミニコンピュータ、またはパーソナル・コンピュータなどのすべての種類のコンピュータ、もしくは、タイム・シェアリング・メインフレーム、ローカル・エリア・ネットワーク、または独立型パーソナル・コンピュータなどのコンピュータ構成を、本発明と共に使用することができる。
【0111】
本発明の好ましい実施形態の前述の説明は、例示と説明のために提示された。網羅的であることまたは開示された正確な形態に本発明を制限することは、意図されていない。上記の教示に鑑みて、多数の修正形態および変更形態が可能である。本発明の範囲は、この詳細な説明によるのではなく、請求項によって制限されることが意図されている。
【0112】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0113】
(1)コンピュータに接続されたデータ・ストア内のデータを操作するために前記コンピュータ内でステートメントを実行する方法であって、
集合述部を有するステートメントを受け取るステップと、
前記ステートメントを評価する時に、前記集合述部をランク・データに処理するステップと
を含む方法。
(2)前記集合述部が、検索条件に含まれる、上記(1)に記載の方法。
(3)前記集合述部が、数式を含む、上記(1)に記載の方法。
(4)前記集合述部が、順序付けインジケータを含む、上記(1)に記載の方法。
(5)前記集合述部が、ウィンドウ指定を含む、上記(1)に記載の方法。
(6)前記集合述部が、スカラ式を含む、上記(1)に記載の方法。
(7)評価が、拡張ソート演算子の実行を含む、上記(1)に記載の方法。
(8)前記拡張ソート演算子が、アクセス・プランの一部である、上記(7)に記載の方法。
(9)前記拡張ソート演算子の実行が、1つまたは複数のタプルを含むストリーム、ランク、0個以上のグループを含むGROUP BYリスト、およびスコアリング式の受け取りを含む、上記(7)に記載の方法。
(10)前記ストリーム内のタプルごとに、その目標グループが凍結されている場合に前記タプルを破棄するステップをさらに含む、上記(9)に記載の方法。(11)グループ・ラウンド半径を判定するステップと、
前記タプルが前記グループ・ラウンド半径と異なるラウンド半径を有する時に、
前記グループ・ラウンド半径にそのラウンド半径をセットするステップと、
前記グループについて所望の数のタプルが識別された場合に、前記グループを凍結するステップと
をさらに含む、上記(9)に記載の方法。
(12)前記GROUP BYリストの値およびスコアリング式の値に基づいて、前記タプルをランクによってソートされたテーブルに挿入するステップをさらに含む、上記(9)に記載の方法。
(13)前記ストリーム内のすべてのタプルが処理された時に、まだ凍結されていないグループを凍結するステップをさらに含む、上記(9)に記載の方法。
(14)データを操作するためにステートメントを実行する装置であって、
データを記憶するデータ・ストアを接続されたコンピュータと、
前記コンピュータによって実行される、集合述部を有するステートメントを受け取り、前記ステートメントを評価する時に、前記集合述部をランク・データに処理する、1つまたは複数のコンピュータ・プログラムと
を含む装置。
(15)前記集合述部が、検索条件に含まれる、上記(14)に記載の装置。
(16)前記集合述部が、数式を含む、上記(14)に記載の装置。
(17)前記集合述部が、順序付けインジケータを含む、上記(14)に記載の装置。
(18)前記集合述部が、ウィンドウ指定を含む、上記(14)に記載の装置。(19)前記集合述部が、スカラ式を含む、上記(14)に記載の装置。
(20)評価が、拡張ソート演算子の実行を含む、上記(14)に記載の装置。(21)前記拡張ソート演算子が、アクセス・プランの一部である、上記(20)に記載の装置。
(22)前記拡張ソート演算子の実行が、1つまたは複数のタプルを含むストリーム、ランク、0個以上のグループを含むGROUP BYリスト、およびスコアリング式の受け取りを含む、上記(20)に記載の装置。
(23)前記ストリーム内のタプルごとに、その目標グループが凍結されている場合に前記タプルを破棄することをさらに含む、上記(22)に記載の装置。
(24)グループ・ラウンド半径を判定することと、
前記タプルが前記グループ・ラウンド半径と異なるラウンド半径を有する時に、
前記グループ・ラウンド半径にそのラウンド半径をセットすることと、
前記グループについて所望の数のタプルが識別された場合に、前記グループを凍結することと
をさらに含む、上記(22)に記載の装置。
(25)前記GROUP BYリストの値およびスコアリング式の値に基づいて、前記タプルをランクによってソートされたテーブルに挿入することをさらに含む、上記(22)に記載の装置。
(26)前記ストリーム内のすべてのタプルが処理された時に、まだ凍結されていないグループを凍結することをさらに含む、上記(22)に記載の装置。
(27)集合述部を有するステートメントを受け取るステップと、
前記ステートメントを評価する時に、前記集合述部をランク・データに処理するステップと
を含む、コンピュータに接続されたデータ・ストア内のデータを操作するために前記コンピュータ内でステートメントを実行するための方法ステップを実行するために前記コンピュータによって実行可能な1つまたは複数の命令を実施する、コンピュータによって可読のコンピュータ・プログラム担体を含む製造品。
(28)前記集合述部が、検索条件に含まれる、上記(27)に記載の製造品。(29)前記集合述部が、数式を含む、上記(27)に記載の製造品。
(30)前記集合述部が、順序付けインジケータを含む、上記(27)に記載の製造品。
(31)前記集合述部が、ウィンドウ指定を含む、上記(27)に記載の製造品。
(32)前記集合述部が、スカラ式を含む、上記(27)に記載の製造品。
(33)評価が、拡張ソート演算子の実行を含む、上記(27)に記載の製造品。
(34)前記拡張ソート演算子が、アクセス・プランの一部である、上記(33)に記載の製造品。
(35)前記拡張ソート演算子の実行が、1つまたは複数のタプルを含むストリーム、ランク、0個以上のグループを含むGROUP BYリスト、およびスコアリング式の受け取りを含む、上記(33)に記載の製造品。
(36)前記ストリーム内のタプルごとに、その目標グループが凍結されている場合に前記タプルを破棄するステップをさらに含む、上記(35)に記載の製造品。
(37)グループ・ラウンド半径を判定するステップと、
前記タプルが前記グループ・ラウンド半径と異なるラウンド半径を有する時に、
前記グループ・ラウンド半径にそのラウンド半径をセットするステップと、
前記グループについて所望の数のタプルが識別された場合に、前記グループを凍結するステップと
をさらに含む、上記(35)に記載の製造品。
(38)前記GROUP BYリストの値およびスコアリング式の値に基づいて、前記タプルをランクによってソートされたテーブルに挿入するステップをさらに含む、上記(35)に記載の製造品。
(39)前記ストリーム内のすべてのタプルが処理された時に、まだ凍結されていないグループを凍結するステップをさらに含む、上記(35)に記載の製造品。
【図面の簡単な説明】
【図1】本発明の実施形態のハードウェア環境を示し、具体的には、通常の分散コンピュータ・システムを示す概略図である。
【図2】SQLステートメントを評価する処理を示す図である。
【図3】例のSQLステートメントの通常のアクセス・プラン300を示す図である。
【図4】ラウンド半径の説明に使用されるテーブルを示す図である。
【図5】半径を表すリングの組を示す図である。
【図6】索引活用がないアクセス・プランと2つの照会の索引活用があるアクセス・プランを示す図である。
【図7】 loc属性に対する索引活用があるアクセス・プランを示す図である。
【図8】 loc属性に対する索引活用があるアクセス・プランを示す図である。
【図9】 income属性に対する索引活用があるアクセス・プランを示す図である。
【図10】索引活用がないアクセス・プランを示す図である。
【図11】索引活用がなく、検索引数と外部テーブルの間の機能的依存性もないアクセス・プランを示す図である。
【図12】索引活用はないが、検索引数と外部テーブルの間の機能的依存性があるアクセス・プランを示す図である。
【図13】索引活用があり、検索引数と外部テーブルの間の機能的依存性があるアクセス・プランを示す図である。
【図14】部分的索引活用があるアクセス・プランを示す図である。
【図15】本発明を使用する処理を示す流れ図である。
【図16】集合述部を処理するための、拡張ソート演算子(rk_sort)の処理を示す流れ図である。
【図17】集合述部を処理するための、拡張ソート演算子(rk_sort)の処理を示す流れ図である。
【図18】集合述部を処理するための、拡張ソート演算子(rk_sort)の処理を示す流れ図である。
【符号の説明】
102 コンピュータ・システム
104 データ記憶装置
106 オペレータ・インターフェース
108 データベース・サービス・モジュール
110 リレーショナル・データベース・サービス(RDS)
112 データ・マネージャ
114 バッファ・マネージャ
116 他のコンポーネント
118 モニタ
200 SQLプログラム
202 コンパイラ
204 解釈済みコード
206 データベース・ランタイム・ライブラリ
208 インタープリタ
210 リレーショナル・データベース・マネージャ
212 データベース
300 アクセス・プラン
400 テーブル
402 ラウンド半径列

Claims (21)

  1. コンピュータに接続されたデータ・ストア内のデータを操作するために前記コンピュータ内でステートメントを実行する方法であって、
    個々の値について真または偽を判断するための集合述部を有するステートメントを前記コンピュータのメモリにロードするステップであって、前記集合述部は、検索条件に含まれ、スカラ式と順序付けインジケータとを含む、前記ロードするステップと、
    前記メモリにロードしたステートメントを実行するために前記データ・ストア内のデータにアクセスするステップと、
    前記ロードしたステートメントを前記コンピュータによって実行する時に、前記集合述部に基づきランク付け処理するステップを含む方法であって、
    前記実行は、拡張ソート演算子の実行を含み、前記拡張ソート演算子の実行は、1つまたは複数のタプルを含むストリーム、ランク、GROUP BYリスト、およびスコアリング式の受け取りを含み、前記ストリームは複数のラウンドに分割され、グループ・ラウンド半径が各レコードに割り当てられており、
    前記ランク付け処理するステップは、
    前記グループ・ラウンド半径を前記コンピュータによって判定するサブステップと、
    前記タプルが前記グループ・ラウンド半径と異なるラウンド半径を有する時に、前記グループ・ラウンド半径にそのラウンド半径を前記コンピュータによってセットし、前記グループについて所望の数のタプルが識別された場合に、前記グループを前記コンピュータによって凍結するサブステップと、
    これにより、所定の数の真と判断される前記アクセスしたデータをランク付け処理するサブステップと
    を含む、方法。
  2. 前記集合述部が、数式を含む、請求項1に記載の方法。
  3. 前記集合述部が、ウィンドウ指定を含む、請求項1に記載の方法。
  4. 前記拡張ソート演算子が、アクセス・プランの一部である、請求項に記載の方法。
  5. 前記ストリーム内のタプルごとに、その目標グループが凍結されている場合に前記タプルを破棄するステップをさらに含む、請求項に記載の方法。
  6. 前記GROUP BYリストの値およびスコアリング式の値に基づいて、前記タプルをランクによってソートされたテーブルに挿入するステップをさらに含む、請求項に記載の方法。
  7. 前記ストリーム内のすべてのタプルが処理された時に、まだ凍結されていないグループを凍結するステップをさらに含む、請求項に記載の方法。
  8. データを操作するためにステートメントを実行する装置であって、
    データを記憶するデータ・ストアを接続されたコンピュータと、
    個々の値について真または偽を判断するための集合述部を有するステートメントを前記コンピュータのメモリにロードする手段であって、前記集合述部は、検索条件に含まれ、スカラ式と順序付けインジケータとを含む、前記ロードする手段と、
    前記メモリにロードしたステートメントを実行するために前記データ・ストア内のデータにアクセスする手段と、
    前記ロードしたステートメントを前記コンピュータによって実行する時に、前記集合述部に基づきランク付け処理する手段を含む装置であって、
    前記実行は、拡張ソート演算子の実行を含み、前記拡張ソート演算子の実行は、1つまたは複数のタプルを含むストリーム、ランク、GROUP BYリスト、およびスコアリング式の受け取りを含み、前記ストリームは複数のラウンドに分割され、グループ・ラウンド半径が各レコードに割り当てられており、
    前記ランク付け処理する手段は、
    前記グループ・ラウンド半径を前記コンピュータによって判定する手段と、
    前記タプルが前記グループ・ラウンド半径と異なるラウンド半径を有する時に、前記グループ・ラウンド半径にそのラウンド半径を前記コンピュータによってセットし、前記グループについて所望の数のタプルが識別された場合に、前記グループを前記コンピュータによって凍結する手段と、
    これにより、所定の数の真と判断される前記アクセスしたデータをランク付け処理する手段と
    を含む装置。
  9. 前記集合述部が、数式を含む、請求項に記載の装置。
  10. 前記集合述部が、ウィンドウ指定を含む、請求項に記載の装置。
  11. 前記拡張ソート演算子が、アクセス・プランの一部である、請求項に記載の装置。
  12. 前記ストリーム内のタプルごとに、その目標グループが凍結されている場合に前記タプルを破棄することをさらに含む、請求項に記載の装置。
  13. 前記GROUP BYリストの値およびスコアリング式の値に基づいて、前記タプルをランクによってソートされたテーブルに挿入する手段をさらに含む、請求項に記載の装置。
  14. 前記ストリーム内のすべてのタプルが処理された時に、まだ凍結されていないグループを凍結する手段をさらに含む、請求項に記載の装置。
  15. コンピュータに接続されたデータ・ストア内のデータを操作するために前記コンピュータ内でステートメントを実行するプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
    前記コンピュータに、
    個々の値について真または偽を判断するための集合述部を有するステートメントを前記コンピュータのメモリにロードさせ、
    前記メモリにロードしたステートメントを実行するために前記データ・ストア内のデータにアクセスさせ、
    前記ロードしたステートメントを実行する時に、前記集合述部に基づきランク付け処理させるプログラムを記録したコンピュータ読み取り可能な記録媒体であって
    前記集合述部は、検索条件に含まれ、スカラ式と順序付けインジケータとを含み、
    前記実行は、拡張ソート演算子の実行を含み、前記拡張ソート演算子の実行は、1つまたは複数のタプルを含むストリーム、ランク、GROUP BYリスト、およびスコアリング式の受け取りを含み、前記ストリームは複数のラウンドに分割され、グループ・ラウンド半径が各レコードに割り当てられており、
    前記ランク付け処理は、
    前記コンピュータに、
    前記グループ・ラウンド半径を判定させ、
    前記タプルが前記グループ・ラウンド半径と異なるラウンド半径を有する時に、前記グループ・ラウンド半径にそのラウンド半径をセットさせ、前記グループについて所望の数 のタプルが識別された場合に、前記グループを凍結させ、
    これにより、所定の数の真と判断される前記アクセスしたデータをランク付け処理させる
    プログラムを記録したコンピュータ読み取り可能な記録媒体。
  16. 前記集合述部が、数式を含む、請求項15に記載のコンピュータ読み取り可能な記録媒体。
  17. 前記集合述部が、ウィンドウ指定を含む、請求項15に記載のコンピュータ読み取り可能な記録媒体。
  18. 前記拡張ソート演算子が、アクセス・プランの一部である、請求項15に記載のコンピュータ読み取り可能な記録媒体。
  19. 前記コンピュータに、前記ストリーム内のタプルごとに、その目標グループが凍結されている場合に前記タプルを破棄させるプログラムをさらに記録した請求項15に記載のコンピュータ読み取り可能な記録媒体。
  20. 前記コンピュータに、前記GROUP BYリストの値およびスコアリング式の値に基づいて、前記タプルをランクによってソートされたテーブルに挿入させるプログラムをさらに記録した請求項15に記載のコンピュータ読み取り可能な記録媒体。
  21. 前記コンピュータに、前記ストリーム内のすべてのタプルが処理された時に、まだ凍結されていないグループを凍結させるプログラムをさらに記録した請求項15に記載のコンピュータ読み取り可能な記録媒体。
JP2001034814A 2000-02-16 2001-02-13 データベース管理システムにおける集合述部および検索 Expired - Fee Related JP3640346B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/505165 2000-02-16
US09/505,165 US6947934B1 (en) 2000-02-16 2000-02-16 Aggregate predicates and search in a database management system

Publications (2)

Publication Number Publication Date
JP2001273327A JP2001273327A (ja) 2001-10-05
JP3640346B2 true JP3640346B2 (ja) 2005-04-20

Family

ID=24009288

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001034814A Expired - Fee Related JP3640346B2 (ja) 2000-02-16 2001-02-13 データベース管理システムにおける集合述部および検索

Country Status (3)

Country Link
US (1) US6947934B1 (ja)
JP (1) JP3640346B2 (ja)
DE (1) DE10103574A1 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6385604B1 (en) 1999-08-04 2002-05-07 Hyperroll, Israel Limited Relational database management system having integrated non-relational multi-dimensional data store of aggregated data elements
US6408292B1 (en) 1999-08-04 2002-06-18 Hyperroll, Israel, Ltd. Method of and system for managing multi-dimensional databases using modular-arithmetic based address data mapping processes on integer-encoded business dimensions
US20020029207A1 (en) 2000-02-28 2002-03-07 Hyperroll, Inc. Data aggregation server for managing a multi-dimensional database and database management system having data aggregation server integrated therein
US8069193B2 (en) * 2001-03-28 2011-11-29 International Business Machines Corporation Method and system for utilizing a generic scalar function to allow a column function to operate on row data
US7620615B1 (en) * 2001-10-26 2009-11-17 Teradata Us, Inc. Joins of relations in an object relational database system
US7213011B1 (en) * 2002-04-08 2007-05-01 Oracle International Corporation Efficient processing of multi-column and function-based in-list predicates
US7542962B2 (en) * 2003-04-30 2009-06-02 International Business Machines Corporation Information retrieval method for optimizing queries having maximum or minimum function aggregation predicates
US7415461B1 (en) * 2005-08-03 2008-08-19 At&T Corp Apparatus and method for merging results of approximate matching operations
US7512282B2 (en) * 2005-08-31 2009-03-31 International Business Machines Corporation Methods and apparatus for incremental approximate nearest neighbor searching
US7814113B2 (en) * 2006-11-07 2010-10-12 University Of Washington Through Its Center For Commercialization Efficient top-K query evaluation on probabilistic data
US7769755B2 (en) * 2006-11-30 2010-08-03 Microsoft Corporation Efficient execution of aggregation queries
US10031938B2 (en) * 2006-12-04 2018-07-24 International Business Machines Corporation Determining Boolean logic and operator precedence of query conditions
US7853603B2 (en) * 2007-05-23 2010-12-14 Microsoft Corporation User-defined relevance ranking for search
US20090006431A1 (en) * 2007-06-29 2009-01-01 International Business Machines Corporation System and method for tracking database disclosures
JP5377897B2 (ja) * 2007-10-29 2013-12-25 株式会社日立製作所 ストリームデータのランキングクエリ処理方法およびランキングクエリ処理機構を有するストリームデータ処理システム
US8335782B2 (en) * 2007-10-29 2012-12-18 Hitachi, Ltd. Ranking query processing method for stream data and stream data processing system having ranking query processing mechanism
US9053466B2 (en) 2007-10-31 2015-06-09 International Business Machines Corporation Publishing and subscribing to calendar events information via categorical mapping methodology
US8352470B2 (en) * 2008-05-23 2013-01-08 International Business Machines Corporation Adaptive aggregation: improving the performance of grouping and duplicate elimination by avoiding unnecessary disk access
US9418107B2 (en) * 2008-07-30 2016-08-16 At&T Intellectual Property I, L.P. Method and apparatus for performing query aware partitioning
US8204873B2 (en) * 2009-08-26 2012-06-19 Hewlett-Packard Development Company, L.P. System and method for query expression optimization
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
US9244976B1 (en) 2010-12-16 2016-01-26 The George Washington University and Board of Regents Just-in-time analytics on large file systems and hidden databases
US9244975B2 (en) * 2010-12-16 2016-01-26 The George Washington University Just-in-time analytics on large file systems
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
US8660985B2 (en) * 2012-04-11 2014-02-25 Renmin University Of China Multi-dimensional OLAP query processing method oriented to column store data warehouse
WO2015073003A1 (en) * 2013-11-14 2015-05-21 Hewlett-Packard Development Company, L.P. Estimating data
CA3092699C (en) 2013-12-06 2023-07-25 Ab Initio Technology Llc Source code translation
US9747331B2 (en) 2014-10-06 2017-08-29 International Business Machines Corporation Limiting scans of loosely ordered and/or grouped relations in a database
US10437819B2 (en) 2014-11-14 2019-10-08 Ab Initio Technology Llc Processing queries containing a union-type operation
US10176226B2 (en) * 2014-11-26 2019-01-08 Looker Data Sciences, Inc. Relation aware aggregation (RAA) on normalized datasets
US10417281B2 (en) 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network
US10210210B2 (en) * 2015-10-21 2019-02-19 International Business Machines Corporation Adaptive multi-index access plan for database queries
US11093223B2 (en) 2019-07-18 2021-08-17 Ab Initio Technology Llc Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5367675A (en) 1991-12-13 1994-11-22 International Business Machines Corporation Computer automated system and method for optimizing the processing of a query in a relational database system by merging subqueries with the query
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
US5590324A (en) 1995-02-07 1996-12-31 International Business Machines Corporation Optimization of SQL queries using universal quantifiers, set intersection, and max/min aggregation in the presence of nullable columns
US5761657A (en) 1995-12-21 1998-06-02 Ncr Corporation Global optimization of correlated subqueries and exists predicates
US5713015A (en) 1996-05-30 1998-01-27 International Business Machines Corporation Reordering of complex SQL queries involving GROUPBYs, joins, outer joins and full outer joins
US5884299A (en) 1997-02-06 1999-03-16 Ncr Corporation Optimization of SQL queries involving aggregate expressions using a plurality of local and global aggregation operations
US5905982A (en) 1997-04-04 1999-05-18 International Business Machines Corporation Handling null values in SQL queries over object-oriented data
US5794246A (en) * 1997-04-30 1998-08-11 Informatica Corporation Method for incremental aggregation of dynamically increasing database data sets

Also Published As

Publication number Publication date
JP2001273327A (ja) 2001-10-05
DE10103574A1 (de) 2001-08-30
US6947934B1 (en) 2005-09-20

Similar Documents

Publication Publication Date Title
JP3640346B2 (ja) データベース管理システムにおける集合述部および検索
US6529896B1 (en) Method of optimizing a query having an existi subquery and a not-exists subquery
US5963933A (en) Efficient implementation of full outer join and anti-join
US6965891B1 (en) Method and mechanism for partition pruning
US6278994B1 (en) Fully integrated architecture for user-defined search
US5367675A (en) Computer automated system and method for optimizing the processing of a query in a relational database system by merging subqueries with the query
US7882100B2 (en) Database system with methodology for generating bushy nested loop join trees
Cui et al. Tracing the lineage of view data in a warehousing environment
US5590324A (en) Optimization of SQL queries using universal quantifiers, set intersection, and max/min aggregation in the presence of nullable columns
US6219662B1 (en) Supporting database indexes based on a generalized B-tree index
JP3104708B2 (ja) 関係データベースシステムの表を結合する方法
US6826562B1 (en) Method of simplifying and optimizing scalar subqueries and derived tables that return exactly or at most one tuple
US6105020A (en) System and method for identifying and constructing star joins for execution by bitmap ANDing
US6424967B1 (en) Method and apparatus for querying a cube forest data structure
US8285707B2 (en) Method of querying relational database management systems
US5619692A (en) Semantic optimization of query order requirements using order detection by normalization in a query compiler system
US7359922B2 (en) Database system and methodology for generalized order optimization
US6249783B1 (en) Method and apparatus for efficiently executing built-in functions
US6931390B1 (en) Method and mechanism for database partitioning
US6285996B1 (en) Run-time support for user-defined index ranges and index filters
CA2418163A1 (en) Method of query transformation using window aggregation
US7356542B2 (en) DML statements for densifying data
US20080065592A1 (en) Method, system and computer-readable media for software object relationship traversal for object-relational query binding
US20040220908A1 (en) Information retrieval system and method for optimizing queries having maximum or minimum function aggregation predicates
US20060161525A1 (en) Method and system for supporting structured aggregation operations on semi-structured data

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040202

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20040308

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040308

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20040308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20040309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040916

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040916

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20040916

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20050105

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20050105

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050114

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 3640346

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080128

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20090128

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090128

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100128

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100128

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110128

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120128

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130128

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20140128

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees