JP2009140494A - 拡張マークアップ言語(xml)データを検索する方法及び装置 - Google Patents

拡張マークアップ言語(xml)データを検索する方法及び装置 Download PDF

Info

Publication number
JP2009140494A
JP2009140494A JP2008307456A JP2008307456A JP2009140494A JP 2009140494 A JP2009140494 A JP 2009140494A JP 2008307456 A JP2008307456 A JP 2008307456A JP 2008307456 A JP2008307456 A JP 2008307456A JP 2009140494 A JP2009140494 A JP 2009140494A
Authority
JP
Japan
Prior art keywords
elements
list
parallel
xml
simd
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.)
Granted
Application number
JP2008307456A
Other languages
English (en)
Other versions
JP4896950B2 (ja
Inventor
Kevin Jones
ジョーンズ ケヴィン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2009140494A publication Critical patent/JP2009140494A/ja
Application granted granted Critical
Publication of JP4896950B2 publication Critical patent/JP4896950B2/ja
Expired - Fee Related 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/84Mapping; Conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques

Abstract

【課題】 XMLドキュメントが検索される速度を改善する。
【解決手段】 本発明の方法は、拡張マークアップ言語(XML)ドキュメントのリスト構造表現から要素のセットを抽出し、前記要素のセットを連続したメモリ位置のパック・ベクトルに格納し、前記セットの要素が並列に検索されることを可能にすることを有する。本発明の方法は、SIMD(Single Instruction Multiple Data)命令を使用して前記パック・ベクトルの検索を実行し、前記パック・ベクトルの前記要素のセットの各要素における合致について並列に検索することを更に有してもよい。
【選択図】 図4

Description

この開示は、拡張マークアップ言語(XML:Extensible Markup Language)に関し、特にXMLドキュメントが検索される速度を改善することに関する。
XMLは、ドキュメントをエンコードしてインターネットを介したデータの共有を容易にするために使用されるオープンスタンダードの汎用マークアップ言語である。XMLは、テキストとグラフィックスと音声とビデオとハイパーリンクとを組み込んだドキュメントをワールドワイドウェブ(World Wide Web)で生成するために使用されるHTMLと類似する。しかし、XMLは、符号化データの表示規格の代わりに論理構造を示すタグを使用することで、HTMLと異なる。
メモリ構造にXMLデータを表現する多くの異なる方法が存在する。例えば、XMLデータは、(1)W3C(World Wide Web Consortium)により推奨される文字列、(2)アクセス速度を改善するためのセカンダリインデックスを備えた文字列、(3)リスト構造(各構造はXMLデータの何らかの側面を表す)又は(4)ツリー構造(各構造はXMLデータの何らかの側面を表す)として表され得る。
XMLデータの典型的な‘リスト構造(list of structures)’表現は、XMLデータの異なる特徴を表す構造タイプを使用し、ドキュメントの順序でこれらの構造をリストに接続する。典型的な構造タイプは、要素(element)、属性、文字データ、名前空間、処理命令及びコメントである。
XMLデータの‘リスト構造’表現は、‘ツリー構造(trees
of structures)’表現に比べて比較的コンパクトであるという利点を有し、また、文字列より自動的に処理することが容易である。従って、遅い文字列処理と大きいメモリを必要とし得る‘ツリー構造’表現との間の良好な折衷案である。
XMLドキュメントの検索は、XMLデータにより公表された階層を使用して論理的に指定され得る。例えば、文字列での正規表現の使用と同様に、“//a/b/*”としてのW3C(World Wide Web Consortium)のXPath(XML Path Language)シンタックスで表されるノード‘a’の子であるノード‘b’の子を見つける。しかし、リスト構造として格納されたデータでの階層検索モデルの使用は、構造間のポインタが検索空間を制限するために使用され得る“ツリー構造”として表されたデータの検索に比べて遅くなる可能性がある。従って、‘ツリー構造’表現は、XMLデータへのランダムアクセスを提供するが、‘リスト構造’は、順次アクセスのみを提供する。
本発明の方法は、
拡張マークアップ言語(XML)ドキュメントのリスト構造表現から要素のセットを抽出し、
前記要素のセットを連続したメモリ位置のパック・ベクトルに格納し、前記セットの要素が並列に検索されることを可能にすることを有することを特徴の1つとする。
また、本発明の装置は、
拡張マークアップ言語(XML)ドキュメントのリスト構造表現から要素のセットを抽出するリスト−パック・ベクトル変換器と、
前記要素のセットを連続したメモリ位置のパック・ベクトルに格納し、前記セットの要素が並列に検索されることを可能にするプライマリリストと
を有することを特徴の1つとする。
また、本発明の物は、
関連情報を有する機械アクセス可能媒体を含む物であって、
前記情報は、アクセスされたときに、機械に、
XMLドキュメントのリスト構造表現から要素のセットを抽出し、
前記要素のセットを連続したメモリ位置のパック・ベクトルに格納し、前記セットの要素が並列に検索されることを可能にすることを実行させることを特徴の1つとする。
本発明の実施例によれば、XMLドキュメントが検索される速度を改善することが可能になる。
特許請求の範囲の対象の実施例の特徴は、図面を参照することで、以下の詳細な説明と共に明らかになる。図面において同様の参照符号は同様の部分を示す。
以下の詳細な説明は、特許請求の範囲の対象の例示的な実施例を参照して行われるが、その多くの代替、変更及び変形が当業者に明らかになる。従って、特許請求の範囲の対象は、広く見なされ、特許請求の範囲に記載のもののみにより規定されることを意図する。
図1A及び1Bは、XMLドキュメントの例を示している。XMLドキュメントは、www.w3.orgで入手可能なW3C(World Wide Web Consortium)の拡張マークアップ言語(XML:Extensible Markup Language)1.0で記述されるようにフォーマットされてもよい。図1Aに示すように、XMLドキュメント100は、複数の要素102、104、106、108を含み、要素は、開始タグ‘<>’及び/又は終了タグ‘</>’を有する。要素102、104、106、108のタイプ(例えば‘a、b、c又はd’)は、開始タグと終了タグとの双方に含まれる。
図1Aを参照すると、要素102は、名前(ns1)とURI(Uniform Resource Identifier)(uri)とを有する“xmlns”を使用して宣言された名前空間(namespace)を含む。すなわち、抽象的又は物理的リソースを特定するコンパクトな文字列を含む。要素102はまた、名前(a1)と値(attribute)とを有する属性を含む。
図1Bは、図1Aに示すXMLドキュメント100を表すために使用され得るリスト構造150を示している。XMLデータの典型的な‘リスト構造’表現は、XMLデータの異なる特徴を表すために異なる構造タイプを使用し、ドキュメントの順序でこれらの構造をリストに接続する。典型的な構造タイプは、要素(例えば、開始要素、終了要素)、属性、名前空間、処理命令、コメント及び文字データ(例えばテキスト)である。
図1Bに示すように、図1Aに示すXMLドキュメント100を表すリスト構造150は、要素タイプ(a、b、c及びd)と名前空間と属性とテキストとを含み、これらは、開始及び終了要素構造と名前空間構造と属性構造とテキスト構造とを含む構造152-1,...,150-15により表される。
従って、要素タイプ‘a’102(図1A)(すなわち、<a xmins:ns1=”namespace” a1=”attribute”></a>は、開始要素構造152-1と名前空間構造152-2と属性構造152-3とテキスト構造152-4と終了要素構造152-15とにより表される。構造152-1は図1Aに示すXMLドキュメント100の<a>に対応し、構造152-2はxmins:ns1=”namespace”に対応し、構造152-3はa1=”attribute”に対応し、構造152-4はnewline及びtabに対応し、構造152-15は”</a>”に対応する。
XMLドキュメントの“ツリー構造”表現の検索とXMLドキュメントの“リスト構造”表現の検索との間の性能差を低減するために、“ツリー構造”の構造は、構造間の直接のリンクを提供するオフセット又はポインタで拡張されてもよく、読み取られたメモリ量を低減するために2次記憶機構に頻繁にアクセスされないデータを移動することにより拡張されてもよい。階層検索はまた、複数の検索でアクセスコストが償却されるように併せて評価されてもよい。しかし、これらの技術が使用されたとしても、検索の性能は、XMLドキュメントの全てのデータを走査して特定のタイプの要素を見つけるのに要する時間により依然として制限される。
リスト構造の各構造の長さ(ビット数)が可変であるため、特定の要素タイプの検索は、合致を見つけるためにバイト毎にXMLドキュメントを通じた順次検索を必要とする。XMLドキュメントは、数千ものレコードを有し得るため、特定のレコードを求めてXMLドキュメントの開始から終了まで走査することは、非常に時間を消費する。
本発明の原理によれば、‘リスト構造’表現の走査速度は、SIMD(Single Instruction Multiple Data)命令に適したフォーマットでXMLデータを格納することにより、検索処理を支援するように改善される。SIMD命令は、並列に複数の構造要素の検索を実行するために使用されてもよい。
SIMD(Single Instruction Multiple Data)命令は、データセットの複数の要素で同じ動作を同時に実行する。単一のSIMD命令が複数の構造を検査することを可能にするために、データセットの要素は、典型的に“パック・ベクトル(packed vector)”に格納される。すなわち、同じサイズの複数の要素を含むデータ構造である。バイト毎に各構造からデータをロードする代わりに、XMLデータは、SIMD命令により使用されるのに適したフォーマットで格納される。
実施例では、構造のセット(一式の構造)は、データがSIMD命令に容易にアクセス可能になるように、並列形式で配置される。図1Aに示すXMLドキュメントの図1Bに示すリスト構造は、論理的に2つの部分:(1)並列のレイアウトでキー情報をグループ化するプライマリリスト及び(2)標準的な直列の形式での残りのデータのセカンダリリストに分割される。
図2は、SIMD命令実行モデルのブロック図である。SIMD命令は、1つの命令を使用して同時に複数のデータで動作することにより作動する。図2に示すように、第1のオペランド200はB[0]-B[7]のラベルの8バイトを有し、第2のオペランド202はA[0]-A[7]のラベルの8バイトを有する。同じ動作‘op’204が第1のオペランド200の1つのバイトと第2のオペランドの対応するバイトとで並列に実行され、R[0]-R[7]のラベルの8バイトを有する結果を作る。
図2は、本発明の原理に従って図1Bに示すリスト構造150から抽出されたプライマリリスト300の実施例を示している。構造タイプのセット(一式の構造タイプ)及び構造名のセット(一式の構造名)は、SIMD命令の長さに基づいて連続したメモリに格納される。このことにより、SIMD命令が図2に示すモデルと共に説明したように、プライマリリスト300で構造タイプのセット及び/又は構造名のセットを並列に検索するために使用されることが可能になる。
図3は、並列に64ビット(8バイト)で動作するSIMD命令により使用される8のエントリを有する各セットを仮定して、プライマリリスト200のレイアウトを示している。他の実施例では、セット毎に8のエントリより多く存在してもよく、少なく存在してもよい。図示の実施例では、プライマリリスト300はB[0]-B[31]のラベルの32バイトを有し、リスト構造表現150から抽出された構造名及びタイプを格納する。
プライマリリスト300は、XMLドキュメントでの検索を実行するAPI(Application Programming Interface)に応じて、リスト構造150として表されたXMLドキュメント100から抽出されてもよい。リスト構造表現150から要素を抽出してプライマリリスト300のパック・ベクトル表現を作るために、リスト−パック・ベクトル変換器(list to packed vector converter)が使用されてもよい。
プライマリリスト300に格納されたリスト構造表現150からの各要素は、構造のタイプ又は名前である。図示の実施例では、SIMD命令により使用されるオペランドのサイズは64ビット(すなわち、8バイト)である。従って、メモリの32(4×8バイト)の連続したバイトがプライマリリスト300に割り当てられ、図1Bのリスト構造表現150で示す15の構造に対応する構造タイプ及び構造名の全てを格納する。
最初の8バイトB[0]-B[7](8の並列のエントリのセット)は、図1Bに示すリスト構造表現150の最初の8の構造152-1,...,152-8に対応する構造タイプを格納する。次の8バイトB[8]-B[15]は、図1Bに示すリスト構造表現150の最初の8の構造152-1,...,152-8に対応する構造名を格納する。バイトB[16]-B[23]は、図1Bに示すリスト構造表現150の構造152-9,...,152-15に対応する構造タイプを格納する。バイトB[24]-B[31]は、図1Bに示すリスト構造表現150の構造152-9,...,152-15に対応する構造名を格納する。
バイトB[0]-B[7]及びバイトB[16]-B[23]に格納された構造タイプは、開始要素(SE:start element)タイプ構造、終了要素(EE:end element)タイプ構造、名前空間(NS:namespace)タイプ構造、属性(A:attribute)タイプ構造、及びテキスト(T:Text)タイプ構造を含む。構造名は、a-b、ns1及びa1を含む。
構造タイプ及び構造名は、検索されるXMLドキュメント100で最も一般的なフィールドである。プライマリリスト300のキーデータ項目は、バイトB[0]-B[7]及びバイトB[16]-B[23]に格納された構造タイプであり、任意選択でバイトB[8]-B[15]及びバイトB[23]-B[31]に格納された構造名である。構造名について、表現は、XMLデータ表現に一般的な文字列を表す数による文字列の置換を可能にする。また、図示のように、各構造タイプ及び構造名は、バイトに符号化されてもよい。
プライマリリスト300は、SIMD命令を使用して特定の構造タイプ及び/又は構造名について検索されてもよい。例えば、特定のタイプの構造についてXMLドキュメント100を検索するために、プライマリリスト300のバイトB[0]-B[7]及びB[16]-B[23]で動作する2つのSIMD等価比較(equality comparison)が使用されてもよい。
従って、図3に示すプライマリリスト300のパック・ベクトル表現は、並列に8バイトを検索することにより、論理的には8だけ走査コストを低減する。B[0]-B[7]及びB[24]-B[31]の範囲のバイトでSIMD等価演算を組み合わせることにより、より複雑な検索が実行されてもよい。
リスト構造表現150の全てのデータがプライマリリスト300に配置されてもよいが、頻繁に使用されない項目が存在し、特定の構造名又はタイプについてプライマリリスト200を検索する時間を増加させ得る。従って、実施例では、リスト構造表現150で頻繁に使用されない要素(例えばuri及び属性値)は、プライマリリスト300に含まれない。リスト構造表現150を通じて順次に検索する代わりに、XMLドキュメントはパック・ベクトル300のプライマリリスト及びセカンダリリストに格納される。
図3Bは、図1Bに示すリスト構造150から抽出されたセカンダリリスト302の実施例を示している。
通常の直列の方法で配置されたセカンダリリスト302は、プライマリリスト300の検索が合致を生じない場合に、頻繁に使用されない項目を検索するために、プライマリリストに加えて使用される。セカンダリリスト302は、データへのポインタ(DP)を格納する。図3Bに示す例では、23のポインタ(DP[0]-DP[23])が示されている。各ポインタ(DP)は、システムのCPUが32ビット(4バイト)であるか64ビット(8バイト)であるかに応じて4又は8バイトを有してもよい。プライマリリスト300の各エントリ(B[0]-B[31])は、セカンダリリスト(ストリーム)302の3つのエントリ(DP)に関連する。これらの3つのエントリは、プライマリリスト300に格納されていない頻繁にアクセスされないXMLデータを記述するために必要な更なる情報へのポインタを格納する。
第1のエントリは、レコード(構造)152-1,...,152-15のプレフィックス列(prefix string)へのポインタを格納するためのものであり、第2のエントリは、名前列へのポインタ又はURI列へのポインタを格納するためのものであり、第3のエントリは、テキスト列へのポインタを格納するためのものである。全ての構造タイプが全ての3つのエントリを使用するとは限らないため、未使用のエントリは、図3Bに示すセカンダリリスト302で0として示されている。
図3Bに示す例では、Pnはレコード‘n’のプレフィックス列へのポインタを表し、Nnは‘n’の名前列へのポインタを表し、Unは‘n’のURI列へのポインタを表し、Tnはレコード‘n’のテキスト列へのポインタを表す。これらのフィールドは、プレフィックス、名前/URI及びテキストとして(すなわち、3つのエントリに)格納される。名前及びURIは、構造タイプが名前及びURIを必要としないため、第2のエントリを共有する。
セカンダリリスト302へのオフセットは、セカンダリリスト302のエントリのサイズ(例えば4又は8)の3倍だけプライマリリスト300の構造の位置を乗算することにより、特定の構造152-1,...,152-15について計算されてもよい。
他の実施例では、プライマリ及びセカンダリリストは、1つの構造にインターリーブされてもよく、及び/又は並列データ表現が他ではない入力の何らかの部分について選択的に使用されてもよい。いずれの場合でも、検索効率を改善するためのXMLデータの並列データレイアウトの原理が依然として当てはまる。
プライマリ及びセカンダリストリームをインターリーブするために、まず、固定数の構造がプライマリストリームフォーマットでエンコードされ、メモリに格納される。次に、同じ固定数の構造がセカンダリストリームフォーマットでエンコードされ、メモリの次の連続したメモリ位置に格納される。この処理は、全てのデータをエンコードするために必要な回数だけ繰り返される。図3Cは、プライマリリスト及びセカンダリリストがインターリーブされた図1Bに示すリスト構造150から抽出された構造310の実施例を示している。図3Cに示すように、プライマリリストは304及び308に格納され、セカンダリリストは306及び308に格納される。
図4は、図1Bに示すリスト構造表現150のリストから図2に示すプライマリリスト400を生成する方法の実施例を示すフローチャートである。
ブロック400において、リスト−パック・ベクトル変換器は、XMLドキュメント100を処理する要求を受信するのを待機する。XMLドキュメントを処理する要求は、XMLドキュメントを処理するAPI呼び出しから生じてもよい。JAXPは、JAVA(登録商標)でXMLドキュメントを処理するために使用されるAPI呼び出しの例である。要求が受信されると、処理はブロック402で継続する。受信されない場合、処理はブロック400で継続する。
ブロック402において、図1Bに示すリスト構造表現150として格納されているXMLドキュメント100は、Nの連続した構造から構造タイプを抽出するように解析される。例えば、図1Bを参照して、Nが8である場合、構造タイプは、第1の構造タイプが開始要素(SE)タイプであり第8の構造タイプが終了要素(EE)であるリスト構造表現の最初の8の構造152-1,...,152-8から抽出される。処理はブロック404で継続する。
ブロック404において、Nの構造タイプがリスト構造表現から抽出されると、構造タイプは、プライマリリスト300の連続したメモリ位置に格納される。処理はブロック406で継続する。
ブロック406において、構造タイプがNの要素のそれぞれから抽出された後に、リスト構造表現150は、構造タイプが抽出されたNの構造に対応して構造毎に1つずつ、Nの構造名について解析される。処理はブロック408で継続する。
ブロック408において、構造名がリスト構造表現から抽出されると、構造名は、第Nの構造タイプが格納された後のメモリ位置から始まり、プライマリリスト200の連続したメモリ位置に格納される。1つの位置は、構造に関連する構造名が存在するか否かに拘らず、Nの構造のそれぞれの構造タイプを格納するために確保される。例えば、図4に示すように、構造152-4が構造名を有さない場合であっても、バイトB[11]は、構造152-4に関連する構造名を格納するために確保される。処理はブロック410で継続する。
ブロック410において、リスト−パック・ベクトル変換器は、リスト構造表現150に処理すべき他の構造が存在するか否かを決定する。存在する場合、処理はブロック402で継続し、リスト構造表現150の残りの構造を処理する。存在しない場合、処理はブロック412で継続する。
ブロック412において、プライマリリスト300がリスト構造表現150から生成された後に、プライマリリスト400は、特定の構造タイプ及び/又は構造名について検索されてもよい。プライマリリストのパック・ベクトルの8バイトは、SIMD命令を使用した合致を検索するために、バイトで並列に比較されてもよい。例えば、PCMPEQB(compare packed bytes for equal)命令のようなx86 MMX比較命令は、目的オペランドと源オペランドとのパック・バイトの等価について比較を実行する。処理はブロック400で継続し、他の要求を待機する。
図5は、XMLドキュメント528のリスト構造表現からプライマリリスト542を生成するリスト−パック・ベクトル変換器(list to packed vector converter)の実施例を含むシステムのブロック図である。
システム500は、プロセッサ501と、メモリコントローラハブ(MCH:Memory Controller Hub)502と、入力/出力(I/O)コントローラハブ(ICH:Input/Output Controller Hub)504とを含む。MCH502は、プロセッサ501とメモリ504との間の通信を制御するメモリコントローラ506を含む。プロセッサ501及びMCH502はシステムバス516で通信する。
プロセッサ501は、シングルコアIntel Pentium(登録商標) IVプロセッサ、シングルコアIntel Celeronプロセッサ、Intel XScaleプロセッサ、若しくはマルチコアプロセッサ(Intel Pentium(登録商標) D、Intel Xeonプロセッサ又はIntel Core Duoプロセッサ等)又は他の種類のプロセッサのようなSSE(Streaming SIMD Extensions)をサポートする複数のプロセッサのうち何れか1つでもよい。
メモリ503は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、SDRAM(Synchronized Dynamic Random Access Memory)、DDR2(Double Data Rate 2)RAM若しくはRDRAM(Rambus Dynamic Random Access Memory)又は他の種類のメモリでもよい。
ICH504は、DMI(Direct Media Interface)のような高速チップ間相互接続514を使用してMCH502に結合されてもよい。DMIは、2つの片方向レーンを介して2ギガビット/秒の同時転送レートをサポートする。
ICH504は、ICH504に結合された少なくとも1つの記憶装置512との通信を制御する記憶入力/出力(I/O)コントローラ510を含んでもよい。例えば、記憶装置は、ディスクドライブ、DVD(Digital Video Disk)ドライブ、CD(Compact Disk)ドライブ、RAID(Redundant Array of Independent Disks)、テープドライブ又は他の記憶装置でもよい。ICH504は、SAS(Serial Attached Small Computer System Interface)又はSATA(Serial Advanced Technology Attachment)のようなシリアルストレージプロトコルを使用して、ストレージプロトコル相互接続518で記憶装置512と通信してもよい。
ICH504はまた、少なくとも1つの他のシステム536とのインターネット550での通信を制御するNIC(Network Interface Communications)コントローラ526を含んでもよい。メモリ508は、XMLドキュメント528のリスト構造表現からプライマリリスト532を生成するリスト−パック・ベクトル変換器530を格納してもよい。XMLドキュメント528は、RAIDアレイ512又はインターネット536を介してアクセス可能な他のシステム528に格納されてもよい。パック・ベクトル変換器530は、メモリ508に格納され得るXMLドキュメント528のリスト構造表現536で動作する。パック・ベクトル変換器530は、本発明の原理に従ってXMLドキュメント528のリスト構造表現からプライマリリスト534及びセカンダリリスト532を生成する。
本発明の実施例は64ビットのSIMD命令(すなわち、並列に64ビット(8バイト)で動作するSIMD命令)について説明した。しかし、本発明は、並列に64ビットで動作することに限定されない。本発明の実施例は、並列に64ビットより多くで(例えば並列に16バイトで動作するために128ビットのレジスタを使用して)動作するSIMD命令を使用してもよい。
本発明の実施例に関する方法は、コンピュータ使用可能媒体を含むコンピュータプログラムプロダクトに具現されてもよいことが、当業者に明らかである。例えば、このようなコンピュータ使用可能媒体は、CD-ROM(Compact Disk Read Only Memory)ディスク又は通常のROM装置のような読み取り専用メモリ装置で構成されてもよく、格納されたコンピュータ可読プログラムコードを有するコンピュータディスクで構成されてもよい。
本発明の実施例について特に実施例を参照して図示及び説明したが、特許請求の範囲に含まれる本発明の実施例の範囲を逸脱することなく、形式及び詳細で様々な変更が行われてもよいことが当業者にわかる。
XMLドキュメントの例 XMLドキュメントの例 SIMD命令実行モデルのブロック図 本発明の原理に従って図1Bに示すリスト構造から抽出されたプライマリリストの実施例 図1Bに示すリスト構造から抽出されたセカンダリリストの実施例 プライマリ及びセカンダリリストがインターリーブされた図1Bに示すリスト構造から抽出された構造の実施例 図1Bに示すリスト構造から図3に示すプライマリリストを生成する方法の実施例を示すフローチャート XMLドキュメントのリスト構造表現からプライマリリストを生成するリスト−パック・ベクトル変換器の実施例を含むシステムのブロック図
符号の説明
501 ホスト中央処理装置(CPU)
502 メモリコントローラハブ(MCH)
504 入力/出力コントローラハブ(ICH)
506 メモリコントローラ
508 メモリ
510 記憶入力/出力コントローラ
512 RAID配列
526 ネットワークインタフェースコントローラ
528 XMLドキュメント
530 変換器
532 セカンダリリスト
534 プライマリリスト
536 リスト構造
550 インターネット
558 XMLドキュメント

Claims (20)

  1. 拡張マークアップ言語(XML)ドキュメントのリスト構造表現から要素のセットを抽出し、
    前記要素のセットを連続したメモリ位置のパック・ベクトルに格納し、前記セットの要素が並列に検索されることを可能にすることを有する方法。
  2. 前記セットの要素が構造タイプである、請求項1に記載の方法。
  3. 前記セットの要素が構造名である、請求項1に記載の方法。
  4. 前記セットの要素数が少なくとも8である、請求項1に記載の方法。
  5. SIMD(Single Instruction Multiple Data)命令を使用して前記パック・ベクトルの検索を実行し、前記パック・ベクトルの前記要素のセットの各要素における合致について並列に検索することを更に有する、請求項1に記載の方法。
  6. 前記SIMD命令は、並列に8バイトで動作する、請求項5に記載の方法。
  7. 前記SIMD命令は、並列に16バイトで動作する、請求項5に記載の方法。
  8. プライマリリストに含まれていない前記リスト構造表現から抽出された可変サイズの要素のセカンダリリストを格納し、可変サイズの要素の検索を可能にすることを更に有する、請求項1に記載の方法。
  9. 拡張マークアップ言語(XML)ドキュメントのリスト構造表現から要素のセットを抽出するリスト−パック・ベクトル変換器と、
    前記要素のセットを連続したメモリ位置のパック・ベクトルに格納し、前記セットの要素が並列に検索されることを可能にするプライマリリストと
    を有する装置。
  10. 前記セットの要素が構造タイプである、請求項9に記載の装置。
  11. 前記セットの要素が構造名である、請求項9に記載の装置。
  12. 前記セットの要素数が少なくとも8である、請求項9に記載の装置。
  13. 前記プライマリリストは、SIMD(Single Instruction Multiple Data)命令を使用して前記パック・ベクトルの検索を可能にし、前記パック・ベクトルの前記要素のセットの各要素における合致について並列に検索する、請求項9に記載の装置。
  14. 前記SIMD命令は、並列に8バイトで動作する、請求項13に記載の装置。
  15. 前記SIMD命令は、並列に16バイトで動作する、請求項13に記載の装置。
  16. 前記プライマリリストに含まれていない前記リスト構造表現から抽出された可変サイズの要素を格納し、可変サイズの要素の検索を可能にするセカンダリリストを更に有する、請求項9に記載の装置。
  17. 関連情報を有する機械アクセス可能媒体を含む物であって、
    前記情報は、アクセスされたときに、機械に、
    XMLドキュメントのリスト構造表現から要素のセットを抽出し、
    前記要素のセットを連続したメモリ位置のパック・ベクトルに格納し、前記セットの要素が並列に検索されることを可能にすることを実行させる物。
  18. 前記セットの要素が構造タイプである、請求項17に記載の物。
  19. 前記セットの要素が構造名である、請求項17に記載の物。
  20. 前記機械に、SIMD(Single Instruction Multiple Data)命令を使用して前記パック・ベクトルの検索を実行し、前記パック・ベクトルの前記要素のセットにおける合致について並列に検索することを更に実行させる、請求項17に記載の物。
JP2008307456A 2007-12-03 2008-12-02 拡張マークアップ言語(xml)データを検索する方法及び装置 Expired - Fee Related JP4896950B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/949,761 US8341165B2 (en) 2007-12-03 2007-12-03 Method and apparatus for searching extensible markup language (XML) data
US11/949,761 2007-12-03

Publications (2)

Publication Number Publication Date
JP2009140494A true JP2009140494A (ja) 2009-06-25
JP4896950B2 JP4896950B2 (ja) 2012-03-14

Family

ID=40456868

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008307456A Expired - Fee Related JP4896950B2 (ja) 2007-12-03 2008-12-02 拡張マークアップ言語(xml)データを検索する方法及び装置

Country Status (4)

Country Link
US (1) US8341165B2 (ja)
EP (1) EP2068254B1 (ja)
JP (1) JP4896950B2 (ja)
CN (1) CN101452482B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8341165B2 (en) 2007-12-03 2012-12-25 Intel Corporation Method and apparatus for searching extensible markup language (XML) data
GB2493188A (en) * 2011-07-28 2013-01-30 Canon Kk Method for encoding structured data into a bitstream parsing parallel encoding threads
JP6136142B2 (ja) * 2012-08-24 2017-05-31 富士通株式会社 文字列置換装置、方法及びプログラム
CN105892995B (zh) * 2016-03-28 2018-06-12 龙芯中科技术有限公司 查找负数的方法、装置及处理器

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004295674A (ja) * 2003-03-27 2004-10-21 Fujitsu Ltd Xml文書解析方法、xml文書検索方法、xml文書解析プログラム、xml文書検索プログラムおよびxml文書検索装置
US20050049996A1 (en) * 2003-08-25 2005-03-03 International Business Machines Corporation Method, system, and article of manufacture for parallel processing and serial loading of hierarchical data
JP2005135199A (ja) * 2003-10-30 2005-05-26 Nippon Telegr & Teleph Corp <Ntt> オートマトン作成方法、および、xmlデータ検索方法、ならびに、xmlデータ検索装置、xmlデータ検索プログラム、および、xmlデータ検索プログラムの記録媒体
US20050132342A1 (en) * 2003-12-10 2005-06-16 International Business Machines Corporation Pattern-matching system
US20060284745A1 (en) * 2005-06-21 2006-12-21 International Characters, Inc. Method and apparatus for processing character streams
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US20070083807A1 (en) * 2005-10-06 2007-04-12 Microsoft Corporation Evaluating multiple data filtering expressions in parallel

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819101A (en) 1994-12-02 1998-10-06 Intel Corporation Method for packing a plurality of packed data elements in response to a pack instruction
CN102841776B (zh) 1994-12-02 2016-06-29 英特尔公司 可以对复合操作数进行压缩操作的微处理器
GB2362731B (en) * 2000-05-23 2004-10-06 Advanced Risc Mach Ltd Parallel processing of multiple data values within a data word
US7136991B2 (en) * 2001-11-20 2006-11-14 Henry G Glenn Microprocessor including random number generator supporting operating system-independent multitasking operation
US7356764B2 (en) * 2002-04-24 2008-04-08 Intel Corporation System and method for efficient processing of XML documents represented as an event stream
US7480856B2 (en) * 2002-05-02 2009-01-20 Intel Corporation System and method for transformation of XML documents using stylesheets
KR100677116B1 (ko) * 2004-04-02 2007-02-02 삼성전자주식회사 사이클릭 레퍼런싱 방법/장치, 파싱 방법/장치 및 그방법을 수행하는 프로그램이 기록된 컴퓨터 판독가능한기록매체
US7587805B2 (en) * 2005-01-19 2009-09-15 Gm Global Technology Operations, Inc. Reconfigurable fixture device and methods of use
WO2006081474A2 (en) * 2005-01-27 2006-08-03 Intel Corp. Multi-path simultaneous xpath evaluation over data streams
US20060167907A1 (en) * 2005-01-27 2006-07-27 Kevin Jones System and method for processing XML documents
JP4760415B2 (ja) * 2006-02-06 2011-08-31 セイコーエプソン株式会社 コンピュータのデバイスドライバ実現方法
US8341165B2 (en) 2007-12-03 2012-12-25 Intel Corporation Method and apparatus for searching extensible markup language (XML) data

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
JP2004295674A (ja) * 2003-03-27 2004-10-21 Fujitsu Ltd Xml文書解析方法、xml文書検索方法、xml文書解析プログラム、xml文書検索プログラムおよびxml文書検索装置
US20050049996A1 (en) * 2003-08-25 2005-03-03 International Business Machines Corporation Method, system, and article of manufacture for parallel processing and serial loading of hierarchical data
JP2005135199A (ja) * 2003-10-30 2005-05-26 Nippon Telegr & Teleph Corp <Ntt> オートマトン作成方法、および、xmlデータ検索方法、ならびに、xmlデータ検索装置、xmlデータ検索プログラム、および、xmlデータ検索プログラムの記録媒体
US20050132342A1 (en) * 2003-12-10 2005-06-16 International Business Machines Corporation Pattern-matching system
US20060284745A1 (en) * 2005-06-21 2006-12-21 International Characters, Inc. Method and apparatus for processing character streams
US20070083807A1 (en) * 2005-10-06 2007-04-12 Microsoft Corporation Evaluating multiple data filtering expressions in parallel

Also Published As

Publication number Publication date
JP4896950B2 (ja) 2012-03-14
US20090144521A1 (en) 2009-06-04
CN101452482B (zh) 2013-02-27
EP2068254A1 (en) 2009-06-10
CN101452482A (zh) 2009-06-10
US8341165B2 (en) 2012-12-25
EP2068254B1 (en) 2015-06-17

Similar Documents

Publication Publication Date Title
JP3832830B2 (ja) XPath評価方法、これを用いたXPath評価装置及び情報処理装置
US8892599B2 (en) Apparatus and method for securing preliminary information about database fragments for utilization in mapreduce processing
US8739022B2 (en) Parallel approach to XML parsing
US7437666B2 (en) Expression grouping and evaluation
US8935267B2 (en) Apparatus and method for executing different query language queries on tree structured data using pre-computed indices of selective document paths
US8762410B2 (en) Document level indexes for efficient processing in multiple tiers of a computer system
US7328403B2 (en) Device for structured data transformation
US20050091589A1 (en) Hardware/software partition for high performance structured data transformation
US8972489B2 (en) Providing a client interface for a server-based web application programming interface
US20120221604A1 (en) Generating and navigating binary xml data
JP2014002757A (ja) バイナリにエンコードされたxmlデータの効率的な区分的アップデート
JP5377818B2 (ja) コンパイル済みスキーマに順次アクセスする方法とシステム
JP2006221654A (ja) デリミタを減少させる方法及びシステム
JP4896950B2 (ja) 拡張マークアップ言語(xml)データを検索する方法及び装置
Park et al. Lineage encoding: an efficient wireless XML streaming supporting twig pattern queries
JP2006221653A (ja) 文書分析において受付状態を決定するシステム及び方法
US7882138B1 (en) Progressive evaluation of predicate expressions in streaming XPath processor
Liu et al. Dynamic labeling scheme for XML updates
US8397158B1 (en) System and method for partial parsing of XML documents and modification thereof
US8108421B2 (en) Query throttling during query translation
Ko et al. A binary string approach for updates in dynamic ordered XML data
JP5789236B2 (ja) 構造化文書分析方法、構造化文書分析プログラム、および構造化文書分析システム
JP2006221655A (ja) スキーマをコンパイルする方法とシステム
US8301726B2 (en) Method and system for bit streaming for data centric applications
Sumrall et al. Investigations on path indexing for graph databases

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110317

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110412

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110707

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110712

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110809

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110812

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110912

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4896950

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150106

Year of fee payment: 3

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

LAPS Cancellation because of no payment of annual fees