JP2008516347A - インタロックツリーデータストアの保存および復元 - Google Patents
インタロックツリーデータストアの保存および復元 Download PDFInfo
- Publication number
- JP2008516347A JP2008516347A JP2007535910A JP2007535910A JP2008516347A JP 2008516347 A JP2008516347 A JP 2008516347A JP 2007535910 A JP2007535910 A JP 2007535910A JP 2007535910 A JP2007535910 A JP 2007535910A JP 2008516347 A JP2008516347 A JP 2008516347A
- Authority
- JP
- Japan
- Prior art keywords
- node
- packet
- list
- pointer
- nodes
- 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
- 238000000034 method Methods 0.000 claims abstract description 150
- 230000008569 process Effects 0.000 claims abstract description 68
- 230000006870 function Effects 0.000 claims abstract description 6
- 239000012467 final product Substances 0.000 claims description 50
- 239000007795 chemical reaction product Substances 0.000 claims description 18
- 238000013519 translation Methods 0.000 claims description 15
- 230000001419 dependent effect Effects 0.000 claims description 2
- 230000005055 memory storage Effects 0.000 claims 1
- 230000000063 preceeding effect Effects 0.000 claims 1
- 230000000717 retained effect Effects 0.000 claims 1
- 238000004321 preservation Methods 0.000 abstract description 9
- 230000036961 partial effect Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 6
- 241000283725 Bos Species 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000012804 iterative process Methods 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 239000002245 particle Substances 0.000 description 3
- 239000000047 product Substances 0.000 description 3
- 241000282326 Felis catus Species 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 108700028369 Alleles Proteins 0.000 description 1
- 125000003275 alpha amino acid group Chemical group 0.000 description 1
- 150000001413 amino acids Chemical class 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 210000000349 chromosome Anatomy 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99955—Archiving or backup
Abstract
生成され、かつ/またはアクセスされ得る相互接続されたツリーの森を含むツリーベースのデータストアは、すべてのリンクが、それが完全に復元されるかまたは部分的に復元されるかに関わらず、正しく維持されることを確実にするために、特別な保存および復元プロセスを必要とし得る。以前のプロセスはツリーベースのデータストアの公知の機能上に作用し、メタデータのファイルを生成し、構造の各ノードをパケット化し、慎重にリンクおよびリンクのリストをその原因となる古いメモリアドレスを用いて保存した。これはその代わりに、リンクを復元する新しい復元プロセスを用いて、すべてのリンクを保存することなくいかに保存ファイルを構築するかを開示する。
Description
関連出願
この出願は、2004年1月16日に出願された特許出願番号第10/759,466号(代理人管理番号TN320)の実質的な開示を共有し、この特許出願と同じ発明者を共有する。
この出願は、2004年1月16日に出願された特許出願番号第10/759,466号(代理人管理番号TN320)の実質的な開示を共有し、この特許出願と同じ発明者を共有する。
発明の分野
本発明は、インタロックツリーデータストアの操作の分野に関し、特にインタロックツリーデータストアの保存および検索を可能にすること、さらに特定的には、特定的なインタロックツリーデータストアの保存および検索をもたらすための改良に関する。
本発明は、インタロックツリーデータストアの操作の分野に関し、特にインタロックツリーデータストアの保存および検索を可能にすること、さらに特定的には、特定的なインタロックツリーデータストアの保存および検索をもたらすための改良に関する。
発明の背景
インタロックツリーデータストアである知識ストアまたはKStoreを保存し、復元することは、このようなデータストアの商業化において重要な特徴であり得る。実験的な試みにおいて、我々は本願明細書で教示する原理を適用して、KStoreを保存し復元するのに必要な時間および必要なメモリサイズを桁違いに減じてきた。
インタロックツリーデータストアである知識ストアまたはKStoreを保存し、復元することは、このようなデータストアの商業化において重要な特徴であり得る。実験的な試みにおいて、我々は本願明細書で教示する原理を適用して、KStoreを保存し復元するのに必要な時間および必要なメモリサイズを桁違いに減じてきた。
インタロックツリーデータストアを生成し使用するためのさまざまな方法およびシステムを開発してきた。特に、これらの構造および方法は、同時継続出願である、発明者マザガティ(Mazzagatti)による米国連続番号第10/385,421号および第10/666,382号の特許出願において説明されている。さらに、このようなインタロックツリーデータストアがより効率的に用いられ得るシステムについて、米国特許連続番号第10/879,329号において説明した。この特許において我々が説明するシステムおよび方法は、特にこの発明者マザカティが上記に参照される特許(出願)で説明した特定のインタロックツリーデータストアに関係し、本願明細書で説明されたシステムおよび方法は類似の構造にも適用可能である。
もちろん保存されたインタロックツリーデータストアのための他の使用が存在する。部分的保存、またはインタロックツリーデータストア全体の「区分」の使用によれば、より多くの使用があり得る。したがって、1つの例のみを挙げても、類似するが分散されている、または独立した同時使用のために、1つの機械に組込まれたインタロックツリーデータストアを複数の計算機械に保存するなど(または部分的なインタロックツリーデータストアを保存するなど)するために、保存および復元プロセスを用いることができる。ここで現実的な視点から見ると、知識で満たされたインタロックツリーデータストアが中央のマシンから保存され、店頭販売時点の在庫についてのクエリを扱う全国規模の企業のレジ全体にわたって、中央リポジトリによらずに復元されることが理解できる。学生向けの使用または修正として、教科書または知識ベースのサンプルをその個人コンピュータに保存することが理解できる。このような使用のいずれについても、そのようなニーズに応答する、ここで説明される保存および復元プロセスは、インタロックツリーデータストアおよびその部分的保存を、あらゆるメモリからあらゆる他のメモリへと動かすように用いることができる。
元々は同時係属特許出願米国連続番号第10/385,421号に記載されたシステムによって生成されたインタロックツリーデータストア構造がさまざまな方法でそれ自体にデータを関連させ、また結果を得るための特別な構造を生成する必要なしにさまざまな照会に対して結果を生成するために、多くの有用な特性を与える一方で、従来その有用性に
は根本的な限界があった。限界の1つは、コンピュータにおけるメモリのデータ構造が、定位置にある間は働くが、動くことまたは保存することおよびその後の復元には適していなかったことである。以前は、インタロックツリーデータストアを動かす必要がある度に、またはインタロックツリーデータストアがあるコンピュータシステムをシャットダウンする必要がある度に、教え直す、すなわちインタロックツリーデータストアの新しいコピーまたはインスタンス化全体を作り直す(またはより正確にはこの発明のシステムに作り直させる)必要があった。このように、コンピュータシステムの故障にもかかわらずインタロックツリーデータストアの可搬性と長寿とを保つことを享受するのは、インタロックツリーデータストアについては本開発以前には手が届かないことであった。
は根本的な限界があった。限界の1つは、コンピュータにおけるメモリのデータ構造が、定位置にある間は働くが、動くことまたは保存することおよびその後の復元には適していなかったことである。以前は、インタロックツリーデータストアを動かす必要がある度に、またはインタロックツリーデータストアがあるコンピュータシステムをシャットダウンする必要がある度に、教え直す、すなわちインタロックツリーデータストアの新しいコピーまたはインスタンス化全体を作り直す(またはより正確にはこの発明のシステムに作り直させる)必要があった。このように、コンピュータシステムの故障にもかかわらずインタロックツリーデータストアの可搬性と長寿とを保つことを享受するのは、インタロックツリーデータストアについては本開発以前には手が届かないことであった。
本開発以前には我々が生成したデータ構造はコンピュータシステムに存在しなかったことから、先行の設計方法においては我々のニーズに適合するシステムのための発見はほとんどなかった。したがって、この構造を形作る関連性を失うことなく復元され得るようにこの構造を保存する特定の方法を自身で設計せざるを得なかった。すなわち、ポインタ構造は、それが運ばれていく新しいシステムにおいて、それがコンピュータシステムから保存されたのと同じそのコンピュータシステムにおいて、またはそれが復元されるべきコンピュータシステムにおいて、アドレススペースが変更されていたとしても、正確に復元される必要があった。要素的根ノードはそのデータが保持される必要があり、その構造体に対するポインタへのアクセスが復元される必要があった。たとえノードがすべて後に異なるアドレスに復元されるとしても、すべてのノードはそのポインタに対して同じアクセスを有する必要があり、かつ、インタロックツリーデータストアがいかなるコンピュータ環境の中でも用いられ得るように、OS独立かつ機械独立の方法でこれを達成する必要があった。
一般に、相互接続ツリーデータストア(interconnecting trees datastore)の森は、前の特許文献で以前に記述した態様で生成され、かつ/またはアクセスされる。ツリーベースのデータストアは、第1の根ノードに従属し、複数の分岐を含み得る、第1のツリーを含む。第1のツリーの分岐の各々は葉ノードに終わる。各葉ノードは最終製品(end product)またはサブコンポーネントノードを表わしてもよい。同じツリーベースのデータストアの第2の根は、最終製品を表わす各葉ノードにリンクされる。最後に、ツリーベースのデータストアは複数のツリーを含み、これらのツリーの各々の根ノードが要素的ノードとして記述され得る。これらのツリーの各々の根ノードは、第1のツリーの1つ以上の分岐における1つ以上のノードにリンクされてもよい。ツリーベースのデータストアのノードは、ツリーベースのデータストアの他のノードへのポインタのみを包含し、また付加的なフィールドを包含していてもよく、その1つはカウントフィールドでもよい。さらに、1つ以上の規定された焦点内の所望のコンテキストによって特定されるように、特定のノードに関連する変数の一致の可能性を得るための手段が記述される。さらに、そのような変数に関するクエリへの論理演算子の適用が示される。
同時係属出願の連続番号第10/759,466号に説明した保存および復元システムを研究した後、保存および復元をさらに著しく効率的に操作し得ることを発見した。したがって、その出願の元の開示に加えて、この発見について本願明細書に記載する。
発明の概要
1つ以上のレベルの相互接続されたツリーの森を含むツリーベースのデータストア、すなわち、米国特許出願連続番号第10/385,421号で我々が説明したものと類似または同一の固有の学習プロセスによって好ましくは生成され、かつ/またはアクセスされたものを保存し、復元ができるためには、支持構造、ノードの組織、および特定の要素的
データを保存する必要がある。
1つ以上のレベルの相互接続されたツリーの森を含むツリーベースのデータストア、すなわち、米国特許出願連続番号第10/385,421号で我々が説明したものと類似または同一の固有の学習プロセスによって好ましくは生成され、かつ/またはアクセスされたものを保存し、復元ができるためには、支持構造、ノードの組織、および特定の要素的
データを保存する必要がある。
前述されたような保存(SAVE)/復元(RESTORE)プロセスは、大きなKデータストアについては非常に遅かった。多くの場合、オリジナルデータからKを作り直した方が速い。
新しい方法では、asCaseリストおよびasResultリストを保存しない。これらのリストは、個々のノードの各々のRESTOREを用いて再構築することができる。すなわち、ノードが復元されて新しいノードアドレスがCaseポインタ(Case pointer)のasCaseリストおよびResultポインタ(Result pointer)のasResultリストに記憶される。
新しい方法の別の重要な局面は、元の方法である連続番号第10/759,466号では2つのパスを必要とするが、その代わりに復元位相におけるデータを通して単に1つのパスしか必要としないことである。好ましいインタロックツリーデータストアについて以前の特許に記載されたように、ツリーベースのデータストアの各レベルは、第1の根ノードに従属し、複数の分岐を含み得る第1のツリーを含む。第1の根は、これに限定されないがレベル開始インジケータなどの概念を表わしてもよい。第1のツリーの分岐の各々は、葉ノードまたは最終製品ノードに終わる。ツリーベースのデータストアの同じレベルの第2の根は、最終製品を表わす第1のツリーの各葉ノードにリンクされる。したがって第2の根は、必然的に第1のツリーまたは第1のツリーのサブセットの逆転した順序への根であるが、第1のツリーは複写されない。第2の根はこれに限定されないがレベル終了インジケータなどの概念を表わしてもよい。最後に、ツリーベースのデータストアは複数のツリーを含み、そこでこれらのツリーの各々の根ノードは、データセット要素またはデータセット要素表現などのデータを含み得る。このタイプの根ノードは本願明細書では要素的根ノードと呼ばれる。これらのツリーの各々の要素的根ノードは、複写されない第1のツリーの1つ以上の分岐における1つ以上のノードにリンクされてもよい。ツリーベースのデータストアの非根ノードは、ツリーベースのデータストアの他のノードへのポインタのみを必然的に包含し、また付加的なフィールドを包含していてもよく、そのような付加的なフィールドの1つはカウントフィールドであってもよい。ツリーベースのデータストアの各レベルを含むツリーの森のツリーの根もポインタで構成されるが、要素的根ノードは、さらに情報を表わすデータを包含(すなわち、データセット要素などのデータまたはレベル開始インジケータもしくはレベル終了インジケータなどの概念であるデータ、またはこれを表わすデータを包含)してもよく、ツリーベースのデータストアの他のすべてのノードは単に他のノードを指すのみであって、必然的にデータを包含していない。1つの実施例では、データは、文字と関連付けられた整数、ピクセル表現、開始インジケータ、終了インジケータ、フィールドインジケータの開始などの条件であるが、インタロックツリーデータストアはこれに限定されない。複数のレベルの上述のツリーベースのデータストアが生成され、アクセスされ得る。より下位レベルの最終製品が次のレベルの要素的根ノードになる。この保存および復元の発明において、ここで詳細に記述されるようなプロセスを案内するためにレベルが用いられる。
ノード自体の構造体は、ノードごとのデータフィールドの限定的な集合を通して一般に維持される。Case、Result、asCaseリストポインタ、asResultリストポインタ、および構造体のほとんどの形式においては少なくとも1つのカウントフィールドを含む付加的なフィールド、ならびに各要素的根ノードのための値フィールドがある。
上述された、また上記に挙げた、それぞれの全体が引用によって本願明細書に援用される同時係属特許出願にさらに詳述された構造を保存するためには、支持構造が保存されるべきであるが、いかなる種類の復元が計画されているかに依存しており、そのうちいくつ
かは損傷なく失われるかもしれない。支持構造は、保存しているインタロックツリーデータストアの形式、およびいかにしてそれを復元するつもりか、に依存して当然異なる。
かは損傷なく失われるかもしれない。支持構造は、保存しているインタロックツリーデータストアの形式、およびいかにしてそれを復元するつもりか、に依存して当然異なる。
次いで、インタロックツリーデータストア構造それ自体の全体が保存エンジンによって横断され、保存エンジンは各ノードにアクセスし、各ノードにおける情報から保存用のノードパケットを生成する。好ましい実施例では、ノードパケットは、好ましくはたとえばノード用のパケットの長さを含む、保存エンジンにより生成されたメタデータを包含する。次いでエンジンは、それが形成された機械においてか、または他の機械もしくはメモリシステムかにかかわらず、永久メモリ、または我々がインタロックツリーデータストアを保存するメモリであればいかなるメモリにも、ノードパケットを保存する。このようなメモリは比較的永久的な種類であることができ、前記1つのメモリを収容する機械にローカルなメモリ、ネットワークを通じてアクセス可能なシステムにおける離れたメモリ、区分された機械の区分メモリ、前記1つのメモリの別の部分であり得る。結局、ほとんどの場合、それが元の機械にあるか、機能性を与えることができるように他の何らかの機械にあるかにかかわらず、インタロックツリーデータストアを(またはそのいかなる保存された部分を)アクティブメモリに復元することが予想される。メタデータをパケット自体にではなく別の方法でいかに記憶することができるかは後に議論される。さらに、大きなパケット内のノードパケットとしてパケットの記憶装置をいかに好ましい形式で組織するかも説明される。
いずれの支持構造が保存されるべきかを決定するための元の概念においては、いくつかの選択として以下が含まれる。(保存用の)作成日を包含するファイルヘッダ、ファイルID、「センサ」を呼びたいが一般には要素的根ノードまたはその値を指すアドレスとして説明するものについての値のリスト、構造の最終製品ノードを表わすストリングのリスト(それがインタロックツリーデータストアの森の中のノードのすべての「考察」またはストリングを表わすので)、基礎をなすOSまたはそれが存在するコンピュータシステムのデータ構造を記述することができるすべての必要なメタデータ、もしあればパスワード保護、ポインタのリストがノード内でいかに順序付けられるか、および、構造を復元するかまたは保存されている構造における情報のアドレスを決定することが必要であればその性質についてのあらゆる情報、である。さらにヘッダは、K状態変数(いくつの付加的なフィールドがノードで支持されるか、いかなる種類のクエリが進行しているか、asCaseリストおよびasResultリストがいかに構造化されるか、データソース、スイッチ、およびデータストリームなど)、および/または、どのデータソースがクエリを受取り、かつ/またはそこから情報を得るかなどを特定するフックなどのデータソース記述子を、保存してもよい。これらのすべての項目についてのデータが単一のヘッダにあることも、または、そのうちすべてもしくはいくらかが各パケットの小さなヘッダにあり、もしくは特定の項目を用いるパケットのヘッダにあるか、またはこの情報のいずれも全く保存する必要がない場合もある。プログラミング技術の当業者は、システムが公知の環境などに基づいて仮定され得、それによりある状況においてはこのようなデータを保持することが無意味になり得ることを理解する。換言すれば、このメタデータの多くは、保存されたKおよび復元されたKの環境が同一または相当類似している場合に冗長になり得る。(「データストリーム」は、静的か動的かにかかわらず、データセットおよびその関連する入力ソースを示す用語である)。
プロセスをより効率的にするよう試みる際、(リスト上にポインタの数を保存することは復元をより効率的にするのを助け得るが)asCaseリストおよびasResultリストのためにポインタを保存する必要はないことが発見された。しかしながら、この改善は一般に、正しいシーケンスで、すなわち、asCaseリストおよびasResultリストを有するノードが、それが指すノードの前に処理されるようにノードを保存した場合にのみ、現在の技術を用いて円滑に作動する。我々は単純に、インタロックツリー構造の最低レベルから始めて最低
レベルのすべてのノードを保存した後に続く(より高い)レベルに移り、asCaseポインタ(BOTおよびサブコンポーネントノード)およびasResultポインタ(根ノード)を有するノードから始めて、次に同じ種類のノードを備えたこのようなレベルから始めて続く(より高い)レベルに移る。
レベルのすべてのノードを保存した後に続く(より高い)レベルに移り、asCaseポインタ(BOTおよびサブコンポーネントノード)およびasResultポインタ(根ノード)を有するノードから始めて、次に同じ種類のノードを備えたこのようなレベルから始めて続く(より高い)レベルに移る。
この改良された保存および復元システムのための3つの新しい種類のノードパケットを用いる方法について説明するが、この特許においてはこれらをパケットタイプ1、2および3と呼ぶ。好ましい実施例では、インタロックツリーデータストア構造とともに保存されている支持構造におけるノードパケットのタイプが示唆される。代替的には、ノードパケットタイプのための識別子がノードの付加的なフィールドに記憶されてもよい。「タイプ」とは何かについて、用語に関して何らかの混乱があり得るが、詳細な説明において、いつノードおよびパケットのタイプについて説明しているのか、またノードの「フィールド」またはパケット組織に何があるのかに分類が依存するか否か、を明確にするための鍵が与えられる。
タイプ1ノードパケットは現在のまたは古いノードアドレス、CaseポインタおよびResultポインタ、任意の「付加的なフィールド」、asCaseリストポインタのカウントおよびasResultリストポインタのカウントを包含する。タイプ1パケットはさらにパケットサイズの情報およびノードパケットタイプの表示をも有し得る。リストカウントが望まれ得る理由は、保存されたKが復元されているとき、復元されたKを保持するターゲットマシンのメモリにリストのための十分なスペースを割付ける必要があり、ポインタの数(各々が何らかのアドレスの表示を必要とする)がこのサイズ要件に著しく影響するからである。ノードの絶対数はサイズの割付け要件に寄与する別の大きな要因になるが、個々のノードにメモリ領域を割付る必要があれば、その要件はほとんどがポインタリストサイズとなる。
タイプ2パケットは、CaseポインタおよびResultポインタ、任意の付加的なフィールド、現在のまたは古いノードアドレスを包含し、さらにパケットサイズおよびパケットタイプについての情報をも有することができ、したがってasCaseリストポインタおよびasResultリストポインタのカウントを省略する。ノードパケットタイプ1およびタイプ2は、下記に説明されるようなさまざまな状況で用いられ得るが、ユーザのニーズまたは好みに基づいて選択し得ることが理解されなければならない。
第3のタイプ、タイプ3は、ノードがこのインタロックツリーデータストアにおいてasCaseリストまたはasResultリストのみを有し、両方は有しないことを認識する。したがって、それは現在のまたは古いノードアドレス、CaseポインタおよびResultポインタ、任意の「付加的なフィールド」、および1つのポインタリストカウントフィールドを包含しており、それにより、asCaseおよびasResultポインタリストフィールドを両方有するためにそうでなければ必要となったであろうメモリスペースを節約している。タイプ3パケットは、さらにパケットサイズおよびパケットタイプについての情報をも包含し得る。パケットタイプ情報は、asCaseまたはasResultのいずれのポインタリストがパケットに含まれているかの表示を含み得る。パケットがいずれのタイプのポインタリストがパケットにあるかについての情報を包含していなければ、ポインタリストはasReferenceタイプと考えられ、復元および/または他のKStoreプロセスがそれを決定する。
ノードパケットタイプ1、タイプ2、およびタイプ3はさまざまな状況で用いられ得る。実際、タイプ1が1種類のノードに用いられ、タイプ2が別の種類に用いられる限り、それらは単一の「保存/復元」動作の中で一緒に用いることができる。単一の保存されたKで3つのタイプを一緒に用いることは考えにくい。なぜならばそれは2つのタイプのいずれが所与のノードであるかを決定するためにノードパケットを生成するアルゴリズムの付加的なステップでのプログラミングを必要とし、これが処理を遅らせてこの時期に知覚
することができる利益がほとんどまたは全くないからである。しかしながら、復元ルーチンが、たとえばパケットタイプ1を備えた保存されたKl、およびタイプ2のノードパケットを備えた保存されたK2など異なるノードパケットタイプから構成される保存されたKをとることができ、それを単一の新しいKに復元することができることに注意されるべきである。
することができる利益がほとんどまたは全くないからである。しかしながら、復元ルーチンが、たとえばパケットタイプ1を備えた保存されたKl、およびタイプ2のノードパケットを備えた保存されたK2など異なるノードパケットタイプから構成される保存されたKをとることができ、それを単一の新しいKに復元することができることに注意されるべきである。
以前の我々の保存および復元の特許出願と同じく、パケットサイズは、新しいパケットが記憶用に準備されるかまたは記憶されるたびに、好ましくはパケットを確立するために用いられる何らかの機構によって好ましくはちょうど決定される。正常なプログラミング制約および実行が与えられると、そのメモリ長さの合計はヘッダに配置され、またはそうでなければインタロックツリーデータストアメモリ領域全体に保存される。いくつかの実施例では、このステップを回避するためにすべてが同じ長さを与えられ、いかなる余分のスペースもそのような実施例の保存では無視される。さらにこの特許における保存をよりよく体系づけるため、パケット内のパケットの使用も開示される。
すべてのノードにアクセスするために構造を横断することがさまざまな方法で行われ得る。一次根ノードから開始してasCase経路に沿って、または最終製品ノードから開始してすべての一次根ノードが見つかるまで後向きにCaseリンクを辿り、または根ノードの各々から開始してそれぞれからasResultリンクを辿ることができる。上述のように、保存動作中にノード情報を記憶するためにタイプ1パケットまたはタイプ3パケットを用いる場合、asCaseリストを備えたノード、ここではBOTノードから開始することが好ましい。
さらに、最低レベルの根ノードの各々から開始してすべてのasResultポインタを辿ることにより、K構造を横断することもできる。タイプ1およびタイプ3について上記で言及したのと同様の考察が適用される。
適切に保存することによって、部分的なインタロックツリーデータストアの復元も可能になり、それにより特定のアプリケーション用のバルクなしに構造全体の知識の有用性を保持することができる。一般に、完全に発展したインタロックツリーデータストアを制約したければ、興味の制約内の部分のみを横断することによりそれを保存し、保存されたものすべての復元を行うことができる。したがって、たとえばこのプロセスを通じて、継続した興味のない最終製品ノードを有するデータをすべてなくすことができる。他の種類の部分的保存は現在のところ推奨されない。しかしながら我々は、将来的にこれ以外の適切な部分的保存技術を開発するであろう。さらに、ヌル(null)値、小さい値、負の値さえ有するカウンタを備えたノードを保存しなければ、保存するノードの数を減じることができる。
構造を復元することは、復元に必要とされるメモリを割付け、保存された支持構造を読取ることを必要とする。アドレス変換表を構築している間に各ノードパケットが読取られ、メモリが割付けられなければならない。アドレス変換表は、各ノードについて古いメモリアドレスを新しいメモリアドレスに変換するために用いられる。次いで、各ノードはその規定するCaseポインタおよびResultポインタによって再構築され、他の関連データならびにCaseノードおよびResultノードのasCaseポインタリストおよびasResultポインタリストは、現在のノードの新しいメモリアドレスで再び占められる。するとK構造が復元されている。代替的には、相対アドレスを記憶し、基礎相対アドレスのみを用いて復元することができる。
KStore構造の1レベルの最終製品ノードは、次のレベルのサブコンポーネントノードを生成するために組合わせられる根ノードであってもよい。このプロセスは何回も繰り返すことができ、asCaseツリーのいかなる数のレベルを生成する。さらに、あるレベル
のノードは、その関連するさらに下位レベルノードおよび根を見るためにResultポインタを通じて横断されてもよい。1つのレベルの最終製品ノードは、そのasResultツリー、すなわち下位レベル終了インジケータ(EOT)を表わす根ノードを有するより下位レベルのasResultツリーを通して、次のより高いレベルの根ノードになる。
のノードは、その関連するさらに下位レベルノードおよび根を見るためにResultポインタを通じて横断されてもよい。1つのレベルの最終製品ノードは、そのasResultツリー、すなわち下位レベル終了インジケータ(EOT)を表わす根ノードを有するより下位レベルのasResultツリーを通して、次のより高いレベルの根ノードになる。
各レベルからの最終製品ノードはそれが生成される間に特定される場合もあるであろう。これが生成するメタデータは、たとえば、より高いレベルのみの部分的保存を行いたい場合に保存することができた、インタロックツリーデータストア構造のメタデータの一部である。
前述の要約は、本発明の実施例の以下の詳細な説明と同様、添付の図面に関連して読むと一層よく理解される。本発明を図示する目的で、発明の例示的な構造が図面に示される。しかしながら、本発明は開示された特定の方法および手段に限定されるものではない。
例示的な実施例の詳細な説明
概観
前に言及された特許出願において、ここでKStoreと呼ばれるインタロックツリーデータストアを生成するためのシステムおよび方法について説明したが、本発明が既存の技術として当然としてはいるがコンピュータデータ技術において他では見られないと思われる概念を読者に理解してもらうため、その説明のいくらかを繰返すことが必要であろう。KStoreは一般に、相互接続されたツリーの森の少なくとも1レベルを含む。データストアの相互接続されたツリーの森の各レベルの構成は、要素的データセットからの要素のシーケンスを表わす新しいノードを生成することにより、データストリームについての情報を捉える。データストリームで各要素に遭遇すると、新しいサブコンポーネントのノードコンポーネントが、前のサブコンポーネントのノードへの参照および要素的根ノードへの参照を用いて構築される。新しいシーケンスが構築されている場合、(要素ノードの組に含まれていた)考察インジケータの始めのレベルおよび要素的根に参照がなされる。シーケンスの終わりに遭遇していれば、サブコンポーネントノードおよび考察インジケータの終わりのレベルを表わすノードに参照がなされる。この反復的なプロセスの結果、asCaseツリー分岐によってリンクされるノードから構成される単一のasCaseツリーおよび複数のasResultツリーを生成する。asCase分岐のノードは第1の根に従属する。たとえば図11を参照して、ノード1050、1002、1004、1024、1026、1027および1030は、第1の開始インジケータ根に従属する例示的なasCaseツリーである。ノード1005から始まる他の分岐もこのasCaseツリーの一部と考えられ、1028、1029、1040、1031および1060を含むがこれらに限定されない。asResultツリーの例は以下のツリーを含む。ノード1051、1002(1つのasResultツリー)、ノード1053、1003および1005(asResultツリーの第2の例)、ノード1057、1033、1031、および1027(asResultツリーの第3の例)であって、これらはこの図の他の多くの中で見つけることができる。根(ノード1061)が終了インジケータを表わすので、右側のasResultツリーはasResultツリーの特別なインスタンスである。
概観
前に言及された特許出願において、ここでKStoreと呼ばれるインタロックツリーデータストアを生成するためのシステムおよび方法について説明したが、本発明が既存の技術として当然としてはいるがコンピュータデータ技術において他では見られないと思われる概念を読者に理解してもらうため、その説明のいくらかを繰返すことが必要であろう。KStoreは一般に、相互接続されたツリーの森の少なくとも1レベルを含む。データストアの相互接続されたツリーの森の各レベルの構成は、要素的データセットからの要素のシーケンスを表わす新しいノードを生成することにより、データストリームについての情報を捉える。データストリームで各要素に遭遇すると、新しいサブコンポーネントのノードコンポーネントが、前のサブコンポーネントのノードへの参照および要素的根ノードへの参照を用いて構築される。新しいシーケンスが構築されている場合、(要素ノードの組に含まれていた)考察インジケータの始めのレベルおよび要素的根に参照がなされる。シーケンスの終わりに遭遇していれば、サブコンポーネントノードおよび考察インジケータの終わりのレベルを表わすノードに参照がなされる。この反復的なプロセスの結果、asCaseツリー分岐によってリンクされるノードから構成される単一のasCaseツリーおよび複数のasResultツリーを生成する。asCase分岐のノードは第1の根に従属する。たとえば図11を参照して、ノード1050、1002、1004、1024、1026、1027および1030は、第1の開始インジケータ根に従属する例示的なasCaseツリーである。ノード1005から始まる他の分岐もこのasCaseツリーの一部と考えられ、1028、1029、1040、1031および1060を含むがこれらに限定されない。asResultツリーの例は以下のツリーを含む。ノード1051、1002(1つのasResultツリー)、ノード1053、1003および1005(asResultツリーの第2の例)、ノード1057、1033、1031、および1027(asResultツリーの第3の例)であって、これらはこの図の他の多くの中で見つけることができる。根(ノード1061)が終了インジケータを表わすので、右側のasResultツリーはasResultツリーの特別なインスタンスである。
構造を最も基礎的な形式で見るために、インタロックツリーデータストア構造の最も小さな単位が、リンク96−99によって接続されるノード91−95を有して描かれる、図10を参照されたい。基礎構造は、リンク96を通じてサブコンポーネントノード94に接続される一次根(第1の根、ノード91)を有する。第3の根(要素的根)ノード92もリンク97によってサブコンポーネントノード94に接続される。(したがってノード94はデータに表示されるものすべての表現であり、すなわち、ノード94は、要素的ノード92が後に続く、要素的ノード91のデータのインスタンスを表わす)。ノード9
5はリンク99によってノード94に接続され、経路91−96−94−99−95は、一次根から始まり、最終製品ノード95で終わる経路と呼ばれ得る。(経路はリンクとノードとの接続されたいかなる線でもあり得る)。最終製品ノードも第2の根ノード(考察ノードの終わり)93のインスタンスであり、リンク98によって経路に接続される。
5はリンク99によってノード94に接続され、経路91−96−94−99−95は、一次根から始まり、最終製品ノード95で終わる経路と呼ばれ得る。(経路はリンクとノードとの接続されたいかなる線でもあり得る)。最終製品ノードも第2の根ノード(考察ノードの終わり)93のインスタンスであり、リンク98によって経路に接続される。
所与のレベルのasCaseツリーの各分岐は、レベル開始インジケータを表わすノードと根ノードを表わすノードとのサブコンポーネントノードへの組合わせから開始する。サブコンポーネントノードは、反復して根ノードと組合わされて別のサブコンポーネントノードになってもよい。サブコンポーネントは、レベル終了インジケータを表わすノードと組合わされて最終製品ノードを生成してもよい。このプロセスは繰返すことができ、結果として第1の根に従属する複数のasCaseツリー分岐を形成し得る。
たとえば、特定のインタロックツリー構造の分割不可能な要素的根ノードまたはセンサが英数字である場合、サブコンポーネントノードは単語でない文字の組合わせを表してもよく、最終製品ノードは単語を表わしてもよい。代替的には、サブコンポーネントノードは一部の在庫の番号(partial stock number)または注文番号(order number)を含む英数字の組合わせを表わしてもよく、最終製品ノードは全体の在庫(complete stock)または注文番号を表わしてもよい。これは、本発明に適用される入力の英数字の母集団の多くの用途のうち2つの可能な用途のみに言及したものである。
1レベルの最終製品ノードは次のレベルの根ノードであってもよい。最終製品ノードは、次のレベルのサブコンポーネントを生成するために、より下位レベルのデータセット要素がより下位レベルのサブコンポーネントノードおよび最終製品ノードを生成するために用いられるのと同じ方法で用いられてもよい。たとえば、上述の特定のインタロックツリー構造では、1レベルの最終製品ノード(単語を表わす)は根ノードであり得、そこからより高いレベルの最終製品ノード(文を表わす)が生成されてもよい。このプロセスは何度も繰返すことができ、データストアのインタロックツリーのレベルを任意の数だけ生成する。
図10の根ノード91、92および93ならびに図11の根ノード1050―1059および1061などの根ノードは、本願明細書で要素的根ノードと呼ばれる。なぜならばこれらのノードはデータセット要素を表わし、分割不可能な単位を含み、そこから分割可能な単位(サブコンポーネントノードおよび最終製品ノード)が構成されるからである。94、1004、1024、1033などのノードは本願明細書でサブコンポーネントノードと呼ばれる。なぜならばこれらのノードは、開始インジケータなどの概念インジケータを表わす根ノードとデータセット要素を表わす根ノードとの組合わせ、サブコンポーネントノードと最終製品を含まないデータセット要素を表わす根ノードとの組合わせ、またはサブコンポーネントノードと最終製品ノードを含む終了インジケータを表わすノードとの組合わせを表わすからである。ノード1030または95などのノードは最終製品ノードを表わす。引用された例において、要素的根ノードは文字であり、サブコンポーネントノードは単語を含まない文字の組合わせを表わし、最終製品ノードは単語を表わす。要素的根ノードの組が、この例において単語、考察またはストリングの初めを意味する「BOT」、および単語、考察またはノードのストリングの終わりを意味する「EOT」を含むことに注意される。「BOT」および「EOT」が開始インジケータおよび終了インジケータを表わし、本発明がこれに限定されないことが認識される。そのようなインジケータの片方または両方の欠如が考えられるとともに、他のこのようなインジケータの使用も考えられる。本発明の1つの実施例では、最終製品ノードは、特定のノードからEOT概念を表わす根ノードへのリンクに起因してサブコンポーネントノードから区別可能である。
要素的根ノードがKStore構造の第1のレベルで文字を表わす場合、KStore
構造におけるレベル根ノードとして単語、文字のシーケンスを用いるより高いレベルは、文を含んでもよい。同様に、1レベルにおける要素的根ノードとしてのピクセルは、次のより高いレベルにおいて写真の領域を、およびさらにより高いレベルにおいて写真全体を含むことができる。文は段落(単語よりさらに高いレベル)を生成するために組合わされ、などと続くことができる。さらに、より高いレベルの根ノードはインタロックツリーデータストアのより下位レベルに向かって横断されてもよい。本発明の1つの実施例では、次のレベルの根ノードを規定するためにレベル終了インジケータから始まるasResultツリーが用いられる。終了インジケータは、本発明の1つの実施例におけるasCaseツリーによって規定されるように、インタロックツリーデータストアの逆転した順序での第2の根である。
構造におけるレベル根ノードとして単語、文字のシーケンスを用いるより高いレベルは、文を含んでもよい。同様に、1レベルにおける要素的根ノードとしてのピクセルは、次のより高いレベルにおいて写真の領域を、およびさらにより高いレベルにおいて写真全体を含むことができる。文は段落(単語よりさらに高いレベル)を生成するために組合わされ、などと続くことができる。さらに、より高いレベルの根ノードはインタロックツリーデータストアのより下位レベルに向かって横断されてもよい。本発明の1つの実施例では、次のレベルの根ノードを規定するためにレベル終了インジケータから始まるasResultツリーが用いられる。終了インジケータは、本発明の1つの実施例におけるasCaseツリーによって規定されるように、インタロックツリーデータストアの逆転した順序での第2の根である。
ノードが生成される間、新しいノードと新しいノードが表わす2つのノードとの間に双方向リンクが生成される。Caseリンクは、2つのノードから新しいノードが生成される、その2つのノードの最初のノードへのリンクを表わす。新しいノードへの他方のポインタはCaseノードのasCaseリストに記憶される。入力が処理される間にasCaseツリーのasCase分岐がasCaseリンクの生成によって生成され得ることが認識される。各レベルのasCase分岐は、そのレベルのサブコンポーネントノードおよび最終製品ノードがそれぞれいかに生成されたかについて直接の記録を与える。したがって、asCase分岐は、サブコンポーネントノードおよび最終製品ノードがいかに生成されるか知ることが有用であるようなあらゆる目的に用いることができる。たとえば、インタロックツリージェネレータへの入力が正確に綴られた単語の母集団を含む場合、結果として生じる生成されたインタロックツリーのasCaseリンクはスペリングチェッカとして用いることができる。これはデータストアの多くのあり得る効用のうちの単に一例を挙げたにすぎない。
Resultリンクは、2つのノードから新しいノードが生成される、その2つのノードの第2のノードへのリンクを表わす。asResultリンクの生成は一連のインタロックツリーを生成し、そこでasResultツリーの各々は根ノードを含む根に従属する。これは、データストアにおいて根ノードとasCaseツリーとの関係を記録する結果となる。すなわち、asCaseツリーとasResultツリーとの組合わせは、インタロックツリーのノードのあり得るすべてのコンテキストを捉える。asCaseツリーとasResultツリーとの組合わせは、根ノード間のコンテキストまたは関係を知ることが有用であるようなすべての目的のために用いることができる。たとえば、インタロックツリーデータストアジェネレータへの入力が、セールスマンの名前、曜日、品目の数および州を含む販売データの母集団を含む場合、結果として生じた生成されたインタロックツリーデータストアのasCaseリンクおよびasResultリンクを用いて、「特定の州でどのセールスマンが売るのか」「月曜にはいくつの品目が売られたか」「セールスマンであるボブ(Bob)は月曜と火曜とでいくつの品目を売ったか」といった情報を、データストアのコピーを複数生成することなくすべて同じインタロックツリーデータストアから抽出することができる。
上述の関係の情報は、ツリーのサブコンポーネントおよび最終製品ノードに明示的に記憶されるのではなく、構築されるインタロックツリーデータストアの構造内に実際に記憶されることが認識される。インタロックツリーデータストアの要素的根ノードだけがデータを含むことができるので、CaseリンクおよびResultリンクを辿って根ノードまで戻り、データストリームからオリジナルデータを決定し、または再構築することができる。
例示的な計算環境
図1は、本発明の局面が実現され得る例示的なコンピュータシステム100のブロック図である。コンピュータシステム100は、メインフレーム、ミニコンピュータ、IBM互換のパーソナルコンピュータ、Unix(登録商標)ワークステーションまたはネットワークコンピュータなどのいかなる適切なシステムでもよいが、これらに限定されない。
当業者は本発明の装置が、マルチユーザコンピュータシステムまたはシングルユーザコンピュータを含むがこれらに限定されないいかなるコンピュータシステムにも適用され得ることを認識する。図1に示されるように、コンピュータシステム100は、メインメモリ104、補助記憶インターフェース106、端末インターフェース108、およびネットワークインターフェース110に接続された中央処理装置(CPU)102を含む。これらのシステムコンポーネントはシステムバス160を介して接続される。補助記憶インターフェース106は、ディスク195などであるがこれに限定されないディスク上にデータを記憶するDASD装置190などであるがこれに限定されない記憶装置を、コンピュータシステム100に接続するために用いられる。
図1は、本発明の局面が実現され得る例示的なコンピュータシステム100のブロック図である。コンピュータシステム100は、メインフレーム、ミニコンピュータ、IBM互換のパーソナルコンピュータ、Unix(登録商標)ワークステーションまたはネットワークコンピュータなどのいかなる適切なシステムでもよいが、これらに限定されない。
当業者は本発明の装置が、マルチユーザコンピュータシステムまたはシングルユーザコンピュータを含むがこれらに限定されないいかなるコンピュータシステムにも適用され得ることを認識する。図1に示されるように、コンピュータシステム100は、メインメモリ104、補助記憶インターフェース106、端末インターフェース108、およびネットワークインターフェース110に接続された中央処理装置(CPU)102を含む。これらのシステムコンポーネントはシステムバス160を介して接続される。補助記憶インターフェース106は、ディスク195などであるがこれに限定されないディスク上にデータを記憶するDASD装置190などであるがこれに限定されない記憶装置を、コンピュータシステム100に接続するために用いられる。
コンピュータシステム100の仮想メモリ全体を包含するメインメモリ104は、オペレーティングシステム122およびアプリケーション124を含み、インタロックツリーデータストア126をさらに含んでもよい。インタロックツリーデータストア126は、データの複製を必要とせずに複数のコンテキストモードにおいてデータを求めて素早く探索することができるデータ構造を与えるために用いられてもよい。コンピュータシステム100は、コンピュータシステム100のプログラムが、メインメモリ104およびDASD装置190などの複数のより小さな記憶エンティティへのアクセスではなく大きな単一の記憶エンティティにアクセスを有するかのように振舞うことを可能にする、周知の仮想アドレス機構を用いてもよい。したがって、オペレーティングシステム122、アプリケーション124、およびインタロックツリーデータストア126がメインメモリ104に存在するように示されるが、当業者はこれらの要素がメインメモリ104内にすべて完全に同時に位置していなければならないわけではないことを認識する。
コンピュータシステム100が単一のCPUおよびシステムバスのみを含むように示されているが、当業者は本発明が複数のCPUおよび/またはバスを含むシステムを用いて実現され得ることを理解する。1つ以上の端末をコンピュータシステム100に接続するために端末インターフェース108が用いられてもよい。参照される端末はダム端末または完全にプログラム可能なワークステーションであってもよく、システム管理者およびユーザがコンピュータシステム100と通信することを可能にするために採用することができる。
コンピュータシステム100に他のコンピュータシステムおよび/またはワークステーションを接続するためにネットワークインターフェース110が用いられてもよい。インターフェース110がインターフェースするネットワークは、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット(internet)、エキストラネットもしくはインターネット(Internet)、または他の適切なネットワークであってもよい。オペレーティングシステム122は、OS/2、WINDOWS(登録商標)、AIX(登録商標)、UNIX(登録商標)、LINUX(登録商標)または他の適切なオペレーティングシステムなどのオペレーティングシステムであってもよい。
アプリケーションプログラム124は、インタロックツリーデータストア126に記憶されたデータにアクセスする任意の種類のアプリケーションプログラムであり得る。したがって、このアプリケーションは、本発明はこれらに限定されないがいくつかの例を示すために挙げると、データ解析アプリケーション、データウェアハウジングアプリケーション、侵入探知システムなどを含む。
インタロックツリーデータストア126は、ユーザが任意のコンテキストに関連付けられた情報を得るために同じデータストアにアクセスすることができるようにするデータ記憶構造を与える。本願明細書に用いられるように、データという用語は、数、テキスト、グラフィック、定式、表、オーディオ、ビデオ、マルチメディアまたはそれのあらゆる組
合わせなどであるがこれらに限定されない、いかなる種類のコンピュータに記憶された情報をも含むことができる。インタロックツリーデータストア126は、アプリケーション124の一部として、オペレーティングシステム122の一部として、または種々様々のアプリケーションにデータ記憶を与えるために適合され得る個別のデータストアプロダクトとして、実現することができる。
合わせなどであるがこれらに限定されない、いかなる種類のコンピュータに記憶された情報をも含むことができる。インタロックツリーデータストア126は、アプリケーション124の一部として、オペレーティングシステム122の一部として、または種々様々のアプリケーションにデータ記憶を与えるために適合され得る個別のデータストアプロダクトとして、実現することができる。
本発明は、完全に機能的なコンピュータシステムのコンテキストで説明されているが、当業者は、本発明がさまざまな形式のプログラムプロダクトとして流通されることができ、本発明がこの流通を実現する特定の種類の信号運搬媒体に拘らず等しく適用できることを認識する。このような信号を運搬する媒体の例は、フロッピー(登録商標)ディスク、ハードドライブ、CD ROM、電気的、光学的、無線通信または他の適切な媒体上のデジタルおよびアナログ通信リンクを含むがこれらに限定されない。さらに必要となれば、ここで説明している種類のインタロックツリーデータストアをコンピュータシステムにわたって分散することが可能である。
図2は、保存されているKStoreを表わすブロックを包含していること以外は、図1と類似する。他は、繰返されている図2の要素は単にその識別番号の後ろに「a」が付加されただけである。Kstore(データストア126a)は、ここではコンピュータシステムのアクティブメモリ104aにある保存ルーチン128によって動いている。保存プロセスが完成した後それを復元するために、さらに復元ルーチン129があり、便宜のために同じくアクティブメインメモリ104aに示されるが、必要なときまたは所望に応じてそれらを入れ替えることができる。そのプロセスは、ヘッダスペース127r、およびプロセスが進行するにつれてKStore構造のノードを表わすパケットを生成し、好ましくは、領域127sとしてのアクティブメモリ中に保存されるように構造上で作用する。便利に参照するために、メモリにおけるこの作業スペースを領域127と呼ぶ。代替的には、スペース127は非常に小さくてよく、保存ルーチン128によって生成されている現在進行中のノードパケットか、代替的にはKStoreが復元されている場合は復元ルーチン129によって復元されているノードパケットのみを有する。KStoreが復元されている場合、スペース127は必要でないかもしれないが、KStoreが横断され、ノードが復元プロセス中に加えられている場合には、テストスペースまたは作業スペースとして望ましいかもしれない。ノードがパケットに変えられ、それが形成される間ファイルとしてメモリに流された場合、それは永久記録装置へのストリームファイルとして直ちに流される速度で生成されてもよい。少なくともそのような場合は、ストリームファイルのセットアップによってOSおよびデータ記憶システムがこれを自動的に扱うようにされるので、記憶装置のパケットにメモリを割当てることは必要なステップではない。
上記に挙げられたテキストの例(「BOT−C−A−T−EOT」および「BOT−T−A−B−EOT」)においては、入力の母集団が、単語がそこから派生し
得る英数字文字の集合であることが認識されるが、KStoreデータストア構造はそれに限定されない。たとえば、入力の母集団は、(単語がそこから派生し得る)文字または(句または文がそこから派生し得る)単語などのテキストであってもよい。さらに、KStoreの母集団は、代替的には、そこからゲノムが派生し得るアミノ酸、プロセスにおいて用いられる限定的なリソース、概念、ピクセル集合、画像、音、数、アナログ測定もしくは値、または最終製品を生成するためにデジタル化され(またはそうでなければ情報記憶フォーマット、たとえば量子的状態の表現などに入力され)連続して組合わせることができる要素的単位から構成される、他の適切な母集団からできていてもよい。
得る英数字文字の集合であることが認識されるが、KStoreデータストア構造はそれに限定されない。たとえば、入力の母集団は、(単語がそこから派生し得る)文字または(句または文がそこから派生し得る)単語などのテキストであってもよい。さらに、KStoreの母集団は、代替的には、そこからゲノムが派生し得るアミノ酸、プロセスにおいて用いられる限定的なリソース、概念、ピクセル集合、画像、音、数、アナログ測定もしくは値、または最終製品を生成するためにデジタル化され(またはそうでなければ情報記憶フォーマット、たとえば量子的状態の表現などに入力され)連続して組合わせることができる要素的単位から構成される、他の適切な母集団からできていてもよい。
上記ノードに加えて、インタロックツリーデータストアは、(たとえば図10を用いて)たとえばリンク96、97、99および98などの、ノード間のいくつかの接続または
リンクをも含むことができる。本発明の1つの実施例におけるリンクは双方向である。リンク96および99は本願明細書でasCaseリンクと呼ばれる。97および98のようなリンクは本願明細書でasResultリンクと呼ばれる。本発明の好ましい実施例においては、開始インジケータがサブコンポーネントの第2の部分にならないので、開始インジケータ概念または条件を表わす根ノードはヌルのasResultリストを有し、データセット要素がサブコンポーネントの第1の部分にならないので、データセット要素を表わす根ノードはヌルのasCaseリストを有し、かつ終了インジケータがサブコンポーネントの第1の部分にならないので、終了インジケータ概念または条件を表わす根ノードはヌルのasCaseリストを有することが認識され得る。最後に、最終製品が次のレベルのデータセット要素の役割をするので、最終製品根ノードはヌルのasCaseリストを有する。
リンクをも含むことができる。本発明の1つの実施例におけるリンクは双方向である。リンク96および99は本願明細書でasCaseリンクと呼ばれる。97および98のようなリンクは本願明細書でasResultリンクと呼ばれる。本発明の好ましい実施例においては、開始インジケータがサブコンポーネントの第2の部分にならないので、開始インジケータ概念または条件を表わす根ノードはヌルのasResultリストを有し、データセット要素がサブコンポーネントの第1の部分にならないので、データセット要素を表わす根ノードはヌルのasCaseリストを有し、かつ終了インジケータがサブコンポーネントの第1の部分にならないので、終了インジケータ概念または条件を表わす根ノードはヌルのasCaseリストを有することが認識され得る。最後に、最終製品が次のレベルのデータセット要素の役割をするので、最終製品根ノードはヌルのasCaseリストを有する。
インタロックツリーデータストアのノードはすべて、前記ノードに関連付けられた情報を表わす付加的なフィールドをも含み得る。これは図9を用いて示され得る。しかしながら、ほぼすべての好ましい実施例において、データが根ノードのみに記憶されることに注意されたい。付加的なフィールドを有しても、ほとんどの実施例におけるほとんどのノードはストリングデータを有し得ない。所望であれば、通常、(もしあれば)付加的なフィールドは、カウントまたは恐らくノードタイプのインジケータを記憶するために用いられてもよい。
例示的なノード30が図9に示される。このノード30は、付加的なフィールドとしてストリングフィールドを含んでもよく、それはこのノードによって表わされる要素的根ノードのすべてを示すシーケンスを包含する。この要素のシーケンスを含むストリングフィールドを付加することは、デバッグにおいて有用である。そのような付加的なフィールドについては多くの用途があり得、ノード30などのノードは1つの付加的なフィールドに限定される必要はない。しかしながら、典型的には、付加的なフィールドはストリングではなくカウントを包含し、1つを越える付加的なフィールドがあり得る。これらのフィールドの数および性質は、構築しているKStoreの所与の性質によって異なる。
例示的なノード30は、フィールド31としてカウントフィールドをも含み得る。カウントフィールドは示強変数によって初期化されてインクリメントされ、その値はカウントフィールドが参照されるときの条件に応じて異なる(示強変数は少なくとも1つの不変の値を保持する数学的なエンティティとして規定される)。この用語を非常に広くすることによって、示強変数に占められたカウントフィールドは、この発明のインタロックツリー構造のアプリケーションと、誤った記録されたデータを忘れることに対処し、どのエンティティが照会を行っているかを記録し、かつ用いられている照会の種類を記録するプロセスと、データを用いるときに派生し得る他の興味のあるプロセスとに用いることができる。示強変数の簡単な例示的形式は、単一の順序のフィールド値であって、ノードがアクセスされたり横断されたりした回数を記録するためのカウントフィールドをインクリメントしたりデクリメントしたりするために用いられる「1」などである。
さらに、asCaseリストフィールド33へのポインタが最終製品ノードについてヌルになり、asResultリストフィールド34へのポインタはすべてのサブコンポーネントノードについてヌルになり、2つ(すなわちasCaseリストへのポインタまたはasResultリストへのポインタ)のうちの1つが要素的ノードについてヌルになることが認識される。この認識により、2つのフィールドのうちの1つがすべての場合においてヌルになることがわかっており、ノードパケットにおいて1つのフィールドしか必要としないので、本願明細書に別記されるように、保存動作中にタイプ3のノードパケットの生成が可能になる。このリストカウントは、ノードの経験した頻度および強度の記録を維持するカウンタフィールドと区別される。
さらに、示強変数はこれらのさまざまな機能のために異なる速さで、および異なる方向に変わり得る。異なる強度の簡単な例として、クエリがノードを横切るたびに値+1が加算されること、また特定のノード(またはノードの特定のシーケンス)を包含している経路が(この説明には重要ではない何らかの重要な理由で)誤りであると考えられる場合、たとえば、使用後にシーケンスがミススペルだったことが発覚した場合、センサが危険な化学薬品を包含する領域を見つけた場合、または人間の子供のシミュレータがシミュレーションにおいて熱いストーブに「触れ」、「火傷をした」場合などには、−100という値が加算されること、が挙げられる。示強変数の代替としては、各種類のノード横断に対して新しい値を保持するために個別のノードを用いることがあり、したがってノードがタイプ1、タイプ2、経験1、経験2、および無限などのクエリの間にアクセスされるような状況でクラスタを生成する。この構造の実世界での適用に関して考察すると、カウントフィールドの示強変数は、この問題について最も簡単な、したがって現在での最良の手法をもたらすが、この代案または他の代案は、情報処理システムの性質と見なされ、再考されるべきである。この代案が考慮される場合、個別のノード、恐らくは要素的ノードまたは根ノードさえも用いてノードに関連する各タイプの横断回数のカウントを記録する手法が、この手法を実現する1つの方法であろう。
このように、1つの使用では、新しいデータがインタロックツリーデータストアに組込まれているときにカウントフィールドはインクリメントされ得るが、インタロックツリーデータストアがクエリされて新しいデータに対するより大きな値を生じ、照会については変化がないときは、カウントフィールドをインクリメントすることは省略され得る。したがって、この示強変数はKStoreが対処している問題に適合するので、動的に選択され得る。
カウントフィールドはインタロックツリー構造によってインスタンス化された知識ストアの使用を容易にするために付加され、特に頻度および確率などの統計が求められるときに有用である。
さらに、カウントフィールドがノードに存在し、ノードの経験した頻度および強度に対応する場合、所望であれば、ノードがカウントフィールド内にゼロ値を有しているならそれらのノードのいずれかを保存から消去することができることが認識されるべきである。ヌル値のノードのこのような消去は、検査において、任意の復元され得るKstoreが用いられる用途に要素的根ノードが必要でない場合、ゼロ値のカウントフィールドを備えた要素的根ノードにさえも用いることができる。(このように、所望であれば値の小さいカウントであっても消去ができる。ゼロ値と等価である必要はない)。KStoreの開発者がいくつかのパーティクルを保存しており、自分のデータのほとんどを集めてみるとそれが有用でないことがわかった場合にもこれは起こり得る。その場合開発者は確信をもってこれらの要素的根ノードを消去することができる。さらに、カウントフィールドの値に引き算があり得るような状況では、このようなノードも、誤りやミススペルなどを表わし得るので保存から消去することができる。当然ながら、生成されたいかなるノードも消去したくない状況もあり、そのような状況では、履歴を維持するために、ヌル値を備えたノードさえもカウントフィールドに保存される。
図9のノード30は、値フィールド32を有する要素的ノード30Aまたは(値フィールド32が欠落している)サブコンポーネントノードもしくは最終製品ノード30Bであり得るが、いずれのインスタンスにも付加的なフィールドまたはフィールド31を有し得る。
付加的なフィールドの特定のインスタンスが図9に示される。ノード30((値フィールド32を備えた)要素的ノード30Aまたはサブコンポーネントもしくは最終製品ノー
ド30Bのいずれか)などのノードの両方が付加的なフィールド31を有する。この付加的なフィールド(好みであれば複数のフィールド)は、所望のいかなる情報も包含することができる。たとえば、これが特定の種類のノード(センサ、最終製品または他の種類のノードなどのノードタイプ)であること、またはそれがEOTまたはBOTからのノードカウントによって特定の日付または距離で生成されたこと、またはそれを用いて行いたいことであれば何であっても知りたいと思うであろう。
ド30Bのいずれか)などのノードの両方が付加的なフィールド31を有する。この付加的なフィールド(好みであれば複数のフィールド)は、所望のいかなる情報も包含することができる。たとえば、これが特定の種類のノード(センサ、最終製品または他の種類のノードなどのノードタイプ)であること、またはそれがEOTまたはBOTからのノードカウントによって特定の日付または距離で生成されたこと、またはそれを用いて行いたいことであれば何であっても知りたいと思うであろう。
さらに、所望であれば、保存の組織化を支援するためにパケット内にパケットを保存することが有用である。図13では、より大きなパケット140内に1組のノードパケット0…n、141、142、143、…144、を有している。好ましくはパケット0…nの第1のパケット、パケット141はヘッダパケットであり、より大きなパケット140におけるすべての続くパケットに何が共通であるかについての情報を包含している。このヘッダパケットはほとんどの好ましい実施例においてはノードに再構成されないが、復元プロセスに役立つ情報を包含している。このパケット内パケットの構造を用いることは、各タイプの中に異なるフィールドを有するので、他のノードと別個に、それぞれ固有のパケット内で、要素的根ノード、BOTノードならびにEOTノードおよび最終製品ノードを記憶することを容易にする。たとえば、根ノードはasResultポインタで満たされたasResultリストを有するが、サブコンポーネントノードはそのようなリストを有しない。さらに、下位層と次に続く上位層との復元を容易に行うため、ここでも復元処理を容易にするよう、ノードの層も一緒に記憶することができる。
タイプの分類は明確にされなければならない。上述の3つの新しいパケットタイプがある。これらのパケットタイプは、本来のノードが有していたasResultリンクまたはasCaseリンクの数を追跡する1つまたは2つの付加的なカウントフィールドを有すること、または有していないことによって識別可能である。これらのタイプは、所望であれば、asResultもasCaseリンクも有しないノードを記憶するために便宜的に用いられてもよいが、これらのリンクを有しないノードがある。そのようなノードは、典型的には、それがメンバであるasResultリスト、およびそれがメンバであるasCaseリストを備えたノードへのポインタと、Caseポインタ、Resultポインタおよびカウントフィールドとを有するサブコンポーネントノードである。したがって、これを異なるタイプのノードと呼ぶことができるかもしれない。しかしながら、この特許については、パケットにいかなる種類の情報を保存し、そこからこのKStoreの(いくらかまたはすべての)ノードが保存中に保存されるかを指定するために、1、2、または3のタイプ指定を用いる。タイプ1、2および3のノードの完全な定義については上述される。ノードのパケット(パケット内のパケット)にサブコンポーネントノードを保存していれば、asCaseリストおよびasResultリストのいずれも有しないので、ノードタイプを指定する必要がない。
KStoreの層の概念をここでかなり詳細に説明し、復元がいかにこの階層化を利用することができるかについても詳細に議論することが有用である。先行する出願である米国連続番号第10/879,329号に層の使用について記述したが、その出願の中で用いられたものに類似した図を図12として加えた。最下位の層が、文字である要素的根ノード902を有するパーティクルレベルから単語を構築することに注意されたい。BOT901およびEOT903も要素的根ノードだがそれらの特別な場合である。次の上位の層の単語はすべて最終製品ノード908、906および904である。最上位の層の最終製品ノード902は文ノード、CATS ARE FURRYである。さらに、BOS904ノードおよびEOS905ノードは、単語ノード904、906および908とともに、この層の根ノードである。したがって、根ノードはその上の層にasResultポインタを有する。
このように、順番に保存し復元すれば、BOTノード901から始めてグラフの下部か
ら上へ動く。これは、このレベルにおいてこのKStoreの3つの単語の各々についてBOT C、BOT A(951)、BOT Fのケースノードを指し、ノード904、906および908でそれぞれ終わる。これを行うために、パケットを用いて、BOTをまず見つけ、復元された(復元されている)メモリにおいてこのノードに割当てられた新しいアドレスとともに単にBOTのための古いアドレスをアドレス変換表に入れ、要素的根ノードに移り、それらの古いアドレスおよび新しいアドレスに対して同じことを行う。要素的根ノードパケットのリストは、C、A、T、S、R、E、F、UおよびY、(902)、特別なケースの要素的根ノードEOT903である。先ほど述べたように、アドレス変換表にその古いメモリ位置と新しいメモリ位置とを採用する。これらの要素的ノードのResultであるノードを復元する間、アドレス変換表においてこれらの根ノードのためのアドレスが既に確立されているので、そのポインタのためにノードに記憶する新しいアドレスがわかっている。サブコンポーネントノードパケットもそのasCaseポインタを有するであろう。なぜならば、Case分岐におけるその先行者が(ここではBOT、次にC、次にAなど)まず復元され、既にアドレス変換表の中に新しいアドレスを有しているからである。次のレベルに移り、次に文のためのノードBOS904を復元する。サブコンポーネントノードは根ノード904、906および908を有し、それらはKStoreのレベル1部分の最終製品ノードであることがわかっている。最終製品ノードはこのレベルについてはノード902になり、さらにそれはEOSノード905を有し、それはBOSノード904の後にパケットから復元されることが好ましい。この第2のレベルのパケットから復元されたノードの各々は自身の新しいメモリアドレスを有し、今説明したこの1つの経路プロセスに復元されれば、そのポインタはすべて下位レベルのノードまたはBOSノードおよびEOSノードを指す。この単一パスプロセスを用いずにKStoreを復元することは可能であるが、すると第1の経路上で何らかの種類のプレースホールダを用いて、第1の経路の後にポインタ用の新しいアドレス変換に対し欠落した古いアドレスを埋めるために戻らなければならない。そのような反復的な処理は必然的により遅く、不必要に複雑である。
ら上へ動く。これは、このレベルにおいてこのKStoreの3つの単語の各々についてBOT C、BOT A(951)、BOT Fのケースノードを指し、ノード904、906および908でそれぞれ終わる。これを行うために、パケットを用いて、BOTをまず見つけ、復元された(復元されている)メモリにおいてこのノードに割当てられた新しいアドレスとともに単にBOTのための古いアドレスをアドレス変換表に入れ、要素的根ノードに移り、それらの古いアドレスおよび新しいアドレスに対して同じことを行う。要素的根ノードパケットのリストは、C、A、T、S、R、E、F、UおよびY、(902)、特別なケースの要素的根ノードEOT903である。先ほど述べたように、アドレス変換表にその古いメモリ位置と新しいメモリ位置とを採用する。これらの要素的ノードのResultであるノードを復元する間、アドレス変換表においてこれらの根ノードのためのアドレスが既に確立されているので、そのポインタのためにノードに記憶する新しいアドレスがわかっている。サブコンポーネントノードパケットもそのasCaseポインタを有するであろう。なぜならば、Case分岐におけるその先行者が(ここではBOT、次にC、次にAなど)まず復元され、既にアドレス変換表の中に新しいアドレスを有しているからである。次のレベルに移り、次に文のためのノードBOS904を復元する。サブコンポーネントノードは根ノード904、906および908を有し、それらはKStoreのレベル1部分の最終製品ノードであることがわかっている。最終製品ノードはこのレベルについてはノード902になり、さらにそれはEOSノード905を有し、それはBOSノード904の後にパケットから復元されることが好ましい。この第2のレベルのパケットから復元されたノードの各々は自身の新しいメモリアドレスを有し、今説明したこの1つの経路プロセスに復元されれば、そのポインタはすべて下位レベルのノードまたはBOSノードおよびEOSノードを指す。この単一パスプロセスを用いずにKStoreを復元することは可能であるが、すると第1の経路上で何らかの種類のプレースホールダを用いて、第1の経路の後にポインタ用の新しいアドレス変換に対し欠落した古いアドレスを埋めるために戻らなければならない。そのような反復的な処理は必然的により遅く、不必要に複雑である。
実現は極めて柔軟に行われる。たとえば、KStoreでは、リンクされたリストとしてasCaseリストおよびasResultリストを実現してもよい。別の実施例では、asCaseリストおよびasResultリストは構成可能なサイズの隣接するメモリ位置のブロックとして、これに限定されないがアレイなどに割付けることができる。復元を開始する際にこの情報を知っていることは非常に重要である。そのようなリストがある組織の種類の表示は、デフォルトとして、またはパケットヘッダ、もしくはノードパケットが組織される大きなパケットのヘッダもしくはリードパケットに置かれた何らかの種類のメタデータインジケータとして、扱うことができる。いかなる場合も、いかなるasCaseリストにもasCaseリストの開始位置にセットされるポインタがあり得、いかなるasResultリストへのポインタもあり得る。このメタデータを扱う適切なアルゴリズムプロセスは、好ましい実施例においてメタデータ自体によってトリガされる。KStoreはノードの中にasCaseリストとasResultリストと保持するように組織され、または好ましくは、(いかに組織されていても)そのようなリストは、それらへのポインタのみをKStore構造において記憶する。ノードパケットに記憶されたポインタリストのカウントは、適切なサイズのポインタリストを用いてパケットをノードとして復元するための適切な量のメモリを割当てることを可能にする。復元がKを復元するために順序づけられた態様で用いられ得るので、復元順序に注意する限り、asCaseリストまたはasResultリストを記憶する必要は全くない。復元が復元プロセス中にこれらのリストを生成するからである。そのためには適切なサイズのメモリがぜひとも欲しいが、それがポインタリスト上にポインタカウントを保存する理由である。
(米国連続番号第10/759,466号に記載された)この保存および復元システムの旧バージョンの発明の1つの実施例では、新しいノードから、そこから新しいノードが派生するノードまでリンクを再生することに加えて、新しいノードの位置へのポインタが
、そこから新しいノードが派生するノードの、リンクされたリスト、asCaseリストおよびasResultリストに加えられる。ポインタはリストの終わり、リストの始めに加えられても、またはリスト内のどこかに挿入されてもよい。さらに、いくつかの順序付けられたリストが維持されてもよい。たとえば、ノードのasCaseリストは連続するリストを含んでいてもよく、そこではポインタは、順序づけられたリストに加えてリンクされたリストの終わりにも加えられ、そこでポインタは最も頻繁にアクセスされる順に維持される。所与の例は1つの順序付けられたリストおよび1つの連続するリストを引用するが、本発明はそれに限定されないことが理解され、本発明の範囲内でいかなる組合わせおよびリストの数も考慮される。順序づけられたリストは、最後の更新時順、最後のアクセス順、もしくは更新もしくはアクセスの頻度順に、または他の適切な順序付けの規則によって順序付けられる。この構造に関する情報は、メタデータとして同様に保存される必要があり得、さらに、それはKStore状態の変数情報とも考えられる。本願明細書に記述された新しい発明では、この説明の残りの部分で説明されるように、そのようなリストを維持する必要は全くないが、与えられた状況において望ましい場合には特定の場合のためにそうするよう決定してもよい。しかしながら、順序付けられたリストの順序を維持しないときは順序を失うので、順序を維持し、本発明の代わりに古い方法を用いたい状況があるかもしれない。代替的には、頻度に基づいたリストなど何らかの基礎に基づいてリストの順序を復元することができる。
、そこから新しいノードが派生するノードの、リンクされたリスト、asCaseリストおよびasResultリストに加えられる。ポインタはリストの終わり、リストの始めに加えられても、またはリスト内のどこかに挿入されてもよい。さらに、いくつかの順序付けられたリストが維持されてもよい。たとえば、ノードのasCaseリストは連続するリストを含んでいてもよく、そこではポインタは、順序づけられたリストに加えてリンクされたリストの終わりにも加えられ、そこでポインタは最も頻繁にアクセスされる順に維持される。所与の例は1つの順序付けられたリストおよび1つの連続するリストを引用するが、本発明はそれに限定されないことが理解され、本発明の範囲内でいかなる組合わせおよびリストの数も考慮される。順序づけられたリストは、最後の更新時順、最後のアクセス順、もしくは更新もしくはアクセスの頻度順に、または他の適切な順序付けの規則によって順序付けられる。この構造に関する情報は、メタデータとして同様に保存される必要があり得、さらに、それはKStore状態の変数情報とも考えられる。本願明細書に記述された新しい発明では、この説明の残りの部分で説明されるように、そのようなリストを維持する必要は全くないが、与えられた状況において望ましい場合には特定の場合のためにそうするよう決定してもよい。しかしながら、順序付けられたリストの順序を維持しないときは順序を失うので、順序を維持し、本発明の代わりに古い方法を用いたい状況があるかもしれない。代替的には、頻度に基づいたリストなど何らかの基礎に基づいてリストの順序を復元することができる。
KStoreデータ構造のほとんどの好ましい実施例では、より高いレベルの根ノードを表わすノードは、データもしくはデータ表現または概念を包含していない。すなわち、より高位レベルの根ノードはより下位レベルのノードへのポインタしか包含していない。異なるレベルの根ノードについての情報は保存され得るメタデータの別の局面となる。
いかなる適切な数のレベルも生成され得る。たとえば、テキストの世界では、レベルは、文字、単語、文、段落、章、本、図書館などを表わし得る。例示的な図面ではインタロックツリーデータストアは2つのレベルを有するが、KStoreの発明はそのように限定されないことが理解される。インタロックツリーデータストアのいかなる数のレベルも構築することができる。この例の母集団が、テキスト、すなわち単語からの文字の組合わせ(1レベルの最終製品)であるので、本発明のこの実施例における単語の組合わせの結果は、句または文(別のレベルの最終製品)である。文は段落を形成するために組合わせられ、段落は章または部を形成するために組合わせられ、などと続き得る。
KStoreを適切に復元するためには、要素的根ノード(センサ)および要素的根ノードに関連付けられた一定の値を記憶する必要がある。センサ値が、KStore構造を生成する通常の過程でノードと無関係に保存される場合、これらの値のファイルおよび要素的根ノードへ戻るポインタは(ポインタアドレスに関して一般に記述されるようなポインタに必要とされ得るアドレス変更のために適応して)単にそのまま保存することができる。センサ値がノードに実際に記憶されるようなKStoreの場合には、ノードが保存動作中に保存されるとき、値は他の要素的根ノード情報とともに保存される。このように、保存プロセスが保存されているKStoreに適合されることが明らかである。
最終製品ノードは、入力母集団に依存して、単語、句、文など以外のエンティティを表わし得ることがさらに理解される。多くの例のうち1つとしては、入力が染色体を含むアミノ酸配列である場合、1つの最終製品は遺伝子または対立遺伝子を表わし得る。別の例において、ピクセルシーケンスは、線、円または他の形状の品目である最終製品を有し得る。
KStore構造の探索は比較的単純であり、以前の特許出願にも記載され、それをいかに行うかについて完全に理解することは、KStoreと呼ばれるデータストアをイン
タロックツリーに保存し復元する方法を知るためには必要ではない。しかしながら、便利に参照するために簡潔な説明が含まれている。
タロックツリーに保存し復元する方法を知るためには必要ではない。しかしながら、便利に参照するために簡潔な説明が含まれている。
ここで図11のための入力が下記のようなデータレコードを含むことが考慮される:
ビル(Bill) 火曜 40 販売 ペンシルバニア州(PA)
ビル(Bill) 月曜 103 販売 ニュージャージー州(NJ)
ビル(Bill) 月曜 100 試行 ペンシルバニア州(PA)
トム(Tom) 月曜 80 試行 ペンシルバニア州(PA)
トム(Tom) 月曜 13 試行 ニュージャージー州(NJ)
本発明の1つの実施例では、データセット要素は、これに限定されないが空白文字などのデリミッタによって分離された情報のフィールドから構成される。1つの実施例では、上述のように本発明がそのように限定されないことは理解されるが、データセット要素は入力から派生する。入力データでこれまでに遭遇した変数は、セールスマン名(ビルおよびトム)、曜日(月曜、火曜)、品目の個数(40、103、100、80、13)の数、状態(販売、試行)および州(ペンシルバニア州、ニュージャージー州)である。本発明の1つの実施例では、図11のインタロックツリーデータストア1000はこの入力から結果を生じる。図11では、スペース上の理由でノードの第1の部分は示されない。たとえば、ノード1002は「ビル」とラベル付けされるが、ノード1002は実際には「BOT−ビル」を表わす。ノード1004は「火曜」とラベル付けされるが、ノード1004は実際には「BOT−ビル−火曜」を表わす、などと続く。
ビル(Bill) 火曜 40 販売 ペンシルバニア州(PA)
ビル(Bill) 月曜 103 販売 ニュージャージー州(NJ)
ビル(Bill) 月曜 100 試行 ペンシルバニア州(PA)
トム(Tom) 月曜 80 試行 ペンシルバニア州(PA)
トム(Tom) 月曜 13 試行 ニュージャージー州(NJ)
本発明の1つの実施例では、データセット要素は、これに限定されないが空白文字などのデリミッタによって分離された情報のフィールドから構成される。1つの実施例では、上述のように本発明がそのように限定されないことは理解されるが、データセット要素は入力から派生する。入力データでこれまでに遭遇した変数は、セールスマン名(ビルおよびトム)、曜日(月曜、火曜)、品目の個数(40、103、100、80、13)の数、状態(販売、試行)および州(ペンシルバニア州、ニュージャージー州)である。本発明の1つの実施例では、図11のインタロックツリーデータストア1000はこの入力から結果を生じる。図11では、スペース上の理由でノードの第1の部分は示されない。たとえば、ノード1002は「ビル」とラベル付けされるが、ノード1002は実際には「BOT−ビル」を表わす。ノード1004は「火曜」とラベル付けされるが、ノード1004は実際には「BOT−ビル−火曜」を表わす、などと続く。
たとえば、本発明の1つの実施例では、所望のシーケンスを含む経路のサブコンポーネントノードおよび最終製品ノードは、所望のシーケンスを表わす特定の根ノードのasResultリストに包含されるポインタを辿ることにより決定することができる。根ノードのasResultリストがアクセスされ、その根ノードに関連付けられたサブコンポーネントノードまでリストのポインタが辿られる。最終製品が所望の場合、asCase分岐ツリーが分岐の葉ノードまで辿られる。
本発明の1つの実施例では、情報に対するリクエストは制約を指定する形式である(考え方によって「コンテキスト」または「焦点」のいずれかと見なすことができる)。たとえば、情報に対するリクエストは制約リストの形式でもよい。制約リストは入れ子にされても独立していてもよい。本発明の1つの実施例では、リストに記載された各制約の最終製品ノードのasResultリストが見つかり、各制約の各asResultリスト内の各ノードについての経路が見つかり、その経路が最終製品まで辿られて、各制約の各asResultリスト内の各経路についての最終製品の交差が選択される。入れ子にされた制約は、まずデータストアを制約してあるデータの集合を検索し、次にそれがさらに制約されるデータの集合として用いられ、などと続くことにより見つかる。
特定するノードを捜していると言った場合、ANDはすべての人、場所および物事の集合、すなわち、「人」「場所」および「物事」と呼ばれる要素または根ノードによって特定可能なすべてのノードを連結するものを特定する論理演算子である。「物事」である(別の論理演算子)(ARE)すべての「人」および(AND)「場所」は何か、というクエリを与えられたインタロックツリー構造は、回答するため、品目「物事」がどのように特定されようとそれによって制約される。構造を構築する際に物事が全く場所を指さない場合は、クエリでは他のすべての「物事」は見つからないが、インタロックツリー構造において知られているすべての場所は見つかる。構造に組込まれた場合に人が物事として考えられたならば、それもクエリにおいて見つかるであろう。
論理演算子は、AND、OR、NOT、GreaterThan、XNOR、EqualToなどの多くの形式をとることができ、組合わせられてもよい。そのようなすべての
論理演算子および組合わせが本発明において使用可能である。比較を示す数式もコンテキストに当然依存して、使用可能である。100台を越える自動車を販売したセールスマンをすべて見つけることは、たとえば数式が、セールスマンの自動車の販売数>100になるような、比較を示す数式に依存するクエリであり得る。
論理演算子および組合わせが本発明において使用可能である。比較を示す数式もコンテキストに当然依存して、使用可能である。100台を越える自動車を販売したセールスマンをすべて見つけることは、たとえば数式が、セールスマンの自動車の販売数>100になるような、比較を示す数式に依存するクエリであり得る。
本発明の1つの実施例では、保存される情報を決定するために焦点が用いられてもよい。たとえば、センサが文字である2レベルのデータストアの場合には(図12のCATS−ARE−Furryの図が参照され得る)、レベル1の最終製品は単語を含み、レベル2の最終製品は文を含む。中に文字Aを有する文だけを保存したければ、Kを「A」の根ノードへの接続を備えたノードに制約することになる。次いで、最終製品の単語ノードを見つけるために、AからのCaseリンクを通ってこれらの単語を横断しなければならず、そのような各単語があるかについてasResultリストをこれらからチェックする必要がある。次いで、中に文字Aを有する文を見つけるために、指された文からCaseリンクを横断し、それがあるかもしれない文の最終製品ノードを見つける。Aのための図12では、それらの単語906および908の終わりまでそのCaseリンクをそれぞれ辿って、ノード951および952に進む。これらのノード906および908は、ノード953および916に対してasResultポインタをそれぞれ有する。これらのいずれかのノードからそのCaseリンクを辿るとEOSノード902に導かれる。したがって、この例についてはノードをすべて図12に保存するが、他の文字があるのに中にAを備えた単語がなければ、それは明らかにこのような部分的保存の中で失われるであろう。
1つの実施例では、その根としてレベル開始インジケータを有するツリーを辿ることによって、制約で始まるすべての最終製品を見つけることができる(たとえば、特定の文字で始まるすべての単語を見つけることができる)。同様に、特定の制約を備えたすべての最終製品、または特定の位置にある特定の制約(たとえば、その中に特定の文字を有するすべての単語、または特定の列の中に特定の文字を有するすべての単語)を見つけることができる。同様に、根としてレベル終了インジケータを有するツリーを辿ることによって、特定の制約で終了するすべての最終製品(たとえば特定の文字で終わるすべての単語)を見つけることができる。複数の制約および/または焦点が特定されてもよい。
部分的保存については、部分的保存の限界を表示するために任意の制約が保存される必要があり得る。したがって、これを図10のKStoreに関連させ、「月曜のすべての情報」をヘッダに入力することは、保存されたKStoreが月曜の情報のみを包含することを示す。
ここで図11を参照して、火曜に販売された装置の総数がいくつかという質問に対する回答が所望されていると仮定する。本発明の1つの実施例では、この情報の検索が、データストア全体のすべてのノードを横断するのではなく、根ノード1054および1055のasResultリストの検索しか必要としないことが当業者には明らかであろう。火曜1054を表わす根ノードがノード1004を指すので最終製品ノードl030への経路5が横断され、販売1055を表わす根ノードがノード1028を指すので最終製品ノード1040への経路4が横断される。販売根ノード1055がノード1026も指すので、経路5も横断される。経路1 1080、経路2 1070、および経路3 1060を横断する必要はない。根ノード1054および1055が指す経路を辿ることから戻る最終製品の集合の交差は、ビル火曜40販売ペンシルバニア州を表わすノード1030を含む。
入れ子にされた制約は、まずデータストアを制約してデータの集合を検索し、次いでそれがさらに制約されるデータの集合として用いられ、などと続くことによって見つかる。入れ子にされた探索を行うためには、根ノード1065から、制約のうち1つ、たとえばSOLDで始める。2つの特定された最終製品ノード1030および1040から戻りな
がら追跡するとそのうち1つのみに至るが、それは1030のCase経路からの、ノードTUESDAYを有する1004である。このように、この代替的手順でも同じ結果を得る。
がら追跡するとそのうち1つのみに至るが、それは1030のCase経路からの、ノードTUESDAYを有する1004である。このように、この代替的手順でも同じ結果を得る。
ここで図3を参照すると、本発明の実施例と一致する、ノードからの情報を記憶するために必要とされるフィールドを包含しているノードパケットが記述される。タイプ2のノードパケット220の第1のフィールドはパケット長フィールド211である。このフィールドは絶対に必要というわけではないが、パケットをノードに復元する際通り抜けて行かねばならないために有用であり、次のパケットがどこで開始するかを表示する。ほとんどの場合、パケットサイズはパケットの各フィールドのメモリアドレスに固定されるが、すべてのタイプのパケットにこのフィールドが示される。次のフィールドはケースポインタフィールド212であって、当然ながら、図9の説明のノード30であるCaseノードへのポインタに関連する。次のフィールドはResultポインタ213であって、図9のノードの、Resultノードへのポインタを包含している。付加的なフィールド214は簡潔さのためにここでは簡略化され、図9のノード30の値フィールドと同様に任意の付加的なフィールドを含んでいてもよい。フィールド215は古いノードアドレスを包含する。
タイプ1のノードパケット200は図4に示される。これはパケット長201、Caseポインタ202、Resultポインタ203、付加的なフィールド204および古いノードアドレス207、に対応するフィールドを有する。さらにこれはasCaseポインタリストカウントおよびasResultポインタリストカウント205および206のためのフィールドを有する。これらのカウントは、復元を行うときに割当てが必要なメモリのサイズ合計を決定することを助けるよう用いることができる。上述されたように、BOTノードおよびサブコンポーネントノードはasCaseポインタリストを有し、根ノードだけがasResultリストを有するので、フィールド205および206のためには1つのカウントしか実際には必要ではない。しかしながら、このタイプ1のノードを用いる場合、ノードをパケットに処理するためのアルゴリズムがより簡単である。根ノードは、要素的根ノード(しかし一種の要素的根ノードであるBOTではない)または最終製品ノードのいずれかとして規定されることが明らかである。
しかしながら、タイプ1のノードパケットを用いることができるいかなる状況においてもタイプ3のノードパケットを代わりに用いることができ、それはasResultリストポインタまたはasCaseリストポインタのいずれかのカウントを保持するために単一のフィールド「ポインタリストカウント」リストカウントを有する。したがって図5では、任意のノードから作られたパケットは、パケット長フィールド231、Caseポインタフィールド232、Resultポインタフィールド233、付加的なフィールド234、ポインタリストカウント235および古いノードアドレスフィールド237を有するパケット230のようであり得る。
特許出願番号第10/385,421号および第10/666,382号のインタロックツリーデータストアの好ましい実施例の説明からわかるように、asCaseポインタリストは、asResultポインタリストと同様、それ自体ノードに直接記憶されたのではなく、ノードにおけるポインタがリストが記憶された領域を表示したのである。しかしながら、米国特許出願番号第10/759,466号に記載された最初の「保存および復元」の発明においては、そのアドレスを有するノードとともにasCaseポインタリストを保存することが好ましかった。インタロックツリーデータストア構造を復元することができるように各ノードを保存するための好ましい実施例を用いる際に、この発明ではasCaseリストおよびAsResultリストは保存されない。そうではなく、復元プロセスの好ましい実施例では、asCaseポインタおよびasResultポインタの保存されたリストに依存する必要なく復元が行われる。
現在の発明はさらに3つの異なるタイプのノードパケットを利用することもできる。第1のタイプ、タイプ1のノードパケットは、asCaseリストポインタカウントおよびasResultリストポインタカウントの両方を包含する。タイプ3と呼ばれるタイプ1の変形は、2つのポインタリストカウントの代わりに1つのポインタリストカウントを包含する(1つはヌル値になるからである)。最後のタイプ、タイプ2はいかなるポインタリストカウントも全く有しない。したがって、タイプ1および3のパケットを形成するノードはasCaseおよび/またはasResultリストを有し、タイプ2を形成するノードは有さない。これらのカウントを得るためには、ポインタリストが記憶されているところがどこであってもそこへ行かねばならず、リンクされたリスト内である場合、リンクを辿ることによって、またはリンクされたリストにおける何らかのヘッダ情報によって、このリストのポインタのカウントを得る。したがって、それが1つのステップおよび一層の処理の両方を減じるので、一般にこれらのポインタリストのいかなる使用も必要としないタイプ2パケットを用いることが好まれる。ここでも、タイプ1のノードパケットが構築されていればasCaseポインタリストまたはasResultポインタリストのためのカウンタのいずれかを有するが、両方ではない。したがって、タイプ3ノードパケットの使用も可能になり、いずれのタイプであったとしても、それはポインタリストカウントと呼ばれるフィールドに非ヌルのカウントを入れる。ここでも、いずれのノードパケットタイプも交換可能に利用され得ることが認識され得るが、asCaseリストおよびasResultリストのタイプおよびサイズは、あるノードパケットタイプの1つの実現例が他のノードパケットタイプより効率的であるような状況を生成し得る。asCaseポインタリストおよびasResultポインタリストが、アレイを用いて実現されるか、経験によって決定されるように比較的大きいか、または静的なデータベースから構築される場合、パケット長、任意の付加的なフィールド、Caseポインタ、Resultポインタ、および、ポインタリストカウントもしくはasCaseポインタリストカウントおよびasResultポインタリストカウントのいずれか、ならびにノードの古いアドレスを包含するタイプ1もしくはタイプ3のノードパケットが用いられるべきである。asCaseポインタリストおよびasResultポインタリストが短いリンクされたリストを用いて実現される場合、経験によって決定されるように比較的小さい場合、または動的なデータベースから構築される場合は、パケット長、任意の付加的なフィールド、Resultポインタ、Caseポインタ、およびノードの古いアドレスを包含するタイプ2のノードパケットが用いられてもよい。
当然ながら、ノードのタイプ(および、したがって、ポインタリストカウントがasCaseかまたはasResultか)は、それが何にリンクされるか、およびそれに何がリンクされるかによって決定され得ることに注意されるべきである。
復元されたKに必要とされるメモリを割付けるとき、最初にKを生成したときに用いたものと同じプロセスを用いる。リンクされたリストについては、必要に応じて、新しいリンクのためにメモリを割付ける。アレイについては、最初のサイズから始めて必要に応じて漸増的にサイズ変更する。
さらに、2つのタイプのパケット、タイプ1およびタイプ2、またはタイプ3およびタイプ2を生成する保存ルーチンを有し、そこでタイプ2をサブコンポーネントノードのために、タイプ1もしくは3をasCaseリストポインタもしくはasResultリストポインタを備えたノードのために、用いることも可能である。ノードの読取りに基づいていずれのタイプのパケットが最適かを確かめるためにパケットチェックを設定するアルゴリズムを単に用いることもできる。組合わせを用うことを望むかもしれないいかなる場合でもタイプ1のパケットとタイプ3のパケットとの使用の組合わせは好ましくなのは明らかであるが、前に説明した理由で、単一の保存されたKにおいて2つのタイプのノードパケットを組合わせるのが好ましくないことに注意するべきである。サブコンポーネントノードはasCase
リストを有するが、これらは要素的ノードまたは最終製品ノード用のものより小さなリストになると思われる。したがって、タイプ2は最もあり得る状況ではそれらのノードについてより適しているであろう。
リストを有するが、これらは要素的ノードまたは最終製品ノード用のものより小さなリストになると思われる。したがって、タイプ2は最もあり得る状況ではそれらのノードについてより適しているであろう。
保存される装置の基礎的な構造が理解されたので、ここで保存を行うプロセスの説明を続ける。
ここで図6を参照して、フロー図70が本発明の保存部分の好ましい実施例を示す。ユーザまたはシステムがステップ71で保存を開始することを決定すると、始まる。クエリ73において部分的保存または完全な保存が予想されることが決定され、ままた示される。KStoreの構築において、考慮中の特定のKStoreインスタンスを記述する1組のメタデータ72が生成される。部分的保存が選択されていると仮定すると、所望のサイズ、根ノードの詳細、および保存に必要なKStoreの部分の他の局面に関するユーザ入力74(自動システムから来る場合はユーザ入力と考えることもできる)が、このプロセスについて利用可能になる。
ステップ75において、Kstoreデータ構造の保存を可能にするための3つの方法論のうちの少なくとも1つが選択される。それが部分的保存でない場合、方法論のこの選択は、KStoreデータ構造上の制約に関するユーザ入力なしで生じるであろう。ユーザが選択できるか、またはKStoreの公知のパラメータに基づいてユーザのために選択されることができる。たとえば、非常に大きいasCaseリストを備えたKであることがわかっている場合、好ましい保存の方法は、復元の際これらが再建されることを可能にし、その結果、すべてのノードについてタイプ2のノードパケットの選択がされるようにして、これらのリストを追跡する必要性をなくすことであろう。ユーザは、各ノードがasCaseリストポインタまたはasResultポインタについて非ヌル値を備えているか否かを確かめる、より複雑な保存アルゴリズムを選択してもよく、その値が非ヌルである場合は、タイプ1またはタイプ3のノードパケットを構築するが、値がヌルである場合は、これらのノードについてタイプ2のノードパケットを構築してもよい。または、方法は、単にタイプ1またはタイプ3のノードパケットを用いることを選択し、検査中のノードにasCaseリストポインタもしくはasResultリストポインタがない場合は、ヌル値を記憶してもよい。方法論の選択の別の主な局面は、パケットに形成されるノードの各々を見つけるためにKを横断する順序を決定することである。
本発明の好ましい形式では、メタデータのさまざまな局面を含む支持構造は、後(ステップ84またはその近くなど)で行うことも可能ではあるが、ステップ76でまず保存されなければならない。このステップでは、図13に関して上述されたパケット内パケットのフォーマットで情報を保存してもよく、または当業者が便利であると考える別の方法によってそのような情報を保存することができる。パケット内パケットの技術を用いれば、またはこれも上述したように層で保存するか、もしくはその両方をした場合
、各層について次のステップに従い、次にステップ76に戻って次の層の保存を開始することができる。次の層を保存する際、ステップ77およびこの次の層の中のすべてのノード(またはパケットに属する種類の少なくともすべてのノード、次にこの層から構築され得る他のパケットにおけるノード)を保存する反復的なプロセスに再び移る前に、この次の層の中のすべてのノードについてのいかなる情報をもここでも保存する。ステップ77において、ノードおよびKStoreデータ構造の大部分が保存される。現在において好ましくない方法論がKStore構造の保存のために選択される場合、シングルステップでステップ77を完了することが可能である。メモリ画像をすべての完全なメモリアドレスとともに保存することができ、同じ位置に復元することができる場合、ステップ77はシングルステップとして達成され得る。しかしながら、これは部分的保存の場合には可能ではないと思われ、あるコンピュータから別のコンピュータへKStore構造が移動さ
れるか、または、保存構造がメインメモリ内で復元され得る正確な位置について制御ができないような状況でも、可能ではない。ステップ77において、第1のステップは、ステップ78において、選択された方法論によって提示された第1のノードから始めることであり、ステップ79において、古いアドレスを見つけてそのノードのメインメモリから保存し、かつ利用されるノードパケットのタイプに依存して、このノードの特定のフィールドとともに保存することである。タイプ1のノードパケットが用いられる場合、Caseポインタ、Resultポインタ、付加的なフィールド、asCaseポインタリストカウント、asResultポインタリストカウントおよび古いアドレスがタイプ1パケットに保存され得る。タイプ2のノードパケットを用いる場合、Caseポインタ、Resultポインタ、付加的なフィールドおよび古いノードアドレスが保存され得る。好ましい実施例では、asCaseリストおよびasResultリストは保存されないが、下記に記述される好ましい復元プロセスに説明されるように再構築される。タイプ3のノードパケットが用いられる場合、Caseポインタ、Resultポインタ、付加的なフィールド、ポインタリストカウントポインタリストカウントおよび古いアドレスが保存され得る。記憶されたデータ構造の究極的なサイズが、メタデータリソースを備えたヘッダおよび連続的な態様でその後ろに続くデータパケットまたは他の同様の構造から構成されるように、このノードのために保存されているパケットのサイズがこの時点で決定されるのが好ましい。こうして、パケットの各々についてステップ81が達成され、パケットのすべてのサイズの合計を、それが準備されている間にパケットの各々のサイズを単純に合計することにより直ちに知ることができる。
、各層について次のステップに従い、次にステップ76に戻って次の層の保存を開始することができる。次の層を保存する際、ステップ77およびこの次の層の中のすべてのノード(またはパケットに属する種類の少なくともすべてのノード、次にこの層から構築され得る他のパケットにおけるノード)を保存する反復的なプロセスに再び移る前に、この次の層の中のすべてのノードについてのいかなる情報をもここでも保存する。ステップ77において、ノードおよびKStoreデータ構造の大部分が保存される。現在において好ましくない方法論がKStore構造の保存のために選択される場合、シングルステップでステップ77を完了することが可能である。メモリ画像をすべての完全なメモリアドレスとともに保存することができ、同じ位置に復元することができる場合、ステップ77はシングルステップとして達成され得る。しかしながら、これは部分的保存の場合には可能ではないと思われ、あるコンピュータから別のコンピュータへKStore構造が移動さ
れるか、または、保存構造がメインメモリ内で復元され得る正確な位置について制御ができないような状況でも、可能ではない。ステップ77において、第1のステップは、ステップ78において、選択された方法論によって提示された第1のノードから始めることであり、ステップ79において、古いアドレスを見つけてそのノードのメインメモリから保存し、かつ利用されるノードパケットのタイプに依存して、このノードの特定のフィールドとともに保存することである。タイプ1のノードパケットが用いられる場合、Caseポインタ、Resultポインタ、付加的なフィールド、asCaseポインタリストカウント、asResultポインタリストカウントおよび古いアドレスがタイプ1パケットに保存され得る。タイプ2のノードパケットを用いる場合、Caseポインタ、Resultポインタ、付加的なフィールドおよび古いノードアドレスが保存され得る。好ましい実施例では、asCaseリストおよびasResultリストは保存されないが、下記に記述される好ましい復元プロセスに説明されるように再構築される。タイプ3のノードパケットが用いられる場合、Caseポインタ、Resultポインタ、付加的なフィールド、ポインタリストカウントポインタリストカウントおよび古いアドレスが保存され得る。記憶されたデータ構造の究極的なサイズが、メタデータリソースを備えたヘッダおよび連続的な態様でその後ろに続くデータパケットまたは他の同様の構造から構成されるように、このノードのために保存されているパケットのサイズがこの時点で決定されるのが好ましい。こうして、パケットの各々についてステップ81が達成され、パケットのすべてのサイズの合計を、それが準備されている間にパケットの各々のサイズを単純に合計することにより直ちに知ることができる。
KStoreがコンピュータシステムを用いる唯一のアプリケーションである状況にあれば、いかなる中間のIO機能も発生しないことを知ってアトミックな態様で保存を達成することが可能である。しかしながら、今日のコンピュータシステム環境においては通常はこのような状況ではない。したがって、図3から図5は、KStoreパケットの中間データ構造を示し、タイプ1から3のヘッダは、タイプ2のパケットのKstoreパケットの中間データ構造を示し、ヘッダはディスクドライブまたは他の永久データ記憶装置にアトミックな方法(一度に1つのパケット)で保存する準備ができている。
ステップ79および81において、ノードパケットを準備し、ノードパケットのサイズを決定した後に、選択された方法論に一致したこのKStore内に、および/またはステップ74で選択された制約内に、保存するべき他のノードがあるか否かという疑問に答えなければならない。回答が「はい」であると仮定すると、ステップ82は、保存アルゴリズムの方法論にしたがって次のノードに移る。これらの方法論は後述される。
保存するノードがこれ以上ない場合、復元される必要のあるKStore構造のサイズの合計はステップ84で決定され得、それに続いてKStore構造が保存される準備がされ、保存され得る。カウンタが用いられる場合、ノードパケットが生成されるごとにこのステップが部分的な態様で起こり得る。その場合には、このステップは、単純にカウンタにおける合計を読取ってもよい。プログラミングを容易にするために、すべての根ノードならびにEOTノードおよびBOTノードに索引またはラベルを付けてもよく、その結果、復元プロセスにおいてこれらを最初に見つけることができ、asCaseリストおよびasResultリストを備えたノードからの復元を最初にすることが可能になるので、復元プロセスが単純化される。
ステップ75に関して簡潔に上述されたように、保存プロセスを導くいくつかの方法があり得る。選ばれた方法が適宜選択され得る。メモリ全体交換プロセスではなく正常な保存を用いていると仮定すると、そのプロセスは、永久記憶装置にノードパケットまたはパケットのグループを書込む前に少なくとも3つのステップを有する。自動またはユーザ支援されたプロセスであり得る、支持構造を保存するステップである。また横断するステップがなければならず、そこでプロセスは個々の関連するノードにアクセスする(いくつか
のノードは部分的保存において排除され得るが、そうでなければ、本質的にすべてのノードがアクセスされる)。次いで、各ノードからの情報が保存用のパケットに変換されなければならない。次に保存プロセスを行うことができ、この構造が実行されているハードウェアおよびソフトウェアによる必要に応じて採用される、任意のハウスキーピングシステムを利用する。
のノードは部分的保存において排除され得るが、そうでなければ、本質的にすべてのノードがアクセスされる)。次いで、各ノードからの情報が保存用のパケットに変換されなければならない。次に保存プロセスを行うことができ、この構造が実行されているハードウェアおよびソフトウェアによる必要に応じて採用される、任意のハウスキーピングシステムを利用する。
1つのレベルから開始して次のより高いレベルに移ることにより保存する場合、復元プロセスは単一パスで実行できるが、その一方、その方法で保存を行わない(この特許に記述されるすべてである)asCaseノードおよびasResultノードへの実際のポインタを保存しない任意のノードパケットタイプを用いる場合、反復的な処理を行うことなくポインタを組立て直すことが依然困難であることに注意されたい。
支持構造の保存は、いずれの情報の構造がインタロックツリーデータストアで保存されるかを決定することをまず必要とする。これは以下のような構造を含み得るがこれらに限定されない。作成日、KStoreファイルIDなどを包含しているファイルヘッダ、要素的根ノード(またはセンサ)のリスト、BOT−EOTモナド(monads)を表わすストリングのリスト、または恐らくインタロックツリーデータ構造に包含された考察終了ノード(モナド)のリストのみ、それが存在する基礎をなすOSまたはコンピュータシステムのデータ構造について記述し得るものなどのメタデータ、もしあればパスワード保護、ポインタのリストがいかにノード内で順序付けられるか、および、構造を復元するかまたは保存されている構造における情報のアドレスを決定するために必要ならばそのような性質のあらゆる情報、である。さらに、ヘッダは、K状態変数(いくつの付加的なフィールドがノード内でサポートされるか、いかなる種類のクエリが起こっているか、asCaseリストおよびasResultリストがいかに構造化されるか、データソース、スイッチ、およびデータストリームなど)、および/または、どのソースがクエリを受取るべきか、かつ/またはそこから情報を得るべきかを識別するフックなどのデータソース記述子を保存する。当然ながらこのデータはすべて、用いられているコンピュータシステムのOSおよび他の機能の必要に応じて、書込みおよび検索のためにフォーマットされるべきである。また、KStoreがXMLフォーマットまたはアクセスを有する場合、KStore自体が(恐らく)それ自身についてのその情報を知らないので、その種の情報もまた記憶されるべきである。
こうして、ヘッダで見つけられると考えられる項目をリストにすると、ヘッダ記録は以下を包含し得る:
作成日
保存ファイルを作成した保存プログラムのバージョン/サイクル
ハードウェア構成(CPU型など)
OS−オペレーションシステム
基礎をなす構造情報(フィールドのサイズ)
サイン構造情報、「その他」構造の下に保存されない場合は、情報センサ
レベルおよび関連付けられたデリミッタ
メタデータ−フィールドタイプ(ユーザ規定タイプを含む)、コラム記述、許可など
kState変数−スイッチ、データストリーム、サイン構造情報(たとえばasCaseリストについての特別な順序付け)
データソース(タイプ、位置、関連するデータストリーム)−新しい知識セキュリティ(管理者およびユーザパスワード、許可、保存されたクエリ位置、トリガ)の学習のため。
作成日
保存ファイルを作成した保存プログラムのバージョン/サイクル
ハードウェア構成(CPU型など)
OS−オペレーションシステム
基礎をなす構造情報(フィールドのサイズ)
サイン構造情報、「その他」構造の下に保存されない場合は、情報センサ
レベルおよび関連付けられたデリミッタ
メタデータ−フィールドタイプ(ユーザ規定タイプを含む)、コラム記述、許可など
kState変数−スイッチ、データストリーム、サイン構造情報(たとえばasCaseリストについての特別な順序付け)
データソース(タイプ、位置、関連するデータストリーム)−新しい知識セキュリティ(管理者およびユーザパスワード、許可、保存されたクエリ位置、トリガ)の学習のため。
ここで、KStoreインタロックツリーデータストア構造を保存するための代替的横断方法について説明する。
各一次根ノードのasCase経路に沿った連続するツリー横断を用いて、一次根から開始する各ノードにアクセスするためにインタロックツリーデータストアを横断する。たとえば、図11の一次根ノードBOT1050から始めれば、まずビルまで行き、EOTノード1030、1040および1060へのビルのすべての経路を得、次に、EOTノード1061へのすべてのリンクに到達するまでトムおよびトムのEOTノードまで行く。この時点で、要素的根ノードを除いてすべてのノードがアクセスされている。要素的根ノード値およびポインタのファイルがあり、それはこのようにアクセスすることができることを思い出されたい。よりよい例は図12に見ることができる。この図を用いた好ましい実施例では、第1の910レベルから始め、センサ(要素的根ノード)をまず保存し、次に第1のレベル(単語)、そして次のレベル(文)、などと続く。BOT901およびEOT903とともにセンサC、A、T、S、R、E、F、U、Yを保存する。これらはすべてのasCaseポインタおよびasResultポインタを有するので、保存中にこれが構築される場合、KStoreのためのすべての古いアドレスはその古いアドレスリストに入力される。次に、すべてのサブコンポーネントノードを含む、単語CATS、AREおよびFURRYのノードを保存する。次いで、第2のレベル912からBOS根ノードおよびEOS根ノードを保存する。ここで、904と905との間の新しいノード、および最後に文の層912のための最終製品ノード、ノード902を保存する。
最終製品ノードから各ノードにアクセスするためにインタロックツリーデータストアを横断することが第2の方法である。それらはすべてEOTノード1061を通してアクセス可能である。したがって、部分的保存は、最終製品ノードの所望の制約リストを通してKStoreを横断することによって実行することができる。
根ノードから各ノードにアクセスするためにインタロックツリーデータストアを横断することが、インタロックツリーデータストア構造を横断する第3の方法である。したがって、部分的保存は、根ノードの所望の制約リストを通してKStoreを横断し、所望の制約リストの根ノードの各々からすべてのasCaseリンクを辿ることによって、実行することができる
復元プロセスの流れ。
復元プロセスの流れ。
図7は、プロセスが完了するまでの、復元プロセス320の好ましい実施例を示す。所望であれば、他のいくつかのプロセスについて鳩尾型(dove-tailed)となってもよい。復元プロセスの好ましい実施例では、321でインタロックツリーデータストア(ここではKと略する)が回復される前に必要とされる支持構造がまず読取られる。これはいかなるパーティクルがこのK(しばしば要素的根ノードまたはセンサまたはセンサリストと称される)に知られているか、このKについてメモリにいかなるサイズの割当てが必要か、このKをアドレスするKEngineによって扱われ得る内部トリガおよび他の機能があるか否かなどの情報を含んでいてもよい。ユーザが常に同じ支持構造を同じ種類のKStoreに復元するような状況であれば、このステップは、それが毎度同じ支持構造で復元されると仮定される点で、余分かもしれない。KStoresが現在広い使用法を有しないとすれば、プロセス321が無益でない限り、また無益となる状況になるまでは、標準としてプロセス321を用いることが好ましい。インタロックツリーデータストアを復元するためにはノードパケットをすべて復元しなければならず、それらが次々に記憶されるので、復元の最も容易な形式は、それらが保存上に生成されたのと同じ順序で連続して復元することであろう。復元中に、ポインタの以前のアドレスから古いメモリ位置へ、新しいメモリ位置への変更を反復的に検索することを回避して復元プロセスを促進するために、既に復元されたノードを参照するasCaseリストまたはasResultリストを有するノードから始めることが好ましい。プログラミング技術の当業者は、この説明が、特に次のいくつかの段落とともに読まれた場合、これらの方法を実行するために必要なコードを生成する
ための必要以上の実験に頼らずに、この復元動作を行ういくつかの方法について説明していることを理解するだろう。
ための必要以上の実験に頼らずに、この復元動作を行ういくつかの方法について説明していることを理解するだろう。
したがって、まず第1のノードパケットを322で読取り、用いているコンピュータのオペレーティングシステムを用いてステップ323においてこの新しいノードにメモリを割当てる。323でノードにメモリを割当てた後、ノードパケットとともに記憶された古いメモリアドレスおよびオペレーティングシステムまたはコンピュータシステムが今しがたこのノードに割当てた新しいメモリアドレスを用いて、このノードのための変換表および変換表エントリを324で作成するか、または作成し始める(図7を参照)。
ところで、メモリのブロック全体を透明に確実に動かすことができる機械およびオペレーティングシステムについて、単一のユニットとしての考慮中のデータストアのサイズが同じメモリアドレスに割当てられ、このようなシステムではここで記述したような詳細な保存および復元プロセスの必要がないが、部分的保存のため、また、このようなブロック全体の保存にわたって必要とされる記憶装置のサイズを減じるために役立つかもしれないことが認識されるべきである。しかしながら、現在のところ、説明されたが完全には実現されていないいくつかのメモリファイルタイプがあり、そのため、より複雑な保存に依存して、本発明に記述されるような復元機構が必要となる。
一旦ノードの古いアドレスおよび新しいアドレスを包含しているノード表エントリが生成されて変換表に324で入力されると、次にステップ325に移り、そこでCaseポインタおよびResultポインタを変換し、任意の付加的なフィールドとともに、変換されたCaseポインタおよびResultポインタを新しいノードに記憶する。この復元のバージョンについては、CaseポインタおよびResultポインタのために古いアドレスを直ちに調べる。それらは、それが必要となる前に変換アドレスレスリストに現われるような順に意図的に保存されている。
上述のように、本発明の好ましい実施例はasCaseリストまたはasResultリストを保存しないが、その代わり、それらに関連するものは何も保存しないか、または代替的には、ポインタのカウントをリストに保存する。asCaseリストおよびasResultリストとそれぞれのポインタとを再構築するために、復元プロセスはステップ326に進む。ステップ326において、復元プロセスは、CaseノードのasCaseリストの中に新しいノードアドレスを記憶し、復元されているノードのResultノードのasResultリストの中に新しいノードアドレスを記憶する。復元される第1のノードの新しいアドレス、すなわちEOTノードおよび他のタイプの要素的根ノードは、好ましくはステップ321の一部として確立され、その結果、新しいノードがノードパケットから確立されるとき、それらは第2の反復的プロセスなしに、これらのEOTノードおよび要素的根ノードのための新しいアドレスに直接指されることができるが、そのような処理は本発明の範囲外にあるわけではない。ただ好ましくないだけである。
一旦、新しいノードアドレスがそれぞれのasCaseリストまたはasResultリストに記憶されれば、好ましい復元方法はステップ327に進み、そこで問題のノードパケットが復元される最後のノードパケットであるか否かが決定される。ノードパケットが復元される最後のノードパケットでない場合、プロセスはステップ322に続き、新しいノードパケットが処理される。最後のノードパケットが処理されている場合、ステップ327の質問を越えて進むことができる。これは、最後の質問327でノードパケットに到達するまで継続する、反復的なプロセスである。この時点で、インタロックツリーデータ構造は、新しいメモリに復元されていなければならない。
アドレス変換表40が図8に示される。そこでは、たとえば古いメモリアドレス1(4
1a)が新しいメモリアドレス1(42a)に対応する、といったように、古いメモリアドレスリスト41が新しいメモリアドレスリスト42に対応して示される。このように、古いメモリアドレスが用いられる度に、すなわち復元される度に、復元されているノード/パケットがロードされる新しいアドレスがメモリアドレス変換表40において維持され、古いメモリアドレスにリンクされる。好ましくはこの表がステップ328で完成した後、このアドレス変換表への参照を必要とし得る任意の追加的支持構造が設定される。この時点で復元されたKがあり、このプロセス329から出ることができる。
1a)が新しいメモリアドレス1(42a)に対応する、といったように、古いメモリアドレスリスト41が新しいメモリアドレスリスト42に対応して示される。このように、古いメモリアドレスが用いられる度に、すなわち復元される度に、復元されているノード/パケットがロードされる新しいアドレスがメモリアドレス変換表40において維持され、古いメモリアドレスにリンクされる。好ましくはこの表がステップ328で完成した後、このアドレス変換表への参照を必要とし得る任意の追加的支持構造が設定される。この時点で復元されたKがあり、このプロセス329から出ることができる。
さらに、KStoreの再構築において、すなわちそれを復元すると、要素的根ノードからのデータをまず復元することができ、したがって、要素的根ノードの確立がリンクの大きいネットワークを素早く確立するので、復元を実行するプロセスがより迅速になる。
上述の方法およびシステムは、フロッピー(登録商標)ディスケット、CD−ROM、DVD−ROM、DVD−RAM、ハードディスクドライブ、または、利用可能になる光学的およびナノテクノロジーの記憶装置などを含むあらゆる他の機械可読の記憶媒体などのコンピュータ読取可能な媒体に記憶されたプログラムコード(すなわち命令)の形式で具体化されてもよい。なぜならば媒体は本願明細書に記述されたような構造も動作も方法も変更しないに違いないからである。すべてのこのようなデータ記憶装置において、プログラムコードがコンピュータなどの機械にロードされ、それによって実行されるとき、機械はこの発明の方法を実行するための装置となり、本願明細書に記述されるような発明のシステムの形式を与える。本発明も、インターネットまたはイントラネットを含むネットワークを通して、または任意の他の伝送形式を介して、RFまたは電線もしくはケーブルなどを通し、光ファイバを通して、もしくは明瞭な光学において何らかの伝送媒体を通して送信されるプログラムコードの形式で具体化されてもよく、そこで、プログラムコードがコンピュータなどの機械に受取られ、ロードされ、それによって実行されるとき、機械は、発明の方法を実行するための装置となり、本願明細書に記述される発明のシステムの形式を与える。汎用プロセッサ上で実現されると、プログラムコードはプロセッサと組合わさって特定の論理回路に類似して作動する一意の装置を与え、それ自体が発明に使用することができる。プログラムコードは、たとえばC、C++またはJava(登録商標)などの高レベルプログラミング言語で実現されてもよい。代替的には、プログラムコードはアセンブリまたは機械言語で実現されてもよい。いかなる場合も、言語はコンパイルされ、または解釈された言語であり得る。
前述の例が単に説明の目的で与えられており、本発明を限定するものとして解釈されてはならないことに注意されたい。たとえば、KStoreインタロックツリーデータストアは、オブジェクト指向の技術、手続的技術、それらの複合、または他の適切な方法論を用いて実現することができる。さらに、示されたこれらの例はコンピュータシステムのメモリに記憶されたデータセット要素を示すが、当業者は、さまざまな方法でこの機能を実現することができ、汎用コンピュータシステムであっても特定目的用の装置であっても用いることができることを理解するであろう。考慮されたさまざまな実施例については、本発明では、遠隔に位置する複数の機械に記憶される多くの異なる母集団のデータセット要素の多くの異なる集合の使用が考慮される。
Claims (40)
- インタロックツリーデータストアをメモリから保存する方法であって、前記インタロックツリーデータストアは、少なくとも1つのBOTノードと、少なくとも1つのサブコンポーネントノードと、少なくとも複数の根ノードとを含み、前記BOTノードは、サブコンポーネントノードへのasCaseポインタのリストを有し、前記サブコンポーネントノードは他のサブコンポーネントノードへのasCaseポインタのリストを有し、前記根ノードは、前記BOTノードに従属した、サブコンポーネントノードへのasResultポインタのリストを有し、前記方法は、
各ノードにアクセスするために前記インタロックツリーデータストアを横断するステップと、
各ノードのためにノードパケットを生成するステップとを含み、前記ノードパケット生成プロセスは、各ノードについてcaseポインタおよびresultポインタを少なくとも捉えるステップを含むが、前記asCaseリストからのポインタを捉えず、前記asResultリストからのポインタも捉えず、別のメモリに前記ノードパケットを書込むステップを含む、方法。 - 1つのメモリから別のメモリに書込む前記ステップは、前記1つのメモリとして主要メモリを用いて達成される、請求項1に記載の方法。
- 前記書込むステップは、相対に永久かつコンピュータによって検索可能であるタイプのメモリと、前記1つのメモリを収容する機械にローカルであるメモリと、ネットワークを通じてアクセス可能なシステムにおける離れたメモリと、区分された機械における区分メモリと、前記1つのメモリの別の部分と、を含むメモリのタイプのうち少なくとも1つに行なわれる、請求項1に記載の方法。
- 前記ノードパケットをアクティブメモリに復元するステップをさらに含む、請求項1に記載の方法。
- 前記ノードのパケットの少なくともいくつかはより大きなパケットに保存され、前記より大きなパケットは別のメモリに書込まれ、前記より大きなパケットは前記ノードについてのメタデータを用いて書込まれる、請求項1に記載の方法。
- ノードパケットプロセスを生成する前記ステップは、asCaseポインタリストおよびasResultポインタリストのポインタのカウントを、それらを有するあらゆるノードから捉えるステップをさらに含む、請求項1に記載の方法。
- 前記捉えるステップは、カウントを決定するためにリスト上でポインタをカウントするステップを含む、請求項6に記載の方法。
- ノードパケットタイプを選択するステップをさらに含み、そこへ、ノードパケットプロセスを生成する前記ステップにおいて前記ノードからの情報が記憶される、請求項1に記載の方法。
- 前記選択プロセスは、そこから選択するために最大3つのタイプのノードパケットを与え、前記3つのタイプは、asCaseポインタリストについてもasResultポインタリストについても情報を有さない第2のタイプと、asCaseポインタリストのポインタのカウントを保持するためのフィールドおよびasResultポインタリストのポインタのカウントを保持するためのフィールドを有する第1のタイプと、asCaseポインタリストのポインタまたはasResultポインタリストのポインタのいずれかのカウントを保持するが両方は保持しないフィールドを有する第3のタイプとを含む、請求項8に記載の方法。
- 前記第3のタイプのノードパケットは、前記保持されるポインタリストカウントをポインタリストカウントと呼ばれるフィールドに記憶する、請求項9に記載の方法。
- 選択のための少なくとも1つのタイプは、asCaseポインタリストについての情報もaSResultポインタリストについての情報を有さないノードパケットである、請求項9に記載の方法。
- 選択のための少なくとも1つのタイプは、asCaseポインタリストのポインタのカウントを保持するためのフィールドおよびasResultポインタリストのポインタのカウントを保持するためのフィールドを有するパケットである、請求項9に記載の方法。
- 選択のための少なくとも1つのタイプは、asCaseポインタリストのポインタのカウントを保持するフィールドまたはasResultポインタリストのポインタのカウントを保持するフィールドのいずれかを有するが両方の値は有さないパケットである、請求項9に記載の方法。
- 支持構造を保存するステップをさらに含む、請求項1に記載の方法。
- 前記支持構造を保存する前記ステップは、復元プロセス中にアドレス変換表が構築される前に復元され得るあらゆる支持構造を保存する第1のステップと、残りのすべてのノードパケットが復元されてアドレス変換表が完成された後に用いられ得るあらゆる支持構造を保存する第2のステップとの、2つのステップにおいて行なわれる、請求項14に記載の方法。
- さらに保存される前記支持構造は、
ファイルタイプおよび作成日を包含するファイルヘッダと、
ファイルIDと、
要素的根ノードの値またはその値を指すそれらのアドレスのリストと、
インタロックツリーデータストアの最終製品ノードを表わすストリングのリストと、
それが存在する基礎となるOSまたはコンピュータシステムのデータ構造を記述するメタデータと、
ファイル自体に対するパスワード保護と、
ポインタのリストがノード内でいかに順序付けられるかを特定するコードと、
特定の環境において構造を復元するために必要となり得るその性質の情報と、
保存されている構造における情報のアドレスの決定を可能にする性質の情報と、
保存ファイルを生成した保存プログラムのバージョンおよびサイクルと、
用いられた情報のフィールドの少なくともサイズを含むOS基礎構造情報と、
基本根ノード値またはその値へのポインタおよびあらゆる関連するデリミタと、
ユーザ定義タイプ、コラム記述子および許可などのフィールドタイプを含むメタデータと、
スイッチ、データストリーム、ノード構造を含むKState変数と、
タイプの位置および関連するデータストリームのID情報を含むデータソース、管理パスワード、許可、保存されたクエリ場所およびトリガを含むセキュリティ機能と、
XML関連メタデータと、
の支持構造うちの少なくとも1つを含む、請求項14に記載の方法。 - 少なくとも、
resultポインタと、
caseポインタと、
任意の付加的なフィールドデータと、
古いメモリアドレスと、
任意のカウントフィールドデータと、
の情報が、ノードパケットプロセスの前記生成において各ノードパケットに含まれる、請求項1に記載の方法。 - パケットサイズに関連する値もノードパケットプロセスの前記生成における前記ノードパケットに保存される、請求項17に記載の方法。
- 支持構造プロセスを書込む前記ステップは、前記方法によって生成された保存されたインタロックツリーデータストアデータファイルのためのヘッダファイルに前記支持構造を保存する、請求項14に記載の方法。
- 前記ノードパケットは、1組の前記ノードパケットを包含するより大きなパケットに保存される、請求項17に記載の方法。
- 前記より大きなパケットに保存された、前記1組のノードパケットのノードパケットの各々は、少なくとも1つの特性を共有し、前記特性の表示は前記大きなパケットのヘッダ領域に記憶される、請求項20に記載の方法。
- 複数の大きなパケットを保存するステップをさらに含み、それぞれは、他の大きなパケットのノードパケットとは少なくとも1つの特性において異なる1組のノードパケットを有する、請求項21に記載の方法。
- インタロックツリーデータストアをメモリから別のメモリへ保存する前記ステップは、支持構造を前記別のメモリに保存するステップをさらに含む、請求項1に記載の方法。
- 請求項1に記載のプロセスで生成された1組のノードパケットを有するデータファイルを包含する、機械可読信号媒体。
- 前記媒体は磁気ディスクである、請求項24に記載の機械可読信号媒体。
- コンピュータにロードされ実行が許されると前記コンピュータに請求項1の方法を実行させる1組の命令を含む、機械可読データ媒体。
- 復元される各ノードについて少なくとも1つのパケットを有する保存されたインタロックツリーデータストアデータファイルからインタロックツリーデータストアを復元する方法であって、前記インタロックツリーデータストアは、前記方法に続いて復元された後、少なくとも1つのBOTノードと、少なくとも1つのサブコンポーネントノードと、少なくとも複数の根ノードとを含み、前記BOTノードはサブコンポーネントノードへのasCaseポインタのリストを有し、前記サブコンポーネントノードは他のサブコンポーネントノードへのasCaseポインタのリストを有し、前記根ノードは前記BOTノードに従属したサブコンポーネントノードへのasResultポインタのリストを有し、前記復元する方法は、
前記保存されたインタロックツリーデータストアデータファイルから支持情報を検索し、前記支持情報の少なくともいくつかを基礎としてメモリに領域を確立するステップと、
すべてのノードパケットが読取られるまで前記データファイルからノードパケットを反復的に読取るステップとを含み、読取られた各ノードパケットについて、
メモリを割当て、コンピュータシステムのメインメモリ記憶の前記読取られたノードパケットから生成された新しいノードに指定される新しいメモリアドレスを有するステップと、
各読取られたノードパケットにアドレス変換表を生成し、前記読取られたノードパケットの少なくとも1つの古いメモリアドレスを含む情報を前記変換表に追加するステップとを含み、前記表は、前記割当てるステップからの各ノードパケットの前記新しいメモリアドレスと前記読取られたノードパケットの前記古いメモリアドレスとの間に対応関係を有する、方法。 - 以前に読取られた前記読取られたノードパケットのいずれかから生成されているノードのための新しいメモリアドレスを見つけるために古いメモリアドレスの前記アドレス変換表を用いるステップをさらに含む、請求項27に記載の方法。
- 反復的にノードパケットを読取る前記ステップは、サブコンポーネントノードまたは最終製品ノード上で実行されるより前に、BOTノードおよび要素的根ノード上でまず実行される、請求項27に記載の方法。
- 前記データファイルからの最後のノードパケットが読取られた後に前記データファイルから最終の支持構造情報を読取るステップをさらに含み、前記最終の支持構造情報はノードアドレスを以前に構築したことに依存する性質を有する、請求項27に記載の方法。
- 前記データファイルの前記ノードパケットは、前記方法の先例の保存動作中に、ヘッダ情報を包含するようなやり方で配置され、前記ヘッダ情報は前記データファイルについてのメタデータを含み、前記メタデータは、前記データファイルのすべてのパケットについてノードパケット読取りの順序を決定するために、前記読取るステップがまず前記特定する情報を読取るよう、前記読取るステップを容易にするために特定する情報を与える、請求項27に記載の方法。
- 前記データファイルの前記ノードパケットは、前記方法の先例の保存動作中、大きなパケットに配置され、前記大きなパケットはヘッダ情報を包含し、前記ヘッダ情報は前記大きなパケットのすべてのノードパケットのための前記ノードパケットについてのメタデータを含む、請求項27に記載の方法。
- データファイルに存在するいくつかの大きなパケットは、最低レベルのBOTノードパケットを包含する大きなパケットがまず読取られるような順序で読取られ、前記大きなパケットの各々の中でBOTノードパケットおよび要素的根ノードパケットがまず読取られ、次に、他のノードパケットを包含する大きなパケットが、次の大きなパケットのノードパケットを読取る前に読取られ、1つのレベルにおけるすべての大きなパケットが、前記1つのレベルより上のあるレベルにノードパケットを有する任意の大きなパケットを読取る前に読取られる、請求項32に記載の方法。
- 前記読取りステップの前に、いかなるタイプのノードパケットが読取られているかについて決定がなされ、前記決定はノードパケットについての支持情報を読取ることに基づいて行われる、請求項32に記載の方法。
- 前記読取るステップの前に、いかなるタイプのノードパケットが読取られているかについて決定され、前記決定は、大きなパケットから第1のパケットを検査することに基づいて行なわれ、前記第1のパケットは前記大きなパケットのすべてのノードパケットについてのメタデータを包含する、請求項27に記載の方法。
- コンピュータにロードされて前記コンピュータでアクティブにされると前記コンピュータに請求項27の方法を実行させる、エンコードされた1組のコンピュータ命令。
- コンピュータ命令のためのコンピュータ可読媒体および請求項36に記載のエンコードされたコンピュータ命令の組を包含するデータ。
- 請求項27の方法を実行するためのエンコードされた命令の組を実行する、コンピュータシステム。
- インタロックツリーデータストアをメモリから保存する方法であって、前記インタロックツリーデータストアは、少なくとも1つのBOTノードと、少なくとも1つのサブコンポーネントノードと、少なくとも複数の根ノードとを含み、前記BOTノードはサブコンポーネントノードへのasCaseポインタのリストを有し、前記サブコンポーネントノードは他のサブコンポーネントノードへのasCaseポインタのリストを有し、前記根ノードは前記BOTノードに従属したサブコンポーネントノードへのasResultポインタのリストを有し、前記方法は、
各ノードにアクセスするために前記インタロックツリーデータストアを横断するステップと、
各ノードについてノードパケットを生成するステップとを含み、前記ノードパケット生成プロセスは、各ノードについてcaseポインタおよびresultポインタを少なくとも捉えるステップを含むが、前記asCaseリストからのポインタも前記asResultリストからのポインタも捉えず、さらに
前記メモリに前記ノードパケットを書込むステップを含む、方法。 - 付加的なフィールドは、ポインタリストカウントのカウントによって表わされるポインタリストのタイプを差別化するためにノードパケットに追加される、請求項13に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/958,830 US7213041B2 (en) | 2004-10-05 | 2004-10-05 | Saving and restoring an interlocking trees datastore |
PCT/US2005/036602 WO2006042257A2 (en) | 2004-10-05 | 2005-09-29 | Saving and restoring an interlocking trees datastore |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008516347A true JP2008516347A (ja) | 2008-05-15 |
Family
ID=36126857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007535910A Pending JP2008516347A (ja) | 2004-10-05 | 2005-09-29 | インタロックツリーデータストアの保存および復元 |
Country Status (6)
Country | Link |
---|---|
US (2) | US7213041B2 (ja) |
EP (1) | EP1805666A4 (ja) |
JP (1) | JP2008516347A (ja) |
CN (1) | CN101091181A (ja) |
CA (1) | CA2582727A1 (ja) |
WO (1) | WO2006042257A2 (ja) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070162508A1 (en) * | 2004-11-08 | 2007-07-12 | Mazzagatti Jane C | Updating information in an interlocking trees datastore |
WO2006051869A1 (ja) * | 2004-11-12 | 2006-05-18 | Justsystems Corporation | 文書処理装置及び文書処理方法 |
US20070255761A1 (en) * | 2006-04-27 | 2007-11-01 | Xerox Corporation | Tools to facilitate document information access |
KR100834760B1 (ko) * | 2006-11-23 | 2008-06-05 | 삼성전자주식회사 | 최적화된 인덱스 검색 방법 및 장치 |
US7747634B2 (en) * | 2007-03-08 | 2010-06-29 | Microsoft Corporation | Rich data tunneling |
KR101487335B1 (ko) * | 2007-08-09 | 2015-01-28 | 삼성전자주식회사 | 객체 미디어 교체가 가능한 멀티미디어 데이터 생성 방법및 장치 그리고 재구성 방법 및 장치 |
US20090259995A1 (en) * | 2008-04-15 | 2009-10-15 | Inmon William H | Apparatus and Method for Standardizing Textual Elements of an Unstructured Text |
CN102043802B (zh) * | 2009-10-16 | 2013-09-25 | 上海飞机制造有限公司 | 基于结构摘要的xml关键字检索方法 |
CN101702176B (zh) * | 2009-11-25 | 2011-08-31 | 南开大学 | 一种基于局部路径锁的xml数据并发控制方法 |
US8386421B2 (en) | 2010-06-28 | 2013-02-26 | Microsoft Corporation | Concurrency control for confluent trees |
US8412689B2 (en) | 2010-07-07 | 2013-04-02 | Microsoft Corporation | Shared log-structured multi-version transactional datastore with metadata to enable melding trees |
US9848106B2 (en) | 2010-12-21 | 2017-12-19 | Microsoft Technology Licensing, Llc | Intelligent gameplay photo capture |
US10447102B2 (en) * | 2013-03-15 | 2019-10-15 | Regal Beloit Australia Pty. Ltd. | Permanent magnet electrical machines and methods of assembling the same |
CN103268452A (zh) * | 2013-05-31 | 2013-08-28 | 福建伊时代信息科技股份有限公司 | 文件处理方法和装置 |
JP6179355B2 (ja) * | 2013-10-31 | 2017-08-16 | 富士通株式会社 | 情報処理装置、データ転送制御方法及びデータ転送制御プログラム |
US9904602B1 (en) * | 2014-12-22 | 2018-02-27 | EMC IP Holding Company LLC | Secure search |
CN106156126B (zh) * | 2015-04-08 | 2019-10-11 | 阿里巴巴集团控股有限公司 | 处理数据任务中的数据冲突检测方法及服务器 |
US10635632B2 (en) | 2017-08-29 | 2020-04-28 | Cohesity, Inc. | Snapshot archive management |
US11874805B2 (en) * | 2017-09-07 | 2024-01-16 | Cohesity, Inc. | Remotely mounted file system with stubs |
US11321192B2 (en) | 2017-09-07 | 2022-05-03 | Cohesity, Inc. | Restoration of specified content from an archive |
CN109871001B (zh) * | 2019-03-06 | 2023-04-18 | 普华基础软件股份有限公司 | 一种对发动机大数据量标定的方法 |
CN111352909A (zh) * | 2019-05-07 | 2020-06-30 | 鸿合科技股份有限公司 | 一种文件保存及加载方法、设备、电子设备及存储介质 |
CN111400107B (zh) * | 2020-04-21 | 2023-03-03 | 贵州新致普惠信息技术有限公司 | 一种数据库多主集群的自启恢复系统及方法 |
US11487701B2 (en) | 2020-09-24 | 2022-11-01 | Cohesity, Inc. | Incremental access requests for portions of files from a cloud archival storage tier |
Family Cites Families (108)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4286330A (en) | 1976-04-07 | 1981-08-25 | Isaacson Joel D | Autonomic string-manipulation system |
EP0079465A3 (en) | 1981-11-13 | 1985-01-23 | International Business Machines Corporation | Method for storing and accessing a relational data base |
US5592667A (en) | 1991-05-29 | 1997-01-07 | Triada, Ltd. | Method of storing compressed data for accelerated interrogation |
US5245337A (en) | 1991-05-29 | 1993-09-14 | Triada, Ltd. | Data compression with pipeline processors having separate memories |
US5634133A (en) * | 1992-01-17 | 1997-05-27 | Compaq Computer Corporation | Constraint based graphics system |
US5911138A (en) * | 1993-06-04 | 1999-06-08 | International Business Machines Corporation | Database search facility having improved user interface |
US6339767B1 (en) | 1997-06-02 | 2002-01-15 | Aurigin Systems, Inc. | Using hyperbolic trees to visualize data generated by patent-centric and group-oriented data processing |
US5748955A (en) | 1993-12-20 | 1998-05-05 | Smith; Rodney J. | Stream data compression system using dynamic connection groups |
US5630125A (en) | 1994-05-23 | 1997-05-13 | Zellweger; Paul | Method and apparatus for information management using an open hierarchical data structure |
US5809266A (en) | 1994-07-29 | 1998-09-15 | Oracle Corporation | Method and apparatus for generating reports using declarative tools |
US5768564A (en) | 1994-10-07 | 1998-06-16 | Tandem Computers Incorporated | Method and apparatus for translating source code from one high-level computer language to another |
US5894311A (en) * | 1995-08-08 | 1999-04-13 | Jerry Jackson Associates Ltd. | Computer-based visual data evaluation |
US5758353A (en) * | 1995-12-01 | 1998-05-26 | Sand Technology Systems International, Inc. | Storage and retrieval of ordered sets of keys in a compact 0-complete tree |
US6286002B1 (en) | 1996-01-17 | 2001-09-04 | @Yourcommand | System and method for storing and searching buy and sell information of a marketplace |
US5978794A (en) | 1996-04-09 | 1999-11-02 | International Business Machines Corporation | Method and system for performing spatial similarity joins on high-dimensional points |
US5870735A (en) | 1996-05-01 | 1999-02-09 | International Business Machines Corporation | Method and system for generating a decision-tree classifier in parallel in a multi-processor system |
US5829004A (en) | 1996-05-20 | 1998-10-27 | Au; Lawrence | Device for storage and retrieval of compact contiguous tree index records |
US6745194B2 (en) | 2000-08-07 | 2004-06-01 | Alta Vista Company | Technique for deleting duplicate records referenced in an index of a database |
US6144962A (en) * | 1996-10-15 | 2000-11-07 | Mercury Interactive Corporation | Visualization of web sites and hierarchical data structures |
US5970490A (en) * | 1996-11-05 | 1999-10-19 | Xerox Corporation | Integration platform for heterogeneous databases |
US6148377A (en) * | 1996-11-22 | 2000-11-14 | Mangosoft Corporation | Shared memory computer networks |
US5963965A (en) | 1997-02-18 | 1999-10-05 | Semio Corporation | Text processing and retrieval system and method |
US6102958A (en) | 1997-04-08 | 2000-08-15 | Drexel University | Multiresolutional decision support system |
US6233575B1 (en) * | 1997-06-24 | 2001-05-15 | International Business Machines Corporation | Multilevel taxonomy based on features derived from training documents classification using fisher values as discrimination values |
US6389406B1 (en) | 1997-07-30 | 2002-05-14 | Unisys Corporation | Semiotic decision making system for responding to natural language queries and components thereof |
US5966709A (en) | 1997-09-26 | 1999-10-12 | Triada, Ltd. | Method of optimizing an N-gram memory structure |
US6018734A (en) | 1997-09-29 | 2000-01-25 | Triada, Ltd. | Multi-dimensional pattern analysis |
US5983232A (en) | 1997-09-29 | 1999-11-09 | Triada, Ltd. | Virtual structured information system |
US6029170A (en) | 1997-11-25 | 2000-02-22 | International Business Machines Corporation | Hybrid tree array data structure and method |
US6341281B1 (en) | 1998-04-14 | 2002-01-22 | Sybase, Inc. | Database system with methods for optimizing performance of correlated subqueries by reusing invariant results of operator tree |
US6138117A (en) | 1998-04-29 | 2000-10-24 | International Business Machines Corporation | Method and system for mining long patterns from databases |
US6115715A (en) | 1998-06-29 | 2000-09-05 | Sun Microsystems, Inc. | Transaction management in a configuration database |
US6769124B1 (en) | 1998-07-22 | 2004-07-27 | Cisco Technology, Inc. | Persistent storage of information objects |
US6356902B1 (en) * | 1998-07-28 | 2002-03-12 | Matsushita Electric Industrial Co., Ltd. | Method and system for storage and retrieval of multimedia objects |
US6826556B1 (en) | 1998-10-02 | 2004-11-30 | Ncr Corporation | Techniques for deploying analytic models in a parallel |
AU3109200A (en) | 1998-12-04 | 2000-06-26 | Technology Enabling Company, Llc | Systems and methods for organizing data |
US6311187B1 (en) * | 1998-12-29 | 2001-10-30 | Sun Microsystems, Inc. | Propogating updates efficiently in hierarchically structured data under a push model |
US6635089B1 (en) * | 1999-01-13 | 2003-10-21 | International Business Machines Corporation | Method for producing composite XML document object model trees using dynamic data retrievals |
US6751622B1 (en) * | 1999-01-21 | 2004-06-15 | Oracle International Corp. | Generic hierarchical structure with hard-pegging of nodes with dependencies implemented in a relational database |
US6373484B1 (en) * | 1999-01-21 | 2002-04-16 | International Business Machines Corporation | Method and system for presenting data structures graphically |
US6477683B1 (en) * | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
US6591272B1 (en) * | 1999-02-25 | 2003-07-08 | Tricoron Networks, Inc. | Method and apparatus to make and transmit objects from a database on a server computer to a client computer |
US6360224B1 (en) | 1999-04-23 | 2002-03-19 | Microsoft Corporation | Fast extraction of one-way and two-way counts from sparse data |
US6920608B1 (en) * | 1999-05-21 | 2005-07-19 | E Numerate Solutions, Inc. | Chart view for reusable data markup language |
US6470344B1 (en) * | 1999-05-29 | 2002-10-22 | Oracle Corporation | Buffering a hierarchical index of multi-dimensional data |
US6381605B1 (en) * | 1999-05-29 | 2002-04-30 | Oracle Corporation | Heirarchical indexing of multi-attribute data by sorting, dividing and storing subsets |
US6711585B1 (en) * | 1999-06-15 | 2004-03-23 | Kanisa Inc. | System and method for implementing a knowledge management system |
US6470277B1 (en) | 1999-07-30 | 2002-10-22 | Agy Therapeutics, Inc. | Techniques for facilitating identification of candidate genes |
US6505184B1 (en) | 1999-07-30 | 2003-01-07 | Unisys Corporation | Autognomic decision making system and method |
US6394263B1 (en) | 1999-07-30 | 2002-05-28 | Unisys Corporation | Autognomic decision making system and method |
US6453314B1 (en) | 1999-07-30 | 2002-09-17 | International Business Machines Corporation | System and method for selective incremental deferred constraint processing after bulk loading data |
US6278987B1 (en) | 1999-07-30 | 2001-08-21 | Unisys Corporation | Data processing method for a semiotic decision making system used for responding to natural language queries and other purposes |
US6381600B1 (en) | 1999-09-22 | 2002-04-30 | International Business Machines Corporation | Exporting and importing of data in object-relational databases |
AU1086901A (en) | 1999-10-15 | 2001-04-30 | Dekalb Genetics Corporation | Methods and systems for plant performance analysis |
US6615202B1 (en) | 1999-12-01 | 2003-09-02 | Telesector Resources Group, Inc. | Method for specifying a database import/export operation through a graphical user interface |
CA2293167A1 (en) * | 1999-12-30 | 2001-06-30 | Nortel Networks Corporation | Source code cross referencing tool, b-tree and method of maintaining a b-tree |
US7058636B2 (en) | 2000-01-03 | 2006-06-06 | Dirk Coldewey | Method for prefetching recursive data structure traversals |
AUPQ498500A0 (en) | 2000-01-07 | 2000-02-03 | Flixco Pty Limited | Information system |
US6760720B1 (en) | 2000-02-25 | 2004-07-06 | Pedestrian Concepts, Inc. | Search-on-the-fly/sort-on-the-fly search engine for searching databases |
US20020029207A1 (en) * | 2000-02-28 | 2002-03-07 | Hyperroll, Inc. | Data aggregation server for managing a multi-dimensional database and database management system having data aggregation server integrated therein |
US6900807B1 (en) | 2000-03-08 | 2005-05-31 | Accenture Llp | System for generating charts in a knowledge management tool |
US6473757B1 (en) | 2000-03-28 | 2002-10-29 | Lucent Technologies Inc. | System and method for constraint based sequential pattern mining |
US6831668B2 (en) | 2000-04-03 | 2004-12-14 | Business Objects, S.A. | Analytical reporting on top of multidimensional data model |
US7213048B1 (en) | 2000-04-05 | 2007-05-01 | Microsoft Corporation | Context aware computing devices and methods |
US6952736B1 (en) | 2000-04-25 | 2005-10-04 | Microsoft Corporation | Object-based locking mechanism |
JP3562572B2 (ja) | 2000-05-02 | 2004-09-08 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データベースのドキュメントにおける新規な事項・新規クラスの検出及び追跡 |
US20020138353A1 (en) | 2000-05-03 | 2002-09-26 | Zvi Schreiber | Method and system for analysis of database records having fields with sets |
US6704729B1 (en) * | 2000-05-19 | 2004-03-09 | Microsoft Corporation | Retrieval of relevant information categories |
US6965892B1 (en) | 2000-05-31 | 2005-11-15 | International Business Machines Corporation | Method, system and program products for concurrently accessing a global data repository by multithreaded clients |
US6681225B1 (en) | 2000-05-31 | 2004-01-20 | International Business Machines Corporation | Method, system and program products for concurrent write access to a global data repository |
US6581063B1 (en) | 2000-06-15 | 2003-06-17 | International Business Machines Corporation | Method and apparatus for maintaining a linked list |
US6684207B1 (en) | 2000-08-01 | 2004-01-27 | Oracle International Corp. | System and method for online analytical processing |
US6868414B2 (en) | 2001-01-03 | 2005-03-15 | International Business Machines Corporation | Technique for serializing data structure updates and retrievals without requiring searchers to use locks |
GB0100331D0 (en) | 2001-01-06 | 2001-02-14 | Secr Defence | Method of querying a structure of compressed data |
US6959303B2 (en) | 2001-01-17 | 2005-10-25 | Arcot Systems, Inc. | Efficient searching techniques |
US6691109B2 (en) | 2001-03-22 | 2004-02-10 | Turbo Worx, Inc. | Method and apparatus for high-performance sequence comparison |
US20020143735A1 (en) * | 2001-03-30 | 2002-10-03 | Akin Ayi | User scope-based data organization system |
US6895490B1 (en) * | 2001-04-09 | 2005-05-17 | Matrix Semiconductor, Inc. | Method for making a write-once memory device read compatible with a write-many file system |
US6748378B1 (en) | 2001-04-20 | 2004-06-08 | Oracle International Corporation | Method for retrieving data from a database |
US6931401B2 (en) | 2001-05-04 | 2005-08-16 | Paracel, Inc. | Methods and apparatus for high-speed approximate sub-string searches |
US6816856B2 (en) | 2001-06-04 | 2004-11-09 | Hewlett-Packard Development Company, L.P. | System for and method of data compression in a valueless digital tree representing a bitset |
US7117216B2 (en) | 2001-06-07 | 2006-10-03 | Sun Microsystems, Inc. | Method and apparatus for runtime merging of hierarchical trees |
US20030009443A1 (en) * | 2001-06-15 | 2003-01-09 | Oleg Yatviskiy | Generic data aggregation |
US6799184B2 (en) * | 2001-06-21 | 2004-09-28 | Sybase, Inc. | Relational database system providing XML query support |
US7027052B1 (en) * | 2001-08-13 | 2006-04-11 | The Hive Group | Treemap display with minimum cell size |
KR100656528B1 (ko) | 2001-09-10 | 2006-12-12 | 한국과학기술원 | 영역-합 질의를 위한 동적 업데이트 큐브와 하이브리드질의 검색방법 |
DK200101619A (da) | 2001-11-01 | 2003-05-02 | Syntonetic Aps | Automat til skabelon-baseret sekvensproduktion, samt metode for automatisk sekvensproduktion |
US6826568B2 (en) | 2001-12-20 | 2004-11-30 | Microsoft Corporation | Methods and system for model matching |
US6807541B2 (en) | 2002-02-28 | 2004-10-19 | International Business Machines Corporation | Weak record locks in database query read processing |
US7287033B2 (en) | 2002-03-06 | 2007-10-23 | Ori Software Development, Ltd. | Efficient traversals over hierarchical data and indexing semistructured data |
US20030177149A1 (en) * | 2002-03-18 | 2003-09-18 | Coombs David Lawrence | System and method for data backup |
US6624762B1 (en) | 2002-04-11 | 2003-09-23 | Unisys Corporation | Hardware-based, LZW data compression co-processor |
US6694323B2 (en) | 2002-04-25 | 2004-02-17 | Sybase, Inc. | System and methodology for providing compact B-Tree |
US7085771B2 (en) * | 2002-05-17 | 2006-08-01 | Verity, Inc | System and method for automatically discovering a hierarchy of concepts from a corpus of documents |
US20040133590A1 (en) | 2002-08-08 | 2004-07-08 | Henderson Alex E. | Tree data structure with range-specifying keys and associated methods and apparatuses |
US6768995B2 (en) * | 2002-09-30 | 2004-07-27 | Adaytum, Inc. | Real-time aggregation of data within an enterprise planning environment |
US7007027B2 (en) | 2002-12-02 | 2006-02-28 | Microsoft Corporation | Algorithm for tree traversals using left links |
US20040169654A1 (en) * | 2003-02-27 | 2004-09-02 | Teracruz, Inc. | System and method for tree map visualization for database performance data |
JP2004295674A (ja) * | 2003-03-27 | 2004-10-21 | Fujitsu Ltd | Xml文書解析方法、xml文書検索方法、xml文書解析プログラム、xml文書検索プログラムおよびxml文書検索装置 |
US7849401B2 (en) | 2003-05-16 | 2010-12-07 | Justsystems Canada Inc. | Method and system for enabling collaborative authoring of hierarchical documents with locking |
US8250107B2 (en) | 2003-06-03 | 2012-08-21 | Hewlett-Packard Development Company, L.P. | Techniques for graph data structure management |
US20050015383A1 (en) | 2003-07-15 | 2005-01-20 | Microsoft Corporation | Method and system for accessing database objects in polyarchical relationships using data path expressions |
US7349913B2 (en) | 2003-08-21 | 2008-03-25 | Microsoft Corporation | Storage platform for organizing, searching, and sharing data |
US7454428B2 (en) | 2003-10-29 | 2008-11-18 | Oracle International Corp. | Network data model for relational database management system |
US7499921B2 (en) | 2004-01-07 | 2009-03-03 | International Business Machines Corporation | Streaming mechanism for efficient searching of a tree relative to a location in the tree |
US7383276B2 (en) | 2004-01-30 | 2008-06-03 | Microsoft Corporation | Concurrency control for B-trees with node deletion |
US7587685B2 (en) * | 2004-02-17 | 2009-09-08 | Wallace James H | Data exploration system |
US7647356B2 (en) | 2004-05-07 | 2010-01-12 | Oracle International Corporation | Methods and apparatus for facilitating analysis of large data sets |
-
2004
- 2004-10-05 US US10/958,830 patent/US7213041B2/en active Active
-
2005
- 2005-09-29 WO PCT/US2005/036602 patent/WO2006042257A2/en active Application Filing
- 2005-09-29 CA CA002582727A patent/CA2582727A1/en not_active Abandoned
- 2005-09-29 JP JP2007535910A patent/JP2008516347A/ja active Pending
- 2005-09-29 EP EP05808950A patent/EP1805666A4/en not_active Withdrawn
- 2005-09-29 CN CNA2005800389502A patent/CN101091181A/zh active Pending
-
2007
- 2007-01-10 US US11/651,833 patent/US20070143527A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
CN101091181A (zh) | 2007-12-19 |
US20070143527A1 (en) | 2007-06-21 |
WO2006042257A2 (en) | 2006-04-20 |
WO2006042257A3 (en) | 2007-05-31 |
EP1805666A4 (en) | 2008-10-15 |
US7213041B2 (en) | 2007-05-01 |
CA2582727A1 (en) | 2006-04-20 |
US20060074939A1 (en) | 2006-04-06 |
EP1805666A2 (en) | 2007-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008516347A (ja) | インタロックツリーデータストアの保存および復元 | |
US7788287B2 (en) | System and method for storing and accessing data in an interlocking trees datastore | |
US20080065661A1 (en) | Saving and restoring an interlocking trees datastore | |
US7720869B2 (en) | Hierarchical structured abstract file system | |
US8914720B2 (en) | Method and system for constructing a document redundancy graph | |
US6185569B1 (en) | Linked data structure integrity verification system which verifies actual node information with expected node information stored in a table | |
JPH05342264A (ja) | インデックス付け及び検索のための方法及び装置 | |
JP2020533666A (ja) | ゲノム・ファイルのためのコンテキスト・アウェア差分アルゴリズム | |
Jalili et al. | Next generation indexing for genomic intervals | |
US20120124060A1 (en) | Method and system of identifying adjacency data, method and system of generating a dataset for mapping adjacency data, and an adjacency data set | |
JPH0358249A (ja) | フアイルのアクセス方法 | |
JP5063447B2 (ja) | コンテンツ管理装置及び方法及びプログラム | |
AU2004219257A1 (en) | System and method for storing and accessing data in an interlocking trees datastore | |
Minkley et al. | Suffix tree searcher: exploration of common substrings in large DNA sequence sets | |
Abel et al. | Resequencing and clustering to improve the performance of spatial join | |
JPH1196058A (ja) | T木インデックス構築方法及び装置及びt木インデックス構築プログラムを格納した記憶媒体 | |
JPH1021260A (ja) | ツリーの動的作成表示方法およびツリー検索表示システム | |
JPH04264674A (ja) | ファイル検索方法及び装置 | |
JPH0564809B2 (ja) | ||
JPH10218813A (ja) | 反応表現方法、反応データベースおよび反応情報記憶媒体 | |
JPH08320877A (ja) | 文書検索装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100323 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100817 |