JP2009110052A - コーディネータサーバ及び分散処理方法 - Google Patents

コーディネータサーバ及び分散処理方法 Download PDF

Info

Publication number
JP2009110052A
JP2009110052A JP2007278604A JP2007278604A JP2009110052A JP 2009110052 A JP2009110052 A JP 2009110052A JP 2007278604 A JP2007278604 A JP 2007278604A JP 2007278604 A JP2007278604 A JP 2007278604A JP 2009110052 A JP2009110052 A JP 2009110052A
Authority
JP
Japan
Prior art keywords
code
query
result
syntax
execution
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.)
Granted
Application number
JP2007278604A
Other languages
English (en)
Other versions
JP5161535B2 (ja
Inventor
Masakazu Hattori
雅一 服部
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2007278604A priority Critical patent/JP5161535B2/ja
Priority to US12/212,749 priority patent/US8051070B2/en
Publication of JP2009110052A publication Critical patent/JP2009110052A/ja
Application granted granted Critical
Publication of JP5161535B2 publication Critical patent/JP5161535B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】分散透過性を維持可能に分散クエリ処理を実現可能な分散XMLデータベース技術を提供する。
【解決手段】コード生成部601は、クエリ受信部600が受信したクエリを解析し、DBサーバ70A〜70Bの各処理能力情報を参照してクエリコードと、タプルコードと、手続きコードとを各々生成する。コード実行部603は、コード生成部601が生成したクエリコードをDBサーバ70A〜70Bに送信すると共に、当該クエリコードによって表される処理の実行結果をDBサーバ70A〜70Bから受信し、これらを用いて、コード生成部601が生成したタプルコードによって表される処理及び手続きコードによって表される処理を実行して結果データを生成する。結果データ送信部604は、コード実行部603が生成した結果データをクライアント50に送信する。
【選択図】 図1

Description

本発明は、XMLデータを記憶するデータベースを各々有する複数のデータベースサーバと接続されて分散XMLデータベースサーバを構成するコーディネータサーバ及び分散処理方法に関する。
従来より、命令の読み込み、解釈、実行、結果の書き込みなどを行うプロセッサの高速化技術として、例えば、パイプライン処理技術がある。パイプライン処理とは、各フェーズの処理を独立動作させることで、前のフェーズの処理サイクルが終わる前に次のフェーズの処理を開始し、これを繰り返す処理である。これにより、流れ作業が実現し、処理全体の性能が改善する。
一方、大量のデータを管理する技術として、並列データベース技術がある。並列データベースでは、大量のデータに対応するため、複数台のサーバからなるシステムが構築されている。均一のデータ形式を持つ大量のデータ集合を複数のデータベースに分割配置する。また、データ集合を複数のデータベースに分割配置するのではなく、複数のデータベースに重複して配置するケースもある。データ集合をこのように配置することで、同一のデータに対する同時アクセス数が高いケースでは、スループットの向上が期待できる。
このような並列データベースにおいてデータを管理する方式は、複数のサーバがディスクを共有しない方式(ディスク非共有方式)と、複数のサーバがディスクを共有する方式(ディスク共有方式)と、複数のサーバがディスクとメモリとを共有する方式(メモリ共有方式)との3方式に大別される。
ここで、ディスク非共有方式を中心に説明する。データ集合を複数のデータベースに分割配置する場合、データ集合の垂直分割とデータ集合の水平分割との2通りが考えられる(フラグメンテーション)。データ集合の水平分割は、データ集合の部分集合を作り出すことであり、後述のデータパーティショニングの手法が重要になる。データの垂直分割は、データを属性やカラムなどの単位で分割することである。各分割には、個々のアクセスパターンによりメリット及びデメリットが存在する。例えば、データの垂直分割では、問合せが少ないサイズのデータスキャンで済む場合は高速だが、オリジナルのデータが必要なときはサーバ間でのデータ結合が必要になり、性能が大幅に悪化する。
ディスク非共有方式の並列データベースで用いられる各サーバは、データ集合が分割配置された複数のデータベースに個々にアクセスすることで並列アクセスが可能となり、データベース数に応じた性能向上が期待される。これにより、処理効率や応答時間の改善が図られている(パーティション並列化)。
データパーティショニング手法としては、キーレンジパーティショニング、ハッシュパーティショニングなどが知られている。例えば、大量のデータ集合がリレーションで表現されているとする。キーレンジパーティショニングやハッシュパーティショニングでは、テーブルの 1カラム値を使用する場合と、リレーションの複数のカラム値を使用する場合とがある。このようなデータパーティショニングを行うと、負荷は集中するものの、対象カラムに対する範囲条件つきの検索では無関係なデータベースにアクセスする非効率を回避できる。さらに、対象カラムでの自然結合を含む検索は、異なるデータベース間の結合が不要となるので、大幅に性能を改善することができる。
ただし、並列データベースでは、均衡がとれたデータパーティショニングを行わないと、検索時に特定のデータベースに負荷が集中するため、並列化の効果を発揮することが困難である。しかし、入力データの傾向の変化により、各データサイズは不均衡になる可能性があり、事前に決められたデータ分割ルールではそれを回避することが困難である。そのため、動的にキーレンジを変更する、ハッシュ値を変更するなどの改善手法が提案されてきたが、このような手法では、変更にともなうデータ移動などの負担が大きくなる。
ところで、並列データベースは、1台のコーディネータサーバと複数台のDBサーバとから構成されることが多い。このような構成において、並列データベースでは以下のような処理が行われる。クライアントからの要求を受け付けたコーディネータサーバは、その要求を解析してプランを生成して、複数台のDBサーバに各プランを振り分ける。各DBサーバは振り分けられたプランを実行して、その処理結果のデータ集合をコーディネータサーバに送信する。コーディネータサーバは送信されたデータ集合に対してマージなど集計処理を施して、クライアントに送信する。サーバ間で受け渡されるデータはLANなどのネットワーク上でストリーム送信される。そのため、並列データベースは、ネットワークも高速サーバ間インターコネクトなど分散並列プラットフォーム上で実現されることが多い。
以上のような処理を高速化するために、並列データベースにおいては、SQLの内部処理のスキャン、ソート、ジョインといったフェーズ処理を複数のプロセスや複数台のサーバで並列化するメカニズムが組み込まれている。一部のデータベース製品には、各フェーズの処理を独立に動作させて前のフェーズ処理が終わる前に次のフェーズ処理を始める、といったパイプライン方式も採用されている(パイプライン並列化)。
また、XMLデータを記憶するXMLデータベースでは、XMLデータの取得を要求するクエリとして、例えば、XQueryという静的型付け機能を持つ関数型言語を用いて処理結果のデータ集合が得られる。このXQueryを用いて行われる単体のXQuery処理は、関数型言語として処理するアプローチと、タプル演算に置き換えて処理するアプローチとの2つのアプローチとに大別される。近年、このようなXQuery処理を分散システムにより実現させる分散XQuery処理技術が開発されている。しかし、分散 XQuery処理の試みはまだ始まったばかりであり、分散 XQuery処理について記述した論文が散見される程度である。例えば、非特許文献1〜2に示されるような論文がある。
Christopher Re, et. al., "Distributed XQuery", IIWeb 2004 Highly Distributed XQuery with DXQ, Mary Fernandez, et. al., "Highly Distributed XQuery with DXQ", SIGMOD 2007
この分散XQuery処理を行う分散XMLデータベースは、例えば、複数のデータベースサーバをスレーブとしこれらを取りまとめるコーディネータサーバをマスタとしたマスタ−スレーブ分散構成をなしているものとされる。このような分散XMLデータベースでは、例えば、以下のような前提がある。従来の単体 XQuery処理を行うためのXQuery仕様において、クエリ輸送 (Query Shipping)を実行できるように一部拡張されたXQuery仕様を用いるという前提である。
しかし、従来の単体 XQuery処理を行うためのXQuery仕様が一部拡張された仕様を用いる場合、XQueryを生成するユーザが分散処理手順を記述しなければならず、分散透過性が高いとは必ずしも言えない(XQueryD)。分散透過性とは、分散されている構成をユーザにできるだけ意識させることなく、あたかも集中型システムであるかのように見せることにより分散システムを実現させることである。
本発明は、上記に鑑みてなされたものであって、分散XMLデータベースシステムにおいて、分散透過性を維持可能に分散クエリ処理を実現可能なコーディネータサーバ及び分散処理方法を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、XMLデータを記憶するデータベースを各々有する複数の分散されたデータベースサーバに接続されたコーディネータサーバであって、条件に該当するXMLデータの取得を要求するクエリをクライアントから受信する第1受信手段と、前記データベースサーバのクエリに対する処理能力を示す処理能力情報を複数の前記データベースサーバから各々取得する取得手段と、受信された前記クエリに対して、前記処理能力情報を参照して、複数の前記データベースサーバが各々行う第1処理を表すクエリコードと、当該クエリコードの実行結果を用いて行う第2処理を表すコードとを生成する生成手段と、複数の前記データベースサーバに各々対応する前記クエリコードを送信する第1送信手段と、前記第1処理が実行された結果得られたXMLデータの一部又は全部を含む第1結果データを複数の前記データベースサーバから各々受信する第2受信手段と、前記第1結果データを用いて、前記コードによって表される第2処理を実行する実行手段と、前記第2処理の実行の結果得られたXMLデータの一部又は全部を含む第2結果データを前記クライアントに送信する第2送信手段とを備えることを特徴とする。
また、本発明は、XMLデータを記憶するデータベースを各々有する複数の分散されたデータベースサーバに接続されたコーディネータサーバであって、条件に該当するXMLデータの取得を要求するクエリをクライアントから受信する第1受信手段と、受信された前記クエリに対して、複数の前記データベースサーバが各々行う第1処理を表すクエリコードを生成し、当該クエリコードの実行結果を用いて行う処理を表すコードとして、タプル演算による第2処理を表すタプルコード及び手続き演算による第3処理を表す手続きコードを生成する生成手段と、複数の前記データベースサーバに各々対応する前記クエリコードを送信する第1送信手段と、前記第1処理が実行された結果得られたXMLデータの一部又は全部を含む第1結果データを複数の前記データベースサーバから各々受信する第2受信手段と、前記第1結果データを用いて、前記タプルコードによって表される第2処理及び前記手続きコードによって表される第3処理を実行する実行手段と、前記第2処理及び前記第3処理の実行の結果得られたXMLデータの一部又は全部を含む第2結果データを前記クライアントに送信する第2送信手段とを備えることを特徴とする。
また、本発明は、第1受信手段と、取得手段と、生成手段と、第1送信手段と、第2受信手段と、実行手段と、第2送信手段とを有し、XMLデータを記憶するデータベースを各々有する複数の分散されたデータベースサーバに接続されたコーディネータサーバで実現される分散処理方法であって、前記第1受信手段が、条件に該当するXMLデータの取得を要求するクエリをクライアントから受信するステップと、前記取得手段が、前記データベースサーバのクエリに対する処理能力を示す処理能力情報を複数の前記データベースサーバから各々取得するステップと、前記生成手段が、受信された前記クエリに対して、前記処理能力情報を参照して、複数の前記データベースサーバが各々行う第1処理を表すクエリコードと、当該クエリコードの実行結果を用いて行う第2処理を表すコードとを生成するステップと、前記第1送信手段が、複数の前記データベースサーバに各々対応する前記クエリコードを送信するステップと、前記第2受信手段が、前記第1処理が実行された結果得られたXMLデータの一部又は全部を含む第1結果データを複数の前記データベースサーバから各々受信するステップと、前記実行手段が、前記第1結果データを用いて、前記コードによって表される第2処理を実行するステップと、前記第2送信手段が、前記第2処理の実行の結果得られたXMLデータの一部又は全部を含む第2結果データを前記クライアントに送信するステップとを含むことを特徴とする。
また、本発明は、第1受信手段と、生成手段と、第1送信手段と、第2受信手段と、実行手段と、第2送信手段とを有し、XMLデータを記憶するデータベースを各々有する複数の分散されたデータベースサーバに接続されたコーディネータサーバで実現される分散処理方法であって、前記第1受信手段が、条件に該当するXMLデータの取得を要求するクエリをクライアントから受信するステップと、前記生成手段が、受信された前記クエリに対して、複数の前記データベースサーバが各々行う第1処理を表すクエリコードを生成し、当該クエリコードの実行結果を用いて行う処理を表すコードとして、タプル演算による第2処理を表すタプルコード及び手続き演算による第3処理を表す手続きコードを生成するステップと、前記第1送信手段が、複数の前記データベースサーバに各々対応する前記クエリコードを送信するステップと、前記第2受信手段が、前記第1処理が実行された結果得られたXMLデータの一部又は全部を含む第1結果データを複数の前記データベースサーバから各々受信するステップと、前記実行手段が、前記第1結果データを用いて、前記タプルコードによって表される第2処理及び前記手続きコードによって表される第3処理を実行するステップと、前記第2送信手段が、前記第2処理及び前記第3処理の実行の結果得られたXMLデータの一部又は全部を含む第2結果データを前記クライアントに送信するステップとを含むことを特徴とする。
本発明によれば、分散XMLデータベースシステムにおいて、分散透過性を維持可能に分散クエリ処理を実現可能である。
以下に添付図面を参照して、この発明にかかるコーディネータサーバ及び分散処理方法の最良な実施の形態を詳細に説明する。
[実施の形態]
(1)構成
図1は、本実施の形態にかかる分散XMLデータベースシステムの構成を例示する図である。分散XMLデータベースシステムは、アプリケーションプログラムが実行されるクライアントコンピュータ(以下、クライアントという)50と、分散XMLデータベース51とを有し、これらがネットワーク52を介して接続されて構成される。分散XMLデータベース51は1台のコーディネータサーバ60と複数台のDBサーバ70A〜70Bとを有する。ネットワーク52は、例えば、LAN(Local Area Network)、イントラネット、イーサネット(登録商標)又はインターネットなどである。
コーディネータサーバ60は、クライアント50と複数のDBサーバ70A〜70Bと接続される。コーディネータサーバ60は、条件に該当するXMLデータの取得を要求するクエリ(XQuery)をクライアント50から受信し、当該クエリに応じた処理を行い、その処理結果の結果データをクライアント50に送信する。また、コーディネータサーバ60は、DBサーバ70A〜70Bのクエリに対する処理能力(XQuery解決能力)を示す処理能力情報(拡張 BNF)をDBサーバ70A〜70Bから受信し、クライアント50から受信したクエリに応じた処理を行う際に、処理能力情報を参照して、DBサーバ70A〜70Bに対して処理要求を行い、当該処理結果をDBサーバ70A〜70Bから受信し、当該処理結果を用いて処理を実行して結果データを生成してクライアント50に送信する。
DBサーバ70Aは、XMLデータを記憶するデータベース700Aを有し、コーディネータサーバ60からの処理要求に応じたXMLデータをデータベース700Aから取得し、当該XMLデータを含む結果データを処理結果としてコーディネータサーバ60に送信する。DBサーバ70Bは、XMLデータを記憶するデータベース700Bを有し、コーディネータサーバ60からの処理要求に応じたXMLデータをデータベース700Aから取得し、当該XMLデータを含む結果データを処理結果としてコーディネータサーバ60に送信する。また、DBサーバ70A〜70Bは各々、分散XMLデータベースシステムへの接続時に処理能力情報をコーディネータサーバ60に送信する。
尚、クライアント50、コーディネータサーバ60及びDBサーバ70A〜70Bは各々、装置全体の制御を行うCPU(Central Processing Unit)等の制御装置と、各種データや各種プログラムを記憶するROM(Read Only Memory)やRAM(Random Access Memory)等の記憶装置と、各種データや各種プログラムを記憶するHDD(Hard Disk Drive)やCD(Compact Disk)ドライブ装置等の外部記憶装置と、情報を表示するディスプレイ装置等の表示装置と、ユーザが各種処理要求を入力するためのキーボードやマウス等の入力装置と、ネットワーク52を介して外部のコンピュータと通信を行う通信制御装置と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。
このようなハードウェア構成において、コーディネータサーバ60が、記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について説明する。以下に、コーディネータサーバ60において実現される各種機能の実体となる各部について説明する。コーディネータサーバ60は、クエリ受信部600と、コード生成部601と、DBサーバ処理能力管理部602と、コード実行部603と、結果データ送信部604とを有する。クエリ受信部600は、クライアント50から送信されたクエリを受信する。
コード生成部601は、クエリ受信部600が受信したクエリを解析し、DBサーバ70A〜70Bの各処理能力情報を参照して各種コードを生成する。ここでコード生成部601が生成するコードは、DBサーバ70A〜70Bが各々行う処理を表すコード(クエリコード)と、タプル演算により行う処理を表すコード(タプルコード)と、手続き演算により行う処理を表すコード(手続きコード)とである。タプルコード及び手続きコードは、クエリコードによって表される処理がDBサーバ70A〜70Bにより実行された結果得られた結果データをコーディネータサーバ60が処理するためものである。尚、ここでは、計算速度について、タプル演算の方が手続き演算より速いということを前提にしている。これらの具体例については後述する。
DBサーバ処理能力管理部602は、DBサーバ70A〜70Bから各々処理能力情報を受信してこれらを管理する。具体的には、DBサーバ処理能力管理部602は、処理能力情報をRAMなどに記憶させ、当該処理能力情報へのアクセスを制御する。コード実行部603は、コード生成部601が生成したクエリコードをDBサーバ70A〜70Bに送信すると共に、当該クエリコードによって表される処理の実行結果として、XMLデータの一部又は全部を含む結果データをDBサーバ70A〜70Bから受信し、これらを用いて、コード生成部601が生成したタプルコードによって表される処理及び手続きコードによって表される処理を実行し、その実行結果として、XMLデータの一部又は全部を含む結果データを生成する。結果データ送信部604は、コード実行部603が生成した結果データをクライアント50に送信する。
ここで、図1に示したコーディネータサーバ60の有するコード生成部601とコード実行部603との機能的構成について詳細に説明する。図2は、コード生成部601とコード実行部603との機能的構成を例示する図である。コード生成部601は、構文解析部6010と、クエリコード生成部6011と、タプルコード生成部6012と、手続きコード生成部6013とを有する。コード実行部603は、クエリコード送信部6030と、結果データ受信部6031と、タプルコード実行部6032と、手続きコード実行部6033とを有する。
構文解析部6010は、クエリ受信部600がクライアント50から受信したクエリ(XQuery)を構文解析する。クエリコード生成部6011は、構文解析部6010が構文解析して得られた構文を走査して、当該構文の一部に相当し且つ処理能力情報によって示される処理能力の範囲にある第1構文部分に基づいて、DBサーバ70A〜70Bに対してクエリコードを各々生成する。タプルコード生成部6012は、構文解析部6010が構文解析して得られた構文のうち第1構文部分以外の部分でありタプル演算が可能な範囲にある第2構文部分に基づいて、前記タプルコードを生成する。手続きコード生成部6013は、構文解析部6010が構文解析して得られた構文のうち第1構文部分及び第2構文部分以外の部分である第3構文部分に基づいて、手続きコードを生成する。
タプルコードとは、取り扱うデータをタプルとみなして処理するためのプログラムである。タプルとは要素の列のことであり、リレーショナルデータベースでのタプルは行を意味する。タプルを処理するため、タプルコードは、和(UNION)、差(DIFF)、直積(CATESIANPRODUCT)、射影(PROJECT)、選択(SELECT)などのオペレータの組合せから構成される。
手続きコードとは、取り扱うデータを処理するための一連の操作手順を示したプログラムである。手続きを表現するため、条件分岐(COND)、関数呼出(FUNCCALL)、繰り返し(WHILE,LOOP)などの制御構造を用いる。関数呼出を行う場合、入力として引数を与え、出力としてリターン値が返ってくることになる。
このように、本実施の形態においては、クエリ(XQuery)に応じて行う処理について、DBサーバ70A〜70Bで行う処理と、DBサーバ70A〜70Bがクエリコードによって表される処理を実行した結果得られる結果データを用いてタプル演算が可能な範囲と、タプル演算が不可能である範囲とに分け、これらを各々クエリコードと、タプルコードと、手続きコードとにより処理させる。このような3種類のコードの組み合わせにより各々処理されることにより、分散されたサーバを用いて透過的にXQueryを処理することが可能になる。
クエリコード送信部6030は、クエリコード生成部6011が生成したクエリコードをDBサーバ70A〜70Bに送信する。結果データ受信部6031は、DBサーバ70A〜70Bから送信された結果データを受信する。タプルコード実行部6032は、結果データ受信部6031が受信した結果データを用いて、タプルコード生成部6012が生成したタプルコードによって表される処理を実行する。手続きコード実行部6033は、タプルコード実行部6032がタプルコードによって表される処理を実行した結果の結果データを用いて、手続きコード生成部6013が生成した手続きコードによって表される処理を実行し、実行結果として、XMLデータの一部又は全部を含む結果データを生成する。この結果データは、上述した結果データ送信部604によりクライアント50に送信される。
ここで、XMLデータについて説明する。XMLでは、文書構造を構成する個々のパーツは「要素」(エレメント:Element)と呼ばれる。各要素はタグ(Tag)を使って記述される。具体的には、要素の始まりを示すタグ(開始タグ)と、要素の終わりを示すタグ(終了タグ)との2つのタグでテキストデータを挟み込んで、1つの要素が表現される。なお、開始タグと終了タグとで挟み込まれたテキストデータは、開始タグと終了タグとで表された1つの要素に含まれるテキスト要素(テキストノード)となる。
図3は、3つのXMLデータのデータ構成を例示する図である。同図の例では、各XMLデータは、<paper>要素で挟み込まれた複数の部分的なXMLデータから構成されている。複数の部分的なXMLデータとは、ここでは具体的には、<title>要素で挟み込まれた文書のタイトルに関するXMLデータと、<body>要素で挟み込まれた文書の本文に関するXMLデータと、<P>要素で挟み込まれた各行ごとのXMLデータとである。このように、複数の階層構造や意味を持ったデータが1つのXMLデータに混在している。
次に、XQueryについて説明する。XQueryは、XMLデータベースへの問合せのための関数型言語であり、FLWOR(for-let-where-order by-return)構文が特徴になっている。RDBでの問合せ言語はSQLであるが、SQLは宣言的な言語であるのに対して、XQueryは関数型言語としての特徴を多く持つ。以下に、XQueryの言語仕様を手続き的な観点から説明する。
for節の構文は、「for 変数 in 式」である。for節の構文は、式を満足するものを変数に代入してループするという意味を持つ。let節の構文は、「let 変数 := 式」である。let節の構文は、式を満足するものを集約してシーケンスとして変数に代入するという意味を持つ。シーケンスとは、フラットなリストである。where節は、Fで繰り返されるループを制限するものである。where節の構文は、「where式」である。where節の構文は、式を満足するものだけループをまわし、そうでないものはループをスキップするという意味を持つ。return節は、XQueryを処理した結果をフォーマット化するものである。return節の構文は、「return 式」である。return節の構文は、変数を含む任意のXMLデータを記述することができる。変数の構文は、「$文字列」である。入れ子問合せなどで2重宣言された場合を除き、同じ文字列を持つ変数は同一のものと見なされる。XMLデータの要素間の階層条件を指定するパス演算子として、XQueryでは以下のようなものがある。
・“/”要素間は親子関係であることを示すオペレータ
・“//” 要素間は先祖子孫関係であることを示すオペレータ
・“.”任意の要素
図4は、条件に該当するXMLデータの取得を要求するクエリの例として、XQueryのデータ構成を例示する図である。同図に示されるXQueryは、「子孫のあるテキストが”XML”を含むデータベース内のpaperというデータを返す」ことを要求している。
図5は、XQueryのデータ構成が複雑な例を示す図である。同図において、「declare function 〜」では、ユーザ定義関数「myfunc」を定義しており、「$a」,「$b」という2つの変数を引数にとっている。myfunc内では条件分岐があり、「$a」の値が「0」であれば、FLWOR式を処理する。そうでなければ、変数「$b」を含んだ「<book>{$b}</book>」という値を返す。ユーザ定義関数外部では、「myfunc(0, “test”)」という関数呼出が存在する。
図6は、図4に示された構文解析部6010が、図5に示されたXQueryを構文解析した結果を例示する図である。構文解析は、Yaccなどのコンパイラ構文解析器生成系(コンパイラコンパイラ)とLexなどの字句解析プログラムである字句解析器生成系とを組み合わせることで実現される。構文解析の結果は、「progn」をルートとするツリー構造をなしている。「defun」はユーザ関数を定義する組込み関数を表している。
図7は、DBサーバ70Aから送信された処理能力情報を例示する図である。これはXQueryの構文を BNFで定義したものであり、Moduleが定義のルートを表している。FLWORに相当する BNF定義部分が、「FLWORExpr」である。「PathExpr」はパスを定義しており、PathExprを構成する BNF定義部分として、「RelativePathExpr」があり、「”/”」や「”//”」などの構文が扱えることが表されている。このように、処理能力情報は、DBサーバ70Aが処理可能なクエリの構文形式を表している。
図8は、図6に示された構文解析の結果に対して、クエリコード生成部6011が図7に示された処理能力情報を参照して生成するクエリコードと、タプルコード生成部6012が生成するタプルコードと、手続きコード生成部6013が生成する手続きコードとを例示する図である。図9は、図8に例示した各コードの関係を簡略化して示した図である。図6における点線で囲まれた部分が、図8におけるクエリコードQC1に相当する。図6における破線で囲まれた部分が、図8におけるクエリコードQC2に相当する。図6における一点鎖線で囲まれた部分が、図8におけるタプルコードTP1に相当する。図6における二点鎖線で囲まれた部分が、図8における手続きコードTK1に相当する。また、図8〜9に示されるように、クエリコードQC1〜QC2とタプルコードTP1とはコネクションN1〜N2により各々繋がっている。タプルコードTP1と手続きコードTK1とはコネクションN3により繋がっている。各コードは階層構造により表されている。最下位のコードはクエリコードQC1〜QC2であり、その上位にあるのが、タプルコードTP1であり、最上位にあるのが手続きコードTK1である。
コネクションN1〜N3は、データをバッファリングするバッファとして機能すると共に、データ授受を行うための同期待ちを発生させるイベントとして機能する。ここでは、クエリコードQC1〜QC2によって各々表される処理の実行結果である結果データをコーディネータサーバ60は受信しこれらをコネクションN1,N2に各々バッファリングする。また、コーディネータサーバ60はコネクションN1,N2に各々バッファリングした結果データに対して後述のタプルコードTP1によって表される処理を実行した実行結果である結果データをコネクションN3にバッファリングする。そして、コーディネータサーバ60はコネクションN3にバッファリングされた結果データに対して手続きコードTK1によって表される処理を実行する。即ち、クエリコードQC1〜QC2とタプルコードTP1とが別々のプロセスに割り当てられて並列実行された場合、下位のコードの実行結果を上位のコードが受け取るが、コネクションN1,N2,N3でデータ授受を行うための同期待ちが発生する。また、タプルコードと手続きコードTK1とは別々のスレッドで実行されるため、タプルコードTP1によって表される処理の完了まで手続きコードTK1の同期待ちが発生する。このように、コネクションN1〜N3は、結果データをバッファリングするとともに、Mutexなどスレッド同士が同期させる仕組みが付加されたデータ構造をなしており、例えばRAMなどの記憶装置に構成される。
クエリコードQC1は、DBサーバ70Aに送信されて実行されるものとする。クエリコードQC1は、「/book」を取り出して変数「$x」にセットし、「$x/author」を取り出して変数「$x0」にセットするという処理を実行させるためのコードである。クエリコードQ2は、DBサーバ70Bに送信されて実行されるものとする。クエリコードQC2は、「/author」を取り出して変数「$y」にセットし、「$y/name」を取り出して変数「$y0」にセットするという処理を実行させるためのコードである。
タプルコードTP1は、2つのクエリコードQC1,QC2の実行結果として得られる結果データを結合する処理を表すコードである。例えば、和(UNION)、差(DIFF)、直積(CATESIAN PRODUCT)、射影(PROJECT)、選択(SELECT)などの処理の組合せにより表される。コーディネータサーバ60は、タプルコードTP1により、具体的には、クエリコードQC1,QC2の実行結果として結果データをコネクションN1,N2で各々受け取った後、以下の処理を実行させる。受け取った結果データをDBサーバ70A〜70Bの数ぶんだけ和(UNION)をとる。更に、その和(UNION)に対して結合(JOIN)を行って、結果生成(MAP2ITEM)を行い、最終的に「$x/title」を返す。
手続きコードTK1は、ユーザ定義関数の定義(DEFUN)を行うためのコードである。具体的には、結果生成(MAP2ITEM)の結果をコネクションN3で受け取った後、ユーザ定義関数の呼出を行うという処理を実行させる。
図10は、DBサーバ70AがクエリコードQ1を実行した結果の結果データを例示する図である。結果データKD1は、クエリコードQC1の一部である「for $x in /book」の実行結果である。「$x」に対する値の候補がタプルで表現されている。結果データKD2は、クエリコードQC1の実行結果である。「$x」と「$x0」に対する値の候補がタプルで表現されている。
図11は、DBサーバ70BがクエリコードQ2を実行した結果の結果データを例示する図である。結果データKD3は、クエリコードQC2の一部「for $y in /author」の実行結果である。「$y」に対する値の候補がタプルで表現されている。結果データKD4は、クエリコードQC2の実行結果である。「$y」と「$y0」とに対する値の候補がタプルで表現されている。
図12は、コーディネータサーバ60がタプルコードを実行した結果の結果データを例示する図である。結果データKD5は、結果データKD2と結果データKD3とについて各々、DBサーバ70A〜70Bの数ぶんだけ和(UNION)をとり、それに対して結合(JOIN)を行った結果である。結果データKD6は、結果生成(MAP2ITEM)を行って、最終的に「$x/title」を返した結果であり、この結果として、結果データKD7がコネクションN3を介して手続きコードによって表される処理の実行に用いられる。結果データKD8は、結果データKD7を用いて、手続きコードが実行された結果であり、ユーザ定義関数の定義(DEFUN)を行い、最後にユーザ定義関数の呼出を行った結果である。ここでは、ユーザ定義関数は「myfunc(0, “test”)」であるので、条件分岐が成立し、先のFLWOR式の結果が得られることになる。
(2)動作
次に、本実施の形態にかかる分散XMLデータベースシステムの動作について説明する。図13は、分散XMLデータベースシステムが行う検索処理の手順を示すシーケンスチャートである。まず、DBサーバ70A〜70Bは各々、分散XMLデータベースシステムへの接続時に、自身の処理能力情報をコーディネータサーバ60に送信する(ステップS1〜2)。コーディネータサーバ60はこれらを受信すると、これらを記憶装置に記憶する(ステップS3)。そして、クライアント50が、条件に該当するデータの検索を要求するクエリをコーディネータサーバ60に送信し(ステップS4)、コーディネータサーバ60が当該クエリを受信すると(ステップS5)、これを構文解析し、DBサーバ70A〜70Bから送信された処理能力情報を参照してクエリコードとタプルコードと手続きコードとを生成する(ステップS6)。そして、コーディネータサーバ60は、クエリコードをDBサーバ70A〜70Bに各々送信する(ステップS7)。DBサーバ70A〜70Bは各々、クエリコードを受信すると、当該クエリコードによって表される処理を実行して、その実行結果として、XMLデータの一部又は全部を含む結果データをコーディネータサーバ60に送信する(ステップS8〜S9)。コーディネータサーバ60は、DBサーバ70A〜70Bから各々結果データを受信すると(ステップS10)、これを用いてタプルコードによって表される処理を実行する。そして、コーディネータサーバ60は、タプルコードによって表される処理の実行の結果得られた結果データを用いて手続きコードによって表される処理を実行する(ステップS11)。このとき、コーディネータサーバ60は、タプルコードによって表される処理及び手続きコードによって表される処理の実行を各々並列して行う場合、一部データ授受の同期をとりながら行う。そして、コーディネータサーバ60は、手続きコードによって表される処理の実行結果として、XMLデータの一部又は全部を含む結果データをクライアント50に送信する(ステップS12)。そして、クライアント50は、ステップS1で送信したクエリの結果である結果データを受信する(ステップS13)。
次に、ステップS6でコーディネータサーバ60が各種コードを生成するコード生成処理の手順について図14を参照しながら説明する。コーディネータサーバ60のコード生成部601は、クライアント50から受信したクエリを構文解析した後、解析結果の構文ツリー(「DB ROOT」(つまり”/”の部分))のノードを走査し、for節に対応するノードを選び出して、走査キューに入れる(ステップS30)。走査キューに入れた全ノードについて走査終了していない場合には(ステップS31:NO)、次いで、コード生成部601は、走査キューのノードについて、評価可能な部分ツリー(構文部分)を計算する。ここでは、コード生成部601は、for節のノードで第1ノードが「”/”」で始まるか否かを判断する(ステップS32)。そして、当該判断結果が肯定的である場合(ステップS33:YES)、コード生成部601は、第1子ノード以下の部分ツリーについて、記憶装置に記憶された処理能力情報を参照して、DBサーバ70A〜70Bの処理能力を超えているか否か、即ち、この部分ツリーをDBサーバ70A〜70Bが処理可能であるか否かを判断する(ステップS34)。
例えば、図6に示される「”/”−”book”」という部分ツリーについては、図7に示された処理能力情報を参照すると”//”は処理可能であるから、”/”以下のこの部分ツリーをDBサーバ70A〜70Bが処理可能であると判断することができる。この場合(ステップS35:YES)、コード生成部601は、for節の第2子ノードは必ず変数であるので、for節の第3子ノード以下の部分ツリーについて、DBサーバ70A〜70Bの処理能力を超えていない変数を参照している最大部分ツリーを選び出す(ステップS36)。例えば、for節の第3子ノード以下では、変数「$x」に対して、図7に示された処理能力情報を参照すると”//”は処理可能であるから、「$x//author」という部分ツリーは処理可能である。このようにコード生成部601はボトムアップに部分ツリーを評価する。そして、コード生成部601は、得られた部分ツリーの集合から構成ルールに従って、クエリコードを生成する(ステップS37)。構成ルールとは、部分ツリーの集合からコードを生成するための簡単なルールである。例えば、「for」と「cond」とで結ばれていれば、「for let」の構文に変形するなどのルールである。このようにしてコード生成部601はクエリコードを生成する。この結果、DBサーバ70Aに対しては、図8に例示されたクエリコードQC1が求まる。DBサーバ70Bに対しては、図8に例示されたクエリコードQC2が求まる。
そして、コード生成部601は、構文ツリーの全てについて走査を終えると(ステップS31:YES)、クエリコードが得られたか否かを判断する(ステップS38)。ここでは、クエリコードが得られたとすると、次いで、コード生成部601は、既に得られたクエリコードに対応する構文ツリーのノードをチェックし、構成ルールに従って、クエリコード同士を結合するタプルコードを生成する(ステップS39)。例えば、図6においては、クエリコードQ2から「$x//author」と「$y//name」とが求まるので、「cond」が評価可能である。そこで、コード生成部601は、各クエリコードに対して、和(UNION)を入れたあとで、結合(JOIN)を行う。「cond」の結果を結果生成(MAP2ITEM)に変換する。このようにボトムアップに評価可能な部分をコード生成部601は計算する。条件分岐(IFTHENELSE)は、タプル処理できないので、ここで停止する。次いで、コード生成部601は、クエリコードやタプルコードとなっていない構文ツリー上のノードをチェックし、これらを全て手続きコードとして生成する(ステップS40)。構文解析結果は、そのまま手続きコードとして実行できるので、最終的には図8に例示されるような各種コードが生成される。
尚、上述の説明においては、各種コードの生成時に図7に例示された処理能力情報を参照する場合について説明した。ここで、処理能力情報の他の例として、図15に示される処理能力情報を参照した場合に生成される各種コードについて説明する。図15においては、PathExprを構成する BNF定義部分である「RelativePathExpr」において、“//”の構文が扱えないことが表されている。
このような処理能力情報を参照して、コーディネータサーバ60のコード生成部601が図14のステップS36の処理を行った場合、”//”についてDB70A〜70Bは処理不可能であるから、「$x//author」をクエリコードとして生成せず、タプルコードとして生成する。この結果、図16に例示されるような各種コードが生成される。上述の図8に例示された各種コードと異なる点は、「$x//author」と「$y//name」をタプルコードで生成するという点である。
以上のように、クエリコードと、タプルコードと、手続きコードとの組み合わせにより各々処理されることにより、分散された各種サーバを用いて透過的にXQueryを処理することが可能になる。従って、分散XMLデータベースシステムにおいて、分散透過性を維持可能に分散クエリ処理を実現可能になる。
また、DBサーバ70A〜70Bの各処理能力情報を参照して各種コードを生成し、各種コードによって表される処理が各々実行されることにより、完全な分散XQuery処理を実現可能になる。即ち、本実施形態における構成によって、XQueryをフルサポートしていなかったりサポート率もまちまちであったりする各種のXMLデータベースを用いて、XQueryフルサポート機能を備えた分散XMLデータベースシステムを構成することができる。
従来の分散XMLデータベースでは、例えば、以下のような前提があった。
・データベースサーバは完全なXQuery仕様を解くことができる。
・コーディネータサーバは、データベースサーバのXQuery解決能力に疑問を持たない。
しかし、実際には、分散XMLデータベースを構成するデータベースは、完全なXQuery仕様を解くことができるものばかりであるとは限らない。このため、このような分散XMLデータベースが分散XQuery処理を行った場合、完全な処理結果が得られないという問題が生じる恐れがあった。上述したように、本実施の形態の構成によれば、このような問題を解決することが可能になる。
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
<変形例1>
上述した実施の形態においては、コーディネータサーバ60がDBサーバ70A〜70Bの処理能力情報を参照して、クライアント50から受信したクエリから各種コードを生成するように構成した。しかし、コーディネータサーバ60が処理能力情報を参照せずに、クエリから各種コードを生成するようにしても良い。図17は、本変形例に係る分散XMLデータベースシステムの構成を例示する図である。同図に示されるように、上述の実施の形態と異なる点は、コーディネータサーバ60がDBサーバ処理能力管理部602を有さない点である。このような構成においては、DBサーバ70A〜70Bは、自身の処理能力情報をコーディネータサーバ60に送信しない。そして、このような分散XMLデータベースシステムにおける動作は、例えば以下の通りである。図13において、ステップS1〜S3の処理が行われず、ステップS6では、コーディネータサーバ60は、処理能力情報を参照せずに、クライアント50から受信したクエリを構文解析し、クエリコードとタプルコードと手続きコードとを生成する。
このような構成によっても、DBサーバ70A〜70Bが各々行う処理を表すクエリコードと、コーディネータサーバ60が行う処理を表すコードとして、タプルコードと、手続きコードとの組み合わせにより各々処理されることになるため、分散されたサーバを用いて透過的にXQueryを処理することが可能になる。
また、上述の実施の形態においては、XMLデータの取得を要求するクエリとして、XQueryを用いたが、本実施の形態においてはこれに限らない。
また、コーディネータサーバ60は、クエリコードの実行結果を用いて行う処理を表すコードとして、タプルコードと、手続きコードとを生成するようにしたが、本実施の形態においてはこれに限らない。
<変形例2>
上述の実施の形態においては、DBサーバ70A〜70Bが分散XMLデータベースサーバシステムへの接続時に、コーディネータサーバ60は、処理能力情報を取得するようにした。しかし、これに限らず、コーディネータサーバ60は、記憶装置や外部記憶装置に処理能力情報を予め記憶しておき、各種コードの生成時にはこれを用いるようにしても良い。
<変形例3>
上述した実施の形態において、コーディネータサーバ60やDBサーバ70A〜70Bで実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良い。
一実施の形態にかかる分散XMLデータベースシステムの構成を例示する図である。 コード生成部601とコード実行部603との機能的構成を例示する図である。 3つのXMLデータのデータ構成を例示する図である。 条件に該当するXMLデータの取得を要求するクエリの例として、XQueryのデータ構成を例示する図である。 XQueryのデータ構成が複雑な例を示す図である。 図4に示された構文解析部6010が、図5に示されたXQueryを構文解析した結果を例示する図である。 DBサーバ70Aから送信された処理能力情報を例示する図である。 図6に示された構文解析の結果に対して、クエリコード生成部6011が図7に示された処理能力情報を参照して生成するクエリコードと、タプルコード生成部6012が生成するタプルコードと、手続きコード生成部6013が生成する手続きコードとを例示する図である。 図8に例示した各コードの関係を簡略化して示した図である。 DBサーバ70AがクエリコードQ1を実行した結果の結果データを例示する図である。 DBサーバ70BがクエリコードQ2を実行した結果の結果データを例示する図である。 コーディネータサーバ60がタプルコードを実行した結果の結果データを例示する図である。 分散XMLデータベースシステムが行う検索処理の手順を示すシーケンスチャートである。 ステップS6でコーディネータサーバ60が各種コードを生成するコード生成処理の手順を示すフローチャートである。 処理能力情報の他の例を示す図である。 図15に例示される処理能力情報を参照して生成される各種コードを例示する図である。 本実施の形態の一変形例に係る分散XMLデータベースシステムの構成を例示する図である。
符号の説明
50 クライアント
51 分散XMLデータベース
52 ネットワーク
60 コーディネータサーバ
70A DBサーバ
70B DBサーバ
600 クエリ受信部(第1受信手段)
601 コード生成部(生成手段)
602 サーバ処理能力管理部(取得手段)
603 コード実行部(実行手段、第2受信手段)
604 結果データ送信部(第2送信手段)
700A データベース
700B データベース
6010 構文解析部(解析手段)
6011 クエリコード生成部
6012 タプルコード生成部
6013 手続きコード生成部
6030 クエリコード送信部
6031 結果データ受信部(第2受信手段)
6032 タプルコード実行部
6033 手続きコード実行部

Claims (12)

  1. XMLデータを記憶するデータベースを各々有する複数の分散されたデータベースサーバに接続されたコーディネータサーバであって、
    条件に該当するXMLデータの取得を要求するクエリをクライアントから受信する第1受信手段と、
    前記データベースサーバのクエリに対する処理能力を示す処理能力情報を複数の前記データベースサーバから各々取得する取得手段と、
    受信された前記クエリに対して、前記処理能力情報を参照して、複数の前記データベースサーバが各々行う第1処理を表すクエリコードと、当該クエリコードの実行結果を用いて行う第2処理を表すコードとを生成する生成手段と、
    複数の前記データベースサーバに各々対応する前記クエリコードを送信する第1送信手段と、
    前記第1処理が実行された結果得られたXMLデータの一部又は全部を含む第1結果データを複数の前記データベースサーバから各々受信する第2受信手段と、
    前記第1結果データを用いて、前記コードによって表される第2処理を実行する実行手段と、
    前記第2処理の実行の結果得られたXMLデータの一部又は全部を含む第2結果データを前記クライアントに送信する第2送信手段とを備える
    ことを特徴とするコーディネータサーバ。
  2. 前記生成手段は、
    受信された前記クエリを構文解析する解析手段と、
    構文解析された結果得られた構文を走査して、当該構文の一部に相当し且つ前記処理能力情報によって示される処理能力の範囲にある第1構文部分に基づいて、当該処理能力情報に対応するデータベースサーバが行う処理を表すクエリコードを複数の前記データベースサーバに対して各々生成する第1コード生成手段と、
    前記構文のうち第1構文部分以外の部分である第2構文部分に基づいて、前記コードを生成する第2コード生成手段とを有する
    ことを特徴とする請求項1に記載のコーディネータサーバ。
  3. 前記処理能力情報は、前記データベースサーバが処理可能なクエリの構文形式を示すものであり、
    前記第1コード生成手段は、構文解析された結果得られた構文を走査して、当該構文のうち、前記処理能力情報によって示される構文形式に基づいて複数の前記データベースサーバが処理可能な第2構文部分を判断し、当該第1構文部分に基づいて、前記クエリコードを複数の前記データベースサーバに対して各々生成する
    ことを特徴とする請求項2に記載のコーディネータサーバ。
  4. 前記第1受信手段は、XQueryにより記述されたクエリをクライアントから受信する
    ことを特徴とする請求項1乃至3のいずれか一項に記載のコーディネータサーバ。
  5. XMLデータを記憶するデータベースを各々有する複数の分散されたデータベースサーバに接続されたコーディネータサーバであって、
    条件に該当するXMLデータの取得を要求するクエリをクライアントから受信する第1受信手段と、
    受信された前記クエリに対して、複数の前記データベースサーバが各々行う第1処理を表すクエリコードを生成し、当該クエリコードの実行結果を用いて行う処理を表すコードとして、タプル演算による第2処理を表すタプルコード及び手続き演算による第3処理を表す手続きコードを生成する生成手段と、
    複数の前記データベースサーバに各々対応する前記クエリコードを送信する第1送信手段と、
    前記第1処理が実行された結果得られたXMLデータの一部又は全部を含む第1結果データを複数の前記データベースサーバから各々受信する第2受信手段と、
    前記第1結果データを用いて、前記タプルコードによって表される第2処理及び前記手続きコードによって表される第3処理を実行する実行手段と、
    前記第2処理及び前記第3処理の実行の結果得られたXMLデータの一部又は全部を含む第2結果データを前記クライアントに送信する第2送信手段とを備える
    ことを特徴とするコーディネータサーバ。
  6. 前記データベースサーバのクエリに対する処理能力を示す処理能力情報を複数の前記データベースサーバから取得する取得手段を更に備え、
    前記生成手段は、受信された前記クエリに対して、前記処理能力情報を参照して、複数の前記データベースサーバが各々行う処理を表すクエリコードと、前記タプルコード及び前記手続きコードとを生成する
    ことを特徴とする請求項5に記載のコーディネータサーバ。
  7. 前記生成手段は、
    受信された前記クエリを構文解析する解析手段と、
    構文解析された結果得られた構文を走査して、当該構文の一部に相当し且つ前記処理能力情報によって示される処理能力の範囲にある第1構文部分に基づいて、当該処理能力情報に対応するデータベースサーバが行う第1処理を表すクエリコードを複数の前記データベースサーバに対して各々生成する第1コード生成手段と、
    前記構文のうち第1構文部分以外の部分でありタプル演算が可能な範囲にある第2構文部分に基づいて、前記タプルコードを生成する第2コード生成手段と、
    前記構文のうち第1構文部分及び前記第2構文部分以外の部分である第3構文部分に基づいて、前記手続きコードを生成する第3コード生成手段とを有する
    ことを特徴とする請求項6に記載のコーディネータサーバ。
  8. 前記処理能力情報は、前記データベースサーバが処理可能なクエリの構文形式を示すものであり、
    前記第1コード生成手段は、構文解析された結果得られた構文を走査して、当該構文のうち、前記処理能力情報によって示される構文形式に基づいて複数の前記データベースサーバが処理可能な第2構文部分を判断し、当該第1構文部分に基づいて、前記クエリコードを複数の前記データベースサーバに対して各々生成する
    ことを特徴とする請求項7に記載のコーディネータサーバ。
  9. 前記実行手段は、
    前記第1結果データを用いて、前記タプルコードによって表される第2処理を実行するタプル実行手段と、
    前記第2処理の実行の結果として得られたXMLデータの一部又は全部を含む第3結果データを用いて、前記手続きコードによって表される第3処理を実行する手続き実行手段とを有し、
    前記第2送信手段は、
    前記第3処理の実行の結果得られたXMLデータの一部又は全部を含む第2結果データを前記クライアントに送信する
    ことを特徴とする請求項5乃至8のいずれか一項に記載のコーディネータサーバ。
  10. 前記第1受信手段は、XQueryにより記述されたクエリをクライアントから受信する
    ことを特徴とする請求項5乃至9のいずれか一項に記載のコーディネータサーバ。
  11. 第1受信手段と、取得手段と、生成手段と、第1送信手段と、第2受信手段と、実行手段と、第2送信手段とを有し、XMLデータを記憶するデータベースを各々有する複数の分散されたデータベースサーバに接続されたコーディネータサーバで実現される分散処理方法であって、
    前記第1受信手段が、条件に該当するXMLデータの取得を要求するクエリをクライアントから受信するステップと、
    前記取得手段が、前記データベースサーバのクエリに対する処理能力を示す処理能力情報を複数の前記データベースサーバから各々取得するステップと、
    前記生成手段が、受信された前記クエリに対して、前記処理能力情報を参照して、複数の前記データベースサーバが各々行う第1処理を表すクエリコードと、当該クエリコードの実行結果を用いて行う第2処理を表すコードとを生成するステップと、
    前記第1送信手段が、複数の前記データベースサーバに各々対応する前記クエリコードを送信するステップと、
    前記第2受信手段が、前記第1処理が実行された結果得られたXMLデータの一部又は全部を含む第1結果データを複数の前記データベースサーバから各々受信するステップと、
    前記実行手段が、前記第1結果データを用いて、前記コードによって表される第2処理を実行するステップと、
    前記第2送信手段が、前記第2処理の実行の結果得られたXMLデータの一部又は全部を含む第2結果データを前記クライアントに送信するステップとを含む
    ことを特徴とする分散処理方法。
  12. 第1受信手段と、生成手段と、第1送信手段と、第2受信手段と、実行手段と、第2送信手段とを有し、XMLデータを記憶するデータベースを各々有する複数の分散されたデータベースサーバに接続されたコーディネータサーバで実現される分散処理方法であって、
    前記第1受信手段が、条件に該当するXMLデータの取得を要求するクエリをクライアントから受信するステップと、
    前記生成手段が、受信された前記クエリに対して、複数の前記データベースサーバが各々行う第1処理を表すクエリコードを生成し、当該クエリコードの実行結果を用いて行う処理を表すコードとして、タプル演算による第2処理を表すタプルコード及び手続き演算による第3処理を表す手続きコードを生成するステップと、
    前記第1送信手段が、複数の前記データベースサーバに各々対応する前記クエリコードを送信するステップと、
    前記第2受信手段が、前記第1処理が実行された結果得られたXMLデータの一部又は全部を含む第1結果データを複数の前記データベースサーバから各々受信するステップと、
    前記実行手段が、前記第1結果データを用いて、前記タプルコードによって表される第2処理及び前記手続きコードによって表される第3処理を実行するステップと、
    前記第2送信手段が、前記第2処理及び前記第3処理の実行の結果得られたXMLデータの一部又は全部を含む第2結果データを前記クライアントに送信するステップとを含む
    ことを特徴とする分散処理方法。
JP2007278604A 2007-10-26 2007-10-26 コーディネータサーバ及び分散処理方法 Active JP5161535B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007278604A JP5161535B2 (ja) 2007-10-26 2007-10-26 コーディネータサーバ及び分散処理方法
US12/212,749 US8051070B2 (en) 2007-10-26 2008-09-18 Device, method, and computer-readable recording medium for notifying content scene appearance

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007278604A JP5161535B2 (ja) 2007-10-26 2007-10-26 コーディネータサーバ及び分散処理方法

Publications (2)

Publication Number Publication Date
JP2009110052A true JP2009110052A (ja) 2009-05-21
JP5161535B2 JP5161535B2 (ja) 2013-03-13

Family

ID=40643058

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007278604A Active JP5161535B2 (ja) 2007-10-26 2007-10-26 コーディネータサーバ及び分散処理方法

Country Status (2)

Country Link
US (1) US8051070B2 (ja)
JP (1) JP5161535B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018143441A1 (ja) * 2017-02-03 2018-08-09 株式会社日立製作所 情報処理システム及び情報処理方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9886483B1 (en) * 2010-04-29 2018-02-06 Quest Software Inc. System for providing structured query language access to non-relational data stores
US20110289070A1 (en) * 2010-05-20 2011-11-24 Lockheed Martin Corporation Dynamic resource orchestration system for data retrieval and output generation
JP5172931B2 (ja) * 2010-10-25 2013-03-27 株式会社東芝 検索装置、検索方法および検索プログラム
JP5100820B2 (ja) * 2010-11-25 2012-12-19 株式会社東芝 問合せ式変換装置、方法およびプログラム
US8949221B1 (en) * 2011-12-30 2015-02-03 Emc Corporation System and method of distributed query execution
JP5620937B2 (ja) * 2012-03-29 2014-11-05 富士フイルム株式会社 制御システムおよび被制御装置ならびにそれらの動作制御方法
US10558630B2 (en) 2014-08-08 2020-02-11 International Business Machines Corporation Enhancing textual searches with executables
US10157234B1 (en) 2015-02-27 2018-12-18 Quest Software Inc. Systems and methods for transforming datasets
US10296620B2 (en) 2015-09-30 2019-05-21 International Business Machines Corporation Smart tuple stream alteration
US10558670B2 (en) 2015-09-30 2020-02-11 International Business Machines Corporation Smart tuple condition-based operation performance
US10657135B2 (en) * 2015-09-30 2020-05-19 International Business Machines Corporation Smart tuple resource estimation
US10733209B2 (en) 2015-09-30 2020-08-04 International Business Machines Corporation Smart tuple dynamic grouping of tuples

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004102631A (ja) * 2002-09-09 2004-04-02 Hitachi Software Eng Co Ltd データベース検索プログラム、データベース検索方法及びデータベース検索装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7051042B2 (en) * 2003-05-01 2006-05-23 Oracle International Corporation Techniques for transferring a serialized image of XML data
US7873684B2 (en) * 2003-08-14 2011-01-18 Oracle International Corporation Automatic and dynamic provisioning of databases
US7668806B2 (en) * 2004-08-05 2010-02-23 Oracle International Corporation Processing queries against one or more markup language sources

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004102631A (ja) * 2002-09-09 2004-04-02 Hitachi Software Eng Co Ltd データベース検索プログラム、データベース検索方法及びデータベース検索装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSNG200600924060; 城戸 健太郎: 'PCクラスタを用いたXMLデータ並列処理方式の評価' 情報処理学会研究報告 Vol.2006 No.78 第2006巻 第78号, 20060714, 483〜490, 社団法人情報処理学会 *
CSNG200701126036; 油井 誠: 'Remote Proxyを利用した並列分散XML問合せ処理手法の提案' 情報処理学会研究報告(2007-DBS-143) 第2007巻,第65号, 20070702, p.217-222, 社団法人情報処理学会 *
JPN6011005772; 城戸 健太郎: 'PCクラスタを用いたXMLデータ並列処理方式の評価' 情報処理学会研究報告 Vol.2006 No.78 第2006巻 第78号, 20060714, 483〜490, 社団法人情報処理学会 *
JPN6012039935; 油井 誠: 'Remote Proxyを利用した並列分散XML問合せ処理手法の提案' 情報処理学会研究報告(2007-DBS-143) 第2007巻,第65号, 20070702, p.217-222, 社団法人情報処理学会 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018143441A1 (ja) * 2017-02-03 2018-08-09 株式会社日立製作所 情報処理システム及び情報処理方法
JPWO2018143441A1 (ja) * 2017-02-03 2019-06-27 株式会社日立製作所 情報処理システム及び情報処理方法
CN110291503A (zh) * 2017-02-03 2019-09-27 株式会社日立制作所 信息处理系统和信息处理方法
CN110291503B (zh) * 2017-02-03 2023-04-25 株式会社日立制作所 信息处理系统和信息处理方法

Also Published As

Publication number Publication date
JP5161535B2 (ja) 2013-03-13
US8051070B2 (en) 2011-11-01
US20090132544A1 (en) 2009-05-21

Similar Documents

Publication Publication Date Title
JP5161535B2 (ja) コーディネータサーバ及び分散処理方法
Wylot et al. RDF data storage and query processing schemes: A survey
US7577637B2 (en) Communication optimization for parallel execution of user-defined table functions
Fan et al. The Case Against Specialized Graph Analytics Engines.
US6594651B2 (en) Method and apparatus for parallel execution of SQL-from within user defined functions
US7103590B1 (en) Method and system for pipelined database table functions
Borkar et al. Hyracks: A flexible and extensible foundation for data-intensive computing
US6507834B1 (en) Method and apparatus for parallel execution of SQL from stored procedures
US7475056B2 (en) Query processing in a parallel single cursor model on multi-instance configurations, using hints
US7685095B2 (en) Executing a parallel single cursor model
US9146957B2 (en) Method and system for generating optimal membership-check queries
US20170011104A1 (en) Optimizing incremental loading of warehouse data
EP1111516A2 (en) Method and apparatus for parallel execution of trigger actions
US7958160B2 (en) Executing filter subqueries using a parallel single cursor model
Chawla et al. Storage, partitioning, indexing and retrieval in Big RDF frameworks: A survey
Kranas et al. Parallel query processing in a polystore
JP4796108B2 (ja) 構造化文書検索装置、方法及びプログラム
Özsu et al. NoSQL, NewSQL, and polystores
Janke et al. Storing and querying semantic data in the cloud
Pal SQL on Big Data: Technology, Architecture, and Innovation
Dunka et al. Simplifying Web Application Development Using-Mean Stack Technologies
Huang et al. A SPARQL query processing system using map-phase-multi join for big data in clouds
Yang et al. A Data Stream View of Scientifi c Workfl ow
Zhang et al. Projective Distribution of XQuery with Updates
Gupta et al. Data Processing Strategies in Data Lakes

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100901

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120807

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121005

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121120

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121214

R151 Written notification of patent or utility model registration

Ref document number: 5161535

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151221

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313114

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350