JP6187478B2 - インデックスキー生成装置及びインデックスキー生成方法並びに検索方法 - Google Patents

インデックスキー生成装置及びインデックスキー生成方法並びに検索方法 Download PDF

Info

Publication number
JP6187478B2
JP6187478B2 JP2014556327A JP2014556327A JP6187478B2 JP 6187478 B2 JP6187478 B2 JP 6187478B2 JP 2014556327 A JP2014556327 A JP 2014556327A JP 2014556327 A JP2014556327 A JP 2014556327A JP 6187478 B2 JP6187478 B2 JP 6187478B2
Authority
JP
Japan
Prior art keywords
index
attribute
bit
index key
definition information
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.)
Active
Application number
JP2014556327A
Other languages
English (en)
Other versions
JPWO2014109109A1 (ja
Inventor
祥治 西村
祥治 西村
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JPWO2014109109A1 publication Critical patent/JPWO2014109109A1/ja
Application granted granted Critical
Publication of JP6187478B2 publication Critical patent/JP6187478B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices

Landscapes

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

Description

本発明は、複数次元インデックスキーの生成技術に関する。ここで、複数次元インデックスキーとは、インデックス対象となる複数の属性の値から生成されるインデックスキーを意味する。
複数の属性に関する条件を指定したデータベース検索を高速化するために、これら属性に対してインデックスを生成することはよく行われている。複数の属性に対してインデックスを生成する方法として、以下の二つの技術が知られている。
第1に、複合インデックスと呼ばれる方法が存在する(下記非特許文献1参照)。複合インデックスは、インデックスを生成したい複数の属性に対して優先順位を指定させ、その優先順位の順序でそれぞれの属性をソートして保持する。即ち、属性Aの属性値のビット列が「A」、属性Bの属性値のビット列が「B」である場合、各属性値を区切り記号「|」で連結したインデックスキー「A|B」がソートされ、そのソート結果が保持される。複合インデックスは、各属性値を優先順位でソートするため、各属性の属性値のビット長が異なっていても生成することができる。また、各属性値が離散値である場合において、これら属性値の一致条件を指定した問い合わせ処理は効率化され得る。
第2に、UB−Treeと呼ばれる方法が存在する(下記非特許文献2参照)。UB−Treeは、インデックスを生成したい複数の属性に対して、各属性値をビットごとに交互に混ぜ合わせたインデックスキーを生成し、ソートされた当該インデックスキーを保持する。即ち、属性Aの属性値のビット列が「A」、属性Bの属性値のビット列が「B」である場合、各属性値をビットごとに交互に混ぜ合わせることで、インデックスキー「A」を生成し、このインデックスキーをソートした結果がインデックスとして保持される。UB−Treeによれば、ビット単位で各属性値が交互に混ぜ合わされるため、各属性について比較的連続性が保たれ易くなり、その結果、範囲検索の効率が上述の複合インデックスより高い傾向にある。UB−Treeで用いられるインデックスキーの生成手法は、ビットインタリービング、Zオーダリング等とも呼ばれる。以降、各属性値をビットごとに交互に混ぜ合わせることでインデックスキーを生成する手法を代表的にビットインタリービングと表記する。
UB−Treeは、各属性値をビットごとに交互に混ぜ合わせるため、各属性値のビット長が一致していることを前提とする。データ間のビット長を合せるために、ゼロパディングがよく用いられる。しかし、ゼロパディングは、インデックスキーのサイズを増大させる原因となる。
そこで、非特許文献2の提案手法は、ビットの混ぜ合わせ順序を属性値のビット長の長い順に限定し、或る属性値のビット長を超えたら、その属性をスキップすることでインデックスキーを生成する。即ち、この提案手法は、各属性値のビット列を左詰めで交互に混ぜ合わせることでインデックスキーを生成するというように、生成方法を制限することで各属性値のビット長の違いを解消している。
Sam Lightstone, Toby Teorey, Tom Nadeau、 "Physical Database Design: the database professional's guide to exploiting indexes, view, storage, and more"、lines 22-24, page 21, page 22, Figures 2 and 3、 2006年 Vorker Markl、 "MISTRAL: Processing Relational Queries using a Multidimensional Access Technique"、 page 103(Algorithm 5-1)、 1999年7月25日
上述の複合インデックス及びビットインタリービングは、ビット列どうしを連結するだけ、規則的にビットを交互に混ぜ合わせるだけの、単純な方法で、複数の属性により示される複数次元空間をインデックスキーの一次元空間に変換する。即ち、これら手法は、インデックスキーの生成パターンをかなり限定してしまっていた。これにより、範囲検索の指定内容やインデックス対象のデータの分布によっては、範囲検索処理の効率が低下してしまう可能性があった。
例えば、上述の複合インデックスを用いる場合、連続値を持つ各属性が指定された範囲検索処理の効率が低下し易い。優先順位が高い属性についてはインデックスキーが連続して配置されるが、優先順位が低い属性についてはインデックスキーがとびとびに配置されるからである。
また、上述のビットインタリービングを用いる場合、属性毎の検索範囲の幅が大きく異なる又はそれぞれ独立して指定された範囲検索処理の効率が低下し易い。これは、ビットインタリービングが、緯度及び経度で示される位置情報の範囲指定のように、各属性の検索範囲の幅が略同じになるように指定された範囲検索を前提とした技術であるからと言える。例えば、位置情報の範囲指定は、一キロ四方、或る地点から10キロの範囲等のように指定されることが多い。
本発明は、このような事情に鑑みてなされたものであり、どのような検索環境においても高い検索効率を実現する複数次元インデックスキーの生成技術を提供することにある。ここで、検索環境とは、検索に関連する事象全般を意味し、例えば、検索対象となる複数の属性の値分布や、その検索対象となる複数の属性に対する検索特性(検索状況)等を含む。
本発明の各側面では、上述した課題を解決するために、それぞれ以下の構成を採用する。
第1の側面は、インデックスキー生成装置に関する。第1の側面に係るインデックスキー生成装置は、インデックス対象の複数の属性に関する複数の属性値を取得するデータ取得部と、インデックス対象の各属性について、その属性の各ビットの、インデックスキー中の配置をそれぞれ示すインデックス定義情報を取得する定義取得部と、定義取得部により取得されるインデックス定義情報に基づいて、データ取得部により取得される複数の属性値をビット単位で配置することによりインデックスキーを生成するビット処理部と、を有する。
第2の側面は、インデックスキー生成装置に関する。第2の側面に係るインデックスキー生成装置は、インデックス対象の複数の属性に関する複数の属性値を取得するデータ取得部と、データ取得部により取得される複数の属性に関する複数の属性値をビット単位で配置することによりインデックスキーを生成するビット処理部と、を有し、ビット処理部は、各属性のビット列の並び順がそれぞれ維持され、かつ、複数の属性の中の少なくとも一つの属性のビット列が不連続に並び、かつ、各属性のビット値が交互に並ぶ第1ビット列と、同じ属性のビット値が少なくとも2つ連続して並ぶ第2ビット列とのいずれか一方が他方を挟むビット配置を少なくとも一部に含むように、複数の属性値をビット単位で配置する。
第3の側面は、インデックスキー生成方法に関する。第3の側面に係るインデックスキー生成方法は、インデックス対象の複数の属性に関する複数の属性値を取得し、インデックス対象の各属性について、その属性の各ビットの、インデックスキー中の配置をそれぞれ示すインデックス定義情報を取得し、取得されたインデックス定義情報に基づいて、上記取得された複数の属性値をビット単位で配置することによりインデックスキーを生成する、ことを含む。
第4の側面は、インデックスキー生成方法に関する。第4の側面に係るインデックスキー生成方法は、インデックス対象の複数の属性に関する複数の属性値を取得し、取得された複数の属性に関する複数の属性値をビット単位で配置することによりインデックスキーを生成する、ことを含み、そのインデックスキーの生成は、各属性のビット列の並び順がそれぞれ維持され、かつ、複数の属性の中の少なくとも一つの属性のビット列が不連続に並び、かつ、各属性のビット値が交互に並ぶ第1ビット列と、同じ属性のビット値が少なくとも2つ連続して並ぶ第2ビット列とのいずれか一方が他方を挟むビット配置を少なくとも一部に含むように、複数の属性値をビット単位で配置する。
第5の側面は、複数の属性に関する複数の属性値がビット単位で配置されることにより形成されるインデックスキーのデータ構造に関する。第5の側面に係るインデックスキーのデータ構造において、当該インデックスキーは、各属性のビット列の並び順をそれぞれ維持し、かつ、複数の属性の中の少なくとも一つの属性のビット列が不連続に並び、かつ、各属性のビット値が交互に並ぶ第1ビット列と、同じ属性のビット値が少なくとも2つ連続して並ぶ第2ビット列とのいずれか一方が他方を挟むビット配置を少なくとも一部に含み、コンピュータが、当該インデックスキーがソートされることで形成されるインデックスの中から、クエリデータにより指定される検索対象の複数の属性に基づく検索範囲に適合するインデックスキー集合を特定するために参照する。
なお、本発明の他の側面としては、上記第3の側面の方法又は上記第4の側面の方法を少なくとも1つのコンピュータに実行させるプログラムであってもよいし、このようなプログラムを記録したコンピュータが読み取り可能な記録媒体であってもよい。この記録媒体は、非一時的な有形の媒体を含む。また、上記各側面の装置又は方法により生成されたインデックスキーがソートされたインデックスを用いる検索方法であってもよい。
上記各側面によれば、どのような検索環境においても高い検索効率を実現する複数次元インデックスキーの生成技術を提供することができる。
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。
本発明の実施の形態に係るインデックスキー生成装置の構成例を概念的に示す図である。 インデックスキーの生成例を示す図である。 他の実施形態に係るインデックスキー生成装置の構成例を概念的に示す図である。 他の実施形態に係るインデックスキーの生成例を示す図である。 他の実施形態に係るインデックスキーの生成例を示す図である。 他の実施形態に係るインデックスキーの生成例を示す図である。 他の実施形態に係るインデックスキーの生成例を示す図である。 他の実施形態に係るインデックスキーの生成例を示す図である。 他の実施形態に係るインデックスキーの生成例を示す図である。 第1実施形態における検索装置のハードウェア構成例を概念的に示す図である。 第1実施形態における検索装置の処理構成例を概念的に示す図である。 第1実施形態におけるインデックスキーの生成過程を概念的に示す図である。 インデックスキー生成処理に関する第1実施形態における検索装置の動作例を示すフローチャートである。 検索処理に関する第1実施形態における検索装置の動作例を示すフローチャートである。 第2実施形態における検索装置の処理構成例を概念的に示す図である。 インデックスキー生成処理に関する第2実施形態における検索装置の動作例を示すフローチャートである。
以下、本発明の実施の形態について説明する。なお、以下に挙げる実施形態は例示であり、本発明は以下の実施形態の構成に限定されない。
図1は、本発明の実施の形態に係るインデックスキー生成装置100の構成例を概念的に示す図である。図1に示されるように、インデックスキー生成装置100は、インデックス対象の複数の属性に関する複数の属性値を取得するデータ取得部101と、インデックス対象の各属性について、その属性の各ビットの、インデックスキー中の配置をそれぞれ示すインデックス定義情報105を取得する定義取得部102と、定義取得部102により取得されるインデックス定義情報105に基づいて、データ取得部101により取得される複数の属性値をビット単位で配置することによりインデックスキーを生成するビット処理部103と、を有する。
インデックスキー生成装置100は、例えば、後述する詳細実施形態における検索装置1と同様のハードウェア構成を有し、その検索装置1と同様にプログラムが処理されることで、上述の各処理部が実現される。
また、本発明の実施の形態に係るインデックスキー生成方法は、インデックス対象の複数の属性に関する複数の属性値を取得し、インデックス対象の各属性について、その属性の各ビットの、インデックスキー中の配置をそれぞれ示すインデックス定義情報を取得し、取得されたインデックス定義情報に基づいて、上記取得された複数の属性値をビット単位で配置することによりインデックスキーを生成する、ことを含む。但し、本インデックスキー生成方法に含まれる各工程は、順不同に逐次的に実行されてもよいし、同時に実行されてもよい。本インデックスキー生成方法は、上述のインデックスキー生成装置100のような少なくとも1つのコンピュータにより実行される。
このように、本実施形態では、インデックス対象の各属性について、その属性の各ビットの、インデックスキー中の配置をそれぞれ示すインデックス定義情報105が取得され、このインデックス定義情報105に基づいて、各属性の各ビットが配置される。これにより、データ取得部101により取得されたインデックス対象の複数の属性に関する複数の属性値に対応する複数次元インデックスキーが生成される。
上述のように、既存の2つのインデックスキー生成方法がインデックスキーの生成パターンをかなり限定しているため、各方法には範囲検索の効率を低下させる検索環境がそれぞれ存在する。更に、その2つの方法だけでは、インデックス対象となる属性の数が増加すると、インデックス空間の中の検索範囲に対応する検索空間がより広がるため、検索効率が低下してしまう。これは、インデックスキー内の検索範囲に対応するビット幅に、検索範囲に影響を与えないビットが含まれる可能性が増えるからである。
このような知見に基づいて、本発明者は、既存の2つの方法のみでなく、各検索環境により適合したインデックスキーの生成パターンが更に存在し得ることを見出した。
データレコードをインデックスキーに従って整列する場合、インデックスキーは、インデックスされた属性の組み合わせどうしの近さの指標となる。即ち、インデックスキーが整列された順序上で近いレコードは、記憶媒体上でも近くに配置されやすくなる。一方、範囲検索は、属性値が指定された範囲内にあるレコードを取得する操作である。このため、取得するレコード群が記憶媒体上で塊になって配置されていると、それらを一括で取得することができるため、範囲検索の性能が向上する。
本発明者は、範囲検索により抽出されるレコードの属性値のビットパターンに着目した。当該抽出されたレコードの属性値をソートした属性値列は、その検索範囲内での連続値になるため、各属性値の上位ビットのパターンは略同じで、下位ビットのパターンが異なっていることが期待される。このことから、連続値や、連続的な意味合いを持つ離散値を取る属性から生成されるインデックスキーの範囲検索は、インデックスキーの下位数ビットの幅の変化を参照していることと等価であると捉えることができる。本発明者は、各属性のビット列におけるその属性の検索範囲の幅に相当するビット長分の下位ビットをインデックスキーの中でできる限り下位ビット側(右側)に配置することで、記憶媒体上で当該検索範囲に対応するインデックスキーどうしが近くに配置され易くなり、検索性能を向上させることができると考えた。
図2は、インデックスキーの生成例を示す図である。図2は、「性別」及び「年齢」がインデックス対象の属性に設定されており、属性「年齢」の「20代及び30代」が検索範囲として指定される頻度が高い場合の例を示す。この場合、属性「年齢」における「20代及び30代」の検索範囲は、属性「年齢」の下位6ビットに対応する。そこで、例えば、属性「年齢」の下位6ビットをインデックスキー中の下位ビット側に配置させ、その上位ビットに属性「性別」の1ビットを配置し、属性「年齢」の残り2ビットをインデックスキー中の残りのビット位置に配置する。これにより、「男性」かつ「20代及び30代」に対応するインデックスキー列と、「女性」かつ「20代及び30代」に対応するインデックスキー列とが連続で並ぶため、検索効率が向上し易い。一方、図2の例において複合インデックスの方法でインデックスキーを生成した場合、「男性」かつ「全年齢」及び「女性」かつ「全年齢」といった順でインデックスキー列が並ぶため、「全性別」の「20代及び30代」の検索範囲に対応するインデックスキー空間の範囲は、図2の例に比べて拡がり、検索効率が低下し易くなる。
このように、検索効率を向上させ得るインデックスキー内でのビット配置は、検索対象となる複数の属性の値分布や、その検索対象となる複数の属性に対する検索特性(検索状況)等のような検索環境によって変わってくる。そこで、本発明者は、検索環境に適合したインデックスキーの生成パターンを用いること、即ち、インデックスキーのデザイン手法の自由度を上げることが、検索効率の向上に繋がるとの着想を得た。
そこで、本実施形態では、インデックス対象の各属性のインデックスキー中のビット配置を自由に設定可能なインデックス定義情報105が用いられ、このインデックス定義情報105の設定内容に応じて各属性値がビット単位で配置されたインデックスキーが生成される。これにより、各属性の各ビットのインデックスキー中における位置を細やかに調整できるため、本実施形態によれば、性能を向上させたい範囲検索に合わせたインデックスキーを生成することができる。即ち、本実施形態によれば、検索環境に適合するインデックスキーのデザイン手法を自由に用いることができ、ひいては、検索効率を向上させることができる。特に、本実施形態は、多次元範囲検索で、属性ごとに典型的な検索範囲の幅を持っている場合、より効果を発揮する。
上述の本実施形態は、上述のような技術的思想の下、次のように変形させることもできる。図3は、他の実施形態に係るインデックスキー生成装置100の構成例を概念的に示す図である。他の実施形態に係るインデックスキー生成装置100は、上述の形態と、定義取得部102を持たない点において相違する。図3の例では、ビット処理部103は、インデックスキーを生成するにあたり、各属性のビット列の並び順をそれぞれ維持し、かつ、複数の属性の中の少なくとも一つの属性のビット列が不連続に並び、かつ、各属性のビット値が交互に並ぶ第1ビット列と、同じ属性のビット値が少なくとも2つ連続して並ぶ第2ビット列とのいずれか一方が他方を挟むビット配置を少なくとも一部に含むように、データ取得部101により取得される複数の属性に関する複数の属性値をビット単位で配置する。
また、他の実施形態に係るインデックスキー生成方法は、インデックス対象の複数の属性に関する複数の属性値を取得し、各属性のビット列の並び順をそれぞれ維持し、かつ、複数の属性の中の少なくとも一つの属性のビット列が不連続に並び、かつ、各属性のビット値が交互に並ぶ第1ビット列と、同じ属性のビット値が少なくとも2つ連続して並ぶ第2ビット列とのいずれか一方が他方を挟むビット配置を少なくとも一部に含むように、当該取得された複数の属性に関する複数の属性値をビット単位で配置することによりインデックスキーを生成することを含む。
図4A及び図4Bは、他の実施形態に係るインデックスキーの生成例を示す図である。図4Aの例で生成されるインデックスキーは、第1ビット列「A」及び第1ビット列「A」が、第2ビット列「B」を挟むビット配置を持つ。図4Bの例で生成されるインデックスキーは、第2ビット列「A」及び第2ビット列「B」が、第1ビット列「B」を挟む。
また、他の実施形態に係るインデックスキーの生成方法は、インデックス対象の複数の属性に関する複数の属性値を取得し、各属性のビット列の並び順をそれぞれ維持し、かつ、複数の属性の中の少なくとも一つの属性のビット列が不連続に並び、かつ、インデックスキー上に配置する順番で各属性のi桁目のビット値をそれぞれ並べた複数のビット列の中に、2以上の属性を含みかつ異なる属性構成を持つビット列が2つ以上含まれるように、当該取得された複数の属性に関する複数の属性値をビット単位で配置することによりインデックスキーを生成することを含む。ここで、異なる属性構成を持つビット列とは、含まれる属性の数が異なるビット列、又は、同数の属性が異なる順序で並ぶビット列を示す。
図4C、図4D及び図4Eは、他の実施形態に係るインデックスキーの生成例を示す図である。上述のインデックスキー生成方法によれば、図4C、図4D及び図4Eに示されるようなビット配置を持つインデックスキーを生成することができる。図4Cでは、各属性のi桁目のビット値をそれぞれ並べた複数のビット列は、「A」、「B」、「B」及び「B」であり、2以上の属性を含みかつ異なる属性構成を持つビット列「A」及び「B」が存在する。図4Dでは、当該複数のビット列は、「A」、「A」及び「A」であり、2以上の属性を含みかつ異なる属性構成を持つビット列「A」及び「A」が存在する。図4Eでは、当該複数のビット列は、「A」、「A」、「A」及び「A」であり、2以上の属性を含みかつ異なる属性構成を持つビット列「A」及び「A」が存在する。
また、他の実施形態に係るインデックスキーの生成方法によれば、例えば図4Fに示されるようなビット配置を持つインデックスキーを生成することもできる。図4Fは、他の実施形態に係るインデックスキーの生成例を示す図である。
更に、他の実施形態に係るインデックスキーの生成方法によれば、属性Aの属性値のビット列が「A」、属性Bの属性値のビット列が「B」である場合、インデックスキーを「A」、「B」、「B」または「B」のように生成することもできる。
このように、当該他の実施形態では、複合インデックス及びビットインタリーブの各手法とは異なるインデックスキー生成手法が用いられる。この用法で生成されたインデックスキーが用いられれば、複合インデックス及びビットインタリーブの各手法で生成されたインデックスキーでは検索効率を向上させることができない検索環境において、検索効率を向上させることができる可能性が増す。
以下、上述の実施形態について更に詳細を説明する。以下には、詳細実施形態として、第1実施形態及び第2実施形態を例示する。以下の各実施形態は、上述のインデックスキー生成装置及びインデックスキー生成方法を検索装置に適用した場合の例である。なお、検索装置で扱われるデータ自体は制限されない。
[第1実施形態]
〔装置構成〕
図5は、第1実施形態における検索装置1のハードウェア構成例を概念的に示す図である。第1実施形態における検索装置1は、図5に示されるように、ハードウェア構成として、相互にバス15により接続される、CPU(Central Processing Unit)10、メモリ11、入出力インタフェース(I/F)12、通信装置13等を有する。メモリ11は、RAM(Random Access Memory)、ROM(Read Only Memory)、ハードディスク、可搬型記憶(記録)媒体等である。入出力I/F12は、キーボード、マウス等のようなユーザ操作の入力を受け付ける入力装置(図示せず)、表示装置やプリンタ等のようなユーザに情報を提供する出力装置(図示せず)などと接続可能である。通信装置13は、他のノードと通信を行う。なお、検索装置1は、入力装置や出力装置を持たなくてもよく、検索装置1のハードウェア構成は制限されない。
検索装置1は、上述の実施形態で示されるように、インデックス対象の複数の属性に関する複数の属性値を取得し、それら属性値に対応する複数次元インデックスキーを生成する。また、検索装置1は、クエリデータを取得し、上述のように生成されたインデックスキーがソートされたインデックスを用いて、クエリデータで示される検索範囲に対応するデータを検索する。検索装置1の一部が上述のインデックスキー生成装置100に相当する。
〔処理構成〕
図6は、第1実施形態における検索装置1の処理構成例を概念的に示す図である。第1実施形態における検索装置1は、データ取得部20、定義取得部21、インデックスキー生成部22、インデックス定義格納部26、検索部30、データベース35等を有する。インデックスキー生成部22は、上述のビット処理部に相当する。これら各処理部は、例えば、CPU10によりメモリ11に格納されるプログラムが実行されることにより実現される。また、当該プログラムは、例えば、CD(Compact Disc)、メモリカード等のような可搬型記録媒体やネットワーク上の他のコンピュータから入出力I/F12を介してインストールされ、メモリ11に格納されてもよい。
データ取得部20は、インデックス対象の複数の属性に関する複数の属性値を取得する。インデックス対象の複数の属性に関する複数の属性値は、データベース35から取得されてもよいし、入力画面等に基づいて入力装置をユーザが操作することにより入力されてもよいし、可搬型記録媒体、他のコンピュータ等から入出力I/F12又は通信装置13を経由して取得されてもよい。また、データ取得部20は、1つのデータレコードを取得し、このデータレコードの中から、インデックス対象となる複数の属性に関する複数の属性値を取得するようにしてもよい。この場合、データ取得部20は、当該データレコードのスキーマ情報を取得し、このスキーマ情報に基づいて、データレコードを形成する複数の属性の中から、インデックス対象となる属性を特定するようにしてもよい。
インデックス定義格納部26は、上述したインデックス定義情報105を格納する。本実施形態では、インデックス定義情報105は、インデックス対象の各属性について、インデックスキーと同じビット長のビット列における、その属性の各ビットが配置されるビット位置がマスクされたスキャッタマスクをそれぞれ含む。インデックス定義情報105は、インデックス対象の各属性に対応するスキャッタマスクをそれぞれ特定し得る情報を含む。例えば、インデックス定義情報105は、属性IDとスキャッタマスクとの対応関係を含んでもよい。スキャッタマスクは、インデックス定義情報105の好ましい実現形態である。但し、本実施形態は、インデックス対象の各属性について、その属性の各ビットの、インデックスキー中の配置をそれぞれ示す情報であれば、インデックス定義情報105の実現形態をスキャッタマスクのみに限定しない。
本実施形態では、インデックス定義情報105に含まれるスキャッタマスクのセットがそれぞれ示すインデックスキーの生成パターン自体は、検索環境に適合するように設定されていれば、特に制限されない。よって、インデックス定義格納部26は、図4A及び図4Bに例示されたインデックスキーの生成パターンを示すインデックス定義情報105を格納していてもよい。具体的には、そのインデックス定義情報105は、各属性のビット列の並び順をそれぞれ維持し、かつ、各属性のビット値が交互に並ぶ第1ビット列と、同じ属性のビット値が少なくとも2つ連続して並ぶ第2ビット列とのいずれか一方が他方を挟むビット配置を少なくとも一部に含むことを示す。また、インデックスキー及びスキャッタマスクのビット長に関しても、インデックス対象の各属性のデータサイズに対応するビット長の合計以上であれば、特に制限されない。
インデックス定義格納部26は、インデックス対象の属性の各組み合わせに対応する複数のインデックス定義情報105を格納していてもよい。この場合、インデックス定義格納部26に格納される複数のインデックス定義情報は、インデックス対象の各属性についてそれぞれ示されるインデックスキー中のビット配置がインデックス定義情報間で異なる少なくとも2つのインデックス定義情報を含んでいてもよい。即ち、当該複数のインデックス定義情報には、インデックス対象となる属性の組み合わせ毎に、異なるインデックスキーの生成パターンが設定されていてもよい。
定義取得部21は、データ取得部20により取得される複数の属性値の属性の組み合わせに対応するインデックス定義情報105をインデックス定義格納部26から取得する。インデックス定義格納部26が複数のインデックス定義情報105を格納する場合、定義取得部21は、インデックス定義格納部26に格納される複数のインデックス定義情報105の中から、データ取得部20により取得される複数の属性値の属性の組み合わせに対応するインデックス定義情報105を選択的に取得する。定義取得部21により取得されるインデックス定義情報105は、スキャッタマスクセットと表記される場合もある。
インデックスキー生成部22は、定義取得部21により取得されたスキャッタマスクセットに基づいて、データ取得部20により取得された複数の属性値をビット単位で配置することによりインデックスキーを生成する。生成されたインデックスキーは、データベース35に格納される。インデックスキー生成部22は、図6に示されるように、スキャッタ演算部23及びOR演算部24を有し、これら処理部を動作させることで、上述のようにインデックスキーを生成する。
スキャッタ演算部23は、データ取得部20により取得された各属性値に対して、属性値の属性に対応するスキャッタマスクを用いたスキャッタ演算をそれぞれ適用する。
OR演算部24は、スキャッタ演算部23によるスキャッタ演算で得られた属性毎のビット列をOR演算で集約する。集約されたビット列がインデックスキーである。
図7は、第1実施形態におけるインデックスキーの生成過程を概念的に示す図である。図7の例では、符号S0が属性0のスキャッタマスクを示し、符号SNが属性Nのスキャッタマスクを示す。各スキャッタマスクでは、対応する属性の各ビットが配置されるビット位置に「1」がセットされている。なお、図7では、図面スペースの関係により示されていないが、各スキャッタマスクの「1」以外の箇所には「0」が設定される。
スキャッタ演算部23は、各属性の各ビットを、その属性に対応するスキャッタマスクの「1」が設定されているビット位置のうち、その属性のビットの並び順から特定されるビット位置に配置する。OR演算部24は、各属性のビット列に対するスキャッタ演算により得られる各ビット列をOR演算することで、インデックスキーを生成する。
データベース35は、インデックス対象となる複数の属性に関する複数の属性値を含むデータ群、インデックスキー生成部22により生成されたインデックスキーがソートされることで形成されるインデックスを格納する。本実施形態で生成される各インデックスキーでは、各属性のビット列におけるその属性の検索範囲の幅に相当するビット長分の下位ビットがインデックスキーの中でできる限り下位ビット側(右側)に配置される。これにより、当該インデックスでは、記憶媒体上で当該検索範囲に対応するインデックスキーどうしが近くに配置される。データベース35は、メモリ11に含まれるハードディスク等のような外部メモリ上に実現される。
検索部30は、インデックスキー生成部22により生成されたインデックスキーがソートされることで形成されるインデックスの中から、後述の検索キーに適合するインデックスキー集合を特定し、データベース35から、この特定されたインデックスキー集合に対応するデータレコードを抽出する。週出されたデータレコードは、入出力I/F12を介して表示装置や印刷装置に出力されてもよいし、入出力I/F12を介して可搬型記録媒体に格納されてもよいし、通信装置13を介して他のコンピュータに送信されてもよい。
検索部30は、図6に示されるように、クエリ取得部31、定義取得部32及び検索キー生成部33を含む。
クエリ取得部31は、検索対象の複数の属性に基づく検索範囲が指定されたクエリデータを取得する。クエリデータは、入力画面等に基づいて入力装置をユーザが操作することにより入力された情報であってもよいし、可搬型記録媒体、他のコンピュータ等から入出力I/F12又は通信装置13を経由して取得された情報であってもよい。
定義取得部32は、クエリ取得部31により取得されたクエリデータにより指定される複数の属性に対応するインデックス定義情報105(スキャッタマスクセット)をインデックス定義格納部26から取得する。
検索キー生成部33は、定義取得部32により取得されるインデックス定義情報105に基づいて、クエリデータにより指定される検索範囲を示す、クエリデータにより指定される複数の属性に対応する検索キーを生成する。生成される検索キーは、当該検索範囲を示す複数のインデックスキーである。検索キー生成部33は、インデックスキー生成部22と同様の手法により、当該検索範囲を示す複数のインデックスキーを生成する。例えば、検索キー生成部33は、クエリデータから、当該検索範囲の下限を示す各属性値、及び、当該検索範囲の上限を示す各属性値をそれぞれ取得し、これら属性値を各属性に対応するスキャッタマスクに基づいてスキャッタ演算し、このスキャッタ演算で得られたビット列をOR演算で集約することにより、当該検索範囲の下限に対応するインデックスキー及び当該検索範囲の上限に対応するインデックスキーを生成する。このように生成されたインデックスキーが検索キーである。
〔動作例〕
次に、第1実施形態におけるインデックスキー生成方法について図8を用いて説明する。以下の説明では、検索装置1が当該方法の実行主体となるが、検索装置1に含まれる上述の各処理部が実行主体となってもよい。
図8は、インデックスキー生成処理に関する第1実施形態における検索装置1の動作例を示すフローチャートである。検索装置1は、インデックス対象となる複数の属性に関する複数の属性値を取得する(S80)。
続いて、検索装置1は、インデックス対象となる属性の組み合わせに対応するインデックス定義情報を取得する(S81)。これにより、当該各属性についてのスキャッタマスクがそれぞれ取得される。
検索装置1は、(S80)で取得された複数の属性値の中で未処理の属性値が存在しなくなるまで以下の処理を繰り返す(S82)。
検索装置1は、(S80)で取得された複数の属性値の中から未処理の1つの属性値を選択する(S83)。検索装置1は、その選択された属性値の属性に対応するスキャッタマスクを用いて、その選択された属性値に対してスキャッタ演算を適用する(S84)。
検索装置1は、(S80)で取得された全ての属性値に対して処理が終わると(S82;NO)、スキャッタされたビット列群をOR演算することでインデックスキーを生成する(S85)。
更に、第1実施形態における検索方法について図9を用いて説明する。以下の説明では、検索装置1が当該方法の実行主体となるが、検索装置1に含まれる上述の各処理部が実行主体となってもよい。
図9は、検索処理に関する第1実施形態における検索装置1の動作例を示すフローチャートである。検索装置1は、クエリデータを取得する(S90)。クエリデータでは、検索対象の複数の属性に基づく検索範囲が指定されている。例えば、検索対象の複数の属性として「性別」及び「年齢」が指定されている場合、検索範囲としては、「男」かつ「20歳以上40歳未満」が指定される。
続いて、検索装置1は、クエリデータにより指定される複数の属性に対応するインデックス定義情報をインデックス定義格納部26から取得する(S91)。これにより、当該各属性についてのスキャッタマスクがそれぞれ取得される。
検索装置1は、(S90)で取得されたクエリデータで指定される複数の属性値の中で未処理の属性が存在しなくなるまで以下の処理を繰り返す(S92)。
検索装置1は、当該クエリデータで指定される複数の属性の中から未処理の1つの属性を選択する(S93)。
検索装置1は、その選択された属性に対応するスキャッタマスクを用いて、その選択された属性の検索範囲を示す少なくとも1つの属性値に対してスキャッタ演算を適用する(S94)。上記クエリデータの具体例によれば、属性「年齢」が選択された場合、検索装置1は、属性「年齢」の検索範囲を示す2つの属性値「20歳」及び「40歳」に対してスキャッタ演算を適用する。
検索装置1は、当該クエリデータで指定される全ての属性に対して処理が終わると(S92;NO)、当該クエリデータで指定される属性の組み合わせ毎に、スキャッタされたビット列群をOR演算することにより、検索キーを生成する(S95)。上記具体例によれば、属性「性別」及び属性「年齢」の組み合わせに関し、属性値「男」に対するスキャッタ演算結果と、属性値「20歳」に対応するスキャッタ演算結果とのOR演算により1つの検索キーが生成される。更に、属性値「男」に対するスキャッタ演算結果と、属性値「40歳」に対応するスキャッタ演算結果とのOR演算により1つの検索キーが生成される。
検索装置1は、上述のインデックスキー生成方法で生成されたインデックスキーがソートされたインデックスの中から、生成された検索キーに適合するインデックスキー集合を特定し、この特定されたインデックスキー集合に対応するデータレコードをデータベース35から抽出する(S96)。本実施形態では、検索環境に適合するようにインデックスキーが生成されているため、(S96)で特定されるインデックスキー集合は、記憶媒体上の連続した領域に配置されている可能性が高くなる。
〔第1実施形態の作用及び効果〕
上述したように第1実施形態では、インデックス定義情報105には、インデックス対象の複数の属性の各々に対応する複数のスキャッタマスクが含まれる。各スキャッタマスクは、インデックスキーと同じビット長のビット列であり、そのビット列において、対応する属性の各ビットが配置されるビット位置がマスクされている。第1実施形態では、各属性に対応する各スキャッタマスクに基づいて、各属性値がそれぞれスキャッタ演算され、スキャッタ演算で得られた各ビット列がOR演算で集約されることで、インデックスキーが生成される。
従って、本実施形態によれば、インデックス定義情報105に含まれるスキャッタマスクセットを適切に設定すれば、検索環境に適合するインデックスキーを生成することができ、ひいては、検索効率を向上させることができる。
更に、本実施形態によれば、インデックス対象の属性の組み合わせ毎に、それぞれインデックス定義情報を持つことができるため、属性の各組み合わせに応じたインデックスキーの生成パターンを用いることができる。これにより、例えば、データベース35内のテーブル毎に異なるインデックス生成パターンを用いることができるため、インデックスキーを検索環境に一層適合させることができ、検索効率を向上させやすくなる。
本実施形態によれば、スキャッタマスクというインデックス定義情報を用いることで、インデックスの生成パターンが一般化された。これにより、従来、全く別個の手法として用いられていた複合インデックス及びビットインタリービングの両方を1つのデータベース35で使用することも可能となる。
また、本実施形態によれば、生成されるインデックスキーのビット長は、インデックス対象となる各属性のビット長の合計以上であればよく、属性間のビット長を無理に合わせる必要がないため、インデックスキーのサイズの増大を防ぐことができる。
更に、本実施形態によれば、インデックスキーの生成をスキャッタ演算及びOR演算で実現しているため、インデックスキーの生成処理を高速化し易い。例えば、スキャッタ演算は、基本的なビット操作であるため、スキャッタ演算専用のハードウェアを持つCPUが既に提供されていたり、スキャッタ演算に関する効率的なアルゴリズムが知られたりしている。また、本実施形態では、複数のビット列をまとめてビット操作する方法でインデックスキーが生成されるため、並列化がしやすく、SIMD(Single Instruction Multiple Data)命令を用いることもできる。
[第2実施形態]
第2実施形態における検索装置1は、更に、インデックス定義情報の外部からの設定、及び、インデックス定義情報の検査を可能とする。以下、第2実施形態における検索装置1について、第1実施形態と異なる内容を中心に説明し、第1実施形態と同様の内容については適宜省略する。
〔処理構成〕
図10は、第2実施形態における検索装置1の処理構成例を概念的に示す図である。第2実施形態における検索装置1は、第1実施形態の処理部に加えて、更に、定義設定部41及び定義検査部42を有する。これら各処理部についても、他の処理部と同様に、CPU10によりメモリ11に格納されるプログラムが実行されることにより実現される。
定義設定部41は、インデックス対象の少なくとも1つの属性についてその属性の各ビットのインデックスキー中の配置を示す設定データを取得し、その取得された設定データの内容をインデックス定義格納部26に格納する。設定データがインデックス定義格納部26に既に格納されるインデックス定義情報を変更するためのデータである場合、定義設定部41は、その設定データの内容をインデックス定義格納部26に格納されるインデックス定義情報に反映する。
定義設定部41は、設定データをデータベース35の管理者等に入力させるための画面を検索装置1又は管理者端末に表示させ、その画面を介して管理者等により入力された設定データを取得するようにしてもよい。その画面は、例えば、管理者等に、各属性のビット列の、インデックスキー中のビット配置をそれぞれ指定させる画面である。例えば、インデックスキーの桁ごとに、どの属性のビットを割り当てるかの指定を受け付けるような画面であっても良い。また、設定データは、可搬型記録媒体、他のコンピュータ等から入出力I/F12を経由して取得されてもよい。
定義設定部41は、当該設定データを取得し、その設定データに基づいて各属性のスキャッタマスクをそれぞれ生成し、生成されたスキャッタマスクセットをインデックス定義格納部26に格納する。定義設定部41は、属性を特定し得る属性IDと共にスキャッタマスクを取得し、その属性ID及びスキャッタマスクをインデックス定義格納部26に格納するようにしてもよい。
定義検査部42は、インデックス定義格納部26に格納されるインデックス定義情報の妥当性を、当該インデックス定義情報により示されるインデックス対象の各属性についてのインデックスキー中のビット配置に基づいて、検査する。具体的には、定義検査部42は、各属性の全ビットが、漏れなくインデックスキー中に配置されており、かつ、各属性の各ビットのインデックスキー中のビット位置が重複していないことを確認する。ここで、定義検査部42により実行される当該検査のタイミングは、何ら制限されない。
例えば、インデックス定義情報がスキャッタマスクにより実現されている場合、定義検査部42は、インデックス定義情報105に含まれる各属性のスキャッタマスクをOR演算及びAND演算することにより、全てのスキャッタマスクの妥当性を検査することができる。定義検査部42は、OR演算の結果で1が設定されているビットの数をカウントし、カウントされたビット数と各属性のビット長の合計とが一致するか否かを確認する。定義検査部42は、カウントされたビット数と各属性のビット長の合計とが一致し、かつ、AND演算の結果がゼロ(0)を示す場合、全てのスキャッタマスクが妥当と判断し、それ以外の場合、妥当でないスキャッタマスクが存在すると判断することができる。このようにインデックス定義情報がスキャッタマスクにより実現されている場合、定義検査部42は、簡単なビット操作により、インデックス定義情報の妥当性を確認することができる。
〔動作例〕
次に、第2実施形態におけるインデックスキー生成方法について図11を用いて説明する。図11は、インデックスキー生成処理に関する第2実施形態における検索装置1の動作例を示すフローチャートである。第2実施形態では、(S101)、(S102)及び(S103)が追加されている点で、第1実施形態と異なる。
検索装置1は、インデックス対象となる属性の組み合わせに対応するインデックス定義情報を取得すると(S81)、取得されたインデックス定義情報の妥当性を検査する(S101)。この妥当性の検査は、上述の定義検査部42と同様であるため、ここでは説明を省略する。検索装置1は、インデックス定義情報が妥当である、即ち、全スキャッタマスクが妥当である場合(S102;YES)、第1実施形態と同様の手法によりインデックスキーを生成する。
一方、検索装置1は、インデックス定義情報が妥当でない、即ち、少なくとも1つのスキャッタマスクが妥当でない場合(S102;NO)、エラーを出力し(S103)、処理を終了する。ここで、本実施形態は、エラーの出力形態を制限しない。
〔第2実施形態の作用及び効果〕
上述のように、第2実施形態では、外部から設定データが取得され、その設定データの内容に基づいてインデックス定義情報が生成又は更新される。従って、本実施形態によれば、データベース35の管理者等に、インデックスキーの生成パターンを設計し易くすることができる。また、本実施形態によれば、検索環境の把握状況等に応じてインデックスキーの生成パターンを調整(変更)したい場合にも、柔軟に対応可能である。
また、第2実施形態では、インデックス定義情報が自動で検査される。従って、第2実施形態によれば、外部からのインデックス定義情報の設定ミス等による不当なインデックスキーが生成されるのを防ぐことができる。更に、インデックス定義情報がスキャッタマスクセットで実現される場合には、各スキャッタマスクに対する単純なビット演算で妥当性の検査を行うことができるため、インデックス定義情報の自動検査を容易かつ高速に実行することができる。
[変形例]
上述の第2実施形態では、定義検査部42が設けられ、自動でインデックス定義情報の検査が行われた。しかしながら、定義検査部42が設けられなくてもよい。インデックス定義情報をスキャッタマスクセットで実現すれば、スキャッタマスク自体は、各属性の各ビットのインデックスキー中のビット配置を人に視認させ易いデータ形態である。そこで、スキャッタマスクセットを表示させることで、管理者等は、スキャッタマスクセットの妥当性を容易に判断することができる。
また、上述の各実施形態では、検索装置1は、1つの装置(コンピュータ)として実現されたが、複数の装置として実現されてもよい。上述の各実施形態は、例えば、インデックスキーを生成するインデックスキー生成装置と、検索を行う検索装置とから構成されてもよい。この場合、インデックスキー生成装置は、データ取得部20、定義取得部21、インデックス定義格納部26を含み、検索装置は、クエリ取得部31、定義取得部32、検索キー生成部33及びデータベース35を含む。更に、各実施形態は、インデックス生成装置、検索装置、及び、データベース35を格納するデータベース装置から構成されてもよい。
以下に実施例を挙げ、上述の各実施形態を更に詳細に説明する。本発明は以下の実施例に制限されない。
本実施例では、4ビットの属性Aと2ビットの属性Bの2つの属性の組に対してインデックスキーを生成する例が挙げられる。以下の説明では、属性Aのビット列が[A]と表記され、属性Bのビット列が[B]と表記される。また、インデックス定義情報105としてスキャッタマスクが利用される形態が例示される。
インデックスキーのビット配置を[A]とする場合、属性Aのスキャッタマスクは[110110]に設定され、属性Bのスキャッタマスクは[001001]に設定される。
また、上述の非特許文献1に示される複合インデックスでは、インデックスキーのビット配置は[A]であるため、属性Aのスキャッタマスクは[111100]に設定され、属性Bのスキャッタマスクは[000011]に設定される。
上述の非特許文献2に示される左詰めのビットインタリーブでは、インデックスキーのビット配置は[A]であるため、属性Aのスキャッタマスクは[101011]に設定され、属性Bのスキャッタマスクは[010100]に設定される。
上述の各実施形態によれば、このように、各属性の各ビットのインデックスキー中のビット配置を汎用的に細かく定義することができる。即ち、上述の各実施形態によれば、高速な範囲検索を実現するべく、範囲検索で取得されるレコード群が記憶媒体上で近くに配置されるようなインデックスキーを定義することができる。
本実施例では、インデックス定義情報105の好ましい実現形態としてスキャッタマスクが例示されたが、インデックス定義情報105は、間接的にスキャッタマスクのビット列のセットを生成しうるデータであってもよい。例えば、属性名とビット数の組を並べたデータとして、上記例のインデックス定義情報105は、[A:2,B:1,A:2,B:1]のように定義されてもよい。この場合、インデックスキーは、属性Aから先頭2ビット、属性Bから先頭1ビット、属性Aからその次の2ビット、属性Bからその次の1ビットより構成される。他にもインデックス定義情報105の実現形態は様々存在し得る。インデックス定義情報105は、上述したように、各属性の各ビットがインデックスキーにおいてどの位置にくるかを一意に示されているものであれば、その実現形態は制限されない。このようなインデックス定義情報105から、各属性のスキャッタマスクが生成されるようにしてもよい。
次に、インデックスキーの生成方法の具体例について図8を参照しながら説明する。
検索装置1は、属性Aの属性値[A]及び属性Bの属性値[B]を取得し(S80)、更に、属性Aのスキャッタマスク[110110]及び属性Bのスキャッタマスク[001001]を取得する(S81)。
検索装置1は、属性Aのスキャッタマスク[110110]を用いて、属性Aの属性値[A]に対してスキャッタ演算を適用する(S84)。このスキャッタ演算により、ビット列[A0A0]が生成される。更に、検索装置1は、属性Bのスキャッタマスク[001001]を用いて、属性Bの属性値[B]に対してスキャッタ演算を適用する(S84)。このスキャッタ演算により、ビット列[00B00B]が生成される。
スキャッタ操作(演算)は、基本的なビット操作であるため、スキャッタ操作に関し、専用のハードウェアを備えたCPUがあったり、汎用的なビット演算の組み合わせで効率的なアルゴリズムが知られたりしている。ここでは、後者の既知のアルゴリズムの1つである並列プリフィックス法によるスキャッタ操作が例示される。
並列プリフィックス法は、再帰的なアルゴリズムであり、1ステップで全ビットを大まかな位置に移動させていくことでスキャッタ操作を実現する。ここでは、説明の便宜のため、2のべき乗数の一つである8ビットに拡幅したスキャッタマスクを用いたスキャッタ操作を例示する。この例では、属性Aの属性値が[0000A]と表記され、このビット列が属性Aのスキャッタマスク[00110110]を用いてスキャッタ演算される。
まず、スキャッタマスクが2等分される。ここでは、スキャッタマスク[00110110]が上位ビット列[0011]と下位ビット列[0110]とに分割される。
次に、上位ビット列[0011]に含まれる1が設定されるビットの数がカウントされる。ここでは、ビット数2が得られる。
次に、スキャッタ対象のビット列が2等分された下位ビット列の上位ビットから、カウントされたビット数(2)分が、上位ビット列に移動される。ここでは、スキャッタ対象の[0000A]の下位ビット列[A]の上位2ビット(カウントにより取得されたビット数分)、即ち、[A]が上位に移動される。これにより、[00A00A]が取得される。
そして、この取得されたビット列[00A00A]が[00A]と[00A]とに2等分される。これにより、スキャッタ対象[00A]をスキャッタマスク[0011]を用いてスキャッタ操作する第1の問題と、スキャッタ対象[00A]をスキャッタマスク[0110]を用いてスキャッタ操作する第2の問題とに帰着する。
次に、当該2つの問題の各々について、上述と同様の手順を再帰的に繰り返す。これら各スキャッタ操作は、それぞれ別のデータに対する操作であるため、並列に実行することができる。
上記第1の問題については、ビット移動は生じず、ビット列[00A]が[00]と[A]とに2等分される。これにより、第1の問題は、スキャッタ対象[00]をスキャッタマスク[00]を用いてスキャッタ操作する第3の問題と、スキャッタ対象[A]をスキャッタマスク[11]を用いてスキャッタ操作する第4の問題とに帰着する。
一方、上記第2の問題については、下位ビット列[A]の上位1ビットが上位ビット列に移動され、ビット列[0A0A]が取得され、このビット列が[0A]と[0A]とに2等分される。これにより、第2の問題は、スキャッタ対象[0A]をスキャッタマスク「01」を用いてスキャッタ操作する第5の問題と、スキャッタ対象[0A]をスキャッタマスク「10」を用いてスキャッタ操作する第6の問題とに帰着する。
更に、各問題がそれぞれ再帰的に処理される。これにより、上記第3の問題は、スキャッタ対象[0]をスキャッタマスク[0]を用いてスキャッタ操作する2つの問題に帰着する。上記第4の問題は、スキャッタ対象[A]をスキャッタマスク[1]を用いてスキャッタ操作する問題と、スキャッタ対象[A]をスキャッタマスク[1]を用いてスキャッタ操作する問題とに帰着する。上記第5の問題は、スキャッタ対象[0]をスキャッタマスク[0]を用いてスキャッタ操作する問題と、スキャッタ対象[A]をスキャッタマスク[1]を用いてスキャッタ操作する問題とに帰着する。上記第6の問題では、下位ビット[A]の1ビットが上位ビットに移動され、ビット列[A0]が取得され、このビット列が[A]と[0]とに2等分される。これにより、第6の問題は、スキャッタ対象[A]をスキャッタマスク[1]を用いてスキャッタ操作する問題と、スキャッタ対象[0]をスキャッタマスク[0]を用いてスキャッタ操作する問題とに帰着する。
スキャッタマスクのビット長が1になると、それ以上は分割できないため、再帰処理は終了する。結果、[00A0A0]が取得される。従って、スキャッタマスクのビット長n(=8)に対して、O(log n)ステップ(=3)によりスキャッタ操作が可能となるため、並列プリフィックス法を用いれば、効率的にスキャッタ操作をすることができる。ここで、元の属性値が2のべき乗でない場合、上述のように2のべき乗数になるように0でパディングし、スキャッタ操作の結果からパディングされた0を取り除けば、所望の結果を得ることが出来る。
上述のように各スキャッタ演算により、属性Aについてビット列[A0A0]が生成され、属性Bについてビット列[00B00B]が生成される。検索装置1は、各スキャッタ演算の結果をOR演算で1つのビット列に集約する(S85)。これにより、[A]がインデックスキーとして取得される。OR演算は、HWで用意されている演算であることから高速に実行をすることができる。
更に、上記のアルゴリズムは、SIMD命令と呼ばれる複数のデータに対して同一操作を同時に実行できる機能を備えているCPUと相性がよい。なぜなら、SIMD命令により一度に長いビット列に対して並列に処理できるからである。本実施例は、このように、上述の各実施形態によれば、汎用性の高いインデックスキー定義をすることができ、かつ、効率的にインデックスキーを生成できることを示した。
本実施例では、4ビット長の属性A及び2ビットの属性Bが例示されたが、各属性のビット長は制限されない。インデックスキーは、レコードのスキーマ単位で用意されるため、レコードのスキーマ名と関連付けてインデックス定義情報105が保持されてもよい。このようにすれば、或るスキーマのレコードに対してインデックス定義情報105を参照する場合、そのスキーマ名に基づいて当該インデックス定義情報105が特定され得る。
なお、上述の説明で用いた複数のフローチャートでは、複数の工程(処理)が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態及び変形例は、内容が相反しない範囲で組み合わせることができる。
この出願は、2013年1月11日に出願された日本出願特願2013−003842号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
[付記1]
インデックス対象の複数の属性に関する複数の属性値を取得するデータ取得部と、
インデックス対象の各属性について、該属性の各ビットの、インデックスキー中の配置をそれぞれ示すインデックス定義情報を取得する定義取得部と、
前記定義取得部により取得されるインデックス定義情報に基づいて、前記データ取得部により取得される複数の属性値をビット単位で配置することによりインデックスキーを生成するビット処理部と、
を備えるインデックスキー生成装置。
[付記2]
前記インデックス定義情報は、インデックス対象の各属性について、インデックスキーと同じビット長のビット列における、該属性の各ビットが配置されるビット位置がマスクされたスキャッタマスクをそれぞれ含み、
前記ビット処理部は、前記データ取得部により取得される各属性値に対して、該属性値の属性に対応するスキャッタマスクを用いたスキャッタ演算をそれぞれ適用し、該スキャッタ演算で得られた該属性毎のビット列をOR演算で集約することにより前記インデックスキーを生成する、
付記1に記載のインデックスキー生成装置。
[付記3]
前記定義取得部は、インデックス対象の属性の各組み合わせに対応する複数のインデックス定義情報の中から、前記データ取得部により取得される複数の属性値の属性の組み合わせに対応するインデックス定義情報を選択的に取得する、
付記1又は2に記載のインデックスキー生成装置。
[付記4]
前記複数のインデックス定義情報は、インデックス対象の各属性についてそれぞれ示されるインデックスキー中のビット配置がインデックス定義情報間で異なる少なくとも2つのインデックス定義情報を含む、
付記3に記載のインデックスキー生成装置。
[付記5]
インデックス対象の少なくとも1つの属性について該属性の各ビットのインデックスキー中の配置を示す設定データを取得し、該設定データの内容を前記インデックス定義情報に反映する定義設定部、
を更に備える付記1から4のいずれか1項に記載のインデックスキー生成装置。
[付記6]
前記インデックス定義情報により示されるインデックス対象の各属性についてのインデックスキー中のビット配置に基づいて、該インデックス定義情報の妥当性を検査する定義検査部、
を更に備える付記1から5のいずれか1項に記載のインデックスキー生成装置。
[付記7]
前記インデックス定義情報は、前記各属性のビット列の並び順をそれぞれ維持し、かつ、前記各属性のビット値が交互に並ぶ第1ビット列と、同じ属性のビット値が少なくとも2つ連続して並ぶ第2ビット列とのいずれか一方が他方を挟むビット配置を少なくとも一部に含むことを示す、
付記1から6のいずれか1項に記載のインデックスキー生成装置。
[付記8]
インデックス対象の複数の属性に関する複数の属性値を取得するデータ取得部と、
前記データ取得部により取得される複数の属性に関する複数の属性値を、ビット単位で配置することによりインデックスキーを生成するビット処理部と、
を備え、
前記ビット処理部は、
前記各属性のビット列の並び順がそれぞれ維持され、かつ、
前記複数の属性の中の少なくとも一つの属性のビット列が不連続に並び、かつ、
前記各属性のビット値が交互に並ぶ第1ビット列と、同じ属性のビット値が少なくとも2つ連続して並ぶ第2ビット列とのいずれか一方が他方を挟むビット配置を少なくとも一部に含むように、
前記複数の属性値をビット単位で配置する、
インデックスキー生成装置。
[付記9]
付記1から8のいずれか1項に記載のインデックスキー生成装置で生成されるインデックスキーがソートされたインデックスを用いる検索装置において、
検索対象の複数の属性に基づく検索範囲が指定されたクエリデータを取得するクエリ取得部と、
前記クエリ取得部により取得されるクエリデータにより指定される複数の属性に対応する前記インデックス定義情報を取得する定義取得部と、
前記定義取得部により取得されるインデックス定義情報に基づいて、前記クエリデータにより指定される検索範囲を示す、前記クエリデータにより指定される複数の属性に対応する検索キーを生成する検索キー生成部と、
を備える検索装置。
[付記10]
インデックス対象の複数の属性に関する複数の属性値を取得し、
インデックス対象の各属性について、該属性の各ビットの、インデックスキー中の配置をそれぞれ示すインデックス定義情報を取得し、
前記取得されたインデックス定義情報に基づいて、前記取得された複数の属性値をビット単位で配置することによりインデックスキーを生成する、
ことを含むインデックスキー生成方法。
[付記11]
前記インデックス定義情報は、インデックス対象の各属性について、インデックスキーと同じビット長のビット列における、該属性の各ビットが配置されるビット位置がマスクされたスキャッタマスクをそれぞれ含み、
前記インデックスキーの生成は、
前記取得された各属性値に対して、該属性値の属性に対応するスキャッタマスクを用いたスキャッタ演算をそれぞれ適用し、該スキャッタ演算で得られた該属性毎のビット列をOR演算で集約することにより前記インデックスキーを生成する、
付記10に記載のインデックスキー生成方法。
[付記12]
前記インデックス定義情報の取得は、インデックス対象の属性の各組み合わせに対応する複数のインデックス定義情報の中から、前記データ取得部により取得される複数の属性値の属性の組み合わせに対応するインデックス定義情報を選択的に取得する、
付記10又は11に記載のインデックスキー生成方法。
[付記13]
前記複数のインデックス定義情報は、インデックス対象の各属性についてそれぞれ示されるインデックスキー中のビット配置がインデックス定義情報間で異なる少なくとも2つのインデックス定義情報を含む、
付記12に記載のインデックスキー生成方法。
[付記14]
インデックス対象の少なくとも1つの属性について該属性の各ビットのインデックスキー中の配置を示す設定データを取得し、
前記設定データの内容を前記インデックス定義情報に反映する、
ことを更に含む付記10から13のいずれか1項に記載のインデックスキー生成方法。
[付記15]
前記インデックス定義情報により示されるインデックス対象の各属性についてのインデックスキー中のビット配置に基づいて、該インデックス定義情報の妥当性を検査する、
ことを更に含む付記10から14のいずれか1項に記載のインデックスキー生成方法。
[付記16]
前記インデックス定義情報は、前記各属性のビット列の並び順をそれぞれ維持し、かつ、前記各属性のビット値が交互に並ぶ第1ビット列と、同じ属性のビット値が少なくとも2つ連続して並ぶ第2ビット列とのいずれか一方が他方を挟むビット配置を少なくとも一部に含むことを示す、
付記10から15のいずれか1項に記載のインデックスキー生成方法。
[付記17]
インデックス対象の複数の属性に関する複数の属性値を取得し、
前記取得された複数の属性に関する複数の属性値をビット単位で配置することによりインデックスキーを生成する、
ことを含み、
前記インデックスキーの生成は、前記各属性のビット列の並び順がそれぞれ維持され、かつ、前記複数の属性の中の少なくとも一つの属性のビット列が不連続に並び、かつ、前記各属性のビット値が交互に並ぶ第1ビット列と、同じ属性のビット値が少なくとも2つ連続して並ぶ第2ビット列とのいずれか一方が他方を挟むビット配置を少なくとも一部に含むように、前記複数の属性値をビット単位で配置する、
インデックスキー生成方法。
[付記18]
付記10から17のいずれか1項に記載のインデックスキー生成方法により生成されたインデックスキーがソートされたインデックスを用いる検索方法において、
検索対象の複数の属性に基づく検索範囲が指定されたクエリデータを取得し、
前記取得されたクエリデータにより指定される複数の属性に対応する前記インデックス定義情報を取得し、
前記取得されたインデックス定義情報に基づいて、前記クエリデータにより指定される検索範囲を示す、前記クエリデータにより指定される複数の属性に対応する検索キーを生成する、
ことを更に含む検索方法。
[付記19]
付記10から17のいずれか1項に記載のインデックスキー生成方法を少なくとも1つのコンピュータに実行させるプログラム。
[付記20]
付記18に記載の検索方法を少なくとも1つのコンピュータに実行させるプログラム。
[付記21]
複数の属性に関する複数の属性値がビット単位で配置されることにより形成されるインデックスキーのデータ構造において、
前記インデックスキーは、
前記各属性のビット列の並び順をそれぞれ維持し、かつ、前記複数の属性の中の少なくとも一つの属性のビット列が不連続に並び、かつ、前記各属性のビット値が交互に並ぶ第1ビット列と、同じ属性のビット値が少なくとも2つ連続して並ぶ第2ビット列とのいずれか一方が他方を挟むビット配置を少なくとも一部に含み、
コンピュータが、
前記インデックスキーがソートされることで形成されるインデックスの中から、クエリデータにより指定される検索対象の複数の属性に基づく検索範囲に適合するインデックスキー集合を特定するために参照する、
インデックスキーのデータ構造。

Claims (10)

  1. インデックス対象の複数の属性に関する複数の属性値を取得するデータ取得部と、
    インデックス対象の各属性について、該属性の各ビットの、インデックスキー中の配置をそれぞれ示すインデックス定義情報を取得する定義取得部と、
    前記定義取得部により取得されるインデックス定義情報に基づいて、前記データ取得部により取得される複数の属性値をビット単位で配置することによりインデックスキーを生成するビット処理部を備え、
    前記インデックス定義情報は、前記各属性のビット列の並び順をそれぞれ維持し、かつ、前記各属性のビット値が交互に並ぶ第1ビット列と、同じ属性のビット値が少なくとも2つ連続して並ぶ第2ビット列とのいずれか一方が他方を挟むビット配置を少なくとも一部に含むことを示す、
    インデックスキー生成装置。
  2. 前記インデックス定義情報は、インデックス対象の各属性について、インデックスキーと同じビット長のビット列における、該属性の各ビットが配置されるビット位置がマスクされたスキャッタマスクをそれぞれ含み、
    前記ビット処理部は、前記データ取得部により取得される各属性値に対して、該属性値の属性に対応するスキャッタマスクを用いたスキャッタ演算をそれぞれ適用し、該スキャッタ演算で得られた該属性毎のビット列をOR演算で集約することにより前記インデックスキーを生成する、
    請求項1に記載のインデックスキー生成装置。
  3. 前記定義取得部は、インデックス対象の属性の各組み合わせに対応する複数のインデックス定義情報の中から、前記データ取得部により取得される複数の属性値の属性の組み合わせに対応するインデックス定義情報を選択的に取得する、
    請求項1又は2に記載のインデックスキー生成装置。
  4. 前記複数のインデックス定義情報は、インデックス対象の各属性についてそれぞれ示されるインデックスキー中のビット配置がインデックス定義情報間で異なる少なくとも2つのインデックス定義情報を含む、
    請求項3に記載のインデックスキー生成装置。
  5. インデックス対象の少なくとも1つの属性について該属性の各ビットのインデックスキー中の配置を示す設定データを取得し、該設定データの内容を前記インデックス定義情報に反映する定義設定部、
    を更に備える請求項1から4のいずれか1項に記載のインデックスキー生成装置。
  6. 前記インデックス定義情報により示されるインデックス対象の各属性についてのインデックスキー中のビット配置に基づいて、該インデックス定義情報の妥当性を検査する定義検査部、
    を更に備える請求項1から5のいずれか1項に記載のインデックスキー生成装置。
  7. インデックス対象の複数の属性に関する複数の属性値を取得するデータ取得部と、
    インデックス対象の各属性について、該属性の各ビットの、インデックスキー中の配置をそれぞれ示すインデックス定義情報を取得する定義取得部と、
    前記定義取得部により取得されるインデックス定義情報に基づいて、前記データ取得部により取得される複数の属性値をビット単位で配置することによりインデックスキーを生成するビット処理部と、
    前記インデックス定義情報により示されるインデックス対象の各属性についてのインデックスキー中のビット配置に基づいて、該インデックス定義情報の妥当性を検査する定義検査部を備える、
    インデックスキー生成装置。
  8. 請求項1から7のいずれか1項に記載のインデックスキー生成装置で生成されるインデックスキーがソートされたインデックスを用いる検索装置において、
    検索対象の複数の属性に基づく検索範囲が指定されたクエリデータを取得するクエリ取得部と、
    前記クエリ取得部により取得されるクエリデータにより指定される複数の属性に対応する前記インデックス定義情報を取得する定義取得部と、
    前記定義取得部により取得されるインデックス定義情報に基づいて、前記クエリデータにより指定される検索範囲を示す、前記クエリデータにより指定される複数の属性に対応する検索キーを生成する検索キー生成部と、
    を備える検索装置。
  9. コンピュータが、
    インデックス対象の複数の属性に関する複数の属性値を取得し、
    インデックス対象の各属性について、該属性の各ビットの、インデックスキー中の配置をそれぞれ示すインデックス定義情報を取得し、
    前記取得されたインデックス定義情報に基づいて、前記取得された複数の属性値をビット単位で配置することによりインデックスキーを生成することを含み、
    前記インデックス定義情報は、前記各属性のビット列の並び順をそれぞれ維持し、かつ、前記各属性のビット値が交互に並ぶ第1ビット列と、同じ属性のビット値が少なくとも2つ連続して並ぶ第2ビット列とのいずれか一方が他方を挟むビット配置を少なくとも一部に含むことを示す、
    インデックスキー生成方法。
  10. 請求項9に記載のインデックスキー生成方法により生成されたインデックスキーがソートされたインデックスを用いる検索方法において、
    コンピュータが、
    検索対象の複数の属性に基づく検索範囲が指定されたクエリデータを取得し、
    前記取得されたクエリデータにより指定される複数の属性に対応する前記インデックス定義情報を取得し、
    前記取得されたインデックス定義情報に基づいて、前記クエリデータにより指定される検索範囲を示す、前記クエリデータにより指定される複数の属性に対応する検索キーを生成する、
    ことを更に含む検索方法。
JP2014556327A 2013-01-11 2013-10-25 インデックスキー生成装置及びインデックスキー生成方法並びに検索方法 Active JP6187478B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013003842 2013-01-11
JP2013003842 2013-01-11
PCT/JP2013/078931 WO2014109109A1 (ja) 2013-01-11 2013-10-25 インデックスキー生成装置及びインデックスキー生成方法並びに検索方法

Publications (2)

Publication Number Publication Date
JPWO2014109109A1 JPWO2014109109A1 (ja) 2017-01-19
JP6187478B2 true JP6187478B2 (ja) 2017-08-30

Family

ID=51166774

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014556327A Active JP6187478B2 (ja) 2013-01-11 2013-10-25 インデックスキー生成装置及びインデックスキー生成方法並びに検索方法

Country Status (3)

Country Link
US (1) US10496624B2 (ja)
JP (1) JP6187478B2 (ja)
WO (1) WO2014109109A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6428615B2 (ja) * 2013-07-12 2018-11-28 日本電気株式会社 多次元範囲検索装置及び多次元範囲検索方法
US10169803B2 (en) 2014-06-26 2019-01-01 Amazon Technologies, Inc. Color based social networking recommendations
US9697573B1 (en) 2014-06-26 2017-07-04 Amazon Technologies, Inc. Color-related social networking recommendations using affiliated colors
US10120880B2 (en) 2014-06-26 2018-11-06 Amazon Technologies, Inc. Automatic image-based recommendations using a color palette
US9514543B2 (en) 2014-06-26 2016-12-06 Amazon Technologies, Inc. Color name generation from images and color palettes
US10691744B2 (en) 2014-06-26 2020-06-23 Amazon Technologies, Inc. Determining affiliated colors from keyword searches of color palettes
US9916613B1 (en) 2014-06-26 2018-03-13 Amazon Technologies, Inc. Automatic color palette based recommendations for affiliated colors
US9524563B2 (en) 2014-06-26 2016-12-20 Amazon Technologies, Inc. Automatic image-based recommendations using a color palette
US10073860B2 (en) 2014-06-26 2018-09-11 Amazon Technologies, Inc. Generating visualizations from keyword searches of color palettes
US10223427B1 (en) 2014-06-26 2019-03-05 Amazon Technologies, Inc. Building a palette of colors based on human color preferences
US9922050B2 (en) 2014-06-26 2018-03-20 Amazon Technologies, Inc. Identifying data from keyword searches of color palettes and color palette trends
US9996579B2 (en) * 2014-06-26 2018-06-12 Amazon Technologies, Inc. Fast color searching
US10255295B2 (en) 2014-06-26 2019-04-09 Amazon Technologies, Inc. Automatic color validation of image metadata
US10235389B2 (en) 2014-06-26 2019-03-19 Amazon Technologies, Inc. Identifying data from keyword searches of color palettes
US10430857B1 (en) 2014-08-01 2019-10-01 Amazon Technologies, Inc. Color name based search
US9785649B1 (en) 2014-09-02 2017-10-10 Amazon Technologies, Inc. Hue-based color naming for an image
US10223379B2 (en) * 2014-09-04 2019-03-05 International Business Machines Corporation Parallel processing of a keyed index file system
EP3196780A4 (en) * 2014-09-19 2018-04-25 NEC Solution Innovators, Ltd. Information processing device, information processing method, and computer-readable storage medium
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
JP6781373B2 (ja) * 2016-10-05 2020-11-04 富士通株式会社 検索プログラム、検索方法、および検索装置
JP7153435B2 (ja) * 2017-10-12 2022-10-14 ラピスセミコンダクタ株式会社 不揮発性メモリのデータ書換方法及び半導体装置
US11238046B2 (en) * 2018-02-19 2022-02-01 Nippon Telegraph And Telephone Corporation Information management device, information management method, and information management program
JP7181159B2 (ja) * 2019-06-21 2022-11-30 株式会社ブリヂストン タイヤ
US11461301B2 (en) * 2020-09-13 2022-10-04 International Business Machines Corporation Database index optimization

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3611316A (en) * 1969-12-24 1971-10-05 Ibm Indirect indexed searching and sorting
US5010478A (en) * 1986-04-11 1991-04-23 Deran Roger L Entity-attribute value database system with inverse attribute for selectively relating two different entities
JPH0658643B2 (ja) * 1987-05-20 1994-08-03 工業技術院長 索引の作成方法
US5742806A (en) * 1994-01-31 1998-04-21 Sun Microsystems, Inc. Apparatus and method for decomposing database queries for database management system including multiprocessor digital data processing system
US5684986A (en) * 1995-06-07 1997-11-04 International Business Machines Corporation Embedded directory method and record for direct access storage device (DASD) data compression
US6763148B1 (en) * 2000-11-13 2004-07-13 Visual Key, Inc. Image recognition methods
NZ526735A (en) * 2000-11-29 2006-03-31 Lafayette Software Inc Methods of organizing data and processing queries in a database system, and database system and software product for implementing such methods
US7167856B2 (en) * 2001-05-15 2007-01-23 Jonathan Keir Lawder Method of storing and retrieving multi-dimensional data using the hilbert curve
US7366873B1 (en) * 2003-08-18 2008-04-29 Cray, Inc. Indirectly addressed vector load-operate-store method and apparatus
EP1870814B1 (en) * 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
US7359923B2 (en) * 2004-08-20 2008-04-15 International Business Machines Corporation Online incremental deferred integrity processing and maintenance of rolled in and rolled out data
US7490079B2 (en) * 2005-04-14 2009-02-10 Microsoft Corporation Client side indexing of offline address book files
JP4878178B2 (ja) * 2006-02-28 2012-02-15 株式会社日立製作所 データ処理方法および装置並びにその処理プログラム
US8108355B2 (en) * 2006-10-27 2012-01-31 Hewlett-Packard Development Company, L.P. Providing a partially sorted index
US8706914B2 (en) * 2007-04-23 2014-04-22 David D. Duchesneau Computing infrastructure
JP2009048352A (ja) * 2007-08-17 2009-03-05 Nippon Telegr & Teleph Corp <Ntt> 情報検索装置、情報検索方法および情報検索プログラム
JP5069525B2 (ja) * 2007-09-11 2012-11-07 株式会社野村総合研究所 データ処理システム
US7984273B2 (en) * 2007-12-31 2011-07-19 Intel Corporation System and method for using a mask register to track progress of gathering elements from memory
US8629981B2 (en) * 2008-02-01 2014-01-14 Palo Alto Research Center Incorporated Analyzers with time variation based on color-coded spatial modulation
US8373860B2 (en) * 2008-02-01 2013-02-12 Palo Alto Research Center Incorporated Transmitting/reflecting emanating light with time variation
US20110060745A1 (en) * 2009-09-04 2011-03-10 Leonard Hoffman Method and system for configurable index generation and application
JP4417431B2 (ja) * 2009-09-28 2010-02-17 株式会社エスグランツ カップルドノードツリーの分割/結合方法及びプログラム
JP4745437B2 (ja) * 2009-10-29 2011-08-10 株式会社東芝 表示処理装置及び表示処理方法
CN102918494B (zh) * 2010-04-06 2016-08-03 贾斯通数据库有限公司 基于数据库模型不可知论、纲要不可知论且工作负载不可知论的数据存储和存取模型的数据存储和/或检索方法和系统
US8892569B2 (en) * 2010-12-23 2014-11-18 Ianywhere Solutions, Inc. Indexing spatial data with a quadtree index having cost-based query decomposition
EP2669810A1 (en) * 2011-01-25 2013-12-04 Nec Corporation Information processing device, information processing system, information processing method and information processing program
US20120254593A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for jumps using a mask register
US9155320B2 (en) * 2011-07-06 2015-10-13 International Business Machines Corporation Prefix-based leaf node storage for database system
WO2013095669A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Multi-register scatter instruction
US8972697B2 (en) * 2012-06-02 2015-03-03 Intel Corporation Gather using index array and finite state machine
WO2013180738A1 (en) * 2012-06-02 2013-12-05 Intel Corporation Scatter using index array and finite state machine
US9842046B2 (en) * 2012-09-28 2017-12-12 Intel Corporation Processing memory access instructions that have duplicate memory indices

Also Published As

Publication number Publication date
WO2014109109A1 (ja) 2014-07-17
US10496624B2 (en) 2019-12-03
JPWO2014109109A1 (ja) 2017-01-19
US20150356128A1 (en) 2015-12-10

Similar Documents

Publication Publication Date Title
JP6187478B2 (ja) インデックスキー生成装置及びインデックスキー生成方法並びに検索方法
US11693839B2 (en) Parser for schema-free data exchange format
US11392604B2 (en) Designating fields in machine data using templates
CN108292315B (zh) 储存和检索数据立方体中的数据
Konrath et al. Schemex—efficient construction of a data catalogue by stream-based indexing of linked data
US11036685B2 (en) System and method for compressing data in a database
US20150242407A1 (en) Discovery of Data Relationships Between Disparate Data Sets
US11461333B2 (en) Vertical union of feature-based datasets
KR20160100752A (ko) 컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석하는 시스템 및 방법
US11288266B2 (en) Candidate projection enumeration based query response generation
US10049164B2 (en) Multidimensional-range search apparatus and multidimensional-range search method
JP5844824B2 (ja) Sparqlクエリ最適化方法
CN116055559B (zh) 数据交换格式的处理方法及装置
CN110389953B (zh) 基于压缩图的数据存储方法、存储介质、存储装置和服务器
Yin et al. Content‐Based Image Retrial Based on Hadoop
WO2013153725A1 (ja) データ検索装置、データ検索方法およびデータ検索用プログラム
JP6155920B2 (ja) 多次元範囲検索装置及び多次元範囲検索方法
CN103853796B (zh) 数据插入方法和装置
Vlachou Efficient RDF Query Processing using Multidimensional Indexing
JP5191441B2 (ja) インデクス構築方法及び装置及び情報検索方法及び装置及びプログラム
CN114386384A (zh) 一种大规模长文本数据的近似重复检测方法、系统及终端
WO2019150510A1 (ja) 特定プログラム、情報処理装置および特定方法
US20190057097A1 (en) Information processing device, information processing method, and computer-readable recording medium
Madkour Efficient Query Processing Over Web-Scale RDF Data
Rong et al. String Similarity Join with Different Thresholds

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170509

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170620

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170717

R150 Certificate of patent or registration of utility model

Ref document number: 6187478

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150