JP2005018775A - 分散処理方法及び分散処理システム - Google Patents

分散処理方法及び分散処理システム Download PDF

Info

Publication number
JP2005018775A
JP2005018775A JP2004185645A JP2004185645A JP2005018775A JP 2005018775 A JP2005018775 A JP 2005018775A JP 2004185645 A JP2004185645 A JP 2004185645A JP 2004185645 A JP2004185645 A JP 2004185645A JP 2005018775 A JP2005018775 A JP 2005018775A
Authority
JP
Japan
Prior art keywords
query
engine
execution engine
execution
compiled
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
Application number
JP2004185645A
Other languages
English (en)
Other versions
JP2005018775A5 (ja
Inventor
Todd F Pfleiger
エフ.プフライガー トッド
Andrew E Kimball
イー.キンボール アンドリュー
Arpan A Desai
エー.デサイ アルパン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005018775A publication Critical patent/JP2005018775A/ja
Publication of JP2005018775A5 publication Critical patent/JP2005018775A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/83Querying
    • G06F16/835Query processing
    • G06F16/8358Query translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)

Abstract

【課題】 照会言語要件の変更に適合可能なモノリシッククエリプロセッサを設計し構築するという問題を回避するアーキテクチャを提供すること。
【解決手段】 アーキテクチャは、入力クエリを受け入れるとともに、入力クエリの部分を識別するカスケード式分析エンジンを備える。入力クエリを書き換えて、識別した部分を取り除きプレースホルダーで置き換える。そのクエリが、カスケード中の次の分析エンジンに転送される。各分析エンジンは、識別した部分を実行エンジンが処理することができるように、その部分をコンパイルする。実行は、最後の分析エンジンによってコンパイルされたクエリ部分から始まる。最後の分析エンジンに対応する実行エンジンが、そのクエリを実行し、開始部分からのデータに対する、カスケード中の1つ上の実行エンジンに呼出しを行う。
【選択図】 図3

Description

本発明は、分散処理方法及び分散処理システムに関し、より詳細には、データソースに照会(query)を行うソフトウェアの分野において、異なるデータモデルを含むデータソースに対する分散クエリ(distributed query)エンジンパイプラインの分散処理方法及び分散処理システムに関する。
異種データソースに照会を行うことは、異なるデータモデルを有するデータソースに渡って探索を実施する試みである。こうした試みは、全く異なるデータソースが同じデータモデルを有する場合にも行われる。複数のデータモデルを有する複数のデータソースに照会を行うためには、多様なクエリ実行エンジンが一般に必要とされる。入力クエリ(input query)は通常、接続されたどの実行エンジンが元の入力クエリのどの部分を受け取るべきか、推測的に決定する1つのモノリシック(monolithic)プロセッサによって分離される。したがって、元のクエリは、クエリを実行用の別個の部分に分割するために、一体的に処理される。各実行エンジンは、ある特定のデータモデル又はデータソースに対応する。個々のクエリ実行エンジンは次いで、各自のクエリ部分を実行し、モノリシックプロセッサに結果を返す。次いで、モノリシックプロセッサは、クエリ実行エンジンそれぞれからの個々の照会結果を組み合わせ、一列につなげて完全な1組の照会結果を形成するタスクを行う。
異種データを照会するというこの手法には、可能なすべてのデータソースを識別し操作することができるモノリシックプロセッサを必要とするという欠点がある。これは、失敗の恐れがあるタスクである。というのは、異なるデータソースが、そのデータと相互作用する全く異なるAPI又はモデルを有するからであり、また、すべてのデータモデルについての可能なすべてのデータソースを操作することができるモノリシックプロセッサを構築することは、概して実現可能でも望ましくもないからである。例えば、SQLデータベース又はXMLファイルに対して照会を行うことが望まれる場合、XMLファイルと相互作用する唯一のインターフェースは、ドキュメントオブジェクトモデル(DOM)であり、データベースへの唯一のインターフェースは、SQLコマンドである。結果として、データベース及びXMLファイルに作用するための異なるコードが必要になる。追加のデータモデルタイプを処理することができるモノリシックプロセッサの構築を試みると、そうしたデータタイプが当該分野において重要になるのに従って、問題は悪化する。このような条件の下では、追加のどのデータモデルタイプも追加される場合、又は既存のデータモデルタイプが大幅に変化した場合も、モノリシックエンジンの容量は、要件の変更によって確実に超過され、再設計を必要とする可能性がある。
異種データソース用クエリ機構の作成におけるさらなる問題は、仮想クエリである。クエリを第2のデータモデル照会言語で構成することが望ましいにもかかわらず、データソースが1つのデータモデルタイプにおいて容易に照会を受けることができる場合、1つのデータモデル照会言語タイプからの変換が必要とされ得る。この必要性は、クエリの効率的な符号化を確実なものにするために、ハードウェア及びソフトウェアモジュールの複数の組と、対応する数のオプティマイザ(optimizer)とを必要とする複数の照会言語の変換を引き起こす場合がある。
したがって、照会言語要件の変更に適合可能なモノリシッククエリプロセッサを設計し構築するという問題を回避するアーキテクチャが必要である。さらに、複数の照会言語(query language)をある形から別の形に変換することに関連する問題を回避するアーキテクチャが必要である。本発明は、クエリ環境要求の変更に適合可能な、発明性のあるアーキテクチャを用いて、上述した必要性に対処しそれに応えるものである。
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、異なるデータモデルを含むデータソースに対する分散クエリエンジンパイプラインの分散処理方法及び分散処理システムを提供することにある。
本発明は、複数のデータモデルタイプを有する複数のデータソースに対して照会を行うという問題に、分散クエリエンジンパイプラインを使用することによって対処する。このパイプラインは、入力クエリを分割し、それぞれの部分を特定の実行エンジンに分配するためのモノリシックプロセッサを使用し、次いで、結果を組み合わせて入力照会結果を形成する、一般的なソリューションを上回る利点をもたらす。本発明は、モノリシックプロセッサを使わず、カスケード式(cascaded)分析エンジンを使用して、特定の実行エンジンにおいてコンパイルし実行することができる入力クエリの部分を識別し抽出する。
本発明の一実施形態において、分析エンジンは、実行エンジンのタイプに関連づけられ、カスケード式ではあるが、各分析エンジンは、それぞれ独立して動作する。各分析エンジンは、2つの出力、すなわち、実行エンジンに対応するものとしてエンジンが識別した、コンパイルされた部分と、識別された部分が取り除かれプレースホルダー(placeholder)で置き換えられた、書き換えられたクエリとを有する。カスケード中で隣にある分析エンジンは、書き換えられたクエリを受け取り、クエリの実行可能な部分を識別し、それを別のプレースホルダーで置き換え、2度書き換えられたクエリを両方のプレースホルダーと共に次の下の段階に渡す。
クエリを処理する実行フェーズは、好ましくは、最後の分析エンジンに対応する実行エンジンから始まる。この実行エンジンは、それに割り当てられたクエリを実行し、実行エンジンからなるカスケード中のすぐ上の実行エンジンに呼出しを行って、プレースホルダーの照会結果を取り出す。各実行エンジンは、より上位のスタック化されたエンジンに呼出しを行って、プレースホルダーに対応するデータを取り出す。カスケード式実行エンジンにおいて続いて起こる呼出しの結果、最終的には、1つの実行エンジンが入力クエリに対応する照会結果すべてを蓄積することになる。
任意選択で、パイプライン型クエリの実行フェーズは、最も外側、すなわち第1の分析エンジンのコンパイル出力の実行から始まることができる。従来通り、各実行エンジンは、それに配分されたクエリを実行し、プレースホルダーデータのために後続の実行エンジンに呼出しを行うことができる。入力クエリが返す結果は、類似している。
以下、図面を参照して本発明の実施の態様について説明する。なお、以下の好ましい実施形態の詳細な説明は、本発明を説明するためのものであって、本発明は、これにより開示された特定の方法及び手段に限定されるものではない。
<概要>
本発明は、複数のクエリ元から様々なタイプのデータソースに照会をおこなうという問題に対処するものである。仮想XMLデータソースに照会をおこなうという問題に対する1つの解決法は、統合中間言語を用いることである。本発明の状況で用いられるXML中間言語は、クエリの意味又はセマンティクスを表わしている。XML中間言語は、クエリ中間言語(QIL)と呼ばれる。
QILは、「クエリ/ビューの合成」として知られる問題に対処する。一例として、XMLクエリが、データの仮想XMLビュー、すなわちXMLデータ、XML仮想データ、又は他のデータのいずれかに対して実施されると仮定する。1つの手法は、そのデータソースをXMLとして具体化することであろうが、これは、非常に非効率的であり、システムに対して利用可能であるよりも多くのメモリを必要とする場合がある。他の手法は、ビューを仮想化し、クエリをその仮想ビューと合成し、その結果を元のデータに対する動作に翻訳することである。ユーザには、論理XMLデータモデルに対するXMLクエリに見えるが、実装では、実装において提供されるどのようなクエリシステムも使って、ネイティブデータ形式を照会する。この手法は、SQLビューに対するSQLクエリ用のリレーショナルデータベースにおいて用いられる。QILなどのXML中間言語を用いて、元の潜在的複合ビューは、より微量のデータに対するクエリ動作に分解することができる。このようにして、1つの複合ビューに対する1つのクエリは、1つのクエリと、より単純な1つのビューとに対する1つのクエリになる。クエリ合成により、これは、より単純なビューに対する単なる1つのクエリになり、そうすることによって問題が単純化される。
XML中間言語QILは、(1)XMLクエリ及びXMLビュー両方の統一した表現を提供し、そうすることによってクエリ/ビューの合成の問題を大幅に単純化し、(2)すべてのビューを「仮想XML」として扱って、システムのインターフェースを大幅に簡素化する。可能なすべての言語及びデータモデル用の1つのAPIを有するのではなく、APIすべてが、共通データモデル、XML中間言語QILのオペレータを共用することができる。
入力クエリの中間言語表現の使用と併せて、本発明は、複数のデータソースに対する1つのクエリを実施する分散型アーキテクチャを使用して、例示的なアーキテクチャを開示する。真の分散型アーキテクチャとは、モノリシックプロセッサが作業を監視することを必要とせずに、混合ソースクエリを異なる実行エンジンに分散することができる。異なるクエリの必要性を調整するために、新しい又は修正された実行エンジンをアーキテクチャに追加することができるという点で、本発明の例示的な分散クエリエンジンパイプラインも、モジュール式になることができる。さらに、使用される実行エンジンは、正しく動作するために他方のクエリ実行エンジンの動作について知らされなくてよい。各エンジンは、互いの上にスタックとして積み重ねることもカスケードとして重ねることもでき、各エンジンは、各エンジンが理解しているクエリの部分のみを処理し最適化し、クエリのそれ以外の部分をチェーン又はカスケード中の次のエンジンに渡す。
<例示的な計算機環境>
図1は、本発明の実施形態を実現することができる好適な計算機環境を示すブロック図で、本発明を実現することができる適切な計算機環境の、簡潔で概略的な説明を提供することを意図している。ただし、本発明に関連して使用するために、携帯型、可搬型、ならびにすべての種類の他の計算装置及び計算用オブジェクトが企図されることを理解されたい。したがって、以下で汎用コンピュータを説明するが、これは一例に過ぎず、本発明は、ネットワーク/バスの相互運用性及び相互作用性を備えるクライアントなど他の計算装置でも実現することができる。したがって、本発明は、ごくわずか又は最低限のクライアント資源が関与する、ネットワーク接続されたホストサービスという環境、例えば、クライアント装置が、機器内に置かれたオブジェクトや他の計算装置及び計算用オブジェクトなど、ネットワーク/バスへのインターフェースとしてのみ働く、ネットワーク接続された環境において実現することができる。本質的に、データを格納することができ、データを取り出すことができるところであればどこでも、本発明による動作にとって望ましい、又は適した環境である。
例えば、本発明は、装置又はオブジェクト用サービスの開発者が使うためのオペレーティングシステムによって実現することができ、かつ/又は、本発明に従って動作するアプリケーションソフトウェアに含めることができる。ソフトウェアは、1つ又は複数のコンピュータ、例えばクライアントワークステーション、サーバ、あるいは他の装置によって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的な状況において説明することができる。概して、プログラムモジュールは、特定のタスクを実施し又は特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含んでいる。一般に、プログラムモジュールの機能は、様々な実施形態における要望に応じて組み合わせることも分散することもできる。さらに、本発明は他のコンピュータ構成を有して実施できる。本発明とともに使用するのに適切であり得る他の公知の計算システム、環境、及び/又は構成には、パーソナルコンピュータ(PC)、自動預払機、サーバコンピュータ、携帯型又はラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能な家電製品、ネットワークPC、機器、光、環境制御要素、ミニコンピュータ、メインフレームコンピュータなどがあるが、それに限定されるものではない。本発明は、通信ネットワーク/バス又は他のデータ伝送媒体を介してリンクされるリモート処理装置によってタスクが実施される分散型計算機環境でも実現することができる。分散型計算機環境では、プログラムモジュールは、メモリ記憶装置など、ローカル及びリモートコンピュータ記憶媒体の両方に置くことができ、クライアントノードは、サーバノードとして動作することができる。
したがって、図1は、本発明を実現することができる適切な計算システム環境100の一例を示すが、上述したように、計算システム環境100は、適切な計算機環境の一例に過ぎず、本発明の使用又は機能の範囲に関するどのような限定を示唆することも意図していない。また、計算機環境100は、例示的な動作環境100に示される構成要素のどの1つ又はその組合せに関するどのような依存も要件も有していると解釈されるべきではない。
図1を参照すると、本発明を実現する例示的なシステムは、汎用計算装置を、コンピュータシステム110の形で含んでいる。コンピュータシステム110の構成要素は、処理装置120と、システムメモリ130と、システムメモリなど様々なシステム構成要素を処理装置120に結合するシステムバス121とを含むことができるが、これに限定されない。システムバス121は、様々なバスアーキテクチャのどれをも使用するメモリバス又はメモリコントローラ、周辺バス、及びローカルバスなどいくつかのタイプのバス構造のいずれでもよい。例えば、このようなアーキテクチャは、ISA(業界標準アーキテクチャ)バス、MCA(マイクロチャネルアーキテクチャ)バス、EISA(拡張ISA)バス、VESA(米国ビデオ電子装置規格化協会)ローカルバス、及びPCI(周辺装置相互接続)バス(メザニン(Mezzanine)バスとしても知られる)を含んでいる。
コンピュータシステム110は、通常、様々なコンピュータ読取可能な媒体を含んでいる。コンピュータ読取可能な媒体は、コンピュータシステム110によってアクセス可能であるとともに揮発性媒体及び不揮発性媒体の両方、取外し可能媒体及び固定型媒体を含む、利用可能などの媒体でもよい。例えば、コンピュータ読取可能な媒体は、コンピュータ記憶媒体及び通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報の格納のためのどの方法でも技術でも実現される揮発性媒体及び不揮発性媒体、取外し可能媒体及び固定型媒体を含んでいる。コンピュータ記憶媒体は、RAM(ランダムアクセスメモリ)、ROM(読出し専用メモリ)、EEPROM(電気的消去可能なプログラム可能読出し専用メモリ)、フラッシュメモリ又は他のメモリ技術、CDROM(コンパクトディスク読出し専用メモリ)、CDRW(コンパクトディスク再書込み可能)DVD(デジタル多用途ディスク)又は他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置、あるいは、所望の情報を格納するのに使うことができるとともにコンピュータシステム110によってアクセスすることができる他のどの媒体も含むが、それに限定されない。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータを、変調データ信号、例えば搬送波や他の移送機構として具体化し、どの情報配信媒体も含んでいる。「変調データ信号」という用語は、信号中の情報を符号化するようなやり方で設定され又は変更される信号特性の1つ又は複数を有する信号を意味する。例えば、通信媒体は、有線ネットワークや直接有線接続などの有線媒体、ならびに音響、RF、赤外線、及び他の無線媒体などの無線媒体を含む。上述したどの組合せも、やはりコンピュータ読取可能な媒体の範囲に含まれるべきである。
システムメモリ130は、コンピュータ記憶媒体を、読出し専用メモリ(ROM)131及びランダムアクセスメモリ(RAM)132など、揮発性及び/又は不揮発性メモリの形で含んでいる。基本入出力システム(BIOS)133は、例えば、起動中にコンピュータシステム110内部の要素間の情報の転送を助ける基本ルーチンを含み、通常はROM131に格納される。RAM132は、一般に、処理装置120に対してただちにアクセス可能な、かつ/又は処理装置120によって現在操作されているデータ及び/又はプログラムモジュールを含んでいる。例えば、図1では、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、及びプログラムデータ137を示している。
コンピュータシステム110は、他の取外し可能/固定型、揮発性/不揮発性コンピュータ記憶媒体を含むこともできる。例示のみのために、図1では、固定型の不揮発性磁気媒体からの読出し又はそこへの書込みをするハードディスクドライブ141、取外し可能な不揮発性磁気ディスク152からの読出し又はそこへの書込みをする磁気ディスクドライブ151、及び、CD−ROM、CDRW、DVD、又は他の光学媒体など取外し可能な不揮発性光ディスク156からの読出し又はそこへの書込みを行う光ディスクドライブ155を示している。例示的な動作環境で用いることができる、他の取外し可能/固定型、揮発性/不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体RAM、固体ROMなどを含むが、それに限定されない。ハードディスクドライブ141は、通常、インターフェース140などの固定型メモリインターフェースによって、システムバス121に接続され、磁気ディスクドライブ151及び光ディスクドライブ155は、通常、インターフェース150などの取外し可能メモリインターフェースによって、システムバス121に接続される。
上述し、かつ図1に示したディスクドライブ及びそれに関連するコンピュータ読取可能な媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、及びコンピュータシステム110のための他のデータの格納を実現する。図1では、例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、及びプログラムデータ147を格納するものとして示した。こうした構成要素は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、及びプログラムデータ137と同じでも、異なってもよいことに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、及びプログラムデータ147は、少なくとも、異なるものであることを示すために、ここでは異なる番号が与えられている。ユーザは、キーボード162及び一般にはマウス、トラックボール、又はタッチパッドと呼ばれる指示装置161などの入力装置を介して、コマンド及び情報をコンピュータシステム110に入力することができる。他の入力装置(図示せず)には、マイクロホン、ジョイスティック、ゲーム用パッド、衛星パラボラアンテナ、スキャナなどがあり得る。こうした及び他の入力装置は、しばしばシステムバス121に結合されるユーザ入力インターフェース160を介して処理装置120に接続されるが、他のインターフェース及びバス構造、例えば、並列ポート、ゲームポート、USB(ユニバーサルシリアルバス)によって接続することもできる。モニタ191又は他のタイプの表示装置も、映像インターフェース190などのインターフェースを介してシステムバス121に接続され、このインターフェースは、映像メモリ(図示せず)と通信することができる。モニタ191に加え、コンピュータシステムは、出力周辺インターフェース195を介して接続することができるスピーカ197及びプリンタ196など、他の周辺出力装置も含むことができる。
コンピュータシステム110は、リモートコンピュータ180など、1つ又は複数のリモートコンピュータへの論理接続を使用してネットワーク接続された環境又は分散環境において動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置(peer device)、又は他の共通ネットワークノードでよく、通常、コンピュータシステム110に関連して上述した要素の多く又はすべてを含むが、メモリ記憶装置181のみを図1に示した。図1に示す論理接続は、ローカルエリアネットワーク(LAN)171及びワイドエリアネットワーク(WAN)173を含むが、他のネットワーク/バスを含むこともできる。このようなネットワーク環境は、家庭、会社、企業規模のコンピュータネットワーク、イントラネット及びインターネットにおいてよく見られる。
LANネットワーク環境において使われる場合、コンピュータシステム110は、ネットワークインターフェース又はアダプタ170を介してLAN171に接続される。WANネットワーク環境において使われる場合、コンピュータシステム110は、通常、モデム172、又は、例えば、インターネットなどのWAN173を介した通信を確立する他の手段を含んでいる。モデム172は、内部にあっても外部にあってもよく、ユーザ入力インターフェース160又は他の適切な機構を介してシステムバス121に接続することができる。ネットワーク接続された環境では、コンピュータシステム110に関連して図示したプログラムモジュール又はその一部は、リモートメモリ記憶装置に格納することができる。例えば、図1では、リモートアプリケーションプログラム185を、メモリ装置181に常駐するものとして示した。図示したネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段も使うことができる。
個人の計算機使用及びインターネットの収束を鑑みて、様々な分散型計算の枠組みがこれまでに開発されており、現在も開発されている。個人ユーザ及びビジネスユーザには一様に、アプリケーション及び計算装置用のシームレスに対話可能な、ウェブ対応のインターフェースが提供され、コンピュータを使用した活動がますますウェブブラウザ指向又はネットワーク指向になっている。
例えば、マイクロソフトコーポレーション(98052ワシントン州レドモンド、One Microsoft Way)から入手可能なマイクロソフト(登録商標)の.NET(登録商標)プラットフォームは、サーバ、構築ブロックサービス、例えば、ウェブベースのデータ記憶、及びダウンロード可能なデバイスソフトウェアを含む。本明細書における例示的な実施形態は、計算装置内に常駐するソフトウェアとともに説明するが、本発明の1つ又は複数の部分は、オペレーティングシステム、API(アプリケーションプログラミングインターフェース)、又は、コプロセッサ、表示装置、及び要求側オブジェクトのいずれの間の「仲介者」オブジェクトによっても実装することができ、そうすることによって、本発明による動作が、他の分散型計算の枠組みにおいても、.NET(登録商標)の言語及びサービスのすべてによって実施され、それにおいてサポートされ、それを介してアクセスされることが可能になる。
<例示的な実施形態>
図2は、本発明の実施形態を実現することができるアーキテクチャを示すブロック図で、具体化する例示的なシステムアーキテクチャのブロック図を示している。中間言語コンパイラ及び分散型実行エンジンパイプラインを含むクエリアーキテクチャ200を示してある。このアーキテクチャは、複数のデータソース及びタイプに対するクエリ用のデータを受け取り、コンパイルし、翻訳し、アクセスするように実装された例示的な基本ブロックを示している。複数のフロントエンド言語コンパイラ210を使うことができ、このコンパイラは概して、関連する言語用でよい。例えば、コンパイラ210は、XML標準又はXML関連標準に適合するXML関連コンパイラでよい。元のクエリ又は入力クエリは、図1に示すような複数の入力装置のいずれからでも、受け取ることも入力することもできる。図2に戻ると、フロントエンドコンパイラ210は、XMLクエリ、XMLビュー、又は他の関連XML言語照会などのクエリを受け取って、入力クエリの意味の、コンパイルされた中間言語表現220を生成することができる。フロントエンドコンパイラ用の言語タイプの例には、XPath、XMLスタイルシート言語(XSL)、XSLT、XMLのW3C標準がある。それ以外の例としては、中でも、XMLビューコンパイラがあろう。クエリ言語及び表示言語と複数の目標モデルとの間の中間言語の抽象化により、実データ、例えば、マイクロソフト(登録商標).NET(登録商標)ならびに仮想XMLデータからのXMLデータが、データソースとして使われることが可能になる。
図2に示すように生成された中間言語は、入力クエリ又はビューの表現である。したがって、クエリの意味の明示的な表現なので、クエリ中間言語(QIL)と呼ぶことができる。クエリ中間言語は、アーキテクチャ200において使われるすべてのクエリ及び表示言語コンパイラ210に共通な意味論的表現と見なすことができる。例えば、入力コンパイラがXMLデータに対して動作する場合、QILは、様々な異なる目標データソース(関係データ及び非関係データなど)に渡って、複数の異なるXML照会言語及びビュー定義言語(XPath及びXSLTなど)の抽象化を可能にする。したがって、QILは、互換性のあるXML照会言語すべてをサポートするための共通構成を可能にする。クエリアーキテクチャ200において中間言語表現を利用することの利点が当業者には理解されよう。内部のすべての動作は、明示的であるとともに曖昧性がなく、それによって、好ましくは、QILの生成を助けるフロントエンドコンパイラを、QILを使用する分散クエリエンジンパイプラインから完全に分離する。
上述した例は、XML中間言語表現を分散クエリエンジンパイプラインへの入力として用いる、本発明の状況における一実施形態を表す。他の中間言語表現又は直接の基本言語、例えば、いくつか例を挙げると、ダイレクトLDAP、AD、XML又はSQL言語クエリ入力などを、本発明への入力として用いることもできる。
中間言語表現220は、後続の段階による、より効率的な処理のために、任意選択で最適化(230)することができる。図2のオプティマイザは、本発明の状況としてのみ提示されるのであって、絶対に必要なわけではない。入力クエリの最適化された又は最適化されていない中間言語表現220は、分散クエリエンジンパイプライン240に対して提示することができる。
分散クエリエンジンパイプラインは、異種データソース260へのクエリを可能にする。パイプラインのエンジンは、中間言語クエリを、特定のデータモデルを有する実行マシンに分散する。こうすることにより、ある特定のデータモデルにおけるクエリ効率を最大限にする実行エンジンによってクエリ実行が達成されることが可能になる。したがって、パイプライン240中の実行エンジンは、サポートされる各データソース中のデータのモデルに適合するデータソースに対して効率的に作用するように構成することができる。例えば、SQLデータベースソース用の実行エンジンは、SQLデータベース管理システムを有するリレーショナルデータベースに対するクエリ実行における効率性のために最適化することができる。パイプライン中の実行エンジンはそれぞれ、その独自のデータモデルを備えるその特定のデータソースへのアクセス権250を有する。分散型クエリエンジンは、異種探索において、1つ又は複数のデータモデルを有する1つ又は複数のデータソースに照会を行うことができる。分散型クエリを実行すると、パイプラインの実行エンジンは、通常、例えば、さらなる処理、格納、ユーザへの表示、又は後続のソフトウェアアプリケーションの準備に利用可能な照会結果(query result)270を生じる。
図3は、本発明の実施形態を実現することができるアーキテクチャを示すブロック図で、図2に示した分散クエリエンジンパイプラインのブロック図を示している。つまり、図3は、分散クエリエンジンパイプラインの基本的な内部アーキテクチャを示している。このパイプラインは、カスケード式の、又はスタック化された分析エンジン310、320、330と、実行エンジン370、380及び390とから構成されている。図3における例示は、3つの分析エンジン及び3つの実行エンジンを示すが、わずか2つ、及びN個もの分析/実行エンジンの対が、所与のパイプラインアプリケーション用にカスケード状に並べることができる。
まず、入力クエリ300が、分析エンジンA310によって受け取られる。エンジンは、クエリを調べ、エンジンが最適化し又は実行エンジンに渡す(312)方法がわかっているクエリの部分を見つける。分析エンジンA310は、識別された部分を取り除き、その部分をプレースホルダーで置き換える。したがって、エンジン310はクエリを書き換え、クエリとプレースホルダーを合わせたバランス(balance)を、分析エンジンB320に渡す(314)。したがって、エンジン310は、修正したクエリをスタック中の次のエンジンに渡す。
分析エンジンA310が認識するクエリの部分は、コンパイルされ、コンパイルされたクエリ部分(コンパイルされたクエリA)を保持するためのアキュムレータ(accumulator)340に渡される(312)。分析エンジンA310は、分析エンジンBについての知識がないことに留意されたい。エンジンAは、特定の実行エンジンによって処理することができるものとして認識することができるクエリの部分を抽出し、そのクエリのバランスを外に渡す。スタック中の次の分析エンジンがある場合、その分析エンジンは、異なる実行エンジンに対応するクエリの部分のみを認識する。
分析エンジンB320は、エンジンAから、修正されたクエリを受け入れ、修正されたクエリのどの部分を、実行エンジンに渡す(322)ことができるか識別する。次いで、分析エンジンBは、識別されたその部分を取り除き、コンパイルし、コンパイルされたクエリBを保持するアキュムレータ350に送る。次いで、分析エンジンB320は、識別し抽出した部分をプレースホルダーで置き換えることによって、受け取ったクエリを書き換える。次いで、分析エンジン320は、2度修正されたクエリを、スタック中の次のエンジンに渡す(324)。分析エンジンC330は、エンジンBから、2度修正されたクエリを受け入れ、2度修正されたクエリのどの部分を、実行エンジンに渡す(332)ことができるか識別する。次いで、分析エンジンCは、識別されたその部分を取り除き、コンパイルし、コンパイルされたクエリCを保持するアキュムレータ360に送る。分析エンジンのより多くの層又は段階が実装されるシステムでは、分析エンジンC330は、識別し抽出した部分をプレースホルダーで置き換えることによって、受け取ったクエリを書き換えることができる。次いで、分析エンジンC330は、3度修正されたクエリを、スタック中の次のエンジンに渡すことができる。したがって、分散型パイプライン分析エンジンを、要望に応じてカスケード式にできることが明らかである。
コンパイルされたクエリのアキュムレータ340、350及び360は、1つになって複合クエリを形成する。各クエリ部分(A、B及びC)は、特定のデータモデルを有するデータソースに対してクエリを効率的に実施する実行エンジンに関連づけられる。例えば、コンパイルされたクエリA340は、実行エンジンA390によって実行されることが可能である。実行エンジンAは、コンパイルされたクエリAと整合するデータモデルに対応する少なくともいくつかの部分を有する1つ又は複数のデータソース260にアクセスする(250)ことができる。
コンパイルされたクエリA340、B350及びC360それぞれの組合せによって形成された複合クエリは、ラップされた(wrapped)一連のクエリと見なすことができる。例えば、コンパイルされたクエリC360は、コンパイルされたクエリB350のサブクエリであり、その一部である。したがって、コンパイルされたクエリCは、コンパイルされたクエリBによってラップされている。同様に、コンパイルされたクエリB350は、コンパイルされたクエリA340のサブクエリであり、したがって、コンパイルされたクエリBはコンパイルされたクエリAによってラップされている。
コンパイルされたクエリA、B及びCを生じる、コンパイルされるとともに入れ子式、すなわちラップされたクエリの出力は、後で使うために格納することができるので、こうしたクエリは本発明の有用な出力である。格納されたクエリは、直ちに又は後で、同じ又は異なるコンピュータ上で実行することができる。
コンパイルされたクエリA、B及びCを組み合わせた複合クエリを実行するために、実行エンジンは望ましくは、連続するレベルのラップがはずされることを可能にする順序で動作する。例えば、コンパイルされたクエリAが完全に実行されるためには、好ましくは、コンパイルされたクエリBが実行されるべきである。しかし、コンパイルされたクエリBが完全に実行されるためには、好ましくは、コンパイルされたクエリCが実行されるべきである。したがって、ラップを解除する順序は好ましくは、最も内側のラップを最初に解き、すぐ上のレベルのラップを次に解く。図3に示した例では、コンパイルされたクエリCを、コンパイルされたクエリBの前に実行できることが好ましく、コンパイルされたクエリBを、コンパイルされたクエリAの前に実行できることが好ましい。図3の実行エンジンは、こうした実行の優先順位を可能にする。
実行エンジンC370は、最も内側の実行可能なコンパイルされたクエリ360を受け取る(365)。次いで、実行エンジンCは、そのコンパイルされたクエリを実行する。互換性のあるデータモデルを含む1つ又は複数のデータソース260がアクセスされる(372及び250)。データソース260は、要求されたデータを返す(372)。しかし、分析エンジンB320によって、コンパイルされたクエリCに挿入されたプレースホルダーが存在することにより、照会結果を完成するのに付加情報が必要であることが実行エンジンCに示される。本質的に、実行エンジンCは、コンパイルされたクエリCの実行を完了するための情報の外部ソースとして、実行エンジンB380にコールバックを行う(375)。分析エンジンBによって、コンパイルされたクエリCに挿入されたプレースホルダーが、前の実行エンジンが外部データソースであるかのように、前の実行エンジンへの呼出しをトリガしている。
実行エンジンB380は、実行エンジンCから呼出しを受け取る(375)。次いで、実行エンジンBは、コンパイルされたクエリB350を入力する(355)。コンパイルされたクエリBの実行は、1つ又は複数のデータソース260にアクセスする(382及び250)ことによって進む。データソース260は、要求されたデータを返す(382)。しかし、分析エンジンA310によって、コンパイルされたクエリBに挿入されたプレースホルダーが存在することにより、照会結果を完成するのに付加情報が必要であることが実行エンジンBに示される。実行エンジンBは、コンパイルされたクエリBの実行を完了するための情報の外部ソースとして、実行エンジンA390にコールバックを行う(385)。分析エンジンAによって、コンパイルされたクエリBに挿入されたプレースホルダーが、前の実行エンジンが外部データソースであるかのように、前の実行エンジンへの呼出しをトリガしている。
実行エンジンA390は、実行エンジンBから呼出しを受け取る(385)。次いで、実行エンジンAは、コンパイルされたクエリA340を入力する(345)。コンパイルされたクエリAの実行は、1つ又は複数のデータソース260にアクセスする(392及び250)ことによって進む。データソース260は、要求されたデータを返す(392)。この例では、コンパイルされたクエリAに、それより前に挿入されたプレースホルダーがないので、クエリは、完全に実行することができる。
実行エンジンAは、コンパイルされたクエリA340の結果を実行エンジンBに提供する。実行エンジンAは、実行エンジンBからの呼出しへの応答を完了する。実行エンジンAからの照会結果を受け取ると、実行エンジンBは、コンパイルされたクエリB350の実行を完了することができる。次いで、実行エンジンBは、実行エンジンAから入手した情報、及びそれ自体の照会結果の両方を提供する(375)ことによって、実行エンジンCに応答する。実行エンジンBは、実行エンジンCからの呼出しへの応答を完了する。
実行エンジンBからの照会結果を受け取ると、実行エンジンCは、コンパイルされたクエリC360の実行を完了することができる。次いで、実行エンジンCは、元の入力クエリ300の完全な結果を形成するための、実行エンジンBから入手した情報及びそれ自体の照会結果の両方を提供する(395)ことによって、応答を行う。実行エンジンCは、以前抽出された照会結果すべてを蓄積して、完成された照会結果を形成する。
図4は、本発明の実施形態に適用可能なフロー図で、図3に関連して説明した例示的な処理のフロー図である。この処理は、入力クエリを受け取ることから始まる(410)。クエリは、第1の分析エンジンに提供され、第1の分析エンジンは、実行エンジン及びデータモデルに対応するクエリの部分を識別する(415)。入力クエリの識別された部分が、実行のためにコンパイルされ、後で取り出すために記憶位置に送られる(420)。次いで、第1の分析エンジンは、入力クエリを書き換えて(425)、識別された部分を取り除き、欠けている部分をプレースホルダーで置き換えることができる。次いで、第1の分析エンジンは、クエリのバランスを処理するために、書き換えられたクエリを次の分析エンジンに渡す(430)ことができる。処理の進行は、次いで、最後の分析エンジンに達した(435)場合、変わり得る。分析エンジンのカスケード中の最後の分析エンジンに達していない場合、処理は、次の分析エンジン段階で継続され(440)、次の分析エンジンが調整することができる、書き換えられたクエリの部分を識別する。処理は、次の分析エンジンで継続され、前と同様に、識別するステップ415、コンパイルするステップ420、書き換えるステップ425、及び渡すステップ430を実行する。
最後の分析エンジンがそのタスクを完了した(435)場合、実行フェーズを開始することができる(445)。好ましくは、実行フェーズは、格納されていた、最後の分析エンジンのコンパイルで始まる。この最後のコンパイルは、最も内側のコンピレーションとしても知られる。任意選択で、実行は、第1の分析エンジンのコンピレーションで始まることもできる。図4に示したフロー図は、最後の分析エンジンのコンピレーションで実行を開始することを示すように構成されているが、当業者は、第1の分析エンジンのコンピレーションが、複合クエリの実行を始めるのに用いられるフローを組み立てることもできる。
実行の開始445でコンパイルされたクエリ部分は、システムの使用可能な出力でよい。コンパイルされたクエリは、適切な実行エンジンを利用する同じ又は異なるシステム上で、ただちに実行することもでき、後で使うために取り出すこともできる。
最後の分析エンジンでのコンピレーションの実行を開始する(445)と、対応する実行エンジンは、それに対応する、クエリのコンパイルされた部分を呼び戻す(450)ことができる。エンジンは、取り出された、コンパイルされたクエリを実行する(455)。最初に、情報のための外部ソース呼出し(460)を行うよう実行エンジンに命令するプレースホルダーが、クエリ中にある。外部ソース呼出しは、465で行うことができ、次のカスケード式実行エンジンからのデータが要求される。この例では、外部データソースが、次のカスケード式実行エンジンである。次のエンジンが、それに対応するコンパイルされたクエリを記憶装置から呼び戻し(450)、そのクエリを実行する(455)。実行側エンジンは、実行されるクエリ中でプレースホルダーが見つかった場合、次のカスケード式実行エンジンに対する外部ソースデータ呼出しに進むことができる。処理は、外部ソースに対するプレースホルダーを実行エンジンが見つけなくなるまで、あるカスケード式実行エンジンから次のエンジンに移り続ける。
カスケード中の実行エンジンが外部プレースホルダーをもたず、したがって、外部呼出しを行う必要がない場合、そのクエリに対する完全な応答を、呼出し側実行エンジンに与える(470)ことができる。次いで、カスケード中の1つ上のエンジンが、その1つ上の実行エンジンの呼出しに応答して、入れ子になった照会結果を集め又は蓄積する(475)ことができる。1つ上のエンジンも呼出しに応答している(480)場合、外部ソース呼出しの遂行は、次の実行エンジンに移る(485)。次いで、次の実行エンジンは、その照会結果を呼出し側エンジンに返送して(470)、蓄積照会結果を集める(475)。外部データに対するすべての呼出しが完了すると、本質的に、最も内側の実行エンジン、すなわち基底エンジンが、上位レベルのすべての実行の結果を全部受け取っており、クエリ全体の結果を蓄積する(490)。この時点で、受け取った元の入力クエリ410からの照会結果が蓄積され、次の処理のために、又はユーザが使用するために利用可能である。
上述した処理を体系化した例を、以下に示す。例えば、以下のクエリを検討する。
Figure 2005018775
Figure 2005018775
このクエリは、例えば、列の値を比較する関係オペレータを、位置などのXMLオペレータと組み合わせる。クエリが2つの部分に分割されると、1つの部分は、SQLサーバエンジンを用いた実行をすることができ、もう1つの部分は、XMLエンジンを用いた実行をすることができる。XQueryは、QILにコンパイルすることができ、次いで、SQLサーバによって実施することができるパターン用に分析することができる。次いで、このクエリは、そうしたパターンを取り除き、仮想XML文書に対するナビゲーションで置き換えることによって、書き換えることができる。
繰返しになるが、絶対的に必要とされるマッピングの部分のみを動作が具体化し、クエリができるだけ多くSQLサーバにプッシュされることが利点である。これは、例えば、以下のように、すべてのSQLサーバ動作をクエリから抽出し、仮想XML文書に対するナビゲーションで置き換えることによって、達成することができる。
Figure 2005018775
位置オペレータは、XMLエンジンが実施するための位置に残されることに留意されたい。SQLテーブル及び列を置き換えた、この仮想XML文書は、以下のSQLクエリの結果に概念上等しい。
Figure 2005018775
Figure 2005018775
上述の結果は、以下のようなXML形式を生じる。
Figure 2005018775
しかし、これは概念的に真であるに過ぎない。現実には、XMLは構成されていない。そうではなく、通常のSQLクエリがSQLサーバに送られて、結合及びフィルタリングを実施し、行集合結果が、カスタムXPathナビゲータインターフェースを介した仮想XMLとして、XMLエンジンに露出される。
上述したように、本発明の例示的な実施形態を、様々な計算装置及びネットワークアーキテクチャに関連して説明したが、基底の概念は、クエリシステムを実装することが望ましいどの計算装置にもシステムにも適用することができる。したがって、本発明の分散処理方法及び分散処理システムは、様々なアプリケーション及び装置に適用することができる。例示的なプログラミング言語、名称及び例を、様々な選択の代表として本明細書では選んだが、こうした言語、名称及び例は、限定を意図したものではない。本発明によって達成されるのと同一の、類似の、又は等価な分散処理システム及び分散処理方法を達成するオブジェクトコードを提供する多数の方法があることが、当業者には理解されよう。
本明細書で説明した様々な技術は、ハードウェア又はソフトウェア、あるいはそうすることが適切な場合には、両方の組合せと共に実現することができる。したがって、本発明の分散処理方法及び分散処理装置、あるいは本発明の特定の態様又は部分は、実体のある媒体、例えばフロッピー(登録商標)ディスケット、CD−ROM、ハードドライブ、又は他のどのマシン可読記憶媒体においても具体化されるプログラムコード(すなわち、命令)の形をとることができ、プログラムコードがコンピュータなどのマシンにロードされるとともにそれによって実行されると、マシンは本発明を実施する装置になる。プログラム可能なコンピュータ上でのプログラムコードの実行の場合、計算装置は、概して、プロセッサ、プロセッサによって読取り可能な記憶媒体(揮発性、不揮発性メモリ及び/又は記憶要素など)、少なくとも1つの入力装置、ならびに少なくとも1つの出力装置を含む。例えばデータ処理APIなどの使用を介して、本発明の信号処理サービスを利用することができる1つ又は複数のプログラムは、好ましくは、高度な手続き型プログラミング言語又はオブジェクト指向プログラミング言語で実装されて、コンピュータと通信する。ただし、プログラム(群)は、そうすることが望まれる場合、アセンブリでも機械言語でも実装することができる。いずれの場合でも、言語は、コンパイル型言語でもインタープリト型言語でもよく、ハードウェアの実装と組み合わせることができる。
本発明の分散処理方法及び分散処理装置は、例えば、電気的配線又はケーブル布線、光ファイバ、あるいは他のどの伝送の形でもよい何らかの伝送媒体を介して伝送されるプログラムコードの形で実施される通信によって実現することもでき、プログラムコードが受信され、例えば、EPROM、ゲートアレイ、PLD(プログラム可能な論理回路)、クライアントコンピュータ、ビデオレコーダなどのマシンにロードされるとともにそれによって実行されると、上述した例示的な実施形態において説明した信号処理能力を有する受信側マシンは、本発明を実施する装置になる。汎用プロセッサ上で実装されると、プログラムコードは、プロセッサと結合して、本発明の機能を呼び出すように動作する独自の装置を提供する。さらに、本発明に関連して用いられるどの記憶技術も、常にハードウェア及びソフトウェアの組合せでよい。
本発明を、様々な図面の好ましい実施形態に関連して説明したが、本発明の同じ機能を、本発明から逸脱することなく実施するために、他の類似の実施形態を使用することもでき、説明した実施形態に修正及び追加を行うこともできる。さらに、携帯型装置のオペレーティングシステム及び他のアプリケーション特有のオペレーティングシステムを含む様々なコンピュータプラットフォームが企図され、特に、無線ネットワーク接続された装置の数は増加し続けることを強調しておく。したがって、本発明は、どの1つの実施形態にも限定されるべきではなく、特許請求の範囲による外延及び範囲内で解釈されるべきである。
本発明の実施形態を実現することができる好適な計算機環境を示すブロック図である。 本発明の実施形態を実現することができるアーキテクチャを示すブロック図である。 図2に示した分散クエリエンジンパイプラインのブロック図である。 本発明の実施形態に適用可能なフロー図である。
符号の説明
100 計算機環境
120 処理装置
130 システムメモリ
121 システムバス
134 オペレーティングシステム
135 アプリケーションプログラム
136 他のプログラムモジュール
137 プログラムデータ
140 固定型不揮発性メモリインターフェース
144 オペレーティングシステム
145 アプリケーションプログラム
146 他のプログラムモジュール
147 プログラムデータ
150 取外し可能不揮発性メモリインターフェース
160 ユーザ入力インターフェース
161 マウス
162 キーボード
170 ネットワークインターフェース
171 ローカルエリアネットワーク
172 モデム
173 ワイドエリアネットワーク
180 リモートコンピュータ
185 リモートアプリケーションプログラム
190 映像インターフェース
191 モニタ
195 出力周辺インターフェース
196 プリンタ
197 スピーカ
210a 言語コンパイラ1
210b 言語コンパイラ2
210c 言語コンパイラ3
210d 言語コンパイラM
220 中間言語表現
230 オプティマイザ
240 分散クエリエンジンパイプライン
260 データソース
270 照会結果
260 データソース(群)
270 照会結果
300 クエリ入力
310 分析エンジンA
320 分析エンジンB
330 分析エンジンC(基底エンジン)
340 コンパイルされたクエリA
350 コンパイルされたクエリB
360 コンパイルされたクエリC
370 実行エンジンC
380 実行エンジンB
390 実行エンジンA

Claims (16)

  1. クエリの部分を2つ以上の実行エンジンに分散する分散処理方法であって、
    入力クエリを受け取るステップと、
    第1の分析エンジンを用いて、第1の実行エンジンによって処理することができる前記入力クエリの部分を識別するステップと、
    前記入力クエリの前記識別された部分をコンパイルし、第1のコンパイルされた部分を形成するステップと、
    前記入力クエリを書き換えて、第1の書き換えられたクエリを形成するステップであって、前記入力クエリの前記識別された部分は、前記入力クエリから取り除かれ、第1のプレースホルダーによって置き換えられるステップと、
    前記第1の書き換えられたクエリを第2の分析エンジンに渡すステップと、
    前記第2の分析エンジンを用いて、第2の実行エンジンによって処理することができる、前記第1の書き換えられたクエリの部分を識別するステップと、
    前記第1の書き換えられたクエリの前記識別された部分をコンパイルし、第2のコンパイルされた部分を生成するステップであって、前記入力クエリは、前記第1の実行エンジン及び前記第2の実行エンジンに分散されるステップと
    を有することを特徴とする分散処理方法。
  2. 前記第1の書き換えられたクエリを書き換えて、第2の書き換えられたクエリを形成するステップであって、前記第1の書き換えられたクエリの前記識別された部分は、前記第1の書き換えられたクエリから取り除かれ、第2のプレースホルダーによって置き換えられるステップを有することを特徴とする請求項1に記載の分散処理方法。
  3. 前記書き換えるステップは、前記第2のコンパイルされた部分を、前記入力クエリの前記第1のコンパイルされた部分の中にラップするステップを有することを特徴とする請求項1に記載の分散処理方法。
  4. 前記第1のコンパイルされた部分及び前記第2のコンパイルされた部分は、異なるデータソースに対して実行することができることを特徴とする請求項1に記載の分散処理方法。
  5. 第1の分析エンジンは、構造化照会言語ベースのエンジンであり、第2の分析エンジンは、拡張マークアップ言語ベースのエンジンであることを特徴とする請求項1に記載の分散処理方法。
  6. 前記第2の実行エンジンを用いて、前記第2のコンパイルされた部分を部分的に実行し、第2の暫定結果及び前記第1のプレースホルダーの組合せを形成するステップであって、前記第1のプレースホルダーは、前記第2のコンパイルされた部分の未実行部分のままであるステップと、
    前記第2の実行エンジンから前記第1の実行エンジンへの呼出しを生成し、前記第1のプレースホルダーに対応するデータを要求するステップと、
    前記第1の実行エンジンを用いて、前記第1のコンパイルされた部分を実行して、前記第1のプレースホルダーに対応するとともに前記呼出しを満たす第1の暫定結果を形成するステップと、
    前記第1の暫定結果を前記第2の実行エンジンに提供するステップと、
    前記第1のプレースホルダーを前記第1の暫定結果で置き換え、組み合わされた入力照会結果を含む、第2の暫定結果及び第1の暫定結果の組合せを形成するステップと
    を有することを特徴とする請求項1に記載の分散処理方法。
  7. 前記第1の実行エンジン及び前記第2の実行エンジンは、異なるデータモデルを含むクエリに対して作用することを特徴とする請求項6に記載の分散処理方法。
  8. 前記第1の実行エンジンを用いて、前記第1のコンパイルされた部分を部分的に実行し、第1の暫定結果を形成するステップと、
    前記第1の実行エンジンから前記第2の実行エンジンへの呼出しを生成し、前記入力クエリの識別されていない部分に対応するデータを要求するステップと、
    前記第2の実行エンジンを用いて、前記第2のコンパイルされた部分を実行して、前記呼出しを満たす第2の暫定結果を形成するステップと、
    前記第2の暫定結果を前記第1の実行エンジンに提供するステップと、
    前記第1の暫定結果を前記第2の暫定結果と組み合わせて、組み合わされた入力照会結果を形成するステップと
    を有することを特徴とする請求項1に記載の分散処理方法。
  9. 前記第1の実行エンジン及び前記第2の実行エンジンは、異なるデータモデルを含むクエリに対して作用することを特徴とする請求項8に記載の分散処理方法。
  10. 入力クエリを分散処理する分散処理システムであって、
    コンパイルし実行することができる前記入力クエリの部分を分離させる2つ以上の分析エンジンと、
    前記入力クエリに対して動作を行う2つ以上の実行エンジンと、
    1つ又は複数のデータソースへのアクセス権であって、前記2つ以上の分析エンジンは、前記入力クエリの1つ又は複数の部分をそれぞれ独立に識別しコンパイルするように動作するアクセス権とを備え、
    前記2つ以上の分析エンジンの少なくとも1つは、前記入力クエリを書き換えて、実行エンジンに対応する前記入力クエリの部分を取り除き、
    前記2つ以上の実行エンジンは、前記入力クエリの前記1つ又は複数のコンパイルされた部分を処理し、1つの実行エンジンからの部分的な照会結果が後続の実行エンジンに渡され組み合わされて、入力照会結果全体を形成することを特徴とする分散処理システム。
  11. コンピュータにおいて実行されると、クエリの部分を2つ以上の実行エンジンに分散する分散処理方法を実行する命令を含むコンピュータ読取可能な媒体であって、
    前記分散処理方法は、
    入力クエリを受け取るステップと、
    第1の分析エンジンを用いて、第1の実行エンジンによって処理することができる前記入力クエリの部分を識別するステップと、
    前記入力クエリの前記識別された部分をコンパイルし、第1のコンパイルされた部分を形成するステップと、
    前記入力クエリを書き換えて、第1の書き換えられたクエリを形成するステップであって、前記入力クエリの前記識別された部分は、前記入力クエリから取り除かれ、第1のプレースホルダーによって置き換えられるステップと、
    前記第1の書き換えられたクエリを第2の分析エンジンに渡すステップと、
    前記第2の分析エンジンを用いて、第2の実行エンジンによって処理することができる、前記第1の書き換えられたクエリの部分を識別するステップと、
    前記第1の書き換えられたクエリの前記識別された部分をコンパイルし、第2のコンパイルされた部分を生成するステップであって、前記入力クエリは、前記第1の実行エンジン及び前記第2の実行エンジンに分散されるステップと
    を有することを特徴とするコンピュータ読取可能な媒体。
  12. 前記分散処理方法は、
    前記第2の実行エンジンを用いて、前記第2のコンパイルされた部分を部分的に実行し、第2の暫定結果及び前記第1のプレースホルダーの組合せを形成するステップであって、前記第1のプレースホルダーは、前記第2のコンパイルされた部分の未実行部分のままであるステップと、
    前記第2の実行エンジンから前記第1の実行エンジンへの呼出しを生成し、前記第1のプレースホルダーに対応するデータを要求するステップと、
    前記第1の実行エンジンを用いて、前記第1のコンパイルされた部分を実行して、前記第1のプレースホルダーに対応するとともに前記呼出しを満たす第1の暫定結果を形成するステップと、
    前記第1の暫定結果を前記第2の実行エンジンに提供するステップと、
    前記第1のプレースホルダーを前記第1の暫定結果で置き換え、組み合わされた入力照会結果を含む、第2の暫定結果及び第1の暫定結果の組合せを形成するステップと
    を有することを特徴とする請求項11に記載のコンピュータ読取可能な媒体。
  13. 前記第1の実行エンジン及び前記第2の実行エンジンは、異なるデータモデルを含むクエリに対して作用することを特徴とする請求項12に記載のコンピュータ読取可能な媒体。
  14. 前記第1のコンパイルされた部分及び前記第2のコンパイルされた部分は、異なるデータソースに対して実行されることを特徴とする請求項12に記載のコンピュータ読取可能な媒体。
  15. 前記分散処理方法は、
    前記第1の実行エンジンを用いて、前記第1のコンパイルされた部分を部分的に実行し、第1の暫定結果を形成するステップと、
    前記第1の実行エンジンから前記第2の実行エンジンへの呼出しを生成し、前記入力クエリの識別されていない部分に対応するデータを要求するステップと、
    前記第2の実行エンジンを用いて、前記第2のコンパイルされた部分を実行して、前記呼出しを満たす第2の暫定結果を形成するステップと、
    前記第2の暫定結果を前記第1の実行エンジンに提供するステップと、
    前記第1の暫定結果を前記第2の暫定結果と組み合わせて、組み合わされた入力照会結果を形成するステップと
    を有することを特徴とする請求項11に記載のコンピュータ読取可能な媒体。
  16. 第1の分析エンジンは、構造化照会言語ベースのエンジンであり、第2の分析エンジンは、拡張マークアップ言語ベースのエンジンであることを特徴とする請求項15に記載のコンピュータ読取可能な媒体。
JP2004185645A 2003-06-23 2004-06-23 分散処理方法及び分散処理システム Pending JP2005018775A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/601,730 US7472112B2 (en) 2003-06-23 2003-06-23 Distributed query engine pipeline method and system

Publications (2)

Publication Number Publication Date
JP2005018775A true JP2005018775A (ja) 2005-01-20
JP2005018775A5 JP2005018775A5 (ja) 2007-08-09

Family

ID=33418607

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004185645A Pending JP2005018775A (ja) 2003-06-23 2004-06-23 分散処理方法及び分散処理システム

Country Status (5)

Country Link
US (1) US7472112B2 (ja)
EP (1) EP1492031A3 (ja)
JP (1) JP2005018775A (ja)
KR (1) KR20050000342A (ja)
CN (1) CN1573756A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007026373A (ja) * 2005-07-21 2007-02-01 Hitachi Ltd ストリームデータ処理システムおよびストリームデータ処理方法

Families Citing this family (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US8244702B2 (en) 2002-02-26 2012-08-14 International Business Machines Corporation Modification of a data repository based on an abstract data representation
US6996558B2 (en) * 2002-02-26 2006-02-07 International Business Machines Corporation Application portability and extensibility through database schema and query abstraction
US7822771B1 (en) * 2003-09-23 2010-10-26 Teradata Us, Inc. Search query generation
US20050071828A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation System and method for compiling source code for multi-processor environments
US7236998B2 (en) * 2003-09-25 2007-06-26 International Business Machines Corporation System and method for solving a large system of dense linear equations
US7146529B2 (en) * 2003-09-25 2006-12-05 International Business Machines Corporation System and method for processor thread acting as a system service processor
US7318218B2 (en) * 2003-09-25 2008-01-08 International Business Machines Corporation System and method for processor thread for software debugging
US7516456B2 (en) * 2003-09-25 2009-04-07 International Business Machines Corporation Asymmetric heterogeneous multi-threaded operating system
US7389508B2 (en) * 2003-09-25 2008-06-17 International Business Machines Corporation System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment
US7475257B2 (en) 2003-09-25 2009-01-06 International Business Machines Corporation System and method for selecting and using a signal processor in a multiprocessor system to operate as a security for encryption/decryption of data
US7444632B2 (en) 2003-09-25 2008-10-28 International Business Machines Corporation Balancing computational load across a plurality of processors
US7496917B2 (en) 2003-09-25 2009-02-24 International Business Machines Corporation Virtual devices using a pluarlity of processors
US20050071578A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation System and method for manipulating data with a plurality of processors
US7549145B2 (en) 2003-09-25 2009-06-16 International Business Machines Corporation Processor dedicated code handling in a multi-processor environment
US7523157B2 (en) * 2003-09-25 2009-04-21 International Business Machines Corporation Managing a plurality of processors as devices
US7415703B2 (en) 2003-09-25 2008-08-19 International Business Machines Corporation Loading software on a plurality of processors
US7900133B2 (en) 2003-12-09 2011-03-01 International Business Machines Corporation Annotation structure type determination
US7406691B2 (en) 2004-01-13 2008-07-29 International Business Machines Corporation Minimizing complex decisions to allocate additional resources to a job submitted to a grid environment
US7562143B2 (en) 2004-01-13 2009-07-14 International Business Machines Corporation Managing escalating resource needs within a grid environment
US7552437B2 (en) 2004-01-14 2009-06-23 International Business Machines Corporation Maintaining application operations within a suboptimal grid environment
US7464159B2 (en) * 2004-01-14 2008-12-09 International Business Machines Corporation Managing analysis of a degraded service in a grid environment
US7860875B2 (en) * 2004-05-26 2010-12-28 International Business Machines Corporation Method for modifying a query by use of an external system for managing assignment of user and data classifications
US7266547B2 (en) * 2004-06-10 2007-09-04 International Business Machines Corporation Query meaning determination through a grid service
US7406461B1 (en) 2004-06-11 2008-07-29 Seisint, Inc. System and method for processing a request to perform an activity associated with a precompiled query
US7797333B1 (en) 2004-06-11 2010-09-14 Seisint, Inc. System and method for returning results of a query from one or more slave nodes to one or more master nodes of a database system
US7917495B1 (en) * 2004-06-11 2011-03-29 Seisint, Inc. System and method for processing query requests in a database system
US8266234B1 (en) 2004-06-11 2012-09-11 Seisint, Inc. System and method for enhancing system reliability using multiple channels and multicast
US7778997B1 (en) * 2004-06-11 2010-08-17 Seisint, Inc. System and method for managing throughput in the processing of query requests in a database system
US7801911B1 (en) 2004-06-11 2010-09-21 Seisint, Inc. System and method for using activity identifications in a database system
US7873650B1 (en) 2004-06-11 2011-01-18 Seisint, Inc. System and method for distributing data in a parallel processing system
US7693826B1 (en) * 2004-06-11 2010-04-06 Seisint, Inc. System and method for pre-compiling a query and pre-keying a database system
US7739287B1 (en) * 2004-06-11 2010-06-15 Seisint, Inc. System and method for dynamically creating keys in a database system
US7302447B2 (en) * 2005-01-14 2007-11-27 International Business Machines Corporation Virtual columns
US7712100B2 (en) * 2004-09-14 2010-05-04 International Business Machines Corporation Determining a capacity of a grid environment to handle a required workload for a virtual grid job request
US9171100B2 (en) 2004-09-22 2015-10-27 Primo M. Pettovello MTree an XPath multi-axis structure threaded index
US8447774B1 (en) * 2004-11-23 2013-05-21 Progress Software Corporation Database-independent mechanism for retrieving relational data as XML
US20060116999A1 (en) * 2004-11-30 2006-06-01 International Business Machines Corporation Sequential stepwise query condition building
US7461052B2 (en) * 2004-12-06 2008-12-02 International Business Machines Corporation Abstract query plan
US8131744B2 (en) * 2004-12-17 2012-03-06 International Business Machines Corporation Well organized query result sets
US8112459B2 (en) * 2004-12-17 2012-02-07 International Business Machines Corporation Creating a logical table from multiple differently formatted physical tables having different access methods
US7333981B2 (en) * 2004-12-17 2008-02-19 International Business Machines Corporation Transformation of a physical query into an abstract query
US7502850B2 (en) * 2005-01-06 2009-03-10 International Business Machines Corporation Verifying resource functionality before use by a grid job submitted to a grid environment
US7533170B2 (en) * 2005-01-06 2009-05-12 International Business Machines Corporation Coordinating the monitoring, management, and prediction of unintended changes within a grid environment
US7793308B2 (en) 2005-01-06 2010-09-07 International Business Machines Corporation Setting operation based resource utilization thresholds for resource use by a process
US7707288B2 (en) 2005-01-06 2010-04-27 International Business Machines Corporation Automatically building a locally managed virtual node grouping to handle a grid job requiring a degree of resource parallelism within a grid environment
US7761557B2 (en) 2005-01-06 2010-07-20 International Business Machines Corporation Facilitating overall grid environment management by monitoring and distributing grid activity
US7590623B2 (en) 2005-01-06 2009-09-15 International Business Machines Corporation Automated management of software images for efficient resource node building within a grid environment
US7668741B2 (en) 2005-01-06 2010-02-23 International Business Machines Corporation Managing compliance with service level agreements in a grid environment
US7562035B2 (en) 2005-01-12 2009-07-14 International Business Machines Corporation Automating responses by grid providers to bid requests indicating criteria for a grid job
US7472079B2 (en) * 2005-01-12 2008-12-30 International Business Machines Corporation Computer implemented method for automatically controlling selection of a grid provider for a grid job
US7467196B2 (en) * 2005-01-12 2008-12-16 International Business Machines Corporation Managing network errors communicated in a message transaction with error information using a troubleshooting agent
US7571120B2 (en) 2005-01-12 2009-08-04 International Business Machines Corporation Computer implemented method for estimating future grid job costs by classifying grid jobs and storing results of processing grid job microcosms
US8122012B2 (en) 2005-01-14 2012-02-21 International Business Machines Corporation Abstract record timeline rendering/display
US7321895B2 (en) * 2005-01-14 2008-01-22 International Business Machines Corporation Timeline condition support for an abstract database
US7624097B2 (en) * 2005-01-14 2009-11-24 International Business Machines Corporation Abstract records
US8095553B2 (en) * 2005-03-17 2012-01-10 International Business Machines Corporation Sequence support operators for an abstract database
US7634578B2 (en) * 2005-07-14 2009-12-15 Microsoft Corporation Node-to-node communication pipelines
US7440945B2 (en) 2005-11-10 2008-10-21 International Business Machines Corporation Dynamic discovery of abstract rule set required inputs
US7444332B2 (en) 2005-11-10 2008-10-28 International Business Machines Corporation Strict validation of inference rule based on abstraction environment
US7664742B2 (en) 2005-11-14 2010-02-16 Pettovello Primo M Index data structure for a peer-to-peer network
US8005816B2 (en) 2006-03-01 2011-08-23 Oracle International Corporation Auto generation of suggested links in a search system
US8433712B2 (en) 2006-03-01 2013-04-30 Oracle International Corporation Link analysis for enterprise environment
US8875249B2 (en) 2006-03-01 2014-10-28 Oracle International Corporation Minimum lifespan credentials for crawling data repositories
US8027982B2 (en) 2006-03-01 2011-09-27 Oracle International Corporation Self-service sources for secure search
US7941419B2 (en) 2006-03-01 2011-05-10 Oracle International Corporation Suggested content with attribute parameterization
US8332430B2 (en) 2006-03-01 2012-12-11 Oracle International Corporation Secure search performance improvement
US8214394B2 (en) 2006-03-01 2012-07-03 Oracle International Corporation Propagating user identities in a secure federated search system
US7752221B2 (en) * 2006-03-01 2010-07-06 Oracle International Corp. Progressive relaxation across tiers
US9177124B2 (en) 2006-03-01 2015-11-03 Oracle International Corporation Flexible authentication framework
US8707451B2 (en) 2006-03-01 2014-04-22 Oracle International Corporation Search hit URL modification for secure application integration
US8868540B2 (en) 2006-03-01 2014-10-21 Oracle International Corporation Method for suggesting web links and alternate terms for matching search queries
US20080065591A1 (en) * 2006-09-08 2008-03-13 Leon Guzenda Configurable software database parallel query system and method
JP5068062B2 (ja) * 2006-10-30 2012-11-07 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースを統合するためのシステム、方法、およびプログラム
US8244747B2 (en) * 2006-12-05 2012-08-14 International Business Machines Corporation Middleware for query processing across a network of RFID databases
US8140557B2 (en) 2007-05-15 2012-03-20 International Business Machines Corporation Ontological translation of abstract rules
US7996392B2 (en) 2007-06-27 2011-08-09 Oracle International Corporation Changing ranking algorithms based on customer settings
US8316007B2 (en) 2007-06-28 2012-11-20 Oracle International Corporation Automatically finding acronyms and synonyms in a corpus
US8386508B2 (en) * 2008-04-28 2013-02-26 Infosys Technologies Limited System and method for parallel query evaluation
US8171045B2 (en) * 2008-07-31 2012-05-01 Xsevo Systems, Inc. Record based code structure
US8805875B1 (en) * 2008-10-04 2014-08-12 Reflex Systems Llc Systems and methods for information retrieval
US8676808B2 (en) 2009-07-09 2014-03-18 Dillon Software Services, Llc Data store interface that facilitates distribution of application functionality across a multi-tier client-server architecture
US9081873B1 (en) 2009-10-05 2015-07-14 Stratacloud, Inc. Method and system for information retrieval in response to a query
US8631028B1 (en) 2009-10-29 2014-01-14 Primo M. Pettovello XPath query processing improvements
AU2010336363B2 (en) * 2009-12-23 2016-03-03 Ab Initio Technology Llc Managing queries
US8949210B2 (en) 2010-05-13 2015-02-03 Microsoft Corporation Analysis stack for complex event flows
WO2011156731A2 (en) * 2010-06-10 2011-12-15 Hewlett-Packard Development Company, L.P. Query pipeline
US20120150913A1 (en) * 2010-12-13 2012-06-14 Microsoft Corporation Multidimensional data-centric service protocol
US20120215763A1 (en) * 2011-02-18 2012-08-23 Microsoft Corporation Dynamic distributed query execution over heterogeneous sources
US8689226B2 (en) 2011-05-11 2014-04-01 Hewlett-Packard Development Company, L.P. Assigning resources to processing stages of a processing subsystem
US8725730B2 (en) 2011-05-23 2014-05-13 Hewlett-Packard Development Company, L.P. Responding to a query in a data processing system
CN102169509B (zh) * 2011-05-30 2012-07-25 中铁第一勘察设计院集团有限公司 基于关系数据库及xml文件的地铁综合管线数据储存方法
US9177021B2 (en) * 2011-06-09 2015-11-03 International Business Machines Corporation Relational query planning for non-relational data sources
US8694977B2 (en) * 2011-07-15 2014-04-08 Infineon Technologies Ag Distributed compiling process with instruction signature support
US20130060806A1 (en) * 2011-09-07 2013-03-07 Microsoft Corporation Data Solution Composition Architecture
US9053210B2 (en) 2012-12-14 2015-06-09 Microsoft Technology Licensing, Llc Graph query processing using plurality of engines
CN103106261B (zh) * 2013-01-28 2016-02-10 中国电子科技集团公司第二十八研究所 基于窄带云数据服务的分布式查询方法
US10192187B2 (en) * 2014-01-03 2019-01-29 Visier Solutions, Inc. Comparison of client and benchmark data
US9449098B2 (en) * 2014-05-30 2016-09-20 Macy's West Stores, Inc. System and method for performing a multiple pass search
CN104036007B (zh) * 2014-06-23 2017-12-12 北京京东尚科信息技术有限公司 一种分布式数据库查询方法及装置
US20170031998A1 (en) * 2015-07-31 2017-02-02 Linkedln Corporation Organizational directory access client and server leveraging local and network search
US10671607B2 (en) * 2016-09-23 2020-06-02 Futurewei Technologies, Inc. Pipeline dependent tree query optimizer and scheduler
CN109885585B (zh) * 2019-02-18 2020-01-10 星环信息科技(上海)有限公司 支持存储过程、触发器与视图的分布式数据库***和方法
KR102605929B1 (ko) * 2022-09-29 2023-11-30 스마트마인드 주식회사 서로 다른 프로세서 자원을 할당하여 정형 데이터와 비정형 데이터를 처리하는 방법 및 이러한 방법을 제공하는 데이터 처리 시스템

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5873080A (en) * 1996-09-20 1999-02-16 International Business Machines Corporation Using multiple search engines to search multimedia data
WO2002035395A2 (en) * 2000-10-27 2002-05-02 Entigen Corporation Integrating heterogeneous data and tools
US20030069696A1 (en) * 2001-10-09 2003-04-10 Mcgeorge Vernon E. Rule based compatibility module

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6078914A (en) * 1996-12-09 2000-06-20 Open Text Corporation Natural language meta-search system and method
US6226635B1 (en) * 1998-08-14 2001-05-01 Microsoft Corporation Layered query management
US6324534B1 (en) * 1999-09-10 2001-11-27 Requisite Technology, Inc. Sequential subset catalog search engine
US6697799B1 (en) * 1999-09-10 2004-02-24 Requisite Technology, Inc. Automated classification of items using cascade searches
US7085766B2 (en) * 2000-03-09 2006-08-01 The Web Access, Inc. Method and apparatus for organizing data by overlaying a searchable database with a directory tree structure
US6834287B1 (en) * 2001-03-14 2004-12-21 Trilogy Development Group, Inc. Classification engine for managing attribute-based data
US7289981B2 (en) * 2002-12-10 2007-10-30 International Business Machines Corporation Using text search engine for parametric search
US6836778B2 (en) * 2003-05-01 2004-12-28 Oracle International Corporation Techniques for changing XML content in a relational database

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5873080A (en) * 1996-09-20 1999-02-16 International Business Machines Corporation Using multiple search engines to search multimedia data
WO2002035395A2 (en) * 2000-10-27 2002-05-02 Entigen Corporation Integrating heterogeneous data and tools
US20030069696A1 (en) * 2001-10-09 2003-04-10 Mcgeorge Vernon E. Rule based compatibility module

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6010019971, V. Papadimos and D. Maier, "Distributed Queries without Distributed State", Fifth International Workshop on the Web and Databases(WebDB 2002), 20020607, pp.1−6 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007026373A (ja) * 2005-07-21 2007-02-01 Hitachi Ltd ストリームデータ処理システムおよびストリームデータ処理方法

Also Published As

Publication number Publication date
US7472112B2 (en) 2008-12-30
EP1492031A9 (en) 2005-03-23
US20040260685A1 (en) 2004-12-23
KR20050000342A (ko) 2005-01-03
EP1492031A2 (en) 2004-12-29
EP1492031A3 (en) 2005-03-23
CN1573756A (zh) 2005-02-02

Similar Documents

Publication Publication Date Title
JP2005018775A (ja) 分散処理方法及び分散処理システム
US7383255B2 (en) Common query runtime system and application programming interface
JP4991040B2 (ja) コマンド索引のためのローカル記憶装置および拡張記憶装置を使用したコマンドスクリプトの解釈
US5339435A (en) Heterogenous software configuration management apparatus
US7213240B2 (en) Platform-independent selective ahead-of-time compilation
US20040193575A1 (en) Path expressions and SQL select statement in object oriented language
US8359570B2 (en) Adaptive scripting tool
US7624075B2 (en) Transformation of modular finite state transducers
US7823139B2 (en) Method and system for translating programming languages
US7596550B2 (en) System and method for query planning and execution
JP2010503934A (ja) モジュラ有限状態トランスデューサの変換
US7860894B2 (en) Template driven type and mode conversion
US20070050707A1 (en) Enablement of multiple schema management and versioning for application-specific xml parsers
US20080177720A1 (en) System and method for query planning for execution using conditional operators
CN114356964A (zh) 数据血缘构建方法、装置、存储介质及电子设备
US7712088B2 (en) Method and system for a batch parser
US7770160B2 (en) System and method for declaring a resource within a markup document
JP2000347875A (ja) ファイル移植技術
CN113608748A (zh) C语言转换Java语言的数据处理方法、装置及设备
JP7059757B2 (ja) Api処理方法、端末、api処理プログラム
JP5732926B2 (ja) リモートプロシージャコール処理方法
JP2004265164A (ja) データ転送プロトコルを用いたクライアントとサーバとの間のサービス連携システムおよびそのサービス連携方法
Grimm Systems need languages need systems
WO2004068270A2 (en) Method and system for xpath implementation
Kerne et al. Inter-Language Translation Framework for Distributed Information Semantics

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070625

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100413

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101008