Nothing Special   »   [go: up one dir, main page]

JP4724177B2 - Xmlデータにアクセスするためのインデックス - Google Patents

Xmlデータにアクセスするためのインデックス Download PDF

Info

Publication number
JP4724177B2
JP4724177B2 JP2007507497A JP2007507497A JP4724177B2 JP 4724177 B2 JP4724177 B2 JP 4724177B2 JP 2007507497 A JP2007507497 A JP 2007507497A JP 2007507497 A JP2007507497 A JP 2007507497A JP 4724177 B2 JP4724177 B2 JP 4724177B2
Authority
JP
Japan
Prior art keywords
index
node
xml
data
xml document
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
JP2007507497A
Other languages
English (en)
Other versions
JP2007533008A (ja
Inventor
チャンドレースカー,シバサンカラン
マーシー,ラビ
スソー,アシシュ
トラン,アン−トゥアン
ムッカマーラ,スリーダール
セドラー,エリック
アガワル,ニプン
Original Assignee
オラクル・インターナショナル・コーポレイション
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
Priority claimed from US10/884,311 external-priority patent/US7499915B2/en
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2007533008A publication Critical patent/JP2007533008A/ja
Application granted granted Critical
Publication of JP4724177B2 publication Critical patent/JP4724177B2/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/81Indexing, e.g. XML tags; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (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

優先権主張
本願は、2004年4月9日に出願され「さまざまな記憶フォーマットで記憶されたXMLデータについてのXMLインデックス(“XML INDEX FOR XML DATA STORED IN VARIOUS STORAGE FORMATS”)」と題された米国仮特許出願連続番号第60/560,927号と、2004年6月16日に出願され「さまざまな記憶フォーマットで記憶されたXMLデータについてのXMLインデックス(“XML INDEX FOR XML DATA STORED IN VARIOUS STORAGE FORMATS”)」と題された米国仮特許出願番号第60/580,445号との優先権を主張し、その内容全体が、あらゆる目的で引用によりこの明細書中に援用されている。
発明の分野
この発明は情報の管理に関し、より具体的には、XML文書に含まれる情報へのアクセスに関する。
背景
近年、拡張可能なマークアップ言語データ(「XMLデータ」)の記憶およびクエリを可能にする多くのデータベースシステムが存在する。XMLへのクエリための多くの規格が発展してきているが、それらはすべて、XPathの変形例をいくつか含む。しかしながら、データベースシステムは、通常、XPathクエリに対応するよう最適化されておらず、データベースシステムのクエリ性能には改善の余地が大いにある。XMLスキーマ定義が利用可能であり得る特定の場合には、XMLインスタンス文書において用いられる構造およびデータ型(datatype)は既知であり得る。しかしながら、XMLスキーマ定義が利用可能ではなく、探索すべき文書がいかなるスキーマにも準拠していない場合、XPathを用いるクエリのための効率的な技術は存在しない。
いくつかのデータベースシステムは、アドホック機構を用いて、文書のスキーマが未知である文書に対して実行されるXPathクエリを満たし得る。たとえば、データベースシステムは、すべての文書のフルスキャンを実行することによってXPathクエリを満たし得る。すべての文書のフルスキャンを用いてすべてのXPathクエリを満たすことができるが、インデックスが不足しているので、それは非常にゆっくりと実現されることとなる。
XPathクエリを満たす別の方法には、テキストキーワードの使用が含まれる。具体的には、多くのデータベースシステムがテキストインデックスをサポートし、これらは、ある一定のXPathを満たすのに用いられ得る。しかしながら、この技術は、XPathクエリの小さなサブセットしか満たすことができない。このため、既存のデータベースシステムには、多種多様なXPathクエリに対処するのに用いることのできる有効なインデックス付け技術がなかった。
この段落に記載される方策は追求可能な方策であるが、必ずしもこれまでに構想または追求された方策であるとは限らない。したがって、特に指定のない限り、この段落に記載されている方策のいずれも、単にこの段落に含まれているというだけで先行技術であると見なされるべきではない。
この発明は、同様の参照番号が同様の要素を指している添付の図面の図において、限定
ではなく例示のために説明される。
詳細な説明
以下の記載においては、説明する目的で、この発明のさまざまな実施例を完全に理解させるために多数の具体的な詳細が述べられている。しかしながら、この発明がこれらの具体的な詳細なしに実施可能であることが認識されるだろう。他の場合には、この発明を不必要に曖昧にすることを避けるために、周知の構造および装置はブロック図の形で示されている。
機能概要
XML文書における経路、値および順序の情報にインデックス付けするための機構が提供される。当該機構は、実際のXMLデータを記憶するのに用いられるフォーマットおよびデータ構造(「ベース構造」)に係らず、用いることができる。たとえば、実際のXMLデータは、データベースの内部または外部の構造において、CLOB(実際のXMLテキストを記憶するキャラクタLOB)、O-R(XMLスキーマがある状態でのオブジェクトリレーショナル構造化形式)、または、BLOB(XMLの何らかのバイナリ形式を記憶するバイナリLOB)などのいかなる形式でも存在し得る。
ここで説明される技術は、インデックスを集合的に構成しXMLデータにアクセスするための1組の構造の使用を含む。一実施例に従うと、(この明細書中で「XMLインデックス」と称される)インデックスは3つの論理構造、すなわち、経路インデックス、順序インデックスおよび値インデックス、を含む。一実施例においては、3つの論理構造はすべて、この明細書においてPATH_TABLEと称される単一のテーブルに存在する。
XPathクエリ言語のうち最も一般的に用いられる部分は、値に基づいたナビゲーション(親−子−子孫)アクセスおよびプレディケイトを含む。後により詳細に説明されるように、経路、値および順序の情報を追跡することにより、XMLインデックスを用いてこれらのアクセス方法をともに有効に満たすことができる。加えて、XMLインデックスの実施例がいかに実現されるかに応じて、XMLインデックスを用いることにより結果として以下の利点のうちの1つ以上が得られる。すなわち、(1)XPathベースのクエリの探索性能の向上。これは、経路適合ならびに値(value)プレディケイトを含む。(2)フラグメントがXPath表現によって識別される場合のフラグメント抽出の処理。(3)適切なXMLスキーマ定義がある状態での、値プレディケイトに関するデータ型認識。(4)新しい定義を追加することによってXMLスキーマおよびXMLインデックスを発展させる能力に対するサポート。(5)子および子孫の軸、ならびに同等性および範囲のプレディケイトを含む大きなクラスのXPath表現の処理。(6)経路またはネーム空間の特定された組を含むかまたはインデックスから除外することによって、インデックス付けされた経路の組を制御するユーザの能力。これは、フォーマッティングなどに関するタグがインデックスから省かれている文書向きのシナリオにおいて特に有用である。(7)インデックスに記憶される実際のテキスト値のカスタマイゼーションの可能化。たとえば、余白が取除かれており、大文字小文字の区別なし。(8)インデックスの大容量負荷および並行したインデックス作成のためのサポートについての良好な性能。
XML文書の例
説明の目的で、以後、以下の2つのXML文書を参照して例を挙げる。
Figure 0004724177
上述のとおり、po1.xmlおよびpo2.xmlは、単にXML文書の2つの例に過ぎない。ここに記載される技術は、いかなる特定の種類、構造または内容を有するXML文書にも限定されない。このような文書がこの発明のさまざまな実施例に従っていかにインデックス付けされ、アクセスされるかについての例を以下に挙げる。
XMLインデックス
一実施例に従うと、XMLインデックスは、Xpathベースのプレディケイトおよび/またはXpathベースのフラグメント抽出を含むクエリの性能を向上させるドメインインデックスである。XMLインデックスは、たとえば、CLOBまたは構造化されたストレージとして記憶されるXMLスキーマベースの列とスキーマのないXMLタイプの列との両方にわたって構築され得る。一実施例においては、XMLインデックスは、経路インデックス、値インデックスおよび順序インデックスを協働的に使用することに起因する論理インデックスである。
経路インデックスは、単純な(ナビゲーション)経路表現に基づいてフラグメントをルックアップする機構を提供する。値インデックスは、値の同等性または範囲に基づいたルックアップを提供する。複数の2次値インデックスが、各データ型に1つずつ存在し得る。順序インデックスは、階層的な順序情報をインデックス付けされたノードに関連付ける。順序インデックスは、XMLノード間における親−子、祖先−子孫および兄弟関係を決定
するのに用いられる。
ユーザが(プレディケイトまたはフラグメント識別子として)XPathを含むクエリを発信すると、ユーザXPathは、XMLインデックステーブルにアクセスするSQLクエリに分解される。生成されたクエリは、典型的には、一組の経路、値および順序の制約付きルックアップを実行して、それらの結果を適切にマージする。
経路テーブル
一実施例に従うと、論理的なXMLインデックスはPATHテーブルと2次インデックスの組とを含む。上述のとおり、インデックス付けされたXML文書は各々、多くのインデックス付けされたノードを含み得る。PATHテーブルはインデックス付けされたノードごとに1つの行を含む。各々のインデックス付けされたノードについて、ノードに対するPATHテーブル行は、当該ノードに関連付けられるさまざまな情報を含む。
一実施例に従うと、Pathテーブルに含まれる情報は、(1)ノードへの経路を示すPATHIDと、(2)ベース構造内におけるノードについてのフラグメントデータの位置を特定するための「位置データ」と、(3)ノードを含むXML文書の構造階層内におけるノードの位置を示す「階層データ」とを含む。随意には、PATHテーブルはまた、値に関連付けられるこれらのノードについての値情報を含み得る。これらの種類の情報の各々が、以下により詳細に説明される。
経路
XML文書の構造は、XML文書内のノード間における親−子関係を確立する。XML文書におけるノードについての「経路」は、特定のノードに到達するよう、「ルート」ノードから始まる一連の親−子リンクを反映する。たとえば、po2.xmlにおける「User」ノードへの経路は、/PurchaseOrder/Actions/Acthon/Userである。というのも、「User」ノードは「Action」ノードの子であり、「Action」ノードは「Actions」ノードの子であり、「Actions」ノードは「PurchaseOrder」ノードの子であるからである。
XMLインデックスがインデックス付けするXML文書の組は、この明細書中においては「インデックス付けされたXML文書」と称される。一実施例に従うと、XMLインデックスは、すべてのインデックス付けされたXML文書内における経路のすべて、または、インデックス付けされたXML文書内における経路のサブセットにおいて構築され得る。どの経路がインデックスであるかを特定するための技術が以下に説明される。特定のXMLインデックスによってインデックス付けされる経路の組は、この明細書中において「インデックス付けされたXML経路」と称される。
経路ID
一実施例に従うと、インデックス付けされたXML経路の各々には固有の経路IDが割当てられている。たとえば、po1.xmlおよびpo2.xmlに存在する経路には、以下のテーブルに示されるとおりに経路IDが割当てられてもよい。
Figure 0004724177
経路を識別し、経路IDを経路に割当てるのにさまざまな技術を用いることができる。たとえば、ユーザは、明示的に経路を列挙し、こうして識別される経路についての対応する経路IDを特定し得る。代替的には、データベースサーバは、各々のXML文書を、それがインデックス付けされたXML文書の組に追加されると解析(parse)し得る。解析動作中、データベースサーバは、経路IDがまだ割当てられていない経路をいずれも識別し、それらの経路に自動的に新しい経路IDを割当てる。経路ID対経路(pathid-to-path)マッピングは、さまざまな方法でデータベース内に記憶され得る。一実施例に従うと、pathid-to-pathマッピングは、XMLインデックス自体とは別個のメタデータとして記憶される。
一実施例に従うと、異なるスキーマに準拠するXML文書のために同じアクセス構造が用いられる。インデックス付けされたXML文書が異なるスキーマに準拠し得るので、各々のXML文書は、典型的には、経路ID(pathid)が割当てられている経路のサブセットしか含まないだろう。
位置データ
ノードに関連付けられる位置データは、ノードを含むXML文書がベース構造内のどこに存在するかを示す。こうして、位置データの性質は、ベース構造の性質に基づいて実現例ごとに異なることとなる。実際のXML文書がどのように記憶されるかに応じて、位置データはまた、XML文書を指すロケータまたは論理ポインタを含み得る。論理ポインタは、XPathによって識別されるノードに関連付けられるフラグメントを抽出するのに用いられてもよい。
説明の目的で、(1)ベース構造がリレーショナルデータベース内のテーブルであり、(2)各々のインデックス付けされたXML文書がベーステーブルの対応する行に記憶されるものとする。このような文脈においては、ノードについての位置データは、たとえば、(1)ノードを含むXML文書が記憶されるベーステーブル内における行の行ID(rowid)と、(2)ノードに対応し、XML文書内においてフラグメントデータへの高速アクセスをもたらすロケータとを含み得る。
階層データ
ノードについてのPATHテーブル行はまた、ノードが、当該ノードを含むXML文書の階層構造内のどこに存在するかを示す情報を含む。このような階層的な情報は、この明細書中においてはノードの「順序キー(OrderKey)」と称される。
一実施例に従うと、階層的な順序情報は、デューイ(Dewey)タイプの値を用いて表わされる。具体的には、一実施例においては、ノードのOrderKeyは、ノードの直接の親のOrderKeyに値を付加することによって作成され、この場合、付加された値は、親ノードの子の中でも、その特定の子ノードの位置を示す。
たとえば、特定のノードDがノードCの子であり、それ自体が、ノードAの子であるノードBの子であると想定する。さらに、ノードDがOrderKey1.2.4.3を有するものとする。OrderKeyにおける最後の「3」は、ノードDがその親ノードCの3番目の子であることを示す。同様に、4は、ノードCがノードBの4番目の子であることを示す。2は、ノードBがノードAの2番目の子であることを示す。先頭の1は、ノードAがルートノードである(すなわち、親を持たない)ことを示す。
上述のとおり、子のOrderKeyは、子の番号に対応する値を親のOrderKeyに付加することによって容易に作成され得る。同様に、親のOrderKeyは、子のOrderKeyにおける最後の番号を取除くことによって子のOrderKeyから容易に得られる。
一実施例に従うと、各々のOrderKeyによって表わされる合成数が、バイト比較可能値に変換され、このため、2つのOrderKey間における数学的比較により、XML文書の構造階層内における、OrderKeyが対応するノードの相対位置が示される。
たとえば、OrderKey1.2.7.7に関連付けられるノードは、XML文書の階層構造におけるOrderKey1.3.1に関連付けられるノードの前にくる。こうして、データベースサーバは変換機構を用いて、OrderKey1.2.7.7を第1の値に変換し、OrderKey1.3.1を第2の値に変換するが、この場合、第1の値は第2の値未満となる。第2の値を第1の値と比較することにより、データベースサーバは、第1の値に関連付けられるノードが第2の値に関連付けられるノードの前にくると容易に判断することができる。さまざまな変換技術を用いてこの結果を達成することができ、この発明は特定のいかなる変換技術にも限定されない。
値情報
インデックス付けされた文書内におけるいくつかのノードは、属性ノードであり得るか、または、単純要素に対応するノードであり得る。一実施例に従うと、属性ノードおよび単純要素については、PATHテーブル行はまた、属性および要素の実効値を記憶する。このような値は、たとえば、PATHテーブルの「値列」に記憶され得る。後により詳細に説明される2次「値インデックス」は、値列上に構築される。
経路テーブルの例
一実施例に従うと、PATHテーブルは、以下のテーブルにおいて特定されるように規定される列を含む。
Figure 0004724177
上述のとおり、PATHIDはノードに割当てられた番号であり、ノードにまで十分に拡張された経路を固有に表わす。ORDER_KEYは、ノードに関連付けられるDEWEY順序番号のシステム表現である。一実施例に従うと、順序キー(order key)の内部表現はまた、文書の順序付けを保存する。
VALUE列は、単純要素(すなわち要素子のない)ノードおよび属性ノードについての有効なテキスト値を記憶する。一実施例に従うと、連結によって、隣接するテキストノードを合体させる。以下により詳細に説明されるように、たとえば、混合したテキストの挙動、余白、大文字小文字の区別あり等がカスタマイズされ得るオプションをインデックス作成中に特定することにより、VALUE列に記憶された有効なテキスト値をユーザがカスタマイズすることを可能にする機構が提供される。ユーザは、有界のRAW列またはBLOBを含むVALUE列を任意の数のフォーマットに記憶することができる。ユーザが有界のストレージを選択する場合、インデックス作成中のいかなるオーバーフローもエラーとしてフラグが立てられる。
以下のテーブルは、(1)上述の列を有し、(2)po1.xmlおよびpo2.xmlについてのエントリが格納されるPATHテーブルの一例である。具体的には、PATHテーブルの各行は、po1.xmlまたはpo2.xmlのインデックス付けされたノードに対応する。この例においては、po1.xmlおよびpo2.xmlは、ベーステーブルの行R1および行R2にそれぞれ記憶されるものとする。
Figure 0004724177
この例においては、rowid列は、PATHテーブルの各行についての固有の識別子を記憶する。PATHテーブルが作成されるデータベースシステムに応じて、rowid列は暗示的な列になる可能性がある。たとえば、行のディスク位置は、当該行についての固有の識別子として用いられてもよい。以下により詳細に説明されるように、2次順序および値インデックスは、PATHテーブルのrowid値を用いてPATHテーブル内の行の位置を特定し得る。
上述の実施例においては、ノードのPATHID、ORDERKEYおよびVALUEはすべて単一のテーブルに含まれる。代替的な実施例においては、別個のテーブルを用いて、PATHID、ORDERKEYおよびVALUE情報を、対応する位置データ(たとえば、ベーステーブルRidおよびロケータ(Locator))にマップし得る。
2次インデックス
PATHテーブルは、広範囲のクエリを満たすXML文書またはXMLフラグメントの位置を特定するのに必要な情報を含む。しかしながら、二次的なアクセス構造がない場合、PATHテーブルを用いてこのようなクエリを満たすには、しばしばPATHテーブルのフルスキャンが必要になる。したがって、一実施例に従うと、さまざまな2次インデックスが、(1)経路ルックアップの実行および/または(2)順序ベースの関係の識別、を行うクエリを加速するようデータベースサーバによって作成される。一実施例に従うと、以下の2次インデックスはPATHテーブル上で作成される。
・ (pathid,rid)上のPATHID_INDEX
・ (rid,order_key)上のORDERKEY_INDEX
・ VALUE INDEXES
・ (rid,SYS_DEWEY_PARENT(order_key))上のPARENT_ORDERKEY_INDEX
PATHID_INDEX
PATHID_INDEXは、PATHテーブルのpathid,rid列上に構築される。こうして、PATHID_INDEXにおけるエントリは(keyvalue,rowid)の形であり、この場合、キー値(keyvalue)は、特定のpathid/ridの組合せを表わす合成値であり、rowidはPATHテーブルの特定の行を識別する。
(1) ベーステーブル行および(2)ノードのpathidが既知である場合、PATHID_INDEXを用いて、PATHテーブル内における当該ノードについての行の位置を迅速に特定することができる。たとえば、キー値「3.R1」に基づいて、PATHID_INDEXをトラバースして、キー値「3.R1」に関連付けられるエントリを見出し得る。PATHテーブルが上述のとおり格納されると想定すると、インデックスエントリは3のrowid値を有することとなる。3のrowid値は、pathid3およびrid R1に関連付けられるノードについての行である、PATHテーブルの3番目の行を指す。
ORDERKEY_INDEX
ORDERKEY_INDEXは、PATHテーブルのridおよびorderkeyの列上に構築される。こうして、ORDERKEY_INDEXにおけるエントリは、(keyvalue, rowid)の形であり、この場合、keyvalueは、特定のrid/orderkeyの組合せを表わす合成値であり、rowidはPATHテーブルの特定の行を識別する。
(1) ベーステーブル行および(2)ノードのorderkeyが既知である場合、ORDERKEY_INDEXを用いて、PATHテーブル内における当該ノードについての行の位置を迅速に特定することができる。たとえば、キー値「R1.′1.2′」に基づいて、ORDERKEY_INDEXをトラバースして、キー値「R1.′1.2′」に関連付けられるエントリを見出し得る。PATHテーブルが上述のとおり格納されると想定すると、インデックスエントリは3のrowid値を有することとなる。3のrowid値は、orderkey1.2およびrid R1に関連付けられるノードについての行である、PATHテーブルの3番目の行を指す。
値インデックス
経路ルックアップに基づいたクエリがPATHID_INDEXを用いて加速され得ると、値ルックアップに基づいたクエリが、PATHテーブルの値列上に構築されたインデックスによって加速され得る。しかしながら、PATHテーブルの値列は、さまざまなデータ型についての値を保持し得る。したがって、一実施例に従うと、別個の値インデックスが、値列に記憶された各データ型に対して構築される。こうして、値列がストリング、番号およびタイムスタンプを保持する実現例においては、以下の値(2次)インデックスも作成される。
・ SYS_XMLVALUE_TO_STRING(value)上のSTRING_INDEX
・ SYS_XMLVALUE_TO_NUMBER(value)上のNUMBER_INDEX
・ SYS_XMLVALUE_TO_TIMESTAMP(value)上のTIMESTAMP_INDEX
これらの値インデックスを用いて、データ型をベースにした比較(同等性および範囲)を実行する。たとえば、NUMBER値インデックスは、ユーザXpath内における番号ベースの比較に対処するのに用いられる。NUMBER_INDEXにおけるエントリは、たとえば(number、rowid)の形であってもよく、この場合、rowidは、「number」の値に関連付けられるノードについての、PATHテーブル内の行を指す。同様に、STRING_INDEX内におけるエントリは(string,rowid)の形を有してもよく、TIMESTAMP_INDEX内におけるエントリは(timestamp,rowid)の形を有してもよい。
PATHテーブルにおける値のフォーマットは、データ型の本来のフォーマットに対応していない可能性がある。したがって、値インデックスを用いる場合、データベースサーバは、変換機能を呼出して、値バイトを、記憶されたフォーマットから特定されたデータ型に変換し得る。加えて、データベースサーバは、以下に説明されるように、必要な変換をい
ずれも適用する。一実施例に従うと、変換機能は、当該変換が可能でない場合、RAWおよびBLOBの値で動作し、NULLを戻す。
デフォルトにより、値インデックスは、XMLインデックスが作成される際に作成される。しかしながら、ユーザは、クエリ作業負荷の知識に基づいて値インデックスのうちの1つ以上の作成を抑制し得る。たとえば、すべてのXPathプレディケイトがストリング比較しか含まない場合、NUMBERおよびTIMESTAMPの値インデックスを回避することができる。
PARENT_ORDERKEY_INDEX
一実施例に従うと、PATHテーブル上に構築された2次インデックスの組は、PARENT_ORDERKEY_INDEXを含む。ORDER_KEYインデックスと同様に、PARENT_ORDERKEY_INDEXは、PATHテーブルのridおよびorder_keyの列上に構築される。結果として、PARENT_ORDERKEY_INDEXのインデックスエントリは(keyvalue,rowid)の形を有し、この場合、keyvalueは、特定のrid/order_keyの組合せに対応する合成値である。しかしながら、ORDER_KEYインデックスとは異なり、PARENT_ORDERKEY_INDEXエントリにおけるrowidは、特定のrid/order_keyの組合せを有するPATHテーブル行を指さない。むしろ、各々のPARENT_ORDERKEY_INDEXエントリのrowidは、rid/order_keyの組合せに関連付けられるノードの直接の親であるノードのPATHテーブル行を指す。
たとえば、上述の格納されたPATHテーブルにおいては、rid/order_keyの組合せ「R1.′1.2′」は、PATHテーブルの行3におけるノードに対応する。PATHテーブルの行3におけるノードの直接の親は、PATHテーブルの行1によって表わされるノードである。結果として、「R1.′1.2′」のキー値に関連付けられるPARENT_ORDERKEY_INDEXエントリは、PATHテーブルの行1を指すrowidを有することとなる。
XMLインデックスの作成
一実施例に従うと、XMLインデックスは、データベースサーバによって受信されるインデックス作成コマンドに応答してデータベース内に作成される。説明する目的で、XMLインデックスの作成は、インデックス付けされるべきXML文書がリレーショナルテーブルのXMLタイプ列に記憶される文脈において説明される。
たとえば、ベース構造が、id列によって識別されるXMLタイプとしてスタイルシートを記憶するテーブルstylesheet_tabであると想定する。このようなテーブルは、たとえば、コマンド:
Figure 0004724177
を用いて作成され得る。
XMLインデックスは、XPathプレディケイトを含むクエリと、Xpathに基づいたフラグメントの検索とを加速するよう、stylesheet_tabのスタイルシート(stylesheet)上で作成され得る。一実施例に従うと、このようなXMLインデックスは、以下のコマンド:
Figure 0004724177
を用いて作成され得る。
以下のコマンドは、XMLインデックスがスキーマベースのXMLタイプでいかに作成され得るかを示す一例である。
Figure 0004724177
上述のコマンドは、単に、データベースサーバにXMLインデックスを作成させるようにするために当該データベースサーバに提示され得るコマンドの例にすぎない。ここに記載される技術は、インデックスの作成を指定するためのいかなる形またはシンタックスにも限定されない。
一実施例に従うと、インデックス作成コマンドは、XMLインデックスのさまざまな特徴をユーザが特定することを可能にするパラメータを含み、たとえば以下のとおりである。
・ どの経路を含むべきか、またはインデックス付けされた経路の組からどの経路を除くべきか
・ PATHテーブルおよび2次インデックスの名前
・ PATHテーブルおよび2次インデックスについての記憶オプション(たとえば、PATHテーブルが分割されたテーブル、インデックス組織化テーブルなどとして記憶されるべきであるかどうか)
・ 値を処理するためのルール
・ 値列の列タイプ(たとえば、RAWまたはBLOB)
値を処理するためのルールは、たとえば、値が大文字小文字の区別ありとして扱われるべきであるかどうか、値が標準化されるべきであるかどうか(その場合、標準化がいかに実行されるべきであるかどうか)、ならびに、混合された内容ノード(値および子ノードをともに有するノード)についての値をいかに処理するか、を特定し得る。混合された内容ノードに関して、当該ルールは、たとえば、混合された内容ノードに関連付けられる値が無視されるべきであるか、連結されるべきであるか、または特別に取扱われるべきであることを特定し得る。これらは、単に、ユーザによって特定され得るルールに対応する値の例にすぎない。利用可能なルールの組は実現例によって異なり、さらには、含まれる値のタイプに基づいて異なり得る。
ユーザがXMLインデックスを作成すると、基礎をなすPATHテーブルおよび2次インデックスが自動的に作成される。デフォルトにより、PATHテーブルおよび2次インデックスの名前は、XMLインデックスの名前に基づいてシステムによって生成される。しかしながら、ユーザは、これらのオブジェクトの名前を明示的に特定することができる。
デフォルトにより、PATHテーブルおよび2次インデックスについての記憶オプションは、XMLインデックスが作成されるベーステーブルの記憶特性から得られる。しかしながら、ユーザはまた、これらのオブジェクトについての記憶特性を明示的に特定することができる。
以下の例は、番号インデックスがPATHテーブルとは別個のテーブル空間においていかに作成されるかを説明する。
Figure 0004724177
どの経路にインデックス付けすべきかについてのユーザ選択
一実施例に従うと、XMLインデックスによってどのXML経路がインデックス付けされるべきかを決定するルールをユーザが特定することのできる機構が提供される。具体的には、ユーザは、あるXML経路を明確に含むルール、および/または、あるXML経路を明確に除外するルールを記録し得る。
一実施例に従うと、ユーザがXMLインデックスを作成すると、デフォルトにより、ベース文書におけるすべてのノードがインデックス付けされる(すなわち、当該文書におけるすべてのノードに対応するPATHテーブルに行が存在する)。しかしながら、ユーザは、インデックス付けすべきノードの組(サブツリー)を明示的に特定することができ、これにより、PATHテーブルから残りのノードを省き得る。これは、典型的には、クエリの観点からすれば無用であることが分かっているフラグメントを除外するのに用いられる。インデックス付けされたノードの数を減らすことにより、XMLインデックスの空間使用および管理効率を向上させることができる。
一実施例に従うと、XMLインデックスが作成されたときにルールの最初の記録が行われてもよい。たとえば、インデックス付けされるべき文書がPurchaseOrderテーブルに記憶されるものとする。ユーザがLineitem要素およびそれらの子、ならびに発注基準番号および要求側すべてにインデックス付けしたいと望む場合、以下の作成インデックス(Create
Index)DDLが発行され得る。
Figure 0004724177
この例においては、POIndex_path_tableは、インデックスデータを記憶するのにドメインインデックスによって用いられるテーブルの名前を示す。前述の例においては、ルールは明確に何らかの経路を含む。当該ルールによって明確に含まれない経路はすべて、インデックスから除かれる。rule/PurchaseOrder/LineItems//*は、ワイルドカード記号「*」を含む。結果として、当該ルールは、path/PurchaseOrder/LineItemsと、path/PurchaseOrder/LineItemsから派生するすべてのノードへの経路とを明確に含む。これは、単に、当該ルールにおいてワイルドカードをいかに用い得るかを示す一例にすぎない。一実施例に従うと、経路選択ルール機構は、いくつの文脈においてもワイルドカードをサポートする。たとえば、rule/nodex/*/nodey/nodezは、nodexとnodey/nodezとの間の経路にかかわらず、(1)/nodex/から派生し、(2)/nodey/nodezにおいて終端するすべての経路を選択する。
ユーザはまた、経路を明確に除外するルールを特定し得る。たとえば、Lineitem記述およびpurchaseOrder動作を除いて文書の経路すべてにインデックス付けするために、以下の作成インデックス(Create Index)DDLを用いてインデックスを作成する。
Figure 0004724177
インデックス付けされた文書の組への文書の追加
新しいXML文書がインデックス付けされる必要がある場合、経路、順序および値の情報が集められ、XMLインデックスに記憶される。一実施例に従うと、インデックス付けされたXML文書のリポジトリにXML文書が追加されると、新しいXML文書が、その中に含まれるノードへの経路を識別するよう解析される。新しいXML文書内のノードのための経路が識別されると、データベースサーバは、新しいXML文書に含まれるノードのうちのどれがインデックス付けされるべきかを決定する。次いで、データベースサーバは、それらのノードの各々に基づいてXMLインデックスを更新する。
図1を参照すると、この発明の一実施例に従って新しいXML文書がいかに処理されるかを示すフローチャートが示される。図1においては、ステップ102および108では、新しいXML文書内の各ノードが処理される間にループを規定する。具体的には、ステップ102では、予め処理されていないノードが選択される。最初の繰返し中に、処理のために選択された第1のノードが新しいXML文書のルートノードとなるだろう。
ステップ104では、データベースサーバが、現在選択されているノードの経路を決定する。ステップ106では、データベースサーバは、当該経路に基づいて、現在選択されているノードがインデックス付けされるべきであるかどうかを決定する。具体的には、ユーザが、インデックス付けされるべき経路のサブセットを特定していた場合、インデックスエントリは、経路の特定されたサブセットに対応するノードに対してのみ追加される。一実施例に従うと、ステップ106は、経路選択ルールに対して、現在のノードに関連付けられる経路を適合させて、現在のノードがインデックス付けされるべきかどうかチェックするステップを含む。(1)どの経路が含まれるべきかを示すルールをユーザが記録しており、(2)現在のノードに関連付けられる経路が、ユーザによって特定された経路のいずれにも適合しない場合、ノードをルートとするサブツリー(フラグメント)がインデックスから省かれる。一方では、(1)どの経路がインデックス付けから除外されるべきかを当該ルールが特定し、(2)当該ノードが、ユーザによって特定された除外すべき経路のいずれにも適合する場合、当該ノードをルートとするフラグメントがインデックスから省かれる。適合動作は、たとえば、有限オートマトンを用いて実行されてもよい。
選択されたノードが、インデックス付けされるべき経路に関連付けられていないとステップ106において判断された場合、制御がステップ108に渡る。ステップ108では、データベースサーバは、新しいXML文書が処理すべきノードをそれ以上有しているかどうか判断する。新しいXML文書が、処理すべきノードをそれ以上有していない場合、XMLインデックスを更新するプロセスが完了する。そうではなく、新しいXML文書が、処理すべきより多くのノードを有していた場合、制御がステップ102に戻り、別のノードが処理される。
ステップ106において、現在のノードがインデックス付けされるべきであると判断された場合、当該ノードをルートとするフラグメントがインデックスに追加される。加えて、そのすべての祖先(ルートまでの要素ノード)もインデックスに追加される。最後に、祖先要素ノード内におけるいかなるネーム空間属性も、インデックスに追加される。
インデックス付けされるべきノードを処理する動作が、図1においてより具体的に示される。ここで、ステップ110では、現在のノードに関連付けられる経路にPATHIDが割当てられているかどうか判断される。正確な経路が予めインデックス付けされたXML文書に存在していなかった場合、当該経路にはPATHIDが割当てられていないかもしれない。このような状況下では、制御がステップ112に渡され、ここで、PATHIDが当該経路に割当てられる。次いで、新しいpathid-to-pathマッピングがデータベース内に記憶される。
ステップ114では、現在のノードについての情報を含む行がPATHテーブルに追加される。ステップ116では、PATHID、OrderKeyおよびPARENT_OrderKeyのインデックスが現在のノードのためのエントリで更新される。上述のとおり、PATHIDおよびOrderKeyのエントリは現在のノードのための新しい行を指し、PARENT_OrderKeyエントリは、現在のノードの親のためのPATHテーブル行を指すだろう。
ステップ118では、現在のノードが値に関連付けられているかどうかが判断される。現在のノードが値に関連付けられていない場合、制御はステップ108に戻される。現在のノードが値に関連付けられており、値インデックスが値のデータ型のために作成されていた場合、ステップ120において、インデックスエントリが、その特定のデータ型に関連付けられる値インデックスに追加される。次いで、制御がステップ108に戻される。
一実施例に従うと、ノードが、インデックス付けされるべきでない経路に関連付けられていても、当該ノードが、インデックス付けされるいずれかのノードの祖先であればインデックス付けされる。こうして、/a/b/c/*に適合する経路だけが含まれるべきであるとユ
ーザが指定したとしても、経路/a、/a/bおよび/a/b/cに関連付けられるノードはまた、それらが、パターン/a/b/c/*に適合する経路に関連付けられるいずれかのノードの祖先である限り、インデックス付けされることとなる。
XMLインデックスの変更
一実施例に従うと、インデックスが作成された後にXMLインデックスの特徴を変更するための機構が提供される。XMLインデックスの作成後の変更は、たとえば、変更インデックスステートメントに応答して実行されてもよい。
XMLインデックスについての変更インデックスステートメントの重要な用途は、インデックス付けされた経路を追加するかまたは削除することである。一実施例に従うと、以下の変更インデックス(Alter Index)DDLにより、新しい経路がインデックスに追加され得る。
Figure 0004724177
このDDLコマンドは、発注基準のすべておよびAction要素の子のすべてに、これらがインデックスによってまだインデックス付けされていない場合、インデックス付けする。同様に、以下のDDLは、これらの経路が既にインデックス付けされている場合、インデックスからこれらの経路を取除く。
Figure 0004724177
変更インデックス改名(Alter Index Rename)DDLは、以下の例において説明されるとおり、ユーザがインデックスの名前を、明示的に削除したり作成したりすることなく、変更することを可能にする。
Figure 0004724177
XMLインデックスを使用できるかどうかの判断
クエリ時に、クエリXPathが、ユーザによって特定されたXpathのサブセットであると静的に判断され得る(従って、インデックスにあると保証され得る)場合、XMLインデックスを用いてクエリに応答することができる。サブセット関係をクエリのコンパイル時間に決定できない場合、XMLインデックスはクエリを満たすのに用いられない。
たとえば、ステートメントによって作成されるXMLインデックスPOIndex1について考察する。
Figure 0004724177
XMLインデックスは、query XPath/PurchaseOrder/LineItems/LineItem/Descriptionに応答するのに用いられてもよい。しかしながら、XMLインデックスは、query XPATH//Descriptionに応答するのに用いることができない。というのも、/PurchaseOrder/LineItemsとは異なる経路の下に<Description>要素が存在し得るからである。
XMLインデックスを用いることによるXPathクエリへの応答
XMLインデックスは、XPathクエリを値についての単純な経路およびプレディケイトに分解することによって当該XPathクエリを満たすのに用いることができる。結果として得られる分解された部分は、インデックスPATH_TABLE上のXQLクエリに翻訳される。一実施例に従うと、インデックスアクセス方法への入力は、以下のうちの1つ以上を含む複合式である。
・ 単純な(ナビゲーション)経路表現、たとえば、/a/b
・ 単純な値表現、たとえば、/a/b/c>50
・ 表現間における構造的結合(すなわち、階層関係)。たとえば、XPath表現/a/b[c>50]は、(/a/b)PARENT-OF(/a/b/c>50)と表現される。
/a/b/c=fooなどの簡単なプレディケイトでのクエリについて考察する。このようなクエリは、以下のとおりPATHテーブルに対して実行され得る。
Figure 0004724177
経路/a/b/cについてのIDが変数1としてバインドされる。このクエリについて複数の実行プランが存在する。一実施例に従うと、クエリオプティマイザが、コストに基づいた最良の実行プランを選択する。データベースサーバは、(1)pathid上の2次インデックスを用いるか、(2)xmlvalue_to_string(value)上の2次インデックスを用いるか、または(3)両方、ならびにビットマップおよびその結果を用い得る。
XPath/a/b/cなどのフラグメントルックアップを特定するクエリについて考察する。このようなクエリは、ステートメント:
Figure 0004724177
を用いてPATHテーブルに対して実行され得る。
経路/a/b/cについてのIDは変数1としてバインドされる。結果として得られる適合は、クエリによって文書の順で戻される。単一の文書に対応するすべてのフラグメントが、必要に応じて連結される。
/a/b[c=foo]などの単純なプレディケイトに基づいてフラグメントルックアップを特定するクエリについて考察する。入力XPathの標準化された表現は(/a/b)PARENT-OF(/a/b/c=foo)である。以下のクエリは、経路/a/bのための適合と単純なプレディケイト(/a/b/c=foo)のための適合とをルックアップするのに用いられてもよい。
Figure 0004724177
結果が、Dewey順序キーを用いて表現される構造的結合オペレータを用いてマージされる。経路/a/bおよび/a/b/cについてのIdは変数1および2としてバインドされる。一実施例に従うと、コストベースのオプティマイザが、実現可能なさまざまな実行プランのうちで最良の実行プランを選択する。
XMLインデックスはまた、データ型認識動作を実行するのに用いられてもよい。データ型情報をXPathプレディケイトに取付けるための複数の機構が存在する。たとえば:
・ XMLスキーマの使用。ベーステーブル列が関連するXMLスキーマを有する場合、ユーザXPathはXMLスキーマに対してタイプチェックされ、これにより、適切なデータ型をその表現に関連付ける。
・ 明示的なタイプ強制。XPathは、明示的なタイプ強制についてオペレータに提供する。
・ 暗示的なタイプ強制。XPathは、いくつかの暗示的なタイプキャスティングルールを規定する。たとえば、比較オペレータのRHSがNUMBERである場合、LHSはまた、暗示的にNUMBERに強制される。
一実施例に従うと、これらのすべてのシナリオにおいては、XMLインデックスアクセス方法への入力は、関連するデータ型情報を有するXPath表現となる。データ型情報は、適切な値インデックスが選択されることを確実にするために、生成されたXQLクエリ内で用いられる。たとえば、タイプチェックされたXPathは以下のとおり、
SYS_XMLVALUE_TO_NUMBER(/a/b/c)>10.567
であり、結果として、NUMBER値インデックスを用いるPATHテーブルに対する以下のクエリがもたらされる。
Figure 0004724177
XMLインデックスを用いると、この明細書中に記載されるように、XPathの大きな組を効
率的に評価することができるといったさまざまな利点が生じ得る。データ型認識比較を含むXPathを満たすことができる。フラグメントは、元のXML文書から効率的に抽出され得る。ユーザは、経路のサブセットだけにインデックス付けすることを選択し、こうしてインデックスの肥大化を回避し得る。インデックス値は、アプリケーションのニーズに基づいてカスタマイズされ得る。さらに非スキーマXML文書にインデックス付けする能力が、ユーザの大きなクラスについてのクエリ要件を満たすこととなる。これにより、クエリ性能について懸念することなく、オラクル(Oracle)におけるそれらのすべてのXML文書を記憶することが可能となる。
シンタックス
データベースサーバが、それ自体が受信したコマンドに応答してXMLインデックスを作成および維持する文脈において実施例を説明してきた。当該コマンドは、データベースサーバが理解する言語に準拠していなければならない。この発明の一実施例に従うと、XMLインデックスを含むさまざまなDDLコマンドに用いられるシンタックスは以下のとおりである。
Figure 0004724177
一実施例に従うと、ドメインインデックスが親のXMLテーブルに等しく分割される。XMLテーブルが分割されない場合、ドメインインデックスは分割されない。PATH TABLEおよびその2次インデックスもXMLテーブルに等しく分割される。
PARAMETERS文節についてのシンタックス:
Figure 0004724177
Figure 0004724177
一実施例に従うと、PARAMETERS文節は、以下を特定するのに用いられる。すなわち、
・ 経路テーブルおよび2次インデックスについての名前および物理的なパラメータ(テーブル空間(tablespace)など)。PATH TABLE上の6個のインデックスはすべて、明示的に指定されていなくても作成される。
− 列VALUEについてのタイプが明示的にBLOBとなるよう指定されている場合、値がBLOBセグメントにおいてずれて記憶される。そうでない場合、値はRAWデータとして一列に並んで記憶される。RAWについての<size>は整数である。
− STRING値についての属性は、
・ ストリングの先行および後続の余白がすべて除去されるべき場合、正規化(NORMALIZED)され、
・ IGNORE_MIXED_TEXTは、混合されたテキストがある状態で値をNULLとして記憶し、
・ すべてのストリングが小文字に変換されるべき場合、CASE_INSENSITIVEである。
なお、上述の動作は、値をVALUE列に記憶する前に(および、PATH TABLE上での2次インデックスの作成前に)適用される。
・ インデックス付けすべき経路の設定。ユーザは、以下を指定することによってインデックス付けされた経路の組を制御することができる。すなわち、
− インデックス付けすべき経路の明示的なリスト。これはワイルドカードおよび//axesを含み得る。たとえば、/a/b/c、/d/*、/x//y。
− インデックス付けすべきでない経路の明示的なリスト。
Figure 0004724177
使用
・ XMLインデックスは、その構成要素、基礎をなすPATH TABLEおよびその2次インデックスとともに削除される。
Figure 0004724177
Figure 0004724177
ハードウェア概要
図2は、この発明の実施例が実現され得るコンピュータシステム200を示すブロック図である。コンピュータシステム200は、情報を伝達するためのバス202または他の通信機構と、バス202に結合され情報を処理するためのプロセッサ204とを含む。コンピュータシステム200はまた、プロセッサ204によって実行されるべき情報および命令を記憶するための、バス202に結合されるランダムアクセスメモリ(RAM)または他の動的記憶装置等のメインメモリ206を含む。メインメモリ206はまた、プロセッサ204によって実行されるべき命令の実行中に一時変数または他の中間情報を記憶するのに用いられ得る。コンピュータシステム200はさらに、プロセッサ204のための静的情報および命令を記憶するための、バス202に結合される読出専用メモリ(ROM)208または他の静的記憶装置を含む。磁気ディスクまたは光ディスク等の記憶装置210が設けられ、情報および命令を記憶するためにバス202に結合される。
コンピュータシステム200は、コンピュータユーザに情報を表示するための、陰極線管(CRT)等のディスプレイ212にバス202を介して結合され得る。英数字および他のキーを含む入力装置214がバス202に結合されて、情報およびコマンド選択をプロセッサ204に伝達する。別の種類のユーザ入力装置は、方向情報およびコマンド選択をプロセッサ204に伝達し、ディスプレイ212上でのカーソルの動きを制御するための、マウス、トラックボールまたはカーソル方向キー等のカーソル制御216である。この入力装置は、典型的には、2つの軸、すなわち第1の軸(たとえば、x)および第2の軸(たとえば、y)、において2自由度を有しており、これにより、装置が平面で位置を特定することが可能となる。
この発明は、ここで説明される技術を実現するためのコンピュータシステム200の用途に関する。この発明の一実施例に従うと、これらの技術は、メインメモリ206に含まれる1つ以上の命令の1つ以上のシーケンスをプロセッサ204が実行することに応答して、コンピュータシステム200によって実行される。このような命令は、記憶装置210等の別のコンピュータ読取り可能な媒体からメインメモリ206へと読取られてもよい。メインメモリ206内に含まれる命令シーケンスを実行することにより、ここで説明されるプロセスステップをプロセッサ204に実行させる。代替的な実施例では、ソフトウェア命令の代わりに、またはソフトウェア命令と組合せてハードワイヤード回路を用いてこの発明を実現することもできる。したがって、この発明の実施例は、ハードウェア回路とソフトウェアとの特定のいずれかの組合せに限定されない。
ここで用いられる「コンピュータ読取り可能な媒体」という用語は、特定の態様で機械を動作させるデータの提供に関与するいかなる媒体をも指す。コンピュータシステム200を用いて実現される実施例においては、さまざまな機械読取り可能な媒体は、たとえば、実行のための命令をプロセッサ204に提供することに関与する。このような媒体は、不揮発性媒体、揮発性媒体および伝送媒体を含むがそれらに限定されない多くの形をとり得る。不揮発性媒体は、たとえば、記憶装置210等の光ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ206等のダイナミックメモリを含む。伝送媒体は、バス202を含むワイヤを含んだ、同軸ケーブル、銅線および光ファイバを含む。伝送媒体はまた、電波および赤外線データ通信中に生成されるような音波または光波の形をとり得る。
機械読取り可能な媒体の一般的な形は、たとえば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他のいずれかの磁気媒体、CD−ROM、他のいずれかの光学媒体、パンチカード、紙テープ、孔のパターンを備えた他のいずれかの物理的媒体、RAM、PROM、EPROM、FLASH−EPROM、他のいずれかのメモリチップもしくはカートリッジ、以下に記載される搬送波、またはコンピュータが読取ることのできる他のいずれかの媒体を含む。
さまざまな形の機械読取り可能な媒体は、実行のための1つ以上の命令の1つ以上のシーケンスをプロセッサ204に搬送することに関与し得る。たとえば、当該命令は、最初にリモートコンピュータの磁気ディスク上で搬送され得る。リモートコンピュータは、命令をそのダイナミックメモリにロードし、モデムを用いて電話線上で命令を送信し得る。コンピュータシステム200にとってローカルなモデムは、電話線上のデータを受信し、赤外線送信機を用いてデータを赤外線信号に変換し得る。赤外線検出器が、赤外線信号で搬送されたデータを受信し、適切な回路が当該データをバス202上に配置し得る。バス202はデータをメインメモリ206へと搬送し、ここから、プロセッサ204が命令を取出し、実行する。メインメモリ206が受取る命令は、随意には、プロセッサ204による実行の前または後に記憶装置210に記憶され得る。
コンピュータシステム200はまた、バス202に結合される通信インターフェイス218を含む。通信インターフェイス218は、ローカルネットワーク222に接続されるネットワークリンク220に対する双方向データ通信結合を提供する。たとえば、通信インターフェイス218は、データ通信接続を対応する種類の電話線に提供する統合サービスデジタル通信網(ISDN)カードまたはモデムであってもよい。別の例として、通信インターフェイス218は、データ通信接続を互換性のあるLANに提供するローカルエリアネットワーク(LAN)カードであってもよい。ワイヤレスリンクも実現され得る。このようないずれの実現例においても、通信インターフェイス218は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号または光信号を送受信する。
ネットワークリンク220は、典型的には、1つ以上のネットワークを介して他のデータ装置にデータ通信を提供する。たとえば、ネットワークリンク220は、ローカルネットワーク222を介した、ホストコンピュータ224、またはインターネットサービスプロバイダ(ISP)226が作動させるデータ設備への接続をもたらし得る。ISP226は、現在では一般的に「インターネット」228と称される世界的なパケットデータ通信網を介してデータ通信サービスを提供する。ローカルネットワーク222およびインターネット228はともに、デジタルデータストリームを搬送する電気信号、電磁信号または光信号を用いる。さまざまなネットワークを介する信号ならびにネットワークリンク220上にあり通信インターフェイス218を介する信号は、コンピュータシステム200との間でデジタルデータをやり取りするものであるが、情報を運ぶ搬送波の例示的な形で
ある。
コンピュータシステム200は、ネットワーク、ネットワークリンク220および通信インターフェイス218を介して、プログラムコードを含むデータを受取りかつメッセージを送ることができる。インターネットの例では、サーバ230は、インターネット228、ISP226、ローカルネットワーク222および通信インターフェイス218を介してアプリケーションプログラムについての要求されたコードを伝送し得る。
コードが受取られると、当該受取られたコードはプロセッサ204によって実行され、および/または、後の実行のために記憶装置210もしくは他の不揮発性記憶装置に記憶され得る。このように、コンピュータシステム200は、搬送波の形でアプリケーションコードを獲得し得る。
上述の明細書では、この発明の実施例を、実現例ごとに異なり得る多数の特定の詳細を参照して説明してきた。したがって、この発明が何であるか、およびこの発明を目指して出願人が何を意図しているかを独占的に示す唯一のものが、この出願から発生して特有の形態をとった請求項の組である。特有の形態であるこのような請求項は、以降の任意の補正を含んで発生する。このような請求項に含まれる用語に対してこの明細書で明示された任意の定義は、請求項で用いられている通りにこのような用語の意味を支配するものとする。したがって、請求項に明示的に記載されていない限定、要素、特性、特徴、利点または属性は、このような請求項の範囲を決して限定しない。したがって、明細書および図面は限定的な意味ではなく例示的な意味で捉えられるべきである。
新しいXML文書に基づいてXMLインデックスを更新するためのステップを示すフローチャートである。 この明細書中に記載される技術を実現し得るシステムを示すブロック図である。

Claims (14)

  1. リレーショナルデータベース内のベーステーブルに格納されたXML文書からの情報にアクセスする処理をコンピュータに実行させるための方法であって、前記コンピュータは、プロセッサと前記リレーショナルデータベースを格納するための記憶装置とを含み、
    前記プロセッサが、前記ベーステーブルに格納されたXML文書内において、インデックス付けすべきノードの組を識別するステップと、
    前記プロセッサが、インデックス付けすべきノードの組における各ノードごとに、ノードについてのエントリを、前記記憶装置に格納されたインデックスに記憶するステップとを含み、所与のノードについてのエントリは、前記所与のノードを含むXML文書と関連したXML内容の位置を特定する位置データと、少なくとも以下の(a)および(b)のうちの1つとを含み、
    (a)前記所与のノードを含むXML文書内において前記所与のノードの階層位置を示す階層データと、
    (b)前記所与のノードを含む前記XML文書の構造によって、前記所与のノードに至る経路に対応する経路データ、
    前記所与のノードについてのエントリは、さらに、前記位置に存在するXML内容内において、前記所与のノードと関連したXMLフラグメントの開始位置を示すロケーター値を含み、
    前記インデックスは、前記XML文書のうちの特定のXML文書の複数のノードに対応する複数のインデックスエントリを含み、
    各前記複数のインデックスエントリは、前記特定のXML文書に対するXML内容の、前記ベーステーブル内の前記位置を特定する、同一の位置データを含んでおり、
    各前記複数のインデックスエントリに対するロケーター値は、ベーステーブル内の前記位置に格納された前記特定のXML文書の前記XML内容内において、異なる開始位置を示しており、
    所与のインデックスエントリの各々のロケーター値によって示された、前記複数のインデックスエントリの前記開始位置は、各前記所与のインデックスエントリに関連づけられたノードに対応した前記XMLフラグメントの開始位置であり、
    前記プロセッサが、前記XML文書からの情報に対する要求に応答して、前記XML文書内の位置情報に対するインデックスを使用するステップとを備え、前記インデクスを使用することは、少なくとも前記位置データに基づいて前記所与のノードと関連付いたXML内容の位置を特定することを含む、方法。
  2. 前記インデックスはリレーショナルテーブルとして実現され、各ノードについてのエントリを記憶するステップは、前記リレーショナルテーブル内において、ノードの組における各ノードについての行を記憶することによって実行される、請求項1に記載の方法。
  3. 前記インデックスは、ノードの組における1つ以上のノードに関連付けられる値を記憶する、請求項1に記載の方法。
  4. 前記インデックスに記憶される値は、複数のデータ型の値を含み、前記方法は、前記複数のデータ型のうちの2つ以上のデータ型の各々についての2次インデックスを構築するステップをさらに含む、請求項3に記載の方法。
  5. 前記所与のノードについての位置データは、XML文書の位置を特定するための第1のデータと、XML文書内において、所与のノードに関連付けられる情報の位置を特定するための第2のデータとを含む、請求項1に記載の方法。
  6. 前記方法は、前記階層データに基づいて、前記インデックスにおけるエントリにアクセ
    スするための2次インデックスを構築するステップをさらに含む、請求項1に記載の方法。
  7. 前記所与のノードについてのエントリは、所与のノードを含むXML文書の構造を介する所与のノードへの経路に対応する経路データを含み、
    前記方法はさらに、前記経路データに基づいて、前記インデックスにおけるエントリにアクセスするための2次インデックスを構築するステップを含む、請求項1に記載の方法。
  8. 親ノードの子ノードに関連付けられる階層情報に基づいて、前記インデックスにおいて、前記親ノードについてのエントリにアクセスするための2次インデックスを構築するステップをさらに含む、請求項1に記載の方法。
  9. 前記インデックス付けすべきノードの組を識別するステップは、
    どの経路がインデックス付けされるべきであるかを決定するためのルールを受信するステップと、
    インデックス付けされるべきXML文書におけるノードに関連付けられる経路を決定するステップと、
    (a)どの経路がインデックス付けされるべきであるかを決定するためのルール、および、(b)インデックス付けされるべきXML文書におけるノードに関連付けられる経路に基づいて、どのノードがインデックス付けされるべきであるかを識別するステップとを含む、請求項1に記載の方法。
  10. 前記ルールは、インデックスに含まれるべき経路を明示的に識別する、請求項9に記載の方法。
  11. 前記ルールは、インデックスから除外すべき経路を明示的に識別する、請求項9に記載の方法。
  12. 2次値インデックスが構築されるべきデータ型を示すユーザデータを受信するステップをさらに含む、請求項4に記載の方法。
  13. 所与のノードについてのエントリはさらに、
    (c)所与のノードを含むXML文書の構造を介する所与のノードへの経路に対応する経路データを含む、請求項1に記載の方法。
  14. 1つ以上のプロセッサによって実行されるときに、1つ以上のプロセッサに請求項1から13のいずれかに記載の方法を実行させる命令の1つ以上のシーケンスを格納する、コンピュータ読取可能な記録媒体。
JP2007507497A 2004-04-09 2005-04-06 Xmlデータにアクセスするためのインデックス Active JP4724177B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US56092704P 2004-04-09 2004-04-09
US60/560,927 2004-04-09
US10/884,311 2004-07-02
US10/884,311 US7499915B2 (en) 2004-04-09 2004-07-02 Index for accessing XML data
PCT/US2005/011763 WO2005101246A1 (en) 2004-04-09 2005-04-06 Index for accessing xml data

Publications (2)

Publication Number Publication Date
JP2007533008A JP2007533008A (ja) 2007-11-15
JP4724177B2 true JP4724177B2 (ja) 2011-07-13

Family

ID=34964853

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007507497A Active JP4724177B2 (ja) 2004-04-09 2005-04-06 Xmlデータにアクセスするためのインデックス

Country Status (5)

Country Link
EP (1) EP1735726B1 (ja)
JP (1) JP4724177B2 (ja)
AU (1) AU2005234002B2 (ja)
CA (1) CA2561734C (ja)
WO (1) WO2005101246A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1790335A (zh) * 2005-12-19 2006-06-21 无锡永中科技有限公司 Xml文件数据存取的方法
US9460064B2 (en) * 2006-05-18 2016-10-04 Oracle International Corporation Efficient piece-wise updates of binary encoded XML data
JP4860416B2 (ja) * 2006-09-29 2012-01-25 株式会社ジャストシステム 文書検索装置、文書検索方法および文書検索プログラム
US8549009B2 (en) 2007-09-07 2013-10-01 Nec Corporation XML data processing system, data processing method and XML data processing control program used for the system
CN102043852B (zh) * 2010-12-22 2012-07-18 东北大学 一种基于路径信息的可扩展标记语言祖先后代索引方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001034619A (ja) * 1999-07-16 2001-02-09 Fujitsu Ltd Xmlデータの格納/検索方法およびxmlデータ検索システム
JP2001282856A (ja) * 2000-03-31 2001-10-12 Toshiba Corp インデックス作成方法、インデックス表示方法、インデックス検索方法及びインデックス作成装置
JP2002202973A (ja) * 2000-10-25 2002-07-19 Matsushita Electric Ind Co Ltd 構造化文書管理装置
US20020116371A1 (en) * 1999-12-06 2002-08-22 David Dodds System and method for the storage, indexing and retrieval of XML documents using relation databases
JP2002297605A (ja) * 2001-03-30 2002-10-11 Toshiba Corp 構造化文書検索方法および構造化文書検索装置およびプログラム
JP2004030569A (ja) * 2002-05-08 2004-01-29 Samsung Electronics Co Ltd 関係型データベースにおいて正規経路式質疑を処理するxmlインデックス方法と資料構造

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6745206B2 (en) * 2000-06-05 2004-06-01 International Business Machines Corporation File system with access and retrieval of XML documents
AU2002334721B2 (en) * 2001-09-28 2008-10-23 Oracle International Corporation An index structure to access hierarchical data in a relational database system
US7634498B2 (en) * 2003-10-24 2009-12-15 Microsoft Corporation Indexing XML datatype content system and method

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001034619A (ja) * 1999-07-16 2001-02-09 Fujitsu Ltd Xmlデータの格納/検索方法およびxmlデータ検索システム
US20020116371A1 (en) * 1999-12-06 2002-08-22 David Dodds System and method for the storage, indexing and retrieval of XML documents using relation databases
JP2001282856A (ja) * 2000-03-31 2001-10-12 Toshiba Corp インデックス作成方法、インデックス表示方法、インデックス検索方法及びインデックス作成装置
JP2002202973A (ja) * 2000-10-25 2002-07-19 Matsushita Electric Ind Co Ltd 構造化文書管理装置
JP2002297605A (ja) * 2001-03-30 2002-10-11 Toshiba Corp 構造化文書検索方法および構造化文書検索装置およびプログラム
JP2004030569A (ja) * 2002-05-08 2004-01-29 Samsung Electronics Co Ltd 関係型データベースにおいて正規経路式質疑を処理するxmlインデックス方法と資料構造

Also Published As

Publication number Publication date
AU2005234002B2 (en) 2009-12-17
AU2005234002A1 (en) 2005-10-27
EP1735726B1 (en) 2012-08-22
WO2005101246A1 (en) 2005-10-27
JP2007533008A (ja) 2007-11-15
CA2561734C (en) 2013-08-13
CA2561734A1 (en) 2005-10-27
EP1735726A1 (en) 2006-12-27

Similar Documents

Publication Publication Date Title
US7499915B2 (en) Index for accessing XML data
US7398265B2 (en) Efficient query processing of XML data using XML index
US7921101B2 (en) Index maintenance for operations involving indexed XML data
US8219563B2 (en) Indexing mechanism for efficient node-aware full-text search over XML
US7493305B2 (en) Efficient queribility and manageability of an XML index with path subsetting
CA2570462C (en) Efficient extraction of xml content stored in a lob
US8126932B2 (en) Indexing strategy with improved DML performance and space usage for node-aware full-text search over XML
US7885980B2 (en) Mechanism for improving performance on XML over XML data using path subsetting
US7840590B2 (en) Querying and fragment extraction within resources in a hierarchical repository
US7024425B2 (en) Method and apparatus for flexible storage and uniform manipulation of XML data in a relational database system
US6721727B2 (en) XML documents stored as column data
US20050044113A1 (en) Techniques for changing XML content in a relational database
US20050055343A1 (en) Storing XML documents efficiently in an RDBMS
US20050055334A1 (en) Indexing XML documents efficiently
US20070250527A1 (en) Mechanism for abridged indexes over XML document collections
US8015165B2 (en) Efficient path-based operations while searching across versions in a repository
JP4724177B2 (ja) Xmlデータにアクセスするためのインデックス
JP4866844B2 (ja) Lobに格納されたxml内容の効率的な抽出
US20080147615A1 (en) Xpath based evaluation for content stored in a hierarchical database repository using xmlindex

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101026

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110125

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110225

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

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

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

Free format text: PAYMENT UNTIL: 20140415

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4724177

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250