[1.概要]
本明細書では、記憶装置に蓄積された座標情報を含む蓄積情報を、座標情報に基づいて設定される管理領域ごとに管理するノードと、ノードを木構造で管理するインデックスにより管理するデータ管理技術において、1つのノードに対する子ノード数又は保持データ数の制限数を、所定の次元軸の値の範囲に応じて異なる値とし、当該制限数に基づいてインデックスの編成を行うデータ管理技術について説明する。なお、本明細書において、子ノード数及び保持データ数を総称して子要素といい、子要素と表記した場合には、子ノード数及び保持データ数の少なくともいずれか一方を指す。
本明細書で説明するデータ管理技術では、ノードが管理する座標情報の範囲である管理領域の所定次元軸における範囲が、所定範囲に含まれるノードについては、子要素数の制限数を小さく設定しておく。一方で、前記所定範囲に含まれないノードについては、子要素数の制限数を大きく設定しておく。具体的には、検索条件として指定される頻度が高い検索範囲に含まれるノードについては、子要素の上限数及び下限数を小さく設定しておく。一方で、ノードの所定次元軸の値が検索条件として指定される頻度が低い検索範囲に含まれるノードについては、子要素の上限数及び下限数を大きく設定しておく。このような子要素の上限数及び下限数に基づいてデータ管理装置がインデックスの編成を行うと、ノードの管理領域の所定次元軸の値が検索条件として指定される頻度が高いノードのほうが、頻度が低いノードよりも、子ノード数や保持データ数が少ない木構造のインデックスが編成される。このため、頻繁に検索対象となる新しい時間を検索範囲とした検索において、アクセスするノードの数が抑制され、検索における計算量が削減される。したがって、頻度の高い検索処理の高速化を実現することができる。
[2.第1実施形態]
本実施形態では、座標情報の管理を行うインデックスとして、R−Treeのインデックスを用いたデータベースを有するデータ管理装置について説明する。
具体的には、本実施形態のデータ管理装置は、時間及び位置情報(緯度及び経度)の次元軸を有する座標情報を含んだデータベースであって、新しい時間の座標情報を検索対象とする検索が頻繁に行われる一方で、古い時間の座標情報を検索対象とする検索が行われる頻度が少ないデータベースを対象とする。なお、このようなデータベースの具体例としては、直近のタクシーの位置等が検索されるタクシープローブ情報等が該当する。以下、本明細書の各実施形態の説明において記載する座標情報は、断りがない限り時間の次元軸を含むものとする。
本実施形態のデータ管理装置では、時間、緯度及び経度を次元軸とした座標情報を管理するR−Treeのインデックスにおいて、1つのノードに対する子要素の上限数及び下限数を、ノードが管理する時間軸の範囲に応じて異なる数とする。そして、頻繁に検索対象となる新しい時間の範囲を検索優先期間(優先範囲)とし、検索優先期間のノードに対する子要素の上限数及び下限数を小さくするのに対し、検索優先期間以外の古い期間のノードに対する子要素の上限数及び下限数を大きく設定する。そして、かかる上限数及び下限数に基づいて、インデックスの編成を行う。
ここで、R−Tree構造のインデックスでは、相互に重なり合う矩形領域(多次元に対応する超矩形を指す。二次元の場合は長方形、三次元の場合は立方体となる。四次元以上の場合も、次元数に合わせて拡張した領域を指す。以下同様)を管理領域とするノードで木を作成する。各ノードは子ノードの最小外接矩形である。座標情報の検索時には、検索条件として指定された検索範囲と重なる矩形領域を有する子ノードに絞って検索を行うことで、検索を高速化する。
子要素数の制限数を、所定次元軸の値の範囲に関係なく一定にした従来のインデックスの具体例の一部分を図1に示す。この例は、2009年4月から2010年3月までの時間の座標情報を管理するインデックスである。
この例では、時間と位置情報を有する座標情報のインデックスを対象とし、所定次元軸を時間軸とする。そして、時間軸の値の範囲に関係なく、子要素数の上限数が「4」、下限数が「2」とする。このような構造では、少なくとも時間軸の検索範囲の大きさが同じであれば、原則として、どの検索範囲が指定されたかによって検索における計算量が大きく変わることはない。換言すれば、新しい時間の範囲が検索範囲となったときも、古い時間の範囲が検索範囲となったときも、検索における計算量は原則として同じである。
一方、子要素数の制限数を所定の次元軸の範囲に応じて異なる数とした場合におけるインデックスの具体例の一部分を図2に示す。この例では、現在が2010年4月1月である場合に、時間軸の値のうち直近の3ヶ月(すなわち、2010年1月〜3月)を検索優先期間とする。そして、この検索優先期間のノードに対する子要素数の上限数を「4」、下限数を「2」とする一方で、検索優先期間外の時間の範囲のノードに対する上限数を「18」、下限数を「6」とする。この場合、図2に示すように、過去3ヶ月より前の範囲の座標情報は1つの第1レベル中間ノード[R4]で管理しており、子ノードの数は18である。他の3つの第1レベル中間ノード[R1]〜[R3]は、過去3ヶ月以内の範囲の座標情報を管理しており、それぞれ子ノードの数は4である。
このように、子要素数の制限数を所定の次元軸の範囲に応じて異なる数とした図2の木構造のインデックスでは、古い時間の範囲のノードの子ノード数が多い一方で、新しい時間の範囲のノードの子ノード数が少なくなる。このため、頻繁に検索対象となる新しい時間を検索範囲とした検索において、アクセスするノードの数が低減され、検索における計算量が抑制される。したがって、頻度の高い検索処理の高速化を実現することができる。
図3は、第1実施形態に係るデータ管理装置1の機能ブロック図を示す。
第1実施形態に係るデータ管理装置は、少なくともCPU(Central Processing Unit)及び記憶装置を備えた情報処理装置において実装されている。なお、本明細書において、記憶装置とは、メモリ等の揮発性記憶装置及びストレージ等の不揮発性記憶装置の少なくともいずれか一方を示すものとする。
データ管理装置1は、記憶装置2に格納されたデータである、座標情報DB31、検索優先期間32、子要素数制限数33及び前回統合閾時刻34を有する。また、データ管理装置1は、データ管理プログラムがメモリにロードされ実行されることによって実現され、記憶装置2に格納された各種データと協働して動作する制御部3として、データ検索部21、データ追加部22、データ削除部23、インデックス編成部、統合閾時刻管理部25及び統合対象判定部26を有する。
座標情報DB31は、時間、緯度及び経度を次元軸とした座標情報を含んだ蓄積情報を有するデータベースであり、座標情報の座標が含まれる矩形領域で座標情報を管理するR−Treeのインデックスを有する。なお、座標情報DB31のR−Treeのインデックスのデータ構造については後述する。
座標情報DB31、検索優先期間32、子要素数制限数33及び前回統合閾時刻34の具体例を図4に示す。図4(A)に示す検索優先期間32は、座標情報検索において時間の検索条件として指定される頻度が高い期間である。図4(B)に示す子要素数制限数33は、時間軸の値が検索優先期間32に含まれるノード(以下、検索優先ノードという)の子要素数上限数と、検索優先ノードの子要素数下限数とを含む。さらに、子要素数制限数33は、時間軸の値が検索優先期間32以外の期間に含まれるノード(以下、統合対象ノードという)の子要素数上限数と、統合対象ノードの子要素数下限数とを含む。ここで、統合対象ノードの子要素数上限数から下限数までに含まれる数は、検索優先ノードの子要素数上限数から下限数までに含まれる数よりも大きく設定する。なお、検索優先ノードの子要素数上限数及び子要素数下限数が、第1の制限数であり、統合対象ノードの子要素数上限数及び子要素数下限数が、第2の制限数である。検索優先期間32及び子要素数制限数33は、オペレータ等が予め設定しておく値である。
前回統合閾時刻34は、図4(C)に示すように、後述するインデックス編成処理において各ノードが管理する時間軸の値の範囲が検索優先期間32に含まれるか否かを判定するのに用いられる基準時刻である統合閾時刻であって、前回のインデックス編成処理において用いられた統合閾時刻である。前回統合閾時刻34は、インデックス編成処理において記憶装置2に設定される。
データ検索部21は、座標情報DB31の座標情報を、インデックスを用いて検索する。
データ追加部22は、座標情報DB31に、新たな座標情報を追加する。新たな座標情報を追加した結果、インデックスのノードの子ノード数又は保持データ数が子要素数上限数を超えた場合、データ追加部22は、必要に応じてノード分割を行う。
データ削除部23は、座標情報DB31から、座標情報を削除する。座標情報を削除した結果、インデックスのノードの子ノード数又は保持データ数が子要素数下限数を下回った場合、データ削除部23は、必要に応じてノード統合を行う。
インデックス編成部24は、インデックスのR−Tree構造を修正するインデックス編成処理を行う。具体的には、インデックス編成部24は、後述する統合対象判定部26の判定の結果、時間軸におけるノードの管理領域の範囲が現在時刻から遡って検索優先期間32に含まれている場合に、ノードの子要素数を、検索優先ノードの子要素数制限数33に基づいて判定して、木構造を更新する。一方、インデックス編成部24は、時間軸におけるノードの管理領域の範囲が現在時刻から遡って検索優先期間32に含まれていない場合に、ノードの子要素数を、検索優先ノードの子要素数制限数33よりも大きい統合対象ノードの子要素数制限数33に基づいて判定して、木構造を更新する。換言すれば、統合対象ノードの子ノード又は保持データについては、統合対象ノードの子要素数制限数33を適用して、ノードの統合を行う。
統合閾時刻管理部25は、インデックス編成処理において、現在時刻及び検索優先期間32に基づいて統合閾時刻を決定する一方、インデックス編成処理が終了するときには、前回統合閾時刻34を統合閾時刻で更新する。
統合対象判定部26は、インデックス編成処理において、検索優先期間32と、処理対象のノードの管理領域の時間軸における範囲とを比較する。すなわち、統合対象判定部26は、処理対象のノードの管理領域の時間軸における範囲が、現在時刻から遡って検索優先期間32に含まれるか否かを判定する。換言すれば、統合対象判定部26は、処理対象のノードが検索優先ノードであるか統合対象ノードであるかを判定する。
ここで、座標情報DB31に格納されたR−Treeのインデックスのデータ構造の一例につき、図5を用いて説明する。なお、説明の便宜上、インデックスの一部のデータのみを具体的に示して説明する。
根ノード(ルートノード)の[R0]、中間ノード(ブランチノード)の[R1〜R4]及び葉ノード(リーフノード)の[R5〜R20]は、それぞれ、自ノードのノード種別(根、中間、葉の種別)、自ノードが管理する矩形領域を特定する座標を有する。矩形領域を特定する情報は、時間(T軸とする)の最小値(t1)及び最大値(t2)、緯度(X軸とする)の最小値(x1)及び最大値(x2)、経度(Y軸とする)の最小値(y1)及び最大値(y2)を有する。さらに、根ノード及び中間ノードは、自ノードの子ノードを特定する子ノードリストを有する。子ノードリストには子ノードへのポインタが含まれ、このポインタによって各ノードから子ノードへとリンクしている。一方、葉ノードは、自ノードが示す座標情報を特定するデータリストを有する。データリストには座標情報へのポインタが含まれ、このポインタによって各葉ノードから座標情報へとリンクしている。
次に、データ検索装置において実行される各処理につき、図6〜図11のフローチャートを参照しつつ説明する。
まず、データ検索部21によるデータ検索処理について、図6を用いて説明する。データ検索処理は、例えばオペレータ等により、検索範囲を指定した検索指示の入力がなされ、データ管理装置1において当該入力を受け付けた時等に実行される。
S1にて、データ検索部21は、根ノードを選択する。
S2にて、データ検索部21は、選択ノードが葉ノードか否かを判定し、葉ノードであるときには(Yes)、S3に進む一方、葉ノードでないときには(No)、S4に進む。なお、ここで選択ノードが葉ノードでないときとは、すなわち、選択ノードが根ノード又は中間ノードであるということである。
S3にて、データ検索部21は、選択ノード(葉ノード)からリンクしている座標情報のうち、検索範囲に含まれる座標情報を、検索結果として選択する。なお、この選択した座標情報は、一時的に記憶装置に蓄積される(図3において図示省略)。
一方、S4にて、データ検索部21は、選択ノード(根ノード又は中間ノード)の子ノードの矩形領域に、検索範囲と重なる部分が含まれているか否かを判定する。検索範囲と重なる部分が含まれているときには(Yes)、S5に進む一方、検索範囲と重なる部分が含まれないときには(No)、S6に進む。
S5にて、データ検索部21は、検索範囲と重なる部分が含まれている子ノードを選択候補ノードに加える。なお、この選択候補ノードは、一時的に記憶装置に蓄積される(図3において図示省略)。
S6にて、データ検索部21は、全ての選択候補ノードの検索が終了したか否かを判定する。全ての選択候補ノードの検索が終了していないときには(No)、S7に進み、全ての選択候補ノードの検索が終了しているときには(Yes)、S8に進む。
S7にて、データ検索部21は、選択候補ノードから1つのノードを選択し、S2に戻る。
S8にて、データ検索部21は、検索結果として選択した座標情報を、検索結果として出力する。なお、出力方法は、例えば表示装置に表示したり、記憶装置のファイルに出力したりするなど、いかなる方法であってもよい。
次に、データ追加部22によるデータ追加処理について、図7及び図8を用いて説明する。データ追加処理は、例えばオペレータ等により、座標情報の追加指示の入力がなされ、データ管理装置1において当該入力を受け付けた時等に実行される。
S11にて、データ追加部22は、根ノードを選択する。
S12にて、データ追加部22は、選択ノードが葉ノードか否かを判定し、葉ノードでないときには(No)、S13に進む一方、葉ノードであるときには(Yes)、S16に進む。なお、ここで選択ノードが葉ノードでないときとは、すなわち、選択ノードが根ノード又は中間ノードであるということである。
S13にて、データ追加部22は、選択ノード(根ノード又は中間ノード)の子ノードの矩形領域に、追加する座標情報の座標が含まれているか否かを判定する。追加する座標情報の座標が含まれているときには(Yes)、S14に進む一方、追加する座標情報の座標を含む部分が含まれていないときには(No)、S15に進む。
S14にて、データ追加部22は、追加する座標情報を矩形領域に含む子ノードのうち、矩形領域が最小の子ノードを選択ノードとする。
S15にて、データ追加部22は、追加する座標情報を含めるために矩形領域を拡大する際に、矩形領域の拡大量が最小ですむ子ノードを追加対象ノードとして決定する。なお、矩形領域の拡大量が最小ですむ子ノードを選択することで、本来座標情報の存在しない無駄な領域を、ノードが管理する矩形領域に含めてしまうことを抑制することができる。
S16にて、データ追加部22は、選択ノード(葉ノード)に、座標情報を追加する。ここで、ノードへの座標情報の追加とは、座標情報へのリンクの追加と同義とする。
S17にて、データ追加部22は、選択ノード(葉ノード)からリンクする座標情報の数が、記憶装置2に設定された子要素数上限数を超えているか否かを判定する。ここで、データ追加部22は、選択ノードの最古時間t1が、前回統合閾時刻34以前であれば、統合対象ノードの子要素数上限数を用いて判定を行う一方、選択ノードの最古時間t1が前回統合閾時刻34よりも新しければ、検索優先ノードの子要素数上限数を用いて判定を行う。選択ノードからリンクする座標情報の数が、子要素数上限数を超えていれば(Yes)、S18に進み、子要素数上限数を超えていなければ(No)、処理を終了する。
S18にて、データ追加部22は、分割後の2つのノードの矩形領域の大きさの和が最小となるように、選択ノード(葉ノード)を分割し、分割の結果新たに作成したノードを、選択ノードの親ノードに追加する。
S19にて、データ追加部22は、S18又はS22において選択ノードを分割して兄弟ノードが増加した結果、選択ノードの親ノードの子ノード数が子要素数上限数を超えているか否かを判定する。ここでも、データ追加部22は、選択ノードの親ノードの矩形領域の最古時間t1が前回統合閾時刻34以前であれば、統合対象ノードの子要素数上限数を用いて判定を行う一方、選択ノードの親ノードの最古時間t1が前回統合閾時刻34よりも新しければ、検索優先ノードの子要素数上限数を用いて判定を行う。選択ノードの親ノードの子ノードの数が、子要素数上限数を超えていれば(Yes)、S20に進み、子要素数上限数を超えていなければ(No)、処理を終了する。
S20にて、データ追加部22は、選択ノードの親ノードが根ノードであるか否かを判定し、根ノードであれば(Yes)、S21に進む一方、根ノードでなければ(No)、S22に進む。
S21では、データ追加部22は、分割後の2つのノードの矩形領域の大きさの和が最小となるように、選択ノードの親ノード(根ノード)を分割する。そして、データ追加部22は、これまでの根ノードであった親ノードの上の階層に新たな根ノードを作成する。
S22では、データ追加部22は、分割後の2つのノードの矩形領域の大きさの和が最小となるように、選択ノードの親ノード(中間ノード)を分割し、分割の結果新たに作成したノードを、選択ノードの親ノードに追加する。そして、S19に戻る。
次に、データ削除部23によるデータ削除処理について、図9を用いて説明する。データ追加処理は、例えばオペレータ等により、座標情報の削除指示の入力がなされ、データ管理装置1において当該入力を受け付けた時等に実行される。
S31にて、データ削除部23は、削除対象の座標情報を検索する。
S32にて、データ削除部23は、検索結果として得られた、削除対象の座標情報がある葉ノードを選択し、当該選択ノードから、削除対象の座標情報を削除する。
S33にて、データ削除部23は、選択ノード(葉ノード)からリンクする座標情報の数が、記憶装置2に設定された子要素数下限数未満である否かを判定する。ここで、データ削除部23は、選択ノードの最古時間t1が前回統合閾時刻34以前であれば、統合対象ノードの子要素数下限数を用いて判定を行う一方、選択ノードの最古時間t1が前回統合閾時刻34よりも新しければ、検索優先ノードの子要素数下限数を用いて判定を行う。選択ノードからリンクする座標情報の数が、子要素数下限数未満であれば(Yes)、S34に進み、子要素数下限数を未満でなければ(No)、処理を終了する。
S34にて、データ削除部23は、選択ノードの兄弟ノードのうち、選択ノードの矩形領域に対する統合結果のノードの矩形領域の拡大量が最小となるノードを統合相手ノードとして選択する。換言すれば、ここで統合相手ノードとして選択される兄弟ノードは、統合結果のノードの矩形領域の大きさと選択ノードの矩形領域の大きさとの差分が最小となる兄弟ノードである。
S35にて、データ削除部23は、選択ノードを被統合ノードとし、統合相手ノードを統合する。具体的には、統合相手ノードの子ノードを、選択ノードの子ノードに追加し、選択ノードの親ノードの子ノードから、統合相手ノードを削除する。
S36にて、データ削除部23は、選択ノード(すなわち統合結果のノード)の子ノード数又は保持データ数が子要素数上限数を超えているか否かを判定する。ここでも、データ追加部22は、選択ノードの矩形領域の最古時間t1が前回統合閾時刻34以前であれば、統合対象ノードの子要素数上限数を用いて判定を行う一方、選択ノードの最古時間t1が前回統合閾時刻34よりも新しければ、検索優先ノードの子要素数上限数を用いて判定を行う。そして、選択ノードの子ノード数又は保持データ数が子要素数上限数を超えているときには(Yes)、S37に進み、子ノード数又は保持データ数が子要素数上限数を超えていないときには(No)、S38に進む。
S37にて、データ削除部23は、統合結果のノードを再分割する。具体的には、データ削除部23は、分割後の2つのノードの矩形領域の大きさの和が最小となるように、統合結果のノードを分割し、分割の結果新たに作成したノードを、選択ノードの親ノードに追加する。
S38にて、データ削除部23は、統合結果のノードの親ノードが根ノードであるか否かを判定し、根ノードであれば(Yes)、S39に進む一方、根ノードでなければ(No)、S41に進む。
S39にて、データ削除部23は、選択ノードの親ノード(根ノード)の子ノード数が1つになるか否かを判定する。子ノード数が1つになるときには(Yes)、S40に進み、子ノード数が複数であるときには(No)、処理を終了する。
S40にて、データ削除部23は、根ノードを削除して、選択ノードを新たな根ノードとする。
S41にて、データ削除部23は、選択ノードの親ノード(中間ノード)の子ノード数が子要素数下限数未満であるか否かを判定する。ここでも、データ削除部23は、選択ノードの親ノードの最古時間t1が前回統合閾時刻34以前であれば、統合対象ノードの子要素数下限数を用いて判定を行う一方、選択ノードの最古時間t1が前回統合閾時刻34よりも新しければ、検索優先ノードの子要素数下限数を用いて判定を行う。子要素数下限数未満であるときには(Yes)、S42に進む一方、子ノード数が子要素数下限数以上であるときには(No)、処理を終了する。
S42にて、データ削除部23は、選択ノードの親ノード(中間ノード)を選択ノードとし、S34に戻る。
次に、インデックス編成部24、統合閾時刻管理部25及び統合対象判定部26によるインデックス編成処理の一例について、図10〜図11を用いて説明する。インデックス編成処理は、例えばタイマ設定によって所定時間ごとに実行される。
S51にて、統合閾時刻管理部25は、現在時刻を統合開始時刻Tとし、統合開始時刻Tに基づき、統合閾時刻T1を決定する。具体的には、統合開始時刻Tから、検索優先期間32を差し引いた時刻を、統合閾時刻T1として決定する。なお、統合開始時刻T及び統合閾時刻T1は、一時的に記憶装置に保持しておく(図3において図示省略)。
S52にて、インデックス編成部24は、根ノードを選択する。
S53にて、統合対象判定部26は、選択ノードの矩形領域における時間軸の最古時刻t1が、統合閾時刻T1よりも新しいか否かを判定する。この判定は、すなわち、選択ノードの管理領域である矩形領域の時間軸における範囲が、優先範囲に含まれているか否かの判定である。時間軸の最古時刻t1が統合閾時刻T1以前のときには(No)、S54に進む一方、最古時刻t1が統合閾時刻T1よりも新しいと判定されたとき(Yes)には、S55に進む。なお、時間軸の最古時刻t1が統合閾時刻T1以前であるときとは、すなわち、選択ノードが統合対象ノードとなり得るということであり、最古時刻t1が統合閾時刻T1よりも新しいときとは、すなわち、選択ノードは統合対象外となるということである。
S54にて、統合対象判定部26は、選択したノードの矩形領域における時間軸の最新時刻t2が、前回統合閾時刻34(T0)以前か、すなわち、前回の統合処理で統合対象となっていたか否かを判定する。最新時刻t2が前回統合閾時刻34(T0)より後のときには(No)、S59に進む。この場合、選択ノードは統合処理の対象となる。一方で、最新時刻t2が前回統合閾時刻34(T0)以前と判定されたときには(Yes)、選択ノードは統合処理の対象外となり、S55に進む。
S55にて、インデックス編成部24は、選択ノードを処理済みとする。
S56にて、インデックス編成部24は、選択ノードの全ての兄弟ノードが処理済みか否かを判定する。インデックス編成部24は、全ての兄弟ノードが処理済みのときには(Yes)、S57に進み、兄弟ノードのいずれかが処理済みでないときには(No)、S58に進む。
S57にて、インデックス編成部24は、選択ノードの親ノードを選択ノードとして、S53に戻る。
S58にて、インデックス編成部24は、次の兄弟ノードを選択ノードとして、S53に戻る。
S59にて、インデックス編成部24は、選択ノードの子ノードに未処理のものがあるか否かを判定する。未処理の子ノードがあれば(Yes)、S60に進み、未処理の子ノードがなければ(No)、S61に進む。
S60にて、インデックス編成部24は、未処理の子ノードを1つ選択して、S53に戻る。
S61にて、インデックス編成部24は、選択ノードが根ノードであるか否かを判定する。選択ノードが根ノードであれば(Yes)、S62に進む一方、選択ノードが根ノードでなければ(No)、S63に進む。
S62にて、インデックス編成部24は、記憶装置2の前回統合閾時刻34(T0)を、統合閾時刻T1で更新する。
S63にて、インデックス編成部24は、選択ノードの子ノード数又は保持データ数が統合対象ノードの子要素数下限数未満であるか否かを判定する。選択ノードの子ノード数又は保持データ数が子要素数下限数未満であるときには(Yes)、S64に進み、子ノード数又は保持データ数が統合対象ノードの子要素数下限数未満でないときには(No)、S66に進む。
S64にて、インデックス編成部24は、選択ノードの兄弟ノードのうち、矩形領域の最古時刻t1が統合閾時刻T1以前のノードであって、選択ノードの矩形領域に対する統合結果のノードの矩形領域の拡大量が最小のノードを、統合相手ノードとして決定する。換言すれば、ここで統合相手ノードとして選択される兄弟ノードは、優先範囲に含まれないノードであって、統合結果のノードの矩形領域の大きさと選択ノードの矩形領域の大きさとの差分が最小となる兄弟ノードである。
S65にて、インデックス編成部24は、選択ノードを被統合ノードとし、選択ノードに統合相手ノードとを統合する。具体的には、統合相手ノードの子ノードを、選択ノードの子ノードに追加し、選択ノードの親ノードの子ノードから、統合相手ノードを削除する。そして、S63に戻る。
S66にて、インデックス編成部24は、選択ノードの子ノード数又は保持データ数が統合対象ノードの子要素数上限数を超えているか否かを判定する。選択ノードの子ノード数又は保持データ数が子要素数上限数を超えているときには(Yes)、S67に進み、子ノード数又は保持データ数が子要素数上限数を超えていないときには(No)、S55に戻る。
S67にて、インデックス編成部24は、選択ノード(すなわち統合結果のノード)を再分割する。具体的には、インデックス編成部24は、分割後の2つのノードの矩形領域の大きさの和が最小となるように、選択ノードを分割し、分割の結果新たに作成したノードを、選択ノードの親ノードに追加する。
次に、データ検索システムで実行される前述のインデックス編成処理が実行される場合のデータ具体例につき、図2に示したインデックスをさらに編成する例を用いて説明する。
本具体例では、記憶手段に格納されたデータが、図4に示す内容であるとする。すなわち、検索優先期間32が「90日」、検索優先ノードの子要素数上限数が「6」、子ノード数下限数が「2」、統合対象ノードの子要素数上限数が「10」、子ノード数下限数が「10」である。さらに、前回統合閾時刻34(T0)が「2010年12月10日0時0分」である。
そして、「2010年4月10日0時0分」が統合処理開始時刻Tであるとする。この場合、統合閾時刻T1は、統合処理開始時刻Tから90日を差し引いた「2010年1月10日0時0分」となる。
そして、根ノード[R0]から順に子ノードを辿り、統合対象ノードであるか否かを判定していく。このとき、未処理の子ノードがあるときには、親ノードの統合処理よりも前に子ノードについて処理を行うため、子ノードである[R1]〜[R3]につき、判定処理を行う。ここで、[R1]及び[R2]は、矩形領域の時間軸の値の範囲のうち、最古時間t1が、それぞれ「2010年2月15日0時0分」及び「2010年2月1日0時0分」であるとする。この場合、いずれも統合閾時刻T1より新しいので、統合処理の対象外となる。一方、[R3]は、最古時間t1が「2010年1月1日0時0分」である一方、最新時間t2が「2010年2月1日0時0分」とする。この場合、最古時間t1が統合閾時刻T1以前であり、かつ、最新時間t2が前回統合閾時刻34(T0)よりも新しいので、さらに[R3]の子ノード[R31]〜[R34]について判定処理を行う。
ここで、[R31]〜[R34]のうち、[R31]の最古時間t1が統合閾時刻T1以前であり、最新時間t2が前回統合閾時刻(T0)よりも新しいとする。このため、[R31]は、統合対象とする。ここで、[R31]の保持データが[D311]〜[D312]の2つであるとすると、統合対象ノードの下限数である「10」より小さい。このため、[R31]を、他の兄弟ノードと統合する。ここで、[R32]も、最古時間t1が統合閾時刻T1以前であり、最新時間t2が前回統合閾時刻T0よりも新しいとする。この場合、[R32]が統合相手ノードとなり、[R31]に[R32]を統合する。具体的には、[R32]の保持データ[D321]〜[D322]を、[R31]の子ノードに追加する。そして、[R32]を、[R3]の子ノードから削除する。ここで、[R31]の保持データは、まだ統合対象ノードの下限数である「10」より小さいが、[R33]及び[R34]は、いずれも最古時間t1が統合閾時刻T1よりも新しいとする。この場合、[R33]〜[R34]は、統合処理の対象外となり、他に統合相手ノードとなるノードがないため、統合処理を終了する。
さらに、[R4]は、最古時間t1が統合閾時刻T1以前であるが、最新時刻t2が、前回統合閾時刻34(T0)よりも後であるとする。このため、[R4]も対象外となる。すなわち、[R3]は、統合対象ノードであるが、兄弟ノードである[R1]、[R2]及び[R4]のいずれも統合対象とならないため、統合処理は行わない。
そして、根ノードが選択され、全ての子ノードの処理が終了したので、前回統合閾時刻34(T0)を統合閾時刻T1に書き換えて、処理を終了する。
かかるデータ管理装置における処理によれば、検索頻度の高い新しい時間の範囲(優先範囲)内の子ノード数の制限数よりも、優先範囲外の古い時間の子ノード数の制限数を予め大きく設定しておくことで、次のような作用を奏する。すなわち、古い時間の座標情報を管理するノードの子ノード数が多い一方で、新しい時間の座標情報を管理するノードの子ノード数や保持データ数が少ないインデックスが編成される。このため、頻繁に検索対象となる新しい時間を検索範囲とした検索において、アクセスするノードの数が低減され、検索における計算量が削減される。したがって、頻度の高い検索処理の高速化を実現することができる。
特に、R−Tree構造のインデックスでは、各ノードが管理する矩形領域が相互に重なる場合がある。このため、検索における計算量として、検索範囲と矩形領域とが重なる根ノード及び中間ノードの子ノード数の総和に等しい回数の重なり判定を要する。さらには、同じく検索範囲と矩形領域とが重なる葉ノードの座標情報の総数に等しい回数の検索範囲内外判定を要する。この点につき、前述のように検索頻度の高い検索範囲のノード数が低減されることにより、検索処理の高速化に大きな効果が得られることが期待できる。
なお、前述の実施形態では、インデックス編成処理を所定時間ごとに行っているが、例えばオペレータ等により、ノード統合指示の入力がなされ、データ管理装置において当該入力を受け付けた時などに実行されてもよい。さらに、ノート統合処理は、例えば、記憶装置2に設定された子要素数制限数33が変更されたことを契機として実行されてもよい。
また、優先範囲を決定するための次元軸は時間軸に限らずいかなる次元軸であってもよく、優先範囲も任意に定めることが可能である。
なお、あるノードの管理領域の所定軸における範囲が優先範囲に含まれているか否かの判定は、同時に、当該範囲が優先範囲に含まれていないか、すなわち、優先範囲外であるか否かを判定していることでもあり、両者は実質的に同義である。
[3.第2実施形態]
次に、第2実施形態について説明する。第2実施形態では、座標情報の検索条件として指定される検索範囲の平均値における各軸の範囲の比率(例えば、幅(X軸)の範囲:高さ(Y軸)の範囲:時間(T軸)の範囲)と、各ノードの矩形領域の各軸の値の範囲の比率とがより近くなるようにノードを統合することで、検索時にアクセスするノード数を減らし、検索における計算量をさらに抑制する。なお、以下の説明において、検索範囲の各軸の範囲を検索領域長といい、矩形領域の各軸の範囲を矩形領域長という。
このことを、図12を用いて説明する。例えば、ノードR1〜ノードR5があり、各ノードの矩形領域が、それぞれX軸、Y軸の座標空間において図12に示す領域であるとする。ここで、図12(A)の場合、検索範囲が破線で示す領域であるとすると、検索範囲について検索を完了するためには、検索条件と重複する部分が存在する矩形領域を有するノード、すなわち、ノードR1〜ノードR5の全てにアクセスする必要が生じる。また、図12(A)のノードR1〜ノードR5の矩形領域のうち、網掛けで示す部分は、本来ならば検索対象から外れている部分である。しかし、これらの領域についても全て検索をする必要があるため、無駄な検索が多い。
一方で、図12(B)の場合、検索条件と重複する部分が存在する矩形領域を有するノードは、ノードR2〜R4の3つのみである。このため、検索範囲について検索を完了するためには、ノードR2〜R4にアクセスすればよい。また、検索対象から外れている斜線部分の領域も少なく、無駄な検索が少ない。
ここで、図12(A)及び図12(B)を比較すると、図12(B)の各ノードの矩形領域の形状のほうが、図12(A)の各ノードの矩形領域の形状よりも、検索範囲の形状に近い。ここで、本明細書では、座標空間の領域が各軸において占める範囲を領域長といい、各ノードの矩形領域の各軸における範囲を各軸の矩形領域長、検索範囲の領域の各軸における範囲を各軸の検索領域長という。この場合、図12(B)の矩形領域における[X軸の矩形領域長:Y軸の矩形領域長]の比率のほうが、図12(A)の各ノードの矩形領域における比率よりも、検索範囲における[X軸の検索領域長:Y軸の検索領域長]の比率に近い。このように、検索条件が座標空間に占める検索範囲の各軸の検索領域長の比率と、各ノードの矩形領域の各軸の矩形領域長の比率とが近いほうが、検索においてアクセスすべきノード数が少なくて済み、検索における計算量が低減される傾向にある。このため、第2実施形態では、座標情報の検索において指定される検索条件が座標空間に占める検索範囲の平均値における各軸の検索領域長の比率と、各ノードの矩形領域における各軸の矩形領域長との比率とがより近くなるように、ノードの統合を行う。
そして、第2実施形態では、このようなノードの統合を、統合相手ノードを適切に選択することによって実現する。第2実施形態におけるデータ管理装置10の構成及びデータ管理装置10において実行される処理について、以下に説明する。なお、第1実施形態と同様の箇所については説明を省略する。
図13は、第2実施形態に係るデータ検索システムの機能ブロック図を示す。
データ管理装置10は、座標情報DB31、検索優先期間32、子要素数制限数33、前回統合閾時刻34及び検索履歴DB35を有する。また、データ管理装置10は、制御部30である、データ検索部210、データ追加部22、データ削除部230、インデックス編成部240、統合閾時刻管理部25、統合対象判定部26及び補正選択部27を有する。
座標情報DB31、検索優先期間32、子要素数制限数33、前回統合閾時刻34、データ追加部22、統合閾時刻管理部25及び統合対象判定部26については、第1実施例と同様であるため、説明を省略する。
検索履歴DB35は、座標空間における各軸の検索条件として指定された検索範囲を蓄積するデータベースであり、図14に示すように、識別番号と、時間と、緯度及び経度の項目を有する。
データ検索部210は、第1実施例のデータ検索部21における処理に加え、オペレータにより指定された検索範囲を検索履歴DB35に蓄積する処理を行う。
データ削除部230は、データ削除処理に伴うノード統合において、後述する補正選択部27と連係して統合相手ノードを選択し、ノード統合を行う。
インデックス編成部240も、ノード統合において、後述する補正選択部27と連係して統合相手ノードを選択し、ノード統合を行う。
補正選択部27は、ノード統合において、被統合ノードに対する統合相手ノードとなり得るノードのそれぞれにつき、統合結果のノードの矩形領域から補正領域を作成し、この補正領域を用いて統合相手ノードを選択する。
次に、データ管理装置10において実行される各処理のうち、データ検索部210、データ削除部230、インデックス編成部240及び補正選択部27により実行される処理につき、図15〜図18を参照しつつ説明する。
まず、データ検索部210によるデータ検索処理について、図15のフローチャートを用いて説明する。なお、S1〜S8は、第1実施例と同様であるため、説明を省略する。
S9では、データ検索部210は、検索条件として指定された検索範囲に識別番号を付し、検索履歴DB35に蓄積する。
次に、データ削除部230によるデータ削除処理について、図16のフローチャートを用いて説明する。なお、S31〜S33は、第1実施例と同様であるため、説明を省略する。
S340にて、データ削除部230は、選択ノードの兄弟ノードのうち、選択ノードの矩形領域に対する統合結果ノードの矩形領域の拡大量が、所定の補正をした結果最小のノードを、統合相手ノードとして選択する。この処理は、後述する補正選択部27による補正領域作成処理に相当する。
S35〜S42も、第1実施例と同様であるため、説明を省略する。
次に、インデックス編成部240、統合対象判定部26及び統合閾時刻管理部25によるインデックス編成処理の一例について、図17のフローチャートを用いて説明する。なお、第1実施例のインデックス編成部240の処理のうち、図10に示すS51〜S62は、第2実施例においても同様であるため、図示及び説明を省略する。また、図18のうち、S63は、第1実施例と同様であるため、説明を省略する。
S640にて、インデックス編成部240は、選択ノードの兄弟ノードのうち、矩形領域の最古時刻t1が統合閾時刻T1以前のノードを選択する。
S641にて、S640で選択したノードのうち、選択ノードの矩形領域に対する統合結果ノードの矩形領域の拡大量が、所定の補正をした結果最小のノードを、統合相手ノードとして選択する。この処理は、後述する補正選択部27による補正領域作成処理に相当する。
S65〜S67も、第1実施例と同様であるため、説明を省略する。
次に、補正選択部27による補正選択処理について、図18のフローチャートを用いて説明する。
S71にて、補正選択部27は、検索履歴DB35に蓄積された各軸の検索範囲に基づき、検索範囲の平均値を算出する。
S72にて、補正選択部27は、選択ノードの兄弟ノードの全てにつき、補正領域における拡大量を計算済みであるか否かを判定する。計算済みであれば(Yes)、S78に進む一方、計算済みでなければ(No)、S73に進む。
S73にて、補正選択部27は、選択ノードの兄弟ノードを1つ選択する。
S74にて、補正選択部27は、検索範囲の平均値の各軸における検索領域長の比率と、選択兄弟ノードを選択ノードに統合した場合における統合結果ノードの矩形領域の各軸における矩形領域長の比率と、の比較結果を表す領域長比を算出する。具体的には、補正選択部27は、領域長比を、各軸の検索領域長の比率と、ノードの矩形領域における各軸の矩形領域長の比率との対比において、一方を他方で除算することで算出する。例えば、各軸を0〜nで表し、検索範囲の平均値 (Search Average) を (SA0, SA1……, SAn)、統合結果のノードの矩形領域 (Node Rectangle)を (NR0, NR1……, NRn)とする。この場合、領域長比は、(SA0/NR0, SA1/NR1, ……, SAn/NRn) となる。さらに、領域長比を正規化した正規化領域長比kを、この比率が最小の値を1とするように全体を除算することによって算出する。SAi/NRiの最小値をRminとすると、正規化領域長比kは (SA0/NR0/Rmin, SA1/NR1/Rmin, SAn/NRn/Rmin) となる。
S75にて、補正選択部27は、選択した兄弟ノードの矩形領域を選択ノードの矩形領域に追加した矩形領域を特定する。
S76にて、補正選択部27は、S75で特定した矩形領域のうち、選択ノードの矩形領域を超える部分の矩形領域につき、各軸の矩形領域長を、正規化した領域長比で除算した補正領域を計算する。かかる計算により、検索条件が座標空間に占める検索範囲の平均値における各軸の検索領域長の比率と、各ノードの矩形領域における各軸の矩形領域長との比率との差が大きい軸方向ほど、補正による圧縮率が高くなる。
S77にて、補正選択部27は、補正領域と選択ノードの矩形領域との大きさの差分、すなわち、拡大量を計算する。なお、補正選択部27は、この拡大量を、兄弟ノードごとに一時記憶に蓄積しておく。
S78にて、補正選択部27は、統合結果ノードの矩形領域の補正領域が、選択ノードの矩形領域に対して最も拡大量の少ない兄弟ノードを統合相手ノードとして選択する。
この正規化領域長比を用いて拡大領域の計算を補正する具体例を、図19に示す。説明の簡略化のため、図13の例では、座標情報の次元軸が、高さ及び時間の2次元であるものとする。
まず、検索範囲の平均値800が、高さ=42m、時間=30分であるとする。一方、被統合ノード801の矩形領域の各軸の長さが、高さ=21m、時間=4分であるとする。この場合、検索範囲の平均値800と被統合ノード801との各軸の領域長比は、[2(42m/21m):7.5(30分/4分)]となり、正規化領域長比は、[1(2/2):3.75(7.5/2)]となる。
そして、単に、被統合ノード801の矩形領域を、統合相手ノード802の矩形領域を含むように拡大すると、統合結果のノード803となる。そして、被統合ノード101に対する統合結果のノード803の拡大面積は、(51−0)×(33−20)−(42−0)×(24−20)=495となる。
一方、統合結果のノード803につき、補正領域804を算出すると、次のようになる。すなわち、正規化領域長比である[1:3.75]を用いて、被統合ノード801の範囲を超えた部分に対して、高さ方向は1を、時間方向は3.75を除算する。その結果、統合ノードの高さは42+(51−42)÷1=51となり、時間は24+(33−24)÷3.75=26.4となる。そして、被統合ノード101に対する補正領域103の拡大面積は、(51−0)×(26.4−20)−(42−0)×(24−20)=158.4となる。
このように、第2実施形態によれば、領域長比の長い方向へ拡大する統合相手ノードを統合したときの統合結果ノードの矩形領域のほうが、より小さく圧縮されるように補正される。このため、被統合ノードの矩形領域に対する統合結果のノードの矩形領域の拡大量が小さいノードを統合対象ノードとして選択する処理において、統合結果のノードが、統合結果のノードの矩形領域と検索範囲の平均値との領域比がより大きい軸(すなわち、検索範囲の平均値との差が大きい軸)に広がるような統合相手ノードが選択されやすくなる。その結果、座標情報の検索において指定される検索条件が座標空間に占める検索範囲の平均値における各軸の検索領域長の比率と、各ノードの矩形領域における各軸の矩形領域長との比率とがより近くなるように、ノードの統合が行われる。したがって、座標情報の検索においてアクセスするノードの数が低減され、検索における計算量がさらに抑制されることとなり、検索処理の高速化を図ることができる。
[4.第3実施形態]
次に、第3実施形態について説明する。第3実施形態では、オペレータにより予め設定された検索優先期間32に基づいて統合閾時刻を決定するのではなく、記憶装置に蓄積した検索履歴を用いて統合閾時刻を決定する。換言すれば、第3実施形態では、記憶装置に蓄積した検索履歴を用いて、優先範囲を決定する。
このような動作を実現する、第3実施形態におけるデータ管理装置の構成及びデータ管理装置において実行される処理の一例について、以下に説明する。なお、この第3実施形態は、第2実施形態に前述の機能を加えた実施形態として説明する。以下、第2実施形態と同様の箇所については説明を省略する。
図20は、第3実施例に係るデータ検索システムの機能ブロック図を示す。
データ管理装置100は、座標情報DB31、検索優先割合36、子要素数制限数33、前回統合閾時刻34及び検索履歴DB35を有する。また、データ管理装置100は、制御部300である、データ検索部210、データ追加部22、データ削除部230、インデックス編成部240、統合閾時刻管理部250、補正選択部27を有する。
座標情報DB31、子要素数制限数33、前回統合閾時刻34、検索履歴DB35、データ検索部210、データ追加部22、データ削除部230及びインデックス編成部240については、第2実施例と同様であるため、説明を省略する。
第3実施形態では、データ管理装置100は、第2実施形態の検索優先期間32の代わりに、検索優先割合36を有している。検索優先割合36は、オペレータにより予め設定される値である。
統合閾時刻管理部250は、検索優先割合36及び検索条件履歴テーブルに蓄積された検索履歴に基づいて、統合閾時刻を決定する。
次に、インデックス編成部240、統合対象判定部26及び統合閾時刻管理部250により実行されるインデックス編成処理のうち、統合閾時刻管理部250による処理の一例につき、図21のフローチャートを参照しつつ説明する。
S510にて、統合閾時刻管理部250は、検索履歴DB35に格納された検索履歴を時間軸の検索範囲でソートする。そして、検索履歴全体のなかで時間軸の検索範囲が大きい方(すなわち新しい方)から数えて検索優先割合36の件数に含まれる検索履歴の検索範囲を、優先範囲とする。そして、優先範囲に含まれる検索履歴のうち、最も古い時間を指定した検索履歴の検索時間における最古時刻t0を、統合閾時刻とする。
S51〜S62は、第2実施形態と同様であるため、説明を省略する。また、第2実施形態のインデックス編成処理のうち、図10に示すS63〜S67は、第3実施形態においても同様であるため、図示及び説明を省略する。
ここで、第3実施形態の処理につき、図14のデータ具体例を用いて説明する。
例えば、検索履歴が図14に示す内容であり、時間軸を用い、時間が新しい方から優先範囲を決定するとする。そして、優先範囲を決定するために用いる所定の割合を8割とする。図14の例で、全ての検索履歴を時間軸でソートし、直近の8割を含む範囲を優先範囲とすると、検索履歴は4540件あるため、時間が新しい方から数えて8割の件数(3632件)に含まれる検索履歴、すなわち、識別番号が4540〜909の検索履歴における時間が、優先範囲となる。このため、優先範囲と統合対象範囲の境界値として、2010/1/1を、統合閾時刻とする。
かかる第3実施形態によれば、例えば時間軸に基づいて優先範囲を決定する場合において、統合閾時刻(すなわち優先範囲が特定される値)が、実際の検索履歴で指定された検索条件に応じて決定される。ここで、例えば、直近のある一定期間の座標情報の利用頻度が著しく高いとオペレータ等が想定していても、実際には、直近の座標情報の検索頻度が想定しているほど高くなく、逆にその前の期間についても比較的頻繁に検索がなされている可能性もある。このような場合に、検索優先期間を固定値で設定すると、実は検索頻度が高い範囲のノードが統合対象となってしまう可能性がある。これに対し、第3実施形態では、検索履歴全体に対する件数の割合に基づいて優先範囲を決定するため、直近の検索件数が少ないときには、さらに過去に遡った検索履歴の検索範囲が、優先範囲に入る可能性がある。このように、第3実施形態では、検索状況に流動的に対応してインデックスを編成することができる。
なお、優先範囲を決定するための次元軸は時間軸に限らず、いかなる次元軸であってもよい。すなわち、検索履歴を所定軸の検索範囲でソートし、検索履歴全体のなかで当該所定軸の検索範囲が大きい方又は小さい方から数えて所定の割合の件数に含まれるか否かで、優先範囲とするか優先範囲以外とするかが決定されればよい。また、次元軸の時間軸以外の例として、緯度と経度を用いても良い。また、座標情報は、時空間を表す座標に限るものではなく、気象情報、運航情報、圃場情報、商品情報などの多次元情報に適用しても良い。例えば、気象情報であれば、日照量、降雨量、風速、風向、気温、気圧、マグニチュードを次元軸に用いても良い。運航情報であれば、速度、進行方向、加速度、積載重量を次元軸に用いても良い。圃場情報であれば、圃場水位、土中水分量、有機物含量、土壌電気伝導度、土壌pH、土壌硬度を次元軸に用いても良い。商品情報であれば、商品の価格、商品の割引率、商品の陳列高さ、商品前を単位時間に通過する人数、商品前を通過する人の速度を次元軸に用いても良い。
また、この第3実施形態の統合閾時刻管理部250及びこの統合閾時刻管理部250で実行される処理は、第2実施形態で説明した補正選択部27の有無に関わらず、データ管理装置100において実装可能である。
なお、第1実施形態及び補正選択部27が無い構成とした場合の第3実施形態は、必ずしもR−Tree構造のインデックスでなく、例えば、管理領域が1次元のB−Tree構造のインデックス等においても、技術的に適用することは可能である。
[5.ハードウェア構成]
図22は、上述したデータ管理装置の各実施形態が具現化された情報処理装置のハードウェア構成の一例を示す。本情報処理装置は、プロセッサ901、メモリ902、ストレージ903、可搬記憶媒体駆動装置904、入出力装置905及び通信インタフェース906を備える。
プロセッサ901は、制御ユニット、演算ユニット及び命令デコーダ等を含み、実行ユニットが、命令デコーダで解読されたプログラムの命令に従い、制御ユニットより出力される制御信号に応じ、演算ユニットを用いて算術・論理演算を実行する。かかるプロセッサ901は、制御に用いる各種情報が格納される制御レジスタ、既にアクセスしたメモリ2等の内容を一時的に格納可能なキャッシュ、及び、仮想記憶のページテーブルのキャッシュとしての機能を果たすTLBを備える。なお、プロセッサ901は、CPU(Central Processing Unit)コアが複数設けられている構成でもよい。
メモリ902は、例えばRAM(Random Access Memory)等の記憶装置であり、プロセッサ901で実行されるプログラムがロードされるとともに、プロセッサ901の処理に用いるデータが格納されるメインメモリである。また、ストレージ903は、例えばHDD(Hard Disk Drive)やフラッシュメモリ等の記憶装置であり、プログラムや各種データが格納される。可搬記憶媒体駆動装置904は、可搬記憶媒体907に記憶されたデータやプログラムを読み出す装置である。可搬記憶媒体907は、例えば磁気ディスク、光ディスク、光磁気ディスク又はフラッシュメモリ等である。なお、プロセッサ901は、メモリ902やストレージ903と協働しつつ、ストレージ903や可搬記憶媒体907に格納されたプログラムを実行する。なお、プロセッサ901が実行するプログラムや、アクセス対象となるデータは、当該情報処理装置と通信可能な他の装置に格納されていてもよい。
入出力装置905は例えばキーボード等やディスプレイ等であり、ユーザ操作等による動作命令を受け付ける一方、情報処理装置による処理結果を出力する。通信インタフェース906は例えばLAN(Local Area Network)カード等であり、外部とのデータ通信を可能にする。上述した情報処理装置の各構成要素は、バス908で接続されている。
なお、上述した各実施形態において、記憶装置に格納されたデータは、データ管理装置とは異なる他の装置に含まれる記憶装置に含まれていてもよい。この場合、データ管理装置と当該他の装置とが通信可能にネットワーク接続され、データ管理装置は、ネットワークを介して当該他の装置の記憶装置にアクセスすることとなる。
また、上述した情報処理装置の機能的構成及び物理的構成は、上述の態様に限るものではなく、例えば、各機能や物理資源を統合して実装したり、逆に、さらに分散して実装したりすることも可能である。