R+ tree とは

R +ツリーは、場所、しばしば(x、y)座標、およびしばしば地球の表面上の位置を使用してデータをルックアップする方法です。 1つの番号で検索することは解決された問題です。 2つ以上を検索し、x方向とy方向の両方に近接する場所を求めるには、より巧妙なアルゴリズムが必要です。
根本的に、R +ツリーはツリーデータ構造であり、Rツリーの変形であり、空間情報を索引付けするために使用されます。

Vantage-point tree とは

仮想ポイントツリー(またはVPツリー)は、メトリックスペース内の位置を選択し、データポイントを2つの部分に分割することによってメトリック空間内のデータを分離するメトリックツリーです。閾値よりも有利な点、そうでない点がある。この手順を再帰的に適用して、データをより小さい小さな集合に分割することにより、ツリー内の近傍が空間内の近傍になる可能性のあるツリーデータ構造が作成される。
1つの一般化は、マルチ・ポイント・ポイント・ツリー、つまりMVPツリーと呼ばれます。これは、類似検索クエリーのために大きなメトリック・スペースからオブジェクトを索引付けするためのデータ構造です。複数のポイントを使用して各レベルを分割します。

Priority R-tree とは

優先順位Rツリーは、空間ツリーRツリーの最悪の場合の漸近的に最適な代替方法です。優先順位付けされたRツリーは、本質的には、与えられたオブジェクトのNを定義するという点で、k次元ツリーとrツリーとの間のハイブリッドである(最小境界矩形 – MBRと呼ばれます)をN次元の点として、矩形の順序付きペアで表します。優先順位という用語は、ツリーの各ブランチに含まれる各ディメンションの最も極端な値を表す4つの優先順位 – 葉の導入から到着します。優先順位付けされたRツリーは、サブブランチをトラバースすることによってウィンドウクエリに応答する前に、優先順位ノードの重複を最初にチェックします。サブブランチは、クエリの第1の次元の最小値がサブブランチの値を上回っているかどうかをチェックすることによってトラバース(および構築)される。これにより、境界ボックスの最初の次元の値による迅速な索引付けにアクセスできます。

Bitmap index とは

ビットマップ索引は、ビットマップを使用する特別な種類のデータベース索引です。
従来、ビットマップ索引は、カーディナリティーの低い列では、絶対的に、またはデータを含むレコードの数に比例して、わずかな数の別個の値を持つように機能すると考えられてきました。カーディナリティが低い極端なケースは、真偽値と偽値の2つの値を有するブール値データ(例えば、都市の居住者はインターネットアクセス可能か)である。ビットマップ索引は、ビット配列(通常はビットマップと呼ばれます)を使用し、これらのビットマップに対してビット単位の論理演算を実行することによってクエリに応答します。ビットマップ索引は、そのようなデータの問合せに対して、他の構造よりも大きなスペースとパフォーマンス上の利点があります。欠点は、データが頻繁に更新される列の伝統的なBツリー索引よりも効率が悪いことです。そのため、高速問合せに特化した読取り専用システム(たとえば、データ・ウェアハウス)で頻繁に採用されています。オンライントランザクション処理アプリケーション。
ある研究者は、ビットマップ索引は、読み取り専用の方法でアクセスされる中位または高位のカーディナリティ・データ(一意の値のデータなど)にも役立ち、問合せはAND、ORまたはXORを使用して複数のビットマップ索引付けされた列にアクセスする演算子は広範囲に及ぶ。
ビットマップ索引は、大規模なファクト表をスタースキーマに配置されたものなどのより小さいディメンション表に結合するためのデータ・ウェアハウス・アプリケーションでも役立ちます。
ビットマップベースの表現は、グラフデータベース内のクエリに使用されるラベル付けされた属性付きマルチグラフであるデータ構造の表現にも使用できます。ビットマップインデックスに基づく効率的なグラフ管理では、ビットマップインデックス表現を使用して、データポイント)を生成し、グラフに関連する質問に効率的に応答する。

Indexed file とは

インデックス付きファイルとは、ファイルキーを指定して任意のレコードに簡単にランダムアクセスできるインデックスを持つコンピュータファイルです。
キーはレコードを一意に識別するようなものでなければなりません。複数の索引が存在する場合は、他の索引を代替索引と呼びます。インデックスはファイルで作成され、システムによって管理されます。
索引ファイルのサポートは、COBOLおよびPL / Iに組み込まれています。 CのようなI / O機能が制限されている他の言語では、C-ISAMなどのランタイムライブラリのアドオンパッケージを使用してインデックスファイルをサポートしています。
COBOL言語は、FILE CONTROLセクションで次のコマンドを使用して、索引ファイルをサポートしています
 組織が索引されている
最近のシステムでは、索引ファイルの代わりにリレーショナル・データベースがよく使用されます。

Fractal tree index とは

コンピュータ科学では、フラクタルツリーインデックスは、データをソートして保持するツリーデータ構造であり、Bツリーと同じ時間に検索と順次アクセスが可能ですが、Bツリーよりも漸近的に高速な挿入と削除が行われます。フラクタルツリーインデックスは、Bツリーと同様に、ノードが2つ以上の子を持つことができるという点で、バイナリ検索ツリーの一般化です。さらに、Bツリーとは異なり、フラクタルツリーインデックスには各ノードにバッファがあり、挿入、削除およびその他の変更を中間の場所に格納することができます。バッファの目的は、各書き込みが大量の有用な作業を実行するようにディスク書き込みをスケジュールすることで、各ディスク書き込みがディスク上の少量のデータを変更するBツリーの最悪の場合のパフォーマンスを回避します。フラクタルツリーインデックスは、Bツリーと同様に、大量のデータブロックを読み書きするシステムに最適化されています。フラクタルツリーインデックスはTokutekのデータベースで商品化されています。もともとはキャッシュを無視した先読み配列として実装されていましたが、現在の実装はBsisツリーの拡張です。 Bεは、バッファリングされたリポジトリツリーに関連しています。バッファされたリポジトリツリーの次数は2ですが、Bεツリーの次数はBεです。フラクタルツリーインデックスは、プロトタイプのファイルシステムでも使用されています。フラクタルツリーインデックスのオープンソース実装が利用可能であり、以下に説明する実装の詳細を示しています。

Log-structured merge-tree とは

コンピュータサイエンスでは、ログ構造のマージツリー(またはLSMツリー)は、トランザクションログデータなどの挿入量の多いファイルへのインデックス付きアクセスを提供することを魅力的にするパフォーマンス特性を備えたデータ構造です。 LSMツリーは、他の検索ツリーと同様に、キーと値のペアを維持します。 LSMツリーは2つ以上の別々の構造にデータを保持し、それぞれはそれぞれの基礎となる記憶媒体に最適化されています。データは2つの構造間でバッチで効率的に同期されます。
LSMツリーの簡単な1つのバージョンは、2レベルのLSMツリーです。 Patrick O'Neilが説明したように、2レベルのLSMツリーは、C0とC1と呼ばれる2つのツリー状の構造で構成されています。 C0は小さく、メモリには常駐していますが、C1はディスク上に常駐しています。新しいレコードは、メモリに常駐するC0コンポーネントに挿入されます。挿入によってC0コンポーネントが特定のサイズのしきい値を超えると、エントリの連続したセグメントがC0から削除され、ディスク上のC1にマージされます。 LSMツリーのパフォーマンス特性は、各コンポーネントがその基礎となる記憶媒体の特性に調整され、マージソートを連想させるアルゴリズムを使用して、データがローリングバッチでメディア間で効率的に移行されるという事実に由来します。
実際に使用されるほとんどのLSMツリーは、複数のレベルを使用します。レベル0はメインメモリに保持され、ツリーを使用して表すことができます。ディスク上のデータは、ソートされたデータの実行に編成されます。各実行には、索引キーでソートされたデータが含まれています。実行は、単一のファイルとしてディスク上に表現することも、重複しないキー範囲を持つファイルの集合として表すこともできます。関連する値を取得するために特定のキーに関するクエリを実行するには、レベル0のツリーとそれぞれの検索を検索する必要があります。
特定のキーがいくつかの実行で表示されることがあります。クエリの意味はアプリケーションによって異なります。アプリケーションによっては、特定のキーを持つ最新のキーと値のペアが必要なアプリケーションもあります。アプリケーションによっては、適切な集計値が返されるように値を組み合わせる必要があります。たとえば、Apache Cassandraでは、各値はデータベース内の行を表し、異なるバージョンの行は異なる列セットを持つことがあります。
クエリのコストを抑えるためには、実行が多すぎる状況を回避する必要があります。
BLSMやDiff-Indexなど、B +ツリー構造を組み込むための「均等化」メソッドの拡張が提案されています。
LSMツリーは、Bigtable、HBase、LevelDB、MongoDB、SQLite4、Tarantool、RocksDB、WiredTiger、Apache Cassandra、InfluxDBなどのデータストアで使用されます。

Block Range Index とは

ブロック範囲索引またはBRINは、データベース索引付け手法です。非常に大きなテーブルでパフォーマンスを向上させることを目的としています。
BRINインデックスは、水平パーティショニングまたはシャーディングと同様の利点を提供しますが、パーティションを明示的に宣言する必要はありません。
BRINは、大規模でインデックスキー値が簡単にソートされ、MinMax関数で評価されるテーブルのインデックスに適用されます。
BRINはもともと、2013年に2ndQuadrantのAlvaro Herreraによって「Minmaxインデックス」として提案されました。これまでの実装は、データベーステーブルの内部実装および格納技術と緊密に結びついています。これにより、効率的になりますが、特定のベンダーに限定されます。これまでのところ、PostgreSQLはPostgreSQL 9.5で、この特定の機能を備えたライブ製品を発表した唯一のベンダーです。他のベンダーは、Oracle、Netezzaのゾーンマップ、Infobrightのデータパック、ORC / Parquetを備えたMonetDBとApache Hiveなどの類似の機能についても説明しています。

UB-tree とは

Rudolf BayerとVolker Marklによって提案されたUBツリーは、多次元データを格納し、効率的に検索するためのバランスのとれたツリーです。これは基本的にB +ツリー(葉の中の情報のみ)であり、モートンオーダーとも呼ばれるZオーダーに従って記録が保管されています。 Zオーダーは、キーをビット単位でインターレースすることによって単純に計算されます。
挿入、削除、ポイントクエリーは通常のB +ツリーと同様に行われます。しかし、多次元ポイントデータで範囲検索を実行するには、多次元検索範囲にある次のZ値をデータベースで遭遇したポイントから計算するアルゴリズムを提供する必要があります。
このキー問題を解決する元のアルゴリズムは次元的に指数関数的であったため、実現できませんでした( "GetNextZ-address")。この「UBツリー範囲クエリの重要な部分」に対するzアドレスビット長の線形解は、後で説明します。この方法は、検索木でZオーダーを使用することが最初に提案された古い論文に既に記載されています。