(57)【要約】データベース（６）のデータの２以上の組を結合する方法が提供され、ファクトデータの中の特定のディメンション（１２）が強制されたディメンションとして指定され、各強制されたディメンションに対して１組のエントリがファクトデータにおいて生成され、その時強制されたディメンション以外の全てのディメンションで同一のキー値を伴い、そして各々はそのディメンションに対するファクトデータの中に存在する値の組の異なった要素を伴っている。このことは、少なくとも１のエントリが、強制されたディメンション以外の他のディメンションの中のキー値の同一の組を伴うファクトデータに存在する場合に、しかもその場合に限り、成り立つ。【特許請求の範囲】
【請求項１】
データベースからデータを得るために使用されるクエリを生成する方法であって、
前記データベースはファクトテーブル及び１以上のディメンションテーブルを含み、各ディメンションテーブルはディメンションを表現しているデータを提供して前記データは一組のエンティティに対する一組の属性の中の属性値を含んで各エンティティはキー値によって識別され、前記ファクトテーブルはデータエントリを含んで各データエントリは前記各々のディメンションからのエンティティと関連づけられ、前記クエリは１以上の前記ディメンションからの１以上の前記属性値を指定するデータへのリクエストに基づいており、
各々のディメンションに対してその方法が、
前記ディメンションの前記属性値と関連付けられた前記ディメンションの全ての前記キー値を確立する行程と、
前記ディメンションの前記キーの前記ナンバおよび前記属性値の前記ナンバの関数としてそのディメンションにおけるキー値又は属性値のどちらに対してクエリ処理するか選択する行程と、
もしも属性値クエリが選択される場合には属性値を使用しているそのディメンションに対応する前記クエリの前記一部分を生成する行程と、
もしもキー値クエリが選択される場合にはキー値を使用しているそのディメンションに対応する前記クエリの前記一部分を生成する行程と、を含むことを特徴とするクエリ生成方法。
【請求項２】
請求項１記載の方法であって、キー値又は属性値のいづれかへのクエリ選択の前記行程が、前記キー値のナンバをしきい値と比較する行程と、そして、
前記キー値のナンバが予め定められた値以下の場合は、前記ファクトデータテーブル上のキー値クエリを使用しているそのディメンションに対応するクエリの一部分を実行する行程と、を含むことを特徴とする方法。
【請求項３】
請求項２記載の方法であって、前記ディメンションの前記キー値ナンバが前記予め定められたしきい値より大きい場合において、前記ディメンションに対応する前記クエリの前記一部分の実行は
もしも、前記クエリを実行するに必要な、キー値の属性値に対する比率がある一定値よりも低い場合には、属性値を使用して実行され、そして、
もしも、前記比率が前記比率値よりも高い時はキー値を使用して、
実行されることを特徴とする方法。
【請求項４】
請求項３記載の方法であって、前記比率の値が、前記ディメンションがインデックス付けされているかどうかに依存することを特徴とする方法。
【請求項５】
請求項３記載の方法であって、前記クエリの前記一部分がキー値を使用して実行される場合において、
もしも前記ディメンションがインデックス付けされていない場合は前記クエリの前記一部分は前記ファクトデータテーブルだけを使用して実行され、そして、
もしも前記ディメンションがインデックス付けされている場合は前記クエリは、前記ファクトデータテーブルを前記対応するディメンションテーブルに結合させてそして前記結合されたディメンションテーブルの前記ディメンションキーに対してクエリ処理することによって、実行されることを特徴とする方法。
【請求項６】
データベースからデータを得るためのクエリを生成する装置であって、
前記データベースはファクトテーブル及び１以上のディメンションテーブルを含み、各ディメンションテーブルはディメンションを表現しているデータを提供して前記データは一組のエンティティに対する一組の属性の中の属性値を含んで各エンティティはキー値によって識別され、前記ファクトテーブルはデータエントリを含んで各データエントリは前記各々のディメンションからのエンティティと関連づけられ、前記クエリは１以上の前記ディメンションからの１以上の前記属性値を指定するデータへのリクエストに基づいており、その装置が、
前記ディメンションの前記属性値と関連付けられた各ディメンションの全ての前記キー値を確立する手段と、
前記ディメンションの前記キーの前記ナンバおよび前記属性値の前記ナンバとの関数としてそのディメンションにおけるキー値又は属性値のどちらに対してクエリ処理するか選択する手段と、
もしも、属性値クエリが選択される場合には属性値を使用しているそのディメンションに対応する前記クエリの前記一部分を生成する手段と、
もしも、キー値クエリが選択される場合にはキー値を使用しているそのディメンションに対応する前記クエリの前記一部分を生成する手段と、を含むことを特徴とするクエリ生成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データベースのデータクエリ処理に関し、より詳しくは、効率的にクエリを実行するために適切なクエリパラメータを選ぶ方法に関する。
【０００２】
【従来の技術】
データベースは、一般的にある性質のインスタンスデータを表わす１以上のファクトテーブルに、ファクトテーブル中のデータに対する属性を画定するディメンションデーブルに沿って、データを蓄える。図１に示されるようにファクトテーブルは、該当するインスタンスに関連付けられた特定のディメンションの要素をそれぞれ表現するカラムと、その特定のインスタンスに関連するデータを含む１以上の測定カラムを有する。しばしば測定値は、ファクトテーブルのレコードがまとめられる場合、何らかの方法で集められ得る値である。例えば、エントリーは合計されるかあるいは平均化される。しかし、これはそのようなケースではなく、ファクトテーブルの中のある測定カラムの「測定データ」は、任意の文字ストリングや他の種類の集められることができない値である。
【０００３】
【発明が解決しようとする課題】
本発明は、どんな種類のファクトテーブルにも、それが属性を有する１以上のディメンションに関連する限り、作用する。
【０００４】
【課題を解決するための手段】
ディメンションはクラス内の限定されたエンティティの組を表現し、それぞれは共通の方法によって分類され得る１以上の属性を伴う。一つのディメンションは、ディメンションテーブルの中において通常表現されて、１以上のカラムをテーブルにおいて有してディメンションにおける各エンティティを識別しており、それらはキー値又は値として知られている。キー値はしばしばディメンションのエンティティに対してそれらを一意的に識別するために与えられている任意の識別子である。他のテーブルのカラムはおそらくキーカラムの１つを含んでおり、それぞれのエンティティの異なる属性を提供する。これらの属性値は、異なったレベルにおいてディメンションテーブルのエンティティを集め、そして、それらの属性に従ってファクトテーブルからデータを抽出したり集めたりする為に使用可能である。
【０００５】
スペース効率の為と、データベースにおける不調和に至り得る冗長さを避ける為に、各々のディメンションに対するキー値のみが、ファクトテーブルに記憶される。より効率的な場合は、該当するディメンションのキー値と１対１な対応を有する内的な表現は、ファクトテーブルに記憶可能であることは注意すべきである。これらはユーザには決して見えない。この種の場合、内的な表現はこの議論の為のキー値であるとみなすことができる。
【０００６】
本願出願のクエリ例は、ＳＱＬ言語によって与えられ、その理由はこの言語が現在最も普及しているクエリ言語であるからである。しかし、ここで述べられる本願は、他のクエリ言語によって等しく効果的に表現され得ることは明らかである。
ユーザーによってリクエストされた属性値を使ってデータベースの中のデータに対してクエリが実行される場合、ディメンションテーブルはクエリの中に含まれなければならず、そのことは以下の例に示される。
【０００７】
【表１】
2004520633.tif 000002
【０００８】
この種のクエリにおいて、クエリで指定されるテーブルは、それぞれのテーブルのどんな共通なフィールドをも互いに結合する。上記の実例において、ｋｅｙ１フィールドはｄｉｍ１テーブルとファクトテーブルの両方に共通である。ｋｅｙ２フィールドはｄｉｍ２テーブルとファクトテーブルの両方に共通である。ｋｅｙ３フィールドは、ｄｉｍ３テーブルとファクトテーブルの両方に共通である。
【０００９】
この種の結合を利用する事によって、エントリーは出力テーブルにおいて生成されて、結合フィールドが各テーブルにおいて同一である２つの結合テーブルの両方のエントリーのすべての組み合わせに対応する。結合フィールドは、出力結合テーブルに一度現れるだけである。例えば、図２Ａと２Ｂに示される２つのテーブルを結合するとその結果、図２Ｃに示される出力テーブルが与えられる。
【００１０】
しかし、もしも属性値の初期マッピングがそれぞれのディメンションで選択されて、そのディメンションのキー値の上にマッピングされる場合、ディメンションテーブルをファクトテーブルとクエリにおいて結合する必要はなく、なぜなら全ての必要な情報はファクトテーブルにあるからである。例えば、クエリは次のように示される。
【００１１】
【表２】
2004520633.tif 000003
【００１２】
データベースがクエリを扱う方法に依存しているので、これはしばしば等価属性論理クエリよりもはるかに能率的であり、その理由はディメンションテーブルがクエリの中に含まれる必要がないからである。さらにデータベースエンジンは、多様な最適化による属性よりもはるかに能率的にキー値を処理可能である。
【００１３】
データベースは、ファクトテーブルを例えばそれぞれのディメンションのキー値によってインデックス付けることによって最適化可能である。適切なファクトデータは、結果として生じるデータセットを含んで、インデックスのそれぞれのキーに対するエントリーを通してスキャンする事によって非常に早く発見可能であり、その理由は特定のキーに関連するインデックスは、連続的に配列されるからである。
【００１４】
もしそのようなインデックスに基礎をおいた構成がデータベースに使用されるなら、以下の種類のクエリはしばしば、キー値上のクエリ処理の時でさえ、より有利である。
【００１５】
【表３】
2004520633.tif 000004
【００１６】
現行のデータベースクエリ処理ツールによって用いられるどんなクエリ論理であるかに関わらず、それらは同じリクエストから適切なＳＱＬクエリへの変換を用い、そして、選択されたクエリ論理の使用をサーチされるエントリー数に無関係である。例えば、ある状況においては、特にディメンションにおいてより高いレベルであるとき、選択することによって選択基準に適合するディメンションテーブルからの多数のレコードを、結果としてもたらす。例えば、市場におけるすべてのミューチュアルファンドの全ての在庫資金が求められるかもしれない。実際、選択基準に一致している何百ものディメンションエントリがあるかもしれない。もしも、データベースクエリ処理ツールが自動的に設定されて、選択ディメンション属性エントリーがファンドディメンションのキー値に変換されるならば、そのディメンションは選択基準に一致するキー値を見つけようとしてサーチするだろう。該当するエントリーは、「ＩＮ」リストを使うクエリに上記のように加えられる。キー値が非常に大きくなる場合は問題が起きる。多くのデータベースシステムは、単一の「ＩＮ」リストにおいて値のナンバの制限を課しており、クエリツールはそれゆえにクエリを多くのクエリに分散し、データベースにおいてサーチする。更に、ディメンションがインデックス付けされていなかったとしても、ファクトテーブルだけを用いてキー値の重要な数字をクエリ処理する事は、少ない属性値をクエリ処理してそして、ディメンションをクエリに導入するよりも、長い時間がかかる。例えば、データベースエンジンが属性値に関連するディメンションテーブルの中から見つけ出して、それが一致しているかを見る事は、キー値が一致しているかどうかを見ることと同じ位に迅速である。もしも、等価クエリにおいて、属性値のナンバよりもキー値がはるかに多く存在している場合、関連するディメンションにおける属性値を見つけ出す事は、それらの一つが一致するかどうか全てのキー値を見てチェックするよりも、殆ど確実に早い。
【００１７】
クエリツールは、クエリ処理された実際の属性に依存している選択可能なクエリ構造から選ぶ事が出来るように要求される。
本発明は１以上のディメンションからの属性を含むデータリクエストからクエリを生成する方法を提供し、属性に対応するキー値は確かめられ、クエリを実行する為に必要な属性及びキー値の個数に依存するクエリにおけるキー値ロジックあるいは属性ロジックのいずれを使用すべきかを決定する為に用いられる。
【００１８】
【発明の実施の形態】
本発明による実施例は図３から図４に関連して、述べられる。
図３に示されるように、クエリジェネレータ２０は、アプリケーションサーバ２上のオブジェクトとして提供されている。クエリジェネレータは、外部リクエストを受け入れて、そこからＳＱＬクエリを生成する。これらのＳＱＬクエリは、データベース６からリクエストされたデータを検索するデータベースエンジン４に送られる。戻ったデータはその後データベースエンジンからアプリケーションサーバへと送り返されて、リクエスタ（ｒｅｑｕｅｓｔｏｒ）に送り返されるか、処理されて他のところ、例えばディスプレイサーバ１０へと送られる。
【００１９】
アプリケーションサーバは又、検索されることになっているファクトデータに関するデータベースに蓄えられたディメンションのレプリカ１２を記憶する。１以上の属性を含むリクエストが、クエリジェネレータによって受容されるとき、クエリジェネレータはディメンションエントリーを通してサーチし、そして、要求された全てのキー値を識別する。これはデータベースサーバへのクエリを使用することにより可能であるが、しかし、ずっと能率が悪い。
【００２０】
クエリジェネレータ２０は、それから以下の論理を用いてクエリ生成の方法を決定し、このことは図４のフローチャートに表現されている。
各ディメンションに対して、キー値のナンバが特定の経験的に決定されたしきい値以下である場合、単にキー値をファクトテーブルの中の値と比較してクエリの結果を得るのがより効率的であるとみなされる。この出願人によって具現化された実施例のシステムにとって、このしきい値の理想的な値は３０であると分かった。この場合、生成されたクエリはディメンションを含まず、単にファクトデータ上に作成される（このディメンションに関しては「クエリなし」と呼ばれ、ディメンションがリクエストされていないからである。）例えば、以下のクエリが生成される。
【００２１】
【表４】
2004520633.tif 000005
【００２２】
しかし、キーのナンバが特定の予め定められたしきい値を越える場合は、生成されたクエリは、ファクトテーブルのディメンションへのインデックスがあるかないかによって変化する。
上に示されたように、ディメンションがインデックスを付けられる場合には、そのディメンションからのキー値は、非常に迅速にそのキー値を取り入れているファクトテーブルの適切なエントリーの上へとマッピングされる。
【００２３】
ディメンションキーがインデックスを付けられる場合、比較がなされて実行されて、クエリの中に現れるキー値のナンバが、ある一定の予め定められた定数Ａの倍数された属性値のナンバを越えるかどうかを見て、又経験的に進行する。この出願人によって具現化された実施例のシステムにとって、このしきい値の理想的な値は３０であると分かっており、しかし、この値は上述の議論されたしきい値に関連していない事が注目されるべきである。
【００２４】
キー値のナンバがこの値を越える場合、属性論理はより効果的となり、そして、属性クエリは生成される。例えば、「結合を有する」クエリは、以下の項を含んで生成される。「結合を有する」という言葉は、図２Ａ−２Ｃに関連して議論されたように、該当するディメンションテーブルとファクトテーブルとの間に結合を実行する事実に関している。クエリに基礎を置く全ての属性は、そのディメンションに関して「結合を有する」クエリであるという事が注目されるべきであり、何故ならば、ディメンションテーブルに対するリソースなしでは、属性値は確認される事が出来ないからである。
【００２５】
【表５】
2004520633.tif 000006
【００２６】
しかし、キー値のナンバが属性値の定数Ａ倍をかけられたナンバを越えない場合は、「結合を有する」クエリに基礎をおいたキー値は、クエリにディメンションを含んで生成され、データベースエンジンの最適化されたインデックス処理を用いる。クエリは以下の項を含む。
【００２７】
【表６】
2004520633.tif 000007
【００２８】
該当するディメンションがインデックスが付けられない場合は、例えあったとしても、キー値を使用する利点がより少ない。例えば、データベースエンジンが関連するディメンションテーブルの属性値を探し出してそれが一致するかをチェックする速さはそれが、キー値が一致するかどうかを見るくらいに速い。それゆえ、この場合においては、経験的な係数を確立する長さに向かうよりはむしろ、キー値のナンバと属性値ナンバとの単純な比較がなされる。しかし、この種の係数は適切であるなら、データベースエンジンに依存して使用され得る。
【００２９】
キー値の値がそのディメンションに対するクエリにおいて用いられる属性値のナンバよりも大きい場合は、「結合を有する」属性クエリは、クエリの中のそのディメンションに対して用いられる。一方、「結合を持たない」クエリキーはそのディメンションに対して用いられ、サーチにおいてディメンションを含む利点が、それがインデックスを付けられていないが故に、存在しない。
【００３０】
この選択算法はあらゆるディメンションに対して繰り返され、クエリは適切に生成されてデータベースクエリエンジンに転送される。
勿論、各々のディメンションの異なったクエリの性質によって、異なった結合は各々のディメンションに生成される。あるディメンションはクエリの中に含まれ、他のものは、含まれない。さらに、いくつかのディメンションは、属性論理を含み、他のものは含まない。例えば、以下の完全クエリは生成されて第１ディメンション及び第３ディメンションをそのクエリに含み、第１のものはキー値論理を使用し、第２のものは属性値論理を使用する。
【００３１】
【表７】
2004520633.tif 000008
【００３２】
特定のリクエストは、これまでに記載されている場合よりも、より複雑である。例えば、「複式保持」リクエストは、ユーザーが複数の分離された選択（「保持」）をディメンションから作るときに起きる。この場合生成されるクエリは、句（ｃｌａｕｓｅ）をこの状況に対してモデル化する際にＯＲ論理を用いる必要がある。例えば、ユーザーがディメンションｄｉｍ１から選択するときに、複式「保持」を選ぶ場合を仮定する。第１保持は、属性ａｔｔｒ１とａｔｔｒ２とを含み、一方、第２保持は属性ａｔｔｒ３とａｔｔｒ４とを含む。生成されたクエリは以下のようでなければならない。
【００３３】
【表８】
2004520633.tif 000009
【００３４】
この実施例によれば、この種類のクエリに関して、属性に基礎を置いたクエリに参照される各属性は、上記の算法（アルゴリズム）によって属性として計数される。キー値を使用する等価クエリは、最初に説明したのと同じフォーマットであり、単純な「ＩＮ」リストを有して、そして、キー値のナンバを確立すべき複雑さをそれゆえに加えない。
【００３５】
ユーザが、「ベース」計算（すなわちシェアのような「ｓｔｈ」）を含む測定を選ぶときは、しかしより複雑なシナリオが発生する。これは一般的に、与えられたディメンションからの「舞台裏の」追加的選択を必要とする。キー論理は、ディメンションのためのキーリストの追加的なキー値によってこの状況を解決する。属性論理は、複式「保持」に関連する構文の一番上の追加的ＯＲを実行する必要がある。（上の実例からの複式「保持」の一番上において）ユーザーがディメンションｄｉｍ１の追加的な選択を必要とする「ベース」計算を選択すると仮定し、それを今、属性ａｔｔｒ５からとしよう。クエリは以下のように読み取れる。
【００３６】
【表９】
2004520633.tif 000010
【００３７】
この種の状況は、「複式保持」シナリオに似た方法で、処理される。
スター結合オプションは、属性論理オプションと、インデックス付けされたディメンションに基づいたスター結合を使用するある種のディメンションと、そして、標準属性論理を用いるある種のディメンションと、に連動して用いられることが注意されるべきである。単純な属性論理の場合がディメンションｄｉｍ１に用いられると仮定すれば、クエリは以下のように見られる。
【００３８】
【表１０】
2004520633.tif 000011
【００３９】
この実施例のシステムの場合、ユーザプロファイルはユーザに対して戻されるデータをサブセット可能にする。ユーザはユーザだけが見る特権を与えられているそれらの記録に対してのみアクセスを有する。ベースはそれを実現するためにフィルタリング機構を使用する。属性論理の観点から、ユーザプロファイルは、ユーザがアクセスすることができるデータのサブセットを判定するディメンション選択の組である。ディメンションｄｉｍ１の為のユーザプロファイルが、ユーザは与えられた値のリストに属性ａｔｔｒＫ値が存在するそれらのレコードに対してのみアクセスし得ているように規定すると仮定すると、その属性論理によって生成されるクエリは以下のように見られる。
【００４０】
【表１１】
2004520633.tif 000012
【００４１】
述べられた属性値は本発明のこの実施例の算法では単一属性値として扱われる。
属性論理は分割されたファクトセットによって打撃を受けない。物理的パーティションの場合、それぞれのパーティションは集約（ａｇｇｒｅｇａｔｅ）テーブルを用いる事によって画定される。一般的に、クエリは記載されるロジックを使用するそれぞれのパーティションに対して発行される。
【００４２】
本発明の好適な実施例が例示され記載されているが、当業者においては、変更と修正は本発明のより広い面から逸脱する事なく、為され得る事が理解されるべきである。本発明の多様な特徴は、請求項に記載されている。
【図面の簡単な説明】
【図１】例として、３つの生成関連テーブル及び対応するファクトテーブルを示している。
【図２Ａ】例としてのテーブルを示す。
【図２Ｂ】例としてのテーブルを示す。
【図２Ｃ】図２Ａ及び２Ｂに示されている２つのテーブルの結合を示す。
【図３】本発明の第１実施例によるシステム構成要素を示す。
【図４】本発明の第１実施例に従う選択算法を表現しているフローチャートである。
【符号の説明】
２  アプリケーションサーバ
６  データベース
１０  ディスプレイサーバ
１２  ディメンション
２０  クエリジェネレータ
【図１】
2004520633.tif 000013
【図２Ａ】
2004520633.tif 000014
【図２Ｂ】
2004520633.tif 000015
【図２Ｃ】
2004520633.tif 000016
【図３】
2004520633.tif 000017
【図４】
2004520633.tif 000018
【国際公開パンフレット】
2004520633.tif 000019
2004520633.tif 000020
2004520633.tif 000021
2004520633.tif 000022
2004520633.tif 000023
2004520633.tif 000024
2004520633.tif 000025
2004520633.tif 000026
2004520633.tif 000027
2004520633.tif 000028
2004520633.tif 000029
2004520633.tif 000030
2004520633.tif 000031
2004520633.tif 000032
2004520633.tif 000033
2004520633.tif 000034
2004520633.tif 000035
2004520633.tif 000036
2004520633.tif 000037
2004520633.tif 000038
2004520633.tif 000039
【国際調査報告】
2004520633.tif 000040