(57)【要約】パーティションが設けられたデータベースオブジェクト（１０３）に対して実行される照会（１０２）の応答時間を改善するための方法およびメカニズム。パーティションを通る各パス中にパーティションのサブセットまたは部分のみがアクセスされ、パーティションの検索された部分のみが処理され、照会に対して即座に結果を返すことができる（１０４）。所与のパスでパーティションのサブセットのみを処理することによって、第２のパーティションを処理する前に第１のパーティションをすべて処理することを要求するのではなく、各パーティションを複数回にわたって処理することができる（１０８）。ある方法では、照会は、ローカルインデックスを含むパーティションが設けられたデータベースオブジェクトに対する照会に対する結果のセットを配列するための記述を含む。
2004528660.tif 000002
【特許請求の範囲】
【請求項１】
パーティションが設けられたデータベーステーブルに対する照会の応答時間を改善するための方法であって、
（ａ）  データベーステーブルに向けられた照会を受取るステップを含み、前記データベーステーブルは複数のパーティションを含み、前記方法はさらに、
（ｂ）  前記照会を満たすために、前記複数のパーティションからパーティションのセットを識別してアクセスするステップと、
（ｃ）  パーティションの前記セットの各パーティションから検索するための指定された数の行を規定するステップとを含み、前記指定された数の行は、パーティションの前記セットからの前記照会に応答する行の合計の数より少なく、前記方法はさらに、
（ｄ）  パーティションの前記セットの各パーティションから前記指定された数の行を検索して結果のセットを形成するステップと、
（ｅ）  前記結果のセットを調べて前記照会に与えるための１つまたは複数の応答する行を識別するステップと、
（ｆ）  前記１つまたは複数の応答する行を与えるステップとを含む、方法。
【請求項２】
前記照会は、１つまたは複数の補助的な演算子を含む、請求項１に記載の方法。
【請求項３】
ローカルインデックスがパーティションの前記セットの各パーティションに対して存在し、前記ローカルインデックスは、前記指定された数の行を検索するために使用される、請求項１に記載の方法。
【請求項４】
前記ローカルインデックスは、ユーザに規定されるインデックスである、請求項３に記載の方法。
【請求項５】
前記ローカルインデックスは、Ｂ*ツリーインデックスである、請求項３に記載の方法。
【請求項６】
前記ローカルインデックスは、対応するパーティション内の行に対してソートされた配列を与える、請求項３に記載の方法。
【請求項７】
前記ローカルインデックスは、動的に生成される、請求項３に記載の方法。
【請求項８】
前記結果のセットを調べる動作は、
前記結果のセットをソートするステップと、
前記ソートされた結果のセットから１つまたは複数の行を選択するステップとを含む、請求項１に記載の方法。
【請求項９】
ステップｄ〜ｆは、前記照会によって要求されるすべての行が与えられるまで繰返される、請求項１に記載の方法。
【請求項１０】
ステップｄ〜ｆの後続の繰返しは、パーティションの前記セット内の各パーティションから検索するために第２の指定された数の行を使用する、請求項９に記載の方法。
【請求項１１】
ステップｄ〜ｆの後続の繰返し中に１つまたは複数のパーティションを取除くステップをさらに含む、請求項９に記載の方法。
【請求項１２】
ステップｄ〜ｆの以前の繰返しは、ステップｄ〜ｆの後の繰返しよりも指定された行の数が多い、請求項９に記載の方法。
【請求項１３】
前記指定された行の数は、前記照会を満たすために返さなければならない行の数と等しい、請求項１に記載の方法。
【請求項１４】
前記照会は、複数のパーティションにわたってソートするステップを伴う、請求項１に記載の方法。
【請求項１５】
前記照会は、スループットではなく、改善され最適化された応答時間で識別される、請求項１に記載の方法。
【請求項１６】
前記照会は、前記照会に対して返されるべき応答する行を制限する、請求項１に記載の方法。
【請求項１７】
前記結果のセットを調べる前記動作は、
後に検索された行を前記結果のセットに併合するステップを含み、前記結果のセットは、以前に検索された行を含む、請求項１に記載の方法。
【請求項１８】
前記結果のセットはソートされる、請求項１に記載の方法。
【請求項１９】
データベースオブジェクトを照会するための方法であって、
前記データベースオブジェクトにパーティションを設けて第１のパーティションおよび第２のパーティションを作成するステップと、
前記第１のパーティションに対して第１のローカルインデックスを作成するステップと、
前記第２のパーティションに対して第２のローカルインデックスを作成するステップと、
前記データベースオブジェクトに対する照会を受取るステップと、
前記第１および第２のローカルインデックスを使用して、前記第１および第２のパーティションの部分をサーチしかつ検索するステップと、
前記第１および第２のパーティションの前記部分をソートするステップと、
前記照会に応答して前記部分の一部またはすべてを与えるステップとを含む、方法。
【請求項２０】
前記照会は、１つまたは複数の補助的な演算子を含む、請求項１９に記載の方法。
【請求項２１】
前記第１および第２のローカルインデックスは、ユーザに規定されるインデックスである、請求項１９に記載の方法。
【請求項２２】
前記第１および第２のローカルインデックスは、Ｂ*ツリーインデックスである、請求項１９に記載の方法。
【請求項２３】
前記第１および第２のローカルインデックスは、前記第１および第２のパーティションの内容に対してソートされた配列を与える、請求項１９に記載の方法。
【請求項２４】
前記サーチ動作、ソート動作および与える動作は、前記照会によって要求されるすべてのデータが与えられるまで繰返される、請求項１９に記載の方法。
【請求項２５】
前記サーチ動作のステップの後続の繰返しは、前記第１および第２のパーティションの異なるサイズの部分を検索する、請求項２４に記載の方法。
【請求項２６】
前記サーチ動作、ソート動作および与える動作の後続の繰返し中に、１つまたは複数の
パーティションを取除くステップをさらに含む、請求項２４に記載の方法。
【請求項２７】
コンピュータの使用可能な媒体であって、請求項１に記載の方法によって製造されたデータセットプロダクトを含む、コンピュータの使用可能な媒体。
【請求項２８】
コンピュータの使用可能な媒体であって、請求項１９に記載の方法によって製造されたデータセットプロダクトを含む、コンピュータの使用可能な媒体。
【請求項２９】
プロセッサによって使用可能な媒体を含むコンピュータプログラムプロダクトであって、前記媒体は、前記プロセッサによって実行されると、パーティションが設けられたデータベーステーブルに対する照会を実行するためのプロセスを前記プロセッサに実行させ、前記プロセスは、
（ａ）  データベーステーブルに向けられた照会を受取るステップを含み、前記データベーステーブルは複数のパーティションを含み、前記プロセスはさらに、
（ｂ）  前記照会を満たすため、前記複数のパーティションからパーティションのセットを識別してアクセスするステップと、
（ｃ）  パーティションの前記セットの各パーティションから検索するための指定された数の行を規定し、前記指定された数の行は、パーティションの前記セットからの前記照会に応答する行の合計の数よりも少なく、前記プロセスはさらに、
（ｄ）  パーティションの前記セットの各パーティションから前記指定された数の行を検索して結果のセットを形成するステップと、
（ｅ）  前記結果のセットを調べて前記照会に与えるための１つまたは複数の応答する行を識別するためにステップと、
（ｆ）  前記１つまたは複数の応答する行を与えるステップとを含む、コンピュータプログラムプロダクト。
【請求項３０】
プロセッサによって使用可能な媒体を含むコンピュータプログラムプロダクトであって、前記媒体は、前記プロセッサによって実行されると、データベースオブジェクトを照会するためのプロセスを前記プロセッサに実行させ、前記プロセスは、
前記データベースオブジェクトにパーティションを設けて第１のパーティションおよび第２のパーティションを作成するステップと、
前記第１のパーティションに対して第１のローカルインデックスを作成するステップと、
前記第２のパーティションに対して第２のローカルインデックスを作成するステップと、
前記データベースオブジェクトに対する照会を受取るステップと、
前記第１および第２のローカルインデックスを使用して、前記第１および第２のパーティションの部分をサーチしかつ検索するステップと、
前記第１および第２のパーティションの前記部分をソートするステップと、
前記照会に応答して前記部分の一部またはすべてを与えるステップとを含む、コンピュータプログラムプロダクト。
【請求項３１】
データベースオブジェクトに対する照会を実行するためのシステムであって、
（ａ）  データベーステーブルに向けられた照会を受取るための手段を含み、前記データベーステーブルは複数のパーティションを含み、前記システムはさらに、
（ｂ）  前記照会を満たすために、前記複数のパーティションからパーティションのセットを識別してアクセスするための手段と、
（ｃ）  パーティションの前記セットの各パーティションから検索するための指定された数の行を規定するための手段とを含み、前記指定された数の行は、パーティションの前記セットからの前記照会に応答する行の合計の数よりも少なく、前記システムはさらに、
（ｄ）  パーティションの前記セットの各パーティションから前記指定された数の行を検索して結果のセットを形成するための手段と、
（ｅ）  前記結果のセットを調べて前記照会に与えるための１つまたは複数の応答する行を識別するための手段と、
（ｆ）  前記１つまたは複数の応答する行を与えるための手段とを含む、システム。
【請求項３２】
データベースオブジェクトに対する照会を実行するためのシステムであって、
前記データベースオブジェクトにパーティションを設けて第１のパーティションおよび第２のパーティションを作成するための手段と、
前記第１のパーティションに対して第１のローカルインデックスを作成するための手段と、
前記第２のパーティションに対して第２のローカルインデックスを作成するための手段と、
前記データベースオブジェクトに対する照会を受取るための手段と、
前記第１および第２のローカルインデックスを使用して、前記第１および第２のパーティションの部分をサーチしかつ検索するための手段と、
前記第１および第２のパーティションの前記部分をソートするための手段と、
前記照会に応答して前記部分の一部またはすべてを与えるための手段とを含む、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
背景および概要
この発明は、コンピュータシステムの分野に関する。特に、この発明は、パーティションが設けられたデータベースオブジェクトを伴う照会を実行するための応答時間を改善するための方法およびシステムに関する。
【背景技術】
【０００２】
データベース管理システムは、コンピュータに基づいたシステムであり、情報を管理し、記憶する。多くのデータベースシステムでは、ユーザは、データベース維持の責任を負うデータベースアプリケーションに対してコマンドをサブミットすることによって、情報を記憶、更新および検索する。従来のクライアント−サーバアーキテクチャでは、ユーザはクライアントステーションに位置し、データベースアプリケーションはサーバにある。インターネットが広く使用される現在では、多層データベースアーキテクチャが一般的である。多層システムに対する１つの方法では、ユーザは、ユーザステーションにあるユーザインターフェイス（たとえば、ウェブブラウザ）を通じてアクセスを与えられ、ユーザインターフェイスは、情報の要求を中間層のサーバ（たとえば、ウェブサーバ）に送り、ウェブサーバは、１つまたは複数のバックエンドデータベースサーバからのデータの検索およびパッケージングを行なう。パッケージングされた情報「ページ」は、ユーザインターフェイスに送られ、ユーザに表示される。
【０００３】
コンピュータハードウェアシステムおよびソフトウェアシステムが進歩するにつれ、データベースシステムによって管理されるデータの量は急速に増えている。カリフォルニア州レッドウッドシャーのオラクル・コーポレイション（Oracle Corporation）のＯｒａｃｌｅ  ８ｉ製品などの現在入手可能なデータベースシステムは、コンピュータからの何テラバイトものデータをサポートすることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
大量のデータを有するデータベースを実現することの欠点は、他の点はすべて等しいとして、大きなデータのセットに対する照会は、通常、小さなデータのセットに対する照会よりも応答時間が低下することである。データベースの照会を実行するための１つの方法では、データベース内の関連するデータ（または、関連するインデックス）の全体を処理して、照会に対する応答する返答を生成する。大きなデータのかたまりに対する照会の応答時間の低速化は、データベース照会を満たすためにアクセスされる大量のデータによるものであり得る。大きなデータベースが普及するにつれ、これら大きなデータベースを照会しようとするユーザに大きなレベルの遅延が発生するだろう。これらの遅延は、大きなデータベースシステムを使用する組織をいらいらさせるような遅延および非効率のもととなり得る。
【０００５】
この問題の例は、典型的なインターネットサーチエンジンに存在する。インターネットサーチエンジンは、ウェブサイトのサーチ可能なデータベースを維持しており、これはさまざまな方法でインデックスをつけることができる。近年、インターネットウェブサイトの数は爆発的に増加しており、それに対応してインターネットサーチエンジンによって維持されかつサーチされるウェブサイトのデータの量も増加している。サーチ要求を満たすためにサーチしなければならない大きなデータのセットのため、サーチエンジンによってユーザに結果を返す前にますます大きな遅延が生じ得る。多くのサーチエンジンは、（たとえば、サーチされる語がウェブサイトに現われる回数に基づいて）サーチ結果に対してソート動作を行なうので、サーチ結果を確実に正しく配列するために、何らかの結果をユーザに与える前に、サーチエンジンによって維持される大きな情報のかたまり内の応答するデータのすべてを検索しかつソートしなければならない。これは、サーチエンジンによって返されるｎ番目のページにしばしば現われる有用性の低い情報ではなく、サーチ結果の最初の数ページからの最も関連性の高い情報を見たいだけのユーザにとっては苛立たしいことである。
【０００６】
照会は、パーティションが設けられたデータベースオブジェクトにアクセスしようとすることがある。データベースシステムにおいてパーティションを設けることは、一般に、あるオブジェクトをより多くの比較的小さなオブジェクトに分解するプロセスを指す。小さなオブジェクトは、大きなオブジェクトよりも管理が容易でかつ効率的にサーチできることが多い。したがって、データベースシステムは、パーティションを設けるステップを使用して、テーブルおよびインデックスなどのオブジェクトをより小さくかつより管理しやすい部分または「パーティション」に分解する。
【課題を解決するための手段】
【０００７】
この発明は、パーティションが設けられたデータベースオブジェクトに対して実行される照会の応答時間を改善するための方法およびメカニズムを提供する。この発明の１つの開示される実施例は、特に、パーティションが設けられたデータベーステーブルの複数のパーティションにわたって結果の相対的な序列化または配列が計算されることを伴う照会に利用することができる。パーティションが設けられたオブジェクトでの述語の評価は、通常、１つのパーティション上での繰返しを伴うため、そのような照会の評価は、通常、データを検索、記憶かつソートするために大きなオーバーヘッドを要し、すべてのパーティションが処理されるまで照会の結果をブロックすることから生じる遅延を要する。この発明のある実施例は、パーティションを通る各パスの間にパーティションの部分のみにアクセスして、パーティションの検索された部分のみを処理し、照会に対する結果を即座に返すことによって、この問題に対処する。これらステップは、照会を満たすために必要とされるすべての結果が与えられるまで繰返される。この発明の局面、目的および利点のさらなる詳細は、詳細な説明、図面および請求の範囲で説明する。
【０００８】
添付の図面は、この発明の理解を深めるためのものであり、詳細な説明とともに、この発明の原理を説明する。
【発明を実施するための最良の形態】
【０００９】
詳細な説明
この発明を具体的な実施例を参照して説明する。しかしながら、この発明の幅広い精神および範囲から離れることなく、さまざまな変形および変更を行ない得ることは明白であろう。読者には、プロセスフロー図に示されるプロセス動作の具体的な配列および組合せならびにここに記載される構成要素図のシステム構成要素は単に例示的なものであり、この発明はプロセス動作および構成要素の異なるかまたは付加的な組合せ／配列を使用して実現可能であることを理解されたい。たとえば、この発明は、パーティションが設けられたデータベーステーブルに関して特に示されているが、この発明の原則は他のタイプのパーティションが設けられたデータベースオブジェクトに対しても等しく適用可能であることに注意されたい。したがって、明細書および図面は、限定的な意味ではなく、例示的な意味のものと理解されたい。
【００１０】
この発明の開示される１つの実施例は、パーティションが設けられたデータベーステーブルに対して実行される照会の応答時間を改善するための方法およびメカニズムを提供し、パーティションが設けられたデータベーステーブルの複数のパーティションにわたって結果の相対的な序列化または配列が計算されることを伴う照会に特に適用可能である。パーティションが設けられたテーブルでの述語の評価には、通常、１つのパーティション上での繰返しを伴うため、そのような照会の評価は、通常、データを検索、記憶かつソートするために大きなオーバーヘッドを要し、すべてのパーティションが処理されるまで照会の結果をブロックすることによる遅延を要する。この発明の一実施例は、パーティションの部分にのみアクセスし、パーティションの検索された部分のみを処理し、照会に対して即座に結果を返すことによって、この問題に対処する。
【００１１】
図１は、この発明のある実施例による照会を実行するためのプロセスのフローチャートである。１０２では、プロセスは、パーティションが設けられたデータベーステーブル内のデータをサーチする好適な照会を受取る。上述のように、データベースシステムにおいてパーティションを設けることは、一般に、あるオブジェクトをより多くの比較的小さなオブジェクトに分解するプロセスを指す。
【００１２】
照会を満足させるためにアクセスされるべきパーティションが識別される（１０３）。一実施例では、照会に応答する情報を含む可能性のある各関連のパーティションが、サーチされなくてはならないパーティションとして識別される。関連する情報を含まない他のすべてのパーティションは、サーチから「取除く」ことができる。またはこれに代えて、特定のパーティションの照会語に対する関連性に関わりなく、すべてのパーティションをサーチして、照会を実行することもできる。
【００１３】
このプロセスは、まず各パーティションから、指定された数の応答する行のみを検索し、各パーティションは、総当たりでアクセスされる（すなわち、第１のパーティションからｎ行を検索し、次に、第２のパーティションから別のｎ行を検索する等）（１０４）。実質的に、照会は、まず各パーティションの部分に対してのみ実行され、各パーティションに対する結果の最初のセットは、そのパーティションの応答する行の小さなサブセットのみを含んでもよい。他のアクセス手順も使用可能である。たとえば、パーティションは、総当たりでない方法でのソート／併合プロセスでアクセス可能であり、ある数の行があるパーティションから検索され、併合されるが、他のパーティションからはまだ消費されていない。さらに、パーティションには並行してアクセスすることが可能であり、拡張性が向上する。結果の最初のセットがパーティションから返され、これらはグループとして調べられる（１０６）。結果のグループ全体が調べられ、どの行を照会の応答の最初のセットとしてユーザに即座に出力すべきかを判定する。
【００１４】
結果の最初のグループから、行の一部が即座にユーザに与えられる（１１０）。したがって、各パーティションのある部分にのみアクセスした後に、ユーザに照会の応答の第１のセットを与えることができるため、何らかの結果が返される前にすべてのパーティションを完全に照会することを必要とするシステムと比較して、情報をユーザに表示するための応答時間が大幅に改善される。
【００１５】
次に、このプロセスは照会を十分に満たすためにさらに多くの行を検索しなければならないかを判定する（１０８）。もしそうであれば、上述のステップが繰返され、別の指定された数の応答する行が各パーティションから検索され（１０４）、すべてのパーティションからの結果がグループとして調べられ（１０６）、結果の次のセットが即座にユーザに与えられる（１１０）。ある実施例では、以前に検索された行は、ユーザに与えるべき特定の照会の結果の行を識別するために、検索された行の新しいグループに併合される。これらプロセス動作は、照会を満たすためにパーティションから行が検索されなくなるまで繰返される。
【００１６】
一実施例では、１つまたは複数のパーティションをサーチから取除くことができると認められたときは、たとえプロセスの最中であっても、照会するために識別されたパーティションのリストを変更することができる（１１２および１１４）。たとえば、これは、あるパーティションから検索された行の最初のセットによって、そのパーティションが照会を満たすのに必要な行を含まないことが明らかであるときに行なわれ得る。
【００１７】
例示的な実施例
この発明をさらに詳しく説明するため、図２ａの給与のテーブル２００に示される例としてのデータベーステーブルを参照する。給与のテーブル２００は、ユーザ識別の値を記憶するための第１の列２０２、および各対応するユーザ識別についての給与情報を記憶するための第２の列２０４を有するデータベーステーブルである。多くの理由から、給与のテーブル２００を複数のパーティションに分解することが望ましい場合があり得る。たとえば、給与のテーブル２００が非常に多数の行を含む場合、給与のテーブル２００を複数のより小さいパーティションに記憶すれば、メンテナンス動作をより効率よく行なうことができる。さらに、照会がパーティションのサブセットにのみ存在する情報を求めている場合、関連する情報を含まないパーティションのすべてを照会の実行から取除けば照会の効率が向上する。
【００１８】
図２ｂは、図２ａの給与のテーブル２００に行ない得るパーティションを設ける手法の例を示す。パーティションを設けるこの手法では、「パーティションを設ける基準」が確立され、これが各行のユーザ識別の値の最初の文字に基づいて給与のテーブル２００のデータを分離する。「ａ」の文字で始まるユーザ識別の値を有する給与のテーブル２００のすべての行は、第１のパーティションｐ１に記憶される。同様に、「ｂ」の文字で始まるユーザ識別の値を有する給与のテーブル２００のすべての行は、第２のパーティションｐ２に記憶され、「ｃ」の文字で始まるユーザ識別の値を有するすべての行は、第３のパーティションｐ３に記憶される。
【００１９】
１つまたは複数のローカルインデックスを各パーティションに関連づけてもよい。一実施例では、ローカルインデックスは、パーティションが設けられたある特定のテーブル内のデータに関連づけられるパーティションが設けられたインデックスである。ローカルインデックスに対してパーティションを設ける基準は、通常、パーティションが設けられたテーブルに対するものと同じである。たとえば、インデックス２１０は、パーティションｐ１の給与の列の値にインデックスをつけるために存在してもよい。多くの種類のインデックスは、インデックスによって参照される情報にソートされた配列を与える。したがって、インデックス２１０は、パーティションｐ１内の対応する行の給与の列の値に基づいてインデックスのエントリがソートされるように構成してもよい。ローカルのインデックス２１０を設けるには、Ｂ*ツリーインデックス構成など好適なインデックス構成であればどのようなインデックス構成を使用してもよい。ローカルインデックス２１０は、図２ｂに示され、インデックスのエントリは、パーティションｐ１の行に対するソートされた配列に対応し、各行の給与の列の値によって配列されている。類似のローカルインデックス２１２および２１４が、パーティションｐ２およびｐ３に対してそれぞれ示される。
【００２０】
（structure query langrage または「ＳＱＬ」での）次の照会が給与のテーブル２００に対して行なわれた場合を考える。
【００２１】
SELECT*
FROM Salary＿Table
ORDER BY salary
WHERE rownum＜5
この照会は、テーブルの給与の列の値に基づいて行が記憶されている給与のテーブル２００の上位４つの行を要求する。
【００２２】
この照会を行なう従来の方法では、パーティションｐ１、ｐ２およびｐ３のすべてからのすべての行が検索され、ソートされて、一時的な結果のセットができる。一時的な結果のセットの最初の４つの行が照会に対する最終的な出力結果として返される。この方法は、たとえ照会を満たすのに上位４つの行のみが実際に必要とされる場合でも、すべてのパーティションのすべての行の結果を処理することを必要とするという点で、性能および拡張性に深刻な問題がある。給与のテーブル２００が多数の行を含んでいる場合、データを検索しかつ検索されたデータを記憶するオーバーヘッドは大きなものとなり得る。さらに、一時的な結果のセット内の大量の行をソートするためにかなりの量のオーバーヘッドが消費される。また、何らかの結果がユーザに返される前に、データの全体量を処理しなければならない場合、照会の応答時間は悪化する。
【００２３】
図３は、この発明の一実施例による、応答時間を改善するためにこの照会をどのように処理するかの図である。図３の列は、左から右に向かって、上述の照会を処理するために行なわれるステップの進行を示す。
【００２４】
列３０２では、指定された数の行が各パーティションから検索される。各パーティションから検索される行の数は、この発明が向けられる具体的な用途によって変わる。結果が生成される粒度（granularity）、最初の結果に必要とされる応答時間、照会を完全に満たすために必要となり得るパスの数、あるパーティションから所与の行または行のセットを識別する／検索するのに伴うオーバーヘッドの間でバランスをとることができる。各回に多数の行が検索される場合、照会を満たすためにパーティションから必要な行を検索するために必要とされるパスの数は少ないが、結果を与える前に長い遅延が存在し得る。これは、各パスに対して、多数の行を検索し、記憶しかつソートしなければならないためである。しかしながら、各回に検索される行の数が少ないと、照会を満たすための全体のコストが高くなり得る。なぜなら、必要とされる行を十分に検索するのにより多くのパスが必要となることがあり、パーティションからの行を検索、記憶およびソートするためにより多くの動作を行なう中でさらなるオーバーヘッドにつながるためである。パーティションが非常に高度で固定された配列を有する場合、一実施例によると、各回に多数の行を検索することができ、有利である。各ポーリングのラウンドで１つの行のみが検索される場合でも、これは、プロセスからパーティションを取除くべきかを判定するために使用できる有用な情報を提供し得る。その後、後続のパスは、対象とされるパーティションから多数の行を検索できる。またはこれに代えて、最初のポーリングのラウンドで多数の行を検索し、後続のラウンドで少数の行を検索してもよい。一実施例では、異なるパーティションから異なる数の行が選択され得る。最も単純な場合では、各パーティションから検索する行の数は、照会を満たすために返さなくてはならない行の数と等しくてもよく（すなわち、照会が「WHERE rownum＜n」の句を含む場合、各行からｎ行を検索する）、これによって１つのポーリングのラウンドのみを行なった後にプロセスを完了することができる。
【００２５】
図３に示される例では、各パーティションから２つの行が検索される。照会は、給与の値が最も高い給与テーブル２００の４つの行を求めているため、パーティションからの各検索は、そのパーティションで最も高い給与の値を有するそれぞれの行を各パーティションから検索することになる。図２ｂに示されるように、各パーティションｐ１、ｐ２およびｐ３は、ローカルインデックス２１０、２１２および２１４にそれぞれ対応する。各ローカルインデックスは、それぞれのパーティションに対する、給与の値に基づくソートされた配列に対応する。したがって、ローカルインデックスを使用して、それらの対応するパーティション内で最も高い給与の値を有する行を容易に識別することができる。
【００２６】
図２ｂのローカルインデックス２１０からわかるように、最も高い２つの給与の値の２つのインデックスのエントリ２２８および２２９は、パーティションｐ１の行２２４および２２０に対応する。パーティションｐ２では、ローカルインデックス２１２を使用して、行２３２および２３０がそのパーティションで最も高い給与の値を有すると識別することができる。同様に、ローカルインデックス２１４を使用して、パーティションｐ３の中で行２４８および２４６が最も高い給与の値を有すると識別することができる。したがって、各識別された行のセットは、図３の列３０２で行なわれる動作中にパーティションｐ１、ｐ２およびｐ３から検索される。
【００２７】
この例は、各パーティションから検索するための特定の行を識別するためにローカルインデックスが使用されるのを示すが、検索するための行を識別するのに他の構造を使用してもよい。検索するための行の識別に各パーティションに対するソートされた配列が必要とされる場合、パーティションに配列の情報を与える何らかの他の構造を使用してもよい。場合によっては、この配列の情報を与えるために動的に構造を構築してもよい。１つの例として、パーティションｐ１およびｐ２にローカルインデックスが存在するが、パーティションｐ３には存在しない場合を考える。照会の実行または最適化の間に、パーティションｐ３に対するローカルインデックスを動的に構築して、そのパーティションに配列の情報を与えることができる。この新しいローカルインデックスを動的に構築するコスト／効果は、各パーティション内の行の数および照会によって求められる行の数などの既存のシステムの条件によって異なる。またはこれに代えて、ｐ３に対してテーブルスキャンを行なう。
【００２８】
再び図３を参照すると、列３０４は、各パーティションから検索された行が、ともに併合されかつグループとしてソートされるのを示す。論理的には、給与のテーブル２００の各パーティションから最も給与の値が高い２つの行が検索され、検索された行のグループ全体がソートされた場合、そのグループで最も高い給与の値を有する２つの行は、給与テーブル２００全体での２つの最も高い給与の値にも対応することになる。したがって、図３の列３０６に示されるように、最も高い給与の値を有する２つの行を即座にユーザに返すことができる。照会は、最も高い給与の値を有する４つの行を給与テーブル２００から要求しているため、必要とされる照会の応答の半分を即座にユーザに与えることができる。
【００２９】
これは、この発明の重要な利点を強調している。従来の方法では、何らかの結果が照会に返される前に、すべてのパーティションのすべての行が検索されかつソートされることが注目される。給与のテーブル２００が何千または何百万の行を含む場合、従来の方法の応答時間は大きく悪化する。なぜなら、何らかの結果がユーザに与えられる前に、何千または何百万の行をまず処理しなければならないためである。この例に対してこの発明のこの実施例を使用すると、給与のテーブル２００に存在する絶対的な行の数に関わりなく、結果の第１のセットが照会に返される前に、給与のテーブル２００から６つの行のみが検索されかつソートされる（行２２０、２２４、２３０、２３２、２４６および２４８）。
【００３０】
一旦結果の第１のセットが照会に返されると、照会を満たすためにさらに多くの行を検索しなければならないかが判定される。ここでは、照会は４つの行が返されることを要求しており、列３０６の動作で２つの行のみが与えられている。したがって、照会を満たすために給与のテーブル２００のパーティションからさらに行が検索される。列３０８は、ユーザに結果の第１のセットが返された後に残っているすでに検索された行を示す。
【００３１】
さらなる処理からいずれかのパーティションを取除くことが可能かを判定してもよい。ある所与のパーティションが、記述される照会の条件を満たすために検索されかつ返される可能性のある行を含まない場合、そのパーティションはさらなる処理から取除くことができる。ここで、パーティションｐ３で検索された行は、給与の値「２５」および「２０」に対応することが注目される。パーティションｐ３に対するローカルインデックスに基づくと、パーティションｐ３の他のすべての行は、これらの値と等しいか、またはそれを下回る給与の値を含むことがわかる。照会を十分に満たすには、給与の値が高いさらに２つの行のみが必要とされ、ユーザ識別Ａ１５およびＡ０１（行２２４および２２０）に対応する２つの行は、パーティションｐ３から検索され得るどの行よりも給与の値が高いと識別されているため（まだ返されていない）、パーティションｐ３から検索される行が照会の結果に影響する可能性はない。したがって、パーティションｐ３は、さらなる処理から取除いてもよい。
【００３２】
パーティションｐ２は、さらなる処理から取除けないことに注意されたい。このパーティションが、ユーザ識別Ａ１５およびＡ０１（行２２４および２２０）に対応する２つの行よりも高い給与の値を有する行を含む可能性があるためである。具体的なシステム構成の設定に応じて、パーティションｐ１をさらなる処理から取除いてもよい。これは、ローカルインデックス２１０によって、パーティションｐ１の他のどの行も行２２４および２２０（これらはパーティションｐ１の中で給与の値が最も高い２つの行である）よりも高い給与の値を有する可能性がないことが明らかなためである。しかしながら、パーティションｐ１の他の行が行２２０と同じ給与の値を有する可能性がある（たとえば、行２２２）。したがって、この発明が向けられる具体的な構成要件に応じて、パーティションｐ１の処理を続けるようにシステムを構成してもよいし、または、さらなる処理からこのパーティションｐ１を取除くように構成してもよい。図３の例を示すため、パーティションｐ１はさらなる処理から取除かれない。
【００３３】
したがって、図３の列３１０に示されるように、パーティションｐ１およびｐ２からさらに２つの行が検索される。検索された行は、各それぞれのパーティションの残りの行で最も高い給与の値に対応する。一実施例によると、各パスで検索する行の数は、最初のパス中に検索される行の数と同じである。またはこれに代えて、検索する行の数は、以前のパスの間に集められた情報または統計に基づいて調整してもよい。行の数を調整する前に検討され得る検討事項の一部は、検索する最初の行の数の選択に関して既に説明した検討事項と類似である。
【００３４】
図３の列３１２に示されるように、新しく検索された行は、照会結果としてまだ返されていない以前に検索された行に併合され、行のセット全体がグループとしてソートされる。最も高い給与の値を有する２つの行は、給与のテーブル２００のすべての残りの行で最も高い給与の値に対応する。したがって、（ユーザ識別Ａ１５およびＢ６０を有する）最も高い給与の値を有する２つの行は、列３１４に示されるように、照会に対する結果の次のセットとして与えられる。合計４つの行が与えられたため、照会は完全に満たされる。
【００３５】
この例では、照会はWHEREの句を含む。この発明は、例としての照会に示される種類のWHEREの句が存在しない場合でも、応答時間を改善するために使用可能であり、性能上の効果が得られる。
【００３６】
この発明は、ユーザに規定されるインデックスおよび補助的な演算子を用いるデータベースシステムにも適用可能である。補助的な演算子は、動作間でデータ（「補助的なデータ」）が共有され得るデータベース演算子のクラスを伴う。１つの方法では、第１の演算子からのデータを記憶するためにコンテクストオブジェクトが規定され、これは後にコンテクストオブジェクト内のデータを共有するために関連の補助的な演算子によって使用可能である。
【００３７】
次の照会が学生のテーブルに対して実行されている場合を考える。
【００３８】
SELECT*
FROM Students＿Table
WHERE contains (resume,‘Biology', 1) and rownum ＜＝100
ORDER BY rank(1);
この例では、contains（）関数は、２つのパラメータＯ１およびＯ２（Ｏ１は「resume」に対応し、Ｏ２は「Biology」に対応する）を受入れる演算子である。contains（）関数は、Ｏ１パラメータによって表わされる実体が、Ｏ２パラメータの値のテキストを含むかを示す真偽のフラグを返す。rank（）関数は、contains（）演算子に対する相対的な重要性の順にさまざまな行を序列化する補助的な演算子である。rank（）およびcontains（）は、関連する演算子として構成できるため、これら演算子間で共通の補助的なデータにアクセス可能である。したがって、この照会は、WHEREの句内のcontains（）演算子／述語に応答する学生のテーブル内の上位１００の行を求めている。この学生のテーブルが１０のパーティションに分解され、各パーティションにはユーザに規定された好適なインデックスが存在すると仮定する。
【００３９】
データベースシステムにおいてこの種の照会を評価する１つの方法は、各パーティションに対してcontains（）演算子を評価し、すべてのパーティションが評価されるまで結果を記憶し、すべてのパーティションについて収集された結果を序列化し、序列化された結果から上位１００を返すものである。この方法の欠点は既に詳しく述べたが、たとえ１００の行を返せばよい場合でも、すべてのパーティションからの行を検索、記憶かつソートし、すべてのパーティションが処理されるまですべての結果をブロックするために過度にオーバーヘッドを消費することが含まれる。
【００４０】
この発明のある実施例では、サーバは、contains（）演算子に加え、rank（）演算子の評価を各個々のパーティションへとプッシュダウンし、各パーティションから結果がポーリングされる。これは、rank（）の配列で行を返すことのできるインデックスをパーティションで維持することによって実現してもよい。各パーティションは、そのパーティション内で序列化された指定された数の行を返す。サーバはすべてのパーティションをポーリングし、パーティションからそれぞれの結果を収集する。ポーリングの第１のラウンドの後、サーバは結果の行のサブセットをユーザに返すことができ、さらにポーリングを行なうべきかを決定する。もしそうであれば、ポーリングが行なわれ、パーティションから行の別の結果のセットが返される。上述のように、それぞれのポーリングのラウンドが完了した後に、パーティションのサブセットをポーリングから排除することができる。
【００４１】
rank（）を評価するコストが比較的高い場合、一実施例によると、各ポーリングのラウンド中に少ない行が検索される。しかしながら、rank（）を評価する計算の費用が比較的安い場合、各パス中により多くの行が検索される。たとえば、何らかのシステムでこの種の補助的な演算子を評価することは、外部のコールアウトを必要とし、これは、通常、固有のファンクションコールよりもはるかに高価である。
【００４２】
一実施例では、この発明のプロセスは、この発明の恩恵を受け得る特定の照会を識別し、これら識別された照会にのみこの発明を適用するステップをさらに含む。ある実施例では、そのような照会を識別するために組合せであれ単独であれ使用することのできる特徴の例は次の通りである。（ａ）合計スループットよりも応答時間について最適化されるべき照会、（ｂ）ソート要素または配列要素を有する（たとえば、「ORDER BY」の句を有する）照会、（ｃ）パーティションが設けられたオブジェクトに対する照会、（ｄ）照会されているパーティションに対して配列情報を与えるためにインデックスまたは他の構成が既に利用可能である、（ｅ）（たとえば、「WHERE rownum＜n」の句を使用して）応答の数を制限しようとする照会。
【００４３】
システムアーキテクチャの概要
図４を参照すると、ある実施例では、コンピュータシステム４２０は、複数の個々のユーザステーション４２４に接続されるホストコンピュータ４２２を含む。ある実施例では、ユーザステーション４２４は各々、１つまたは複数のアプリケーション、すなわちプログラムを記憶しかつ独立して作動させることのできる、たとえば、パーソナルコンピュータ、ポータブルラップトップコンピュータ、または個人用携帯情報端末（「ＰＤＡ」）などであるがこれらに限らない、好適なデータ端末を含む。図示のため、ユーザステーション４２４の一部は、ローカルエリアネットワーク（「ＬＡＮ」）４２６を介してホストコンピュータ４２２に接続される。他のユーザステーション４２４は、公衆交換電話網（「ＰＳＴＮ」）４２８および／または無線ネットワーク４３０を介してホストコンピュータ４２２に遠隔で接続される。
【００４４】
ある実施例では、ホストコンピュータ４２２はデータ記憶システム４３１とともに動作し、データ記憶システム４３１は、ホストコンピュータ４２２によって容易にアクセス可能なデータベース４３２を含む。たとえば、中間アプリケーション層（図示せず）を使用して、ユーザステーション４２４をデータベース４３２に接続するために多層アーキテクチャを用いてもよいことに注目されたい。代替の実施例では、データベース４３２はホストコンピュータ上にあり、たとえば、ホストコンピュータのＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、またはその他のメモリチップ、および／またはそのハードディスクに記憶されてもよい。さらに代替の実施例では、データベース４３２は、１つまたは複数のフロッピー（Ｒ）ディスク、フレキシブルディスク、磁気テープ、その他の磁気媒体、ＣＤ−ＲＯＭ、他の光学媒体、パンチカード、紙テープまたはその他の孔のパターンを備えた物理的媒体、またはコンピュータがそこから読取ることのできるその他の媒体から、ホストコンピュータ４２２によって読取ってもよい。ある代替の実施例では、ホストコンピュータ４２２は、上述のさまざまな媒体に記憶された２つ以上のデータベース４３２にアクセス可能である。
【００４５】
図５を参照すると、ある実施例では、各ユーザステーション４２４およびホストコンピュータ４２２は、各々、一般的に処理ユニットと称され、一般的なアーキテクチャ５０５を実現する。処理ユニットは、命令、メッセージおよびデータをまとめて通信しかつ情報を通信するためにバス５０６またはその他の通信メカニズムを含み、情報を処理するためにバス５０６に結合された１つまたは複数のプロセッサ５０７を含む。処理ユニットは、プロセッサ５０７によって実行されるべき動的なデータおよび命令を記憶するために、バス５０６に結合されたランダムアクセスメモリ（ＲＡＭ）またはその他の動的記憶装置などのメインメモリ５０８も含む。メインメモリ５０８は、プロセッサ５０７による命令の実行中に一時的なデータ、すなわち、変数またはその他の中間情報を記憶するために使用してもよい。処理ユニットは、プロセッサ５０７に対する静的なデータおよび命令を記憶するために、バス５０６に結合されたリードオンリメモリ（ＲＯＭ）５０９またはその他の静的記憶装置をさらに含んでもよい。プロセッサ５０７に対するデータおよび命令を記憶するために磁気ディスクまたは光ディスクなどの記憶装置５１０を設け、バス５０６に結合してもよい。
【００４６】
情報をユーザに表示するために、バス５０６を介して、ブラウン管（ＣＲＴ）などであるがこれに限らない表示装置５１１に処理ユニットを結合してもよい。入力装置５１２は、英数字および他の列を含み、バス５０６に結合されて情報およびコマンド選択をプロセッサ５０７に通信する。別の種類のユーザ入力装置は、マウス、トラックボール、フィンガーパッド、またはカーソルの方向の列などであるがこれらに限らない、カーソル制御５１３を含み、方向情報およびコマンド選択をプロセッサ５０７に通信しかつ表示装置５１１上でのカーソルの動きを制御する。
【００４７】
この発明の一実施例によると、個々の処理ユニットは、メインメモリ５０８に含まれる１つまたは複数の命令の１つまたは複数のシーケンスを実行するそれぞれのプロセッサ５０７によって特定の動作を行なう。そのような命令は、ＲＯＭ５０９または記憶装置５１０などの別のコンピュータの使用可能な媒体からメインメモリ５０８に読込まれてもよい。メインメモリ５０８に含まれる命令のシーケンスの実行は、ここに記載されるプロセスをプロセッサ５０７に行なわせる。代替の実施例では、この発明を実現するため、配線で接続された（hard-wired）回路をソフトウェアの命令の代わりに、またはこれと組合せて使用してもよい。したがって、この発明の実施例は、ハードウェア回路および／またはソフトウェアの特定の組合せに限定されない。
【００４８】
ここで使用される「コンピュータの使用可能な媒体」という言葉は、情報を与えるかまたはプロセッサ５０７によって使用可能な媒体を指す。そのような媒体は、不揮発性媒体、揮発性媒体および伝送媒体などを含むがこれらに限らない多くの形を取り得る。不揮発性媒体、すなわち、電力がなくても情報を保持することのできる媒体は、ＲＯＭ５０９を含む。揮発性媒体、すなわち、電力がないと情報を保持することができない媒体は、メインメモリ５０８を含む。伝送媒体は、バス５０６を含むワイヤを含む、同軸ケーブル、銅線および光ファイバを含む。伝送媒体は、搬送波の形、すなわち、周波数、振幅または位相で変調可能な電磁波の形を取って情報の信号を伝送し得る。さらに、伝送媒体は、無線通信中および赤外線データ通信中に生成されるような音波または光波の形も取り得る。
【００４９】
コンピュータの利用可能な媒体の一般的な形は、たとえば、フロッピー（Ｒ）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、その他の磁気媒体、ＣＤ−ＲＯＭ、その他の光学媒体、パンチカード、紙テープ、孔のパターンを備えたその他の物理的媒体、ＲＡＭ、ＲＯＭ、ＰＲＯＭ（すなわち、プログラマブルリードオンリメモリ）、ＦＬＡＳＨ−ＥＰＲＯＭを含むＥＰＲＯＭ、その他のメモリチップまたはカートリッジ、搬送波、またはプロセッサ５０７がそこから情報を検索できるその他の媒体を含む。１つまたは複数の命令の１つまたは複数のシーケンスをプロセッサ５０７に与えて実行させるには、さまざまな形のコンピュータの使用可能な媒体がかかわり得る。メインメモリ５０８によって受取られる命令は、任意で、プロセッサ５０７による実行の前または後に記憶装置５１０に記憶してもよい。
【００５０】
各処理ユニットは、バス５０６に結合された通信インターフェイス５１４も含んでもよい。通信インターフェイス５１４は、それぞれのユーザステーション５２４とホストコンピュータ５２２との間の２方向の通信を提供する。それぞれの処理ユニットの通信インターフェイス５１４は、命令、メッセージおよびデータを含むさまざまな種類の情報を表わすデータストリームを含む電気信号、電磁気信号または光信号を伝送し受取る。通信リンク５１５は、それぞれのユーザステーション５２４およびホストコンピュータ５２２をリンクさせる。通信リンク５１５はＬＡＮ４２６であってもよく、この場合、通信インターフェイス５１４はＬＡＮカードであってもよい。またはこれに代えて、通信リンク５１５はＰＳＴＮ４２８であってもよく、この場合、通信インターフェイス５１４は総合デジタル通信網（ＩＳＤＮ）カードまたはモデムであってもよい。またはこれに代えて、通信リンク５１５は無線ネットワーク４３０であってもよい。処理ユニットは、そのそれぞれの通信リンク５１５および通信インターフェイス５１４を介して、プログラム、すなわちアプリケーションコードを含むメッセージ、データ、および命令を伝送し受取ることができる。受取られたプログラムコードは、受取られたときにそれぞれのプロセッサ５０７によって実行してもよいし、および／または記憶装置５１０またはその他の関連する不揮発性媒体に記憶して後に実行してもよい。このような態様で、処理ユニットは、メッセージ、データおよび／またはプログラムコードを搬送波の形で受取ることができる。
【図面の簡単な説明】
【００５１】
【図１】この発明のある実施例による照会を実行するためのプロセスの図である。
【図２ａ】例としてのデータベーステーブルの図である。
【図２ｂ】図２ａのデータベーステーブルに適用される例としてのパーティションを設ける手法を表わす図である。
【図３】一実施例による照会を実行するためのこの発明の例示的な使用を表わす図である。
【図４】この発明を実行可能なシステムアーキテクチャの図である。
【図５】この発明を実現可能なシステムアーキテクチャの図である。
【図１】
2004528660.tif 000003
【図２ａ】
2004528660.tif 000004
【図２ｂ】
2004528660.tif 000005
【図３】
2004528660.tif 000006
【図４】
2004528660.tif 000007
【図５】
2004528660.tif 000008
【国際公開パンフレット】
2004528660.tif 000009
2004528660.tif 000010
2004528660.tif 000011
2004528660.tif 000012
2004528660.tif 000013
2004528660.tif 000014
2004528660.tif 000015
2004528660.tif 000016
2004528660.tif 000017
2004528660.tif 000018
2004528660.tif 000019
2004528660.tif 000020
2004528660.tif 000021
2004528660.tif 000022
2004528660.tif 000023
2004528660.tif 000024
2004528660.tif 000025
2004528660.tif 000026
2004528660.tif 000027
2004528660.tif 000028
2004528660.tif 000029
2004528660.tif 000030
2004528660.tif 000031
2004528660.tif 000032
2004528660.tif 000033
2004528660.tif 000034
2004528660.tif 000035
2004528660.tif 000036
2004528660.tif 000037
2004528660.tif 000038
2004528660.tif 000039
2004528660.tif 000040
2004528660.tif 000041
2004528660.tif 000042
2004528660.tif 000043
2004528660.tif 000044
【国際調査報告】
2004528660.tif 000045