(57)【要約】【課題】  照会言語要件の変更に適合可能なモノリシッククエリプロセッサを設計し構築するという問題を回避するアーキテクチャを提供すること。【解決手段】  アーキテクチャは、入力クエリを受け入れるとともに、入力クエリの部分を識別するカスケード式分析エンジンを備える。入力クエリを書き換えて、識別した部分を取り除きプレースホルダーで置き換える。そのクエリが、カスケード中の次の分析エンジンに転送される。各分析エンジンは、識別した部分を実行エンジンが処理することができるように、その部分をコンパイルする。実行は、最後の分析エンジンによってコンパイルされたクエリ部分から始まる。最後の分析エンジンに対応する実行エンジンが、そのクエリを実行し、開始部分からのデータに対する、カスケード中の１つ上の実行エンジンに呼出しを行う。【選択図】  図３
2005018775.tif 000002
【特許請求の範囲】
【請求項１】
クエリの部分を２つ以上の実行エンジンに分散する分散処理方法であって、
入力クエリを受け取るステップと、
第１の分析エンジンを用いて、第１の実行エンジンによって処理することができる前記入力クエリの部分を識別するステップと、
前記入力クエリの前記識別された部分をコンパイルし、第１のコンパイルされた部分を形成するステップと、
前記入力クエリを書き換えて、第１の書き換えられたクエリを形成するステップであって、前記入力クエリの前記識別された部分は、前記入力クエリから取り除かれ、第１のプレースホルダーによって置き換えられるステップと、
前記第１の書き換えられたクエリを第２の分析エンジンに渡すステップと、
前記第２の分析エンジンを用いて、第２の実行エンジンによって処理することができる、前記第１の書き換えられたクエリの部分を識別するステップと、
前記第１の書き換えられたクエリの前記識別された部分をコンパイルし、第２のコンパイルされた部分を生成するステップであって、前記入力クエリは、前記第１の実行エンジン及び前記第２の実行エンジンに分散されるステップと
を有することを特徴とする分散処理方法。
【請求項２】
前記第１の書き換えられたクエリを書き換えて、第２の書き換えられたクエリを形成するステップであって、前記第１の書き換えられたクエリの前記識別された部分は、前記第１の書き換えられたクエリから取り除かれ、第２のプレースホルダーによって置き換えられるステップを有することを特徴とする請求項１に記載の分散処理方法。
【請求項３】
前記書き換えるステップは、前記第２のコンパイルされた部分を、前記入力クエリの前記第１のコンパイルされた部分の中にラップするステップを有することを特徴とする請求項１に記載の分散処理方法。
【請求項４】
前記第１のコンパイルされた部分及び前記第２のコンパイルされた部分は、異なるデータソースに対して実行することができることを特徴とする請求項１に記載の分散処理方法。
【請求項５】
第１の分析エンジンは、構造化照会言語ベースのエンジンであり、第２の分析エンジンは、拡張マークアップ言語ベースのエンジンであることを特徴とする請求項１に記載の分散処理方法。
【請求項６】
前記第２の実行エンジンを用いて、前記第２のコンパイルされた部分を部分的に実行し、第２の暫定結果及び前記第１のプレースホルダーの組合せを形成するステップであって、前記第１のプレースホルダーは、前記第２のコンパイルされた部分の未実行部分のままであるステップと、
前記第２の実行エンジンから前記第１の実行エンジンへの呼出しを生成し、前記第１のプレースホルダーに対応するデータを要求するステップと、
前記第１の実行エンジンを用いて、前記第１のコンパイルされた部分を実行して、前記第１のプレースホルダーに対応するとともに前記呼出しを満たす第１の暫定結果を形成するステップと、
前記第１の暫定結果を前記第２の実行エンジンに提供するステップと、
前記第１のプレースホルダーを前記第１の暫定結果で置き換え、組み合わされた入力照会結果を含む、第２の暫定結果及び第１の暫定結果の組合せを形成するステップと
を有することを特徴とする請求項１に記載の分散処理方法。
【請求項７】
前記第１の実行エンジン及び前記第２の実行エンジンは、異なるデータモデルを含むクエリに対して作用することを特徴とする請求項６に記載の分散処理方法。
【請求項８】
前記第１の実行エンジンを用いて、前記第１のコンパイルされた部分を部分的に実行し、第１の暫定結果を形成するステップと、
前記第１の実行エンジンから前記第２の実行エンジンへの呼出しを生成し、前記入力クエリの識別されていない部分に対応するデータを要求するステップと、
前記第２の実行エンジンを用いて、前記第２のコンパイルされた部分を実行して、前記呼出しを満たす第２の暫定結果を形成するステップと、
前記第２の暫定結果を前記第１の実行エンジンに提供するステップと、
前記第１の暫定結果を前記第２の暫定結果と組み合わせて、組み合わされた入力照会結果を形成するステップと
を有することを特徴とする請求項１に記載の分散処理方法。
【請求項９】
前記第１の実行エンジン及び前記第２の実行エンジンは、異なるデータモデルを含むクエリに対して作用することを特徴とする請求項８に記載の分散処理方法。
【請求項１０】
入力クエリを分散処理する分散処理システムであって、
コンパイルし実行することができる前記入力クエリの部分を分離させる２つ以上の分析エンジンと、
前記入力クエリに対して動作を行う２つ以上の実行エンジンと、
１つ又は複数のデータソースへのアクセス権であって、前記２つ以上の分析エンジンは、前記入力クエリの１つ又は複数の部分をそれぞれ独立に識別しコンパイルするように動作するアクセス権とを備え、
前記２つ以上の分析エンジンの少なくとも１つは、前記入力クエリを書き換えて、実行エンジンに対応する前記入力クエリの部分を取り除き、
前記２つ以上の実行エンジンは、前記入力クエリの前記１つ又は複数のコンパイルされた部分を処理し、１つの実行エンジンからの部分的な照会結果が後続の実行エンジンに渡され組み合わされて、入力照会結果全体を形成することを特徴とする分散処理システム。
【請求項１１】
コンピュータにおいて実行されると、クエリの部分を２つ以上の実行エンジンに分散する分散処理方法を実行する命令を含むコンピュータ読取可能な媒体であって、
前記分散処理方法は、
入力クエリを受け取るステップと、
第１の分析エンジンを用いて、第１の実行エンジンによって処理することができる前記入力クエリの部分を識別するステップと、
前記入力クエリの前記識別された部分をコンパイルし、第１のコンパイルされた部分を形成するステップと、
前記入力クエリを書き換えて、第１の書き換えられたクエリを形成するステップであって、前記入力クエリの前記識別された部分は、前記入力クエリから取り除かれ、第１のプレースホルダーによって置き換えられるステップと、
前記第１の書き換えられたクエリを第２の分析エンジンに渡すステップと、
前記第２の分析エンジンを用いて、第２の実行エンジンによって処理することができる、前記第１の書き換えられたクエリの部分を識別するステップと、
前記第１の書き換えられたクエリの前記識別された部分をコンパイルし、第２のコンパイルされた部分を生成するステップであって、前記入力クエリは、前記第１の実行エンジン及び前記第２の実行エンジンに分散されるステップと
を有することを特徴とするコンピュータ読取可能な媒体。
【請求項１２】
前記分散処理方法は、
前記第２の実行エンジンを用いて、前記第２のコンパイルされた部分を部分的に実行し、第２の暫定結果及び前記第１のプレースホルダーの組合せを形成するステップであって、前記第１のプレースホルダーは、前記第２のコンパイルされた部分の未実行部分のままであるステップと、
前記第２の実行エンジンから前記第１の実行エンジンへの呼出しを生成し、前記第１のプレースホルダーに対応するデータを要求するステップと、
前記第１の実行エンジンを用いて、前記第１のコンパイルされた部分を実行して、前記第１のプレースホルダーに対応するとともに前記呼出しを満たす第１の暫定結果を形成するステップと、
前記第１の暫定結果を前記第２の実行エンジンに提供するステップと、
前記第１のプレースホルダーを前記第１の暫定結果で置き換え、組み合わされた入力照会結果を含む、第２の暫定結果及び第１の暫定結果の組合せを形成するステップと
を有することを特徴とする請求項１１に記載のコンピュータ読取可能な媒体。
【請求項１３】
前記第１の実行エンジン及び前記第２の実行エンジンは、異なるデータモデルを含むクエリに対して作用することを特徴とする請求項１２に記載のコンピュータ読取可能な媒体。
【請求項１４】
前記第１のコンパイルされた部分及び前記第２のコンパイルされた部分は、異なるデータソースに対して実行されることを特徴とする請求項１２に記載のコンピュータ読取可能な媒体。
【請求項１５】
前記分散処理方法は、
前記第１の実行エンジンを用いて、前記第１のコンパイルされた部分を部分的に実行し、第１の暫定結果を形成するステップと、
前記第１の実行エンジンから前記第２の実行エンジンへの呼出しを生成し、前記入力クエリの識別されていない部分に対応するデータを要求するステップと、
前記第２の実行エンジンを用いて、前記第２のコンパイルされた部分を実行して、前記呼出しを満たす第２の暫定結果を形成するステップと、
前記第２の暫定結果を前記第１の実行エンジンに提供するステップと、
前記第１の暫定結果を前記第２の暫定結果と組み合わせて、組み合わされた入力照会結果を形成するステップと
を有することを特徴とする請求項１１に記載のコンピュータ読取可能な媒体。
【請求項１６】
第１の分析エンジンは、構造化照会言語ベースのエンジンであり、第２の分析エンジンは、拡張マークアップ言語ベースのエンジンであることを特徴とする請求項１５に記載のコンピュータ読取可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理方法及び分散処理システムに関し、より詳細には、データソースに照会（ｑｕｅｒｙ）を行うソフトウェアの分野において、異なるデータモデルを含むデータソースに対する分散クエリ（ｄｉｓｔｒｉｂｕｔｅｄ  ｑｕｅｒｙ）エンジンパイプラインの分散処理方法及び分散処理システムに関する。
【背景技術】
【０００２】
異種データソースに照会を行うことは、異なるデータモデルを有するデータソースに渡って探索を実施する試みである。こうした試みは、全く異なるデータソースが同じデータモデルを有する場合にも行われる。複数のデータモデルを有する複数のデータソースに照会を行うためには、多様なクエリ実行エンジンが一般に必要とされる。入力クエリ（ｉｎｐｕｔ  ｑｕｅｒｙ）は通常、接続されたどの実行エンジンが元の入力クエリのどの部分を受け取るべきか、推測的に決定する１つのモノリシック（ｍｏｎｏｌｉｔｈｉｃ）プロセッサによって分離される。したがって、元のクエリは、クエリを実行用の別個の部分に分割するために、一体的に処理される。各実行エンジンは、ある特定のデータモデル又はデータソースに対応する。個々のクエリ実行エンジンは次いで、各自のクエリ部分を実行し、モノリシックプロセッサに結果を返す。次いで、モノリシックプロセッサは、クエリ実行エンジンそれぞれからの個々の照会結果を組み合わせ、一列につなげて完全な１組の照会結果を形成するタスクを行う。
【０００３】
異種データを照会するというこの手法には、可能なすべてのデータソースを識別し操作することができるモノリシックプロセッサを必要とするという欠点がある。これは、失敗の恐れがあるタスクである。というのは、異なるデータソースが、そのデータと相互作用する全く異なるＡＰＩ又はモデルを有するからであり、また、すべてのデータモデルについての可能なすべてのデータソースを操作することができるモノリシックプロセッサを構築することは、概して実現可能でも望ましくもないからである。例えば、ＳＱＬデータベース又はＸＭＬファイルに対して照会を行うことが望まれる場合、ＸＭＬファイルと相互作用する唯一のインターフェースは、ドキュメントオブジェクトモデル（ＤＯＭ）であり、データベースへの唯一のインターフェースは、ＳＱＬコマンドである。結果として、データベース及びＸＭＬファイルに作用するための異なるコードが必要になる。追加のデータモデルタイプを処理することができるモノリシックプロセッサの構築を試みると、そうしたデータタイプが当該分野において重要になるのに従って、問題は悪化する。このような条件の下では、追加のどのデータモデルタイプも追加される場合、又は既存のデータモデルタイプが大幅に変化した場合も、モノリシックエンジンの容量は、要件の変更によって確実に超過され、再設計を必要とする可能性がある。
【０００４】
異種データソース用クエリ機構の作成におけるさらなる問題は、仮想クエリである。クエリを第２のデータモデル照会言語で構成することが望ましいにもかかわらず、データソースが１つのデータモデルタイプにおいて容易に照会を受けることができる場合、１つのデータモデル照会言語タイプからの変換が必要とされ得る。この必要性は、クエリの効率的な符号化を確実なものにするために、ハードウェア及びソフトウェアモジュールの複数の組と、対応する数のオプティマイザ（ｏｐｔｉｍｉｚｅｒ）とを必要とする複数の照会言語の変換を引き起こす場合がある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがって、照会言語要件の変更に適合可能なモノリシッククエリプロセッサを設計し構築するという問題を回避するアーキテクチャが必要である。さらに、複数の照会言語（ｑｕｅｒｙ  ｌａｎｇｕａｇｅ）をある形から別の形に変換することに関連する問題を回避するアーキテクチャが必要である。本発明は、クエリ環境要求の変更に適合可能な、発明性のあるアーキテクチャを用いて、上述した必要性に対処しそれに応えるものである。
【０００６】
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、異なるデータモデルを含むデータソースに対する分散クエリエンジンパイプラインの分散処理方法及び分散処理システムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明は、複数のデータモデルタイプを有する複数のデータソースに対して照会を行うという問題に、分散クエリエンジンパイプラインを使用することによって対処する。このパイプラインは、入力クエリを分割し、それぞれの部分を特定の実行エンジンに分配するためのモノリシックプロセッサを使用し、次いで、結果を組み合わせて入力照会結果を形成する、一般的なソリューションを上回る利点をもたらす。本発明は、モノリシックプロセッサを使わず、カスケード式（ｃａｓｃａｄｅｄ）分析エンジンを使用して、特定の実行エンジンにおいてコンパイルし実行することができる入力クエリの部分を識別し抽出する。
【０００８】
本発明の一実施形態において、分析エンジンは、実行エンジンのタイプに関連づけられ、カスケード式ではあるが、各分析エンジンは、それぞれ独立して動作する。各分析エンジンは、２つの出力、すなわち、実行エンジンに対応するものとしてエンジンが識別した、コンパイルされた部分と、識別された部分が取り除かれプレースホルダー（ｐｌａｃｅｈｏｌｄｅｒ）で置き換えられた、書き換えられたクエリとを有する。カスケード中で隣にある分析エンジンは、書き換えられたクエリを受け取り、クエリの実行可能な部分を識別し、それを別のプレースホルダーで置き換え、２度書き換えられたクエリを両方のプレースホルダーと共に次の下の段階に渡す。
【０００９】
クエリを処理する実行フェーズは、好ましくは、最後の分析エンジンに対応する実行エンジンから始まる。この実行エンジンは、それに割り当てられたクエリを実行し、実行エンジンからなるカスケード中のすぐ上の実行エンジンに呼出しを行って、プレースホルダーの照会結果を取り出す。各実行エンジンは、より上位のスタック化されたエンジンに呼出しを行って、プレースホルダーに対応するデータを取り出す。カスケード式実行エンジンにおいて続いて起こる呼出しの結果、最終的には、１つの実行エンジンが入力クエリに対応する照会結果すべてを蓄積することになる。
【００１０】
任意選択で、パイプライン型クエリの実行フェーズは、最も外側、すなわち第１の分析エンジンのコンパイル出力の実行から始まることができる。従来通り、各実行エンジンは、それに配分されたクエリを実行し、プレースホルダーデータのために後続の実行エンジンに呼出しを行うことができる。入力クエリが返す結果は、類似している。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して本発明の実施の態様について説明する。なお、以下の好ましい実施形態の詳細な説明は、本発明を説明するためのものであって、本発明は、これにより開示された特定の方法及び手段に限定されるものではない。
【００１２】
＜概要＞
本発明は、複数のクエリ元から様々なタイプのデータソースに照会をおこなうという問題に対処するものである。仮想ＸＭＬデータソースに照会をおこなうという問題に対する１つの解決法は、統合中間言語を用いることである。本発明の状況で用いられるＸＭＬ中間言語は、クエリの意味又はセマンティクスを表わしている。ＸＭＬ中間言語は、クエリ中間言語（ＱＩＬ）と呼ばれる。
【００１３】
ＱＩＬは、「クエリ／ビューの合成」として知られる問題に対処する。一例として、ＸＭＬクエリが、データの仮想ＸＭＬビュー、すなわちＸＭＬデータ、ＸＭＬ仮想データ、又は他のデータのいずれかに対して実施されると仮定する。１つの手法は、そのデータソースをＸＭＬとして具体化することであろうが、これは、非常に非効率的であり、システムに対して利用可能であるよりも多くのメモリを必要とする場合がある。他の手法は、ビューを仮想化し、クエリをその仮想ビューと合成し、その結果を元のデータに対する動作に翻訳することである。ユーザには、論理ＸＭＬデータモデルに対するＸＭＬクエリに見えるが、実装では、実装において提供されるどのようなクエリシステムも使って、ネイティブデータ形式を照会する。この手法は、ＳＱＬビューに対するＳＱＬクエリ用のリレーショナルデータベースにおいて用いられる。ＱＩＬなどのＸＭＬ中間言語を用いて、元の潜在的複合ビューは、より微量のデータに対するクエリ動作に分解することができる。このようにして、１つの複合ビューに対する１つのクエリは、１つのクエリと、より単純な１つのビューとに対する１つのクエリになる。クエリ合成により、これは、より単純なビューに対する単なる１つのクエリになり、そうすることによって問題が単純化される。
【００１４】
ＸＭＬ中間言語ＱＩＬは、（１）ＸＭＬクエリ及びＸＭＬビュー両方の統一した表現を提供し、そうすることによってクエリ／ビューの合成の問題を大幅に単純化し、（２）すべてのビューを「仮想ＸＭＬ」として扱って、システムのインターフェースを大幅に簡素化する。可能なすべての言語及びデータモデル用の１つのＡＰＩを有するのではなく、ＡＰＩすべてが、共通データモデル、ＸＭＬ中間言語ＱＩＬのオペレータを共用することができる。
【００１５】
入力クエリの中間言語表現の使用と併せて、本発明は、複数のデータソースに対する１つのクエリを実施する分散型アーキテクチャを使用して、例示的なアーキテクチャを開示する。真の分散型アーキテクチャとは、モノリシックプロセッサが作業を監視することを必要とせずに、混合ソースクエリを異なる実行エンジンに分散することができる。異なるクエリの必要性を調整するために、新しい又は修正された実行エンジンをアーキテクチャに追加することができるという点で、本発明の例示的な分散クエリエンジンパイプラインも、モジュール式になることができる。さらに、使用される実行エンジンは、正しく動作するために他方のクエリ実行エンジンの動作について知らされなくてよい。各エンジンは、互いの上にスタックとして積み重ねることもカスケードとして重ねることもでき、各エンジンは、各エンジンが理解しているクエリの部分のみを処理し最適化し、クエリのそれ以外の部分をチェーン又はカスケード中の次のエンジンに渡す。
【００１６】
＜例示的な計算機環境＞
図１は、本発明の実施形態を実現することができる好適な計算機環境を示すブロック図で、本発明を実現することができる適切な計算機環境の、簡潔で概略的な説明を提供することを意図している。ただし、本発明に関連して使用するために、携帯型、可搬型、ならびにすべての種類の他の計算装置及び計算用オブジェクトが企図されることを理解されたい。したがって、以下で汎用コンピュータを説明するが、これは一例に過ぎず、本発明は、ネットワーク／バスの相互運用性及び相互作用性を備えるクライアントなど他の計算装置でも実現することができる。したがって、本発明は、ごくわずか又は最低限のクライアント資源が関与する、ネットワーク接続されたホストサービスという環境、例えば、クライアント装置が、機器内に置かれたオブジェクトや他の計算装置及び計算用オブジェクトなど、ネットワーク／バスへのインターフェースとしてのみ働く、ネットワーク接続された環境において実現することができる。本質的に、データを格納することができ、データを取り出すことができるところであればどこでも、本発明による動作にとって望ましい、又は適した環境である。
【００１７】
例えば、本発明は、装置又はオブジェクト用サービスの開発者が使うためのオペレーティングシステムによって実現することができ、かつ／又は、本発明に従って動作するアプリケーションソフトウェアに含めることができる。ソフトウェアは、１つ又は複数のコンピュータ、例えばクライアントワークステーション、サーバ、あるいは他の装置によって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的な状況において説明することができる。概して、プログラムモジュールは、特定のタスクを実施し又は特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含んでいる。一般に、プログラムモジュールの機能は、様々な実施形態における要望に応じて組み合わせることも分散することもできる。さらに、本発明は他のコンピュータ構成を有して実施できる。本発明とともに使用するのに適切であり得る他の公知の計算システム、環境、及び／又は構成には、パーソナルコンピュータ（ＰＣ）、自動預払機、サーバコンピュータ、携帯型又はラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能な家電製品、ネットワークＰＣ、機器、光、環境制御要素、ミニコンピュータ、メインフレームコンピュータなどがあるが、それに限定されるものではない。本発明は、通信ネットワーク／バス又は他のデータ伝送媒体を介してリンクされるリモート処理装置によってタスクが実施される分散型計算機環境でも実現することができる。分散型計算機環境では、プログラムモジュールは、メモリ記憶装置など、ローカル及びリモートコンピュータ記憶媒体の両方に置くことができ、クライアントノードは、サーバノードとして動作することができる。
【００１８】
したがって、図１は、本発明を実現することができる適切な計算システム環境１００の一例を示すが、上述したように、計算システム環境１００は、適切な計算機環境の一例に過ぎず、本発明の使用又は機能の範囲に関するどのような限定を示唆することも意図していない。また、計算機環境１００は、例示的な動作環境１００に示される構成要素のどの１つ又はその組合せに関するどのような依存も要件も有していると解釈されるべきではない。
【００１９】
図１を参照すると、本発明を実現する例示的なシステムは、汎用計算装置を、コンピュータシステム１１０の形で含んでいる。コンピュータシステム１１０の構成要素は、処理装置１２０と、システムメモリ１３０と、システムメモリなど様々なシステム構成要素を処理装置１２０に結合するシステムバス１２１とを含むことができるが、これに限定されない。システムバス１２１は、様々なバスアーキテクチャのどれをも使用するメモリバス又はメモリコントローラ、周辺バス、及びローカルバスなどいくつかのタイプのバス構造のいずれでもよい。例えば、このようなアーキテクチャは、ＩＳＡ（業界標準アーキテクチャ）バス、ＭＣＡ（マイクロチャネルアーキテクチャ）バス、ＥＩＳＡ（拡張ＩＳＡ）バス、ＶＥＳＡ（米国ビデオ電子装置規格化協会）ローカルバス、及びＰＣＩ（周辺装置相互接続）バス（メザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られる）を含んでいる。
【００２０】
コンピュータシステム１１０は、通常、様々なコンピュータ読取可能な媒体を含んでいる。コンピュータ読取可能な媒体は、コンピュータシステム１１０によってアクセス可能であるとともに揮発性媒体及び不揮発性媒体の両方、取外し可能媒体及び固定型媒体を含む、利用可能などの媒体でもよい。例えば、コンピュータ読取可能な媒体は、コンピュータ記憶媒体及び通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報の格納のためのどの方法でも技術でも実現される揮発性媒体及び不揮発性媒体、取外し可能媒体及び固定型媒体を含んでいる。コンピュータ記憶媒体は、ＲＡＭ（ランダムアクセスメモリ）、ＲＯＭ（読出し専用メモリ）、ＥＥＰＲＯＭ（電気的消去可能なプログラム可能読出し専用メモリ）、フラッシュメモリ又は他のメモリ技術、ＣＤＲＯＭ（コンパクトディスク読出し専用メモリ）、ＣＤＲＷ（コンパクトディスク再書込み可能）ＤＶＤ（デジタル多用途ディスク）又は他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置、あるいは、所望の情報を格納するのに使うことができるとともにコンピュータシステム１１０によってアクセスすることができる他のどの媒体も含むが、それに限定されない。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータを、変調データ信号、例えば搬送波や他の移送機構として具体化し、どの情報配信媒体も含んでいる。「変調データ信号」という用語は、信号中の情報を符号化するようなやり方で設定され又は変更される信号特性の１つ又は複数を有する信号を意味する。例えば、通信媒体は、有線ネットワークや直接有線接続などの有線媒体、ならびに音響、ＲＦ、赤外線、及び他の無線媒体などの無線媒体を含む。上述したどの組合せも、やはりコンピュータ読取可能な媒体の範囲に含まれるべきである。
【００２１】
システムメモリ１３０は、コンピュータ記憶媒体を、読出し専用メモリ（ＲＯＭ）１３１及びランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性及び／又は不揮発性メモリの形で含んでいる。基本入出力システム（ＢＩＯＳ）１３３は、例えば、起動中にコンピュータシステム１１０内部の要素間の情報の転送を助ける基本ルーチンを含み、通常はＲＯＭ１３１に格納される。ＲＡＭ１３２は、一般に、処理装置１２０に対してただちにアクセス可能な、かつ／又は処理装置１２０によって現在操作されているデータ及び／又はプログラムモジュールを含んでいる。例えば、図１では、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、及びプログラムデータ１３７を示している。
【００２２】
コンピュータシステム１１０は、他の取外し可能／固定型、揮発性／不揮発性コンピュータ記憶媒体を含むこともできる。例示のみのために、図１では、固定型の不揮発性磁気媒体からの読出し又はそこへの書込みをするハードディスクドライブ１４１、取外し可能な不揮発性磁気ディスク１５２からの読出し又はそこへの書込みをする磁気ディスクドライブ１５１、及び、ＣＤ−ＲＯＭ、ＣＤＲＷ、ＤＶＤ、又は他の光学媒体など取外し可能な不揮発性光ディスク１５６からの読出し又はそこへの書込みを行う光ディスクドライブ１５５を示している。例示的な動作環境で用いることができる、他の取外し可能／固定型、揮発性／不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどを含むが、それに限定されない。ハードディスクドライブ１４１は、通常、インターフェース１４０などの固定型メモリインターフェースによって、システムバス１２１に接続され、磁気ディスクドライブ１５１及び光ディスクドライブ１５５は、通常、インターフェース１５０などの取外し可能メモリインターフェースによって、システムバス１２１に接続される。
【００２３】
上述し、かつ図１に示したディスクドライブ及びそれに関連するコンピュータ読取可能な媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、及びコンピュータシステム１１０のための他のデータの格納を実現する。図１では、例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、及びプログラムデータ１４７を格納するものとして示した。こうした構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、及びプログラムデータ１３７と同じでも、異なってもよいことに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、及びプログラムデータ１４７は、少なくとも、異なるものであることを示すために、ここでは異なる番号が与えられている。ユーザは、キーボード１６２及び一般にはマウス、トラックボール、又はタッチパッドと呼ばれる指示装置１６１などの入力装置を介して、コマンド及び情報をコンピュータシステム１１０に入力することができる。他の入力装置（図示せず）には、マイクロホン、ジョイスティック、ゲーム用パッド、衛星パラボラアンテナ、スキャナなどがあり得る。こうした及び他の入力装置は、しばしばシステムバス１２１に結合されるユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、他のインターフェース及びバス構造、例えば、並列ポート、ゲームポート、ＵＳＢ（ユニバーサルシリアルバス）によって接続することもできる。モニタ１９１又は他のタイプの表示装置も、映像インターフェース１９０などのインターフェースを介してシステムバス１２１に接続され、このインターフェースは、映像メモリ（図示せず）と通信することができる。モニタ１９１に加え、コンピュータシステムは、出力周辺インターフェース１９５を介して接続することができるスピーカ１９７及びプリンタ１９６など、他の周辺出力装置も含むことができる。
【００２４】
コンピュータシステム１１０は、リモートコンピュータ１８０など、１つ又は複数のリモートコンピュータへの論理接続を使用してネットワーク接続された環境又は分散環境において動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置（ｐｅｅｒ  ｄｅｖｉｃｅ）、又は他の共通ネットワークノードでよく、通常、コンピュータシステム１１０に関連して上述した要素の多く又はすべてを含むが、メモリ記憶装置１８１のみを図１に示した。図１に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１及びワイドエリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワーク／バスを含むこともできる。このようなネットワーク環境は、家庭、会社、企業規模のコンピュータネットワーク、イントラネット及びインターネットにおいてよく見られる。
【００２５】
ＬＡＮネットワーク環境において使われる場合、コンピュータシステム１１０は、ネットワークインターフェース又はアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境において使われる場合、コンピュータシステム１１０は、通常、モデム１７２、又は、例えば、インターネットなどのＷＡＮ１７３を介した通信を確立する他の手段を含んでいる。モデム１７２は、内部にあっても外部にあってもよく、ユーザ入力インターフェース１６０又は他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク接続された環境では、コンピュータシステム１１０に関連して図示したプログラムモジュール又はその一部は、リモートメモリ記憶装置に格納することができる。例えば、図１では、リモートアプリケーションプログラム１８５を、メモリ装置１８１に常駐するものとして示した。図示したネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段も使うことができる。
【００２６】
個人の計算機使用及びインターネットの収束を鑑みて、様々な分散型計算の枠組みがこれまでに開発されており、現在も開発されている。個人ユーザ及びビジネスユーザには一様に、アプリケーション及び計算装置用のシームレスに対話可能な、ウェブ対応のインターフェースが提供され、コンピュータを使用した活動がますますウェブブラウザ指向又はネットワーク指向になっている。
【００２７】
例えば、マイクロソフトコーポレーション（９８０５２ワシントン州レドモンド、Ｏｎｅ  Ｍｉｃｒｏｓｏｆｔ  Ｗａｙ）から入手可能なマイクロソフト（登録商標）の．ＮＥＴ（登録商標）プラットフォームは、サーバ、構築ブロックサービス、例えば、ウェブベースのデータ記憶、及びダウンロード可能なデバイスソフトウェアを含む。本明細書における例示的な実施形態は、計算装置内に常駐するソフトウェアとともに説明するが、本発明の１つ又は複数の部分は、オペレーティングシステム、ＡＰＩ（アプリケーションプログラミングインターフェース）、又は、コプロセッサ、表示装置、及び要求側オブジェクトのいずれの間の「仲介者」オブジェクトによっても実装することができ、そうすることによって、本発明による動作が、他の分散型計算の枠組みにおいても、．ＮＥＴ（登録商標）の言語及びサービスのすべてによって実施され、それにおいてサポートされ、それを介してアクセスされることが可能になる。
【００２８】
＜例示的な実施形態＞
図２は、本発明の実施形態を実現することができるアーキテクチャを示すブロック図で、具体化する例示的なシステムアーキテクチャのブロック図を示している。中間言語コンパイラ及び分散型実行エンジンパイプラインを含むクエリアーキテクチャ２００を示してある。このアーキテクチャは、複数のデータソース及びタイプに対するクエリ用のデータを受け取り、コンパイルし、翻訳し、アクセスするように実装された例示的な基本ブロックを示している。複数のフロントエンド言語コンパイラ２１０を使うことができ、このコンパイラは概して、関連する言語用でよい。例えば、コンパイラ２１０は、ＸＭＬ標準又はＸＭＬ関連標準に適合するＸＭＬ関連コンパイラでよい。元のクエリ又は入力クエリは、図１に示すような複数の入力装置のいずれからでも、受け取ることも入力することもできる。図２に戻ると、フロントエンドコンパイラ２１０は、ＸＭＬクエリ、ＸＭＬビュー、又は他の関連ＸＭＬ言語照会などのクエリを受け取って、入力クエリの意味の、コンパイルされた中間言語表現２２０を生成することができる。フロントエンドコンパイラ用の言語タイプの例には、ＸＰａｔｈ、ＸＭＬスタイルシート言語（ＸＳＬ）、ＸＳＬＴ、ＸＭＬのＷ３Ｃ標準がある。それ以外の例としては、中でも、ＸＭＬビューコンパイラがあろう。クエリ言語及び表示言語と複数の目標モデルとの間の中間言語の抽象化により、実データ、例えば、マイクロソフト（登録商標）．ＮＥＴ（登録商標）ならびに仮想ＸＭＬデータからのＸＭＬデータが、データソースとして使われることが可能になる。
【００２９】
図２に示すように生成された中間言語は、入力クエリ又はビューの表現である。したがって、クエリの意味の明示的な表現なので、クエリ中間言語（ＱＩＬ）と呼ぶことができる。クエリ中間言語は、アーキテクチャ２００において使われるすべてのクエリ及び表示言語コンパイラ２１０に共通な意味論的表現と見なすことができる。例えば、入力コンパイラがＸＭＬデータに対して動作する場合、ＱＩＬは、様々な異なる目標データソース（関係データ及び非関係データなど）に渡って、複数の異なるＸＭＬ照会言語及びビュー定義言語（ＸＰａｔｈ及びＸＳＬＴなど）の抽象化を可能にする。したがって、ＱＩＬは、互換性のあるＸＭＬ照会言語すべてをサポートするための共通構成を可能にする。クエリアーキテクチャ２００において中間言語表現を利用することの利点が当業者には理解されよう。内部のすべての動作は、明示的であるとともに曖昧性がなく、それによって、好ましくは、ＱＩＬの生成を助けるフロントエンドコンパイラを、ＱＩＬを使用する分散クエリエンジンパイプラインから完全に分離する。
【００３０】
上述した例は、ＸＭＬ中間言語表現を分散クエリエンジンパイプラインへの入力として用いる、本発明の状況における一実施形態を表す。他の中間言語表現又は直接の基本言語、例えば、いくつか例を挙げると、ダイレクトＬＤＡＰ、ＡＤ、ＸＭＬ又はＳＱＬ言語クエリ入力などを、本発明への入力として用いることもできる。
【００３１】
中間言語表現２２０は、後続の段階による、より効率的な処理のために、任意選択で最適化（２３０）することができる。図２のオプティマイザは、本発明の状況としてのみ提示されるのであって、絶対に必要なわけではない。入力クエリの最適化された又は最適化されていない中間言語表現２２０は、分散クエリエンジンパイプライン２４０に対して提示することができる。
【００３２】
分散クエリエンジンパイプラインは、異種データソース２６０へのクエリを可能にする。パイプラインのエンジンは、中間言語クエリを、特定のデータモデルを有する実行マシンに分散する。こうすることにより、ある特定のデータモデルにおけるクエリ効率を最大限にする実行エンジンによってクエリ実行が達成されることが可能になる。したがって、パイプライン２４０中の実行エンジンは、サポートされる各データソース中のデータのモデルに適合するデータソースに対して効率的に作用するように構成することができる。例えば、ＳＱＬデータベースソース用の実行エンジンは、ＳＱＬデータベース管理システムを有するリレーショナルデータベースに対するクエリ実行における効率性のために最適化することができる。パイプライン中の実行エンジンはそれぞれ、その独自のデータモデルを備えるその特定のデータソースへのアクセス権２５０を有する。分散型クエリエンジンは、異種探索において、１つ又は複数のデータモデルを有する１つ又は複数のデータソースに照会を行うことができる。分散型クエリを実行すると、パイプラインの実行エンジンは、通常、例えば、さらなる処理、格納、ユーザへの表示、又は後続のソフトウェアアプリケーションの準備に利用可能な照会結果（ｑｕｅｒｙ  ｒｅｓｕｌｔ）２７０を生じる。
【００３３】
図３は、本発明の実施形態を実現することができるアーキテクチャを示すブロック図で、図２に示した分散クエリエンジンパイプラインのブロック図を示している。つまり、図３は、分散クエリエンジンパイプラインの基本的な内部アーキテクチャを示している。このパイプラインは、カスケード式の、又はスタック化された分析エンジン３１０、３２０、３３０と、実行エンジン３７０、３８０及び３９０とから構成されている。図３における例示は、３つの分析エンジン及び３つの実行エンジンを示すが、わずか２つ、及びＮ個もの分析／実行エンジンの対が、所与のパイプラインアプリケーション用にカスケード状に並べることができる。
【００３４】
まず、入力クエリ３００が、分析エンジンＡ３１０によって受け取られる。エンジンは、クエリを調べ、エンジンが最適化し又は実行エンジンに渡す（３１２）方法がわかっているクエリの部分を見つける。分析エンジンＡ３１０は、識別された部分を取り除き、その部分をプレースホルダーで置き換える。したがって、エンジン３１０はクエリを書き換え、クエリとプレースホルダーを合わせたバランス（ｂａｌａｎｃｅ）を、分析エンジンＢ３２０に渡す（３１４）。したがって、エンジン３１０は、修正したクエリをスタック中の次のエンジンに渡す。
【００３５】
分析エンジンＡ３１０が認識するクエリの部分は、コンパイルされ、コンパイルされたクエリ部分（コンパイルされたクエリＡ）を保持するためのアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）３４０に渡される（３１２）。分析エンジンＡ３１０は、分析エンジンＢについての知識がないことに留意されたい。エンジンＡは、特定の実行エンジンによって処理することができるものとして認識することができるクエリの部分を抽出し、そのクエリのバランスを外に渡す。スタック中の次の分析エンジンがある場合、その分析エンジンは、異なる実行エンジンに対応するクエリの部分のみを認識する。
【００３６】
分析エンジンＢ３２０は、エンジンＡから、修正されたクエリを受け入れ、修正されたクエリのどの部分を、実行エンジンに渡す（３２２）ことができるか識別する。次いで、分析エンジンＢは、識別されたその部分を取り除き、コンパイルし、コンパイルされたクエリＢを保持するアキュムレータ３５０に送る。次いで、分析エンジンＢ３２０は、識別し抽出した部分をプレースホルダーで置き換えることによって、受け取ったクエリを書き換える。次いで、分析エンジン３２０は、２度修正されたクエリを、スタック中の次のエンジンに渡す（３２４）。分析エンジンＣ３３０は、エンジンＢから、２度修正されたクエリを受け入れ、２度修正されたクエリのどの部分を、実行エンジンに渡す（３３２）ことができるか識別する。次いで、分析エンジンＣは、識別されたその部分を取り除き、コンパイルし、コンパイルされたクエリＣを保持するアキュムレータ３６０に送る。分析エンジンのより多くの層又は段階が実装されるシステムでは、分析エンジンＣ３３０は、識別し抽出した部分をプレースホルダーで置き換えることによって、受け取ったクエリを書き換えることができる。次いで、分析エンジンＣ３３０は、３度修正されたクエリを、スタック中の次のエンジンに渡すことができる。したがって、分散型パイプライン分析エンジンを、要望に応じてカスケード式にできることが明らかである。
【００３７】
コンパイルされたクエリのアキュムレータ３４０、３５０及び３６０は、１つになって複合クエリを形成する。各クエリ部分（Ａ、Ｂ及びＣ）は、特定のデータモデルを有するデータソースに対してクエリを効率的に実施する実行エンジンに関連づけられる。例えば、コンパイルされたクエリＡ３４０は、実行エンジンＡ３９０によって実行されることが可能である。実行エンジンＡは、コンパイルされたクエリＡと整合するデータモデルに対応する少なくともいくつかの部分を有する１つ又は複数のデータソース２６０にアクセスする（２５０）ことができる。
【００３８】
コンパイルされたクエリＡ３４０、Ｂ３５０及びＣ３６０それぞれの組合せによって形成された複合クエリは、ラップされた（ｗｒａｐｐｅｄ）一連のクエリと見なすことができる。例えば、コンパイルされたクエリＣ３６０は、コンパイルされたクエリＢ３５０のサブクエリであり、その一部である。したがって、コンパイルされたクエリＣは、コンパイルされたクエリＢによってラップされている。同様に、コンパイルされたクエリＢ３５０は、コンパイルされたクエリＡ３４０のサブクエリであり、したがって、コンパイルされたクエリＢはコンパイルされたクエリＡによってラップされている。
【００３９】
コンパイルされたクエリＡ、Ｂ及びＣを生じる、コンパイルされるとともに入れ子式、すなわちラップされたクエリの出力は、後で使うために格納することができるので、こうしたクエリは本発明の有用な出力である。格納されたクエリは、直ちに又は後で、同じ又は異なるコンピュータ上で実行することができる。
【００４０】
コンパイルされたクエリＡ、Ｂ及びＣを組み合わせた複合クエリを実行するために、実行エンジンは望ましくは、連続するレベルのラップがはずされることを可能にする順序で動作する。例えば、コンパイルされたクエリＡが完全に実行されるためには、好ましくは、コンパイルされたクエリＢが実行されるべきである。しかし、コンパイルされたクエリＢが完全に実行されるためには、好ましくは、コンパイルされたクエリＣが実行されるべきである。したがって、ラップを解除する順序は好ましくは、最も内側のラップを最初に解き、すぐ上のレベルのラップを次に解く。図３に示した例では、コンパイルされたクエリＣを、コンパイルされたクエリＢの前に実行できることが好ましく、コンパイルされたクエリＢを、コンパイルされたクエリＡの前に実行できることが好ましい。図３の実行エンジンは、こうした実行の優先順位を可能にする。
【００４１】
実行エンジンＣ３７０は、最も内側の実行可能なコンパイルされたクエリ３６０を受け取る（３６５）。次いで、実行エンジンＣは、そのコンパイルされたクエリを実行する。互換性のあるデータモデルを含む１つ又は複数のデータソース２６０がアクセスされる（３７２及び２５０）。データソース２６０は、要求されたデータを返す（３７２）。しかし、分析エンジンＢ３２０によって、コンパイルされたクエリＣに挿入されたプレースホルダーが存在することにより、照会結果を完成するのに付加情報が必要であることが実行エンジンＣに示される。本質的に、実行エンジンＣは、コンパイルされたクエリＣの実行を完了するための情報の外部ソースとして、実行エンジンＢ３８０にコールバックを行う（３７５）。分析エンジンＢによって、コンパイルされたクエリＣに挿入されたプレースホルダーが、前の実行エンジンが外部データソースであるかのように、前の実行エンジンへの呼出しをトリガしている。
【００４２】
実行エンジンＢ３８０は、実行エンジンＣから呼出しを受け取る（３７５）。次いで、実行エンジンＢは、コンパイルされたクエリＢ３５０を入力する（３５５）。コンパイルされたクエリＢの実行は、１つ又は複数のデータソース２６０にアクセスする（３８２及び２５０）ことによって進む。データソース２６０は、要求されたデータを返す（３８２）。しかし、分析エンジンＡ３１０によって、コンパイルされたクエリＢに挿入されたプレースホルダーが存在することにより、照会結果を完成するのに付加情報が必要であることが実行エンジンＢに示される。実行エンジンＢは、コンパイルされたクエリＢの実行を完了するための情報の外部ソースとして、実行エンジンＡ３９０にコールバックを行う（３８５）。分析エンジンＡによって、コンパイルされたクエリＢに挿入されたプレースホルダーが、前の実行エンジンが外部データソースであるかのように、前の実行エンジンへの呼出しをトリガしている。
【００４３】
実行エンジンＡ３９０は、実行エンジンＢから呼出しを受け取る（３８５）。次いで、実行エンジンＡは、コンパイルされたクエリＡ３４０を入力する（３４５）。コンパイルされたクエリＡの実行は、１つ又は複数のデータソース２６０にアクセスする（３９２及び２５０）ことによって進む。データソース２６０は、要求されたデータを返す（３９２）。この例では、コンパイルされたクエリＡに、それより前に挿入されたプレースホルダーがないので、クエリは、完全に実行することができる。
【００４４】
実行エンジンＡは、コンパイルされたクエリＡ３４０の結果を実行エンジンＢに提供する。実行エンジンＡは、実行エンジンＢからの呼出しへの応答を完了する。実行エンジンＡからの照会結果を受け取ると、実行エンジンＢは、コンパイルされたクエリＢ３５０の実行を完了することができる。次いで、実行エンジンＢは、実行エンジンＡから入手した情報、及びそれ自体の照会結果の両方を提供する（３７５）ことによって、実行エンジンＣに応答する。実行エンジンＢは、実行エンジンＣからの呼出しへの応答を完了する。
【００４５】
実行エンジンＢからの照会結果を受け取ると、実行エンジンＣは、コンパイルされたクエリＣ３６０の実行を完了することができる。次いで、実行エンジンＣは、元の入力クエリ３００の完全な結果を形成するための、実行エンジンＢから入手した情報及びそれ自体の照会結果の両方を提供する（３９５）ことによって、応答を行う。実行エンジンＣは、以前抽出された照会結果すべてを蓄積して、完成された照会結果を形成する。
【００４６】
図４は、本発明の実施形態に適用可能なフロー図で、図３に関連して説明した例示的な処理のフロー図である。この処理は、入力クエリを受け取ることから始まる（４１０）。クエリは、第１の分析エンジンに提供され、第１の分析エンジンは、実行エンジン及びデータモデルに対応するクエリの部分を識別する（４１５）。入力クエリの識別された部分が、実行のためにコンパイルされ、後で取り出すために記憶位置に送られる（４２０）。次いで、第１の分析エンジンは、入力クエリを書き換えて（４２５）、識別された部分を取り除き、欠けている部分をプレースホルダーで置き換えることができる。次いで、第１の分析エンジンは、クエリのバランスを処理するために、書き換えられたクエリを次の分析エンジンに渡す（４３０）ことができる。処理の進行は、次いで、最後の分析エンジンに達した（４３５）場合、変わり得る。分析エンジンのカスケード中の最後の分析エンジンに達していない場合、処理は、次の分析エンジン段階で継続され（４４０）、次の分析エンジンが調整することができる、書き換えられたクエリの部分を識別する。処理は、次の分析エンジンで継続され、前と同様に、識別するステップ４１５、コンパイルするステップ４２０、書き換えるステップ４２５、及び渡すステップ４３０を実行する。
【００４７】
最後の分析エンジンがそのタスクを完了した（４３５）場合、実行フェーズを開始することができる（４４５）。好ましくは、実行フェーズは、格納されていた、最後の分析エンジンのコンパイルで始まる。この最後のコンパイルは、最も内側のコンピレーションとしても知られる。任意選択で、実行は、第１の分析エンジンのコンピレーションで始まることもできる。図４に示したフロー図は、最後の分析エンジンのコンピレーションで実行を開始することを示すように構成されているが、当業者は、第１の分析エンジンのコンピレーションが、複合クエリの実行を始めるのに用いられるフローを組み立てることもできる。
【００４８】
実行の開始４４５でコンパイルされたクエリ部分は、システムの使用可能な出力でよい。コンパイルされたクエリは、適切な実行エンジンを利用する同じ又は異なるシステム上で、ただちに実行することもでき、後で使うために取り出すこともできる。
【００４９】
最後の分析エンジンでのコンピレーションの実行を開始する（４４５）と、対応する実行エンジンは、それに対応する、クエリのコンパイルされた部分を呼び戻す（４５０）ことができる。エンジンは、取り出された、コンパイルされたクエリを実行する（４５５）。最初に、情報のための外部ソース呼出し（４６０）を行うよう実行エンジンに命令するプレースホルダーが、クエリ中にある。外部ソース呼出しは、４６５で行うことができ、次のカスケード式実行エンジンからのデータが要求される。この例では、外部データソースが、次のカスケード式実行エンジンである。次のエンジンが、それに対応するコンパイルされたクエリを記憶装置から呼び戻し（４５０）、そのクエリを実行する（４５５）。実行側エンジンは、実行されるクエリ中でプレースホルダーが見つかった場合、次のカスケード式実行エンジンに対する外部ソースデータ呼出しに進むことができる。処理は、外部ソースに対するプレースホルダーを実行エンジンが見つけなくなるまで、あるカスケード式実行エンジンから次のエンジンに移り続ける。
【００５０】
カスケード中の実行エンジンが外部プレースホルダーをもたず、したがって、外部呼出しを行う必要がない場合、そのクエリに対する完全な応答を、呼出し側実行エンジンに与える（４７０）ことができる。次いで、カスケード中の１つ上のエンジンが、その１つ上の実行エンジンの呼出しに応答して、入れ子になった照会結果を集め又は蓄積する（４７５）ことができる。１つ上のエンジンも呼出しに応答している（４８０）場合、外部ソース呼出しの遂行は、次の実行エンジンに移る（４８５）。次いで、次の実行エンジンは、その照会結果を呼出し側エンジンに返送して（４７０）、蓄積照会結果を集める（４７５）。外部データに対するすべての呼出しが完了すると、本質的に、最も内側の実行エンジン、すなわち基底エンジンが、上位レベルのすべての実行の結果を全部受け取っており、クエリ全体の結果を蓄積する（４９０）。この時点で、受け取った元の入力クエリ４１０からの照会結果が蓄積され、次の処理のために、又はユーザが使用するために利用可能である。
【００５１】
上述した処理を体系化した例を、以下に示す。例えば、以下のクエリを検討する。
【００５２】
【表１】
2005018775.tif 000003
【００５３】
【表２】
2005018775.tif 000004
【００５４】
このクエリは、例えば、列の値を比較する関係オペレータを、位置などのＸＭＬオペレータと組み合わせる。クエリが２つの部分に分割されると、１つの部分は、ＳＱＬサーバエンジンを用いた実行をすることができ、もう１つの部分は、ＸＭＬエンジンを用いた実行をすることができる。ＸＱｕｅｒｙは、ＱＩＬにコンパイルすることができ、次いで、ＳＱＬサーバによって実施することができるパターン用に分析することができる。次いで、このクエリは、そうしたパターンを取り除き、仮想ＸＭＬ文書に対するナビゲーションで置き換えることによって、書き換えることができる。
【００５５】
繰返しになるが、絶対的に必要とされるマッピングの部分のみを動作が具体化し、クエリができるだけ多くＳＱＬサーバにプッシュされることが利点である。これは、例えば、以下のように、すべてのＳＱＬサーバ動作をクエリから抽出し、仮想ＸＭＬ文書に対するナビゲーションで置き換えることによって、達成することができる。
【００５６】
【表３】
2005018775.tif 000005
【００５７】
位置オペレータは、ＸＭＬエンジンが実施するための位置に残されることに留意されたい。ＳＱＬテーブル及び列を置き換えた、この仮想ＸＭＬ文書は、以下のＳＱＬクエリの結果に概念上等しい。
【００５８】
【表４】
2005018775.tif 000006
【００５９】
【表５】
2005018775.tif 000007
【００６０】
上述の結果は、以下のようなＸＭＬ形式を生じる。
【００６１】
【表６】
2005018775.tif 000008
【００６２】
しかし、これは概念的に真であるに過ぎない。現実には、ＸＭＬは構成されていない。そうではなく、通常のＳＱＬクエリがＳＱＬサーバに送られて、結合及びフィルタリングを実施し、行集合結果が、カスタムＸＰａｔｈナビゲータインターフェースを介した仮想ＸＭＬとして、ＸＭＬエンジンに露出される。
【００６３】
上述したように、本発明の例示的な実施形態を、様々な計算装置及びネットワークアーキテクチャに関連して説明したが、基底の概念は、クエリシステムを実装することが望ましいどの計算装置にもシステムにも適用することができる。したがって、本発明の分散処理方法及び分散処理システムは、様々なアプリケーション及び装置に適用することができる。例示的なプログラミング言語、名称及び例を、様々な選択の代表として本明細書では選んだが、こうした言語、名称及び例は、限定を意図したものではない。本発明によって達成されるのと同一の、類似の、又は等価な分散処理システム及び分散処理方法を達成するオブジェクトコードを提供する多数の方法があることが、当業者には理解されよう。
【００６４】
本明細書で説明した様々な技術は、ハードウェア又はソフトウェア、あるいはそうすることが適切な場合には、両方の組合せと共に実現することができる。したがって、本発明の分散処理方法及び分散処理装置、あるいは本発明の特定の態様又は部分は、実体のある媒体、例えばフロッピー（登録商標）ディスケット、ＣＤ−ＲＯＭ、ハードドライブ、又は他のどのマシン可読記憶媒体においても具体化されるプログラムコード（すなわち、命令）の形をとることができ、プログラムコードがコンピュータなどのマシンにロードされるとともにそれによって実行されると、マシンは本発明を実施する装置になる。プログラム可能なコンピュータ上でのプログラムコードの実行の場合、計算装置は、概して、プロセッサ、プロセッサによって読取り可能な記憶媒体（揮発性、不揮発性メモリ及び／又は記憶要素など）、少なくとも１つの入力装置、ならびに少なくとも１つの出力装置を含む。例えばデータ処理ＡＰＩなどの使用を介して、本発明の信号処理サービスを利用することができる１つ又は複数のプログラムは、好ましくは、高度な手続き型プログラミング言語又はオブジェクト指向プログラミング言語で実装されて、コンピュータと通信する。ただし、プログラム（群）は、そうすることが望まれる場合、アセンブリでも機械言語でも実装することができる。いずれの場合でも、言語は、コンパイル型言語でもインタープリト型言語でもよく、ハードウェアの実装と組み合わせることができる。
【００６５】
本発明の分散処理方法及び分散処理装置は、例えば、電気的配線又はケーブル布線、光ファイバ、あるいは他のどの伝送の形でもよい何らかの伝送媒体を介して伝送されるプログラムコードの形で実施される通信によって実現することもでき、プログラムコードが受信され、例えば、ＥＰＲＯＭ、ゲートアレイ、ＰＬＤ（プログラム可能な論理回路）、クライアントコンピュータ、ビデオレコーダなどのマシンにロードされるとともにそれによって実行されると、上述した例示的な実施形態において説明した信号処理能力を有する受信側マシンは、本発明を実施する装置になる。汎用プロセッサ上で実装されると、プログラムコードは、プロセッサと結合して、本発明の機能を呼び出すように動作する独自の装置を提供する。さらに、本発明に関連して用いられるどの記憶技術も、常にハードウェア及びソフトウェアの組合せでよい。
【００６６】
本発明を、様々な図面の好ましい実施形態に関連して説明したが、本発明の同じ機能を、本発明から逸脱することなく実施するために、他の類似の実施形態を使用することもでき、説明した実施形態に修正及び追加を行うこともできる。さらに、携帯型装置のオペレーティングシステム及び他のアプリケーション特有のオペレーティングシステムを含む様々なコンピュータプラットフォームが企図され、特に、無線ネットワーク接続された装置の数は増加し続けることを強調しておく。したがって、本発明は、どの１つの実施形態にも限定されるべきではなく、特許請求の範囲による外延及び範囲内で解釈されるべきである。
【図面の簡単な説明】
【００６７】
【図１】本発明の実施形態を実現することができる好適な計算機環境を示すブロック図である。
【図２】本発明の実施形態を実現することができるアーキテクチャを示すブロック図である。
【図３】図２に示した分散クエリエンジンパイプラインのブロック図である。
【図４】本発明の実施形態に適用可能なフロー図である。
【符号の説明】
【００６８】
１００  計算機環境
１２０  処理装置
１３０  システムメモリ
１２１  システムバス
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  固定型不揮発性メモリインターフェース
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  取外し可能不揮発性メモリインターフェース
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１７０  ネットワークインターフェース
１７１  ローカルエリアネットワーク
１７２  モデム
１７３  ワイドエリアネットワーク
１８０  リモートコンピュータ
１８５  リモートアプリケーションプログラム
１９０  映像インターフェース
１９１  モニタ
１９５  出力周辺インターフェース
１９６  プリンタ
１９７  スピーカ
２１０ａ  言語コンパイラ１
２１０ｂ  言語コンパイラ２
２１０ｃ  言語コンパイラ３
２１０ｄ  言語コンパイラＭ
２２０  中間言語表現
２３０  オプティマイザ
２４０  分散クエリエンジンパイプライン
２６０  データソース
２７０  照会結果
２６０  データソース（群）
２７０  照会結果
３００  クエリ入力
３１０  分析エンジンＡ
３２０  分析エンジンＢ
３３０  分析エンジンＣ（基底エンジン）
３４０  コンパイルされたクエリＡ
３５０  コンパイルされたクエリＢ
３６０  コンパイルされたクエリＣ
３７０  実行エンジンＣ
３８０  実行エンジンＢ
３９０  実行エンジンＡ
【図１】
2005018775.tif 000009
【図２】
2005018775.tif 000010
【図３】
2005018775.tif 000011
【図４】
2005018775.tif 000012