(57)【特許請求の範囲】
【請求項１】
記憶装置に蓄積された座標情報を含む蓄積情報を管理するデータ管理方法において、
前記蓄積情報を、前記座標情報に基づいて設定される管理領域ごとに管理するノードと、前記ノードを木構造で管理するインデックスにより管理し、
前記座標情報の次元軸に対して設定される優先範囲と、前記ノードが管理する管理領域とを比較し、
前記比較したノードの管理領域が前記優先範囲に含まれている場合に、該ノードの子要素数を第１の制限数に基づいて判定して前記木構造を更新し、
前記比較したノードの管理領域が前記優先範囲に含まれていない場合に、前記ノードの子要素数を、前記第１の制限数よりも大きい第２の制限数に基づいて判定して前記木構造を更新する
手順をコンピュータが実行するデータ管理方法。
【請求項２】
前記制限数は、前記ノードが管理する子要素数の下限数と上限数である請求項１記載のデータ管理方法。
【請求項３】
前記木構造の更新は、前記ノードの子要素数が、前記下限数よりも少ない場合に、該ノードと該ノードの兄弟ノードとを統合する請求項２に記載のデータ管理方法。
【請求項４】
前記木構造の更新は、前記ノードの兄弟ノードのうち、前記ノードとの統合結果のノードの管理領域の大きさと前記ノードの管理領域の大きさとの差分が最も小さくなる兄弟ノードを統合相手ノードとして選択し、前記ノードと該統合相手ノードとを統合する請求項１〜３のいずれか１つに記載のデータ管理方法。
【請求項５】
前記優先範囲は、動的に変更する範囲であり、前記優先範囲は設定される次元軸の値が更新されるのに伴い、前記優先範囲が更新される範囲である請求項１〜４のいずれか１つに記載のデータ管理方法。
【請求項６】
前記座標情報の検索時に、検索条件で指定された各次元軸の検索範囲を含んだ検索履歴を記憶手段に蓄積し、
前記検索履歴を、該検索履歴に含まれる前記次元軸の検索範囲でソートし、検索履歴の全件数に対し、前記次元軸の値が大きい方又は小さい方から所定割合の件数に属する範囲の検索履歴における前記次元軸の検索範囲を、前記優先範囲とする請求項５記載のデータ管理方法。
【請求項７】
前記次元軸は時間軸であり、前記優先範囲は、時間軸の値が新しい方から所定期間の範囲である請求項１〜６のいずれか１つに記載のデータ管理方法。
【請求項８】
前記データの検索時に、検索条件で指定された各次元軸の検索範囲を含んだ検索履歴を記憶手段に蓄積し、
前記木構造の更新は、前記検索履歴に含まれる各次元軸の検索範囲の平均値をそれぞれ算出し、次元軸間における検索範囲の比率を算出する一方、前記ノードの兄弟ノードのそれぞれにつき、各次元軸間におけるノードの管理領域の範囲の比率を算出し、前記検索範囲の比率と前記ノードの管理領域の範囲の比率との比較において、前記検索範囲の比率に対し前記ノードの管理領域の範囲の比率が小さい次元軸の範囲が、前記ノードの管理領域よりも前記ノードとの統合結果のノードの管理領域において拡大する兄弟ノードを統合相手ノードとして選択し、前記ノードと該統合相手ノードとを統合する請求項１〜７のいずれか１つに記載のデータ管理方法。
【請求項９】
前記木構造の更新は、前記統合相手ノードを選択するときに、前記ノードの兄弟ノードのそれぞれについて、前記ノードとの統合結果のノードの管理領域において前記ノードの管理領域よりも拡大する領域につき、前記検索範囲の比率に対し前記管理領域の範囲の比率が小さい次元軸の範囲が縮小するように統合結果のノードの管理領域を補正した補正領域の大きさを算出し、当該補正領域の大きさと前記ノードの管理領域の大きさとの差分が最も小さい兄弟ノードを選択することを特徴とする請求項８記載のデータ管理方法。
【請求項１０】
記憶装置に蓄積された座標情報を含む蓄積情報を、前記座標情報に基づいて設定される管理領域ごとに管理するノードと、前記ノードを木構造で管理するインデックスにより管理するデータ管理装置において、
前記座標情報の次元軸に対して設定される優先範囲と、前記ノードが管理する管理領域とを比較する統合対象判定部と、
前記比較したノードの管理領域が前記優先範囲に含まれている場合に、該ノードの子要素数を第１の制限数に基づいて判定して前記木構造を更新する一方、前記比較したノードの管理領域が前記優先範囲に含まれていない場合に、前記ノードの子要素数を、前記第１の制限数よりも大きい第２の制限数に基づいて判定して前記木構造を更新するインデックス編成部と
を備えたデータ管理装置。
【請求項１１】
記憶装置に蓄積された座標情報を含む蓄積情報を管理する処理をコンピュータに実行させるデータ管理プログラムにおいて、
前記蓄積情報を、前記座標情報に基づいて設定される管理領域ごとに管理するノードと、前記ノードを木構造で管理するインデックスにより管理し、
前記座標情報の次元軸に対して設定される優先範囲と、前記ノードが管理する管理領域とを比較し、
前記比較したノードの管理領域が前記優先範囲に含まれている場合に、該ノードの子要素数を第１の制限数に基づいて判定して前記木構造を更新し、
前記比較したノードの管理領域が前記優先範囲に含まれていない場合に、前記ノードの子要素数を、前記第１の制限数よりも大きい第２の制限数に基づいて判定して前記木構造を更新する
処理をコンピュータに実行させるデータ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ検索に用いるインデックスを管理する技術に関する。
【背景技術】
【０００２】
記憶装置に蓄積された情報の検索を高速化するべく、木構造のインデックスを用いて検索を行う技術が一般に用いられている。
【０００３】
このように情報検索にインデックスを用いる技術として、例えば、インデックスに挿入されるキーの値の増加傾向又は減少傾向に応じてノードの分割割合を変更しながらキーを挿入することで、さらに新たなキーを挿入するときにおけるノードの分割発生を抑える技術が開示されている。また、他の例として、多次元の地点データから空間インデックスを作成するデータベースにおいて、任意地点から距離の近い上位ｋ件の地点データを検索するｋ最近傍検索方法について開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１２３４２６号公報
【特許文献２】特開２００９−１９９１５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、１以上の次元軸（属性）を有する座標情報の検索において、特定の次元軸の値の範囲により、検索条件として指定される頻度に偏りが生じることがある。１つの具体例としては、時間の次元軸を有する座標情報の検索において、古い時間よりも新しい時間のデータのほうが利用頻度が高いため、古い時間よりも新しい時間のほうが検索範囲として指定される頻度が高いということがある。このように、検索範囲として指定される頻度に偏りが生じる場合、頻繁に指定される検索範囲の検索処理を高速化することが望ましい。しかしながら、従来のインデックスの構造は、このように、次元軸の値の範囲によって検索範囲として指定される頻度に偏りが生じることを考慮した構造となっていなかった。
【０００６】
以上のような問題点に鑑み、本技術は、１つの側面において、木構造のインデックスを用いた座標情報の検索において、所定の次元軸の範囲のうち所定範囲を検索条件とした検索処理を高速化させることを目的とする。
【課題を解決するための手段】
【０００７】
本技術は、記憶装置に蓄積された座標情報を含む蓄積情報を管理するデータ管理技術であり、１つの側面において、次のような処理を行う。すなわち、蓄積情報を、座標情報に基づいて設定される管理領域ごとに管理するノードと、ノードを木構造で管理するインデックスにより管理する。そして、本技術は、座標情報の次元軸に対して設定される優先範囲と、ノードが管理する管理領域とを比較する。比較したノードの管理領域が優先範囲に含まれている場合には、ノードの子要素数を第１の制限数に基づいて判定して木構造を更新する。一方、比較したノードの管理領域が優先範囲に含まれていない場合には、ノードの子要素数を、第１の制限数よりも大きい第２の制限数に基づいて判定して木構造を更新する。
【発明の効果】
【０００８】
本技術によれば、１つの側面において、木構造のインデックスを用いた座標情報の検索において、所定の次元軸の範囲のうち所定範囲を検索条件とした検索処理を高速化させることが可能となる。
【図面の簡単な説明】
【０００９】
【図１】Ｒ−Ｔｒｅｅ形式のインデックス（子要素数の制限数が一定の場合）の一例の説明図である。
【図２】Ｒ−Ｔｒｅｅ形式のインデックス（子要素数の制限数が次元軸の範囲に応じて異なる場合）の一例の説明図である。
【図３】データ管理装置の機能ブロック図の一例である。
【図４】記憶装置のデータの説明図であり、（Ａ）は統合優先期間、（Ｂ）は子ノード数制限数、（Ｃ）は前回統合閾時刻の一例を示す。
【図５】Ｒ−Ｔｒｅｅのインデックスのデータ構造の一例の説明図である。
【図６】データ検索処理の一例のフローチャートである。
【図７】データ追加処理の一例のフローチャート（一部）である。
【図８】データ追加処理の一例のフローチャート（一部）である。
【図９】データ削除処理の一例のフローチャートである。
【図１０】インデックス編成処理の一例のフローチャート（一部）である。
【図１１】インデックス編成処理の一例のフローチャート（一部）である。
【図１２】ノードの矩形領域と検索範囲との関係の一例の説明図である。
【図１３】データ管理装置の機能ブロック図の一例である。
【図１４】検索履歴データベースの一例の説明図である。
【図１５】データ検索処理の一例のフローチャートである。
【図１６】データ削除処理の一例のフローチャートである。
【図１７】インデックス編成処理の一例のフローチャート（一部）である。
【図１８】補正選択処理の一例のフローチャートである。
【図１９】正規化領域長比を用いた補正領域算出の一例の説明図である。
【図２０】データ管理装置の機能ブロック図の一例である。
【図２１】インデックス編成処理の一例のフローチャート（一部）である。
【図２２】データ管理装置を具現化したハードウェア構成の一例の説明図である。
【発明を実施するための形態】
【００１０】
［１．概要］
本明細書では、記憶装置に蓄積された座標情報を含む蓄積情報を、座標情報に基づいて設定される管理領域ごとに管理するノードと、ノードを木構造で管理するインデックスにより管理するデータ管理技術において、１つのノードに対する子ノード数又は保持データ数の制限数を、所定の次元軸の値の範囲に応じて異なる値とし、当該制限数に基づいてインデックスの編成を行うデータ管理技術について説明する。なお、本明細書において、子ノード数及び保持データ数を総称して子要素といい、子要素と表記した場合には、子ノード数及び保持データ数の少なくともいずれか一方を指す。
【００１１】
本明細書で説明するデータ管理技術では、ノードが管理する座標情報の範囲である管理領域の所定次元軸における範囲が、所定範囲に含まれるノードについては、子要素数の制限数を小さく設定しておく。一方で、前記所定範囲に含まれないノードについては、子要素数の制限数を大きく設定しておく。具体的には、検索条件として指定される頻度が高い検索範囲に含まれるノードについては、子要素の上限数及び下限数を小さく設定しておく。一方で、ノードの所定次元軸の値が検索条件として指定される頻度が低い検索範囲に含まれるノードについては、子要素の上限数及び下限数を大きく設定しておく。このような子要素の上限数及び下限数に基づいてデータ管理装置がインデックスの編成を行うと、ノードの管理領域の所定次元軸の値が検索条件として指定される頻度が高いノードのほうが、頻度が低いノードよりも、子ノード数や保持データ数が少ない木構造のインデックスが編成される。このため、頻繁に検索対象となる新しい時間を検索範囲とした検索において、アクセスするノードの数が抑制され、検索における計算量が削減される。したがって、頻度の高い検索処理の高速化を実現することができる。
【００１２】
［２．第１実施形態］
本実施形態では、座標情報の管理を行うインデックスとして、Ｒ−Ｔｒｅｅのインデックスを用いたデータベースを有するデータ管理装置について説明する。
【００１３】
具体的には、本実施形態のデータ管理装置は、時間及び位置情報（緯度及び経度）の次元軸を有する座標情報を含んだデータベースであって、新しい時間の座標情報を検索対象とする検索が頻繁に行われる一方で、古い時間の座標情報を検索対象とする検索が行われる頻度が少ないデータベースを対象とする。なお、このようなデータベースの具体例としては、直近のタクシーの位置等が検索されるタクシープローブ情報等が該当する。以下、本明細書の各実施形態の説明において記載する座標情報は、断りがない限り時間の次元軸を含むものとする。
【００１４】
本実施形態のデータ管理装置では、時間、緯度及び経度を次元軸とした座標情報を管理するＲ−Ｔｒｅｅのインデックスにおいて、１つのノードに対する子要素の上限数及び下限数を、ノードが管理する時間軸の範囲に応じて異なる数とする。そして、頻繁に検索対象となる新しい時間の範囲を検索優先期間（優先範囲）とし、検索優先期間のノードに対する子要素の上限数及び下限数を小さくするのに対し、検索優先期間以外の古い期間のノードに対する子要素の上限数及び下限数を大きく設定する。そして、かかる上限数及び下限数に基づいて、インデックスの編成を行う。
【００１５】
ここで、Ｒ−Ｔｒｅｅ構造のインデックスでは、相互に重なり合う矩形領域（多次元に対応する超矩形を指す。二次元の場合は長方形、三次元の場合は立方体となる。四次元以上の場合も、次元数に合わせて拡張した領域を指す。以下同様）を管理領域とするノードで木を作成する。各ノードは子ノードの最小外接矩形である。座標情報の検索時には、検索条件として指定された検索範囲と重なる矩形領域を有する子ノードに絞って検索を行うことで、検索を高速化する。
【００１６】
子要素数の制限数を、所定次元軸の値の範囲に関係なく一定にした従来のインデックスの具体例の一部分を図１に示す。この例は、２００９年４月から２０１０年３月までの時間の座標情報を管理するインデックスである。
【００１７】
この例では、時間と位置情報を有する座標情報のインデックスを対象とし、所定次元軸を時間軸とする。そして、時間軸の値の範囲に関係なく、子要素数の上限数が「４」、下限数が「２」とする。このような構造では、少なくとも時間軸の検索範囲の大きさが同じであれば、原則として、どの検索範囲が指定されたかによって検索における計算量が大きく変わることはない。換言すれば、新しい時間の範囲が検索範囲となったときも、古い時間の範囲が検索範囲となったときも、検索における計算量は原則として同じである。
【００１８】
一方、子要素数の制限数を所定の次元軸の範囲に応じて異なる数とした場合におけるインデックスの具体例の一部分を図２に示す。この例では、現在が２０１０年４月１月である場合に、時間軸の値のうち直近の３ヶ月（すなわち、２０１０年１月〜３月）を検索優先期間とする。そして、この検索優先期間のノードに対する子要素数の上限数を「４」、下限数を「２」とする一方で、検索優先期間外の時間の範囲のノードに対する上限数を「１８」、下限数を「６」とする。この場合、図２に示すように、過去３ヶ月より前の範囲の座標情報は１つの第１レベル中間ノード［Ｒ４］で管理しており、子ノードの数は１８である。他の３つの第１レベル中間ノード［Ｒ１］〜［Ｒ３］は、過去３ヶ月以内の範囲の座標情報を管理しており、それぞれ子ノードの数は４である。
【００１９】
このように、子要素数の制限数を所定の次元軸の範囲に応じて異なる数とした図２の木構造のインデックスでは、古い時間の範囲のノードの子ノード数が多い一方で、新しい時間の範囲のノードの子ノード数が少なくなる。このため、頻繁に検索対象となる新しい時間を検索範囲とした検索において、アクセスするノードの数が低減され、検索における計算量が抑制される。したがって、頻度の高い検索処理の高速化を実現することができる。
【００２０】
図３は、第１実施形態に係るデータ管理装置１の機能ブロック図を示す。
第１実施形態に係るデータ管理装置は、少なくともＣＰＵ（Central Processing Unit）及び記憶装置を備えた情報処理装置において実装されている。なお、本明細書において、記憶装置とは、メモリ等の揮発性記憶装置及びストレージ等の不揮発性記憶装置の少なくともいずれか一方を示すものとする。
【００２１】
データ管理装置１は、記憶装置２に格納されたデータである、座標情報ＤＢ３１、検索優先期間３２、子要素数制限数３３及び前回統合閾時刻３４を有する。また、データ管理装置１は、データ管理プログラムがメモリにロードされ実行されることによって実現され、記憶装置２に格納された各種データと協働して動作する制御部３として、データ検索部２１、データ追加部２２、データ削除部２３、インデックス編成部、統合閾時刻管理部２５及び統合対象判定部２６を有する。
【００２２】
座標情報ＤＢ３１は、時間、緯度及び経度を次元軸とした座標情報を含んだ蓄積情報を有するデータベースであり、座標情報の座標が含まれる矩形領域で座標情報を管理するＲ−Ｔｒｅｅのインデックスを有する。なお、座標情報ＤＢ３１のＲ−Ｔｒｅｅのインデックスのデータ構造については後述する。
【００２３】
座標情報ＤＢ３１、検索優先期間３２、子要素数制限数３３及び前回統合閾時刻３４の具体例を図４に示す。図４（Ａ）に示す検索優先期間３２は、座標情報検索において時間の検索条件として指定される頻度が高い期間である。図４（Ｂ）に示す子要素数制限数３３は、時間軸の値が検索優先期間３２に含まれるノード（以下、検索優先ノードという）の子要素数上限数と、検索優先ノードの子要素数下限数とを含む。さらに、子要素数制限数３３は、時間軸の値が検索優先期間３２以外の期間に含まれるノード（以下、統合対象ノードという）の子要素数上限数と、統合対象ノードの子要素数下限数とを含む。ここで、統合対象ノードの子要素数上限数から下限数までに含まれる数は、検索優先ノードの子要素数上限数から下限数までに含まれる数よりも大きく設定する。なお、検索優先ノードの子要素数上限数及び子要素数下限数が、第１の制限数であり、統合対象ノードの子要素数上限数及び子要素数下限数が、第２の制限数である。検索優先期間３２及び子要素数制限数３３は、オペレータ等が予め設定しておく値である。
【００２４】
前回統合閾時刻３４は、図４（Ｃ）に示すように、後述するインデックス編成処理において各ノードが管理する時間軸の値の範囲が検索優先期間３２に含まれるか否かを判定するのに用いられる基準時刻である統合閾時刻であって、前回のインデックス編成処理において用いられた統合閾時刻である。前回統合閾時刻３４は、インデックス編成処理において記憶装置２に設定される。
【００２５】
データ検索部２１は、座標情報ＤＢ３１の座標情報を、インデックスを用いて検索する。
データ追加部２２は、座標情報ＤＢ３１に、新たな座標情報を追加する。新たな座標情報を追加した結果、インデックスのノードの子ノード数又は保持データ数が子要素数上限数を超えた場合、データ追加部２２は、必要に応じてノード分割を行う。
データ削除部２３は、座標情報ＤＢ３１から、座標情報を削除する。座標情報を削除した結果、インデックスのノードの子ノード数又は保持データ数が子要素数下限数を下回った場合、データ削除部２３は、必要に応じてノード統合を行う。
【００２６】
インデックス編成部２４は、インデックスのＲ−Ｔｒｅｅ構造を修正するインデックス編成処理を行う。具体的には、インデックス編成部２４は、後述する統合対象判定部２６の判定の結果、時間軸におけるノードの管理領域の範囲が現在時刻から遡って検索優先期間３２に含まれている場合に、ノードの子要素数を、検索優先ノードの子要素数制限数３３に基づいて判定して、木構造を更新する。一方、インデックス編成部２４は、時間軸におけるノードの管理領域の範囲が現在時刻から遡って検索優先期間３２に含まれていない場合に、ノードの子要素数を、検索優先ノードの子要素数制限数３３よりも大きい統合対象ノードの子要素数制限数３３に基づいて判定して、木構造を更新する。換言すれば、統合対象ノードの子ノード又は保持データについては、統合対象ノードの子要素数制限数３３を適用して、ノードの統合を行う。
【００２７】
統合閾時刻管理部２５は、インデックス編成処理において、現在時刻及び検索優先期間３２に基づいて統合閾時刻を決定する一方、インデックス編成処理が終了するときには、前回統合閾時刻３４を統合閾時刻で更新する。
【００２８】
統合対象判定部２６は、インデックス編成処理において、検索優先期間３２と、処理対象のノードの管理領域の時間軸における範囲とを比較する。すなわち、統合対象判定部２６は、処理対象のノードの管理領域の時間軸における範囲が、現在時刻から遡って検索優先期間３２に含まれるか否かを判定する。換言すれば、統合対象判定部２６は、処理対象のノードが検索優先ノードであるか統合対象ノードであるかを判定する。
【００２９】
ここで、座標情報ＤＢ３１に格納されたＲ−Ｔｒｅｅのインデックスのデータ構造の一例につき、図５を用いて説明する。なお、説明の便宜上、インデックスの一部のデータのみを具体的に示して説明する。
【００３０】
根ノード（ルートノード）の［Ｒ０］、中間ノード（ブランチノード）の［Ｒ１〜Ｒ４］及び葉ノード（リーフノード）の［Ｒ５〜Ｒ２０］は、それぞれ、自ノードのノード種別（根、中間、葉の種別）、自ノードが管理する矩形領域を特定する座標を有する。矩形領域を特定する情報は、時間（Ｔ軸とする）の最小値（ｔ１）及び最大値（ｔ２）、緯度（Ｘ軸とする）の最小値（ｘ１）及び最大値（ｘ２）、経度（Ｙ軸とする）の最小値（ｙ１）及び最大値（ｙ２）を有する。さらに、根ノード及び中間ノードは、自ノードの子ノードを特定する子ノードリストを有する。子ノードリストには子ノードへのポインタが含まれ、このポインタによって各ノードから子ノードへとリンクしている。一方、葉ノードは、自ノードが示す座標情報を特定するデータリストを有する。データリストには座標情報へのポインタが含まれ、このポインタによって各葉ノードから座標情報へとリンクしている。
【００３１】
次に、データ検索装置において実行される各処理につき、図６〜図１１のフローチャートを参照しつつ説明する。
【００３２】
まず、データ検索部２１によるデータ検索処理について、図６を用いて説明する。データ検索処理は、例えばオペレータ等により、検索範囲を指定した検索指示の入力がなされ、データ管理装置１において当該入力を受け付けた時等に実行される。
【００３３】
Ｓ１にて、データ検索部２１は、根ノードを選択する。
Ｓ２にて、データ検索部２１は、選択ノードが葉ノードか否かを判定し、葉ノードであるときには（Ｙｅｓ）、Ｓ３に進む一方、葉ノードでないときには（Ｎｏ）、Ｓ４に進む。なお、ここで選択ノードが葉ノードでないときとは、すなわち、選択ノードが根ノード又は中間ノードであるということである。
Ｓ３にて、データ検索部２１は、選択ノード（葉ノード）からリンクしている座標情報のうち、検索範囲に含まれる座標情報を、検索結果として選択する。なお、この選択した座標情報は、一時的に記憶装置に蓄積される（図３において図示省略）。
【００３４】
一方、Ｓ４にて、データ検索部２１は、選択ノード（根ノード又は中間ノード）の子ノードの矩形領域に、検索範囲と重なる部分が含まれているか否かを判定する。検索範囲と重なる部分が含まれているときには（Ｙｅｓ）、Ｓ５に進む一方、検索範囲と重なる部分が含まれないときには（Ｎｏ）、Ｓ６に進む。
【００３５】
Ｓ５にて、データ検索部２１は、検索範囲と重なる部分が含まれている子ノードを選択候補ノードに加える。なお、この選択候補ノードは、一時的に記憶装置に蓄積される（図３において図示省略）。
【００３６】
Ｓ６にて、データ検索部２１は、全ての選択候補ノードの検索が終了したか否かを判定する。全ての選択候補ノードの検索が終了していないときには（Ｎｏ）、Ｓ７に進み、全ての選択候補ノードの検索が終了しているときには（Ｙｅｓ）、Ｓ８に進む。
【００３７】
Ｓ７にて、データ検索部２１は、選択候補ノードから１つのノードを選択し、Ｓ２に戻る。
Ｓ８にて、データ検索部２１は、検索結果として選択した座標情報を、検索結果として出力する。なお、出力方法は、例えば表示装置に表示したり、記憶装置のファイルに出力したりするなど、いかなる方法であってもよい。
【００３８】
次に、データ追加部２２によるデータ追加処理について、図７及び図８を用いて説明する。データ追加処理は、例えばオペレータ等により、座標情報の追加指示の入力がなされ、データ管理装置１において当該入力を受け付けた時等に実行される。
【００３９】
Ｓ１１にて、データ追加部２２は、根ノードを選択する。
Ｓ１２にて、データ追加部２２は、選択ノードが葉ノードか否かを判定し、葉ノードでないときには（Ｎｏ）、Ｓ１３に進む一方、葉ノードであるときには（Ｙｅｓ）、Ｓ１６に進む。なお、ここで選択ノードが葉ノードでないときとは、すなわち、選択ノードが根ノード又は中間ノードであるということである。
【００４０】
Ｓ１３にて、データ追加部２２は、選択ノード（根ノード又は中間ノード）の子ノードの矩形領域に、追加する座標情報の座標が含まれているか否かを判定する。追加する座標情報の座標が含まれているときには（Ｙｅｓ）、Ｓ１４に進む一方、追加する座標情報の座標を含む部分が含まれていないときには（Ｎｏ）、Ｓ１５に進む。
【００４１】
Ｓ１４にて、データ追加部２２は、追加する座標情報を矩形領域に含む子ノードのうち、矩形領域が最小の子ノードを選択ノードとする。
【００４２】
Ｓ１５にて、データ追加部２２は、追加する座標情報を含めるために矩形領域を拡大する際に、矩形領域の拡大量が最小ですむ子ノードを追加対象ノードとして決定する。なお、矩形領域の拡大量が最小ですむ子ノードを選択することで、本来座標情報の存在しない無駄な領域を、ノードが管理する矩形領域に含めてしまうことを抑制することができる。
【００４３】
Ｓ１６にて、データ追加部２２は、選択ノード（葉ノード）に、座標情報を追加する。ここで、ノードへの座標情報の追加とは、座標情報へのリンクの追加と同義とする。
Ｓ１７にて、データ追加部２２は、選択ノード（葉ノード）からリンクする座標情報の数が、記憶装置２に設定された子要素数上限数を超えているか否かを判定する。ここで、データ追加部２２は、選択ノードの最古時間ｔ１が、前回統合閾時刻３４以前であれば、統合対象ノードの子要素数上限数を用いて判定を行う一方、選択ノードの最古時間ｔ１が前回統合閾時刻３４よりも新しければ、検索優先ノードの子要素数上限数を用いて判定を行う。選択ノードからリンクする座標情報の数が、子要素数上限数を超えていれば（Ｙｅｓ）、Ｓ１８に進み、子要素数上限数を超えていなければ（Ｎｏ）、処理を終了する。
【００４４】
Ｓ１８にて、データ追加部２２は、分割後の２つのノードの矩形領域の大きさの和が最小となるように、選択ノード（葉ノード）を分割し、分割の結果新たに作成したノードを、選択ノードの親ノードに追加する。
【００４５】
Ｓ１９にて、データ追加部２２は、Ｓ１８又はＳ２２において選択ノードを分割して兄弟ノードが増加した結果、選択ノードの親ノードの子ノード数が子要素数上限数を超えているか否かを判定する。ここでも、データ追加部２２は、選択ノードの親ノードの矩形領域の最古時間ｔ１が前回統合閾時刻３４以前であれば、統合対象ノードの子要素数上限数を用いて判定を行う一方、選択ノードの親ノードの最古時間ｔ１が前回統合閾時刻３４よりも新しければ、検索優先ノードの子要素数上限数を用いて判定を行う。選択ノードの親ノードの子ノードの数が、子要素数上限数を超えていれば（Ｙｅｓ）、Ｓ２０に進み、子要素数上限数を超えていなければ（Ｎｏ）、処理を終了する。
【００４６】
Ｓ２０にて、データ追加部２２は、選択ノードの親ノードが根ノードであるか否かを判定し、根ノードであれば（Ｙｅｓ）、Ｓ２１に進む一方、根ノードでなければ（Ｎｏ）、Ｓ２２に進む。
【００４７】
Ｓ２１では、データ追加部２２は、分割後の２つのノードの矩形領域の大きさの和が最小となるように、選択ノードの親ノード（根ノード）を分割する。そして、データ追加部２２は、これまでの根ノードであった親ノードの上の階層に新たな根ノードを作成する。
【００４８】
Ｓ２２では、データ追加部２２は、分割後の２つのノードの矩形領域の大きさの和が最小となるように、選択ノードの親ノード（中間ノード）を分割し、分割の結果新たに作成したノードを、選択ノードの親ノードに追加する。そして、Ｓ１９に戻る。
【００４９】
次に、データ削除部２３によるデータ削除処理について、図９を用いて説明する。データ追加処理は、例えばオペレータ等により、座標情報の削除指示の入力がなされ、データ管理装置１において当該入力を受け付けた時等に実行される。
【００５０】
Ｓ３１にて、データ削除部２３は、削除対象の座標情報を検索する。
Ｓ３２にて、データ削除部２３は、検索結果として得られた、削除対象の座標情報がある葉ノードを選択し、当該選択ノードから、削除対象の座標情報を削除する。
【００５１】
Ｓ３３にて、データ削除部２３は、選択ノード（葉ノード）からリンクする座標情報の数が、記憶装置２に設定された子要素数下限数未満である否かを判定する。ここで、データ削除部２３は、選択ノードの最古時間ｔ１が前回統合閾時刻３４以前であれば、統合対象ノードの子要素数下限数を用いて判定を行う一方、選択ノードの最古時間ｔ１が前回統合閾時刻３４よりも新しければ、検索優先ノードの子要素数下限数を用いて判定を行う。選択ノードからリンクする座標情報の数が、子要素数下限数未満であれば（Ｙｅｓ）、Ｓ３４に進み、子要素数下限数を未満でなければ（Ｎｏ）、処理を終了する。
【００５２】
Ｓ３４にて、データ削除部２３は、選択ノードの兄弟ノードのうち、選択ノードの矩形領域に対する統合結果のノードの矩形領域の拡大量が最小となるノードを統合相手ノードとして選択する。換言すれば、ここで統合相手ノードとして選択される兄弟ノードは、統合結果のノードの矩形領域の大きさと選択ノードの矩形領域の大きさとの差分が最小となる兄弟ノードである。
【００５３】
Ｓ３５にて、データ削除部２３は、選択ノードを被統合ノードとし、統合相手ノードを統合する。具体的には、統合相手ノードの子ノードを、選択ノードの子ノードに追加し、選択ノードの親ノードの子ノードから、統合相手ノードを削除する。
【００５４】
Ｓ３６にて、データ削除部２３は、選択ノード（すなわち統合結果のノード）の子ノード数又は保持データ数が子要素数上限数を超えているか否かを判定する。ここでも、データ追加部２２は、選択ノードの矩形領域の最古時間ｔ１が前回統合閾時刻３４以前であれば、統合対象ノードの子要素数上限数を用いて判定を行う一方、選択ノードの最古時間ｔ１が前回統合閾時刻３４よりも新しければ、検索優先ノードの子要素数上限数を用いて判定を行う。そして、選択ノードの子ノード数又は保持データ数が子要素数上限数を超えているときには（Ｙｅｓ）、Ｓ３７に進み、子ノード数又は保持データ数が子要素数上限数を超えていないときには（Ｎｏ）、Ｓ３８に進む。
【００５５】
Ｓ３７にて、データ削除部２３は、統合結果のノードを再分割する。具体的には、データ削除部２３は、分割後の２つのノードの矩形領域の大きさの和が最小となるように、統合結果のノードを分割し、分割の結果新たに作成したノードを、選択ノードの親ノードに追加する。
【００５６】
Ｓ３８にて、データ削除部２３は、統合結果のノードの親ノードが根ノードであるか否かを判定し、根ノードであれば（Ｙｅｓ）、Ｓ３９に進む一方、根ノードでなければ（Ｎｏ）、Ｓ４１に進む。
【００５７】
Ｓ３９にて、データ削除部２３は、選択ノードの親ノード（根ノード）の子ノード数が１つになるか否かを判定する。子ノード数が１つになるときには（Ｙｅｓ）、Ｓ４０に進み、子ノード数が複数であるときには（Ｎｏ）、処理を終了する。
【００５８】
Ｓ４０にて、データ削除部２３は、根ノードを削除して、選択ノードを新たな根ノードとする。
Ｓ４１にて、データ削除部２３は、選択ノードの親ノード（中間ノード）の子ノード数が子要素数下限数未満であるか否かを判定する。ここでも、データ削除部２３は、選択ノードの親ノードの最古時間ｔ１が前回統合閾時刻３４以前であれば、統合対象ノードの子要素数下限数を用いて判定を行う一方、選択ノードの最古時間ｔ１が前回統合閾時刻３４よりも新しければ、検索優先ノードの子要素数下限数を用いて判定を行う。子要素数下限数未満であるときには（Ｙｅｓ）、Ｓ４２に進む一方、子ノード数が子要素数下限数以上であるときには（Ｎｏ）、処理を終了する。
【００５９】
Ｓ４２にて、データ削除部２３は、選択ノードの親ノード（中間ノード）を選択ノードとし、Ｓ３４に戻る。
【００６０】
次に、インデックス編成部２４、統合閾時刻管理部２５及び統合対象判定部２６によるインデックス編成処理の一例について、図１０〜図１１を用いて説明する。インデックス編成処理は、例えばタイマ設定によって所定時間ごとに実行される。
【００６１】
Ｓ５１にて、統合閾時刻管理部２５は、現在時刻を統合開始時刻Ｔとし、統合開始時刻Ｔに基づき、統合閾時刻Ｔ１を決定する。具体的には、統合開始時刻Ｔから、検索優先期間３２を差し引いた時刻を、統合閾時刻Ｔ１として決定する。なお、統合開始時刻Ｔ及び統合閾時刻Ｔ１は、一時的に記憶装置に保持しておく（図３において図示省略）。
【００６２】
Ｓ５２にて、インデックス編成部２４は、根ノードを選択する。
Ｓ５３にて、統合対象判定部２６は、選択ノードの矩形領域における時間軸の最古時刻ｔ１が、統合閾時刻Ｔ１よりも新しいか否かを判定する。この判定は、すなわち、選択ノードの管理領域である矩形領域の時間軸における範囲が、優先範囲に含まれているか否かの判定である。時間軸の最古時刻ｔ１が統合閾時刻Ｔ１以前のときには（Ｎｏ）、Ｓ５４に進む一方、最古時刻ｔ１が統合閾時刻Ｔ１よりも新しいと判定されたとき（Ｙｅｓ）には、Ｓ５５に進む。なお、時間軸の最古時刻ｔ１が統合閾時刻Ｔ１以前であるときとは、すなわち、選択ノードが統合対象ノードとなり得るということであり、最古時刻ｔ１が統合閾時刻Ｔ１よりも新しいときとは、すなわち、選択ノードは統合対象外となるということである。
【００６３】
Ｓ５４にて、統合対象判定部２６は、選択したノードの矩形領域における時間軸の最新時刻ｔ２が、前回統合閾時刻３４（Ｔ０）以前か、すなわち、前回の統合処理で統合対象となっていたか否かを判定する。最新時刻ｔ２が前回統合閾時刻３４（Ｔ０）より後のときには（Ｎｏ）、Ｓ５９に進む。この場合、選択ノードは統合処理の対象となる。一方で、最新時刻ｔ２が前回統合閾時刻３４（Ｔ０）以前と判定されたときには（Ｙｅｓ）、選択ノードは統合処理の対象外となり、Ｓ５５に進む。
【００６４】
Ｓ５５にて、インデックス編成部２４は、選択ノードを処理済みとする。
Ｓ５６にて、インデックス編成部２４は、選択ノードの全ての兄弟ノードが処理済みか否かを判定する。インデックス編成部２４は、全ての兄弟ノードが処理済みのときには（Ｙｅｓ）、Ｓ５７に進み、兄弟ノードのいずれかが処理済みでないときには（Ｎｏ）、Ｓ５８に進む。
【００６５】
Ｓ５７にて、インデックス編成部２４は、選択ノードの親ノードを選択ノードとして、Ｓ５３に戻る。
Ｓ５８にて、インデックス編成部２４は、次の兄弟ノードを選択ノードとして、Ｓ５３に戻る。
【００６６】
Ｓ５９にて、インデックス編成部２４は、選択ノードの子ノードに未処理のものがあるか否かを判定する。未処理の子ノードがあれば（Ｙｅｓ）、Ｓ６０に進み、未処理の子ノードがなければ（Ｎｏ）、Ｓ６１に進む。
【００６７】
Ｓ６０にて、インデックス編成部２４は、未処理の子ノードを１つ選択して、Ｓ５３に戻る。
Ｓ６１にて、インデックス編成部２４は、選択ノードが根ノードであるか否かを判定する。選択ノードが根ノードであれば（Ｙｅｓ）、Ｓ６２に進む一方、選択ノードが根ノードでなければ（Ｎｏ）、Ｓ６３に進む。
【００６８】
Ｓ６２にて、インデックス編成部２４は、記憶装置２の前回統合閾時刻３４（Ｔ０）を、統合閾時刻Ｔ１で更新する。
【００６９】
Ｓ６３にて、インデックス編成部２４は、選択ノードの子ノード数又は保持データ数が統合対象ノードの子要素数下限数未満であるか否かを判定する。選択ノードの子ノード数又は保持データ数が子要素数下限数未満であるときには（Ｙｅｓ）、Ｓ６４に進み、子ノード数又は保持データ数が統合対象ノードの子要素数下限数未満でないときには（Ｎｏ）、Ｓ６６に進む。
【００７０】
Ｓ６４にて、インデックス編成部２４は、選択ノードの兄弟ノードのうち、矩形領域の最古時刻ｔ１が統合閾時刻Ｔ１以前のノードであって、選択ノードの矩形領域に対する統合結果のノードの矩形領域の拡大量が最小のノードを、統合相手ノードとして決定する。換言すれば、ここで統合相手ノードとして選択される兄弟ノードは、優先範囲に含まれないノードであって、統合結果のノードの矩形領域の大きさと選択ノードの矩形領域の大きさとの差分が最小となる兄弟ノードである。
【００７１】
Ｓ６５にて、インデックス編成部２４は、選択ノードを被統合ノードとし、選択ノードに統合相手ノードとを統合する。具体的には、統合相手ノードの子ノードを、選択ノードの子ノードに追加し、選択ノードの親ノードの子ノードから、統合相手ノードを削除する。そして、Ｓ６３に戻る。
【００７２】
Ｓ６６にて、インデックス編成部２４は、選択ノードの子ノード数又は保持データ数が統合対象ノードの子要素数上限数を超えているか否かを判定する。選択ノードの子ノード数又は保持データ数が子要素数上限数を超えているときには（Ｙｅｓ）、Ｓ６７に進み、子ノード数又は保持データ数が子要素数上限数を超えていないときには（Ｎｏ）、Ｓ５５に戻る。
【００７３】
Ｓ６７にて、インデックス編成部２４は、選択ノード（すなわち統合結果のノード）を再分割する。具体的には、インデックス編成部２４は、分割後の２つのノードの矩形領域の大きさの和が最小となるように、選択ノードを分割し、分割の結果新たに作成したノードを、選択ノードの親ノードに追加する。
【００７４】
次に、データ検索システムで実行される前述のインデックス編成処理が実行される場合のデータ具体例につき、図２に示したインデックスをさらに編成する例を用いて説明する。
【００７５】
本具体例では、記憶手段に格納されたデータが、図４に示す内容であるとする。すなわち、検索優先期間３２が「９０日」、検索優先ノードの子要素数上限数が「６」、子ノード数下限数が「２」、統合対象ノードの子要素数上限数が「１０」、子ノード数下限数が「１０」である。さらに、前回統合閾時刻３４（Ｔ０）が「２０１０年１２月１０日０時０分」である。
【００７６】
そして、「２０１０年４月１０日０時０分」が統合処理開始時刻Ｔであるとする。この場合、統合閾時刻Ｔ１は、統合処理開始時刻Ｔから９０日を差し引いた「２０１０年１月１０日０時０分」となる。
【００７７】
そして、根ノード［Ｒ０］から順に子ノードを辿り、統合対象ノードであるか否かを判定していく。このとき、未処理の子ノードがあるときには、親ノードの統合処理よりも前に子ノードについて処理を行うため、子ノードである［Ｒ１］〜［Ｒ３］につき、判定処理を行う。ここで、［Ｒ１］及び［Ｒ２］は、矩形領域の時間軸の値の範囲のうち、最古時間ｔ１が、それぞれ「２０１０年２月１５日０時０分」及び「２０１０年２月１日０時０分」であるとする。この場合、いずれも統合閾時刻Ｔ１より新しいので、統合処理の対象外となる。一方、［Ｒ３］は、最古時間ｔ１が「２０１０年１月１日０時０分」である一方、最新時間ｔ２が「２０１０年２月１日０時０分」とする。この場合、最古時間ｔ１が統合閾時刻Ｔ１以前であり、かつ、最新時間ｔ２が前回統合閾時刻３４（Ｔ０）よりも新しいので、さらに［Ｒ３］の子ノード［Ｒ３１］〜［Ｒ３４］について判定処理を行う。
【００７８】
ここで、［Ｒ３１］〜［Ｒ３４］のうち、［Ｒ３１］の最古時間ｔ１が統合閾時刻Ｔ１以前であり、最新時間ｔ２が前回統合閾時刻（Ｔ０）よりも新しいとする。このため、［Ｒ３１］は、統合対象とする。ここで、［Ｒ３１］の保持データが［Ｄ３１１］〜［Ｄ３１２］の２つであるとすると、統合対象ノードの下限数である「１０」より小さい。このため、［Ｒ３１］を、他の兄弟ノードと統合する。ここで、［Ｒ３２］も、最古時間ｔ１が統合閾時刻Ｔ１以前であり、最新時間ｔ２が前回統合閾時刻Ｔ０よりも新しいとする。この場合、［Ｒ３２］が統合相手ノードとなり、［Ｒ３１］に［Ｒ３２］を統合する。具体的には、［Ｒ３２］の保持データ［Ｄ３２１］〜［Ｄ３２２］を、［Ｒ３１］の子ノードに追加する。そして、［Ｒ３２］を、［Ｒ３］の子ノードから削除する。ここで、［Ｒ３１］の保持データは、まだ統合対象ノードの下限数である「１０」より小さいが、［Ｒ３３］及び［Ｒ３４］は、いずれも最古時間ｔ１が統合閾時刻Ｔ１よりも新しいとする。この場合、［Ｒ３３］〜［Ｒ３４］は、統合処理の対象外となり、他に統合相手ノードとなるノードがないため、統合処理を終了する。
【００７９】
さらに、［Ｒ４］は、最古時間ｔ１が統合閾時刻Ｔ１以前であるが、最新時刻ｔ２が、前回統合閾時刻３４（Ｔ０）よりも後であるとする。このため、［Ｒ４］も対象外となる。すなわち、［Ｒ３］は、統合対象ノードであるが、兄弟ノードである［Ｒ１］、［Ｒ２］及び［Ｒ４］のいずれも統合対象とならないため、統合処理は行わない。
【００８０】
そして、根ノードが選択され、全ての子ノードの処理が終了したので、前回統合閾時刻３４（Ｔ０）を統合閾時刻Ｔ１に書き換えて、処理を終了する。
【００８１】
かかるデータ管理装置における処理によれば、検索頻度の高い新しい時間の範囲（優先範囲）内の子ノード数の制限数よりも、優先範囲外の古い時間の子ノード数の制限数を予め大きく設定しておくことで、次のような作用を奏する。すなわち、古い時間の座標情報を管理するノードの子ノード数が多い一方で、新しい時間の座標情報を管理するノードの子ノード数や保持データ数が少ないインデックスが編成される。このため、頻繁に検索対象となる新しい時間を検索範囲とした検索において、アクセスするノードの数が低減され、検索における計算量が削減される。したがって、頻度の高い検索処理の高速化を実現することができる。
【００８２】
特に、Ｒ−Ｔｒｅｅ構造のインデックスでは、各ノードが管理する矩形領域が相互に重なる場合がある。このため、検索における計算量として、検索範囲と矩形領域とが重なる根ノード及び中間ノードの子ノード数の総和に等しい回数の重なり判定を要する。さらには、同じく検索範囲と矩形領域とが重なる葉ノードの座標情報の総数に等しい回数の検索範囲内外判定を要する。この点につき、前述のように検索頻度の高い検索範囲のノード数が低減されることにより、検索処理の高速化に大きな効果が得られることが期待できる。
【００８３】
なお、前述の実施形態では、インデックス編成処理を所定時間ごとに行っているが、例えばオペレータ等により、ノード統合指示の入力がなされ、データ管理装置において当該入力を受け付けた時などに実行されてもよい。さらに、ノート統合処理は、例えば、記憶装置２に設定された子要素数制限数３３が変更されたことを契機として実行されてもよい。
【００８４】
また、優先範囲を決定するための次元軸は時間軸に限らずいかなる次元軸であってもよく、優先範囲も任意に定めることが可能である。
【００８５】
なお、あるノードの管理領域の所定軸における範囲が優先範囲に含まれているか否かの判定は、同時に、当該範囲が優先範囲に含まれていないか、すなわち、優先範囲外であるか否かを判定していることでもあり、両者は実質的に同義である。
【００８６】
［３．第２実施形態］
次に、第２実施形態について説明する。第２実施形態では、座標情報の検索条件として指定される検索範囲の平均値における各軸の範囲の比率（例えば、幅（Ｘ軸）の範囲：高さ（Ｙ軸）の範囲：時間（Ｔ軸）の範囲）と、各ノードの矩形領域の各軸の値の範囲の比率とがより近くなるようにノードを統合することで、検索時にアクセスするノード数を減らし、検索における計算量をさらに抑制する。なお、以下の説明において、検索範囲の各軸の範囲を検索領域長といい、矩形領域の各軸の範囲を矩形領域長という。
【００８７】
このことを、図１２を用いて説明する。例えば、ノードＲ１〜ノードＲ５があり、各ノードの矩形領域が、それぞれＸ軸、Ｙ軸の座標空間において図１２に示す領域であるとする。ここで、図１２（Ａ）の場合、検索範囲が破線で示す領域であるとすると、検索範囲について検索を完了するためには、検索条件と重複する部分が存在する矩形領域を有するノード、すなわち、ノードＲ１〜ノードＲ５の全てにアクセスする必要が生じる。また、図１２（Ａ）のノードＲ１〜ノードＲ５の矩形領域のうち、網掛けで示す部分は、本来ならば検索対象から外れている部分である。しかし、これらの領域についても全て検索をする必要があるため、無駄な検索が多い。
【００８８】
一方で、図１２（Ｂ）の場合、検索条件と重複する部分が存在する矩形領域を有するノードは、ノードＲ２〜Ｒ４の３つのみである。このため、検索範囲について検索を完了するためには、ノードＲ２〜Ｒ４にアクセスすればよい。また、検索対象から外れている斜線部分の領域も少なく、無駄な検索が少ない。
【００８９】
ここで、図１２（Ａ）及び図１２（Ｂ）を比較すると、図１２（Ｂ）の各ノードの矩形領域の形状のほうが、図１２（Ａ）の各ノードの矩形領域の形状よりも、検索範囲の形状に近い。ここで、本明細書では、座標空間の領域が各軸において占める範囲を領域長といい、各ノードの矩形領域の各軸における範囲を各軸の矩形領域長、検索範囲の領域の各軸における範囲を各軸の検索領域長という。この場合、図１２（Ｂ）の矩形領域における［Ｘ軸の矩形領域長：Ｙ軸の矩形領域長］の比率のほうが、図１２（Ａ）の各ノードの矩形領域における比率よりも、検索範囲における［Ｘ軸の検索領域長：Ｙ軸の検索領域長］の比率に近い。このように、検索条件が座標空間に占める検索範囲の各軸の検索領域長の比率と、各ノードの矩形領域の各軸の矩形領域長の比率とが近いほうが、検索においてアクセスすべきノード数が少なくて済み、検索における計算量が低減される傾向にある。このため、第２実施形態では、座標情報の検索において指定される検索条件が座標空間に占める検索範囲の平均値における各軸の検索領域長の比率と、各ノードの矩形領域における各軸の矩形領域長との比率とがより近くなるように、ノードの統合を行う。
【００９０】
そして、第２実施形態では、このようなノードの統合を、統合相手ノードを適切に選択することによって実現する。第２実施形態におけるデータ管理装置１０の構成及びデータ管理装置１０において実行される処理について、以下に説明する。なお、第１実施形態と同様の箇所については説明を省略する。
【００９１】
図１３は、第２実施形態に係るデータ検索システムの機能ブロック図を示す。
データ管理装置１０は、座標情報ＤＢ３１、検索優先期間３２、子要素数制限数３３、前回統合閾時刻３４及び検索履歴ＤＢ３５を有する。また、データ管理装置１０は、制御部３０である、データ検索部２１０、データ追加部２２、データ削除部２３０、インデックス編成部２４０、統合閾時刻管理部２５、統合対象判定部２６及び補正選択部２７を有する。
【００９２】
座標情報ＤＢ３１、検索優先期間３２、子要素数制限数３３、前回統合閾時刻３４、データ追加部２２、統合閾時刻管理部２５及び統合対象判定部２６については、第１実施例と同様であるため、説明を省略する。
【００９３】
検索履歴ＤＢ３５は、座標空間における各軸の検索条件として指定された検索範囲を蓄積するデータベースであり、図１４に示すように、識別番号と、時間と、緯度及び経度の項目を有する。
【００９４】
データ検索部２１０は、第１実施例のデータ検索部２１における処理に加え、オペレータにより指定された検索範囲を検索履歴ＤＢ３５に蓄積する処理を行う。
【００９５】
データ削除部２３０は、データ削除処理に伴うノード統合において、後述する補正選択部２７と連係して統合相手ノードを選択し、ノード統合を行う。
【００９６】
インデックス編成部２４０も、ノード統合において、後述する補正選択部２７と連係して統合相手ノードを選択し、ノード統合を行う。
【００９７】
補正選択部２７は、ノード統合において、被統合ノードに対する統合相手ノードとなり得るノードのそれぞれにつき、統合結果のノードの矩形領域から補正領域を作成し、この補正領域を用いて統合相手ノードを選択する。
【００９８】
次に、データ管理装置１０において実行される各処理のうち、データ検索部２１０、データ削除部２３０、インデックス編成部２４０及び補正選択部２７により実行される処理につき、図１５〜図１８を参照しつつ説明する。
【００９９】
まず、データ検索部２１０によるデータ検索処理について、図１５のフローチャートを用いて説明する。なお、Ｓ１〜Ｓ８は、第１実施例と同様であるため、説明を省略する。
【０１００】
Ｓ９では、データ検索部２１０は、検索条件として指定された検索範囲に識別番号を付し、検索履歴ＤＢ３５に蓄積する。
【０１０１】
次に、データ削除部２３０によるデータ削除処理について、図１６のフローチャートを用いて説明する。なお、Ｓ３１〜Ｓ３３は、第１実施例と同様であるため、説明を省略する。
【０１０２】
Ｓ３４０にて、データ削除部２３０は、選択ノードの兄弟ノードのうち、選択ノードの矩形領域に対する統合結果ノードの矩形領域の拡大量が、所定の補正をした結果最小のノードを、統合相手ノードとして選択する。この処理は、後述する補正選択部２７による補正領域作成処理に相当する。
【０１０３】
Ｓ３５〜Ｓ４２も、第１実施例と同様であるため、説明を省略する。
【０１０４】
次に、インデックス編成部２４０、統合対象判定部２６及び統合閾時刻管理部２５によるインデックス編成処理の一例について、図１７のフローチャートを用いて説明する。なお、第１実施例のインデックス編成部２４０の処理のうち、図１０に示すＳ５１〜Ｓ６２は、第２実施例においても同様であるため、図示及び説明を省略する。また、図１８のうち、Ｓ６３は、第１実施例と同様であるため、説明を省略する。
【０１０５】
Ｓ６４０にて、インデックス編成部２４０は、選択ノードの兄弟ノードのうち、矩形領域の最古時刻ｔ１が統合閾時刻Ｔ１以前のノードを選択する。
【０１０６】
Ｓ６４１にて、Ｓ６４０で選択したノードのうち、選択ノードの矩形領域に対する統合結果ノードの矩形領域の拡大量が、所定の補正をした結果最小のノードを、統合相手ノードとして選択する。この処理は、後述する補正選択部２７による補正領域作成処理に相当する。
Ｓ６５〜Ｓ６７も、第１実施例と同様であるため、説明を省略する。
【０１０７】
次に、補正選択部２７による補正選択処理について、図１８のフローチャートを用いて説明する。
【０１０８】
Ｓ７１にて、補正選択部２７は、検索履歴ＤＢ３５に蓄積された各軸の検索範囲に基づき、検索範囲の平均値を算出する。
【０１０９】
Ｓ７２にて、補正選択部２７は、選択ノードの兄弟ノードの全てにつき、補正領域における拡大量を計算済みであるか否かを判定する。計算済みであれば（Ｙｅｓ）、Ｓ７８に進む一方、計算済みでなければ（Ｎｏ）、Ｓ７３に進む。
Ｓ７３にて、補正選択部２７は、選択ノードの兄弟ノードを１つ選択する。
【０１１０】
Ｓ７４にて、補正選択部２７は、検索範囲の平均値の各軸における検索領域長の比率と、選択兄弟ノードを選択ノードに統合した場合における統合結果ノードの矩形領域の各軸における矩形領域長の比率と、の比較結果を表す領域長比を算出する。具体的には、補正選択部２７は、領域長比を、各軸の検索領域長の比率と、ノードの矩形領域における各軸の矩形領域長の比率との対比において、一方を他方で除算することで算出する。例えば、各軸を０〜ｎで表し、検索範囲の平均値 (Search Average) を (SA0, SA1……, SAn)、統合結果のノードの矩形領域 (Node Rectangle)を (NR0, NR1……, NRn)とする。この場合、領域長比は、(SA0/NR0, SA1/NR1, ……, SAn/NRn) となる。さらに、領域長比を正規化した正規化領域長比ｋを、この比率が最小の値を1とするように全体を除算することによって算出する。SAi/NRiの最小値をRminとすると、正規化領域長比ｋは (SA0/NR0/Rmin, SA1/NR1/Rmin, SAn/NRn/Rmin) となる。
【０１１１】
Ｓ７５にて、補正選択部２７は、選択した兄弟ノードの矩形領域を選択ノードの矩形領域に追加した矩形領域を特定する。
【０１１２】
Ｓ７６にて、補正選択部２７は、Ｓ７５で特定した矩形領域のうち、選択ノードの矩形領域を超える部分の矩形領域につき、各軸の矩形領域長を、正規化した領域長比で除算した補正領域を計算する。かかる計算により、検索条件が座標空間に占める検索範囲の平均値における各軸の検索領域長の比率と、各ノードの矩形領域における各軸の矩形領域長との比率との差が大きい軸方向ほど、補正による圧縮率が高くなる。
【０１１３】
Ｓ７７にて、補正選択部２７は、補正領域と選択ノードの矩形領域との大きさの差分、すなわち、拡大量を計算する。なお、補正選択部２７は、この拡大量を、兄弟ノードごとに一時記憶に蓄積しておく。
【０１１４】
Ｓ７８にて、補正選択部２７は、統合結果ノードの矩形領域の補正領域が、選択ノードの矩形領域に対して最も拡大量の少ない兄弟ノードを統合相手ノードとして選択する。
【０１１５】
この正規化領域長比を用いて拡大領域の計算を補正する具体例を、図１９に示す。説明の簡略化のため、図１３の例では、座標情報の次元軸が、高さ及び時間の２次元であるものとする。
【０１１６】
まず、検索範囲の平均値８００が、高さ＝４２ｍ、時間＝３０分であるとする。一方、被統合ノード８０１の矩形領域の各軸の長さが、高さ＝２１ｍ、時間＝４分であるとする。この場合、検索範囲の平均値８００と被統合ノード８０１との各軸の領域長比は、［２（４２ｍ／２１ｍ）：７．５（３０分／４分）］となり、正規化領域長比は、［１（２／２）：３．７５（７．５／２）］となる。
【０１１７】
そして、単に、被統合ノード８０１の矩形領域を、統合相手ノード８０２の矩形領域を含むように拡大すると、統合結果のノード８０３となる。そして、被統合ノード１０１に対する統合結果のノード８０３の拡大面積は、（５１−０）×（３３−２０）−（４２−０）×（２４−２０）＝４９５となる。
【０１１８】
一方、統合結果のノード８０３につき、補正領域８０４を算出すると、次のようになる。すなわち、正規化領域長比である［１：３．７５］を用いて、被統合ノード８０１の範囲を超えた部分に対して、高さ方向は１を、時間方向は３．７５を除算する。その結果、統合ノードの高さは４２＋（５１−４２）÷１＝５１となり、時間は２４＋（３３−２４）÷３．７５＝２６．４となる。そして、被統合ノード１０１に対する補正領域１０３の拡大面積は、（５１−０）×（２６．４−２０）−（４２−０）×（２４−２０）＝１５８．４となる。
【０１１９】
このように、第２実施形態によれば、領域長比の長い方向へ拡大する統合相手ノードを統合したときの統合結果ノードの矩形領域のほうが、より小さく圧縮されるように補正される。このため、被統合ノードの矩形領域に対する統合結果のノードの矩形領域の拡大量が小さいノードを統合対象ノードとして選択する処理において、統合結果のノードが、統合結果のノードの矩形領域と検索範囲の平均値との領域比がより大きい軸（すなわち、検索範囲の平均値との差が大きい軸）に広がるような統合相手ノードが選択されやすくなる。その結果、座標情報の検索において指定される検索条件が座標空間に占める検索範囲の平均値における各軸の検索領域長の比率と、各ノードの矩形領域における各軸の矩形領域長との比率とがより近くなるように、ノードの統合が行われる。したがって、座標情報の検索においてアクセスするノードの数が低減され、検索における計算量がさらに抑制されることとなり、検索処理の高速化を図ることができる。
【０１２０】
［４．第３実施形態］
次に、第３実施形態について説明する。第３実施形態では、オペレータにより予め設定された検索優先期間３２に基づいて統合閾時刻を決定するのではなく、記憶装置に蓄積した検索履歴を用いて統合閾時刻を決定する。換言すれば、第３実施形態では、記憶装置に蓄積した検索履歴を用いて、優先範囲を決定する。
【０１２１】
このような動作を実現する、第３実施形態におけるデータ管理装置の構成及びデータ管理装置において実行される処理の一例について、以下に説明する。なお、この第３実施形態は、第２実施形態に前述の機能を加えた実施形態として説明する。以下、第２実施形態と同様の箇所については説明を省略する。
【０１２２】
図２０は、第３実施例に係るデータ検索システムの機能ブロック図を示す。
【０１２３】
データ管理装置１００は、座標情報ＤＢ３１、検索優先割合３６、子要素数制限数３３、前回統合閾時刻３４及び検索履歴ＤＢ３５を有する。また、データ管理装置１００は、制御部３００である、データ検索部２１０、データ追加部２２、データ削除部２３０、インデックス編成部２４０、統合閾時刻管理部２５０、補正選択部２７を有する。
【０１２４】
座標情報ＤＢ３１、子要素数制限数３３、前回統合閾時刻３４、検索履歴ＤＢ３５、データ検索部２１０、データ追加部２２、データ削除部２３０及びインデックス編成部２４０については、第２実施例と同様であるため、説明を省略する。
【０１２５】
第３実施形態では、データ管理装置１００は、第２実施形態の検索優先期間３２の代わりに、検索優先割合３６を有している。検索優先割合３６は、オペレータにより予め設定される値である。
【０１２６】
統合閾時刻管理部２５０は、検索優先割合３６及び検索条件履歴テーブルに蓄積された検索履歴に基づいて、統合閾時刻を決定する。
【０１２７】
次に、インデックス編成部２４０、統合対象判定部２６及び統合閾時刻管理部２５０により実行されるインデックス編成処理のうち、統合閾時刻管理部２５０による処理の一例につき、図２１のフローチャートを参照しつつ説明する。
【０１２８】
Ｓ５１０にて、統合閾時刻管理部２５０は、検索履歴ＤＢ３５に格納された検索履歴を時間軸の検索範囲でソートする。そして、検索履歴全体のなかで時間軸の検索範囲が大きい方（すなわち新しい方）から数えて検索優先割合３６の件数に含まれる検索履歴の検索範囲を、優先範囲とする。そして、優先範囲に含まれる検索履歴のうち、最も古い時間を指定した検索履歴の検索時間における最古時刻ｔ０を、統合閾時刻とする。
【０１２９】
Ｓ５１〜Ｓ６２は、第２実施形態と同様であるため、説明を省略する。また、第２実施形態のインデックス編成処理のうち、図１０に示すＳ６３〜Ｓ６７は、第３実施形態においても同様であるため、図示及び説明を省略する。
【０１３０】
ここで、第３実施形態の処理につき、図１４のデータ具体例を用いて説明する。
【０１３１】
例えば、検索履歴が図１４に示す内容であり、時間軸を用い、時間が新しい方から優先範囲を決定するとする。そして、優先範囲を決定するために用いる所定の割合を８割とする。図１４の例で、全ての検索履歴を時間軸でソートし、直近の８割を含む範囲を優先範囲とすると、検索履歴は４５４０件あるため、時間が新しい方から数えて８割の件数（３６３２件）に含まれる検索履歴、すなわち、識別番号が４５４０〜９０９の検索履歴における時間が、優先範囲となる。このため、優先範囲と統合対象範囲の境界値として、２０１０／１／１を、統合閾時刻とする。
【０１３２】
かかる第３実施形態によれば、例えば時間軸に基づいて優先範囲を決定する場合において、統合閾時刻（すなわち優先範囲が特定される値）が、実際の検索履歴で指定された検索条件に応じて決定される。ここで、例えば、直近のある一定期間の座標情報の利用頻度が著しく高いとオペレータ等が想定していても、実際には、直近の座標情報の検索頻度が想定しているほど高くなく、逆にその前の期間についても比較的頻繁に検索がなされている可能性もある。このような場合に、検索優先期間を固定値で設定すると、実は検索頻度が高い範囲のノードが統合対象となってしまう可能性がある。これに対し、第３実施形態では、検索履歴全体に対する件数の割合に基づいて優先範囲を決定するため、直近の検索件数が少ないときには、さらに過去に遡った検索履歴の検索範囲が、優先範囲に入る可能性がある。このように、第３実施形態では、検索状況に流動的に対応してインデックスを編成することができる。
【０１３３】
なお、優先範囲を決定するための次元軸は時間軸に限らず、いかなる次元軸であってもよい。すなわち、検索履歴を所定軸の検索範囲でソートし、検索履歴全体のなかで当該所定軸の検索範囲が大きい方又は小さい方から数えて所定の割合の件数に含まれるか否かで、優先範囲とするか優先範囲以外とするかが決定されればよい。また、次元軸の時間軸以外の例として、緯度と経度を用いても良い。また、座標情報は、時空間を表す座標に限るものではなく、気象情報、運航情報、圃場情報、商品情報などの多次元情報に適用しても良い。例えば、気象情報であれば、日照量、降雨量、風速、風向、気温、気圧、マグニチュードを次元軸に用いても良い。運航情報であれば、速度、進行方向、加速度、積載重量を次元軸に用いても良い。圃場情報であれば、圃場水位、土中水分量、有機物含量、土壌電気伝導度、土壌ｐＨ、土壌硬度を次元軸に用いても良い。商品情報であれば、商品の価格、商品の割引率、商品の陳列高さ、商品前を単位時間に通過する人数、商品前を通過する人の速度を次元軸に用いても良い。
【０１３４】
また、この第３実施形態の統合閾時刻管理部２５０及びこの統合閾時刻管理部２５０で実行される処理は、第２実施形態で説明した補正選択部２７の有無に関わらず、データ管理装置１００において実装可能である。
【０１３５】
なお、第１実施形態及び補正選択部２７が無い構成とした場合の第３実施形態は、必ずしもＲ−Ｔｒｅｅ構造のインデックスでなく、例えば、管理領域が１次元のＢ−Ｔｒｅｅ構造のインデックス等においても、技術的に適用することは可能である。
【０１３６】
［５．ハードウェア構成］
図２２は、上述したデータ管理装置の各実施形態が具現化された情報処理装置のハードウェア構成の一例を示す。本情報処理装置は、プロセッサ９０１、メモリ９０２、ストレージ９０３、可搬記憶媒体駆動装置９０４、入出力装置９０５及び通信インタフェース９０６を備える。
【０１３７】
プロセッサ９０１は、制御ユニット、演算ユニット及び命令デコーダ等を含み、実行ユニットが、命令デコーダで解読されたプログラムの命令に従い、制御ユニットより出力される制御信号に応じ、演算ユニットを用いて算術・論理演算を実行する。かかるプロセッサ９０１は、制御に用いる各種情報が格納される制御レジスタ、既にアクセスしたメモリ２等の内容を一時的に格納可能なキャッシュ、及び、仮想記憶のページテーブルのキャッシュとしての機能を果たすＴＬＢを備える。なお、プロセッサ９０１は、ＣＰＵ（Central Processing Unit）コアが複数設けられている構成でもよい。
【０１３８】
メモリ９０２は、例えばＲＡＭ（Random Access Memory）等の記憶装置であり、プロセッサ９０１で実行されるプログラムがロードされるとともに、プロセッサ９０１の処理に用いるデータが格納されるメインメモリである。また、ストレージ９０３は、例えばＨＤＤ（Hard Disk Drive）やフラッシュメモリ等の記憶装置であり、プログラムや各種データが格納される。可搬記憶媒体駆動装置９０４は、可搬記憶媒体９０７に記憶されたデータやプログラムを読み出す装置である。可搬記憶媒体９０７は、例えば磁気ディスク、光ディスク、光磁気ディスク又はフラッシュメモリ等である。なお、プロセッサ９０１は、メモリ９０２やストレージ９０３と協働しつつ、ストレージ９０３や可搬記憶媒体９０７に格納されたプログラムを実行する。なお、プロセッサ９０１が実行するプログラムや、アクセス対象となるデータは、当該情報処理装置と通信可能な他の装置に格納されていてもよい。
【０１３９】
入出力装置９０５は例えばキーボード等やディスプレイ等であり、ユーザ操作等による動作命令を受け付ける一方、情報処理装置による処理結果を出力する。通信インタフェース９０６は例えばＬＡＮ（Local Area Network）カード等であり、外部とのデータ通信を可能にする。上述した情報処理装置の各構成要素は、バス９０８で接続されている。
【０１４０】
なお、上述した各実施形態において、記憶装置に格納されたデータは、データ管理装置とは異なる他の装置に含まれる記憶装置に含まれていてもよい。この場合、データ管理装置と当該他の装置とが通信可能にネットワーク接続され、データ管理装置は、ネットワークを介して当該他の装置の記憶装置にアクセスすることとなる。
【０１４１】
また、上述した情報処理装置の機能的構成及び物理的構成は、上述の態様に限るものではなく、例えば、各機能や物理資源を統合して実装したり、逆に、さらに分散して実装したりすることも可能である。
【符号の説明】
【０１４２】
１，１０，１００…データ管理装置、２，２０，２００…制御部、３，３０，３００…記憶装置、２１，２１０…データ検索部、２２…データ追加部、２３，２３０…データ削除部、２４，２４０…インデックス編成部、２５，２５０…統合閾時刻管理部、２６…統合対象判定部、２７…補正選択部、３１…座標情報ＤＢ、３２…検索優先期間、３３…子要素数制限数、３４…前回統合閾時刻、３５…検索履歴ＤＢ、３６…検索優先割合
【図１】
0005578121.tif 000002
【図２】
0005578121.tif 000003
【図３】
0005578121.tif 000004
【図４】
0005578121.tif 000005
【図５】
0005578121.tif 000006
【図６】
0005578121.tif 000007
【図７】
0005578121.tif 000008
【図８】
0005578121.tif 000009
【図９】
0005578121.tif 000010
【図１０】
0005578121.tif 000011
【図１１】
0005578121.tif 000012
【図１２】
0005578121.tif 000013
【図１３】
0005578121.tif 000014
【図１４】
0005578121.tif 000015
【図１５】
0005578121.tif 000016
【図１６】
0005578121.tif 000017
【図１７】
0005578121.tif 000018
【図１８】
0005578121.tif 000019
【図１９】
0005578121.tif 000020
【図２０】
0005578121.tif 000021
【図２１】
0005578121.tif 000022
【図２２】
0005578121.tif 000023