JP2008243075A - 構造化文書管理装置及び方法 - Google Patents

構造化文書管理装置及び方法 Download PDF

Info

Publication number
JP2008243075A
JP2008243075A JP2007085975A JP2007085975A JP2008243075A JP 2008243075 A JP2008243075 A JP 2008243075A JP 2007085975 A JP2007085975 A JP 2007085975A JP 2007085975 A JP2007085975 A JP 2007085975A JP 2008243075 A JP2008243075 A JP 2008243075A
Authority
JP
Japan
Prior art keywords
query
search
plan candidate
structured document
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.)
Pending
Application number
JP2007085975A
Other languages
English (en)
Inventor
Yosuke Kuroda
洋介 黒田
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 JP2007085975A priority Critical patent/JP2008243075A/ja
Publication of JP2008243075A publication Critical patent/JP2008243075A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】より効率的な実行計画を生成することが可能な構造化文書管理装置及び方法を提供する。
【解決手段】予め用意したスキーマ情報を用いて、問合せクエリに応じた最終プラン候補を生成し、この最終プラン候補を、当該最終プラン候補の実行過程で取得した新たなスキーマ情報を用いて変更することで、より効率的な最終プラン候補へと変更する。また、実行処理過程で取得した制約情報を、新たなスキーマ情報として次回以降の問合せクエリのプラン候補生成時に利用する。
【選択図】 図6

Description

本発明は、構造化文書管理装置及び構造化文書管理方法に関する。
従来より、問合せクエリに応じた構造化文書を検索する構造化文書管理装置が用いられている。構造化文書管理装置では、問合せクエリを解析して、効率的な応答性能を実現するための索引作成等の実行計画(検索プラン)を作成し、当該プランに基づいて構造化文書を格納したデータベースに問合せ処理を実施することで、問合せクエリに応じた検索を行うことが可能となっている。
一般に構造化文書管理装置における検索プランの生成では、入力された問合せクエリを解析し、構造化文書管理装置に蓄えられたスキーマ情報等の制約情報や統計情報から得られるオペレータの見積もりコスト等に基づいて、複数の検索プランを検索プラン候補として生成する。そして、生成された検索プラン候補から最も見積もりコストの低いものが最終的に実行される最終プランとして採用されている。ここで生成される検索プランは、与えられたスキーマ情報等の制約情報が多いほど、より効率的な検索プラン候補の生成が可能であり、統計情報の精度が高い程、検索プラン候補の中から最も効率の良い検索プランの選択が可能となる。
また、一般にスキーマ情報は、リレーショナルデータベースに代表されるように、予め構造化文書管理装置内に格納しておく必要がある。これに対し、近年盛んに利用されている構造化文書の1つであるXMLデータを扱うデータベースの分野においては、スキーマ情報の事前準備を必要としないネイティブXMLデータベースと呼ばれる技術が登場している。このネイティブXMLデータベースでは、事前にスキーマ情報の登録を必要としない代わりに、構造化文書の登録時に当該構造化文書の動的に変化する構造上の制約情報を抽出し、これをスキーマ情報として問合せクエリの処理時に利用している(例えば、特許文献1参照)。
一方、ネイティブXMLデータベースを用いた技術では、検索プラン候補を生成する際に、問合せクエリの一部がパラメータ化されている場合や統計情報の精度が低い場合、コストの見積もりの精度が低くなり与えられた検索プラン候補内からの最適な検索プランの選択が困難になるという問題がある。
そのため、上記問題を解決するため種々の技術が提案されており、例えば、特許文献2では、変数パラメータ付の問合せクエリに対して、変数のパラメータの変化により取り得る全パターンの検索プランを保持し、実行時に確定する方法を提案している。また、特許文献3では、コンパイル時にアクセス条件が確定した部分のみをコンパイルし、残りの部分を実行時に決定することで、見積もりが困難な部分の検索プランを実行時に決定する技術が提案されている。
特開2005−190163号公報 特許第2760794号公報 特許第3434641号公報
ところで、効率の良い検索プランを生成するにはスキーマ情報が多いほどよいが、スキーマ情報を予め用意しておく場合には、スキーマ情報の設計に多くのコストを費やすことや、スキーマ情報に変更があった場合にはスキーマを再設計する必要があるといった問題が生じる。一方、上記従来技術のように、スキーマ情報を予め用意せず登録時に自動抽出を行う場合には、開発者が設計するスキーマ情報と比較して情報量が少なくなり、効率の良い検索プランを生成することが困難となっている。また、スキーマ情報を必要としないことから様々なデータを統合して管理しようとすればするほど共通して得られるスキーマ情報の情報量が低下するという問題がある。
また、従来のプラン生成処理では、検索プランの生成時に用いられるスキーマ等の制約情報は、予め用意されたものが利用されている。そのため、用意された制約情報の情報量が少ない場合、実際には存在する共通の制約や特定の条件下のみ発生する制約、あるいは偶然にある制約となるような特定の特徴を持った場合に、それを利用してクエリ処理を効率化することができなかった。また、従来から存在するパラメータが存在した場合のプラン変更や見積もり誤りの修正によるプラン変更は存在したが、制約情報の変化を考慮するようなものは存在しなかった。そのため、変更する検索プランが既存の検索プラン候補内に限定され、得られた制約情報を他の問合せクエリの検索プラン候補を生成する際に利用することもできなかった。
本発明は上記に鑑みてなされたものであって、より効率的な実行計画を生成することが可能な構造化文書管理装置及び方法を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、複数の構造化文書を記憶する第1記憶手段と、前記構造化文書の構造を定義したスキーマ情報を記憶する第2記憶手段と、特定の要素を含んだ構造化文書の検索を指示する問合せクエリの入力を受け付ける入力手段と、前記問合せクエリの生成言語に基づいて、当該問合せクエリの構文を解析する解析手段と、前記解析手段により解析された前記問合せクエリの構文及び前記スキーマ情報に基づいて、前記第1記憶手段に対する検索コマンドを指示した複数のオペレータからなる前記構造化文書の検索にかかる実行計画を、検索プラン候補として複数生成するプラン候補生成手段と、所定のルールに基づき、前記複数の検索プラン候補から、一の検索プラン候補を最終プラン候補として選択する選択手段と、前記最終プラン候補に含まれる各オペレータの変数部分の状態遷移を表した状態遷移表を生成する状態遷移表生成手段と、前記最終プラン候補に含まれる各オペレータを順次実行し、当該各オペレータの実行毎に得られる前記変数部分の状態に基づいて、検索対象となった前記構造化文書の構造に関する制約を示した制約情報を取得する実行手段と、前記制約情報を新たなスキーマ情報として、前記スキーマ記憶手段に登録する登録手段と、前記実行手段により得られた前記変数部分の状態と、前記状態遷移表の前記変数部分の状態とを比較し、両状態に差異があるか否かを判定する第1判定手段と、前記第1判定手段による判定の結果、差異があると判定された前記状態遷移表の変数部分を更新する更新手段と、前記更新手段により更新された状態遷移表に基づいて、前記最終プラン候補の内容を変更する変更手段と、を備える。
また、本発明は、特定の要素を含んだ構造化文書の検索を指示する問合せクエリの入力を受け付ける入力工程と、前記問合せクエリの生成言語に基づいて、当該問合せクエリの構文を解析する解析工程と、前記解析工程により解析された前記問合せクエリの構文及び前記構造化文書の構造を定義したスキーマ情報に基づいて、複数の構造化文書が格納された文書記憶手段に対する検索コマンドを指示した複数のオペレータからなる前記構造化文書の検索にかかる実行計画を、検索プラン候補として複数生成するプラン候補生成工程と、所定のルールに基づき、前記複数の検索プラン候補から、一の検索プラン候補を最終プラン候補として選択する選択工程と、前記最終プラン候補に含まれる各オペレータの変数部分の状態遷移を表した状態遷移表を生成する状態遷移表生成工程と、前記最終プラン候補に含まれる各オペレータを順次実行し、当該各オペレータの実行毎に得られる前記変数部分の状態に基づいて、検索対象となった前記構造化文書の構造に関する制約を示した制約情報を新たなスキーマ情報として取得する実行工程と、前記実行工程により得られた前記変数部分の状態と、前記状態遷移表の前記変数部分の状態とを比較し、両状態に差異があるか否かを判定する第1判定工程と、前記第1判定工程による判定の結果、差異があると判定された前記状態遷移表の変数部分を更新する更新工程と、前記更新工程により更新された状態遷移表に基づいて、前記最終プラン候補の内容を変更する変更工程と、を含む。
本発明によれば、予め用意したスキーマ情報を用いて、問合せクエリに応じた最終プラン候補を生成し、この最終プラン候補を当該最終プラン候補の実行過程で取得した新たなスキーマ情報を用いて変更することで、より効率的な実行計画(最終プラン候補)へと変更することができる。また、実行処理過程で取得した制約情報は新たなスキーマ情報として次回以降の問合せクエリのプラン候補生成時に利用できるため、他のクエリ処理に関しても効率化を実現することが可能となる。
以下に添付図面を参照して、構造化文書管理装置及び方法の最良な実施形態を詳細に説明する。図1は、構造化文書管理装置100のハードウェア構成を示した図である。図1に示すとおり、構造化文書管理装置100は、CPU(Central Processing Unit)
101、操作部102、表示部103、ROM(Read Only Memory)104、RAM(Random Access Memory)105、通信部106、文書記憶部107等を備え、各部はバス108により接続されている。
CPU101は、RAM105の所定領域を作業領域として、ROM104に予め記憶された各種制御プログラムとの協働により各種処理を実行し、構造化文書管理装置100を構成する各部の動作を統括的に制御する。
また、CPU101は、ROM104に予め記憶された所定のプログラムとの協働により、後述する問合せ構文解析部11、プラン候補生成部12、最終プラン決定部13、オペレータ実行部14、制約情報登録部15、状態遷移表更新部16、プラン変更部17及び制約情報管理部18(図6参照)の各機能部を実現させる。なお、各機能部の動作については後述する。
操作部102は、各種入力キー等を備え、ユーザから操作入力された情報を入力信号として受け付け、その入力信号をCPU101に出力する。
表示部103は、LCD(Liquid Crystal Display)等の表示手段により構成され、CPU101からの表示信号に基づいて、各種情報を表示する。なお、表示部103は、操作部102と一体的にタッチパネルを構成する態様としてもよい。
ROM104は、構造化文書管理装置100の制御にかかるプログラムや各種設定情報等を書き換え不可能に記憶する。
RAM105は、SDRAM等の記憶手段であって、CPU101の作業エリアとして機能し、バッファ等の役割を果たす。
通信部106は、ネットワークを通じ外部の機器との間で通信を行うインターフェースであって、外部機器から送信された各種情報(例えば、後述する問合せクエリやXML文書)をCPU101に出力し、また、CPU101から出力される各種情報(例えば、後述する検索結果)を外部機器へと送信する。
文書記憶部107は、磁気的又は光学的に記録可能な記憶媒体を有し、当該記録媒体に構造化文書データベース(DB)20及びスキーマデータベース(DB)21等データ管理領域が構築されている。
構造化文書DB20には、検索対象となるXMLやSGML等で記述された構造化文書が格納されるものとする。ここで、SGML(Standard Generalized Markup Language)とは、ISO(国際標準化機構)で定められた規格であり、マークアップ言語の一つである。また、XML(eXtensible Markup Language)とは、W3C(World Wide Web Consortium)にて定められた規格であって、マークアップ言語の一つである。以下、構造化文書としてXML形式にて記述された文書(以下、XML文書という)を例に説明をするが、この態様に限らないものとする。
図2は、XML文書の一例を示した図である。ここでは、本の出版年度やタイトル、著者名といった要素を含んだXML文書の例を示している。XML文書では、文書の構造の表現にタグが用いられる。タグには、開始タグと終了タグがあり、文書を構成する各要素を開始タグと終了タグで囲むことにより、文書中の文字列(テキスト)区切りと、そのテキストが構造上どの要素を含むのかを明示的に記述することができるようになっている。
ここで、開始タグとは、要素名称を記号「<」、「>」で囲んだものであり、終了タグとは開始タグの要素名称と同一の要素名称を記号「</」、「>」で囲んだものである。これら開始タグと終了タグとの組により挟まれた構成要素の内容が、当該開始タグの要素名称に属していることを意味する。また、開始タグと終了タグとの組に挟まれた構成要素に、他の開始タグと終了タグとの組がさらに存在するような場合には、この他の開始タグの要素名称が、当該他の開始タグを挟む開始タグの要素名称に属していることを意味する。
構造化文書DB20は、検索対象となる各XML文書を、当該XML文書に含まれる各要素名称をノードとし、構成要素の内容を索引、即ちノードIDとする木構造で記憶・管理する。なお、本実施形態では、B木によるデータ構造により各XML文書を記憶・管理するものとする。
図3及び図4は、図2に示したXML文書に関係するスキーマ情報を示している。ここで、図3はDTD(Document Type Definition)と呼ばれる形式の構造化文書のスキーマ情報であって、スキーマDB21の文書スキーマ211に予め登録されている。DTDは、要素宣言、属性宣言、実体宣言等の宣言集合から構成される。図3では、「bib」、「book」、「title」、「editor」、「author」、「first」、「last」といった要素宣言を行っている。
ここで、「bib」は、複数の「book」と1つの「title」から構成されることを示している。なお要素宣言の末尾に付加されるアスタリスク(*)は、当該要素宣言の0個以上の繰り返しを許容することを意味している。また、「author」は、「first」と「last」から構成されていることを示している。
図4は、XML文書の登録時に、後述する制約情報管理部18により抽出された、構造テンプレートの一例を示した図である。この構造テンプレートは、登録対象となったXML文書を構文解析することで得られるXML文書の構造上の制約を示しており、抽出された構造テンプレートはスキーマ情報として、スキーマDB21の文書スキーマ211に登録される。図4に示した構造テンプレートでは、XML文書に現れる構造パスに対するその出現数の情報を構造テンプレートとして挙げている。
また、クエリスキーマ212には、後述する制約情報登録部15により取得される、問合せクエリに対応する最終プラン候補の実行時の制約情報が、スキーマ情報として登録される。
本実施形態の構造化文書管理装置100では、DTD形式又は構造テンプレート形式の何れか一方のスキーマ情報のみを文書スキーマ211に記憶し、このスキーマ情報を後述するプラン候補の生成時に用いるものとする。なお、この態様に限らず、例えば、DTD形式及び構造テンプレート形式のスキーマ情報をともに文書スキーマ211に記憶し、問合せクエリの内容に応じ、上述したDTD形式及び構造テンプレート形式の何れか一方のスキーマ情報を、後述するプラン候補の生成時に用いる態様としてもよい。
図5は、通信部106等を介して入力される問合せクエリ32の例を示した図である。ここでは、XML文書の問合せ言語として、XQueryを用いて記述された三つの問合せクエリ(クエリ1、クエリ2、クエリ3)を示している。
図6は、構造化文書管理装置100の機能的構成を示したブロック図である。図6に示すように、構造化文書管理装置100は、問合せ構文解析部11、プラン候補生成部12、最終プラン決定部13、オペレータ実行部14、制約情報登録部15、状態遷移表更新部16、プラン変更部17及び制約情報管理部18を有している。
問合せ構文解析部11は、構文解析手段として機能するものであり、入力された問合せクエリの構文を当該問合せクエリの生成言語に基づいて解析する。
プラン候補生成部12は、プラン候補生成手段として機能するものであり、問合せ構文解析部11による構文解析の結果、文書記憶部107のスキーマDB21等に格納された情報に基づいて、実行可能な検索プラン候補を生成する。以下、プラン候補生成部12による検索プラン候補の生成について説明する。
図7は、上記したスキーマ情報に基づいて生成された、クエリ1〜3に対する検索プラン候補の例を示した図である。図7に示したように、プラン候補生成部12は、クエリ1〜3の指示内容に基づいて、構造化文書DB20に対する検索コマンドを指示した複数のオペレータからなる検索プラン(実行計画)を、検索プラン候補として複数生成する。ここで、図7では、(1)〜(13)で示したコマンドの夫々がオペレータを意味しており、これらオペレータの組み合わせから、3つの検索プラン候補(検索プラン候補1(1’)、2、3)が生成されたものとする。なお、検索プラン候補1と検索プラン候補1’とは、同一の手順を指示する検索プラン候補であるが、そのオペレータの内容が一部異なるものである。
検索プラン候補1及び1’では、最初にオペレータ(1)において「bib/book/@year」ノードに属する索引を構造化文書DB20から取得し、この条件を満たすノードIDを「変数$_t1」に格納している。次にオペレータ(2)において「変数$_t1」に格納されたノードIDから親ノードを取得し、そのノードIDを「変数$_t2」に格納している。
次にオペレータ(3)において「変数$_t2」に格納されたノードIDから子ノード「author(又はtitle)」を取得し、そのノードIDを「変数$_t3」に格納している。次にオペレータ(4)において「変数$_t3」に格納されたノードIDから比較条件を満たすもののみを残すよう処理している。以上の処理により全ての条件式を満たすノード「book」が格納された「変数$_t2」を検索結果として取得しているが、検索プラン候補1では「変数$_t2」内に存在する可能性があるノードIDのうち、重複するノードIDを削除するため、オペレータ(12)において「変数$_t2」をID番号に基づいてソートし、最後にオペレータ(13)によりソートされたノードIDを順にチェックして重複したノードIDを削除している。なお、検索プラン候補1’ではオペレータ(12)、(13)の処理は省略されている。
検索プラン候補2は、オペレータ(1)及び(2)までは検索プラン候補1(1’)と同様であるが、次のオペレータ(5)の処理で「bib/book/author(又はtitle)」ノードに対する索引から条件を満たすノード「変数$_t3」を取得する。次にオペレータ(10)で「変数$_t3」の親ノードである「変数$_t2」を取得する。さらにオペレータ(11)においてオペレータ(2)及び(10)で取得した「変数$_t2」から共通に存在するノードIDのみを残す。残りのオペレータ(12)、(13)は検索プラン候補1と同様である。
検索プラン候補3は、索引を使わずにXMLのノードを順に降りていって各条件を満たすノードを取得するようにオペレータ(6)、(7)、(8)、(9)、(3)、(4)を実行し、検索プラン候補1と同様にオペレータ(12)、(13)を実行する。
図8は、クエリ1〜3に対する検索プラン候補1と検索プラン候補1’との関係を示した図である。ここで、検索プラン候補1は、スキーマ情報として構造テンプレートを用いた場合での、クエリ1、2、3に対する検索プラン候補であることを示している。また、検索プラン候補1は、スキーマ情報としてDTDを用いた場合での、クエリ2、3に対する検索プラン候補であることを示している。検索プラン候補1’は、スキーマ情報としてDTDを用いた場合での、クエリ1に対する検索プラン候補であることを示している。
図6に戻り、最終プラン決定部13は、選択手段及び状態遷移表生成手段として機能するものであり、所定のルールに基づいて、プラン候補生成部12で生成された複数の検索プラン候補から、一の検索プラン候補を最終プラン候補として選択し、当該最終プラン候補に含まれる各オペレータの変数部分の状態遷移を表した状態遷移表を生成する。
具体的に、最終プラン決定部13は、プラン候補生成部12により生成された上記3つの検索プラン候補の夫々について、各検索プラン候補で指示されたオペレータの組み合わせを順次実行した際の所要時間を見積もり、この所用時間を見積もりコストとして導出する。そして、プラン候補生成部12は、見積もりコストが最も低い検索プラン候補、即ち、実行した際の所用時間が最も短くなる検索プラン候補を最終プラン候補として決定する。なお、本実施形態では、図7中の検索プラン候補1(1’)が最終プラン候補として決定されたものとする。
図9−1は、検索プラン候補1に含まれる各オペレータの内容を示した図であり、図9−2は、検索プラン候補1の状態遷移表を示した図である。また、図10−1は、検索プラン候補1’に含まれる各オペレータの内容を示した図であり、図10−2は、検索プラン候補1’の状態遷移表を示した図である。ここで、状態遷移表は、各オペレータの実行後における変数部分の状態を、各オペレータに実行順序に沿って示したものである。変数部分の状態の一例としては、IDに関するソート状態や重複状態、値に関するソート状態や重複状態、型情報等が挙げられる。以下、図9−2及び図10−2を参照して、状態遷移表に含まれた各変数部分の状態について説明する。
図9−2、10−2に示したように、オペレータ(1)の実行後では、検索プラン候補1及び検索プラン候補1’では「変数$_t1」に格納されるノードIDはともにユニークとなり、その値の大きさ順にソートした状態で取得される。これは、索引がB木で構築されているためであり、索引が返す変数部分の状態の特性に起因するものである。また、オペレータ(2)の実行後においても「変数$_t1」の状態は変化せず、「変数$_t2」では格納されるノードIDがユニークとなる。これは「変数$_t2」に格納されるノードIDに対して親ノードは1つしか存在しないため、「変数$_t1」がユニークであれば「変数$_t2」もユニークとなるためである。
次に、検索プラン候補1では、図9−2に示したように、オペレータ(3)において「変数$_t1」及び「変数$_t2」でのノードIDのユニーク性は消失する。これは図3及び図4におけるDTD及び構造テンプレートのいずれにおいても「変数$_t2」の「book」ノードに対して子ノード「author」が1つであることが保証されていないためである。そのため「author」が複数になった場合、各「author」に対して同じbookノードが対応付けられるため、IDのユニーク性は失われる。
子ノード「title」に関しては、図3のDTDでは必ず1つ持つことがスキーマ情報から判明するため、図10−2に示した検索プラン候補1’の状態遷移表のように、「変数$_t1」及び「変数$_t2」でのノードIDはユニーク性を維持する。しかしながら、図4に示した構造テンプレートのスキーマ情報では、「title」ノードが1つであることを保証できないため検索プラン候補1のようにユニーク性の保証が失われた状態となる。
続くオペレータ(4)では、条件を満たさないノードを削除するだけなので、検索プラン候補1及び検索プラン候補1’ともに、オペレータ(3)の状態から変化しない。ここで、検索プラン候補1’の状態遷移表では、図10−2に示したように、オペレータ(4)の後でも「変数$_t2」のIDはユニークである。そのため、ノードIDをユニークにするための処理であるオペレータ(12)、(13)が不要となる。このように、図3に示したDTDが文書スキーマ211に予め記憶されており、且つ、図2に示したクエリ1が入力された場合では、検索プラン候補1‘を生成することが可能となり、他の場合と比較して無駄な処理を回避することが可能となる。
図6に戻り、オペレータ実行部14は、実行手段として機能するものであり、生成された検索プラン候補内において処理されていないオペレータが存在する場合はそのオペレータを実行し、存在しない場合は得られた検索結果を、通信部106等を介してクライアント端末に提供する。
オペレータ実行部14は、オペレータを処理する際に入力された変数に対して演算処理を実施していく過程で、保持している変数や新たに作成する変数や変数間が持つ制約情報を検出する。ここで得られる制約情報とは、ノード間の関係や、ノードのIDや値の順序性、型情報等が例として挙げられる。特にノード間の関係は、構造化文書特有の重要な情報であり、このような情報を検出することはクエリの最適化において重要な役割を果たす。
また、ここで得られる制約情報は、文書スキーマ211に記憶した汎用的に用いるスキーマ情報では定義するこが不可能な特定の条件下における制約情報(制約条件)であって、例えば、現在登録されたXML文書においてのみ成立するような制約情報となっている。このような制約情報は、最終プラン候補の実行時以外で取得することが困難なものであるため、本実施形態では、最終プラン候補に含まれた各オペレータの実行時に、制約情報の取得を行い、この制約情報を新たなスキーマ情報とする。
以下、図11及び図12を参照して、制約情報の取得について説明する。図11−1は、図7の検索プラン候補1を最終プラン候補として採用し、クエリ1についてオペレータ(3)を実行した場合での制約情報の取得過程を説明するための図である。オペレータ実行部14は、クエリ1において、オペレータ(1)及び(2)を実行した結果、全ての「book」ノードが「変数$_t2」に格納されたことを検出する。
この状態において、オペレータ実行部14は、オペレータ(3)の実行により、「book」ノードから「title」ノードを取得していく際に、1つの「book」ノードから取得される「title」ノードの個数を記憶することで、「book」と「title」ノードが1対1の関係、即ちユニークに存在していることを検出する。そして、オペレータ実行部14は、図2で示した構造化文書に基づき、全ての索引に「book」の要素が格納されていることを確認すると、制約情報として図11−2に示した<!ELEMENT book (title)>を取得する。これは図3のDTDにおいては既に定義されているが、図4の構造テンプレートの場合には定義されていないため、新たな制約情報(スキーマ情報)として取得を行う。
また図12−1は、図7の検索プラン候補1を最終プラン候補として採用し、クエリ3についてオペレータ(3)を実行した場合での制約情報の取得過程を説明するための図である。オペレータ実行部14は、クエリ3について、オペレータ(1)及び(2)を実行した結果、4件中2件の「book」ノードが「変数$_t2」に格納されたことを検出する。
この状態において、オペレータ実行部14は、オペレータ(3)により「book」ノードから「author」ノードを取得していく際に、1つの「book」ノードから取得される「author」ノードの個数を記憶することで「book」と「author」ノードとが1対1の関係、即ちユニークに存在していることを検出する。この場合、オペレータ実行部14は、図3で示した構造化文書に基づき、属性「year」が1999以上の値を満たす「book」ノードにのみ「author」ノードが格納されていると判断するため、オペレータ実行部14は、条件付の制約情報として、図12−2で示した<!ELEMENT book (author)> 条件 @year>=1999を取得する。これは図3のDTDにも定義されておらず、何れのスキーマにおいても新たな制約情報として取得される。これらの情報はオペレータ実行中の処理を利用して取得されるため少ないコストで処理することが可能である。
図6に戻り、制約情報登録部15では、登録手段として機能するものであり、オペレータ実行部14において検出した制約情報を、スキーマDB21のクエリスキーマ212に登録する。ここで、制約情報を登録する際には、登録の妥当性を検証した後、所定の基準を満たしたもののみを登録するものとする。なお、妥当性の判断基準は無条件でも良いし、一定の汎用性があると判断した場合のみでも良い。また、クエリスキーマ212で既に登録されたクエリスキーマの制約情報を包含するものであればその制約情報を上書きしても良い。また、クエリスキーマ212で既に登録されたクエリスキーマの制約情報に包含されるような場合には、妥当性がないと判断し登録しないよう制御してもよい。また、クエリスキーマ212の登録数が多くなったと判断した場合には、予め定められた閾値に基づいてクエリスキーマ212内の制約情報を削除し、登録数が増えすぎないよう制御する態様としてもよい。
図13は、クエリスキーマ212に格納(追加)された制約情報(DTD)の一例を示した図である。ここでは、クエリ1〜3を、図4に示した構造テンプレートを用いて実行した際に取得された制約情報を示している。このように、取得した制約情報をクエリスキーマ212に格納することで、次回以降のクエリに関しては、プラン候補を生成する際にこの制約情報を参照することが可能となる。
状態遷移表更新部16は、第1判定手段及び更新手段として機能するものであり、オペレータ実行部14で検出した制約情報から得られる変数部分の状態が、最終プラン決定部13で取得された状態遷移表と異なるか否かを判定し、異なる場合は状態遷移表の変数部分の状態を順次更新する。
図14は、状態遷移表更新部16により更新された状態遷移表の一例を示した図である。ここで、図14は、図9−2で示した状態遷移表が更新されたものであって、クエリ1に対し検索プラン候補1を最終プラン候補として採用した場合での、オペレータ(3)実行後における各変数部分の状態に基づいて変更された状態を示している。
具体的に、状態遷移表更新部16は、オペレータ実行部14での実行時における各オペレータの変数部分の状態と、図9−2で示した状態遷移表での各オペレータ実行時における変数部分の状態とを比較し、両状態に差異があるか否かを判定する。そして、状態遷移表更新部16は、両状態に差異があると判定すると、差異を確認した状態遷移表の変数部分の状態を順次更新して行く。
図14の状態遷移表では、更新された変数部分の状態を破線で示しており、オペレータ(3)、(4)において、「変数$_t1」及び「変数$_t2」のノードIDがユニークとなるよう状態が更新されており、また、オペレータ(12)において、「変数$_t2」のノードIDがユニークとなるよう状態が更新されている。
プラン変更部17は、変更手段として機能するものであり、状態遷移表更新部16において状態遷移表が更新された場合、更新された情報により最終プラン候補を変更するべきか否かを判定し、変更する場合は最終プラン候補を更新する。なお、最終プラン候補の変更は、全てのオペレータを実行した後に行う態様としてもよいし、各オペレータの実行途中において、処理済みのオペレータから得られた結果に基づき、未処理のオペレータ部分に関してのみ変更する態様としてもよい。また、各オペレータの実行途中で処理を中段し、処理済みのオペレータから得られた結果に基づいて、新たな最終プラン候補を生成し直す態様としてもよい。
図15は、図14の状態遷移表に基づいて、検索プラン候補1を変更する際の過程を説明するための図である。プラン変更部17は、更新後の状態遷移表に基づいて、上述した検索プラン候補1に含まれる各変数の値をオペレータの実行順序に応じて順次検証する。
具体的に、プラン変更部17は、まずオペレータ(1)において「bib/book/@year」属性ノードに対する索引から、条件「1990(1999)以上」を満たすノードIDを「変数$_t1」に格納する。次にプラン変更部17は、オペレータ(2)において「変数$_t1」に格納されたノードIDから親ノードを取得し、そのノードIDを「変数$_t2」に格納する。
次にプラン変更部17は、オペレータ(3)において「変数$_t2」に格納されたノードから子ノード「author(又はtitle)」を取得して「変数$_t3」に格納する。ここで、オペレータ(3)に終了後における「変数$_t1」及び「変数$_t2」のノードIDの状態は、図14からも明らかなようにユニークとなる。
続いてプラン変更部17は、オペレータ(4)において「変数$_t3」に格納されたノードIDから比較条件を満たすもののみを残すように処理する。なお、このオペレータ(4)実行後においても、「変数$_t2」に格納されたノードIDの状態は、ユニークのまま維持される。
次いでプラン変更部17は、「変数$_t2」のノードIDをユニークにするために実施する上述したオペレータ(12)及び(13)の処理において、両処理の実施に伴う追加条件「変数$_t2=not(IDユニーク)&&not(IDソート)」及び「変数$_t2=not(IDユニーク)」、即ち、「変数$_t2」のノードIDがユニークでないことを前提とする条件から、両処理を不要と判断し、当該オペレータ(12)及び(13)を削除することで、最終プラン候補である検索プラン候補1の内容を変更する。
図16は、変更後の検索プラン候補1の内容を示した図である。図16に示したように、変更後の検索プラン候補1は、従前の検索プラン候補1よりも見積もりコストの低い検索プラン候補1’と同様の内容となっている。このように、プラン変更部17では、実行中に検出された制約情報及び更新後の状態遷移表を利用して、最終プラン決定部13で決定された最終プラン候補を、より効率的な最終プラン候補へと変更する。
図17は、プラン変更後における、各クエリに対する検索プラン候補1と検索プラン候補1’との関係を示した図である。ここでは、図16で示したように変更後の検索プラン候補1が検索プラン候補1’と同様であることから、変更後の検索プラン候補1を検索プラン候補1’として示している。なお、検索プラン候補1については、図9−1で示した変更前の状態にあるものとする。
図17において、「プラン更新後」にかかるカラムは、プラン変更後における各クエリに対する検索プラン候補1と、検索プラン候補1’との関係を示している。ここで、クエリ2に対しては変更後の検索プラン候補1が用いられるようになっており、クエリ1、3に対しては検索プラン候補1’が用いられるようになっている。即ち、プラン更新後は、スキーマ情報として構造化テンプレート又はDTDを用いた場合よりも、見積もりコストの低くなる検索プラン候補1’を多く用いて問合せクエリを処理することができるため、より効率的な処理を実現することが可能となる。
また、次回以降入力される問合せクエリについての検索プラン候補の生成に際し、プラン候補生成部12は、文書スキーマ211に格納されたスキーマ情報とともに、クエリスキーマ212に格納されたスキーマ情報(制約情報)を用いることで、クエリ内容に応じて最適化された検索プラン候補を生成することが可能となる。例えば、次にクエリ1又3が入力された場合には、最適化された図16と同様の検索プラン候補を生成することができる。
制約情報管理部18は、制約情報管理手段として機能するものであり、入力されたXML文書を文書記憶部107の構造化文書DB20に登録するとともに、当該XML文書を生成言語に基づいて構文解析することで、この構文解析結果から構造テンプレートを抽出し、文書スキーマ211に登録する。なお、構造テンプレートによるスキーマ情報を用いない態様とする場合には、文書スキーマ211への登録は行わないものとする。
また、制約情報管理部18は、XML文書から抽出した構造テンプレートが、クエリスキーマ212に格納されたスキーマ情報による条件を満たすか否かを判定し、満たさないと判定した場合には、この制約情報をクエリスキーマ212から削除する。このように、実行中に取得した制約情報の妥当性を検査することで、有用な制約情報のみをスキーマ情報として保持することができる。なお、XML文書登録時における制約情報の検査にかかるコストを省くために、新たなXML文書が登録された時点でクエリスキーマ212に格納された制約情報を削除する態様としてもよい。この場合、問合せクエリの実行中に得られた制約情報は、新たなXML文書が登録される毎にクリアされることになる。
以上のように、本実施形態の構造化文書管理装置100によれば、予め用意したスキーマ情報を用いて、問合せクエリに応じた最終プランを生成し、この最終プランを当該最終プランの実行過程で取得した新たなスキーマ情報を用いて変更することで、より効率的な実行計画(最終プラン候補)へと変更することができる。また、実行処理過程で取得した制約情報は新たなスキーマ情報として次回以降の問合せクエリのプラン候補生成時に利用できるため、他のクエリ処理に関しても効率化を実現することが可能となる。
以上、発明の実施の形態について説明したが、本発明はこれに限定されるものではなく、本発明の主旨を逸脱しない範囲での種々の変更、置換、追加等が可能である。
構造化文書管理装置の物理的構成を示した図である。 構造化文書の例を示した図である。 スキーマ情報の例を示した図である。 スキーマ情報の例を示した図である。 問合せクエリの例を示した図である。 構造化文書管理装置の機能的構成を示した図である。 検索プラン候補の例を示した図である。 検索プラン候補1と検索プラン候補1’との関係を示した図である。 検索プラン候補1の内容を示した図である。 検索プラン候補1の状態遷移表を示した図である。 検索プラン候補1’の内容を示した図である。 検索プラン候補1’の状態遷移表を示した図である。 制約情報の取得過程を説明するための図である。 制約情報の例を示した図である。 制約情報の取得過程を説明するための図である。 制約情報の例を示した図である。 制約情報の例を示した図である。 検索プラン候補1の状態遷移表の例を示した図である。 プラン変更部17の動作を説明するための図である。 検索プラン候補1の内容を示した図である。 検索プラン候補1と検索プラン候補1’との関係を示した図である。
符号の説明
100 構造化文書管理装置
101 CPU
102 操作部
103 表示部
104 ROM
105 RAM
106 通信部
107 文書記憶部
108 バス
11 問合せ構文解析部
12 プラン候補生成部
13 最終プラン決定部
14 オペレータ実行部
15 制約情報登録部
16 状態遷移表更新部
17 プラン変更部
18 制約情報管理部
20 構造化文書データベース(DB)
21 スキーマデータベース(DB)
211 文書スキーマ
212 クエリスキーマ

Claims (5)

  1. 複数の構造化文書を記憶する第1記憶手段と、
    前記構造化文書の構造を定義したスキーマ情報を記憶する第2記憶手段と、
    特定の要素を含んだ構造化文書の検索を指示する問合せクエリの入力を受け付ける入力手段と、
    前記問合せクエリの生成言語に基づいて、当該問合せクエリの構文を解析する解析手段と、
    前記解析手段により解析された前記問合せクエリの構文及び前記スキーマ情報に基づいて、前記第1記憶手段に対する検索コマンドを指示した複数のオペレータからなる前記構造化文書の検索にかかる実行計画を、検索プラン候補として複数生成するプラン候補生成手段と、
    所定のルールに基づき、前記複数の検索プラン候補から、一の検索プラン候補を最終プラン候補として選択する選択手段と、
    前記最終プラン候補に含まれる各オペレータの変数部分の状態遷移を表した状態遷移表を生成する状態遷移表生成手段と、
    前記最終プラン候補に含まれる各オペレータを順次実行し、当該各オペレータの実行毎に得られる前記変数部分の状態に基づいて、検索対象となった前記構造化文書の構造に関する制約を示した制約情報を取得する実行手段と、
    前記制約情報を新たなスキーマ情報として、前記スキーマ記憶手段に登録する登録手段と、
    前記実行手段により得られた前記変数部分の状態と、前記状態遷移表の前記変数部分の状態とを比較し、両状態に差異があるか否かを判定する第1判定手段と、
    前記第1判定手段による判定の結果、差異があると判定された前記状態遷移表の変数部分を更新する更新手段と、
    前記更新手段により更新された状態遷移表に基づいて、前記最終プラン候補の内容を変更する変更手段と、
    を備えたことを特徴とする構造化文書管理装置。
  2. 前記選択手段は、前記複数の検索プラン候補の実行時間を見積もり、当該実行時間が最も短い検索プラン候補を、前記最終プラン候補として選択することを特徴とする請求項1に記載の構造化文書管理装置。
  3. 前記文書記憶手段に新たな構造化文書を登録する際に、当該構造化文書の構造が前記スキーマ情報として登録された制約情報を満たすか否かを判定する第2判定手段と、
    前記第2判定手段による判定の結果、満たさないと判定された制約情報を削除する削除手段と、
    を更に備えたことを特徴とする請求項1に記載の構造化文書管理装置。
  4. 前記実行手段は、前記検索対象となった構造化文書に含まれる各要素間の関係に基づいて、前記制約情報を取得することを特徴とする請求項1に記載の構造化文書管理装置。
  5. 特定の要素を含んだ構造化文書の検索を指示する問合せクエリの入力を受け付ける入力工程と、
    前記問合せクエリの生成言語に基づいて、当該問合せクエリの構文を解析する解析工程と、
    前記解析工程により解析された前記問合せクエリの構文及び前記構造化文書の構造を定義したスキーマ情報に基づいて、複数の構造化文書が格納された文書記憶手段に対する検索コマンドを指示した複数のオペレータからなる前記構造化文書の検索にかかる実行計画を、検索プラン候補として複数生成するプラン候補生成工程と、
    所定のルールに基づき、前記複数の検索プラン候補から、一の検索プラン候補を最終プラン候補として選択する選択工程と、
    前記最終プラン候補に含まれる各オペレータの変数部分の状態遷移を表した状態遷移表を生成する状態遷移表生成工程と、
    前記最終プラン候補に含まれる各オペレータを順次実行し、当該各オペレータの実行毎に得られる前記変数部分の状態に基づいて、検索対象となった前記構造化文書の構造に関する制約を示した制約情報を新たなスキーマ情報として取得する実行工程と、
    前記実行工程により得られた前記変数部分の状態と、前記状態遷移表の前記変数部分の状態とを比較し、両状態に差異があるか否かを判定する第1判定工程と、
    前記第1判定工程による判定の結果、差異があると判定された前記状態遷移表の変数部分を更新する更新工程と、
    前記更新工程により更新された状態遷移表に基づいて、前記最終プラン候補の内容を変更する変更工程と、
    を含むことを特徴とする構造化文書管理方法。
JP2007085975A 2007-03-28 2007-03-28 構造化文書管理装置及び方法 Pending JP2008243075A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007085975A JP2008243075A (ja) 2007-03-28 2007-03-28 構造化文書管理装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007085975A JP2008243075A (ja) 2007-03-28 2007-03-28 構造化文書管理装置及び方法

Publications (1)

Publication Number Publication Date
JP2008243075A true JP2008243075A (ja) 2008-10-09

Family

ID=39914294

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007085975A Pending JP2008243075A (ja) 2007-03-28 2007-03-28 構造化文書管理装置及び方法

Country Status (1)

Country Link
JP (1) JP2008243075A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013003695A (ja) * 2011-06-14 2013-01-07 Toshiba Corp 分散データベース検索装置、分散データベース検索方法、及びプログラム
JP2016500454A (ja) * 2012-11-30 2016-01-12 アマゾン テクノロジーズ インク システム全体のクエリ最適化
WO2017099059A1 (ja) * 2015-12-08 2017-06-15 日本電気株式会社 文書処理装置、方法および記憶媒体

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013003695A (ja) * 2011-06-14 2013-01-07 Toshiba Corp 分散データベース検索装置、分散データベース検索方法、及びプログラム
JP2016500454A (ja) * 2012-11-30 2016-01-12 アマゾン テクノロジーズ インク システム全体のクエリ最適化
US11113280B1 (en) 2012-11-30 2021-09-07 Amazon Technologies, Inc. System-wide query optimization
US11249997B1 (en) 2012-11-30 2022-02-15 Amazon Technologies, Inc. System-wide query optimization
WO2017099059A1 (ja) * 2015-12-08 2017-06-15 日本電気株式会社 文書処理装置、方法および記憶媒体

Similar Documents

Publication Publication Date Title
US7293018B2 (en) Apparatus, method, and program for retrieving structured documents
US8805861B2 (en) Methods and systems to train models to extract and integrate information from data sources
JP4314221B2 (ja) 構造化文書記憶装置、構造化文書検索装置、構造化文書システム、方法およびプログラム
US7197510B2 (en) Method, system and program for generating structure pattern candidates
JP5121146B2 (ja) 構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法
JP6720641B2 (ja) 多言語データティアのデータ制約
US7822788B2 (en) Method, apparatus, and computer program product for searching structured document
US20080250394A1 (en) Synchronizing external documentation with code development
US8850309B2 (en) Optimized methods and devices for the analysis, processing and evaluation of expressions of the XPath type on data of the binary XML type
JP2008052662A (ja) 構造化文書管理システム及びプログラム
US8595215B2 (en) Apparatus, method, and computer program product for processing query
US20090240675A1 (en) Query translation method and search device
US9594783B2 (en) Index selection for XML database systems
CN113177168A (zh) 一种基于Web元素属性特征的定位方法
KR101221306B1 (ko) 데이터 구조를 항해하기 위한 방법 및 시스템
US8086561B2 (en) Document searching system and document searching method
JP2008243075A (ja) 構造化文書管理装置及び方法
US8200714B2 (en) Apparatus, systems and methods for configurable defaults for XML data
JP2006127235A (ja) 構造化文書管理システム、構造化文書管理方法及びプログラム
KR101014492B1 (ko) 관계형 데이터 모델 기반 스트리밍 데이터 처리를 위한 연속질의 언어 기반 연속질의 처리기 및 방법
JP5439606B1 (ja) 構造化文書管理装置、方法およびプログラム
JP3842574B2 (ja) 情報抽出方法および構造化文書管理装置およびプログラム
JP5296128B2 (ja) 構造化文書管理装置、方法およびプログラム
JP5422751B1 (ja) 構造化文書管理装置、方法およびプログラム
JP2010231332A (ja) 情報処理システム、アクセスパス決定方法及びアクセスパス決定プログラム