(57)【要約】【課題】データの階層構造化および階層管理の効率を向上させることを目的とする。【解決手段】情報処理装置２０は、一つの態様において、階層関係を有する複数のデータをそれぞれノードとして記憶するセンサデータＤＢ２１を有する。また、情報処理装置２０は、センサデータＤＢ２１が記憶するノードのうち、ノードを識別するノード識別子の付与対象となるノードを特定する特定部２４を有する。また、情報処理装置２０は、特定部２４が特定したノードが属する階層においてノードを識別する番号を選択する選択部２５を有する。また、情報処理装置２０は、特定部２４が特定したノードの上位ノードに付与されたノード識別子に選択部２５が選択した番号を付加した値を、ノード識別子として特定部２４が特定したノードに付与する付与部２６を有する。【選択図】        図１
2015018428.tif 000002
【特許請求の範囲】
【請求項１】
階層関係を有する複数のデータをそれぞれノードとして記憶する記憶部と、
前記記憶部が記憶するノードのうち、ノードを識別するためのノード識別子の付与対象となるノードを特定する特定部と、
前記特定部が特定したノードが属する階層において当該ノードを識別する番号を選択する選択部と、
前記特定部が特定したノードの上位ノードに付与されたノード識別子に前記選択部が選択した番号を付加した値を、ノード識別子として前記特定部が特定したノードに付与する付与部と
を有することを特徴とする情報処理装置。
【請求項２】
前記付与部は、前記特定部が特定したノードの上位ノードが複数存在する場合は、上位ノードごとに、前記上位ノードに付与されたノード識別子に前記選択部が選択した番号を付加した値を生成し、生成した各値をノード識別子として前記特定部が特定したノードに付与することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記特定部は、前記記憶部が記憶するノードのうち、上位ノードが追加されたノードを特定し、
前記付与部が前記記憶部に記憶されたノードのうち、上位ノードが追加されたノードに対して前記ノード識別子を付与した場合は、当該ノード識別子が付与されたノードの各上位ノードに対する当該ノードの按分比率を特定し、当該特定した按分比率と当該ノードに対応するデータの値とに応じて、当該ノードの上位ノードに対応するデータの更新を行う更新部をさらに有することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記更新部は、各ノードに対応するデータと各ノードの按分比率とに基づいて、当該ノードよりも下位の階層に属するノードに対応するデータの更新を行うことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記選択部は、所定の桁数を有する番号を選択することを特徴とする請求項１〜４のいずれか１つに記載の情報処理装置。
【請求項６】
前記付与部は、前記特定部が特定したノードが属する階層と、該ノードの上位ノードが属する階層との間に省略された階層が存在する場合は、前記上位ノードに付与されたノード識別子に対し、階層が省略された旨を示す前記所定の桁数の値を省略された階層の数だけ付加し、さらに前記選択部が選択した番号を付加した値をノード識別子として前記特定部が特定したノードに付与する
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
情報処理装置が実行する情報管理方法であって、
階層関係を有する複数のデータをそれぞれノードとして記憶する記憶装置から、ノードを識別するノード識別子の付与対象となるノードを特定する特定工程と、
前記特定工程で特定されたノードが属する階層において当該ノードを識別する番号を選択する選択工程と、
前記特定工程で特定されたノードの上位ノードに付与されたノード識別子に前記選択工程で選択された番号を付加した値を、ノード識別子として前記特定工程で特定されたノードに付与する付与工程と
を含むことを特徴とする情報管理方法。
【請求項８】
コンピュータに、
階層関係を有する複数のデータをそれぞれノードとして記憶する記憶装置から、ノードを識別するノード識別子の付与対象となるノードを特定する特定ステップと、
前記特定ステップで特定されたノードが属する階層において当該ノードを識別する番号を選択する選択ステップと、
前記特定ステップで特定されたノードの上位ノードに付与されたノード識別子に前記選択ステップで選択された番号を付加した値を、ノード識別子として前記特定ステップで特定されたノードに付与する付与ステップと
を実行させることを特徴とする情報管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、階層構造を有する情報の管理および検索に係る技術に関する。
【背景技術】
【０００２】
近年、センサデータやライフログデータ等、データ同士が木構造等の階層構造を有するデータを管理する情報処理装置が知られている。このような情報処理装置の一例として、各データに階層構造を示す情報を付与し、各データに付与された情報を用いて、階層構造に応じたデータの検索や更新を行う情報処理装置が知られている。
【０００３】
例えば、情報処理装置は、管理対象となる各データを階層構造を有するノードとみなし、親ノードと子ノードとの間の経路に、子ノードの数を示す多重度をあらかじめ定義する。そして、情報処理装置は、各ノードに対し、最上位のノードから各ノードまでの経路に定義された多重度の積を、階層構造を示す構造情報値として付与することで、各ノードを階層構造化する。
【０００４】
また、情報処理装置は、あるノードの親ノードを検索する場合は、ノードに付与された構造情報値から親ノードとの間に設定された多重度を除算することで、親ノードに付与される構造情報値を算出する。そして、情報処理装置は、算出した構造情報値が付与されたノードを親ノードとして識別する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−２０２８５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、各ノード間に定義された多重度に基づいて、各ノードに階層関係を示す構造情報値を付与する技術では、ノードの更新や検索を行う度にノードごとに定義された多重度をその都度参照し、参照した多重度の値を用いて構造情報値を算出する。このため、情報処理装置は、ＮｏＳＱＬ（Not  SQL）等のスキーマレスなデータを扱うデータベースマネージメントシステムにおいては、多重度の参照が多く発生し、データの階層構造化および階層管理の効率を向上させることができないという課題がある。
【０００７】
例えば、情報処理装置は、階層構造に沿って親ノードや子ノードを検索する度に、多重度の乗算や除算を行うので、ノードの階層構造に基づいて按分計算を行う際や集計計算を行う際の処理を複雑化してしまう。また、情報処理装置は、ノードの階層関係が更新された場合は、更新後の階層関係に応じて各ノードに付与する構造情報値を算出しなおすので、更新時の処理効率を低下させてしまう。
【０００８】
また、情報処理装置は、新たなセンサが設置された際に、新たなセンサの設置位置に係る階層関係が省略された場合、他のセンサの設置位置に係る階層関係との統一性がないため、新たなセンサが測定したデータの階層構造を適切に管理できない場合がある。また、情報処理装置が管理するデータには、複数機器が共用する機器に設置されたセンサが測定するセンサデータ等、親データが複数存在するデータが存在する。しかしながら、各ノードに構造情報値を定義する技術では、あるノードに複数の親ノードが存在するか否かを示すことができない。
【０００９】
開示の実施形態は、上述に鑑みてなされたものであって、データの階層構造化および階層管理の効率を向上させることを目的とする。
【課題を解決するための手段】
【００１０】
開示する情報処理装置は、一つの態様において、階層関係を有する複数のデータをそれぞれノードとして記憶する記憶部を有する。また、情報処理装置は、前記記憶部が記憶するノードのうち、ノードを識別するノード識別子の付与対象となるノードを識別する特定部を有する。また、情報処理装置は、前記特定部が特定したノードが属する階層において当該ノードを識別する番号を選択する選択部を有する。また、情報処理装置は、前記特定部が特定したノードの上位ノードに付与されたノード識別子に前記選択部が選択した番号を付加した値を、ノード識別子として前記特定部が特定したノードに付与する付与部を有する。
【発明の効果】
【００１１】
開示する情報処理装置の一つの態様によれば、階層構造化および階層管理の効率を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施形態に係る情報管理システムを説明する図である。
【図２】図２は、実施形態に係る構造データが示す階層構造の一例を説明する図である。
【図３】図３は、実施形態に係るセンサデータの一例を説明する図である。
【図４】図４は、実施形態に係る情報処理装置がＩＤを付与する処理の一例を説明する第１の図である。
【図５】図５は、実施形態に係る情報処理装置がＩＤを付与する処理の一例を説明する第２の図である。
【図６】図６は、実施形態に係る情報処理装置が各ノードに対して付与するＩＤの一例を説明する図である。
【図７】図７は、実施形態に係る情報処理装置が親ノードの追加を行う際に実行する処理の一例を説明する図である。
【図８】図８は、実施形態に係る情報処理装置が実行する再算出処理の一例を説明する図である。
【図９】図９は、処理対象となるノードの階層構造を説明する図である。
【図１０】図１０は、実施形態に係るセンサデータの一例を説明する図である。
【図１１】図１１は、実施形態に係る情報処理装置が実行する按分処理の内容を説明するための図である。
【図１２】図１２は、実施形態に係る情報処理装置が算出する消費電力量の一例を説明する図である。
【図１３】図１３は、実施形態に係る情報処理装置が実行する処理の流れを説明するためのシーケンス図である。
【図１４】図１４は、実施形態に係る情報処理装置が各ノードにＩＤを付与する処理の流れを説明するためのフローチャートである。
【図１５】図１５は、実施形態に係る情報処理装置が、親ノードの追加が行われた際に実行する処理の流れを説明するフローチャートである。
【図１６】図１６は、本実施形態に係る情報管理プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照して情報処理装置、情報管理方法および情報管理プログラムについて説明する。なお、本実施形態により開示する発明が限定されるものではない。各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【００１４】
（実施形態）
以下、図１を用いて、階層構造を有するデータの管理を行う情報管理システムの１例について説明する。図１は、実施形態に係る情報管理システムを説明する図である。図１に示す例では、情報管理システム１は、各種情報処理を実行する情報処理システム２と接続される。
【００１５】
ここで、情報処理システム２は、データセンター等、複数のフロアに複数の情報処理装置が設置された大規模な情報処理システムである。例えば、情報処理システム２は、フロア３に、ラック４、シャーシ５が設置されている。また、ラック４には、シャーシ６が設置され、シャーシ６には、複数のデバイス７、８が設置されている。なお、デバイス７、８とは、例えば、サーバ、ネットワーク機器、Ｉ／Ｏ（Input/Output）機器等、情報処理システム２に設置される任意の電子機器である。一方、シャーシ５には、デバイス９が設置されている。
【００１６】
なお、図１に示す例では、情報処理システム２が有するフロア３を図示したが、情報処理システム２は、他にも複数のフロアを有するものとする。また、フロア３には、ラック４、シャーシ５だけではなく、図示を省略したラックやシャーシが設置されているものとする。また、ラック４には、シャーシ６以外にも、複数のシャーシやデバイスが設置されているものとする。また、シャーシ５には、デバイス９以外にも、各種デバイスが設置されているものとする。
【００１７】
また、情報処理システム２は、複数のセンサ１０ａ〜１０ｄを有する。各センサ１０ａ〜１０ｄは、情報処理システム２が有するフロア３内に設置されたセンサであり、例えば、フロア３、ラック４、シャーシ５、シャーシ６、デバイス７〜９の消費電力をそれぞれ個別に測定する消費電力量センサである。例えば、センサ１０ａは、フロア３の配電盤等に設置され、フロア３に設置された各種機器が消費する消費電力量を測定する。そして、センサ１０ａは、測定した消費電力量をセンサデータとして情報管理システム１に送信する。
【００１８】
また、センサ１０ｂは、ラック４の消費電力を測定し、測定した消費電力量を情報管理システム１へ送信する。また、センサ１０ｃは、デバイス７の消費電力を測定し、測定した消費電力量を情報管理システム１へ送信する。また、センサ１０ｄは、デバイス９の消費電力を測定し、測定した消費電力量を情報管理システム１へ送信する。すなわち、各センサ１０ａ〜１０ｄは、階層関係を有する各種機器の消費電力量をそれぞれ測定し、測定した消費電力量を示すセンサデータを情報管理システム１へ送信する。
【００１９】
なお、以下の説明では、情報処理システム２が有するフロア３、ラック４、シャーシ５、シャーシ６、デバイス７〜９等、各センサ１０ａ〜１０ｄが消費電力量を測定する対象を測定対象と記載する場合がある。なお、図１では記載を省略したが、情報処理システム２には、他にも複数のセンサが設置され、各センサは、それぞれ異なる測定対象の消費電力量をそれぞれ測定し、測定した消費電力量を示すセンサデータを情報管理システム１へ送信するものとする。ここで、各センサ１０ａ〜１０ｄは、フロア３が有する測定対象のうち、一部の測定対象の消費電力のみを測定する場合がある。
【００２０】
一方、情報管理システム１は、利用者端末１１と情報処理装置２０とを有する。また、情報処理装置２０は、センサデータＤＢ（Data  Base）２１、センサデータ登録部２２、センサデータ構造更新部２３とを有する。また、センサデータ構造更新部２３は、特定部２４、選択部２５、付与部２６、更新部２７とを有する。また、センサデータＤＢ２１は、構造データ２８とセンサデータ２９とを記憶する。
【００２１】
まず、センサデータＤＢ２１が記憶する構造データ２８とセンサデータ２９について説明する。構造データ２８は、各センサ１０ａ〜１０ｄが測定するセンサデータの階層構造を示す情報である。すなわち、構造データ２８は、情報処理システム２が有するフロア３、ラック４、シャーシ５、シャーシ６、デバイス７〜９の階層構造に従って、各測定対象から測定されたセンサデータの階層構造を示すデータである。
【００２２】
以下、構造データ２８の一例について説明する。まず、図２を用いて、構造データ２８が示す階層構造の一例について説明する。図２は、実施形態に係る構造データが示す階層構造の一例を説明する図である。なお、図２には、構造データ２８が示すデータの親子関係を示す樹形図を記載した。
【００２３】
なお、以下の説明では、階層構造を有する各データをノードと記載し、基準となるノードの上位ノードを親ノードと記載し、基準となるノードの下位ノードを子ノードと記載する。また、基準となるノードと同じ親ノードを有し、基準となるノードと同じ階層に属するノードを兄弟ノードと記載する。また、最上位のノードから最下位のノードまでを接続する経路に含まれるノードのうち、基準となるノードよりも上位の階層に位置するノードを先祖ノードと記載し、基準となるノードよりも下位の階層に位置するノードを子孫ノードと記載する。また、以下の説明では、シャーシ５、シャーシ６における消費電力の測定は行わず、シャーシに対応する階層に属するノードを管理しない例について説明する。
【００２４】
例えば、図２に示す例では、最上位の階層にノード「ｂｕｉｌｄｉｎｇ０００１」が存在し、子ノードとして「ｆｌｏｏｒ０００１」、「ｆｌｏｏｒ０００２」を有する。また、「ｆｌｏｏｒ０００１」は、子ノードとして「ｒａｃｋ０００１」、「ｄｅｖｉｃｅ０００３」、「ｄｅｖｉｃｅ０００４」を有する。また、「ｒａｃｋ０００１」は、子ノードとして「ｄｅｖｉｃｅ０００１」、「ｄｅｖｉｃｅ０００２」を有する。
【００２５】
一方、「ｆｌｏｏｒ０００２」は、子ノードとして「ｒａｃｋ０００２」、「ｒａｃｋ０００３」を有する。また、「ｒａｃｋ０００２」は、子ノードとして「ｄｅｖｉｃｅ０００５」、「ｄｅｖｉｃｅ０００６」を有する。また、「ｒａｃｋ０００３」は、子ノードとして「ｄｅｖｉｃｅ０００７」、「ｄｅｖｉｃｅ０００８」を有する。
【００２６】
ここで各ノードのラベルには、測定対象の種別を示すラベルと、測定対象の種別ごとに付与された番号とが含まれる。例えば、「ｄｅｖｉｃｅ」とは、デバイス７〜９等、情報処理システム２が有する各種デバイスを示すラベルである。また、「ｒａｃｋ」とは、ラック４等、シャーシやデバイスが設置されたラックを示すラベルである。また、「ｆｌｏｏｒ」とは、各種デバイス、シャーシ、ラックが設置された階を示すラベルである。また「ｂｕｉｌｄｉｎｇ」とは、情報処理システム２が設置された建物を示すラベルである。
【００２７】
かかるノードは、「ｂｕｉｌｄｉｎｇ」を仮想構造全体を示すノードとし、「ｆｌｏｏｒ」を最上位のノードとして「ｒａｃｋ」、「ｄｅｖｉｃｅ」と深度が増加する階層構造を有する。このため、例えば、情報処理装置２０は、図２に示す階層構造を示すドキュメント型の構造データ２８として、「{“name”:  “building0001”,  “children”:[{“name”:“floor0001”,  “children”:[{“name”:“rack0001”,  “children”:[{“name”:“device0001”,  “name”:“device0002”}],“name”:“device0003”,  “name”:“device0004”}],“name”:“floor0002”,  “children”:[{“name”:“rack0002”,  “children”:[{“name”:“device0005”,  “name”:“device0006”}],“name”:“rack0003”,  “children”:[{“name”:“device0007”,  “name”:“device0008”}]}]}]}」を記憶する。
【００２８】
図１に戻り、センサデータ２９は、各センサ１０ａ〜１０ｄが測定したデータである。例えば、センサデータ２９には、各センサ１０ａ〜１０ｄが実際に測定した消費電力量が含まれる。また、センサデータ２９には、各センサ１０ａ〜１０ｄが実際に測定した消費電力量ではなく、測定対象の階層関係等から算出される消費電力量が含まれる。
【００２９】
例えば、図３は、実施形態に係るセンサデータの一例を説明する図である。図３に示すように、センサデータ２９は、各センサ１０ａ〜１０ｄが測定した消費電力量を含む個別のデータがそれぞれ独立した状態で含まれるドキュメント型のデータである。具体的には、センサデータ２９には、図３に示すように、中括弧で囲まれた複数のデータすなわち各ノードのデータが含まれる。
【００３０】
ここで、図３中（Ａ）、（Ｂ）、（Ｃ）に示すように、各ノードには、「“＿ｉｄ”」と、「“ｎａｍｅ”」と「“ｖａｌｕｅ”」とが含まれる。ここで、図３中（Ａ）に示す「“＿ｉｄ”」とは、ノードを一意に識別するための識別子である。なお、図３に示す例では、各ノードに対して「“＿ｉｄ”」がまだ付与されていない。
【００３１】
また、図３中（Ｂ）に示す「“ｎａｍｅ”」とは、ノードに対応する測定対象を識別するための情報であり、例えば、測定対象の名称である。また、図３中（Ｃ）に示す「“ｖａｌｕｅ”」とは、測定対象から測定されたデータの値であり、例えば、測定対象から測定された消費電力量である。なお、以下の説明では、データを一意に識別するための識別子を単にＩＤ（Identification）と記載する場合がある。
【００３２】
例えば、図３に示す例では、「“ｎａｍｅ”：ｆｌｏｏｒ０００１」と「“ｖａｌｕｅ”：５０．４」とを含むデータは、ｆｌｏｏｒ０００１全体の消費電力量が「５０．４」ワットである旨を示す。また、「“ｎａｍｅ”：ｆｌｏｏｒ０００２」と「“ｖａｌｕｅ”：６６．４」とを含むデータは、ｆｌｏｏｒ０００２全体の消費電力量が「６６．４」ワットである旨を示す。
【００３３】
なお、各ノードは複数の親を有する場合がある。かかる場合、複数の親を有するノードには、各親ノードの「“ｖａｌｕｅ”」の値に対して寄与する割合を示す按分比率「“ｒａｔｉｏ”」が設定される場合がある。例えば、「ｆｌｏｏｒ０００１」のノードと「ｆｌｏｏｒ０００２」のノードとが「ｒａｃｋ０００２」のノードの親ノードであるものとする。ここで、「ｒａｃｋ０００２」のノードの「“ｖａｌｕｅ”」が１：３の割合で「ｆｌｏｏｒ０００１」のノードの「ｖａｌｕｅ」と「ｆｌｏｏｒ０００２」のノードの「ｖａｌｕｅ」とに寄与するものとする。かかる場合、「ｒａｃｋ０００２」のノードには、按分比率「“ｒａｔｉｏ”：０．２５」と「“ｒａｔｉｏ”：０．７５」とが、各親のＩＤと対応付けて格納される。
【００３４】
ここで、情報処理装置２０は、センサデータ構造更新部２３が実行する処理によって、センサデータ２９の各ノードに一意なＩＤを付与する。以下、情報処理装置２０が各ノードに一意なＩＤを付与する処理の流れについて説明する。
【００３５】
センサデータ登録部２２は、情報処理システム２に設置された各センサ１０ａ〜１０ｄが測定したデータをセンサデータＤＢ２１に登録する。例えば、センサデータ登録部２２は、名称が「ｄｅｖｉｃｅ０００８」であるデバイスの消費電力量を測定するセンサからセンサデータを受信した場合は、受信したセンサデータの値を「“ｖａｌｕｅ”」とし、「ｄｅｖｉｃｅ０００８」を「“ｎａｍｅ”」とするノードをセンサデータＤＢ２１に格納する。
【００３６】
特定部２４は、ＩＤの付与または更新を行うノードを特定する。具体的には、特定部２４は、センサデータ２９に含まれるＩＤが付与されていないノードまたは更新されていないノードを、深度優先検索で検索し、検索したノードを選択部２５に通知する。
【００３７】
以下、特定部２４が実行する処理のうち、ＩＤの付与を行うノードを特定する処理の流れについて一例を説明する。例えば、特定部２４は、構造データ２８を参照し、最上位の階層に属するノードを選択する。そして、特定部２４は、選択したノードの「“ｎａｍｅ”」の値を取得する。
【００３８】
また、特定部２４は、取得した「“ｎａｍｅ”」の値を含むノードをセンサデータ２９から検索し、検索したノードにＩＤが付与されているか否かを判定する。すなわち、特定部２４は、最上位のノードについてＩＤが付与されているか否かを判定する。その後、特定部２４は、検索したノードにＩＤが付与されていない場合は、検索したノードを選択部２５に通知する。
【００３９】
また、特定部２４は、検索したノードにＩＤが付与されている場合、または、選択部２５に検索したノードの通知を行った場合は、構造データ２８から選択したノードの子ノードを選択する。また、特定部２４は、選択した子ノードの「“ｎａｍｅ”」の値を取得し、取得した「“ｎａｍｅ”」の値を含むノードをセンサデータ２９から検索する。そして、特定部２４は、検索したノードにＩＤが付与されているか否かを判定し、ＩＤが付与されていない場合は、検索したノードの「“ｎａｍｅ”」を選択部２５に通知する。
【００４０】
また、特定部２４は、上述した処理を最上位の階層に属するノードから最下位の階層に属するノードまで順に実行し、最下位の階層に属するノードについて、ＩＤが付与されているか否かを判定した場合は、兄弟ノードにＩＤが付与されているか否かを判定する。また、特定部２４は、兄弟ノードにＩＤが付与されているか否かを判定した場合は、親ノードの兄弟ノードにＩＤが付与されているか否かを判定する。また、特定部２４は、上述した処理を継続することで、すべてのノードにＩＤが付与されているか否かを判定する。
【００４１】
このように、特定部２４は、深度優先検索のアルゴリズムを利用して、各ノードにＩＤが付与されているか否かを判定する。そして、特定部２４は、ＩＤが付与されていないノードを選択部２５に通知する。なお、特定部２４は、構造データ２８が上述したドキュメント型のデータである場合、すなわち、深度を優先として各ノードの「“ｎａｍｅ”」を順に示すデータである場合は、構造データ２８に含まれる「“ｎａｍｅ”」の値を先頭から順に選択すればよい。
【００４２】
かかる処理を実行する結果、特定部２４は、「ｆｌｏｏｒ０００１」、「ｒａｃｋ０００１」、「ｄｅｖｉｃｅ０００１」〜「ｄｅｖｉｃｅ０００４」の順に、ノードにＩＤが付与されているか否かを判定する。また、特定部２４は、「ｆｌｏｏｒ０００２」、「ｒａｃｋ０００２」、「ｄｅｖｉｃｅ０００５」、「ｄｅｖｉｃｅ０００６」、「ｒａｃｋ０００３」、「ｄｅｖｉｃｅ０００７」、「ｄｅｖｉｃｅ０００８」の順に、ノードにＩＤが付与されているか否かを判定する。その後、特定部２４は、すべてのノードについて判定を行った場合は、「“ｖａｌｕｅ”」の更新を更新部２７に依頼する。
【００４３】
次に、特定部２４が実行する処理のうち、ＩＤの更新を行うノードを特定する処理の流れについて一例を説明する。例えば、特定部２４は、利用者端末１１から発行された構造データ２８に対する更新要求の内容等を特定することで、構造データ２８の更新内容を特定する。そして、特定部２４は、利用者端末１１により、あるノードの親ノードが変更された場合は、親ノードが変更されたノードを特定し、特定したノードを選択部２５に通知する。
【００４４】
また、特定部２４は、利用者端末１１により構造データ２８が更新され、あるノードに親ノードが追加された場合は、親ノードが追加されたノードを特定し、特定したノードを選択部２５に通知する。一方、特定部２４は、ノードの削除が行われた場合は、削除されたノードのＩＤを付与部２６に通知する。また、特定部２４は、ノードの按分比率が変更された場合は、按分比率が変更されたノードを特定し、特定したノードを更新部２７に通知する。
【００４５】
選択部２５は、特定部２４が特定したノードに対し、かかるノードが属する階層においてノードを識別する番号を選択する。具体的には、選択部２５は、特定部２４からノードの通知を受信すると、通知されたノードに対して、１つの階層に属するノードの最大数に応じた桁数を有する番号であって、通知されたノードが属する階層と通知されたノードの親ノードとの組ごとに一意な番号を付与する。
【００４６】
以下、ＩＤの付与を行う際に選択部２５が実行する処理と、ＩＤの更新を行う際に選択部２５が実行する処理とについて説明する。まず、ＩＤの付与を行う際に実行する処理について説明する。例えば、選択部２５は、通知されたノードが最上位の階層に属するノードである場合は、通知されたノードに対し、「１」から始まる番号を付与する。また、選択部２５は、通知されたノードが最上位の階層以外の階層に属するノードである場合は、通知されたノードに対し、例えば４桁の番号、すなわち「０００１」〜「９９９９」までのいずれかの番号を付与する。そして、選択部２５は、通知されたノードと、付与した番号とを付与部２６に通知する。
【００４７】
以下、選択部２５が実行する処理の具体例について説明する。例えば、選択部２５は、特定部２４から「ｆｌｏｏｒ０００１」の通知を受信した場合は、構造データ２８を参照し、「ｆｌｏｏｒ０００１」が最上位の階層に属するノードであるかを判定する。ここで、「ｆｌｏｏｒ０００１」は、最上位の階層に属するノードであるため、選択部２５は、「ｆｌｏｏｒ０００１」に対し、番号「１」を付与し、「ｆｌｏｏｒ０００１」と番号「１」とを付与部２６に通知する。
【００４８】
また、選択部２５は、特定部２４から「ｒａｃｋ０００１」の通知を受信した場合は、構造データ２８を参照し、「ｒａｃｋ０００１」が最上位の階層に属するノードであるかを判定する。ここで、「ｒａｃｋ０００１」は、最上位の階層に属するノードではないので、選択部２５は、「ｒａｃｋ０００１」に対し、例えば番号「０００１」を付与する。そして、選択部２５は、「ｒａｃｋ０００１」と番号「０００１」とを付与部２６に通知する。
【００４９】
また、選択部２５は、階層と親ノードとの組み合わせごとに一意な番号を付与する。例えば、各ノードが図２に示す階層関係を有する場合、選択部２５は、「ｄｅｖｉｃｅ０００１」に対し、番号「０００１」を付与し、「ｄｅｖｉｃｅ０００２」に対し、番号「０００２」とを付与する。また、選択部２５は、「ｄｅｖｉｃｅ０００３」に対し、番号「０００１」を付与し、「ｄｅｖｉｃｅ０００４」に対し、番号「０００２」を付与する。
【００５０】
次に、ＩＤの更新を行う際に選択部２５が実行する処理について説明する。まず、選択部２５は、あるノードの親ノードが変更された場合は、親ノードが変更されたノードの通知を特定部２４から受信する。かかる場合、選択部２５は、通知されたノードが属する階層と変更後の親ノードとの組み合わせごとに一意な番号を新たに付与する。そして、選択部２５は、親ノードの変更を示す旨とともに、親ノードが変更されたノードと、新たに付与した番号とを付与部２６に通知する。
【００５１】
また、選択部２５は、あるノードに親ノードが追加された場合は、親ノードが追加されたノードの通知を特定部２４から受信する。かかる場合、選択部２５は、通知されたノードが属する階層と、追加された親ノードとの組み合わせごとに一意な番号を新たに付与し、親ノードの追加を示す旨とともに、親ノードが追加されたノードと、新たに付与した番号とを付与部２６に通知する。
【００５２】
付与部２６は、特定部２４が特定したノードに対し、ＩＤを付与する。以下、付与部２６が実行する処理について、各ノードにＩＤを付与する際に実行する処理と、ノードの階層構造が更新された際に実行する処理とに分けて説明する。
【００５３】
まず、付与部２６が実行する処理のうち、各ノードにＩＤを付与する際に実行する処理について説明する。例えば、付与部２６は、選択部２５からノードの通知を受信すると、ＩＤの値をｆ（ｌ，ｉ）と記載した際に、ｆ（ｌ，ｉ）＝ｆ（ｌ−ｋ，ｊ）×ｎｅｋ＋１で示されるＩＤの付与を行う。
【００５４】
また、上記した式中のｌとは、ＩＤを付与するノードが属する階層の最上位階層からの階層数である。また、上記した式中のｉとは、ＩＤを付与するノードに対して階層ごとに付与される番号である。また、上記した式中のｋとは、ＩＤを付与するノードが属する階層と親ノードが属する階層との階層数の差である。また、上記した式中のｊとは、ＩＤを付与するノードの親ノードに対して階層ごとに付与される番号である。また、上記した式中のｎｅとは、各階層に属するノードの最大数である。また、上記した式中のｆ（ｌ−ｋ，ｊ）とは、ＩＤを付与するノードの親ノードのＩＤを示す値である。
【００５５】
上記した式を用いて、例えば、付与部２６は、ＩＤを付与するノードと親ノードとが隣接する階層に属する場合は、ｋ＝１よりｆ（ｌ，ｉ）＝ｆ（ｌ−１，ｊ）×ｎｅ＋ｉで示されるＩＤの付与を行う。また、例えば、付与部２６は、ＩＤを付与するノードと親ノードとの間に省略された階層が１つ存在する場合は、ｋ＝２よりｆ（ｌ，ｉ）＝ｆ（ｌ−２，ｊ）×ｎ２ｅ＋ｉで示されるＩＤを付与する。
【００５６】
すなわち、付与部２６は、選択部２５から通知されたノードに対し、親ノードに付与されたＩＤに選択部２５が選択した番号、すなわち、通知されたノードが属する階層と、通知されたノードの親ノードとの組ごとに一意な番号とを付加した値をＩＤとして付与する。また、付与部２６は、通知されたノードが属する階層と親ノードが属する階層との間に省略された階層が存在する場合は、以下の処理を実行する。まず、付与部２６は、親ノードのＩＤに、階層が省略された旨を示す値であって、各ノードに対し階層ごとに付与される番号と同じ桁数の番号を、省略された階層の数だけ付加した値を生成する。さらに、付与部２６は、生成した値に通知された番号を付加した値をＩＤとして付与する。
【００５７】
また、付与部２６は、通知されたノードの親ノードが複数存在する場合は、親ノードごとに、親ノードのＩＤに選択部２５が選択した番号を付与したＩＤを生成する。そして、付与部２６は、生成した複数のＩＤを受信したノードのＩＤとして、それぞれセンサデータ２９に登録する。
【００５８】
ここで、図４、図５を用いて、付与部２６が実行する処理について説明する。まず、図４を用いて、付与部２６が各ノードに対してＩＤを付与する処理の一例について説明する。図４は、実施形態に係る情報処理装置がＩＤを付与する処理の一例を説明する第１の図である。なお、図４に示す例では、ｎ＝１０、ｅ＝４とした際に各ノードに付与されるＩＤの一例について記載した。なお、図４に示す例では、各ノードと各ノードの親ノードとの間に省略された階層が存在しないため、ｋ＝１となる。
【００５９】
例えば、付与部２６は、図４中（Ｄ）に示すように、ｉ＝１、ｌ＝１となるノード「ｆｌｏｏｒ０００１」に対しては、ｆ（１，１）＝１よりＩＤ「１」を付与する。また、付与部２６は、図４中（Ｅ）に示すように、ｉ＝１、ｌ＝２となるノード「ｒａｃｋ０００１」に対しては、ｆ（２，１）＝ｆ（１，１）×１０４＋１＝１×１０４＋１よりＩＤ「１０００１」を付与する。すなわち、付与部２６は、図４中（Ｆ）に示すノード「ｆｌｏｏｒ０００１」のＩＤ「１」に、図４中（Ｇ）に示す番号「０００１」を付加したＩＤ「１０００１」を付与する。
【００６０】
また、付与部２６は、また、図４中（Ｈ）に示すように、ｉ＝１、ｌ＝３となるノード「ｄｅｖｉｃｅ０００１」に対しては、ｆ（３，１）＝ｆ（２，１）×１０４＋１＝１０００１×１０４＋１よりＩＤ「１０００１０００１」を付与する。すなわち、付与部２６は、図４中（Ｉ）に示すように、ノード「ｒａｃｋ０００１」のＩＤ「１０００１」に対し、番号「０００１」を付加したＩＤ「１０００１０００１」を付与する。
【００６１】
次に、図５を用いて、親ノードと子ノードとの間に省略された階層が存在する際に、付与部２６が子ノードにＩＤを付与する処理の一例について説明する。図５は、実施形態に係る情報処理装置がＩＤを付与する処理の一例を説明する第２の図である。例えば、付与部２６は、図５中（Ｊ）に示すように、ｉ＝１、ｌ＝１となるノード「ｆｌｏｏｒ０００１」に対しては、ｆ（１，１）＝１よりＩＤ「１」を付与する。
【００６２】
次に、付与部２６は、図５中（Ｋ）に示すように、ｉ＝１、ｌ＝３となるノード「ｄｅｖｉｃｅ０００３」に対して、ＩＤの付与を行う。ここで、図５に示すように、「ｆｌｏｏｒ０００１」と「ｄｅｖｉｃｅ０００３」との間には、「ｒａｃｋ０００１」が存在する階層のノードが省略されている。すなわち、「ｄｅｖｉｃｅ０００３」が属する階層と「ｆｌｏｏｒ０００１」が属する階層との階層数の差が「２」となる。
【００６３】
そこで、付与部２６は、ｋ＝２としてｆ（３，１）＝ｆ（１，１）×１０２×４＋１＝１×１０８＋１よりＩＤ「１０００００００１」を「ｄｅｖｉｃｅ０００３」に付与する。すなわち、付与部２６は、図５中（Ｌ）に示す「ｒａｃｋ０００１」のＩＤ「１」に対し、図５中（Ｍ）に示すようにノードが省略された旨を示す番号「００００」を付加する。換言すると、付与部２６は、省略された階層分の番号を親ノードのＩＤに付加する。そして、付与部２６は、番号「０００１」をさらに付加したＩＤ「１０００００００１」を「ｄｅｖｉｃｅ０００３」に付与する。
【００６４】
このように、情報処理装置２０は、各ノードに対し、親ノードのＩＤを含むＩＤであって、各ノードが属する階層に応じた桁数のＩＤを付与する。このため、情報処理装置２０は、例えばノードの検索を行う際に、１つの整数値を有するクエリのみで、検索対象となるノードの階層関係を表すことができる。また、情報処理装置２０は、階層関係の更新があった際に、変更されたノードのＩＤを含むＩＤが付与されたノードのみを変更すればよいので、部分木のみの変更で、階層関係の変更を反映させることができる。
【００６５】
なお、かかる付与規則にしたがって、各ノードにＩＤを付与した場合、例えば、ｈ階層分遡った先祖のＩＤは、ｆ（ｌ−ｈ，ｊ）＝ＴＲＵＮＣ（ｆ（ｌ，ｉ）／ｎｅｈ）で算出することができる。ここで、ＴＲＵＮＣとは、小数点以下の値を切り捨てる操作を示す。また、各ノードが属する階層ｌは、ｘ＝ｎｅとすると、ｌ＝ＴＲＵＮＣ（ｌｏｇｘｆ（ｌ，ｉ））で表すことができる。
【００６６】
以下、付与部２６が実行する処理の具体例について説明する。例えば、付与部２６は、「ｒａｃｋ０００１」と番号「０００１」との通知を受け付ける。かかる場合は、付与部２６は、「ｒａｃｋ０００１」の親ノード「ｆｌｏｏｒ０００１」を構造データ２８から特定する。また、付与部２６は、特定した親ノード「ｆｌｏｏｒ０００１」のＩＤ「１」をセンサデータ２９から取得する。
【００６７】
ここで、付与部２６は、「ｒａｃｋ０００１」が属する階層と「ｆｌｏｏｒ０００１」が属する階層との間に省略された階層が存在するか否かを判定する。例えば、付与部２６は、構造データ２８の各データを参照し、「“ｎａｍｅ”」に「ｆｌｏｏｒ」を含むノードと「“ｎａｍｅ”」に「ｒａｃｋ」を含むノードとの間に、他のノードが存在するか否かを判定する。ここで、各ノードが図２に示す階層構造を有する場合は、付与部２６は、「“ｎａｍｅ”」に「ｆｌｏｏｒ」を含むノードと「“ｎａｍｅ”」に「ｒａｃｋ」を含むノードとの間に、他のノードが存在しないと判定する。
【００６８】
かかる場合、付与部２６は、取得した親ノード「ｆｌｏｏｒ０００１」のＩＤ「１」に通知された番号「０００１」を付加したＩＤ「１０００１」をノード「ｒａｃｋ０００１」に付与する。具体的には、付与部２６は、センサデータ２９からノード「ｒａｃｋ０００１」を特定し、特定したノードの「“＿ｉｄ”」を「“＿ｉｄ”：１０００１」に更新する。
【００６９】
また、例えば、付与部２６は、「ｄｅｖｉｃｅ０００３」と番号「０００１」との通知を受け付ける。かかる場合は、付与部２６は、「ｄｅｖｉｃｅ０００３」の親ノード「ｆｌｏｏｒ０００１」を構造データ２８から特定し、センサデータ２９から「ｆｌｏｏｒ０００１」のＩＤ「１」を取得する。また、付与部２６は、構造データ２８から「ｄｅｖｉｃｅ０００３」が属する階層と、「ｆｌｏｏｒ０００１」が属する階層との間に省略された階層が存在するか否かを判定する。
【００７０】
ここで、ノードが図２に示す階層構造を有する場合、「“ｎａｍｅ”」に「ｆｌｏｏｒ」を含む各ノードと「“ｎａｍｅ”」に「ｄｅｖｉｃｅ」を含む各ノードとの間には、「“ｎａｍｅ”」に「ｒａｃｋ」を含むノードが属する階層が存在する。このため、付与部２６は、「ｄｅｖｉｃｅ０００３」が属する階層と、「ｆｌｏｏｒ０００１」が属する階層との間に省略された階層が１つ存在すると判定する。
【００７１】
かかる場合、付与部２６は、取得した親ノード「ｆｌｏｏｒ０００１」のＩＤ「１」に、階層が省略された旨を示す番号であって、各ノードに対し、階層ごとに付与される番号と同じ桁数を有する「００００」を付加した値「１００００」を生成する。また、付与部２６は、生成した値「１００００」に通知された番号「０００１」を付加したＩＤ「１０００００００１」をノード「ｄｅｖｉｃｅ０００３」に付与する。具体的には、付与部２６は、センサデータ２９からノード「ｄｅｖｉｃｅ０００３」を特定し、特定したノードの「“＿ｉｄ”」を「“＿ｉｄ”：１０００００００１」に更新する。
【００７２】
なお、例えば、付与部２６は、「ｒａｃｋ０００１」の親ノードが「ｆｌｏｏｒ０００１」と「ｆｌｏｏｒ０００２」である場合は、親ノード「ｆｌｏｏｒ０００１」のＩＤ「１」とノード「ｆｌｏｏｒ０００２」のＩＤ「２」とをセンサデータ２９から取得する。そして、付与部２６は、親ノード「ｆｌｏｏｒ０００１」のＩＤ「１」に通知された番号「０００１」を付加したＩＤ「１０００１」と、親ノード「ｆｌｏｏｒ０００２」のＩＤ「２」に通知された番号「０００１」を付加したＩＤ「２０００１」とを「ｒａｃｋ０００１」に付与する。具体的には、付与部２６は、「ｒａｃｋ０００１」の「“＿ｉｄ”」を「“＿ｉｄ”：［｛“ｉｄ”：１０００１｝、｛“ｉｄ”：２０００１｝］」に更新する。
【００７３】
上述した処理を実行する結果、付与部２６は、図２に示した階層構造を有する各ノードに対し、図６に示すＩＤを付与する。図６は、実施形態に係る情報処理装置が各ノードに対して付与するＩＤの一例を説明する図である。
【００７４】
例えば、付与部２６は、ノード「ｆｌｏｏｒ０００１」にＩＤ「１」を付与し、ノード「ｒａｃｋ０００１」にＩＤ「１０００１」を付与する。また、付与部２６は、ノード「ｄｅｖｉｃｅ０００１」にＩＤ「１０００１０００１」を付与し、ノード「ｄｅｖｉｃｅ０００２」にＩＤ「１０００１０００２」を付与する。また、付与部２６は、ノード「ｄｅｖｉｃｅ０００３」にＩＤ「１０００００００１」を付与し、ノード「ｄｅｖｉｃｅ０００４」にＩＤ「１０００００００２」を付与する。
【００７５】
また、付与部２６は、ノード「ｆｌｏｏｒ０００２」にＩＤ「２」を付与し、ノード「ｒａｃｋ０００２」にＩＤ「２０００１」を付与し、ノード「ｒａｃｋ０００３」にＩＤ「２０００２」を付与する。また、付与部２６は、ノード「ｄｅｖｉｃｅ０００５」にＩＤ「２０００１０００１」を付与し、ノード「ｄｅｖｉｃｅ０００６」にＩＤ「２０００１０００２」を付与する。また、付与部２６は、ノード「ｄｅｖｉｃｅ０００７」にＩＤ「２０００２０００１」を付与し、ノード「ｄｅｖｉｃｅ０００８」にＩＤ「２０００２０００２」を付与する。
【００７６】
次に、付与部２６が実行する処理のうち、ノードの階層構造が更新された際に実行する処理について説明する。例えば、付与部２６は、親ノードの変更が行われた場合は、親ノードの変更を示す旨とともに、親ノードが変更されたノードと、新たに付与した番号との通知を特定部２４から受信する。かかる場合は、付与部２６は、以下に説明するＩＤの更新処理を実行する。
【００７７】
まず、付与部２６は、通知されたノードの親ノードを構造データ２８から特定し、特定した親ノードのＩＤをセンサデータ２９から取得する。また、付与部２６は、取得した親ノードのＩＤに通知された番号を付与したＩＤを新たに生成し、通知されたノードのＩＤを新たに生成したＩＤに更新する。
【００７８】
続いて、付与部２６は、通知されたノードの子孫ノードのＩＤを更新する。例えば、付与部２６は、通知されたノードの更新前のＩＤを用いて、通知されたノードの各子孫ノードを特定する。そして、付与部２６は、特定した子孫ノードに対し、上位の階層に属するノードから、上述した規則に従って、ＩＤの更新を順次実行する。つまり、付与部２６は、各子孫ノードに付与されたＩＤのうち、上の位の値を、通知されたノードに対して新たに付与したＩＤに更新する。
【００７９】
また、例えば、付与部２６は、親ノードの追加が行われた場合は、親ノードの追加を示す旨とともに、親ノードが追加されたノードと、新たに付与した番号との通知を選択部２５から受信する。かかる場合は、付与部２６は、以下に説明するＩＤの追加処理を実行する。
【００８０】
まず、付与部２６は、構造データ２８を参照して、通知されたノードの各親ノードを特定する。次に、付与部２６は、特定した各親ノードのＩＤをセンサデータ２９から取得し、取得した各親ノードのＩＤと、通知されたノードのＩＤとを比較して、追加された親ノードのＩＤを特定する。具体的には、付与部２６は、各親ノードのＩＤのうち、通知されたノードのＩＤに同一の値が含まれていないＩＤを特定する。
【００８１】
また、付与部２６は、追加された親ノードのＩＤを特定した場合は、特定した親ノードのＩＤに通知された番号を付与したＩＤを生成する。そして、付与部２６は、通知されたノードに、新たに生成したＩＤを追加する。すなわち、付与部２６は、親ノードが追加されたノードに対し、各親ノードのＩＤを含むＩＤをそれぞれ付与する。
【００８２】
また、付与部２６は、通知されたノードに付与されたＩＤを用いて、通知されたノードの子孫ノードを特定し、特定した子孫ノードにＩＤを追加する。例えば、付与部２６は、通知されたノードに付与されたＩＤのうち、追加されたＩＤとは異なるＩＤを用いて、通知されたノードの各子孫ノードを特定する。そして、付与部２６は、特定した子孫ノードに対し、上位の階層に属するノードから、上述した規則に従って、ＩＤの追加を順次実行する。つまり、付与部２６は、各子孫ノードに付与されたＩＤのうち、上の位の値を、新たに生成したＩＤに変更したＩＤを生成し、生成したＩＤを子孫ノードに対して順次追加する。
【００８３】
また、付与部２６は、ノードの削除が行われた場合は、特定部２４から削除されたノードのＩＤの通知を受信する。かかる場合は、付与部２６は、以下に説明するＩＤの削除処理を実行する。まず、付与部２６は、センサデータ２９に含まれる各ノードのＩＤ、すなわち「“＿ｉｄ”」の値を参照する。そして、付与部２６は、参照したＩＤのうち、上の位の値が削除されたノードのＩＤと一致するＩＤを削除する。例えば、付与部２６は、削除されたノードのＩＤが「１０００１」である場合は、上の位の数値が「１０００１」で始まるＩＤをすべて検索し、検索したＩＤを削除する。
【００８４】
なお、付与部２６は、上述した更新処理、追加処理、削除処理を実行した場合は、通知されたノードを更新部２７に通知し、新たな按分比率に基づく「“ｖａｌｕｅ”」の更新を更新部２７に依頼する。
【００８５】
ここで、図７を用いて、親ノードの追加が行われた際に選択部２５、付与部２６が実行する処理の一例について説明する。図７は、実施形態に係る情報処理装置が親ノードの追加を行う際に実行する処理の一例を説明する図である。なお、図７に示す例では、図２に示す階層構造を有する各ノードに付与されるＩＤのうち、ノードの追加によってＩＤ更新されるＩＤについてのみ記載した。
【００８６】
例えば、図７に示す例では、ノード「ｒａｃｋ０００２」の親ノードに「ｆｌｏｏｒ０００１」が追加されている。また、図７に示す例では、ノード「ｒａｃｋ０００２」の「“ｖａｌｕｅ”」が親ノード「ｆｌｏｏｒ０００１」、「ｆｌｏｏｒ０００２」の「“ｖａｌｕｅ”」に対して寄与する按分比率が「１：３」に更新されている。
【００８７】
このため、選択部２５は、ノード「ｒａｃｋ０００２」に対し、追加された親ノード「ｆｌｏｏｒ０００１」とノード「ｒａｃｋ０００２」が所属する階層ごとに一意な番号「０００２」を付与する。また、付与部２６は、ノード「ｒａｃｋ０００２」に対し、追加された親ノード「ｆｌｏｏｒ０００１」のＩＤ「１」を含むＩＤの追加処理を実行する。詳細には、付与部２６は、ノード「ｒａｃｋ０００２」に対し、追加された親ノード「ｆｌｏｏｒ０００１」のＩＤ「１」に、選択部２５が付与した番号「０００２」を付加したＩＤ「１０００２」を追加する。
【００８８】
また、付与部２６は、ノード「ｒａｃｋ０００２」の各子孫ノード「ｄｅｖｉｃｅ０００５」、「ｄｅｖｉｃｅ０００６」に対し、ノード「ｒａｃｋ０００２」に追加したＩＤ「１０００２」を含む新たなＩＤを追加する。具体的には、付与部２６は、ノード「ｄｅｖｉｃｅ０００５」に対し、ＩＤ「１０００２０００１」を追加で付与し、ノード「ｄｅｖｉｃｅ０００６」に対し、ＩＤ「１０００２０００２」を追加で付与する。
【００８９】
このように、情報処理装置２０は、各ノードの変更を行う場合は、変更されたノードの子孫ノードについてのＩＤのみを更新すればよい。この結果、情報処理装置２０は、ノードの変更に伴う処理を容易に行うことができる。
【００９０】
図２に戻り、更新部２７は、親ノードの追加または変更が行われた場合は、親ノードが追加されたノードまたは親ノードが変更されたノードの按分比率を特定し、特定した按分比率に基づいて、追加または変更された親ノードの「“ｖａｌｕｅ”」の値を更新する。また、更新部２７は、按分比率の変更が行われた場合は、変更後の按分比率に基づいて、親ノードの「“ｖａｌｕｅ”」の値を変更する。
【００９１】
例えば、更新部２７は、特定部２４から「“ｖａｌｕｅ”」の更新を依頼された場合は、以下の按分処理を実行する。まず、更新部２７は、センサデータ２９を参照し、「“ｖａｌｕｅ”」の値が格納されていないノードのうち、最もＩＤの桁数が少ないノードを特定する。また、更新部２７は、特定したノードのＩＤを用いて、特定したノードの子ノードをセンサデータ２９から特定する。
【００９２】
そして、更新部２７は、特定した子ノードの「“ｖａｌｕｅ”」と、特定した子ノードの按分比率のうち、特定したノードのＩＤと対応付けられた按分比率との積を特定した子ノードごとに算出する。なお、更新部２７は、特定した子ノードに按分比率が設定されていない場合は、按分比率を「１」として、積の算出を行う。そして、更新部２７は、算出した積の合計を特定したノードの「“ｖａｌｕｅ”」として、センサデータ２９に格納する。
【００９３】
また、更新部２７は、センサデータ２９に格納されたすべてのノードの「“ｖａｌｕｅ”」が格納されるまで上述した按分処理を繰り返す。この結果、更新部２７は、子ノードの「“ｖａｌｕｅ”」の値と按分比率の値とに基づいて、親ノードの「“ｖａｌｕｅ”」の値を算出することができる。また、更新部２７は、構造データ２８を参照せずとも、按分処理の対象となるノードのＩＤを用いて、容易にセンサデータ２９から子ノードを抽出できる。このため、情報処理装置２０は、按分処理を実行する際に、階層構造を識別せずともよいので、メモリを逼迫されることなく、按分処理を実行できる。
【００９４】
また、更新部２７は、特定部２４から、按分比率が変更されたノードの通知を受信した場合、または、付与部２６から新たな按分比率に基づく「“ｖａｌｕｅ”」の更新を更新部２７に依頼された場合は、以下の再算出処理を実行する。まず、更新部２７は、特定部２４、または、付与部２６から通知されたノードのＩＤを用いて、按分比率が変更されたノードの先祖ノードをすべて抽出する。そして、更新部２７は、抽出した先祖ノードの各「“ｖａｌｕｅ”」の値を再度算出し、算出した値をセンサデータ２９に格納する。なお、更新部２７が各先祖ノードの「“ｖａｌｕｅ”」の値を算出する処理については、上述した按分処理と同様の処理を実行するものとする。
【００９５】
ここで、図８を用いて、更新部２７が実行する再算出処理の一例について説明する。図８は、実施形態に係る情報処理装置が実行する再算出処理の一例を説明する図である。なお、図８には、更新部２７が更新したセンサデータ２９の一例について記載した。また、以下の説明では、更新部２７が実行する処理のうち、通知されたノードのＩＤの上の位と同一のＩＤを含むノードを親ノードと識別する処理については、省略する。
【００９６】
例えば、図７に示したように、ノード「ｒａｃｋ０００２」に親ノード「ｆｌｏｏｒ０００１」が追加された場合は、図８中（Ｎ）、（Ｏ）、（Ｐ）に示すように、「ｆｌｏｏｒ０００１」のＩＤ「１」を上の位に含むＩＤが、ノード「ｒａｃｋ０００２」、「ｄｅｖｉｃｅ０００５」、「ｄｅｖｉｃｅ０００６」に追加される。また、図７に示したように、ノード「ｒａｃｋ０００２」の按分比率が「１：３」に設定された場合は、各親ノードに付与されたＩＤを含むＩＤと対応付けて、「“ｖａｌｕｅ”」の値の寄与を示す比率「“ｒａｔｉｏ”」が格納される。
【００９７】
かかる場合は、更新部２７は、ノード「ｒａｃｋ０００１」、「ｄｅｖｉｃｅ０００３」、「ｄｅｖｉｃｅ０００４」の「“ｖａｌｕｅ”」の値と、ノード「ｒａｃｋ０００２」の「“ｖａｌｕｅ”」の値に「“ｒａｔｉｏ”」を積算した値とを合計した値に更新する。詳細には、更新部２７は、ノード「ｒａｃｋ０００２」の「“ｖａｌｕｅ”」の値「３１．２」に「０．７５」を積算した「２３．４」を、更新前の「“ｖａｌｕｅ”」の値「５０．４」に加算した値「７３．８」を算出する。そして、更新部２７は、図８中（Ｑ）に示すように、ノード「ｆｌｏｏｒ０００１」の新たな「“ｖａｌｕｅ”」の値を「７３．８」に更新する。
【００９８】
また、更新部２７は、ノード「ｒａｃｋ０００３」の「“ｖａｌｕｅ”」の値と、ノード「ｒａｃｋ０００２」の「“ｖａｌｕｅ”」の値に「“ｒａｔｉｏ”：０．２５」を積算した値とを合計した値に更新する。詳細には、更新部２７は、更新前の「ｒａｃｋ０００２」の「“ｖａｌｕｅ”」の値「６６．４」から「２３．４」を減算した値「４３．０」を算出する。そして、更新部２７は、図８中（Ｒ）に示すように、ノード「ｆｌｏｏｒ０００２」の新たな「“ｖａｌｕｅ”」の値を「４３．０」に更新する。
【００９９】
なお、更新部２７は、親ノードの「“ｖａｌｕｅ”」の値と、子ノードに設定された「“ｒａｔｉｏ”」の値とを用いて、子ノードの「“ｖａｌｕｅ”」の値を算出してもよい。すなわち、更新部２７が実行する按分処理には、子ノードの「“ｖａｌｕｅ”」の値を用いて親ノードの「“ｖａｌｕｅ”」の値を算出するだけではなく、親ノードの「“ｖａｌｕｅ”」の値を用いて、子ノードの「“ｖａｌｕｅ”」の値を算出する処理が含まれる。
【０１００】
図２に戻り、利用者端末１１は、センサデータＤＢ２１が記憶する構造データ２８の更新や、センサデータ２９の検索や更新を行うための端末装置である。例えば、利用者端末１１は、構造データ２８を更新することで、各ノードの階層構造の変更を行う。また、利用者端末１１は、データ検索用のクエリを用いて、センサデータ２９から、所定の条件を満たすデータを取得する。
【０１０１】
ここで、利用者端末１１は、センサデータ２９から所定の条件を満たすデータを検索する場合は、データの結合を行わずともよい。すなわち、利用者端末１１は、データ検索用のクエリを用いて、検索対象となるデータの階層が指定されている場合、センサデータ２９に格納された各ノードのＩＤを用いて、階層構造に応じたデータの検索を容易に実行することができる。
【０１０２】
なお、利用者端末１１は、ノードの階層構造の更新を行う場合、構造データ２８の更新を行うのではなく、センサデータ２９に含まれる各ノードに付与されたＩＤを直接更新することで、各ノードの階層構造を更新してもよい。かかる処理を実行した場合、情報処理装置２０は、更新後のＩＤを用いて、更新対象となるノードの先祖ノード、または、子孫ノードに付与されたＩＤの更新や、按分比率に基づく「“ｖａｌｕｅ”」の算出を実行する。
【０１０３】
このように、情報処理装置２０は、各ノードに対し、ノードが所属する階層において一意の番号を親ノードに付与されたＩＤに付与したＩＤを付与する。このため、情報処理装置２０は、各ノードのＩＤに対し、先祖ノードに付与された全てのＩＤを含めることができる。この結果、情報処理装置２０は、ノードの更新を容易にすることができる。
【０１０４】
すなわち、情報処理装置２０は、ノードの検索を行う際に、検索対象となるノードの階層構造を示すフィールドを設定したり、データの結合を実行せずとも、各ノードに付与されたＩＤのみで、階層構造を有するノードの検索を行うことができる。このため、情報処理装置２０は、階層構造を示すフィールドによるメモリの逼迫を解消するとともに、検索用のクエリを単純化できるので、検索処理を容易にすることができる。また、情報処理装置２０は、検索処理に要する時間を短縮することができる。
【０１０５】
また、情報処理装置２０は、測定対象となる機器の消費電力量を他の機器から測定された消費電力量からの按分により算出する場合がある。例えば、古いネットワーク機器などには、動作を停止させることができず、消費電力量を測定するセンサを設置できないものが存在するため、ネットワーク機器が設置されたラックの消費電力量から按分により消費電力量を算出する場合がある。
【０１０６】
また、仮想化や分散処理を行う際の論理的な消費電力量を、物理端末から測定した消費電力量から按分したい状況が考えられる。また、組織毎、サービス毎など、物理構成とは別の側面から集計された消費電力を物理端末から測定した消費電力量から按分したい場合が考えられる。
【０１０７】
そこで、情報処理装置２０は、測定された消費電力量、すなわちノードの階層構造に応じて、各ノードの「“ｖａｌｕｅ”」の値を算出する按分処理を実行する。以下、図９〜図１２を用いて、情報処理装置２０が実行する按分処理の例について説明する。まず、図９を用いて、処理対象となるノードの階層構造と、情報処理装置２０が各ノードに付与するＩＤの一例について説明する。図９は、処理対象となるノードの階層構造を説明する図である。
【０１０８】
ここで、以下の説明では、ラック「Ｒａｃｋ０１」に、４つの物理マシン（ＰＭ：Physical  Machine）「ＰＭ０１」〜「ＰＭ０４」が設置され、「ＰＭ０１」〜「ＰＭ０３」がクラスタマシン（ＣＭ：Cluster  Machine）「ＣＭ０１」として動作するものとする。また、「ＣＭ０１」は、２つの仮想マシン（ＶＭ：Virtual  Machine）「ＶＭ０１」、「ＶＭ０２」を稼動させ、「ＶＭ０１」がサービス「Ｓｅｒｖｉｃｅ０１」を提供しているものとする。
【０１０９】
また、以下の説明では、情報処理装置２０は、最上位以外の階層ごとに２桁の番号を付与するものとする。すなわち、情報処理装置２０は、ｎ＝１０、ｅ＝１として、各ノードに対し、ｆ（ｌ，ｉ）＝ｆ（ｌ−ｋ，ｊ）×ｎｅｋ＋ｉで示されるＩＤを付与するものとする。なお、以下の例では、各ノード間に省略された階層が存在しないので、ｋ＝１としてＩＤの値が算出される。
【０１１０】
かかる構成を示すため、図９に示すように、ノード「Ｒａｃｋ０１」は、子ノードとして、ノード「ＰＭ０１」〜「ＰＭ０４」を有し、ノード「ＰＭ０１」〜「ＰＭ０３」は、子ノードとして「ＣＭ０１」を有する。また、ノード「ＣＭ０１」は、子ノード「ＶＭ０１」、「ＶＭ０２」を有し、ノード「ＶＭ０１」は、子ノード「Ｓｅｒｖｉｃｅ０１」を有する。
【０１１１】
各ノードが図９に示す階層構造を有する場合、情報処理装置２０は、図９中点線で示すように、各ノードに対し、親ノードに付与したＩＤを含むＩＤをそれぞれ付与する。例えば、情報処理装置２０は、ノード「Ｒａｃｋ０１」にＩＤ「１」を付与し、ノード「ＰＭ０１」にＩＤ「１０１」を付与し、ノード「ＰＭ０２」にＩＤ「１０２」を付与し、ノード「ＰＭ０３」にＩＤ「１０３」を付与し、ノード「ＰＭ０４」にＩＤ「１０４」を付与する。
【０１１２】
また、例えば、情報処理装置２０は、ノード「ＣＭ０１」にＩＤ「１０１０１、１０２０１、１０３０１」を付与し、ノード「ＶＭ０１」にＩＤ「１０１０１０１、１０２０１０１、１０３０１０１」を付与する。また、例えば、情報処理装置２０は、ノード「ＶＭ０２」にＩＤ「１０１０１０２、１０２０１０２、１０３０１０２」を付与し、ノード「Ｓｅｒｖｉｃｅ０１」にＩＤ「１０１０１０１０１、１０２０１０１０１、１０３０１０１０１」を付与する。
【０１１３】
また、情報処理装置２０は、図９に示すＩＤを各ノードに付与した場合、図１０に示すセンサデータ２９を記憶する。図１０は、実施形態に係るセンサデータの一例を説明する図である。
【０１１４】
ここで、図１０に示すセンサデータ２９には、「ＰＭ０１」の消費電力量が不明であるため、ノード「ＰＭ０１」に「“ｖａｌｕｅ”」の値が格納されていない。また、各仮想マシン「ＶＭ０１」、「ＶＭ０２」、および「Ｓｅｒｖｉｃｅ０１」の消費電力量が不明であるため、ノード「ＶＭ０１」、「ＶＭ０２」、「Ｓｅｒｖｉｃｅ０１」の「“ｖａｌｕｅ”」の値が格納されていない。
【０１１５】
かかる場合、情報処理装置２０は、各ノードに格納された「“ｖａｌｕｅ”」の値と「“ｒａｔｉｏ”」の値とを用いて、ノード「ＶＭ０１」、「ＶＭ０２」、「Ｓｅｒｖｉｃｅ０１」の「“ｖａｌｕｅ”」の値を算出する按分処理を実行する。
【０１１６】
以下、図１１を用いて、情報処理装置２０が、図１０に示すセンサデータ２９を用いて実行する按分処理の内容について説明する。図１１は、実施形態に係る情報処理装置が実行する按分処理の内容を説明するための図である。なお、図１１には、図１０に示すセンサデータ２９から識別可能な「Ｒａｃｋ０１」、「ＣＭ０１」の消費電力量に対する「ＰＭ０１」〜「ＰＭ０４」の寄与、「ＣＭ０１」の消費電力量に対する、「ＶＭ０１」、「ＶＭ０２」の寄与、「ＶＭ０１」の消費電力量に対する「Ｓｅｒｖｉｃｅ０１」の寄与を記載した。
【０１１７】
例えば、図１１に示す例では、「Ｒａｃｋ０１」の消費電力量は、全体で「１００Ｗ（ワット）」であり、うち「３０％」が「ＰＭ０１」の消費電力量であり、「２０％」が「ＰＭ０２」の消費電力量である。また、「Ｒａｃｋ０１」の消費電力量のうち「３０％」が「ＰＭ０３」の消費電力量であり、「１０％」が「ＰＭ０４」の消費電力量である。
【０１１８】
また、図１１に示す例では、「ＣＭ０１」の消費電力量は、「ＰＭ０１」〜「ＰＭ０３」の消費電力量の合計である。また、「ＣＭ０１」の消費電力量のうち「７５％」が「ＶＭ０１」の消費電力量であり、「２５％」が「ＶＭ０２」の消費電力量である。また、「ＶＭ０１」の消費電力量のうち、「４０％」が「Ｓｅｒｖｉｃｅ０１」を提供するために消費される消費電力量である。
【０１１９】
かかる場合、情報処理装置２０は、図１１中（Ｓ）に示すように、「Ｒａｃｋ０１」の消費電力量と、「ＰＭ０１」の消費電力量が「Ｒａｃｋ０１」の消費電力量に寄与する割合とを用いて、「ＰＭ０１」の消費電力量を算出する物理按分処理を実行する。また、情報処理装置２０は、図１１中（Ｔ）に示すように、「ＣＭ０１」としてクラスタ化された物理マシン「ＰＭ０１」〜「ＰＭ０３」の消費電力量を合計することで、「ＣＭ０１」の消費電力量を算出する論物対応処理を実行する。
【０１２０】
また、情報処理装置２０は、図１１中（Ｕ）に示すように、各物理マシンの消費電力量と、各仮想マシンの消費電力量が各物理マシンの消費電力量に寄与する割合とを用いて、物理マシン上で稼動する仮想マシンの消費電力量を算出する論物対応処理を実行する。また、情報処理装置２０は、図１１中（Ｖ）に示すように、仮想マシンの消費電力量と、仮想マシンがサービスを提供するために消費する消費電力量の割合とを用いて、サービスを提供するために消費される消費電力量を算出するダイシングを実行する。その後、情報処理装置２０は、算出した消費電力値を、センサデータ２９の各ノードとしてセンサデータＤＢ２１に格納する。
【０１２１】
すなわち、情報処理装置２０は、按分処理の対象となるノードの「“ｖａｌｕｅ”」を親ノードの「“ｖａｌｕｅ”」、または子ノードの「“ｖａｌｕｅ”」から算出することができる。この結果、情報処理装置２０は、図１２に示すように、ノード「ＶＭ０１」、「ＶＭ０２」、「Ｓｅｒｖｉｃｅ０１」の「“ｖａｌｕｅ”」の値を算出する。図１２は、実施形態に係る情報処理装置が算出する消費電力量の一例を説明する図である。
【０１２２】
例えば、情報処理装置２０は、図１２中（Ｗ）に示すように、「Ｒａｃｋ０１」の消費電力量に「ＰＭ０１」の「“ｒａｔｉｏ”」の値「０．３」を積算した値「３０」を、「ＰＭ０１」の「“ｖａｌｕｅ”」に格納する。また、情報処理装置２０は、図１２中（Ｘ）に示すように、「ＣＭ０１」の消費電力量、すなわち「ＰＭ０１」〜「ＰＭ０３」の消費電力量の合計に「ＶＭ０１」の消費電力量の割合「７５％」を積算した値「６０」を算出する。そして、情報処理装置２０は、算出した値「６０」を「ＶＭ０１」の「“ｖａｌｕｅ”」に格納する。
【０１２３】
また、情報処理装置２０は、図１２中（Ｙ）に示すように、「ＣＭ０１」の消費電力量に「ＶＭ０２」の消費電力量の割合「２５％」を積算した値「２０」を算出する。そして、情報処理装置２０は、算出した値「２０」を「ＶＭ０２」の「“ｖａｌｕｅ”」に格納する。また、情報処理装置２０は、図１２中（Ｚ）に示すように、「ＶＭ０１」の消費電力量に、「Ｓｅｒｖｉｃｅ０１」が消費する割合「４０％」を積算した値「２４」を算出し、算出した値を「Ｓｅｒｖｉｃｅ０１」の「“ｖａｌｕｅ”」に格納する。
【０１２４】
このように、情報処理装置２０は、親ノードの「“ｖａｌｕｅ”」の値と、按分比率とを用いて、子ノードの「“ｖａｌｕｅ”」の値を算出してもよい。かかる処理を実行することで、情報処理装置２０は、センサを設置できない機器の消費電力や、論理的な切り分けによる消費電力の値を算出することができる。
【０１２５】
次に、図１３を用いて、情報処理装置２０が実行する処理の流れについて説明する。図１３は、実施形態に係る情報処理装置が実行する処理の流れを説明するためのシーケンス図である。例えば、情報処理システム２は、各機器に設置したセンサ１０ａ〜１０ｄがセンサデータを取得し（ステップＳ１０１）、取得したセンサデータを情報処理装置２０に送信する（ステップＳ１０２）。
【０１２６】
すると、情報処理装置２０は、ｆ（ｌ，ｉ）＝ｆ（ｌ−ｋ，ｊ）×ｎｅｋ＋ｉで示される規則に従って、各センサデータに対しＩＤを付与する（ステップＳ１０３）。ここで、利用者端末１１は、親ノードと按分比率を追加する（ステップＳ１０４）。かかる場合は、情報処理装置２０は、親ノードが追加された子ノードに対し、追加された親ノードのＩＤに子ノードに付与された番号を付加したＩＤを追加で付与する（ステップＳ１０５）。また、情報処理装置２０は、追加された親ノードの各子孫ノードに対し、追加された親ノードのＩＤを含む新たなＩＤを追加で付与する（ステップＳ１０６）。
【０１２７】
また、情報処理装置２０は、親ノードが追加された子ノードに設定された按分比率に基づいて、親ノードの「“ｖａｌｕｅ”」の値を算出する（ステップＳ１０７）。そして、情報処理装置２０は、追加された親ノードの「“ｖａｌｕｅ”」の値を算出した値に更新する（ステップＳ１０８）。その後、情報処理装置２０は、ＩＤを付与したセンサデータ２９の内容を利用者端末１１の求めに応じて提供し（ステップＳ１０９）、処理を終了する。
【０１２８】
次に、図１４を用いて、情報処理装置２０が各ノードにＩＤを付与する処理の流れについて説明する。図１４は、実施形態に係る情報処理装置が各ノードにＩＤを付与する処理の流れを説明するためのフローチャートである。例えば、情報処理装置２０は、構造データ２８を用いて、最上位階層に属するノードのデータをセンサデータ２９から識別する（ステップＳ２０１）。
【０１２９】
次に、情報処理装置２０は、最上位階層におけるノードの番号、すなわち１桁の番号をＩＤとして特定した最上位階層に属するノードに付与する（ステップＳ２０２）。次に、情報処理装置２０は、特定したノードにＩＤが付与されていない子ノードを有するか否かを判定する（ステップＳ２０３）。
【０１３０】
そして、情報処理装置２０は、ＩＤが付与されていない子ノードを有する場合は（ステップＳ２０３：肯定）、付与規則に基づいて、親ノードのＩＤを含むＩＤを子ノードに付与する（ステップＳ２０４）。その後、情報処理装置２０は、ＩＤを付与した子ノードがＩＤが付与されていない子ノードを有するか否かを判定する（ステップＳ２０３）。
【０１３１】
また、情報処理装置２０は、ＩＤが付与されていない子ノードを有さない場合は（ステップ２０３：否定）、同一階層内にＩＤが付与されていない兄弟ノードが存在するか否かを判定する（ステップＳ２０５）。そして、情報処理装置２０は、同一階層内にＩＤが付与されていない兄弟ノードが存在する場合は（ステップＳ２０５：肯定）、付与規則に基づいて、ＩＤを付与していない兄弟ノードに親ノードのＩＤを含むＩＤを付与する（ステップＳ２０６）。その後、情報処理装置２０は、ＩＤを付与した兄弟ノードが、ＩＤが付与されていない子ノードを有するか否かを判定する（ステップＳ２０３）。
【０１３２】
また、情報処理装置２０は、同一階層内にＩＤが付与されていない兄弟ノードが存在しない場合は（ステップＳ２０５：否定）、各親ノードの「“ｖａｌｕｅ”」の値を按分比率に基づいて再集計してセンサデータ２９を登録し（ステップＳ２０７）、処理を終了する。
【０１３３】
次に、図１５を用いて、親ノードの追加が行われた際に情報処理装置２０が実行する処理の流れについて説明する。図１５は、実施形態に係る情報処理装置が、親ノードの追加が行われた際に実行する処理の流れを説明するフローチャートである。例えば、情報処理装置２０は、親ノードが追加されたノードに対し、新たに追加された親ノードのＩＤを含むＩＤと按分比率の追加を行う（ステップＳ３０１）。
【０１３４】
次に、情報処理装置２０は、ＩＤを追加したノードが、ＩＤが追加されていない子ノードを有するか否かを判定する（ステップＳ３０２）。そして、情報処理装置２０は、ＩＤが追加されていない子ノードが存在する場合は（ステップＳ３０２：肯定）、新たに追加された親ノードのＩＤを含むＩＤを、子ノードに追加する（ステップＳ３０３）。その後、情報処理装置２０は、ＩＤを追加した子ノードに、ＩＤの追加を行っていない子ノードが存在するか否かを判定する（ステップＳ３０２）。
【０１３５】
また、情報処理装置２０は、ＩＤが追加されていない子ノードが存在しない場合は（ステップＳ３０２：否定）、按分比率を参照し、親ノードの「“ｖａｌｕｅ”」を再集計する（ステップＳ３０４）。そして、情報処理装置２０は、再集計した結果を親ノードの「“ｖａｌｕｅ”」に登録し（ステップＳ３０５）、処理を終了する。
【０１３６】
（情報処理装置２０の効果）
上述したように、情報処理装置２０は、ＩＤの付与または更新を行うノードを特定する。また、情報処理装置２０は、特定したノードが属する階層において、ノードを識別する番号を選択する。そして、情報処理装置２０は、特定したノードの親ノードに付与されたＩＤに選択した番号を付加したＩＤを特定したノードに付与する。このため、情報処理装置２０は、データの階層構造化および階層管理の効率を向上させることができる。
【０１３７】
例えば、情報処理装置２０は、センサデータ２９のノードに対し、先祖ノードのＩＤを含むＩＤを付与する。このため、情報処理装置２０は、センサデータ２９の管理を容易にすることができる。また、情報処理装置２０は、データの検索を行う際に、１つのＩＤで階層構造を示すクエリを生成することができるので、検索処理を少ないリソースで高速に実行することができる。また、情報処理装置２０は、各ノードのＩＤから先祖ノードや子孫ノードを容易に検出することができるので、ノードの階層構造や値を更新した際に、更新対象を部分木に限定する処理を容易にすることができる。
【０１３８】
また、情報処理装置２０は、埋め込み型で表現できるＮｏＳＱＬのデータ記述法により、例外的なデータ構造を埋め込み型に記述するので、柔軟なデータモデルを実現できる。なお、情報処理装置２０は、ドキュメント型のセンサデータ２９を記憶するので、リレーショナル型のセンサデータを記憶する場合と比較してデータ構造を柔軟に変更することができる。また、ドキュメント型のセンサデータ２９を記憶することにより、情報処理装置２０は、検索や更新処理の分散実行をした際にロックが発生しないため、高速に処理を実行することができる。
【０１３９】
また、情報処理装置２０は、特定したノードに複数の親ノードが存在する場合は、各親ノードのＩＤに、選択した番号を付加したＩＤをそれぞれ個別に生成し、生成した各ＩＤを特定したノードに付与する。このため、情報処理装置２０は、ノードに複数の親ノードが存在する場合にも、階層構造の識別を容易にするので、更新対象となる部分木の検出を容易にすることができる。
【０１４０】
また、情報処理装置２０は、親ノードが追加されたノードに新たな親ノードのＩＤを含むＩＤを追加で付与するとともに、親ノードが追加されたノードに設定された按分比率に応じて、各親ノードの「“ｖａｌｕｅ”」の値を更新する。このため、情報処理装置２０は、親ノードの追加に応じて、先祖ノードの値を更新することができる。
【０１４１】
また、情報処理装置２０は、ノードの「“ｖａｌｕｅ”」の値と、ノードの按分比率とに基づいて、子孫ノードの「“ｖａｌｕｅ”」の値を更新する。このため、情報処理装置２０は、センサを付与することができず、「“ｖａｌｕｅ”」の値を取得できないノードが存在する場合にも、他のノードの「“ｖａｌｕｅ”」の値から按分処理により、「“ｖａｌｕｅ”」の値を推定することができる。
【０１４２】
また、情報処理装置２０は、各ノードに対し、所定の桁数を有する番号を選択する。このため、情報処理装置２０は、容易に階層構造を識別することができるＩＤを各ノードに付与することができる。例えば、情報処理装置２０は、各階層の各ノードに対し、所定の桁数を有する番号を付与した場合は、ＩＤの最下位から所定の桁を削除するだけで、容易に親ノードのＩＤを特定することができる。また、情報処理装置２０は、ＩＤの最下位から階層の数に応じた数の桁数を削除するだけで、先祖ノードに付与されたＩＤを容易に特定することができる。
【０１４３】
また、情報処理装置２０は、あるノードが属する階層と、親ノードが属する階層との間に、省略された他の階層が存在する場合は、以下の処理を実行する。例えば、情報処理装置２０は、親ノードのＩＤに対し、階層が省略された旨を示す所定の桁数の値、例えば「００００」を、省略された階層の数だけ付加し、さらにノードに付与された番号を付加した値をノードのＩＤとする。このため、情報処理装置２０は、階層の省略が行われる場合にも、１つのＩＤだけで階層構造を示すことができる。
【０１４４】
（他の実施形態）
これまで実施形態の一例について説明したが、開示する発明は上述した実施形態以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では他の実施形態について説明する。
【０１４５】
（システム構成）
また、上述した実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１４６】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【０１４７】
（情報処理装置２０が管理するデータについて）
上述した情報処理装置２０は、情報処理システム２が有する各種機器の消費電力量を測定するセンサのセンサデータ２９を管理した。しかしながら、実施形態はこれに限定されるものではない。例えば、情報処理装置２０は、情報処理システム２が有する演算処理装置の稼働率やメモリ使用量等、消費電力量以外の情報を管理してもよい。また、情報処理装置２０は、利用者の行動などを示すライフログデータを管理してもよい。すなわち、情報処理装置２０は、階層関係を有するデータであれば、任意のデータを管理することができる。
【０１４８】
（各ノードに付与される番号について）
上述した情報処理装置２０は、階層関係の識別を容易にするため、各ノードに対し、ノードが属する階層と親ノードとの組ごとに、ノードを識別するための番号の付与を行った。しかしながら、実施形態は、これに限定されるものではない。例えば、情報処理装置２０は、各ノードに対し、ノードが属する階層ごとにノードを識別するための番号の付与を行ってもよい。
【０１４９】
（ＩＤの付与規則について）
上述した情報処理装置２０は、階層関係の識別を容易にするため、１０進数の番号であって、各階層ごとに所定の桁数を有する番号を上位のノードから順次付加したＩＤを各ノードに付与した。しかしながら、実施形態はこれに限定されるものではない。例えば、情報処理装置２０は、演算処理を高速で行うため、各ノードに対し、２進数や８進数で表される番号を付与してもよい。すなわち、情報処理装置２０は、ｎ＝１０以外にも、ｎ＝２、８、１６等、任意の値を付加してもよい。
【０１５０】
（プログラム）
また、上記実施形態において説明した情報処理装置２０が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、実施形態に係る情報処理装置２０が実行する処理をコンピュータが実行可能な言語で記述した情報管理プログラムを作成することもできる。この場合、コンピュータが情報管理プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。
【０１５１】
さらに、かかる情報管理プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された情報管理プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、情報処理装置２０と同様の機能を実現する情報管理プログラムを実行するコンピュータの一例を説明する。
【０１５２】
図１６は、本実施形態に係る情報管理プログラムを実行するコンピュータを示す図である。図１６に示すように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ（Central  Processing  Unit）１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【０１５３】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。ディスクドライブ１１００には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１１１０およびキーボード１１２０が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１１３０が接続される。
【０１５４】
ここで、図１６に示すように、ハードディスクドライブ１０９０は、例えば、ＯＳ（Operating  System）１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３およびプログラムデータ１０９４を記憶する。本実施形態に係る情報管理プログラムは、例えば、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０９０に記憶される。具体的には、上記実施形態で説明した特定部２４、選択部２５、付与部２６、更新部２７が実行する各種処理を実行させるためのプログラムモジュールが、ハードディスクドライブ１０９０に記憶される。
【０１５５】
また、上記実施形態で説明した構造データ２８やセンサデータ２９のように、情報管理プログラムによる情報処理に用いられるデータは、プログラムデータとして、または、プログラムデータとは別に、例えば、ハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、ハードディスクドライブ１０９０に記憶されたプログラムモジュールやプログラムデータを必要に応じてＲＡＭ１０１２に読み出して、特定ステップと、選択ステップと、付与ステップと、更新ステップとを実行する。
【０１５６】
なお、情報管理プログラムに係るプログラムモジュールやプログラムデータは、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、情報送受信プログラムに係るプログラムモジュールやプログラムデータは、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【０１５７】
これまでいくつかの実施形態を説明したが、本願が開示する技術はこれらの実施形態に限定されるものではない。すなわち、これらの実施形態は、その他の様々な形態で実施されることが可能であり、種々の省略、置き換え、変更を行うことができる。
【０１５８】
例えば、各装置の分散・統合の具体的形態（例えば、図１の形態）は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合することができる。一例を挙げると、特定部２４、選択部２５、付与部２６、更新部２７を１つの部として統合してもよい。
【０１５９】
また、実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともできる。
【０１６０】
これらの実施形態やその変形は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０１６１】
１  情報管理システム
２  情報処理システム
３  フロア
４  ラック
５、６  シャーシ
７〜９  デバイス
１０ａ〜１０ｄ  センサ
１１  利用者端末
２１  センサデータＤＢ
２２  センサデータ登録部
２３  センサデータ構造更新部
２４  特定部
２５  選択部
２６  付与部
２７  更新部
２８  構造データ
２９  センサデータ
【図１】
2015018428.tif 000003
【図２】
2015018428.tif 000004
【図３】
2015018428.tif 000005
【図４】
2015018428.tif 000006
【図５】
2015018428.tif 000007
【図６】
2015018428.tif 000008
【図７】
2015018428.tif 000009
【図８】
2015018428.tif 000010
【図９】
2015018428.tif 000011
【図１０】
2015018428.tif 000012
【図１１】
2015018428.tif 000013
【図１２】
2015018428.tif 000014
【図１３】
2015018428.tif 000015
【図１４】
2015018428.tif 000016
【図１５】
2015018428.tif 000017
【図１６】
2015018428.tif 000018