(57)【要約】インデックス走査装置は、クエリの検索範囲に対応する多次元空間内の検索空間の情報又はその検索空間内の部分検索空間の情報を取得し、検索空間又は部分検索空間に含まれるデータ点のうち、多次元空間の各データ点を一次元化することにより得られる値が最小及び最大の少なくとも一方となるデータ点を検索点として設定し、インデックス格納部において検索点を含む部分空間のインデックスデータを特定し、特定されたインデックスデータから得られる部分空間の特定情報に基づいて検索空間又は部分検索空間を通る境界線を推定し、この推定された境界線により検索空間又は部分検索空間を分割することにより得られる分割検索空間のうち、当該検索点を含む部分空間以外の分割検索空間を部分検索空間として決定する。
2013105505.tif 000002
【特許請求の範囲】
【請求項１】
複数の部分空間に分割された多次元空間にマッピングされたデータベースにおける、該複数の部分空間の各々を特定するための各インデックスデータを、各部分空間に属するデータが格納されるデータページを特定するための各ページ特定データと関連付けて格納するインデックス格納部と、
クエリの検索範囲に対応する前記多次元空間内の検索空間の情報、又は、該検索空間内の部分検索空間の情報を取得する検索空間取得部と、
前記検索空間又は前記部分検索空間に含まれるデータ点のうち、前記多次元空間の各データ点を一次元化することにより得られる値が最小及び最大の少なくとも一方となるデータ点を検索点として設定する検索点設定部と、
前記インデックス格納部において、前記検索点設定部により設定された前記検索点を含む部分空間のインデックスデータを特定し、該特定されたインデックスデータと関連付けられたページ特定データを前記検索空間の少なくとも一部と重なる部分空間のページ特定データとして抽出するインデックス検索部と、
前記インデックス検索部により特定されたインデックスデータから得られる部分空間の特定情報に基づいて、前記検索空間又は前記部分検索空間を通る、前記多次元空間を前記複数の部分空間に分割する境界線を推定し、該推定された境界線により前記検索空間又は前記部分検索空間を分割することにより得られる分割検索空間のうち、前記検索点を含む部分空間以外の分割検索空間を前記部分検索空間として決定する検索領域決定部と、
を備えるインデックス走査装置。
【請求項２】
前記各インデックスデータは、各部分空間の位置及び範囲を特定し得るデータ形式を有する請求項１に記載のインデックス走査装置。
【請求項３】
前記多次元空間の空間分割には、ＫＤ（Ｋ−ｄｉｍｅｎｔｉｏｎａｌ）−Ｔｒｅｅが利用され、
前記多次元空間の一次元化には、空間充填曲線が用いられ、
前記多次元空間の各データ点を一次元化することにより得られる値は、２進数表記され、
前記インデックス格納部は、各部分空間に含まれるデータ点の最長共通プレフィックスを各インデックスデータとし、
前記検索領域決定部は、各軸の各データ点のうち、最下位桁から上位桁方向に向けて初めて０が現れる桁位置までの全桁に１が設定されている値で示されるデータ点と、該値に１を加算して得られる値で示されるデータ点との間を前記境界線として推定する、
請求項１又は２に記載のインデックス走査装置。
【請求項４】
複数の部分空間に分割された多次元空間にマッピングされたデータベースにおける、該複数の部分空間の各々を特定するための各インデックスデータを、各部分空間に属するデータが格納されるデータページを特定するための各ページ特定データと関連付けて格納するインデックス格納部を走査するインデックス走査方法において、
クエリの検索範囲に対応する前記多次元空間内の検索空間の情報、又は、該検索空間内の部分検索空間の情報を取得し、
前記検索空間又は前記部分検索空間に含まれるデータ点のうち、前記多次元空間の各データ点を一次元化することにより得られる値が最小及び最大の少なくとも一方となるデータ点を検索点として設定し、
前記インデックス格納部において、前記検索点設定部により設定された前記検索点を含む部分空間のインデックスデータを特定し、
前記特定されたインデックスデータと関連付けられたページ特定データを前記検索空間の少なくとも一部と重なる部分空間のページ特定データとして抽出し、
前記特定されたインデックスデータから得られる部分空間の特定情報に基づいて、前記検索空間又は前記部分検索空間を通る、前記多次元空間を前記複数の部分空間に分割する境界線を推定し、
前記推定された境界線により前記検索空間又は前記部分検索空間を分割することにより得られる分割検索空間のうち、前記検索点を含む部分空間以外の分割検索空間を前記部分検索空間として決定する、
ことを含むインデックス走査方法。
【請求項５】
前記各インデックスデータは、各部分空間の位置及び範囲を特定し得るデータ形式を有する請求項４に記載のインデックス走査方法。
【請求項６】
前記多次元空間の空間分割には、ＫＤ（Ｋ−ｄｉｍｅｎｔｉｏｎａｌ）−Ｔｒｅｅが利用され、
前記多次元空間の一次元化には、空間充填曲線が用いられ、
前記多次元空間の各データ点を一次元化することにより得られる値は、２進数表記され、
前記インデックス格納部は、各部分空間に含まれるデータ点の最長共通プレフィックスを各インデックスデータとし、
前記境界線の推定は、各軸の各データ点のうち、最下位桁から上位桁方向に向けて初めて０が現れる桁位置までの全桁に１が設定されている値で示されるデータ点と、該値に１を加算して得られる値で示されるデータ点との間を前記境界線として推定する、
請求項４又は５に記載のインデックス走査方法。
【請求項７】
コンピュータに、
複数の部分空間に分割された多次元空間にマッピングされたデータベースにおける、該複数の部分空間の各々を特定するための各インデックスデータを、各部分空間に属するデータが格納されるデータページを特定するための各ページ特定データと関連付けて格納するインデックス格納部と、
クエリの検索範囲に対応する前記多次元空間内の検索空間の情報、又は、該検索空間内の部分検索空間の情報を取得する検索空間取得部と、
前記検索空間又は前記部分検索空間に含まれるデータ点のうち、前記多次元空間の各データ点を一次元化することにより得られる値が最小及び最大の少なくとも一方となるデータ点を検索点として設定する検索点設定部と、
前記インデックス格納部において、前記検索点設定部により設定された前記検索点を含む部分空間のインデックスデータを特定し、該特定されたインデックスデータと関連付けられたページ特定データを前記検索空間の少なくとも一部と重なる部分空間のページ特定データとして抽出するインデックス検索部と、
前記インデックス検索部により特定されたインデックスデータから得られる部分空間の特定情報に基づいて、前記検索空間又は前記部分検索空間を通る、前記多次元空間を前記複数の部分空間に分割する境界線を推定し、該推定された境界線により前記検索空間又は前記部分検索空間を分割することにより得られる分割検索空間のうち、前記検索点を含む部分空間以外の分割検索空間を前記部分検索空間として決定する検索領域決定部と、
を実現させるプログラム。
【請求項８】
前記各インデックスデータは、各部分空間の位置及び範囲を特定し得るデータ形式を有する請求項７に記載のプログラム。
【請求項９】
前記多次元空間の空間分割には、ＫＤ（Ｋ−ｄｉｍｅｎｔｉｏｎａｌ）−Ｔｒｅｅが利用され、
前記多次元空間の一次元化には、空間充填曲線が用いられ、
前記多次元空間の各データ点を一次元化することにより得られる値は、２進数表記され、
前記インデックス格納部は、各部分空間に含まれるデータ点の最長共通プレフィックスを各インデックスデータとし、
前記検索領域決定部は、各軸の各データ点のうち、最下位桁から上位桁方向に向けて初めて０が現れる桁位置までの全桁に１が設定されている値で示されるデータ点と、該値に１を加算して得られる値で示されるデータ点との間を前記境界線として推定する、
請求項７又は８に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の部分空間に分割された多次元空間にマッピングされたデータベースに対する多次元範囲検索におけるインデックス走査技術に関する。
【背景技術】
【０００２】
データ数の増加に伴い、拡張性のある分散型データベースが提案されている。これら分散型データベースの多くは、一次元のみの範囲検索のような単純な問い合わせ処理のみをサポートすることで拡張性を実現している。一方で、多次元値を一次元値にマップすることで、複数次元の範囲検索を可能としている分散型データベースも提案されている（下記非特許文献１）。【０００３】
下記非特許文献１で提案される多次元範囲検索手法では、まず、データベースがマッピングされている多次元空間内の検索対象範囲（検索空間）を一次元化することで得られるデータ点の中から、最大値を示すデータ点（最大データ点と表記する）及び最小値を示すデータ点（最小データ点と表記する）が取得される。続いて、当該手法は、その多次元空間内の各部分空間を特定するための各インデックスデータが当該データ点の示す値の順にソートされてなるインデックス列を、最小データ点から最大データ点までの範囲で走査する。このとき、その走査範囲内にある各インデックスで特定される各部分空間について、検索空間と少なくとも一部が重なっているか否かがそれぞれチェックされ、重なっている部分空間に対応付けられたデータページが検索対象に決定される。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Shoji Nishimura, SudiptoDas, Divyakant Agrawal, Amr El Abbadi, "MD-HBase: A Scalable Multi-Dimensional Data Infrastructure forLocation Aware Services", IEEE computer society, 2011.6.6.
【発明の概要】
【０００５】
しかしながら、上述の手法では、インデックス走査が非効率になる場合がある。つまり、検索空間が多次元空間全体に比べて小さいにもかかわらず、インデックスの走査範囲（最小データ点から最大データ点までの間）に多くの部分空間が含まれる場合があり得る。最悪ケースとして、インデックス走査範囲に、各インデックスで特定される全部分空間が含まれる場合もあり得る。このような場合、全部分空間について検索空間と重なっているか否かをチェックすることになり、インデックス走査で検索空間と重なる部分空間を抽出するのに多くの時間が費やされてしまう。
【０００６】
このような問題は、多次元空間を一次元化するときに生じるひずみに起因する。例えば、検索範囲として、複数の属性の中の一部の属性値が指定されず、或る属性の全値域が指定される場合、指定した属性の範囲が十分狭いにもかかわらず、全インデックスを走査することになる可能性がある。このような問題は、検索対象の次元数が多い場合や、検索時に指定する各次元の範囲の幅に差がある場合等に顕著となる。
【０００７】
本発明は、上述のような課題に鑑みてなされたものであり、多次元範囲検索におけるインデックス走査を高速化する技術を提供する。
【０００８】
本発明の各態様では、上述した課題を解決するために、それぞれ以下の構成を採用する。
【０００９】
第１の態様に係るインデックス走査装置は、複数の部分空間に分割された多次元空間にマッピングされたデータベースにおける、複数の部分空間の各々を特定するための各インデックスデータを、各部分空間に属するデータが格納されるデータページを特定するための各ページ特定データと関連付けて格納するインデックス格納部と、クエリの検索範囲に対応する上記多次元空間内の検索空間の情報、又は、その検索空間内の部分検索空間の情報を取得する検索空間取得部と、検索空間又は部分検索空間に含まれるデータ点のうち、多次元空間の各データ点を一次元化することにより得られる値が最小及び最大の少なくとも一方となるデータ点を検索点として設定する検索点設定部と、インデックス格納部において、検索点設定部により設定された検索点を含む部分空間のインデックスデータを特定し、この特定されたインデックスデータと関連付けられたページ特定データを検索空間の少なくとも一部と重なる部分空間のページ特定データとして抽出するインデックス検索部と、インデックス検索部により特定されたインデックスデータから得られる部分空間の特定情報に基づいて、検索空間又は部分検索空間を通る、上記多次元空間を上記複数の部分空間に分割する境界線を推定し、この推定された境界線により検索空間又は部分検索空間を分割することにより得られる分割検索空間のうち、当該検索点を含む部分空間以外の分割検索空間を部分検索空間として決定する検索領域決定部と、を備える。
【００１０】
第２の態様に係るインデックス走査方法は、複数の部分空間に分割された多次元空間にマッピングされたデータベースにおける、複数の部分空間の各々を特定するための各インデックスデータを、各部分空間に属するデータが格納されるデータページを特定するための各ページ特定データと関連付けて格納するインデックス格納部を走査する。第２の態様に係るインデックス走査方法は、クエリの検索範囲に対応する上記多次元空間内の検索空間の情報、又は、その検索空間内の部分検索空間の情報を取得し、検索空間又は部分検索空間に含まれるデータ点のうち、多次元空間の各データ点を一次元化することにより得られる値が最小及び最大の少なくとも一方となるデータ点を検索点として設定し、インデックス格納部において、検索点設定部により設定された検索点を含む部分空間のインデックスデータを特定し、この特定されたインデックスデータと関連付けられたページ特定データを検索空間の少なくとも一部と重なる部分空間のページ特定データとして抽出し、その特定されたインデックスデータから得られる部分空間の特定情報に基づいて、検索空間又は部分検索空間を通る、上記多次元空間を上記複数の部分空間に分割する境界線を推定し、この推定された境界線により検索空間又は部分検索空間を分割することにより得られる分割検索空間のうち、当該検索点を含む部分空間以外の分割検索空間を部分検索空間として決定することを含む。
【００１１】
なお、本発明の他の態様としては、上記第１態様の構成をコンピュータに実現させるプログラムであってもよいし、このようなプログラムを記録したコンピュータが読み取り可能な記録媒体であってもよい。この記録媒体は、非一時的な有形の媒体を含む。
【００１２】
本発明の各態様によれば、多次元範囲検索におけるインデックス走査を高速化する技術を提供することができる。
【図面の簡単な説明】
【００１３】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。【００１４】
【図１】図１は、第１実施形態におけるインデックス走査装置のハードウェア構成例を概念的に示す図である。
【図２】図２は、第１実施形態におけるインデックス走査装置の処理構成例を概念的に示す図である。
【図３】図３は、第１実施形態におけるインデックス走査装置の動作例を示すフローチャートである。
【図４】図４は、実施例におけるデータベースにマッピングされた２次元空間及び２次元検索範囲を概念的に示す図である。
【図５】図５は、実施例におけるインデックス格納部に格納されるエントリの例を示す図である。
【図６】図６は、最初に特定された部分空間（最小データ点を含む）とこの部分空間から推定される境界線を概念的に示す図である。
【図７】図７は、最初に特定された部分空間（最大データ点を含む）とこの部分空間から推定される境界線を概念的に示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について説明する。なお、以下に挙げる実施形態は例示であり、本発明は以下の実施形態の構成に限定されない。
【００１６】
本実施形態に係るインデックス走査装置は、複数の部分空間に分割された多次元空間にマッピングされたデータベースにおける、複数の部分空間の各々を特定するための各インデックスデータを、各部分空間に属するデータが格納されるデータページを特定するための各ページ特定データと関連付けて格納するインデックス格納部と、クエリの検索範囲に対応する上記多次元空間内の検索空間の情報、又は、その検索空間内の部分検索空間の情報を取得する検索空間取得部と、検索空間又は部分検索空間に含まれるデータ点のうち、多次元空間の各データ点を一次元化することにより得られる値が最小及び最大の少なくとも一方となるデータ点を検索点として設定する検索点設定部と、インデックス格納部において、検索点設定部により設定された検索点を含む部分空間のインデックスデータを特定し、この特定されたインデックスデータと関連付けられたページ特定データを検索空間の少なくとも一部と重なる部分空間のページ特定データとして抽出するインデックス検索部と、インデックス検索部により特定されたインデックスデータから得られる部分空間の特定情報に基づいて、検索空間又は部分検索空間を通る、上記多次元空間を上記複数の部分空間に分割する境界線を推定し、この推定された境界線により検索空間又は部分検索空間を分割することにより得られる分割検索空間のうち、当該検索点を含む部分空間以外の分割検索空間を部分検索空間として決定する検索領域決定部と、を備える。
【００１７】
本実施形態におけるインデックス走査方法は、複数の部分空間に分割された多次元空間にマッピングされたデータベースにおける、複数の部分空間の各々を特定するための各インデックスデータを、各部分空間に属するデータが格納されるデータページを特定するための各ページ特定データと関連付けて格納するインデックス格納部を走査する。当該インデックス走査方法は、クエリの検索範囲に対応する上記多次元空間内の検索空間の情報、又は、その検索空間内の部分検索空間の情報を取得し、検索空間又は部分検索空間に含まれるデータ点のうち、多次元空間の各データ点を一次元化することにより得られる値が最小及び最大の少なくとも一方となるデータ点を検索点として設定し、インデックス格納部において、検索点設定部により設定された検索点を含む部分空間のインデックスデータを特定し、この特定されたインデックスデータと関連付けられたページ特定データを検索空間の少なくとも一部と重なる部分空間のページ特定データとして抽出し、その特定されたインデックスデータから得られる部分空間の特定情報に基づいて、検索空間又は部分検索空間を通る、上記多次元空間を上記複数の部分空間に分割する境界線を推定し、この推定された境界線により検索空間又は部分検索空間を分割することにより得られる分割検索空間のうち、当該検索点を含む部分空間以外の分割検索空間を部分検索空間として決定することを含む。
【００１８】
本実施形態では、検索空間又は部分検索空間に含まれるデータ点の中から、一次元化された値が最大となるデータ点（以降、最大データ点と表記する）及び一次元化された値が最小となるデータ点（以降、最小データ点と表記する）の少なくとも一方が検索点として設定され、この検索点を含む部分空間のインデックスデータが特定され、この特定されたインデックスデータと関連付けられたページ特定データが抽出される。抽出されたページ特定データは、当該検索空間の少なくとも一部と重なる部分空間に属するデータが格納されるデータページを特定するものである。
【００１９】
更に、本実施形態では、上述のように特定されたインデックスデータから得られる部分空間の特定情報に基づいて、検索空間又は部分検索空間を通る境界線が推定され、この推定された境界線により検索空間又は部分検索空間を分割することにより得られる分割検索空間のうち、当該検索点を含む部分空間以外の分割検索空間が部分検索空間として決定される。これにより、ここで決定された部分検索空間を対象にして、上述のように、検索点の設定、インデックスデータの特定及びページ特定データの抽出が実行される。このような処理は、例えば、検索空間の少なくとも一部と重なる全ての部分空間のページ特定データが抽出されるまで、繰り返される。
【００２０】
このように、本実施形態では、検索空間と重なる１つの部分空間が見つかると、その部分空間の存在から、多次元空間全体がどのように空間分割されているか（境界線）が出来る範囲で推定され、推定された境界線により、その見つけられた１つの部分空間を除いた検索空間がより小さな検索空間の集合に分割され、インデックスデータの走査範囲がその小さな検索空間に置き換えられる。
【００２１】
結果、本実施形態によれば、クエリの検索範囲に対応する検索空間と少なくとも１部が重なる部分空間のみを対象にしてインデックス走査が行われるため、インデックス走査を高速化することができる。
【００２２】
［第１実施形態］
以下、上述の実施形態について更に詳細を説明する。
【００２３】
〔装置構成〕
図１は、第１実施形態におけるインデックス走査装置１０のハードウェア構成例を概念的に示す図である。第１実施形態におけるインデックス走査装置１０は、いわゆるコンピュータであり、例えば、バス５で相互に接続される、ＣＰＵ（Central Processing Unit）２、メモリ３、入出力インタフェース（Ｉ／Ｆ）４等を有する。メモリ３は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ハードディスク、可搬型記憶媒体等である。
【００２４】
入出力Ｉ／Ｆ４は、ネットワーク（図示せず）を介して他のコンピュータと通信を行う通信装置等と接続される。入出力Ｉ／Ｆ４は、キーボード、マウス等のようなユーザ操作の入力を受け付ける入力装置、ディスプレイ装置やプリンタ等のようなユーザに情報を提供する出力装置と接続されてもよい。インデックス走査装置１０のハードウェア構成は制限されない。
【００２５】
図２は、第１実施形態におけるインデックス走査装置１０の処理構成例を概念的に示す図である。第１実施形態におけるインデックス走査装置１０は、検索空間取得部１１、検索点設定部１３、検索領域決定部１５、インデックス検索部１７、インデックス格納部２１、ページ特定データ保持部２３、検索空間保持部２５等を有する。これら各処理部は、例えば、ＣＰＵ２によりメモリ３に格納されるプログラムが実行されることにより実現される。また、当該プログラムは、例えば、ＣＤ（Compact Disc）、メモリカード等のような可搬型記録媒体やネットワーク上の他のコンピュータから入出力Ｉ／Ｆ４を介してインストールされ、メモリ３に格納されてもよい。
【００２６】
インデックス走査装置１０は、インデックス格納部２１とデータ格納部（図示せず）とからなるデータベースシステムに適用される。データ格納部は、複数のデータページにより複数のデータを格納する。各データページには、所定閾値以下の件数のデータがそれぞれ格納される。
【００２７】
インデックス格納部２１は、データ格納部に格納される複数データがマッピングされた多次元空間を構成する各部分空間を特定するための各インデックスデータ、及び、各部分空間に対応する各データページを特定するための各ページ特定データを含む複数エントリを格納する。インデックス格納部２１に格納される各エントリにより、１つの部分空間を示す１つのインデックスデータと、その部分空間に対応するデータページを特定するための１つのページ特定データとがそれぞれ特定される。なお、１つのインデックスデータは、複数の部分空間を示し、複数のページ特定データと共に１つのエントリに含まれてもよい。
【００２８】
各インデックスデータは、各部分空間の位置及び範囲を特定し得るデータ形式を持つ。例えば、一次元化された多次元空間内の各データ点が２進数表記される場合、各インデックスデータは、対応する各部分空間に含まれるデータ点の最長共通プレフィックスに設定される。多次元空間を複数の部分空間に分割する手法には、例えば、ＫＤ（K-Dimentional）−Ｔｒｅｅ等のような空間分割法が利用される。多次元空間の一次元化には、例えば、Ｚカーブ、ヒルベルトカーブ等のような空間充填曲線が利用される。
【００２９】
検索空間取得部１１は、多次元範囲検索のクエリ５０を取得し、このクエリ５０を解析することによりクエリ５０の検索範囲に対応する多次元空間内の検索空間の情報を取得する。検索空間の情報には、少なくとも、当該検索空間に含まれるデータ点の中の最小データ点及び最大データ点が含まれる。上記検索空間情報の取得の後、検索空間取得部１１は、検索空間保持部２５に保持される部分検索空間の情報を取得する。部分検索空間とは、検索空間内の空間であって、後述のインデックス検索部１７により、その空間に対応するページ特定データが未だ抽出されていない未処理空間を意味する。部分検索空間は、少なくとも１つの部分空間と重複する。
【００３０】
検索点設定部１３は、検索空間に含まれるデータ点の中の最小データ点及び最大データ点の少なくとも一方を検索点として設定する。この場合、検索点には、最小データのみ、最大データ点のみ、又は、最小データ点及び最大データ点の両方が設定される。また、検索点設定部１３は、検索空間取得部１１により部分検索空間が取得された場合には、部分検索空間に含まれるデータ点の中の最小データ点及び最大データ点の少なくとも一方を検索点として設定する。
【００３１】
インデックス検索部１７は、インデックス格納部２１を検索することにより、検索点設定部１３により設定された検索点を含む部分空間のインデックスデータを含むエントリを特定し、この特定されたエントリに含まれるページ特定データを抽出する。この抽出されたページ特定データは、検索空間の少なくとも一部と重なる部分空間に対応する。抽出されたページ特定データは、ページ特定データ保持部２３に保持される。
【００３２】
検索領域決定部１５は、インデックス検索部１７により特定されたエントリに含まれるインデックスデータから得られる部分空間の特定情報（例えば、位置及び範囲）に基づいて、当該検索空間又は当該部分検索空間から、対応するページ特定データが既に抽出された部分空間を除外して残る空間を部分検索空間に決定する。以降、この残空間を未踏検索空間と表記する場合もある。このとき、検索領域決定部１５は、当該検索空間又は当該部分検索空間を通る、多次元空間を複数の部分空間に分割する境界線を推定し、上記未踏検索空間をその境界線で分割することにより得られる各空間を当該部分検索空間に決定する。このように決定された部分検索空間の情報は検索空間保持部２５に保持される。
【００３３】
ページ特定データ保持部２３は、インデックス検索部１７により抽出されたページ特定データを保持する。つまり、ページ特定データ保持部２３は、検索空間の少なくとも一部と重なる部分空間に対応するページ特定データを保持する。ページ特定データは、例えば、データページのアドレスである。
【００３４】
検索空間保持部２５は、検索領域決定部１５により決定された部分検索空間の情報を保持する。部分検索空間の情報には、少なくとも、当該部分検索空間に含まれるデータ点の中の最小データ点又は最大データ点が含まれる。
【００３５】
〔動作例〕
以下、第１実施形態におけるインデックス走査方法について図３を用いて説明する。図３は、第１実施形態におけるインデックス走査装置１０の動作例を示すフローチャートである。
【００３６】
インデックス走査装置１０は、多次元範囲検索のクエリ５０を取得する（Ｓ３１）。インデックス走査装置１０は、このクエリ５０で指定された検索範囲に対応する多次元空間内の検索空間の情報を取得する（Ｓ３２）。
【００３７】
続いて、インデックス走査装置１０は、その検索空間内において検索点を設定する（Ｓ３３）。例えば、インデックス走査装置１０は、検索空間に含まれるデータ点の中の最小データ点及び最大データ点の少なくとも一方を検索点として設定する。
【００３８】
インデックス走査装置１０は、インデックス格納部２１に格納されるインデックスデータの中から、当該検索点を含む部分空間に対応するインデックスデータを特定する（Ｓ３４）。言い換えれば、インデックス走査装置１０は、インデックス格納部２１に格納されるインデックスデータを走査することにより、多次元空間を構成する複数の部分空間の中から、この検索点を含む部分空間を特定する。
【００３９】
インデックス走査装置１０は、特定されたインデックスデータと関連付けられたページ特定データを抽出する（Ｓ３５）。インデックス走査装置１０は、抽出されたページ特定データをページ特定データ保持部２３に保持させる。
【００４０】
続いて、インデックス走査装置１０は、検索空間内における、これまで（Ｓ３４）で特定された全ての部分空間以外の残空間（未踏検索空間）を部分検索空間に決定する（Ｓ３６）。このとき、インデックス走査装置１０は、（Ｓ３４）で特定された部分空間の特定情報に基づいて、当該検索空間を通る境界線を推定し、上記未踏検索空間をその境界線で分割することにより得られる各空間を当該部分検索空間に決定する。これにより、検索空間を通る境界線が１つ以上見つかれば、１つ以上の部分検索空間が決定されることになる。インデックス走査装置１０は、このように決定された部分検索空間の情報を検索空間保持部２５に保持させる。
【００４１】
インデックス走査装置１０は、部分検索空間が有るか否かを判定する（Ｓ３７）。具体的には、インデックス走査装置１０は、検索空間保持部２５に部分検索空間の情報が保持されているか否かでこの判定を行う。インデックス走査装置１０は、部分検索空間が無いと判定した場合（Ｓ３７；ＮＯ）、当該検索空間の少なくとも一部と重複する部分空間に対応付けられた全てのページ特定データが抽出されたと判断し、処理を終了する。
【００４２】
一方、インデックス走査装置１０は、部分検索空間が有ると判定した場合（Ｓ３７；ＹＥＳ）、検索空間保持部２５から１つの部分検索空間の情報を取得する（Ｓ３８）。インデックス走査装置１０により取得された部分検索空間の情報は、検索空間保持部２５から削除される。
【００４３】
インデックス走査装置１０は、その部分検索空間内において検索点を設定する（Ｓ３９）。この検索点は、例えば、その部分検索空間に含まれるデータ点の中の最小データ点及び最大データ点の少なくとも一方である。
【００４４】
インデックス走査装置１０は、この新たに設定された検索点に関し、（Ｓ３４）、（Ｓ３５）及び（Ｓ３６）を上述のように実行する。このとき、（Ｓ３６）で部分検索空間が新たに決定された場合には、その新たな部分検索空間の情報が検索空間保持部２５に追加される。（Ｓ３６）において新たな部分検索空間がないと判定された場合には、検索空間保持部２５に保持される部分検索空間の情報が取得される（Ｓ３７）。インデックス走査装置１０は、検索空間保持部２５に保持される部分検索空間の情報がなくなるまで（Ｓ３７；ＮＯ）、（Ｓ３８）、（Ｓ３９）、（Ｓ３４）、（Ｓ３５）、（Ｓ３６）を実行する。
【００４５】
なお、上述の動作例では、部分検索空間が１つずつ処理されていたが、複数の部分検索空間が検索空間保持部２５に保持されている場合には、部分検索空間毎に、（Ｓ３４）から（Ｓ３９）が並列かつ独立して実行されるようにしてもよい。これは、例えば、検索空間取得部１１、検索点設定部１３、検索領域決定部１５及びインデックス検索部１７のセットが部分検索空間毎に並列して動作するように構成されることで実現される。
【００４６】
〔第１実施形態の作用及び効果〕
上述のように、第１実施形態では、インデックス格納部２１において、検索空間と重なる部分空間に対応するインデックスデータを探すにあたり、多次元空間の各データ点を一次元化することにより得られるバイナリ値が最小及び最大の少なくとも一方となるデータ点を含む部分空間に対応するインデックスデータが特定される。そして、この特定されたインデックスデータから得られる対応する部分空間の特定情報（位置及び範囲）から、全体の多次元空間がどのように空間分割されているのかが推定される。この推定により、検索空間を通る境界線情報が取得され、検索空間におけるその特定された部分空間以外の残空間（未踏検索空間）がその境界線で分割されてなる部分検索空間の情報が得られる。以降、このように得られた部分検索空間と重なる部分空間の検出が行われる。
【００４７】
従って、第１実施形態によれば、クエリ５０の検索範囲に対応する検索空間の少なくとも一部と重なる部分空間のみを対象としてインデックス走査が行われるため、インデックス走査を高速化することができる。
【実施例】
【００４８】
以下、上述の各実施形態の更なる具体例を説明する。以下の実施例では、データベースがマッピングされた検索対象空間の次元が２次元であり、この２次元空間がＺカーブ（空間充填曲線）により一次元化され、各データ点が２進数表記され、ＫＤ−Ｔｒｅｅにより当該２次元空間が空間分割された場合の例が示される。【００４９】
図４は、実施例におけるデータベースにマッピングされた２次元空間及び２次元検索範囲を概念的に示す図である。なお、以降、図４における横軸をＸ軸と表記し、縦軸をＹ軸と表記する。図４の太線は、空間分割の境界線を示し、図４の太点線は、検索空間を示す。２次元空間の各データ点は、図４に示されるバイナリ値（上段が上位３桁、下段が下位３桁）で特定される。各バイナリ値は、各軸のデータ点の値（各々３桁のバイナリ値）を上位桁から下位桁への方向に１桁ずつ交互に並べることにより形成される。具体的には、Ｘ軸の値「００１」とＹ軸の値「０１０」とで特定されるデータ点は、Ｘ軸の最上位桁「０」、Ｙ軸の最上位桁「０」、Ｘ軸の２番目の桁「０」、Ｙ軸の２番目の桁「１」、Ｘ軸の最下位桁「１」、Ｙ軸の最下位桁「０」が並べられることにより形成される（「０００１１０」）。【００５０】
図５は、実施例におけるインデックス格納部２１に格納されるエントリの例を示す図である。図５の例によれば、各エントリには、図４に示される部分空間のいずれか１つを特定するインデックスデータと、そのインデックスデータに対応するページアドレスとがそれぞれ含まれる。各インデックスデータは、対応する部分空間に含まれるバイナリ値の最長共通プレフィックスと、他の各桁を示す「＊」とで表記されている。「＊」は、その桁の値を制限しないことを意味する。【００５１】
例えば、データ点「００００００」、「０００００１」、「００００１０」及び「００００１１」を含む部分空間（図４の左下）のインデックスデータは、最長共通プレフィックス「００００」と、他の２桁を示す「＊＊」とで形成される。また、データ点「００１０００」、「００１００１」、「００１０１０」、「００１０１１」、「００１１００」、「００１１０１」、「００１１１０」及び「００１１１１」を含む部分空間（図４における上記部分空間の右隣）のインデックスデータは、最長共通プレフィックス「００１」と他の３桁を示す「＊＊＊」とで形成される。実施例におけるインデックス格納部２１の各エントリは、インデックスデータを昇順にソートすることにより、並べられている。【００５２】
以下、この実施例におけるインデックス走査装置１０の動作例について図３を用いて説明する。なお、第１実施形態と同じ内容については適宜省略する。【００５３】
インデックス走査装置１０は、（Ｓ３１）で取得されたクエリ５０で指定された検索範囲に対応する２次元空間内の検索空間の情報を取得する（Ｓ３２）。実施例では、当該検索空間の情報には、最大データ点「１００１１１」、最小データ点「００００１１」が含まれる。【００５４】
インデックス走査装置１０は、当該検索空間内において検索点を設定する（Ｓ３３）。ここでは、インデックス走査装置１０は、検索空間に含まれるデータ点の中の最小データ点「００００１１」を検索点に設定したものと仮定する。【００５５】
インデックス走査装置１０は、図５に示されるインデックスデータの中から、当該検索点「００００１１」を含む部分空間に対応するインデックスデータを特定する（Ｓ３４）。本実施例では、インデックス格納部２１において、インデックスデータと検索点とがプレフィックスマッチするエントリが二分探索されることにより、特定すべき当該インデックスデータを効率的に見つけることができる。ここでは、検索点「００００１１」とプレフィックスマッチするインデックスデータとして、インデックスデータ「００００＊＊」が特定される。【００５６】
図６は、最初に特定された部分空間とこの部分空間から推定される境界線を概念的に示す図である。図６の網掛けで示される領域がインデックスデータ「００００＊＊」で特定される部分空間である。インデックス走査装置１０は、特定されたインデックスデータ「００００＊＊」と関連付けられたページ特定データ「０ｘ０００１」を抽出する（Ｓ３５）。インデックス走査装置１０は、抽出されたページ特定データ「０ｘ０００１」をページ特定データ保持部２３に保持させる。【００５７】
続いて、インデックス走査装置１０は、検索空間内における、上述のように特定された部分空間（インデックスデータ「００００＊＊」）以外の残空間（未踏検索空間）を部分検索空間に決定する（Ｓ３６）。【００５８】
ここで、図６の網掛けで示される部分空間の存在が判明すると、全体の２次元空間は、図６の太線で示された境界線で空間分割されていると推定することができる。これは、本実施例で用いられた空間ベースのＫＤ−Ｔｒｅｅでの空間分割手法の特性に基づく。一般的に、空間ベースの空間分割手法では、多次元空間が規則的かつ再帰的に分割されるため、或る部分空間の位置及び範囲に基づいて、その部分空間が切り出されるためにどのように空間が分割されてきたかを逆算することができる。一方で、データ点ベースの空間分割手法は、空間分割境界がデータ点に基づいて決定されるため、一般的に、位置と範囲から空間分割形態を逆算によって求めることができない。【００５９】
上述の各実施形態では、このような事実に基づいて、既に特定された部分空間以外の残空間（未踏検索空間）を分割して得られる各空間が部分検索空間として決定される。具体的には、既に特定された部分空間の特定情報（位置及び範囲）から導出される空間分割の情報（境界線情報）により、検索空間内の未踏検索空間が分割される。検索空間内を通る境界線は、各軸についてそれぞれ推定される。具体的には、当該境界線は、各軸の各データ点のうち、最下位桁から上位桁方向に向けて初めて０が現れる桁位置までの全桁に１が設定されている値で示されるデータ点（以降、負側境界値と表記する）と、この値に１を加算して得られる値で示されるデータ点（以降、正側境界値と表記する）との間に位置すると推定される。【００６０】
以下、図６の例に基づいて、具体的な境界線の推定方法について説明する。
まず、未踏検索空間における各次元（各軸）の下限値及び上限値が取得される。Ｘ軸については上限値が「１０１」であり、下限値が「００１」であり、Ｙ軸については上限値が「０１１」であり、下限値が「００１」である。【００６１】
続いて、各次元の下限値をＮＯＴ演算した値のサフィックス列が取得される。Ｘ軸については、下限値「００１」をＮＯＴ演算した値が「１１０」であり、この値から得られるサフィックス列は、「０」、「１０」、「１１０」である。Ｙ軸についても同様に、サフィックス列「０」、「１０」、「１１０」が取得される。【００６２】
取得された各サフィックス列に下限値と「１」とが加算された値が境界値候補として取得される。Ｘ軸及びＹ軸の各境界値候補は以下のように取得される。
Ｘ軸のサフィックス列「０」＝＞境界値候補「０１０」
Ｘ軸のサフィックス列「１０」＝＞境界値候補「１００」
Ｘ軸のサフィックス列「１１０」＝＞境界値候補「１０００」
Ｙ軸のサフィックス列「０」＝＞境界値候補「０１０」
Ｙ軸のサフィックス列「１０」＝＞境界値候補「１００」
Ｙ軸のサフィックス列「１１０」＝＞境界値候補「１０００」【００６３】
このように取得された境界値候補のうち、未踏検索空間における各軸の下限値及び上限値の範囲に含まれる境界値候補が、その次元の境界線の正側（Ｘ軸の右側、Ｙ軸の上側）に位置する値（正側境界値）と推定される。なお、上述の境界値から１を減算した値は、その次元の境界線の負側（Ｘ軸の左側、Ｙ軸の下側）に位置する値（負側境界値）となる。
Ｘ軸の正側境界値＝「０１０」、「１００」
Ｘ軸の負側境界値＝「００１」、「０１１」
Ｙ軸の正側境界値＝「０１０」
Ｙ軸の負側境界値＝「００１」【００６４】
ここで、Ｘ軸の正側境界値と検索空間におけるＹ軸の下限値とで示されるデータ点、及び、Ｙ軸の正側境界値と検索空間におけるＸ軸の下限値とで示されるデータ点が、その部分検索空間の最小データ点となる。
第１最小データ点（「０１０」、「００１」）＝「００１００１」
第２最小データ点（「１００」、「００１」）＝「１００００１」
第３最小データ点（「００１」、「０１０」）＝「０００１１０」【００６５】
これにより、インデックス走査装置１０は、網掛けで示される既に特定された部分空間以外の残空間が少なくとも３つに分割されていると決定することができる。この３つの残空間が部分検索空間として検索空間保持部２５に追加される。この部分検索空間の情報としては、上述のように特定された最小データ点が含まれてもよい。これにより、その最小データ点がその部分検索空間の検索点に設定されてもよい。【００６６】
また、Ｘ軸の負側境界値と検索空間におけるＹ軸の上限値とで示されるデータ点、及び、検索空間の最大データ点により、その部分検索空間の最大データ点が取得されてもよい。
第１最大データ点（「００１」、「０１１」）＝「０００１１１」
第２最大データ点（「０１１」、「０１１」）＝「００１１１１」
第３最大データ点（「１０１」、「０１１」）＝「１００１１１」【００６７】
このように決定される部分検索空間を以降の検索範囲とすることにより、クエリ５０に対応する検索範囲に対応する元の検索空間をより狭い範囲検索へと絞り込むことになる。即ち、インデックス格納部２１において、検索点（第１最小データ点）「００１００１」とプレフィックスマッチするインデックスデータとして、インデックスデータ「００１＊＊＊」が特定される。更に、検索点（第２最小データ点）「１００００１」とプレフィックスマッチするインデックスデータとして、インデックスデータ「１０＊＊＊＊」が特定される。更に、検索点（第３最小データ点）「０００１１０」とプレフィックスマッチするインデックスデータとして、インデックスデータ「０００１＊＊」が特定される。なお、本実施例では、このように特定された各部分空間により新たに推定される部分検索空間はない。【００６８】
このように、本実施例によれば、図６に示されるインデックスデータのエントリのうち、インデックスデータ「００００＊＊」、「００１＊＊＊」、「１０＊＊＊＊」、「０００１＊＊」を含むエントリのみにアクセスすれば、クエリ５０の検索範囲に対応する目的のデータページの集合を得ることができる。【００６９】
上述の例では、最初の検索点が、検索空間に含まれるデータ点の中の最小データ点「００００１１」に設定されたが、最大データ点「１００１１１」に設定されてもよい。この場合には、次のようにインデックス走査が実行される。【００７０】
（Ｓ３４）において、検索点「１００１１１」とプレフィックスマッチするインデックスデータとして、インデックスデータ「１０＊＊＊＊」が特定される。【００７１】
図７は、最初に特定された部分空間とこの部分空間から推定される境界線を概念的に示す図である。図７の網掛けで示される領域がインデックスデータ「１０＊＊＊＊」で特定される部分空間である。インデックス走査装置１０は、特定されたインデックスデータ「１０＊＊＊＊」と関連付けられたページ特定データ「０ｘ０６ａ８」を抽出する（Ｓ３５）。インデックス走査装置１０は、抽出されたページ特定データ「０ｘ０６ａ８」をページ特定データ保持部２３に保持させる。【００７２】
インデックス走査装置１０は、検索空間内における、上述のように特定された部分空間（インデックスデータ「１０＊＊＊＊」）以外の残空間（未踏検索空間）を部分検索空間に決定し（Ｓ３６）、特定された部分空間に基づいて、次のように境界線を推定する。このとき、未踏検索空間における各軸の上限値及び下限値が取得される。ここでは、Ｘ軸については、下限値「００１」、上限値「０１１」が取得され、Ｙ軸については、下限値「００１」、上限値「０１１」が取得される。【００７３】
続いて、各次元の上限値をＮＯＴ演算した値のサフィックス列が取得される。Ｘ軸については、上限値「０１１」をＮＯＴ演算した値が「１００」であり、この値から得られるサフィックス列は、「０」、「１００」である。Ｙ軸についても同様に、サフィックス列「０」、「１００」が取得される。【００７４】
ここで、取得されたサフィックス列のうち、未踏検索空間における各軸の上限値以上のサフィックス列が除外される。ここでは、Ｘ軸のサフィックス列「１００」及びＹ軸のサフィックス列「１００」が除外される。そして、各軸の上限値から、各サフィックス列及び「１」が減算された値が境界値候補として取得される。Ｘ軸及びＹ軸の各境界値候補は以下のように取得される。
Ｘ軸のサフィックス列「０」＝＞境界値候補「０１０」
Ｙ軸のサフィックス列「０」＝＞境界値候補「０１０」【００７５】
このように取得された境界値候補のうち、未踏検索空間における各軸の下限値及び上限値の範囲に含まれる境界値候補が、その次元の境界線の正側（Ｘ軸の右側、Ｙ軸の上側）に位置する値（正側境界値）と推定される。なお、上述の境界値から１を減算した値は、その次元の境界線の負側（Ｘ軸の左側、Ｙ軸の下側）に位置する値（負側境界値）となる。
Ｘ軸の正側境界値＝「０１０」
Ｘ軸の負側境界値＝「００１」
Ｙ軸の正側境界値＝「０１０」
Ｙ軸の負側境界値＝「００１」【００７６】
ここで、Ｘ軸の正側境界値と検索空間におけるＹ軸の下限値とで示されるデータ点、Ｙ軸の正側境界値と検索空間におけるＸ軸の下限値とで示されるデータ点、及び、検索空間の最小データ点が、その部分検索空間の最小データ点となる。
第１最小データ点（「０１０」、「００１」）＝「００１００１」
第２最小データ点（「００１」、「０１０」）＝「０００１１０」
第３最小データ点（検索空間の最小データ点）＝「００００１１」【００７７】
［比較例］
以下、上述の各実施形態及び実施例の効果を示すために、本実施形態とは異なるインデックス走査方法を比較例として説明する。以下の説明においても、図４及び図５で示される、２次元空間と２次元範囲検索、並びに、インデックス格納部２１が用いられる。【００７８】
比較例の手法は、インデックス格納部２１における、検索空間の最大データ点に対応するインデックスデータを含むエントリからその最小データ点に対応するインデックスデータを含むエントリまでの全エントリを走査対象とする。つまり、図５に示されるエントリのうち、インデックスデータ「００００＊＊」を含むエントリからインデックスデータ「１０＊＊＊＊」を含むエントリまでの全エントリに関して、対応する部分空間と検索空間とが重なっていないかがチェックされる。【００７９】
ところが、上述したように、特定されるべき部分空間は、インデックスデータ「００００＊＊」、「００１＊＊＊」、「１０＊＊＊＊」、「０００１＊＊」に対応する４つの部分空間しかない。よって、比較例の手法によれば、インデックスデータ「０１００００」からインデックスデータ「０１１１１１」に対応する各部分空間は、重複チェックの対象となるが、検索空間と重複しておらず、特定されないことになる。【００８０】
つまり、比較例の手法によれば、検索対象範囲は空間全体に比べて狭いにもかかわらず、インデックス走査される部分空間数が、インデックス格納部２１に格納される全インデックスに対応する部分空間数と同程度となる場合があり得る。その結果、比較例によれば、インデックスの走査に時間がかかってしまうことになる。【００８１】
一方で、上述の各実施形態及び実施例によれば、クエリの検索範囲に対応する検索空間と少なくとも１部が重なる部分空間のみを対象にしてインデックス走査が行われるため、インデックス走査が高速化される。このような各実施形態及び実施例と比較例との効果の差は、検索対象の次元数が大きい場合や、検索時に指定する各次元の範囲の幅に差がある場合に、顕著となる。【００８２】
なお、上述の説明で用いた複数のフローチャートでは、複数のステップ（処理）が順番に記載されているが、本実施形態で実行される処理ステップの実行順序は、その記載の順番に制限されない。本実施形態では、図示される処理ステップの順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態及び各変形例は、内容が相反しない範囲で組み合わせることができる。【００８３】
上記の各実施形態及び各変形例の一部又は全部は、以下の付記のようにも特定され得る。但し、各実施形態及び各変形例が以下の記載に限定されるものではない。【００８４】
（付記１）
複数の部分空間に分割された多次元空間にマッピングされたデータベースにおける、該複数の部分空間の各々を特定するための各インデックスデータを、各部分空間に属するデータが格納されるデータページを特定するための各ページ特定データと関連付けて格納するインデックス格納部と、
クエリの検索範囲に対応する前記多次元空間内の検索空間の情報、又は、該検索空間内の部分検索空間の情報を取得する検索空間取得部と、
前記検索空間又は前記部分検索空間に含まれるデータ点のうち、前記多次元空間の各データ点を一次元化することにより得られる値が最小及び最大の少なくとも一方となるデータ点を検索点として設定する検索点設定部と、
前記インデックス格納部において、前記検索点設定部により設定された前記検索点を含む部分空間のインデックスデータを特定し、該特定されたインデックスデータと関連付けられたページ特定データを前記検索空間の少なくとも一部と重なる部分空間のページ特定データとして抽出するインデックス検索部と、
前記インデックス検索部により特定されたインデックスデータから得られる部分空間の特定情報に基づいて、前記検索空間又は前記部分検索空間を通る、前記多次元空間を前記複数の部分空間に分割する境界線を推定し、該推定された境界線により前記検索空間又は前記部分検索空間を分割することにより得られる分割検索空間のうち、前記検索点を含む部分空間以外の分割検索空間を前記部分検索空間として決定する検索領域決定部と、
を備えるインデックス走査装置。【００８５】
（付記２）
前記各インデックスデータは、各部分空間の位置及び範囲を特定し得るデータ形式を有する付記１に記載のインデックス走査装置。【００８６】
（付記３）
前記多次元空間の空間分割には、ＫＤ（Ｋ−ｄｉｍｅｎｔｉｏｎａｌ）−Ｔｒｅｅが利用され、
前記多次元空間の一次元化には、空間充填曲線が用いられ、
前記多次元空間の各データ点を一次元化することにより得られる値は、２進数表記され、
前記インデックス格納部は、各部分空間に含まれるデータ点の最長共通プレフィックスを各インデックスデータとし、
前記検索領域決定部は、各軸の各データ点のうち、最下位桁から上位桁方向に向けて初めて０が現れる桁位置までの全桁に１が設定されている値で示されるデータ点と、該値に１を加算して得られる値で示されるデータ点との間を前記境界線として推定する、
付記１又は２に記載のインデックス走査装置。【００８７】
（付記４）
複数の部分空間に分割された多次元空間にマッピングされたデータベースにおける、該複数の部分空間の各々を特定するための各インデックスデータを、各部分空間に属するデータが格納されるデータページを特定するための各ページ特定データと関連付けて格納するインデックス格納部を走査するインデックス走査方法において、
クエリの検索範囲に対応する前記多次元空間内の検索空間の情報、又は、該検索空間内の部分検索空間の情報を取得し、
前記検索空間又は前記部分検索空間に含まれるデータ点のうち、前記多次元空間の各データ点を一次元化することにより得られる値が最小及び最大の少なくとも一方となるデータ点を検索点として設定し、
前記インデックス格納部において、前記検索点設定部により設定された前記検索点を含む部分空間のインデックスデータを特定し、
前記特定されたインデックスデータと関連付けられたページ特定データを前記検索空間の少なくとも一部と重なる部分空間のページ特定データとして抽出し、
前記特定されたインデックスデータから得られる部分空間の特定情報に基づいて、前記検索空間又は前記部分検索空間を通る、前記多次元空間を前記複数の部分空間に分割する境界線を推定し、
前記推定された境界線により前記検索空間又は前記部分検索空間を分割することにより得られる分割検索空間のうち、前記検索点を含む部分空間以外の分割検索空間を前記部分検索空間として決定する、
ことを含むインデックス走査方法。【００８８】
（付記５）
前記各インデックスデータは、各部分空間の位置及び範囲を特定し得るデータ形式を有する付記４に記載のインデックス走査方法。【００８９】
（付記６）
前記多次元空間の空間分割には、ＫＤ（Ｋ−ｄｉｍｅｎｔｉｏｎａｌ）−Ｔｒｅｅが利用され、
前記多次元空間の一次元化には、空間充填曲線が用いられ、
前記多次元空間の各データ点を一次元化することにより得られる値は、２進数表記され、
前記インデックス格納部は、各部分空間に含まれるデータ点の最長共通プレフィックスを各インデックスデータとし、
前記境界線の推定は、各軸の各データ点のうち、最下位桁から上位桁方向に向けて初めて０が現れる桁位置までの全桁に１が設定されている値で示されるデータ点と、該値に１を加算して得られる値で示されるデータ点との間を前記境界線として推定する、
付記４又は５に記載のインデックス走査方法。【００９０】
（付記７）
コンピュータに、
複数の部分空間に分割された多次元空間にマッピングされたデータベースにおける、該複数の部分空間の各々を特定するための各インデックスデータを、各部分空間に属するデータが格納されるデータページを特定するための各ページ特定データと関連付けて格納するインデックス格納部と、
クエリの検索範囲に対応する前記多次元空間内の検索空間の情報、又は、該検索空間内の部分検索空間の情報を取得する検索空間取得部と、
前記検索空間又は前記部分検索空間に含まれるデータ点のうち、前記多次元空間の各データ点を一次元化することにより得られる値が最小及び最大の少なくとも一方となるデータ点を検索点として設定する検索点設定部と、
前記インデックス格納部において、前記検索点設定部により設定された前記検索点を含む部分空間のインデックスデータを特定し、該特定されたインデックスデータと関連付けられたページ特定データを前記検索空間の少なくとも一部と重なる部分空間のページ特定データとして抽出するインデックス検索部と、
前記インデックス検索部により特定されたインデックスデータから得られる部分空間の特定情報に基づいて、前記検索空間又は前記部分検索空間を通る、前記多次元空間を前記複数の部分空間に分割する境界線を推定し、該推定された境界線により前記検索空間又は前記部分検索空間を分割することにより得られる分割検索空間のうち、前記検索点を含む部分空間以外の分割検索空間を前記部分検索空間として決定する検索領域決定部と、
を実現させるプログラム。【００９１】
（付記８）
前記各インデックスデータは、各部分空間の位置及び範囲を特定し得るデータ形式を有する付記７に記載のプログラム。【００９２】
（付記９）
前記多次元空間の空間分割には、ＫＤ（Ｋ−ｄｉｍｅｎｔｉｏｎａｌ）−Ｔｒｅｅが利用され、
前記多次元空間の一次元化には、空間充填曲線が用いられ、
前記多次元空間の各データ点を一次元化することにより得られる値は、２進数表記され、
前記インデックス格納部は、各部分空間に含まれるデータ点の最長共通プレフィックスを各インデックスデータとし、
前記検索領域決定部は、各軸の各データ点のうち、最下位桁から上位桁方向に向けて初めて０が現れる桁位置までの全桁に１が設定されている値で示されるデータ点と、該値に１を加算して得られる値で示されるデータ点との間を前記境界線として推定する、
付記７又は８に記載のプログラム。【００９３】
（付記１０）付記７から９のいずれか１つに記載のプログラムを記録したコンピュータが読み取り可能な記録媒体。【００９４】
この出願は、２０１２年１月１３日に出願された日本出願特願２０１２−００５５６２号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2013105505.tif 000003
【図２】
2013105505.tif 000004
【図３】
2013105505.tif 000005
【図４】
2013105505.tif 000006
【図５】
2013105505.tif 000007
【図６】
2013105505.tif 000008
【図７】
2013105505.tif 000009
【国際調査報告】
2013105505.tif 000010
2013105505.tif 000011
2013105505.tif 000012
2013105505.tif 000013