JP2006505871A - 任意に大きな文書内のデータへのスケーラブルなアクセス - Google Patents

任意に大きな文書内のデータへのスケーラブルなアクセス Download PDF

Info

Publication number
JP2006505871A
JP2006505871A JP2004551875A JP2004551875A JP2006505871A JP 2006505871 A JP2006505871 A JP 2006505871A JP 2004551875 A JP2004551875 A JP 2004551875A JP 2004551875 A JP2004551875 A JP 2004551875A JP 2006505871 A JP2006505871 A JP 2006505871A
Authority
JP
Japan
Prior art keywords
document
data structure
xml
memory
persistent storage
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
JP2004551875A
Other languages
English (en)
Other versions
JP4476813B2 (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
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2006505871A publication Critical patent/JP2006505871A/ja
Application granted granted Critical
Publication of JP4476813B2 publication Critical patent/JP4476813B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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
    • G06F16/86Mapping to a database

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Abstract

コンピュータ読み取り可能な媒体上の文書に存在するデータに、限定されたリソース量の装置リソースを有する装置によってアクセスするための手法は、文書の複数の部分のうち、装置リソースを消費する文書の各部分について、使用を判断するステップを含む。各部分は、文書の異なる部分から独立してアクセスされてもよい。使用に基づき、文書のある特定の部分が、装置リソースの消費を止めるよう選択される。特定の部分により消費される装置リソースは解放される。この手法により、限定されたリソースを有する文書処理装置はスケールアップして、さもなければ利用可能なリソースを上回ってしまう大きな文書を処理するようになる。この能力は、利用可能なメモリでは十分明示できない大きなXML文書を、多数のロード可能ユニットとしてデータベースまたは他の永続的記憶装置に最初に挿入する際、利点である。

Description

関連出願との相互参照
本出願は、2002年11月6日に出願された仮出願番号第60/424,543号の利益を主張しており、その内容全体は、米国特許法第119(e)条の下に、ここに十分に述べられているかのようにここに引用により援用される。
発明の分野
この発明は、装置にとって利用可能な限定されたリソースに対応する、任意に大きな文書内のデータにアクセスするための手法に関し、特に、利用可能なメモリが明示できるものよりも大きなXML文書で記憶されたデータを処理することに関する。
発明の背景
情報を電子的にやり取りする業務の数は急増している。情報をやり取りする業務は、データを表現するための共通基準に対する必要性を認識してきた。拡張可能マークアップ言語(XML)は急速に、データを表現するための共通基準になりつつある。
XMLは、ここにXML文書と呼ばれる、ファイルまたはデータパケットといったデータの本体を記載し、それに構造を提供する。XML基準は、XML要素または単に「要素」と呼ばれる、XML文書のセクションの範囲を定めるタグを提供する。
要素は、要素属性および他の要素を含むさまざまな種類のデータを含んでいてもよい。別の要素によって含まれる要素は、その要素の子孫と呼ばれる。属性および子孫要素を含む要素を定義することにより、XML文書は、要素、その子孫要素、およびその属性間の親子階層関係を定義する。
ノードという用語は、XML文書における個々の要素および要素属性を指すために使用される。このため、XML文書は、親子関係を有するノードの階層を定義する。そのような階層はここにノードツリーまたはノード階層と呼ばれる。
属性という用語はここでは、構造の別個の部分または要素、たとえばオブジェクト指向の方法に従ったオブジェクト型に属するオブジェクトまたはデータ構造を指すために使用される。属性は、ここに属性のメンバーと呼ばれる、1つ以上の他の属性を含む複合構成体であってもよい。XML基準は、名前と値のペアの形の要素属性を提供する。ここに使用されるような属性という用語の意味は要素属性を包括するものの、この用語はそう限定はされない。
業界基準は、XML文書を表現するための構造を定義している。そのような1つの基準は、ワールドワイドウェブ・コンソーシアム(W3C)によって公布されているドキュメントオブジェクトモデル(DOM)である。
コンピュータがXML文書上で作動するために、XML文書のインメモリ表現が生成される。一般に、XML文書は、記憶装置(たとえばXMLエンティティを含むファイルを記憶するディスク)から、または通信チャネルを通して受取られたデータからロードされて、XML文書を表現するために使用されるインメモリデータ構造を生成する。インメモリデータ構造は、ソフトウェアおよびプログラムを実行するコンピュータプロセスによって操作される。XML文書をメモリにロードし、XML文書のインメモリ表現を生成する
プロセスは、明示、またはXML文書を明示することと呼ばれる。通常、アプリケーションは、APIを介し、明示によって作り出されたインメモリデータ構造にアクセスし、それを操作する。
明示のための従来のアプローチの下では、XML文書が明示される場合、XML文書全体が明示される。XML文書は非常に大きい場合があり、このため、それらを明示する際に著しい量のメモリを必要とする。XML文書の中には、非常に大きくて、それらを明示するために必要なメモリがそれらに割当てられたメモリを大幅に上回るものもあり、また、多くのコンピュータの容量も大幅に上回り得るものもある。
前述の事項に基づき、XML文書を明示するために必要なメモリの量を低減させるメカニズムを提供することが望ましい。
上に引用されたパンナラ(Pannala)に記載された一アプローチでは、XML文書は、データベースシステムのデータベースオブジェクトに別個に記憶され得る複数のロード可能ユニットに分解される。次に、プロセスがXML文書からのデータを明示しようとする際、対象となるデータを含むロード可能ユニットのみが、データベースからメモリにロードされる。XML文書全体は明示されない。ロード可能ユニットは、XML文書における1つ以上のノードの組である。ロード可能ユニットの1ノードが明示されると、ロード可能なユニットの全ノードも明示される。ロード可能ユニットは、永続的ストレージにノードを記憶する内容構造に相関していてもよいが、必ずしもそうでなくてもよい。
パンナラのシステムは多くの目的にとって有用であるが、動作の中には、別個に記憶されロードされたロード可能ユニットを利用できないものもある。そのような動作は引続き過度の量のメモリを必要とし、大きなXML文書に対応していない。そのような動作は、大きなXML文書のロード可能ユニットの多くまたはすべてに関心を示す動作、および、大きなXML文書全体をデータベースシステムなどの永続的ストレージに最初に挿入する動作を含む。
前述の事項に基づき、利用可能なメモリを上回るXML文書の十分なロード可能ユニットを伴う動作によって必要とされるメモリの量を低減させるための手法を提供することが望ましい。
加えて、パンナラのアプローチは、メモリにロードされるロード可能ユニットの内容がそこでは変えられず、そのためロード可能ユニットが、そのロード可能ユニットを永続的ストレージから再ロードすることによって常時置換えられ得る、ということを仮定している。しかしながら、多くの動作では、ロード可能ユニットの1つ以上は、それらが永続的ストレージに別個に記憶したものとは異なる内容をメモリに有する。たとえば、データベースシステムへの最初の挿入中、メモリに最初にロードされるどのロード可能ユニットも、永続的ストレージ上のデータベースにおいて別個に記憶されたユニットとして存在していない。そのようなロード可能ユニットは「ダーティ」であると言われる。パンナラのアプローチは、ダーティなロード可能ユニットには好適ではない。
前述の事項に基づき、XML文書のダーティなロード可能ユニットを伴う動作中に情報を保持するための手法を提供することがさらに望ましい。
この項に記載された過去のアプローチは追求可能であるが、それらは必ずしも、以前に考えられまたは追求されたアプローチであるとは限らない。したがって、ここに特に示されていない限り、この項に記載されたアプローチは、この背景の項に存在するというだけの理由で、本出願の請求項に対する先行技術として考えられるべきではない。
この発明を、添付図面の図において、限定のためではなく例示のために説明する。図中、同じ参照番号は同様の要素を指す。
発明の詳細な説明
限定されたリソースを有する装置により、大きな文書内のデータにアクセスするための方法および製品が記載される。以下の記載では、説明のため、数多くの特定の詳細がこの発明の完全な理解を提供するために述べられる。しかしながら、この発明がこれらの特定の詳細なしで実践され得ることは明らかである。他の点では、この発明を不必要に不明瞭にしないよう、周知の構造および装置はブロック図の形で示される。
この発明の実施例が、メモリに十分に明示された場合にはデータベースサーバ上で利用可能なメモリの量を超えるXML文書のすべてまたは一部を用いるという状況で、ここに説明される。しかしながら、この発明はこの状況に限定されない。この発明の他の実施例は、サーバがデータベースサーバではないものの、XML文書に基づいて他のサービスを提供している他の状況に適用されてもよい。さらに他の実施例では、XML文書は、サーバではないスタンドアローンのアプリケーション、つまり別個のクライアントプロセスからの要求に応じないアプリケーションへの入力として使用されてもよい。実施例によっては、アクセスされる文書はXML文書ではなく、別のマークアップ言語に従った多数の構成体でできた文書である。実施例によっては、限定されているのはメモリではなく、何か他のリソース、たとえば、文書を処理するアプリケーションのホストコンピュータに接続された入力または出力装置上のバッファ、もしくは文書が送信されるネットワーク接続上の帯域幅である。
例示されている実施例では、XML文書の別個にアクセス可能な部分(たとえばパンナラの「ロード可能ユニット」LU)がメモリにロードされ、それらの部分の使用が監視される。追加のメモリが望まれる場合、それらの部分の1つ以上に割当てられたメモリが、使用に基づいて解放される。たとえば、最も以前に使用された部分に割当てられたメモリが解放される。割当てられたメモリを失う部分は、メモリから「アンロードされる」と言われる。実施例によっては、アンロードされる部分がダーティである場合(たとえば、データベースの1つ以上のコンテナに、ロード可能ユニットといった別個の部分として永続的に記憶されてはいないデータを含む場合)、その部分は、メモリが文書の別の部分に再割当される前に永続的に記憶される。各ロード可能ユニットは永続的ストレージから独自にアクセス可能であるため、ロード可能ユニットはその後、それが再び使用される場合、永続的ストレージから検索され得る。実施例によっては、この部分は、データベースのオブジェクトリレーショナルデータベース構造に直接、永続的に記憶される。実施例によっては、この部分は、永続的記憶装置の一時ファイルに永続的に記憶される。
この発明の手法により、限定されたリソースを有する文書処理装置はスケールアップして、さもなければ利用可能なリソースを上回ってしまう大きな文書を処理するようになる。これは、利用可能なメモリでは十分明示できない大きなXML文書を、多数のロード可能ユニットとしてデータベースまたは他の永続的記憶装置に最初に挿入する際、利点である。これはまた、動作がメモリに一度に明示可能なものを上回る部分を伴う場合、または動作がロード可能ユニットの内容を修正する場合に、大きなXML文書の異なる部分が永続的なデータ記憶装置に別個に挿入された後でも、利点である。そのような動作の一例は、提示用の文書全体をグラフィカルデータベース上でXMLスタイルシートを用いてフォーマット化する動作、および、大きなXML文書の任意の要素を編集する動作である。
構造的概要
図1は、一実施例に従った、利用可能なメモリを上回るXML文書を処理するXML処理システム100においてサーバによって使用されるデータ構造を示すブロック図である。このシステム100はデータベースサーバ120を含み、それは、XML文書を処理するために割当てられたサーバ高速メモリ150を含む。ここで使用されるように、高速メモリという用語は、データおよび命令をプロセッサ外部に記憶させるためにプロセッサが最も容易に利用できるメモリを指す。現在の技術では、この目的のために使用されるメモリは迅速な応答時間を有するが、このメモリへの電力が失われると、データはそのようなメモリにおいて持続されない。高速メモリは他の種類のメモリよりも価格が高い傾向にあり、そのため、それは往々にして他の種類のメモリよりも少ない。サーバ120は、サーバ永続的ストレージ130を提供する1つ以上の永続的記憶装置も含む。現在の技術では、そのような永続的ストレージは、電力が失われてもデータを保持するが、そのようなストレージは遅く、プロセッサ用の最も容易に利用可能なメモリとしての使用には望ましくない。永続的ストレージは、一時的ストレージ132用に確保された記憶領域と、データベース記憶空間140用に使用される記憶領域とを含む。
データベース記憶空間140は、以下にオブジェクトリレーショナル構造144として総称される、1つ以上のオブジェクトリレーショナル構造144a、144b、および省略記号146によって示される他のオブジェクトリレーショナル構造のためのストレージを含む。オブジェクトリレーショナル構造144は、データオブジェクトを、1つ以上のリレーショナルデータベースデータ構造、たとえば表、行、列、および記憶された手順に記憶させる。
システム100はXML文書型データ構造102を処理し、それは、その型のインスタンスであるXML文書によって使用され得る各要素型の属性を定義する。データ構造は、後の項でより詳細に記載される、サーバ120によって読み取り可能な任意のコンピュータ読み取り可能な媒体、たとえば取外し可能な磁気ディスクまたは光ディスク上に、または通信チャネルにわたって存在していてもよい。データベース記憶空間140は、1つ以上のオブジェクトリレーショナル構造144でのデータオブジェクトとXML文書に使用される要素属性または要素との間のマッピング142を含む。システム100は、当該技術分野において公知の任意のメカニズムを用いて、XML文書型データ構造142の内容に基づいてマッピング142の内容を生成する。実施例によっては、オブジェクトリレーショナル構造は、XML文書型データ構造102の内容に基づいて、実際に定義され、作成される。一実施例では、パンナラに記載されたメカニズムを採用して、XML文書型データ構造の要素および属性をオブジェクトリレーショナルデータ構造144のデータオブジェクトにマッピングする。
XML文書110は、データ構造102で定義された型のインスタンスである。XML文書110は、1つ以上の属性を各々含み得る1つ以上の要素を含んでおり、その各々は、文書型データ構造102で定義されるように、別の要素であってもよい。XML文書110はこのため、ノードのある特定の階層を設立し、この場合、各子ノードはその親ノードの属性を表わし、各属性はその型にとって適切な値を有する。
例示のため、XML文書110が、要素112aによって表わされる1つの属性と要素112bによって表わされる別の属性とを含む、いくつかの属性を有すると仮定される。さらに、要素112aが、要素114a、114b、115、および省略記号113により表わされる他の要素によって表わされる属性を含む、いくつかの属性を有すると仮定される。さらに、要素114a、114bは図示されていない他の要素を含む他の属性を含み得ると仮定される。また、要素115が、XML型データ構造102によりさらに分割されたり定義されたりしないデータのブロックであり、それが「不透明」要素と呼ばれ、かなり大きい場合がある、ということを仮定される。たとえば、不透明要素115は、発
注契約書の条項の長い記載用のテキストを含むかもしれず、または、遺伝子コードシーケンスを表わす文字列を含むかもしれない。さらに、要素112bが、要素116、117、および省略記号118により表わされる他の要素によって表わされる属性を含む、いくつかの属性を有すると仮定される。
サーバは、以下にロード可能ユニット(LU)データ構造152として総称される、152a、152b、および省略記号153により表わされる他のLUデータ構造といった、1つ以上のLUデータ構造を設立する。処理中、XML文書110の1つ以上のノード用のデータは、永続的ストレージ130への記憶のために、メモリ150においてLUに変換される。LUの中には、属性の値がLUに含まれるものもある。LUの中には、子要素などの属性についての値がLUに含まれないものもある。その代わり、他の属性はそれ自体、異なるLUである。ロケータは、永続的ストレージ130での異なるLUについての場所を示す。異なるLU用のロケータは、親LUに含まれている。このため、LUは、XMLツリーの残りを、親LUのノードを越えるノードにロードするのに十分な情報を含んでいる。親LUのロケータによって示されるLUは時折、「アウトオブライン」LUと呼ばれる。なぜなら、それはしばしば、親LUを記憶するデータ構造とは異なる1つ以上のデータ構造に記憶されるためである。
サーバ120はまた、LUデータ構造152におけるデータの使用を記録するための使用データ構造156も設立する。たとえば、使用データ構造156は、サーバ120上でのプロセスがメモリ150のある特定のLUデータ構造152内のデータについて終わっているかどうかを示す第1のデータ項目を含んでいる。実施例の中には、使用データ構造が、特定のLUデータ構造152内のデータが最後に使用された相対時間を示す第2のデータ項目を含むものもある。
サーバ120はまた、ロケータデータ構造158も設立する。ロケータデータ構造158は、ある特定のLUが永続的ストレージ130のどこに記憶されているかを示すロケータを保持し、そのロケータをLU名などのLU識別子と関連付ける。たとえば、ロケータは、一時的ストレージ132内のラージオブジェクト(LOB)に書込まれたデータについてのファイル名およびオフセットを示す。別の例では、ロケータは、データベース記憶空間140の1つ以上のオブジェクトリレーショナル構造144における、行などのデータ項目を示す。オブジェクトリレーショナル構造144は、とりわけ、データベースLOB構造を含んでいてもよい。
機能的概要
図2は、一実施例に従った、利用可能なメモリを上回るXML文書を処理するための高レベルの方法200を示すフローチャートである。図2ではステップがある特定の順序で示されているが、他の実施例では、ステップは異なる順序で行なわれてもよく、または時間が重複していてもよい。
ステップ202で、ある文書についてのロード可能ユニットが、XML文書型データ構造102における要素型定義に基づいて判断される。XMLについての基準は、XML文書の構造を特定するためのスキーマ言語を定義し、その言語はデータ構造102において使用されてもよい。XML文書型データ構造102で定義された構造はここで、XMLスキーマと呼ばれる。データベースサーバ120は、XML文書型データ構造102を解釈して、XMLスキーマをサポートするために必要なオブジェクトリレーショナル構造144を作成または修正する能力を有する。たとえば、XMLスキーマ構成体<complexType>は、データベースのあるオブジェクト型にマッピングされる。XMLスキーマにおける追加のユーザ注釈が、特定の記憶パラメータを特定するために使用され、このため、XML文書の一部が追加の表、ラージオブジェクト(LOB)および他のデータベースコンテ
ナに記憶されるようにする。他の実施例では、異なるサーバが、XML文書型データ構造102を解釈して、XMLスキーマをサポートするために必要な他のデータコンテナを作成または修正する能力を有する。
ステップ210で、ロード可能ユニット(LU)が、XML文書の処理に割当てられた高速メモリ150にロードされ、LUデータ構造152内に記憶される。LUは、データベース記憶空間140のデータベースから、または一時的ストレージ132から、もしくは何らかの他のコンピュータ読み取り可能な媒体上のXML文書110から検索されてもよい。1つ以上の属性用のロケータを使用するLUが一時的ストレージ132またはXML文書110からロードされる際、そのロケータについての値がまだ、データベースにおけるその属性の場所について設定されていない場合がある。そのような場合、LUに対応する第1の要素の名前といった、ロケータについての一時的な値が使用される。
たとえば、例示のため、要素112aが1つのロード可能ユニットに対応し、要素114a、114b、および115が各々異なるロード可能ユニットであると仮定される。このため、要素112a用のLUは、要素114a、114bおよび115に対応する属性についての実際の値の代わりに、ロケータを使用する。要素112aがサーバ120によって新しいXML文書110から読出されると、この要素を保持するためにLUデータ構造152(たとえば152b)がメモリ150に生成されるが、要素114a、114b、115はまだ永続的ストレージ130に読込まれたり記憶されていないため、これらのLUを保持するLUデータ構造については、ロケータはまだ定義されていない。これらの要素が読出されると、LUデータ構造が作成される。
ステップ220で、メモリデータ構造152に記憶されたLUについて使用が判断され、その使用は使用データ構造156に記憶される。一実施例では、使用データ構造156は、メモリ150内の各LUデータ構造について、LUメモリアドレスフィールド(以下“MEM_ADDR”と示す)、カウントフィールド(以下“COUNT”と示す)、および時間フィールド(以下“TIME”と示す)を含む。実施例の中には、使用データ構造156がLUデータ構造152から分かれており、各LUデータ構造152について、別個の記録が使用データ構造156に含まれるものもある。LUデータ構造152がメモリ150内に作成されると、行がこれらのフィールドにおける値とともに使用データ構造158に追加される。MEM_ADDRフィールドについての値は、メモリ150のどこからLUデータ構造152が始まるかを示している。COUNTフィールドについての値は「1」に設定されて、1つのプロセス(この場合、データ構造を作成中のプロセス)がLUデータ構造を使用中であることを示している。TIMEフィールドについての値は現在のシステム時間に設定されて、LUデータ構造が最後にいつ使用されたかを示している。
他の実施例では、使用データ構造156において、より多い、またはより少ないフィールドが使用される。たとえば、実施例によっては、各LUデータ構造152についてサイズフィールド(以下“SIZE”と示す)が含まれて、LUデータ構造152のサイズを示す。実施例によっては、各LUデータ構造152についてダーティフラグフィールド(以下“DIRTY”フィールドと示す)が含まれて、LUの内容がダーティかどうか、つまり永続的ストレージ130上のそのLUの内容ともしかすると異なるかどうかを示す。DIRTYフィールドは、2つの値のうちの1つを保持する。一方の値は、対応するLUがダーティであることを示し、他方の値は、対応するLUがダーティではないことを示している。
実施例によっては、使用データ構造156はLUデータ構造152の一部である。そのような実施例では、MEM_ADDRフィールドは省略されてもよく、LUデータ構造1
52がメモリ150内に作成されると、上述のように、値は使用データ構造156の他のフィールドに記憶される。
LUデータ構造152を使用するサーバ120のプロセスが始まる際にはいつでも、そのLUに対応するCOUNTフィールドの値は1ずつインクリメントされ、そのLUに対応するTIMEフィールドの値は更新される。LUデータ構造を使用するプロセスの開始を以下に、そのLUデータ構造の「タッチ」と呼ぶ。LUデータ構造152を使用するサーバ120のプロセスが終了する際にはいつでも、そのLUに対応するCOUNTフィールドの値は1ずつデクリメントされ、そのLUに対応するTIMEフィールドの値は更新される。たとえば、XML文書110からデータを単にロードするプロセスは、LUデータ構造152が作成される場合には対応するCOUNTの値を1にし、LUがデータ構造152に十分にロードされた場合にはCOUNTの値をゼロにデクリメントする。属性に対応するLUがロードされるやいなや、親LUは十分にロードされたと考えられる。
例示された実施例では、使用データ構造156は、アンロード可能ユニットのリストを含む。COUNTフィールドの値がゼロに達すると、対応するLUデータ構造がリストに追加される。LUをリスト上に示すために、任意の方法が使用されてもよい。一例では、リストのLUは、そのメモリアドレスによって示される。他の例では、ゼロ以外のCOUNTフィールドの値を用いて、LUデータ構造に、アンロード可能ユニットのリストに含まれるよう資格を与えてもよい。このリストを使用する実施例は、使用データ構造156にTIMEフィールドを維持する必要はない。なぜなら、LUデータ構造がアンロード可能ユニットのリストに、アンロード可能になった最初から最後までの時間順で追加されるためである。
ステップ230で、1つ以上のLUデータ構造152に割当てられたメモリを解放するための条件が満たされているかどうかが判断される。例示された実施例では、メモリを解放するための条件は、LUデータ構造152によるメモリ150の全使用がしきい値を上回ることである。しきい値は通常、割当てられた全メモリよりも少なくなるよう選択される。たとえば、メモリを解放するための条件は、メモリ150の75%以上がLUデータ構造152によって消費されることであってもよい。消費される全メモリは、使用データ構造156のSIZEフィールドの値をすべて加算することによって計算されてもよい。ステップ230でメモリを解放するための条件が満たされていないと判断された場合、制御はステップ210に戻り、次のLUを高速メモリにロードする。ステップ230でメモリを解放するための条件が満たされていると判断された場合、制御はステップ240に渡る。
ステップ240で、LUデータ構造の1つ以上が、使用に基づいて、アンロードされるよう選択される。たとえば、最も以前に使用されたLUデータ構造が、アンロードされるよう選択される。最も以前に使用されたLUデータ構造は、TIMEフィールドの最初の値に対応するLUデータ構造152を見つけることによって判断することができる。
実施例によっては、プロセスにより依然として使用中のLUをアンロードしないよう、ゼロのCOUNT値を有するLUデータ構造のみがアンロード用に考慮される。いくつかのそのような実施例では、上述されたアンロード可能なユニットのリストからのみ、最も以前に使用されたLUが判断される。最も以前に使用されたLUデータ構造は、アンロード可能ユニットのリストに示された最初のLUデータ構造である。
ステップ250で、選択されたLUデータ構造に割当てられたメモリが解放される。実施例によっては、ステップ250はステップ252、254、256を含む。
ステップ252で、選択されたLUデータ構造152の内容が永続的ストレージに別個に記憶されているかどうかが判断される。各LUデータ構造152に関連するDIRTYフィールドを用いた実施例では、ステップ252は、LUデータ構造152がダーティではないことをDIRTYフィールドが示すかどうかを判断することによって行なわれてもよい。選択されたLUデータ構造152がダーティではないと判断された場合、制御は、永続的ストレージに内容を書込むことなく、以下に記載するステップ256に渡る。
ステップ252で選択されたLUデータ構造がダーティであると判断された場合、制御はステップ254に渡る。ステップ254で、LUデータ構造152のLU内容は、永続的ストレージ130のLUデータ構造に書込まれる。実施例によっては、LUは一時的ストレージ132のデータ構造に書込まれる。実施例によっては、LUはデータベース記憶空間140のオブジェクトリレーショナル構造144に書込まれる。いずれの、または他の実施例でも、永続的ストレージ130におけるLUについての場所を示すロケータが返され、そのため、LUは後でメモリ150に再ロードされ得る。例示された実施例では、返されたロケータはロケータデータ構造158に記憶され、そこでロケータは、LU名または第1の対応するXML要素の名前といったLU識別子に関連付けられる。
ステップ256で、高速メモリ152の選択されたLUデータ構造152に割当てられたメモリは割当解除され、異なるLUデータ構造への割当用に利用可能となる。実施例によっては、このステップは、使用データ構造156から、選択されたLUデータ構造に対応する使用情報を削除するステップを含む。制御は次にステップ230に戻って、メモリを解放するための条件が依然として満たされているかどうかを判断する。
これらの手法により、限定されたリソース、たとえば限定された量の高速メモリを有する装置は、任意に大きいサイズの文書を処理するようスケールアップするようになる。この能力は、利用可能なメモリでは十分に明示できない大きなXML文書を、多数のロード可能ユニットとしてデータベースまたは他の永続的記憶装置に最初に挿入する際、利点である。この能力はまた、動作がメモリに一度に明示可能なものを上回る部分を伴う場合、たとえばXMLスタイルシート(XSL)文書に特定されたスタイルにあてはまるよう、XML文書全体を処理する際に、大きなXML文書の異なる部分が永続的データ記憶装置に別個に挿入された後でも、利点である。これらの2つの場合についての例示された実施例の使用を、次の2つの項に記載する。
XML文書のデータベースへの挿入
この場合を例示するために、データベースのオブジェクトリレーショナル構造144がステップ202中に、XML文書型データ構造102に提示されたXMLスキーマに基づいて既に作成または修正されていると仮定される。さらに、XML文書110が何らかの外部源から、たとえば通信チャネルを通して、または取外し可能な光ディスクから受取られて、データベースに挿入されると仮定される。さらに、サーバ高速メモリ150が文書110を処理するために割当てられていると仮定される。さらに、使用データ構造156のCOUNTフィールド、SIZEフィールド、およびDIRTYフィールドが各LUデータ構造に含まれ、使用データ構造156が、LUデータ構造152の外部に、COUNT値がゼロであるLUデータ構造を示すアンロード可能ユニットのリストを含むことを仮定される。LUデータ構造は、LUデータ構造152の最初のバイトのメモリアドレスによって、リストにおいて識別される。さらに、この文書に割当てられた高速メモリ150の量は2ミリオンバイト(2MB)であり、ロード可能ユニットをアンロードするためのしきい値は1.5MBであると仮定される。
ステップ210の最中、サーバ120は、以下“LU−A”と呼ばれる第1のLUデータ構造152aを作成し、XML階層における最高ノード、文書110についての文書レ
ベルノードを記憶する。COUNTフィールドは値1で初期化される。DIRTYフィールドは値1で開始され、それは、例示のため、ダーティなLUデータ構造を示すと仮定される。LUデータ構造LU−A 152aはダーティである。なぜなら、内容がまだLUとして永続的に記憶されていなかったためである。SIZEフィールドは、文書レベルLUの最小サイズで開始され、それは、文書110についてそのスキーマに基づいて予想される要素の最小数までの要素112a、112bなどについてのロケータおよび属性の値に対して、十分な余地を含んでいる。例示のため、LU−AのSIZEは0.01MBであると仮定される。サーバ120は、XML文書110の最初の数ラインを処理し、文書の属性の値をLU−A、152aにロードする。サーバは次に、要素112a、112bに関連するアウトオブラインLUについてのロケータが判断される前に、要素112aを開始するXML文書のラインに来る。このため、ロードするプロセスはLU−Aでは終わらず、COUNTは1の値に設定されたままである。
ステップ220の最中、LUデータ構造152によって使用される全メモリがLU−AのSIZEであることが判断される。使用データ構造156におけるアンロード可能ユニットのリストは空である。ステップ230で、この量のメモリ(0.01MB)がしきい値1.5MBを上回っていないことが判断され、制御はステップ210に戻って次のLUのロードを開始する。
ステップ210のこの繰返しの最中、サーバ120は、以下“LU−B”と呼ばれる第2のロード可能ユニットデータ構造152bを作成して、要素112aに関連するノードを記憶する。COUNTフィールドおよびDIRTYフィールドは各々、値1で初期化される。SIZEフィールドは、要素112についてのLUの最小サイズで開始され、要素112aについてそのスキーマに基づいて予想される要素の最小数までの要素114a、114b、115についてのロケータおよび属性の値に対して、十分な余地を含んでいる。例示のため、LU−BのSIZEは0.1MBであると仮定される。サーバ120は、要素112aの最初の数ラインを処理し、要素の属性の値をLU−B、152bにロードする。サーバは次に、要素114a、114b、115に関連するアウトオブラインLUについてのロケータが判断される前に、要素114aを開始するXML文書のラインに来る。このため、ロードするプロセスはLU−Bでは終わらず、COUNTは1の値に設定されたままである。
ステップ220の次の繰返しの最中、LUデータ構造152によって使用される全メモリがLU−AおよびLU−BのSIZEであることが判断される。使用データ構造156におけるアンロード可能ユニットのリストは空である。ステップ230の次の繰返しの際、この量のメモリ(0.11MB)がしきい値1.5MBを上回っていないことが判断され、制御はステップ210に戻って次のLUのロードを開始する。
プロセスは、要素114a、114b、115を含む112aの子要素に関連する次のLUに続く。例示のため、要素114a、114bおよび115は子要素を含まないこと、および、これら3つの要素のSIZEフィールドについての値はそれぞれ0.2MB、0.2MB、1.1MBであることが仮定される。さらに、要素114b、115の存在に基づいて、追加のロケータがLU−Bに追加され、LU−BのSIZEフィールドの値がそれにより0.11に増加することが仮定される。各々がメモリ150のLUデータ構造LU−C、LU−D、LU−E(図示せず)にそれぞれ完全にロードされるやいなや、COUNTフィールドの値はゼロにデクリメントされ、3つのLUデータ構造のアドレスが、使用データ構造156のアンロード可能ユニットのリストに追加される。
ステップ220の次の繰返しの最中、LUデータ構造152によって使用される全メモリが、LU−A、LU−B、LU−C、LU−DおよびLU−EのSIZEフィールドに
おける値の合計であることが判断される。使用データ構造156のアンロード可能ユニットのリストは、LU−C、LU−DおよびLU−Eのメモリアドレスを含む。ステップ230の次の繰返しでは、この量のメモリ(1.62MB)がしきい値1.5MBを上回らないことが判断され、制御はステップ240に戻って、メモリ150からアンロードするLUデータ構造152を選択する。
ステップ240で、アンロード可能ユニットのリストにおいて最も以前に使用されたLUデータ構造が選択される。リストにおける第1のLUデータ構造である、要素114aに対応するLU−Cが、最も以前に使用されている。したがって、LU−Cが、アンロードされるLUデータ構造として選択される。他の実施例では、他の選択基準が使用されてもよい。たとえば、SIZEの最大値(1.1MB)を有するLUデータ構造LU−Eが選択されてもよい。適正な選択は、システムが使用される態様に基づいて判断される。最も直前に使用されたLUは再び使用される可能性が最も高く、最も以前に使用されたものは再び使用される可能性が最も低い、ということが予想される。したがって、再びロードされる可能性がより高いLUをアンロードしないよう、最も可能性が低いものが選択される。
ステップ252で、LU−Cがダーティかどうかが判断される。LU−CがダーティであるとDIRTYフィールドの値が示しているため、制御はステップ254に渡る。ステップ254で、LU−Cはデータベースのオブジェクトリレーショナル構造144に書込まれ、ここに“L−C”として示されるLU−C用のロケータが、プロセスにおいて返される。サーバ120は、要素114aのために形成されたLUへの識別子に関連して、値“L−C”をロケータデータ構造158に書込む。属性としての要素114aへの未解決の参照を有する、メモリ内のLUデータ構造152はすべて、このロケータ“L−C”を用いることによって、それらの参照を解決させる。その最後の未解決のロケータを受取るLUデータ構造はどれも、そのCOUNTフィールドをデクリメントさせる。LUデータ構造が、ゼロに達するCOUNT値に関連する場合、LUデータ構造はアンロード可能ユニットのリストに追加される。ステップ256で、LU−Cに割当てられたメモリは解放され、そのためそれは別のLUデータ構造に割当てられ得る。また、ステップ256で、使用データ構造156におけるLU−Cについての使用情報が削除される。
制御は次にステップ230に戻って、メモリ使用が依然としてしきい値を上回るかどうかを判断する。LUデータ構造152によって使用される全メモリは、LU−A、LU−B、LU−DおよびLU−E(LU−Cはなし)のSIZEフィールドにおける値の合計である。使用データ構造156のアンロード可能ユニットのリストは、LU−D、LU−E(LU−Cはなし)のメモリアドレスを含む。この量のメモリ(1.42MB)がしきい値1.5MBを上回らないことが判断され、制御はステップ210に戻って、次のロード可能ユニットをメモリ150にロードする。
こうして、任意のサイズのXML文書が、文書に割当てられた限定量の高速メモリを有するサーバを用いてデータベースに挿入され得る。
実施例によっては、XML文書は、短期間のみ使用されるもののデータベースに永続的には記憶されない非常駐文書である。そのような実施例では、ステップは同様であるが、ステップ254での永続的ストレージへの書込中、LUが一時的ストレージのデータ構造に書込まれる点が異なる。このグループの一実施例では、一時的記憶データ構造は、LUが開始する多数のオフセットバイトを有するLOBファイルであり、マッピング142は依然としてデータベース内に記憶される。
データベースからのXML文書の処理
この場合を例示するために、前の場合に用いた仮定を再度行なうが、XML文書110を外部源から得る代わりに、それが既にデータベース内に存在するという点が異なる。このため、アウトオブラインの子LUを使用するLUはすべて、その子LU用の定義されたロケータを有する。さらに、XML文書全体は、XSL文書に従ってスタイリングされた提示を形成するよう動作され、スタイリングされた結果は表示装置に送信されることが仮定される。
ステップ210の最中、サーバ120は、“LU−A”と呼ばれる第1のロード可能ユニットデータ構造152aを作成して、XML階層における最高ノード、文書110についての文書レベルノードを記憶する。COUNTフィールドは値1で初期化される。DIRTYフィールドは値0で開始され、ダーティではないLUデータ構造を示す。内容がデータベースの永続的ストレージから検索されて変更されていないため、LUデータ構造はダーティではない。SIZEフィールドは、文書レベルLUについての実際のサイズで開始される。サーバ120は、XSL文書に従ってXML文書110の最初のいくつかの属性を処理し、宛先である表示装置に結果を送信する。サーバは次に、文書全体がスタイリングされる前に、要素112aのスタイリングを開始しなければならない。このため、スタイリングプロセスはLU−Aでは終わらず、COUNTは1の値に設定されたままである。
上述のように、ステップ220の最中、LUデータ構造152によって使用される全メモリがLU−AのSIZEであることが判断される。使用データ構造156におけるアンロード可能ユニットのリストは空である。ステップ230で、この量のメモリ(0.01MB)がしきい値1.5MBを上回っていないことが判断され、制御はステップ210に戻って次のLUのロードを開始する。
ステップ210のこの繰返しの最中、サーバ120は、“LU−B”と呼ばれる第2のロード可能ユニットデータ構造152bを作成して、要素112aに関連するノードを記憶する。COUNTフィールドおよびDIRTYフィールドはそれぞれ、値1、0で初期化される。SIZEフィールドは、要素112用のLUについての実際のサイズで開始される。例示のため、LU−BのSIZEは0.11MBであると仮定される。サーバ120は、要素112aの最初のいくつかの属性をスタイリングし、宛先表示装置に結果を送信する。サーバは、要素112aのスタイリングを終了する前に、要素114aに対応する属性をスタイリングするようになる。このため、スタイリングプロセスはLU−Bでは終わらず、COUNTは1の値に設定されたままである。
ステップ220の次の繰返しの最中、LUデータ構造152によって使用される全メモリがLU−AおよびLU−BのSIZEであることが判断される。使用データ構造156におけるアンロード可能ユニットのリストは空である。ステップ230の次の繰返しの際、この量のメモリ(0.12MB)がしきい値1.5MBを上回っていないことが判断され、制御はステップ210に戻って次のLUのロードを開始する。
プロセスは、要素114a、114b、115を含む112aの子要素に関連する次のLUに続く。上述のように、例示のため、要素114a、114bおよび115は子要素を含まないこと、および、これら3つの要素のSIZEフィールドについての値はそれぞれ0.2MB、0.2MB、1.1MBであることが仮定される。各々がメモリ150のLUデータ構造LU−C、LU−D、LU−E(図示せず)にそれぞれ完全にロードされるやいなや、COUNTは1にインクリメントされ、スタイリングが始まると、COUNTは再度インクリメントされて2になる。スタイリングが終了すると、COUNTはデクリメントされて1となり、結果が宛先表示装置に送信されると、COUNTフィールドは再度デクリメントされてゼロになる。3つのLUデータ構造の各々についてCOUNTが
ゼロにデクリメントされると、各々のアドレスが使用データ構造156のアンロード可能ユニットのリストに追加される。
ステップ220の次の繰返しの最中、LUデータ構造152によって使用される全メモリが、LU−A、LU−B、LU−C、LU−DおよびLU−EのSIZEフィールドにおける値の合計であることが判断される。使用データ構造156のアンロード可能ユニットのリストは、LU−C、LU−DおよびLU−Eのメモリアドレスを含む。ステップ230の次の繰返しでは、この量のメモリ(1.62MB)がしきい値1.5MBを上回らないことが判断され、制御はステップ240に戻って、メモリ150からアンロードするLUデータ構造152を選択する。
ステップ240で、アンロード可能ユニットのリストにおいて最も以前に使用されたLUデータ構造が選択される。リストにおける第1のLUデータ構造である、要素114aに対応するLU−Cが、最も以前に使用されている。したがって、LU−Cが、アンロードされるLUデータ構造として選択される。
ステップ252で、LU−Cがダーティかどうかが判断される。LU−CがダーティではないとDIRTYフィールドの値が示しているため、制御はステップ256に渡る。ステップ256で、LU−Cに割当てられたメモリは、別のLUデータ構造に割当てられるよう解放され、使用データ構造156におけるLU−Cについての使用情報が削除される。
制御は次にステップ230に戻って、メモリ使用が依然としてしきい値を上回るかどうかを判断する。LUデータ構造152によって使用される全メモリが、LU−A、LU−B、LU−DおよびLU−E(LU−Cはなし)のSIZEフィールドにおける値の合計であることが判断される。使用データ構造156のアンロード可能ユニットのリストは、LU−D、LU−E(LU−Cはなし)のメモリアドレスを含む。ステップ230の次の繰返しの際、この量のメモリ(1.42MB)がしきい値1.5MBを上回らないことが判断され、制御はステップ210に戻って、次のロード可能ユニットをメモリ150にロードする。
こうして、任意のサイズのXML文書が、文書に割当てられた限定量の高速メモリを有するサーバを用いて、データベースから処理され得る。
ハードウェア概要
図3は、この発明の一実施例が実現され得るコンピュータシステム300のブロック図を示す。コンピュータシステム300は、情報を通信するためのバス302または他の通信メカニズムと、情報を処理するためにバス302と結合されたプロセッサ304とを含む。コンピュータシステム300はまた、プロセッサ304により実行されるべき命令および情報を記憶するためにバス302に結合された、ランダムアクセスメモリ(RAM)または他のダイナミック記憶装置といったメインメモリ306も含む。メインメモリ306は、プロセッサ304により実行されるべき命令の実行中に一時的な変数または他の中間情報を記憶するためにも使用されてもよい。コンピュータシステム300はさらに、プロセッサ304用の命令およびスタティック情報を記憶するためにバス302に結合された読出専用メモリ(ROM)308または他のスタティック記憶装置を含む。磁気ディスクまたは光ディスクといった記憶装置310が、情報および命令を記憶するために提供され、バス302に結合されている。
コンピュータシステム300は、情報をコンピュータユーザに表示するためのブラウン管(CRT)などのディスプレイ312に、バス302を介して結合されていてもよい。
英数字キーおよび他のキーを含む入力装置314が、情報およびコマンド選択をプロセッサ304に通信するためにバス302に結合されている。ユーザ入力装置の別の種類は、方向情報およびコマンド選択をプロセッサ304に通信し、ディスプレイ312上のカーソルの動きを制御するための、マウス、トラックボール、またはカーソル方向キーといったカーソル制御316である。この入力装置は通常、2つの軸、つまり第1の軸(たとえばx)および第2の軸(たとえばy)において2つの自由度を有しており、それによりこの装置は平面における場所を特定することができる。
この発明は、ここに説明された手法を実現するためのコンピュータシステム300の使用に関する。この発明の一実施例によれば、それらの手法は、プロセッサ304がメインメモリ306に含まれる1つ以上の命令の1つ以上のシーケンスを実行するのに応じて、コンピュータシステム300によって実行される。そのような命令は、記憶装置310などの別のコンピュータ読み取り可能な媒体からメインメモリ306に読込まれてもよい。メインメモリ306に含まれる命令のシーケンスの実行により、プロセッサ304は、ここに説明されたプロセスステップを実行するようになる。代替的な実施例では、この発明を実現するために、ソフトウェア命令の代わりに、またはソフトウェア命令と組合わせて、配線接続回路が使用されてもよい。このため、この発明の実施例は、配線接続回路とソフトウェアとのどの特定の組合せにも限定されない。
ここで用いられるような用語「コンピュータ読み取り可能な媒体」とは、プロセッサ304に命令を実行用に提供することに関与するあらゆる媒体を指す。そのような媒体は、不揮発性媒体、揮発性媒体、および通信媒体を含むもののそれらに限定されない多くの形態を取り得る。不揮発性媒体はたとえば、記憶装置310などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ306などのダイナミックメモリを含む。通信媒体は、バス302を構成する配線を含む、同軸ケーブル、銅線および光ファイバを含む。通信媒体はまた、無線周波数および赤外線データ通信中に発生するものといった音波または光波の形も取り得る。
コンピュータ読み取り可能な媒体の一般的な形態は、たとえば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、または任意の他の磁気媒体、CD−ROM、任意の他の光媒体、パンチカード、紙テープ、孔のパターンを有する任意の他の物理的媒体、RAM、PROM、EPROM、FLASH−EPROM、任意の他のメモリチップまたはカートリッジ、以下に説明するような搬送波、または、コンピュータがそこから読み取り可能な任意の他の媒体を含む。
コンピュータ読み取り可能な媒体のさまざまな形態は、プロセッサ304への1つ以上の命令の1つ以上のシーケンスを実行用に保持することに関与していてもよい。たとえば、命令はまず、遠隔コンピュータの磁気ディスク上に保持されてもよい。遠隔コンピュータは命令をそのダイナミックメモリにロードし、電話回線を通してモデムを用いて命令を送信することができる。コンピュータシステム300にとってローカルなモデムは、電話回線上のデータを受信し、赤外線送信機を用いてデータを赤外線信号に変換することができる。赤外線検出器は赤外線信号で搬送されたデータを受信でき、適切な回路がデータをバス302上に配置することができる。バス302はデータをメインメモリ306に搬送し、そこからプロセッサ304が命令を検索して実行する。メインメモリ306によって受信された命令は、プロセッサ304による実行の前または後のいずれかで、記憶装置310上に随意に記憶されてもよい。
コンピュータシステム300はまた、バス302に結合された通信インターフェイス318も含む。通信インターフェイス318は、ローカルネットワーク322に接続されたネットワークリンク320に双方向データ通信結合を提供する。たとえば、通信インター
フェイス318は、データ通信接続を対応する種類の電話回線に提供するデジタル相互サービス網(ISDN)カード、またはモデムであってもよい。別の例として、通信インターフェイス318は、データ通信接続を互換性があるLANに提供するローカルエリアネットワーク(LAN)カードであってもよい。無線リンクも実現され得る。任意のそのような実現化例では、通信インターフェイス318は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号、または光信号を送信および受信する。
ネットワークリンク320は通常、1つ以上のネットワークを介して、他のデータ装置にデータ通信を提供する。たとえば、ネットワークリンク320は、ローカルネットワーク322を介して、ホストコンピュータ324に、またはインターネットサービスプロバイダ(ISP)326により運営されるデータ装置に、接続を提供してもよい。ISP326は次に、現在一般に「インターネット」328と呼ばれている全世界的パケットデータ通信ネットワークを介して、データ通信サービスを提供する。ローカルネットワーク322およびインターネット328は双方とも、デジタルデータストリームを搬送する電気信号、電磁信号または光信号を使用する。コンピュータシステム300へ、またはコンピュータシステム300からデジタルデータを搬送する、さまざまなネットワークを通る信号、ネットワークリンク320上の信号、および通信インターフェイス318を通る信号は、情報を運ぶ搬送波の例示的な形態である。
コンピュータシステム300は、ネットワーク、ネットワークリンク320および通信インターフェイス318を介して、メッセージを送信し、プログラムコードを含むデータを受信する。インターネットの例では、サーバ330は、アプリケーションプログラム用の要求されたコードを、インターネット328、ISP326、ローカルネットワーク322、および通信インターフェイス318を介して送信してもよい。
受信されたコードは、受信された際にプロセッサ304によって実行されてもよく、および/または、後での実行用に記憶装置310または他の不揮発性ストレージに記憶されてもよい。このように、コンピュータシステム300は、搬送波の形をしたアプリケーションコードを取得し得る。
前述の明細書において、この発明を、その特定の実現化例を参照して説明してきた。しかしながら、この発明のより幅広い精神および範囲を逸脱することなく、様々な修正および変更がそれになされてもよいことは、明らかである。したがって、明細書および図面は、限定的な意味というよりもむしろ例示的な意味で考慮されるべきである。
一実施例に従った、利用可能なメモリを上回るXML文書を処理するためにサーバによって使用される構造を示すブロック図である。 一実施例に従った、利用可能なメモリを上回るXML文書を処理するための高レベルの方法を示すフローチャートである。 この発明の実施例が実現され得るコンピュータシステムを示すブロック図である。

Claims (19)

  1. コンピュータ読み取り可能な媒体上の、マークアップ言語に従って構成された内容を有する文書に存在するデータに、限定されたリソース量の装置リソースを有する装置を用いてアクセスするための方法であって、
    文書の複数の部分のうち、文書の各部分について、その部分がどのくらいアクセスされているかを示す使用を判断するステップを含み、各部分はマークアップ言語の1つ以上の構成体に基づいており、前記方法はさらに、
    使用に基づき、装置リソースの消費を止める文書のある特定の部分を選択するステップと、
    特定の部分により消費される装置リソースを解放するステップとを含む、方法。
  2. 特定の部分を選択する前記ステップは、装置リソースを消費する複数の部分のうち、最も以前に使用された特定の部分を選択するステップを含む、請求項1に記載の方法。
  3. 前記方法は、リソースを解放するための条件が満たされているかどうかを判断するステップをさらに含み、
    特定の部分を選択する前記ステップは、リソースを解放するための条件が満たされていると判断された場合にのみ行なわれる、請求項1に記載の方法。
  4. 使用を判断する前記ステップは、装置リソースを消費する文書のすべての部分による全リソース使用を判断するステップをさらに含み、
    リソースを解放するための条件は、全リソース使用が、限定されたリソース量よりも少ないしきい値リソース量を上回ることを含む、請求項3に記載の方法。
  5. 使用を判断する前記ステップは、装置リソースを消費する各部分に対する、装置による未完了動作の数を判断するステップをさらに含み、
    特定の部分を選択する前記ステップは、特定の部分に対する未完了動作の数が最小数よりも少ないことを判断するステップを含む、請求項1に記載の方法。
  6. 最小数は1である、請求項5に記載の方法。
  7. 特定の部分を選択する前記ステップは、未完了動作の数が最小数よりも少ない、複数の部分のうち最も以前に使用された特定の部分を選択するステップをさらに含む、請求項5に記載の方法。
  8. 特定の部分により消費される装置リソースを解放する前記ステップは、
    特定の部分の内容が永続的ストレージに、文書の異なる部分とは別個に存在しているかどうかを判断するステップと、
    内容が永続的ストレージに、異なる部分とは別個に存在していないと判断された場合には、特定の部分により消費される装置リソースを解放する前に、内容を永続的ストレージに、異なる部分とは別個に書込むステップとを含む、請求項1に記載の方法。
  9. 特定の部分により消費される装置リソースを解放する前記ステップは、内容が永続的ストレージに、異なる部分とは別個に存在すると判断された場合には、内容を永続的ストレージに書込むことなく、特定の部分により消費される装置リソースを解放するステップを行なうステップをさらに含む、請求項8に記載の方法。
  10. 永続的ストレージは、ファイルシステムにおけるファイルである、請求項8に記載の方法。
  11. 永続的ストレージは、データベースシステムにおけるデータベースオブジェクトである、請求項8に記載の方法。
  12. 文書に関連する型定義文書から文書の階層要素を判断するステップと、
    階層要素に基づいて、文書の複数の部分を判断するステップとをさらに含む、請求項1に記載の方法。
  13. 文書は拡張可能マークアップ言語(XML)文書である、請求項1に記載の方法。
  14. 文書はXML文書であり、型定義文書は文書型定義(DTD)文書である、請求項12に記載の方法。
  15. 文書はXML文書であり、型定義文書はXMLスキーマ文書である、請求項12に記載の方法。
  16. 装置リソースを解放する前記ステップは、永続的ストレージにおける特定部分への参照を返すステップをさらに含む、請求項8に記載の方法。
  17. マークアップ言語に従って構成された内容を有する文書に対して動作を行なうための方法であって、
    前記動作が、1つ以上の部分の第1の組と1つ以上の部分の第2の組とを含む、前記文書の複数の部分を伴うことを判断するステップと、
    前記動作の実行中に、
    文書の1つ以上の部分の第1の組を揮発性メモリにロードするステップ、
    前記動作の完了前に、揮発性メモリの消費を止める部分の前記第1の組の少なくとも1つの部分を選択するステップ、および、
    前記動作の完了前でかつ前記少なくとも1つの部分の選択後に、文書の1つ以上の部分の前記第2の組を揮発性メモリにロードするために、前記少なくとも1つの部分を保持した揮発性メモリを解放するステップを行なうステップとを含む、方法。
  18. 文書は、コンピュータ装置の揮発性メモリを上回るサイズを有する拡張可能マークアップ言語(XML)文書であり、
    動作は、XML文書を表わすデータのストリームをコンピュータ装置の揮発性メモリに受取ることによって、コンピュータ装置の揮発性メモリに文書をロードすることを伴い、
    少なくとも1つの部分を選択するステップは、1つ以上のXML構成体に基づいて文書の複数の部分のうちのある特定の部分を判断するステップを含み、
    前記方法はさらに、
    XML文書のすべてが揮発性メモリに受取られる前に、特定の部分を永続的ストレージに別個に記憶するステップと、
    揮発性メモリにおいて、特定の部分についてのロケータを、特定の部分が基づいている少なくとも1つのXML構成体についての親ノードに対応しているXML構成体と関連付けるステップとを含む、請求項17に記載の方法。
  19. 1つ以上のプロセッサにより実行される際、1つ以上のプロセッサに請求項1〜18のいずれかに記載の方法を実行させる、命令の1つ以上のシーケンスを搬送するコンピュータ読み取り可能な媒体。
JP2004551875A 2002-11-06 2003-11-06 任意に大きな文書内のデータへのスケーラブルなアクセス Expired - Lifetime JP4476813B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US42454302P 2002-11-06 2002-11-06
US10/306,130 US7308474B2 (en) 2002-11-06 2002-11-26 Techniques for scalably accessing data in an arbitrarily large document by a device with limited resources
PCT/US2003/035551 WO2004044780A2 (en) 2002-11-06 2003-11-06 Scalable access to data in an arbitrarily large document

Publications (2)

Publication Number Publication Date
JP2006505871A true JP2006505871A (ja) 2006-02-16
JP4476813B2 JP4476813B2 (ja) 2010-06-09

Family

ID=32179506

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004551875A Expired - Lifetime JP4476813B2 (ja) 2002-11-06 2003-11-06 任意に大きな文書内のデータへのスケーラブルなアクセス

Country Status (8)

Country Link
US (1) US7308474B2 (ja)
EP (1) EP1559035B1 (ja)
JP (1) JP4476813B2 (ja)
AU (1) AU2003290654B2 (ja)
CA (1) CA2504141C (ja)
DE (1) DE60310255T2 (ja)
HK (1) HK1077108A1 (ja)
WO (1) WO2004044780A2 (ja)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7962962B2 (en) * 2001-06-19 2011-06-14 International Business Machines Corporation Using an object model to improve handling of personally identifiable information
US20050086584A1 (en) * 2001-07-09 2005-04-21 Microsoft Corporation XSL transform
US7120645B2 (en) * 2002-09-27 2006-10-10 Oracle International Corporation Techniques for rewriting XML queries directed to relational database constructs
EP1406183A3 (en) * 2002-10-01 2004-04-14 Sap Ag Method and system for refreshing browser pages
US7020653B2 (en) 2002-11-06 2006-03-28 Oracle International Corporation Techniques for supporting application-specific access controls with a separate server
US7386568B2 (en) * 2003-05-01 2008-06-10 Oracle International Corporation Techniques for partial rewrite of XPath queries in a relational database
US7103611B2 (en) * 2003-05-01 2006-09-05 Oracle International Corporation Techniques for retaining hierarchical information in mapping between XML documents and relational data
US6836778B2 (en) * 2003-05-01 2004-12-28 Oracle International Corporation Techniques for changing XML content in a relational database
US7747580B2 (en) * 2003-08-25 2010-06-29 Oracle International Corporation Direct loading of opaque types
US7814047B2 (en) 2003-08-25 2010-10-12 Oracle International Corporation Direct loading of semistructured data
US8694510B2 (en) 2003-09-04 2014-04-08 Oracle International Corporation Indexing XML documents efficiently
US8229932B2 (en) 2003-09-04 2012-07-24 Oracle International Corporation Storing XML documents efficiently in an RDBMS
US9690811B1 (en) * 2003-11-05 2017-06-27 Hewlett Packard Enterprise Development Lp Single repository manifestation of a multi-repository system
US7930277B2 (en) 2004-04-21 2011-04-19 Oracle International Corporation Cost-based optimizer for an XML data repository within a database
EP1759315B1 (en) 2004-06-23 2010-06-30 Oracle International Corporation Efficient evaluation of queries using translation
US7516121B2 (en) 2004-06-23 2009-04-07 Oracle International Corporation Efficient evaluation of queries using translation
US20070208946A1 (en) * 2004-07-06 2007-09-06 Oracle International Corporation High performance secure caching in the mid-tier
US7668806B2 (en) 2004-08-05 2010-02-23 Oracle International Corporation Processing queries against one or more markup language sources
US7421426B2 (en) * 2005-01-11 2008-09-02 International Business Machines Corporation Systems, methods, and media for utilizing electronic document usage information with search engines
US7433866B2 (en) * 2005-01-11 2008-10-07 International Business Machines Corporation Systems, methods, and media for awarding credits based on provided usage information
US7386569B2 (en) * 2005-01-11 2008-06-10 International Business Machines Corporation Systems, methods, and media for aggregating electronic document usage information
US20060161511A1 (en) * 2005-01-20 2006-07-20 Viktors Berstis Systems, methods, and media for determining electronic document usage
US7305414B2 (en) 2005-04-05 2007-12-04 Oracle International Corporation Techniques for efficient integration of text searching with queries over XML data
US7685150B2 (en) * 2005-04-19 2010-03-23 Oracle International Corporation Optimization of queries over XML views that are based on union all operators
US20060235839A1 (en) * 2005-04-19 2006-10-19 Muralidhar Krishnaprasad Using XML as a common parser architecture to separate parser from compiler
US7949941B2 (en) 2005-04-22 2011-05-24 Oracle International Corporation Optimizing XSLT based on input XML document structure description and translating XSLT into equivalent XQuery expressions
US8166059B2 (en) 2005-07-08 2012-04-24 Oracle International Corporation Optimization of queries on a repository based on constraints on how the data is stored in the repository
CN101223603A (zh) * 2005-07-22 2008-07-16 皇家飞利浦电子股份有限公司 光盘节目播放控制方法及装置
US8073841B2 (en) 2005-10-07 2011-12-06 Oracle International Corporation Optimizing correlated XML extracts
US20070083549A1 (en) * 2005-10-10 2007-04-12 Oracle International Corporation Method and mechanism for providing a caching mechanism for contexts
US7933928B2 (en) 2005-12-22 2011-04-26 Oracle International Corporation Method and mechanism for loading XML documents into memory
US7464226B2 (en) * 2006-02-23 2008-12-09 Lars Andreas Reinertsen Fractional caching
US7853573B2 (en) * 2006-05-03 2010-12-14 Oracle International Corporation Efficient replication of XML data in a relational database management system
US7499909B2 (en) * 2006-07-03 2009-03-03 Oracle International Corporation Techniques of using a relational caching framework for efficiently handling XML queries in the mid-tier data caching
US7801856B2 (en) * 2006-08-09 2010-09-21 Oracle International Corporation Using XML for flexible replication of complex types
US7797310B2 (en) 2006-10-16 2010-09-14 Oracle International Corporation Technique to estimate the cost of streaming evaluation of XPaths
US7933935B2 (en) * 2006-10-16 2011-04-26 Oracle International Corporation Efficient partitioning technique while managing large XML documents
US7689612B2 (en) * 2007-04-19 2010-03-30 Sap Ag Handling of queries of transient and persistent data
US7937298B2 (en) * 2007-05-17 2011-05-03 Oracle International Corporation Guaranteed RFID event delivery
US8522249B2 (en) * 2007-06-27 2013-08-27 Bluestreak Technology, Inc. Management of software implemented services in processor-based devices
US7836098B2 (en) * 2007-07-13 2010-11-16 Oracle International Corporation Accelerating value-based lookup of XML document in XQuery
US8156149B2 (en) * 2007-07-24 2012-04-10 Microsoft Corporation Composite nested streams
US7840609B2 (en) * 2007-07-31 2010-11-23 Oracle International Corporation Using sibling-count in XML indexes to optimize single-path queries
US8250062B2 (en) * 2007-11-09 2012-08-21 Oracle International Corporation Optimized streaming evaluation of XML queries
US8527867B2 (en) * 2008-01-18 2013-09-03 Oracle International Corporation Enabling users to edit very large XML data
US8429196B2 (en) * 2008-06-06 2013-04-23 Oracle International Corporation Fast extraction of scalar values from binary encoded XML
US7958112B2 (en) 2008-08-08 2011-06-07 Oracle International Corporation Interleaving query transformations for XML indexes
US8527466B2 (en) * 2009-05-31 2013-09-03 Red Hat Israel, Ltd. Handling temporary files of a virtual machine
US8943498B2 (en) * 2009-05-31 2015-01-27 Red Hat Israel, Ltd. Method and apparatus for swapping virtual machine memory
US20110252039A1 (en) * 2009-10-14 2011-10-13 Research In Motion Limited System, apparatus and method for processing content on a computing device
US8365020B2 (en) * 2010-03-18 2013-01-29 Red Hat Israel, Ltd. Mechanism for saving crash dump files of a virtual machine on a designated disk
US8489649B2 (en) 2010-12-13 2013-07-16 Oracle International Corporation Extensible RDF databases
US9043363B2 (en) * 2011-06-03 2015-05-26 Oracle International Corporation System and method for performing memory management using hardware transactions
GB2510887A (en) 2013-02-18 2014-08-20 Ibm Markup language parser
US10324589B2 (en) * 2016-10-25 2019-06-18 International Business Machines Corporation Navigation by usage locations in a document editing application

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463772A (en) 1993-04-23 1995-10-31 Hewlett-Packard Company Transparent peripheral file systems with on-board compression, decompression, and space management
US5893104A (en) 1996-07-09 1999-04-06 Oracle Corporation Method and system for processing queries in a database system using index structures that are not native to the database system
US6226649B1 (en) 1997-06-23 2001-05-01 Oracle Corporation Apparatus and method for transparent access of foreign databases in a heterogeneous database system
US6915307B1 (en) * 1998-04-15 2005-07-05 Inktomi Corporation High performance object cache
US6704739B2 (en) 1999-01-04 2004-03-09 Adobe Systems Incorporated Tagging data assets
US6427123B1 (en) 1999-02-18 2002-07-30 Oracle Corporation Hierarchical indexing for accessing hierarchically organized information in a relational system
HK1020419A2 (en) 1999-03-16 2000-03-17 Shi Piu Joseph Fong Frame model for universal database in database reengineering and integration
US6826727B1 (en) 1999-11-24 2004-11-30 Bitstream Inc. Apparatus, methods, programming for automatically laying out documents
US6721727B2 (en) 1999-12-02 2004-04-13 International Business Machines Corporation XML documents stored as column data
US6604100B1 (en) 2000-02-09 2003-08-05 At&T Corp. Method for converting relational data into a structured document
US20020056025A1 (en) 2000-11-07 2002-05-09 Qiu Chaoxin C. Systems and methods for management of memory
US6915304B2 (en) 2000-05-23 2005-07-05 Kenneth A. Krupa System and method for converting an XML data structure into a relational database
US20020029229A1 (en) * 2000-06-30 2002-03-07 Jakopac David E. Systems and methods for data compression
US6678795B1 (en) * 2000-08-15 2004-01-13 International Business Machines Corporation Method and apparatus for memory prefetching based on intra-page usage history
WO2002046916A2 (en) 2000-10-20 2002-06-13 Polexis, Inc. Extensible information system (xis)
US7917888B2 (en) 2001-01-22 2011-03-29 Symbol Technologies, Inc. System and method for building multi-modal and multi-channel applications
US6542911B2 (en) * 2001-03-01 2003-04-01 Sun Microsystems, Inc. Method and apparatus for freeing memory from an extensible markup language document object model tree active in an application cache
US6964025B2 (en) 2001-03-20 2005-11-08 Microsoft Corporation Auto thumbnail gallery
JP4529063B2 (ja) 2001-03-30 2010-08-25 ルネサスエレクトロニクス株式会社 システムシミュレータ、シミュレーション方法及びシミュレーションプログラム
US6745295B2 (en) * 2001-04-19 2004-06-01 International Business Machines Corporation Designing a cache with adaptive reconfiguration
AU2002334721B2 (en) 2001-09-28 2008-10-23 Oracle International Corporation An index structure to access hierarchical data in a relational database system
US6928449B2 (en) 2001-10-18 2005-08-09 Sun Microsystems, Inc. Mechanism for facilitating backtracking
US6836857B2 (en) 2001-10-18 2004-12-28 Sun Microsystems, Inc. Mechanism for debugging a computer process
US6918067B2 (en) * 2002-04-30 2005-07-12 International Business Machines Corporation Detecting network instability
US6823428B2 (en) * 2002-05-17 2004-11-23 International Business Preventing cache floods from sequential streams
US7120645B2 (en) 2002-09-27 2006-10-10 Oracle International Corporation Techniques for rewriting XML queries directed to relational database constructs
US6851030B2 (en) * 2002-10-16 2005-02-01 International Business Machines Corporation System and method for dynamically allocating associative resources

Also Published As

Publication number Publication date
HK1077108A1 (en) 2006-02-03
EP1559035B1 (en) 2006-12-06
EP1559035A2 (en) 2005-08-03
JP4476813B2 (ja) 2010-06-09
AU2003290654B2 (en) 2009-08-27
WO2004044780A2 (en) 2004-05-27
WO2004044780A3 (en) 2004-12-09
CA2504141C (en) 2009-06-16
CA2504141A1 (en) 2004-05-27
AU2003290654A1 (en) 2004-06-03
DE60310255T2 (de) 2007-06-28
US7308474B2 (en) 2007-12-11
DE60310255D1 (de) 2007-01-18
US20040088415A1 (en) 2004-05-06

Similar Documents

Publication Publication Date Title
JP4476813B2 (ja) 任意に大きな文書内のデータへのスケーラブルなアクセス
CA2651637C (en) Efficient piece-wise updates of binary encoded xml data
JP4406609B2 (ja) 単一のインターフェイスからのデータの多重階層を管理するための手法
US7870163B2 (en) Implementation of backward compatible XML schema evolution in a relational database system
US7814047B2 (en) Direct loading of semistructured data
US7136867B1 (en) Metadata format for hierarchical data storage on a raw storage device
AU2006304109B2 (en) Managing relationships between resources stored within a repository
US7730099B2 (en) Storage and retrieval of richly typed hierarchical network models
US7313572B2 (en) Attribute partitioning for user extensibility
JP2006114045A (ja) スキーマデータ(schemadata)からデータ構造へのマッピング
US20070016605A1 (en) Mechanism for computing structural summaries of XML document collections in a database system
US20040068526A1 (en) Mapping schemes for creating and storing electronic documents
US8156494B2 (en) Pluggable DOM implementation using an abstract API when receiving API calls for accessing different formats of XML data
US20080098186A1 (en) Scalable dom implementation
CA2626849A1 (en) Method and mechanism for loading xml documents into memory
US7548926B2 (en) High performance navigator for parsing inputs of a message
US20080168071A1 (en) Storing Data in Predicted Formats
US7672945B1 (en) Mechanism for creating member private data in a global namespace
CN110502535A (zh) 数据访问方法、装置、设备和存储介质
US7321900B1 (en) Reducing memory requirements needed to represent XML entities
CN113553333A (zh) 一种数据库的数据操作方法、装置、设备及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061002

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090714

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091007

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4476813

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140319

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term