JP2003058401A - コンピュータメモリに格納するためのデータ構造 - Google Patents

コンピュータメモリに格納するためのデータ構造

Info

Publication number
JP2003058401A
JP2003058401A JP2002149067A JP2002149067A JP2003058401A JP 2003058401 A JP2003058401 A JP 2003058401A JP 2002149067 A JP2002149067 A JP 2002149067A JP 2002149067 A JP2002149067 A JP 2002149067A JP 2003058401 A JP2003058401 A JP 2003058401A
Authority
JP
Japan
Prior art keywords
index
branch
tree
leaf
pointer
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
Application number
JP2002149067A
Other languages
English (en)
Inventor
Douglas L Baskins
ダグラス・エル・バスキンズ
Alan Silverstein
アラン・シルバースタイン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JP2003058401A publication Critical patent/JP2003058401A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

(57)【要約】 【課題】デジタルツリー及び同様の構成の性能特性を最
適化する技術及びツールを提供すること。 【解決手段】中身のあるサブエクスパンスの数及びデジ
タルツリーの全体ステータスに従って選択された、線形
ブランチノード、ビットマップブランチノード400、及
び伸長ブランチノードから構成されるグループから選択
されるブランチノード(105,106,113)と、線形リーフ
ノード及びビットマップリーフノードから構成されるグ
ループにより選択され、それぞれ複数インデックスを保
持し、デジタルツリー内のリーフ及びリーフ内のインデ
ックスの数のレベルに従った、未復号インデックスのみ
を含むリーフノード(108,110,116-123)と、を含むデ
ータ構造。

Description

【発明の詳細な説明】 【0001】 【発明の属する技術分野】本発明は、一般的にデータ構
造の分野に関し、特にデータ組織の構造が記憶されたデ
ータに依存し、データにマッチすべく圧縮されたデータ
構造要素を伴う階層データ構造に関する。 【0002】 【従来の技術】コンピュータのプロセッサ及び対応する
メモリは、速度が増加し続けている。ハードウェアが物
理的な速度の限界に近づくにつれ、しかしながら、デー
タのアクセス時間をはっきりと減少させることが要求さ
れる。かかる限界が主たる要因でなくとも、ソフトウェ
アの効率を最大化させることで、ハードウェアプラット
フォームの効率を最大化させ、ハードウェア/ソフトウ
ェアシステム全体としての能力を拡大する。 【0003】システムの効率を上げる1つの方法は、効
率的なデータ管理によるものであるが、データ構造の適
切な選択、関連しての格納、検索アルゴリズムにより達
成される。例えば先行技術の、様々なデータ構造、関連
しての格納、及び検索アルゴリズムは、アレイ、ハッシ
ング、2分木(バイナリーツリー)、AVLツリー(高さ
のバランスをとった2分木)、b-ツリー、及びスキップ
リストを含むデータ管理のため開発されてきている。 【0004】これらの先行技術である、データ構造、関
連しての格納、及び検索アルゴリズムのそれぞれでは、
アクセス時間の高速化とメモリのオーバヘッドの最小化
の間に固有のトレードオフが存在している。例えば、ア
レイは、単一アレイ要素のアドレス計算を通して高速イ
ンデックス化に備えているが、単一の値が格納される前
にメモリ内でアレイ全体を予め配置することを要求し、
そしてアレイの未使用インターバルがメモリ資源を浪費
する。代わりに、二分木、AVLツリー、bツリー、及びス
キップリストは、データ構造のためにメモリを予め配置
しておくことを要求し、未使用メモリの配置を最小限に
するよう試みるが、ポピュレーションが増加するに伴
い、アクセス時間が増加することが明らかになる。 【0005】アレイは、簡略化された構造を有し、格納
されたデータの高速アクセスに備えた従来技術のデータ
構造である。メモリはアレイ全体に配置されなければな
らないが、その構造は柔軟ではない。アレイの値は、ア
レイの各要素に配置されたインデックスをサイズ毎に増
やし、アレイの基礎アドレスのオフセットを加えること
で、各位置毎に数値単位で調べられる。 【0006】典型的には、単一の中央演算処理装置のキ
ャッシュラインフィル(cache linefill)が、アレイ要
素及びここに格納された値にアクセスするにあたり必要
とされている。説明され、典型的に具現化されているよ
うに、アレイは非効率であり、比較的柔軟でないメモリ
である。しかしながら、アクセスはO(1)として与えら
れる。すなわち、アレイサイズから独立して(ディスク
スワップを無視して)いる。 【0007】代わりに、前に説明したデータ構造は、二
分木、b-ツリー、スキップリスト及びハッシュテーブル
を含んでおり、メモリは効率的であるが望ましくない特
徴を含んだ形で利用可能となる。例えば、ハッシング
は、散在した、多分に多重ワードとなるインデックス
(例えばストリング等)を、アレイインデックスに変換
するのに用いられる。典型的なハッシュテーブルは、サ
イズ固定のアレイであり、そこへの各インデックスは、
オリジナルインデックスで実行されたハッシングアルゴ
リズムの結果である。 【0008】しかしながら、ハッシングを効率的にする
ために、ハッシュアルゴリズムは格納されるべきインデ
ックスにマッチさせなければならない。ハッシュテーブ
ルはまた、全てのデータノードがオリジナルインデック
スのコピー(又はこれのポインタ)を含むことを求めて
いるので、各シノニムのチェーンにおけるノードを識別
することができる。アレイのように、ハッシングを用い
るためにはメモリを予め配置しておくことを必要とする
が、もし適切に設計されている場合、すなわち格納され
るべきデータの特徴が、はっきり分かるものであり、動
作し、具現化されるハッシングアルゴリズム、衝突解消
技術、及び格納構造にマッチする場合、フラットなアレ
イに対して配置されなければならないのはメモリの一部
分である。 【0009】特に、デジタルツリー、又はトライ(tri
e)は、データへの高速アクセスを提供するが、一般的
にメモリは非効率である。ツリーブランチを狭く維持す
ることで、散在したインデックスのセットを処理すべ
く、メモリ効率を高めてもよいが、その結果ツリーが深
くなり、メモリの参照、迂回、及びキャッシュラインフ
ィルの平均数が増加し、その結果データへのアクセスが
遅くなる。この後者の要素、すなわち、キャッシュ効率
を最大化することは、かかる構造がまだ議論されている
ときにしばしば無視されるが、システム性能に影響を与
える支配的な要素となる場合がある。 【0010】トライは小さなアレイ又はブランチのツリ
ーであるが、ここで各ブランチはインデックスの1つ又
はそれ以上のビットを復号する。先行技術のデジタルツ
リーは、単純なポインタ又はアドレスのアレイであるブ
ランチノードを有する。典型的には、ポインタ又はアド
レスのサイズは、デジタルツリーのメモリ効率を改善す
べく最小化される。 【0011】デジタルツリーの「後尾」で、最終ブラン
チは最終ビットのインデックス、及びインデックスに特
定のストレージへの要素点を復号する。ツリー(木)の
「リーフ(葉っぱ)」は、特定インデックス用のこれら
メモリチャンクであり、特定用途向けの構造を有してい
る。 【0012】デジタルツリーは、インデックスがなかっ
たり、ポピュレーションゼロ(又は空となるサブエクス
パンスと呼ばれる)となるブランチに、メモリを割り当
てる必要がないという利点を有している。この場合にお
いて、空のサブエクスパンス(subexpanse)を指すポイ
ンタは、固有値が与えられ、有効なアドレス値を表して
はいないことを示すヌルポインタと呼ばれる。 【0013】さらに、デジタルツリーに格納されたイン
デックスは、近隣の識別を許容し、ソートされた順序で
アクセスすることができる。ここで用いられるデジタル
ツリーの「エクスパンス(expanse)」は、デジタルツ
リー内に格納可能な値の幅であるが、ここでデジタルツ
リーのポピュレーション(population)は、ツリー内に
実際に格納される値の集合である。 【0014】同様に、デジタルツリーのブランチのエク
スパンスは、ブランチ内で格納できるインデックスの幅
であり、そしてブランチのポピュレーションはブランチ
内に実際に格納される値(例えばカウント)の数であ
る。(ここで用いられるように、「ポピュレーション」
という語は、インデックスの集合又はそれらのインデッ
クスのカウントのいずれかについていうものであるが、
この語の意味は、この用語の用いられる文脈において当
業者に明らかなものである。) Acharya、Zhu及びShenによる、「Adaptive Algorithms
for Cache-efficientTrie Search」では、トライ検索の
ためのキャッシュ効率アルゴリズムを説明している。各
アルゴリズムは、異なるデータ構造を用いているが、こ
の構造は、トライにおいて異なるノードを表すための、
仕切られたアレイ、B-ツリー、ハッシュテーブル、及び
ベクトルを含んだものである。選択されたデータ構造
は、ノードのファンアウトと同様に、キャッシュ特性に
依存している。 【0015】アルゴリズムはさらに、ノードを表すのに
用いられるデータ構造を動的に切り替えることで、ノー
ドのファンアウトの変化に適合している。最後に、各デ
ータ構造のサイズ及びレイアウトは、キャッシュ特性と
同様にアルファベット記号のサイズに基づいて決定され
る。この刊行物ではさらに、現実の及びシミュレートさ
れたメモリ階層の性能評価を含んでいる。 【0016】他の刊行物で当業者に知られ、用いられ、
データ構造について説明しているものとしては、次のも
のがある。Fundamentals of Data Structures in Pasca
l、第4版、HorowitzとSahni;pp582-594;The Art of
Computer Programming、第3巻;Knuth;pp490-492;Al
gorithm in C、Sedgewick、pp245-256、265-271;「Fas
t Algorithm for Sorting and Searching String」;Be
ntley、Sedgewick;「Ternary Search Trees」;587192
6、INSPEC概要番号:C9805-6120-003;Dr.Dobb's Journ
al;「Algorithm for Trie Compaction」、ACM Transan
ctions onDatabase Systems、9(2):243-63、1984;「Ro
uting on longest-matching prefixes」;5217324、INS
PEC概要番号:B9605-6150M-005、C9605-5640-006;「So
meresults on tries with adaptive branching」;6845
525、INSPEC概略番号:C2001-03-6120-024;「Fixed-bu
cket binary storage trees」;01998027、INSPEC概要
番号:C83009879;「DISCS and other related data st
ructures」;03730613、INSPEC概要番号:C90064501;
そして、「Dynamic sources in informationtheory:a g
eneral analysis of trie structure」;6841374、INSP
EC概要番号、B2001-03-6110-014、C2001-03-6120-023。 【0017】拡張ストレージ構造は、米国特許出願番号
09/457164、1999年12月8日出願、タイトル「A Fast Eff
icient Adaptive, Hybrid Tree」(以下、164特許出願
とする)で、直前の出願と同様に出願されている。ここ
で説明されているデータ構造及びストレージ方法は、自
己同調を行い、「エクスパンス」ベースのストレージノ
ードを配置して格納要件の最小化を行う、自己適合構造
を備えており、効率的でスケーラブルなデータ格納、調
査及び検索能力を提供する。ここで説明される構造は、
しかしながら所定データ分布状況を充分に利用するもの
ではない。 【0018】前記特許出願で説明されている格納構造の
拡張は、次の出願において詳述されている。それは、米
国特許出願番号09/725373、出願日2000年11月29日、タ
イトル「A Data Structure And Storage And Retrieval
Method Supporting Ordinality Based Searching and
Data Retrieval」で、直前の出願と同様に出願されてい
る。この後者の特許出願では、データ構造、関連するデ
ータの格納、及び検索方法を記述しているが、この検索
方法は、格納された又は順序化された要素の階層構造に
より参照された要素の合計、その構造における序数値に
基づいた要素へのアクセス、及び要素の順序性の識別を
迅速に提供するものである。 【0019】順序化したツリーで具現化した構造におい
て、各サブツリーに存在するインデックスの合計が格納
される。すなわち、各サブツリーの根本が、高レベルノ
ードで、又はこれに関連して格納される。この高レベル
ノードは、そのサブツリーを指すか、又はサブツリーの
頭のノードにおいて又はこれに関連している。データ構
造の特定要件(例えば、新ノードの作成、ポインタの再
割当て、バランス化等)に加え、データの挿入及び削除
は、合計に影響を与える更新ステップを含んでいる。 【0020】 【発明が解決しようとする課題】しかしながら、本構造
は、所定の散在したデータ状況を充分に利用できない。
従って、デジタルツリー及び同様の構成の性能特性を最
適化する技術及びツールに対する必要が存在する。 【0021】 【課題を解決するための手段】本発明に係るデータ構造
は、メモリ中に記憶されるデジタルツリー(又は「トラ
イ」)データ構造に基づき、ダイナミックアレイとして
扱うことができ、そしてルートポインタを通して扱うこ
とができる自己修正データ構造を含んでいる。空のツリ
ーについて、このルートポインタはヌルであり、さもな
ければそれは、デジタルツリーのブランチノードの第1
階層を指す。 【0022】ローファンアウトブランチは、回避される
か又はメモリ浪費の少ない代替構造で置き換えられる
が、これはメモリの浪費が少ない。一方、従来のデジタ
ルツリー構造における性能上の利点のほとんど又は全て
を保持し、インデックス挿入、検索、アクセス及び削除
の動作を含む。この改良点は、そうしなければ散在して
中身を持ったり幅広い又は浅いデジタルツリーにおいて
広く行きわたったヌルポインタで浪費されることにな
る、メモリの削減及び除去を行う。 【0023】特に構造のサイズを減らすのにおいて固有
な処理上の利点との比較において、ブランチの修正を達
成し収容するのに必要とされる追加処理時間は最小限で
あり、その結果メモリからのデータフェッチはより効率
的となり、各CPUのキャッシュラインフィルにおける、
より多くのデータをとらえつつヌルポインタを少なくす
る。 【0024】本発明は、例えばリッチポインタ構造を用
いて具現化される、直線及びビットマップブランチ及び
リーフを含んでいる。臨機応変なノードの再配置をする
ことで、サブエクスパンスポピュレーションを変更する
ために、自動的に再整理する。 【0025】 【発明の実施の形態】本発明は、データ処理システム上
で実行されるアプリケーションプログラムによるアクセ
スのための、コンピュータメモリ中のデータ記憶システ
ム及び方法を含む。システムは、メモリ中に記憶され、
「広い/浅い」デジタルツリーを指すルートポインタを
含むデータ構造及び関連情報、を含んでいる。デジタル
ツリーは、階層的に配置され、ハイブリッド抽象データ
タイプ(ADT)を用いて適合可能に圧縮された、ブラン
チ(ブランチノード)及びマルチインデックスリーフ
(リーフノード)の形のノードを複数有する。 【0026】この適用例において、ADTは、同じ仮想上
の意味を持つが、異なる文字に拡張した多重データ構造
を参照する。さらに、ここで用いられる「インデック
ス」の語は、数字、ストリング、トークン、シンボル又
は他のこのような指定又は表現を構成する、フィールド
のキー又はセットを含む。 【0027】デジタルツリーを具現化することで、デー
タ(インデックスのセット又はキー)が純粋に「ポピュ
レーションにより」ではなく「エクスパンスにより」優
先して組織化される。これは、ツリーの通過を単純化
し、アルゴリズムを修正する上で様々な利点を備える。
特に、ワイドデジタルツリーは潜在的に各ブランチに高
いファンアウトを有しており、ポピュレーションが大き
いものに対してさえ、ツリーが浅くなり、従って通過が
高速になり、従って「充分スケール化できる」ようにし
ている。 【0028】圧縮ブランチを用いることでワイドブラン
チの性能上の利点が守られるが、一方で実際のファンア
ウト、従ってメモリの利用だが、これを縮小し、記憶さ
れるデータ(インデックス又はキー)にマッチするよう
にしている。この技術を用いることで、中身のあるサブ
エクスパンスのみ、すなわち記憶されたインデックスを
含むものが、圧縮ブランチとして表されなければならな
い。空のサブエクスパンスが、典型的には(必要はない
が)欠ける。 【0029】さらに、複数のインデックス(又はキー)
及びその関連する値を記憶すること、たとえあったとし
ても、それは「複数インデックスリーフ」においてであ
るが、このことは、1つ又は複数のレベルごとにツリー
を浅くし、従ってメモリ利用を少なくし、アクセスを高
速化する。圧縮された複数インデックスリーフは、より
多くのインデックスを保持するが、同じセットのインデ
ックスを保持するために、ツリー中により多くのブラン
チを挿入しなければならないというのではない。 【0030】かかる「キャッシュが効率的な」圧縮され
たブランチ及びリーフは、「キャッシュフィル」を最小
化し、その結果ランダムアクセスメモリ(RAM)へのア
クセスが比較的遅くなるということになるように、CPU
キャッシュラインの点から、最も望ましくデザインされ
る。 【0031】従って本発明は、デジタルツリー等データ
構造の性能を最適化するための、いくつかのタイプのブ
ランチ及びリーフ圧縮を含む。このように改良すること
には、線形及びビットマップのブランチ(すなわち内側
のノード)、線形及びビットマップリーフ、及びこれら
ノードの使用を達成するための規則及び方法を含む。こ
こに含むものは例えば、汎用的で、メモリ効率のよい動
作を行う、都合のよい、圧縮ブランチの伸長及びリーフ
インデックス圧縮の使用である。 【0032】本発明による線形ブランチノードは、中身
があるサブエクスパンス及び対応する次レベルポインタ
のリストを備えることによって、ファンアウトが少ない
ブランチをアドレスする。より一般的には、線形ブラン
チは、キー又は、キーを構成するフィールドの組のうち
1つかそれ以上に対応するサブエクスパンスを選択する
基準を含む、サブエクスパンス記述語のリストを含む。
本発明の好ましい実施形態によれば、サブエクスパンス
記述語は、32ビットインデックスの1バイトセグメント
である。好ましくは、線形ブランチは、ターゲットプラ
ットフォームの単一CPUキャッシュラインに拘束され
る。サブエクスパンスの中身が多くなるにつれ、ビット
マップブランチノードは、どのサブエクスパンスに中身
がある(すなわち空ではない)かを示すバイナリベクト
ルを含めて使用されることができる。このバイナリベク
トルに中身があるサブエクスパンス(又は同等のマルチ
レベルデータ構造)へのポインタのリストが続く。 【0033】本発明に係る線形リーフノードは、同様
に、マルチインデックスリーフを用いることにより、低
いポピュレーションのインデックスへと向けられる。マ
ルチインデックスリーフは、大きいポピュレーションに
対して有効なインデックスのリストを含む。ツリーの低
いレベルにおいて、中から高のポピュレーション濃度に
対し、ビットマップリーフノードは、有効インデックス
のバイナリインデックスを備えるが、これは可能であれ
ば各有効インデックスに対応する値領域を含む。 【0034】本発明では、高域的な、メモリ効率指向
の、圧縮ブランチの機に応じた伸長を結合する。データ
構造のこの面によると、データ構造に記憶されるデータ
セット全体が、インデックス当たりに用いられるしきい
値(おそらくはインデックス当たりのバイトで測定され
た)よりも少ないメモリしか占めないとき、又は線形又
はビットマップブランチ下のサブエクスパンスのポピュ
レーションが充分大きいとき、例え高域的な距離が充分
でなくとも、線形やビットマップのブランチはブランチ
の伸長フォーム(すなわち伸長ブランチノード)で置き
換えられる。その結果、追加メモリのコストがかかる
が、計算時間が短縮され、そのレベルを通過するキャッ
シュフィルが減少される。大きなポピュレーションのイ
ンデックス、特によくクラスタされたインデックスを有
するデータにこの選択肢を用いると、本発明は、インデ
ックス及び関連するデータへの高速アクセスを維持する
のに必要とされた過剰なメモリを「清算」する。 【0035】ブランチとノードの間、すなわち線形ブラ
ンチと線形リーフの間、及びまたビットマップブランチ
とビットマップリーフの間の対称性の程度に注意すべき
である。この対称性は、本実施例において、各インデッ
クスが関連する値にマップされるときに明らかとなる。
ツリーの内部ノードは、補助ノードへのポインタに対す
るインデックス部分(桁数)をマップする一方、ツリー
のターミナルノードは、実際のところ、ツリーの外部に
ある発信元が定義したアドレス、すなわちポインタをし
ばしば含む値域に対して充分復号されたインデックスを
マップする。 【0036】しかしながらこの対称性では、伸長ブラン
チと同等なリーフがないということになってしまう。よ
り高いレベルのリーフが所定のポピュレーションを超え
るとき、それは新たなブランチの下のサブツリー、又は
適切には、より低いレベルでさらに圧縮されたリーフへ
と変換される。最小レベルの線形リーフが所定のポピュ
レーションを超えるとき、それはビットマップリーフへ
と変換される。 【0037】本発明の別の側面によると、ターゲットイ
ンデックスの一部がデジタルツリーの各レベルで復号さ
れるという事実を利用して、リーフインデックスを圧縮
している。ツリーを逆にする一方で、インデックスは部
分的に復号されるので、各インデックスのうち復号され
ずに残った部分のみがリーフ中に記憶される必要があ
り、ビット又はバイト数は、各低いレベルで小さくなっ
ていくこの未復号部分を構成する。 【0038】その結果として、より低いレベルのリーフ
(すなわちルートからより離れたリーフ)はより高いレ
ベルのリーフと同じ空間により多くのインデックスを記
憶するが、後者は、より多くのビットが、各インデック
スのより大きな未復号部を表すことを要求している。従
って、どんなに最悪の場合のインデックスの挿入及び削
除でも、ローカライズされ、ツリーより1レベル以上を
上又は下へカスケード(cascade)せず、それぞれ最悪
の場合の挿入及び削除回数を最小化している。注意すべ
きことは、このタイプの圧縮は、固定サイズの圧縮に最
もよく当てはまるが、文字ストリングやビットストリン
グ等の可変サイズインデックスには有用ではない。 【0039】複数のキー(インデックス)に共通なビッ
トが、スキップされる(表されない)よう、デジタルツ
リーを圧縮できることに注意すべきである。かかるツリ
ーは、それが固定又は可変サイズのいずれであろうと、
リーフを明確にするため、そのリーフノードにおいてキ
ー全体のコピーを記憶しなければならない(明確化が要
求されていない希少な場合を除く)。 【0040】本発明で具現化されるように、このことは
リーフ圧縮から区別されるが、ここで、復号された部分
のインデックスは、サブエクスパンス内の全てのインデ
ックスに共通のものとして、ツリー通過又はスキップ
(圧縮)のどちらにおいて要求されようと、常に記憶さ
れ、ブランチノードから回復可能であり、そしてリーフ
ノードに記憶する必要がない。 【0041】本発明は、キャッシュが効率的となる、ブ
ランチ及びリーフについての様々なADTの適切な組み合
わせを提供し、その組み合わせは、ある例において記憶
される不測のデータセットに基づいており、その結果、
幅広いデジタルツリーが、メモリが効率的であると共
に、広くダイナミックなレンジでアクセス又は修正を行
うことになる。 【0042】幅広くダイナミックなレンジということ
は、データセットの小さなものから大きなものまで、す
なわちインデックスの少ないものから多いもの(数十億
単位の)まで、そしてデータセットのタイプは、連続す
るか、群がっているか、定期的か、又はランダムなイン
デックス又はキーにわたるということである。 【0043】よくデザインされ、幅広くダイナミックな
レンジを持つハイブリッドのデジタルツリーは、初期
化、同調、又は配置を必要と(又は可能とさえ)しない
単純でダイナミックなアレイとしてソフトウェアインタ
ーフェースにおいて表すことができる。 【0044】本発明は、ポインタを含むデータ構造を通
過する幅広い構成体、及びノードを繋いだりデータ構造
の通過に備えたりするための他の方法を幅広く用いるこ
とで具現化してもよい。 【0045】説明のため、本発明の望ましい実施形態
は、拡張ポインタを含むデジタルツリーの構成体の範囲
内で具現化してもよい。このことは、継続中の米国特許
出願でタイトル「リッチポインタを有するキャッシュ効
率のよいデジタルツリーに関するシステム及び方法」に
て開示されている。 【0046】かかるポインタは、ヌルポインタとして、
又はブランチ又はリーフノードを指すために用いられる
ときは図2Aに示すような、又は即時インデックスを含
むときは図2Bに示すような、第1形態を取ってもよ
い。リッチポインタを用いることで、指されるオブジェ
クトの型、例えば線形又はビットマップ、ブランチ又は
リーフ、等の指定を与える。 【0047】本発明の他の実施形態として、従来のポイ
ンタなどの他の構成体を用いてもよい。例えば、ターゲ
ットオブジェクトを識別し、又は指されたオブジェクト
が自己識別する(すなわち、タイプ情報が親ではなく子
ノードに記憶される)ため、ポインタ自身(ポインタは
8バイトで一列に並べられたオブジェクトをさしてもよ
く、さもなければ最も重要でない3ビットは用いられな
いことを認識されたい)のもっとも重要でないビットを
用いるなどである。 【0048】図2Aに示されるように、基本的なポイン
タ構造、例えば32ビットプラットフォームにおいて
は、2つの32ビットワードを含み、ここで1ワード全
体は、ポインタにより使用されることで、ツリー通過フ
ローを、他のノード、0及び2バイトの間の復号された
インデックス、1及び3バイトの間のポピュレーション
フィールド、及び1バイトのタイプフィールドへと向け
直される。ヌルポインタについては、タイプフィールド
を除いて全てのバイトがゼロである。かわりに、最初の
ワードは、補助ブランチ又はリーフノードへのポインタ
である。復号及びポピュレーションフィールドは共に、
第2ワードの1バイトを除きすべて充足する。 【0049】即時インデックスを含むポインタ構成体
は、図2Bに示されているが、インデックスにアクセス
すべき他のノードに向け直したり指したりする必要を排
除している。参照された特許出願で説明された通り、こ
れらポインタ構成体の他のバリエーションは、値をそれ
ぞれのインデックスに対応付けるのに用いられる一方、
様々な機械のワードサイズを収容すべく適合がなされ
る。 【0050】本発明はこれらのポインタを用いて、ブラ
ンチ、すなわちインテリアノード及びリーフ、すなわち
ターミナルノードを含んだADTを形成する。このデータ
構造によれば、デジタルツリーは、ブランチノード(線
形の、ビットマップの、又は伸長された)及びリーフノ
ード(線形の又はビットマップのもの)の組み合わせを
含んでいる。各ブランチは、定数の(伸長された)又は
仮想の(線形の又はビットマップの)ポインタのアレイ
であり、好ましくは256のかかるリッチポインタであ
る。すなわち、各ノードは256までのサブエクスパンス
によるファンアウトを有する。 【0051】好ましい実施形態においては、インデック
スは1度に8ビット、すなわち1バイトを復号される。
言い換えると、各桁は1バイトであり、そして、各ブラ
ンチノードにおける、実もしくは仮想のファンアウトは
256である。デジタルツリーはブランチノードにおいて
いかなるファンアウトも持つことができ、例えばツリー
が26文字のアルファベットを復号するときの26な
ど、2の累乗でないファンアウトであってもよいことは
当業者によって明らかである。 【0052】バイナリーツリーは、通常ポピュレーショ
ンにより分けられたツリー(バイナリストレージツリー
と呼ばれる)であり、ここでキーは、各ノードに記憶さ
れるキー値全体と比較される。しかしながらまた、バイ
ナリーツリーはエクスパンスで分けられた(バイナリデ
ジタルの)、各桁数が1ビットである2つのファンアウ
トを有するツリーとすることができる。さらに、ハイブ
リッドツリーは、異なるブランチ又はツリーにおいて、
様々なファンアウトを有してもよい。しかしながら、コ
ンピュータは本来、ワードサイズのオブジェクトに加
え、バイトサイズのオブジェクトを効率的に処理するの
で、256の一貫したファンアウト、すなわち1バイトの
桁数サイズが、もっとも効率的であることが本発明の発
明者により分かっている。 【0053】圧縮されたブランチは、線形及びビットマ
ップを含み、伸長タイプブランチを補足する。この後者
のブランチタイプは、例えば256のサブエクスパンスポ
インタによるアレイを用いた従来のデジタルツリー機能
をサポートしている。実際のファンアウト(すなわち、
中身があるサブエクスパンスの数)が比較的限られてい
るとき、新しいブランチがインデックス挿入の間に作成
されるとき、概して正しいように、「圧縮された」ブラ
ンチが代わりに用いられる。 【0054】この圧縮されたブランチは、256のサブエ
クスパンスポインタの仮想アレイとして見てもよいが、
(以下に説明の理由により、1つではなく2つのキャッ
シュフィルを、関連ノードを通過するのに必要としてい
るにも関わらず、)必要とするメモリ量はかなり小さ
い。 【0055】図1A〜Eを参照すると、ルートポインタノ
ード101は、デジタルツリーの基礎となるデータ構造に
アクセスするのに用いられている。ルートポインタノー
ド101は、図表で、第1又は「トップ」レベルノード10
2、この説明ではブランチノード、を指す矢印で示され
たアドレス情報を含む。(補足すると、ここで用いられ
ている専門用語は、32ビットでの具現例を仮定してお
り、ここでインデックスは、文字ストリングと逆に単一
ワードである。そしてその結果「レベル4」としてルー
トにより指されるツリーのトップノードをラベルし、レ
ベル4ノードの子は、レベル3ノードとして指定される
等々となる。64ビットマシンにおいては、ルートポイ
ンタはレベル8ノードを指し、その子はレベル7等々と
なる。従って、ブランチ又はリーフノードのレベルは、
記憶された又はそのノードより下のインデックス中に、
復号すべく残っている桁数(バイト)の数に等しい。こ
の番号化の方法は、32ビット及び64ビットツリーの
最小レベルを同じにするという利点をさらに有してお
り、それによって様々なサイズのツリーと共に用いるの
に必要とされるソースコードを単純化する。さらに補足
すると、この取り決めは、典型的ではあるが、この説明
の目的のためのものであり、例えばリーフノードをツリ
ーの最高(例えば4)レベルを構成するものとして指定
することを含めたものなど、他の取り決めを採用しても
よい。) トップレベルノード102は伸長ブランチノードである。
これは、256までの、より低いレベルのノードを参照す
るための256のリッチポインタのアレイを含み、データ
構造、すなわち8進表記で00000000からFFFFFFFFまでの
インデックスのエクスパンス全体を表す。トップレベル
ノード102は、エクスパンス00000000から00FFFFFFに対
応し、レベル3の線形ブランチ105を指す、第1リッチ
ポインタ103(適合オブジェクトとも呼ばれる)を含
む。他のリッチポインタ104が、インデックスFF000000
からFFFFFFFFを含む最終エクスパンス部分に対応して示
されている。リッチポインタ104は、最も重要なレベル
3の上の1/256番目で、伸長されたブランチ106を指す。 【0056】レベル3の第1サブエクスパンスは、線形
ブランチ105の形式の補助ノードを含む。示したよう
に、線形ブランチ105はファンアウト(NumRP=ブランチ
により参照された子ノードの数のカウント)、ブランチ
により参照されたサブエクスパンスに対応したインデッ
クス部分(桁数)のソートされたリスト、及び指定され
たサブエクスパンスへのポインタのリストを含む。サブ
エクスパンスE1からE3までのスロットから生じる同様の
ポインタも図示しないが存在する一方、ここの説明で
は、E4としてリスト化され、00FD0000から00FDFFFFまで
を含んだサブエクスパンスを表す、最終サブエクスパン
スへのポインタのみが示されている。従って、線形ブラ
ンチ105の第4リッチポインタが示されるが、レベル2
のビットマップブランチ113を参照し、その結果これは
線形ブランチリーフ118-122及びビットマップリーフ11
6、117及び123を参照する。 【0057】順位の高いノード102の終端において、レ
ベル3の伸長ブランチはリッチポインタ104により参照
される。かかる参照の2つのみは説明のために示されて
いるが、典型的には、伸長ブランチ106は多くの数の補
助ノードを参照する。補足すると、ばらばらに中身を持
つブランチは、さもなくばメモリを保存すべく線形又は
ビットマップブランチフォーマットに変換されるが、1
つ又は2つのキャッシュラインフィルを用いたノードへ
のアクセスを依然として備える。 【0058】図1A〜図1Eに示すように、レベル3伸長
ブランチ106は、レベル1線形リーフノード108へのリッ
チポインタ107を含んだ、256のリッチポインタのアレイ
を含む。補足すると、本発明の一具現例によるリッチポ
インタの使用により、ポインタがツリーのレベルを「ス
キップ」できるようになるが、これは、中間ブランチが
単一の参照を含むときに未使用の間接参照(indirectio
n)を避けるためである。他のリッチポインタ109は、2
つの2バイトインデックスを含む、レベル2線形リーフ
ノード110を指す。 【0059】リッチポインタは、本発明に係るブランチ
及びリーフ圧縮と両立し、さらに結合するデータ構造を
具現化するのに用いてもよい。必要ではないのだが、リ
ッチポインタの使用は、本発明の一実施形態と両立し、
これをサポートする。かかるリッチポインタ構造は、少
なくとも2つのタイプのリッチポインタ又は適合可能な
オブジェクトを網羅するが、これは図2Aで表される上
述のポインタタイプ、及び図2Bで表される即時タイプ
を含む。即時タイプは、即時インデックスをサポートす
る。 【0060】すなわち、エクスパンスのポピュレーショ
ンが比較的散在しているとき、リッチポインタは、デジ
タルツリーブランチ内で、「即時」にインデックスを記
憶するために用いることができ、インデックスにアクセ
スするためのデジタルツリーの最低レベルへの通過を必
要としない。このフォーマットは、即時機械語命令と同
種のものであり、ここで命令は、全ての変位バイトにす
ぐ続く即時オペランドを特定する。 【0061】従って、即時インデックス又は少ないイン
デックスは、ノード中に記憶され、1つ又はそれ以上の
向け直しを回避し、さもなければツリーの通過にあたり
要求され、そして離れたリーフノードに到達する。それ
により即時インデックスは、より多くのメモリを配置し
て多重なメモリの参照及びデータアクセスのための可能
なキャッシュフィルを要求する代わりに、小さいポピュ
レーション(又は少ない数のインデックス)をパックす
る方法を、リッチポインタ構造に直接与える。 【0062】好ましい実施形態による2ワードフォーマ
ットは、即時インデックスを含めることを直ちにサポー
トする。このことは、リッチポインタ内で、タイプフィ
ールドを除外したリッチポインタ全体のインデックス桁
数を記憶することにより達成される。32ビットシステ
ムで具現化されたリッチポインタは、3バイトの単一即
時インデックスから、7つの1バイトインデックスまで
のどこで記憶してもよいが、64ビットシステムのリッ
チポインタは、1バイト即時インデックスを15まで記
憶してもよい。 【0063】即時インデックスをサポートするリッチポ
インタの一般化された構造は(適応可能なオブジェクト
とも呼ばれる)、図2Bで示される。リッチポインタ
は、1つ又はそれ以上の、プラットフォームのワードサ
イズ及びインデックスのサイズに依存した、インデック
ス“I”と、インデックスのサイズ及び即時インデック
スの数も符号化する8ビットタイプフィールドを含む。 【0064】図3は、32ビットプラットフォーム上で
具現化したときの本発明にかかる線形ブランチ構成体の
詳細を説明している。線形ブランチは、ファンアウト、
すなわちブランチにより参照されたサブエクスパンスの
数を示す1バイトにより構成され、サブエクスパンスの
数(例えば0から255)を示す中身があるサブエクス
パンス毎に1バイト(すなわち桁数)で構成されるソー
トされたアレイに続く。 【0065】中身のあるサブエクスパンスの数は、サブ
エクスパンスポインタの対応するアレイに続く。本発明
は、2つのアレイの端で埋め込んだものを結合するが、
アレイは、高速な挿入及び削除のため、それらが「同じ
場所で成長」できるようにしている。サブエクスパンス
のアレイ両方(すなわち桁数及びポインタ)は、純粋に
ポピュレーションにより、組織化又はパックされ、エク
スパンスにより一様にアドレス指定されることはない
が、エクスパンスにより組織化又はアクセスされること
はある。 【0066】典型的に、図3に示される線形ブランチノ
ードが用いられるのは、実際のファンアウト、すなわち
中身があるサブエクスパンスが比較的小さく、例えばブ
ランチあたり256の可能なサブエクスパンスのうち7つ
のリッチポインタまでのときである。本発明の一実施形
態による線形ブランチノードは、上述の3連続域を含む
が、中身のあるサブエクスパンスのカウント、中身のあ
るサブエクスパンス(それぞれ1バイト)のソートされ
たリスト、及び対応するリッチポインタのリストで、そ
れぞれ2ワードの長さであるものを含む。(当業者によ
って認識されるように、数、タイプ、サイズ、及び域の
順序について、他の構成を本発明の代わりの実施形態で
用いてもよい。)この所定の方法を用いるとき、7つの
リッチポインタを含む最大の線形ブランチは、サブエク
スパンスの数について1バイト、サブエクスパンスのリ
ストについて7バイト、従って組み合わせで2ワード
(32ビットシステムにおいて)を必要とする。カウン
ト及びサブエクスパンスリストの組み合わせは、リッチ
ポインタ自身についての14ワードに続き、構成体全体
は、16ワード又は1つのキャッシュライン全体に適合
する。図3に戻ると、4つの中身のあるサブエクスパン
ス全体は、ポインタにより、E(エクスパンス)1からE
(エクスパンス)4までをそれぞれ参照される。 【0067】図4は、ビットマップブランチであり、3
2ビットワードサイズのプラットフォームで再度具現化
されたものである。ビットマップブランチノードは、中
身がある及び空であるサブエクスパンスを示す256ビッ
ト(32バイト)を含んだ第1部401を有し、続く第2部4
02は、中身があるサブエクスパンスへのリッチポインタ
による独立サブアレイを指した通常ポインタを含む。こ
の構成体は、線形ブランチにおいて必要とされる有効イ
ンデックス毎のバイトを、インデックス毎のビットへと
圧縮し、無効インデックスについてビットマップが0ビ
ットを含む場合を除いて、7/8までを節約するものとし
て考えてもよい。 【0068】概念的には、サブエクスパンスのポインタ
は、ビットマップに続く単一のアレイ(402部)で保持
される。しかしながら本発明の望ましい実施形態によれ
ば、メモリ管理を単純にし、挿入及び削除を迅速にする
ために、ビットマップは、8つの通常ポインタに続くよ
うにしてよく、それぞれは0と32の間のサブエクスパ
ンスポインタによる独立サブアレイ408、409に対応す
る。それが桁数(0〜255)によりアドレスできるので、
ビットマップはこれによりエクスパンスで組織化される
が、一方後者が、ビットマップでセットされるビットに
のみ対応する、サブアレイへとパックされるため、サブ
エクスパンスポインタは「ポピュレーションにより」リ
スト化される。 【0069】本発明の別の実施形態によれば、一旦リッ
チポインタのビットマップブランチサブアレイがメモリ
の最大使用、すなわちポインタの数に達し、サブアレイ
に配置されたメモリ量が、32のサブエクスパンスポイ
ンタを保持できる程度になると、サブアレイは、アクセ
ス、挿入、及び削除中時間を節約するよう伸長される。
リッチポインタのサブアレイを伸長するということは、
たとえ中身がないインデックスのサブエクスパンスに対
しても、全てのビットをビットマップの対応サブエクス
パンス内にセットすること、リッチポインタサブアレイ
をアンパック(unpack:分解)して単純で、位置毎にア
クセスされるアレイにすること、そしてヌルリッチポイ
ンタを持つ中身がないサブエクスパンスを表すこと、を
意味する。 【0070】従って図4に示すように、ビットマップブ
ランチは2列のオブジェクトであるが、線形又は伸長ブ
ランチよりも幾分複雑である。第1レベル(401部)は
ビットマップそのものであるが、本発明の32ビットワー
ドサイズでの具現化に従い、8つのサブエクスパンスに
細分化された256ビット(32バイト)を含み、第2レベ
ルADT又はサブアレイ(例えばアレイ408及び409)への
8つのポインタ(402部)が後に続く。 【0071】各ADT400は、リッチポインタのパックされ
た線形リストにより構成され、各リッチポインタは、関
連するビットマップにおける各ビットセットに対応して
いる。32ビットシステムにおいて、8ワードがビットマ
ップ(32/4)に対して求められ、8ワードがポインタに
対して、合わせて16ワードが求められる。 【0072】このここでの合計16ワードはシステムパフ
ォーマンスにおいて重要である、というのも、本発明の
実施形態によれば、それは1つのCPUキャッシュライン
に等しいからである。補足すると、64ビットシステム
において、4ワードだけがビットマップに対して必要と
されるのに対し、8ワードは依然としてポインタに対し
て必要とされ、その結果16ワードのキャッシュラインを
仮定すると4ワードが無駄となる。 【0073】例えば、ビットマップ404は16進の値0000b
074を有しており、これは後述の2進ベクトル及びイン
デックス値を備えている。 【0074】 【表1】 この例によると、テーブル1の後ろの列で表されている
2進ベクトルは、40he xから5Fhexのレンジ内のサブエク
スパンス42、44、45、46、4C、4D、及び4Fを含んだサブ
エクスパンスの中に、インデックスが存在することを示
している。この範囲(図4)の関連通常ポインタ406
は、関連する2進ベクトルで示されたサブエクスパンス
に対応する、サブエクスパンスのそれぞれを指す個々の
リッチポインタを含んだアレイ408を指す。 【0075】比較のため、図5で伸長ブランチが表現さ
れている。この構成体は、リッチポインタの単純アレ
イ、この場合256のこうしたリッチポインタ、を含んで
おり、空エクスパンスを表すのに用いられるヌルのリッ
チポインタを伴っている。ここでリッチポインタ当たり
2ワードを仮定すると、かかる伸長ブランチは512ワー
ドが必要となる。 【0076】本発明ではさらに汎用メモリ効率をさらに
備えている。すなわち、線形ブランチが占めるキャッシ
ュラインが多すぎる(本発明の望ましい実施形態によれ
ばその限界は単一の16ワードキャッシュライン)ところ
までファンアウト(すなわち中身があるサブエクスパン
スの数)が増えるとき、ブランチはビットマップブラン
チへと変換される。かかるビットマップ構成体は、「充
足したファンアウト」を処理でき、伸長ブランチへの変
換が必要とされない点に注意すべきである。線形上の又
はビットマップのブランチのいずれもヌルのサブエクス
パンス上のメモリを浪費しない。 【0077】しかしながら、線形又はビットマップのブ
ランチの下のポピュレーションが、伸長ブランチに必要
なメモリを「償却」できる程度に大きいとき、又はデー
タ構造の(好ましくはインデックス毎のバイトで測定さ
れる)全体的な又は汎用的ななメモリ効率が、依然とし
て/選択された「同調可能な」値を超えないとき、ブラ
ンチは適宜伸長型へと変換される。 【0078】このことがヌルサブエクスパンスポインタ
上のメモリを浪費する一方で、ブランチを通過するにあ
たり迂回が1回(及びキャッシュフィル)確保される。
補足すると、後者のパラメータ、すなわち汎用的なメモ
リ効率をサポートするため、少なくともより大きいポピ
ュレーションのツリーにおいて、ルートポインタは、ツ
リーにより用いられる合計バイト数、及びツリー内で記
憶されるインデックスの合計カウントを記憶する、中間
データ構造を指す。この中間データ構造は、ツリーのト
ップブランチノードの近隣、又はその結果ツリーのトッ
プブランチとなる点に、存在させてもよい。 【0079】リーフ圧縮も、本発明に従い、上述の線形
及びビットマップリーフタイプを含む、多重インデック
スリーフの形式で利用される。典型的には、デジタルツ
リーの1ブランチにおける各ルックアップは、次に低い
レベルのサブエクスパンスポインタで、おそらく記憶可
能なインデックスのエクスパンス又は幅を減少させる。 【0080】それゆえ、各固有な、まだ復号されてない
残留ビットは、記憶する必要がある。すでに説明したよ
うに、エクスパンス内のポピュレーション(すなわち有
効インデックスの数)が小さいとき、単一オブジェクト
内に記憶することは有用となる。ここで単一オブジェク
トは、順次に、そうでなくくとも即時に検索可能だが、
より多くのツリーブランチを経て、それぞれ単一インデ
ックスと関連する特定用途リーフへと階層的に進むので
はない。一実施形態によるもっとも単純な場合では、イ
ンデックスのみのリーフは、有効インデックスのリスト
となる。 【0081】本発明者が経験的に決めたことであるが、
リーフのもっとも望ましいサイズは、比較的小さいもの
であり、例えばキャッシュライン2つ分、すなわち典型
的な32ビットワードサイズプラットフォームにおいて
32ワード又は128バイト以下である。2つの一杯とな
るキャッシュラインにおける、ソートされたインデック
スのリストの逐次検索でも、インデックスが第1キャッ
シュライン(1フィル)で見つかる時間の半分及び第2
ライン(2フィル)での半分の時間の後、平均して1.5
キャッシュフィルを要する(データはキャッシュに入っ
てないと仮定する)ことが分かった。すなわち、ポピュ
レーションが充分小さいとき、それをインデックスのリ
スト、ビットマップ、又は他のADTとして、デジタルツ
リーのより多くのレベルではなく、1から2のキャッシ
ュラインで記憶することが望ましいことが分かった。 【0082】図6(A)-(D)、及び図7(A)-(C)
は、本発明による線形リーフの例を示している。線形リ
ーフは順序化されたインデックスのリストであり、それ
ぞれNの未復号バイトにより構成されている。ここでN
は、最小レベル、すなわちルートから最も遠いレベルが
レベル1となる取り決めを用いたツリーのレベルであ
る。(補足すると、これはツリーが従来記述されたやり
かたと逆である。従来のやり方では、レベルの番号付け
は、一番上のノードをレベル1からはじめ、各子がその
親のレベルよりも高い数字のレベルとなる。) 好ましい実施形態によれば、リーフのポピュレーション
(インデックスの数はリーフのサイズと同じ)は、リー
フへのポインタと共に保存されるが、リーフ自身には保
存されない(単一ルートレベルの線形リーフにより完全
に構成されるかなり小さいアレイがあるが、これについ
て用いられる実行例は例外となる。)。 【0083】図6(A)-(D)に示すように、線形リー
フは、各インデックスについて、ツリーにおけるリーフ
のレベルで復号されるべく残っている、最小限の数のバ
イトのみを記憶する、ソートされたインデックスの、パ
ックされたアレイである。図7(A)-(C)は、値が各
インデックスに関連するときに用いられる、分離した値
の領域をかかる値のリストを含めて加えるための、代替
の具現例を示している。また補足すると、ルートレベル
のリーフと異なり、線形リーフはインデックスのカウン
トに対するポピュレーションフィールドを含める必要が
ない。代わりに本発明の好ましい実施形態によれば、親
ノードは、ポピュレーションフィールドを運ぶ。 【0084】テーブル2は、様々なレベルのツリーにお
ける(リーフのレベルを低くするには、残った部分のイ
ンデックスを表すためのより多くのバイトが必要)、3
2及び64ビットワードサイズプラットフォームのため
の、そしてインデックスに関する値を有するシステムの
ための、リーフの配置及び配列を含む。 【0085】 【表2】 補足すると、各場合において、リーフのインデックスサ
イズ、すなわち各インデックスの残った未復号バイトの
数は、参照しているリッチポインタ構造のタイプフィー
ルドにおいて列挙されている。最小リーフポピュレーシ
ョンは、即時リッチポインタが保持できるインデックス
がいくつかに基づいており、その結果より小さいポピュ
レーションが「即時化」される、すなわちリッチポイン
タ構造自身に記憶される。 【0086】対照的に、最大リーフポピュレーション
は、インデックスのみのリーフの場合、2つのキャッシ
ュラインの容量(例えば32ワード)により制限され、
又は値とインデックスが関連するリーフの場合、4つの
キャッシュラインの容量(例えば64ワード)により制
限される。64ビットプラットフォーム上での別の実施
形態の発明において、インデックスのみのリーフは、1
6のインデックスに達したらすぐに、即時インデックス
タイプから直接ビットマップリーフへと再配置される。
その目的は、単一ポピュレーションサイズ、そして次の
挿入におけるビットマップリーフに対して線形リーフを
作成し、同じサブエクスパンスにおいて、17のインデ
ックスに達するのを避けるためである。 【0087】線形リーフのメモリコストが、所定のしき
い値を超えるとき、例えば、上述の17インデックスに
達するときにビットマップリーフは有用である。従っ
て、ツリーの最小レベルにおいて、ここでは復号すべく
残っている単一インデックス桁数(例えばバイト)のみ
があるが、256インデックスのサブエクスパンスが、充
分なポピュレーション(例えば17インデックス)を有
しており、リーフを、サブエクスパンス内の各インデッ
クス毎に1ビットとなるビットマップとして表すことに
より、メモリが保存され、従って全体で256ビット又は
32バイトとなる。 【0088】32ビットワードのプラットフォームで具
現化されるインデックスのみのビットマップリーフの例
が、図8において表されている。図において、各水平の
矩形領域は、1ワードを表す。64ビットプラットフォ
ームでは、ワードが大きくなり、そしてビットマップ中
のワードが半分である場合を除き、リーフは同じように
なる。ビットマップ中のビットは、リーフのエクスパン
スにおけるどのインデックスが実際に存在できる、すな
わち記憶できるかを示している。 【0089】図9は、問題となるデータ構造が、値と記
憶されたインデックスとの関連付けを行う代替の実施形
態の概略図を示したものである。示したように、有効イ
ンデックス当たり1ワードを含む値領域は、ビットマッ
プリーフに含まれる。ビットマップブランチと同様、こ
のビットマップリーフの実施形態は2列の構成体である
が、リッチポインタアレイ(要素毎に2ワードとなる)
の代わりに、値領域サブアレイ、すなわち要素毎に1ワ
ードを有する値のリストである点が異なる。 【0090】64ビットプラットフォームでは、ビット
マップは4ワードを代わりに必要とし、4ワードは用い
られない。2列の構成体を用いる結果、含まれるメモリ
及びキャッシュラインのバイト数が少なくなるため、値
リストの修正が高速となる。 【0091】ビットマップブランチと同様に、エクスパ
ンスが充分小さいとき、例えば8ビット又は1バイトの
256に分かれたノードが、復号されないで残っていると
き、そしてエクスパンスのポピュレーションが充分大き
いとき、例えば25インデックスより大きいか同じのと
き、エクスパンス中の有効インデックスをインデックス
のリストでなくビットマップとして表すことは都合がい
い(すなわち「メモリに関してはより安い」)ことが分
かる。 【0092】この特性は、インデックス毎の未復号バイ
トが丁度1つとなるツリーのレベル1(すなわちルート
ノードからもっとも遠いリーフ)においてのみ真とな
る。本発明の好ましい実施形態によれば、ビットマップ
リーフを用いることはレベル1リーフに、すなわち、唯
一の未復号バイトを含むインデックスに関して限定され
る。 【0093】データ構造はさらに、リーフインデックス
圧縮を含む。線形リーフとの関連で説明したように、デ
ジタルツリーの通過は、検索、挿入、又は削除されたタ
ーゲットインデックスの部分(例えば1バイトセグメン
ト)を表すインデックスビットの復号を含んでいる。多
くの場合において、リーフに到達すると、リーフに記憶
されたインデックスにおけるビットのいくつか又はほと
んどは、すでに復号されている。すなわち、ツリーにお
いて各位置毎に(すなわちデジタルに)記憶される。 【0094】従って、残った未復号インデックスビット
(接尾部)のみが、リーフ中に記憶される。従って、3
2ビットプラットフォーム上で、4バイトインデックス
が1度に1バイト復号された状態で(すなわち、ツリー
の各ブランチにおいて)、2つの64バイトのワイドキ
ャッシュラインのサイズ(すなわち128バイト)を有
する(ターミナル)リーフは、テーブル3に示すような
圧縮インデックスの数を収容してもよい。 【0095】 【表3】 テーブル3を参照すると、インデックスごとに1バイト
の場合、一度ポピュレーションが24インデックスを超
えると、32バイト(すなわち256ビット)オブジェ
クトは、低レベルリーフにおける可能なインデックスの
全てを表すビットマップを保持する程度に充分となる。
また、リーフインデックス圧縮がさらなる利点を有する
点は注意すべきである。 【0096】特に、ツリーのより低いレベルのインデッ
クスは、現レベルのリーフより多くのインデックスを保
持することができる。その結果、たとえ即時インデック
スがなくとも、既存のリーフをオーバーフローする単一
インデックスを挿入することによりカスケードしても、
ツリー中で追加の1つのレベルより多くは決して作成し
ない。同様に、単一インデックスを削除することにより
カスケードしなくとも、ツリー中の1つのレベルより多
くは決して削除しない。言いかえると、リーフ圧縮は、
修正中の変化のよい局所性をサポートしている。 【0097】すでに説明したように、本データ構造が、
固定サイズのインデックスについて説明されている一
方、文字ストリング及び不定長のビットストリングのよ
うな様々なサイズのインデックスを収容すべく、それを
直ちに修正してもよい。例えば、不定長のビットストリ
ングをインデックスとして用いることで、単一インデッ
クスの、独自に残った接尾部は、もし十分小さいもので
あれば、リッチポインタ内に直ちに記憶してもよく、も
しより長ければ、様々なサイズの単一インデックスの接
尾リーフ内に記憶してもよい。 【0098】図10は、本発明に係るデータ構造を具現
化し、維持するメモリ格納プログラムをサポートし、走
らせることのできる、コンピュータシステムの概略図で
ある。従って本発明は、幅広いデータ構造、プログラム
言語、オペレーティングシステム、ハードウェアプラッ
トフォーム及びシステムに適用可能であり、図15は、
本発明をサポートするのに適したプラットフォームを含
んだ、かかるコンピュータシステム1000を示している。 【0099】コンピュータシステム1000は、システムバ
ス1002に結合した中央演算処理装置1001を含む。CPU100
1は、HP PA-8500又はインテルペンティアムプロセッサ
のような、一般的な用途のCPUとしてもよい。しかしな
がら、CPU1001が、例えばポインタの使用など、ここで
説明された工夫された動作をサポートする限り、本発明
はCPU1001のアーキテクチャに拘束されるわけではな
い。システムバス1002は、ランダムアクセスメモリ(RA
M)1003に結合されるが、これはSRAM、DRAM、又はSDRAM
としてもよい。 【0100】ROM1004はまた、システムバス1002に結合
されるが、PROM、EPROM、又はEEPROMとしてもよい。RAM
1003及びROM1004は、ユーザ、システムデータ、及びプ
ログラムを業界において知られたものにする。 【0101】システム1002はまた、入出力(I/O)制御
カード1005、通信アダプタカード1011、ユーザインター
フェースカード1008、及びディスプレイカード1009に結
合される。I/Oカード1005は、ハードディスクドライ
ブ、CDドライブ、フロッピー(登録商標)ディスクドラ
イブ、テープドライブ、といったストレージデバイス10
06をコンピュータシステムに接続する。通信カード1011
は、コンピュータシステム1000をネットワーク1012に結
合するよう適合されるが、ネットワーク1012は、電話ネ
ットワーク、ローカル/ワイドエリアネットワーク(LA
N/WAN)、イーサネット(登録商標)ネットワーク、イ
ンターネットネットワークとしてもよく、有線又は無線
とすることができる。ユーザインターフェースカード10
08は、キーボード1013、ポインティングデバイス1007、
等のユーザ入力デバイスをコンピュータシステム1000に
結合する。ディスプレイカード1009は、CPU1001により
駆動し、ディスプレイ装置1010を制御する。 【0102】本発明は、現在好ましい実施形態と考えら
れるものとの関係で説明してきたが、本発明は開示され
た範囲に限定されるものではなく、逆に付された特許請
求の範囲の趣旨及び範囲内に含まれる様々な修正や同等
の配置をカバーすることを意図してることを理解すべき
である。この発明は例として、次の実施形態を含む。 【0103】(1)コンピュータメモリに格納するため
のデータ構造であって、データ構造はデータ処理システ
ムで実行されるアプリケーションプラグラムによりアク
セス可能であり、前記データ構造は、ルートポインタ
(101)と、前記ルートポインタにより指され、階層的
に配置された第1の複数ノードを含むデジタルツリー
(102,105,106,112-113)とを備え、第2複数ノード
は、中身のあるサブエクスパンスの数及びデジタルツリ
ーの全体ステータスに従って選択された、線形ブランチ
ノード(図3)、ビットマップブランチノード400、及
び伸長ブランチノード(図5)から構成されるグループ
から選択されるブランチノード(105,106,113)と、線
形リーフノード(図6及び図7)及びビットマップリー
フノード(図8及び図9)から構成されるグループによ
り選択され、それぞれ複数インデックスを保持し、デジ
タルツリー内のリーフ及びリーフ内のインデックスの数
のレベルに従った、未復号インデックスのみを含むリー
フノード(108,110,116-123)と、を含むデータ構造。 【0104】(2)前記第2の複数ノードは、線形ブラ
ンチノード(図3)、ビットマップブランチノード(図
4)、及び伸長ブランチノード(図5)を含む(1)に
記載のデータ構造。 【0105】(3)前記第2の複数ノードは、線形リー
フノード(図6及び図7)及びビットマップリーフノー
ド(図8及び図9)を含む(1)に記載のデータ構造。 【0106】(4)前記線形ブランチノード(図3)は
少なくとも線形リストを含み、第1リストは少なくとも
各関係する中身のあるサブエクスパンスの対応するイン
デックスビットを含むサブエクスパンス記述語を含み、
第2リストは各関係するサブエクスパンスの1つ又は複
数の補助ノードへのポインタを含み、前記ポインタは前
記第1リストの前記サブエクスパンス記述語に対応する
(1)に記載のデータ構造。 【0107】(5)前記ポインタのそれぞれがリッチポ
インタ(図2A及び2B)を含む(4)に記載のデータ
構造。 【0108】(6)前記線形ブランチノード(105及び
図3)は少なくとも2つの線形リストを含み、第1のリ
スト(E1-E4)は、各関連する中身のあるサブエクスパ
ンスの少なくとも対応するインデックスビットを含むサ
ブエクスパンス記述語を含み、第2のリスト(エクスパ
ンス1-4のリッチポインタ)は、各関連するサブエクス
パンスの1つ又は複数の補助ノードを指すポインタを含
み、前記ポインタは、前記第1リストの前記サブエクス
パンス記述語に対応する(1)に記載のデータ構造。 【0109】(7)前記ビットマップブランチ113,400
は、各可能なビットマップブランチノード下のサブエク
スパンスについての1ビットを含むビットの第1リスト
401を少なくとも含み、前記ビットの各々は、対応する
サブエクスパンスにインデックスがあるか否かを示し、
ポインタ402の第2リストは、前記サブエクスパンスの
それぞれについて少なくとも1つの補助ノードを指し、
前記ポインタは、前記第1リスト中の前記ビットのステ
ータスに対応する(1)に記載のデータ構造。 【0110】(8)前記ビットマップリーフノード(図
8及び図9)は、リーフ中の各可能なインデックスに対
し1ビットを含んだ第1リストを少なくとも含み、前記
ビットのそれぞれは、前記インデックスのうち対応する
1つが有効であるか否かを示す(1)に記載のデータ構
造。 【0111】(9)インデックスが属するデータ構造
(図1)の圧縮ブランチノード(図3及び図4)を識別
するステップと、前記データ構造のパラメータを決定す
るステップと、前記値に応答して、前記圧縮ブランチノ
ードを伸長ブランチノード(図5)に選択的に変換する
ステップと、前記伸長ブランチノード下でインデックス
を記憶するステップとを備え、前記パラメータは、デー
タ構造についてのインデックス値及び前記圧縮ブランチ
ノードの下のポピュレーション毎に用いられるメモリ全
体のうちの1つを含む、データ構造中のインデックスを
記憶する方法。 【0112】(10)前記データ構造は、データ処理シ
ステム1000上で実行されるアプリケーションプログラム
によりアクセスできるよう、コンピュータメモリ1003,1
004に記憶され、前記データ構造は、ルートポインタ101
と、前記ルートポインタにより指され、階層的に配置さ
れた複数のノードを含むデジタルツリー102,105,106,11
2-113とを備え、各ノードはそれぞれ、前記圧縮ブラン
チノード(図3及び図4)及び前記伸長ブランチノード
(図5)により構成されるグループから選択されたブラ
ンチノード105,106,113と、線形リーフノード(図6及
び図7)及びビットマップリーフノード(図8及び図
9)により構成されるグループから選択されたリーフノ
ード108,110,116-123とを備え、各リーフノードは、複
数インデックスを保持し、デジタルツリー中のリーフの
レベル及びリーフ中のインデックスの数に従った未復号
インデックスビットのみを含む(9)に記載の方法。
【図面の簡単な説明】 【図1A】メモリ利用効率を最大化し、その一方でイン
デックスアクセス時間を最小化するための、本発明に係
るハイブリッド抽象データタイプ構造(ADTs)を結合す
るデジタルツリーの例の概略図である。 【図1B】本発明に係るハイブリッド抽象データタイプ
構造(ADTs)を結合するデジタルツリーの例の概略図で
ある。 【図1C】本発明に係るハイブリッド抽象データタイプ
構造(ADTs)を結合するデジタルツリーの例の概略図で
ある。 【図1D】本発明に係るハイブリッド抽象データタイプ
構造(ADTs)を結合するデジタルツリーの例の概略図で
ある。 【図1E】本発明に係るハイブリッド抽象データタイプ
構造(ADTs)を結合するデジタルツリーの例の概略図で
ある。 【図1F】本発明に係るハイブリッド抽象データタイプ
構造(ADTs)を組み合わせた例の概略図である。 【図2A】適合オブジェクト又は「リッチポインタ」の
一般的な略図である。 【図2B】インデックスの中間格納を結合するリッチポ
インタの一般的な略図である。 【図3】線形ブランチの例の略図である。 【図4】ビットマップブランチの例の略図である。 【図5】伸長ブランチの略図である。 【図6】インデックスのみを参照する構造についての線
形リーフの例を示す概略図である。 【図7】構造に記憶された各有効インデックスに関連す
る値を有する構造についての線形リーフの例を示す概略
図である。 【図8】インデックスのみを参照する構造についてのビ
ットマップリーフ構造の概略図である。 【図9】各インデックスに関連する値を含むビットマッ
プリーフ構造の概略図である。 【図10】本題となるデジタルツリーが具現化されるコ
ンピュータシステムのブロック図である。 【符号の説明】 101 ルートポインタ 102 トップレベルノード 103,104,107,109 リッチポインタ 105 線形ブランチ 106 伸長ブランチ 108,110 線形リーフノード 116,117,123 ビットマップリーフ 118−122 線形ブランチリーフ 400 ビットマップブランチ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 アラン・シルバースタイン アメリカ合衆国80525コロラド州フォート コリンズ、シドニー・ドライヴ 618

Claims (1)

  1. 【特許請求の範囲】 【請求項1】コンピュータメモリに格納するためのデー
    タ構造であって、 データ構造はデータ処理システムで実行されるアプリケ
    ーションプラグラムによりアクセス可能であり、前記デ
    ータ構造は、 ルートポインタと、 前記ルートポインタにより指され、階層的に配置された
    第1の複数ノードを含むデジタルツリーとを備え、第2
    の複数ノードは、 中身のあるサブエクスパンスの数、及びデジタルツリー
    の全体ステータスに従って選択された、線形ブランチノ
    ード、ビットマップブランチノード、及び伸長ブランチ
    ノードから構成されるグループにより選択されるブラン
    チノードと、 線形リーフノード及びビットマップリーフノードにより
    構成されるグループから選択され、それぞれ複数インデ
    ックスを保持し、デジタルツリー内のリーフ及びリーフ
    内のインデックスの数のレベルに従った、未復号インデ
    ックスのみを含むリーフノードと、を含むデータ構造。
JP2002149067A 2001-06-04 2002-05-23 コンピュータメモリに格納するためのデータ構造 Pending JP2003058401A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/874,468 2001-06-04
US09/874,468 US6816856B2 (en) 2001-06-04 2001-06-04 System for and method of data compression in a valueless digital tree representing a bitset

Publications (1)

Publication Number Publication Date
JP2003058401A true JP2003058401A (ja) 2003-02-28

Family

ID=25363851

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002149067A Pending JP2003058401A (ja) 2001-06-04 2002-05-23 コンピュータメモリに格納するためのデータ構造

Country Status (3)

Country Link
US (1) US6816856B2 (ja)
EP (1) EP1265162A3 (ja)
JP (1) JP2003058401A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220237191A1 (en) * 2021-01-25 2022-07-28 Salesforce.Com, Inc. System and method for supporting very large data sets in databases

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8550922B2 (en) * 2006-03-03 2013-10-08 Igt Game removal with game history
US7287033B2 (en) * 2002-03-06 2007-10-23 Ori Software Development, Ltd. Efficient traversals over hierarchical data and indexing semistructured data
JP4128439B2 (ja) * 2002-12-26 2008-07-30 富士通株式会社 配列圧縮方法
TWI241502B (en) * 2002-12-26 2005-10-11 Ind Tech Res Inst Real time data compression apparatus for a data recorder
EP1503296A1 (en) * 2003-07-30 2005-02-02 Sap Ag Computer implemented method for retrieving data from a data storage system and according computer program product and data storage system
US6961733B2 (en) 2003-03-10 2005-11-01 Unisys Corporation System and method for storing and accessing data in an interlocking trees datastore
US20060101018A1 (en) 2004-11-08 2006-05-11 Mazzagatti Jane C Method for processing new sequences being recorded into an interlocking trees datastore
US8516004B2 (en) 2003-09-19 2013-08-20 Unisys Corporation Method for processing K node count fields using an intensity variable
US7188098B2 (en) * 2003-09-24 2007-03-06 International Business Machines Corporation Query transformation for union all view join queries using join predicates for pruning and distribution
US7340471B2 (en) 2004-01-16 2008-03-04 Unisys Corporation Saving and restoring an interlocking trees datastore
US7593923B1 (en) 2004-06-29 2009-09-22 Unisys Corporation Functional operations for accessing and/or building interlocking trees datastores to enable their use with applications software
US8203972B2 (en) * 2004-06-30 2012-06-19 Sap Ag Method and system for compressing a tree
US7403495B2 (en) * 2004-06-30 2008-07-22 Sap Ag Method and system for compressing a tree
US7213041B2 (en) * 2004-10-05 2007-05-01 Unisys Corporation Saving and restoring an interlocking trees datastore
US7716241B1 (en) 2004-10-27 2010-05-11 Unisys Corporation Storing the repository origin of data inputs within a knowledge store
US7908240B1 (en) 2004-10-28 2011-03-15 Unisys Corporation Facilitated use of column and field data for field record universe in a knowledge store
US20070162508A1 (en) * 2004-11-08 2007-07-12 Mazzagatti Jane C Updating information in an interlocking trees datastore
US7499932B2 (en) 2004-11-08 2009-03-03 Unisys Corporation Accessing data in an interlocking trees data structure using an application programming interface
US7348980B2 (en) * 2004-11-08 2008-03-25 Unisys Corporation Method and apparatus for interface for graphic display of data from a Kstore
US7676477B1 (en) 2005-10-24 2010-03-09 Unisys Corporation Utilities for deriving values and information from within an interlocking trees data store
US8356040B2 (en) * 2005-03-31 2013-01-15 Robert T. and Virginia T. Jenkins Method and/or system for transforming between trees and arrays
US7409380B1 (en) 2005-04-07 2008-08-05 Unisys Corporation Facilitated reuse of K locations in a knowledge store
US7389301B1 (en) 2005-06-10 2008-06-17 Unisys Corporation Data aggregation user interface and analytic adapted for a KStore
JP4670496B2 (ja) * 2005-06-14 2011-04-13 住友電気工業株式会社 光受信器
US7734571B2 (en) 2006-03-20 2010-06-08 Unisys Corporation Method for processing sensor data within a particle stream by a KStore
US20080275842A1 (en) * 2006-03-20 2008-11-06 Jane Campbell Mazzagatti Method for processing counts when an end node is encountered
US7689571B1 (en) 2006-03-24 2010-03-30 Unisys Corporation Optimizing the size of an interlocking tree datastore structure for KStore
US8238351B2 (en) 2006-04-04 2012-08-07 Unisys Corporation Method for determining a most probable K location
US7676330B1 (en) 2006-05-16 2010-03-09 Unisys Corporation Method for processing a particle using a sensor structure
CN101207665B (zh) * 2007-11-05 2010-12-08 华为技术有限公司 一种衰减因子的获取方法
CN100550712C (zh) * 2007-11-05 2009-10-14 华为技术有限公司 一种信号处理方法和处理装置
US8892831B2 (en) * 2008-01-16 2014-11-18 Apple Inc. Memory subsystem hibernation
US20090198952A1 (en) * 2008-02-04 2009-08-06 Apple Inc Memory Mapping Architecture
CN101577662B (zh) 2008-05-05 2012-04-04 华为技术有限公司 一种基于树形数据结构的最长前缀匹配方法和装置
US20090307409A1 (en) * 2008-06-06 2009-12-10 Apple Inc. Device memory management
US8516219B2 (en) * 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US8078642B1 (en) * 2009-07-24 2011-12-13 Yahoo! Inc. Concurrent traversal of multiple binary trees
US8468293B2 (en) * 2009-07-24 2013-06-18 Apple Inc. Restore index page
US10698953B2 (en) * 2009-10-30 2020-06-30 Oracle International Corporation Efficient XML tree indexing structure over XML content
US9002859B1 (en) 2010-12-17 2015-04-07 Moonshadow Mobile, Inc. Systems and methods for high-speed searching and filtering of large datasets
WO2012097009A2 (en) 2011-01-10 2012-07-19 Ward Roy W Systems and methods for high-speed searching and filtering of large datasets
US9171079B2 (en) 2011-01-28 2015-10-27 Cisco Technology, Inc. Searching sensor data
US9275093B2 (en) * 2011-01-28 2016-03-01 Cisco Technology, Inc. Indexing sensor data
US9225793B2 (en) 2011-01-28 2015-12-29 Cisco Technology, Inc. Aggregating sensor data
US9155320B2 (en) * 2011-07-06 2015-10-13 International Business Machines Corporation Prefix-based leaf node storage for database system
US9171054B1 (en) 2012-01-04 2015-10-27 Moonshadow Mobile, Inc. Systems and methods for high-speed searching and filtering of large datasets
US8990204B1 (en) 2012-01-17 2015-03-24 Roy W. Ward Processing and storage of spatial data
SE1351392A1 (sv) * 2013-11-22 2015-05-23 Oricane Ab Förfarande och anordning för att organisera data
US9043196B1 (en) 2014-07-07 2015-05-26 Machine Zone, Inc. Systems and methods for identifying and suggesting emoticons
US10521411B2 (en) 2016-08-10 2019-12-31 Moonshadow Mobile, Inc. Systems, methods, and data structures for high-speed searching or filtering of large datasets
WO2019060351A1 (en) * 2017-09-21 2019-03-28 Mz Ip Holdings, Llc SYSTEM AND METHOD FOR USING LOW MEMORY CONSUMPTION DATA STRUCTURES FOR FRIMOUSSES SUGGESTIONS
US11073828B2 (en) * 2017-12-08 2021-07-27 Samsung Electronics Co., Ltd. Compression of semantic information for task and motion planning
US11663271B1 (en) * 2018-10-23 2023-05-30 Fast Simon, Inc. Serverless search using an index database section
US11106657B2 (en) 2018-11-20 2021-08-31 International Business Machines Corporation Optimizing hash storage and memory during caching
US11640380B2 (en) 2021-03-10 2023-05-02 Oracle International Corporation Technique of comprehensively supporting multi-value, multi-field, multilevel, multi-position functional index over stored aggregately stored data in RDBMS
US20220121447A1 (en) * 2021-12-23 2022-04-21 Intel Corporation Hardening cpu predictors with cryptographic computing context information

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530957A (en) 1992-08-07 1996-06-25 At&T Corp. Storing trees in navigable form
JP3433803B2 (ja) * 1993-07-07 2003-08-04 ヨーロピアン コンピューター − インダストリー リサーチ センター ゲーエムベーハー データベースの構造
US5557786A (en) 1994-01-24 1996-09-17 Advanced Computer Applications, Inc. Threaded, height-balanced binary tree data structure
JPH07319924A (ja) 1994-05-24 1995-12-08 Matsushita Electric Ind Co Ltd 手書き電子文書のインデックス付けおよび探索方法
US5664172A (en) * 1994-07-19 1997-09-02 Oracle Corporation Range-based query optimizer
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
US5829004A (en) 1996-05-20 1998-10-27 Au; Lawrence Device for storage and retrieval of compact contiguous tree index records
US5857196A (en) 1996-07-19 1999-01-05 Bay Networks, Inc. Method for storing a tree of potential keys in a sparse table
US5974411A (en) 1997-02-18 1999-10-26 Sand Technology Systems International, Inc. N-way processing of bit strings in a dataflow architecture
FI102426B (fi) * 1997-03-14 1998-11-30 Nokia Telecommunications Oy Menetelmä muistin toteuttamiseksi
US5987468A (en) * 1997-12-12 1999-11-16 Hitachi America Ltd. Structure and method for efficient parallel high-dimensional similarity join
US6070164A (en) * 1998-05-09 2000-05-30 Information Systems Corporation Database method and apparatus using hierarchical bit vector index structure
US6067574A (en) 1998-05-18 2000-05-23 Lucent Technologies Inc High speed routing using compressed tree process
US6470344B1 (en) * 1999-05-29 2002-10-22 Oracle Corporation Buffering a hierarchical index of multi-dimensional data
FI991262A (fi) 1999-06-02 2000-12-03 Nokia Networks Oy Digitaaliseen trie-rakenteeseen perustuva muisti
US6654760B2 (en) * 2001-06-04 2003-11-25 Hewlett-Packard Development Company, L.P. System and method of providing a cache-efficient, hybrid, compressed digital tree with wide dynamic ranges and simple interface requiring no configuration or tuning

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220237191A1 (en) * 2021-01-25 2022-07-28 Salesforce.Com, Inc. System and method for supporting very large data sets in databases

Also Published As

Publication number Publication date
US20030061189A1 (en) 2003-03-27
EP1265162A3 (en) 2004-05-12
EP1265162A2 (en) 2002-12-11
US6816856B2 (en) 2004-11-09

Similar Documents

Publication Publication Date Title
JP2003058401A (ja) コンピュータメモリに格納するためのデータ構造
JP2003044335A (ja) デジタルツリーデータ構造
JP2003114816A (ja) コンピュータメモリにインデックスを記憶するデータ構造
US6785687B2 (en) System for and method of efficient, expandable storage and retrieval of small datasets
US6678687B2 (en) Method for creating an index and method for searching an index
AU2002222096B2 (en) Method of organising, interrogating and navigating a database
US6728732B1 (en) Data structure using a tree bitmap and method for rapid classification of data in a database
CN102521334B (zh) 一种基于分类特性和平衡二叉树的数据存储、查询方法
US7668890B2 (en) Prefix search circuitry and method
CN102024047B (zh) 数据检索方法及装置
US20020091715A1 (en) Process and system for sparse vector and matrix reperesentation of document indexing and retrieval
US20030236793A1 (en) Compressed prefix tree structure and method for traversing a compressed prefix tree
CN1152365A (zh) 一种存储和检索数据的方法和一种存储器配置
JP2002501256A (ja) データベース装置
US7249149B1 (en) Tree bitmap data structures and their use in performing lookup operations
KR20010022028A (ko) 데이터-베이스 구조
US6532457B1 (en) Look-ahead tree structure
CN108197313B (zh) 通过16位Trie树实现空间优化的词典索引方法
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
Vassilakopoulos et al. Dynamic inverted quadtree: A structure for pictorial databases
Egidi et al. Space-efficient merging of succinct de Bruijn graphs
Jung et al. A dynamic construction algorithm for the Compact Patricia trie using the hierarchical structure
JPH07225770A (ja) データ検索装置
CN110134758A (zh) 一种面向连续空间-模糊关键字查询的索引方法
Giancarlo et al. Multi-dimensional pattern matching with dimensional wildcards: Data structures and optimal on-line search algorithms