JP5060345B2 - データベース処理装置、情報処理方法及びプログラム - Google Patents

データベース処理装置、情報処理方法及びプログラム Download PDF

Info

Publication number
JP5060345B2
JP5060345B2 JP2008050822A JP2008050822A JP5060345B2 JP 5060345 B2 JP5060345 B2 JP 5060345B2 JP 2008050822 A JP2008050822 A JP 2008050822A JP 2008050822 A JP2008050822 A JP 2008050822A JP 5060345 B2 JP5060345 B2 JP 5060345B2
Authority
JP
Japan
Prior art keywords
processing
result
plan
execution
processing instruction
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.)
Active
Application number
JP2008050822A
Other languages
English (en)
Other versions
JP2009211154A (ja
Inventor
雅一 服部
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 JP2008050822A priority Critical patent/JP5060345B2/ja
Priority to US12/360,271 priority patent/US8117186B2/en
Publication of JP2009211154A publication Critical patent/JP2009211154A/ja
Application granted granted Critical
Publication of JP5060345B2 publication Critical patent/JP5060345B2/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/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/8365Query optimisation
    • 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/8373Query execution

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、階層構造を有する構造化文書を記憶するデータベースが複数に分散された分散データベースにおいて、構造化文書に対して処理を行うデータベース処理装置、情報処理方法及びプログラムに関するものである。
近年、XML等の構造化文書の普及に伴い、構造化文書を記憶するデータベース(例えばXMLデータベース)も利用される傾向になる。そして、このようなデータベースに対して問い合わせを行うための言語として、XQuery等が提案されている。XQueryは、XMLデータベースに対する問い合わせのための関数型言語であり、FLWR構文が特徴となっている。このFLWR構文は、for節、let節、where節、return節からなる構文をいう。このXQueryを用いた処理は、例えば非特許文献1に記載されている。
そして、XQueryのFLWR構文において、for節はシーケンス内の各項目を変数にバインドする。これに対して、let節はシーケンスをまるごと変数にバインドする。このfor節とlet節を組み合わせることで、XMLに相応しい高度な問い合わせが行える(なお、XML再構成や集計はlet節無しでは表現できない)。
XQueryの処理結果はシーケンスであり、入れ子問い合わせもlet節を使って呼び出せるため、これを入れ子節と呼ぶこともできる。このようにlet節はXQueryの根幹をなす構文であるが、実現方式については十分な検討がなされてこなかった。実際、let節をfor節と同様に扱ってしまうと、“シーケンス要素の欠損”や“結果件数の不足”などの問題が発生して処理が難しい。論文でもFWRのサンプルを使った処理方式に言及されているのみで、let節についての詳細な処理方式は不明である。
また、現在のデータベース製品では、let節は関数系言語の処理系に準じた実装をしていることが多い。関数系言語の処理系に準じた実装では、上述したような入れ子構造で問い合わせを行った場合、入れ子構造のうち外側のXQueryと、内側のXQueryとの間に入出力関係があるとみなされる。このため、外側のXQueryの処理が終了した後に、当該処理結果を、それぞれ変数として内側のXQueryに渡して処理が行われることになる。
A Complete and Efficient Algebraic Compi
XQueryの高度な問い合わせを行うには、let節、あるいは入れ子節は不可欠である。一方、数少ない処理方式は、関数型言語の処理系に準じたものである。この処理方式によると、以下のような問題が発生する。特に2重以上のfor節と入れ子節とを含むXQueryでは計算量が増大するという問題である。このようなXQueryでは、外側の多重ループを処理してから内側を処理することになる。つまり、多重ループの回数だけ入れ子処理を呼び出す。入れ子処理の順序制約が発生している。実際の処理システムでは、XQueryやプログラムの書き換えなどで対処している。
また、XMLデータが複数のデータベースサーバに分散されコーディネータサーバがこれらと接続される分散XMLデータベースにおいては、新たな問題も発生する。上位for節でデータベースサーバから全てのXMLデータを取り出さないと、下位の入れ子節を処理できないという問題である。そして、データベースサーバにある該当のXML要素以下のデータを全てコーディネータサーバが受信しなければならない。データベースにあるXML要素の件数が多ければ、あるいはサイズが大きければ、その転送コストは膨大なものになる。
このように、分散XMLデータベースでは、入れ子構造で問い合わせを行った場合、処理が複雑化して、転送するデータの量及び計算量が増大して、性能が劇的に劣化する恐れがある。
本発明は、上記に鑑みてなされたものであって、構造化文書を記憶するデータベースが複数に分散された分散データベースにおいて、構造化文書に対して処理を行う際に、転送するデータの量及び計算量を抑制可能なデータベース処理装置、情報処理方法及びプログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、少なくとも1つの要素を含む構造化文書を記憶するデータベースを各々有する複数の分散されたデータベースサーバに接続されたデータベース処理装置であって、前記構造化文書に関する処理を要求する処理要求を受信する要求受信手段と、前記処理要求によって要求された前記処理を行うために、実行単位毎の処理命令を含む処理プランを生成するプラン生成手段と、前記処理プランに含まれる各前記処理命令を実行することにより、前記処理プランを実行するプラン実行手段と、各前記処理命令の実行結果をレコード単位で記憶する記憶手段と、前記記憶手段に記憶された前記実行結果を用いて、前記処理要求に応じた第1構造化文書を生成する結果生成手段と、当該第1構造化文書を送信する結果送信手段とを備え、前記プラン生成手段は、前記処理要求に基づいて、処理対象の構造化文書に含まれる全部又は一部の要素を取得する少なくとも1つの第1処理命令を生成する第1生成手段と、前記第1処理命令に従って取得される前記要素を含む結果データを用いて自然結合を行う第2処理命令を生成する第2生成手段と、前記結果データを用いて直積結合を行う第3処理命令を生成する第3生成手段と、前記第2処理命令を実行して行われる自然結合の実行結果と、前記第3処理命令を実行して行われる直積結合の実行結果とを用いて、各実行結果間の対応関係を更新する第4処理命令を生成する第4生成手段と、前記第1処理命令乃至第4処理命令を結合することにより、前記処理プランを生成する結合手段と、前記処理プランに含まれる前記第1処理命令について、前記全部又は一部の要素の取得を要求する少なくとも1つの取得要求を複数の前記データベースサーバに送信し、前記取得要求に従い取得された前記要素を含む結果データを複数の前記データベースサーバから各々受信する第5処理命令に変換する変換手段とを有することを特徴とする。
また、本発明は、要求受信手段と、プラン生成手段と、プラン実行手段と、各前記処理命令の実行結果をレコード単位で記憶する記憶手段と、結果生成手段と、結果送信手段とを備え、少なくとも1つの要素を含む構造化文書を記憶するデータベースを各々有する複数の分散されたデータベースサーバに接続されたデータベース処理装置において実現される情報処理方法であって、前記要求受信手段が、前記構造化文書に関する処理を要求する処理要求を受信する要求受信ステップと、前記プラン生成手段が、前記処理要求によって要求された前記処理を行うために、実行単位毎の処理命令を含む処理プランを生成するプラン生成ステップと、前記プラン実行手段が、前記処理プランに含まれる各前記処理命令を実行することにより、前記処理プランを実行するプラン実行ステップと、前記結果生成手段が、前記記憶手段に記憶された前記実行結果を用いて、前記処理要求に応じた第1構造化文書を生成する結果生成ステップと、前記結果送信手段が、当該第1構造化文書を送信する結果送信ステップとを含み、前記プラン生成手段が、前記処理要求に基づいて、処理対象の構造化文書に含まれる全部又は一部の要素を取得する少なくとも1つの第1処理命令を生成する第1生成ステップと、前記第1処理命令に従って取得される前記要素を含む結果データを用いて自然結合を行う第2処理命令を生成する第2生成ステップと、前記結果データを用いて直積結合を行う第3処理命令を生成する第3生成ステップと、前記第2処理命令を実行して行われる自然結合の実行結果と、前記第3処理命令を実行して行われる直積結合の実行結果とを用いて、各実行結果間の対応関係を更新する第4処理命令を生成する第4生成ステップと、前記第1処理命令乃至第4処理命令を結合することにより、前記処理プランを生成する結合ステップと、前記処理プランに含まれる前記第1処理命令について、前記全部又は一部の要素の取得を要求する少なくとも1つの取得要求を複数の前記データベースサーバに送信し、前記取得要求に従い取得された前記要素を含む結果データを複数の前記データベースサーバから各々受信する第5処理命令に変換する変換ステップとを含むことを特徴とする。
また、本発明は、情報処理プログラムであって、上記の方法をコンピュータで実行させることを特徴とする。
本発明によれば、構造化文書を記憶するデータベースが複数に分散された分散データベースにおいて、構造化文書に対して処理を行う際に、転送するデータの量及び計算量を抑制することができる。
以下に添付図面を参照して、この発明にかかるデータベース処理装置、情報処理方法及びプログラムの最良な実施の形態を詳細に説明する。
[第1の実施の形態]
(1)構成
図1は、本実施の形態にかかる分散XMLデータベースシステムの構成を例示する図である。分散XMLデータベースシステムは、アプリケーションプログラムが実行されるクライアントコンピュータ(以下、クライアントという)50と、分散XMLデータベース51とを有し、これらがネットワーク52を介して接続されて構成される。分散XMLデータベース51は1台のコーディネータサーバ60と複数台のDBサーバ70A〜70Cとを有する。ネットワーク52は、例えば、LAN(Local Area Network)、イントラネット、イーサネット(登録商標)又はインターネットなどである。
コーディネータサーバ60は、クライアント50と複数のDBサーバ70A〜70Cと接続される。コーディネータサーバ60は、処理を要求する処理要求をクライアント50から受信し、当該処理要求に応じた処理を行い、その処理結果をクライアント50に送信する。尚、ここでは、クライアント50から受信される処理要求は、XQueryにより表現されたものとする。また、コーディネータサーバ60は、クライアント50から受信した処理要求に応じた処理を行う際に、後述のクエリフラグメントを含むプランを生成し、プランの実行時に、クエリフラグメントをDBサーバ70A〜70Cに対して送信し、当該クエリフラグメントの実行結果をDBサーバ70A〜70Cから受信し、当該実行結果を用いて処理を実行して処理結果データを生成してクライアント50に送信する。
DBサーバ70Aは、階層構造を有する構造化文書としてXMLデータを記憶するDB700Aを有し、コーディネータサーバ60から送信されたクエリフラグメントを実行してDB700Aから該当のXMLデータを適宜取得し、取得したXMLデータを含む結果データを実行結果としてコーディネータサーバ60に送信する。DBサーバ70Bは、XMLデータを記憶するDB700Bを有し、DBサーバ70Aと同様の機能を実現させる。DBサーバ70Cは、XMLデータを記憶するDB700Cを有し、DBサーバ70Aと同様の機能を実現させる。尚、これらのDBサーバ70A〜70Cには、各々を識別可能なDBサーバ番号が付与されているものとする。ここでは各DBサーバ70A〜70Cに付与されたDBサーバ番号は順に“db1”〜“db3”とする。尚、以降、DBサーバ70A〜70Cを各々区別しない場合には、単にDBサーバ70と記載し、DB700A〜700Cを各々区別しない場合には、単にDB700と記載する。
尚、クライアント50、コーディネータサーバ60及びDBサーバ70は各々、装置全体の制御を行うCPU(Central Processing Unit)等の制御装置と、各種データや各種プログラムを記憶するROM(Read Only Memory)やRAM(Random Access Memory)等の記憶装置と、各種データや各種プログラムを記憶するHDD(Hard Disk Drive)やCD(Compact Disk)ドライブ装置等の外部記憶装置と、情報を表示するディスプレイ装置等の表示装置と、ユーザが各種処理要求を入力するためのキーボードやマウス等の入力装置と、ネットワーク52を介して外部のコンピュータと通信を行う通信制御装置と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。このような構成において、DB700は、DBサーバ70の有する外部記憶装置に格納されている。但し、DB700は、DBサーバ70の有するRAMなどの記憶装置に格納されていても良い。
このようなハードウェア構成において、コーディネータサーバ60が、記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について説明する。以下に、コーディネータサーバ60において実現される各種機能の実体となる各部について説明する。コーディネータサーバ60は、クエリ受信部600と、プラン生成部601と、プラン実行部602と、結果データ送信部603とを有する。
クエリ受信部600は、クライアント50から送信された処理要求(XQuery)を受信する。プラン生成部601は、クエリ受信部600が受信したXQueryを解析し、解析結果に応じて、クエリフラグメントを含むプランを生成する。プラン実行部602は、プラン生成部601が生成したプランを実行して、クライアント50から送信されたXQueryに応じたXMLデータを処理結果データとして生成する。尚、プラン実行部602は、プランの実行時に、クエリフラグメントをDBサーバ70A〜70Cに対して送信し、当該クエリフラグメントの実行結果をDBサーバ70A〜70Cから受信し、当該実行結果を用いて処理を実行して処理結果データを生成する。結果データ送信部603は、プラン実行部602が生成した処理結果データとしてクライアント50に送信する。
尚、XMLデータは、少なくとも1つの要素を含み各要素が階層付けられた文書構造をなしており、個々の要素(エレメント:Element)がタグ(Tag)を用いて記述された構造化文書である。図2は、XMLデータを例示する図である。同図に示されるように、XMLデータにおいては、要素の始まりを示すタグ(開始タグ)と、終わりを示すタグ(終了タグ)との2つのタグでデータが挟み込まれて、1つの要素が表現される。同図に示されるXMLデータでは、筆頭筆者を示すデータが<author>というタグで挟み込まれ、タイトルを示すデータが<title>というタグで挟み込まれ、文書本体を示すデータが<body>というタグで挟み込まれている。なお、開始タグと終了タグとで挟み込まれたテキストデータは、当該開始タグと終了タグで表された1つの要素に含まれるテキスト要素(テキストノード)である。
次に、XQueryについて説明する。XQueryは、XMLデータを記憶するデータベース(XMLデータベース)に対する問い合わせのための関数型言語であり、for節、let節、where節及びreturn節を用いたFLWOR(for-let-where-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データの要素間の階層条件を指定するパス演算子(PATH)として、XQueryでは以下のようなものがある。
・“/” :要素間は親子関係であることを示すパス演算子
・“//”:要素間は先祖子孫関係であることを示すパス演算子
・“.”:任意の要素
図3は、XQueryの一例を示す図である。同図に示されるXQueryは、「データベースのルートの子孫にある本(book:$x)とルートの子孫にある本(book:$y)の組合せを生成する。各組合せについて、筆頭筆者同士(author[0]:$x0、author[0]:$y0)が等しければ(=)、筆頭筆者を返し(return $x0)、その件数をカウントする(count:$z)。最終的に、タイトルの組(title1,title2)とカウント($z)を出力する」ということを要求している。
次に、上述したプラン生成部601と、プラン実行部602とについて詳細な構成を図4を用いて説明する。プラン生成部601は、クエリフラグメント抽出部6010と、結合プラン生成部6011と、分散プラン変換部6012とを有する。クエリフラグメント抽出部6010は、XQueryから、DBサーバ70に対する問い合せの部分である断片的なクエリ(断片クエリ)を抽出する。断片クエリとは、XQueryを表す文字列のクエリのデータであり、XMLデータに含まれる全部又は一部の要素の取得を要求する取得要求を示すデータである。尚、クエリフラグメント抽出部6010は、一つのXQueryから複数個の断片クエリを抽出して複数のクエリフラグメントを生成することもある。即ち、クエリフラグメント抽出部6010は、XMLデータに含まれる全部又は一部の要素を取得する取得要求と、後述の制御データとを含む少なくとも1つ以上の処理命令をクエリフラグメントとして生成する。この断片クエリを抽出する方法については後述の動作欄で詳述する。そして、クエリフラグメント抽出部6010は、抽出した断片クエリに対して、XQueryのreturn節で指定された結果データの送受信に関する制御データを付加してクエリフラグメントを生成する。
制御データは、クエリフラグメントの実行結果である結果データをDBサーバ70からコーディネータサーバ60が受信した後結果データを正しく処理できるように、DBサーバ70に対して後述の階層テーブルの割当指定を行うためのデータである。クエリフラグメント抽出部6010は、具体的には例えば、図5に示される断片クエリに対し、図6に示されるように、「$x/title」に対して“HT0”を割り当てるという制御データを付加し、「$x0」に対して“HT1”を割り当てるという制御データを付加して、クエリフラグメントを生成する。即ち、制御データで指示された”HT0”,”HT1”という階層テーブル名により、各クエリフラグメントの実行結果を示す結果データがコーディネータサーバ60においてどこに格納されるのかが特定される。一方、このようなクエリフラグメントを実行したDBサーバ70は、その実行の結果得られた要素を含む結果データと当該結果データを送信するDBサーバ70との対応関係を特定するヘッダを付加して当該結果データをコーディネータサーバ60に送信する。上述の例では、DBサーバ70は「$x/title」に対応して返す結果データに対して“HT0[DBサーバ番号]”というヘッダを付加し、「$x0」に対応して返す結果データに対して“HT1[DBサーバ番号]”というヘッダを付加してコーディネータサーバ60に送信する。このようなヘッダにより、コーディネータサーバ60は、各結果データがいずれのクエリフラグメントに対応してDBサーバ70A〜70Cのいずれから送信れたか、どの階層テーブルに格納すべきなのかを各々識別することができる。
また、クエリフラグメント抽出部6010は、クエリフラグメント同士をつなぐ情報も結合情報として抽出する。この結合情報もクエリフラグメント抽出部6010は一つのXQueryから複数個抽出することがある。
結合プラン生成部6011は、クエリフラグメント抽出部6010が抽出して生成したクエリフラグメント及びクエリフラグメント抽出部6010が抽出した結合情報からプラン(結合プラン)を生成する。
プランとは、オペレータの系列であり、入れ子を含む場合を除き、通常、オペレータをノードとする有向の逆木グラフをなす。オペレータとは、基本機能を持った命令である。オペレータには、例えば、直積結合オペレータ、自然結合オペレータ、リンク更新オペレータ、テストオペレータ、結果受信オペレータ、関数オペレータ及び結果生成オペレータなどがある。これらの詳細については後述する。
分散プラン変換部6012は、DBサーバ70に一部のオペレータを実行させるために結合プランを変換して、分散プランを生成する。具体的には分散プラン変換部6012は、結合プランに含まれるクエリフラグメントに対して結果受信オペレータを設定することにより、分散プランを生成する。
プラン実行部602は、オペレータ実行部6020と、オペレータ部6021と、階層テーブル管理部6022とを有する。
階層テーブル管理部6022は、DBサーバ70により送信された結果データに基づいた複数の階層テーブルを記憶する。階層テーブルは、テーブル同士の上下関係を基本とする階層性を表現するのにリンク情報を用いた特別なテーブルである。テーブルはRDBにおけるリレーションと等価である。階層テーブルには、レコード単位でデータが記憶され、各レコードは少なくとも1つのカラムを有する。カラムとは、データ項目を示すものである。例えば図2に示したようなXMLデータに対応するレコードであれば、各レコードは、タイトル、筆頭筆者などのカラムを有する。また、各階層テーブルに記憶される各レコードには、各レコードを一意に識別可能なリンク情報が付加される。リンク情報は、DBサーバ番号と、レコード番号とを含む。レコード番号とは、階層テーブル内に記憶されるレコードを一意に識別可能な番号である。このリンク情報は、後述するリンク更新に用いられる。尚、階層テーブル管理部6022は、上述した外部記憶装置に記憶されるものとするが、RAMなどの記憶装置に一時的に記憶されるものであっても良い。
オペレータ実行部6020は、分散プラン変換部6012が生成した分散プランに従ってオペレータ部6021の有する各種オペレータを呼び出して実行し、階層テーブル管理部6022に記憶された階層テーブルを更新する。このとき、オペレータ実行部6020は、階層テーブルに記憶される各レコードに対して上述のリンク情報を付加する。オペレータ間の入出力は、階層テーブルのポインタやリンク情報などを用いて行われる。その結果、オペレータ実行部6020は、クライアント50から送信されたXQueryに応じたXMLデータを出力する。
オペレータ部6021は、上述した直積結合オペレータ、自然結合オペレータ、リンク更新オペレータ、テストオペレータ、結果受信オペレータ、関数オペレータ及び結果生成オペレータなどの各種オペレータを有する。
直積結合オペレータは、階層テーブル間の直積結合演算を行う命令である。この演算は、RDBにおける直積結合演算と等価であり、階層テーブル間のデータの組み合わせを求める演算である。自然結合オペレータは、階層テーブル間の自然結合演算を行う命令である。この演算は、RDBにおける自然結合演算と等価であり、階層テーブル間で対象カラムの値が同じものをマージする演算である。リンク更新オペレータは、上下関係が指定された2つの階層テーブル同士に対する演算であり、各階層テーブルに含まれる2つのリンク情報を用いて、各リンク情報を更新する処理を行う命令である。テストオペレータは、等号や不等号など比較演算を行う命令である。RDBにおける選択演算と等価である。結果受信オペレータは、クエリフラグメントを各DBサーバ70A〜70Cに送信し、クエリフラグメントの実行結果を示す結果データを各々受信して、これらのユニオン(集合和)をとる命令である。関数オペレータは、階層テーブルに記憶されるレコードのあるカラムに対して関数演算を行う命令である。結果生成オペレータは、関数オペレータによって関数演算が行われた結果のデータをXML形式のデータに成形することにより、クライアント50から送信されたXQueryに応じたXMLデータを生成する命令である。
次に、本実施の形態の分散XMLデータベースにおいて、プラン生成部601が生成する分散プランについて説明する。ここで、DB700A〜700Cには、例えば図7に示されるXMLデータが各々記憶されているものとする。同図に示されるように、DB700Aには1件のXMLデータ、DB700Bには2件のXMLデータ、DB700Cには1件のXMLデータが記憶されている。
図8は、図7に示したXMLデータのDB700Aにおける物理的な記憶状態を模式的に示す図である。DB700は、上述したようにHDDなどの外部記憶装置に格納されるものとしたが、メモリに常駐する形で存在することもある。同図に示されるように、XMLデータは、DOM(Document Object Model)に似た形式でオブジェクトとリンクで表現される。<ROOT>オブジェクトの直下には1件の<book>オブジェクトが存在し、<ROOT>オブジェクトから親子関係を示すリンクでつながれている。オブジェクトの最下層には、テキストデータを示すテキストオブジェクトが存在している。
図9は、本実施の形態にかかるプラン生成部601が生成する分散プランによる処理イメージを例示する図である。同図に示されるように、分散プランは、結果受信オペレータによってDBサーバ70A〜70Cに送信されるクエリフラグメントを含んでいる。このクエリフラグメントは、断片クエリ「for $x in //book let $x0 := $x/author return $x/title/text(), $x0」に応じた要素のみ含む限定されたXMLデータの取得を要求するものになっている。このクエリフラグメントが結果受信オペレータによりDBサーバ70A〜70Cに送信され、DBサーバ70A〜70Cに実行され、その実行の結果取得されたXMLデータを含む結果データがDBサーバ70A〜70Cから送信されて結果受信オペレータにより受信される。この結果、“XMLDB”、”<author>服部</author>”といった要素のみ含む限定されたXMLデータをオペレータ実行部6020は得ることができる。この結果データは、上述したヘッダに基づいてリンク情報が付加されて、階層テーブルとして階層テーブル管理部6022に記憶される。また、同図に示される分散プランにより、DBサーバ70A〜70Cから得られた結果データに基づいて記憶された階層テーブルに対して直積結合オペレータと自然結合オペレータとで別々に実行され、それぞれの出力である2つの階層テーブル同士がリンク更新オペレータで関連付けられる。つまり、上位の階層テーブル同士が直積結合されて新たな階層テーブルが出力され、下位の階層テーブル同士が自然結合されて新たな階層テーブルが出力されると、新たに出力される各階層テーブルはリンク情報を各々2つ有することになる。このため、出力された各階層テーブルに含まれる2つのリンク情報を用いて各々のリンク情報を更新する処理が行われる。
(2)動作
次に、本実施の形態にかかる分散XMLデータベース51が行う全体的な処理の手順について図10を用いて説明する。まず、コーディネータサーバ60のクエリ受信部600が、クライアント50から送信された処理要求(XQuery)を受信する(ステップS1)。次いで、プラン生成部601は、ステップS1で受信されたXQueryを解析し、解析結果に応じて、クエリフラグメントを含む分散プランを生成する(ステップS2)。プラン実行部602は、ステップS2で生成された分散プランを実行して、ステップS1で受信されたXQueryに応じたXMLデータを処理結果データとして生成する(ステップS3)。尚、プラン実行部602は、プランの実行時に、クエリフラグメントをDBサーバ70A〜70Cに対して送信し、当該クエリフラグメントの実行結果をDBサーバ70A〜70Cから受信し、当該実行結果を用いて処理を実行して処理結果データを生成する。結果データ送信部603は、ステップS3で生成された処理結果データをクライアント50に送信する(ステップS4)。
次に、ステップS2でプラン生成部601が行う処理の詳細について説明する。図11は、プラン生成部601のクエリフラグメント抽出部6010が行う処理の手順を示すフローチャートである。クエリフラグメント抽出部6010は、ステップS1で受信されたXQueryを解析し、DBROOT、すなわち「/」の部分の集合を生成する(ステップS10)。次いで、クエリフラグメント抽出部6010は、全てのDBROOTに対して以下の処理を行う(ステップS11:NO)。クエリフラグメント抽出部6010は、DBROOTから変数($xなど)を経由してPATH表現でたどれる部分に印を付ける(ステップS12)。そして、クエリフラグメント抽出部6010は、印が付いた部分から断片的なクエリ(断片クエリ)を抽出し、当該断片クエリに対して上述した制御データを付加したクエリフラグメントを生成する。入れ子構造になっていれば、クエリフラグメント抽出部6010は、let節で括りだす(ステップS13)(図9参照)。クエリフラグメント抽出部6010が全てのDBROOTに対してステップS12〜S13の処理を行うと、ステップS11の判定結果が肯定的となり、次いで、印がついていない部分を結合情報として抽出する(ステップS14)。この結果、ステップS1で受信されたXQueryからクエリフラグメントが生成されると共に結合情報が抽出される。
次に、プラン生成部601の結合プラン生成部6011が行う処理の手順について図12を用いて説明する。結合プラン生成部6011は、上述のステップS14で抽出された結合情報の集合を生成する(ステップS20)。次いで、結合プラン生成部6011は、全ての結合情報に対して以下の処理を行う。結合プラン生成部6011は、結合情報に基づいて、クエリフラグメント抽出部6010が生成したクエリフラグメント同士を結合するプランを生成する(ステップS22)。具体的には、結合プラン生成部6011は、結合情報が「=」であれば、自然結合オペレータを設定する。これにより、自然結合を行う処理命令が生成される。また、結合プラン生成部6011は、入れ子同士を結合する結合情報であれば(ステップS23:YES)、上位階層の結果のデータ同士の直積結合オペレータを設定する(ステップS24)。これにより、直積結合を行う処理命令が生成される。必要であれば、上位方向に伝播する。次いで、結合プラン生成部6011は、自然結合の結果のデータと直積結合の結果のデータとをリンク更新するリンク更新オペレータを設定する(ステップS25)。これにより、リンク更新を行う処理命令が生成される。そして、結合プラン生成部6011は、ステップS21に戻り、次の処理対象の結合情報を処理する。尚、入れ子同士を結合する結合情報でない場合(ステップS23:NO)も同様に、結合プラン生成部6011は、ステップS21に戻る。そして、全ての結合情報に対する処理が終了すると(ステップS21:YES)、結合プラン生成部6011が行う処理は終了する。尚、図示は省略したが、プラン生成部601は、この他、関数オペレータを適宜設定することにより関数演算を行う処理命令を生成し、関数演算が行われた結果のデータに対して結果生成オペレータを設定することにより当該データをXML形式に成形して処理結果データとしてクライアント50に送信する処理を行う処理命令を生成する。この結果、結合プランが生成される。
その後、分散プラン変換部6012が、結合プラン生成部6011が生成した結合プランに含まれるクエリフラグメントに対して結果受信オペレータを設定して、分散プランを生成する。これでステップS2でプラン生成部601が行う処理は終了する。
次に、ステップS3でプラン実行部602が、ステップS2で生成された分散プランを実行する場合の入出力イメージについて説明する。ここでは、図9に示した分散プランが生成されるものとする。図13は、オペレータ実行部6020が分散プランを実行して、結果受信オペレータを最初に実行する際に入出力イメージを例示する図である。オペレータ実行部6020は結果受信オペレータの実行により、クエリフラグメントを各DBサーバ70A〜70Cに送信し、その実行結果を示すと共にヘッダが付加された結果データを各DBサーバ70A〜70Cから受信して、ユニオン(集合和)をとる。具体的には、オペレータ実行部6020は、“HT0[db1]”というヘッダが付加された1件の結果データを結果受信オペレータによりDBサーバ70Aから受信し、これにリンク情報”db1,0”を付加して階層テーブルHT0[db1]として階層テーブル管理部6022に記憶する。同様に、オペレータ実行部6020は、“HT0[db2]”というヘッダが付加された2件の結果データを結果受信オペレータによりDBサーバ70Bから受信し、これらに各リンク情報”db2,0”,”db2,1”を各々付加して階層テーブルHT0[db2]として階層テーブル管理部6022に記憶する。また、オペレータ実行部6020は、“HT0[db3]”というヘッダが付加された結果データを結果受信オペレータによりDBサーバ70Cから受信し、これにリンク情報”db3,0”を付加して階層テーブルHT0[db3]として階層テーブル管理部6022に記憶する。そして、オペレータ実行部6020は、階層テーブルHT0[db1]〜HT0[db3]のユニオンをとって階層テーブルHT2として階層テーブル管理部6022に出力する。同様に、オペレータ実行部6020は、“HT1[db1]”〜“HT1[db3]”というヘッダが各々付加された各結果データを各DBサーバ70A〜70Cから受信してこれらに各リンク情報を付加して各々階層テーブルHT1[db1]〜HT1[db3]として階層テーブル管理部6022に記憶し、それらのユニオンをとって階層テーブルHT3として階層テーブル管理部6022に出力する。
図14は、オペレータ実行部6020が結果受信オペレータを2回目に実行する際の入出力イメージを例示する図である。上述と同様にして、オペレータ実行部6020は、“HT4[db1]”〜“HT4[db3]”というヘッダが各々付加された各結果データを各DBサーバ70A〜70Cから受信してこれらに各リンク情報を付加して各々階層テーブルHT4[db1]〜HT4[db3]として階層テーブル管理部6022に記憶し、それらのユニオンをとって階層テーブルHT6として階層テーブル管理部6022に出力する。また、オペレータ実行部6020は、“HT5[db1]”〜“HT5[db3]”というヘッダが各々付加された各結果データを各DBサーバ70A〜70Cから受信してこれらに各リンク情報を付加して各々階層テーブルHT4[db1]〜HT5[db3]として階層テーブル管理部6022に記憶し、それらのユニオンをとって階層テーブルHT7として階層テーブル管理部6022に出力する。
図15は、オペレータ実行部6020が自然結合オペレータを実行する際の入出力イメージを例示する図である。オペレータ実行部6020は自然結合オペレータの実行により、「$x0=$y0」に対応する処理として、階層テーブルHT3と階層テーブルHT7とを入力として自然結合を行い、その結果を階層テーブルHT8として階層テーブル管理部6022に出力する。
図16は、オペレータ実行部6020が直積結合オペレータを実行する際の入出力イメージを例示する図である。オペレータ実行部6020は直積結合オペレータの実行により、階層テーブルHT2と階層テーブルHT6とを入力として直積結合を行い、その結果を階層テーブルHT9として階層テーブル管理部6022に出力する。
図17は、オペレータ実行部6020がリンク更新オペレータを実行する際の入出力イメージを例示する図である。オペレータ実行部6020はリンク更新オペレータの実行により、各階層テーブルHT8〜HT9に含まれる2つのリンク情報を用いて、各々のリンク情報を更新し、新たな階層テーブルを出力する。具体的には、オペレータ実行部6020は以下の処理を行う。階層テーブルHT9の第2カラム(リンク情報)と第4カラム(リンク情報)とは直積結合の結果得られた複数カラム(複合リンクとする)である。オペレータ実行部6020は、階層テーブルHT9の複合リンクカラムを統合して単一のカラム(単一リンクとする)に更新して、更新した階層テーブルを階層テーブルHT11として階層テーブル管理部6022に出力する。ここでは、オペレータ実行部6020は、単一リンクの値として、コーディネータサーバ60を一意に識別可能なサーバ番号(例えば、”cs”)と階層テーブルHT9内でデータを一意に識別可能なレコード番号 (例えば、1,2,3,..といった昇順に並んだ自然数)の組を割り当てる。
また、階層テーブルHT8の第1カラム(リンク情報)と第3カラム(リンク情報)とは自然結合の結果得られた複合リンクである。このため、オペレータ実行部6020は、更新したリンク情報を用いて、自然結合の結果得られた階層テーブルHT8の複合リンクカラムを統合して単一リンクに更新して、更新した階層テーブルを階層テーブルHT10として階層テーブル管理部6022に出力する。ここでも、オペレータ実行部6020は、単一リンクの値として、上述のサーバ番号及び階層テーブルHT8内でデータを一意に識別可能なレコード番号の組を割り当てる。このようなリンク更新オペレータはハッシュテーブルなど高速にアクセスできるメモリデータ構造を用いることで実装できる。
ここで、オペレータ実行部6020がリンク更新オペレータの実行によりリンク更新する処理の手順を図18を用いて説明する。オペレータ実行部6020はリンク更新オペレータの実行により、上位の階層テーブルの全てのレコードについて全てスキャンしたか否か判断する(ステップS30)。スキャンしていないと判断した場合(ステップS30:NO)、オペレータ実行部6020は、スキャンしていないレコードにおける複合リンクカラムに格納されているDBサーバ番号及びレコード番号の組合せに対して、ユニークなリンク情報を割り当てることにより、リンク情報を更新する(ステップS31)。具体的には、オペレータ実行部6020は、上述したコーディネータサーバ60のサーバ番号と階層テーブルHT9でレコードを一意に識別可能なレコード番号の組を新たなリンク情報として割り当てる。そして、オペレータ実行部6020は、更新したリンク情報をハッシュテーブルに保存する(ステップS34)。
一方、オペレータ実行部6020は、上位の階層テーブルの全てのレコードについて全てスキャンしたと判断した場合(ステップS30:YES)、下位結合テーブルの全てのレコードに対してスキャンしたか否か判断する(ステップS33)。全てのレコードに対してスキャンしていないと判断した場合(ステップS33:NO)、ハッシュテーブルを参照して、スキャンしていないレコードにおける複合リンクカラムに格納されているDBサーバ番号及びレコード番号の組合せに対して、ユニークなリンク情報を割り当てることにより、リンク情報を更新する(ステップS34)。全てのレコードに対してスキャンしたと判断した場合(ステップS33:YES)、処理を終了する。
このようにして、上位の階層テーブルのレコードと、下位の階層テーブルのレコードとの間で対応付けを行うことができる。
図19は、オペレータ実行部6020が関数オペレータを実行する際の入出力イメージを例示する図である。ここでは、階層テーブルHT11と階層テーブルHT10とのリンク関係をリンク情報により参照することで、階層テーブルHT11の各レコードの下位階層のレコード集合がわかる。オペレータ実行部6020は関数オペレータ「count」の実行により、そのレコードの件数を算出してその値(ex. 1,0,1,0,0,...)を階層テーブルHT11の第3カラムにセットして、階層テーブルHT12として階層テーブル管理部6022に出力する。
そしてこの階層テーブルHT12を用いて、オペレータ実行部6020が結果生成オペレータの実行により、XML形式のデータに成形したXMLデータを生成する。この結果、クライアント50から送信されたXQueryに応じたXMLデータが生成される。これによりステップS3でオペレータ実行部6020が行う処理は終了する。その後、ステップS3で生成されたXMLデータが処理結果データとしてステップS4でクライアント50に送信されることにより、全体の処理が終了する。
ここで、本実施の形態において生成した分散プランと対比するために、分散XMLデータベースではなく、単体のXMLデータベースにおいて、従来方法に基づいて生成される単体のプラン(単体プラン)について図20を用いて説明する。図20は、図3に示されるXQuery応じて生成される単体プランによる処理イメージを例示する図である。同図に示されるように、従来方法では、let節がある場合、外側のXQueryと内側のXQuery(つまり入れ子節)との間には入出力関係があると見なされ、外側のXQuery処理が終わったら入力変数の組がセットされ内側のXQueryに渡して処理される。同図においては、まず、外側のfor節に対応するデータ取得オペレータが実行され「//book」が取り出される。結果はテーブルに記録される。for節は2重なので、この処理が2回行われる。その後、入れ子節の処理が行われる。2つのテーブルを入力として直積結合オペレータが実行されて、1つのテーブルが生成される。その後、データ取得オペレータ「$x/author[0]」、データ取得オペレータ「$y/author[0]」が実行され、それぞれ「$x0」と「$y0」とを含むテーブルが生成される。テストオペレータでは「$x0=$y0」がチェックされ、テーブルからテストに成功したレコードだけに絞り込まれる。そして、入れ子のreturn節に対応する結果生成オペレータが実行される。さらに、関数オペレータ「count」が実行され、「$z」を含むテーブルが生成される。最後に、外側のreturn節に対応する結果生成オペレータが実行される。
図21は、関数オペレータ「count」が実行される前のテーブルを例示する図である。入れ子はテーブル間のリンクで表現されている。そのため、テーブルT6からテーブルT5[0]からテーブルT5[5]にリンクがはられている。
次に、図20に示される単体プランを分散XMLデータベース向けに拡張したプラン(拡張プラン)について図22を用いて説明する。同図に示される拡張プランは、図20に示した単体プランとほぼ同じ構造を持つプランになっているが、図20に示したデータ取得オペレータが結果受信オペレータに変更されている。この結果受信オペレータにより、プラン「//book」が全て各DBサーバ70A〜70Cに送信され、その処理結果が受信されて、ユニオン(集合和)がとられる。すなわち、この結果受信オペレータによれば、DBサーバ70A〜70Cにある「//book」以下のデータを全てコーディネータサーバ60が受信しなければならない。DBサーバ70A〜70Cにある「//book」の件数が多ければ、あるいはサイズが大きければ、その転送コストは膨大なものになる。また、直積結合を初めの段階で行っているため、「//book」の件数が多ければ、その組み合わせが増えて、結果としてデータ取得オペレータやテストオペレータなどの処理コストが増える。従って、単体プランを分散XMLデータベース向けに単に拡張するだけでは、分散XMLデータベースの性能を活かすことが困難である。
これに比べて、本実施の形態における分散プランによれば、リンク情報を用いて関係付けられた階層テーブルを用い、リンク情報を用いて階層テーブル同士を結合することで、順序制約から解放された入れ子処理を行うことができる。具体的には、N層の階層テーブル同士の場合、「N−1」回の直積結合、「N−1」回のリンク更新及び1回の自然結合を実行することで入れ子処理が完了する。従って、従来のように、上位の多重ループの回数だけ入れ子処理を繰り返し行う必要がない。オペレータの実行回数の差がそれを裏付けている。さらに上位の多重ループが大きなものになれば、従来との性能の差はより大きくなる。また、直積結合は自然結合と別に行っているため、「//book」の件数が多くても、自然結合オペレータの処理コストは抑えられる。即ち、本実施の形態の構成によって無駄な計算を排除することで、入れ子節を含むXQuery処理の高速化が可能であり、その計算量を多項式から線形へと低減させることができる。
また、コーディネータサーバ60は、XQueryから抽出した断片的なクエリ「for $x in //book let $x0 := $x/author return $x/title/text(), $x0」に応じた限定的なXMLデータだけの取得をクエリフラグメントによりDBサーバ70に要求することで、上位for節で全てのXMLデータをDBサーバ70から受信する必要はなくなる。結果として、転送するデータ量は少量となり、転送コストを最小限に抑えられる。
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
<変形例1>
上述した実施の形態において、コーディネータサーバ60で実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良い。
<変形例2>
上述した実施の形態において、階層テーブルに記憶される各レコードにリンク情報を付加するのは、オペレータ実行部6020であるとした。しかし、これに限らず、プラン実行部602が識別子付加部を別途備えるようにし、これが、各レコードにリンク情報を付加するようにしても良い。
<変形例3>
上述した実施の形態において、階層構造を有する構造化文書として、XMLデータを取り扱ったが、本実施の形態においてはこれに限らない。
<変形例4>
上述した実施の形態においては、クエリフラグメント抽出部6010が、制御データを含むクエリフラグメントを生成するようにしたが、これに限らず、分散プラン変換部6012が、クエリフラグメント抽出部6010が抽出した断片クエリに対して制御データを付加してクエリフラグメントを生成し、これに対して結果受信オペレータを設定するようにしても良い。
本実施の形態にかかる分散XMLデータベースシステムの構成を例示する図である。 XMLデータを例示する図である。 XQueryの一例を示す図である。 同実施の形態にかかるプラン実行部602の構成を例示する図である。 同実施の形態にかかる断片クエリを例示する図である。 図5に例示した断片クエリに付加される制御データを例示する図である。 同実施の形態にかかるDB700A〜700Cに各々記憶されるXMLデータを例示する図である。 図7に示したXMLデータのDB700Aにおける物理的な記憶状態を模式的に示す図である。 同実施の形態にかかるプラン生成部601が生成する分散プランによる処理イメージを例示する図である。 同実施の形態にかかる分散XMLデータベース51が行う全体的な処理の手順を示すフローチャートである。 同実施の形態にかかるプラン生成部601のクエリフラグメント抽出部6010が行う処理の手順を示すフローチャートである。 同実施の形態にかかるプラン生成部601の結合プラン生成部6011が行う処理の手順を示すフローチャートである。 同実施の形態にかかるオペレータ実行部6020が分散プランを実行して、結果受信オペレータを最初に実行する際に入出力イメージを例示する図である。 同実施の形態にかかるオペレータ実行部6020が結果受信オペレータを2回目に実行する際の入出力イメージを例示する図である。 同実施の形態にかかるオペレータ実行部6020が自然結合オペレータを実行する際の入出力イメージを例示する図である。 同実施の形態にかかるオペレータ実行部6020が直積結合オペレータを実行する際の入出力イメージを例示する図である。 同実施の形態にかかるオペレータ実行部6020がリンク更新オペレータを実行する際の入出力イメージを例示する図である。 同実施の形態にかかるオペレータ実行部6020がリンク更新オペレータの実行によりリンク更新する処理の手順を示すフローチャートである。 同実施の形態にかかるオペレータ実行部6020が関数オペレータを実行する際の入出力イメージを例示する図である。 同実施の形態にかかる図3に示されるXQuery応じて生成される単体プランによる処理イメージを例示する図である。 同実施の形態にかかる関数オペレータ「count」が実行される前のテーブルを例示する図である。 同実施の形態にかかる図20に示される単体プランを分散XMLデータベース向けに拡張したプラン(拡張プラン)による処理イメージを例示する図である。
符号の説明
50 クライアント
51 分散XMLデータベース
52 ネットワーク
60 コーディネータサーバ
70A,70B,70C,70 DBサーバ
600 クエリ受信部
601 プラン生成部
602 プラン実行部
603 結果データ送信部
700A,700B,700C,700 DB
6010 クエリフラグメント抽出部
6011 結合プラン生成部
6012 分散プラン変換部
6020 オペレータ実行部
6021 オペレータ部
6022 階層テーブル管理部

Claims (10)

  1. 少なくとも1つの要素を含む構造化文書を記憶するデータベースを各々有する複数の分散されたデータベースサーバに接続されたデータベース処理装置であって、
    前記構造化文書に関する処理を要求する処理要求を受信する要求受信手段と、
    前記処理要求によって要求された前記処理を行うために、実行単位毎の処理命令を含む処理プランを生成するプラン生成手段と、
    前記処理プランに含まれる各前記処理命令を実行することにより、前記処理プランを実行するプラン実行手段と、
    各前記処理命令の実行結果をレコード単位で記憶する記憶手段と、
    前記記憶手段に記憶された前記実行結果を用いて、前記処理要求に応じた第1構造化文書を生成する結果生成手段と、
    当該第1構造化文書を送信する結果送信手段とを備え、
    前記プラン生成手段は、
    前記処理要求に基づいて、処理対象の構造化文書に含まれる全部又は一部の要素を取得する少なくとも1つの第1処理命令を生成する第1生成手段と、
    前記第1処理命令に従って取得される前記要素を含む結果データを用いて自然結合を行う第2処理命令を生成する第2生成手段と、
    前記結果データを用いて直積結合を行う第3処理命令を生成する第3生成手段と、
    前記第2処理命令を実行して行われる自然結合の実行結果と、前記第3処理命令を実行して行われる直積結合の実行結果とを用いて、各実行結果間の対応関係を更新する第4処理命令を生成する第4生成手段と、
    前記第1処理命令乃至第4処理命令を結合することにより、前記処理プランを生成する結合手段と、
    前記処理プランに含まれる前記第1処理命令について、前記全部又は一部の要素の取得を要求する少なくとも1つの取得要求を複数の前記データベースサーバに送信し、前記取得要求に従い取得された前記要素を含む結果データを複数の前記データベースサーバから各々受信する第5処理命令に変換する変換手段とを有する
    ことを特徴とするデータベース処理装置。
  2. 前記処理要求は、所定の規則により構造化された構文によって表現され、
    前記プラン生成手段は、前記処理要求の表現される構文が入れ子構造を含む場合に、当該入れ子構造部分の構文について、前記第2処理命令乃至前記第4処理命令を生成する
    ことを特徴とする請求項1に記載のデータベース処理装置。
  3. 前記プラン実行手段は、
    前記処理プランに含まれる前記第5処理命令を実行して、前記結果データを複数の前記データベースサーバから受信する第1実行手段と、
    前記第2処理命令を実行して、前記結果データを用いて自然結合を行う第2実行手段と、
    前記第3処理命令を実行して、前記結果データを用いて直積結合を行う第3実行手段と、
    前記第4処理命令を実行して、前記第2処理命令の実行結果と前記第3処理命令の実行結果とを用いて前記実行結果間の対応関係を更新する第4実行手段とを有する
    ことを特徴とする請求項1又は2に記載のデータベース処理装置。
  4. 前記第1生成手段は、前記処理要求に基づいて、前記処理対象の構造化文書に含まれる全部又は一部要素を取得する取得要求と、前記取得要求を特定するための制御データとを含む前記第1処理命令を生成し、
    前記変換手段は、前記第1処理命令について、前記取得要求及び前記制御データを前記複数のデータベースサーバに送信し、前記制御データに対応する前記取得要求に応じて送信される前記結果データと当該結果データを送信する前記データベースサーバとの対応関係を特定するヘッダが付加された前記結果データを複数の前記データベースサーバから各々受信する第5処理命令に変換し、
    前記第1実行手段は、前記第5処理命令を実行して、前記結果データを複数の前記データベースサーバから受信し、これをレコード単位で集約すると共に、前記結果データに付加された前記ヘッダを用いて、前記取得要求に対応する前記結果データ及び当該結果データを送信する前記データベースサーバを一意に識別して、前記結果データの各レコードに対して当該各レコードを各前記データベースサーバにおいて一意に識別可能な識別子を付加して当該各レコードを当前記第5処理命令の実行結果として前記記憶手段に記憶させる
    ことを特徴とする請求項3に記載のデータベース処理装置。
  5. 前記第2実行手段は、前記第2処理命令を実行して、前記記憶手段に記憶された前記結果データの各レコードを用いて、自然結合を行って、その実行結果を前記記憶手段に記憶させ、
    前記第3実行手段は、前記第3処理命令を実行して、前記記憶手段に記憶された前記結果データの各レコードを用いて、直積結合を行って、その実行結果を前記記憶手段に記憶させる
    ことを特徴とする請求項4に記載のデータベース処理装置。
  6. 前記第4実行手段は、前記第4処理命令を実行して、前記記憶手段に記憶された前記第2処理命令の前記実行結果及び前記第3処理命令の前記実行結果のそれぞれについて、当該実行結果の各レコードに含まれる複数の前記識別子を統合し、当該識別子に代えて、当該各レコードに対して当該レコードを一意に識別可能な新たな識別子を付加して当該各レコードを前記記憶手段に各々記憶させる
    ことを特徴とする請求項5に記載のデータベース処理装置。
  7. 前記処理要求によって要求された前記処理は、所定の演算を含み、
    前記プラン生成手段は、前記第4処理命令を実行して対応関係が更新された各前記実行結果に対して、前記所定の演算を行う第7処理命令を生成する第6生成手段を有し、
    前記結合手段は、前記1処理命令乃至第7処理命令を結合することにより、前記処理プランを生成し、
    前記プラン実行手段は、前記処理プランに含まれる前記第7処理命令を実行して、前記記憶手段に記憶された前記第2処理命令の前記実行結果に含まれる各レコード及び前記第3処理命令の前記実行結果に含まれる各レコードに対して付加された前記新たな識別子によって前者の実行結果のレコード及び後者の実行結果のレコードの対応関係を識別して、これらの各レコードを用いて、前記所定の演算を行い、その実行結果を前記記憶手段に記憶させる第5実行手段を有し、
    前記結果生成手段は、前記第5実行手段によって前記記憶手段に記憶された前記実行結果を用いて、前記第1構造化文書を生成する
    ことを特徴とする請求項6に記載のデータベース処理装置。
  8. 前記要求受信手段は、XML形式の前記構造化文書に対して、XQuery形式の前記処理要求を受信し、
    前記結果生成手段は、前記処理要求に応じたXML形式の前記第1構造化文書を生成する
    ことを特徴とする請求項1乃至7のいずれか一項に記載のデータベース処理装置。
  9. 要求受信手段と、プラン生成手段と、プラン実行手段と、各前記処理命令の実行結果をレコード単位で記憶する記憶手段と、結果生成手段と、結果送信手段とを備え、少なくとも1つの要素を含む構造化文書を記憶するデータベースを各々有する複数の分散されたデータベースサーバに接続されたデータベース処理装置において実現される情報処理方法であって、
    前記要求受信手段が、前記構造化文書に関する処理を要求する処理要求を受信する要求受信ステップと、
    前記プラン生成手段が、前記処理要求によって要求された前記処理を行うために、実行単位毎の処理命令を含む処理プランを生成するプラン生成ステップと、
    前記プラン実行手段が、前記処理プランに含まれる各前記処理命令を実行することにより、前記処理プランを実行するプラン実行ステップと、
    前記結果生成手段が、前記記憶手段に記憶された前記実行結果を用いて、前記処理要求に応じた第1構造化文書を生成する結果生成ステップと、
    前記結果送信手段が、当該第1構造化文書を送信する結果送信ステップとを含み、
    前記プラン生成手段が、
    前記処理要求に基づいて、処理対象の構造化文書に含まれる全部又は一部の要素を取得する少なくとも1つの第1処理命令を生成する第1生成ステップと、
    前記第1処理命令に従って取得される前記要素を含む結果データを用いて自然結合を行う第2処理命令を生成する第2生成ステップと、
    前記結果データを用いて直積結合を行う第3処理命令を生成する第3生成ステップと、
    前記第2処理命令を実行して行われる自然結合の実行結果と、前記第3処理命令を実行して行われる直積結合の実行結果とを用いて、各実行結果間の対応関係を更新する第4処理命令を生成する第4生成ステップと、
    前記第1処理命令乃至第4処理命令を結合することにより、前記処理プランを生成する結合ステップと、
    前記処理プランに含まれる前記第1処理命令について、前記全部又は一部の要素の取得を要求する少なくとも1つの取得要求を複数の前記データベースサーバに送信し、前記取得要求に従い取得された前記要素を含む結果データを複数の前記データベースサーバから各々受信する第5処理命令に変換する変換ステップと
    を含むことを特徴とする情報処理方法。
  10. 請求項9に記載された方法をコンピュータで実行させることを特徴とする情報処理プログラム。
JP2008050822A 2008-02-29 2008-02-29 データベース処理装置、情報処理方法及びプログラム Active JP5060345B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008050822A JP5060345B2 (ja) 2008-02-29 2008-02-29 データベース処理装置、情報処理方法及びプログラム
US12/360,271 US8117186B2 (en) 2008-02-29 2009-01-27 Database processing apparatus, information processing method, and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008050822A JP5060345B2 (ja) 2008-02-29 2008-02-29 データベース処理装置、情報処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2009211154A JP2009211154A (ja) 2009-09-17
JP5060345B2 true JP5060345B2 (ja) 2012-10-31

Family

ID=41013962

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008050822A Active JP5060345B2 (ja) 2008-02-29 2008-02-29 データベース処理装置、情報処理方法及びプログラム

Country Status (2)

Country Link
US (1) US8117186B2 (ja)
JP (1) JP5060345B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101543783B1 (ko) * 2008-11-11 2015-08-11 삼성전자주식회사 개인용 휴대 장치를 이용한 건강 정보 수집 장치의 로그인 방법 및 장치
US8190597B1 (en) * 2009-12-21 2012-05-29 Perfect Search Corporation Multistage pipeline for feeding joined tables to a search system
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 株式会社東芝 問合せ式変換装置、方法およびプログラム
US20130262417A1 (en) * 2012-04-02 2013-10-03 Business Objects Software Ltd. Graphical Representation and Automatic Generation of Iteration Rule
CN103827861B (zh) * 2012-09-07 2017-09-08 株式会社东芝 结构化文档管理装置及方法
US9477731B2 (en) * 2013-10-01 2016-10-25 Cloudera, Inc. Background format optimization for enhanced SQL-like queries in Hadoop
JP6506773B2 (ja) * 2014-10-28 2019-04-24 株式会社Murakumo 情報処理装置、方法およびプログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4227033B2 (ja) * 2004-01-20 2009-02-18 富士通株式会社 データベース統合参照装置、データベース統合参照方法およびデータベース統合参照プログラム
US7302447B2 (en) * 2005-01-14 2007-11-27 International Business Machines Corporation Virtual columns
JP4314221B2 (ja) * 2005-07-28 2009-08-12 株式会社東芝 構造化文書記憶装置、構造化文書検索装置、構造化文書システム、方法およびプログラム
US7577647B2 (en) * 2005-12-07 2009-08-18 Microsoft Corporation Combining nested aggregators
JP4489047B2 (ja) * 2006-03-29 2010-06-23 株式会社東芝 構造化文書管理装置、構造化文書管理システムおよびプログラム
JP5196924B2 (ja) 2007-09-11 2013-05-15 株式会社東芝 データベース処理装置、方法及びプログラム

Also Published As

Publication number Publication date
US20090222458A1 (en) 2009-09-03
JP2009211154A (ja) 2009-09-17
US8117186B2 (en) 2012-02-14

Similar Documents

Publication Publication Date Title
JP5060345B2 (ja) データベース処理装置、情報処理方法及びプログラム
US9529934B2 (en) XPath evaluation in an XML repository
US9177021B2 (en) Relational query planning for non-relational data sources
US8584003B2 (en) System and method for schemaless data mapping with nested tables
JP5756386B2 (ja) 動的なウェブ・アプリケーションの問題を修正するメタデータの生成・管理の支援方法、装置、およびプログラム
CN105630881B (zh) 一种rdf的数据存储方法和查询方法
Frischmuth et al. Ontowiki–an authoring, publication and visualization interface for the data web
US20130006968A1 (en) Data integration system
US7668888B2 (en) Converting object structures for search engines
US20080082571A1 (en) System and Method for Transforming Tabular Form Date into Structured Document
US20060007464A1 (en) Structured data update and transformation system
US10031981B2 (en) Exporting data to web-based applications
US11461333B2 (en) Vertical union of feature-based datasets
JPWO2013111287A1 (ja) Sparqlクエリ最適化方法
US20060242169A1 (en) Storing and indexing hierarchical data spatially
Kovács et al. Benchmarking graph database backends—What works well with wikidata?
JP5196924B2 (ja) データベース処理装置、方法及びプログラム
US8086561B2 (en) Document searching system and document searching method
JP4309818B2 (ja) 構造化文書管理装置、検索装置、記憶方法、検索方法及びプログラム
JP4562749B2 (ja) 文書の圧縮格納方法及び装置
JP2009181463A (ja) サーバ、データ転送方法及びプログラム
JP2010267081A (ja) 情報検索方法及び装置及びプログラム
JP5685205B2 (ja) プログラム、情報処理装置およびアクセス支援方法
Kawises et al. A development of RDF data transfer and query on Hadoop Framework
US11694141B2 (en) On-demand workflow combination and variant generation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100901

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120625

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: 20120710

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120803

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

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 5060345

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: 20150810

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

Free format text: JAPANESE INTERMEDIATE CODE: R313114

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350