(57)【要約】  多次元範囲検索装置（１０）は、空間充填曲線上の任意の点を表す対象インデックスキーを取得する取得部（１１）と、対象インデックスキーのビット列に基づいて、空間充填曲線上の未探索区間に含まれるインデックスキーのビット列を表し得るプレフィックスデータを抽出する抽出部（１２）と、プレフィックスデータにより示される空間充填曲線上のプレフィックス区間と、多次元範囲検索の問い合わせ区間との重複を判定する判定部（１３）と、問い合わせ区間と重複すると判定された、空間充填曲線上で対象インデックスキーに最も近いプレフィックス区間と、問い合わせ区間との重複区間の最小点又は最大点を表すインデックスキーを検索点として特定する特定部（１４）と、検索点として特定されたインデックスキーに対応するページ情報をインデックス格納部（１６）から検索する検索部（１５）とを有する。
2015005017.tif 000002
【特許請求の範囲】
【請求項１】
複数の属性からなるデータセットがマッピングされる多次元空間の一次元化に用いられる空間充填曲線上の任意の点を表す対象インデックスキーを取得する取得部と、
前記取得部により取得された対象インデックスキーのビット列に基づいて、前記空間充填曲線上の未探索区間に含まれるインデックスキーのビット列を表し得るプレフィックスデータを抽出する抽出部と、
前記抽出部により抽出されたプレフィックスデータのプレフィックスを共通して有するインデックスキーの集合により形成される前記空間充填曲線上のプレフィックス区間と、多次元範囲検索の問い合わせ区間との重複を判定する判定部と、
前記判定部により前記問い合わせ区間と重複すると判定された、前記空間充填曲線上で前記対象インデックスキーに最も近い前記プレフィックス区間と、前記問い合わせ区間との重複区間の最小点又は最大点を表すインデックスキーを検索点として特定する特定部と、
前記特定部により検索点として特定されたインデックスキーに対応するページ情報をインデックス格納部から検索する検索部と、
を備え、
前記空間充填曲線は、前記プレフィックスデータと、前記プレフィックスデータのプレフィックスを共通して有するインデックスキーの集合により形成される前記プレフィックス区間とが一対一に対応し、前記プレフィックスデータのプレフィックスの長さと前記プレフィックス区間の大きさとが負の相関を持つ特性を有する、
多次元範囲検索装置。
【請求項２】
前記抽出部は、前記対象インデックスキーのビット列を下位から上位に向かって走査することにより、前記空間充填曲線上で前記対象インデックスキーに近い順に、前記プレフィックスデータを順次抽出する、
請求項１に記載の多次元範囲検索装置。
【請求項３】
前記空間充填曲線は、各属性のビット列の並び順を変えず、該各属性のビット列同士を任意の順序で混合することで、前記多次元空間を一次元化し、
前記抽出部は、前記属性の数に依存しない所定ビット長で取り得る各ビットパターンについて、ビット反転及びワイルドカード文字への置換の少なくとも一方を含む置換ルールをそれぞれ持ち、前記対象インデックスキーのビット列を前記所定ビット長で区切ることで得られる部分ビット列のビットパターンに対応する該置換ルールを用いて、前記プレフィックスデータを抽出する、
請求項１又は２に記載の多次元範囲検索装置。
【請求項４】
前記抽出部は、前記対象インデックスキーのビット列の参照ビットが０の場合に、該参照ビットを１に変え、かつ、該参照ビットより下位のビットをワイルドカード文字に変える第１の置換ルール、及び、該参照ビットが１の場合に、該参照ビットを０に変え、かつ、該参照ビットより下位のビットをワイルドカード文字に変える第２の置換ルールの少なくとも一方を持つ、
請求項３に記載の多次元範囲検索装置。
【請求項５】
前記特定部は、前記プレフィックス区間の最小点を表すインデックスキーを形成する各属性のビット列と、前記問い合わせ区間の最小点を表すインデックスキーを形成する各属性のビット列とを属性毎に比較し、各属性の大きいほうのビット列から、前記重複区間の最小点を表すインデックスキーを特定する、又は、前記プレフィックス区間の最大点を表すインデックスキーを形成する各属性のビット列と、前記問い合わせ区間の最大点を表すインデックスキーを形成する各属性のビット列とを属性毎に比較し、各属性の小さいほうのビット列から、前記重複区間の最大点を表すインデックスキーを特定する、
請求項１から４のいずれか１項に記載の多次元範囲検索装置。
【請求項６】
複数の属性からなるデータセットがマッピングされる多次元空間の一次元化に用いられる空間充填曲線上の任意の点を表す対象インデックスキーを取得し、
前記対象インデックスキーのビット列に基づいて、前記空間充填曲線上の未探索区間に含まれるインデックスキーのビット列を表し得るプレフィックスデータを抽出し、
前記抽出されたプレフィックスデータのプレフィックスを共通して有するインデックスキーの集合により形成される前記空間充填曲線上のプレフィックス区間と、多次元範囲検索の問い合わせ区間との重複を判定し、
前記問い合わせ区間と重複すると判定された、前記空間充填曲線上で前記対象インデックスキーに最も近い前記プレフィックス区間と、前記問い合わせ区間との重複区間の最小点又は最大点を表すインデックスキーを検索点として特定し、
前記検索点として特定されたインデックスキーに対応するページ情報をインデックス格納部から検索する、
ことを含み、
前記空間充填曲線は、前記プレフィックスデータと、前記プレフィックスデータのプレフィックスを共通して有するインデックスキーの集合により形成される前記プレフィックス区間とが一対一に対応し、前記プレフィックスデータのプレフィックスの長さと前記プレフィックス区間の大きさとが負の相関を持つ特性を有する、
多次元範囲検索方法。
【請求項７】
前記プレフィックスデータの抽出は、前記対象インデックスキーのビット列を下位から上位に向かって走査することにより、前記空間充填曲線上で前記対象インデックスキーに近い順に、前記プレフィックスデータを順次抽出する、
請求項６に記載の多次元範囲検索方法。
【請求項８】
前記空間充填曲線は、各属性のビット列の並び順を変えず、該各属性のビット列同士を任意の順序で混合することで、前記多次元空間を一次元化し、
前記プレフィックスデータの抽出は、前記属性の数に依存しない所定ビット長で取り得る各ビットパターンに対し設けられる、ビット反転及びワイルドカード文字への置換の少なくとも一方を含む複数の置換ルールの中の、前記対象インデックスキーのビット列を前記所定ビット長で区切ることで得られる部分ビット列のビットパターンに対応する該置換ルールを用いて、前記プレフィックスデータを抽出する、
請求項６又は７に記載の多次元範囲検索方法。
【請求項９】
前記複数の置換ルールは、前記対象インデックスキーのビット列の参照ビットが０の場合に、該参照ビットを１に変え、かつ、該参照ビットより下位のビットをワイルドカード文字に変える第１の置換ルール、及び、該参照ビットが１の場合に、該参照ビットを０に変え、かつ、該参照ビットより下位のビットをワイルドカード文字に変える第２の置換ルールの少なくとも一方を含む、
請求項８に記載の多次元範囲検索方法。
【請求項１０】
前記検索点の特定は、前記プレフィックス区間の最小点を表すインデックスキーを形成する各属性のビット列と、前記問い合わせ区間の最小点を表すインデックスキーを形成する各属性のビット列とを属性毎に比較し、各属性の大きいほうのビット列から、前記重複区間の最小点を表すインデックスキーを特定する、又は、前記プレフィックス区間の最大点を表すインデックスキーを形成する各属性のビット列と、前記問い合わせ区間の最大点を表すインデックスキーを形成する各属性のビット列とを属性毎に比較し、各属性の小さいほうのビット列から、前記重複区間の最大点を表すインデックスキーを特定する、
請求項６から９のいずれか１項に記載の多次元範囲検索方法。
【請求項１１】
請求項６から１０のいずれか１項に記載の多次元範囲検索方法を少なくとも１つのコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多次元範囲検索におけるインデックス走査技術に関する。
【背景技術】
【０００２】
データ数の増加に伴い、拡張性のある分散型データベースが提案されている。これら分散型データベースの多くは、一次元のみの範囲検索のような単純な問い合わせ処理のみをサポートすることで拡張性を実現している。一方で、多次元値を一次元値にマップすることで、複数次元の範囲検索を可能としている分散型データベースも提案されている（下記非特許文献１）。下記非特許文献１では、概ね、下記のようにして、一次元化されたデータに対する多次元範囲検索を実現している。【０００３】
インデックス部及びデータ格納部が存在する。データセットは、或る閾値件数以下となるように、ページに分けられ、データ格納部に格納される。この時、データセットは、空間ベースの空間分割方法により、各部分空間に含まれるデータ数が閾値以下となるまで空間的に分割され、分割されたデータセットが各部分空間と関連付けられたページへ分散配置される。【０００４】
図７は、データセットにマッピングされる２次元空間の空間分割の例を示す図である。図７では、２次元空間がＺ曲線と呼ばれる空間充填曲線を用いて１次元化され、１次元化されたキー値が、２進数表記されている。インデックス部では、各部分空間に含まれるキー値のビット列の最長共通プレフィックスに基づいて各部分空間にそれぞれ名前を付け、名前順でソートされた部分空間の並びがインデックスとされる。図８は、図７の例から生成されるインデックスを示す図である。【０００５】
下記非特許文献１では、インデックス部を次のように操作することで多次元範囲検索を実現する。検索対象範囲（検索空間）を一次元化することで得られる区間の中から、最大値を示すビット列（最大点と表記する）及び最小値を示すビット列（最小点と表記する）が取得される。このとき、例えば、検索空間が図９に点線で示される領域であったと仮定する。この場合、最小点は、その領域の左下の角の位置「００００１１」であり、最大点は、その領域の右上の角の位置「１００１１１」である。続いて、当該手法は、インデックス上で、この最小点からこの最大点までの範囲を走査する。このとき、その走査範囲内にある各部分空間について、検索対象の範囲と少なくとも一部が重なっているか否かがそれぞれチェックされ、重なっている部分空間に対応付けられたデータページが検索対象に決定される。図９の例によれば、空間名「００００＊＊」から「１０＊＊＊＊」までの範囲がチェックされる。即ち、この例の場合、インデックス上の略全てのエントリに関して、それぞれのエントリに対応する部分空間と検索空間との重なりがチェックされることになる。但し、検索空間と重なる部分空間は、「００００＊＊」、「０００１＊＊」、「００１＊＊＊」、「１０＊＊＊＊」の４つの部分空間しかなく、「０１００００」から「０１１１１１」の複数の部分空間は、当該チェックの結果、検索空間と重ならず、検索対象から除外されることになる。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Shoji Nishimura, Sudipto Das, Divyakant Agrawal, Amr El Abbadi, "MD-HBase: A Scalable Multi-Dimensional Data Infrastructure for Location Aware Services", IEEE computer society, 2011.6.6.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述の手法では、多次元範囲検索において、インデックス走査が非効率になる場合がある。例えば、上述の図９の例に示されるように、検索空間が多次元空間全体に比べて小さいにもかかわらず、インデックスの走査範囲（最小点から最大点までの間）に多くの部分空間が含まれる場合があり得る。上述の手法は、インデックス走査範囲の最小点と最大点との間にある全ての部分空間について検索空間と重なっているか否かをチェックしているため、インデックス走査で検索空間と重なる部分空間を抽出するのに多くの時間が費やされてしまう。【０００８】
このような問題は、多次元空間を一次元化するときに生じるひずみに起因する。例えば、検索範囲として、複数の属性の中の一部の属性の値が指定されず、或る属性の全値域が指定される場合、指定した属性の範囲が十分狭いにもかかわらず、全インデックスを走査することになる可能性がある。このような問題は、検索対象の次元数が多い場合や、検索時に指定する各次元の範囲の幅に差がある場合等に顕著となる。【０００９】
本発明は、上述のような課題に鑑みてなされたものであり、多次元範囲検索時のヒットページの検出を高速化する技術を提供する。
【課題を解決するための手段】
【００１０】
本発明の各側面では、上述した課題を解決するために、それぞれ以下の構成を採用する。【００１１】
第１の側面は、多次元範囲検索装置に関する。第１の側面に係る多次元範囲検索装置は、複数の属性からなるデータセットがマッピングされる多次元空間の一次元化に用いられる空間充填曲線上の任意の点を表す対象インデックスキーを取得する取得部と、取得部により取得された対象インデックスキーのビット列に基づいて、空間充填曲線上の未探索区間に含まれるインデックスキーのビット列を表し得るプレフィックスデータを抽出する抽出部と、抽出部により抽出されたプレフィックスデータのプレフィックスを共通して有するインデックスキーの集合により形成される空間充填曲線上のプレフィックス区間と、多次元範囲検索の問い合わせ区間との重複を判定する判定部と、判定部により問い合わせ区間と重複すると判定された、空間充填曲線上で対象インデックスキーに最も近いプレフィックス区間と、問い合わせ区間との重複区間の最小点又は最大点を表すインデックスキーを検索点として特定する特定部と、特定部により検索点として特定されたインデックスキーに対応するページ情報をインデックス格納部から検索する検索部とを有する。第１の側面で用いられる上記空間充填曲線は、プレフィックスデータと、プレフィックスデータのプレフィックスを共通して有するインデックスキーの集合により形成されるプレフィックス区間とが一対一に対応し、プレフィックスデータのプレフィックスの長さとプレフィックス区間の大きさとが負の相関を持つ特性を有する。【００１２】
第２の側面は、上記第１の側面と同様の特性を持つ空間充填曲線を用いる多次元範囲検索方法に関する。第２の側面に係る多次元範囲検索方法は、複数の属性からなるデータセットがマッピングされる多次元空間の一次元化に用いられる空間充填曲線上の任意の点を表す対象インデックスキーを取得し、対象インデックスキーのビット列に基づいて、空間充填曲線上の未探索区間に含まれるインデックスキーのビット列を表し得るプレフィックスデータを抽出し、抽出されたプレフィックスデータのプレフィックスを共通して有するインデックスキーの集合により形成される空間充填曲線上のプレフィックス区間と、多次元範囲検索の問い合わせ区間との重複を判定し、問い合わせ区間と重複すると判定された、空間充填曲線上で対象インデックスキーに最も近いプレフィックス区間と、問い合わせ区間との重複区間の最小点又は最大点を表すインデックスキーを検索点として特定し、検索点として特定されたインデックスキーに対応するページ情報をインデックス格納部から検索する、ことを含む。【００１３】
なお、本発明の他の側面としては、上記第２の側面の方法を少なくとも１つのコンピュータに実行させるプログラムであってもよいし、このようなプログラムを記録したコンピュータが読み取り可能な記録媒体であってもよい。この記録媒体は、非一時的な有形の媒体を含む。
【発明の効果】
【００１４】
上記各側面によれば、多次元範囲検索時のヒットページの検出を高速化する技術を提供することができる。
【図面の簡単な説明】
【００１５】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。【００１６】
【図１】本発明の実施形態における多次元範囲検索装置（検索装置）のハードウェア構成例を概念的に示す図である。
【図２】第１実施形態における多次元範囲検索装置（検索装置）の処理構成例を概念的に示す図である。
【図３】上述の実施形態における多次元範囲検索装置（検索装置）の動作例を示すフローチャートである。
【図４】実施例で利用される空間充填曲線及びプレフィックス区間を示す図である。
【図５】本実施例で用いられる空間充填曲線及インデックスキーを示す図である。
【図６】本実施例における対象インデックスキーからの検索点の特定を概念的に示す図である。
【図７】データセットにマッピングされる２次元空間の空間分割の例を示す図である。
【図８】図７の例から生成されるインデックスを示す図である。
【図９】図７の例における検索範囲の例を示す図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態について説明する。なお、以下に挙げる実施形態は例示であり、本発明は以下の実施形態の構成に限定されない。
【００１８】
以下に挙げる本発明の実施の形態における多次元範囲検索装置は、多次元範囲検索のクエリを取得し、このクエリの問い合わせ区間（検索空間）をカバーするデータページ（ヒットページ）の情報を抽出する。ここで、多次元範囲検索とは、複数の属性が条件に指定された範囲検索であり、指定される属性の数は複数であれば特に制限されない。多次元範囲検索装置により抽出されるページ情報によれば、問い合わせ区間に含まれるデータが格納される場所が特定可能となる。
【００１９】
〔装置構成〕
図１は、本発明の実施形態における多次元範囲検索装置（以降、単に検索装置と表記する）１０のハードウェア構成例を概念的に示す図である。本実施形態における検索装置１０は、いわゆるコンピュータであり、例えば、バス５で相互に接続される、ＣＰＵ（Central Processing Unit）２、メモリ３、入出力インタフェース（Ｉ／Ｆ）４等を有する。メモリ３は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ハードディスク等である。
【００２０】
入出力Ｉ／Ｆ４は、ネットワーク（図示せず）を介して他のコンピュータと通信を行う通信装置、可搬型記録媒体に対するアクセスを制御する装置、キーボード、マウス等のようなユーザ操作の入力を受け付ける入力装置、ディスプレイ装置やプリンタ等のようなユーザに情報を提供する出力装置等と接続可能である。但し、検索装置１０のハードウェア構成は制限されない。
【００２１】
〔処理構成〕
図２は、第１実施形態における検索装置１０の処理構成例を概念的に示す図である。第１実施形態における検索装置１０は、取得部１１、抽出部１２、判定部１３、特定部１４、検索部１５、インデックス格納部１６等を有する。これら各処理部は、例えば、ＣＰＵ２によりメモリ３に格納されるプログラムが実行されることにより実現される。また、当該プログラムは、例えば、ＣＤ（Compact Disc）、メモリカード等のような可搬型記録媒体やネットワーク上の他のコンピュータから入出力Ｉ／Ｆ４を介してインストールされ、メモリ３に格納されてもよい。
【００２２】
インデックス格納部１６は、インデックスデータ及びページ情報をそれぞれ含む複数のエントリを格納する。検索装置１０で検索対象とされる、複数の属性からなるデータセットは、空間ベースの空間分割法により、各部分空間に含まれるデータ数が閾値以下となるまで空間的に分割され、分割されたデータセットが各部分空間と関連付けられたデータページへ分散配置されている。一方、当該データセットがマッピングされる多次元空間の各データ点は、当該多次元空間が空間充填曲線で一元化されることで生成される各多次元インデックスキー（以降、単に、インデックスキーと表記する）により索引付けされている。
【００２３】
インデックス格納部１６に格納されるインデックスデータは、上記多次元空間の或る部分空間の位置及び範囲を特定し得るデータ形式を持ち、対応する部分空間に含まれるインデックスキーの最長共通プレフィックスとワイルドカード文字との組み合わせで形成される。なお、対応する部分空間に含まれるインデックスキーが１つの場合、その部分空間を示すインデックスデータは、そのインデックスキーそのものとなる。インデックス格納部１６に格納されるページ情報は、同じエントリに含まれるインデックスデータにより示される部分空間と関連付けられたデータページの所在位置を示す。データページ自体は、検索装置１０に保持されてもよいし、他の装置に保持されていてもよい。
【００２４】
インデックス格納部１６に格納されるエントリは、インデックスデータの名前順にソートされている。即ち、インデックス格納部１６では、ページ情報は、インデックスデータの名前順にソートされている。また、インデックス格納部１６は、Ｂツリーのような周知の木構造で各エントリを格納してもよい。図２の例では、検索装置１０がインデックス格納部１６を持つが、インデックス格納部１６は他の装置上で実現されてもよい。
【００２５】
本実施形態において、上記多次元空間の一次元化に用いられる空間充填曲線には、Ｚ曲線、ヒルベルト曲線等のような周知の固定化されたものが利用されてもよいし、より汎用化されたものが利用されてもよい。汎用化された空間充填曲線は、例えば、各属性のビット列の並び順を変えず、各属性のビット列同士を任意の順序で混合することで、多次元空間を一次元化する。本実施形態で用いられる空間充填曲線は、プレフィックスデータと、そのプレフィックスデータのプレフィックスを共通して有するインデックスキーの集合により形成されるプレフィックス区間とが一対一に対応し、プレフィックスデータのプレフィックスの長さとプレフィックス区間の大きさとが負の相関を持つ特性を有するものであればよい。プレフィックスデータの説明は後述する。
【００２６】
取得部１１は、上記多次元空間の一次元化に用いられる上記空間充填曲線上の任意の点を表す対象インデックスキーを取得する。この任意の点は、例えば、当該空間充填曲線上の探索済みの区間の最終点（最小点又は最大点）に設定され得る。取得部１１は、対象インデックスキーを、可搬型記録媒体、他のコンピュータ等から入出力Ｉ／Ｆ４を経由して取得してもよいし、入力画面等に基づいて入力部をユーザが操作することにより入力された情報として取得してもよい。対象インデックスキーの取得方法は制限されない。
【００２７】
抽出部１２は、取得部１１により取得された対象インデックスキーのビット列に基づいて、当該空間充填曲線上の未探索区間に含まれるインデックスキーのビット列を表し得るプレフィックスデータを抽出する。ここで、未探索区間とは、対象インデックスキーの走査の次に、空間充填曲線に沿って走査すべきインデックスキーから形成される空間充填曲線上の区間を意味する。
【００２８】
プレフィックスデータとは、固定ビット長のビット列であり、プレフィックスのみから形成されるビット列、又は、プレフィックスと少なくとも１つのワイルドカード文字とから形成されるビット列である。ここでは、１つのワイルドカード文字も１ビットデータとして扱われる。上記未探索区間に「０１１００１」から「１１１１１１」までのインデックスキーが含まれる場合、例えば、抽出部１２は、「０１１００１」、「０１１０１＊」、「０１１１＊＊」、「１＊＊＊＊＊」をプレフィックスデータとして抽出する。この例では、ワイルドカード文字には「＊」が利用されている。但し、ワイルドカード文字は制限されない。これらプレフィックスデータは、未探索区間に含まれる全てのインデックスキー（「０１１００１」から「１１１１１１」まで）を表し得る。
【００２９】
このように、抽出部１２により抽出されるプレフィックスデータは、データセットがマッピングされた多次元空間内における、少なくとも１つのインデックスキーを示す１つの部分空間に対応する。そして、本実施形態では、このプレフィックスデータが、そのプレフィックスデータのプレフィックスを共通して有するインデックスキーの集合により形成されるプレフィックス区間（部分空間）と一対一に対応し、プレフィックスデータのプレフィックスの長さとプレフィックス区間の大きさとが負の相関を持つような、空間充填曲線が利用される。ここで、プレフィックスデータのプレフィックスの長さとプレフィックス区間の大きさとが負の相関とは、プレフィックスの長さが長くなる程、そのプレフィックスデータに対応するプレフィックス区間が小さくなり、プレフィックスの長さが短くなる程、そのプレフィックスデータに対応するプレフィックス区間が大きくなる関係を意味する。
【００３０】
抽出部１２は、例えば、次のようにして、対象インデックスキーのビット列から、プレフィックスデータを抽出することができる。抽出部１２は、データセットの属性の数に依存しない所定ビット長で取り得る各ビットパターンについて、ビット反転及びワイルドカード文字への置換の少なくとも一方を含む置換ルールをそれぞれ持ち、対象インデックスキーのビット列を当該所定ビット長で区切ることで得られる部分ビット列のビットパターンに対応する置換ルールを用いて、プレフィックスデータを抽出する。
【００３１】
抽出部１２が持つ置換ルールは、本実施形態で利用される空間充填曲線及び所定ビット長に適応するように設定される。ここで、所定ビット長は、１ビット以上であれば、特に制限されない。例えば、所定ビット長を、コンピュータで効率的に処理できる長さ（例えば、６４ビットや１２８ビット等）に設定することもできる。このようにすれば、置換ルールの適用処理を効率化することができ、結果として、プレフィックスデータの抽出処理を一層高速化することができる。
【００３２】
判定部１３は、抽出部１２により抽出されたプレフィックスデータのプレフィックスを共通して有するインデックスキーの集合により形成される空間充填曲線上のプレフィックス区間と、多次元範囲検索の問い合わせ区間との重複を判定する。ここで、プレフィックスデータによれば、プレフィックス区間の最大値及び最小値を簡単に取得することができる。ワイルドカード文字を全て１に置換すれば、プレフィックス区間の最大値が取得され、ワイルドカード文字を全て０に置換すれば、プレフィックス区間の最小値が取得され得る。判定部１３は、例えば、プレフィックス区間の最大値及び最小値と、問い合わせ区間の最大値及び最小値とを比較することにより、容易に、両区間が重複するか否かを判定することができる。ここで、プレフィックス区間と問い合わせ区間との重複とは、両区間の少なくとも一部の重複を意味する。
【００３３】
特定部１４は、判定部１３により問い合わせ区間と重複すると判定された、空間充填曲線上で対象インデックスキーに最も近いプレフィックス区間と、問い合わせ区間との重複区間の最小点又は最大点を表すインデックスキーを検索点として特定する。特定部１４により特定された検索点は、多次元範囲検索の問い合わせ区間内に含まれる、取得部１１で取得された対象インデックスキーの次に走査されるべきインデックスキーを表す。
【００３４】
特定部１４は、例えば、上記検索点を次のように特定することができる。上記重複区間の最小点を表すインデックスキーを検索点として特定する場合、特定部１４は、プレフィックス区間の最小点を表すインデックスキーを形成する各属性（各次元）のビット列と、問い合わせ区間の最小点を表すインデックスキーを形成する各属性のビット列とを属性毎に比較し、各属性の大きいほうのビット列から、上記重複区間の最小点を表すインデックスキーを特定する。また、上記重複区間の最大点を表すインデックスキーを検索点として特定する場合、特定部１４は、プレフィックス区間の最大点を表すインデックスキーを形成する各属性（各次元）のビット列と、問い合わせ区間の最大点を表すインデックスキーを形成する各属性のビット列とを属性毎に比較し、各属性の小さいほうのビット列から、重複区間の最大点を表すインデックスキーを特定する。このように、プレフィックスデータを用いることで、プレフィックス区間の最小値又は最大値を容易に抽出することができ、ひいては、プレフィックス区間と問い合わせ区間との重複区間の最小点又は最大点も容易に特定することができる。特定部１４は、他の方法で、上記検索点を特定することもできる。
【００３５】
検索部１５は、特定部１４により検索点として特定されたインデックスキーに対応するページ情報をインデックス格納部１６から検索する。具体的には、検索部１５は、検索点としてのインデックスキーを含むインデックスデータを含むエントリをインデックス格納部１６から特定し、この特定されたエントリに含まれるページ情報を抽出する。
【００３６】
〔動作例〕
以下、本発明の実施の形態における多次元範囲検索方法について図３を用いて説明する。図３は、上述の実施形態における検索装置１０の動作例を示すフローチャートである。以下の説明では、検索装置１０が各工程の実行主体となるが、検索装置１０に含まれる上述の各処理部や他の装置が実行主体となってもよい。
【００３７】
ここで、本実施形態における多次元範囲検索方法では、複数の属性からなるデータセットが、空間ベースの空間分割法により分割され、複数のデータページに分散配置されており、上述のインデックス格納部１６が存在することが前提となる。但し、インデックス格納部１６は、検索装置１０上に存在してもよいし、他の装置上に存在してもよい。
【００３８】
まず、検索装置１０は、複数の属性からなるデータセットがマッピングされる多次元空間の一次元化に用いられる空間充填曲線上の任意の点を表す対象インデックスキーを取得する（Ｓ３１）。
【００３９】
検索装置１０は、（Ｓ３１）で取得された対象インデックスキーのビット列に基づいて、当該空間充填曲線上の未探索区間に含まれるインデックスキーのビット列を表し得るプレフィックスデータを抽出する（Ｓ３２）。未探索区間及びプレフィックスデータは、上述のとおりである。また、プレフィックスデータの抽出方法は、抽出部１２の処理として上述した手法で実現され得る。
【００４０】
続いて、検索装置１０は、（Ｓ３２）で抽出されたプレフィックスデータのプレフィックスを共通して有するインデックスキーの集合により形成される空間充填曲線上のプレフィックス区間と、多次元範囲検索の問い合わせ区間との重複を判定する（Ｓ３３）。
【００４１】
検索装置１０は、（Ｓ３３）において問い合わせ区間と重複すると判定されたプレフィックス区間であって、空間充填曲線上で対象インデックスキーに最も近いプレフィックス区間と、問い合わせ区間との重複区間の最小点又は最大点を表すインデックスキーを検索点として特定する（Ｓ３４）。この検索点の特定は、特定部１４の処理として上述した手法で実現され得る。
【００４２】
検索装置１０は、（Ｓ３４）で検索点として特定されたインデックスキーに対応するページ情報をインデックス格納部１６から検索する（Ｓ３５）。（Ｓ３４）で検索点として特定されたインデックスキーは、（Ｓ３１）で取得された対象インデックスキーの次に、問い合わせ区間で走査されるべきインデックスキーであり、（Ｓ３４）で抽出されるページ情報は、問い合わせ区間で次にヒットするページを示す。
【００４３】
〔本実施形態の作用及び効果〕
上述したように本実施形態では、空間充填曲線上の任意の点を表す対象インデックスキーのビット列に基づいて、その空間充填曲線上の未探索区間を表すプレフィックスデータが抽出され、プレフィックスデータにより表わされるプレフィックス区間と多次元範囲検索の問い合わせ区間との重複が判定される。そして、空間充填曲線上で対象インデックスキーに最も近いプレフィックス区間と問い合わせ区間との重複区間の最小点又は最大点を表すインデックスキーが検索点として特定され、その検索点を表すインデックスキーに対応するページ情報が検索される。
【００４４】
このように、本実施形態では、空間充填曲線上の任意の点から、その点に最も近い、問い合わせ区間内の検索点が特定され、その検索点に対応するページ情報が検索される。従って、本実施形態によれば、問い合わせ区間の最小点と最大点との間にある全ての部分空間について問い合わせ区間と重なっているか否かをチェックすることなく、検索点を特定することができるため、多次元範囲検索時のヒットページを高速に検出することができる。
【００４５】
また、本実施形態で用いられる空間充填曲線は、プレフィックスデータと、そのプレフィックスデータのプレフィックスを共通して有するインデックスキーの集合により形成されるプレフィックス区間とが一対一に対応し、プレフィックスデータのプレフィックスの長さとプレフィックス区間の大きさとが負の相関を持つ特性を有するものであれば、その空間充填曲線自体は制限されない。即ち、周知の固定ルール化された空間充填曲線が利用されてもよいし、各属性のビット列の並び順を変えず、各属性のビット列同士を任意の順序で混合することで、多次元空間を一次元化する空間充填曲線が利用されてもよい。
【００４６】
従って、本実施形態によれば、上述のような特性を持つ空間充填曲線を利用することができるのであれば、インデックス設計の制限、及び、データセットのページ分割手法の制限を大幅に緩和することができる。即ち、本実施形態によれば、適用可能なインデックス設計及びデータページ分割を拡大することができる。
【００４７】
［拡張例］
上述の実施形態において、次のようにすれば、問い合わせ区間と重複するプレフィックス区間であって、空間充填曲線上で対象インデックスキーに最も近いプレフィックス区間を更に効率的に取得することができる。
【００４８】
抽出部１２は、対象インデックスキーのビット列を下位から上位に向かって走査することにより、空間充填曲線上で対象インデックスキーに近い順に、プレフィックスデータを順次抽出する。判定部１３は、抽出部１２で抽出された順に、プレフィックスデータに対応するプレフィックス区間と問い合わせ区間との重複を判定する。このようにすれば、判定部１３により最初に問い合わせ区間と重複すると判定されたプレフィックス区間が、問い合わせ区間と重複するプレフィックス区間であって、空間充填曲線上で対象インデックスキーに最も近いプレフィックス区間となる。特定部１４は、判定部１３により最初に問い合わせ区間と重複すると判定されたプレフィックス区間と、問い合わせ区間との重複区間の最小点又は最大点を表すインデックスキーを検索点として特定すればよい。これにより、検索点の特定処理を高速化することができる。
【００４９】
上述のように、対象インデックスキーのビット列を下位から上位に向かって走査することにより、プレフィックス長の長いプレフィックスデータから順次抽出していくことができる。これは、未探索区間を、対象インデックスキーに近い狭いプレフィックス区間から広いプレフィックス区間に徐々に分割していくことに相当する。
【００５０】
以下に実施例を挙げ、上述の実施形態を更に詳細に説明する。本発明は以下の実施例から何ら限定を受けない。
【実施例】
【００５１】
本実施例ではＺ曲線を汎用化させた空間充填曲線が利用される。
図４は、実施例で利用される空間充填曲線及びプレフィックス区間を示す図である。本実施例では、図４に示されるように、属性ごとのビット列の混ぜ合わせ順序に自由度を持たせた空間充填曲線を用いる。この空間充填曲線で実現可能な１つの例として、Ｚ曲線が存在する。本実施例では、データセットが２次元空間にマッピングされ、その２次元空間がその空間充填曲線で一次元化される。具体的には、空間充填曲線は、３ビットの長さを持つ２つの属性のビット列「ｘ１，ｘ２，ｘ３」及び「ｙ１，ｙ２，ｙ３」を「ｙ１，ｘ１，ｙ２，ｙ３，ｘ２，ｘ３」のように混ぜ合わせる。図４に示される矢印は、空間充填曲線により二次元空間が埋め尽くされる様を表している。【００５２】
また、図４には、４つのプレフィックスデータと、各プレフィックスデータに対応するプレフィックス区間とが表されている。左上図では、プレフィックスデータ「０＊＊＊＊＊」に対応するプレフィックス区間がグレー背景（ハッチング）で示される。右上図では、プレフィックスデータ「００＊＊＊＊」に対応するプレフィックス区間がグレー背景（ハッチング）で示される。左下図では、プレフィックスデータ「０００＊＊＊」に対応するプレフィックス区間がグレー背景（ハッチング）で示される。右下図では、プレフィックスデータ「００００＊＊」に対応するプレフィックス区間がグレー背景（ハッチング）で示される。このように、本実施例の空間充填曲線は、プレフィックスデータと、そのプレフィックスデータにより示されるプレフィックス区間とが一対一に対応する。更に、プレフィックスデータのプレフィックスの長さ（０の数）とプレフィックス区間の大きさとが負の相関を示すことが分かる。即ち、プレフィックスの長さが長い程、プレフィックス区間が小さくなり、プレフィックスの長さが短い程、プレフィックス区間が大きくなっている。【００５３】
本実施例では、プレフィックスデータを形成するワイルドカード文字として「＊」が利用される。これにより、「＊」を０で置き換えたビット列が、そのプレフィックスデータに対応するプレフィックス区間の最小値を示し、「＊」を１で置き換えたビット列が、そのプレフィックスデータに対応するプレフィックス区間の最大値を示す。以降の説明では、ビット列Ｐの最上位ビットからｉ番目のビットをＰ［ｉ］と表記する場合もある。【００５４】
本実施例における検索装置１０は、空間充填曲線上で任意の点Ｐ（対象インデックスキー）より大きく、かつ、問い合わせ区間に含まれる最小点（検索点）を次のように特定する。【００５５】
本実施例における検索装置１０は、点Ｐのビット列Ｐを最下位側（ｎ−１番目のビット）から最上位側（０番目のビット）の方向に順に走査する。検索装置１０は、ｉ番目のビットを参照している場合、Ｐ［ｉ］が１のときには、何もせず、Ｐ［ｉ］が０のときに、Ｐ［ｉ］を１に置換し、かつ、ｉより下位の各ビットを「＊」にそれぞれ置換する。検索装置１０は、このような置換ルールに基づいて、空間充填曲線上で点Ｐに近い順に、点Ｐよりも大きい少なくとも１つの点を含むプレフィックスデータを順次抽出する。【００５６】
検索装置１０は、抽出されたプレフィックスデータに対応するプレフィックス区間Ｐと問い合わせ区間Ｑとの重複区間（交差区間）の最小点を求める。検索装置１０は、プレフィックス区間Ｐと問い合わせ区間Ｑとが重複する場合、その重複区間の最小点を検索点として特定する。検索装置１０は、区間Ｐの最小点と区間Ｑの最小点とに関し、属性毎（次元毎）にビット列を比較し、大きい方のビット列から、重複区間の最小点を求めることができる。検索装置１０は、この重複区間の最小点が区間Ｑの範囲内か否かを判定することで、両区間の重複を判定することができる。検索装置１０は、両区間が重複しない場合、ビット列Ｐのｉ−１番目のビットの処理に移る。【００５７】
上記置換ルールは、空間充填曲線上で点Ｐに近い順に、点Ｐよりも大きい少なくとも１つの点を含むプレフィックスデータを抽出するためのルールである。検索装置１０は、この逆の置換ルール、即ち、空間充填曲線上で点Ｐに近い順に、点Ｐよりも小さい少なくとも１つの点を含むプレフィックスデータを抽出するためのルールを用いてもよい。この置換ルールによれば、検索装置１０は、ｉ番目のビットを参照している場合、Ｐ［ｉ］が０のときには、何もせず、Ｐ［ｉ］が１のときに、Ｐ［ｉ］を０に置換し、かつ、ｉより下位の各ビットを「＊」にそれぞれ置換する。【００５８】
このように、本実施例における検索装置１０（抽出部１２）は、次のような置換ルールを持つことができる。即ち、検索装置１０（抽出部１２）は、対象インデックスキーのビット列の参照ビットが０の場合に、その参照ビットを１に変え、かつ、その参照ビットより下位のビットをワイルドカード文字に変える第１の置換ルール、及び、参照ビットが１の場合に、参照ビットを０に変え、かつ、参照ビットより下位のビットをワイルドカード文字に変える第２の置換ルールの少なくとも一方を持つ。第１の置換ルールによれば、対象インデックスキーよりも大きいインデックスキーの集合から形成されるプレフィックス区間のプレフィックスデータが抽出され、第２の置換ルールによれば、対象インデックスキーよりも小さいインデックスキーの集合から形成されるプレフィックス区間のプレフィックスデータが抽出される。【００５９】
また、上記置換ルールは、１ビットずつのビット走査のルールであるが、コンピュータでの処理を効率化するために、ｋビットずつのビット走査のルールとすることもできる。この場合、置換ルールは、ｋビットで取り得る全てのビットパターンの各々に対して、上述の置換ルールと同じ結果となるような、ビット反転及びワイルドカード文字への置換の少なくとも一方をそれぞれ含むように設定されればよい。例えば、２ビットずつのビット走査を行う場合には、参照ビット列の全ビットパターン「００」、「０１」、「１０」及び「１１」についての置換ルールがそれぞれ設定される。具体的には、参照ビット列が「００」であれば、その参照ビット列を「０１」に置換し、かつ、その参照ビット列よりも下位の各ビットを「＊」に置換するパターンと、その参照ビット列を「１＊」に置換し、かつ、その参照ビット列よりも下位の各ビットを「＊」に置換するパターンとが実行される。参照ビット列が「０１」であれば、その参照ビット列を「１＊」に置換し、かつ、その参照ビット列よりも下位の各ビットを「＊」に置換するパターンが実行される。参照ビット列が「１０」であれば、その参照ビット列を「１１」に置換し、かつ、その参照ビット列よりも下位の各ビットを「＊」に置換するパターンが実行される。参照ビット列が「１１」であれば、置換がなされない。【００６０】
以下、本実施例を図５及び図６を用いて更に詳細に説明する。
図５は、本実施例で用いられる空間充填曲線及インデックスキーを示す図である。
図６は、本実施例における対象インデックスキーからの検索点の特定を概念的に示す図である。図６では、問い合わせ区間Ｑ、探索済み区間、未探索区間、対象インデックスキー及び検索点が示されている。探索済み区間は、グレー背景（ハッチング）で示されており、未探索区間は、太い破線で示されている。【００６１】
ここでは、探索済み区間の最大点が対象インデックスキーに設定される例が示される。即ち、この例では、対象インデックスキー「０１１０１１」で示される点までが探索済みであり、この点をＰと表記する。本実施例は、未探索区間で、かつ、問い合わせ区間Ｑ内の最小となる点「１０００１０」を検索点として特定する。この検索点が示すインデックスキーに対応するデータページが次に処理すべきヒットページとなる。【００６２】
検索装置１０は、点Ｐを示す対象インデックスキー「０１１０１１」を取得し、この点Ｐのビット列を下位から上位に向かって走査することにより、空間充填曲線上で点Ｐに近い順に、プレフィックスデータを抽出する。検索装置１０は、１ビットずつ走査する置換ルールに基づいて、下位２ビットはいずれも１なので何もせず、下位３ビット目が０なので、下位３ビット目の０を１に置換し、それより下位の各ビットを「＊」に置換する。これにより、検索装置１０は、プレフィックスデータ「０１１１＊＊」を抽出する。【００６３】
検索装置１０は、プレフィックスデータ「０１１１＊＊」により示されるプレフィックス区間と問い合わせ区間Ｑとの重複を判定する。このプレフィックス区間は問い合わせ区間Ｑと重ならないので、検索装置１０は、次に近いプレフィックス区間に対応するプレフィックスデータの抽出を試みる。検索装置１０は、点Ｐのビット列の下位４ビット目及び下位５ビット目を順次参照し、共に１であるため何もせず、下位６ビット目（最上位ビット）を参照する。検索装置１０は、下位６ビット目は０なので、それを０から１に置換し、それ以降の各ビットを「＊」に置換する。これにより、検索装置１０は、プレフィックスデータ「１＊＊＊＊＊」を抽出する。【００６４】
プレフィックスデータ「１＊＊＊＊＊」により示されるプレフィックス区間と問い合わせ区間とは重なるため、検索装置１０は、両区間の重複区間の最小点を検索点として特定する。このとき、検索装置１０は、プレフィックス区間の最小点「１０００００」と問い合わせ区間Ｑの最小点「００００１１」とに関し、属性毎にビット列を比較する。プレフィックス区間の最小点「１０００００」は、属性ｘのビット列「０００」及び属性ｙのビット列「１００」から形成される。問い合わせ区間Ｑの最小点「００００１１」は、属性ｘのビット列「００１」及び属性ｙのビット列「００１」から形成される。属性ｘについては、問い合わせ区間のビット列「００１」が選択され、属性ｙについては、プレフィックス区間のビット列「１００」が選択される。検索装置１０は、選択された各ビット列から、重複区間の最小点「１０００１０」を特定する。【００６５】
検索装置１０は、特定された検索点「１０００１０」を含むインデックスデータに対応するページ情報をインデックス格納部１６から抽出し、このページ情報で特定されるデータページによりカバーされる区間の終了点までを探索済み区間とする。検索装置１０は、このような処理を問い合わせ区間全体が探索済みとなるまで繰り返し実行する。【００６６】
上記例では、問い合わせ区間Ｑの最小点から最大点に向かって探索されたが、逆方向に探索されてもよい。例えば、図６において、プレフィックスデータ「１＊＊＊＊＊」のプレフィックス区間が探索済みであり、探索済み区間の最小点が「１０００００」であると仮定する。この例では、検索装置１０は、次のように、未探索区間で、かつ、問い合わせ区間Ｑ内の最大となる点「０１０１１１」を検索点として特定する。この例では、検索装置１０は、点Ｐ（対象インデックスキー）「１０００００」を取得し、このビット列を下位から上位に向かって走査することにより、空間充填曲線上で点Ｐに近い順に、プレフィックスデータを抽出する。検索装置１０は、１ビットずつ走査する置換ルールに基づいて、下位５ビットはいずれも０なので何もせず、下位６ビット目が１なので、そのビット１を０に置換し、それより下位の各ビットを「＊」に置換する。これにより、検索装置１０は、プレフィックスデータ「０＊＊＊＊＊」を抽出する。【００６７】
検索装置１０は、プレフィックスデータ「０＊＊＊＊＊」により示されるプレフィックス区間と問い合わせ区間Ｑとが重なるため、両区間の重複区間の最大点を検索点として特定する。このとき、検索装置１０は、プレフィックス区間の最大点「０１１１１１」と問い合わせ区間Ｑの最大点「１１００１０」とに関し、属性毎にビット列を比較する。プレフィックス区間の最大点「０１１１１１」は、属性ｘのビット列「１１１」及び属性ｙのビット列「０１１」から形成される。問い合わせ区間Ｑの最大点「１１００１０」は、属性ｘのビット列「１０１」及び属性ｙのビット列「１００」から形成される。属性ｘについては、問い合わせ区間のビット列「１０１」が選択され、属性ｙについては、プレフィックス区間のビット列「０１１」が選択される。検索装置１０は、選択された各ビット列から、重複区間の最大点「０１０１１１」を特定する。【００６８】
上記例は、１ビットずつ走査する置換ルールが用いられたが、複数ビットずつ走査する置換ルールが用いられたとしても、上記例と同じプレフィックスデータを抽出することは可能である。
このように、本実施例によれば、クエリの問い合わせ区間内の検索点を、探索済み区間の境界点が表すビット列に対する簡単なビット演算により、効率的に検出することができ、ひいては、ヒットページを高速に検出することができる。【００６９】
なお、上述の説明で用いたフローチャートでは、複数の工程（処理）が順番に記載されているが、本実施形態で実行される工程の実行順序は、その記載の順番に制限されない。本実施形態では、図示される工程の順番を内容的に支障のない範囲で変更することができる。【００７０】
この出願は、２０１３年７月１２日に出願された日本出願特願２０１３−１４６６５４号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2015005017.tif 000003
【図２】
2015005017.tif 000004
【図３】
2015005017.tif 000005
【図４】
2015005017.tif 000006
【図５】
2015005017.tif 000007
【図６】
2015005017.tif 000008
【図７】
2015005017.tif 000009
【図８】
2015005017.tif 000010
【図９】
2015005017.tif 000011
【国際調査報告】
2015005017.tif 000012
2015005017.tif 000013
2015005017.tif 000014
2015005017.tif 000015