JP2005521953A - リレーショナルデータベースをクエリーする方法および装置 - Google Patents
リレーショナルデータベースをクエリーする方法および装置 Download PDFInfo
- Publication number
- JP2005521953A JP2005521953A JP2003581065A JP2003581065A JP2005521953A JP 2005521953 A JP2005521953 A JP 2005521953A JP 2003581065 A JP2003581065 A JP 2003581065A JP 2003581065 A JP2003581065 A JP 2003581065A JP 2005521953 A JP2005521953 A JP 2005521953A
- Authority
- JP
- Japan
- Prior art keywords
- query
- hub
- database
- tables
- identifier
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16H—HEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
- G16H70/00—ICT specially adapted for the handling or processing of medical references
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Public Health (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Primary Health Care (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Epidemiology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本発明は、クエリーがリレーショナルデータベースの少なくとも1つのテーブルに関係する、リレーショナルデータベース管理システム(RDBMS)を備えるリレーショナルデータベースに関係するクエリーを評価する方法を提供し、この方法は、前記クエリーを評価するためのゲートウェイテーブルとしてテーブルを決定することと、クエリーされるべきテーブル内の1つまたは複数のエントリに関係している前記ゲートウェイテーブルの1つまたは複数の一意識別子を検索することと、前記ゲートウェイテーブルの前記検索された一意識別子に関係しているクエリーされるべきテーブルから情報を検索することと、前記検索された情報に関係して前記ゲートウェイテーブルの検索されたプライマリキーを含む結果セットを提供することとを含む。本発明は、さらに、関係するデータ処理システムおよびプログラムを提供する。
Description
本発明は、リレーショナルデータベースに関するクエリーを評価する方法と、これに関係した装置およびプログラムとに関する。
バイオインフォマティックス(bioinfomatics)における主要な目標は、生物学的情報が迅速に、効果的に、かつ、完全に検索されることを可能にする探索ツールを提供することである。現在は、生物学的データを記憶する巨大なデータベースが存在する。しかし、これとは別に、幾つかのより小さいデータベースと、例えば、科学刊行物における発表のような、データベースのようには構造化されておらずに単層ファイルとしてある電子データとが存在する。したがって、バイオインフォマティックスにおける探索ツールは、様々なソースからのデータを組み合わせなければならないことが多い。ユーザがほぼ即時的に画面上で結果を得ることを望むので、この点で時間が極めて重要である。
SRSクエリー言語およびパッケージが、こうした探索ツールの構築における強力なツールであることが証明されている。SRSは、様々なソースからの情報を組み合わせることを可能にする。SRSの原理がWO 00/41094に開示されている。基本的には、SRSは2段階のプロセスとして働く。第1の段階ではデータソース中のエントリが識別され、第2の段階ではパーサ(parser)によって抽出される。この着想は単層ファイルに関しては十分に有効であるが、リレーショナルデータベースに対する適用は、大きなデータベースにおいては、例えばテーブルのキーのような識別子に関係する情報の抽出に比較的長い時間を要することがあるので、問題を生じさせる。これは、一般的に、要求されている情報が、互いに直接的にリンクしていない可能性がある複数の異なるテーブルから収集されなければならないということを原因とする。現行のリレーショナルデータベース管理システムは、クエリーに関係しているすべてのテーブルに関して結合テーブル(joined table)を形成するように動作する。結合テーブルのサイズが基本的に個別のテーブルのロー(row)のサイズの積なので、このことは直ちに大きな結果セット(result set)を生じさせ、および、したがって、これらの結果セットを評価するための長時間の処理時間をもたらす。
本発明の目的は、クエリーがより容易に取り扱われることが可能であると共に理解がより容易であり、および、単層ファイルのような他のデータソースから情報を抽出するプロセスに適合している方法を提供するようにクエリーがより迅速かつ特別に処理されることが可能である、リレーショナルデータベースにおいてクエリーを行うための方法と装置とプログラムとを提供することである。
本発明では、この目的は、少なくとも1つのリレーショナルデータベース管理システム(RDBMS)を備えるリレーショナルデータベースに関係するクエリーを評価する方法によって実現され、前記クエリーは、前記リレーショナルデータベースの少なくとも1つのテーブルに関係し、前記方法は、前記クエリーを評価するためのゲートウェイテーブルとして前記リレーショナルデータベースのテーブルを決定することと、クエリーされるべきテーブル内の1つまたは複数のエントリに関係している前記ゲートウェイテーブルの1つまたは複数の一意識別子(unique identifiers)を前記RDBMSによって検索することと、前記RDBMSを使用することと、前記ゲートウェイテーブルの前記検索された一意識別子に関係しているクエリーされるべき1つまたは複数のテーブルから情報を検索することと、結果を前記クエリーに提供することとを含む。この結果は、前記検索された情報に対する関係においてゲートウェイテーブルの検索されたプライマリキーを含む、結果テーブルの従来の意味での結果セット、すなわち、こうした従来の結果テーブルから得られることが可能なクエリーの結果を含むオブジェクトとすることができる。
本発明では、クエリーの評価に対して開始点を形成する「ゲートウェイテーブル」が選択される。ある意味では、ゲートウェイテーブルは、クエリーの評価に対するエントリポイントすなわち「ゲートウェイ」としての役割を果たす。本発明では、前記クエリーの実行依頼の前に、または、前記クエリーの評価の最中に、ある1つのテーブルがゲートウェイテーブルとして指定され、このことは、当然のことながら、このテーブルがクエリーにおいて参照されるテーブルに関係しているならば、1つまたは複数の一意識別子を検索する段階がこのテーブルに関して行われるということを意味する。テーブルをゲートウェイテーブルとして指定することは、例えば、システムまたはデータベースの設定の一部として、または、クエリーの実行依頼前のユーザ設定によって、前もって行われてもよい。しかし、本発明は、さらに、クエリーの評価プロセスの最中に、適切な判定基準にしたがってテーブルがゲートウェイテーブルとして決定されるということと、上述の段階がこのテーブルに関してはその後で行われるということを可能にする。この好ましい実施形態では、上述の一意識別子はゲートウェイテーブルのプライマリキーすなわち一意的なインデックスである。しかし、本発明は、さらに、前記一意識別子が、異なるカラムのインデックスの組合せであり、および、特定の例では、リレーショナルデータベース管理システムにおける(定義による)一意識別子であるテーブルのローのインデックスのすべての組合せであるということを可能にすることができる。
本発明は、前記ゲートウェイテーブルの前記1つまたは複数の一意識別子を検索する時に、第1の段階で、1つまたは複数の予め決められたインデックスが検索されるということを可能にすることができる。この1つまたは複数のインデックスが一意的な仕方でテーブルのロー(row)を指定しないということが判明する場合には、一意識別子が適切な手順によってこうしたインデックスから生成される。1つの手順が、前記インデックスの組合せが、クエリーされるべきテーブル内のエントリに関係しているローに関する一意識別子であるまで、前記初期段階で検索されたインデックスに対してインデックスを追加することであってもよい。場合によっては、これは、ローの全インデックスがその組合せに含まれるまで継続されてもよい。このようにして一意識別子が生成された後に、関係しているローがクエリーされるべきテーブル内の前記エントリに依然として関係するということが確認される。そうでない場合は、それぞれの識別子が廃棄される。この代わりに、例えば、前記初期段階で検索されたインデックスが実際にはゲートウェイテーブルの複数のローを指定する場合には、第1のローを続行するだけであり、それによって情報の潜在的な損失を許容するということが可能にされるだろう。
本発明は、前記リレーショナルデータベースが1つまたは複数の予め決められたハブテーブル(hub table)を含み、および、前記クエリーが前記リレーショナルデータベースの少なくとも1つのテーブルに関係し、前記方法は、クエリーされるべきテーブル内の1つまたは複数のエントリに関係しているハブテーブルの1つまたは複数の一意識別子を前記RDBMSによって検索することと、前記RDBMSを使用することと、前記ハブテーブルの前記検索された一意識別子に関係しているクエリーされるべきテーブルから情報を検索することと、例えば、前記検索された情報に関係して前記ハブの検索されたプライマリキーを含む結果セット(オブジェクトまたは結果テーブル)として、クエリーに対して結果を提供することとを含むということを可能にすることができる。
本発明は、1つまたは複数のライブラリが1つまたは複数のデータベース上で定義されるということを可能にすることができる。本明細書で使用されている通りの意味では、ライブラリは、互いにリンクし合っておりかつ必ずしも同一のデータベース内にある必要はないテーブルの集まりとして定義され、ハブテーブルとして定義されている1つのテーブルが確かに存在する。ライブラリ内の全テーブルはハブに直接的または間接的にリンクしている。したがって、ライブラリ内のあらゆるエントリがハブ内のエントリとそのハブに対する(直接的または間接的な)関係とを経由してアクセスされることが可能である。したがって、ハブテーブルはライブラリを表現するものと見なされることが可能である。すなわち、本発明の意味でのライブラリは、クエリーの評価のための1つの一意的なエントリポイントすなわちゲートウェイ、すなわち、前記単一のハブを常に有する。ライブラリが排他的に1つのデータベース上で定義される場合には、そのライブラリは限定されたデータベースと見なされてもよい。一方、第2のデータベースのテーブルがライブラリ内に含まれている場合には、このライブラリは、ある点で、データベースの拡張である。異なるライブラリが同一のテーブルを共有することもあり得る。本発明によるライブラリの着想を使用することによって、データベースの基礎的構造に影響を与えることなしにアプリケーション上の必要またはユーザの希望に適合させられることが可能な基礎的データベースよりも高いレベルで着想を定義することが可能である。
ライブラリの着想を使用することによって、ライブラリが複数のデータベース全体に及ぶ場合には、複数のデータベースにおけるクエリーが、各データベース内にハブを有することなしに行われることが可能だということが明らかである。この場合には、1つのデータベース内には1つのハブだけしか存在せず、すなわち、(定義によって前記データベースの1つの中に含まれている)ライブラリのハブだけしか存在しない。
したがって、データベースのハブまたはゲートウェイテーブルに対する参照が行われる時はいつも、このハブまたはゲートウェイテーブルが、前記データベース上または前記データベースを含む複数のデータベース上で定義されているライブラリのハブまたはゲートウェイテーブルであってよいということが理解されなければならない。ライブラリが基本的に基礎データベース上に重ねられているデータベース構造であるので、データベースにおけるクエリーまたはデータベースにおけるクエリーの評価に対して参照が行われる時にはいつも、反対に対する表示が与えられない限り、これが、必要に応じて変更を加えて、ライブラリにおけるクエリーに読み出す。
ハブテーブル(以下では「ハブ」とも呼ばれる)は、基本的に、前記データベースまたはライブラリにおけるクエリーを評価するための予め決められたゲートウェイテーブルである。規則として、クエリーは、探索可能なエンティティ内の関係エントリの完全セット、すなわち、テーブル内の一意的に識別されるエントリに関係しているあらゆるテーブル内の全情報、または、こうしたセットの一部分に関するものである。探索可能なエンティティがリレーショナルデータベースである場合には、前記関係エントリの完全セットは、前記データベース内の前記エントリに直接的または間接的にリンクしている全エントリを含む。(上述の意味で理解されるべき)ライブラリのようなデータベース上またはデータベース全体にわたってより高レベルのエンティティを定義することによって、関係エントリの完全セットは、前記ライブラリに含まれているテーブル内の一意的に識別されるエントリに直接的または間接的に関係している前記ライブラリ内の全エントリのセットである。多くの例では、テーブル内の特定のエントリに関係している全情報を提供することは望まれてもおらず必要とされてもいない。このような例では、クエリーがテーブルの特定のカラムまたは特定のテーブルに制限されるだろう。SQL言語では、こうした選択は標準シンタックス(syntax)を使用して行われることが可能である。好ましい実施形態では、テーブルおよび/またはテーブルカラムの選択は、特定のクエリーをタイプ入力する前にユーザインタフェースの設定の一部として、ユーザまたは管理者によって予め決定されるであろう。ライブラリが単一のデータベース上で排他的に定義される場合には、ライブラリ内の関係エントリの完全セットがデータベース全体の関係エントリの完全セットの一部分であるであろう。このことは、データベース上のライブラリを定義することによって、クエリーされるべきテーブルおよびテーブルカラムとに関する限定が、このライブラリを参照するクエリーが実行依頼される時にデータベースの他のテーブルがクエリーされないように、すでに行われているということを意味する。しかし、ライブラリが2つ以上の異なるデータベースのテーブルを含むことがあるので、ライブラリ内の関係エントリの完全セットがデータベースの関連エントリの完全セットの中に完全には含まれていない可能性があるということが留意されなければならない。
大半の例では、ユーザによってタイプ入力されるクエリーは、そのクエリーの結果に含まれるべきデータを指定するクエリー条件から成るであろう。この説明のために、クエリー条件は、特定の要素が特定の指定されたデータフィールド内に存在しなければならないというクエリーの条件と見なされるであろう。リレーショナルデータベースに関しては、これは、特定のテーブル内の特定のエントリが指定された値を有するということを意味するであろう。単層ファイルの場合には、これは、例えば文字シーケンスのような特定のデータシーケンスが特定のデータフィールド内で発見されるということを意味するであろう。これはユーザが考えることであるが、クエリー条件は、このシステムによって処理されるクエリー全体を形成しない。結果を戻すために、このシステムは、例えば他のテーブル内の関連情報のような、前記クエリー条件に関係している情報が戻される追加の情報を必要とする。この追加の情報は、ユーザによって部分的または全体的に決定されることが可能な設定の中に含まれている。このシステムは、これらのクエリー条件とクエリーされるべきテーブルおよびカラムに関する予め決められた設定とに基づいて、RDBMSに実行依頼されるべき1つまたは複数のクエリーコマンドを生成するであろう。クエリー条件は、一般的に、選択されるべきカラムのローに対して条件を課す。こうした例では、本発明による方法は、クエリー条件に表現されている条件を満たすエントリを最初に捜索し、その次に、1つまたは複数のハブインデックスを戻すか、または、この好ましい実施形態では、ハブテーブルの一意識別子を戻すであろう。
本発明は、さらに、カラム内の全エントリがクエリーにおいて検索され、この場合にクエリーが特定のカラムに関係しているハブテーブルの一意識別子すべてを検索するということを可能にすることができる。
本発明は、前記クエリーが、1つまたは複数のデータベースまたはライブラリの関係エントリの完全セット、または、前記リレーショナルデータベースのこうした完全セットの予め決められた一部分に関するものであり、および、前記データベースまたはライブラリに関係している1つまたは複数のクエリー条件を含み、前記方法は、
− クエリー条件において指定されたエントリに関係しているゲートウェイテーブルを識別することと、
− クエリー条件に適合する前記エントリに関係している前記ゲートウェイテーブルの1つまたは複数の一意識別子を識別することと、
− 前記ゲートウェイテーブルの前記一意識別子に関係している関係エントリの完全セットまたはその完全セットの一部分を検索すること
とを含むということを可能にすることができる。
− クエリー条件において指定されたエントリに関係しているゲートウェイテーブルを識別することと、
− クエリー条件に適合する前記エントリに関係している前記ゲートウェイテーブルの1つまたは複数の一意識別子を識別することと、
− 前記ゲートウェイテーブルの前記一意識別子に関係している関係エントリの完全セットまたはその完全セットの一部分を検索すること
とを含むということを可能にすることができる。
多くの例では、クエリーは異なるエンティティに関係し、例えば、2つのデータベースまたは2つのライブラリ、データベースまたはライブラリ、および、単層ファイル、または複数のデータベース、ライブラリおよび/または単層ファイルに関係する。同様に、クエリーが、同一のデータベースの異なるハブに関係している1つのデータベース内のテーブルに関係するということも可能である。こうした例のすべてでは、本発明は、その好ましい実施形態では、ハブに関係しているクエリーの部分、または、ライブラリまたはリレーショナルデータベース以外のエンティティの場合には、第2のエンティティの1つまたは複数のサブエンティティに関係しているクエリーの部分が別個に処理され、および、部分探索の結果が、例えばハブのプライマリキーのようなハブの一意識別子と他のエンティティの識別子との間の関係、および、場合によっては、複数のこうした識別子の間の関係を使用することによって組み合わされるということを可能にすることができる。単純な例では、ハブのどの一意識別子が別のハブのどの他の一意識別子またはどの識別子に関係するのかが決定され、および、関係する2つの部分クエリーの結果が組み合わされる。
本発明は、前記クエリーが、前記データベースの外側または前記クエリーに関係しているライブラリの外側の第2の探索可能なエンティティに少なくとも関係し、前記第2のエンティティは、そのサブエンティティを一意的に識別する少なくとも1つの識別子を各々が有するサブエンティティを含み、前記方法は、
− 前記クエリー、特に前記クエリーのクエリー条件に関係している、前記第2の探索可能なエンティティのサブエンティティの1つまたは複数の識別子を検索することと、
− 前記サブエンティティの前記検索された識別子に関係している前記リレーショナルデータベースまたはライブラリのハブの、例えばプライマリキーのような1つまたは複数の一意識別子を検索することと、
− 前記ハブの前記検索された一意識別子に関係している、関係エントリのセット、特に関係エントリの完全セットを検索することと、
− 前記第2のエンティティ内の検索された識別子によって識別されたサブエンティティから情報を検索することと、
− 前記第2の探索可能なエンティティと前記データベースまたはライブラリからの検索された情報を結果セットの形に組み合わせること
とを含むということを可能にすることができる。
− 前記クエリー、特に前記クエリーのクエリー条件に関係している、前記第2の探索可能なエンティティのサブエンティティの1つまたは複数の識別子を検索することと、
− 前記サブエンティティの前記検索された識別子に関係している前記リレーショナルデータベースまたはライブラリのハブの、例えばプライマリキーのような1つまたは複数の一意識別子を検索することと、
− 前記ハブの前記検索された一意識別子に関係している、関係エントリのセット、特に関係エントリの完全セットを検索することと、
− 前記第2のエンティティ内の検索された識別子によって識別されたサブエンティティから情報を検索することと、
− 前記第2の探索可能なエンティティと前記データベースまたはライブラリからの検索された情報を結果セットの形に組み合わせること
とを含むということを可能にすることができる。
これに加えて、または、代案として、本発明は、前記クエリーが、前記データベースの外側の、または、前記クエリーに関係しているライブラリの外側の、サブエンティティを含む少なくとも第2の探索可能なエンティティを含み、各サブエンティティは前記サブエンティティを一意的に指定する少なくとも1つの識別子を有し、前記方法は、
− 前記クエリー、特に前記クエリーのクエリー条件に関係している、エントリに関係している前記データベースまたはライブラリのハブの1つまたは複数の一意識別子を検索することと、
− 前記ハブの前記検索された一意識別子に関係している前記第2の探索可能なエンティティのサブエンティティの識別子を検索することと、
− 前記ハブの前記検索された一意識別子に関係している関係エントリのセットまたはこのセットの一部分を検索することと、
− 前記第2の探索可能なエンティティ内の検索された識別子によって識別された前記サブエンティティから情報を検索することと、
− 前記第2のエンティティと前記データベースまたはライブラリとから検索された情報を結果の形に組み合わせること
とを含むということを可能にすることができる。
− 前記クエリー、特に前記クエリーのクエリー条件に関係している、エントリに関係している前記データベースまたはライブラリのハブの1つまたは複数の一意識別子を検索することと、
− 前記ハブの前記検索された一意識別子に関係している前記第2の探索可能なエンティティのサブエンティティの識別子を検索することと、
− 前記ハブの前記検索された一意識別子に関係している関係エントリのセットまたはこのセットの一部分を検索することと、
− 前記第2の探索可能なエンティティ内の検索された識別子によって識別された前記サブエンティティから情報を検索することと、
− 前記第2のエンティティと前記データベースまたはライブラリとから検索された情報を結果の形に組み合わせること
とを含むということを可能にすることができる。
この用途の意味における探索可能なエンティティは、データベース、ライブラリであってよく、および、その識別子が、ハブテーブルのプライマリキーまたは他の一意識別子であってよい。
本発明は、前記第2の探索可能なエンティティが第2のリレーショナルデータベースまたはライブラリであり、および、前記識別子は、前記第2のリレーショナルデータベースまたは第2のライブラリ内のハブテーブルのプライマリキーまたは別の一意識別子であり、前記サブエンティティがテーブル、リンクされたテーブルの組合せ、または、その一部分であるということを可能にすることができる。
本発明は、前記第2の探索可能なエンティティが単層ファイルの集まりであり、および、サブエンティティがこの集まりの中の単層ファイルであるということを可能にすることができる。
第2のエンティティの検索された識別子および/またはハブの検索された一意識別子に関係している情報を検索する段階は、第2のエンティティの識別子と1つまたは複数のハブの1つまたは複数の一意識別子との間の関係を検索する段階の前または後に行われてよい。しかし、本発明の好ましい実施形態では、クエリー条件に関係している1つのエンティティの識別子を最初に評価することによって進行し、その次に、その他のエンティティの関係した識別子を検索し、前記他の探索可能なエンティティ中の関連情報を検索するための開始点としてその他のエンティティのこれらの識別子を使用する。クエリー条件がデータベースまたはライブラリと第2の探索可能なエンティティとの両方に関係する場合には、最初に、第2のエンティティの識別子とクエリー条件に関係している1つまたは複数のハブの一意識別子とを検索することと、その次に、前記第2のエンティティの識別子と、すべてのクエリー条件(すなわち、データベースまたはライブラリに関係している条件と、第2の探索可能なエンティティに関係している条件の両方)に関係している前記ハブの識別子との組合せを設定することと、さらにその次に、クエリー条件のすべてに一致しているその組合せに関してだけ追加の情報を検索することとによって優先的に進行する。
本発明は、前記第2の探索可能エンティティの識別子と前記データベースまたはライブラリのハブの一意識別子との間の関係を検索する前記段階が、クエリー条件と合致しないハブの一意識別子と前記第2の探索可能エンティティの識別子との組合せを排除し、および、選択パラメータに合致する識別子の組合せに含まれている識別子に関係しているこうした追加の情報だけを検索する段階を含むということを可能にすることができる。
本発明は、クエリーが少なくとも2つのハブテーブルに関係しているテーブルに関係し、前記方法は、
− それぞれのハブに関係しているテーブルにおけるクエリー条件を満たすエントリに関係している1つまたは複数のハブテーブルの1つまたは複数の一意識別子を検索することと、
− 前記クエリー条件を満たすエントリに関係している前記検索された一意識別子に関係している1つまたは複数の他のハブそれぞれの一意識別子を検索することと、
− クエリーにしたがって前記ハブの前記検索された前記一意識別子に関係している関係エントリのセットまたはそのセットの予め決められた部分を検索することと、
− 前記ハブに関係している検索された情報を結果の形に組み合わせること
とを含むということを可能にすることができる。
− それぞれのハブに関係しているテーブルにおけるクエリー条件を満たすエントリに関係している1つまたは複数のハブテーブルの1つまたは複数の一意識別子を検索することと、
− 前記クエリー条件を満たすエントリに関係している前記検索された一意識別子に関係している1つまたは複数の他のハブそれぞれの一意識別子を検索することと、
− クエリーにしたがって前記ハブの前記検索された前記一意識別子に関係している関係エントリのセットまたはそのセットの予め決められた部分を検索することと、
− 前記ハブに関係している検索された情報を結果の形に組み合わせること
とを含むということを可能にすることができる。
1つまたは複数の他のハブそれぞれの一意識別子を検索することは、クエリー条件に関係している一意識別子を検索するという第1の段階ですでに発見されている一意識別子に関係してもよい。この場合には、一意識別子の組合せがクエリー条件に合致するかどうか、一貫性検査が行われる。
本発明は、前記ハブテーブルの一意識別子の間の関係を検索する前記段階が、クエリー条件に合致していないハブテーブルの一意識別子の組合せを排除し、および、探索パラメータに一致している一意識別子の組合せに含まれている少なくとも1つのハブの少なくとも1つの一意識別子に関係しているそうした追加の情報だけを検索する段階を含むということを可能にすることができる。
上述の2つのハブの少なくとも一方がライブラリのハブであってもよく、または、この2つのハブの両方がライブラリのハブであってもよい。さらに、前記2つのハブが同一のリレーショナルデータベース内のハブであるということが可能にされてもよい。これらは、このデータベース上で定義されている2つのライブラリのハブであることが可能であるが、必ずしもそうである必要はない。これらのハブの一方または両方がライブラリに関係していないハブであってもよい。
本発明は、さらに、関係エントリの前記セットまたはその一部分に関する各ハブに関する部分クエリーを行った後に、それぞれの結果が結合され、その後にクエリー条件との一致と場合によっては冗長性とに関して検査されるということを可能にすることができる。本発明は、さらに、オブジェクトが各々の部分結果に関して生成され、および、これらのオブジェクトが、クエリーの結果を得るためにさらに処理されるということを可能にすることができる。
本発明は、探索可能エンティティの別の識別子に関係している探索可能エンティティの識別子を検索する段階が、前記エンティティの識別子の間の事前設定された関係に基づいて行われるということを可能にすることができる。
本発明は、さらに、探索可能エンティティの別の識別子に関係している探索可能エンティティの識別子を検索する段階が、クエリーの実行中に動的に行われるということを可能にすることができる。本発明は、さらに、前記段階が、事前設定された関係に部分的に基づいて,および、部分的には動的に行われるということを可能にすることができる。
特に、データベースのハブと別の探索可能エンティティの識別子との間の関係は、静的リンクに基づいて、または、「実行中に(on the fly)」生成される動的リンクに基づいて確定されることが可能である。
クエリーで参照されかつハブの一意識別子に関係しているテーブルから情報を検索することが、大きなデータベースの場合には比較的緩慢なプロセスである可能性があり、これは現行のリレーショナルデータベースが動作する仕方を原因とする。複数のテーブルに関係するクエリーが例えばSQLのような標準的な言語に基づいて入力される場合には、RDBMSは、基本的には全テーブルのデカルト積である関係する全テーブルの結合テーブルを形成する。結合テーブル内のデータセットの数は基本的に関係する個々のテーブルのローの数の積であり、このことは、結合テーブルのサイズが、クエリーに関係したさらに別のテーブルが増える毎に指数的に増大するということを意味する。このことは、関係したテーブルの数に応じてコンピュータの速度が急速に低下することを結果的にもたらす。
本発明の一側面では、このことは、どのテーブルが関係しているかをより正確に制御することによって減殺される。さらに詳しく説明するためには、ノード図としてのデータベースの表現を使用することが役立つ。ノード図は、データベースのグラフ的表現として理解されるべきであり、この図では、テーブルがノードとして表現され、および、テーブル間のリンクがノード間のラインとして表現されている。テーブル間のリンクは特に外来キーを介したリンクであってもよいが、これに限定されるものではない。ノード図の着想を使用することによって、データベースの2つのテーブルの間のあらゆる関係が、直接的である(この場合には2つのテーブルの間に直接的なリンクが存在する)か、または、間接的でありかつ1つまたは複数の中間ノードを通過する、2つのノードの間のパス(path)として視覚化されることが可能である。この着想を使用することによって、クエリーに関係するノードの数を制御することと、定義された数の中間テーブルが関係しているようにクエリーを公式化(formulate)することとが可能である。
本発明は、前記ゲートウェイテーブルの一意識別子に関係する情報を検索する前記段階を行う際に、テーブルがノードとして表現されかつテーブル間のリンクがノード間のラインとして表現されているデータベースのグラフ的表現において初期クエリーで参照されるテーブルにゲートウェイテーブルを連結する連結されたグラフを形成する、選択されたテーブルがクエリーされるということを可能にすることができる。
この着想のさらに別の改善点は、大きなクエリーが幾つかの中間的なクエリーに分割されることが可能であり、および、こうした中間的なクエリーは、それが関係している結合テーブルが著しくより小さいので、より容易に評価されることが可能であるということである。基本的に、前記グラフにおける2つのテーブルの間のリンクはジャンクション(junction)によって置き換えられる。2つのテーブルの間のジャンクションは、その2つのテーブルが同一のクエリーに関係していないが、一方のテーブルに関する先行のクエリーにおいて発見されたリンクに対するリンクキー(link key)すなわち別の入力の値が、第2のテーブルに関係するクエリーにおけるリンクキーのための入力として使用されるということを意味する。
本発明は、前記グラフ上でテーブルをクエリーする前記段階が連続した部分照会を行うことを含み、先行のクエリーの結果が後続のクエリー(優先的には前記グラフに沿ったその次のクエリー)のための入力として使用され、前記部分クエリーの第1のものがゲートウェイテーブルに関係し、および、この第1のクエリー以外のクエリーが初期クエリーで参照されるテーブルに関係するということを可能にすることができる。
本発明では、部分クエリーは、前記クエリーにおいて別のテーブルに直接リンクしているテーブルだけが部分クエリーに関係しているように、および、前記グラフ中の全テーブルが少なくとも1つのクエリーに関係しているように、部分クエリーが構造化される。
こうして、ハブテーブルからクエリーで参照されるテーブルへ至るクエリーの完全な連鎖が存在する。
テーブル間の関係が外来キー関係である時には、本発明は、先行クエリーの結果が後続のクエリーに関係しているテーブルの外来キーの値を含み、および、前記外来キーの前記値が後続のクエリーのための入力として使用されるということを可能にする。
部分クエリーの各々に関して、結果が、様々な部分クエリーの結果を初期クエリーの結果または部分結果に組み合わせるために後で検索されるように記憶される。説明を分かりやすくするために、本発明による方法が始まるクエリーを以下では「初期クエリー(initial query)」と呼ぶ。
好ましい実施形態では、先行のクエリーの入力は別として、別の部分クエリーでクエリーされていないテーブルだけがクエリーされるという意味で、クエリーは重複していない。
大きなクエリーを、後で結果が組み合わされる複数のより小さなクエリーに分割することは、より小さなクエリーがより小さな結果セットを戻すという利点を有する。グラフに沿った連続したテーブルが直接的にリンクされるので、連続したテーブルの間に直接的な結合箇所が存在し、このことは、一般的に単一の部分クエリーの結合テーブルが過剰に大きくはないということを意味する。どれだけ多くの連続したテーブルが部分クエリーに含まれるかは、テーブル間の関係に依存している。一般的には、結果セットが取り扱い易くかつその冗長性の排除が容易であるように、様々な部分クエリーが決定される。
本発明は、各々の部分クエリーの後に冗長性検査が結果テーブルに対して行われるということを可能にすることができる。本発明の一実施形態では、冗長性のないオブジェクトが、部分クエリーの結果セットに基づいて生成される。
記憶された結果は、さらに、さらに別の部分クエリーの結果に応じてフィルタリングされるか取り除かれることが可能である。例えば、第1の部分クエリーが、初期クエリーで参照されるテーブルに関係していないことが後で判明するキーの値を戻す場合には、前記結果に関係しておりかつ前記キーを含むオブジェクト中のデータが結果セットから取り除かれることが可能である。
本発明は、各部分クエリーが、互いにリンクし合っている1つまたは複数のテーブルに関係し、各部分クエリーが、以前に確定されたテーブルのキー(特にリンクキー)の値を入力として有するということを可能にすることができる。前記リンクキーは、前記複数のテーブルの中の1つまたは複数のテーブルを、前記部分クエリーに関係していない別のテーブルにリンクさせる。
前記リンクキー値は、先行の部分クエリーの結果としてすでに発見されていることがあり得る。さらに、入力として使用されるキー値は、先行段階ですでに求められているゲートウェイテーブルのキーの値であってもよい。このゲートウェイテーブルはクエリーの一部であり、そのキーの値が入力として使用されるという点で、その第1の部分クエリーは異なる。
本発明は、前記グラフが、少なくとも2つの他のノードに対するリンクを有する少なくとも1つのブランチノードを含み、初期クエリーで参照されるテーブルが前記ブランチノードから得られる別のブランチに関係しており、前記ブランチノード(ブランチテーブル)に対応するテーブルに関係する部分クエリーが行われ、および、入力としてブランチテーブルに関係する部分クエリーの結果を有する各ブランチ内に含まれる1つまたは複数のテーブルに関して、少なくとも1つの部分クエリーが行われるということを可能にすることができる。
各ブランチに関する連続した部分クエリーの各々は、初期クエリーにおいて参照されるテーブルに最終的に関係するさらに別の連続した部分クエリーを有することができる。各ブランチに関するクエリーの連鎖が、互いに連続しているか並行していると評価されることが可能である。
ブランチの1つが、例えばSOLにおいてWHERE文節で指定されるクエリー条件のような必要クエリー条件に関係しているテーブルに関係する場合には、このブランチが最初に優先的に評価され、それによって前記必要条件を満たすエントリに実際に関係しているブランチノードのキーが検索される。一般的に、これらのキーは、最初にそのブランチノードが「合格(pass)」した(すなわち、部分クエリーに関係した)時に検索されたキーよりも少ない。したがって、そのブランチノードに関係する第1の部分クエリーの結果は、そのブランチノードのこうしたキーだけを含むように縮小される。その次に、この縮小されたキー値セットが、その他のブランチに関係している1つまたは複数の部分クエリーのための入力として使用される。
2つ以上のブランチが必要クエリー条件に関係している場合には、さらに、以前に評価された前記ブランチノードのキーに基づいて各ブランチを別個に評価することによって進行することもできる。各ブランチの評価は、必要条件を満たすエントリに各々に関係しているブランチノードのキーを結果として戻す。関係している結果の結果的な処理では、どちらかの条件を満たすエントリに関係しているブランチノードのキーを含むエントリだけが保持される。
ある意味においては、ブランチテーブルは、多重クエリー(multiple queries)がハブテーブルに由来するので、ハブテーブルに類似している。実際に、大半の例では、ハブテーブルはブランチテーブルでもあるであろう。典型的な例が、データベースの図式的表現がスター(star)の中心にあるハブを有するスター形であるデータベースであろう。したがって、ブランチノードに由来するブランチを評価する方法が、同一のハブに由来する明瞭なグラフを評価する方法に類似していることが可能である。しかし、ハブテーブルとブランチテーブルとが異なる形で定義されているということが留意されなければならない。ハブテーブルとブランチテーブルの定義上の相違は、ハブテーブルは基本クエリーを評価するための予め決められたエントリポイントであり、必ずしもブランチを表すわけではないが、一方、ブランチテーブルは、初期クエリーの評価中に決定されるテーブルであってもよいということである。
本発明による方法は、
− 初期クエリーで参照されるテーブルに関係している1つまたは複数のハブを識別する段階と、
− 前記データベースの前記グラフ的表現において、少なくとも1つのハブに関して、好ましくはすべてのハブに関して、前記ハブに関係しておりかつ初期クエリーで参照される全テーブルに前記ハブを連結する最適のグラフを決定する段階と、
− 前記最適のグラフ上でクエリーを行う段階
とを含むことができる。
− 初期クエリーで参照されるテーブルに関係している1つまたは複数のハブを識別する段階と、
− 前記データベースの前記グラフ的表現において、少なくとも1つのハブに関して、好ましくはすべてのハブに関して、前記ハブに関係しておりかつ初期クエリーで参照される全テーブルに前記ハブを連結する最適のグラフを決定する段階と、
− 前記最適のグラフ上でクエリーを行う段階
とを含むことができる。
前記グラフ上で前記クエリーを評価することによって、前記最適のグラフに関して互いに連続しているテーブルに関係する連続した部分クエリーが行われるということが実現されることが可能である。
上述の最適のグラフは、最適化アルゴリズムによって決定されるグラフである。例えばDijkstraアルゴリズムのような、特定の点を連結する最適グラフを発見するための最適化アルゴリズムが、当分野で公知である。このグラフは、部分クエリーのシーケンスが解決されることが可能な速度に関して優先的に最適化される。1つの処理方法が、グラフ中のノードの間の各リンクに重みを割り当てることと、累積された重みに関して初期グラフが最適化されるまでその初期グラフを変化させることとである。この重みは距離関数(metric)として具体化されてもよく、したがって、この探索は、この距離関数による「最短」パスに関するものである。
クエリープロセスをカストマイズするためにノード図を使用するという着想と、大きなクエリーを幾つかのより小さい連続したクエリーに分割するという着想、特にジャンクションの着想は、予め決められたハブテーブルと前記ハブに関連したテーブルとに関係するクエリーの評価に限定されない。実際に、例えば、リレーショナルデータベースに関係するクエリーの場合に、上述したように、クエリーの評価のために開始点を形成し、および、そのクエリーに関係したテーブルに対するパスすなわちグラフがそれから形成されて評価されるゲートウェイテーブルが定義されることが可能なので、この着想は、ハブの概念とは無関係に使用されることが可能である。このゲートウェイテーブルは、ハブのように、静的であること、すなわち、予め決められていることは必ずしも必要ではないが、このゲートウェイテーブルとクエリーで参照されるテーブルとを連結するグラフが、例えば上述したアルゴリズムによって、評価プロセスの速度に関して最適化される仕方でクエリーを評価するプロセスにおいてさえ、このゲートウェイテーブルが特定のクエリーに関して選択されることも可能である。
例えば、この着想のさらに別の応用が、2つのデータベースの間のリンクの評価であってもよい。本発明の実施形態では、2つのデータベースの間の関係は、常に、その2つのデータベースのハブを通して確定される。こうした関係を確定するために、2つのデータベースの2つのテーブル(以下では、「リンキングテーブル(linking table)」と呼ばれる)の間の既存のリンクが、その2つのデータベースの2つのハブの間の動的リンクを与えるために使用されることが可能である。第1のデータベース中のハブテーブルとこのハブの特定の一意識別子とから開始して、第1のデータベース中のリンキングテーブルが発見され、および、前記ハブテーブルの前記リンキングテーブルに対する関係が、例えばそのデータベースのノード図を使用することによって確定される。ハブテーブルの前記一意識別子に関係付けられている前記リンキングテーブル中のエントリと、第2のデータベース中のリンキングテーブル内の関連したエントリとが決定される。その次に、前記第2のリンキングテーブルのエントリに関係した第2のデータベースのハブの一意識別子が決定される。この手順は、例えば関係したハブのすべてのプライマリキーに関して、前もって行われることも可能であり、この場合に、こうして発見されたハブのプライマリキーの間の関係が前もって静的に記憶されることが可能であるが、現時点では、クエリーの評価の最中にこれらの段階を動的に行うことが好ましい。ノード図の形のグラフとジャンクションという着想は、こうしたリンクを動的に実行するために適用されることが可能である。上述したように、リンキングテーブルを経由して2つのハブを連結するグラフが確定されることが可能であり(この場合に、異なるデータベースの2つのリンキングテーブルの間のリンクがデータベース中の通常のリンクのように扱われる)、および、第1のハブのプライマリキーまたは別の一意識別子の特定の値から開始して最終的に第2のハブに至る幾つかの連続したクエリーが行われて評価される。完全性の実現のために、混合タイプのリンクが使用されることも可能であり、この場合には、これらの段階の一部分が前もって行われ、および、これらの段階の一部分が動的に行われるということが指摘されなければならない。
本発明は、前記ゲートウェイテーブルの一意識別子を検索する前記段階が、
− 初期クエリーで参照されるテーブルを決定することと、
− テーブルがノードとして表現されかつテーブル間のリンクがノード間のラインとして表現されている前記データベースのグラフ的表現において、前記テーブルに連結されているゲートウェイテーブルを決定することと、
− 前記テーブルに関係付けられているゲートウェイテーブルの1つまたは複数のインデックス(特にプライマリキー)に関して前記データベースをクエリーすること
とを含むということを可能にすることができる。
− 初期クエリーで参照されるテーブルを決定することと、
− テーブルがノードとして表現されかつテーブル間のリンクがノード間のラインとして表現されている前記データベースのグラフ的表現において、前記テーブルに連結されているゲートウェイテーブルを決定することと、
− 前記テーブルに関係付けられているゲートウェイテーブルの1つまたは複数のインデックス(特にプライマリキー)に関して前記データベースをクエリーすること
とを含むということを可能にすることができる。
本発明は、前記テーブルの1つまたは複数の特定のエントリがクエリー条件によって含意され、および、前記データベースが、前記エントリに関係している前記ゲートウェイテーブルの1つまたは複数のインデックスに関してクエリーされるということを可能にすることができる。
本発明は、前記グラフ的表現において、前記テーブルから前記ゲートウェイテーブルへのパスが確定され、および、前記インデックスに関する前記クエリーが、クエリーにおいて参照されるテーブルと(特定の場合には)そのテーブルの特定のエントリとから開始して、前記グラフにおけるテーブル間のリンクキーの値に関して前記グラフ内のノードに対応する全テーブルをクエリーすることによって行われるということを可能にすることができる。
本発明は、前記パスが予め決められた距離関数にしたがって前記テーブルと前記ゲートウェイテーブルとの間の最短パスとして選択されるということを可能にすることができる。
本発明は、前記パスが、前記ゲートウェイテーブルに関係しているテーブルから追加の情報を検索するための部分クエリーを決定するためのグラフの一部分であるかまたはこのグラフと同一であるということを可能にすることができる。
本発明は、ゲートウェイテーブルの同一のローに関係しておりかつデータベースをクエリーする前記段階によって決定されるインデックスまたはインデックスグループが、前記ゲートウェイテーブルのローを一意的に識別しない場合に、ゲートウェイテーブルの1つまたは複数のローに関する、前記インデックスに関係している一意識別子が決定されるということを可能にすることができる。
本発明は、初期クエリーを評価するために使用される部分クエリーが、前記評価のプロセス中に動的に、少なくとも部分的に、および、好ましくは完全に生成されるということを可能にすることができる。
本発明は、前記結果セットがオブジェクト指向表現の形で表現されるということを可能にすることができる。
本発明は、前記初期クエリーの結果がオブジェクトリレーショナルマッピング(object relational mapping)によって得られたオブジェクトとして表現されるということを可能にすることができる。この好ましい実施形態では、初期クエリーの評価プロセス中に行われる各部分クエリーの後に、オブジェクトリレーショナルマッピングによってオブジェクトが生成され、および、前記初期クエリーの結果を表現するオブジェクトが、部分クエリーに関係しているこれらのオブジェクトから得られる。一実施形態では、部分クエリーの結果から生成されるこの1つまたは複数のオブジェクトはXMLで表現される。
本発明は、前記クエリーの前記評価がオブジェクトマネージャの制御下で行われ、および、前記オブジェクトマネージャはコンピュータシステムによって実行されるべきコマンドのシーケンスを含むということを可能にすることができる。
本発明は、前記オブジェクトマネージャが、クエリーされるべき1つまたは複数のデータベースのスキーマまたはそのスキーマの一部分を表現するオブジェクトを取り扱うということを可能にすることができる。
本発明は、前記オブジェクトマネージャが、動的に生成されて開始されるクラスを定義するということを可能にすることができる。
本発明は、さらに、リレーショナルデータベース管理システム(RDBMS)を備えるリレーショナルデータベースに関係するクエリーの評価を制御するためのデータ処理システムを提供することができ、前記クエリーは前記リレーショナルデータベースの少なくとも1つのテーブルに関係し、
− 前記クエリーを評価するためのゲートウェイテーブルとしてテーブルを決定する手段と、
− クエリーされるべき1つまたは複数のテーブルとゲートウェイテーブルとの間の関係を確定する手段と、
− クエリーされるべきテーブル内の1つまたは複数のエントリに関係している前記ゲートウェイテーブルの1つまたは複数の一意識別子をRDBMSが検索することを引き起こす手段と、
− 前記エントリの前記一意識別子に関係しているクエリーされるべきテーブルからRDBMSが情報を検索することを引き起こす手段と、
− 前記検索された情報に対する関係においてゲートウェイテーブルの検索されたプライマリキーを含む結果セットすなわち結果オブジェクトであることが可能である結果を前記クエリーに対して提供するかまたは前記クエリーが提供されることを引き起こす手段
とを含む。
− 前記クエリーを評価するためのゲートウェイテーブルとしてテーブルを決定する手段と、
− クエリーされるべき1つまたは複数のテーブルとゲートウェイテーブルとの間の関係を確定する手段と、
− クエリーされるべきテーブル内の1つまたは複数のエントリに関係している前記ゲートウェイテーブルの1つまたは複数の一意識別子をRDBMSが検索することを引き起こす手段と、
− 前記エントリの前記一意識別子に関係しているクエリーされるべきテーブルからRDBMSが情報を検索することを引き起こす手段と、
− 前記検索された情報に対する関係においてゲートウェイテーブルの検索されたプライマリキーを含む結果セットすなわち結果オブジェクトであることが可能である結果を前記クエリーに対して提供するかまたは前記クエリーが提供されることを引き起こす手段
とを含む。
前記データ処理システムは、評価されるべきクエリーに関する予め決められたゲートウェイテーブルとして前記リレーショナルデータベース中の特定のテーブルを設定する手段を含んでもよい。
本発明によるデータ処理システムは、さらに別の実施形態では、1つまたは複数のデータ処理システムによって上述の通りの方法の実行を制御する手段を含んでよい。
本発明は、さらに、コンピュータまたはコンピュータシステム上でそのコンピュータプログラムが実行される時に、そのコンピュータまたはコンピュータシステムが、上述の通りの方法の諸段階を行うことを引き起こす、コンピュータプログラムとこのプログラムを含むコンピュータ可読記憶媒体とを提供する。
本発明の重要な側面では、本発明による方法は標準的なリレーショナルデータベース管理システムを使用し、および、このリレーショナルデータベース管理システムの外側でのクエリーの操作すべてを定義する。このことが高度の融通性を実現し、および、実際には、基礎となるシステムとは無関係に使用されることが可能なプラットホームを生じさせる。驚くべきことに、本発明の方法によって、特にグラフと結合点の着想にしたがってクエリーを評価することが、組合せ爆発(combinatorial explosion)が始まるように複数の1:N関係を有するテーブルが関係している場合に、約50%の高さ、さらにはそれ以上の高さであることが可能な速度の著しい増加を結果的に生じさせることが可能である。
他の発明のさらに別の特徴と利点とが、図面に関連付けて説明される下記の本発明の実施形態の説明から明らかになるだろう。
本発明の一実施形態では、最初に、本発明が具体化されるデータベースの分析が行われる。基本的に、データベースのテーブル、カラム、カラムのタイプ、カラムのサイズ、カラムのインデックスと、キーとに関する情報が収集される。こうした情報を収集するための分析ツールが、当分野ですでに容易に入手可能である。例えば、JDBC(Java Database Connectivity)またはいずれかの他のRDBMS APIが、こうした情報を収集するために使用できる。この情報から、データベースのノード図が、テーブル間のキー関係を使用する最小全域木の形で構成される。基本的に、任意のテーブルに関して、このテーブルを別のテーブルにリンクさせるキー(リンクキー)が探し求められ、および、こうしたリンクキーが存在する場合には、その2つのテーブルを表現する2つのノードの間にエッジが導入される。当然のことながら、実際のグラフが描かれるのではなく、こうしたグラフにマップするオブジェクト構造が構築されるということが理解されなければならない。説明を分かりやすくするために、本明細書ではグラフまたはグラフの要素が言及されるが、こうした言及が対応するデータ構造上のそれぞれの要素、関係、または、演算に関係することが意図されているということが理解される。
一般的には、ノードとエッジの両方が幾つかの属性を割り当てられる。幾つかの例を挙げると、例えば、最適のグラフを決定するために後で使用される各エッジに重みが割り当てられてもよく、または、エッジが1:1、1:N、N:N、もしくは、N:1の関係を表現するということを表示する属性が割り当てられてもよく、または、2つのテーブルの間の特定の関係におけるインデックスの存在を表現する属性が割り当てられてもよい。ノード(テーブル)に割り当てられる属性は、例えば、カラムの名称、カラムのサイズ、または、他の関連情報であってよい。
この点で、テーブル間の関係が必要とされる場合には、テーブル間の関係を手作業で追加または変更することができる。例えば、科学出版物の著者をリストするテーブルと、この著者テーブルに関係していないかまたは直接的には関係していない(電子メールアドレスのような)連絡詳細に関するテーブルとが存在する場合に、一方のテーブル内の著者の名前と、他方のテーブル内のこの著者の電子メールアドレスとの間の関係を手作業で挿入することが可能である。この関係は、データベースの変更として実施されてもよい。しかし、この関係は、この2つのテーブルの間の外部リンクとしてデータベースの外部で実行されることも可能である。
この段階の結果が、テーブルのスキーマを表現するオブジェクトである。このスキーマオブジェクトは、さらに別の使用のために記憶される。本明細書で説明されているこの例示的な実施形態はSRS環境を使用し、および、この環境下では、このスキーマオブジェクトは、例えばSRS Java Application Programming Interface(API)によって、SRSオブジェクトマネージャオブジェクトとして記憶されるだろう。オブジェクトマネージャは、SRS下でクエリーの評価を制御するツールである。SRSクエリー言語の詳細については、例えばhttp://srs.ebi.ac.ukを参照することができる。
さらに別の段階として、クエリーの評価においてテーブルに対するエントリポイントまたはゲートウェイとしての役割を果たすことになるハブテーブルが定義される。ハブに関する要件が、ハブが一意識別子を含むということ、すなわち、テーブル内のすべてのデータセットが識別子によって一意的に識別されることが可能であるということである。好ましくは、一意的なインデックスすなわちプライマリキーが一意識別子として使用されるが、例えばインデックスの一意的な組合せが使用されてもよい。基本的には、ハブとしてテーブルを定義することを結果的に生じさせることが可能な2つの考慮事項が存在する。一方の考慮事項は、ユーザ球(user sphere)から得られ、および、ユーザに対して有益であるクエリーにおけるフォーカスポイント(focus point)を提供することを求める。他方の考慮事項は、よりテクニカルであり、クエリーが最も効率的に行われることが可能な仕方でテーブルを定義することを求める。こうして、ハブテーブルは、関心の中心点である情報を表現するテーブルであることが可能である。テクニカルな視点から見ると、このハブテーブルは、クエリーされる可能性が高いテーブルであり、かつ、そのハブに関係するクエリーとこのテーブルとがRDBMSによって最も迅速に評価されることが可能である仕方でそのテーブルに対してクエリーされるかまたは関係している可能性が高い他のテーブルに対して優先的に直接的にリンクさせられるテーブルであるはずである。例えば、どのテーブルがリレーショナルデータベースにおいて最も頻繁にクエリーされるか、および、テーブルのどの組合せが最も頻繁にクエリーされるかに関する統計量を確定することと、それにしたがってハブテーブルを選択することが考慮されてもよい。これら2つの考慮事項は、頻繁にクエリーされるテーブルが一般的にユーザにとって最重要な関心の対象であるテーブルでもあるので、互いに一致している可能性がある場合が多い。
関心の焦点がユーザに応じて変化することがある。1人のユーザが主として科学アプリケーションの著者に対して関心をもつことがある一方で、別のユーザは主として科学出版物における特定のキーワードに関心をもつが、その著者には関心がないか僅かしか関心がないという場合がある。したがって、本発明は、ユーザまたはデータベースマネージャが、ユーザ設定の一部分として、または、クエリーをタイプ入力する時にさえ、1つまたは複数のハブを定義することが可能であるということを可能にすることができる。2つ以上のハブが単一のデータベース内で定義可能であるということが留意されなければならない。このことは、大きなデータセットを含む特に大きなスキーマの場合に、性能を向上させるために使用されることが可能な例えばライブラリのようなより小さいサブストラクチャが形成されることを可能にするので、大きなデータベースにおいて有用であろう。データベース内の複数のハブを定義することを結果的にもたらす可能性がある別の理由が、結合してクエリーされることが知られているデータベース中のテーブルのクラスタ、または、異なるクラスタのテーブルに関する限り頻繁に互いに結合してクエリーされることがないことが知られているデータベース中のテーブルのクラスタが、このようにして定義されることが可能であるということである。このことは、後になって、多くの例においてクエリーされるべきハブとテーブルとの間に発生する可能性があるパスの数を制限し、および、こうしてアプリケーションの速度に寄与するであろう。ハブの定義は、SRSの下で、さらに別の目的を有する。ハブテーブルと一意識別子(例えば、プライマリキー)とをデータベースに対するエントリポイントに関する識別子として選択することによって、「ハブカラム(hub column)」を中心とすると見なされることが可能なデータ構造が実現され、このことは、データに対するアクセスが適切に定義された識別子を経由するということを意味する。このことは単層ファイルに対する類似性を成立させ、および、したがって、単層ファイルのために開発されたリレーショナルデータベースのためのSRS手順を使用することを可能にする。
ユーザがクエリーを入力する時には、そのユーザは、一般的に、自分が関心を持つキーワードを指定し、前記キーワードに関係した全情報を得るだけである。これらは完全なデータベースエントリであってよい。本発明の実施形態は、データベースのどのテーブルまたはどのカラムにユーザが関心を持っているかをそのユーザがグラフィカルユーザインタフェースにおいて指定することが可能であるということを実現することができる。これは、例えば、関心の対象である情報を表示するためにユーザが使用するティックボックス(tick box)を提供することによって実現することが可能である。要求された情報の範囲に関する追加の情報を、ユーザによって変更可能とすることができ、又は変更不可能とすることができないシステム設定の形で実行することも可能である。
この実施形態では、ユーザがクエリーをタイプ入力すると、システムが、情報を検索するためのSRSによる標準的な手順と同様に、2段階のプロセスで動作する。第1の段階では、クエリー条件に関係するテーブル、例えばユーザによって要求されたキーワードを含むテーブルに関係するハブ(または、複数のハブ)の一意識別子が識別される。第2の段階では、システム設定またはユーザ入力によってそうした情報が指定されている程度に、クエリー条件に関係する全情報が検索される。
さらに明確に述べると、第1の段階では、クエリーの分析が、例えばICARUSパーサのようなパーサによって行われる。この分析の結果は、クエリーの階層的分析を表現し、かつ、高レベルにおいてデータベースを指定し、低レベルにおいて識別子フィールド(例えば、「著者」)を指定し、および、さらに低いレベルでは必要とされるキーワード(例えば、「Smith」)を指定する、バイナリツリーであることが可能である。その次に、このシステムは、このクエリーを、このシステム内に記憶されているデータベースのノードグラフにマップする。上述の例に関してさらに述べると、このシステムは、著者とその著者の名前が中に存在するはずであるカラムとを一意的に識別する特定のデータベース内のテーブルが存在するかどうかを検証する。こうしたテーブルが発見される場合には、このシステムは、ハブが前記ノード図中のこのテーブルに関係しているかどうか、および、どのハブが前記ノード図中のこのテーブルに関係しているかを検証する。その次に、このシステムは、クエリー条件に合致する前記テーブル内のエントリに関係しているハブテーブルの一意識別子(例えば、プライマリキー)に関するクエリーを生成する。ハブが少なくとも1つのパスによって入力クエリー中のテーブルに関係しているということが以前に確定されているので、そのエントリに関係しているハブの少なくとも1つの一意識別子が存在するはずである。
特定の実施形態では、このシステムは、クエリーされるべきテーブルからハブテーブルへの前記ノード図におけるパスを確定し、および、さらに、ハブの一意識別子をクエリーする際に、クエリー条件によって特定されたエントリに関係しているパス内の中間テーブル(ノード)のキーをクエリーする。このようにして、ハブの一意識別子を含むクエリー条件に合致するエントリに対する完全な関係セットが確定される。
クエリーに関係している1つのハブと1つのデータベースが存在すると仮定すると、このシステムは、その次に、クエリーで参照される全テーブルがノードとして現れるハブテーブルをその起源として有する前記ノード図の形のグラフすなわちツリーを確定する。このグラフがループのないグラフであることが好ましく、すなわち、ハブテーブルからクエリーにおいて参照されるあらゆるテーブルへのグラフに沿ったパスが1つだけしか存在しない。このグラフはハブから発する幾つかのブランチを有し、および、各ブランチはさらに別のブランチを含むことができる。理想的には、クエリーにおいて参照されるテーブル間のグラフの部分が最小でなければならない。しかし、これはグラフィカルな意味で理解されるべきではなく、むしろ、グラフ上で定義されかつ最適化アルゴリズムのために使用される距離関数の意味で理解されるべきである。例えば、互いに1:1の関係を有する複数の中間テーブルを含むグラフに対応するクエリーの評価が、グラフに沿った隣接するテーブルに対して1:Nの関係を有する単一の中間テーブルを有するグラフに対応するクエリーの評価よりも高速であることが可能であり、したがって関係した距離関数の意味で「より短い」ことが可能である。
最適グラフを確定した後に、第1の段階で識別された一意識別子の値に関係している初期クエリーにおいて参照されるテーブル内の全エントリに関してクエリーが行われるという点で、そのグラフが評価される。より明確に述べると、このシステムは、動的に生成されるクラスと部分SQLクエリーとから成るクエリーのためのオブジェクトプラン(object plan)を生成する。クラスと部分クエリーとを生成して具体化するために必要な情報が、異なる初期入力、すなわち、ハブ識別子に関する異なる値によってクエリーを実行するために必要とされる全情報を含む「ターナブル(turnable)」と呼ばれるデータ構造の形で保持される。このオブジェクトプランは、このクエリーのためのグラフに関して送られたスキーマと情報にしたがって生成され、および、最適化段階に関係することが可能である。このオブジェクトプランが生成され終わると、このオブジェクトプランに、初期情報、すなわち、ハブの一意識別子の値が与えられ、この後に実行される。クエリーの評価においては、このシステムは、ハブのプライマリキーに関係しているブランチ上のノードによって表現されたテーブルの全エントリの値に関してクエリーする。上記において指摘したように、ブランチに沿った多数のテーブルに関して、このことは、通常の仕方で行われる場合に、多数の偽りのエントリを含む大きな結果セットをもたらす可能性がある。本発明によって、ブランチに沿った部分グラフのテーブルに関係するクエリーは、グラフに沿ったテーブルの複数の連続したクエリーに分割され、この場合に、部分クエリーに関係しているテーブルのそれぞれの数は、ブランチ全体に関係するクエリーにおけるテーブルの数よりも少ない。先行のクエリーの結果が記憶されており、および、少なくとも1つの後続のクエリーのための入力として少なくとも部分的に使用されるので、これらの複数のクエリーは互いに連続している。
第1のクエリーの結果またはこの結果の一部分が結果的なクエリーに対する入力として使用されるという点でグラフに沿った2つの結果的なクエリーを連結するという方法は、本明細書で「ジャンクション(junction)」と呼ばれる。ジャンクションは、互いに直接連結されているグラフ中のノードに対応する2つのテーブルが、同一のクエリーには関係していないということを意味する。グラフに沿って直接的に連結されたノードに対応する各テーブル対に関して、その2つのテーブルの間の関係を確定するリンク(一般的にはリンクキー)が存在する。ジャンクションを使用することによって、リンクに対する入力、すなわち、一般的には、テーブルの1つに関係する先行のクエリーの評価において確定されたリンクキーの値が、その他のテーブルに関係する後続のクエリーのための入力として使用することができる。このことは、これら2つのテーブルに関係する結合点が存在せず、および、したがって、各部分クエリーの結果セットがより小さいということを意味する。
各部分クエリーの後に、先行段階で決定されたキーがグラフに沿った後続のテーブルに関係しているかどうかが決定される。関係していない場合には、それぞれのキー値が部分クエリーの結果から取り除かれる。これに加えて、冗長性および/または一貫性に関するフィルタリングおよび検査が、記憶の前に各部分クエリーの結果に関して行われることが可能である。冗長性検査は、一実施形態では、ハブから最も離れている現時点でクエリーされているグラフの部分に沿ったテーブルに関係しているカラムから開始する。同一のキー組合せがこのレベルで判明し、かつ、グラフのこの部分に沿ってN:1またはN:Nの関係が存在しない場合には、このことは冗長性が存在することを意味し、それぞれのエントリが取り除かれる。当然のことながら、冗長性検査の他の方法が適用されてもよい。小さな結果セットだけが各段階において生成されフィルタリングされるので、こうしたフィルタリングと冗長性検査等は、初期クエリーにおいて参照される全テーブルが一度にクエリーされる場合に結果的に得られる大きな結果セットの冗長性検査とフィルタリングに比べて、より迅速かつ効率的に行われることが可能である。冗長性および/または不一致が取り除かれた各部分クエリーの結果はオブジェクトとして記憶され、および、前記オブジェクトを検索するために必要とされる情報が記憶される。
グラフのブランチの評価において、さらに別のブランチが識別されると、各ブランチに沿った後続のクエリーが、互いに並行してまたは結果的な、別々に行われることが可能である。しかし、後続のブランチが比較的短い場合には、単一の部分クエリーにおいて、場合によってはブランチノードに対応するテーブルと共に、これらの後続のブランチに沿ってテーブルに関係することを選択してもよい。
この仕方でブランチを全体的に評価し終わった後に、部分クエリーの結果が組み合わされ、および、この場合も同様に、冗長性と一貫性に関して検査される。ハブを起点とする各ブランチを評価し終わった後では、ハブの一意識別子の値によって各々が識別された各ブランチに関する結果セットが得られている。その次に、異なるブランチに関する結果が組み合わされ、および、最終結果を得るために再び一貫性と冗長性とに関して検査される。
この結果は、オブジェクト構造、例えば、SRSのフレームワークで実現されるようなオブジェクト構造として表現される。部分クエリーの結果を表現するオブジェクト構造すなわちオブジェクトを定義することによって、動的クラス、すなわち、処理中に定義された後にオブジェクトを生成するために具体化されるクラスが使用されることが可能である。動的クラス自体は新しいものではなく、Smalltalk言語において公知であるが、静的クラスまたはコンパイル時間クラス(compile time class)だけしか持たないC++またはJavaのような現在の言語では使用不可能である。以前のアプリケーションは動的クラスを使用しなかったが、SRSは動的クラスをサポートする。
本発明の重要な側面では、初期クエリーの評価中に生成されるすべてのクエリーは処理中に動的に生成される。他の実施形態では、頻繁に求められるハブとテーブルとの間の特定の部分グラフに沿った部分クエリーが前もって決定されて最適化されてもよい。テーブルの「クラスタ」を結果的に生じさせる特定の部分ルートを前もって決定することを予想することが可能であり、この場合には、要求されたテーブルへのルートの最終部分が(「オンザフライ(on the fly)で」)動的に決定される。さらに別の最適化方法が、データベースのグラフにおける幾つかの連結を無視することであってもよい。
上述の2段階のプロセスは、第1の段階においてクエリー条件を分解することと、第2の段階においてその結果に関係した情報を検索することと見なすことが可能である。本発明の一実施形態では、例えば、テーブルから抽出されるべき情報がクエリー条件に関係するエントリの値に制限されている場合には、クエリー条件の要件に合致するエントリを含むテーブルは、必ずしも前記第2の段階で行われる部分クエリーの一部分であるとは限らない。さらに、すでに第1の段階において、同一のテーブル内のクエリー条件によって指定されたエントリに関係している情報すべてを、関係したテーブルを後で「再訪問(revisit)」する必要がないように、抽出し記憶するということを可能にしてもよい。
上述の2段階プロセスは必要ではない。クエリー条件において参照されるテーブルから開始してハブの一意識別子を検索する時に、システムが追加の情報を検索する実施形態を想定することが可能である。例えば、ハブのプライマリキーに関するクエリーにおいて、このシステムが、関係したハブに対するクエリー条件によって指定されたエントリから開始するパスの中の中間テーブルのキーに関してもクエリーし、および、後続のクエリーにおいて、これらのキーに関係した情報を検索するということを可能にすることができる。
以前には、1つだけのハブまたは1つだけのデータベースまたはライブラリが関係している場合に関して説明を行った。
関係する複数のハブが存在する場合、例えば、複数のデータベースの場合に、単一のデータベース中の複数のライブラリまたは複数のハブが、初期クエリーが幾つかの部分クエリーに分割され、その部分クエリーの一部分がエンドポイントとしてハブを有するグラフに相当し、および、その部分クエリーの残り部分が1つだけのハブを含む形で取り扱われる。
2つのハブの場合には、第1の段階において、上述したように、クエリー条件に合致するエントリを有するテーブルに関係しているハブテーブルの一意識別子の値を検索することが可能であり、前記テーブルに対する前記関係はそれぞれの他のハブに関係しない。その次に、第2の段階において、単一のハブに排他的に関係しておりかつ他のどのハブにも関係していない(部分クエリーに対応する)部分グラフと、ハブを互いに連結する(1つまたは複数のさらに別の部分クエリーに対応する)1つまたは複数の部分グラフとから成る最適グラフを決定することができる。その次に、各ハブに排他的に関係している部分グラフが各ハブ毎に評価され、そのそれぞれの結果が記憶される。その次に、ハブの間の1つまたは複数の部分グラフに対応する1つまたは複数のクエリーが評価される。その次に、これらの部分グラフの結果がクエリー全体に関する結果を得るために組み合わされる。
これに対する代案として、2つのハブの間のリンクを評価するためにジャンクションの着想が適用され、および、2つのジャンクションをつなぐ部分グラフ内の各々のハブの後に、および、場合によってはこれらのグラフ内のさらに別の位置に、ジャンクションが導入されることが可能である。ハブをリンクさせるこれらの部分グラフを評価する時に、1つのハブの一意識別子の値から開始され、および、その他のハブの一意識別子の関係した値に関するクエリーが評価され、このことは、ハブとその関連のテーブルとに関係するクエリーの評価の場合に関して上述した仕方と同じ仕方で、特にジャンクションを使用して、行われることが可能である。この結果として、その他のハブの一意識別子の値のセットが得られ、この値のセットは、クエリー条件との一致に関して検査される。この処理方法は、クエリー条件が1つのハブに関係しているテーブルにだけ関係する場合に、特に有利である。この場合には、第1の段階においてこのハブのプライマリキーだけが検索されるであろうし、および、その他のハブは、第2のハブにつながるグラフ上の最終リンクの代わりに導入されたジャンクションを有するグラフ中のブランチポイントのように効果的に取り扱われる。
ハブの種類に応じて、および、ハブがシステム設定で予め定義されているか、または、ユーザによって選択されるかに応じて、単一のデータベース内の複数のハブのプライマリキーの間の予め決められた関係を記憶することが予想されてもよい。概念的には、このことは、上述の動的リンクの代わりに使用される2つのハブの間の直接リンクがノード図に導入されることを意味するであろう。
予想できる別の可能性が、この手順の第1の段階において、すべてのクエリー条件に関係する1つのクエリーにおけるすべてのハブのプライマリキーを検索し、それによってプライマリキーの適切な組合せを得ることである。これは、特にハブ間に直接リンク(特に1:1リンク)が存在する場合に実用的な処理方法であり得る。
2つ以上のデータベースが関係している場合が、複数のハブの場合と同様の仕方で処理されることが可能である。説明を分かりやすくするために、各データベースが1つだけのハブを含み、かつ、各データベースにおいて1つずつ、データベースがリンキングテーブルを経由して互いにリンクしていると仮定すると、2つのリンクテーブルを経由した2つのデータベースの間のリンクがノード図における通常のエッジと見なされることが可能である。この形で2つのデータベースを表現する場合には、概念的に、および、本発明によるクエリーを評価する方法に関する限り、単一のデータベース内の2つのハブの場合との相違は僅かであるにすぎない。すなわち、上述したとおりにクエリー条件に基づいてハブの関係した一意識別子を検索した後に、その2つのデータベースのハブとクエリーで参照される他のあらゆるテーブルとに関係する2つのデータベースによってグラフが決定される。このグラフは、一方のデータベース内のハブに排他的に関係する部分グラフと、他方のデータベースのハブに排他的に関係している第2のグラフと、前記第1のデータベースのハブを前記第2のデータベースに連結しかつ前記2つのリンキングテーブルを経由して延びる部分グラフとを含む。リンキングテーブルが必ずしもハブテーブルであるとは限らないということが指摘されなければならない。
この場合も同様に、クエリーの評価は上述したクエリーの評価に類似している。第1および第2のハブに関係している部分クエリーが評価され、および、3つの部分グラフの間のジャンクションが配置され、上述の仕方でその2つのハブの間の経路が評価される。その2つのハブの間のグラフを評価する際に、その2つのハブの間に直接リンクがない場合にはジャンクションの着想が再び使用されることが可能だということが指摘されなければならない。2つのハブの場合に、一方のハブから他方のハブにノード図を通る最適パスを決定し、特定のノードの間にジャンクションを配置し、別々に評価される部分クエリーをこのように定義し、この結果が、その2つのハブを連結するこの部分グラフに関する部分結果を与えるために最終的に互いに組み合わされ、その次に、この部分結果が、それぞれのハブに関係する残りの2つの部分グラフの結果と組み合わされる。
クエリー条件が一方のデータベースだけに関係し、かつ、第2のデータベースだけが、前記クエリー条件に合致するエントリに関係している情報を得るために必要とされる場合には、単一のデータベース内の2つのハブの場合に関して上述したように、クエリー条件のエントリに関係している第1のデータベースのハブのプライマリキーを検索し、その次に、他方のデータベース内のハブに対する直接リンクを評価し、および、このリンクの評価によって検索された第2のデータベースのハブのプライマリキーの値に応じて、前記第2のデータベースのハブから得られる部分グラフを評価することができる。
ハブに各々が関係する幾つかの部分クエリーにクエリーを分割するという上述の着想は、さらに、リレーショナルデータベースと、サブエンティティを識別することと前記サブエンティティからのデータ抽出とを可能にする識別子を含む別の探索可能なエンティティ(特に、単層ファイル)とに関係するクエリーを評価するために使用されることが可能である。リレーショナルデータベースと単層ファイルとが同一のクエリーに関係している場合には、初期クエリーが、3つの部分、すなわち、リレーショナルデータベース中でそれに関係しているハブとテーブルとに関係する部分と、単層ファイルから情報を抽出することに関係する部分と、単層ファイルとリレーショナルデータベースとの間のリンクに関係する部分とに分割されることが可能である。ある意味で、本発明の着想の範囲内では、単層ファイルが、そのハブに関係しているさらに別のテーブルを有しないハブのようにノード図において取り扱われることが可能である。
本発明の原理のさらに別の例示のために、幾分か単純な具体例を、図1に図式的に示されている構成を参照しながら説明する。図1は、テーブル「研究員(RESEARCHERS)」と、テーブル「部門(DEPARTMENTS)」と、テーブル「論文(ARTICLES)」と、テーブル「著者(AUTHORS)」と、テーブル「表題/要約(TITLE/ABSTRACT)」とを含むリレーショナルデータベースを示す。図1に点線で示されているさらに別のテーブルが存在してもよい。テーブル「研究員」はカラムRNAMEとカラムRI(=researchers identifier)とを有し、このRIカラムはこのテーブルに関するプライマリキーを定義する。RIはテーブル「部門」に対するリンクキーを形成し、RNAMEはテーブル「著者」のカラムRNAMEに対するリンクを形成し、このテーブル「著者」はさらにカラムANAMEとカラムARTIDとを含む。一方、ARTIDはテーブル「論文」に対するリンクを形成する。テーブル「論文」は、カラムARTIDと、カラム「刊行物(JOURNAL)」と、カラム「年(YEAR)」と、カラム「ページ(PAGE)」とを含む。ARTIDは、さらに、テーブル「論文」から、カラム「表題」とカラム「要約」とを有するテーブル「表題/要約」へのリンクを形成する。この例では、例えば、そのデータベースのユーザが従業員による調査研究を監視することを望むR&D研究所であるので、テーブル「研究員」はハブテーブルとして事前定義されている。
さて、要約中で「インシュリン」に言及すると同時にそれぞれの著者の論文と表題と名前と部門とに関する著書目録データを検索することを要求するクエリーがすべての論文に関して実行依頼されているとしよう。このシステムは、最初に、テーブル「要約/表題」内の「要約」カラムで「インシュリン」という語を含むエントリを探索する。その次に、このシステムは、テーブル「要約/表題」とハブテーブル「研究員」との間に関係が存在するかどうかを調べる。この関係が存在する場合には、テーブル「要約/表題」−「論文」−ANAME−「研究員」の連鎖を通して、このシステムは、語「インシュリン」を含むテーブル「要約/表題」内のカラム「要約」内のエントリに関係しているキーRIを検索することに取りかかる。この条件に合致する2つのRI値、すなわち、(研究者Smithと研究者Jonesとに対応する)値1と値2とが存在するということが明らかになる。
このシステムは、次に、情報がどのテーブルから求められているかを調べる。このテーブルは、「研究員」と、「部門」と、「論文」と、「要約/表題」である。したがって、このシステムは、次に、図1に実線で示されているように、これらのテーブルをハブテーブル「研究員」に連結するグラフを決定する。その次に、このシステムは、第1の段階では、名前Smithと名前Jones(RI 1とRI 2とに対応する。説明を分かりやすくするために、これらの名前が研究者に関する一意識別子であることが仮定されている)を有するテーブル「著者」内の全エントリを評価し、および、関係するARTID値を検索する。この結果が第1の部分結果セットとして記憶される。後続のテーブル「論文」とテーブル「要約/表題」はこの段階ではクエリーされなかったが、このことがテーブル「著者」とテーブル「論文」との間に結合点が生成されたということを意味するということに留意されたい。次に、この第1の段階で検索されたキーARTIDが、著書目録データと表題と要約とを検索するために後続のクエリーで入力として使用される。このクエリーの結果を再検討することによって、SmithとJonesとが論文3と論文4の著者としてリストされているので、この結果が論文3と論文4とを含むということに留意されたい。しかし、これらの論文はクエリー条件に合致しない。したがって、このシステムは、この第2の部分クエリーの部分結果を一貫性に関して検査し、クエリー条件(要約が語「インシュリン」を含む)に一致しない結果セットの一部分を取り除く。これによって、論文ID 1と論文ID 2とに関して下記の結果セットが残される。
SmithとJonesとが論文1の共著者なので、論文ID 1が2回出現するということに留意されたい。
グラフの第1のブランチを評価し終わり、その結果が上記の結果セットの形で示されると、このシステムは、その次に、ハブ「研究員」とテーブル「部門」とを含む第2のブランチを評価することに向かう。このブランチに関係しているテーブルは2つしかないので、このシステムは、さらに別のジャンクションを必要とせずに、RI 1とRI 2とがSmithとJonesとに対応するという情報と、Smithが部門Aで働いており、Jonesが部門Bで働いているという情報とを検索する。その次に、この結果が先行の結果セットと組み合わされ、その結果として、結果セット全体が次に示される通りに得られる。
この時点で、クエリーが基本的に完了される。説明を分かりやすくするために、この結果が結果テーブルとして表現された。好ましい実施形態では、3つの部分クエリーの結果がオブジェクトの形に変換されており、その次に、このオブジェクトはクエリー全体に対する結果を得るために組み合わされている。
異なるデータベース設定では、テーブル「研究員」とテーブル「論文」の両方がハブとして選択されていると仮定しよう。この場合には、同一のクエリーを評価するために、このシステムは、第1の段階において、ARTID 1とARTID 2とがクエリー条件(要約が語「インシュリン」を含む)に合致するということを確定するであろう。その次に、このシステムは、第1の段階において、テーブル「論文」とテーブル「要約/表題」とを含む部分グラフを評価し、および、論文1と論文2とに対応する著書目録データと表題と要約とを検索するであろう。第2の段階では、このシステムは、ARTIDの値1と値2とから開始して、テーブル「論文」−「著者」−「研究員」の連鎖によってテーブル「研究員」の関係RIを決定するであろう。これは単一のクエリーで行われることが可能である。「著者」と「研究員」との間に結合を導入することが予想可能であり、すなわち、最初に「著者」のキーに関する部分クエリーを評価し、その次に、この部分クエリーがRIの値に関するさらに別のクエリーのための入力として使用されることが予想可能である。その結果として、RIに関する値1と値2とが検索される。ハブテーブル「研究員」とテーブル「部門」とに関係する第3の部分クエリーでは、検索される。部分クエリーの結果セットが組み合わされ、このことは、上記で示された通りに、初期クエリーに関する同一の結果セットを結果的に生じさせる。
テーブル「論文」−「著者」−「研究員」の連鎖がその2つのハブの間のリンクと見なされる場合には、テーブル「研究員」とテーブル「論文」とが異なるデータベースまたは異なるライブラリに属し、かつ、テーブル「著者」とテーブル「研究員」との間のリンクによって連結されているならば、同一の手順が適用可能であるということが理解される。データベース間のリンクが一方のデータベースまたはライブラリのハブテーブルに対してであることは必ずしも必要ではないということが理解されなければならない。
さらに、1つのデータベース内の2つのハブという上記の具体例に対する変更例として、第1の段階において、クエリー条件に合致する両方のハブのプライマリキーの値が決定されることが可能である。このことは、RI 1と、RI 2と、ARTID 1と、ARTID 2とを戻すであろうし、その次に、これらは、それぞれのハブテーブルとそれらに応じるテーブルとに関係するグラフの2つのブランチを評価するために使用されることが可能である。さらに別の代案として、「論文」と「研究員」との間の直接的な静的リンクを実行することが選択されることも可能である。
さらに別の具体例では、ジャンクションに関係するということの利点が、図3に示されているデータベースを参照して示されている。このデータベースは下記の3つのテーブルを含み、テーブル「論文テーブル」がハブテーブルとして定義され、および、論文IDが前記ハブテーブルの一意識別子として定義されている。
論文番号88に関係している全ての情報に関する探索を考察すると、2つの場合、すなわち、ジャンクションが全くない場合と、ハブテーブル(「論文」)とその関係するテーブル(「参考文献」と「著者」)の各々との間のジャンクションがある場合とが示される。
ケース1:ジャンクションなし
単一のクエリーが構築されて実行依頼される。結果セットは3×2=6つのローを有するであろう。
単一のクエリーが構築されて実行依頼される。結果セットは3×2=6つのローを有するであろう。
冗長データがフィルタリング処理中に無視され、オブジェクトがその一意的なデータから構築されるであろう。この場合には、例えば、データ「88」および「表題88」が、6回出現するにも係わらず、1回だけしか読み出されない。同じことがRefP1の冗長性と、RefP2の冗長性と、RefP3の冗長性と、SmithおよびJonesの冗長性とに当てはまる。フィルタリングおよびオブジェクト生成アルゴリズムを原因として、各々の一意的なフィールドが1回だけ読み出される。探索結果をオブジェクトまたはオブジェクト構造として表現することによって、結果における冗長性を回避することが可能である。したがって、当然のことながら、まず第1に冗長性を回避することが好ましいであろう。これは結合点の着想を用いて行われることが可能である。
ケース2:両方のリンクがジャンクションである。
2つのクエリーが構築され、順次にまたは並行して実行依頼される。次に示されている2つの結果セットが戻される。
2つのクエリーが構築され、順次にまたは並行して実行依頼される。次に示されている2つの結果セットが戻される。
冗長データが無視される(この場合には「88」と「表題88」だけである)。オブジェクトがこれらの2つの結果セットから構築される。このオブジェクトは場合1で構築されたオブジェクトと等価である。
単一のクエリーでは、結果セットがより大きく、および、より冗長な情報を含むということに留意されたい。戻されるローの数は、(1−1関係以外の関係を有する)テーブルの数が増加するにつれて劇的に増大するであろう。複雑な関係が、ほとんどの実世界のデータベースにおいて一般的な状況である。
上記の具体例が単に例示のためのものであるにすぎないということと、本発明がこれらの具体例に限定されないということとが理解されなければならない。
本明細書と特許請求項と添付図面とに開示されている本発明の特徴は、単独の場合とあらゆる任意の組合せの場合との両方において、本発明の様々な実施形態の形での本発明の実現のために不可欠であり得る。
Claims (42)
- リレーショナルデータベース管理システム(RDBMS)を備える少なくとも1つのリレーショナルデータベースに関係するクエリーを評価する方法であって、前記クエリーは、前記リレーショナルデータベースの少なくとも1つのテーブルに関係し、および、前記方法は、
前記クエリーを評価するためのゲートウェイテーブルとして前記リレーショナルデータベースのテーブルを決定することと、
クエリーされるべきテーブル内の1つまたは複数のエントリに関係している前記ゲートウェイテーブルの1つまたは複数の一意識別子を検索することと、
前記ゲートウェイテーブルの前記検索された一意識別子に関係している、クエリーされるべき1つまたは複数のテーブルから情報を検索することと、
結果を前記クエリーに提供すること
とを含む方法。 - 前記リレーショナルデータベースは1つまたは複数の予め決められたハブテーブルを含み、および、前記クエリーは、前記リレーショナルデータベースの少なくとも1つのテーブルに関係し、および、前記方法は、
クエリーされるべきテーブル内の1つまたは複数のエントリに関係しているハブテーブルの1つまた複数の一意識別子を検索することと、
前記ハブテーブルの前記検索された一意識別子に関係しているクエリーされるべきテーブルから情報を検索することと、
前記クエリーに結果を提供すること
とを含む、請求項1に記載の方法。 - 少なくとも1つのライブラリが1つまたは複数の前記データベース上で定義され、および、前記ライブラリは、互いにリンクしているテーブルから成ると共に、ハブテーブルとして定義されているちょうど1つのテーブルを有する、請求項1または2に記載の方法。
- 前記クエリーは、前記リレーショナルデータベースまたはライブラリの関係エントリの完全セット、または、前記関係エントリの完全セットの一部分に関するものであり、および、前記データベースまたはライブラリに関係している1つまたは複数のクエリー条件を含み、前記方法は、
クエリー条件で特定されているエントリに関係しているゲートウェイテーブルを識別することと、
クエリー条件に適合する前記エントリに関係している前記ゲートウェイテーブルの1つまたは複数の一意識別子を識別することと、
前記ゲートウェイテーブルの前記一意識別子に関係している関係エントリの完全セットまたは前記完全セットの一部分を検索すること
とを含む、請求項1から3のいずれか一項に記載の方法。 - 前記クエリーは、前記データベースの外側の、または、前記クエリーに関係しているライブラリの外側の第2の探索可能なエンティティに少なくとも関係し、前記第2のエンティティは、そのサブエンティティを一意的に識別する少なくとも1つの識別子を各々が有するサブエンティティを含み、前記方法は、
前記クエリーに関係している前記第2の探索可能なエンティティのサブエンティティの1つまたは複数の識別子を検索することと、
前記サブエンティティの前記検索された識別子に関係している前記リレーショナルデータベースまたはライブラリのハブテーブルの1つまたは複数の一意識別子を検索することと、
前記ハブテーブルの前記検索された識別子に関係している、関係エントリのセットまたは前記関係エントリのセットの予め決められた一部分を検索することと、
前記第2のエンティティ内の検索された識別子によって識別されたサブエンティティから情報を検索することと、
前記第2の探索可能なエンティティと前記データベースまたはライブラリとからの前記検索された情報を結果に組み合わせること
とを含む、請求項2から4のいずれか一項に記載の方法。 - 前記クエリーは、前記データベースの外側の、または、前記クエリーに関係しているライブラリの外側の、サブエンティティを含む第2の探索可能なエンティティに少なくとも関係し、各サブエンティティは前記サブエンティティを一意的に特定する少なくとも1つの識別子を有し、前記方法は、
前記クエリーに関係しているエントリに関係している前記データベースまたはライブラリのハブテーブルの1つまたは複数の一意識別子を検索することと、
前記ハブテーブルの前記検索された一意識別子に関係している前記第2の探索可能なエンティティのサブエンティティの識別子を検索することと、
前記ハブテーブルの前記検索された一意識別子に関係している、関係エントリのセットまたは前記関係エントリのセットの予め決められた一部分を検索することと、
前記第2の探索可能なエンティティ内の検索された識別子によって識別された前記サブエンティティから情報を検索することと、
前記第2の探索可能なエンティティと前記データベースまたはライブラリとからの検索された情報を結果に組み合わせること
とを含む、請求項2から5のいずれか一項に記載の方法。 - 前記第2の探索可能なエンティティは、リレーショナルデータベースまたはライブラリであり、および、前記識別子は、前記リレーショナルデータベースまたはライブラリ内のハブテーブルの一意識別子である、請求項5または6のいずれか一項に記載の方法。
- 前記第2の探索可能なエンティティは単層ファイルの集まりであり、前記サブエンティティはこの集まりの中の単層ファイルである、請求項5または6のいずれか一項に記載の方法。
- 前記第2の探索可能エンティティの識別子と前記データベースまたはライブラリのハブの一意識別子との間の関係を検索する前記段階は、前記クエリー条件に合致しないハブの識別子と前記第2の探索可能エンティティの識別子との組合せを排除し、および、選択パラメータに合致する識別子の組合せに含まれている識別子に関係している追加の情報だけを検索する段階を含む、請求項4から8のいずれか一項に記載の方法。
- 前記クエリーは、少なくとも2つのハブテーブルに関係しているテーブルに関係し、前記方法は、
それぞれのハブに関係しているテーブル内のクエリー条件を満たすエントリに関係している識別子である、1つまたは複数のハブテーブルの1つまたは複数の一意識別子を検索することと、
前記クエリー条件を満たすエントリに関係している前記検索された一意識別子に関係している1つまたは複数の他のハブそれぞれの一意識別子を検索することと、
前記クエリーにしたがって前記ハブの前記検索された一意識別子に関係している、関係エントリのセットまたは前記関係エントリのセットの予め決められた一部分を検索することと、
前記ハブに関係している前記検索された情報を結果に組み合わせること
とを含む、請求項2から9のいずれか一項に記載の方法。 - 前記ハブテーブルの一意識別子の間の関係を検索する前記段階は、前記クエリー条件に合致しないハブテーブルの一意識別子の組合せを排除し、および、探索パラメータに一致する一意識別子の組合せに含まれている一意識別子に関係している追加の情報だけを検索する段階を含む、請求項10に記載の方法。
- 前記ハブの少なくとも1つはライブラリのハブであり、および、前記クエリーは前記ライブラリに関係する、請求項10または11に記載の方法。
- 前記クエリーは2つのライブラリに関係し、および、前記ハブは2つのライブラリのハブである、請求項12に記載の方法。
- 前記2つのハブは同一のリレーショナルデータベース中のハブである、請求項10から13のいずれか一項に記載の方法。
- ハブテーブルの一意識別子、および/または、ハブテーブルの別の識別子に関係している探索可能なエンティティの識別子、および/または、探索可能エンティティの識別子を検索する前記段階は、前記エンティティの識別子の間の事前設定された関係に基づいて行われる、請求項4から14のいずれか一項に記載の方法。
- ハブテーブルの一意識別子、および/または、ハブテーブルの別の識別子に関係している探索可能なエンティティの識別子、および/または、探索可能エンティティの識別子を検索する前記段階は、前記クエリーの実行中に動的に行われる、請求項4から14のいずれか一項に記載の方法。
- 前記ゲートウェイテーブルの一意識別子に関係している情報を検索する前記段階を行う際に、前記テーブルがノードとして表現されかつ前記テーブル間のリンクが前記ノード間のラインとして表現されるデータベースのグラフ的表現において、前記初期クエリーで参照されるテーブルに対して前記ゲートウェイテーブルを連結する連結グラフを形成する選択されたテーブルがクエリーされる、請求項1から16のいずれか一項に記載の方法。
- 前記グラフ上でテーブルをクエリーする前記段階は、連続した部分クエリーを行うことを含み、および、先行のクエリーの結果が後続のクエリーのための入力として使用され、および、前記部分クエリーの第1のものは前記ゲートウェイテーブルに関係し、前記第1のクエリー以外のクエリーは、前記初期クエリーで参照されるテーブルに関係する、請求項17に記載の方法。
- 前記先行のクエリーの前記結果は、前記後続のクエリーに関係しているテーブルの外来キーの値を含み、および、前記外来キーの前記値は前記後続のクエリーのための入力として使用される、請求項18に記載の方法。
- 前記部分クエリーの結果は1つまたは複数のオブジェクトとして記憶される、請求項18または19に記載の方法。
- 各部分クエリーの後に、冗長性検査および/また一貫性検査がそれぞれの結果において行われ、および、冗長性および/または不一致が取り除かれた前記部分クエリーの結果が記憶される、請求項18から20のいずれか一項に記載の方法。
- 前記冗長性検査は、前記部分クエリーの結果を含む前記オブジェクトを生成する際に行われるか、または、前記オブジェクトの生成後に前記オブジェクトに対して直接的に行われる、請求項21に記載の方法。
- 各部分クエリーは、互いにリンクしている1つまたは複数のテーブルに関係し、および、第1の部分クエリー以外の各部分クエリーは、以前に確定されたリンクキー値を入力として有し、前記リンクキーは、前記テーブルまたは前記複数のテーブルの中の1つもしくは複数のテーブルを前記部分クエリーには関係していない別のテーブルにリンクさせる、請求項18から22の一項に記載の方法。
- 前記グラフは、少なくとも2つの他のノードに対するリンクを有する少なくとも1つのブランチノードを含み、前記初期クエリーにおいて参照されるテーブルは、前記ブランチノードに由来する別々のブランチに関係しており、前記ブランチノード(ブランチテーブル)に対応するテーブルに関係する部分クエリーが行われ、および、少なくとも1つの部分クエリーが、前記ブランチテーブルに関係する前記部分クエリーの結果を入力として有する各ブランチ内に含まれている1つまたは複数のテーブルに関して行われる、請求項18から23のいずれか一項に記載の方法。
- 前記初期クエリーで参照されるテーブルに関係している1つまたは複数のハブテーブルを識別する段階と、
前記データベースの前記グラフ的表現において、少なくとも1つのハブテーブルに関して、前記ハブに関係しておりかつ前記初期クエリーで参照される全テーブルに前記ハブを連結する最適のグラフを決定する段階と、
前記最適グラフに関して、互いに連続しているテーブルに関係する連続した部分クエリーを行う段階
とを含む、請求項18から24のいずれか一項に記載の方法。 - 前記ゲートウェイテーブルの一意識別子を検索する前記段階は、
前記初期クエリーで参照されるテーブルを決定することと、
テーブルがノードとして表現されかつ前記テーブル間のリンクが前記ノード間のラインとして表現される前記データベースのグラフ的表現において、前記テーブルに連結されているゲートウェイテーブルを決定することと、
前記テーブルに関係している前記ゲートウェイテーブルの1つまたは複数のインデックスに関して前記データベースをクエリーすること
とを含む、請求項1から25のいずれか一項に記載の方法。 - 前記テーブルの1つまたは複数の特定のエントリがクエリー条件によって意味付けされ、および、前記データベースは、前記1つまたは複数のエントリに関係している前記ゲートウェイテーブルのインデックスに関してクエリーされる、請求項26に記載の方法。
- 前記グラフ的表現では、前記テーブルから前記ゲートウェイテーブルへのパスが確定され、および、前記インデックスに関する前記クエリーは、前記クエリーで参照された前記テーブルから開始する前記グラフ内の前記テーブル、および、場合に応じて、その特定のエントリの間のリンクキーの値に関して、前記グラフ内のノードに対応する全テーブルをクエリーすることによって行われる、請求項26または27に記載の方法。
- 前記パスは、予め決められた距離関数にしたがって前記テーブルと前記ゲートウェイテーブルとの間の最短距離のパスとして選択される、請求項28に記載の方法。
- 前記パスは、前記ゲートウェイテーブルに関係しているテーブルから追加の情報を検索するための部分クエリーを決定するための前記グラフの一部分であるか、または、前記グラフと同一である、請求項28または29に記載の方法。
- 前記データベースをクエリーする前記段階によって決定された前記ゲートウェイテーブルの同一のローに関係しているインデックスまたはインデックスグループが前記ゲートウェイテーブルのローを一意的に識別しない場合に、前記インデックスに関係している前記ゲートウェイテーブルの1つまたは複数のローに関する一意識別子を決定する段階
を含む、請求項26から30のいずれか一項に記載の方法。 - 前記初期クエリーを評価するために使用される部分クエリーは、前記評価のプロセス中に少なくとも部分的に動的に生成される、請求項1から31のいずれか一項に記載の方法。
- 前記結果はオブジェクト指向表現の形で表現される、請求項1から32のいずれか一項に記載の方法。
- 前記初期クエリーの前記結果は、オブジェクトリレーショナルマッピングによって得られたオブジェクトとして表現される、請求項33に記載の方法。
- 前記クエリーの前記評価はオブジェクトマネージャの制御下で行われ、および、前記オブジェクトマネージャは、コンピュータシステムによって実行されるべきコマンドのシーケンスを含む、請求項1から34のいずれか一項に記載の方法。
- 前記オブジェクトマネージャは、クエリーされるべき1つまたは複数のデータベースのスキーマまたな前記スキーマの一部分を表現するオブジェクトを取り扱う、請求項35に記載の方法。
- 前記オブジェクトマネージャは、動的に生成されかつ具体化されるクラスを定義する、請求項35または36に記載の方法。
- リレーショナルデータベース管理システム(RDBMS)を備えるリレーショナルデータベースに関係するクエリーの評価を制御するためのデータ処理システムであって、前記クエリーは前記リレーショナルデータベースの少なくとも1つのテーブルに関係し、
前記クエリーを評価するためのゲートウェイテーブルとしてテーブルを決定する手段と、
クエリーされるべき1つまたは複数のテーブルとゲートウェイテーブルとの間の関係を確定する手段と、
クエリーされるべきテーブル内の1つまたは複数のエントリに関係している前記ゲートウェイテーブルの1つまたは複数の一意識別子を前記RDBMSに検索させる手段と、
前記エントリの前記検索された一意識別子に関係しているクエリーされるべきテーブルから前記RDBMSに情報を検索させる手段と、
結果を前記クエリーに提供するかまたは前記クエリーに提供させる手段と、
を含むデータ処理システム。 - 評価されるべきクエリーに関する予め決められたゲートウェイテーブルとして前記リレーショナルデータベース内の特定のテーブルを設定する手段を含む、請求項38に記載のデータ処理システム。
- 1つまたは複数のデータ処理システムによって請求項1から37のいずれか一項に記載の方法の実行を制御する手段を含む、請求項38または39に記載のデータ処理システム。
- コンピュータまたはコンピュータシステム上で実行される時に、前記コンピュータまたはコンピュータシステムに、請求項1から37のいずれか一項に記載の方法の前記段階を行わせるコンピュータプログラム。
- 請求項41に記載のプログラムを含むコンピュータ可読記憶媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP02007419A EP1349082A1 (en) | 2002-03-28 | 2002-03-28 | Method and apparatus for querying relational databases |
PCT/EP2003/003276 WO2003083712A1 (en) | 2002-03-28 | 2003-03-28 | Method and apparatus for querying relational databases |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005521953A true JP2005521953A (ja) | 2005-07-21 |
Family
ID=27798837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003581065A Pending JP2005521953A (ja) | 2002-03-28 | 2003-03-28 | リレーショナルデータベースをクエリーする方法および装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20060074857A1 (ja) |
EP (1) | EP1349082A1 (ja) |
JP (1) | JP2005521953A (ja) |
CN (1) | CN1647075A (ja) |
AU (1) | AU2003222783A1 (ja) |
CA (1) | CA2480687A1 (ja) |
RU (1) | RU2004131664A (ja) |
WO (1) | WO2003083712A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013131218A (ja) * | 2011-12-20 | 2013-07-04 | Sap Portals Israel Ltd | 人物間の関係の分析および表示 |
JP2015520445A (ja) * | 2012-04-26 | 2015-07-16 | アマデウス エス.エイ.エス | バッチ指向型の計算を用いるデータベースシステム |
JP2016505956A (ja) * | 2012-12-13 | 2016-02-25 | インフォマティカ コーポレーションInformatica Corporation | 最適化されたデータサブセット化のための方法、装置及びコンピュータ読み取り可能媒体 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1544749B1 (en) * | 2003-12-16 | 2018-11-14 | Software AG | Method for searching a database and database |
US7668877B1 (en) * | 2005-09-23 | 2010-02-23 | Emc Corporation | System and methods for defining a canonical query expression |
FR2917201B1 (fr) * | 2007-06-05 | 2009-09-25 | Airbus France Sa | Procede et dispositif de gestion,de traitement et de controle de parametres utilises a bord d'aeronefs |
US10452768B2 (en) * | 2007-11-03 | 2019-10-22 | International Business Machines Corporation | Managing source annotation metadata |
US8150850B2 (en) * | 2008-01-07 | 2012-04-03 | Akiban Technologies, Inc. | Multiple dimensioned database architecture |
CN102033940B (zh) * | 2010-12-21 | 2012-08-08 | 郑州峰华电子有限责任公司 | 车流最短径路查询器 |
US9128967B2 (en) * | 2011-10-24 | 2015-09-08 | Accenture Global Services Limited | Storing graph data in a column-oriented data store |
US20130226966A1 (en) * | 2012-02-27 | 2013-08-29 | Technion Research & Development Foundation Limited | Processing a hierarchical structure to respond to a query |
US9576020B1 (en) * | 2012-10-18 | 2017-02-21 | Proofpoint, Inc. | Methods, systems, and computer program products for storing graph-oriented data on a column-oriented database |
US9081826B2 (en) | 2013-01-07 | 2015-07-14 | Facebook, Inc. | System and method for distributed database query engines |
US10268798B2 (en) * | 2015-09-22 | 2019-04-23 | International Business Machines Corporation | Condition analysis |
WO2018212106A1 (ja) * | 2017-05-19 | 2018-11-22 | 学校法人神奈川大学 | 情報検索装置、検索用プログラム、データベースの更新方法、データベースの更新装置、データベース更新用プログラム |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5241648A (en) * | 1990-02-13 | 1993-08-31 | International Business Machines Corporation | Hybrid technique for joining tables |
US5287493A (en) * | 1990-08-31 | 1994-02-15 | International Business Machines Corporation | Database interactive prompted query system having named database tables linked together by a user through join statements |
CA2168287C (en) * | 1995-03-31 | 2000-05-23 | Guy M. Lohman | Method for detecting and optimizing relational queries with encoding/decoding tables |
US5701460A (en) * | 1996-05-23 | 1997-12-23 | Microsoft Corporation | Intelligent joining system for a relational database |
US5758335A (en) * | 1996-09-27 | 1998-05-26 | Bull Hn Information Systems Inc. | Optimizing table join ordering using graph theory prior to query optimization |
US6976015B2 (en) * | 2001-11-07 | 2005-12-13 | Hyperion Solutions Corporation | Method for extracting data from a relational database using a reduced query |
AU2003258238A1 (en) * | 2002-08-20 | 2004-03-11 | Tokyo Electron Limited | Method for processing data based on the data context |
-
2002
- 2002-03-28 EP EP02007419A patent/EP1349082A1/en not_active Withdrawn
-
2003
- 2003-03-28 CN CNA038077000A patent/CN1647075A/zh active Pending
- 2003-03-28 US US10/509,522 patent/US20060074857A1/en not_active Abandoned
- 2003-03-28 WO PCT/EP2003/003276 patent/WO2003083712A1/en active Application Filing
- 2003-03-28 RU RU2004131664/09A patent/RU2004131664A/ru not_active Application Discontinuation
- 2003-03-28 CA CA002480687A patent/CA2480687A1/en not_active Abandoned
- 2003-03-28 AU AU2003222783A patent/AU2003222783A1/en not_active Abandoned
- 2003-03-28 JP JP2003581065A patent/JP2005521953A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013131218A (ja) * | 2011-12-20 | 2013-07-04 | Sap Portals Israel Ltd | 人物間の関係の分析および表示 |
JP2015520445A (ja) * | 2012-04-26 | 2015-07-16 | アマデウス エス.エイ.エス | バッチ指向型の計算を用いるデータベースシステム |
JP2016505956A (ja) * | 2012-12-13 | 2016-02-25 | インフォマティカ コーポレーションInformatica Corporation | 最適化されたデータサブセット化のための方法、装置及びコンピュータ読み取り可能媒体 |
Also Published As
Publication number | Publication date |
---|---|
CA2480687A1 (en) | 2003-10-09 |
RU2004131664A (ru) | 2006-06-10 |
EP1349082A1 (en) | 2003-10-01 |
US20060074857A1 (en) | 2006-04-06 |
CN1647075A (zh) | 2005-07-27 |
WO2003083712A1 (en) | 2003-10-09 |
AU2003222783A1 (en) | 2003-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2005521954A (ja) | リレーショナルデータベースをクエリーする方法および装置 | |
US5870739A (en) | Hybrid query apparatus and method | |
CN101436192B (zh) | 用于优化针对垂直存储式数据库的查询的方法和设备 | |
US8219560B2 (en) | Assessing relevant categories and measures for use in data analyses | |
US7401095B2 (en) | Method and system for composing a query for a database and traversing the database | |
US9703831B2 (en) | Contextual display of saved search queries | |
US20060036633A1 (en) | System for indexing ontology-based semantic matching operators in a relational database system | |
US20130006968A1 (en) | Data integration system | |
Meimaris et al. | Extended characteristic sets: graph indexing for SPARQL query optimization | |
JP2005521953A (ja) | リレーショナルデータベースをクエリーする方法および装置 | |
JP2006012173A (ja) | データ抽象化モデルにおける関係管理 | |
JP2003099441A (ja) | データ検索手順探索方法 | |
JP2001014329A (ja) | データベース処理方法及び実施装置並びにその処理プログラムを記憶した媒体 | |
US7539660B2 (en) | Method and system for generating SQL joins to optimize performance | |
CN111488406A (zh) | 一种图数据库管理方法 | |
US20080183663A1 (en) | Dynamic Index Selection for Database Queries | |
WO2013111287A1 (ja) | Sparqlクエリ最適化方法 | |
de Oliveira et al. | Efficient match-based candidate network generation for keyword queries over relational databases | |
CN108804580B (zh) | 一种在联邦型rdf数据库中查询关键字的方法 | |
JPH08235033A (ja) | オブジェクト指向データベース管理システムにおける結合演算方式 | |
US8190597B1 (en) | Multistage pipeline for feeding joined tables to a search system | |
Potocki et al. | OntoQuad: native high-speed RDF DBMS for semantic web | |
Jagadish et al. | Organic databases | |
JP2000163446A (ja) | 拡張可能問い合わせ処理器 | |
Berlanga et al. | Techniques and tools for the temporal analysis of retrieved information |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050617 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070220 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070814 |