JP2020514894A - データベースにおけるトライデータ構造の有効使用 - Google Patents
データベースにおけるトライデータ構造の有効使用 Download PDFInfo
- Publication number
- JP2020514894A JP2020514894A JP2019547991A JP2019547991A JP2020514894A JP 2020514894 A JP2020514894 A JP 2020514894A JP 2019547991 A JP2019547991 A JP 2019547991A JP 2019547991 A JP2019547991 A JP 2019547991A JP 2020514894 A JP2020514894 A JP 2020514894A
- Authority
- JP
- Japan
- Prior art keywords
- trie
- node
- key
- bitmap
- 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.)
- Granted
Links
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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
-
- 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/2237—Vectors, bitmaps or matrices
-
- 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
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24561—Intermediate data storage techniques for performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Operations Research (AREA)
- Algebra (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
本発明は、一般的には、データベース及び情報検索システムにおけるトライデータ構造の有効使用及び高性能を有するそのようなシステムへの問い合わせに関する。
データベース及び情報検索システムは、構造化情報及び非構造化情報の処理に使用されている。一般に、構造化データはデータベース(例えば、関係データベース)の領域であり、一方、非構造化情報は情報検索システム(例えば、全文サーチ)の領域である。データベースエンジンは、データを格納し検索する、データベース管理システム(又は他のアプリケーション)の部分である。情報検索システムでは、この機能はサーチエンジンによって実行される。
トライデータ構造を実施する一方法は、ノードをメモリに別個に格納することであり、各ノードは、ノードがリーフノードであるか否かを示すノードタイプ情報、その子ノードへのポインタの配列(少なくともノードがリーフノードではない場合)、及びリーフノードの場合、恐らくはペイロード、例えば、キーに関連付けられた値を含む。この手法を使用すると、ノードからノードへのトラバースは一定時間の動作であり、その理由は、各子ポインタが、各キー部分を表す配列エントリに対応するためである。しかしながら、少数のみの子ノードを有するノードの場合、対応する配列が多くの空エントリを含み格納するため、メモリ使用は非常に非効率的であり得る。これは、より大きな英字が使用される場合、特に当てはまり、その理由は、大量の子ポインタを格納する必要があるためである。
通常、従来技術で使用されるトライの英字の基数は、ユニコードのような大きな英字からの文字に対応できるようにするために、比較的大きく、例えば、256である。256個の異なる値を用いると、8ビット(28=256)、すなわち1バイトを符号化することができる。しかしながら、トライが上述したようにビットマップを使用する場合、ビットマップの幅は、英字の基数に伴って増大する。例えば、基数が256の英字は、256ビットのビットマップサイズを必要とする。そのような大きなビットマップは特に、トライが疎に存在する場合、空間非効率的であり得、その理由は、256ビットをあらゆるノードに割り振る必要があるが、それらの一部しか使用されないことがあるためである。更に、近代のコンピュータのレジスタのビット幅は通常、わずか64ビットであるため、例えば、256ビットを有する大きなビットマップは、時間効率的に処理することができない。仮にトライが更に大きな英字の文字に適応するので、効率問題は更に大きくなる。したがって、従来技術において文字を空間効率的且つ時間効率的に格納することができる英字の基数は制限される。
データベースで実行されるクエリは一般に、論理代数(例えば、SQL)で表現される。それらの実行のために、クエリは物理代数:物理クエリ実行プラン(QEP:physical query execution plan)に変換される必要がある。クエリは書き換えられ、最適化され、クエリ実行エンジン(QEE)がデータベースに対する先行ステップにより生成されたQEPを実行するようなQEPが準備される。
本発明の第4の実施形態は、電子データベースアプリケーション又は情報検索システムで使用されるトライであり、トライは1つ又は複数のノードを含み、2つ以上の子ノードを有する、トライに含まれる親ノード、好ましくは少なくとも各親ノードはビットマップを含み、ノード、好ましくは各子ノードには、キー部分が関連付けられ、親が2つ以上の子ノードを有する、子ノード、好ましくは少なくとも各子ノードのキー部分の値は、子ノードが関連付けられたビットを有する親ノードに含まれるビットマップ内の(設定)ビットの値によって決まる。トライは、1つのみの子ノードを有し、全ての子孫ノードが多くとも1つの子ノードを有するノード、好ましくは各ノードは、末端分岐ノードと記され、末端分岐ノード、好ましくは各末端分岐ノードの子孫ノード、好ましくは各子孫ノードに関連付けられたキー部分の値は、子孫ノードの親ノードに含まれるビットマップ内の(設定)ビットの値によって決まらないことを特徴とする。
本発明の第19の実施形態は、電子データベースアプリケーション又は情報検索システムで使用されるトライであり、トライは1つ又は複数のノードを含み、2つ以上の子ノードを有するノード、好ましくは少なくとも各親ノードは、論理ビットマップの形態のビットマップ及び幾つかのポインタを含み、各ポインタには論理ビットマップにおいて設定されたビットが関連付けられ、各ポインタはノードの子ノードを指す。トライは、論理ビットマップが複数のセクションに分割され、ヘッダビットマップ及び幾つかのコンテンツビットマップにより符号化され、各セクションには、ヘッダビットマップ内のビットが関連付けられ、1つ又は複数のビットが設定された論理ビットマップの各セクションについて、ヘッダビットマップにおいて、セクションに関連付けられたビットは設定され、セクションはコンテンツビットマップとして格納されることを特徴とする。
本発明の第33の実施形態は、電子データベースアプリケーション又は情報検索システムで使用されるトライであり、トライは1つ又は複数のノードを含み、ノード、好ましく各子ノードにはキー部分が関連付けられ、ルートノードからトライ内の別のノード、特にリーフノードへのパスはキーを定義し、キーは、パス内のノードに関連付けられたキー部分を連結したものである。トライは、キーが制御情報及びコンテンツ情報を含むことを特徴とする。
本発明の第50の実施形態は、電子データベースアプリケーション又は情報検索システムで使用されるトライであり、トライは1つ又は複数のノードを含み、ノード、好ましくは各子ノードにはキー部分が関連付けられ、トライ内のルートノードから別のノード、特にリーフノードへのパスが、ノードが関連付けられたキーを定義し、キーは、パス上のノードに関連付けられたキー部分を連結したものである。トライは、2つ以上のデータ項目はキーにおいて符号化され、データ項目の最後における1つ又は2つ、好ましくは各データ項目は、2つ以上の構成要素からなり、キーは2つ以上の連続セクションを含み、セクションの少なくとも1つ又は2つ、好ましくは各セクションは、キーに符号化されたデータ項目の2つ以上の構成要素を含むことを特徴とする。
第58の実施形態によれば、第50〜第57の実施形態のいずれか1つにおいて、2つ以上のデータ項目はジオロケーションデータを表す。
ビットマップ及びメモリの詳細
第73の実施形態によれば、第1〜32、第49、又は第72の実施形態のいずれか1つにおいて、ビットマップは、予め定義されたサイズの整数としてメモリに記憶される。
第78の実施形態によれば、第1〜第32、第49、又は第72〜第77の実施形態のいずれか1つにおいて、2つ以上の子ノードを有する親ノード、好ましくは少なくとも各親ノードに含まれるポインタの量は、前記親ノードに含まれるビットマップにおいて設定されたビット量に等しい。
第83の実施形態によれば、第3、又は第33〜第82の実施形態のいずれか1つにおいて、親が2つ以上の子ノードを有する子ノード、好ましくは少なくとも各子ノードのキー部分の値は、ビットが子ノードに関連付けられた親ノードに含まれるビットマップ内の(設定)ビットの値によって決まる。
第88の実施形態によれば、第1〜第87の実施形態のいずれか1つにおいて、データ項目の値、好ましくは全てのデータ項目の値の符号化は、データ項目のデータ型を符号なし整数を本質的な特徴とするオフセット二進数表現に変換することによって得られる。
第92の実施形態によれば、第1〜第91の実施形態のいずれか1つにおいて、トライは、動的集合又は連想配列を格納する。
本発明の第93の実施形態は、電子データベース又は情報検索システムからデータを検索する方法であり、本方法は、2つ以上の入力トライを取得することであって、各入力トライは、電子データベース若しくは情報検索システムに記憶されたキーの集合又は電子データベースクエリ若しくは情報検索システムクエリの結果キーを格納する、取得することと、論理演算を使用して入力トライを結合して、結果トライのノードに関連付けられたキーの集合を取得することと、出力として、結果トライのノードに関連付けられたキーの集合及び/又は他のデータ項目(例えば、ドキュメント識別子)又は結果キーのノードに関連付けられたキーのサブセット及び/又は他のデータ項目、特に、結果トライのリーフに関連付けられたキー及び/又は他のデータ項目又は結果トライのノードに関連付けられたキーから導出されたキー若しくは値の集合を提供することを含み、
−トライは1つ又は複数のノードを含み、各子ノードにはキー部分が関連付けられ、ルートノードからトライ内の別のノードへのパスは、ノードに関連付けられたキーを定義し、キーは、パス上のノードに関連付けられたキー部分を連結したものであり、
−論理演算が差分である場合、結果トライの親ノードは、第1の入力トライの親ノードであり、結果トライの親ノードのリーフは、論理演算を使用して、第1の入力トライ内の対応する親ノードの子ノードの集合と、他の入力トライ内の任意の対応する親ノードの子ノードの集合とを結合したものであり、
−論理演算が差分ではない場合、結果トライ内の各ノードの子ノードの集合は、論理演算を使用して、入力トライ内の対応するノードの子ノードの集合を結合したものであり、
−異なるトライのノードに関連付けられたキーが同一である場合、異なるトライの2つ以上のノードは互いに対応する。
第96の実施形態によれば、第93〜第95の実施形態のいずれか1つにおいて、入力トライを結合するステップは、結果トライのルートノードに対して結合関数を実行することを含み、結果トライの入力ノードに対して結合関数を実行することは、論理演算を使用して、結果トライの入力ノードに対応する入力トライのノードの子ノードの集合を結合することにより、結果トライの入力ノードの子ノードの集合を特定することと、結果トライの入力ノードに特定された子ノードのそれぞれに対して結合関数を実行することとを含む。
第100の実施形態によれば、第93〜第99の実施形態のいずれか1つにおいて、入力トライにおけるノード、好ましくは入力トライ内の少なくとも全ての親ノードはビットマップを含む。
第104の実施形態によれば、第93〜第103の実施形態のいずれか1つにおいて、論理演算は論理積、論理和、差分、又は排他的論理和である。
第107の実施形態によれば、第93〜第106の実施形態のいずれか1つにおいて、入力トライの1つ又は複数は、同じ又は異なる論理演算を使用して、本明細書に記載されるデータベースクエリを実行する方法の出力である。
第108の実施形態によれば、第93〜第106の実施形態のいずれか1つにおいて、入力トライの1つ又は複数は、入力トライを結合する演算中に動的に生成される仮想トライである。
本発明の第110の実施形態は、電子データベース若しくは情報検索システムに格納されたキーの集合又は電子データベースクエリ若しくは情報システムクエリの結果キーの集合に対して範囲クエリを実行することにより、電子データベース又は情報検索システムからデータを検索する方法であり、1つ又は複数の範囲の定義を取得するステップと、第93〜第100の実施形態のいずれか1つにおける電子データベース又は情報検索システムからデータを検索する方法を実行するステップとを含み、1つの入力トライは、1つ又は複数の範囲についてサーチすべきキーの集合又は結果キーの集合を格納する入力集合トライであり、別の入力トライは、定義が得られた1つ又は複数の範囲に含まれる全ての値を格納する範囲トライであり、論理演算は論理積である。
第114の実施形態によれば、第110〜第112の実施形態のいずれか1つにおいて、入力集合トライのリーフに関連付けられたキーは、特定のデータ型の1つのデータ項目を符号化する。
第116の実施形態によれば、第110〜第113の実施形態のいずれか1つにおいて、入力集合トライのリーフに関連付けられたキーは、特定のデータ型の2つ以上のデータ項目を符号化する。
第118の実施形態によれば、第116又は第117の実施形態において、範囲トライは、入力集合トライのリーフに関連付けられたキーにより符号化されるデータ項目のそれぞれの1項目範囲トライを結合することによって得られる多項目範囲トライであり、データ項目の1項目範囲トライは、データ項目の1つ又は複数の範囲に含まれる全ての値を格納する。
第124の実施形態によれば、第109〜第123の実施形態のいずれか1つにおいて、範囲トライは、入力集合トライと同じ構造又はフォーマットを有する。
第127の実施形態によれば、第109〜第126の実施形態のいずれか1つにおいて、方法は、入力集合トライのリーフに関連付けられたキーの集合及び/又は他のデータ項目を出力として提供する。
本発明の第131の実施形態は、近似文字列照合を実行することにより電子データベース又は情報検索システムからデータを検索する方法であり、方法は、サーチ文字列を取得するステップと、サーチ文字列及び/又はサーチ文字列の変形を含む近似文字列の集合を格納する一致トライを構築するステップと、論理積演算を使用して、一致トライを、電子データベース又は情報検索システムに格納された文字列の集合を格納するストレージトライと結合して、結果トライを取得するステップと、出力として、結果トライのノードの結果集合に関連付けられた文字列及び/又は他のデータ項目を提供するステップを含み、トライは1つ又は複数のノードを含み、各子ノードにはキー部分が関連付けられ、ルートノードからトライ内の別のノードへのパスは、ノードに関連付けられたキーを定義し、キーは、パス上のノードに関連付けられたキー部分を連結したものである。
第157の実施形態によれば、第93〜第130の実施形態のいずれか1つにおいて、トライは第1〜第92の実施形態のいずれか1つに記載のトライである。
本発明の第158の実施形態は、特に、キー若しくはキー及び値を格納し、クエリの結果キー若しくはキー及び値を格納し、又はクエリの入力キー若しくはキー及び値を格納する、電子データベースアプリケーション又は情報検索システムにおいて第1〜第92の実施形態のいずれか1つにおけるトライを使用するコンピュータ実施方法である。
以下、本発明について、好ましい実施形態に関連して図面を参照して更に詳細に説明する。
図1は、従来技術によるデータベースで使用されるトライデータ構造の一例を示す。図1は、各子ノード(すなわち、ルートノードを除く全てのノード)にはキー部分が関連付けられ、キー部分の値は、親ノードからのポインタによって示され、英数字{0,…,9}から選択され、すなわち、ルートノードを除く各レベルのノードには1桁の数字が関連付けられるトライデータ構造101を示す。ルートノードからトライ内の別のノードへのパスは、ノードが関連付けられたキーを定義し、キーは、パス上のノードに関連付けられたキー部分を連結したものである。トライ101には値「007」を有するキーが関連付けられ、トライ101のリーフノード108には値「042」を有するキーが関連付けられているため、トライ101は、値「007」及び「042」を有するキーを「格納」する。
全てのトライのように、本発明によるトライ又はトライデータ構造は、1つ又は複数のノードを含む。図1〜図6を参照して上述した従来技術によるトライと同様に、好ましい実施形態のトライのノード、好ましくは各子ノードにはキー部分が関連付けられ、ルートノードからトライ内の別のノード、特にリーフノードへのパスは、キーを定義し、キーは、パス内のノードに関連付けられたキー部分を連結したものである。ルートノードにはキー部分が関連付けられず、トライが、他の目的を果たすため、キー部分が関連付けられない更なるノードを含み得ることが理解されよう。例えば、サブツリー内のエントリの数は、通常は全ツリーをトラバースする必要があるカウント動作を回避又は加速させるために、そのようなノードに格納することができる。
多くの用途状況では、メモリ空間の使用は非効率的である。これは、トライが疎に存在し、及び/又は各ノードが1つのみの子ポインタを有するノード連鎖に劣化する場合、特に当てはまる。
本発明者は、経験的研究において、任意のキーについて、典型的な用途状況でのトライが、1つのみの子を有する多くのノードを有することを発見した。これは、多くのキーが共通のプレフィックス、インフィックス、又はポストフィックスを共有するためである。そのような状況では、従来技術によるトライは、1つの子ポインタを有するノードの連鎖に劣化し、従来技術によるトライデータ構造の空間効率は低い。
本発明の第2の空間最適化は、トライの「端部」が1ノードの連鎖又は列、すなわち、共通のポストフィックスを有さない多くのキーを含むトライのメモリでのよりコンパクトな表現を提供する。第2の空間最適化が効率的なトライの一例を図10に示す。図10におけるトライのリーフノード1041、1042、1043、1044、1045はそれぞれ、独立した(非共通)ポストフィックスの部分である。各ポストフィックスは、トライのレベル3において1つのノード1021、1022、1023、1024、1025、トライのレベル4において1つのノード1031、1032、1033、1034、1035、及びレベル5において1つのリーフノードを含む。レベル3におけるノード1021、1022、1023、1024、1025及びレベル4におけるノード1031、1032、1033、1034、1035はそれぞれ、1つのみの子を有する。
−ビットマップは、2つ以上の設定ビットを有する場合、通常ノードに属する。getBitSet()はそのビットマップを返し、getChildNode(bitNum)は、idx(子ノードへのポインタ)を決定し、nodeRefがそれに設定された(且つidxInNodeが0に設定された)新しいCDBINodeMemを返す。
−ビットマップは、0である(ビットが設定されていない)場合、末端分岐ノードに属する。getBitSet()は、idxInNode位置に文字通り格納された6ビット値をビットマップに変換して返し、getChildNode(bitNum)は、同じnodeRef及びidxInNode+1を有する新しいCDBINodeMemを返す。
−ビットマップは、1ビットが設定されている場合、連鎖ノードに属する。getBitSet()はidxInNode位置におけるビットマップを返し、getChildNode(bitNum)はここでも、同じnodeRef及びidxInNode+1を有する新しいCDBINodeMemを返す。CDBINodeMemは、時間がかかる新しい子ノードを作成せず、ただnodeRef及びidxInNode(gotoChildNodeメソッド)を更新するだけで、すなわち、プロキシとして機能する既存のオブジェクトを変更することにより、フライウェイトパターンとして使用することもできる。
本発明の第3の空間最適化は、メモリにおいて、トライが疎に存在するトライのよりコンパクトな表現を提供する。これは、同じ値のセクション(例えば、疎に存在するノードの場合、値0を有するセクション又は密に存在するノードの場合、値1を有するセクション)を群化し効率的に格納することにより、ビットマップ(例えば、子ノードのキー部分値を示すビットマップ)のメモリ空間を低減することができる。本明細書ではこの第3の空間最適化を「ビットマップ圧縮」と呼ぶ。
本発明は、固定サイズ又は可変サイズのキー(例えば、文字列)を有する異なるプリミティブデータ型のキー及びトライ内のプリミティブデータ型の2つ以上の項目を含む複合キーを格納する方法を提供する。
本発明の好ましい実施形態では、キーは、キーに格納された構成要素の数、データ型、又は長さについての事前知識なしであっても、例えば、カーソルにより反復することができるような柔軟な方法で符号化することができる。
10ビットユニコード文字:00xxxx xxxxxx
15ビットユニコード文字:010xxx xxxxxx xxxxxx
21ビットユニコード文字:011xxx xxxxxx xxxxxx xxxxxx
10ビットユニコード文字:10xxxx xxxxxx
15ビットユニコード文字:110xxx xxxxxx xxxxxx
21ビットユニコード文字:111xxx xxxxxx xxxxxx xxxxxx
本発明の実施形態は、2つ以上のデータ項目を含むクエリをより効率的に実行することができるようにデータを格納する方法を提供する。本発明による手法は特に、より効率的に問い合わせることができるように、キー若しくはキー及び値をデータベース又は情報検索システムに格納し、データベース又は情報検索システムクエリの結果キー若しくは結果キー及び結果値を格納し、又はクエリをより効率的に実行することができるように、データベースクエリの入力キー若しくは入力キー及び入力値を格納するのに有用である。
本発明の実施形態は、データベース若しくは情報検索システムに格納された2以上のキーの集合又はデータベースクエリ若しくは情報検索システムクエリの結果キーの集合に対する論理積(ブールAND)、論理和(ブールOR)、差分(ブールAND NOT)、及び排他的論理和(ブールXOR)等の演算を含むデータベース又は情報検索システムにおいてクエリを実行する時間効率的な方法を提供する。本明細書では、これらの演算は「集合演算」又は「論理演算」と呼ばれる。
1.nodeA=トライAのルートノード
2.nodeB=トライBのルートノード
3.nodeAのgetBitSet−>00100010
4.nodeBのgetBitSet−>01000010
5.ビット単位and−>00100010
6.for全ての設定ビット
nodeA=nodeAのgetChildNode
nodeB=nodeBのgetChildNode
ifリーフノードが
ビット単位andを実行する
else
反復(ステップ3)
1.nodeA=トライAのルートノード
2.nodeB=トライBのルートノード
3.nodeAのgetBitSet−>00100010
4.nodeBのgetBitSet−>01000010
5.ビット単位or−>01100010
6.for全ての設定ビット
ifビットがnodeA及びnodeBで設定されている
nodeA=nodeAのgetChildNode
nodeB=nodeBのgetChildNode
ifリーフノードが
ビット単位orを実行する
else
再帰(ステップ3)
ifビットがnodeAのみで設定されている
nodeA=nodeAのgetChildNode
TrieAのみ再帰(ビット単位orをスキップ)
ifビットがnodeBのみで設定されている
nodeB=nodeBのgetChildNode
TrieBのみ再帰(ビット単位orをスキップ)
1.nodeA=トライAのルートノード
2.nodeB=トライBのルートノード
3.nodeAのgetBitSet−>00100010
4.nodeBのgetBitSet−>01000010
5.nodeAのビット集合−>00100010
6.for全ての設定ビット
if nodeA及びnodeBにおいてビットが設定されている
nodeA=nodeAのgetChildNode
nodeB=nodeBのgetChildNode
ifリーフノードが
ビット単位and−notを実行する
else
再帰(ステップ3)
ifビットがnodeAのみで設定されている
nodeA=nodeAのgetChildNode
TrieAのみ再帰(ビット単位and−notをスキップ)
論理積演算(ブールAND)による2つ以上のトライの結合は、有利なことに、範囲クエリを効率的に実行するのに使用することができる。「範囲」は、特定のデータ型の第1の値と第2の値との間の全ての値を含む順序付き離散値の集合として説明することができ、ここで、第1及び/又は第2の値は、範囲内に含まれることもあれば、又は含まれないこともある。範囲クエリは、値が、1つ又は複数の指定された値の範囲に対応する(一致する)、キーの集合内のキーを返す。
1.nodeA=トライAのルートノード(入力集合トライ)
2.nodeB=トライBのルートノード(範囲トライ)
3.nodeAのgetBitSet−>00100010
4.nodeBのgetBitSet−>01111110
5.ビット単位and−>00100010
6.for全ての設定ビット
nodeA=nodeAのgetChildNode
nodeB=nodeBのgetChildNode
ifリーフノードが
ビット単位andを実行する
else
再帰(ステップ3)
本発明による範囲クエリの他の実施形態では、入力集合トライのリーフノードに関連付けられたキーは、特定のデータ型の2つ以上のデータ項目を符号化する。この場合、1つ又は複数の範囲の定義は、データ項目のうちの1つ又は複数のデータ項目の1つ又は複数の範囲の定義を含む。そのような実施形態は「多次元」範囲クエリと呼ぶこともできる。原理上、各次元の範囲クエリを実行し、結果の論理積を実行することが可能であるが、関わるトライ及び演算子が多すぎるため、効率的ではない。
1.nodeA=トライAのルートノード(入力集合トライ)
2.nodeB=トライBのルートノード(x次元の範囲)
3.nodeC=トライCのルートノード(y次元の範囲)
4.nodeAのgetBitSet−>00100010
5.nodeBのgetBitSet−>00111110
6.ビット単位and−>00100010
7.for全ての設定ビット
nodeA=nodeAのgetChildNode,
8.nodeAのgetBitSet−>00011000
9.nodeCのgetBitSet−>00001000
10.ビット単位and−>00001000
11.for全ての設定ビット
子nodeAの子ノードを取得,
nodeB=nodeBのgetChildNode
nodeC=nodeCのgetChildNode
ifリーフノードが
ビット単位andを実行する
else
再帰(ステップ4)
1.nodeA=トライAのルートノード(入力集合トライ)
2.nodeB=トライBのルートノード(x次元のワイルドカードトライ)
3.nodeC=トライCのルートノード(y次元のワイルドカードトライ)
4.nodeAのgetBitSet−>00100010
5.nodeBのgetBitSet−>11111111
6.ビット単位and−>00100010
7.for全ての設定ビット
nodeA=nodeAのgetChildNode,
8.nodeAのgetBitSet−>00011000
9.nodeCのgetBitSet−>11111111
10.ビット単位and−>00011000
11.for全ての設定ビット
子nodeAの子ノードを取得,
nodeB=nodeBのgetChildNode
nodeC=nodeCのgetChildNode
ifリーフノードが
ビット単位andを実行する
結果キー(xのみ)を出力トライに書き込む
else
再帰(ステップ4)
テキスト検索用途での往々にしての要件は、近似文字列一致−ファジーサーチ機能とも呼ばれる−を提供することである。これは、パターンに厳密ではなく概ね一致する文字列の発見である。
である。
である。
である。
である。
である。
本発明の様々な実施形態による範囲クエリの性能を測定するために、実験を行い、その結果について図53〜図70を参照して以下に考察する。一例として、空間クエリを用いるジオロケーション用途を使用した。サンプルデータは、欧州領域のOpenStreetMapデータから導出し、これはhttp://download.geofabrik.de/europe.htmlから取得することができる。一例のデータベース内の各エントリは、10桁のID、各経度及び緯度の少数点以下7桁を有する値、並びに通りの名称及び家屋番号を表す文字列を含んだ。
−0, 1, 2, ... 9
−00, 01, 02, ..., 09, 10, ... 99
Claims (165)
- 電子データベースアプリケーション又は情報検索システムで使用されるトライであって、前記トライは1つ又は複数のノードを含み、
前記トライにより構成される親ノード、好ましくは、2つ以上の子ノードを有する各親ノードは、ビットマップ及び1つ又は複数のポインタを含み、各ポインタには前記ビットマップにおいて設定されたビットが関連付けられ、各ポインタは前記親ノードの子ノードを指し、前記トライは、
前記トライにより構成される親ノード、好ましくは、1つのみの子ノードを有する各親ノードは、前記子ノードへのポインタを含まず、及び/又は前記子ノードは、メモリにおいて、前記親ノードに相対して予め定義された位置に格納されることを特徴とする、トライ。 - 1つのみの子ノードを有する前記親ノードの前記子ノードは、メモリにおいて、前記親ノードの直後の位置に格納される、請求項1に記載のトライ。
- ノード、好ましくは各子ノードには、キー部分が関連付けられ、前記トライ内のルートノードから別のノード、特にリーフノードへのパスがキーを定義し、前記キーは、前記パス内の前記ノードに関連付けられた前記キー部分を連結したものである、請求項1又は2に記載のトライ。
- 電子データベースアプリケーション又は情報検索システムで使用されるトライであって、前記トライは1つ又は複数のノードを含み、
前記トライにより構成される親ノード、好ましくは、2つ以上の子ノードを有する少なくとも各親ノードは、ビットマップを含み、
ノード、好ましくは各子ノードには、キー部分が関連付けられ、
子ノード、好ましくは、親が2つ以上の子ノードを有する少なくとも各子ノードの前記キー部分の値は、前記子ノードが関連付けられたビットを有する前記親ノードにより構成されるビットマップ内の(設定)ビットの値によって決まり、前記トライは、
ノード、好ましくは、1つのみの子ノードを有し、且つ全ての子孫ノードが多くとも1つの子ノードを有する、各ノードは、末端分岐ノードと記され、
末端分岐ノード、好ましくは各末端分岐ノードの子孫ノード、好ましくは各子孫ノードに関連付けられた前記キー部分の前記値は、前記子孫ノードの前記親ノードに含まれるビットマップ内の(設定)ビットの値によって決まらないことを特徴とするトライ。 - 前記末端分岐ノードは2つ以上の子孫ノードを有する、請求項4に記載のトライ。
- 前記末端分岐ノードの親は2つ以上の子ノードを有する、請求項4又は5に記載のトライ。
- 前記末端分岐ノードとしての記しは、ビットが設定されていないビットマップである、請求項4〜6のいずれか一項に記載のトライ。
- 前記末端分岐ノードの前記ビットマップは、2つ以上の子ノードを有する親ノードに含まれるビットマップと同じ長さ又はフォーマットを有する、請求項7に記載のトライ。
- 前記トライに含まれる末端分岐ノード、好ましくは各末端分岐ノード及び/又は前記末端分岐ノードの子孫ノード、好ましくは各子孫ノードは、子ノードへのポインタを含まず、及び/又は前記子ノードは、メモリにおいて、前記親ノードに相対して予め定義された位置に、好ましくは、メモリにおいて前記親ノードの直後の位置に格納される、請求項4〜8のいずれか一項に記載のトライ。
- 末端分岐ノード、好ましくは各末端分岐ノードの子孫ノード、好ましく各子孫ノードに関連付けられた前記キー部分の前記値は、前記子孫ノードの前記親ノードに含まれる、請求項4〜9のいずれか一項に記載のトライ。
- 末端分岐ノード、好ましくは各末端分岐ノードの前記子孫ノード、好ましくは全ての子孫ノードに関連付けられた前記キー部分の前記値は、前記末端分岐ノード後に連続して格納される、請求項4〜10のいずれか一項に記載のトライ。
- 末端分岐ノード、好ましくは各末端分岐ノードの子孫ノード、好ましくは各子孫ノードに関連付けられた前記キー部分の前記値の符号化は、2つ以上の子ノードを有する親ノードに含まれるビットマップよりも、必要とするメモリ空間が少ない、請求項4〜11のいずれか一項に記載のトライ。
- 末端分岐ノード、好ましくは各末端分岐ノードの子孫ノード、好ましくは各子孫ノードに関連付けられた前記キー部分の前記値は、二進数として符号化される、請求項4〜12のいずれか一項に記載のトライ。
- 2つ以上の子ノードを有する親ノード、好ましくは各親ノードに含まれる前記ビットマップは、32ビット、64ビット、128ビット、又は256ビットを有し、末端分岐ノード、好ましくは各末端分岐ノードの子孫ノード、好ましくは各子孫ノードに関連付けられた前記キー部分は、5ビット、6ビット、7ビット、又は8ビットによりそれぞれ符号化される、請求項4〜13のいずれか一項に記載のトライ。
- 末端分岐ノード、好ましくは各末端分岐ノードの子孫ノード、好ましくは各子孫ノードに関連付けられた前記キー部分の前記値は、整数値として符号化される、請求項4〜14のいずれか一項に記載のトライ。
- 親ノードである前記末端分岐ノードの子孫ノード、好ましくは、親ノードである各子孫ノードは、設定ビットが子ノードに関連付けられた前記キー部分の前記値を決めるビットマップを含まない、請求項4〜14のいずれか一項に記載のトライ。
- 2つ以上の子ノードを有する、前記トライに含まれる親ノード、好ましくは、少なくとも各親ノードは、1つ又は複数のポインタを含み、各ポインタには、前記親ノードに含まれる前記ビットマップに設定されたビットが関連付けられ、各ポインタは前記親ノードの子ノードを指す、請求項4〜16のいずれか一項に記載のトライ。
- 前記トライは請求項1又は2に記載のトライである、請求項4〜17のいずれか一項に記載のトライ。
- 電子データベースアプリケーション又は情報検索システムで使用されるトライであって、前記トライは1つ又は複数のノードを含み、
ノード、好ましくは、2つ以上の子ノードを有する少なくとも各親ノードは、論理ビットマップの形態のビットマップ及び幾つかのポインタを含み、各ポインタには前記論理ビットマップにおいて設定されたビットが関連付けられ、各ポインタは前記ノードの子ノードを指し、前記トライは、
前記論理ビットマップが複数のセクションに分割され、ヘッダビットマップ及び幾つかのコンテンツビットマップにより符号化され、
各セクションには、前記ヘッダビットマップ内のビットが関連付けられ、
1つ又は複数のビットが設定された前記論理ビットマップの各セクションについて、前記ヘッダビットマップにおいて、前記セクションに関連付けられたビットは設定され、前記セクションはコンテンツビットマップとして格納されることを特徴とするトライ。 - ビットが設定されていない前記論理ビットマップの各セクションについて、前記ヘッダビットマップにおいて、前記セクションに関連付けられたビットは設定されず、前記セクションはコンテンツビットマップとして格納されない、請求項19に記載のトライ。
- 前記セクションのそれぞれはコヒーレントである、請求項19又は20に記載のトライ。
- 全てのセクションは同じサイズを有する、請求項19〜21のいずれか一項に記載のトライ。
- 前記セクションのサイズは1バイトである、請求項22に記載のトライ。
- コンテンツビットマップとして記憶されるセクションの量は、前記ヘッダビットマップにおいて設定されたビット数に等しい、請求項19〜23のいずれか一項に記載のトライ。
- 前記ヘッダビットマップのサイズは1バイトである、請求項19〜24のいずれか一項に記載のトライ。
- 前記コンテンツビットマップは、メモリにおいて前記ヘッダビットマップに相対して予め定義された位置に格納される、請求項19〜25のいずれか一項に記載のトライ。
- 前記論理ビットマップの前記コンテンツビットマップは、配列、リスト、又は連続した物理若しくは仮想メモリロケーションに格納される、請求項19〜26のいずれか一項に記載のトライ。
- 前記コンテンツビットマップは、前記コンテンツビットマップのセクションに関連付けられた設定ビットが前記ヘッダビットマップに配置される順と同順又は逆順で格納される、請求項19〜27のいずれか一項に記載のトライ。
- 前記論理ビットマップの全てのコンテンツビットマップ内のあるコンテンツビットマップのランクは、前記ヘッダビットマップ内の全ての設定ビット内の、前記コンテンツビットマップの前記セクションに関連付けられた前記設定ビットのランクに対応する、請求項19〜28のいずれか一項に記載のトライ。
- ノードに含まれるポインタ、好ましくはノードの各ポインタ及び/又はリーフノードではない各ノードのポインタは、請求項19〜29のいずれか一項における論理ビットマップに定義された符号化方法で符号化される、請求項19〜29のいずれか一項に記載のトライ。
- 前記トライは請求項1〜18のいずれか一項に記載のトライである、請求項19〜30のいずれか一項に記載のトライ。
- ノード、好ましくは各子ノードにはキー部分が関連付けられ、ルートノードから前記トライ内の別のノード、特にリーフノードへのパスはキーを定義し、前記キーは、前記パス内の前記ノードに関連付けられた前記キー部分を連結したものである、請求項1〜31のいずれか一項に記載のトライ。
- 電子データベースアプリケーション又は情報検索システムで使用されるトライであって、前記トライは1つ又は複数のノードを含み、
ノード、好ましく各子ノードにはキー部分が関連付けられ、ルートノードから前記トライ内の別のノード、特にリーフノードへのパスはキーを定義し、前記キーは、前記パス内の前記ノードに関連付けられた前記キー部分を連結したものであり、前記トライは、
前記キーが制御情報及びコンテンツ情報を含むことを特徴とする、トライ。 - 前記キーは、コンテンツ情報を含む1つ又は複数のキー部を含み、前記キー部のそれぞれについて、前記制御情報は、前記キー部に含まれる前記コンテンツ情報のデータ型を指定するデータ型情報要素を含む、請求項33に記載のトライ。
- キー部、好ましくは各キー部は、前記キー部に含まれる前記コンテンツ情報の前記データ型を指定するデータ型情報要素を含む、請求項34に記載のトライ。
- 前記データ型情報要素は、好ましくは前記コンテンツ情報要素前に、前記コンテンツ情報要素により配置される、請求項35に記載のトライ。
- 前記データ型情報要素は一緒に配置され、好ましくは、データ型が指定される前記コンテンツ情報要素と同順又は逆順で配置される、請求項34に記載のトライ。
- 前記制御情報は、前記キーにおいて前記コンテンツ情報前に配置される、請求項37に記載のトライ。
- 前記キーは、異なるデータ型のコンテンツ情報を含む2つ以上のキー部を含む、請求項34〜38のいずれか一項に記載のトライ。
- 前記データ型の少なくとも1つは、固定サイズのデータ型である、請求項34〜39のいずれか一項に記載のトライ。
- 前記固定サイズのデータ型は整数、長整数、倍精度浮動小数点、又は時刻/日付けプリミティブである、請求項40に記載のトライ。
- 前記データ型の少なくとも1つは、可変サイズのデータ型である、請求項34〜41のいずれか一項に記載のトライ。
- 前記可変サイズのデータ型は、文字列、好ましくはユニコード文字列、又は可変精度整数である、請求項42に記載のトライ。
- 前記キー部の情報は、2つ以上のキー部分に含まれる、請求項34〜43のいずれか一項に記載のトライ。
- キー部に含まれる前記コンテンツ情報の前記データ型は、可変サイズのデータ型であり、前記コンテンツ情報要素の終わりは、特定のシンボルにより又は前記キー部を含む前記キー部分の特定の1つ内の特定のビットにより記される、請求項34〜44のいずれか一項に記載のトライ。
- 前記制御情報は、前記最後のキー部を識別する情報を含む、請求項34〜45のいずれか一項に記載のトライ。
- 前記制御情報は、前記トライが動的集合の格納に使用されるか、それとも連想配列の格納に使用されるかについての情報を含む、請求項33〜46のいずれか一項に記載のトライ。
- 前記トライは、請求項1〜32のいずれか一項に記載のトライである、請求項33〜47のいずれか一項に記載のトライ。
- 2つ以上の子ノードを有するノード、このマイクは少なくとも各親ノードは、ビットマップ及び幾つかのポインタを含み、各ポインタには、前記ビットマップにおいて設定されたビットが関連付けられ、各ポインタは前記ノードの子ノードを指す、請求項33〜48のいずれか一項に記載のトライ。
- 電子データベースアプリケーション又は情報検索システムで使用されるトライであって、前記トライは1つ又は複数のノードを含み、
ノード、好ましくは各子ノードにはキー部分が関連付けられ、
前記トライ内のルートノードから別のノード、特にリーフノードへのパスが、前記ノードが関連付けられたキーを定義し、前記キーは、前記パス上の前記ノードに関連付けられた前記キー部分を連結したものであり、前記トライは、
2つ以上のデータ項目はキーにおいて符号化され、前記データ項目の最後における1つ又は2つ、好ましくは各データ項目は、2つ以上の構成要素からなり、
前記キーは2つ以上の連続セクションを含み、前記セクションの少なくとも1つ又は2つ、好ましくは各セクションは、前記キーに符号化された前記データ項目の2つ以上の構成要素を含むことを特徴とするトライ。 - キーのセクション、好ましくは各セクションは、前記キーに符号化された前記データ項目のそれぞれから少なくとも及び/又は多くとも1つの構成要素を含む、請求項50に記載のトライ。
- キーの2つ以上、好ましくは全てのセクションについて、異なるデータ項目に属する構成要素は、前記セクション内で同じ順序で並べられる、請求項50又は51に記載のトライ。
- データ項目の前記構成要素を含む前記セクションの前記順序は、前記データ項目内の前記構成要素の順序に対応する、請求項50〜52のいずれか一項に記載のトライ。
- 子ノード、好ましくは前記子ノードのそれぞれに関連付けられた前記キー部分は、データ項目の構成要素の一部に対応する、請求項50〜53のいずれか一項に記載のトライ。
- 子ノード、好ましくは前記子ノードのそれぞれに関連付けられた前記キー部分は、データ項目の1つの構成要素に対応し、及び/又はデータ項目、好ましくは各データ項目の構成要素、好ましくは各構成要素は、前記トライの1つの子ノードに関連付けられた前記キー部分に対応する、請求項50〜53のいずれか一項に記載のトライ。
- 子ノード、好ましくは前記子ノードのそれぞれに関連付けられた前記キー部分は、データ項目の2つ以上の構成要素に対応する、請求項50〜53のいずれか一項に記載のトライ。
- キーの前記データ項目の2つ以上、好ましくは全ては、同じ数の構成要素を有する、請求項50〜56のいずれか一項に記載のトライ。
- 2つ以上のデータ項目はジオロケーションデータを表す、請求項50〜57のいずれか一項に記載のトライ。
- データ項目は、経度、緯度、文字列、又はこれらの2つ以上の組合せを表す、請求項50〜58のいずれか一項に記載のトライ。
- データ項目の前記構成要素は、前記データ項目の二進符号化のビット群である、請求項50〜59のいずれか一項に記載のトライ。
- ビット群は6ビットを含む、請求項60に記載のトライ。
- データ項目は数である、請求項50〜61のいずれか一項に記載のトライ。
- 前記データ項目は整数、長整数、又は倍長整数である、請求項62に記載のトライ。
- 前記データ項目は64ビット整数である、請求項62又は63に記載のトライ。
- 前記データ項目の前記構成要素は数字である、請求項62〜64のいずれか一項に記載のトライ。
- 前記数字は予め定義された基数、好ましくは64を有する、請求項65に記載のトライ。
- データ項目は文字列である、請求項50〜66のいずれか一項に記載のトライ。
- 前記データ項目の前記構成要素は1文字である、請求項67に記載のトライ。
- データ項目はバイトの配列である、請求項50〜68のいずれか一項に記載のトライ。
- 前記トライは請求項1〜49のいずれか一項に記載のトライである、請求項50〜69のいずれか一項に記載のトライ。
- 請求項34に従属する場合、データ項目は、キー部又はキー部に含まれる前記コンテンツ情報に対応する、請求項70に記載のトライ。
- 2つ以上の子ノードを有するノード、好ましくは少なくとも各親ノードは、ビットマップ及び幾つかのポインタを含み、各ポインタには前記ビットマップにおいて設定されたビットが関連付けられ、各ポインタは前記ノードの子ノードを指す、請求項33〜71のいずれか一項に記載のトライ。
- 前記ビットマップは、予め定義されたサイズの整数としてメモリに記憶される、請求項1〜32のいずれか一項、請求項49、又は72に記載のトライ。
- 前記ビットマップのサイズは32ビット、64ビット、128ビット、又は256ビットである、請求項1〜32のいずれか一項、請求項49、72、又は73に記載のトライ。
- 前記トライは、標的コンピュータシステムで格納され処理されるのに適し、前記ビットマップの前記サイズは、前記標的コンピュータシステムのCPUのレジスタ、システムバス、データバス、及び/又はアドレスバスのビット幅に等しい、請求項1〜32のいずれか一項、請求項49、又は請求項72〜74のいずれか一項に記載のトライ。
- 前記トライの前記ビットマップ及び/又は前記ポインタ及び/又は前記ノードは、配列、好ましくは長整数若しくはバイトのインアンド配列、リスト、又は連続した物理若しくは仮想メモリロケーションに格納される、請求項1〜32のいずれか一項、請求項49、又は請求項72〜75のいずれか一項に記載のトライ。
- 前記メモリは、物理若しくは仮想メモリ、好ましくは連続メモリであり、又は物理若しくは仮想メモリ、好ましくは連続メモリを含む、請求項1〜16のいずれか一項、請求項26、27、又は76に記載のトライ。
- 2つ以上の子ノードを有する親ノード、好ましくは少なくとも各親ノードに含まれるポインタの量は、前記親ノードに含まれるビットマップにおいて設定されたビット量に等しい、請求項1〜32のいずれか一項、請求項49、又は請求項72〜77のいずれか一項に記載のトライ。
- 親ノードの全てのポインタ内のあるポインタのランクは、前記親ノードの前記ビットマップ内の全ての設定ビット内のそのポイントに関連付けられた設定ビットのランクに対応する、請求項1〜32のいずれか一項、請求項49、又は請求項72〜78のいずれか一項に記載のトライ。
- 前記ポインタは、前記ビットが前記ビットマップにおいて設定されるのと同順又は逆順に格納される、請求項1〜32のいずれか一項、請求項49、又は請求項72〜77のいずれか一項に記載のトライ。
- 親ノードに含まれるポインタは、前記子ノードに含まれるビットマップを指す、請求項1〜33のいずれか一項、請求項49、又は請求項72〜80のいずれか一項に記載のトライ。
- 前記トライのリーフノード、好ましくは各リーフノードに含まれるポインタの数はゼロである、請求項1〜33のいずれか一項、請求項49、又は請求項72〜81のいずれか一項に記載のトライ。
- 親が2つ以上の子ノードを有する子ノード、好ましくは少なくとも各子ノードの前記キー部分の前記値は、ビットが前記子ノードに関連付けられた前記親ノードに含まれる前記ビットマップ内の(設定)ビットの前記値によって決まる、請求項3、又は33〜82のいずれか一項に記載のトライ。
- 前記キー部分に利用可能な異なる値の最大量は、前記ビットマップのサイズによって定義される、請求項4〜18のいずれか一項又は請求項83に記載のトライ。
- 前記ビットマップの前記サイズは、前記キー部分に可能な英字を定義する、請求項4〜18のいずれか一項、請求項83、又は84に記載のトライ。
- 前記トライ内の各キー部分は、同じ予め定義されたサイズの値を格納可能である、請求項3又は32〜85のいずれか一項に記載のトライ。
- 前記予め定義されるサイズは、5ビット値、6ビット値、7ビット値、又は8ビット値に対応する、請求項86に記載のトライ。
- データ項目の値、好ましくは全てのデータ項目の値の符号化は、データ項目の前記データ型を符号なし整数を本質的な特徴とするオフセット二進数表現に変換することによって得られる、請求項1〜87のいずれか一項に記載のトライ。
- 前記整数は長整数である、請求項88に記載のトライ。
- 前記データ項目の前記データ型が浮動小数点数である場合、前記符号化は、前記データ項目の前記データ型をオフセット二進数表現に変換することによって得られる、請求項88又は89に記載のトライ。
- 前記データ項目の前記データ型が2の補数の符号付き整数である場合、前記符号化は、前記データ項目の前記データ型をオフセット二進数表現に変換することによって得られる、請求項88〜90のいずれか一項に記載のトライ。
- 前記トライは、動的集合又は連想配列を格納する、請求項1〜91のいずれか一項に記載のトライ。
- 電子データベース又は情報検索システムからデータを検索する方法であって、
2つ以上の入力トライを取得するステップであって、各入力トライは、前記電子データベース若しくは情報検索システムに記憶されたキーの集合又は電子データベースクエリ若しくは情報検索システムクエリの結果キーを格納する、取得するステップと、
論理演算を使用して前記入力トライを結合して、結果トライの前記ノードに関連付けられた前記キーの集合を取得するステップと、
出力として、前記結果トライの前記ノードに関連付けられた前記キーの集合及び/又は他のデータ項目又は前記結果キーの前記ノードに関連付けられた前記キーのサブセット及び/又は他のデータ項目、特に、前記結果トライのリーフに関連付けられた前記キー及び/又は他のデータ項目又は前記結果トライのノードに関連付けられたキーから導出されたキー若しくは値の集合を提供するステップと、
を含み、
トライは1つ又は複数のノードを含み、各子ノードにはキー部分が関連付けられ、ルートノードから前記トライ内の別のノードへのパスは、ノードに関連付けられたキーを定義し、前記キーは、前記パス上の前記ノードに関連付けられた前記キー部分を連結したものであり、
前記論理演算が差分である場合、前記結果トライの前記親ノードは、第1の入力トライの前記親ノードであり、前記結果トライの親ノードの前記リーフは、前記論理演算を使用して、前記第1の入力トライ内の対応する親ノードの子ノードの集合と、他の入力トライ内の任意の対応する親ノードの子ノードの集合とを結合したものであり、
前記論理演算が差分ではない場合、前記結果トライ内の各ノードの前記子ノードの集合は、前記論理演算を使用して、前記入力トライ内の前記対応するノードの前記子ノードの集合を結合したものであり、
異なるトライの前記ノードに関連付けられた前記キーが同一である場合、前記異なるトライの2つ以上のノードは互いに対応する、方法。 - 出力として提供された前記キーの集合は、トライで提供される、請求項93に記載の方法。
- 出力として提供された前記キーの集合は、カーソル又は反復子により提供される、請求項93に記載の方法。
- 前記入力トライを結合するステップは、
前記結果トライの前記ルートノードに対して結合関数を実行すること
を含み、
前記結果トライの入力ノードに対して前記結合関数を実行することは、
前記論理演算を使用して、前記結果トライの前記入力ノードに対応する前記入力トライの前記ノードの子ノードの前記集合を結合することにより、前記結果トライの前記入力ノードの子ノードの集合を特定することと、
前記結果トライの前記入力ノードに特定された前記子ノードのそれぞれに対して前記結合関数を実行することと、
を含む、請求項93〜95のいずれか一項に記載の方法。 - 前記入力トライを結合するステップは、縦型トラバーサル、横型トラバーサル、又はそれらの組合せを使用して実行される、請求項93〜96のいずれか一項に記載の方法。
- 縦型トラバーサルで前記入力トライを結合するステップを実行することは、前記入力ノードの前記子ノードの1つの前記結合関数を実行することと、その子ノードによって形成される前記サブトライをトラバースしてから、その子ノードの次の兄弟ノードに対して前記結合関数を実行することとを含む、請求項97に記載の方法。
- 横型トラバーサルで前記入力トライを結合するステップを実行することは、前記結果トライの前記入力ノードに特定された前記子ノードのそれぞれに対して前記結合関数を実行することと、前記結果トライの前記入力ノードに対して特定された前記子ノードのそれぞれの子ノードの集合を特定してから、前記結果トライの前記入力ノードの任意の孫ノードに対して前記結合関数を実行することとを含む、請求項97又は98に記載の方法。
- 入力トライにおけるノード、好ましくは入力トライ内の少なくとも全ての親ノードはビットマップを含む、請求項93〜99のいずれか一項に記載の方法。
- トライ内の子ノードの前記キー部分の前記値は、ビットが子ノードに関連付けられた前記子ノードの親ノードに含まれる前記ビットマップ内の(設定)ビットの前記値によって決まる、請求項100に記載の方法。
- 前記論理演算を使用した前記入力トライの子ノードの前記結合は、前記論理演算を使用して前記入力トライの前記子ノードのそれぞれの前記ビットマップを結合することを含む、請求項100又は101に記載の方法。
- 前記ビットマップを結合することは、結合ビットマップを得ることを含み、前記結合の前記結果を特定するステップは、前記結合ビットマップに基づいて実行される、請求項102に記載の方法。
- 前記論理演算は論理積、論理和、差分、又は排他的論理和である、請求項93〜103のいずれか一項に記載の方法。
- 前記論理演算を使用することは、ANDブール演算子、ORブール演算子、又はXORブール演算子を使用することを結合することを含む、請求項104に記載の方法。
- 前記論理演算を使用することは、ビット単位ANDブール演算子、ビット単位ORブール演算子、ビット単位AND NOTブール演算子、又はビット単位XORブール演算子を使用してノードの前記ビットマップを結合することを含む、請求項100〜103、又は105のいずれか一項に記載の方法。
- 前記入力トライの1つ又は複数は、同じ又は異なる論理演算を使用して、特許請求の範囲に記載されるデータベースクエリを実行する方法の前記出力である、請求項93〜106のいずれか一項に記載の方法。
- 前記入力トライの1つ又は複数は、前記入力トライを結合する前記演算中に動的に生成される仮想トライである、請求項93〜106のいずれか一項に記載の方法。
- 少なくとも、好ましくは多くとも、前記論理演算を使用して前記入力トライを結合するのに必要とされる前記仮想トライの部分が動的に生成される、請求項108に記載の方法。
- 電子データベース若しくは情報検索システムに格納されたキーの集合又は電子データベースクエリ若しくは情報システムクエリの結果キーの集合に対して範囲クエリを実行することにより、前記電子データベース又は前記情報検索システムからデータを検索する方法であって、
1つ又は複数の範囲の定義を取得するステップと、請求項93〜100のいずれか一項に記載の電子データベース又は情報検索システムからデータを検索する方法を実行するステップと、
を含み、
1つの入力トライは、前記1つ又は複数の範囲についてサーチすべき前記キーの集合又は前記結果キーの集合を格納する入力集合トライであり、
別の入力トライは、前記定義が得られた前記1つ又は複数の範囲に含まれる全ての値を格納する範囲トライであり、
前記論理演算は論理積である、方法。 - 範囲は、特定のデータ型の第1の値と第2の値との間の全ての対を含む離散した順序付き値の集合である、請求項110に記載の方法。
- 前記範囲は前記第1及び/又は第2の値を含む、請求項111に記載の方法。
- 範囲トライは、請求項108又は109において定義される仮想トライである、請求項110〜112のいずれか一項に記載の方法。
- 前記入力集合トライのリーフに関連付けられたキーは、特定のデータ型の1つのデータ項目を符号化する、請求項110〜112のいずれか一項に記載の方法。
- 1つ又は複数の範囲の前記定義は、前記1つのデータ項目の1つ又は複数の範囲の定義を含む、請求項114に記載の方法。
- 前記入力集合トライのリーフに関連付けられたキーは、特定のデータ型の2つ以上のデータ項目を符号化する、請求項110〜113のいずれか一項に記載の方法。
- 1つ又は複数の範囲の前記定義は、前記データ項目の1つ又は複数の1つ又は複数の範囲の定義を含む、請求項116に記載の方法。
- 前記範囲トライは、前記入力集合トライの前記リーフに関連付けられたキーにより符号化される前記データ項目のそれぞれの1項目範囲トライを結合することによって得られる多項目範囲トライであり、データ項目の前記1項目範囲トライは、前記データ項目の1つ又は複数の範囲に含まれる全ての値を格納する、請求項116又は117に記載の方法。
- 前記1項目範囲トライの結合は、前記多項目範囲トライとの前記入力集合トライの結合を実施する関数内で実行される、請求項118に記載の方法。
- 前記1項目範囲トライの結合は、前記多項目範囲トライとの前記入力集合トライの結合を実施する関数への入力として、前記多項目範囲トライを提供する関数によって実行される、請求項118に記載の方法。
- 1項目範囲トライは、請求項108又は109において定義される仮想範囲トライである、請求項118〜120のいずれか一項に記載の方法。
- 範囲の定義が得られない各データ項目の前記1項目範囲トライは、前記データ項目の可能な値の全範囲を格納する、請求項118〜121のいずれか一項に記載の方法。
- 前記多項目範囲トライは、前記1項目範囲トライに格納された前記データ項目の前記値の全ての組合せを格納する、請求項118〜122のいずれか一項に記載の方法。
- 範囲トライは、前記入力集合トライと同じ構造又はフォーマットを有する、請求項109〜123のいずれか一項に記載の方法。
- 範囲トライの前記リーフに関連付けられたキーは、前記入力集合トライの前記リーフに関連付けられたキーと同じデータ型のデータ項目を符号化する、請求項124に記載の方法。
- 範囲トライにおいて、特定のデータ型のデータ項目又はそのようなデータ項目の構成要素は、前記入力集合トライ内の対応するデータ項目又は前記データ項目の構成要素と同じレベルのノードに符号化される、請求項124又は125に記載の方法。
- 前記方法は、前記入力集合トライの前記リーフに関連付けられたキーの集合を出力として提供する、請求項109〜126のいずれか一項に記載の方法。
- 前記方法は、前記入力集合トライの前記リーフに関連付けられたキーによって符号化された前記データ項目のサブセットを符号化する縮小項目キーの集合を出力として提供する、請求項116〜126のいずれか一項に記載の方法。
- 前記範囲トライとの前記入力集合トライの結合の結果として、前記縮小項目キーに符号化されないデータ項目に関連する前記入力集合トライの異なる分岐から得られる前記縮小項目キーの集合は、前記出力を提供する前、マージされる、請求項128に記載の方法。
- 前記範囲トライとの前記入力集合トライの結合の結果として得られる前記縮小項目キーの集合は、前記出力を提供する前、新たに作成されたトライに書き込まれ、それにより、複製キーをなくす、請求項128又は129に記載の方法。
- 近似文字列照合を実行することにより電子データベース又は情報検索システムからデータを検索する方法であって、
−サーチ文字列を取得するステップと、
−前記サーチ文字列及び/又は前記サーチ文字列の変形を含む近似文字列の集合を格納する一致トライを構築するステップと、
−論理積演算を使用して、前記一致トライを、前記電子データベース又は情報検索システムに格納された文字列の集合を格納するストレージトライと結合して、結果トライを取得するステップと、
−出力として、前記結果トライのノードの結果集合に関連付けられた文字列及び/又は他のデータ項目を提供するステップと、
を含み、
トライは1つ又は複数のノードを含み、各子ノードにはキー部分が関連付けられ、ルートノードから前記トライ内の別のノードへのパスは、ノードに関連付けられたキーを定義し、前記キーは、前記パス上の前記ノードに関連付けられた前記キー部分を連結したものである、方法。 - 前記一致トライ内の1つ又は複数の子ノードは、2つ以上の親ノードを有する、請求項131に記載の方法。
- 前記ストレージトライ及び前記結果トライ内の各子ノードは、1つのみの親ノードを有する、請求項131又は132に記載の方法。
- 前記結果トライ内の各ノードの前記子ノードの集合は、前記一致トライ内の前記対応するノードの前記子ノードの集合と、前記ストレージトライ内の各ノードの前記子ノードの集合は、前記一致トライ内の前記対応するノードの前記子ノードの集合との論理積であり、同じキーが異なるトライの前記ノードに関連付けられる場合、前記異なるトライのノードは互いに対応する、請求項131〜133のいずれか一項に記載の方法。
- 前記一致トライは、前記ストレージトライとの前記一致トライの前記論理積中に動的に生成される仮想トライである、請求項131〜134のいずれか一項に記載の方法。
- 少なくとも、好ましくは多くとも、前記ストレージトライとの前記一致トライの論理積に必要な前記仮想トライの部分が動的に生成される、請求項93〜135のいずれか一項に記載の方法。
- 前記出力において提供されるデータ項目は、前記結果トライのノードの前記結果集合のノードに関連付けられた文字列を含むデータユニット、好ましくはドキュメント識別子を表す、請求項131〜136のいずれか一項に記載の方法。
- 前記ストレージトライは、好ましくは、ドキュメントに含まれる文字列及び前記ドキュメント識別子のそれぞれを2つのキー部、例えば(文字列,長)として格納するインデックストライ又は物理インデックストライである、請求項131〜137のいずれか一項に記載の方法。
- 前記一致トライは一致ノードの集合を含み、各一致ノードには、前記近似文字列の集合からの前記文字列の1つに対応する1つ又は複数のキーが関連付けられ、前記ノードの結果集合は、前記一致トライ内の前記一致ノードの集合に対応する前記結果トライのノードの集合であり、前記結果トライの前記ノードに関連付けられたキーが、前記一致トライの前記ノードに関連付けられたキーと同一である場合、前記結果トライのノードは前記一致トライのノードに対応する、請求項131〜138のいずれか一項に記載の方法。
- 数Nを取得するステップを更に含み、前記サーチ文字列の変形は、前記サーチ文字列での多くともN個の1文字挿入、削除、及び/又は置換によって取得することができる文字列の集合からなる、請求項131〜139のいずれか一項に記載の方法。
- 前記一致トライを構築するステップは、
−前記近似文字列の集合を表す有限オートマトンを構築することと、
−前記有限オートマトンから前記一致トライを導出することと、
を含む、請求項131〜140のいずれか一項に記載の方法。 - 前記有限オートマトンの2つの状態間の遷移、好ましくはあらゆる遷移には、特定の文字、好ましくは前記サーチ文字列に含まれる文字、ワイルドカード文字、又は空文字列が関連付けられる、請求項93〜141のいずれか一項に記載の方法。
- 前記有限オートマトンを構築するステップは、
−前記近似文字列の集合を表す非決定性有限オートマトンを構築することと、
−前記非決定性有限オートマトンから決定性有限オートマトンを導出することと、
を含み、
前記一致トライは前記決定性有限オートマトンから導出される、請求項141又は142に記載の方法。 - 前記決定性有限オートマトンの2つの状態間の遷移、好ましくはあらゆる遷移には、特定の文字、好ましくは前記サーチ文字列に含まれる文字又はワイルドカード文字が関連付けられる、請求項93〜143のいずれか一項に記載の方法。
- 前記一致トライ及び前記ストレージトライ内のノード、好ましくは少なくとも全ての親ノードは、ビットマップを含み、トライ内の子ノードのキー部分の値は、ビットが前記子ノードに関連付けられた前記子ノードの親ノードに含まれる前記ビットマップ内の(設定)ビットの値によって決まる、請求項131〜144のいずれか一項に記載の方法。
- 前記一致トライの子ノードと前記ストレージトライの子ノードとの論理積は、前記論理積演算を使用して前記子ノードのそれぞれの前記ビットマップを結合することを含む、請求項93〜145のいずれか一項に記載の方法。
- 前記有限オートマトンから前記一致トライを導出するステップは、前記遷移に関連付けられた特定の文字又はワイルドカード文字の符号化により、前記有限オートマトンの2つの状態間の遷移、好ましくはあらゆる遷移を関連付けることにより、拡張有限オートマトンを取得することを含み、前記符号化は、長さ及び/又はフォーマットが前記一致トライの前記親ノードに含まれる前記ビットマップに等しい1つ又は複数のビットマップからなり、又は表し、前記一致トライは前記拡張有限オートマトンから導出される、請求項141、145、又は146に記載の方法。
- 特定の文字の符号化の場合、厳密に1ビットが、前記符号化に含まれるか、又は表される前記ビットマップのそれぞれにおいて設定される、請求項93〜147のいずれか一項に記載の方法。
- ワイルドカード文字の符号化の場合、全ての有効文字符号化のビットは、前記符号化に含まれ、又は前記符号化によって表される前記ビットマップにおいて設定され、遷移元の状態に関連付けられた前記特定の文字の前記符号化を除く全ての有効文字符号化のビットは、前記符号化に含まれ、又は前記符号化によって表される前記ビットマップにおいて設定される、請求項147又は148に記載の方法。
- 前記一致トライ、前記ストレージトライ、又は前記結果トライに格納された文字は、各トライのM>1個、好ましくは5>M個のキー部分によって符号化される、請求項145〜149のいずれか一項に記載の方法。
- 前記有限オートマトンから前記一致トライを導出するステップは、前記有限オートマトンの2つの状態間の遷移、好ましくはあらゆる遷移をM−1レベルの中間状態と、前記中間状態のM−1個を介して前記2つの状態をリンクするM個の遷移の1つ又は複数のシーケンスとで置換することにより、又は前記有限オートマトンの2つの状態間の遷移、好ましくはあらゆる遷移に、前記M−1レベルの中間状態と、前記中間状態のM−1個を介して前記2つの状態をリンクするM個の遷移の1つ又は複数のシーケンスとを関連付けることにより、前記近似文字列の集合を表す完全有限オートマトンを取得することを含み、シーケンス内の前記M個の遷移のそれぞれには、長さ及び/又はフォーマットが前記一致トライの前記親ノードに含まれる前記ビットマップに等しいビットマップからなり、又は表される中間符号化が関連付けられ、前記一致トライは前記完全有限オートマトンから導出される、請求項93〜150のいずれか一項に記載の方法。
- 前記有限オートマトンの前記2つの状態間の前記遷移に、特定の文字が関連付けられる場合、前記シーケンスの前記M個の遷移が関連付けられた前記中間符号化に含まれ、又は表される前記ビットマップを連結したものは、前記特定の文字の符号化であり、前記ビットマップのそれぞれにおいて厳密に1ビットが設定される、請求項151に記載の方法。
- 前記有限オートマトンの前記2つの状態間の前記遷移にワイルドカードが関連付けられる場合、シーケンスの前記M個の遷移が関連付けられた前記中間符号化に含まれ、又は表される前記ビットマップを連結したものは、全ての有効文字符号化のビットが、符号化に含まれ、若しくは表されるビットマップにおいて設定され、又は前記遷移の発端である状態に関連付けられた前記特定の文字の符号化を除く全ての有効文字符号化のビットが、符号化に含まれ、若しくは表されるビットマップにおいて設定される符号化及び/又は前記特定の文字の符号化の1つ又は複数の部分又は全ての有効文字符号化のビットが前記符号化に含まれ、又は表される前記ビットマップにおいて設定され、若しくは前記遷移が発端とする状態に関連付けられた前記特定の文字の前記符号化を除く全ての有効文字符号化のビットが、前記符号化に含まれ、又は表される前記ビットマップにおいて設定される符号化の1つ又は複数の部分を含む1つ又は複数の符号化を含む、請求項151又は152に記載の方法。
- 前記拡張有限オートマトン又は前記完全有限オートマトンはそれぞれ、幾つかの行を含むデータ構造により表され、又は格納され、各行は、前記拡張有限オートマトン又は前記完全有限オートマトンの1つの状態を表し、前記状態を発端とする遷移のそれぞれにタプルを含み、各タプルは、前記遷移に関連付けられた前記符号化と、前記遷移が終わる前記状態への参照とを含む、請求項147〜149又は151〜153のいずれか一項に記載の方法。
- 前記データ構造は、遷移が終わる各状態について、好ましくは前記状態への各参照においてビットとして符号化される、この状態が一致状態であるか否かについての情報を含む、請求項93〜154のいずれか一項に記載の方法。
- 前記データ構造は、遷移元の前記拡張有限オートマトン又は前記完全有限オートマトンの状態のそれぞれの行を含む、請求項154又は155に記載の方法。
- トライは請求項1〜92のいずれか一項に記載のトライである、請求項93〜156のいずれか一項に記載の方法。
- 特に、キー若しくはキー及び値を格納し、クエリの結果キー若しくはキー及び値を格納し、又はクエリの入力キー若しくはキー及び値を格納する、電子データベースアプリケーション又は情報検索システムにおいて請求項1〜92のいずれか一項に記載のトライを使用するコンピュータ実施方法。
- 請求項1〜92のいずれか一項に記載のトライを生成するコンピュータ実施方法。
- 請求項1〜92のいずれか一項に記載のトライを格納した非一時的コンピュータ可読媒体。
- 請求項1〜92のいずれか一項に記載のトライを表す電子データのストリーム。
- 請求項1〜92のいずれか一項に記載のトライにより、キー若しくはキー及び値、クエリの結果キー若しくはキー及び値、又はクエリの入力キー若しくはキー及び値を格納する電子データベース又は情報検索システム。
- 請求項93〜159のいずれか一項に記載の方法を実行する命令を含む、コンピュータプログラム、特にデータベースアプリケーション又は情報検索システムプログラム。
- 請求項93〜159のいずれか一項に記載の方法を実行するように構成された、1つ又は複数のプロセッサ及びメモリを含むデータ処理デバイス又はシステム。
- 請求項164のコンピュータプログラムを記憶した好ましくは非一時的コンピュータ可読媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP17161140.3 | 2017-03-15 | ||
EP17161140.3A EP3376407B1 (en) | 2017-03-15 | 2017-03-15 | Efficient use of trie data structure in databases |
PCT/EP2018/056592 WO2018167235A1 (en) | 2017-03-15 | 2018-03-15 | Efficient use of trie data structure in databases |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019204696A Division JP7198192B2 (ja) | 2017-03-15 | 2019-11-12 | データベースにおけるトライデータ構造の有効使用 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020514894A true JP2020514894A (ja) | 2020-05-21 |
JP7171592B2 JP7171592B2 (ja) | 2022-11-15 |
Family
ID=58347218
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019547991A Active JP7171592B2 (ja) | 2017-03-15 | 2018-03-15 | データベースにおけるトライデータ構造の有効使用 |
JP2020549557A Active JP7364581B2 (ja) | 2017-03-15 | 2018-09-19 | データベースにおけるトライデータ構造の有効使用 |
JP2019204696A Active JP7198192B2 (ja) | 2017-03-15 | 2019-11-12 | データベースにおけるトライデータ構造の有効使用 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020549557A Active JP7364581B2 (ja) | 2017-03-15 | 2018-09-19 | データベースにおけるトライデータ構造の有効使用 |
JP2019204696A Active JP7198192B2 (ja) | 2017-03-15 | 2019-11-12 | データベースにおけるトライデータ構造の有効使用 |
Country Status (5)
Country | Link |
---|---|
US (3) | US11899667B2 (ja) |
EP (3) | EP3376407B1 (ja) |
JP (3) | JP7171592B2 (ja) |
CN (2) | CN110637291A (ja) |
WO (2) | WO2018167235A1 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3627343A1 (en) | 2018-09-19 | 2020-03-25 | censhare AG | Efficient in-memory multi-version concurrency control for a trie data structure based database |
CN110968555B (zh) * | 2018-09-30 | 2023-07-04 | 北京国双科技有限公司 | 维度数据处理方法和装置 |
GB201902772D0 (en) * | 2019-03-01 | 2019-04-17 | Palantir Technologies Inc | Fuzzy searching 7 applications thereof |
US11416661B2 (en) * | 2019-08-07 | 2022-08-16 | Synopsys, Inc. | Automatic derivation of integrated circuit cell mapping rules in an engineering change order flow |
EP4022454A1 (en) * | 2019-08-30 | 2022-07-06 | Mosys, Inc. | Graph memory engine |
US11416473B2 (en) * | 2019-12-20 | 2022-08-16 | Oracle International Corporation | Using path encoding method and relational set operations for search and comparison of hierarchial structures |
US11822530B2 (en) * | 2020-01-22 | 2023-11-21 | Alibaba Group Holding Limited | Augmentation to the succinct trie for multi-segment keys |
CN112182021B (zh) * | 2020-11-03 | 2022-10-18 | 浙江大搜车软件技术有限公司 | 一种用户数据查询方法、装置和系统 |
CN112528102A (zh) * | 2020-12-15 | 2021-03-19 | 深圳供电局有限公司 | 一种基于布尔逻辑判断的规范词条匹配方法 |
US11714795B2 (en) * | 2021-09-23 | 2023-08-01 | Sap Se | Partial compression of tree-based index structure |
CN114547380B (zh) * | 2022-01-25 | 2022-11-15 | 北京元年科技股份有限公司 | 数据遍历查询方法、装置、电子设备及可读存储介质 |
US20230394021A1 (en) * | 2022-06-07 | 2023-12-07 | Oracle International Corporation | Computing similarity of tree data structures using metric functions defined on sets |
US11847118B1 (en) * | 2022-06-22 | 2023-12-19 | Microsoft Technology Licensing, Llc | Query set optimization in a data analytics pipeline |
CN116383454B (zh) * | 2023-04-10 | 2024-01-30 | 星环信息科技(上海)股份有限公司 | 图数据库的数据查询方法、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US656010A (en) * | 1900-02-16 | 1900-08-14 | Charles Waller Bowling | Churn. |
WO2006054506A1 (ja) * | 2004-11-17 | 2006-05-26 | Turbo Data Laboratories Inc. | ツリーデータの検索・集計・ソート方法及びプログラム |
JP2013218490A (ja) * | 2012-04-06 | 2013-10-24 | Nippon Telegr & Teleph Corp <Ntt> | 情報蓄積検索装置 |
US8612402B1 (en) * | 2012-10-26 | 2013-12-17 | Stec, Inc. | Systems and methods for managing key-value stores |
US20140344287A1 (en) * | 2013-05-16 | 2014-11-20 | Fujitsu Limited | Database controller, method, and program for managing a distributed data store |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5528701A (en) * | 1994-09-02 | 1996-06-18 | Panasonic Technologies, Inc. | Trie based method for indexing handwritten databases |
US5787430A (en) * | 1994-06-30 | 1998-07-28 | International Business Machines Corporation | Variable length data sequence backtracking a trie structure |
JP3152868B2 (ja) * | 1994-11-16 | 2001-04-03 | 富士通株式会社 | 検索装置および辞書/テキスト検索方法 |
US6175835B1 (en) | 1996-07-26 | 2001-01-16 | Ori Software Development, Ltd. | Layered index with a basic unbalanced partitioned index that allows a balanced structure of blocks |
US6560610B1 (en) * | 1999-08-10 | 2003-05-06 | Washington University | Data structure using a tree bitmap and method for rapid classification of data in a database |
US7249149B1 (en) * | 1999-08-10 | 2007-07-24 | Washington University | Tree bitmap data structures and their use in performing lookup operations |
GB2368413B (en) | 2000-10-27 | 2002-09-11 | 3Com Corp | Method and apparatus for searching databases employing a trie search structure |
US6691124B2 (en) | 2001-04-04 | 2004-02-10 | Cypress Semiconductor Corp. | Compact data structures for pipelined message forwarding lookups |
WO2003060771A1 (en) | 2002-01-14 | 2003-07-24 | Jerzy Lewak | Identifier vocabulary data access method and system |
US6694323B2 (en) | 2002-04-25 | 2004-02-17 | Sybase, Inc. | System and methodology for providing compact B-Tree |
US7162481B2 (en) * | 2002-12-06 | 2007-01-09 | Stmicroelectronics, Inc. | Method for increasing storage capacity in a multi-bit trie-based hardware storage engine by compressing the representation of single-length prefixes |
US7096235B2 (en) * | 2003-03-27 | 2006-08-22 | Sand Technology Systems International, Inc. | Computer implemented compact 0-complete tree dynamic storage structure and method of processing stored data |
US20060015526A1 (en) | 2004-07-16 | 2006-01-19 | Juergen Sattler | Method and apparatus for supporting context links for application program text |
US7565380B1 (en) | 2005-03-24 | 2009-07-21 | Netlogic Microsystems, Inc. | Memory optimized pattern searching |
JP4821287B2 (ja) | 2005-11-28 | 2011-11-24 | Kddi株式会社 | 構造化文書の符号化方法、符号化装置、符号化プログラム、復号装置及び符号化された構造化文書のデータ構造 |
US7797319B2 (en) * | 2006-05-15 | 2010-09-14 | Algebraix Data Corporation | Systems and methods for data model mapping |
CN101277252A (zh) * | 2007-03-30 | 2008-10-01 | 迈普(四川)通信技术有限公司 | 多分支Trie树的遍历方法 |
EP2169559A4 (en) | 2007-06-22 | 2011-11-09 | Pioneer Corp | CONTENT DISTRIBUTION DEVICE, CONTENT DISTRIBUTION METHOD, AND CONTENT DISTRIBUTION PROGRAM |
CN101499094B (zh) * | 2009-03-10 | 2010-09-29 | 焦点科技股份有限公司 | 一种数据压缩存储并检索的方法及系统 |
US8179898B2 (en) * | 2009-06-11 | 2012-05-15 | Alcatel Lucent | Packet processing using braided tries |
US9600565B2 (en) | 2010-10-15 | 2017-03-21 | Nec Corporation | Data structure, index creation device, data search device, index creation method, data search method, and computer-readable recording medium |
WO2012082859A1 (en) * | 2010-12-14 | 2012-06-21 | The Regents Of The University Of California | High efficiency prefix search algorithm supporting interactive, fuzzy search on geographical structured data |
US9158758B2 (en) * | 2012-01-09 | 2015-10-13 | Microsoft Technology Licensing, Llc | Retrieval of prefix completions by way of walking nodes of a trie data structure |
US8868926B2 (en) * | 2012-04-06 | 2014-10-21 | Exablox Corporation | Cryptographic hash database |
US8923298B2 (en) * | 2012-05-04 | 2014-12-30 | Futurewei Technoligies, Inc. | Optimized trie-based address lookup |
US9098601B2 (en) * | 2012-06-27 | 2015-08-04 | Futurewei Technologies, Inc. | Ternary content-addressable memory assisted packet classification |
US8732207B2 (en) * | 2012-07-02 | 2014-05-20 | International Business Machines Corporation | Attribute-based linked tries for rule evaluation |
US20160196303A1 (en) | 2013-08-21 | 2016-07-07 | Nec Solution Innovators, Ltd. | String search device, string search method, and string search program |
US9529835B2 (en) | 2014-02-28 | 2016-12-27 | Red Hat Israel, Ltd. | Online compression for limited sequence length radix tree |
US10176605B2 (en) * | 2014-03-26 | 2019-01-08 | Brigham Young University | Dynamic display of heirarchal data |
WO2016049575A1 (en) | 2014-09-25 | 2016-03-31 | Oracle International Corporation | System and method for supporting zero-copy binary radix tree in a distributed computing environment |
US20160103858A1 (en) * | 2014-10-13 | 2016-04-14 | Freescale Semiconductor, Inc. | Data management system comprising a trie data structure, integrated circuits and methods therefor |
US10146806B2 (en) * | 2015-02-12 | 2018-12-04 | Oracle International Corporation | Adaptive resolution hsitogram |
WO2016144367A1 (en) * | 2015-03-12 | 2016-09-15 | Hewlett Packard Enterprise Development Lp | Database records associated with a trie |
US10565230B2 (en) * | 2015-07-31 | 2020-02-18 | Netapp, Inc. | Technique for preserving efficiency for replication between clusters of a network |
-
2017
- 2017-03-15 EP EP17161140.3A patent/EP3376407B1/en active Active
-
2018
- 2018-03-15 CN CN201880032378.6A patent/CN110637291A/zh active Pending
- 2018-03-15 EP EP18710484.9A patent/EP3596629A1/en active Pending
- 2018-03-15 JP JP2019547991A patent/JP7171592B2/ja active Active
- 2018-03-15 WO PCT/EP2018/056592 patent/WO2018167235A1/en unknown
- 2018-09-19 CN CN201880093497.2A patent/CN112219199A/zh active Pending
- 2018-09-19 EP EP18769379.1A patent/EP3765969A1/en active Pending
- 2018-09-19 JP JP2020549557A patent/JP7364581B2/ja active Active
- 2018-09-19 WO PCT/EP2018/075389 patent/WO2019174761A1/en unknown
- 2018-09-19 US US16/981,245 patent/US11899667B2/en active Active
-
2019
- 2019-04-24 US US16/393,918 patent/US11275740B2/en active Active
- 2019-04-24 US US16/393,915 patent/US11347741B2/en active Active
- 2019-11-12 JP JP2019204696A patent/JP7198192B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US656010A (en) * | 1900-02-16 | 1900-08-14 | Charles Waller Bowling | Churn. |
WO2006054506A1 (ja) * | 2004-11-17 | 2006-05-26 | Turbo Data Laboratories Inc. | ツリーデータの検索・集計・ソート方法及びプログラム |
JP2013218490A (ja) * | 2012-04-06 | 2013-10-24 | Nippon Telegr & Teleph Corp <Ntt> | 情報蓄積検索装置 |
US8612402B1 (en) * | 2012-10-26 | 2013-12-17 | Stec, Inc. | Systems and methods for managing key-value stores |
US20140344287A1 (en) * | 2013-05-16 | 2014-11-20 | Fujitsu Limited | Database controller, method, and program for managing a distributed data store |
JP2014225260A (ja) * | 2013-05-16 | 2014-12-04 | 富士通株式会社 | 分散型データ記憶を管理するデータベース制御部、方法及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP2021517306A (ja) | 2021-07-15 |
CN110637291A (zh) | 2019-12-31 |
JP7171592B2 (ja) | 2022-11-15 |
US20190317940A1 (en) | 2019-10-17 |
EP3376407B1 (en) | 2020-09-16 |
EP3376407A1 (en) | 2018-09-19 |
JP2020098583A (ja) | 2020-06-25 |
US20210049141A1 (en) | 2021-02-18 |
EP3596629A1 (en) | 2020-01-22 |
JP7364581B2 (ja) | 2023-10-18 |
CN112219199A (zh) | 2021-01-12 |
US11275740B2 (en) | 2022-03-15 |
US11347741B2 (en) | 2022-05-31 |
EP3765969A1 (en) | 2021-01-20 |
US11899667B2 (en) | 2024-02-13 |
WO2018167235A1 (en) | 2018-09-20 |
WO2019174761A1 (en) | 2019-09-19 |
JP7198192B2 (ja) | 2022-12-28 |
US20190324960A1 (en) | 2019-10-24 |
WO2019174761A9 (en) | 2021-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7198192B2 (ja) | データベースにおけるトライデータ構造の有効使用 | |
Sidirourgos et al. | Column imprints: a secondary index structure | |
US7774346B2 (en) | Indexes that are based on bitmap values and that use summary bitmap values | |
US10984029B2 (en) | Multi-level directory tree with fixed superblock and block sizes for select operations on bit vectors | |
Stabno et al. | RLH: Bitmap compression technique based on run-length and Huffman encoding | |
CN101937448A (zh) | 用于主存储器列存储装置的基于字典的保持顺序的串压缩 | |
Lemire et al. | Reordering rows for better compression: Beyond the lexicographic order | |
RU2633178C2 (ru) | Способ и система базы данных для индексирования ссылок на документы базы данных | |
Maneth et al. | A survey on methods and systems for graph compression | |
Shun | Parallel wavelet tree construction | |
Perego et al. | Compressed indexes for fast search of semantic data | |
CN105930388A (zh) | 一种基于函数依赖关系的olap分组聚集方法 | |
Chien et al. | Geometric BWT: compressed text indexing via sparse suffixes and range searching | |
Wang et al. | Rencoder: A space-time efficient range filter with local encoder | |
US11327995B2 (en) | Complex data type encoding within columnar database | |
Brisaboa et al. | Compact representations of event sequences | |
Bača et al. | Benchmarking the compression of XML node streams | |
Guang et al. | Study on linked data compression based on vector representation | |
CN118210913A (zh) | 优化图形数据上的文本过滤查询 | |
Panchenko et al. | Two Algorithms for Locating Ancestors of a Large Set of Vertices in a Tree. | |
Belazzougui et al. | Optimal Lower and Upper Bounds for Representing Sequences | |
JP2024086652A (ja) | グラフデータのテキストフィルタリングクエリの最適化 | |
Xia et al. | Research on storage and query of massive multidimensional data | |
Zhang et al. | Query optimization with value path materialization in column-stored DWMS | |
Wang et al. | Group-Scope query and its access method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20191030 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210201 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210818 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210908 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211203 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220428 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220726 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20221006 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20221102 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7171592 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |