JP2009518718A - Xmlのための簡素インデックス構造 - Google Patents
Xmlのための簡素インデックス構造 Download PDFInfo
- Publication number
- JP2009518718A JP2009518718A JP2008543611A JP2008543611A JP2009518718A JP 2009518718 A JP2009518718 A JP 2009518718A JP 2008543611 A JP2008543611 A JP 2008543611A JP 2008543611 A JP2008543611 A JP 2008543611A JP 2009518718 A JP2009518718 A JP 2009518718A
- Authority
- JP
- Japan
- Prior art keywords
- simple index
- triplet
- index
- value
- key
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information 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/81—Indexing, e.g. XML tags; Data structures therefor; Storage structures
Abstract
簡素データおよびインデックス構造は、理論上の最適条件付近に記憶サイズの条件を設定している場合に更新および検索動作の効率を最大にすることを目的とする。本発明の簡潔なインデックス構造は、階層構造で表されたデータに索引をつける。前記インデックスは、キーとして全ての異なった根から葉への経路または固有要素のタグ名の記号表に含まれる。記号表におけるキーのエントリは、前記キーに関連したノードの変換された位相情報とともに(図22)、前記位相情報で使用された変換方法の表示情報を持っており(図17)、使用された前記変換方法は、前記キーに関連したノード間の位相関係に基づいている。また、本発明は、前記簡素インデックス構造を構成、使用および更新するためのコンピュータシステムおよびコンピュータソフトウェアに関する。
Description
本発明は、簡素なデータおよびインデックス構造が理論的な最適条件に近づくように記憶容量サイズの制限条件を設定している間に、いかなるデータについても更新および検索動作の効率を最大にすることを目的としている。より詳細には、本発明は、簡素インデックス構造、簡素インデックス構造を使用する方法、簡素インデックス構造を作成する方法、簡素インデックスを作成する方法を実行するコンピュータソフトウェアアプリケーション、簡潔インデックスを作成および使用するためのコンピュータシステムに関するものである。
本願は、2005年12月6日に出願されたオーストラリア仮特許出願第2005906846号に基づく優先権を主張し、その内容が引用によってここに組み込まれている。
拡張マーク付け言語(XML)データと従来の関係データとの間の主な相違点は、関係データが二次元テーブルを使用して組織化されている一方、XMLデータは階層構造を持つツリーで構成されている。
例えば、XMLの短片が以下の数1のように与えられる。
これは図1に示されているような階層的ツリーで表すことができる。
XML照会を効率的に処理するために、いくつかのツリー探査方法が存在するが、セットベース問い合わせ処理(従来の関係データベース)がさらに好ましい。例えば、大きなXML文書で照会処理をするとき、探査に基づいた方法を使用して実行するために、照会処理が困難になるとともに実行時間が長くなる。
関係データベース管理システムでは、セットベースの処理の中に中間結果を返すデータベース・インデックスを作成および使用することによって照会性能を高めることができる。しかしながら、関係データベースに存在しないXMLデータにおけるセットベース問い合わせ処理には欠点がある。これらの欠点は、あらゆるノードを照会するときに、2つの任意のXMLノードの位相関係を問い合わせる必要性があることで生ずる。
XML照会は、複数のパス表現で構成することもできる。パス表現は、結果ノードが満たす必要がある位相関係を有することとしてもよい。例えば、パス表現 /a[b]/c は、ノードラベルとしてcがある全てのノードを求めるとともに、ラベルaがある親ノードとラベルbがある兄弟ノードとを持つ全てのノードを求める。いかなる種類の先祖/子孫についての照会にも効率的に答えるためには、構造的接続動作が必要である。構造的接続動作は、以下の技術として名称がある。潜在的派生ノードリストとともに潜在的先祖ノードリストが与えられれば、前記リストのノード間の先祖−子孫関係が決定される。
インデックスは、特定ラベルの条件を満たす1セットのノードを取得するためにたびたび提供される。位相関係を判断するために必要なナンバリング構造を有するインデックスは、作成およびメンテナンスに高いコストがかかる。最も一般的なナンバリング構造は、スタート−エンド−深さのトリプレット、前順−後順−深さのトリプレット、またはデューイ符号化を使用する。nノードとともにXML文書が与えられれば、トリプレットの中の各ナンバを表すために少なくとも log n ビットを必要とする。インデックスが文書サイズに比例しているノードセットを返す場合、そのようなセットを表すためだけに少なくとも O(n log n) ビットが必要となる。全体の位相を簡素に表すためには 2n + o(n) ビットのみが必要となる、ことが知られている。したがって、そのようなインデックス(最も一般的なナンバリング・スキーマによる)は、オリジナル文書自体よりも実質的に多くのスペースを使用するので、インデックスの有用性を顕著に制限する。
第1の態様によれば、本発明は、階層構造で表されたインデックスデータのための簡素インデックス構造を提供し、前記インデックス構造は、キーとして全ての異なった根から葉への経路の記号表、またはキーとして固有要素のタグ名の記号表を有し、前記記号表におけるキーについてのエントリは、前記キーに関連したノードの変換された位相情報とともに、前記位相情報で使用される変換方法の表示情報を持っており、使用される前記変換方法は、前記キーに関連付けられたノード間の位相関係に基づいている。
前記位相情報は、各ノードについてトリプレット番号づけ構造を有することとしてもよい。前記トリプレット番号づけ構造は、スタート・エンド・深さトリプレット番号づけ構造または前順・後順・深さトリプレット番号づけ構造であることとしてもよい。前記トリプレットは、ツリー探査オーダの中にあることとしてもよい。
前記階層構造は、エクステンシブルマークアップ言語(XML)であることとしてもよい。
前記変換方法は、前記リストの各トリプレットにおける各値を差分符号化するように、前記位相情報を差分符号化するステップを有することとしてもよい。前記トリプレットの第1の差分符号化値は、連続したトリプレットのスタート位置の差であることとしてもよい。各ノードのスタート位置とエンド位置との間の差が与えられれば、前記トリプレットの第2の差分符号化値は、連続したトリプレット間のそれらの値の差であることとしてもよい。第3の差分符号化値は、連続したトリプレットの深さについての差であることとしてもよい。
前記変換方法の情報は、シフトされたキーに関連した各ノードについてのトリプレットの前記第1、第2または第3の値のそれぞれであるシフト値を有することとしてもよい。
前記変換方法の情報は、全てのノードの前記トリプレットの前記第1、第2または第3の値のそれぞれをグラフ表示する棒グラフの形状の表示情報を有することとしてもよい。
前記変換方法の情報は、前記キーに関連した全てのノードの前記トリプレットの前記第1、第2または第3の値を出力するパターン関数を有していることとしてもよい。
前記変換方法の情報は、前記変換された位相情報が前記位相情報と同一であることを示すものとしてもよい。
キーについてのエントリは、前記位相情報の変換に使用された複数の方法を保持していることとしてもよい。前記キーに関連付けられた全てのノードの前記トリプレットの前記第1、第2または第3の値のそれぞれについて方法があることとしてもよい。
前記変換された位相情報は、更新圧縮形式で保存されている。
前記位相情報は、簡素データ構造から取得されることとしてもよい。前記簡素データは、平衡カッコ表示を使用しているノードの入れ子を表す位相レイヤ(層0)を有することとしてもよい。すなわち、ツリーの前順探査は、開タグが遭遇されたとき、1ビット(開カッコ)出力し、閉タグが遭遇されたとき、反対ビット(閉カッコ)を出力する。
第2の態様によれば、本発明は、簡素インデックス構造を使用する方法であって、
記号表において所要キーを位置付けるステップと、
前記キーに関連したノードの前記位相情報の変換に使用された変換方法に基づき、前記キーに関連した全てのノードの位相情報を検索するために前記変換された位相情報を再変換するステップと、を有する簡素インデックス構造を使用する方法を提供する。
記号表において所要キーを位置付けるステップと、
前記キーに関連したノードの前記位相情報の変換に使用された変換方法に基づき、前記キーに関連した全てのノードの位相情報を検索するために前記変換された位相情報を再変換するステップと、を有する簡素インデックス構造を使用する方法を提供する。
前記簡素インデックス構造は、構造的結合の照会を処理するために使用されることとしてもよい。
第3の態様によれば、本発明は、階層構造で表されたデータについて簡素インデックスを作成する方法を提供するものであって、前記方法は、
1
ツリー探査命令におけるノードの位相符号化リストを生成するためにデータを解析するステップと、 異なった根から葉への経路に関連したノードまたは固有要素のタグ名に関連したノードについて、前記ノード間の位相関係を評価するステップと、
2
前記評価に基づき、前記異なった根から葉への経路または固有タグ名に関連したノードの前記位相符号化リストを変換するステップと、
3
キーとして前記異なった根から葉への経路または固有タグ名を持っている記号表においてエントリを作成するステップと、を有し、
前記エントリは、使用された前記変換方法の表示情報と共に前記キーに関連した変換された位相情報に含まれる。
1
ツリー探査命令におけるノードの位相符号化リストを生成するためにデータを解析するステップと、 異なった根から葉への経路に関連したノードまたは固有要素のタグ名に関連したノードについて、前記ノード間の位相関係を評価するステップと、
2
前記評価に基づき、前記異なった根から葉への経路または固有タグ名に関連したノードの前記位相符号化リストを変換するステップと、
3
キーとして前記異なった根から葉への経路または固有タグ名を持っている記号表においてエントリを作成するステップと、を有し、
前記エントリは、使用された前記変換方法の表示情報と共に前記キーに関連した変換された位相情報に含まれる。
前記解析するステップは、拡張アレイに記憶された位相符号化リストを生成するために前記ツリーを探査するステップを有することとしてもよい。前記位相符号化リストは、各ノードについてトリプレット番号づけ構造を有していることとしてもよい。前記トリプレット番号づけ構造は、スタート・エンド・深さトリプレット番号づけ構造であることとしてもよい。
前記拡張アレイは、一旦、所定のブロックサイズを持ち、前記方法は、位相符号化リストを生成し続けるとともに、新たなブロックの拡張アレイに記憶するステップをさらに有することとしてもよい。
位相符号化リストを生成した後に、上記で説明したように前記位相符号化リストを別個に再符号化する。前記方法は、クラスタ化アルゴリズムを実行するステップをさらに有することとしてもよく、複数のクラスタが特定される場合、前記ブロックが各クラスタのより小さいブロックに分割されることとしてもよい。
前記変換方法の情報は、シフトされている値、グラフ化された値、または上記で説明されたパターン関数を生成する情報を有することとしてもよい。
第4の態様によれば、本発明は、階層構造で表されたデータについて簡素インデックスを作成する方法を実行するコンピュータソフトウェアアプリケーションを提供する。
第5の態様によれば、本発明は、階層構造で表されたデータについて簡潔インデックスを作成するためのコンピュータシステムを提供するものであって、前記コンピュータシステムは、
異なった根から葉への経路に関連したノードまたは固有要素のタグ名に関連したノードについて、前記ノードの間の位相関係を評価するために、ツリー探査命令におけるノードの位相符号化リストを生成するようにデータを解析する処理手段と、
前記評価に基づき、前記異なった根から葉への経路または固有タグ名に関連したノードの前記位相符号化リストを変換する処理手段と、
キーとして前記異なった根から葉への経路または固有タグ名を持つエントリとともにインデックスを記憶する記憶手段と、を有し、
前記エントリは、使用された前記変換方法の情報と共に前記キーに関連した変換された位相情報に含まれる。
異なった根から葉への経路に関連したノードまたは固有要素のタグ名に関連したノードについて、前記ノードの間の位相関係を評価するために、ツリー探査命令におけるノードの位相符号化リストを生成するようにデータを解析する処理手段と、
前記評価に基づき、前記異なった根から葉への経路または固有タグ名に関連したノードの前記位相符号化リストを変換する処理手段と、
キーとして前記異なった根から葉への経路または固有タグ名を持つエントリとともにインデックスを記憶する記憶手段と、を有し、
前記エントリは、使用された前記変換方法の情報と共に前記キーに関連した変換された位相情報に含まれる。
前記記憶手段は、コンピュータ読取り可能記憶媒体であるとともに、上記で説明された階層構造で表されたデータについて簡潔インデックスを作成する方法の実行動作が可能なコンピュータソフトウェアアプリケーションを記憶することとしてもよい。前記コンピュータシステムは、PDA,携帯電話またはラップトップなどの携帯型コンピュータである。
第6の態様によれば、本発明は、上記で説明された階層構造で表されたデータについて簡素インデックスを使用するためのコンピュータシステムを提供するものであって、前記コンピュータシステムは、
前記簡素インデックスを記憶する記憶手段と、
前記キーに関連したノードの前記位相情報の変換に使用された変換方法に基づき、前記キーに関連した全てのノードの位相情報を検索するために前記変換された位相情報を再変換するように、前記記号表において所要キーを位置付ける処理手段と、を有する。
前記簡素インデックスを記憶する記憶手段と、
前記キーに関連したノードの前記位相情報の変換に使用された変換方法に基づき、前記キーに関連した全てのノードの位相情報を検索するために前記変換された位相情報を再変換するように、前記記号表において所要キーを位置付ける処理手段と、を有する。
前記記憶手段は、コンピュータ読取り可能記憶媒体であるとともに、上記で説明された階層構造で表されたデータについて簡素インデックスを使用する方法を実行するための動作が可能なコンピュータソフトウェアアプリケーションを記憶することとしてもよい。
前記コンピュータシステムは、インターネットなどを介して、遠隔装置からデータ処理要求信号を受信する通信手段をさらに有することとしてもよい。
前記コンピュータシステムまたは遠隔装置は、PDA,携帯電話またはラップトップなどの携帯型コンピュータであることとしてもよい。
前記インデックスは、データの位相構造を取得する方法としてスペース効率が良いとともに、XMLデータを効率的に実行する構造的結合を可能にすることができる。XMLデータを処理するとき、メモリ使用量の大部分が中間結果セットを表すことに費やされる(最終結果セットと同様に)。メモリスペースが不足しているとき、付随的なディスク入出力動作のために照会性能がかなり低下する。本発明のインデックスを使用すれば、中間セットは、簡素な形で表されるとともに、構造的結合が効率的動作を実行するように使用されることができる。
ここで、本発明の実施形態は、添付図面を参照して説明される。
図3は、本発明の実施形態を実現できるコンピュータシステム4を示すブロック図である。デスクトップコンピュータ6とPDAまたはモバイル8とは、共に、本発明に使用できるコンピュータの実施形態である。両方の装置は、一般に本技術分野で理解されている所定の処理手段、記憶手段、通信手段、入力手段および出力手段を具備している。
本発明を適用するために、装置6および8の両方は、本発明の簡素インデックスにアクセスするためにソフトウェアアプリケーション10を使用する必要がある。本実施形態において、装置6および8は、それぞれの記憶手段上でコンピュータ6および8にローカルに記憶されたインデックス12を持つことができる。しかしながら、PDA8のような装置は、より小さい処理手段および記憶容量を持っているとしてもよく、簡素インデックス12にアクセスするためにインターネット14を使用することとしてもよい。すなわち、全てのインデックス12と関連処理16、インデックス12とソフトウェア18は、PDA8から分離されて記憶されている。
前記ソフトウェア(または遠隔ソフトウェアへのログイン)10は、照会エンジン16の所定処理を(ローカルまたはリモートのいずれかで)実行するようにプロセッサを動作させることができる。照会エンジン16は、装置8および10に入力された問い合わせを解決するために簡素インデックス12を使用する。簡素インデックス12は、(ローカルまたはリモートのいずれかの)メモリに記憶されているとともに、以下に詳細に説明するように作成および更新される。本発明の簡素インデックス12は、インデクサソフトウェアコンポーネント18に関して作成されている。コンポーネント18は、XML文書20およびサードパーティ・データベース22などを、入力して様々な情報に直接索引を付ける。あるいはまた、XML文書20およびサードパーティ・データベース22は、簡素な形式にデータ変換する簡素エンコーダ24を使用して符号化されることができ、その後に記憶される26。また、インデクサ18は、簡素インデックス12を形成するための入力としてこれを取得することができる。さらなるソフトウェアとして、簡素DBMSを解釈できる簡素アクセサ28を有する。簡素アクセサ28は、装置6または8への照会の結果を提供するためのものであり、または簡素処理時にプロセッサ16によって使用される。
照会は、簡素データベース26に保存された記録を返信することとしてもよい。これらの結果をコンピュータ8または10に返信するために、さらなるコンピュータアプリケーション28が簡素データベース26にアクセスして解釈するように照会エンジン16によって使用されることとしてもよい。あるいはまた、コンピュータ8または10は、直接に簡素DBMS26にアクセスして解釈するために簡素アクセスソフトウェア28に使用されることとしてもよい。
ここで、集積簡素(ISX)システムの簡素記憶レイヤ26について説明する。ISXは三層、すなわち、位相レイヤと内部ノードレイヤとリーフノードレイヤとを有している。これらのレイヤの概要が図3に示されている。
位相レイヤは、XML文書のツリー構造を記憶するとともに、高速ナビゲーションアクセスと構造的な結合と更新とを容易にする。内部ノードレイヤは、高速な照会のために、XML要素と、属性と、テストデータのシグネチャとを記憶する。最後に、リーフノードレイヤは、文書のテキストデータを記憶する。テキストデータは、様々な一般的な圧縮法によって圧縮でき、位相レイヤを使用して参照できる。
本実施形態の説明では位相レイヤに集中する。従来の方法と異なり、位相レイヤのこの表示では、ポインタを利用しない。それは、効率的なノードナビゲーションおよび更新を支援する平衡カッコ符号化に基づいている。
層0に使用される平衡カッコ符号化は、あらゆるXML文書における要素ノードの入れ子もたらすとともに、前記ツリーの前順探査によって構成することができる。開カッコは開タグが探査時に遭遇されたときに出力され、閉カッコは閉タグが探査時に遭遇されたときに出力される。
例えば、図4に示すXML文書の抜粋を挙げると、層0の平衡カッコ符号化は図5に示すように記憶される。カッコの下部の矢印は、カッコの組を示している。明瞭化のため、ビットごとの動作の詳細およびオブジェクトのような1ビット(カッコ)の処理は省略する。
余分は、前記位相の与えられたセクションで生じている開カッコおよび閉カッコの数の間での差分である。例えば、図5において、「dblp」の開カッコと「@mdate」の閉カッコとの間の余分は2である。テキストノード「2003」の閉カッコと「booktitle」の開カッコとの間の余分は、−1である。XML文書ツリーにおけるノードXの深さは、Xの開カッコと前記文書の始まりとの間の余分を検出することによって計算することができる。例えば、図5において、「author」における開カッコの深さは3である。
この符号化方法には、いくつかの利点がある。第1に、位相的性質(深さ、スタート/エンド位置、前順番号/後順番号)、位相的関係(原型/派生物、文書順番)、文書探査、DOMネビゲーションおよびXパス軸は、上記のカッコ表示を使用して全て決定することができる。第2に、小セットの物理的な演算子を持つだけでデータベースが簡素化する。
2n = O(n) から望ましくない下記数式2へ、スペース用途を増加させるので、リンクするためのポインタに基づいたあらゆる手法を回避する。これは図6に図示されている。
図7のフローチャートと下記数式3のXML文書抜粋とを参照して、ISXシステムのさらなる実施形態がここで説明される。
実際には、XML文書は、ここで説明された抜粋よりもかなり大きい。平衡カッコを使用して、この文書は下記の数式4のように表すことができる。
そこで、平衡カッコを使用するXML文書の抜粋の位相は、下記のように表される(ステップ30)。
( ((())) ((())) ((())) )
開カッコはバイナリ・ビット0によってメモリ内で表されるとともに、閉カッコはバイナリ・ビット1としてメモリ内で表される。これに続いて、階層構造が下記数式のようにメモリ内に記憶される(ステップ32)。
00001110001110001111
( ((())) ((())) ((())) )
開カッコはバイナリ・ビット0によってメモリ内で表されるとともに、閉カッコはバイナリ・ビット1としてメモリ内で表される。これに続いて、階層構造が下記数式のようにメモリ内に記憶される(ステップ32)。
00001110001110001111
そこで、すべての「0」が新しいノードのスタートを示している。すべての「01」の組合せがリープノードなどの変換を示している。
このシステムを使用すると、あらゆる文書のための記憶空間が2nビットになる(ここで、nはノードの数である)。
もちろん、ステップ30および32は1つの単一ステップとして実行することができる。さらに、「1」ビットが開カッコを示すとともに、「0」ビットが閉カッコを示すように、ビットの使用は簡単に交換できる。
以下の抜粋(上記から繰り返される)は、ここではノードのラベルおよび各ビットの位置番号とともに垂直に並べられている。
ここで、ノード<a>が位置「0」にあるとともに、第3ノード<b>が位置13にあることが分かる。
ここで、位相のビット表示を使用することでブロックに照会を実行することができる。例えば、照会は「位置13のノードの親の位置はなにか」としてもよい。
本実施形態ではカッコが組みの形式であることを知っているので、「1」よりも2つ多く「0」が見つかるまで後向きにブロックを走査した場合、親の位置を見出すことができる。この場合の親の位置は位置「0」である。
文書のビット表示は、初めに、特定サイズのブロックに分割される(ステップ34)。例えば、上記説明の抜粋は、下記の数式6のように2つのブロックに分割される。
各ブロックは、層1を有する組(tuples)を生成するために要約される(ステップ36)。各ブロックについて下記の情報が計算される。
・ ブロックにおける「0」の数。
・ ブロックにおける「1」の数。
・ 前方最大差分、すなわち、左から右にブロックを走査している間のランニング合計が計算される。「0」のランニング合計値から始まって、「0」ビットが遭遇するたびにランニング合計が1だけ増加され、「1」ビットが遭遇するたびにランニング合計が1だけ減少される。ブロックにおけるあらゆる位置に及ぶ前記ランニング合計での最大値が前方最大差分になる。
・ 前方最小差分、すなわち、ランニング合計は上記のように計算される。ブロックにおけるあらゆる位置に及び前記ランニング合計での最小値が前方最小差分になる。
・ 後方最大差分、すなわち、ランニング合計は前方最大差分を参照して上記のように計算されるが、その代わりにブロックは右から左に走査される。
・ 後方最小差分、すなわち、ランニング合計は前方最小差分を参照して上記のように計算されるが、その代わりにブロックは右から左に走査される。
・ ノードの数、すなわち、「01」の組合せの回数がブロックで検出される。最終ビットについて、以下のブロックのビットが検査されることとしてもよい(あるいはまた、選択された方法が一貫して提供されて、前ブロックの最終ビットが検査されることとしてもよい)。
・ ブロックにおける「0」の数。
・ ブロックにおける「1」の数。
・ 前方最大差分、すなわち、左から右にブロックを走査している間のランニング合計が計算される。「0」のランニング合計値から始まって、「0」ビットが遭遇するたびにランニング合計が1だけ増加され、「1」ビットが遭遇するたびにランニング合計が1だけ減少される。ブロックにおけるあらゆる位置に及ぶ前記ランニング合計での最大値が前方最大差分になる。
・ 前方最小差分、すなわち、ランニング合計は上記のように計算される。ブロックにおけるあらゆる位置に及び前記ランニング合計での最小値が前方最小差分になる。
・ 後方最大差分、すなわち、ランニング合計は前方最大差分を参照して上記のように計算されるが、その代わりにブロックは右から左に走査される。
・ 後方最小差分、すなわち、ランニング合計は前方最小差分を参照して上記のように計算されるが、その代わりにブロックは右から左に走査される。
・ ノードの数、すなわち、「01」の組合せの回数がブロックで検出される。最終ビットについて、以下のブロックのビットが検査されることとしてもよい(あるいはまた、選択された方法が一貫して提供されて、前ブロックの最終ビットが検査されることとしてもよい)。
そこで、ブロック「0000111000」について、概要情報は(7、3、4、1、4、0、2)として現れる。
そして、ブロック「1110001111」について、概要情報は(3、7、0 4の−1−4、1)として現れる。
この概要情報を使用して、層1の組の上記2つの実施形態に基づき、DOM照会をここで説明することができる。例えば、「位置13でのノードの親はなにか」のように照会を取る。
本実施形態では、位置13でのビットから開始してブロックの発端まで後方に走査する。位置13からブロックの発端まで、本実施形態では以下のビッット「1110」を持つ。「0」の数は1であり、そして「1」の数は3である。「1」の数から「0」の数を引くと「−2」が求まる。本実施形態ではここで、前ブロックから後方最大差である「4」を得るとともに、数「2」を得るために「−2」を加える。これから、本実施形態では、一致しているビットが前ブロックのなかにあることを、ここで知得する。
文書が大きいとき、層1の要約の組を生成するプロセスを繰り返すことができ(ステップ38)、このとき、層2の生成が層1のデータに基づいて行われる。全ての場合、通常、2層で十分である。一方、本実施形態では、層1の組をブロックに分割するとともに、層2を生成するために更なる概要組を生成する。
XML文書の位相情報を表すこの方法は、理論的に最小限の恒常的要因のなかで、空間効率が良い所定スペースを持つ。常数eについて、1≦e≦2、nノードの文書であるとき、概要情報(o(en))に加えてXML文書(2n)の位相を表すために、本実施形態では「2en+o(en)」ビットを必要とする。ノード挿入は平均して一定時間で処理することができるが、最悪の場合「O(lg2n)」時間であるとともに、全てのノードナビゲーション動作は下記数式7の時間を要するが平均して一定時間である。
また、位相情報を表すこの方法は、データ処理のための全ての所定初期動作について低いアクセスおよび更新コストを維持する。また、それは、ほぼ一定時間でのナビゲーション動作を支援する。
XML文書を表す「0」および「1」の第1点検を支援するために、簡素インデックス構造(SIS)12を構成することができる。このインデックスは、より効率的に文書を照会する方法を提供する。
SISは、記号表で作られる。記号表は、全ての異なった根から葉への経路のエントリまたは異なるタグ名を持っている。例えば、図1においてXML文書抽出のために、異なった根から葉への経路は{/a, /a/b, /a/b/c}であるとともに、異なるタグ名は
{a,b,c}である。
{a,b,c}である。
記号表の各エントリは、何らかの統計情報の他に実インデックス(生インデックスとして知られている)もまた保持し、その経路またはタグ名を構成するタグの全てのインスタンスを容易に位置付ける。前記統計情報は、生インデックスの変換を規定する。それは、タグ名の人気と照会および更新の頻度とに関する情報を有している。
生インデックスの変換は、スペース用法と、照会性能と、更新コストとについて良い妥協案を提供する。前記変換法は、その時々で与えられたXML文書に最も合う方法にしたがって複数の生インデックスに作用する。
生インデックスは、下記のデータ構造、ブロック、ノードセットサイズへの依存、照会および更新の頻度、の一つ以上で構成されている。
・ 全位相符号化リスト:それは、元の形のままでトリプレット(スタート、エンド、深さ)のリストで構成される。各トリプレットはノードの位相情報を符号化する。前記リストは、如何なる圧縮フォーマットも使用せずに記憶される。このデータ構造は、インデックスが付けられるXML文書の中で生じる更新のところに現れる。また、それは、、生インデックスのエンドに現れ、新たに生成されたトリプレットはフルサイズブロックを生成しない。
・ ノード識別子リスト:ノード識別子リストは、全位相符号化リストの他の形であり、層(例えば、層0,層1および層2)から間接的に派生したトリプレット(スタート、エンド、深さ)の中の3つの値とともに、永続的ノード識別子を使用している。ノード識別子リストは、スペースが主要な関心事項であるときに使用され、少なくとも前記値を引き出す性能オーバーヘッドがトリプレットをロードすることよりもかなり良い。
・ ビットアレイフラグ:ビットアレイフラグはノード識別子リストの他の形であり、ここでノード識別子の総数はXML文書におけるノードの総数の一定差分の範囲内にある。
・ 部分位相符号化リスト:データ構造は明示のノード識別子を持っておらず、またトリプレットの中のスタート値は(非永続的)識別子として機能することができる。ここで、本実施形態では、トリプレットの代わりにスタート値のみを記憶する。
・ 差分、全位相符号化リスト:このデータ構造は、概要を生成するために第2パイプラインへ全位相符号化リストの完全ブロックを送信することの結果である。前記概要は3つの棒グラフから構成され、各棒グラフは連続したトリプレットのスタート、エンドおよび深さの間の差分値間の関係を表す。前記概要は、固定サイズの値で可変サイズにトリプレットを符号化するための符号化方法を特定する。符号化トリプレットの結果のリストは、概要に隣接して記憶される。
・ 差分ノード識別子リスト:差分ノード識別子リストは、前記「差分、全位相符号化リスト」と同様の方法でノード識別子の差分値の棒グラフを記憶する。
・ 差分部分位相符号化リスト:差分部分位相符号化リストは、前記「差分、全位相符号化リスト」と同様の方法で部分位相符号化リストを記憶する。
・ パターン記述子機能:文書の概要が正確であるとともにトリプレットの差分値が一定であるとき、全位相符号化リストの全体は、破棄されることができるとともに、前記概要およびそれらの前の値にそれぞれ基づく次の「スタート、エンドおよび深さ」値を返す機能に置き換えられることができる。これらのパターン関数は、更新(例えば、新しいノードが前記リストに挿入される)による影響を受けない。
・ 全位相符号化リスト:それは、元の形のままでトリプレット(スタート、エンド、深さ)のリストで構成される。各トリプレットはノードの位相情報を符号化する。前記リストは、如何なる圧縮フォーマットも使用せずに記憶される。このデータ構造は、インデックスが付けられるXML文書の中で生じる更新のところに現れる。また、それは、、生インデックスのエンドに現れ、新たに生成されたトリプレットはフルサイズブロックを生成しない。
・ ノード識別子リスト:ノード識別子リストは、全位相符号化リストの他の形であり、層(例えば、層0,層1および層2)から間接的に派生したトリプレット(スタート、エンド、深さ)の中の3つの値とともに、永続的ノード識別子を使用している。ノード識別子リストは、スペースが主要な関心事項であるときに使用され、少なくとも前記値を引き出す性能オーバーヘッドがトリプレットをロードすることよりもかなり良い。
・ ビットアレイフラグ:ビットアレイフラグはノード識別子リストの他の形であり、ここでノード識別子の総数はXML文書におけるノードの総数の一定差分の範囲内にある。
・ 部分位相符号化リスト:データ構造は明示のノード識別子を持っておらず、またトリプレットの中のスタート値は(非永続的)識別子として機能することができる。ここで、本実施形態では、トリプレットの代わりにスタート値のみを記憶する。
・ 差分、全位相符号化リスト:このデータ構造は、概要を生成するために第2パイプラインへ全位相符号化リストの完全ブロックを送信することの結果である。前記概要は3つの棒グラフから構成され、各棒グラフは連続したトリプレットのスタート、エンドおよび深さの間の差分値間の関係を表す。前記概要は、固定サイズの値で可変サイズにトリプレットを符号化するための符号化方法を特定する。符号化トリプレットの結果のリストは、概要に隣接して記憶される。
・ 差分ノード識別子リスト:差分ノード識別子リストは、前記「差分、全位相符号化リスト」と同様の方法でノード識別子の差分値の棒グラフを記憶する。
・ 差分部分位相符号化リスト:差分部分位相符号化リストは、前記「差分、全位相符号化リスト」と同様の方法で部分位相符号化リストを記憶する。
・ パターン記述子機能:文書の概要が正確であるとともにトリプレットの差分値が一定であるとき、全位相符号化リストの全体は、破棄されることができるとともに、前記概要およびそれらの前の値にそれぞれ基づく次の「スタート、エンドおよび深さ」値を返す機能に置き換えられることができる。これらのパターン関数は、更新(例えば、新しいノードが前記リストに挿入される)による影響を受けない。
前記インデックスの解釈は、3つのパイプラインを一度に通してXML文書を解析することで行われる。ここで、各パイプラインは、前のパイプラインの出力を入力する。第1パイプラインは、XML文書を探査するとともに、リストとして表されたXML文書を位相符号化した単純セットを生成する。第2パイプラインは、位相符号化リストの最適差分符号化を決定する。最終的に、第3パイプラインは、前記差分符号化リストからパターン記述子を生成する。ここで本実施形態では、ノードを挙げて、データベースが一定時間で位相ナンバリングを検索できる、と仮定する。
図8のフローチャートを参照して、インデックスを構成する方法を説明する。
第1に、XML文書の簡素表示が探査されるとともに、単純位相符号化リストが生成される(ステップ50)。
位相符号化リストはトリプレットのリストで構成され、ここで、各トリプレットは単一ノードの位相情報を表す。すなわち、XML文書における各ノードについて、符号化ナンバの3つのタイプがトリプレットを作成するために計算される。それぞれのトリプレットの符号化ナンバは以下を表す。
「0」(開カッコ)のビット位置はノードのスタート
「1」(閉カッコ)のビット位置はノードのエンド
深さ、すなわち、ツリーにおいてどれだけ下側にノードがあるか、またはツリーにおけるノードのレベルがどれだけか。
これらのトリプレットは、XML文書の位相構造を表現するそれらの間と間接的関係がある。「0」のビット位置は各ノードの事前予約ナンバと同一であり、その結果、深さとともにツリーを再構成することが可能となる。しかしながら、「1」のビット位置がなければ、2つのノード間の先祖−子孫関係を応答するのに時間がかかりすぎる。
「0」(開カッコ)のビット位置はノードのスタート
「1」(閉カッコ)のビット位置はノードのエンド
深さ、すなわち、ツリーにおいてどれだけ下側にノードがあるか、またはツリーにおけるノードのレベルがどれだけか。
これらのトリプレットは、XML文書の位相構造を表現するそれらの間と間接的関係がある。「0」のビット位置は各ノードの事前予約ナンバと同一であり、その結果、深さとともにツリーを再構成することが可能となる。しかしながら、「1」のビット位置がなければ、2つのノード間の先祖−子孫関係を応答するのに時間がかかりすぎる。
図1に示されたXML文書に基づく照会は以下の数8のようになる。
//b//c[text() = "e"]
すなわち、ノードbは子孫cとともにテキスト「e」を持っているか。本実施形態ではSISを使用することで応答を得ることができる。
//b//c[text() = "e"]
すなわち、ノードbは子孫cとともにテキスト「e」を持っているか。本実施形態ではSISを使用することで応答を得ることができる。
インデックスは、全てのbと、全てのcと、全ての「e」とを返す。そこで、本実施形態では、正しい親/子孫方向で関連していることを確認するために、返されたノード間の構造関係を判断する。これをするために、本実施形態では各ノードについて計算されたトリプレットを使用する。
例えば、
前記構造関係は、この情報から判断することができる。ここで、本実施形態では、ノードaの第1「0」ビットが「0」のスタートビット位置にあるとともに、ノードaの最後の「1」ビットが「19」の位置にある、ことがわかる。また、ここで、本実施形態では、第2ノードbの第1「0」ビットが「7」のスタートビット位置にあるとともに、第2ノードbの最後の「1」ビットが「12」の位置にある、ことがわかる。
そこで、ノードbがノードaの子孫である場合、ノードaのスタート位置がノードbよりも小さくなるべきである(0<7)。さらに、ノードbのエンド位置は、ノードaのエンド位置よりも小さくなるべきである(12<19)。
下記の数式9は、上記で説明したトリプレットに基づき図1から抽出したXML文書についての位相符号化リストである。
例えば、上記
//b//c[text() = "f" ]
のように同一の照会に応答するために、本実施形態では上記3つの位相符号化リストと、cリスト対「e」リストの第1マッチとを検索して、「e」の中のあらゆるトリプレットの親であるcリストの中に全てのトリプレットを返す。トリプレットc2:(8,11,2)と、「e」1:(9,10,3)とについて、
c2.start (8) < “e”1.start (9) and c2.end (11) > “e”1.end (10) and
c2.depth (2) + 1 = “e”1.dpeth (3)
なので、c2 (8,11,2)
は、可能な応答のリストの中にある。
//b//c[text() = "f" ]
のように同一の照会に応答するために、本実施形態では上記3つの位相符号化リストと、cリスト対「e」リストの第1マッチとを検索して、「e」の中のあらゆるトリプレットの親であるcリストの中に全てのトリプレットを返す。トリプレットc2:(8,11,2)と、「e」1:(9,10,3)とについて、
c2.start (8) < “e”1.start (9) and c2.end (11) > “e”1.end (10) and
c2.depth (2) + 1 = “e”1.dpeth (3)
なので、c2 (8,11,2)
は、可能な応答のリストの中にある。
第2に、本実施形態では、bリストに対して新たに作成されたリストに一致するとともに、いかなるbトリプレットの子供に属しないトリプレットをフィルタ出力する。
b2: (7,12,1)については、
b2.start (7) < c2.start (8) and b2.end (12) > c2.end (11) and
b2.depth (1) + 1 = c2.depth
のようになる。c2がテスト条件を満たすので、それが応答である。
b2: (7,12,1)については、
b2.start (7) < c2.start (8) and b2.end (12) > c2.end (11) and
b2.depth (1) + 1 = c2.depth
のようになる。c2がテスト条件を満たすので、それが応答である。
前記リストにおけるノードの数が少ない場合のみ、または、nノード文書の全体に対する前記リストの割合が小さい場合のみ、例えば、インデックスにおいてO(lgn)ノードからO(n/lg2n)ノードにいたるまで、本実施形態では全位相符号化リストを維持する。位相符号化リストは、拡張アレイと呼ばれる特別なデータ構造で維持される。ノードセットは、それらの関連文書命令、すなわち、ノードセットにおけるそれらの各ノードの事前予約値にしたがって記憶されなければならないことに留意すべきである。
一旦、閾値に達すると、拡張アレイの一部はブロックを有するとみなされる。本実施形態では、第2パイプラインの中にそのブロックを有する拡張アレイを通すとともに、差分符号化を持つ新たな拡張アレイの構築を続行する(ステップ52)。この手法の利点は、新たに挿入されたノードがその後の更新によってさらなる影響を受けることになりそうであると推定できることである。
第2パイプラインは、拡張アレイにおける1ノード当たりの各符号化数の間での値の差分を第1検査する動作をするとともに、差分符号化を使用して再符号化する。再符号化をしている間、差分値のおおまかな分布に伴う最小差分および最大差分の2つの値の軌跡を保持する。差分値のおおまかな分布に伴う最小差分と最大差分。本実施形態では、位相リストを符号化する前に、棒グラフとして後にスケーリングするために最大差分および最小差分の値を記憶する。
第1に、同一のサイズのブロックにトリプレットを分割する。すなわち、第1ブロックは以下の通りである。
( s1, e1, d1) ( s2, e2, d2) ... ( sb, eb, db )
そして、第2ブロックは以下の通りである。
(+1, eb+1, db+1) (sb+2, eb+2, db+2), . . (s2b, e2b, d2b)
( s1, e1, d1) ( s2, e2, d2) ... ( sb, eb, db )
そして、第2ブロックは以下の通りである。
(+1, eb+1, db+1) (sb+2, eb+2, db+2), . . (s2b, e2b, d2b)
そして、ブロックにおいて特定のノードタイプに関連する各トリプレットについて、以下に基づき3つの棒グラフを作成する。
連続したトリプレットのスタート位置の間の差分(Δスタートと呼ばれる)、すなわち、
s2-s1, s3-s2, s4-s3, ..., sb-sb-1
連続したトリプレットのエンド位置とスタート位置との間の差分の差分(Δエンドと呼ばれる)、すなわち、
(e2-s2)-(e1-s1), (e3-s3)-(e2-s2), ..., (eb-sb)-(eb-1-sb-1)
連続したトリプレットの深さの間の差分(Δ深さと呼ばれる)、すなわち、
d2-d1, d3-d2, d4-d3, ...,db-db-1
連続したトリプレットのスタート位置の間の差分(Δスタートと呼ばれる)、すなわち、
s2-s1, s3-s2, s4-s3, ..., sb-sb-1
連続したトリプレットのエンド位置とスタート位置との間の差分の差分(Δエンドと呼ばれる)、すなわち、
(e2-s2)-(e1-s1), (e3-s3)-(e2-s2), ..., (eb-sb)-(eb-1-sb-1)
連続したトリプレットの深さの間の差分(Δ深さと呼ばれる)、すなわち、
d2-d1, d3-d2, d4-d3, ...,db-db-1
各棒グラフは、対応するΔの中の異なる値の全てで構成されている。それぞれの異なる値について、発生回数の軌跡を保持する。また、本実施形態では、それらの異なる値が生ずる範囲の軌跡を保持する。
そして、クラスタ化アルゴリズムが前記棒グラフに実行される。差分値の複数のクラスタが存在している場合、拡張アレイおよび3つの棒グラフをそれらのクラスタに分割するとともに、次のステップを別々に実行する。
各クラスタについて、最小差分の値を記憶するとともに、オリジナルとして最小差分を使用して全ての差分値を再調整する。これは、全ての差分値をより少ないビットで符号化できることを意味している。
また、各クラスタについて、本実施形態では、棒グラフの形を検査して、以下のカテゴリに分類する。
・ 慎重(Discreet)
慎重シナリオの下では、前記棒グラフはあらゆる範囲に渡ることができるが、その全ての値は差がkの差分値の小セットに渡るだけである。ここで、kは、1g nより小さいかまたはほぼ同一である。本実施形態では、エントリkの慎重テーブルを構築し、差分値を記憶する。慎重テーブルにインデックスを表現する1g kビットを持たせ、1つの値当たりオリジナル1g nビットではなく、全ての差分値について1g k < 1g 1g n ビットを使用してブロックを再符号化する。
・ 平坦
慎重とは異なり、このシナリオは適度により長い範囲 [j, k]で平坦カーブを持つ。ここで、k - j > 1g n である。本実施形態では、前記棒グラフを再調整し、オリジナルとしてjを扱うとともにk - jとしてkを扱う。慎重と同様であるが、テーブルの必要性はなく、1つの値当たり1g (k - j)ビットを使用しての差分値を再符号化することができる。k-jがnよりもかなり小さい値であることが証明でき、あらゆる正常数において、インデックスが付けられるノードの数がn/cである場合に等しい。
・ 下降
下降カーブについて、本実施形態では、第1に、平坦シナリオのように棒グラフを再調整し、次に値のアレイを取得して、それらの差分値を使用してそれらをあらゆるRLE(ランレングス符号化)方法で再符号化する。ここで、本実施形態では、マイクロ・コードと呼ばれる簡単な、しかし有効な方法を提示する。それぞれ再調整された差分値vは、2つの部分に符号化される。本実施形態では、第1に下記の数12を単項に符号化し、二進数で下記の数13の値が続く。
・ 慎重(Discreet)
慎重シナリオの下では、前記棒グラフはあらゆる範囲に渡ることができるが、その全ての値は差がkの差分値の小セットに渡るだけである。ここで、kは、1g nより小さいかまたはほぼ同一である。本実施形態では、エントリkの慎重テーブルを構築し、差分値を記憶する。慎重テーブルにインデックスを表現する1g kビットを持たせ、1つの値当たりオリジナル1g nビットではなく、全ての差分値について1g k < 1g 1g n ビットを使用してブロックを再符号化する。
・ 平坦
慎重とは異なり、このシナリオは適度により長い範囲 [j, k]で平坦カーブを持つ。ここで、k - j > 1g n である。本実施形態では、前記棒グラフを再調整し、オリジナルとしてjを扱うとともにk - jとしてkを扱う。慎重と同様であるが、テーブルの必要性はなく、1つの値当たり1g (k - j)ビットを使用しての差分値を再符号化することができる。k-jがnよりもかなり小さい値であることが証明でき、あらゆる正常数において、インデックスが付けられるノードの数がn/cである場合に等しい。
・ 下降
下降カーブについて、本実施形態では、第1に、平坦シナリオのように棒グラフを再調整し、次に値のアレイを取得して、それらの差分値を使用してそれらをあらゆるRLE(ランレングス符号化)方法で再符号化する。ここで、本実施形態では、マイクロ・コードと呼ばれる簡単な、しかし有効な方法を提示する。それぞれ再調整された差分値vは、2つの部分に符号化される。本実施形態では、第1に下記の数12を単項に符号化し、二進数で下記の数13の値が続く。
この場合、最も一般的に生ずる差分値は、ビットの最小値で符号化される。
・ 上昇
棒グラフのカーブの傾きがより大きな値に向かって傾いている場合、本実施形態では、また、μコードでそれを符号化するが、棒グラフを左から右へ反転させるとともに、上昇シナリオについて同一方法を使用する。
・ 通常
これは、カーブが正規分布で形成されているときである。本実施形態では、第1に、カーブのピークをオリジナルに再調整する。先ず、第1ビットが差分値のサインを示すようにして、次に、差分値の絶対値を取得し、そして残りのビットを再符号化するためにRLEを使用する。
・ 高密度
慎重カテゴリと同様であるが、より大きい。これは、棒グラフがk差の差分値の小セットに下降するときであるが、kは1g nよりも大きい常数であり、それでも、kはnよりも小さい。
・ 上昇
棒グラフのカーブの傾きがより大きな値に向かって傾いている場合、本実施形態では、また、μコードでそれを符号化するが、棒グラフを左から右へ反転させるとともに、上昇シナリオについて同一方法を使用する。
・ 通常
これは、カーブが正規分布で形成されているときである。本実施形態では、第1に、カーブのピークをオリジナルに再調整する。先ず、第1ビットが差分値のサインを示すようにして、次に、差分値の絶対値を取得し、そして残りのビットを再符号化するためにRLEを使用する。
・ 高密度
慎重カテゴリと同様であるが、より大きい。これは、棒グラフがk差の差分値の小セットに下降するときであるが、kは1g nよりも大きい常数であり、それでも、kはnよりも小さい。
それで、ノードタイプbに関連した位相符号化リストは、
b (1,6,1) (7,12,1) (13,18,1)
となる。
b (1,6,1) (7,12,1) (13,18,1)
となる。
棒グラフは、以下のように計算される。スタートの差分についての値(Δスタート)は6 (7-1) および 6 (13-7)である。そして、これらの値の棒グラフは、図9に示すようにプロットされている。
エンドの差分についての値(Δエンド)は、
0 ((6-1)-(12-7)) および 0 ((12-7)-(18- 13))である。そして、これらの値の棒グラフは、図10に示すようにプロットされている。
0 ((6-1)-(12-7)) および 0 ((12-7)-(18- 13))である。そして、これらの値の棒グラフは、図10に示すようにプロットされている。
深さの差分(Δ深さ)については、その値が 0 (-1-1) および 0 (1-1)である。そして、これらの値の棒グラフは、図11に示すようにプロットされている。
そして、各棒グラフの分布が分析される。例えば、分布は上昇であるか、下降であるか、通常であるか。分布に依存して、あるオプションは、同一値へ全ての値をシフトするとともに、使用したシフト値を記憶することである。あるいはまた、本実施形態では、異なる形についてRLEなどを符号化する差分変数ビットを使用することができ、またはZL圧縮を使用して高密度にすることができる。
各棒グラフについて、棒グラフタイプ(慎重、平坦、下降、上昇、通常)が記憶されている。本実施形態では、棒グラフのタイプを検査することで、照会中に前記リストの圧縮型を復号化し、圧縮型を復号化する方法を判断することができる。
その結果、棒グラフのクラスタは第3パイプラインに渡される(ステップ54)。ツリーパターンは、特定スキーマに結合するXML文書について頻繁に繰り返される。これは、第3パイプラインにおいて更なるスペース効率を獲得するために利用できる。第3パイプラインは、特定パターンがクラスタの差分値の中に生じるか否か発見しようとする。そのようなパターンが存在している場合、全部のクラスタは、前記パターンに結合する値を出力するパターン関数によって置換される。その方法の一つとして、繰り返しパターンを位置付けるZLM圧縮技術がある。
3つのパイプラインでの処理の後に、位相符号化のオリジナルリストは、パターン関数と差分符号化リストと位相符号化リストの拡張アレイとの混合リストになる。
そして、その結果は記号表にリンクされる。上記実施形態において、bにインデックスを符号化したように、記号表へのエントリが根から葉への経路に記憶される場合、リンクがエントリ{/a/b}に帰り、または、記号表へのエントリがタグ名のみの構成である場合、リンクが{b}のみに帰る。
更新は、パターン関数と差分符号化リストと拡張アレイとを有するインデックスのあらゆる部分で実行することができる。更新が生じるにつれて、1ブロック当たりのトリプレットの数が一定である必要はない。
厳密なスキーマについては、全くパターン関数を実行する必要がない。しかしながら、不規則な構造がノード間に挿入されている場合、パターン関数を2つの別個の関数に分割する必要がある場合もあるとともに、新たに更新されたノードを記憶するためにそれらの間に拡張アレイを挿入する必要がある場合もある。拡張アレイが閾値に達するとき、上記で説明したように、他のパイプラインを通す。更新後にスペースの使用を最小にするために、新しいパターン関数が隣接のパターン関数と同一であるとき、併合処理が起こる。
下記は、図12に示されたXML文書に基づきSISを生成する詳細な実施形態である。
図13に示すように生成された記号表は、図12のXML文書の全ての固有タグ名を有する。
第1パイプライン50は、 記号表の各エントリについて全ての位相符号化リストを生成する。すなわち、各ノードタイプについて、トリプレットがそれぞれ対応するノードのために生成される。図13において、実インデックスについて生成される位置設定記号が図示されており、そこで、図14に示すように、位相符号化リストが生成される。これらのトリプレットは、拡張アレイに記憶される。
そして、図14の位相符号化リストは、図15の差分全位相符号化リストを生成するために第2パイプライン52に渡される。差分値は、上記で説明したように計算される。すなわち、差分値Δスタート、ΔエンドおよびΔ深さは、上記で説明したように計算される。
本実施形態では、棒グラフが各固有タグ名の各差分値について計算される。すなわち、差分値の発生回数は、図16に示すようにグラフで表される。図15で灰色にされた値は、それらが前のエントリを持たないように、棒グラフの中に組み入れられない。そこで、棒グラフのそれぞれの形は、図17に示された一つの棒グラフのタイプに分類される。図18は、図16に示されたそれぞれの棒グラフの分類を示している。また、図17は、それぞれの棒グラフを分類するための固定ビット符号化値を示している。これらは、使用された変換方法の表示として記号表の中に棒グラフタイプを記憶するために使用される。
実施形態として、図19,20,21は、どのように、ノードタイプAの差分値が最適差分符号化を使用して記憶されるか、を示している。図19(a)は、Δスタートについて記録した値を示している。棒グラフのカテゴリは、100(降下)として記録されている。本実施形態では最小のΔスタート値が14であったことが分かっているので、棒グラフの全ての値を14だけシフトすることができるとともに、数字14がシフト値として記録される。第1の値が棒グラフに含まれていないので(図15で灰色にされている)、この値9は、また第1の値として記憶される。そして、残っている12のトリプレットについて(すなわち、第1を除く全てのトリプレット)、Δスタート値がリストアップされる。図19(b)は、図19(a)の後に残っている値が整列された状態を示しており、すなわち、残っている値のそれぞれはシフト値14だけ引き算されている。図19(c)は、図19(b)の変数ビット符号化バージョンを示している。
AについてのΔエンドおよびΔ深さの値の差分値は全て同一の値であるので、この場合は、棒グラフ符号化よりむしろパターン関数がより適当である。図21はAのΔエンドについて示しており、カテゴリが001(パターン関数)であるとともに、変数ビット符号化における増分値は1である(それはゼロに等しい)。図22はAのΔ深さを示しており、すなわち、カテゴリが再び001であるとともに、変数ビット符号化における増分値は0である。
そして、この情報は、図21に示す表を出力するために、図13に示されたオリジナルの記号表の中に挿入される。スタートAについてのエントリは「100」で始まる。この「100」は、形が下降している棒グラフ変換機能が使用されたことを示す。エンドAおよび深さAについてのエントリは「001」で始まる。この「001」は、パターン関数変換が使用されたことを示している。
更なる実施形態として、図23は、どのように、ノードタイプbのΔエンド値が最適差分符号化を使用して記憶されるか、を示している。図23(a)は、Δエンドについて記録された値を示している。棒グラフのカテゴリは、110(通常)として記録されている。本実施形態では最小Δスタート値が0であったことを知っているので、シフト値も0である。第1の値が棒グラフの中に含まれていないので(図15で灰色にされている)、この値15も第1の値として記憶される。そこで、残っている12のトリプレット(すなわち、第1を除く全ての組)について、Δスタート値がリストアップされる。図23(b)は、図23(a)の後に残っている値が整列された状態を示しているが、ここではシフト値が0なので、図23(a)および(b)における残っている値は同一状態のままである。図23(c)は、図23(b)の変数ビット符号化バージョンを示している。
同様に、図24においてノードタイプBについてのΔスタート値が示されているとともに、タグ名についてのスタートが示されている。
同様に、値の残りについての記号表が図25に示されている。これは、図12に示された文書についてのインデックスを表している。カッコで特定された値は、ノーマル整数として記憶される。
特定の実施形態で示される本発明について、広く説明される本発明の趣旨および範囲から逸脱することなく、多くの変形および/または修正が可能であることは当業者により理解される。したがって、本実施形態は、あらゆる点で実例であるとともに制限的なものではないことが考慮されるべきである。
6 デスクトップ・クライアント
8 PDA/モバイル
10 アプリケーション・ログイン
12 簡素インデックス
14 インターネット
16 照会エンジン
18 インデクサ
20 XML文書
22 サードパーティDBMS
24 簡素エンコーダ/デコーダ
26 簡素DBMS
28 簡素アクセサ
8 PDA/モバイル
10 アプリケーション・ログイン
12 簡素インデックス
14 インターネット
16 照会エンジン
18 インデクサ
20 XML文書
22 サードパーティDBMS
24 簡素エンコーダ/デコーダ
26 簡素DBMS
28 簡素アクセサ
Claims (39)
- 階層構造で表されたインデックスデータのための簡素インデックス構造であって、
前記インデックス構造は、キーとして全ての異なった根から葉への経路の記号表、またはキーとして固有要素のタグ名の記号表を有し、
前記記号表におけるキーについてのエントリは、前記キーに関連したノードの変換された位相情報とともに、前記位相情報で使用される変換方法の表示情報を持っており、
使用される前記変換方法は、前記キーに関連付けられたノード間の位相関係に基づいていることを特徴とする簡素インデックス構造。 - 前記位相情報は、各ノードについてトリプレット番号づけ構造を有する請求項1に記載の簡素インデックス構造。
- 前記トリプレット番号づけ構造は、スタート・エンド・深さトリプレット番号づけ構造または前順・後順・深さトリプレット番号づけ構造である請求項2に記載の簡素インデックス構造。
- 前記階層構造は、エクステンシブルマークアップ言語(XML)である請求項1,2または3に記載の簡素インデックス構造。
- 前記変換方法は、前記位相情報を差分符号化するステップを有する請求項1から4のいずれか一項に記載の簡素インデックス構造。
- 前記トリプレット番号づけ構造は、スタート・エンド・深さトリプレット番号づけ構造であるとともに、前記変換方法は、各トリプレットにおける各値を差分符号化するステップを有する請求項2に記載の簡素インデックス構造。
- 前記トリプレットの第1の差分符号化値は、連続したトリプレットのスタート位置の差である請求項6に記載の簡素インデックス構造。
- 各ノードのスタート位置とエンド位置間には差があり、
前記トリプレットの第2の差分符号化値は、連続したトリプレット間のそれらの値の差である請求項6または7に記載の簡素インデックス構造。 - 第3の差分符号化値は、連続したトリプレットの深さについての差である請求項6,7または8のいずれか一項に記載の簡素インデックス構造。
- 前記変換方法の情報は、シフトされたキーに関連した各ノードについてのトリプレットの前記第1、第2または第3の値のそれぞれであるシフト値を有する請求項2から9のいずれか一項に記載の簡素インデックス構造。
- 前記変換方法の情報は、全てのノードの前記トリプレットの前記第1、第2または第3の値のそれぞれをグラフ表示する棒グラフの形状の表示情報を有する請求項2から10のいずれか一項に記載の簡素インデックス構造。
- 前記変換方法の情報は、前記キーに関連した全てのノードの前記トリプレットの前記第1、第2または第3の値を出力するパターン関数を有している請求項2から11のいずれか一項に記載の簡素インデックス構造。
- キーについてのエントリは、前記位相情報の変換に使用された複数の方法を構成している請求項1から12のいずれか一項に記載の簡素インデックス構造。
- 前記位相情報は、簡素データ構造から得られる請求項1から13のいずれか一項に記載の簡素インデックス構造。
- 前記データは、前記階層データの前順探査によって作成された平衡カッコ表示を使用しているノードの入れ子を表す位相レイヤを有する請求項14に記載の簡素インデックス構造。
- 請求項1から15のいずれか一つに記載の簡素インデックス構造を使用する方法であって、
前記記号表において所要キーを位置付けるステップと、
前記キーに関連したノードの前記位相情報の変換に使用された変換方法に基づき、前記キーに関連した全てのノードの位相情報を検索するために前記変換された位相情報を再変換するステップと、を有する簡素インデックス構造を使用する方法。 - 前記方法は、構造的結合の照会を処理するために実行される請求項16に記載の簡素インデックス構造を使用する方法。
- 階層構造で表されたデータについて簡素インデックスを作成する方法であって、
ツリー探査命令におけるノードの位相符号化リストを生成するためにデータを解析するステップと、
異なった根から葉への経路に関連したノードまたは固有要素のタグ名に関連したノードについて、前記ノード間の位相関係を評価するステップと、
前記評価に基づき、前記異なった根から葉への経路または固有タグ名に関連したノードの前記位相符号化リストを変換するステップと、
キーとして前記異なった根から葉への経路または固有タグ名を持っている記号表においてエントリを作成するステップと、を有し、
前記エントリは、使用された前記変換方法の表示情報と共に前記キーに関連した変換された位相情報に含まれることを特徴とする簡素インデックスを作成する方法。 - 前記解析するステップは、拡張アレイに記憶された位相符号化リストを生成するために前記ツリーを探査するステップを有する請求項18に記載の簡素インデックスを作成する方法。
- 前記位相符号化リストは、各ノードについてトリプレット番号づけ構造を有している請求項18または19に記載の簡素インデックスを作成する方法。
- 前記トリプレット番号づけ構造は、スタート・エンド・深さトリプレット番号づけ構造または前順・後順・深さトリプレット番号づけ構造である請求項20に記載の簡素インデックスを作成する方法。
- 前記拡張アレイは、一旦、所定のブロックサイズを持ち、
前記方法は、位相符号化リストを生成し続けるとともに、新たなブロックの拡張アレイに記憶するステップをさらに有する請求項18から21のいずれか一項に記載の簡素インデックスを作成する方法。 - 前記方法は、位相符号化リストを生成した後に、前記位相符号化リストを別個に再符号化するステップをさらに有する請求項20に記載の簡素インデックスを作成する方法。
- 前記トリプレット番号づけ構造は、スタート・エンド・深さトリプレット番号づけ構造であるとともに、前記変換方法は、各トリプレットにおける各値を別個に再符号化するステップを有する請求項23に記載の簡素インデックスを作成する方法。
- 前記トリプレットの第1の値を前記差分符号化するステップは、連続トリプレットのスタート位置における差である第1差分符号化値とともにトリプレットの第1の値を再符号化するステップを有する請求項24に記載の簡素インデックスを作成する方法。
- 各ノードのスタート位置とエンド位置間には差があり、
前記トリプレットの第2の値を前記差分符号化するステップは、第2差分符号化値とともにトリプレットの第2の値を再符号化するステップを有し、
前記第2差分符号化値は、連続したトリプレット間のそれらの値の差である請求項24または25に記載の簡素インデックスを作成する方法。 - 前記トリプレットの第3の値を前記差分符号化するステップは、第3差分符号化値とともにトリプレットの第3の値を再符号化するステップを有し、
前記第3差分符号化値は、連続したトリプレットの前記深さの差である請求項24,25または26に記載の簡素インデックスを作成する方法。 - 前記変換するステップは、同一の値に基づく前記キーに関連した各ノードについて前記トリプレットの前記第1、第2または第3の値のそれぞれをシフトするステップを有する請求項20から27のいずれか一項に記載の簡素インデックスを作成する方法。
- 前記変換するステップは、全てのノードの前記トリプレットの前記第1、第2または第3の値のそれぞれをグラフ表示する棒グラフの形状を決定するステップを有する請求項20から27のいずれか一項に記載の簡素インデックスを作成する方法。
- 前記変換するステップは、前記キーに関連した全てのノードの前記トリプレットの前記第1、第2または第3の値を出力するパターン関数を決定するステップを有する請求項20から29のいずれか一項に記載の簡素インデックスを作成する方法。
- 前記方法は、クラスタ化アルゴリズムを実行するステップをさらに有しているとともに、複数のクラスタが特定される場合、前記ブロックが各クラスタのより小さいブロックに分割される請求項30に記載の簡素インデックスを作成する方法。
- 請求項18から31のいずれか一項に記載の階層構造で表されたデータについて簡素インデックスを作成する方法を実行するコンピュータソフトウェアアプリケーション。
- 階層構造で表されたデータについて簡潔インデックスを作成するためのコンピュータシステムであって、
異なった根から葉への経路に関連したノードまたは固有要素のタグ名に関連したノードについて、前記ノードの間の位相関係を評価するために、ツリー探査命令におけるノードの位相符号化リストを生成するようにデータを解析する処理手段と、
前記評価に基づき、前記異なった根から葉への経路または固有タグ名に関連したノードの前記位相符号化リストを変換する処理手段と、
キーとして前記異なった根から葉への経路または固有タグ名を持つエントリとともにインデックスを記憶する記憶手段と、を有し、
前記エントリは、使用された前記変換方法の情報と共に前記キーに関連した変換された位相情報に含まれる、ことを特徴とする簡潔インデックスを作成するためのコンピュータシステム。 - 前記記憶手段は、コンピュータ読取り可能記憶媒体であるとともに、請求項18から31のいずれか一項に記載の階層構造で表されたデータについて簡潔インデックスを作成する方法の実行動作が可能なコンピュータソフトウェアアプリケーションを記憶する請求項33に記載の簡潔インデックスを作成するためのコンピュータシステム。
- 前記コンピュータシステムは、PDA,携帯電話またはラップトップなどの携帯型コンピュータである請求項33または34に記載の簡潔インデックスを作成するためのコンピュータシステム。
- 請求項1から15のいずれか一項に記載の階層構造で表されたデータについて簡素インデックスを使用するためのコンピュータシステムであって、
前記簡素インデックスを記憶する記憶手段と、
前記記号表において所要キーを位置付ける処理手段と、を有し、
前記キーに関連したノードの前記位相情報の変換に使用された変換方法に基づき、前記キーに関連した全てのノードの位相情報を検索するために前記変換された位相情報を再変換するように、前記記号表において所要キーを位置付ける処理手段と、を有する簡素インデックスを使用するためのコンピュータシステム。 - 前記記憶手段は、コンピュータ読取り可能記憶媒体であるとともに、請求項16または17に記載の階層構造で表されたデータについて簡素インデックスを使用する方法を実行するための動作が可能なコンピュータソフトウェアアプリケーションを記憶する請求項36に記載の簡素インデックスを使用するためのコンピュータシステム。
- 前記コンピュータシステムは、遠隔装置からデータ処理要求信号を受信する通信手段をさらに有する請求項36または37に記載の簡素インデックスを使用するためのコンピュータシステム。
- 前記コンピュータシステムは、PDA,携帯電話またはラップトップなどの携帯型コンピュータである請求項36または37に記載の簡素インデックスを使用するためのコンピュータシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2005906846A AU2005906846A0 (en) | 2005-12-06 | Succinct Index Structure | |
PCT/AU2006/001843 WO2007065207A1 (en) | 2005-12-06 | 2006-12-05 | A succinct index structure for xml |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009518718A true JP2009518718A (ja) | 2009-05-07 |
Family
ID=38122402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008543611A Pending JP2009518718A (ja) | 2005-12-06 | 2006-12-05 | Xmlのための簡素インデックス構造 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20090222419A1 (ja) |
EP (1) | EP1963997A4 (ja) |
JP (1) | JP2009518718A (ja) |
CN (1) | CN101326522B (ja) |
AU (1) | AU2006322637B2 (ja) |
WO (1) | WO2007065207A1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8250115B2 (en) * | 2007-08-10 | 2012-08-21 | International Business Machines Corporation | Method, apparatus and software for processing data encoded as one or more data elements in a data format |
FR2936623B1 (fr) * | 2008-09-30 | 2011-03-04 | Canon Kk | Procede de codage d'un document structure et de decodage, dispositifs correspondants |
JP2010165272A (ja) * | 2009-01-19 | 2010-07-29 | Sony Corp | 情報処理方法、情報処理装置、及びプログラム |
CN101739462B (zh) * | 2009-12-31 | 2012-11-28 | 中兴通讯股份有限公司 | 可扩展标记语言编码方法、解码方法和客户端 |
US8645428B2 (en) * | 2011-12-08 | 2014-02-04 | Xerox Corporation | Arithmetic node encoding for tree structures |
CN102542074B (zh) * | 2012-02-17 | 2013-10-30 | 清华大学 | 一种元素间拓扑关系的展示和搜索工具 |
US9280575B2 (en) * | 2012-07-20 | 2016-03-08 | Sap Se | Indexing hierarchical data |
KR20140133125A (ko) * | 2013-05-09 | 2014-11-19 | 삼성전자주식회사 | 클라이언트에서 서버가 제공하는 웹 페이지를 브라우즈하는 방법 및 이를 위한 장치 |
US11822530B2 (en) * | 2020-01-22 | 2023-11-21 | Alibaba Group Holding Limited | Augmentation to the succinct trie for multi-segment keys |
US11366810B2 (en) * | 2020-04-27 | 2022-06-21 | Salesforce.Com, Inc. | Index contention under high concurrency in a database system |
CN112905186B (zh) * | 2021-02-07 | 2023-04-07 | 中国科学院软件研究所 | 适用于开源软件供应链的高信噪比代码分类方法及装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6584459B1 (en) * | 1998-10-08 | 2003-06-24 | International Business Machines Corporation | Database extender for storing, querying, and retrieving structured documents |
US6377953B1 (en) * | 1998-12-30 | 2002-04-23 | Oracle Corporation | Database having an integrated transformation engine using pickling and unpickling of data |
US7421648B1 (en) * | 1999-05-21 | 2008-09-02 | E-Numerate Solutions, Inc. | Reusable data markup language |
US6859217B2 (en) * | 2000-07-19 | 2005-02-22 | Microsoft Corporation | System and method to display and manage data within hierarchies and polyarchies of information |
JP2003084987A (ja) * | 2001-09-11 | 2003-03-20 | Internatl Business Mach Corp <Ibm> | Xml文書の妥当性を検証するためのオートマトンの生成方法、xml文書の妥当性検証方法、xml文書の妥当性を検証するためのオートマトンの生成システム、xml文書の妥当性検証システムおよびプログラム |
KR100484138B1 (ko) * | 2002-05-08 | 2005-04-18 | 삼성전자주식회사 | 관계형 데이터베이스에서 정규 경로식 질의를 처리하는xml 인덱싱 방법과 자료구조 |
KR100803285B1 (ko) * | 2003-10-21 | 2008-02-13 | 한국과학기술원 | 역 산술 부호화와 타입 추론 엔진을 이용한 질의 가능 엑스-엠-엘 압축 방법 |
US7634498B2 (en) * | 2003-10-24 | 2009-12-15 | Microsoft Corporation | Indexing XML datatype content system and method |
US7440954B2 (en) * | 2004-04-09 | 2008-10-21 | Oracle International Corporation | Index maintenance for operations involving indexed XML data |
US7475070B2 (en) * | 2005-01-14 | 2009-01-06 | International Business Machines Corporation | System and method for tree structure indexing that provides at least one constraint sequence to preserve query-equivalence between xml document structure match and subsequence match |
-
2006
- 2006-12-05 AU AU2006322637A patent/AU2006322637B2/en not_active Ceased
- 2006-12-05 US US12/094,488 patent/US20090222419A1/en not_active Abandoned
- 2006-12-05 CN CN2006800461478A patent/CN101326522B/zh not_active Expired - Fee Related
- 2006-12-05 JP JP2008543611A patent/JP2009518718A/ja active Pending
- 2006-12-05 WO PCT/AU2006/001843 patent/WO2007065207A1/en active Application Filing
- 2006-12-05 EP EP06817581A patent/EP1963997A4/en not_active Withdrawn
Non-Patent Citations (7)
Title |
---|
CSND200401683014; 油井 誠: 'XPath対応PostgreSQLで作る新世代Webシステム' SoftwareDesign No.163, 20040518, 92-105ページ, (株)技術評論社 * |
CSNG200401928006; 小林 一仁: '挿入制限のないXML範囲ラベリング用コード' 電子情報通信学会技術研究報告 Vol.103 No.190, 20030709, 31-36ページ, 社団法人電子情報通信学会 * |
CSNG200501044004; 天笠 俊之: 'リージョンディレクトリを用いた関係データベースによる大規模XMLデータ処理' 情報処理学会研究報告 Vol.2004 No.72, 20040715, 201-307ページ, 社団法人情報処理学会 * |
JPN6012022227; 油井 誠: 'XPath対応PostgreSQLで作る新世代Webシステム' SoftwareDesign No.163, 20040518, 92-105ページ, (株)技術評論社 * |
JPN6012022228; Leo Yuen: 'Relational Index Support for XPath Axes' Springer-Verlang Berin , 20050828, 84-98ページ * |
JPN6012022229; 天笠 俊之: 'リージョンディレクトリを用いた関係データベースによる大規模XMLデータ処理' 情報処理学会研究報告 Vol.2004 No.72, 20040715, 201-307ページ, 社団法人情報処理学会 * |
JPN6012022230; 小林 一仁: '挿入制限のないXML範囲ラベリング用コード' 電子情報通信学会技術研究報告 Vol.103 No.190, 20030709, 31-36ページ, 社団法人電子情報通信学会 * |
Also Published As
Publication number | Publication date |
---|---|
WO2007065207A1 (en) | 2007-06-14 |
CN101326522A (zh) | 2008-12-17 |
AU2006322637B2 (en) | 2011-07-28 |
CN101326522B (zh) | 2011-07-20 |
EP1963997A1 (en) | 2008-09-03 |
US20090222419A1 (en) | 2009-09-03 |
AU2006322637A1 (en) | 2007-06-14 |
EP1963997A4 (en) | 2012-02-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009518718A (ja) | Xmlのための簡素インデックス構造 | |
Santoso et al. | Ontology extraction from relational database: Concept hierarchy as background knowledge | |
US9659001B2 (en) | Query evaluation using ancestor information | |
US7487174B2 (en) | Method for storing text annotations with associated type information in a structured data store | |
AU2005200999B2 (en) | System and method for schemaless data mapping with nested tables | |
US20080098020A1 (en) | Incremental maintenance of an XML index on binary XML data | |
JP5125662B2 (ja) | クエリ変換方法および検索装置 | |
JP2004086782A (ja) | 異種データベース統合支援装置 | |
US20070005632A1 (en) | Method for efficient maintenance of XML indexes | |
US8082492B2 (en) | Structured-document management apparatus, search apparatus, storage method, search method and program | |
US20060161525A1 (en) | Method and system for supporting structured aggregation operations on semi-structured data | |
JPWO2013111287A1 (ja) | Sparqlクエリ最適化方法 | |
US20070174241A1 (en) | Match graphs for query evaluation | |
US8046680B2 (en) | Method and device for generating reference structural patterns adapted to represent hierarchized data | |
CN102043802B (zh) | 基于结构摘要的xml关键字检索方法 | |
US7421646B1 (en) | System and method for schemaless data mapping | |
US7805424B2 (en) | Querying nested documents embedded in compound XML documents | |
US11023674B2 (en) | Generation and application of object notation deltas | |
US9542502B2 (en) | System and method for XML subdocument selection | |
US20210124798A1 (en) | Merging delta object notation documents | |
Müldner et al. | Updates of Compressed Dynamic XML Documents. | |
JP5225022B2 (ja) | Xmlデータ検索方法及び装置及びプログラム | |
Ratcliffe et al. | Semantic validation and correction of scientific workflows | |
Santoso et al. | Accepted Manuscript STS SS |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20091119 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120508 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130115 |