JP2510946B2 - 関連デ―タベ―ス管理システムへの問い合わせの最適化方法及び結果の構文解析方法 - Google Patents

関連デ―タベ―ス管理システムへの問い合わせの最適化方法及び結果の構文解析方法

Info

Publication number
JP2510946B2
JP2510946B2 JP5254257A JP25425793A JP2510946B2 JP 2510946 B2 JP2510946 B2 JP 2510946B2 JP 5254257 A JP5254257 A JP 5254257A JP 25425793 A JP25425793 A JP 25425793A JP 2510946 B2 JP2510946 B2 JP 2510946B2
Authority
JP
Japan
Prior art keywords
query
list
node
rdbms
test
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP5254257A
Other languages
English (en)
Other versions
JPH06208491A (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.)
Bull SA
Original Assignee
Bull SA
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 Bull SA filed Critical Bull SA
Publication of JPH06208491A publication Critical patent/JPH06208491A/ja
Application granted granted Critical
Publication of JP2510946B2 publication Critical patent/JP2510946B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24537Query rewriting; Transformation of operators
    • 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/2428Query predicate definition using graphical user interfaces, including menus and forms
    • 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/24542Plan optimisation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation

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)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Operations Research (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、最近はその頭辞語RD
BMSによって知られている関連データベース管理シス
テムへの問い合わせの最適化方法に関する。より詳細に
は、本発明は、RBMSの管理に適用される。本発明は
その結果の構文解析方法にも関する。
【0002】
【従来の技術】データベースは、特定領域をモデル化す
るデータの統合セットと定義できる。様々な応用により
使われるデータは、データ複製という問題を避けるため
に同一ベースに集中されている。データベースと関連し
ているのは、それが含むデータの構造と種類及び、常に
照合されなければならない制約を記述している概念スキ
ーマである。データベースアドミニストレータには、こ
れら制約を確実に照合するという作業がある。
【0003】データ管理には、3つの役割がある。第一
に、名前、パスワード及び、データにアクセスする一セ
ットの特権または権利を割り当てることによって、デー
タベースユーザを定義する。データベース管理の全て或
いは一部を扱うことを一任されたアドミニストレータも
定義する。管理の第二の役割は、データベースの概念ス
キーマの定義をアドミニストレータに一任するか参加せ
しめることである。即ち、アドミニストレータは、多様
な表のスキーマとこれら表に関連した規則を定義する。
最終的な役割として、アドミニストレータは、性能、完
全性、機密保持の観点から、ベースおよびRDBMSの
概念スキーマから利益を得る可能性がある。それが、本
発明の主題が本質的に関連する第三の役割である。
【0004】RDBMSへの申請がなされているとき、
アドミニストレータの役割は、RDBMS資源の利用を
最適化することである。問い合わせが申請時になされる
とき、RDBMSは問い合わせを実行するためのアクセ
スルートを選択する。申請の実行を最適化するために
は、アドミニストレータは、送られた問い合わせを解析
し、とるべき動作を決定しなければならない。その動作
は、問い合わせの形式の変更、及び/又は、関連した表
中の索引の作成或いは削除となる。その決定は、問い合
わせの現在の形式が適切であるか否か、或いは、既存の
索引が妥当であるか否かをアドミニストレータに示す情
報に依存する。
【0005】索引は物理的にデータから独立しているの
で、何時でも削除、作成可能である。誰が作成したかに
は関係なく、索引はデータへのアクセス時に使用され
る。表には同時に複数の索引を含めることができる。索
引の数とその更新に関連するオーバーヘッドの間には妥
協がなされなければならない。索引が2以上のカラムに
該当することがあり、その場合には、使用されるカラム
のユニークさ保証できる。更に、選択条件が2以上のカ
ラムに影響を及ぼす問い合わせの実行を改善する。2以
上の属性を備える問い合わせは、複数の索引を使用でき
る。但し、各索引がユニークであり、属性が同等であ
り、かつ同じ表で定義されていることが必要である。そ
の場合には、各索引からの部分的結果が併合されて最終
的結果を構成する。RDBMSには、索引の特性とカラ
ムの特徴を利用して、マージオペレーションのためにど
の索引を採用し、どれを避けるべきかを決定できるもの
もある。索引を使用するか否かは、RDBMS最適化プ
ログラムにより決定される。この決定は、RDBMSの
タイプに依存して変わる。
【0006】一方、RDBMSのスキーマは、動的に発
生することがある。例えば、1以上のフィールドを表に
加え、索引を表中に作成できる。この場合、例えば項目
の10%以上にアクセスしようとすると、RDBMS
が、それが使用しなければならない索引に遭遇せず、或
いは、それが使用してはならない索引に遭遇することが
ある。後者の場合、その索引は障害物になる。プランを
成功させるためのRDBMSの選択におけるあらゆる可
能性を考慮すると、資源利用率は、問い合わせ方式及び
索引の選択に依存して、1:10,000の比率の範囲
内で変動すると推定される。
【0007】現在、問い合わせの最適化は複雑である。
まず、自動化されておらず、かつ、特定のRDBMSツ
ールを使って、問い合わせ実行というプランを要求しな
ければならない。このプランは、問い合わせを処理する
ためにデータベースサーバによって実行されるべき操作
の連結である。このプランを要求するために、ユーザー
は、問い合わせをRDBMS言語で書かなければならな
い。それ故、問い合わせを書くには、RDBMSの問い
合わせ言語を熟知していないといけない。加えて、書く
ことは厳しい、困難な仕事であり、多くの時間が失わ
れ、ミスの危険性を考慮すると一層おぞましいものとな
る。応答に際し、RDBMSは問い合わせ実行というプ
ランの要求の結果を、RDBMSで決まる変数書式で提
供する。プランは、RDBMSの問い合わせ言語で書か
れ、例えば、複数のカラムをもつ長い表の形で現在存在
する。表は線形モードで書かれ、一度に1ページずつ画
面に表示される。従って表解析は非常に複雑となり、ユ
ーザーは通常、紙に表をプリントアウトすることを要求
することによって、作業を簡便化している。これは、ユ
ーザーがその端末に特有の全てのプリント操作を完了し
なければならないことを意味する。プリントアウトは頁
毎にされ、各頁にカラム見出しがくり返し表示される。
従って、コード化された言語で、アドミニストレータ
は、様々な頁の多数のカラムと多数の無秩序なラインを
解析することによって、問い合わせ処理の階層を解読
し、プランを再構成しなければならない。このため、探
索は長時間となり、かつ、困難となる。更に、アドミニ
ストレータは、プランの全体像がわからず、この全体像
は普通余りに長すぎて入手できず、又、それから得られ
る利益に比例して過度に厄介なものとなる。しかし、問
合わせの最適化方法を決めるためには、アドミニストレ
ータはでき得る限りこの不利益を解消しなければならな
い。例えば、アドミニストレータが問い合わせを修正す
るならば、修正された問い合わせを書き直し、新しい表
を解析し、それを古い表と比較しなければならない。解
析表を作成するのに使用されるツールは従前の表をメモ
リーにセーブしないので、新しい表との比較をなすため
に従前の表を参照できるようにするためには、印刷しな
ければならない。従って、実際問題として、この比較に
は、2つの表の長い、難しい解析の収集が含まれる。最
後に、アドミニストレータは、処理で使用された対象に
関する情報の表示装置を有していない。かかる条件下で
は、熟練したアドミニストレータにとっても問い合わせ
の最適化は迅速には達成が困難である。
【0008】問い合わせ処理を安価に迅速に最適化でき
るように、問い合わせの実行というプランの表示と解釈
をより容易にする1つの方法が提案されている。この方
法には、問い合わせ実行プランの図解表示の提供、最適
化プログラム及びRDBMS問い合わせ言語からの独立
という2つの利点がある。この方法の一好適改良法で
は、この最適化は、RDBMSの問い合わせ言語を知ら
ないユーザーでも達成可能である。この方法は、本出願
と同日に出願され、本出願の直前の出願番号を持つ、本
出願と共に継続中の特許出願に記載されている。
【0009】この、共に継続中の特許出願では、RDB
MSへの問い合わせ言語で書かれた問い合わせの実行と
いうプランのための探索を含む、RDBMSへの問い合
わせの最適化方法が提案されており、この方法は、同探
索に基づいて、問い合わせ実行というプランを表示する
ツリーを構成し、このツリーを画面に表示することを特
徴としている。
【0010】このツリーは、合併リンクによって相互に
連結しているボックス形を使って表示されている。ツリ
ーを構成する各ボックスは、関連オペレーションの名称
を示す見出しと、可能なオプションを示す小見出しを有
する。有益なことには、同オペレーションの可能性ある
特性値として、対象の名称、更には、オプションではあ
るが、同オペレーションが適用される対象の所有者の名
称等が追加される。改良点は、この特性値をボックスの
ボタンに書き込み、そのボタンをクリックして、同ボタ
ンに関連したオブジェクトについての付加情報を要求す
る点にある。例えば、クリックされたオブジェクトに関
して達成されるオペレーションが表であるならば、付加
情報は、その表を記述している要素である。一方、クリ
ックされたオブジェクトに関するオペレーションが索引
であるならば、付加情報はヒストグラムである。
【0011】要するに、問い合わせの実行のためのツリ
ーによって供給されるデータは、RDBMSの問い合わ
せ言語で書かれた実行プランに含まれるデータの全てで
ある。同発明により、ユーザーは、これらのデータのう
ちのいくつかについて付加情報を得ることもできる。こ
のツリーは、問い合わせを最適化する際の助けとなる強
力なツールをユーザーに提供するものと思われる。
【0012】そのパワーを高めるための研究がなされて
きた。1つの重要な問題点は障害であり、その理解を容
易にするために非常に単純な例で示す。SQLで動いて
いるRDBMSが自動車の出荷を扱っており、Type
_Carとして知られる表を含むと仮定する。例えば、
この表のカラムには、乗物の種類を示す“Type”、
型式名を示す“Mark”、価格を示す“Pric
e”、パワーを示す“Power”が含まれている。こ
の表のユーザーが、型式名「XXX」という乗物を要求
すると仮定する。ユーザーは、次の問い合わせをSQL
言語で書く: Select Type From Type_Car WHERE Mark=’XXX’ 従って、この問い合わせの実行プランを表している表
は、問い合わせのオブジェクト即ちType_Carの
みを考慮する。問い合わせにおいて、WHERE句に関
連した他要素はRDBMSに、カラム“Mark”を参
照し、そこで型式「XXX」を選択すべきことのみを指
示し、SELECT句に関連する他要素はRDBMS
に、“Type”に関する情報のみを結果中に戻すべき
ことを指示する。しかし、これら要素が、同問い合わせ
の実行プランを表している表で考慮に入れられないこと
は明白である。換言すると、この表は同要求の他の要素
を失っており、即ち問い合わせにはType、Mar
k、表記XXXが示されている。
【0013】問い合わせの実行ツリーはこの問い合わせ
の実行のプランを表している表から作成されているの
で、この表から消失している要素は、そのツリーには現
れ得ない。従って、問い合わせを最適化するための従来
技術の方法を使ってこれら失われた要素をそのツリーに
組み込むことは、不可能である。このため、提供された
方法を改良することは不可能であった。
【0014】しかし、ツリーのボックスへこれら不足要
素を組み込むと、ユーザーに多くの利点がもたらされ
る。第一に、表記Mark=’XXX’は、問い合わせ
のイメージ表示であるという利点を持つ持つ。問い合わ
せ実行というプランを表わしている表は、その問い合わ
せの実行というプランのための探索の結果のみならず、
その結果に導いた条件も含む。上述の例は、故意に最大
限に単純化されており、実際には、問合わせははるかに
複雑であることを理解されたい。問い合わせに関する全
要素を挿入すれば、その結果に付け加えて、問い合わせ
のイメージがユーザーにもたらされ、それらの関連のよ
り深い理解が可能になる。それらの関係に関するこの評
価により、問い合わせを最適化するためになされるべき
変更の選択を限定し、変更をより良く公式化するという
大きな利点がもたらされる。換言すると、RDBMSの
問い合わせ言語のスペシャリストではないユーザーは、
問い合わせ実行の可能な最高の最適化を達成するのに迅
速かつ容易な補助を受けられることになり、これは、欠
如している要素の取り込みがこの最適化の達成に非常に
価値ある指針になるからである。
【0015】
【発明が解決しようとする課題】本発明により、ユーザ
ーにとって、例えRDBMSの問い合わせ言語のスペシ
ャリストでないユーザーであっても、問い合わせの最適
化を達成するのに容易かつ迅速な補助となる問い合わせ
の記述要素の全てないし一部を得ることを可能にする方
法が提供される。
【0016】本発明の主題は、RDBMSの問い合わせ
を最適化する方法であり、問い合わせの実行プランを表
すツリーの形成と、それを画面に表示することを含み、
構文グラフを形成するために問い合わせの構文解析をな
し、ツリーの要素をグラフの要素と比較し、グラフにの
み含まれる要素をツリーに補うことから構成されること
を特徴とする。
【0017】当然の結果として、本発明の主題は、RD
BMSへの問い合わせの構文解析の方法でもあり、特
に、構文グラフのノードの型を、そして、更には、好ま
しくはこれら型に関連した情報を決定するために、RD
BMSの機能を解析することから構成されることを特徴
としている。構文解析には、RDBMSによって実行さ
れた命令の決定及び、これら命令が実行される順序が含
まれる。この順序は、問い合わせと実行すべきプランと
の関係を確立するという利点を有する。それは又、グラ
フのノードの型と関連情報が決定される条件を定義する
という利点も有する。
【0018】
【課題を解決するための手段】本発明の特徴と利点は、
例示目的で示され、添付図面に例示されている以下の記
載から明白になる。
【0019】明瞭簡潔とするため、本明細書の以下の記
載は、登録商標オラクル(Oracle)V6によって
知られ、オラクル社(Oracle Corporat
ion)によって生産され、標準規格言語SQL(構造
化探索言語)を使用し、ユニックスステーション[米国
ATT(American Telephone an
d Telegraph)社の登録商標である]で実行
されるRDBMSの非制限的な一実施例に基づいてなさ
れる。示された実施例は、このRDBMSでのSELE
CT方式の問い合わせに関するものであるが、このRD
BMSのこの方式にも他のRDBMSにも限定されるも
のではない。
【0020】オラクルの機能的なアーキテクチャは4つ
の同心層で編成されており、それは中心から順にコア、
辞書、SQL層、外層である。最初の3つの層は、基層
と呼ばれる。
【0021】コアは、データベースと通信し、又、分散
型データベースシステム環境中の他コアと接続可能であ
る。その本質的なファンクションの1つは、統合SQL
問い合わせ最適化プログラムによる問い合わせの最適実
行である。
【0022】データ辞書は、メタベースである。それ
は、SQL言語の助けにより処理される一組の表とビュ
ーで構成されている。その内容は瞬時のベースのイメー
ジを反映し、従って、データベースの動的記述を提供す
るものである。特に、それはベースのオブジェクト
(表、カラム、ビュー、索引等)、及び、多様なオブジ
ェクトに関するユーザーの特権及び権利を記述すること
を可能にしている。ユーザーが管理特権を持つ場合に
は、前記辞書がデータベースの管理に使われる。ユーザ
ーは、DBA特権を持つ場合には、アドミニストレータ
であるとみなされる。システムがインストールされる場
合には、2名のユーザーがアドミニストレータとみなさ
れる。SYSとSYSTEMである。SYSアドミニス
トレータのみがデータ辞書表にアクセスする。
【0023】SQL層は、オラクルの最後の基本層であ
る。それは、コアと外層のツールとの間のインターフェ
ースの役割を果たす。
【0024】最後に、外層は、アプリケーションの展開
と、3つの基本層によって提供されるファンクションの
全ての使用を容易にするツールで構成される。これらの
ツールの1つはSQL*Plusであり、これはSQL
層との対話型の第4世代インターフェースである。いず
れのSQLコマンドもSQL*Plusから開始でき
る。それは、特に、作業環境(頁当たりのラインの長
さ、頁当たりのライン数等)をパラメータ化し、画面又
は紙にSQL問い合わせの結果をフォーマットすること
を可能にする。もうひとつのツールはSQL*DBAで
あり、これはデータベースを管理する。
【0025】本発明の理解を助けるために、オラクルの
主要オペレーションを極めて手短に記載する。
【0026】CONCATENATION:索引を呼び
出すことによるORオペレーションの実行。オラクル
は、2種類のORオペレーション実行方法を提供してい
る。
【0027】FILTER:フィルタこのオペレーショ
ンが2つの分岐を有するならば、第一の下位の各タプル
(組)に対して、第二の下位に始まる流れの存在を照合
する。この流れが存在するならば、フィルタは前記タプ
ルを通過させる。このオペレーションは、関連SELE
CT句で発生する。FILTERが唯一つの分岐を持つ
ならば、そのアルゴリズムは異なり、二進値公式を真と
するタプルを通過させる。このオペレーションは次い
で、HAVING句に置き換わる。
【0028】INDEX:索引にアクセスする。このオ
ペレーションは、索引中の値が直接使われるか、表から
のタプルの選択に役立つかに依存して単独か、或いはT
ABLE ACCESSオペレーションの後に現れ得
る。
【0029】MERGE JOIN:これは、マージ・
ジョインを実行する唯一のオペレーションである。それ
は、2つの事前にソートされたセットのマージを達成す
る。それは、テストが等価であり、それに対してフィー
ルドが索引付けされていないジョインのために使われ
る。
【0030】NESTED LOOPS:第一の下位か
ら発している各タプルに対して、第二の下位から発して
いるタプルとのカルテシアン積をとる。
【0031】TABLE ACCESS:表にアクセス
し、又、制約が可能である。
【0032】SORT UNIQUE:マージオペレー
ションであるUNION、MINUS、INTERSE
CTで作られる対の除去であり、SELECT句のUN
IQUEオプションに対して使われる。
【0033】SORT JOIN:MERGE JOI
Nオペレーションによるジョインのフィールドのソート
を行う。
【0034】SORT ORDER BY:ORDER
句の仕様によるソート。
【0035】SORT GROUP BY:GROUP
BY句の仕様によるSELECT、HAVING句の
グループの実行と、ソート。
【0036】RDBMSへの問い合わせを助け、最適化
するための従来方法では、RDBMSの問い合わせ言語
で書かれた問い合わせの実行方式の探索が含まれる。図
2Cの画面の窓に、オラクルの問い合わせ言語SQLで
書かれた問い合わせ10の一例が示されている。オラク
ルでは、ツールSQL*Plus又はSQL*DBAを
使用して、問い合わせ10の実行方式を探索できる。問
い合わせ10が書かれ、それに応答して、ツールが、問
い合わせを実行するためにREBMSのコアによって選
択された方式を表わしている表を作成する。この表は、
ユーザーによって事前に作成されねばならず、又、SQ
L選択コマンドにより意見を求めらることができる。
【0037】図1は、ユーザーの要求によりRDBMS
によって作成された対応する表の頁毎のプリントアウト
によって得られた表11の、便宜上、極めて簡単な一例
を示す。表11は2ページからなり、各頁が7個の代表
的カラムの見出しを繰り返し表示し、それらは順次、オ
ペレーション(OPERATION)、オプション(O
PTION)、オブジェクト所有者(OBJECT_O
WNER)、オブジェクトの名前(OBJECT_NA
ME)、そして、各オペレーションに対する、番号(I
D)、更に、オペレーションが姉妹オペレーションを持
つならば、直前のオペレーションの番号(PARE)、
及びその位置(POSI)である。
【0038】図2Cに図示された単純な問い合わせ10
は、通常の問い合わせに関連する表についての若干の観
念を提示するものであり、問い合わせの実行を最適化す
る際にユーザーが遭遇する重大な問題点の良好な例示に
なっている。実際には、アドミニストレータが熟練ユー
ザーである場合にのみこの表を解釈できる。かかるアド
ミニストレータにとってもこの表の解釈は一般的には時
間がかかり、困難なものであることも理解されたい。更
に、この方法では、実行方式に関する全体像を全く把握
できない。本発明は、RDBMSの管理に関して極めて
洗練された知識をもつ人に相談することを不必要とする
解決方法を提供するものである。
【0039】本発明の一特徴として、問い合わせ実行方
式を表わす表が自動作成されることをユーザーにまず提
案するために、DB*EXPLAINと呼ばれる探索ツ
ールが作成される。このツールの付随的利点として、ア
ドミニストレータは問い合わせをSQL言語で書く必要
がない。
【0040】図2A、2B、2Cは、ツールDB*EX
PLAINのログオン画面12の例示である。この例は
OSF/Motifソフトウェアを使用して作成されて
おり、OSF/Motifは米国のオープンソフトウェ
アファウンデーション社(Open Software
Foundation,Inc)の登録商標である。
画面12には、メニューバー13と対話用窓14が含ま
れる。メニューバー13には、3つの主要メニューであ
るFile、Query、Explainが含まれる。
Fileメニュー15は、図2Aより表示され、ファイ
ル中に得られている問い合わせに関連する。それは4個
のオプションであるOpen、Save、Save A
s、Exitを提示する。Openオプションをクリッ
クすると対話用窓14に選択用窓16が現れる。標準形
態の選択用窓16には、問合せを含むカレントファイル
(F1、F2、その他)のスクロールリスト17、選択
すべきファイル名を書き込むことを可能にしているボッ
クス18が含まれる。Fileメニュー15中のSav
eオプションをクリックすると、所望ファイルがその既
存名で保存される。Save Asオプションをクリッ
クすると、所望ファイルは、ユーザーが新たに選択記載
した名で保存される。最後に、Exitオプションをク
リックすると、DB*EXPLAINから抜け出る。
【0041】図2Bは、ログオン画面12中の問い合わ
せメニュー19の例示である。それは選択用窓20をオ
ープンするのに役立つLoad Viewオプションの
みを有し、同窓は、別の問い合わせ源としてのRDBM
Sの辞書に含まれるビュー(図示されている例では、S
YS.DBA_CLUSTERSと、SYS.DBA_
TABLESのスクロールリスト21と、所望ビューの
名前を書き込むことを可能にしているボックス22とを
含む。図2Bは説明メニュー23をも示し、これにはP
lanオプションのみが含まれる。このオプションをク
リックすると、有利なことには、ツールSQL*Plu
s及びSQL*DBAと同様な方法で、ツールDB*E
XPLAINが、問い合わせ実行方式を表す表を作成す
る。明らかに、ツールDB*EXPLAINを適応させ
て、編集用窓にこの表を、図1に示された表11と同様
な方法で表示することが可能である。しかし、図示され
た例に沿った本発明の方法では、図示された表11より
明らかに優れた表示を提供するためにのみ前記表を必要
としており、従って、実際問題としては、この表示は不
必要である。
【0042】図2Cは、図2Aのスクロールリスト17
中の選択ファイルに派生する、或いは図2Bに図示され
る画面中のボックス18に定義される問い合わせ、或い
は、図2Bのスクロールリスト21中に選択されている
かボックス22に定義されるビューを表示するために、
対話用窓14の中に作成された編集用窓24を例示して
いる。図2Cの編集用窓24には、一例として、図2B
のリスト21からビューSYS.DBA_CLUSTE
RSを選択したものとして提示されている問い合わせ1
0が示されている。このビューは、データベースのクラ
スターに関連し、SYSアドミニストレータに帰属す
る。ツールDB*EXPLAINのおかげで、すでに利
用可能な問い合わせを書き込む必要はもはや存在しな
い。従って、このツールは、問い合わせの設計、再書込
みを不必要とし、書き誤りに伴う危険の全てと時間ロス
を避けるという大きな利点を提供する。別の利益は、編
集用窓24に現れる問い合わせの内容を直接かつ簡単に
修正できることであり、これは、好ましい態様として選
択された例に示されるように、OSF/Motifソフ
トウェアの使用のおかげである。
【0043】本発明の方法の特徴の一つは、問い合わせ
実行ツリーを問い合わせ10の実行プランに基づいて作
成し、このツリー画面に表わすことにある。図3の画面
で、窓25には、問い合わせ10の実行を表わしている
ツリー26が含まれる。
【0044】ツリー26は、リンク28で相互に連結し
ているボックス27で構成される。ツリー26のリンク
28の構成は、RDBMSの問い合わせ言語で書かれた
問い合わせの実行方式に対する要求の結果の解析によっ
てなされ、この結果が一例として選択されたRDBMS
に対する表11である。有利なことには、問い合わせ1
0の解析は実際には、C言語構造でなされており、同構
造は、純粋なソフトウェアグラフを作るための合併構造
を指す。本発明の方法を使うのに充分な非常に単純な一
例において、ツリー26のボックス27によって構成さ
れるノードの各々と関連する構成は、単に以下の式に沿
ったExplain Planにより作成される表を基
礎として作成される。
【0045】 タプルが与えられる都度、ボックス27の1つが従来方
法で作成され、これは当業者にとっては容易であり、例
えば、OSF/Motifソフトウェアのグラフィック
ライブラリファンクションを使用して行う。本発明の方
法を構成する段階のセットに適合した別例は追って、s
truct.hと名づけられた追加ファイルを参照しな
がら示す。要するに、図示されたツリー26においてボ
ックス27及びそれらのリンク28は、実行プランを表
わす表11の問い合わせ10の解析によって作成されて
いる。図3に示された例で、ツリー26を示すための窓
25は、好ましいことには、Planオプション下のツ
ールDB*EXPLAINにより提供され、かつ、ビュ
ー名、図2Cに図示された問い合わせ10編集用窓24
に伴われる。
【0046】ツリー26には、RDBMS問い合わせ言
語で書かれた問い合わせの実行プランの探索で得られた
情報の全て或いは一部、例えば図1の表11に含まれる
情報、を含めることができる。例えば、各ボックス27
は見出しとして、ボックスが関連するオペレーション名
を有する。例えば、図3には、図1の表11のオペレー
ションカラムに示されているNESTED LOOP
S、TABLE ACCESS、INDEXが示されて
いる。ボックス27の見出し中のオペレーションが特定
オブジェクトのために実行されるオプションを有するな
らば、好ましいことには、そのオプション名を小見出し
としてボックス中に記述できる。同様に、ボックス27
中の見出し中に記述されたオペレーションがオブジェク
ト名及び、オペレーションオプションが適用されるオブ
ジェクト所有者名等の特性を持つならば、これら特性の
全て或いは一部をボックス中に示すことができる。本発
明のこれらの有利なオプションの全てが、図3に示され
ているツリー26に含まれている。例えば、ツリー26
の13個のボックス27中には、表11に記述されてい
る13個のオペレーション名が見いだされ、又、特定オ
ブジェクトのために実行される可能なオプション、オブ
ジェクト名及びオブジェクト所有者名が補足されてい
る。ツリー26には、RDBMSの問い合わせ言語の熟
練に関係なくいずれのユーザーにも容易に理解され、
又、問い合わせ実行プランの全体像を提供できるという
利点がある。従って、ツリー26を見たユーザーは、な
された問い合わせを最適化するために取るべき動作を容
易かつ迅速に決定できる。一方、ツールDB*EXPL
AINにより、ユーザーは問い合わせを書き込む必要は
なく、又、図2Cの編集用窓24でそれを簡単に修正で
きる。修正後、アドミニストレータは極めて迅速に新た
な実行ツリーを有することができるので、その修正がど
の程度有効であるかがわかる。同ツールは、直前のツリ
ーを保存するという追加利点を有し、従って、アドミニ
ストレータが2つのツリーを簡単迅速に比較することを
可能にしている。
【0047】当然、これら利点は、ツールDB*EXP
LAINを使用せずとも、RDBMSの問い合わせ言語
での問い合わせの実行プランを探索するための従来手段
を使用しても得られる。この探索結果は、一例として選
択されたRDBMSで表11に示されているが、RDB
MSのタイプに依存して、いくつかの他の形式でも存在
できるのは当然である。これらの結果の解析は、問い合
わせのための実行ツリーを作成するために、当業者によ
りそれら形式に簡単に適用できる。
【0048】本発明の別の特徴により、実行プランへの
要求の結果の解析で提供される情報以外の情報も得られ
る。例えば、オペレーションの特定の可能な特性に関す
る付加情報が得られる。図示された例において、オペレ
ーションが実行されるオブジェクトの名がボックス27
の見出しに表示され、任意ではあるが、このオブジェク
トの所有者がボックス中に挿入されたボタン29中に記
載されており、ボタン29をクリックすると、ユーザー
はこのオブジェクトについて付加情報を得ることができ
る。
【0049】クリックされたオブジェクトで実行される
オペレーションが表(図示された例のボックス27中の
TABLE ACCESS)である場合は、付加情報に
対する探索は、例えば、オラクル辞書のDBA_TAB
_COLUMNS表中のSQL要求によってなされる。
この表は、RDBMSのデータベースに含まれる表の構
成、即ち、カラムの名と特にそれらの型と大きさとを添
えて示している。従って、付加情報は、ボックス中に述
べられている表の記述要素の全てないし一部である。従
って、表の内容、例えば、カラム名及びカラムの型が得
られる。ツールDB*EXPLAINはそれらを優先的
に追加窓に表示する(図示せず)。
【0050】クリックされたオブジェクトで実行される
オペレーションが索引(ボックス27のINDEX)な
らば、付加情報は、図4Aに示されるようなヒストグラ
ムである。このヒストグラムに含まれる情報は、オラク
ルコマンドVALIDATEINDEXによって得られ
た。応答して、オラクルはヒストグラム表を作成する。
このヒストグラム表を基礎とし、又、当業者に普通の小
さいプログラムによって、図4Aに示されるような、こ
のヒストグラムを表示する画面が形成される。
【0051】図4Aに示された例では、ユーザーは自分
の索引がくり返されない340個のキーを含むことを知
る。選ばれた索引が非常によいことを、ユーザーは直ち
に知る。図4B、4Cはそれぞれ、本発明で得られるヒ
ストグラムの2つの他の例を示している。図4Bの例で
は、使われた索引が前のものより選択性に劣ることをユ
ーザーは知る。図4Cは、極めて非選択性であり、従っ
て、変えるべき索引を指摘しているヒストグラムであ
る。これら例は、本発明の方法で提供される利点を際だ
たせている。
【0052】問い合わせを最適化するための本発明の方
法の別の特徴は、問い合わせの構文解析をする点にあ
る。この構文解析は、当業者に知られている多様な方法
で達成できる。以下に記載する例では、本発明の構文解
析は、一般には、特に、構文グラフのノードの型を決定
し、そして、好ましくはこれら型に関連した情報を決定
するためになされる。
【0053】オラクル関数の深い解析により、表とカル
テシアン積の結合の実行がいかなる特定の順序もなしに
なし得ることが明かである。複数の表に複数回アクセス
し、1つのSQL命令に対して複数のオペレーションを
行うことが可能である。ソートは加えても削除してもよ
い。射影とテストは記されない。RDBMSが与える唯
一のインジケータは、アクセスされた表と索引の名と、
問い合わせ源のFROM句中の表の引用順序である。こ
れでは、数百ノードを含むこともある実行プランの完全
理解には不十分である。この不十分性が特定のタイプの
RDBMSに対するものである時には、本発明の構文解
析で解消できる。この場合、構文解析には、RDBMS
により実行されるオペレーションの決定と、これらオペ
レーションの実行順序の決定が含まれる。この順序は、
問い合わせと実行プランとの間に厳しい関係を確立する
という利点を有する。一例として選択された本RDBM
Sの場合には、そのオペレーションの深い解析により次
の順序がわかった。
【0054】TABLE GROUP HAVING
UNION ORDER、ここで、TABLEは、問い
合わせに対する、FROM句の表へのアクセスと、これ
ら表とWHERE句の全テストとの間のカルテシアン積
の双方を表し;GROUPは、GROUP BY句とグ
ループの計算を表わし;HAVINGは、HAVING
句を表わし;UNIONは、オペレーションであるUN
ION、MINUS及びINTERSECTを表わし;
ORDERは、ORDER句を表わす。
【0055】オラクルは、FROM句の表の全てがカル
テシアン積とWHERE句の制約を受けたときに問い合
わせのグループを計算し、GROUP BYオペレーシ
ョンをする。それは、射影と同時にグループ化オペレー
ションを行った後にHAVING句を実行する。次に、
それはUNIONオペレーションを実行し、次いで、O
RDERが最終結果の提供を命じる。もうひとつの制約
に従って、ユニオン演算は、問い合わせの中で引用され
た順序で実行される。
【0056】図5A〜5Nは、選択されたRDBMSの
関数の深い解析で得られた順序関係に基づく構文グラフ
のノードの型を決定する条件の例示である。それらは、
RDBMSファンクションの深い解析から得られる情報
のいくつかの例も提供している。
【0057】通常の定義により、ノードは実際の又は仮
想の表を表わす。選択された例において、ノードを作成
できる。
【0058】− 引用された表(図5A)により; − グループ化オペレーションに対して。これらオペレ
ーションは、ノード内に置かれ、GROUP BY,
UNIQUEのグループ(図5B)である; − ORDER BYオペレーション(図5C)に対し
て; − 複数の表を含むことのできるFROM句により。こ
の場合、実際の出力流れは、これらの表のカルテシアン
積の結果である。カルテシアン積は、構文グラフに明示
されているオペレーションでなく、本出願では同一ノー
ドにおける複数の流れ矢印の到着によって示されてい
る。しかし、グループ化オペレーションが存在しなけれ
ば、必然的に空ノードが発生する(図5D); − マージオペレーションであるUNION、MINU
S、INTERSECTにより。オペレーションのタイ
プは示されている(図5E)。
【0059】指向円弧に関しては: − 指向非標識化円弧は、タプルの実際の流れ方向を表
わし(図5F); − テストによって標識された指向円弧は、タプルの論
理的流れの方向を表わす。換言すれば、スタートした表
の各タプルに対して、条件に会う宛先表のタプルのセッ
トが選択される。条件は、それ故、流れの宛先表にのみ
影響する(図5g)。要求の結果は、問い合わせの最後
のオペレーションを実行したノードから出る宛先ノード
の無い流れ矢印で表わされる(図5H)。
【0060】射影に関しては: − SELECT句の射影は、実際の流れが去るノード
近くに書かれる。唯一つの表がFROM句に存在し、か
つ、グループ化オペレーションがなければ、射影は、表
のノードの下に示される(図5I); − 射影は、カルテシン積からの空ノードの下か、グル
ープ化オペレーションで作成されたノードの下に記載さ
れる(図5J); − 射影は、射影から生じている矢印(フラックス或い
は条件矢印)近くに記載する(図5K)。
【0061】ノードのオペレーションでは、射影、条件
ラベル、端末送信流れからのオペランドに下線を引く
(図5L)。WHERE(またはHAVING)句の条
件がこの表の要素と定数のみを含むときには、条件をノ
ードの下に記す(図5M)。最後に、WHERE句のテ
ストが表名を含むノードに影響を及ぼし、HAVING
句のテストがグループ化オペレーションを含むノードに
影響を及ぼす(図5N)。図6に、今定義した基準によ
りなされる構文解析を表すグラフ30の一例を示す。こ
のグラフはネットワークの形をしており、以下、このグ
ラフをネットワークと呼ぶ。
【0062】実行プランのツリー26(図3)、問い合
わせの構文解析のネットワーク30(図6)が得られた
ので、本発明の方法の最終過程で、それらを比較し、ネ
ットワークにのみ含まれる要素をツリー26に補う。図
示された例では、ネットワークとツリーの比較は、3段
階で行う:ネットワークのノードとツリーのノードとの
関連付け;射影の設定;テストの設定。
【0063】例えば、ネットワークのノードを実行プラ
ンのノードを関連付けるために、RDBMSのオペレー
ションであるDB*EXPLAINツールのオペレーシ
ョンを、それらが予測可能性があるか否かにより2グル
ープに類別する。予測可能性のあるオペレーションは、
ツリーとネットワークで同じ順序で続いているものであ
る。ネットワークがこの最初のグループ(TABLE、
GROUP、UNION、ORDERノード)のオペレ
ーションのみで構成されることがわかる。INDEX、
TABLE ACCESS、UNION、MINUS、
INTERSECT、SORT GROUP BY、S
ORT ORDERオペレーションもこのグループに入
る。図7は、ネットワークとツリーの予測可能なノード
の関連の例示である。第2グループのオペレーション
は、複数のアルゴリズムがその都度可能なので、それら
が問い合わせに現れる順序が保存されないときは予測不
能である。これらは特に、ジョインオペレーションであ
るNESTED LOOPS、FILTER、MERG
E JOINである。ネットワークでのジョインは、関
連ノードの間のリンクとして、図11に現れている。一
般に、関連している予測可能なノード間のリンクは、予
測不能なノードによって構成される。
【0064】射影の配置は、射影をツリーの適当なノー
ドに配置することからなる。FROM句の表の全てがア
クセスされ、WHERE句のテストの全てが実行され、
グループが計算され、GROUP BY、HAVING
句が実行された場合以外は、SELECT句は実行可能
ではない。ネットワークでは、カルテシアン積が存在し
ないか、GROUP BY句がORDER BY句に付
加される場合を除いては、射影はGROUPノードでな
される。従って、図8に図示され、同図のこの図面の欄
外に示されている問い合わせの実行プランを表わしてい
るツリー26の例では、射影はSORT GROUP
BYオペレーションの終了時になされる。
【0065】テストの配置は、ツリーの適当なノードに
テストを配置することからなる。
【0066】いくつかの例で、このツリーとネットワー
クの関連付け過程を例示する。第一の例では、ツリー2
6は、図9Aに図示された形を有し、T1、T2、T
3、T4間のジョインは、T1.c1+T2.c2=T
3.c3+T4.c4と仮定する。この例では、問い合
わせの残りは重要ではない。テストのロケーションは、
使われるアルゴリズムで決まる。図9Bに図示された最
初のケースでは、Op1、Op2、Op3はNESTE
D LOOPSオペレーションを表わし、このオペレー
ションは既に、パラメータ化されたオペレーションとし
て定義されている。最初の子によって戻されたタプル
は、第2の子に送られる。次いで、テストがシートT4
に示されるように実行される。図9Cに示された第2の
ケースでは、Op1、Op2、Op3はMERGE J
OINオペレーションを表し、このオペレーションはパ
ラメータの通過を必要としないマージオペレーションで
ある。
【0067】テストは、図示されるように、4つの表の
流れが通過するMERGE JOINOp3ノードで行
われる。Op1のアルゴリズムは、テストのロケーショ
ンに影響しない。図9Dにしめされた第三の、そして最
後のケースでは、Op2はMERGE JOINオペレ
ーションであり、Op3はNESTED LOOPSオ
ペレーションである。オペレーションOp1のタプル
は、パラメータの形でオペレーションOp3の低い方の
分岐に送られる。従って、テストを行うのはMERGE
JOINオペレーションであるOp2である。
【0068】第二の例は、SELECT入れ子句に関す
る。入れ子...T1.c1 IN(SELECT T
2.c2 ...)を、図10Aのツリー26に示され
ようなものと仮定する。テストが入れ子オペレーション
であるときは、アルゴリズムはFILTER句である。
この場合には、INテストは、入れ子SELECT句の
全ての事前の実行を必要とする。従って、テストはFI
LTERで行われる。結果として、T1.c1は第2の
分岐からの値に等しい値を持たなければならず、又、図
10Bに図示されるように、「第2分岐のIN流れ」と
変換する。アルゴリズムがNESTED LOOPSか
MERGE JOINならば、RDBMSは、入れ子S
ELECT句と非入れ子SELECT句との間にジョイ
ンを有するIN又EXISTSテストの存在下で、入れ
子を通常のジョインに変換する。例えば、 SELECT * FROM T1 WHERE Exists (Select * FROM T2 WHERE T1.c1−T2.c2) ならば、射影を次の通りに変更することによって、RD
BMSはINまたはEXISTテストをジョインに変換
する。
【0069】SELECT unique T1.* FROM T1、T2 WHERE T1.c1=T2.c2。
【0070】本発明の方法の典型的実施例を以下に例示
する。これらの実施例は、ユニックス構成で機能させる
ためにC言語で書かれたファイルに基づいている。一例
として示されるファイルは、struct.hと名づけ
られたファイルである。このファイルは、ネットワーク
に特有の構造体の全ての定義を提供し、以下のようにそ
れ自身を表示する。
【0071】 struct.h /* * ファイル名: struct.h (header file) * 言語: C (K&R) * 記述:このファイルには全構造体の定義が含まれる。
【0072】 * */ typedef enum /* --表カラムのデータ型 -- */ { COL EMPTY=O, /*カラムが‘* ’ならば未知型 */ COL DATE, /*カラムは DATE */ COL INT , /*カラムは NUMBER (x) か NUMBER(x, -y)*/ COL LONG, /*カラムは LONG */ COL RAW , /*カラムは RAWか LONGRAW */ COL REAL, /*カラムは NUMBER(x,y) */ COL ROWID , /*カラムは ROWID */ COL SPECIAL , /*カラムは特別関数 */ COL STRING /*カラムは CHAR か VARCHAR */ } TYPE COL; typedef enum /* --定数のデータ型 -- */ { CONST EMPTY=0 ,/*初期 TYPE CONST (後はエラー) */ CONST INT , /*定数は整数 */ CONST NULL, /*定数はヌル */ CONST REAL, /*定数は実数 */ CONST STRING /*定数は列 */ } TYPE CONST; typedef enum /* --説明オペレーションのタイプ -- */ { EXPLAIN EMPTY=0 , /*オペレーションの指定はない */ EXPLAIN ANDEQUAL, /*オペレーションは AND EQUAL */ EXPLAIN CONNECTBY, /*オペレーションは CONNECT BY */ EXPLAIN CONCAT, /*オペレーションは CONCATENATION*/ EXPLAIN COUNT , /*オペレーションは COUNT */ EXPLAIN FILTER, /*オペレーションは FILTER */ EXPLAIN FIRSTROW, /*オペレーションは FISRT ROW */ EXPLAIN FORUPDATE , /*オペレーションは FOR UPDATE */ EXPLAIN INDEX , /*オペレーションは INDEX */ EXPLAIN INTER , /*オペレーションは INTERSECT */ EXPLAIN MERGEJOIN , /*オペレーションは MERGE JOIN */ EXPLAIN MINUS, /*オペレーションは MINUS */ EXPLAIN NESTEDLOOPS, /*オペレーションは NESTED LOOPS */ EXPLAIN PROJ, /*オペレーションは PROJECTION */ EXPLAIN REMOTE, /*オペレーションは REMOTE */ EXPLAIN SEQUENCE, /*オペレーションは SEQUENCE */ EXPLAIN SORT /*オペレーションは SORT */ EXPLAIN TABLEACCESS ,/*オペレーションは TABLE ACCESS */ EXPLAIN UNION , /*オペレーションは UNION */ EXPLAIN VIEW /*オペレーションは VIEW */ } TYPEEXPLAIN; typedef enum /* --説明オプションのタイプ -- */ { EXPL OPT EMPTY=0, /*オプションの指定はない */ EXPL OPT BYROW, /*オプションは BY ROW */ EXPL OPT CLUSTER, /*オプションは CLUSTER */ EXPL OPT FULL , /*オプションは FULL */ EXPL OPT GROUPBY, /*オプションは GROUP BY */ EXPL OPT JOIN , /*オプションは JOIN */ EXPL OPT ORDER BY /*オプションは ORDER BY */ EXPL OPT OUTER, /*オプションは OUTER */ EXPL OPT RANGESCAN, /*オプションは RANGE SCAN */ EXPL OPT UNIQUE , /*オプションは UNIQUE */ EXPL OPT UNIQUESCAN ,/*オプションは */ } TYPEEXPELOPT+ typede enum /* -- 構造体ノードのノードの型 -- */ { NODE EMPTY=0 /*初期 TYPENODE ( 後はエラー */ NODE CONNECT,/*ノードは a CONNECT BY 句 */ NODE EXPLAIN,/*ノードは an explain node */ NODE GROUP, /*ノードは a GROUP BY 句 */ NODE ORDER, /*ノードは an ORDER BY 句 */ NODE QUERYOP,/*ノードは問い合わせオペレーション、例えば UNION*/ NODE TABLE /*ノードは表 */ } TYPENODE; typedef enum /* --算術式で使用されるオペレーション -- */ { OPER EMPTY=0, /*初期 TYPEOPER ( 後はエラー) */ OPER ABS, /*オペレーションは ABS */ OPER ADD, /*オペレーションは 加算:+ */ OPER ADD MONTHS /*オペレーションは ADDMONTHS */ OPER ASCII, /*オペレーションは ASCII */ OPER AVG, /*オペレーションは AVG */ OPER CEIL , /*オペレーションは CEIL */ OPER CHARTOROWID, /*オペレーションは CHARTROWID */ OPER CHR, /*オペレーションは CHR */ OPER CONCAT , /*オペレーションは 連結: II */ OPER CONVERT, /*オペレーションは CONVERT */ OPER COUNT, /*オペレーションは COUNT */ OPER DECODE , /*オペレーションは DECODE */ OPER DIV, /*オペレーションは 除算:/ */ OPER DUMP , /*オペレーションは DUMP */ OPER FLOOR, /*オペレーションは FLOOR */ OPER GREATEST , /*オペレーションは GREATEST */ OPER HEXTORAW , /*オペレーションは HEXTRAW */ OPER INITCAP, /*オペレーションは INITCAP */ OPER INSTR, /*オペレーションは INSTR */ OPER LASTDAY, /*オペレーションは LASTDAY */ OPER LEAST, /*オペレーションは LEAST */ OPER LENGTH , /*オペレーションは LENGTH */ OPER LOWER, /*オペレーションは LOWER */ OPER LPAD , /*オペレーションは LPAD */ OPER LTRIM /*オペレーションは LTRIM */ OPER MAX, /*オペレーションは MAX */ OPER MIN, /*オペレーションは MIN */ OPER MOD, /*オペレーションは MOD */ OPER MONTHS BETWEEN ,/*オペレーションは MONTHSBETWEEN*/ OPER MULT , /*オペレーションは乗算:* */ OPER NEG, /*オペレーションは 負符号:- */ OPER NESTED , /*括弧内オペレーション */ OPER NEWTIME /*オペレーションは NEWTIME */ OPER NEXTDAY, /*オペレーションは NEXTDAY */ OPER NSSORT , /*オペレーションは NILSSORT */ OPER NVL, /*オペレーションは NVL */ OPER POS /*オペレーションは 正符号: + */ OPER POWER, /*オペレーションは POWER */ OPER PRIOR, /*オペレーションは PRIOR */ OPER RAWTOHEX , /*オペレーションは RAWTOHEX */ OPER REPLACE, /*オペレーションは REPLACE */ OPER ROUND, /*オペレーションは ROUND */ OPER ROWIDTOCHAR /*オペレーションは ROWIDTOCHAR */ OPER RPAD , /*オペレーションは RPAD */ OPER RTRIM, /*オペレーションは RTRIM */ OPER SIGN , /*オペレーションは SIGN */ OPER SOUNDEX, /*オペレーションは SOUNDEX */ OPER SQRT , /*オペレーションは SQRT */ OPER STDDEV , /*オペレーションは STDDEV */ OPER SUB, /*オペレーションは 減算:- */ OPER SUBSTR , /*オペレーションは SUBSTR */ OPER SUM, /*オペレーションは SUM */ OPER TOCHAR , /*オペレーションは TOCHAR */ OPER TODATE , /*オペレーションは TODATE */ OPER NUMBER , /*オペレーションは TONUMBER */ OPER TRANSLATE, /*オペレーションは TRANSLATE */ OPER TRUNC, /*オペレーションは TRUNC */ OPER UPPER, /*オペレーションは UPPER */ OPER USERENV, /*オペレーションは USERENV */ OPER VARIANCE , /*オペレーションは VARIANCE */ OPER VSIZE /*オペレーションは VSIZE */ } TYPEOPER: typedepf enum /* -- オーダモード -- */ { ORDER EMPTY=0 ,/*オーダモードの指定はない */ ORDER ASC , /*オーダモードは ASC */ ORDER DESC /*オーダモードは DESC */ } TYPEORDER ; typedef enum /* -- 問い合わせ時のオペレーション -- */ { QUERYOP EMPTY=0 ,/*初期 TYPEQUERYOP (後はエラー) */ QUERYOP INTER , /*オペレーションは INTERSECT */ QUERYOP MINUS , /*オペレーションは MINUS */ QUERYOP UNION /*オペレーションは UNION */ } TYPEQUERYOP ; typedef enum /* -- 選択モード -- */ { SELECT EMPTY=0, /*選択モードの指定なし */ SELECT ALL, /*選択モードは ALL */ SELECT DISTINCT /*選択モードは DISTINCT */ } TYPESELECT; typedef enum /* --構造体の型 -- */ { STRUCT COLUMN=1 , STRUCT CONNECT, STRUCT CONST, STRUCTFIELD , STRUCTFROM, STRUCTGLOBAL, STRUCTGROUP , STRUCTHAVING, STRUCTNODE, STRUCTOPER, STRUCTORDER , STRUCTORDERCOL, STRUCTSELECT, STRUCTSET , STRUCTTABLE , STRUCTTEST, STRUCTWHERE , } TYPESTRUCT; typedef enum /* --述語におけるテストのタイプ -- */ { TEST EMPTY=0, /*初期 TYPETEST ( 後はエラー) */ TEST BETWEEN, /*テストは BETWEEN */ TEST EQ , /*テストは等価:= */ TEST EXISTS , /*テストは EXISTS */ TEST GE , /*テストは以上:〉= */ TEST GT , /*テストはより大きい:〉 */ TEST IN , /*テストは IN */ TEST LE , /*テストは以下:〈= */ TEST LIKE , /*テストは LIKE */ TEST LT , /*テストは未満:〈 */ TEST NE , /*テストは非等価:!= */ TEST NOT, /*テストは NOT primary */ TEST NULL , /*テストは NULL */ TEST START /*テストは CONNECT BY 中の START WITH */ } TYPETEST; typedef enum /* --テストオプション -- */ { TESTOPT EMPTY=0 ,/*テストオプションの指定なし */ TESTOPT ALL , /*テストオプション ALL */ TESTOPT ANY , /*テストオプション ANY */ TESTOPT NOT , /*テストオプション NOT */ } TYPETESTOPT ; typedef enum /* ノード構造体でのテストリスト */ { TEST INPUT=1,/*入力テストリスト */ TEST INTERN ,/*内部テストリスト */ TEST OUTPUT /*出力テストリスト */ } TESTLIST; #ifndef LISTH #include“list.h” #endif #define YES (char) 1 #define NO (char) 0 #define EXPLAIN 0 #define NET 1 #define OCREAT 0x100 #define ORDWR 2 typedef struct sNode{ /* --ノードを保持する構造体。ノードは: 表,グループ,順序,説明又は問い合わせオペレーション-- */ TYPE STRUCT structtype ;/* = STRUCTNODE */ TYPE NODE type; /* =ノードの型: TABLE, GROUP ...*/ LIST *inputnodes ;/*入力ノードのリスト */ struct s Node *outputnode ;/*出力ノード */ LIST *inputtests ;/*入力テストのリスト */ LIST *outputtests;/*出力テストのリスト */ LIST *interntests;/*内部テストのリスト */ LIST *proj ; /*射影のリスト */ char *info ; /*ノード構造を示す:表,グループ,... */ TYPE SELECT selectmode ;/*選択モードを示す */ TYPE XPLAIN exploper ; /*ノードが説明ノードならば説明 オペレーション */ TYPE EXPL PT explopt; /*ノードが説明ノードならば説明 オプション */ LIST *foo; /* */ LIST *children ; /*グラフ中のノードの子のリスト*/ LIST *fields ; /*フィールドのリスト */ int nested; /*どの分岐が入れ子選択か*/ }Node; typedef struct sOper{ /* --算術演算(関数)構造体 -- */ TYPE STRUCT structtype ; /* = STRUCTOPER */ TYPE OPER type ; /*演算の型 */ TYPE SELECT mode ; /*関数ならばグループ化モード: ALL, DISTINCT */ char *alias; /*選択カラムの別名 */ struct s Oper *first; /*第一オペランド */ struct s Oper *second ; /*存在するならば第二オペランド*/ float select ; /*この演算の選択性 */ }Oper; typedef struct sColumn { /* -- カラム構造体 -- */ TYPE STRUCT structtype ;/* = STRUCTCOLUMN Oper *oper ; /*テストのオペランド構造体 */ LIST *funct; /*カラム中の関数のリスト、 例えば、AVG, SUM */ LIST *fields; /*カラム中のフィールのリスト*/ }Column; typedef struct sConst {/* -- 定数構造体 -- */ TYPE STRUCT structtype;/* = STRUCTCONST */ TYPE CONST type; /*定数の型、例えば、整数、 実数、列 */ char *value ; /*定数値を表す列 */ char *alias ; /*選択での定数の別名*/ }Const; typedef struct sField { /* -- フィールド構造体 --*/ TYPE STRUCT structtype;/* = STRUCTFIELD char *tablename ;/*フィールドに係わる表の名前 */ char *owner ; /*表所有者名 */ char *name; /*フィールド名(‘* ’でもよい) */ char *alias ; /*選択でのフィールドの別名 */ TYPECOL type; /*フィールドの型 */ int precision ; /*長さ:数字又は文字の数 */ /*バイト表示のカラム長ではない */ int scale ; /*10進小数点の右の数字 */ float select; /*このカラムへの選択性 */ }Field: typedef struct sFrom{ /* -- FROM 構造体 -- */ TYPE STRUC structtype;/* = STRUCTFROM */ LIST *tables; /*表ノードのリスト */ }From; typedef struct sGlobal { /* --この構造体はグラフ全体を表す -- */ TYPE STRUCT struct type;/* = STRUCT GLOBAL */ Node *term ;/*端末ノード( ここから結果が生ずる*/ LIST *paramtests ;/*パラメータ化されたテスト */ LIST *nodes; /*グラフの全ノード */ LIST *tests; /*グラフの全テスト */ }Global; typedef struct sGroup { /* -- GROUP BY 構造体 -- */ TYPE STRUCT structtype ;/* = STRUCTGROUP */ LIST *fields ; /* GROUP BY のフィールドのリスト (順序による) */ LIST *funct; /*計算すべき関数のリスト */ }Group; typedef struct sHaving { /* -- the HAVING 構造体 -- */ TYPE STRUCT structtype;/* = STRUCTHAVING */ LIST *interntests ;/* HAVING のテストのリスト */ LIST *funct; /*上記テストで使用される関数 のリスト */ LIST *nodes; /*存在するならば、入れ子 SELECTs からのノードのリスト*/ LIST *tests; /*存在するならば、入れ子 SELECTs からのテストのリスト*/ }Having; typedef struct sOrder { /* -- ORDER BY 構造体 -- */ TYPE STRUCT structtype ;/* = STRUCTORDER */ LIST *columns; /*ソート順序を表すカラムのリスト*/ }Order; typedef struct sOrderCol { /* --順序句に指定されたカラム -- */ TYPE STRUCT structtype;/* = STRUCTORDERCOL */ char *tablename; /*カラムに関連する表の名前 */ char *name ; /*カラムの名前 */ char *num; /*フィールドの数 */ TYPE ORDER mode ; /*順序モード: ASC, DESC */ }OrderCol; typedef struct sSelect { /* -- SELECT 構造体 -- */ TYPE STRUCT structtype;/* = STRUCTSELECT */ TYPE SELECT mode; /*選択モード、例えば ALL, UNIQUE */ LIST *proj; /*射影オペレーションのリス */ LIST *funct ; /*関数のリスト、例えば COUNT, AVG */ LIST *fields; /*射影のフィールドのリスト */ }Select; typedef struct sSet { /* -- the SET 構造体 -- */ TYPE STRUCT structtype ;/* = STRUCTSET */ TYPE TESTOPT allany ; /* ALL/ANY フラグ */ LIST *values ; /*値のリスト */ LIST *fields ; /*値中のフィールドのリスト*/ LIST *funct; /*値中の関数のリスト */ the values */ }Set; typedef struct sTable { /* -- 表の記述 -- */ TYPE STRUCT struct type ;/* = STRUCTTABLE */ char *table ame ; /*表又は索引の名前 */ char *owner ; /*表の所有者 */ char *alias ; /*表の別名又は索引に対する 表の名前 */ int explain ; /*説明ノードの数 */ int range ; /*問い合わせにおける表の外観 の範囲 */ LIST *fields; /*表又は索引のフィールドの リスト */ float select; /*この表に対する選択性 */ }Table ; typedef struct sTest { /* -- この構造体はテストを表す -- */ TYPE STRUCT structtype;/* = STRUCTTEST */ TYPE TEST type; /* type of test */ TYPE TESTOPT option; /*テストノオプション: ALL, ANY, ... */ int orleft; /*このテストが左側になる or 数 */ int orright ; /*このテストが右側になる or 数 */ char nested; /*入れ子テストですか: IN, EXISTS, ... */ Oper *first ; /*第一オペランド */ Oper *second; /*存在するならば第二オペランド */ Oper *third ; /* betweenに対する第三オペランド*/ LIST *nodes ; /*テスト中のフィールドに関する ノードのリスト */ LIST *fields; /*テストのフィールドのリスト */ Node *node /* */ char findnested;/*分岐が訪れられたか否かを示す */ float select; /*このテストに対する選択性 */ }Test; typedef struct aWhere { /* -- WHERE 構造体 -- */ TYPE STRUCT structtype ;/* = STRUCTWHERE */ LIST *interntests;/*内部テストのリスト */ LIST *paramtests ;/*入れ子 Selectsからのテスト のリスト */ LIST *nodes; /*入れ子 Selectsからの 全ノードのリスト */ LIST *tests /* where句中の全テストのリスト*/ LIST *funct; /*関数のリスト: AVG, SUM, ... */ }Where; typedef struct a Connect { /* -- the 連結構造体 -- */ TYPE STRUCT structtype ;/* = STRUCTCONNECT */ Test *connectby; /*条件による連結 */ Where *startwith; /*条件を伴う開始 */ }Connect: /* --- ファイル struct.h の終わり --- */ C言語に従い、ファイルの全オブジェクトが同一クラス
により特性化され、新しい型の構造に特有のキーワード
typedefによって指定される。かくて定義された
型は、以後は基本の型として使用できる。ファイルは2
つの型に関連した2つの部に分けられ、同型は、C言語
の列挙法と構造体で構成される。列挙法は、拡張子で型
を定義し、キーワードenumを使ってそれ自身を宣言
する。
【0073】構造体は、キーワードstructを使っ
てそれ自身を宣言する。整数型はキーワードintで、
文字型はcharで、浮動小数点型はfloatで宣言
する。修飾子constは、それが適用されるオブジェ
クトがプログラムの実行によって変更不能な定数オブジ
ェクトであることを明示している。注釈は、/*と/*
の間に入れる。
【0074】struct.hと名づけられたファイル
でなされる最初の列挙法は、TYPE_COLという名
を持ち、データベースの表中で、構造体s_Field
により使用できる様々な型のカラムを定義する。次の列
挙法はTYPE_CONSTと呼ばれ、構造体s_CO
NSTで使われる定数の型を定義する。列挙法TYPE
_EXPLAINは、ツールDB*EXPLAINによ
ってまとめられ、構造体s_Nodeで使われるRDB
MSのオペレーションのタイプを定義する。
【0075】列挙法TYPE_EXPL_OPTは、前
述の列挙法に列挙されたオペレーションに関連したオペ
レーションのタイプを定義する。これらのオプション
は、s_Node構造体で使用される。ソートオペレー
ションSORTの特定オペレーションは、例を挙げて前
記に定義されている。列挙法TYPE_NODEは、構
造体s_Nodeで使われるネットワークのノードの型
を定義する。列挙法TYPE_OPERは、算術式と構
造体s_Operで使用されるSQL言語のオペレーシ
ョンのタイプを定義する。他の列挙法は順次、以下のも
のに関連している:構造体s_Order_Colで使
われるORDER句のモード(TYPE_ORDE
R);問い合わせに関するオペレーション(TYPE_
QUERYOP);SELECTコマンドに関連し、そ
してs_Node、s_Oper、s_SELECT構
造体で使われるモード(TYPE_SELECT);構
造体の各々の型(TYPESTRUCT);s_Tes
t構造体中で使われる属性中のテストのタイプ(TYP
E_TEST);s_Teat、s_Set構造体で使
われるSQL言語のテストのオプション(TYPE_T
ESTOP);及びノード構造体中のテストのリスト
(TEST_LIST)。これらの列挙法は、以下の行
に示される個々の定義で補足される。
【0076】struct.hファイルの第2部には、
使われる多様な構造体が記述されている。以下の記載
は、ファイル中の構造体に関する追加の注釈である。構
造体の各々の最初のフィールドは、列挙法TYPE_S
TRUCTで定義される。
【0077】s_Node構造体は、ネットワークの要
素で補足されるべきツリーのノードの代表である。ファ
イルに記述されている構造は、ツリー26を構成するの
に充分であった前記構造の改良版である。ノードの型
は、表、グループ、順序またはEXPLAIN又はQU
ERYオペレーションである。input_nodes
と名付けられたリストは、データ流れがツリーのノード
に入る子ノードのリストである。次のフィールドは、出
力流れが出ていく出力ノードとして定義される。inp
ut_tests、output_testsと名付け
られたリストはそれぞれ、結果に影響を与えるテストで
ある入力ジョインテストと、結果に影響を与えることな
く前記出力流れの値を使うテストである出力ジョインテ
ストである。次のリストの内部テストは、前者のノード
のみに関わる。情報infoは、ノードの構造体を示
す。表ノードは、s_Tableで示し;グループノー
ドは、s_Group構造体で示し;順序ノードは、s
_Order構造体で示し;ユニオンノードはTYPE
_QUERYOPオペレーションに対応する。フィール
ドリストは、フィールド或いは射影オペレーションの全
ポインタのリストである。それは、射影後のノードから
の出力流流れの構造体を表わす。リストのポインタは、
そのリストの特定構造体を記すものではない。それら
は、s_Table構造体のフィールドリストのs_F
ield構造体(それ以上の射影がない場合)か、同構
造体の射影リストの構造体を記している。入れ子にされ
た最後のフィールドに依存するが、普通のSELECT
と入れ子にされたSELECTの間のセミジョインを表
すノードの場合には、ノードの2つの娘分岐のうちのい
ずれが入れ子SELECTを表しているかを知ることが
必要である。
【0078】s_Oper構造体は、算術演算或いは関
数呼出しを十分に記述する。
【0079】s_Column構造体は、カラムの構文
解析のために使われる。カラムは、SELECT(射影
カラム)、GROUP BY(グループ化カラム)、O
RDER BY(ソートカラム)句でコンマを分離する
ものであり、入れ子にされていないテストの左右に見い
だされる。例えば、avg(table.field)
+ table.price *1000 がひとつ
のカラムである。
【0080】カラムは、s_Oper、s_Fiel
d、s_Const、s_Set構造体のツリーのルー
トである。
【0081】s_Column構造体では、operが
ルートオペレーションである。それはフィールド又定数
を含んでもよい。functリストは、カラムに含まれ
るグループのリストである。それ自身の構造体はない。
これは、ルートがs_Columnであるツリーに含ま
れるs_Oper構造体へのポインタのリストである。
最後に、フィールドリストは、カラムに含まれるフィー
ルドのリストである。これも又、それ自身の構造体を持
たない。
【0082】s_Const、s_Field構造体
は、十分に記述されている。
【0083】構文解析により戻されるs_From構造
体において、表リストは、構文解析で得られる表ノード
のリストである。引用される表の1つ毎に1つのノード
が存在する。s_Group構造体で、functリス
トは、計算されるべきグループのリストである。このリ
ストは、それ自身の構造体は持たない。それは、以下の
構造体リスト中に存在するs_Oper構造体に対する
ポインタのリストである:s_Groupのフィールド
リスト(GROUP BY句のグループ)、s_Nod
eのprojリスト(SELECT句のグループ)、そ
して、グループ化ノードである場合のs_Nodeのテ
ストリスト(HAVING句のグループ)。
【0084】s_Having、s_Order、s_
Order_Colは、十分に記述されている。
【0085】s_Select構造体は、SELECT
句の構文解析によって戻される。射影オペレーションの
projリストで、射影における各カラムは、リストの
一要素に対応する。射影中に存在するグループのfun
ctリストは、その自身のいかなる構造体を持たない。
それらは、前述のリスト中に存在するs_Oper構造
体を指す。同様に、射影のフィールドのフィールドリス
トは、それ自身の構造体は指さない。
【0086】構造体s_Setは、ファイル中で十分に
定義されているる。それは、値のリストを記憶すること
を可能にしている。s_Table構造体では、オブジ
ェクトEXPLAINは、実行ツリーのEXPLAIN
ノードの番号を与える。
【0087】テストを表わしているs_Test構造体
では、表または索引のフィールドのフィールドリスト
は、それ自身の構造体を持たない。これらは、テストを
構成しているオペランドのツリー中に存在するものであ
る。
【0088】s_Where構造体は、WHERE句の
構文解析によって戻される。ノードリストは、入れ子S
ELECT句の構文解析によって作成される全ノードの
リストである。テストリストは、HAVING句のテス
トと、入れ子SELECT句の構文解析によって作成さ
れるテストを結合している。最後に、同構文解析に対し
ては、s_Where構造体をHAVING句の構文解
析と同時に使用できるので、functリストは、テス
ト中に存在するグループを含む。このリストは、それ自
身の構造体は指さない。
【0089】最後の構造体であるs_Connect
は、SQLのCONNECT特権の構文解析によって戻
される。
【0090】struct.hファイルの利用の第一の
例は、本明細書の初めで引用した問い合わせの一例に関
する。
【0091】SELECT Type FROM Type_Car WHERE Mark=´XXX´ この場合には、前記と同様に、s_Select構造体
が、ツリーの構成のために使われる。問い合わせの構文
解析では、型名XXXがs_Const中に見いださ
れ、これにはを値=´XXX´、型=CONST_ST
RINGが列挙法TYPE_CONSTと共に含まれ
る。MarkがXXX、YYY、ZZZから選択される
ならば、s_Set構造体は入れ子にできる。一方、問
い合わせにおいては、WHERE中の術語Markはs
_Field構造体に対応する。s_Fieldでは、
表名=TYPE_Car、名前=Markであり、型は
列挙法TYPE_COLでCOL_STRINGにより
定義されるカラムの型である。問い合わせでは、WHE
RE Mark=´XXX´はs_Testとs_Wh
ereを指す。s_Testでは、TYPE_TEST
で定義される型は、TEST_EQであり、これは、テ
ストが等価であることを意味する。一方、等価でない場
合には、例えば、NOTオプションが選ばれる。最初の
オペランドは、s_Fieldsに対応している「Ma
rk」であり、第二オペランドは、前述通りs_Con
st中に決定されている定数XXXである。テストフィ
ールドのリストは、「Mark」のみを含むが、例え
ば、「Price」も含めることができる。s_Whe
reでは、テストは、WHERE句に含まれる可能なテ
ストのリストから選択される。同様に、ノードリストで
は、「Mark」を含む表が選択される。句CONNE
CT、FROM、HAVINGに関連している構造体は
本例では使用されていない。しかし、前の例とstru
ct.hファイルがあるので、当業者が、曖昧さや問題
点なくそれらを正しく利用するのには充分である。最後
に、s_Globalを指定すれば最終的なグラフが得
られる。「Term」は、最終的なグラフの端末ノー
ド、換言すれば、問い合わせに含まれるテスト、即ち、
一例として使用された問い合わせにおけるWHERE句
のテスト、に派生するノードリスト中に見いだされる他
の全てのノードの出発点となる、グラフの頭部のボック
スを意味する。
【0092】以上に記述したデータ構造体を有するネッ
トワークの表示を、次の問い合わせを例として行う。な
お、これは図11にも再現されている。
【0093】 SELECT Type avg (Price) FROM TYPE, MARK WHERE TYPE.mark = MARK.ma
rk HAVING avg (Price) > 1000 上述の教示に従い、結果としてのネットワーク31は、
図11に示された形態を有する。データ構造体を有する
このネットワークを更にはっきりと表示するために、構
造体の多様なフィールドを様々な図12A〜12Hに示
す。常法に従い、これら図中の矢印はポインタを表す。
ポインタは、矢印の始点に位置するフィールドである。
ポインタがリストであるときは、そのリストに載ってい
る各オブジェクトは矢印によって次に接続される。矢印
の順序がリストの順序を表わしている。
【0094】図12Aは、ネットワークの全ノードと全
テストを示しているフィールドである。s_Globa
l構造体において、ノードリストは、ネットワークの3
つのノードを表わしている3つのs_Node構造体の
全てを順次指し、一方、テストリストは、ネットワーク
に含まれる2つのテスト、即ち、最初のノードへの相体
的優位性のテストと他の2つのノード間の等価性のテス
ト、を表わしている2つのs_Test構造体を順次指
す。
【0095】図12Bは、流れの方向を記すフィールド
を図示している。s_Global構造体で、結果が発
生する端末ノードを表わしている「term」ノード
は、端末ノードを表わしているs_Node構造体を指
している。
【0096】s_Nodeで、input_nodes
と名付けられる入力ノードのリストは、他の2つの構造
体s_Nodeを指している。output_node
と名付けられたこれら2つの構造体の出力ノードは端末
ノードのs_Node構造体を指し、出力ノードはs_
Globalを指している。
【0097】図12Cは、テストとノード間のリンクを
記述しているフィールドを図示している。優位性テスト
は端末ノードにのみ係わり、従って、内部テストであ
る。結果的に、端末ノードのs_Node構造体のin
tern_testsと名付けられた内部テストリスト
はs_Test構造体を指し、ノードリスト、即ち、テ
スト中にフィールドを有するノードのリストは構造体s
_Nodeを指す。等価性テストは、他の2つのノード
に係わる。結果として、これら2つのノードのs_No
de構造体のinput_testsリストは、s_T
estを指し、ノードリストは、2つのs_Node構
造体を指す。
【0098】図12Dは、ノードの型に関連する。端末
ノードはグループ化ノードであり、射影を引き起こす原
因となる。s_Nodeにおけるノードの型は、従っ
て、GROUP_BY句を表わしているNODE_GR
OUPであり、ノードの構造体を示しているinfoフ
ィールドは、グループ化構造体s_Groupを指し、
計算すべきグループの「funct」リストは、計算s
_Oper構造体を指す。一方、s_Node構造体の
射影のprojリストは、フィールド構造体s_Fie
ldを指し、これは、図12Eと関連させて詳述される
方法でs_Operを指す。他の2つのノードは表に関
連し、従って型NODE_TABLEを有し、又、ノー
ドの構造を示すそれらのinfoフィールドは、明らか
に、対応する表TYPE、MARKを指す。
【0099】図12Eは、射影に関連する。図11に示
された例が、端末ノードに関連する2つの射影が起きる
原因となる。対応するs_Node構造体において、射
影のリストprojはまず、フィールドs_Field
構造体を指し、ここで表名はtable_name=¨
TYPE¨であり、オブジェクト名はname=typ
eである。次にそれは、計算構造体s_Operを指
し、その型は、AVG(type=OPER_AVG)
であり、「first」と名付けられたその最初のオペ
ランドはs_Field構造体を指し、ここで、tab
le_name=“TYPE”であり、オブジェクト名
は、name=“price”である。
【0100】最後に、図12Fはテストに関する。示さ
れた例では、2つのタイプのテストである優位性(>)
テストと等価性(=)テストを行う。優位性テストで
は、対応するs_Testテスト構造体において、ty
pe=TEST_GTであり、オプションはなく(op
tion=TESTOPT_EMPTY)、入れ子もな
い(nested=NO)。図12Eに示されるのと同
様な方法で、最初のオペランドは、構造体s_Oper
を指し、その演算型はAVGであり、最初のオペランド
はs_Field構造体を指し、ここで、table_
name=“TYPE”であり、オブジェクト名は、n
ame=“price”であり、この構造体は対応する
テスト構造体のフィールドリストs_Testにより指
定される。第2のオペランドはs_Const構造体に
よって与えられる定数1000であり、ここで、型は整
数(型=COAST_INT)であり、値は1000
(値=1000)である。等価性テストでは、テスト構
造体s_Testを指し、ここで、型=TEST_EQ
であり、オプションはなく、入れ子もない。フィールド
リストは、表(table_name=“TYPE”で
あり、オブジェクト名は名前=“mark”である)を
表わしているs_Field構造体を指し、次いで、表
(table_name=“MARK”であり、オブジ
ェクトは“mark”である)を表わしているs_Fi
eld構造体を指す。これら2つの構造体は、行うべき
テストの第一オペランドであるfirstと、第二オペ
ランドであるsecondをそれぞれ構成する。
【0101】図11のネットワーク31により、TYP
E及びAVG(価格)への(或いは関する)射影と、制
限rest AVG(価格)>1000とがノード端末
に存在し、他の2つのノードが等価性テスト(TYP
E.mark)=MARK.markに含まれることが
わかる。問い合わせのこれら要素は、問い合わせの実行
プランに現れることができなかった。そして、有益なこ
とには、それらの全てないし一部を実行ツリー26に追
加できる。
【0102】図13は、本発明の方法の実施により得ら
れる、図2Cに示される問い合わせ10の実行に対する
完全なツリー32を示す。この完全なツリーを、図1に
示される表の実行プランの解析のみにより得られる図3
に図示されるツリー26と比較してみる。完全なツリー
32では、ボックス27に、全対応オペレーションの記
述要素が含まれている。従って、図13に示される画面
の右に現れれている最後のボックスを見れば、オプショ
ンがUNIQUE SCANであり、オブジェクトがS
YS.I_OBJ#(図3に示される)であるオペレー
ションINDEXが、問い合わせ10中のWHERE句
の2番目の条件に対応することがわかる。このボックス
は、オプションがCLUSTERであり、オブジェクト
が、問い合わせ10においてシノニム(別名)Cを与え
られているSYS.CLU#(Fig.3に示す)であ
るTABLE ACCESSオペレーションに影響を及
ぼすボックスに連結している。同様に、同一のオペレー
ションNESTED LOOPSに連結している上側の
ボックス中に、オブジェクトSYS.OBJ#がシノニ
ムOを持つことがわかる。ツリー26から連続して以下
のこともわかる。
【0103】− 第3のそして最後の直前のNESTE
D LOOPS オペレーションに関しては、(TAB
LE ACCESS)中のオブジェクトがシノニムSを
有し、問い合わせのWHERE句の下の4番目のテスト
に含まれ、又、INDEXに関係する娘ボックスが、問
合せのWHERE句の最後の2個のテストに関係してい
る; − 2番目のNESTED LOOPSオペレーション
に関しては、オブジェクトSYS.TS#がシノニムT
Sを持ち、又、INDEXオペレーションが、問い合わ
せのWHERE句で記述されている3番目のテストに関
係している; − 最後に、左下隅に現れている最初のNESTED
LOOPSオペレーションの主体に関しては、このオペ
レーションに関係する射影の全てが現在は知られてお
り、ボックス中のオブジェクトSYS.USERS#は
シノニムUを有し、又、索引は、問い合わせのWHER
E条件の最初のテストに従う。
【0104】この例は、完全なツリー32が、いかなる
問い合わせに関しても完全記述が可能であるという事実
のよい例示である。ある程度完全な記述をなすために
は、解析が特定要素に限定されることがあることを理解
されたい。RDBMSのタイプとその環境によっては、
当業者が別の形態を容易に推考できることも理解された
い。一般的に、それぞれツリーとネットワークを表す2
つのグラフを作成する過程は任意の順序で実施でき、そ
の比較は、ツリーのノードとネットワークのノードを関
連づけ、射影とテストを配置することからなる前記比較
とは別の方法でも達成できる。同様に、構文解析及び比
較の基準も大いに変更できる。しかし、記載した基準が
本発明の方法にとって最適なものであり、例示として選
択されたRDBMSにとって好ましい態様である。
【0105】
【発明の効果】本発明により、例えRDBMSの問い合
わせ言語のスペシャリストでないユーザーであっても、
RDBMSへの問い合わせの最適化を達成するのに容易
かつ迅速な補助となる問い合わせの記述要素の全てない
し一部を得ることを可能にする方法が提供される。
【0106】更に、RDBMSへの問い合わせの構文解
析の方法も提供される。この構文解析には、RDBMS
によって実行された命令の決定及び、これら命令が実行
される順序が含まれ、この順序は、問い合わせと実行す
べきプランとの関係を確立するという利点を有する。そ
れは又、グラフのノードの型と関連情報が決定される条
件を定義するという利点も有している。
【図面の簡単な説明】
【図1】一例として従来技術を取り上げ、RDBMSの
問い合わせ言語で書かれ、図2Cに示された問い合わせ
に関連した実行方式の代表的な表である。
【図2A】本発明の方法を使う本発明のツールで得られ
るログオン画面である。
【図2B】本発明の方法を使う本発明のツールで得られ
るログオン画面である。
【図2C】本発明の方法を使う本発明のツールで得られ
るログオン画面である。
【図3】問い合わせを最適化する本発明の方法を用いて
得られる、図2Cに示される問い合わせを実行するため
のツリーの一例である。
【図4A】本発明の方法を用いて得られるヒストグラム
である。
【図4B】本発明の方法を用いて得られるヒストグラム
である。
【図4C】本発明の方法を用いて得られるヒストグラム
である。
【図5A】本発明の方法で用いられる、問い合わせの構
文解析の基準である。
【図5B】本発明の方法で用いられる、問い合わせの構
文解析の基準である。
【図5C】本発明の方法で用いられる、問い合わせの構
文解析の基準である。
【図5D】本発明の方法で用いられる、問い合わせの構
文解析の基準である。
【図5E】本発明の方法で用いられる、問い合わせの構
文解析の基準である。
【図5F】本発明の方法で用いられる、問い合わせの構
文解析の基準である。
【図5G】本発明の方法で用いられる、問い合わせの構
文解析の基準である。
【図5H】本発明の方法で用いられる、問い合わせの構
文解析の基準である。
【図5I】本発明の方法で用いられる、問い合わせの構
文解析の基準である。
【図5J】本発明の方法で用いられる、問い合わせの構
文解析の基準である。
【図5K】本発明の方法で用いられる、問い合わせの構
文解析の基準である。
【図5L】本発明の方法で用いられる、問い合わせの構
文解析の基準である。
【図5M】本発明の方法で用いられる、問い合わせの構
文解析の基準である。
【図5N】本発明の方法で用いられる、問い合わせの構
文解析の基準である。
【図6】図5A〜5Nに定義された解析基準に従ってな
される問合せ構文解析から得られるグラフである。
【図7】問い合わせに対する実行ツリーと問い合わせ解
析グラフとの間に提供されるノードの関連を示す図であ
る。
【図8】ツリーをグラフと対応させるための、プロジェ
クションの配置を示す図である。
【図9A】ツリーをグラフと対応させるためのテストの
配置の第一例を示す図である。
【図9B】ツリーをグラフと対応させるためのテストの
配置の第一例を示す図である。
【図9C】ツリーをグラフと対応させるためのテストの
配置の第一例を示す図である。
【図9D】ツリーをグラフと対応させるためのテストの
配置の第一例を示す図である。
【図10A】ツリーをグラフと対応させるためのテスト
の配置の第二例を示す図である。
【図10B】ツリーをグラフと対応させるためのテスト
の配置の第二例を示す図である。
【図11】本発明の方法を用いて得られる、完全な問い
合わせに対する代表的ネットワークを示す図である。
【図12A】本発明の方法の一実施例の様々な過程を示
す図である。
【図12B】本発明の方法の一実施例の様々な過程を示
す図である。
【図12C】本発明の方法の一実施例の様々な過程を示
す図である。
【図12D】本発明の方法の一実施例の様々な過程を示
す図である。
【図12E】本発明の方法の一実施例の様々な過程を示
す図である。
【図12F】本発明の方法の一実施例の様々な過程を示
す図である。
【図13】問い合わせの実行のための、本発明による完
全なツリーを示す図である。
【符号の説明】
10 問い合わせ 11 問い合わせ実行プラン 12 ログオン画面 14 対話用窓 16、20 選択用窓 19 問い合わせメニュー 23 説明メニュー 24 編集用窓 26 問い合わせ実行メニュー 30 構文解析グラフ 31 ネットワーク 32 完全問い合わせ実行メニュー

Claims (10)

    (57)【特許請求の範囲】
  1. 【請求項1】 RDBMSへの問い合わせ(10)の実
    行プラン(11)を表すツリー(26)の作成、該ツリ
    ーの画面(25)への表示を含む、該問い合わせの最適
    化方法において、 該問い合わせの構文解析を行って構文グラフを作成し、
    該ツリーの要素と該グラフの要素とを比較し、該グラフ
    のみに含まれている要素を該ツリーに補充することを含
    むことを特徴とする方法。
  2. 【請求項2】 RDBMSの機能を解析して、特に構文
    グラフのノードの型と、好ましくはこれらの型に関連し
    た情報とを決定することを含むことを特徴とする、請求
    項1に記載の方法。
  3. 【請求項3】 構文解析に、RDBMSにより実行され
    るオペレーションと、これらオペレーションが実行され
    る順序との決定が含まれることを特徴とする、請求項2
    に記載の方法。
  4. 【請求項4】 比較に、ツリーのノードとグラフのノー
    ドとの関連付けと、ツリーのノードへの射影とテストの
    配置が含まれることを特徴とする、請求項1から3のい
    ずれか1項に記載の方法。
  5. 【請求項5】 ノードの関連付けに、RDBMSの予測
    不能オペレーションからの予測可能オペレーションの区
    別と、ツリーの予測可能ノードとグラフの予測可能ノー
    ドとの関連付けとが含まれ、予測不能ノードが関連付け
    られた予測可能ノード間のリンクを構成していることを
    特徴とする、請求項4に記載の方法。
  6. 【請求項6】 RDBMSがオラクルであり、オペレー
    ションの順序が、順次、TABLE、GROUP、HA
    VING、UNION、ORDERであることを特徴と
    する、請求項3に記載の方法。
  7. 【請求項7】 RDBMSがオラクルであり、予測可能
    オペレーションがTABLE ACCESSであり、こ
    のオペレーションが参照する表の決定を含むことを特徴
    とする、請求項5に記載の方法。
  8. 【請求項8】 請求項1から7のいずれか1項に記載の
    方法によるRDBMSへの問い合わせの構文解析の方法
    において、RDBMSの機能を解析して、特に構文グラ
    フのノードの型と、好ましくはこれらの型に関連した情
    報とを決定することを含むことを特徴とする方法。
  9. 【請求項9】 構文解析に、RDBMSにより実行され
    るオペレーションと、これらオペレーションが実行され
    る順序との決定が含まれることを特徴とする、請求項8
    に記載の方法。
  10. 【請求項10】 RDBMSがオラクルであり、オペレ
    ーションの順序が、順次、TABLE、GROUP、H
    AVING、UNION、ORDERであることを特徴
    とする、請求項9に記載の方法。
JP5254257A 1992-10-12 1993-10-12 関連デ―タベ―ス管理システムへの問い合わせの最適化方法及び結果の構文解析方法 Expired - Lifetime JP2510946B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9212149A FR2696853B1 (fr) 1992-10-12 1992-10-12 Procédé d'aide à l'optimisation d'une requête d'un système de gestion, de base de données relationnel et procédé d'analyse syntaxique en résultant.
FR9212149 1992-10-12

Publications (2)

Publication Number Publication Date
JPH06208491A JPH06208491A (ja) 1994-07-26
JP2510946B2 true JP2510946B2 (ja) 1996-06-26

Family

ID=9434422

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5254257A Expired - Lifetime JP2510946B2 (ja) 1992-10-12 1993-10-12 関連デ―タベ―ス管理システムへの問い合わせの最適化方法及び結果の構文解析方法

Country Status (5)

Country Link
US (1) US5495605A (ja)
EP (1) EP0593341B1 (ja)
JP (1) JP2510946B2 (ja)
DE (1) DE69328400T2 (ja)
FR (1) FR2696853B1 (ja)

Families Citing this family (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2696852B1 (fr) * 1992-10-12 1994-12-23 Bull Sa Procédé d'aide à l'optimisation d'une requête d'un système de gestion de base de données relationnel.
US5911138A (en) * 1993-06-04 1999-06-08 International Business Machines Corporation Database search facility having improved user interface
JP2710547B2 (ja) * 1994-02-15 1998-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション グラフィカル・ユーザ・インターフェース
US5706503A (en) * 1994-05-18 1998-01-06 Etak Inc Method of clustering multi-dimensional related data in a computer database by combining the two verticles of a graph connected by an edge having the highest score
DE19515020A1 (de) * 1994-07-01 1996-01-04 Hewlett Packard Co Verfahren und Vorrichtung zum Optimieren von Abfragen mit Gruppieren-nach-Operatoren
GB9417314D0 (en) * 1994-08-27 1994-10-19 Int Computers Ltd Method for performing joins in a database system
US5671403A (en) * 1994-12-30 1997-09-23 International Business Machines Corporation Iterative dynamic programming system for query optimization with bounded complexity
US5687362A (en) * 1995-01-30 1997-11-11 International Business Machines Corporation Enumerating projections in SQL queries containing outer and full outer joins in the presence of inner joins
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
US5546576A (en) * 1995-02-17 1996-08-13 International Business Machines Corporation Query optimizer system that detects and prevents mutating table violations of database integrity in a query before execution plan generation
US5694591A (en) * 1995-05-02 1997-12-02 Hewlett Packard Company Reducing query response time using tree balancing
US6029160A (en) * 1995-05-24 2000-02-22 International Business Machines Corporation Method and means for linking a database system with a system for filing data
US6453325B1 (en) 1995-05-24 2002-09-17 International Business Machines Corporation Method and means for backup and restoration of a database system linked to a system for filing data
US5701451A (en) 1995-06-07 1997-12-23 International Business Machines Corporation Method for fulfilling requests of a web browser
US5752246A (en) * 1995-06-07 1998-05-12 International Business Machines Corporation Service agent for fulfilling requests of a web browser
US5774692A (en) * 1995-10-05 1998-06-30 International Business Machines Corporation Outer quantifiers in object-oriented queries and views of database systems
US5995961A (en) * 1995-11-07 1999-11-30 Lucent Technologies Inc. Information manifold for query processing
US5701460A (en) * 1996-05-23 1997-12-23 Microsoft Corporation Intelligent joining system for a relational database
US5761654A (en) * 1996-06-05 1998-06-02 Oracle Corporation Memory structure and method for tuning a database statement using a join-tree data structure representation, including selectivity factors, of a master table and detail table
US5987449A (en) * 1996-08-23 1999-11-16 At&T Corporation Queries on distributed unstructured databases
US5999926A (en) * 1996-08-23 1999-12-07 At&T Corp. View maintenance for unstructured databases
US5873075A (en) * 1997-06-30 1999-02-16 International Business Machines Corporation Synchronization of SQL actions in a relational database system
US6052686A (en) * 1997-07-11 2000-04-18 At&T Corporation Database processing using schemas
US6112194A (en) * 1997-07-21 2000-08-29 International Business Machines Corporation Method, apparatus and computer program product for data mining having user feedback mechanism for monitoring performance of mining tasks
US5940822A (en) * 1997-08-29 1999-08-17 International Business Machines Corporation Encoding method of members related by multiple concept or group hierarchies and identification of members in a corpus or a database that are descendants of one or more selected concepts or groups from the encoding
US6345274B1 (en) * 1998-06-29 2002-02-05 Eastman Kodak Company Method and computer program product for subjective image content similarity-based retrieval
US6442544B1 (en) * 1998-12-08 2002-08-27 Infospace, Inc. System and method for organizing search categories for use in an on-line search query engine based on geographic descriptions
US6434545B1 (en) * 1998-12-16 2002-08-13 Microsoft Corporation Graphical query analyzer
US6618719B1 (en) * 1999-05-19 2003-09-09 Sybase, Inc. Database system with methodology for reusing cost-based optimization decisions
US6374263B1 (en) * 1999-07-19 2002-04-16 International Business Machines Corp. System for maintaining precomputed views
US6560593B1 (en) * 1999-07-20 2003-05-06 Computer Associates Think, Inc. Method and apparatus for viewing the effect of changes to an index for a database table on an optimization plan for a database query
GB2354849B (en) * 1999-09-29 2004-08-25 Ibm Method and tool for graphically defining an expression
JP3754253B2 (ja) * 1999-11-19 2006-03-08 株式会社東芝 構造化文書検索方法、構造化文書検索装置及び構造化文書検索システム
US6928432B2 (en) * 2000-04-24 2005-08-09 The Board Of Trustees Of The Leland Stanford Junior University System and method for indexing electronic text
US6470335B1 (en) 2000-06-01 2002-10-22 Sas Institute Inc. System and method for optimizing the structure and display of complex data filters
US20040150665A1 (en) * 2000-10-13 2004-08-05 General Electric Company Selection of statistical tool
US6785668B1 (en) 2000-11-28 2004-08-31 Sas Institute Inc. System and method for data flow analysis of complex data filters
DE10104831A1 (de) * 2001-02-01 2002-08-08 Sap Ag Datenstruktur für Informationssysteme
US7110936B2 (en) * 2001-02-23 2006-09-19 Complementsoft Llc System and method for generating and maintaining software code
US6904428B2 (en) 2001-04-18 2005-06-07 Illinois Institute Of Technology Intranet mediator
US8069419B2 (en) * 2001-04-18 2011-11-29 Sas Institute Inc. Graphical user interface check-list button control and method
US6725212B2 (en) * 2001-08-31 2004-04-20 International Business Machines Corporation Platform-independent method and system for graphically presenting the evaluation of a query in a database management system
JP4162184B2 (ja) 2001-11-14 2008-10-08 株式会社日立製作所 データベース管理システムの実行情報を取得する手段を有する記憶装置
US7194566B2 (en) * 2002-05-03 2007-03-20 Sonics, Inc. Communication system and method with configurable posting points
US20030208399A1 (en) * 2002-05-03 2003-11-06 Jayanta Basak Personalized product recommendation
US7356633B2 (en) * 2002-05-03 2008-04-08 Sonics, Inc. Composing on-chip interconnects with configurable interfaces
US7334195B2 (en) * 2003-10-14 2008-02-19 Microsoft Corporation System and process for presenting search results in a histogram/cluster format
US8260764B1 (en) * 2004-03-05 2012-09-04 Open Text S.A. System and method to search and generate reports from semi-structured data
US7702627B2 (en) 2004-06-22 2010-04-20 Oracle International Corporation Efficient interaction among cost-based transformations
US20050283471A1 (en) * 2004-06-22 2005-12-22 Oracle International Corporation Multi-tier query processing
US7814042B2 (en) * 2004-08-17 2010-10-12 Oracle International Corporation Selecting candidate queries
US7882100B2 (en) * 2005-01-24 2011-02-01 Sybase, Inc. Database system with methodology for generating bushy nested loop join trees
US7734619B2 (en) * 2005-05-27 2010-06-08 International Business Machines Corporation Method of presenting lineage diagrams representing query plans
US7617189B2 (en) * 2005-09-27 2009-11-10 Oracle International Corporation Parallel query processing techniques for minus and intersect operators
US7814091B2 (en) * 2005-09-27 2010-10-12 Oracle International Corporation Multi-tiered query processing techniques for minus and intersect operators
US7877379B2 (en) * 2005-09-30 2011-01-25 Oracle International Corporation Delaying evaluation of expensive expressions in a query
US20070143246A1 (en) * 2005-12-15 2007-06-21 International Business Machines Corporation Method and apparatus for analyzing the effect of different execution parameters on the performance of a database query
US20070174318A1 (en) 2006-01-26 2007-07-26 International Business Machines Corporation Methods and apparatus for constructing declarative componentized applications
US7945562B2 (en) * 2006-03-15 2011-05-17 Oracle International Corporation Join predicate push-down optimizations
US20070250295A1 (en) * 2006-03-30 2007-10-25 Subx, Inc. Multidimensional modeling system and related method
US20070260582A1 (en) * 2006-05-05 2007-11-08 Inetsoft Technology Method and System for Visual Query Construction and Representation
US8018471B2 (en) * 2006-05-15 2011-09-13 Microsoft Corporation Visual component/clause merging
WO2008005868A2 (en) * 2006-06-30 2008-01-10 Aperio Technologies, Inc. Method for storing and retrieving large images via dicom
US8041730B1 (en) * 2006-10-24 2011-10-18 Google Inc. Using geographic data to identify correlated geographic synonyms
US7860899B2 (en) * 2007-03-26 2010-12-28 Oracle International Corporation Automatically determining a database representation for an abstract datatype
US8209322B2 (en) * 2007-08-21 2012-06-26 Oracle International Corporation Table elimination technique for group-by query optimization
US8438152B2 (en) * 2007-10-29 2013-05-07 Oracle International Corporation Techniques for bushy tree execution plans for snowstorm schema
US8489633B2 (en) * 2009-03-06 2013-07-16 Hewlett-Packard Development Company, L.P. Correlated query process (CQP) and peer-to-peer (P2P) execution
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
AU2013295864B2 (en) * 2012-07-24 2017-09-14 Ab Initio Technology Llc Mapping entities in data models
US9639587B2 (en) * 2012-12-13 2017-05-02 Sap Se Social network analyzer
US9870390B2 (en) 2014-02-18 2018-01-16 Oracle International Corporation Selecting from OR-expansion states of a query
US10417281B2 (en) 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network
US10585887B2 (en) 2015-03-30 2020-03-10 Oracle International Corporation Multi-system query execution plan
US10796102B2 (en) * 2017-05-10 2020-10-06 Oracle International Corporation Enabling rhetorical analysis via the use of communicative discourse trees
US11386274B2 (en) * 2017-05-10 2022-07-12 Oracle International Corporation Using communicative discourse trees to detect distributed incompetence
US11586827B2 (en) * 2017-05-10 2023-02-21 Oracle International Corporation Generating desired discourse structure from an arbitrary text
US10817670B2 (en) * 2017-05-10 2020-10-27 Oracle International Corporation Enabling chatbots by validating argumentation
US10839154B2 (en) * 2017-05-10 2020-11-17 Oracle International Corporation Enabling chatbots by detecting and supporting affective argumentation
US11960844B2 (en) * 2017-05-10 2024-04-16 Oracle International Corporation Discourse parsing using semantic and syntactic relations
US11615145B2 (en) 2017-05-10 2023-03-28 Oracle International Corporation Converting a document into a chatbot-accessible form via the use of communicative discourse trees
US10599885B2 (en) 2017-05-10 2020-03-24 Oracle International Corporation Utilizing discourse structure of noisy user-generated content for chatbot learning
US12001804B2 (en) * 2017-05-10 2024-06-04 Oracle International Corporation Using communicative discourse trees to detect distributed incompetence
US11373632B2 (en) * 2017-05-10 2022-06-28 Oracle International Corporation Using communicative discourse trees to create a virtual persuasive dialogue
US10679011B2 (en) * 2017-05-10 2020-06-09 Oracle International Corporation Enabling chatbots by detecting and supporting argumentation
US11100144B2 (en) 2017-06-15 2021-08-24 Oracle International Corporation Data loss prevention system for cloud security based on document discourse analysis
US10839161B2 (en) 2017-06-15 2020-11-17 Oracle International Corporation Tree kernel learning for text classification into classes of intent
US11182412B2 (en) 2017-09-27 2021-11-23 Oracle International Corporation Search indexing using discourse trees
US10853574B2 (en) 2017-09-28 2020-12-01 Oracle International Corporation Navigating electronic documents using domain discourse trees
WO2019067878A1 (en) 2017-09-28 2019-04-04 Oracle International Corporation ACTIVATION OF AUTONOMOUS AGENTS TO DISTINGUISH QUESTIONS AND DEMANDS
US11537645B2 (en) * 2018-01-30 2022-12-27 Oracle International Corporation Building dialogue structure by using communicative discourse trees
CN111670435A (zh) 2018-01-30 2020-09-15 甲骨文国际公司 使用交流话语树来检测对解释的请求
WO2019217722A1 (en) 2018-05-09 2019-11-14 Oracle International Corporation Constructing imaginary discourse trees to improve answering convergent questions
US11455494B2 (en) 2018-05-30 2022-09-27 Oracle International Corporation Automated building of expanded datasets for training of autonomous agents
US11645459B2 (en) 2018-07-02 2023-05-09 Oracle International Corporation Social autonomous agent implementation using lattice queries and relevancy detection
US11562135B2 (en) 2018-10-16 2023-01-24 Oracle International Corporation Constructing conclusive answers for autonomous agents
US11321536B2 (en) 2019-02-13 2022-05-03 Oracle International Corporation Chatbot conducting a virtual social dialogue
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
US11449682B2 (en) 2019-08-29 2022-09-20 Oracle International Corporation Adjusting chatbot conversation to user personality and mood
US11775772B2 (en) 2019-12-05 2023-10-03 Oracle International Corporation Chatbot providing a defeating reply
WO2022259400A1 (ja) * 2021-06-09 2022-12-15 日本電気株式会社 情報処理装置、方法及び記録媒体
WO2023212524A1 (en) * 2022-04-25 2023-11-02 Gyan, Inc. (A Delaware Corporation) An explainable natural language understanding platform

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4829427A (en) * 1984-05-25 1989-05-09 Data General Corporation Database query code generation and optimization based on the cost of alternate access methods
US4769772A (en) * 1985-02-28 1988-09-06 Honeywell Bull, Inc. Automated query optimization method using both global and parallel local optimizations for materialization access planning for distributed databases
US5113354B1 (en) * 1986-02-07 1993-11-09 System for optimizing data transmissions associated with addressable buffer devices
US4887218A (en) * 1987-12-01 1989-12-12 International Business Machines Corporation Automated production release system
JP2760794B2 (ja) * 1988-01-29 1998-06-04 株式会社日立製作所 データベース処理方法および装置
US5335345A (en) * 1990-04-11 1994-08-02 Bell Communications Research, Inc. Dynamic query optimization using partial information
US5195178A (en) * 1990-04-27 1993-03-16 Bachman Information Systems, Inc. Adaptive window system for dynamically modeling information systems
US5317742A (en) * 1991-06-21 1994-05-31 Racal-Datacom, Inc. Dynamic translation of network management primitives to queries to a database
US5345585A (en) * 1991-12-02 1994-09-06 International Business Machines Corporation Method for optimizing processing of join queries by determining optimal processing order and assigning optimal join methods to each of the join operations
US5307445A (en) * 1991-12-02 1994-04-26 International Business Machines Corporation Query optimization by type lattices in object-oriented logic programs and deductive databases
US5331554A (en) * 1992-12-10 1994-07-19 Ricoh Corporation Method and apparatus for semantic pattern matching for text retrieval

Also Published As

Publication number Publication date
FR2696853B1 (fr) 1994-12-23
FR2696853A1 (fr) 1994-04-15
EP0593341B1 (fr) 2000-04-19
US5495605A (en) 1996-02-27
DE69328400D1 (de) 2000-05-25
DE69328400T2 (de) 2000-09-07
JPH06208491A (ja) 1994-07-26
EP0593341A1 (fr) 1994-04-20

Similar Documents

Publication Publication Date Title
JP2510946B2 (ja) 関連デ―タベ―ス管理システムへの問い合わせの最適化方法及び結果の構文解析方法
US20210209157A1 (en) System and method for non-programmers to dynamically manage multiple sets of xml document data
US6934712B2 (en) Tagging XML query results over relational DBMSs
Simitsis et al. State-space optimization of ETL workflows
US5734887A (en) Method and apparatus for logical data access to a physical relational database
US5455945A (en) System and method for dynamically displaying entering, and updating data from a database
US8335800B2 (en) Querying markup language data sources using a relational query processor
US6604100B1 (en) Method for converting relational data into a structured document
US7080088B1 (en) Automatic reconciliation of bindable objects
US7343585B1 (en) Operator approach for generic dataflow designs
US5630120A (en) Method to help in optimizing a query from a relational data base management system
EP1684192A1 (en) Integration platform for heterogeneous information sources
US5761654A (en) Memory structure and method for tuning a database statement using a join-tree data structure representation, including selectivity factors, of a master table and detail table
Özsoyoğlu et al. Query processing techniques in the summary-table-by-example database query language
US20040181543A1 (en) Method of using recommendations to visually create new views of data across heterogeneous sources
US20070130180A1 (en) Methods and transformations for transforming metadata model
US20060235835A1 (en) Model entity operations in query results
US8458200B2 (en) Processing query conditions having filtered fields within a data abstraction environment
EP0575358A1 (en) GRAPHIC QUERY FRONTAL FOR A DATABASE MANAGEMENT SYSTEM.
JPH058454B2 (ja)
Griffin et al. A framework for implementing hypothetical queries
Moro et al. TVQL-temporal versioned query language
Chatziantoniou et al. Just-In-Time Modeling with DataMingler.
Koupil et al. A universal approach for simplified redundancy-aware cross-model querying
Tompa A practical example of the specification of abstract data types

Legal Events

Date Code Title Description
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

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

Free format text: PAYMENT UNTIL: 20090416

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20090416

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20100416

Year of fee payment: 14

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

Free format text: PAYMENT UNTIL: 20110416

Year of fee payment: 15

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

Free format text: PAYMENT UNTIL: 20120416

Year of fee payment: 16

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

Free format text: PAYMENT UNTIL: 20130416

Year of fee payment: 17

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

Free format text: PAYMENT UNTIL: 20140416

Year of fee payment: 18

EXPY Cancellation because of completion of term