(57)【要約】  開発者らおよびＩＴ専門家らが障害を検出し、どのクエリがシステムの動きが遅い原因となっているか判断するのを助けるために、分散データシステムで使用されるクエリ説明計画が説明される。一実施例によれば、分散データグリッドが、分散説明計画を提供するための設備を利用する。この分散説明計画は、クラスタ内の各ノードがクエリにどのように返答したかについての可視性を提供する。たとえば、あるノードはクエリのフィルタをあるシーケンスで適用し、一方、別のノードは異なるシーケンスを使用したかもしれない。加えて、分散クエリ説明計画は実行追跡を提供可能であり、各ステップの実行時間、総実行時間などについての情報をレンダリングする。
2014530416.tif 000002
【特許請求の範囲】
【請求項１】
分散データグリッドにおいてクエリを説明するためのシステムであって、前記システムは、
１つ以上のマイクロプロセッサと、
前記１つ以上のマイクロプロセッサ上で走るクラスタとを含み、前記クラスタは、前記クラスタ中に分散されたデータを格納する複数のクラスタノードを含み、各クラスタノードは、前記クラスタノード上に格納された前記データに対して構造化クエリ言語（ＳＱＬ）クエリを実行可能であり、前記システムはさらに、
前記ＳＱＬクエリを含む要求を提出する、前記クラスタに接続されたクライアントを含み、
前記要求を受信すると、前記ＳＱＬクエリは前記クラスタ内の各ノードに提出され、前記クラスタ内の各ノードは、前記各ノードでのローカルデータを用いて前記ＳＱＬクエリについてのクエリ計画を評価し、前記ノードで前記ＳＱＬクエリがどのように実行されるかに関する１組の情報を返送し、
前記クラスタ内のすべてのノードからの前記情報を集約するクエリ記録オブジェクトが作成され、前記クエリ記録オブジェクトは、前記クラスタ内の各ノードによって前記ＳＱＬクエリがどのように実行されるかに関する情報を含む、システム。
【請求項２】
前記クエリ記録オブジェクトはさらに実行追跡を提供し、各ステップの実行時間および総実行時間についての情報をレンダリングする、請求項１に記載のシステム。
【請求項３】
クエリ説明計画を得るために、メソッドが呼出され、ＳＱＬクエリをパラメータとして前記メソッドに渡す、請求項１または２に記載のシステム。
【請求項４】
前記ＳＱＬクエリは前記クラスタ内のすべてのクラスタノードに送信され、各クラスタノードは、前記各クラスタノードに特有の判断された最適なクエリ計画を返送する、前述の請求項のいずれかに記載のシステム。
【請求項５】
異なるクエリ計画同士を比較対照し、クエリ呼出しの結果を調整するために、設備が提供される、前述の請求項のいずれかに記載のシステム。
【請求項６】
前記システムは、説明計画モードおよび追跡モードという少なくとも２つのモードで実行可能であり、前記説明モードは、クエリ実行の推定コストを含むクエリ記録オブジェクトを作成し、前記追跡モードは、クエリ実行の実際のコストを含む、前述の請求項のいずれかに記載のシステム。
【請求項７】
前記クエリ記録オブジェクトを採用することによってインデックスが作成される、前述の請求項のいずれかに記載のシステム。
【請求項８】
前記クラスタ内の各ノードは、前記ノード上に格納されたデータ区画に依存して、異なるクエリ計画を実行する、前述の請求項のいずれかに記載のシステム。
【請求項９】
分散データグリッドにおいてクエリを説明するための方法であって、前記方法は、
１つ以上のマイクロプロセッサ上で走るクラスタ内の複数のノード上にデータを格納するステップを含み、各ノードは、前記ノード上に格納された前記データに対して構造化クエリ言語（ＳＱＬ）クエリを実行可能であり、前記方法はさらに、
前記クラスタに接続されたクライアントから、前記ＳＱＬクエリを含む要求を受信するステップと、
前記ＳＱＬクエリを前記クラスタ内の各ノードに提出するステップと、
前記クラスタ内の各ノードが、前記各ノードでのローカルデータを用いて前記ＳＱＬクエリについてのクエリ計画を評価し、前記ノードで前記ＳＱＬクエリがどのように実行されるかに関する１組の情報を返送するステップと、
前記クラスタ内のすべてのノードからの前記情報を集約するクエリ記録オブジェクトを作成するステップとを含み、前記クエリ記録オブジェクトは、前記クラスタ内の各ノードによって前記ＳＱＬクエリがどのように実行されるかに関する情報を含む、方法。
【請求項１０】
前記クエリ記録オブジェクトはさらに実行追跡を提供し、各ステップの実行時間および総実行時間についての情報をレンダリングする、請求項９に記載の方法。
【請求項１１】
前記要求はクエリ説明計画についてのものであり、前記クエリ説明計画を得るために、メソッドが呼出され、ＳＱＬクエリをパラメータとして前記メソッドに渡す、請求項９または１０に記載の方法。
【請求項１２】
前記ＳＱＬクエリは前記クラスタ内のすべてのクラスタノードに送信され、各クラスタノードは、前記各クラスタノードに特有の判断された最適なクエリ計画を返送できる、請求項９〜１１のいずれかに記載の方法。
【請求項１３】
前記方法はさらに、異なるクエリ計画同士を比較対照し、クエリ呼出しの結果を調整するステップを含む、請求項９〜１２のいずれかに記載の方法。
【請求項１４】
前記方法は、説明計画モードおよび追跡モードという少なくとも２つのモードで実行可能であり、前記説明モードは、クエリ実行の推定コストを含むクエリ記録オブジェクトを作成し、前記追跡モードは、クエリ実行の実際のコストを含む、請求項９〜１３のいずれかに記載の方法。
【請求項１５】
前記クエリ記録オブジェクトを採用することによってインデックスが作成される、請求項９〜１４のいずれかに記載の方法。
【請求項１６】
前記クラスタ内の各ノードは、前記ノード上に格納されたデータ区画に依存して、異なるクエリ計画を実行する、請求項９〜１５のいずれかに記載の方法。
【請求項１７】
コンピュータシステムによる実行用のプログラム命令を含み、それにより前記コンピュータシステムに請求項９〜１６のいずれかに記載の方法を行なわせる、コンピュータプログラム。
【請求項１８】
請求項１７に記載のコンピュータプログラムを格納する、コンピュータ読取可能記憶媒体。
【請求項１９】
１組のステップを行なうために、１つ以上のプロセッサによって実行される１つ以上のシーケンスの命令を格納する、一時的でないコンピュータ読取可能記憶媒体であって、前記１組のステップは、
クラスタ内の複数のノード上にデータを格納するステップを含み、各ノードは、前記ノード上に格納された前記データに対して構造化クエリ言語（ＳＱＬ）クエリを実行可能であり、前記１組のステップはさらに、
前記クラスタに接続されたクライアントから、前記ＳＱＬクエリを含む要求を受信するステップと、
前記ＳＱＬクエリを前記クラスタ内の各ノードに提出するステップとを含み、前記クラスタ内の各ノードは、前記各ノードでのローカルデータを用いて前記ＳＱＬクエリについてのクエリ計画を評価し、前記ノードで前記ＳＱＬクエリがどのように実行されるかに関する１組の情報を返送し、前記１組のステップはさらに、
前記クラスタ内のすべてのノードからの前記情報を集約するクエリ記録オブジェクトを作成するステップを含み、前記クエリ記録オブジェクトは、前記クラスタ内の各ノードによって前記ＳＱＬクエリがどのように実行されるかに関する情報を含む、一時的でないコンピュータ読取可能記憶媒体。
【請求項２０】
前記クエリ記録オブジェクトはさらに実行追跡を提供し、各ステップの実行時間および総実行時間についての情報をレンダリングする、請求項１９に記載の一時的でないコンピュータ読取可能記憶媒体。
【請求項２１】
クエリ説明計画を得るために、メソッドが呼出され、ＳＱＬクエリをパラメータとして前記メソッドに渡す、請求項１９または２０に記載の一時的でないコンピュータ読取可能記憶媒体。
【請求項２２】
前記ＳＱＬクエリは前記クラスタ内のすべてのクラスタノードに送信され、各クラスタノードは、前記各クラスタノードに特有の判断された最適なクエリ計画を返送できる、請求項１９〜２１のいずれかに記載の一時的でないコンピュータ読取可能記憶媒体。
【請求項２３】
分散データグリッドにおいてクエリを説明するためのシステムであって、前記システムは、
１つ以上のマイクロプロセッサ上で走るクラスタ内の複数のノード上にデータを格納するための手段を含み、各ノードは、前記ノード上に格納された前記データに対して構造化クエリ言語（ＳＱＬ）クエリを実行可能であり、前記システムはさらに、
前記クラスタに接続されたクライアントから、前記ＳＱＬクエリを含む要求を受信するための手段と、
前記ＳＱＬクエリを前記クラスタ内の各ノードに提出するための手段とを含み、前記クラスタ内の各ノードは、前記各ノードでのローカルデータを用いて前記ＳＱＬクエリについてのクエリ計画を評価し、前記ノードで前記ＳＱＬクエリがどのように実行されるかに関する１組の情報を返送し、前記システムはさらに、
前記クラスタ内のすべてのノードからの前記情報を集約するクエリ記録オブジェクトを作成するための手段を含み、前記クエリ記録オブジェクトは、前記クラスタ内の各ノードによって前記ＳＱＬクエリがどのように実行されるかに関する情報を含む、システム。
【請求項２４】
前記クエリ記録オブジェクトはさらに実行追跡を提供し、各ステップの実行時間および総実行時間についての情報をレンダリングする、請求項２３に記載のシステム。
【請求項２５】
クエリ説明計画を得るために、メソッドが呼出され、ＳＱＬクエリをパラメータとして前記メソッドに渡す、請求項２３に記載のシステム。
【請求項２６】
前記ＳＱＬクエリは前記クラスタ内のすべてのクラスタノードに送信され、各クラスタノードは、前記各クラスタノードに特有の判断された最適なクエリ計画を返送できる、請求項２３に記載のシステム。
【請求項２７】
異なるクエリ計画同士を比較対照し、クエリ呼出しの結果を調整するために、設備が提供される、請求項２６に記載のシステム。
【請求項２８】
前記システムは、説明モードおよび追跡モードという少なくとも２つのモードで実行可能であり、前記説明モードは、クエリ実行の推定コストを含むクエリ記録オブジェクトを作成し、前記追跡モードは、クエリ実行の実際のコストを含む、請求項２３に記載のシステム。
【請求項２９】
前記クエリ記録オブジェクトを採用することによってインデックスが作成される、請求項２３に記載のシステム。
【請求項３０】
前記クラスタ内の各ノードは、前記ノード上に格納されたデータ区画に依存して、異なるクエリ計画を実行する、請求項２３に記載のシステム。
【請求項３１】
分散データグリッドにおいてクエリを説明するためのシステムであって、前記システムは、
１つ以上のマイクロプロセッサと、
前記１つ以上のマイクロプロセッサ上で走るクラスタとを含み、前記クラスタは、前記クラスタ中に分散されたデータを格納する複数のクラスタノードを含み、各クラスタノードは、前記クラスタノード上に格納された前記データに対して構造化クエリ言語（ＳＱＬ）クエリを実行可能であり、
クライアントから、クエリ説明計画についての前記ＳＱＬクエリを含む要求を受信すると、前記ＳＱＬクエリは前記クラスタ内の各ノードに提出され、前記クラスタ内の各ノードは、前記各ノードでのローカルデータを用いて前記ＳＱＬクエリについてのクエリ計画を評価し、前記ノードで前記ＳＱＬクエリがどのように実行されるかに関する１組の情報を返送し、
前記クラスタ内のすべてのノードからの前記情報を集約するクエリ記録オブジェクトが作成され、前記クエリ記録オブジェクトは、前記クラスタ内の各ノードによって前記ＳＱＬクエリがどのように実行されるかに関する情報を含む、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権表示
この特許文献の開示の一部は、著作権保護の対象となる資料を含む。この特許文献または特許開示は特許商標庁の特許ファイルまたは記録に記載されているため、著作権者は、何人によるその複製に対して異議はないが、その他の場合には如何なるときもすべての著作権を保有する。
【０００２】
発明の分野
この発明は、分散コンピューティング環境におけるデータキャッシュおよびアクセス手法に関する。
【背景技術】
【０００３】
背景
データ記憶および管理の状況では、クエリ最適化は、所与のクエリを実行するために最も最適なまたは効率的なやり方を判断しようとする。構造化クエリ言語（ＳＱＬ）は宣言型であるため、通常、所与のクエリを実行する複数の異なるやり方（クエリ計画）があり、それらのやり方の各々は異なる性能をもたらすものの、同じ結果に到達する。クエリ計画とは、ＳＱＬベースのデータシステムにおいて情報にアクセスするために、または情報を修正するために使用される、順序付けられた一連のステップである。典型的なクエリオプティマイザーは、所与のクエリについてすべての可能なクエリ計画を検討し、それらのクエリ計画のうちのどれが最も効率的であるか（最も少ない量の待ち時間を生成するか）を判断する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
クラスタの多くのノードにわたってデータが格納される分散データシステムでは、分散システム全体用の単一の最適なクエリ計画を判断することは難しい場合がある。たとえば、クラスタ全体にわたるデータ分散に依存して、クラスタ内のノードのいくつかにとってはあるクエリ計画が最適であるものの、他のノードにとっては別のクエリ計画が最適である場合がある。
【課題を解決するための手段】
【０００５】
簡単な概要
さまざまな実施例によれば、開発者らおよびＩＴ専門家らが障害を検出し、どのクエリがシステムの動きが遅い原因となっているか判断するのを助けるために、分散データシステムで使用されるクエリ説明計画が説明される。クエリ説明計画とは、ＳＱＬベースのデータシステムにおいて情報にアクセスするために、または情報を修正するために使用される、順序付けられた１組のステップである。クエリ説明計画は、クエリオプティマイザーによって選択された実行計画についての情報を作成し、格納する。一実施例によれば、分散データグリッドが、分散説明計画を提供するための設備を利用する。この分散説明計画は、クラスタ内の各ノードがクエリにどのように返答したかについての可視性を提供する。たとえば、あるノードはクエリのフィルタをあるシーケンスで適用し、一方、別のノードは異なるシーケンスを使用したかもしれない。加えて、分散クエリ説明計画は実行追跡を提供可能であり、各ステップの実行時間、総実行時間などについての情報をレンダリングする。
【図面の簡単な説明】
【０００６】
【図１】この発明のさまざまな実施例に従ったクエリ説明計画機能のシステムレベル図である。
【図２Ａ】この発明のさまざまな実施例に従ったクエリ説明計画を使用する一例の図である。
【図２Ｂ】この発明のさまざまな実施例に従ったクエリ説明計画を使用する一例の図である。
【図３】この発明のさまざまな実施例に従ったクエリ説明計画を提供するフローチャートである。
【図４】この発明の一実施例を実現し得るコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【０００７】
詳細な説明
同じ参照符号が同様の要素を示す添付図面の図において、この発明を、限定のためではなく例示のために説明する。この開示における実施例への参照は必ずしも同じ実施例に対するものではなく、そのような参照は少なくとも１つということを意味する。特定の実現化例が説明されるが、これは例示的な目的のためにのみ行なわれるということが理解される。関連技術の当業者であれば、この発明の範囲および精神から逸脱することなく、他の構成要素および構成が使用されてもよいということを認識するであろう。
【０００８】
以下の説明では、この発明の完全な説明を提供するために多くの具体的詳細が述べられる。しかしながら、この発明はこれらの具体的詳細がなくても実践され得るということは、当業者には明らかであろう。他の点では、この発明を不明瞭にしないように、周知の機能は詳細には説明されない。
【０００９】
さまざまな実施例によれば、開発者らおよびＩＴ専門家らが障害を検出し、どのクエリがシステムの動きが遅い原因となっているか判断するのを助けるために、クエリ説明計画が分散データシステムに提供される。一実施例によれば、分散データグリッドが、分散説明計画を提供するための設備を利用する。この分散説明計画は、クラスタ内の各ノードがクエリにどのように返答したかについての可視性を提供する。たとえば、あるノードはクエリのフィルタをあるシーケンスで適用し、一方、別のノードは異なるシーケンスを使用したかもしれない。加えて、分散クエリ説明計画は実行追跡を提供可能であり、各ステップの実行時間、総実行時間などについての情報をレンダリングする。
【００１０】
一実施例によれば、クエリ説明計画を得るために、メソッドを呼出すことができ、クエリをパラメータとして渡す。クエリはクラスタ内のすべてのサーバに送信可能であり、各サーバは、そのサーバに特有の判断された最適なクエリ計画と、その実行結果とを返送できる。これらの計画および結果は、クラスタ内のすべてのノード中で集約可能である。このため、メソッド呼出しの結果は、その特定のクエリについてのクラスタ中のすべてのクエリ計画に関する情報を提供するデータ構造であってもよい。設備はまた、異なるクエリ計画同士を比較対照し、結果を調整するための手段を提供してもよい。
【００１１】
一実施例によれば、ユーザは、クエリ説明計画の結果を検査し、インデックスを作成して、クエリの速度を向上させることができる。インデックスとは、表の一部のコピーを作成することにより、または当該技術分野で公知であるような何らかの他の手段により、データ検索動作の速度を向上させることが可能なデータ構造である。クエリ説明計画の結果に基づいて、ユーザらは、システムの速度を向上させるためにどの表についてインデックスを作成するかについてのもっと良い考えを有することができる。
【００１２】
図１は、この発明のさまざまな実施例に従ったクエリ説明計画機能のシステムレベル図である。この図は構成要素を論理的に別々のものとして図示しているが、そのような図示は単に例示的な目的のためである。この図に描かれた構成要素を別々のソフトウェア、ファームウェア、および／またはハードウェアへと組合せてもまたは分割してもよいということは、当業者には明らかであろう。また、そのような構成要素は、それらがどのように組合され、または分割されようと、同じコンピューティング装置上で実行可能であり、もしくは１つ以上のネットワークまたは他の好適な通信手段によって接続された異なるコンピューティング装置中に分散可能であるということも、当業者には明らかであろう。
【００１３】
図示されているように、クライアント１０３が、複数のサーバ（１００、１０１、１０２）間で１組のデータを管理する分散データグリッドクラスタ１０４に接続可能である。クライアントは、少ない待ち時間で必要なデータを得るために、データへのクエリを提出できる。加えて、図に示すように、クライアントは、グリッドに対してメソッドの呼出しを提供し、構造化クエリ言語（ＳＱＬ）クエリをパラメータとしてメソッドに渡すことにより、クラスタからのクエリ説明計画を要求できる。クエリは次に、クラスタ内のサーバノードの各々に分散される。各ノードは、それ自体のデータ区画（１０６、１０７、１０８）に対してクエリ計画（１０９、１１０、１１１）を評価し、そのクエリ計画の結果を返送する。なぜなら、それはそのローカルに格納されたデータに関連しているためである。結果は次にクエリ結果オブジェクト１０５へと集約され、それがクライアントに返送される。クエリ結果オブジェクト１０５は、クラスタ内の各ノードが元のＳＱＬクエリについてのクエリ計画をどのようにローカルに評価したかに関する情報を提供する。
【００１４】
図２Ａおよび図２Ｂは、この発明のさまざまな実施例に従ったクエリ説明計画を使用する一例の図である。なお、この図はある符号およびデータ構造を含んでいるものの、本実施例はここに例示された特定の符号またはデータ構造に限定されない。当業者には明らかであるように、この発明の範囲内で多くの他の実現化例が可能である。
【００１５】
より特定的には、図２Ａはクエリ計画を呼出す符号の一例を示し、図２Ｂはその符号の呼出しによって返送されるクエリ記録オブジェクトを示す。一実施例によれば、クエリ記録オブジェクトは、表示される際に図２Ｂに示すデータをレンダリングする文字列であってもよい。
【００１６】
一実施例によれば、クエリ計画結果の「Name」フィールドは、クエリ計画ステップの名前を指す。多くの場合、これは、クエリのフィルタに対するメソッド「toString」の呼出しであろう。インデックスは、該当する場合、インデックスルックアップへの参照である。「Cost」とは、フィルタ有効性算出から返送された推定コストである。
【００１７】
図２Ｂに示す結果は、クエリステップ用に使用されるフィルタおよび各インデックス（もしあれば）、フィルタに渡されたキーの組のサイズ、ならびにフィルタを使用する有効性を算出した結果を示す。たとえば、上述の結果は、４つの記憶ノードを有するクラスタにおいて１０００個のエントリを有するキャッシュに対して走らされたクエリ説明計画についてのものであってもよい。
【００１８】
なお、上述の事項は、クエリ計画結果が何に見えるかについての単なる一例である。他のさまざまな意味のあるやり方でクエリ計画の部分的結果を集約することが可能であり得る。クエリ計画集約子を拡張し、カスタムクエリ計画結果オブジェクトを実現することにより、クエリ計画結果のカスタム化を可能にするアーキテクチャを、以下に説明する。
【００１９】
算出された有効性
一実施例によれば、算出された有効性とは、１組のキーをフィルタにかけるためにフィルタが一群のインデックスをどのように良好に使用できるかについての推定された尺度である。この値は、最も効果的なフィルタが最初に適用されるように、ArrayFilterにおけるフィルタの配置を決定するために使用可能である。IndexAwareFilter.calculateEffectivenessから返送された値は実際、フィルタを適用する推定評価コストである。
【００２０】
例示として、以下の表１は、make=Hondaおよびcost<7000でインデックスがmake上にある場合の中古車についてのクエリを示す。
【００２１】
【表１】
2014530416.tif 000003
【００２２】
一実施例によれば、表１に示す例における各フィルタについての有効性は、以下のように算出されるであろう。
【００２３】
Equals Filter：適用可能なインデックスがあるため、算出された有効性は１として与えられる。インデックスを適用する動作がインデックスコンテンツへのアクセスをたった１度だけ必要とするため、１という値が使用される。これは純粋な評価コスト値である。なぜなら、これは、インデックスが所与のキーの組をどのように効果的に減少させるかについて何も述べていないためである。たとえば、キャッシュがHondaのみを含む場合、このフィルタの適用は安価であるが効果的ではない場合がある。ここで適用可能なインデックスがなければ、算出された有効性は、EVAL_COSTにキーの数を乗算したものとなるであろう。EVAL_COSTは一定値であり、現在１０００に設定されている。これは、キーの組を減少させるためにフルスキャンを行なう相対的コストを示すよう意図されている。上述のように、この値は純粋に評価コストであり、キーの組を減少させる動作の実際の有効性について何も述べていない。
【００２４】
Less Filter：ここで適用可能なインデックスはないので、算出された有効性は、EVAL_COSTにキーの数を乗算したものとなるであろう。
【００２５】
And Filter：このフィルタの算出された有効性は、それを作り上げるフィルタの有効性に基づいている。この例では、Equals Filterの算出された有効性は１であり、Less Filterの算出された有効性はキーの数に基づく何らかの値である。根底にあるフィルタは、最も効果的なもの（実際には、最も費用がかからないもの）が最初に来るよう順序付けられたリストにおけるそれらの算出された有効性に基づいて重み付けされる。このAnd Filterの算出された有効性は、フィルタのそのリストにおける第１のフィルタの算出された有効性である。
【００２６】
この例では、キーの所与の組は、最初にEquals Filterにより、第２にLess Filterにより減少されるであろう。make属性上にインデックスがないものの、cost上にインデックスがあった場合、それは、最初にLess Filterが適用されて反転されるであろう。フィルタの現在の順序付けは主として、適用可能なインデックスの有無に基づいている。これが最良の計画を作成するか否かは、フィルタを適用する実際の有効性（フィルタがキーの組を減少させる能力）に依存する。
【００２７】
インデックスが式から取出されると、両方のフィルタは同じ算出された有効性（EVAL_COSTにキーの数を乗算したもの）を返送するであろう。これは、どちらのフィルタが最初に適用されるかわからないということを意味する。どちらが最良であるか判断するために、実際の有効性を算出する必要があるであろう。たとえば、キャッシュにおけるエントリの２％のみがHondaで、９９％が７０００ドル未満のコストである場合、Equals Filterを最初に適用することは理にかなう。なぜなら、それはキーの組を最も減少させるためである。逆に、キャッシュにおけるすべてのエントリがHondaである場合、Less Filterを最初に適用することは理にかなう。なぜなら、Equals Filterはキーの組を減少させるのに効果がないためである。
【００２８】
場合によっては、実際にフィルタを適用することなく、有効性について仮定し、根拠のある事例を採用することが、可能であり得る。たとえば、インデックスを有するEquals Filterである。１のみを返送する代わりに、キーの組を減少させる要因を含めることによって推定を強化することができる。
【００２９】
【数１】
2014530416.tif 000004
【００３０】
この値の変形例は、有効性／コストとして使用可能である。
図３は、この発明のさまざまな実施例に従ったクエリ説明計画を提供するフローチャートである。この図は例示のためにある特定のシーケンスの機能的ステップを示しているが、プロセスは必ずしもこの特定の順序またはステップに限定されない。この図に描かれたさまざまなステップが変更され、再構成され、並行して行なわれ、またはさまざまなやり方で適応され得るということは、当業者であれば理解するであろう。また、この発明の精神および範囲から逸脱することなく、あるステップまたはステップのシーケンスをこのプロセスに追加したり、またはこのプロセスから省略することができるということが理解されるべきである。
【００３１】
ステップ３００に示すように、クラスタ内の複数のノード上にデータが格納され、各ノードは、前記ノード上に格納されたデータに対して構造化クエリ言語（ＳＱＬ）クエリを実行可能である。ステップ３０１で、クラスタに接続されたクライアントから、ＳＱＬクエリを含む要求が受信される。ステップ３０２で、ＳＱＬクエリはクラスタ内の各ノードに提出される。クラスタ内の各ノードは、そのノード上のローカルデータを用いてＳＱＬクエリについてのクエリ計画を評価し、そのノードでＳＱＬクエリがどのように実行されるかに関する１組の情報を返送する。ステップ３０３で、クラスタ内のすべてのノードからの情報を集約するクエリ記録オブジェクトが作成される。クエリ記録オブジェクトは、クラスタ内の各ノードによってＳＱＬクエリがどのように実行されるかに関する情報を含む。
【００３２】
さまざまな実施例によれば、クエリ説明計画は、分散データシステムにおいて統計値を収集し、クエリを走らせるためのコストを算出するためのメソッドを提供できる。それは要求ごとに行なうことができ、すべてのクエリの一部として行なう必要はない。一実施例によれば、説明計画プロセスは実際にクエリを走らせることを必要とせず、その代わり、所与のフィルタを用いてクエリを走らせるコストを算出できる。クエリ説明計画機能の実現は、分散データシステムにおけるクエリ性能に影響を及ぼす必要はない。説明計画の結果は、ＩＴが失われたインデックスを追加できるように、プログラマではない人にとって消費できるものである必要がある。クエリ性能を向上させ、説明計画にとって意味のある値を提供するために、フィルタ評価中にインデックスを適用する有効性を算出するための既存のメソッドを調べて実現してもよい。クエリ説明計画の実現は、追跡機能を用いて使用されてもよい。追跡は、それが実際にクエリを走らせ、クエリ性能についての追加の統計値を提供すること以外は、クエリ説明計画に似ている。
【００３３】
一実施例によれば、クエリ説明計画設備は、説明計画モードおよび追跡モードという少なくとも２つのモードで実行可能である。説明計画モードでは、設備は実際にはクエリを実行せず、単に各クラスタメンバー用にクエリ計画を返送する。追跡モードでは、設備はクエリを実行し、たとえば各フィルタを適用する実行時間およびフィルタが適用されたシーケンスを含む、クラスタ内の各ノードに対する実際の性能メトリクスを返送する。
【００３４】
アーキテクチャ
分散キャッシュにおいてクエリ説明計画機能を可能にするために使用できるさまざまなオブジェクトのいくつかの例を以下に挙げる。なお、これらのオブジェクトは単に例示のためにのみ提供されており、この発明のすべての実施例を限定するよう意図されてはいない。
【００３５】
QueryRecorder：QueryRecorder集約子は、クエリ記録を得るために使用可能である。この集約子は、クエリ説明計画が要求されている分散データグリッドへの信号として、および説明計画結果の実際の集約子として機能できる。QueryRecorderは、EXPLAINまたはTRACEという２つのタイプのうちの１つを用いて作成されるであろう。EXPLAINを用いてQueryRecorderを作成することは、クエリ実行の推定コストを含むQueryRecordオブジェクトを作成するであろう。TRACEを用いてQueryRecorderを作成することは、クエリ実行の実際のコストを含むQueryRecordオブジェクトを作成するであろう。言い換えれば、追跡集約を行なうことは、各フィルタステップで実際にクエリを実行して有効性（エントリの組を減少させる能力）を記録し、一方、説明計画集約は単に、（上述のように）各ステップを辿って推定コストを記録するであろう。
【００３６】
QueryRecorderFilter：EntryFilterを拡張可能なフィルタインターフェイスが作成可能である。一実施例によれば、すべてのフィルタはこのインターフェイスを実現するであろう。このインターフェイスは、フィルタを説明し追跡する新しいメソッドを含む。多くのフィルタにとって、説明するための呼出しは、IndexAwareFilter.calculateEffectivenessを通してフィルタを適用する有効性を算出し、この情報をクエリの一部として記録するであろう。
【００３７】
フィルタ実現：多くのフィルタ用のクエリ説明計画の標準実現は単に、クエリ記録ステップへのフィルタの適用についての情報を記録するであろう。この情報は、フィルタ適用前のキーの組のサイズと、フィルタ適用後のキーの組のサイズと、フィルタを適用する期間および実際のコストまたは推定コストとを含んでいてもよい。ArrayFilterを拡張するフィルタについては、クエリ説明計画の実現は、サブフィルタごとに新しいクエリ記録ステップを作成し、各々においてクエリ説明計画を呼出すであろう。ユーザらは、QueryRecorderFilterを実現または拡張することができる。QueryRecorderFilterを拡張しないフィルタは依然として、デフォルトで説明または追跡可能となるであろう。
【００３８】
QueryContext：QueryRecorderFilterの説明計画および追跡メソッドは、クエリコンテキストの使用を含む。コンテキストは、クエリスキャンを行なうために必要なあらゆる情報で初期化されるバッキングマップコンテキスト（たとえばインデックスのマップ）へのアクセスを提供可能である。
【００３９】
QueryRecord：QueryPlanインターフェイスは、クエリ計画動作から返送された標準結果オブジェクトを規定する。QueryPlanAggregatorは拡張可能であり、aggregateResultsの返送タイプはObjectであるため、QueryPlanインターフェイスの使用は必要とはされない。QueryPlanインターフェイスは、集約子が部分的結果を組合せることを可能にするaddResultsメソッドを含む。QueryPlanのデフォルト実現は、クエリ計画のステップのすべてを含む併合された結果にアクセスするためのさまざまなメソッドを含んでいてもよい。QueryPlanインターフェイスはまた、PartialResults、StepおよびContainmentStepを含む、クエリ計画結果の構成要素を作り上げる他のインターフェイスを含む。
【００４０】
一実施例では、各サーバノード１００〜１０２は、コンピュータシステム上で実現されてもよい。図４は、この発明の一実施例を実現し得るコンピュータシステム４００を示すブロック図である。コンピュータシステム４００は、情報を通信するためのバス４０２または他の通信機構と、情報を処理するためにバス４０２と結合されたプロセッサ４０４とを含む。コンピュータシステム４００はまた、情報およびプロセッサ４０４によって実行される命令を格納するためにバス４０２に結合された、ランダムアクセスメモリ（ＲＡＭ）または他の動的記憶装置などのメインメモリ４０６を含む。メインメモリ４０６はまた、プロセッサ４０４によって実行される命令の実行中に一時的変数または他の中間情報を格納するために使用されてもよい。コンピュータシステム４００はさらに、静的情報およびプロセッサ４０４用の命令を格納するためにバス４０２に結合された読出専用メモリ（ＲＯＭ）４０８または他の静的記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置４１０が、情報および命令を格納するために提供され、バス４０２に結合されている。
【００４１】
コンピュータシステム４００は、コンピュータユーザに情報を表示するためのブラウン管（ＣＲＴ）などのディスプレイ４１２に、バス４０２を介して結合されてもよい。英数字キーまたは他のキーを含む入力装置４１４が、プロセッサ４０４に情報およびコマンド選択を通信するために、バス４０２に結合されている。別のタイプのユーザ入力装置は、マウス、トラックボール、またはカーソル方向キーなどのカーソル制御３１６であり、方向情報およびコマンド選択をプロセッサ４０４に通信し、ディスプレイ４１２上のカーソルの動きを制御する。
【００４２】
この発明は、ここに説明された手法を実現するためのコンピュータシステム４００の使用に関する。この発明の一実施例によれば、それらの手法は、メインメモリ４０６に含まれる１つ以上の命令の１つ以上のシーケンスをプロセッサ４０４が実行するのに応答して、コンピュータシステム４００によって行なわれる。そのような命令は、記憶装置４１０などの別のマシン読取可能媒体から、メインメモリ４０６へと読込まれてもよい。メインメモリ４０６に含まれる命令のシーケンスの実行により、プロセッサ４０４は、ここに説明されたプロセスステップを行なう。代替的な実施例では、この発明を実現するために、ソフトウェア命令の代わりに、またはソフトウェアと組合せて、ハードワイヤード回路が使用されてもよい。このため、この発明の実施例は、ハードウェア回路とソフトウェアとのいかなる特定の組合せにも限定されない。
【００４３】
加えて、各サーバノード１００〜１０２は、ネットワーク４２２などのローカルネットワークを介して互いに接続可能である。また、ネットワーク４２２は、サーバノード１００〜１０２を、サーバノード１００〜１０２のクラスタの外のクライアント１０３に接続可能である。
【００４４】
この開示において説明されたさまざまな状況全体を通し、この発明の実施例はさらに、前述のシステムおよび方法を実行するよう構成されたコンピュータ機器、コンピューティングシステムおよびマシン読取可能媒体を包含する。具体的に設計された集積回路または他の電子部品からなる実施例に加えて、この発明は、コンピュータ分野における当業者には明らかであるように、この開示の教示に従ってプログラミングされた従来の汎用または専用デジタルコンピュータもしくはマイクロプロセッサを用いて都合よく実現されてもよい。
【００４５】
ソフトウェア分野における当業者には明らかであるように、この開示の教示に基づいて、適切なソフトウェア符号化が、熟練したプログラマらによって容易に準備可能である。この発明はまた、当業者には容易に明らかであるように、アプリケーション特有の集積回路を準備することにより、または従来の構成回路の適切なネットワークを相互接続することにより、実現されてもよい。
【００４６】
さまざまな実施例は、ここに提示された機能のいずれかを行なうように汎用または専用コンピューティングプロセッサ／装置をプログラミングするために使用可能な命令を格納した記憶媒体であるコンピュータプログラム製品を含む。記憶媒体は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、光磁気ディスク、ホログラフィックストレージ、ＲＯＭ、ＲＡＭ、ＰＲＡＭＳ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリ装置、磁気または光カード、ナノシステム（分子メモリＩＣを含む）を含むあらゆるタイプの物理的媒体；紙または紙ベースの媒体；命令および／または情報を格納するのに好適なあらゆるタイプの媒体または装置のうちの１つ以上を含み得るが、それに限定されない。コンピュータプログラム製品は、１つ以上の公的および／または私的ネットワークを通して全体的にまたは部分的に送信可能であり、送信は、ここに提示された機能のいずれかを行なうために１つ以上のプロセッサによって使用可能な命令を含む。送信は、複数の別々の送信を含んでいてもよい。しかしながら、ある実施例によれば、命令を含むコンピュータ記憶媒体は一時的でなく（すなわち、送信されるプロセスにはない）、むしろ物理的装置上で持続される。
【００４７】
この発明の好ましい実施例の上述の説明は、例示および説明のために提供されてきた。それは、包括的であるよう、またはこの発明を開示されたままの形に限定するよう意図されてはいない。当業者には、多くの修正および変更が明らかであろう。実施例は、この発明の原理およびその実際の適用を最良に説明するために選択され説明されており、それにより、関連技術の当業者がこの発明を理解できるようにする。この発明の範囲は請求項およびそれらの均等物によって定義されるということが意図されている。
【図２Ａ】
2014530416.tif 000005
【図２Ｂ】
2014530416.tif 000006
【図１】
2014530416.tif 000007
【図３】
2014530416.tif 000008
【図４】
2014530416.tif 000009
【国際調査報告】
2014530416.tif 000010
2014530416.tif 000011
2014530416.tif 000012