(57)【特許請求の範囲】
【請求項１】
属性とその属性値とからなる組を少なくとも１つ含むデータの集合を、UBI-Tree構造により記憶し管理するデータ索引装置であって、
前記データ集合と、前記UBI-Tree構造と、前記データ集合に含まれる属性の各々が検索条件に用いられた頻度を含む検索履歴を少なくとも記憶する記憶手段と、
前記UBI-Tree構造中に新規データを挿入する際に、当該新規データに含まれる属性の各々が検索条件に用いられる確率を、前記記憶手段に記憶された検索履歴に含まれる頻度を考慮して算出し、当該算出された確率に基づいて前記UBI-Tree構造へのデータ挿入アルゴリズムにおけるペナルティを算出して新規データの挿入処理を行うデータ挿入手段と
を具備することを特徴とするデータ索引装置。
【請求項２】
前記データ挿入手段は、新規データに含まれる属性をＸとしたとき、当該属性Ｘが検索条件に用いられる確率を、前記検索履歴に含まれる全属性の頻度の総数に対する前記検索履歴に含まれる属性Ｘの頻度の割合として算出することを特徴とする請求項１記載のデータ索引装置。
【請求項３】
前記記憶手段は、前記データ集合に含まれる属性の各々についてその出現頻度と属性値を関連付けた属性表を、さらに記憶し、
前記データ挿入手段は、前記UBI-Tree構造中に新規データを挿入する際に、前記記憶手段に記憶された検索履歴及び属性表に基づいて、前記検索条件に用いられた頻度が予め定めたしきい値より高い属性が、挿入されたデータのうち所定数以上に含まれているか否かを判定し、含まれている場合には次元抑制ペナルティを無効化して新規データの挿入処理を行うことを特徴とする請求項１又は２記載のデータ索引装置。
【請求項４】
コンピュータ及び記憶手段を備え、属性とその属性値とからなる組を少なくとも１つ含むデータの集合を、UBI-Tree構造により記憶し管理する装置が実行するデータ索引方法であって、
少なくとも、前記データ集合と、前記UBI-Tree構造と、前記データ集合に含まれる属性の各々が検索条件に用いられた頻度を含む検索履歴を、前記記憶手段に記憶させる過程と、
前記UBI-Tree構造中に新規データを挿入する際に、当該新規データに含まれる属性の各々が検索条件に用いられる確率を、前記記憶手段に記憶された検索履歴に含まれる頻度を考慮して算出し、当該算出された確率に基づいて前記UBI-Tree構造へのデータ挿入アルゴリズムにおけるペナルティを算出して新規データの挿入処理を行う過程と
を具備することを特徴とするデータ索引方法。
【請求項５】
前記新規データの挿入処理を行う過程は、新規データに含まれる属性をＸとしたとき、当該属性Ｘが検索条件に用いられる確率を、前記検索履歴に含まれる全属性の頻度の総数に対する前記検索履歴に含まれる属性Ｘの頻度の割合として算出することを特徴とする請求項４記載のデータ索引方法。
【請求項６】
前記データ集合に含まれる属性の各々についてその出現頻度と属性値を関連付けた属性表を前記記憶手段に記憶させる過程を、さらに備え、
前記新規データの挿入処理を行う過程は、前記UBI-Tree構造中に新規データを挿入する際に、前記記憶手段に記憶された検索履歴及び属性表に基づいて、前記検索条件に用いられた頻度が予め定めたしきい値より高い属性が、挿入されたデータのうち所定数以上に含まれているか否かを判定し、含まれている場合には次元抑制ペナルティを無効化して新規データの挿入処理を行うことを特徴とする請求項４又は５記載のデータ索引方法。
【請求項７】
請求項１乃至３の何れかに記載のデータ索引装置が具備する各手段の処理を、当該データ索引装置が備えるコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、木構造索引を用いてデータの挿入及び検索を行うデータ索引装置、データ索引方法及びプログラムに関する。
【背景技術】
【０００２】
従来、データベース技術分野において、検索を高速化するための技術としてB-TreeやR-Treeなど木構造をもつ索引技術が種々提案されている。その１つとして、センサの計測データのような情報、すなわちセンサ情報などの多様な属性と属性値の組（key-value pairとも呼ばれる）を１つ以上含むデータに対する索引技術として、UBI-Tree（特許文献１）がある。UBI-Treeを使用すると、例えば「センサＩＤ＝１、時間＝３、温度＝２０」のようにセンサＩＤと時間と温度という３つの属性を含むデータと、「センサＩＤ＝３、時間＝７、照度＝６、音量＝４」のようにセンサＩＤと時間と照度と音量という４つの属性を含むデータを１つの索引に効率的に索引付けすることができる。
【０００３】
ところで、UBI-Treeにおいては、新規データの索引付けを行う際、つまりUBI-Treeの木構造に対して新規データの挿入を行う際に、他の多くの木構造の索引技術と同様に、ルートノードから、挿入先ノード選択アルゴリズムに基づいて似たデータを保持する子ノードを選択しながらノードを辿り、辿り着いたリーフノードに新規データを保持させる。ここで、似たデータとは、新規データとの間で属性の種類やその属性値が互いに近いデータを指す。
【０００４】
また、UBI-Treeの木構造に新規データを挿入することで、保持するデータの数、あるいは保持する子ノードの数が上限を越えるノードが発生した場合には、ノード分割アルゴリズムに基づいてノードを２つに分割し、この分割された２つのノードにデータまたは子ノードを分配する。このとき、似たデータ同士、あるいは似たデータを下位に保持する子ノード同士を同じノードに分配する。このようにすることで、互いに似たデータを同じリーフノード、あるいは同じ部分木に分類して保持することが可能となる。これにより、検索では類似したデータを取得するための条件が設定されることが多いため、検索条件に合致するデータが１つのリーフノード、あるいは１つの部分木に集まって存在することとなり、データが大量に存在する場合でも、特定のノードだけを辿り、効率的に検索条件に合致するデータを検索することができる。尚、検索条件を表記したものが検索式である。
【０００５】
上記挿入先ノードの選択アルゴリズムとノード分割アルゴリズムは、R-TreeにおいてはそれぞれChoose Subtree、Splitと呼ばれる。また、両アルゴリズムともペナルティと呼ばれる指標を用いる。挿入先ノード選択アルゴリズムは、新規データを挿入した際に、ペナルティの増分が最も少ないノードを選択するアルゴリズムである。またノード分割アルゴリズムは、分割後の２つのノードのペナルティの和が最も小さくなる分割方法を行うアルゴリズムである。
【０００６】
UBI-Treeにおいては、ペナルティとして「当該ノードが検索される確率」や「当該ノードに含まれる属性種類数」、あるいはその組合せが用いられる。「当該ノードが検索される確率」をペナルティとして用いた場合、上記挿入先ノード選択アルゴリズムやノード分割アルゴリズムによってペナルティを小さく抑えることで、検索時に辿るべきノード数を少なくし、検索効率を高めることができる。また、「当該ノードに含まれる属性種類数」をペナルティとして用いた場合、同様にペナルティを小さく抑えることで、検索条件に指定された属性の種類に基づき検索時に辿るべきノード数を小さくし、検索効率を高めることができる。「当該ノードが検索される確率」と「当該ノードに含まれる属性種類数」の組合せをペナルティに用いた場合にも、両者の効果が期待できる。
【０００７】
「当該ノードが検索される確率」は、それまでに挿入されたデータの統計情報から算出する。統計情報は属性表に記録される。属性表には、各属性について、挿入したデータ内での出現頻度や対応する属性値の最大値、最小値が記録されている。新規データを挿入するたびに属性表は更新される。「当該ノードが検索される確率」は、属性表を用いて次式により算出される。  
当該ノードが検索される確率＝ΣＸiＹi（全属性集合Ａに対しi∈Ａ）
i
…（１）
但し、Ｘiは属性iで検索された場合に当該ノードが検索される確率、Ｙiは検索条件に属性iが用いられる確率Ｙiを示す。
【０００８】
Ｙiは、次式で算出する。  
Ｙi＝Σ（１／（２＾Ｄｔ−１））／Ｍ            …（２）
ｔ
但し、ｔはそれまでに挿入された属性iを含むデータ、Ｄtはデータｔが含む属性数、Ｍはそれまでに挿入されたデータ総数を示す。
【０００９】
Ｙiは、より単純に次式で算出してもよい。
Ｙi＝Ｆdi／（ΣＦdj）                              …（３）
j
但し、Ｆdiはそれまでに挿入されたデータ内での属性iの出現頻度である。それまでに挿入されたデータ内での出現頻度の高い属性は検索条件に用いられやすいという考察に基づき、Ｙiを式（３）で見積もっている。
【００１０】
また、「当該ノードが検索される確率」と「当該ノードに含まれる属性種類数」の組合せがペナルティに用いられる場合には、例えば先ず「当該ノードに含まれる属性種類数」をペナルティとして挿入先ノード選択アルゴリズムを適用し、それでも挿入先ノードを１つに絞り込むことができない場合には、さらに「当該ノードが検索される確率」をペナルティとして挿入先ノード選択アルゴリズムを適用し、複数の候補の中から挿入先ノードを１つに絞り込めばよい。
【００１１】
尚、属性が検索式に用いられる確率とは、属性が検索条件に用いられる確率と同義である。また、特許文献１において「インナーノードエントリ」と称されるものは、あるノードへのポインタを含み、エントリと、当該エントリが含むポインタが指すノードは１対１に対応する。特許文献１において「エントリが検索される確率」、「エントリに含まれるキーに含まれる属性種類数」と称されるものは、それぞれ当該エントリに対応するノードについて、「当該ノードが検索される確率」、「当該ノードに含まれる属性種類数」と同義である。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１１−１７０４６１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
ところが、従来のUBI-Treeにおいては、それまでに挿入されたデータの統計情報から、「当該ノードが検索される確率」の予測値を算出している。予測値は必ずしも真の値と同じではなく、予測値と真の値の間に誤差がある場合がある。このような場合には、検索効率の劣化が発生する。
【００１４】
また、従来のUBI-Treeにおいては、ペナルティとして「当該ノードに含まれる属性種類数」と「当該ノードが検索される確率」が組み合わされて用いられる場合がある。しかし、挿入されたデータの多くが含む属性を検索条件とする検索に対しては、「当該ノードに含まれる属性種類数」をペナルティとして各ノードに含まれる属性種類数を小さくしても、検索条件に指定された属性の種類に基づき検索時に辿るべきノード数を小さくすることができず、検索効率の劣化を招く。
【００１５】
この発明は上記事情に着目してなされたもので、その第１の目的は、検索条件に用いられてきた属性ほど重要視して木構造内でデータを分類できるようにして「当該ノードが検索される確率」を高い精度で予測可能とし、これにより検索効率を高めたデータ索引装置、データ索引方法及びプログラムを提供することにある。
また、この発明の第２の目的は、検索条件に含まれる属性が挿入されたデータの多くに含まれるか否かによって柔軟にペナルティの組み合わせを切り替えることを可能とし、これにより検索効率をさらに高めたデータ索引装置、データ索引方法及びプログラムを提供することにある。
【課題を解決するための手段】
【００１６】
上記第１の目的を達成するためにこの発明の第１の観点は、属性とその属性値とからなる組を少なくとも１つ含むデータの集合を、UBI-Tree構造により記憶し管理するデータ索引装置において、上記データ集合と、上記UBI-Tree構造と、上記データ集合に含まれる属性の各々が検索条件に用いられた頻度を含む検索履歴を少なくとも記憶手段に記憶しておく。そして、上記UBI-Tree構造中に新規データを挿入する際に、当該新規データに含まれる属性の各々が検索条件に用いられる確率を、上記記憶手段に記憶された検索履歴に含まれる頻度を考慮して算出し、当該算出された確率に基づいて上記UBI-Tree構造へのデータ挿入アルゴリズムにおけるペナルティを算出して新規データの挿入処理を行うようにしたものである。
【００１７】
上記データ挿入手段は、新規データに含まれる属性をＸとしたとき、当該属性Ｘが検索条件に用いられる確率を、上記検索履歴に含まれる全属性の頻度の総数に対する上記検索履歴に含まれる属性Ｘの頻度の割合として算出するとよい。
【００１８】
上記第２の目的を達成するためにこの発明の第２の観点は、上記記憶手段に、上記データ集合に含まれる属性の各々についてその出現頻度と属性値を関連付けた属性表を、さらに記憶する。そして、上記データ挿入手段により、上記UBI-Tree構造中に新規データを挿入する際に、上記記憶手段に記憶された検索履歴及び属性表に基づいて、上記検索条件に用いられた頻度が予め定めたしきい値より高い属性が、挿入されたデータのうち所定数以上に含まれているか否かを判定し、含まれている場合には次元抑制ペナルティを無効化して新規データの挿入処理を行うようにしたものである。
【発明の効果】
【００１９】
第１の観点によれば、記憶手段に検索履歴を記憶させ、データ挿入手段により新規データに含まれる属性の各々が検索条件に用いられる確率が上記検索履歴に含まれる頻度からそれぞれ算出され、この算出された頻度をもとにペナルティが算出される。このため、過去に検索条件に用いられてきた属性ほど重要視して木構造内でデータを分類することが可能となる。すなわち、「当該ノードが検索される確率」をそれまでに用いられた検索条件の履歴に基づいて高い精度で予測することが可能となり、検索効率の劣化を防止することができる。
【００２０】
また、新規データに含まれる属性をＸとしたとき、当該属性Ｘが検索条件に用いられる確率が、前記検索履歴に含まれる全属性の頻度の総数に対する前記検索履歴に含まれる属性Ｘの頻度の割合として算出される。したがって、複雑な計算式を用いることなく簡単に算出できる。
【００２１】
第２の観点によれば、新規データを挿入する際に、検索履歴と、属性の各々についてその出現頻度と属性値を関連付けた属性表をもとに、検索条件に用いられた頻度が高い属性が、挿入されたデータの多くに含まれるかどうかが判定され、多くに含まれる場合には次元抑制ペナルティが無効化されて上記新規データの挿入が行われる。ここで、次元抑制ペナルティとは、「当該ノードに含まれる属性種類数」のことであり、これを無効化するとは、「当該ノードが検索される確率」と「当該ノードに含まれる属性種類数」の組合せをペナルティとしている場合に、「当該ノードが検索される確率」だけをペナルティとするよう変更することを意味する。したがって、挿入されたデータの多くに含まれる属性を検索条件とする検索処理が多く行われる場合に、次元抑制ペナルティを無効化すると、「当該ノードが検索される確率」だけをペナルティとしてデータの分類を行うことができ、これにより検索効率の劣化を防ぐことが可能となる。
【００２２】
すなわちこの発明の第１の観点によれば、検索条件に用いられてきた属性ほど重要視して木構造内でデータを分類できるようにして「当該ノードが検索される確率」を高い精度で予測可能とし、これにより検索効率を高めたデータ索引装置、データ索引方法及びプログラムを提供することができる。
また、この発明の第２の観点によれば、検索条件に含まれる属性が挿入されたデータの多くに含まれるか否かによって柔軟にペナルティの組み合わせを切り替えることが可能となり、これにより検索効率をさらに高めたデータ索引装置、データ索引方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００２３】
【図１】この発明の一実施形態に係るデータ索引装置の機能構成を示すブロック図。
【図２】図１に示したデータ索引装置の記憶ユニットに記憶されるデータの一例を示す図。
【図３】図１に示したデータ索引装置の記憶ユニットに記憶される木構造情報の一例を示す図。
【図４】図１に示したデータ索引装置の記憶ユニットに記憶される属性表情報の一例を示す図。
【図５】図１に示したデータ索引装置の記憶ユニットに記憶される検索履歴の一例を示す図。
【図６】図１に示したデータ索引装置の記憶ユニットに記憶される検索履歴有効度の一例を示す図。
【図７】図１に示したデータ索引装置の記憶ユニットに記憶される直接法有効度の一例を示す図。
【図８】図１に示したデータ索引装置の記憶ユニットに記憶される共通キー判定割合の一例を示す図。
【図９】図１に示したデータ索引装置の記憶ユニットに記憶される挿入データ数の一例を示す図で、図２に示したデータ集合を挿入した後の状態を示す図。
【図１０】新規挿入対象のデータの一例を示す図。
【図１１】データの新規挿入に伴い更新された属性表情報の一例を示す図。
【図１２】検索条件の一例を示す図。
【図１３】図１２に示した検索条件により図５に示した検索履歴を更新した後の検索履歴を示す図。
【発明を実施するための形態】
【００２４】
以下、図面を参照してこの発明に係わる実施形態を説明する。  
［一実施形態］
（構成）
図１は、この発明の一実施形態に係るデータ索引装置の機能構成を示すブロック図である。  
本実施形態のデータ索引装置は、例えばデータベースサーバからなり、制御ユニット１と、通信インタフェースユニット２と、記憶ユニット３を備えている。通信インタフェースユニット２は、ネットワークＮＷで規定される通信プロトコルに従い、例えば図示しないセンサ群との間でその計測データを受信する機能を有する。
【００２５】
記憶ユニット３は、記憶媒体として例えばＨＤＤ（Hard Disc Drive）またはＳＳＤ（Solid State Drive）を使用したもので、この発明の一実施形態を実現する上で必要な木構造情報を記憶する記憶領域として、データ集合記憶部３１と、木構造記憶部３２と、属性表記憶部３３と、検索履歴記憶部３４と、検索履歴有効度記憶部３５と、直接法有効度記憶部３６と、共通キー判定割合記憶部３７と、挿入データ数記憶部３８を備える。
【００２６】
データ集合記憶部３１には、上記通信インタフェースユニット２により受信された計測データの集合が記憶される。個々の計測データは、属性とその属性値とからなる組を少なくとも１つ有する。図２の２０１〜２０５は計測データの一例を示したものである。例えば、計測データ２０１は属性として「センサＩＤ」、「時間」、「温度」及び「湿度」を有し、その属性値としてそれぞれ「１」、「３」、「２０．３」及び「６０」を有する。また計測データ２０２は、属性として「センサＩＤ」、「時間」及び「照度」を有し、その属性値としてそれぞれ「３」、「７」及び「６」を有する。すなわち、計測データは、各々１つ以上の属性と属性値との組を持ち、また属性の数と種類はデータ間で異なり得る。
【００２７】
木構造記憶部３２には、上記データ集合をUBI-Treeにより索引付けした状態で管理するための木構造が記憶される。UBI-Treeの木構造は、「当該ノードが検索される確率」と「当該ノードに含まれる属性種類数」の組合せをペナルティとして用いる。図３はUBI-Treeの木構造の一例を示すもので、この例では複数のノード３０１〜３０６と、複数の計測データ２０１〜２０５とから構成される。計測データ２０１〜２０５は、図２に示したデータに対応する。
【００２８】
木の根元に位置するノード３０１はルートノードと呼ばれ、木の葉にあたるノード３０４〜３０６はリーフノードと呼ばれる。各ノード３０１〜３０６はそれぞれ他のノードあるいはデータへのポインタを保持する。例えば、ルートノード３０１はノード３０２へのポインタとノード３０３へのポインタを保持する。このことを単にノード３０１は子ノード３０２を保持すると表現する。ポインタにより接続されたノード間には親子関係があると見なされる。例えばルートノード３０１に対してノード３０２は子ノードと呼ばれる。逆に、ノード３０２に対してルートノード３０１は親ノードと呼ばれる。また、各ノードが保持する子ノードあるいはデータの数の上限値は「２」に設定されている。
【００２９】
なお、図３では図示を省略しているが、親ノードは各子ノードについて、当該子ノードの下位に存在するデータに関する範囲を表す情報を保持している。例えば、ルートノード３０１は、子ノード３０２以下に対し「センサＩＤ」が１〜１０、「時間」が３〜１０、「温度」が２０．３〜２１．１、「湿度」が６０〜９０のデータが存在している、という情報を保持している。同様に、ルートノード３０１は子ノード３０３以下に存在しているデータの範囲情報も保持している。検索を行う際には、当該範囲情報を用いて、検索条件を満たすノードだけを辿ることにより、検索条件を満たすデータを効率的に発見することが可能である。
【００３０】
属性表記憶部３３には、上記データ集合記憶部３１に記憶された計測データの集合が持つ属性の出現頻度、最小値及び最大値を表す情報が記憶される。図４はその一例を示すもので、図２に示したデータ集合の属性を表として表した場合を例示している。
【００３１】
検索履歴記憶部３４には、ノードの検索履歴を表す情報が記憶される。検索履歴は、属性別の検索頻度により表される。図５はその一例を示すもので、ここでは属性として「時間」が検索条件に用いられた回数が５回、「温度」が検索条件に用いられた回数が３回の場合を示している。
【００３２】
検索履歴有効度記憶部３５には、検索履歴の有効度を表す情報が保存される。図６はその一例を示すもので、ここでは有効度が「１００」に設定された場合を示している。  
直接法有効度記憶部３６には、直接法の有効度を表す情報が保存される。図７はその一例を示すもので、ここでは「５０」に設定された場合を示している。
【００３３】
共通キー判定割合記憶部３７には、共通キーの判定割合を示す情報が保存される。図８はその一例を示すもので、ここでは「５０」に設定された場合を示している。  
挿入データ数記憶部３８には、データ集合の挿入データ数を表す情報が保存される。図９はその一例を示すもので、図２に示したデータ集合を挿入した後の状態を示しており、図２に示すデータ集合の数「５」と等しい値となっている。
【００３４】
尚、上記各記憶部３５，３６，３７に記憶されている検索履歴有効度、直接法有効度及び共通キー判定割合は、外部の保守用端末（図示せず）から書き換え可能としてもよい。このようにすると、データの特性や検索要求の変化に応じて、これらの設定を動的に変化させることが可能となる。
【００３５】
制御ユニット１は、例えばＣＰＵ（Central Processing Unit）を備え、この発明の一実施形態を実現するために必要な制御機能として、データ検索部１１と、データ挿入部１２を有している。なお、これらのデータ検索部１１及びデータ挿入部１２は、何れも図示しないプログラムメモリに格納されたプログラムを上記ＣＰＵに実行させることにより実現される。
【００３６】
データ検索部１１は、図示しない検索元の装置から送信されたデータ検索要求がネットワークＮＷを介して通信インタフェースユニット２で受信された場合に、当該受信されたデータ検索要求により指定された検索条件と、上記木構造記憶部３２に記憶された木構造情報、属性表情報及び検索履歴情報に基づいて、ルートノード３０１から子ノード３０２，３０３及びリーフノード３０４〜３０６を順次辿って計測データを特定する。そして、この特定された計測データをデータ集合記憶部３１から読み出し、この読み出された計測データを通信インタフェース２からネットワークＮＷを介して要求元の装置へ返送する処理を行う。
【００３７】
データ挿入部１２は、図示しないセンサから送信された新規計測データがネットワークＮＷを介して通信インタフェースユニット２で受信された場合に、上記検索履歴記憶部３４に記憶された検索履歴情報、つまり属性別の検索頻度をもとに、上記受信された新規計測データに含まれる各属性が検索条件に用いられる確率を算出し、この算出された確率に基づいてUBI-Treeの挿入アルゴリズムにおけるペナルティを計算する。そして、この計算されたペナルティと、上記木構造記憶部３２に記憶された木構造情報に基づいてノードを辿り、上記新規計測データを挿入すべきノードを特定する処理を実行する。
【００３８】
またデータ挿入部１２は、新規データを挿入する際に、検索履歴と、属性の各々についてその出現頻度と属性値を関連付けた属性表をもとに、検索条件に用いられた頻度が予め設定したしきい値より高い属性が、挿入されたデータのうち予め設定した数以上のデータに含まれるかどうか、つまり多くのデータに含まれるか否かを判定し、多くに含まれる場合には次元抑制ペナルティを無効化して上記新規データの挿入処理を実行する。
【００３９】
（動作）
次に、以上のように構成されたデータ索引装置ＩＵの動作を説明する。  
ここでは、記憶ユニット３のデータ集合記憶部３１には図２に示すデータ集合が、木構造記憶部３２には図３に示すUBI-Tree構造が、属性表記憶部３３には図４に示す属性表が、さらに検索履歴記憶部３４には図５に示した検索履歴を表す情報がそれぞれ記憶されているものとして説明を行う。
【００４０】
いま、図示しないセンサから新たな計測データが送信され、この新規計測データがネットワークＮＷを介して通信インタフェースユニット２で受信されたとする。図１０に、このとき受信された新規計測データを示す。
【００４１】
上記新規計測データが受信されると、制御ユニット１はデータ挿入部１２を起動し、このデータ挿入部１２の制御の下で、木構造及び属性表に対するデータ挿入処理を以下のように実行する。すなわち、先ず上記受信された新規計測データに基づいて、属性表記憶部３３に記憶された属性表を更新する。例えば、新規計測データは図１０に示したように、属性として「センサＩＤ」、「時間」、「湿度」、「照度」、「音量」を含む。このため、図１１に示すように、各属性の出現頻度がそれぞれ１増加する。また、属性のうち「時間」、「照度」及び「音量」の各値はこれまで挿入されたデータよりも大きいため、該当する最大値がそれぞれ更新される。さらに、記憶ユニット３の挿入データ数記憶部３８に記憶されている挿入データ数（図９に図示）が更新され、“６”となる。
【００４２】
次に、木構造のルートノード３０１から、挿入先ノード選択アルゴリズムを用いながら挿入先のノードを選択していく。このとき、先ず上記新規計測データに含まれる各属性が検索条件に用いられる確率を算出し、検索条件に用いられる確率が高い属性集合が共通キー集合であるかどうかを判定する。そして、共通キー集合であると判定された場合には、次元抑制ペナルティを無効化して上記新規計測データの挿入を行う。ここで、共通キーとは挿入されたデータの多くに共通して出現する属性を意味し、共通キー集合とは挿入されたデータの多くに共通して出現する属性の集合を意味する。
【００４３】
具体的には、先ず記憶ユニット３の各記憶部３３〜３８に記憶された検索履歴有効度、直接法有効度、共通キー判定割合、挿入データ数、検索履歴及び属性表を調べ、各属性について、検索条件に当該属性iが用いられる確率Ｙiを（３）式とは異なる（４）式により求める。  
Ｙi＝（Ｆdi／（ΣＦdj））×（１００−Ａ）／１００
j
＋（Ｆsi／（ΣＦsj））×Ａ／１００            …（４）
j
但し、Ｆsiはそれまでに用いられた検索条件内での属性iの出現頻度である。またＡは該検索履歴有効度である。
【００４４】
（４）式は（３）式を拡張したものとなっており、それまでに挿入されたデータ内での出現頻度の高い属性は検索条件に用いられ易いという考察に加え、それまでに用いられた検索条件内での出現頻度の高い属性は今後も検索条件に用いられ易いという考察に基づいて確率Ｙiを見積もるものである。各考察は（４）式の第一項、第二項にそれぞれ対応している。Ａは０〜１００の範囲の値をとることができるパラメータであり、２種の考察のどちらをどれほど重要視するかを設定することができる。
【００４５】
本実施形態のように１００を設定した場合には、（４）式の第一項は０となり、２つ目の考察、すなわち、それまでに検索条件内での出現頻度の高い属性は今後も検索条件に用いられ易いことだけを重要視し、確率Ｙiの値を見積もるものである。例えば、
Ｙ（時間）＝０＋（５／（５＋３））×１００／１００＝０．６２５
Ｙ（温度）＝０＋（３／（５＋３））×１００／１００＝０．３７５
となる。
【００４６】
次に、各確率Ｙiを値が大きい順に加算していき、記憶ユニット３の直接法有効度記憶部３６に記憶されている直接法有効度／１００を越えるまで足しこんだＹに対応する１つ以上の属性集合を、「検索条件に用いられる確率が高い属性集合」とする。直接法有効度は０〜１００の範囲の値をとることができるパラメータであり、どれほど多くの属性を「検索条件に用いられる確率が高い属性集合」に含めるかを設定することができる。  
本実施形態においては、直接法有効度は５０であり、最もＹの値が大きなＹ（時間）が０．６２５であり、Ｙ（時間）だけで５０／１００を超えるため、「検索条件に用いられる確率が高い属性集合」には「時間」のみが含まれる。
【００４７】
次に、「検索条件に用いられる確率が高い属性集合」に含まれる各属性がそれまでに挿入されたデータ内に含まれる割合、すなわち（Ｆdi／（挿入データ数））の平均値が、記憶ユニット３の共通キー判定割合記憶部３７に記憶されている共通キー判定割合／１００以上の場合には、「検索条件に用いられる確率が高い属性集合」は共通キー集合であると判定し、次元抑制ペナルティを無効化して該データの挿入を行う。共通キー判定割合は０〜１００の範囲の値をとることができるパラメータであり、挿入されたデータのどれほど多くに共通して出現する属性の集合を共通キー集合と判定するかを設定することができる。
【００４８】
本実施形態においては、共通キー判定割合は５０、挿入データ数は６であり、「検索条件に用いられる確率が高い属性集合」に含まれる属性は「時間」である。このため、挿入されたデータ内に含まれる属性の割合の平均値は６／６となり、共通キー判定割合／１００以上となるため、共通キー集合であると判定する。そして、この場合には次元抑制ペナルティを無効化して新規計測データの挿入処理を行う。
【００４９】
次元抑制ペナルティを無効化して新規計測データの挿入を行う場合は、「当該ノードが検索される確率」だけをペナルティとする。また、「当該ノードが検索される確率」を算出する際には、（４）式により確率Ｙiを算出する。本実施形態では、検索履歴有効度が１００、また検索履歴には「時間」と「温度」の属性が含まれている。このため、（４）式より「時間」と「温度」については確率Ｙiは正の値をとるが、それ以外の属性については確率Ｙiは０となる。すなわち、（１）式より、「時間」と「温度」の２つの属性以外の属性は、ペナルティに影響しないこととなる。新規計測データには「センサＩＤ」、「時間」、「湿度」、「照度」、「音量」が含まれているが、このうち「時間」のみから「当該ノードが検索される確率」をペナルティとして算出することになる。
【００５０】
ルートノード３０１において、新規計測データをノード３０３に挿入すると、中間ノード３０３に含まれる「時間」の値が元々７〜９であったものが、７〜１１に変化する。すなわち、値の範囲は２だけ広がる。一方、新規計測データを中間ノード３０２に挿入すると、当該中間ノード３０２に含まれる「時間」の値が元々３〜１０であったものが、３〜１１に変化する。すなわち、値の範囲は１だけ広がる。「当該ノードが検索される確率」をペナルティとする場合には、値の範囲の広がりが小さい方が挿入先として選択される。すなわち、本実施形態では、「時間」の値の範囲の広がりが小さい中間ノード３０２を挿入先として選択する。
【００５１】
次に、中間ノード３０２において、挿入先ノード選択アルゴリズムを用いて挿入先のノードを選択する。同様に、「時間」の値の範囲の広がりが小さい、ノード３０５を挿入先のノードに選択する。  
新規計測データの挿入により、リーフノード３０５が保持するデータ数は３となる。各ノードが保持する子ノードあるいはデータの上限値は２に設定されているため、ノード分割アルゴリズムによりノード３０５を分割する。ノードを分割する際にも、挿入先ノード選択アルゴリズムと同様に、該検索履歴有効度と該直接法有効度と該共通キー判定割合と該挿入データ数と該検索履歴と該属性表とを調べ、検索条件に用いられる確率が高い属性集合が共通キー集合であるかどうかを判定する。そして、共通キー集合であると判定された場合には、次元抑制ペナルティを無効化し、また「当該ノードが検索される確率」を算出する際に、（４）式により確率Ｙiを算出する。
【００５２】
仮に、新規計測データを挿入する際に、ルートノード３０１の挿入先ノード選択アルゴリズムにおいて、次元抑制ペナルティが無効化されず、「当該ノードに含まれる属性種類数」をペナルティとする場合、ルートノード３０１において、新規計測データを中間ノード３０３に挿入すると、当該中間ノード３０３に含まれる属性が元々「センサＩＤ」、「時間」、「照度」、「音量」の４種類であったものが、「センサＩＤ」、「時間」、「照度」、「音量」及び「湿度」の５種類となり、属性種類数が１だけ増加する。
【００５３】
これに対し、新規計測データを中間ノード３０２に挿入すると、中間ノード３０２に含まれる属性が元々「センサＩＤ」、「時間」、「温度」、「湿度」の４種類であったものが、「センサＩＤ」、「時間」、「温度」、「湿度」、「照度」、「音量」の６種類となり、属性種類数が２だけ増加する。このため、挿入先として中間ノード３０３が選択される。挿入先として中間ノード３０３を選択し、当該中間ノード３０３以下のノードに新規計測データを挿入すれば、「音量」の属性をもつデータは中間ノード３０３以下に絞られる。このため、「音量」を検索条件に用いた場合には、中間ノード３０３以下の部分木のみを検索すればよく、効率がよい。
【００５４】
一方、挿入先として中間ノード３０２を選択した場合には、「音量」の属性をもつデータが中間ノード３０２以下と中間ノード３０３以下に分散してしまう。このため、「音量＝０〜１０」を検索条件に用いた場合、中間ノード３０２以下の部分木と中間ノード３０３以下の部分木の両方を検索しなければならず、効率が悪い。しかしながら、挿入先として中間ノード３０３を選択した場合、中間ノード３０２は「時間」の値が３〜１０のデータを以下に保持し、中間ノード３０３は「時間」の値が７〜１１のデータを以下に保持することとなる。このため、例えば「時間＝１０」を検索条件に用いた場合、両方の部分木を検索する必要がでてくる。
【００５５】
これに対し、挿入先として中間ノード３０２を選択した場合には、「時間＝１０」という検索条件に対して中間ノード３０２以下の部分木のみを検索すればよい。このように、「音量＝０〜１０」のように、挿入された全データのうち、一部のデータだけが保持する属性を検索条件とする場合には、「当該ノードに含まれる属性種類数」をペナルティとすることで検索効率が上がる。しかし、「時間」のように、多くのデータが保持する属性を検索条件とする場合には、「当該ノードに含まれる属性種類数」をペナルティとすることで検索効率が下がってしまう。このため、多くのデータが保持する属性、すなわち共通キーを検索条件とすることが多い場合には、本実施形態のように次元抑制ペナルティを無効化し、「当該ノードに含まれる属性種類数」をペナルティとしないようにする。このようにすることで、検索の効率化を図ることが可能となる。
【００５６】
また、仮に新規計測データを挿入する際に、中間ノード３０２の挿入先ノード選択アルゴリズムにおいて、従来のように（３）式を用いて確率Ｙiを算出し、「当該ノードが検索される確率」を算出すると、リーフノード３０５ではなくリーフノード３０４を挿入先として選択する。（３）式を用いた場合、それまでに挿入されたデータ内での各属性の出現頻度のみから確率Ｙiが算出され、「時間」と「温度」の２属性以外の属性もペナルティの大きさに影響するようになる。
【００５７】
挿入先としてリーフノード３０４を選択し、当該リーフノード３０４に新規計測データを挿入すれば、「時間」の値の範囲は３〜３から３〜１１に増加する（拡大幅：８）ものの、「センサＩＤ」は１〜１から１〜２への増加（拡大幅：１）で済み、また「湿度」については値の範囲は増加しないで済み、全体としてペナルティの増加が少ないため、挿入先としてリーフノード３０４を選択する。
【００５８】
逆に挿入先としてリーフノード３０５を選択した場合には、「時間」の値の範囲は８〜１０から８〜１１への増加（拡大幅：１）で済むが、「センサＩＤ」や「湿度」の値の範囲の増加が大きい。ルートノードにおける挿入先ノード選択と同様に考えると、例えば「センサＩＤ」で検索する場合には、「センサＩＤ」の値の幅の拡大が小さいよう、挿入先としてリーフノード３０４を選択することで検索効率が向上するが、「時間」で検索する場合には、「時間」の値の幅の拡大が小さいよう、挿入先としてリーフノード３０５を選択することで検索効率が向上する。
【００５９】
一般に、これまで検索条件に用いられた属性は今後も検索条件に用いられる可能性が高い。このため、本実施形態のように検索履歴を記憶ユニット３の検索履歴記憶部３４に記憶させる。そして、この記憶された検索履歴に基づいて「当該ノードが検索される確率」を算出する。このようにすることで、検索の効率化を図ることが可能となる。第１２図に検索条件の一例を示す。
【００６０】
検索を行う場合、先ず検索条件に基づいて、記憶ユニット３の検索履歴記憶部３４に記憶されている検索履歴を更新し、次に従来と同様にUBI-Tree構造を用いて検索条件に合致するデータを探し出す。図１３は、上記検索条件により図５に示した検索履歴を更新した後の検索履歴を示す。検索条件は「時間」と「湿度」の属性を含む。このため、図１３では「時間」の検索頻度が１増加し、また「湿度」に該当する行が追加されてその検索頻度は１と記述される。
【００６１】
（一実施形態の効果）
以上詳述したように一実施形態では、記憶ユニット３に検索履歴を記憶しておき、データ挿入部１２の制御の下、新規計測データに含まれる属性の各々が検索条件に用いられる確率を上記記憶された検索履歴に含まれる頻度をもとに（４）式によりそれぞれ算出し、この算出された頻度をもとにペナルティを算出するようにしている。したがって、過去に検索条件に用いられてきた属性ほど重要視してUBI-Tree構造内でデータを分類することが可能となる。すなわち、「当該ノードが検索される確率」をそれまでに用いられた検索条件の履歴に基づいて高い精度で予測することが可能となり、これにより検索効率の劣化を防ぐことができる。
【００６２】
また、新規データを挿入する際に、検索履歴と属性表をもとに、検索条件に用いられた頻度が高い属性が、挿入されたデータの多くに含まれるかどうかを判定し、多くに含まれる場合には次元抑制ペナルティを無効化した後、上記新規データの挿入を行うようにしている。したがって、挿入されたデータの多くに含まれる属性を検索条件とする検索処理が多く行われる場合において、次元抑制ペナルティを無効化することにより、「当該ノードが検索される確率」だけをペナルティとしてデータの分類を行うことができ、これにより検索効率の劣化を防ぐことが可能となる。
【００６３】
［他の実施形態］
前記一実施形態では、各ノードが保持する子ノードあるいはデータの上限値を２に設定した場合を例にとって説明したが、これに限らず、他の正数値に設定してもよい。  
また、前記一実施形態では、データとしてセンサにより得られた温度、湿度、照度、音量等の計測データを取り扱う場合を例にとって説明した。しかし、それに限らず電流や電圧値、流体の流量、物質の濃度、明度、騒音レベル、位置、加速度などの計測データを取り扱ってよく、さらにはセンサ以外の例えばＷｅｂやインターネットを経由して取得した情報であってもよい。また、それら値に加えて、センサの特性や状態、計測日時等を示すメタデータを含む情報を取り扱ってもよい。その他、データ索引装置の構成やデータ挿入処理の手順と処理内容等についても、この発明の要旨を逸脱しない範囲で種々変形して実施可能である。
【００６４】
要するにこの発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【００６５】
ＩＵ…データ索引装置、ＮＷ…ネットワーク、１…制御ユニット、２…通信インタフェースユニット、３…記憶ユニット、１１…データ検索部、１２…データ挿入部、３１…データ集合記憶部、３２…木構造記憶部、３３…属性表記憶部、３４…検査栗履歴記憶部、３５…検索履歴有効度記憶部、３６…直接法有効度記憶部、３７…共通キー判定割合記憶部、３８…挿入データ数記憶部。
【図１】
0005953277.tif 000002
【図２】
0005953277.tif 000003
【図３】
0005953277.tif 000004
【図４】
0005953277.tif 000005
【図５】
0005953277.tif 000006
【図６】
0005953277.tif 000007
【図７】
0005953277.tif 000008
【図８】
0005953277.tif 000009
【図９】
0005953277.tif 000010
【図１０】
0005953277.tif 000011
【図１１】
0005953277.tif 000012
【図１２】
0005953277.tif 000013
【図１３】
0005953277.tif 000014