JP4866844B2 - Lobに格納されたxml内容の効率的な抽出 - Google Patents

Lobに格納されたxml内容の効率的な抽出 Download PDF

Info

Publication number
JP4866844B2
JP4866844B2 JP2007516612A JP2007516612A JP4866844B2 JP 4866844 B2 JP4866844 B2 JP 4866844B2 JP 2007516612 A JP2007516612 A JP 2007516612A JP 2007516612 A JP2007516612 A JP 2007516612A JP 4866844 B2 JP4866844 B2 JP 4866844B2
Authority
JP
Japan
Prior art keywords
xml
node
index
fragment
path
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
JP2007516612A
Other languages
English (en)
Other versions
JP2008507008A (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 US11/059,612 external-priority patent/US7366735B2/en
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2008507008A publication Critical patent/JP2008507008A/ja
Application granted granted Critical
Publication of JP4866844B2 publication Critical patent/JP4866844B2/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion

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

Description

発明の分野
この発明は情報の管理に関するものであり、より具体的には、格納されたXMLデータから、Xパス(XPath)経路式によって識別される有効な自立型XMLフラグメントを抽出することに関するものである。
背景
近年、拡張マークアップ言語データ(eXtensible Markup Language)(「XMLデータ」)の格納およびクエリを可能にするデータベースシステムが開発されてきた。XMLのクエリのための多くの発展する規格が存在するが、それらはすべてXパスの何らかの変形を含む。Xパスは、文書の論理構造または階層を通る経路に基づいてアドレス指定構文を使用することによってXML文書の中の項目を位置付け、処理する方法を記載する言語である。Xパス「経路式」によって識別されるXML文書の部分とは、XML文書の構造内で、経路式と一致する任意の経路の終わりに存在する部分である。
リレーショナルデータベースサーバによって管理されるXML文書は典型的には、構造化されていないシリアル化データとして、LOB(ラージオブジェクト)データ型の何らかの形式で格納される。たとえば、XML文書は、CLOB(文字LOB)またはBLOB(バイナリLOB)などの構造化されていない記憶装置に格納される場合もあれば、文書はO−R(XMLスキーマを使用するオブジェクトリレーショナル構造)として格納される場合もある。
多くのXパスクエリを満たすためにXML文書がいかに格納されたとしても、Xパス経路式と一致する格納されたXML文書のフラグメントを識別および抽出する方法は必要である。
残念ながら、XMLデータを格納するための組込サポートを有するデータベースシステムでさえ、通常は経路ベースのクエリの取扱用に最適化されることはなく、データベースシステムのクエリ性能は不備な点が多い。XMLスキーマ定義が利用可能であろう特定の場合には、XMLインスタンス文書で使用される構造およびデータ型は、Xパスクエリを最適化するために使用され得る。しかしながら、XMLスキーマ定義が利用可能ではなく、探索される文書がいかなるスキーマにも従わない場合には、経路ベースのクエリのための効率的な技術は存在しない。
XMLスキーマ定義が利用可能でないときに文書を照会する性能を向上させるために、すべての文書の全面的な走査またはテキストキーワードベースの索引のような特別なメカニズムが使用されてもよい。しかしながら、これらのメカニズムは、Xパス経路式と一致する格納されたXML文書のフラグメントをすばやく識別および抽出する効率的な方法の必要性を満たさない。
格納されたXMLデータのフラグメントの位置をすばやく識別する方法がたとえ利用可能であったとしても、識別された位置からフラグメントを効率的に抽出する方法は依然として必要である。識別された位置に存在するフラグメントは、有効な自立型XML文書ではないかもしれない。たとえば、フラグメント内で使用される名前空間接頭辞はそのフラグメントの外側で宣言されてもよく、したがって、識別された位置から検索されるフラグメントはすべての必要な宣言を持たないことになる。
上述に基づいて、Xパス経路式と一致する有効な自立型XMLフラグメントを識別および抽出するためのシステムならびに方法が明らかに必要である。
このセクションに記載されるアプローチは、追求され得るアプローチであるが、必ずしも以前に考えられたアプローチまたは追求されたアプローチではない。したがって、特に他に表示がない限り、このセクションに記載されるアプローチはいずれも、このセクションに包含されているという理由だけで先行技術としての資格があると想定されるべきではない。
この発明は限定としてではなく一例として添付図面の図に図示され、添付図面では同一の参照数字は同様の要素を指す。
詳細な説明
以下の説明には、説明の目的で、この発明を完全に理解できるようにするために多くの具体的な詳細が記載される。しかしながら、この発明はこれらの具体的な詳細がなくても実施され得ることは明白である。他の場合に、この発明を不必要に曖昧にすることを避けるために、周知の構造および装置はブロック図の形式で示される。
例示的なXML文書
説明の目的で、以下の2つのXML文書に関連して例が以下に挙げられる。
Figure 0004866844
上述のように、po1.xmlおよびpo2.xmlは、XML文書の2つの例に過ぎない。本明細書に記載される技術は、任意の特定の型、構造または内容を有するXML文書に限定されるものではない。このような文書がこの発明のさまざまな実施例に従っていかに索引付けされ、アクセスされることができるかということについての例が以下に挙げ
られる。
XML索引
2004年7月2日に出願された「XMLデータにアクセスするための索引(INDEX FOR ACCESSING XML DATA)」と題される米国特許出願連続番号第10/884,311号(以下「XML索引アプリケーション」)は、Xパスクエリに基づいて、リレーショナルデータベースサーバによって管理されるXML文書に効率的にアクセスするために使用され得る索引のさまざまな実施例を記載する。このような索引は本明細書においてXML索引と称される。
XML索引アプリケーションに記載されるXML索引は、実際のXMLデータを格納するために使用されるフォーマットおよびデータ構造(「ベース構造」)にかかわらずXパスクエリを処理するために使用されることができる。たとえば、実際のXMLデータは、CLOB(実際のXMLテキストを格納する文字LOB)、O−R(XMLスキーマが存在する状態でのオブジェクトリレーショナル構造化形式)、またはBLOB(XMLデータの何らかのバイナリ形式を格納するバイナリLOB)などのいずれの形式でも、データベース内またはデータベースの外側の構造に存在することが可能である。
1つの実施例に従って、XML索引は、Xパスベースの述語および/またはXパスベースのフラグメント抽出を含むクエリの性能を改善するドメイン索引である。たとえば、XML索引は、CLOBまたは構造化記憶装置として格納されるXMLスキーマベースの列およびスキーマのないXML型の列の上に構築されることができる。1つの実施例では、XML索引は、経路索引、値索引および順序索引を協同使用することによって生じる論理索引である。
経路索引は、単純な(ナビゲーション)経路式に基づいてこのメカニズムをルックアップノードにもたらす。値索引は、値の同等性または範囲に基づいてルックアップをもたらす。複数の二次的な値索引がデータ型当たり1つ存在し得るであろう。順序索引は、索引付けされたノードに階層順序付け情報を関連付ける。順序索引は、XMLノード間の親子関係、上位−下位関係および兄弟関係を決定するために使用される。
ユーザがXパスを伴うクエリを(述語またはフラグメント識別子として)実行依頼するとき、XパスステートメントはXML索引テーブルにアクセスするSQLクエリに分解される。生成されたクエリは典型的には、経路、値および順序制約付きのルックアップの組を実行し、その結果を適切に併合する。
説明の目的で、本明細書に記載される技術は、XML索引がXML索引アプリケーションに記載されるようにXML文書を索引付けするために使用される文脈で記載される。しかしながら、本明細書に記載される技術は、いかなる特定の索引構造またはメカニズムにも限定されるものではなく、クエリのどの方法が使用されるかにかかわらず有効な自立型XMLフラグメントを識別および抽出するために使用されることができる。
PATH(経路)テーブル
1つの実施例に従って、論理XML索引はPATHテーブルおよび二次索引の組を含む。上述のように、各々の索引付けされたXML文書は多くの索引付けされたノードを含んでもよい。PATHテーブルは索引付けされたノード当たり1つの行を含む。各々の索引付けされたノードごとに、ノードについてのPATHテーブルの中の行は、ノードに関連付けられたさまざまな情報を含む。
1つの実施例に従って、PATHテーブルに含まれる情報は、(1)ノードへの経路を
示すPATHID(経路ID)、(2)ベース構造内でノードについてのフラグメントデータを位置付けるための「位置データ」、および(3)ノードを含むXML文書の構造的階層内のノードの位置を示す「階層データ」を含む。任意に、PATHテーブルは、値に関連付けられるそれらのノードについての値情報も含んでもよい。これらのタイプの情報の各々は、以下により詳細に説明される。
経路
XML文書の構造は、XML文書内のノード間の親子関係を確立する。XML文書の中のノードの「経路」は、「ルート」ノードから始まり特定のノードに達する一連の親子リンクを反映する。たとえば、po2.xmlの中の「User」ノードへの経路は、/PurchaseOrder/Actions/Action/Userである。なぜなら、「User」ノードは「Action」ノードの子であり、「Action」ノードは「Actions」ノードの子であり、「Actions」ノードは「PurchaseOrder」ノードの子であるためである。
XML索引が索引付けするXML文書の組は本明細書において「索引付けされたXML文書」と称される。1つの実施例に従って、XML索引は、索引付けされたXML文書のすべての中の経路のすべて、または索引付けされたXML文書の中の経路の一部に構築されてもよい。どの経路が索引付けされるかを指定するための技術が以下に説明される。特定のXML索引によって索引付けされる経路の組は本明細書において「索引付けされたXML経路」と称される。
PATHID
1つの実施例に従って、索引付けされたXML経路の各々は、一意の経路識別子(「PATHID」)を割当てられる。たとえば、po1.xmlおよびpo2.xmlに存在する経路は、以下のテーブルに図示されるようにPATHIDを割当てられてもよい。
Figure 0004866844
経路を識別し、経路にPATHIDを割当てるためにさまざまな技術が使用されることができる。たとえば、ユーザは経路を明示的に列挙し、このように識別された経路についての対応するPATHIDを指定してもよい。代替的には、索引付けされたXML文書の組に文書が加えられるときにデータベースサーバは各々のXML文書をパーズしてもよい。パージング動作の間、データベースサーバは、既にPATHIDを割当てられていないいずれの経路も識別し、それらの経路に新しいPATHIDを自動的に割当てる。経路へのPATHIDのマッピングはさまざまな方法でデータベース内に格納されてもよい。1つの実施例に従って、経路へのPATHIDのマッピングは、XML索引自体から切り離されたメタデータとして格納される。
1つの実施例に従って、異なるスキーマに従うXML文書のために同一のアクセス構造が使用される。索引付けされたXML文書が異なるスキーマに従い得るので、各々のXML文書は典型的には、PATHIDが割当てられた経路の一部のみを含むことになる。
位置データ
ノードに関連付けられる位置データは、(1)ノードを含むXML文書がベース構造内のどこに存在するか、および(2)ノードに対応するXMLフラグメントが、格納されたXML文書内のどこに位置付けられるかを示す。したがって、位置データの性質はベース構造の性質に基づいて実現例ごとに異なることになる。位置情報は典型的には、XML文書がパーズされるときにPATHテーブルに加えられる。
説明の目的で、(1)ベース構造はリレーショナルデータベース内のテーブルであり、(2)各々の索引付けされたXML文書はベーステーブルの対応する行に格納されると仮定される。このような文脈では、ノードについての位置データはたとえば(1)ノードを含むXML文書が格納されるベーステーブルの中の行の識別子(「RID」)と、(2)ノードに対応するフラグメントデータへの、格納されたXML文書内での高速アクセスをもたらすロケータとを含み得る。
ロケータは概念上、元の文書を「指し示す」情報であり、典型的にはそのポイントから始まるフラグメントデータを検索するために使用される。ロケータは、XML文書のために使用される実際の記憶装置に依存し、記憶装置のCLOB、O−RまたはBLOB形式ごとに異なる可能性がある。たとえば、CLOBに格納されるXML文書の中のノードのロケータは、ノードが始まるCLOB内の開始文字オフセットであり得るだろう。さらに、ノードのバイト長はロケータの一部として格納されてもよい。合わせて、この情報は格納されたXML文書内の開始位置および終了位置をもたらし、XMLフラグメントを効率的に抽出するために使用されることができる。たとえば、ロケータは、データを抽出することによって、ロケータによって指定された文字オフセットから始めることによって、およびロケータによって示されたバイトの数についてのデータを読取ることによって、指定されたXパスクエリと一致するノードを含むXMLフラグメントを検索するために使用されてもよい。
しかしながら、ロケータは文字オフセットまたはバイトオフセットよりも複雑である可能性がある。たとえば、ロケータは特定のフラグを含み得るであろう。別の例として、リレーショナルテーブルに細断されたXML文書が格納される場合、ロケータは適切なテーブルおよび/または行識別子などを含み得るであろう。
階層データ
ノードについてのPATHテーブルの行は、ノードを含むXML文書の階層構造内のどこにノードが存在するかを示す情報も含む。このような階層情報は本明細書においてノードの「OrderKey(順序キー)」と称される。
1つの実施例に従って、階層順序情報はデューイタイプ(Dewey-type)の値を使用して表わされる。具体的には、1つの実施例では、ノードのOrderKeyはノードの直接の親のOrderKeyに値を追加することによって作成され、ここで、追加される値はその特定の子ノードの、親ノードの子の中での位置を示す。
たとえば、特定のノードDがノードCの子であり、ノードC自体がノードBの子であり、ノードBがノードAの子であると仮定されたい。さらに、ノード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から容易に導き出される。
1つの実施例に従って、各々のOrderKeyによって表わされる合成数は、バイトに匹敵する値に変換され、そのため、2つのOrderKey間の数学的比較は、OrderKeyが対応するノードの、XML文書の構造的階層内での相対的な位置を示す。
たとえば、OrderKey1.2.7.7に関連付けられるノードは、XML文書の階層構造においてOrderKey1.3.1に関連付けられるノードに先行する。したがって、データベースサーバは、OrderKey1.2.7.7を第1の値に変換し、OrderKey1.3.1を第2の値に変換する変換メカニズムを使用し、ここで第1の値は第2の値未満である。第2の値を第1の値と比較することによって、第1の値に関連付けられるノードが第2の値に関連付けられるノードに先行することをデータベースサーバは容易に判断できる。この結果を達成するためにさまざまな変換技術が使用されてもよく、この発明は任意の特定の変換技術に限定されるものではない。
値情報
索引付けされた文書内のいくつかのノードは、属性ノードまたは単純要素に対応するノードであってもよい。本明細書において使用されるように、「単純要素」はいかなる属性または子要素も持たない要素であり、その値は単一のテキストストリングである。たとえば、「po1.xml」では、「Reference」要素は「SBELL−2002100912333601PDT」という単一のテキスト値を有する単純要素である。
1つの実施例に従って、属性ノードおよび単純要素のために、PATHテーブルの行は属性および単純要素の実際の値も格納する。このような値はたとえばPATHテーブルの「値の列」に格納されてもよい。以下により詳細に説明される二次的な「値索引」は値の列に構築される。
PATHテーブルの例
1つの実施例に従って、PATHテーブルは以下のテーブルに指定されるように定義される列を含む。
Figure 0004866844
上に説明されたように、PATHIDはノードに割当てられた識別子であり、ノードへの十分に拡張された経路を一意に表わす。ORDER_KEYは、ノードに関連付けられ
るデューイ順序付け数のシステム表現である。1つの実施例に従って、OrderKeyの内部表現は文書の順序付けも保存する。
VALUEの列は単純要素(つまり、子要素のない)ノードおよび属性ノードのために効果的なテキスト値を格納する。1つの実施例に従って、隣接するテキストノードは連結によって合体される。XML索引アプリケーションに記載されるように、索引作成中にオプションを指定することによってVALUEの列に格納される効果的なテキスト値をユーザがカスタマイズできるようにメカニズムが設けられ、たとえば混合テキスト、余白、大文字と小文字の区別などの動きがカスタマイズされることができる。ユーザは、有界のRAW列またはBLOBを含むいかなる数のフォーマットでもVALUEの列を格納できる。ユーザが有界の記憶装置を選択する場合、索引作成中のオーバーフローはいずれもエラーとしてフラグを立てられる。
以下のテーブルは、(1)上述の列を有し、(2)po1.xmlおよびpo2.xmlのための入力で埋められたPATHテーブルの一例である。具体的には、PATHテーブルの各々の行はpo1.xmlまたはpo2.xmlの索引付けされたノードに対応する。この例では、po1.xmlおよびpo2.xmlはそれぞれにベーステーブルの行R1およびR2に格納されると仮定される。
Figure 0004866844
この例では、rowid(行id)の列は、PATHテーブルの各々の行ごとに一意の識別子を格納する。PATHテーブルが作成されるデータベースシステム次第で、rowidの列は暗黙の列である場合がある。たとえば、行のディスク位置はその行のための一意の識別子として使用されてもよい。以下により詳細に説明されるように、二次的な順序および値索引はPATHテーブルのrowid値を使用して、PATHテーブル内に行を位置付ける。
上に示された実施例では、ノードのPATHID、ORDER_KEYおよびVALUEはすべて単一のテーブルに含まれる。代替的な実施例では、PATHID、ORDER_KEYおよびVALUEの情報を対応する位置データ(たとえば、ベーステーブルRIDおよびLOCATOR)にマップするために別個のテーブルが使用されてもよい。
上に示された実施例では、PATHテーブルの「RID」および「LOCATOR」の列の中の情報は、索引付けされたノードが格納される位置を識別するために使用される。この例では、ベーステーブルの中の各々の行は索引付けされたXML文書に対応する。ベーステーブルの中の各々の行はCLOBを使用して、関連付けられるXML文書を格納する。PATHテーブルの中のRIDの列は、XML文書がCLOBとして格納されるベーステーブルの中の行を識別し、LOCATORの列は、索引付けされたノードが始まるCLOBへの文字オフセットおよびノードのための文字長を格納する。
たとえば、上述のサンプルのXML文書po1.xmlおよびpo1.xmlは、CLOBデータ構造としてベーステーブルの行R1およびR2に、構造化されていないシリアル化形式で格納される。PATHテーブルの中でrowid「1」によって識別されるノードは、ベーステーブルの行R1に位置付けられ、格納されたCLOBの文字1から始まり、350文字の長さを有する。別の例として、rowid「9」によって識別されるノードは、ベーステーブルの行R2に位置付けられ、文字72から始まり、36文字の長さを有する。PATHテーブルのこの行は、以下に示されるpo2.xmlの第1の<Action>ノードに対応する。
<Action>
<User>ZLOTKEY</User>
</Action>
上記の埋められたPATHテーブルに示される例は、ロケータ情報が単純要素および属性ノードのために格納されない実施例を図示する。他の実施例では、ロケータ情報は、単純要素を含むすべてのノードのために格納および維持され得るであろう。さらに、埋められたPATHテーブルに示される例は、LOCATORの列がオフセットおよび長さ情報の両方を格納する実施例を図示する。代替的な実施例では、オフセット情報のみが格納されてもよい。代替的には、上述のように、他のタイプのロケータ情報がLOCATORの列に格納されてもよい。本明細書に記載される技術は、任意の特定のタイプの位置データに依存するものではない。
二次索引
PATHテーブルは、幅広い範囲のクエリを満たすXML文書および/またはXMLフラグメントを位置付けるのに必要な情報を含む。しかしながら、二次アクセス構造がなくても、このようなクエリを満たすためにPATHテーブルを使用することにはしばしば、PATHテーブルの全面的な走査が必要となる。したがって、1つの実施例に従って、(1)経路ルックアップを実行し、および/または(2)順序ベースの関係を識別するクエリを加速するためにさまざまな二次索引がデータベースサーバによって作成される。1つの実施例に従って、以下の二次索引が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への入力は(キー値、rowid)の形式であり、ここでキー値は特定のPATHID/RIDの組合せを表わす合成値であり、rowidはPATHテーブルの特定の行を識別する。
(1)ベーステーブルの行および(2)ノードのPATHIDが公知であるとき、PATHID_INDEXはそのノードについて、PATHテーブル内で行をすばやく位置付けるために使用されてもよい。たとえば、キー値「3.R1」に基づいて、PATHID_INDEXは、キー値「3.R1」に関連付けられる入力を見つけるために横断されてもよい。PATHテーブルが上に図示されたように埋められていると仮定すると、索引入力は3というrowid値を有するであろう。3というrowid値は、PATHテーブルの第3の行を指し、この第3の行はPATHID3およびRID R1に関連付けられるノードのための行である。
ORDERKEY_INDEX
ORDERKEY_INDEXは、PATHテーブルのRIDおよびORDER_KEYの列に構築される。したがって、ORDERKEY_INDEXへの入力は(キー値、rowid)の形式であり、ここでキー値は特定のRID/ORDER_KEYの組合せを表わす合成値であり、rowidはPATHテーブルの特定の行を識別する。
(1)ベーステーブルの行および(2)ノードのORDERKEYが公知であるとき、ORDERKEY_INDEXはそのノードについて、PATHテーブル内で行をすばやく位置付けるために使用されてもよい。たとえば、キー値「R1.’1.2’」に基づいて、ORDERKEY_INDEXは、キー値「R1.’1.2’」に関連付けられる入力を見つけるために横断されてもよい。PATHテーブルが上に図示されたように埋められていると仮定すると、索引入力は3というrowid値を有するであろう。3というrowid値は、PATHテーブルの第3の行を指し、この第3の行はORDERKEY1.2およびRID R1に関連付けられるノードのための行である。
値索引
経路ルックアップに基づくクエリがPATHID_INDEXを使用して加速されることができるのとちょうど同じように、値ルックアップに基づくクエリはPATHテーブルのVALUEの列に構築された索引によって加速されることができる。しかしながら、PATHテーブルのVALUEの列はさまざまなデータ型についての値を保持することができる。したがって、1つの実施例に従って、VALUEの列に格納された各々のデータ型ごとに別個の値索引が構築される。このように、VALUEの列がストリング、数およびタイムスタンプを保持する実現例では、以下の値(二次)索引も作成される。
・SYS_XMLVALUE_TO_STRING(value)上のSTRING_INDEX
・SYS_XMLVALUE_TO_NUMBER(value)上のNUMBER_INDEX
・SYS_XMLVALUE_TO_TIMESTAMP(value)上のTIMESTAMP_INDEX
これらの値索引は、データ型ベースの比較(同等性および範囲)を実行するために使用される。たとえば、NUMBER値索引は、ユーザXパス内で数ベースの比較を取扱うために使用される。たとえば、NUMBER_INDEXへの入力は(数、rowid)の形式であってもよく、ここでrowidは「数」の値に関連付けられるノードのための、PATHテーブル内の行を指す。同様に、STRING_INDEX内の入力は(ストリング、rowid)の形式を有してもよく、TIMESTAMP_INDEX内の入力は(タイムスタンプ、rowid)の形式を有してもよい。
PATHテーブルの中の値のフォーマットは、データ型の固有のフォーマットに対応しないかもしれない。したがって、値索引を使用するとき、データベースサーバは格納されたフォーマットから指定されたデータ型に値のバイトを変換するために変換機能を呼出し
てもよい。さらに、データベースサーバは、以下に記載されるように、任意の必要な変形を適用する。1つの実施例に従って、変換機能はRAWおよびBLOB値の両方で作動し、変換が可能でない場合にはヌルを返す。
デフォルトにより、XML索引が作成されるときに値索引が作成される。しかしながら、ユーザはクエリの作業量の知識に基づいて1つ以上の値索引の作成を抑えることができる。たとえば、すべてのXパス述語がストリング比較のみを伴う場合、NUMBERおよびタイムスタンプ値索引は回避されることができる。
PARENT_ORDERKEY_INDEX
1つの実施例に従って、PATHテーブルに構築される二次索引の組はPARENT_ORDERKEY_INDEXを含む。ORDER_KEY索引と同様に、PARENT_ORDERKEY_INDEXは、PATHテーブルのRIDおよびORDER_KEYの列に構築される。結果として、PARENT_ORDERKEY_INDEXの索引入力は(キー値、rowid)の形式を有し、ここでキー値は特定の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を有するであろう(つまり、rowid=1)。
XML索引を使用してXパスクエリを処理する
上述のように、XML索引は、XML文書の必須部分、つまりタグ、値および入れ子情報をPATH、VALUEおよびORDER索引に取込むことによってXパスベースのクエリならびにフラグメント抽出の性能を改善する。PATH索引は、タグを索引付けするために使用され、単純な経路式に基づいてフラグメントを識別するためにメカニズムを与える。VALUE索引は、XML値が索引付けされることを可能にする。ORDER索引は、索引付けされたノードに階層順序付け情報を関連付け、XMLノード間の親子関係、上位−下位関係および兄弟関係を決定するために使用される。
ユーザがXパスを伴うクエリを実行依頼するとき、Xパス式はXML索引テーブルにアクセスするSQLクエリに分解され得る。生成されたクエリは典型的には、経路、値および順序制約付きルックアップの組を実行し、その結果を適切に併合する。
特に、2004年9月16日に出願された「XML索引を使用したXMLデータの効率的なクエリ処理(EFFICIENT QUERY PROCESSING OF XML DATA USING XML INDEX)と題される同時継続出願米国特許出願連続番号第10/944,170号(以下「クエリ処理」アプリケーション)は、指定された経路に対応するXMLデータを識別するためにXML索引を使用する、「索引がイネーブルにされた」クエリを実行するための方法のさまざまな実施例を記載する。特に、クエリ処理アプリケーションは、XML索引を使用してXパス演算子を評価するための技術を記載する。
より具体的には、クエリ処理アプリケーションは、(1)総称的な経路式を単純な経路、述語および構造結合などのより単純な構成要素に分解するため、(2)索引付けされた経路構成要素のデューイ順序キーでSQL述語を使用して構造結合を表わすことを伴い得るSQLクエリをXML索引のテーブルに対して生成するため、および(3)元のデータを指すロケータを使用したフラグメント抽出のための技術を記載する。
索引がイネーブルにされたクエリは、経路式に基づいて生成され、XML索引のPATHテーブルにアクセスする。経路ベースのクエリの経路式またはそのフラグメントは、テンプレートと組み合わされる。各々のテンプレートは規則に関連付けられる。指定された経路のフラグメントがテンプレートと一致するフォーマットであるとき、対応する規則は索引がイネーブルにされたクエリについてのSQLを生成するために使用される。このプロセスは、クエリ処理アプリケーションに詳細に記載される。
XML索引を使用してextract()演算子を処理する
クエリ処理アプリケーションに記載される技術を使用して評価され得る1つのXパス演算子は、extract()演算子である。Xパスextract()演算子の結果は、指定されたXパス式を満たすXML文書のXMLフラグメントを含むXML型である。
クエリ処理アプリケーションに記載されるように、extract()演算子はXML索引テーブルにSQLクエリとして再書込されることができる。たとえば、/PurchaseOrder/ActionsノードでのXパスクエリのためのextract()演算子は、以下のようにSQLクエリに翻訳されてもよい。
Figure 0004866844
ここで、:B1=pathid(‘/PurchaseOrder/Actions’)であり(pathid()は、当該経路に関連付けられるPATHIDを探すために使用される内部機能であり)、po_tabは格納されたXML文書を含むベーステーブルである。
SYS_XMLINDEX_MKXML()演算子は、索引列の値に基づいてXML型イメージを構築する。1つの実施例では、このルックアップはSYS_XMLINDEX_GETFRAG()演算子を使用して実現されてもよい。行識別子およびロケータを与えられると、SYS_XMLINDEX_GETFRAG()演算子は、行識別子およびロケータに対応するXMLフラグメントからなるXML型イメージを構成する。
XMLAGG()は、SYS_XMLINDEX_MKXML()演算子によって生成されたフラグメントを連結する演算子である。上記の例を使用して、ノード‘/PurchaseOrder/Actions’を含む各々の行ごとに、フラグメントはベーステーブルから検索され、単一のXML型イメージに集約される。
たとえば、上記の埋められたPATHテーブルを使用して、
Figure 0004866844
の出力は、
Figure 0004866844
になるだろう。1つの実施例では、返される出力は、開始タグおよび終了タグを含む、上記の結果を連結することによって作成される単一の長いストリングである。
本明細書に記載される技術は、ノードに対応する実際のテキストフラグメントを得るSYS_XMLINDEX_GETFRAG()演算子を実現するために使用される。
効率的な抽出プロセス
図2に示されるプロセス200は、この発明の実施例に従ってXMLフラグメントを抽出するための1つの技術のステップを図示する。示されるように、ステップ210において、ノードが最初に識別される。XML索引およびクエリ処理アプリケーションに記載される技術などの技術はいずれも、経路式と一致するノードを識別するために使用されることができる。
次に、ステップ215において、ノードが単純要素であるかまたは複合要素であるかを判断するためにノードが調べられる。上述のように、単純要素は子または属性を持たない要素であり、その値は単一のテキスト値である。複合要素は属性を有するかまたは子要素を有する要素である。
ノードが単純要素である場合、ステップ220によって示されるように、XML索引に格納された情報を使用して、元のXML文書を調査することなくフラグメントが構成されることができる。ノードが複合要素である場合、ステップ230によって示されるように、ベーステーブルに格納された元のXML文書がフラグメントを抽出するために調査され、抽出されたフラグメントは適切な解釈のために必要に応じてパッチされる。各々のプロセスは以下により詳細に説明される。
図2に示されるプロセスの実施例は、元のXML文書を調査することなくフラグメントを構成するために、XML索引に格納された情報を利用するが、単純要素および複合要素が異なったように扱われることは要件ではない。単純要素または複合要素のいずれの型とも一致するフラグメントが、格納されたXMLデータから抽出されることが可能である。
単純要素フラグメント
格納されたXML文書がXML索引で索引付けされるとき、単純要素の値はPATHテーブルのVALUEの列に存在する。したがって、単純要素についてのXMLフラグメントは元のXML文書を格納するベーステーブルを調査することなく構成されることができる。フラグメントは、識別されたノードについてのPATHテーブルのVALUEの列から得られる値に、適切な開始タグおよび終了タグを加えることによって構築される。
たとえば、ノード‘/PurchaseOrder/Reference’は、上記のXML文書po1.xml
およびpo2.xmlの中の単純要素である。式‘/PurchaseOrder/Reference’のPATHIDが最初に求められる。この例では、PATHIDは「2」である。いずれかのノードがこのPATHIDに対応するかどうかを判断するためにPATHテーブルが調べられる(ステップ210)。この例では、「2」および「7」というrowidを有するノードが、PATHID=2と一致する。図2のプロセスは各々の一致するノードごとに実行される。
ステップ215において、ノード2およびノード7の両方について、ロケータ情報がなく、VALUEの列が単純なテキストストリングを含むとき、これらの行についてのLOCATORおよびVALUEの列を調べることによって各々が単純要素であることが判断されることができる。これらの単純要素のノードの各々ごとに、プロセスはステップ220に進む。ステップ220では、ノードについてのフラグメントは、開始タグ、値および終了タグを含むストリングを作成することによって構築されることができる。開始タグは、このPATHIDに関連付けられる経路の最後の構成要素(この例では「Reference」)を抽出することによって作成される。PATHテーブルの中でこのノードに対応するVALUEは、開始タグの後のフラグメントに入れられる。たとえば、ノード2についてのフラグメントのVALUEの構成要素は、「SBELL−2002100912333601PDT」である。むすびの文字「/」および上で判断された構成要素のストリング(たとえば、「Reference」)からなるむすびのタグは、フラグメントのストリングを完全なものにする。このプロセスを辿ることによって、ノード2のフラグメントは「<Reference>SBELL−2002100912333601PDT</Reference>」であると決定される。これは、このノードに対応する元のXML文書po1.xmlのフラグメントと一致する。
属性のみを抽出するクエリは、単純要素と同様に扱われることができる。しかしながら、属性を含む要素は、以下により詳細に記載される複合要素として扱われる。
システムが名前空間および生成された接頭辞を加えることができるので、単純要素は適切な解釈のためにパッチングを必要とせず、プロセスは単純要素のためのステップ290に進む。
XML索引を使用して複合要素を抽出する
複合要素のノードの場合、フラグメントは、複合要素に関連付けられたXML文書を格納するベーステーブルからパーズされなければならない。上述のように、PATHテーブルにおける各々の行は、XML文書におけるノードに対応し、元のXML文書を含むベーステーブルにおける行のRIDと、ベーステーブルに格納されたXML文書内でノードを見つけるためのロケータとを含む。
たとえば、ノード/PurchaseOrder/Reference/ActionsでのXパスextract()は、集約されたフラグメントをもたらすはずである。
Figure 0004866844
しかしながら、上述の単純要素とは異なって、これらのフラグメントは格納されたXML文書から抽出される。たとえば、経路式「/PurchaseOrder/Reference/Actions」はPATHID3に対応する。PATHテーブルから、rowid3および8を有するノードがこのPATHIDと一致する。これらの行のVALUEの列は空いており、LOCATORの列はフラグメントを抽出するためのオフセットおよび長さの情報をもたらす。したがって、ステップ215において、これらのノードの各々が複合要素に対応することが判断され、プロセスはステップ230に進む。
ステップ230において、ノードに対応するフラグメントテキストが位置付けられ、読取られる。たとえばノード3について、RIDの列は、格納されたXMLデータがベーステーブルの行R1に位置付けられることを示し、LOCATORフィールドは、フラグメントが文字64から始まり、56という長さを有することを示す。したがって、ノード3に対応するフラグメントテキストは、「po1.xml」を含むベーステーブルの行R1においてCLOBから文字64−120を抽出することによって作成されることができる。ノード8に対応するXMLフラグメントは同様に、「po2.xml」を含むベーステーブルの行R2においてCLOBから文字63−152を抽出することによって作成されることができる。
これらの例では、抽出されたXMLフラグメントは偶然有効である。しかしながら、多くの場合、これらの方法を使用して抽出されたXMLフラグメントは自立型でないかもしれない。たとえば、抽出されたフラグメントはフラグメント内に定義されない参照を含むまたは使用する場合がある。本明細書に記載される方法は、結果として生じるフラグメントが確実に有効でありかつ自立型であるように、上記の技術を使用して作成されたフラグメントを「パッチする」ことを可能にする。
接頭辞および名前空間
XMLにおける要素名が固定されないので、2つの異なる文書が2つの異なるタイプの要素を表わす同一の名前を使用するときには名前の衝突が起こり得る。名前の衝突を回避する1つの標準的な方法は、名前とともに接頭辞を使用するというものである。
たとえば、表1および表2は、両方が「表」要素を使用するXML文書を図示する。
Figure 0004866844
これら2つのXML文書が両方データベースに格納される場合、場合によっては要素名の衝突が存在し得るであろう。なぜなら、両方の文書が異なる内容および定義を有する<table>要素を含むためである。これらのタイプの衝突を解決し、防止する1つの標準的な方法は、名前空間接頭辞の使用によるものである。一例として、以下の表1Aおよび表2Aは、要素名の衝突を回避するために表1および表2のXML文書がいかに修正され得るかを図示する。
Figure 0004866844
表1Aおよび表2Aに示されるように、要素名の衝突はもはや問題ではない。なぜなら、2つの文書が<table>要素について異なる名前(つまり、<h:table>および<f:table>)を使用するためである。接頭辞を使用することによって、2つの異なるタイプの<table>要素が可能である。
接頭辞は典型的には、要素についての情報を担持するXML文書を参照する。表1Bおよび表2Bは、特定の名前空間を参照するために接頭辞がいかに定義され得るかを示す。
Figure 0004866844
名前空間に関連付けられる修飾名を要素の接頭辞に与えるために、接頭辞のみを使用する代わりに、xmlns属性が<table>タグに加えられた。典型的には、名前空間属性は以下の構文を用いて要素の開始タグに置かれる。
xmlns:namespace−prefix=“namespace”
表1Bおよび表2Bによって示されるように、定型資源識別子(URI)が使用されることができるが、名前空間自体はインターネットアドレスを使用して定義されることができる。複数の名前空間接頭辞が単一要素の属性として宣言されることができる。
名前空間が要素の開始タグにおいて属性として定義されるとき、同一の接頭辞を有するすべての子要素は同一の名前空間に関連付けられる。さらに、表1Cおよび表2Cに示されるように、デフォルトの名前空間が要素のために使用されることができる。デフォルトの名前空間が使用されるとき、接頭辞はすべての子要素で使用される必要はない。デフォルトの名前空間宣言は、その範囲内のすべての接頭辞が付いていない要素名に当てはまる。
Figure 0004866844
接頭辞は修飾名の名前空間接頭辞部分をもたらし、名前空間宣言の際に名前空間の参照に関連付けられなければならない。接頭辞は、名前空間名のためのプレースホルダとしてのみ機能する。接頭辞ではなく名前空間名は、含んでいる文書を超えて範囲が広がる名前を構成する際に使用される。接頭辞および名前空間の宣言は、属性および要素に当てはまり得る。
接頭辞を宣言する名前空間宣言の範囲は、現れる開始タグの初めから、対応する終了タグの終わりまで広がり、同一の接頭辞名を使用するいずれの内部宣言の範囲も排除する。このような名前空間宣言は、宣言に指定された接頭辞が一致する範囲内のすべての要素および属性の名前に当てはまる。
名前空間接頭辞は、接頭辞が使用される要素の開始タグまたは上位要素の中の名前空間宣言の属性において宣言されたに違いにない。この制約は、名前空間宣言の属性がXML文書に直接にもたらされるのではなく、外部エンティティにおいて宣言されたデフォルトの属性を介してもたらされる場合に、問題を招くおそれがある。
これは特にフラグメント抽出の文脈で問題がある。外部文書での宣言が問題であるだけでなく、抽出されたXMLフラグメントが、フラグメントが抽出される文書の、より以前のセクションにおいて宣言された接頭辞を使用する可能性がある。さらに、抽出されたフラグメントがいかなる名前空間にも直接的な参照を持たないので、その上で有効であるフラグメントが抽出されるかもしれないが、抽出されたフラグメントは、上位要素の範囲内にある場合には、上位のデフォルトの名前空間宣言を使用すべきである。
本明細書に記載される技術は、所望のノードおよびすべてのその上位からの名前空間宣言のリストを構築することによってこの問題を解決する。このリストは、PATHテーブルを照会することによって構築される。このリストは次いで、完全で有効な自立型XMLフラグメントを得るために、ステップ230において作成されたフラグメントに継ぎ合わされる。
フラグメント抽出における名前空間宣言の取扱
上述のように、Xパスextract()演算子が単純要素に対して評価されるとき、所望のフラグメントはPATHテーブルのみを使用して構成されることができる。複合要素が抽出されるときには、フラグメントはPATHテーブルからの位置情報を使用して元のデータから読取られる。しかしながら、抽出されたXMLフラグメントにおいて接頭辞が使用されるとき、抽出されたフラグメントは接頭辞も説明しなければならない。さらに、抽出されるノードの上位要素において使用されるデフォルトの名前空間宣言はいずれも考慮されなければならない。
たとえば、表3において例示的なXML文書「po3.xml」を考慮されたい。
Figure 0004866844
Xパスクエリ「extract(/po:purchaseOrder/po:lineItem/myns:SomeOtherTag)」が上述のプロセスのみを使用して評価される場合、このクエリによって返される結果として生じるフラグメントは表3のライン101−104から成るであろう。しかしながら、このXMLフラグメントは名前空間接頭辞「po」を参照し、この名前空間接頭辞「po」はロケータ情報に従って抽出されるフラグメント(つまり、ライン101−104)の中のどこにも定義されない。その代わりに、この接頭辞は宣言され、表1のライン1の中の名前空間「po.xsd」にマップされる。
宣言「xmlns:po=″po.xsd″」は、適切に解釈されるフラグメント、つまり「自立型である」フラグメントのためにステップ230において順番に作成されるフラグメントに継ぎ合わされる必要がある。
1つの実施例では、名前空間宣言はロケータ自体の中に維持されることができる。しかしながら、この情報はあらゆるレベルに存在するであろう。好ましい実施例では、宣言情報はPATHテーブルに格納された情報を使用して構築される。この実施例では、抽出されているノードのすべての上位ノードを識別するためにSQLクエリが使用され、名前空間宣言は上位ノードから集められる。さらに、本明細書に記載される技術は、前に記載されたXML名前空間スコーピング規則に準拠するように、正確に、つまり、より深い宣言が浅い宣言に優先する状態で逆の順序で名前空間宣言を解く。
図2におけるステップ240によって示されるように、ノードの上位が識別される。XML索引が使用される場合、上位情報がOrderKeyを使用して格納されるので、これは単純なクエリである。ステップ250において、XMLフラグメントの適切な解釈に必要な情報が各々の識別された上位ごとに検索される。フラグメントの適切な解釈に必要な、上位
から検索された任意の宣言または他の情報が存在する場合、ステップ280において、この情報はフラグメントにパッチされる。たとえば、フラグメントの中で使用されるが定義されないいずれの接頭辞のための名前空間宣言も、最も近い上位ノードから検索され、ステップ230において作成されたフラグメントにパッチされる。
たとえば、名前空間宣言を集め、それらを正確に解くためにすべての上位ノードを調べるように以下のSQLクエリが使用され得るであろう。(:B1=考慮されている文書のRID、:B2=抽出されるノードのOrderKey)
Figure 0004866844
示されるように、外側のサブクエリは所与の文書においてすべての名前空間宣言を選択する。各々のこのような宣言ごとに、宣言が上位要素に存在するかどうかをexists()サブクエリが判断する。
スコーピング規則を正確に説明するために、上位要素に存在する宣言は下位にも存在し、下位が親の宣言に優先するのでその宣言は無視されるはずである。さらに、親要素に存在する宣言は孫要素における宣言に優先するなどである。適切な順序で各々の上位を考慮し、スコーピング規則を説明することによって、フラグメントに加えられる必要のある宣言のリストがステップ250において作成される。スコーピング規則を説明するために、上位ノードは最も近いものから最も離れたものまで考慮される。各々の宣言が上位の中に見つけられるとき、宣言がフラグメント自体の一部としてまたはより以前の上位ノードにおいて既に考慮されていた場合には、それは無視される。そうでなければ、宣言は、フラグメントにパッチされるストリングに加えられる。
たとえば、表3の中のノードの以下のXパスクエリを考慮されたい。
extract(‘/po:purchaseOrder/po:lineItem/myns:SomeOtherTag’)
ステップ230において表3から抽出されるフラグメントは以下のとおりである。
Figure 0004866844
接頭辞「po」はこのフラグメントでは定義されない。
このフラグメントの上位がステップ250において考慮されるとき、定義の以下のリストが作成される。
Figure 0004866844
ステップ280において定義のリストの中でフラグメントに継ぎ合わされた後、結果として生じるフラグメントは以下のとおりである。
Figure 0004866844
この例示的なフラグメントを自立型のフラグメントにするために宣言xmlns:ps2="po2.xsd"は必要とされないが、そこに含まれているものはフラグメントを無効にすることなく、またはフラグメントの意味を変更することはない。代替的な実施例では、宣言がフラグメントにパッチされる前に、抽出されているノードに宣言が必要であるかどうかを判断するために宣言が調べられる。
適切な解釈に必要なすべての情報を含む、ステップ280において作成された自立型のフラグメントは次いで、ステップ290において返される。
本明細書に記載される技術は名前空間宣言および接頭辞の文脈で記載されてきたが、この技術は他の状況で使用されることが可能である。たとえば、エンティティまたはマクロ参照の存在はフラグメントの自立型の性質を同様に複雑にする。名前空間と同様に、いずれのエンティティ参照もDTD(データ型定義)宣言とともに最初に付加される必要があるので、CLOBオフセットによって識別されたフラグメントは簡単に流出されることができない。
ハードウェアの概観
図1は、この発明の実施例が実現され得るコンピュータシステム100を図示するブロック図である。コンピュータシステム100は、バス102または情報を通信するための他の通信メカニズムと、バス102に結合され情報を処理するためのプロセッサ104とを含む。コンピュータシステム100は、バス102に結合され情報およびプロセッサ104によって実行される命令を格納するための、ランダムアクセスメモリ(RAM)または他の動的記憶装置などのメインメモリ106も含む。メインメモリ106は、プロセッサ104によって実行される命令の実行中に一時的な変数または他の中間情報を格納するためにも使用されてもよい。コンピュータシステム100はさらに、バス102に結合されプロセッサ104のための静的情報および命令を格納するためのリードオンリメモリ(ROM)108または他の静的記憶装置を含む。情報および命令を格納するために、磁気ディスクまたは光学ディスクなどの記憶装置110が設けられ、バス102に結合される。
コンピュータシステム100は、コンピュータユーザに情報を表示するための陰極線管(CRT)などのディスプレイ112に、バス102を介して結合されてもよい。英数字および他のキーを含む入力装置114は、プロセッサ104に情報およびコマンド選択を伝えるためにバス102に結合される。ユーザ入力装置の別のタイプは、プロセッサ104に方向情報およびコマンド選択を伝えるため、およびディスプレイ112でカーソルの動きを制御するための、マウス、トラックボールまたはカーソル方向キーなどのカーソル制御装置116である。この入力装置は典型的には、2つの軸、つまり第1の軸(たとえ
ば、x)および第2の軸(たとえば、y)において2つの自由度を有し、これによって、装置が平面で位置を指定できる。
この発明は、本明細書に記載される技術を実現するためのコンピュータシステム100の使用に関するものである。この発明の1つの実施例に従って、それらの技術は、メインメモリ106に含まれる1つ以上の命令の1つ以上のシーケンスを実行するプロセッサ104に応答して、コンピュータシステム100によって実行される。このような命令は、記憶装置110などの別の機械可読媒体からメインメモリ106に読込まれてもよい。メインメモリ106に含まれる命令のシーケンスの実行は、本明細書に記載されるプロセスステップをプロセッサ104に実行させる。代替的な実施例では、この発明を実現するために、ソフトウェア命令の代わりにまたはソフトウェア命令と組合せられて、ハードワイヤード回路が使用されてもよい。したがって、この発明の実施例は、ハードウェア回路およびソフトウェアの任意の特定の組合せに限定されるものではない。
本明細書において使用される「機械可読媒体」という用語は、特定の態様で機械に動作させるデータを与えることに関与する任意の媒体を指す。コンピュータシステム100を使用して実現される実施例では、さまざまな機械可読媒体はたとえば実行のためにプロセッサ104に命令を与えることにかかわる。このような媒体は、不揮発性媒体、揮発性媒体および伝達媒体を含むがそれらに限定されない多くの形態を取ってもよい。不揮発性媒体はたとえば、記憶装置110などの光学ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ106などの動的メモリを含む。伝達媒体は、バス102を含む線などの同軸ケーブル、銅線および光ファイバを含む。伝達媒体は、電波および赤外線データ通信中に生成される波などの音波または光波の形態も取り得る。
機械可読媒体の一般的な形態はたとえばフロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、もしくは他の磁気媒体、CD−ROM、他の光学媒体、パンチカード、紙テープ、孔のパターンを有する他の物理的な媒体、RAM、PROMおよびEPROM、フラッシュEPROM、他のメモリチップもしくはカートリッジ、以下に記載される搬送波、またはコンピュータが読取ることのできる他の媒体を含む。
機械可読媒体のさまざまな形態は、実行のためにプロセッサ104に1つ以上の命令の1つ以上のシーケンスを搬送することにかかわってもよい。たとえば、命令は最初にリモートコンピュータの磁気ディスクで搬送されてもよい。リモートコンピュータはその動的メモリに命令をロードすることができ、モデムを使用して電話線によってその命令を送ることができる。コンピュータシステム100にローカルなモデムは、電話線に沿ってデータを受取ることができ、データを赤外線信号に変換するために赤外線送信機を使用することができる。赤外線検出器は、赤外線信号の状態で搬送されたデータを受取ることができ、適切な回路はバス102にデータを置くことができる。バス102はメインメモリ106にデータを搬送し、メインメモリ106からプロセッサ104は命令を検索し、実行する。メインメモリ106によって受取られた命令は、プロセッサ104による実行の前または後に任意に記憶装置110に格納されてもよい。
コンピュータシステム100は、バス102に結合された通信インターフェイス118も含む。通信インターフェイス118は、ローカルネットワーク122に接続されるネットワークリンク120への2方向のデータ通信結合をもたらす。たとえば、通信インターフェイス118は、対応するタイプの電話線へのデータ通信接続をもたらすために、統合サービスデジタル網(ISDN)カードまたはモデムであってもよい。別の例として、通信インターフェイス118は、互換性のあるローカルエリアネットワーク(LAN)へのデータ通信接続をもたらすために、LANカードであってもよい。ワイヤレスリンクも実
現されてもよい。いかなるこのような実現例においても、通信インターフェイス118は、さまざまなタイプの情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号または光信号を送受信する。
ネットワークリンク120は典型的には、1つ以上のネットワークを介して他のデータ装置へのデータ通信をもたらす。たとえば、ネットワークリンク120は、ローカルネットワーク122を介してホストコンピュータ124への接続をもたらす場合もあれば、インターネットサービスプロバイダ(ISP)126によって動作されるデータ機器への接続をもたらす場合もある。ISP126は次いで、現在一般に「インターネット」128と称されるワールドワイドパケットデータ通信ネットワークを介してデータ通信サービスをもたらす。ローカルネットワーク122およびインターネット128は両方、デジタルデータストリームを搬送する電気信号、電磁信号または光信号を使用する。さまざまなネットワークを介する信号、ならびにコンピュータシステム100へおよびコンピュータシステム100からデジタルデータを搬送する、ネットワーク120に沿って通信インターフェイス118を介する信号は、情報を伝える搬送波の例示的な形態である。
コンピュータシステム100は、ネットワーク、ネットワークリンク120および通信インターフェイス118を介してメッセージを送ることができ、プログラムコードを含むデータを受取ることができる。インターネットの例では、サーバ130はインターネット128、ISP126、ローカルネットワーク122および通信インターフェイス118を介して、アプリケーションプログラムのために要求されたコードを伝えるかもしれない。
受取られたコードは受取られたときにプロセッサ104によって実行されてもよく、および/または後の実行のために記憶装置110もしくは他の不揮発性記憶装置に格納されてもよい。この態様で、コンピュータシステム100は搬送波の形態でアプリケーションコードを得ることができる。
上記の明細書では、この発明の実施例は実現例ごとに異なる可能性のある多くの具体的な詳細を参照しながら記載されてきた。したがって、何がこの発明であるかおよび出願人によって何がこの発明であるように意図されるかは、このような特許請求の範囲が発行する具体的な形で、本出願から発行される特許請求の範囲の組に単独で排他的に示され、いかなるその後の修正も含む。このような特許請求の範囲に含まれる用語について本明細書に明白に記載される定義はいずれも、特許請求の範囲の中で使用される用語の意味を決定する。したがって、特許請求の範囲に明白に記載されない限定、要素、特性、特徴、利点または属性はいかなる方法でもこのような特許請求の範囲を限定すべきではない。したがって、明細書および図面は限定的な意味ではなく例示的な意味で考えられるべきである。
本明細書に記載される技術が実現され得るシステムのブロック図である。 要求に応答して自立型XMLフラグメントを効率的に与えるためのステップを図示するフローチャートである。

Claims (13)

  1. データベース管理システムによって管理されるXML文書の中でノードについての自立型XMLフラグメントを与えるための方法であって、
    XMLフラグメントの要求を受取る、コンピュータによって実現されるステップを含み、要求はXML経路式を含み、前記方法はさらに、
    データベース管理システムによって管理されるXML文書の中で、XML経路式と一致するノードを識別する、コンピュータによって実現されるステップと、
    識別されたノードに対応するXMLフラグメントを抽出する、コンピュータによって実現されるステップとを含み、XMLフラグメントは自立型ではなく、前記方法はさらに、
    XMLフラグメントの適切な解釈に必要な情報を含む前記ノードの1つ以上の上位ノードを識別する、コンピュータによって実現されるステップを含み、必要な情報は、XMLフラグメントによって使用されるがXMLフラグメント内に定義されない参照を含み、前記方法はさらに、
    必要な情報をXMLフラグメントに挿入することによって自立型XMLフラグメントを構築するようにXMLフラグメントをパッチする、コンピュータによって実現されるステップと、
    要求に応答して自立型XMLフラグメントを与える、コンピュータによって実現されるステップとを含む、方法。
  2. データベース管理システムは、データベース管理システムに格納されたXML文書を索引付けする索引を含み、XML文書の中でノードを識別するステップは、ノードを識別するために索引を使用することを含む、請求項1に記載の方法。
  3. 索引は、経路、値および順序索引を含む、請求項2に記載の方法。
  4. 第1のXMLフラグメントを抽出するステップは、
    識別されたノードに対応する格納されたXMLデータの位置を判断することと、
    判断された位置からXMLデータを読取ることとを含む、請求項1に記載の方法。
  5. 識別されたノードに対応する格納されたXMLデータの位置を判断するステップは、データベース管理システムに格納されたXML文書を索引付けする索引から位置情報を読取ることを含む、請求項4に記載の方法。
  6. XMLフラグメントを抽出するステップは、
    索引の中の情報を使用してXMLフラグメントを構成することを含む、請求項2に記載の方法。
  7. 1つ以上の上位ノードを識別するステップは、順序索引を使用することを含む、請求項3に記載の方法。
  8. 前記XMLフラグメントの適切な解釈に必要な情報は、名前空間宣言である、請求項1に記載の方法。
  9. 適切な解釈に必要な情報を含む1つ以上の上位ノードを識別するステップは、名前空間宣言を含む上位ノードを識別することを含む、請求項8に記載の方法。
  10. 適切な解釈に必要な情報を含む1つ以上の上位ノードを識別するステップは、第1のXMLフラグメントにおいて名前空間宣言が宣言されたかどうかを判断することを含む、請求項8に記載の方法。
  11. 適切な解釈に必要な情報を含む1つ以上の上位ノードを識別するステップは、最も近い上位ノードからルート上位ノードまで順番に各々の上位ノードを調べることを含む、請求項1に記載の方法。
  12. XMLフラグメントの適切な解釈に必要な情報は名前空間宣言であり、上位ノードにおける名前空間宣言が、既に考慮された上位ノードにおける名前空間宣言と一致する場合、名前空間宣言が適切な解釈に必要とされないことが判断される、請求項11に記載の方法。
  13. 求項1から12のいずれかに記載の方法をコンピュータに実行させるための、プログラム
JP2007516612A 2004-06-16 2005-06-13 Lobに格納されたxml内容の効率的な抽出 Active JP4866844B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US58044504P 2004-06-16 2004-06-16
US60/580,445 2004-06-16
US58769804P 2004-07-13 2004-07-13
US60/587,698 2004-07-13
US11/059,612 2005-02-15
US11/059,612 US7366735B2 (en) 2004-04-09 2005-02-15 Efficient extraction of XML content stored in a LOB
PCT/US2005/020795 WO2006009664A1 (en) 2004-06-16 2005-06-13 Efficient extraction of xml content stored in a lob

Publications (2)

Publication Number Publication Date
JP2008507008A JP2008507008A (ja) 2008-03-06
JP4866844B2 true JP4866844B2 (ja) 2012-02-01

Family

ID=45782006

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007516612A Active JP4866844B2 (ja) 2004-06-16 2005-06-13 Lobに格納されたxml内容の効率的な抽出

Country Status (1)

Country Link
JP (1) JP4866844B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9128946B2 (en) * 2007-12-31 2015-09-08 Mastercard International Incorporated Systems and methods for platform-independent data file transfers
US10705877B2 (en) * 2014-05-29 2020-07-07 Ab Initio Technology Llc Workload automation and data lineage analysis

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003030031A2 (en) * 2001-09-28 2003-04-10 Oracle International Corporation Mechanism for mapping xml schemas to object-relational database systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003030031A2 (en) * 2001-09-28 2003-04-10 Oracle International Corporation Mechanism for mapping xml schemas to object-relational database systems

Also Published As

Publication number Publication date
JP2008507008A (ja) 2008-03-06

Similar Documents

Publication Publication Date Title
AU2005264926B2 (en) Efficient extraction of XML content stored in a LOB
US7398265B2 (en) Efficient query processing of XML data using XML index
US7461074B2 (en) Method and system for flexible sectioning of XML data in a database system
US7440954B2 (en) Index maintenance for operations involving indexed XML data
US7024425B2 (en) Method and apparatus for flexible storage and uniform manipulation of XML data in a relational database system
US7840590B2 (en) Querying and fragment extraction within resources in a hierarchical repository
US20040220912A1 (en) Techniques for changing xml content in a relational database
US20070016605A1 (en) Mechanism for computing structural summaries of XML document collections in a database system
AU2007275507C1 (en) Semantic aware processing of XML documents
JP4724177B2 (ja) Xmlデータにアクセスするためのインデックス
US8930348B2 (en) Isolation for applications working on shared XML data
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
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080107

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100914

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110922

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

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

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

Free format text: PAYMENT UNTIL: 20141118

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4866844

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