(57)【要約】【課題】データを効率よく格納することができ、検索処理の負荷を分散させることができ、簡単な鍵情報に基づいてデータの再配置を簡単に行うことができるデータベースシステムおよびデータ処理方法を提供する。【解決手段】データベースシステムは、ノード装置間を親子関係で接続してなる。ノード装置は、データ記憶部と、退避ルール記憶部と、格納処理部と、問合せ処理部とを持つ。退避ルール記憶部は、自ノード装置が最上位の親でない場合にはデータ記憶部に記憶されているデータを親のノード装置に退避させ、自ノード装置が最上位の親である場合にはそのデータを削除するための退避ルールを記憶する。格納処理部は、データを書き込むとともに、退避ルールを参照して、データに関連付けられた順序情報が示す順序でデータ記憶部から退避させるべきデータを親ノードに退避させまたは削除すべきデータを削除する。【選択図】図１
2018116348.tif 000002
【特許請求の範囲】
【請求項１】
複数のノード装置間を親子関係で接続してなるデータベースシステムであって、
前記ノード装置は、
データを記憶するデータ記憶部と、
自ノード装置が最上位の親でない場合には前記データ記憶部に記憶されている前記データを親のノード装置に退避させ、自ノード装置が最上位の親である場合には前記データ記憶部に記憶されているデータを削除するための退避ルールを記憶する退避ルール記憶部と、
データの登録要求を受け付けて前記データ記憶部に書き込むとともに、前記退避ルール記憶部の前記退避ルールを参照することによって、前記データに関連付けられた順序情報が示す順序で前記データ記憶部から退避させるべきデータを親のノード装置に退避させまたは前記データ記憶部から削除すべきデータを削除する格納処理部と、
データの検索要求を受け付けて、自ノード装置の前記データ記憶部に記憶されている前記データを検索し第１検索結果を取得するとともに、前記検索要求を子のノード装置に送信し当該子のノード装置から第２検索結果を取得し、前記第１検索結果と前記第２検索結果とを要求元に送信する問合せ処理部と、
を備える、
データベースシステム。
【請求項２】
前記退避ルール記憶部は、自ノード装置が最上位の親でない場合には前記データ記憶部に記憶されている前記データの所定量を所定の時間間隔で親のノード装置に退避させ、自ノード装置が最上位の親である場合には前記データの所定量を所定の時間間隔で削除するための前記退避ルールを記憶する、
請求項１に記載のデータベースシステム。
【請求項３】
前記退避ルール記憶部は、自ノード装置の前記データ記憶部に前記データを書き込む際に書き込む前記データのデータ量を計算し前記データ記憶部の空き容量が不十分である場合に、自ノード装置が最上位の親でない場合には前記データ記憶部に記憶されている前記データのうちの空き容量確保に必要な分を親のノード装置に退避させ、自ノード装置が最上位の親である場合には前記データのうちの空き容量確保に必要な分を削除するための前記退避ルールを記憶する、
請求項１に記載のデータベースシステム。
【請求項４】
前記退避ルール記憶部は、自ノード装置の前記データ記憶部に前記データの書き込みを試みた結果として容量不足エラーが発生したときに、自ノード装置が最上位の親でない場合には前記データ記憶部に記憶されている前記データを親のノード装置に退避させ、自ノード装置が最上位の親である場合には前記データを削除するための前記退避ルールを記憶する、
請求項１に記載のデータベースシステム。
【請求項５】
前記退避ルール記憶部は、自ノード装置の前記データ記憶部の空き容量を監視し前記空き容量が所定の閾値を下回ったときに、自ノード装置が最上位の親でない場合には前記データ記憶部に記憶されている前記データを親のノード装置に退避させ、自ノード装置が最上位の親である場合には前記データを削除するための前記退避ルールを記憶する、
請求項１に記載のデータベースシステム。
【請求項６】
前記データ記憶部は、前記順序情報によって順序付けられる複数の系列の前記データを記憶するものであり、
前記格納処理部は、前記複数の系列のデータに共通の前記順序情報が示す順序で、前記データ記憶部から退避させるべきデータを親のノード装置に退避させまたは前記データ記憶部から削除すべきデータを削除する、
請求項１から５までのいずれか一項に記載のデータベースシステム。
【請求項７】
前記データ記憶部は、前記順序情報によって順序付けられる複数の系列の前記データを記憶するものであり、
前記格納処理部は、前記複数の系列のデータごとの前記順序情報が示す順序で、前記データ記憶部から退避させるべきデータを親のノード装置に退避させまたは前記データ記憶部から削除すべきデータを削除する、
請求項１から５までのいずれか一項に記載のデータベースシステム。
【請求項８】
自ノード装置の前記データ記憶部に記憶されているデータに関連付けられた順序情報の範囲の情報を記憶する格納情報記憶部、
をさらに備え、
前記問合せ処理部は、受け付けた検索要求に含まれる前記順序情報に関する検索条件を抽出し、自ノード装置の前記データ記憶部には前記検索条件に合致するデータが記憶されていない場合には、自ノード装置の前記データ記憶部に記憶されている前記データの検索を行わず、前記第１検索結果として空集合のデータを取得したものとする、
請求項１から７までのいずれか一項に記載のデータベースシステム。
【請求項９】
子のまたはより下位のノード装置の前記データ記憶部に記憶されているデータに関連付けられた順序情報の範囲の情報を記憶する子孫ノード格納情報記憶部、
をさらに備え、
前記問合せ処理部は、受け付けた検索要求に含まれる前記順序情報に関する検索条件を抽出し、前記子のまたはより下位のノード装置の前記データ記憶部には前記検索条件に合致するデータが記憶されていない場合には、前記検索要求を前記子のノード装置に送信せず、当該子のノード装置に関しては前記第２検索結果として空集合のデータを取得したものとする、
請求項１から８までのいずれか一項に記載のデータベースシステム。
【請求項１０】
前記順序情報は、時刻の情報である、
請求項１から９までのいずれか一項に記載のデータベースシステム。
【請求項１１】
複数のノード装置間を親子関係で接続してなるデータベースシステムによるデータ処理方法であって、
前記ノード装置において、
データ記憶部は、データを記憶し、
退避ルール記憶部は、自ノード装置が最上位の親でない場合には前記データ記憶部に記憶されている前記データを親のノード装置に退避させ、自ノード装置が最上位の親である場合には前記データ記憶部に記憶されているデータを削除するための退避ルールを記憶し、
格納処理部は、データの登録要求を受け付けて前記データ記憶部に書き込むとともに、前記退避ルール記憶部の前記退避ルールを参照することによって、前記データに関連付けられた順序情報が示す順序で前記データ記憶部から退避させるべきデータを親のノード装置に退避させまたは前記データ記憶部から削除すべきデータを削除し、
問合せ処理部は、データの検索要求を受け付けて、自ノード装置の前記データ記憶部に記憶されている前記データを検索し第１検索結果を取得するとともに、前記検索要求を子のノード装置に送信し当該子のノード装置から第２検索結果を取得し、前記第１検索結果と前記第２検索結果とを要求元に送信する、
データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データベースシステムおよびデータ処理方法に関する。
【背景技術】
【０００２】
ＩｏＴ（Internet of Things）機器の普及により、様々な場所や状況において生成されたデータをネットワーク経由で利用する度合いがますます増大しつつある。従来の技術では、ＩｏＴ機器等において生成されたデータを、ネットワーク経由で中央サーバー装置に集め、中央サーバー装置のデータベースシステムに格納している。中央サーバー装置のデータベースシステムに格納された膨大なデータは、必要なときにユーザーによって検索され、利用される。
【０００３】
一方で、従来技術において、中央サーバー装置側は、大量のデータを格納するために大規模な記憶手段（例えば、磁気ハードディスク装置や、半導体メモリーなど）を備えなければならず、システムの高コスト化を招く場合があり得る。
【０００４】
また、ＩｏＴ機器自身や、ＩｏＴ機器と中央サーバー装置とを仲介する装置（ゲートウェイ装置、ルーター等）も、内部にデータを格納する手段を持っている。しかし、従来技術では、データを中央サーバー装置に集中して保持するシステムアーキテクチャーを採用していることにより、これらの末端の機器や中間の機器の記憶手段は活用されておらず、改善の余地がある。
【０００５】
また、従来技術では、中央サーバー装置にデータを集中的に格納しているため、収集されたデータを検索する（クエリーの実行）際にも、処理の負荷が中央サーバー装置に集中し、効率悪くなる可能性がある。
【０００６】
また、従来技術において、ツリー状に配置したクエリー処理エンジンを階層的に用いてデータを検索するアーキテクチャーも一部において採用されている。しかし、そのようなシステムにおいても、データは中央サーバー装置に集中的に保持されており、上記の負荷集中の問題は解決されにくい。
【０００７】
また、従来の分散データベースシステムにおいて、データへのアクセスの分布の状況に基づいて、データベースの分散配置のさせ方を定め、負荷を分散させる方式が一部において採用されている。しかしながら、アクセス分布に基づく分散配置の決定には、複雑な処理を必要とし、管理が複雑になるという問題が生じ得る。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平６−２５９４７８号公報
【非特許文献】
【０００９】
【非特許文献１】「Apache Drill」，［online］，［平成２８年１１月１１日検索］，インターネット＜ＵＲＬ：http://drill.apache.org/ ＞
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明が解決しようとする課題は、データを効率よく格納することができ、検索処理の負荷を分散させることができ、簡単な鍵情報に基づいてデータの再配置を簡単に行うことができるデータベースシステムおよびデータ処理方法を提供することである。
【課題を解決するための手段】
【００１１】
実施形態のデータベースシステムは、複数のノード装置間を親子関係で接続してなる。ノード装置は、データ記憶部と、退避ルール記憶部と、格納処理部と、問合せ処理部とを持つ。データ記憶部は、データを記憶する。退避ルール記憶部は、自ノード装置が最上位の親でない場合には前記データ記憶部に記憶されている前記データを親のノード装置に退避させ、自ノード装置が最上位の親である場合には前記データ記憶部に記憶されているデータを削除するための退避ルールを記憶する。格納処理部は、データの登録要求を受け付けて前記データ記憶部に書き込むとともに、前記退避ルール記憶部の前記退避ルールを参照することによって、前記データに関連付けられた順序情報が示す順序で前記データ記憶部から退避させるべきデータを親のノード装置に退避させまたは前記データ記憶部から削除すべきデータを削除する。問合せ処理部は、データの検索要求を受け付けて、自ノード装置の前記データ記憶部に記憶されている前記データを検索し第１検索結果を取得するとともに、前記検索要求を子のノード装置に送信し当該子のノード装置から第２検索結果を取得し、前記第１検索結果と前記第２検索結果とを要求元に送信する。
【図面の簡単な説明】
【００１２】
【図１】第１の実施形態のデータベースシステムの概略構成を示す構成図。
【図２】第１の実施形態のノード装置の概略機能構成を示す機能ブロック図。
【図３】第１の実施形態のデータベースシステムが保持するデータの基本構造を示す概略図。
【図４】第１の実施形態の接続リスト記憶部が記憶する接続リストのデータ構成例を示す概略図。
【図５】第１の実施形態の格納情報記憶部が記憶する格納情報のデータ構成例を示す概略図。
【図６】第１の実施形態のノード装置におけるデータ登録の処理の手順を示すフローチャート。
【図７】第１の実施形態のノード装置におけるデータ検索の処理の手順を示すフローチャート。
【図８】第１の実施形態のノード装置において、退避ルールとして定期退避が選択される場合の、データの登録および退避の処理の手順を示すフローチャート。
【図９】第１の実施形態のノード装置において、退避ルールとして追加データ量に基づく逐次退避が選択される場合の、データの登録および退避の処理の手順を示すフローチャート。
【図１０】第１の実施形態のノード装置において、退避ルールとして不足容量に基づく逐次退避が選択される場合の、データの登録および退避の処理の手順を示すフローチャート。
【図１１】第１の実施形態のノード装置において、退避ルールとして空き容量に基づく逐次退避が選択される場合の、データの登録および退避の処理の手順を示すフローチャート。
【図１２】第１の実施形態のノード装置におけるデータ移動の処理の詳細な手順を示すフローチャート。
【図１３】第１の実施形態のノード装置におけるデータ検索の処理の詳細な手順を示すフローチャート。
【図１４】第２の実施形態のデータベースシステムが保持するデータの基本構造を示す概略図。
【図１５】第２の実施形態のデータベースシステムにおいて複数の系列を有するデータがツリー構造のノード装置間で分散して格納される状況を示す概略図。
【図１６】第２の実施形態のデータベースシステムにおいて、複数の系列に共通の格納範囲を用いてノード間のデータ分散を行う場合のデータ格納例を示す概略図。
【図１７】第２の実施形態のデータベースシステムにおいて、複数の系列のそれぞれで独立の格納範囲を用いてノード間のデータ分散を行う場合のデータ格納例を示す概略図。
【図１８】第３の実施形態のデータベースシステムにおけるノード装置群の接続形態の例を示す概略図。
【図１９】第４の実施形態のデータベースシステムにおけるノード装置群の接続形態の例を示す概略図。
【発明を実施するための形態】
【００１３】
以下、実施形態のデータベースシステムおよびデータ処理方法を、図面を参照して説明する。
【００１４】
（第１の実施形態）
図１は、本実施形態によるデータベースシステムの概略構成を示す構成図である。図示するように、データベースシステム１００は、階層構造に配置した複数のノード装置１０を含んで構成される。つまり、データベースシステム１００は、複数のノード装置間を階層構成の親子関係で接続してなるものである。これらのノード装置１０は、ツリー構造（木構造）状に配置されている。つまり、各ノード装置１０は、０個または１個の親ノードに接続されており、また０個以上の子ノードに接続されている。同図において、上の方に配置されたノード装置１０が親の方向であり、下の方に配置されたノード装置１０が子の方向である。これらのノード装置１０の階層構造において、特に最上位の、親を持たないノード装置は、ルートノード装置である。ルートノード装置には、符号１０Ｒを付している。また、同階層構造において、特に最下位の、子を持たないノード装置はリーフノード装置である。リーフノード装置には、符号１０Ｌを付している。また、ルートノード装置１０Ｒでもリーフノード装置１０Ｌでもないノード装置１０は、中間層に属するノード装置である。
なお、ルートノード装置１０Ｒからリーフノード装置１０Ｌまでの深さ（接続の段数）は、すべての枝において同一であってもよいし、枝に依って異なっていてもよい。
【００１５】
データベースシステム１００を構築するための実際の装置構成の一例は、次の通りである。ツリー構造における末端に位置するリーフノード装置１０Ｌは、例えば、何らかのＩｏＴ機器である。なお「ＩｏＴ」は、「Internet of Things」の略である。データベースシステム１００が蓄積して管理するデータは、ノード装置１０Ｌにおいて生成され、収集される。また、ルートに位置するルートノード装置１０Ｒは、例えば、中央サーバー装置である。ノード装置１０Ｒは、クライアント装置９から、データベースシステム１００が管理するデータに関する問合せを最初に受け、その問合せの結果をクライアント装置９に返す。また、ルート層でもリーフ層でもない中間層に位置するノード装置１０は、例えば、データを中継する役割を持つゲートウェイ装置である。ゲートウェイ装置は、より具体的には、コンピューターや通信機器（ルーター等）等である。ゲートウェイ装置は、例えば、ＩｏＴ機器と中央サーバー装置の間をつなぐものである。
なお、ノード装置１０の具体例として、中央サーバー装置や、その他のコンピューターや、ルーターや、ＩｏＴ機器といったものを例示したが、本実施形態におけるノード装置１０として機能し得るものはこれらには限られない。
【００１６】
クライアント装置９上では、アプリケーションプログラム（以下において単に「アプリ」と呼ぶ場合がある）が稼働し得る。クライアント装置９上で稼働するアプリケーションプログラムは、データベースシステム１００に対して、データを要求するための問合せを発行する。この問合せは、データの検索条件を伴う場合がある。データベースシステムは、クライアント装置９から受け付ける問合せが検索条件を含む場合、その条件に合ったデータを、クライアント装置９に返す。
【００１７】
データベースシステム１００は、各ノード装置１０（ノード装置１０Ｌやノード装置１０Ｒを含む）に分散してデータを格納する。つまり、ノード装置１０Ｌで生成されたデータは、まずそのノード装置１０Ｌが有する記憶手段に蓄積される。そして、ノード装置１０Ｌの記憶手段においてデータが溢れる前に、データを上の階層の方向に（ルートノード１０Ｒに向かう方向に）退避させる。中間層におけるノード装置１０もまた、同様に、データを退避させる。つまり、中間層に位置するノード装置１０は、より下位のノード装置１０から退避されるデータを蓄積するとともに、装置内の記憶手段においてデータが溢れる前に、データを上の階層の方向に（ルートノード１０Ｒに向かう方向に）退避させる。
【００１８】
なお、ルートノード装置１０Ｒもまた、下位のノード装置１０から退避されるデータを蓄積する。ただし、ルートノード装置１０Ｒはより上位のノード装置１０に接続されていないため、ルートノード装置１０Ｒの記憶手段においてデータが溢れる前に、不要なデータを削除する。あるいは、ルートノード装置１０Ｒが、不要なデータを単に削除する代わりに、アーカイブ用の記録媒体（例えば、磁気テープや、光磁気ディスク装置など）にデータを記録するようにしてもよい。
【００１９】
次に各ノード装置１０の内部の機能構成について説明する。
図２は、ノード装置１０（ノード装置１０Ｒやノード装置１０Ｌを含む）の概略機能構成を示すブロック図である。図示するように、ノード装置１０は、データ記憶部２０と、接続リスト記憶部２１と、格納情報記憶部２２と、退避ルール記憶部２３と、データ収集部３１と、格納処理部３２と、問合せ処理部３５とを含んで構成される。ノード装置１０を構成する各部は、電子回路を用いて実現される。また、各部は、必要に応じて、情報を記憶するための記憶手段を含む。また、ノード装置１０を、コンピューターとプログラムを用いて実現するようにしてもよい。
【００２０】
なお、ノード装置１０は、中間層またはリーフ層に位置するノードである場合、親ノード装置１１に接続されている。また、ノード装置１０は、ルート層または中間層に位置するノードである場合、子ノード装置１２に接続されている。つまり、ノード装置１０は、中間層に位置するノードである場合、親ノード装置１１と子ノード装置１２の両方に接続されている。
なお、親および子は、相対的な概念であり、あるノード装置１０は、他のあるノード装置１１の子であると同時に、さらに他のあるノード装置１２の親でもあり得る。
【００２１】
データ記憶部２０は、自ノード装置１０が格納するデータを記憶するものである。データ記憶部２０は、例えば、磁気ハードディスク装置や半導体メモリー等の記録媒体を用いて実現される。なお、データ記憶部２０が記憶するデータの構成については、別の図を参照しながら、後で説明する。
【００２２】
接続リスト記憶部２１は、他のノード装置１０との接続の情報を記憶する。一形態として、接続リスト記憶部２１は、自ノード装置１０に直接接続されている親ノード装置１１および子ノード装置１２の情報のリストを記憶する。また、他の形態として、接続リスト記憶部２１が、ツリー構造全体に含まれるすべてのノード装置１０の情報のリストを保持するようにしてもよい。接続リスト記憶部２１は、他のノード装置１０の情報として、アドレス（ＩＰアドレス等）や、ノードの論理名や、接続関係（どのノードがどのノードの親または子であるか）の情報を記憶する。
なお、データ収集部３１や格納処理部３２や問合せ処理部３５が、親または子のノード装置に接続して通信する際に、この接続リスト記憶部２１を参照する。
【００２３】
格納情報記憶部２２は、自ノード装置１０が格納するデータの範囲の情報を記憶する。つまり、格納情報記憶部２２は、自ノード装置１０のデータ記憶部２０に記憶されているデータに関連付けられた順序情報の範囲の情報を記憶する。このデータの範囲の情報は、データの順序を表す情報の範囲（上限および下限）の情報として表現され得る。本実施形態においてデータの順序を表す情報は時刻の情報である。時刻の情報は、例えば、時・分・秒（さらに秒未満の単位を有していてもよい）を表す数値の情報である。また、時刻の情報が、年・月・日などの日付の情報を含んでいてもよい。つまり、格納情報記憶部２２は、自ノード装置１０が格納するデータの範囲の情報として、時刻の上限および下限の情報を記憶する。
また、格納情報記憶部２２は、子ノード装置１２またはさらにその子孫（リーフ側の方向）のノード装置に含まれるデータの範囲の情報（これを便宜的に子孫ノード格納情報と呼ぶ）を記憶する。なお、格納情報記憶部２２のうちの子孫ノード格納情報を記憶する部分を、子孫ノード格納情報記憶部と呼ぶ。子ノード装置１２が格納するデータの範囲を表す情報は、少なくとも、子ノード装置１２またはさらにその子孫のノード装置に含まれる最古のデータの時刻情報（その範囲における時刻値の下限）である。
格納情報記憶部２２が記憶するデータの具体例については、後で、図面を参照しながら説明する。
【００２４】
退避ルール記憶部２３は、自ノード装置１０が格納しているデータの中から親ノード装置１１に退避するデータを選択するためのルール（方法、ポリシー）を記憶する。ただし、親ノード装置１１が存在しない場合には、データを退避する代わりに、単に削除する。
ここで、データベースシステム１００のツリー構造における退避ルールの例について説明する。退避ルールとして、（Ａ）定期退避、（Ｂ）追加データ量に基づく逐次退避、（Ｃ）不足容量に基づく逐次退避、（Ｄ）空き容量に基づく逐次退避の４種類を少なくとも挙げることができる。退避ルール記憶部２３は、用いるべきルールの種類を識別するデータを記憶する。
つまり、退避ルール記憶部２３は、自ノード装置が最上位の親でない場合にはデータ記憶部２０に記憶されているデータを親のノード装置に退避させるための退避ルールを記憶する。また、退避ルール記憶部２３が記憶する上記の退避ルールは、自ノード装置が最上位の親である場合にはデータ記憶部２０に記憶されているデータを削除するためのルールとして適用される。
【００２５】
上記の４種類のルールの詳細を、次に説明する。
（Ａ）定期退避では、予め定めた所定の時間間隔が経過するごとに、予め定めた所定量のデータを、自ノード装置１０から親ノード装置１１に退避させる。なお定期退避の変形例として、時間帯や曜日や日付等に応じて、上記所定の時間間隔を可変としてもよい。また、時間帯や曜日や日付等に応じて、退避すべきデータの量を可変としてもよい。
つまり、この場合、退避ルール記憶部２３は、自ノード装置が最上位の親でない場合にはデータ記憶部２０に記憶されているデータの所定量を所定の時間間隔で親のノード装置に退避させ、自ノード装置が最上位の親である場合にはそのデータの所定量を所定の時間間隔で削除するための退避ルール（定期退避のルール）を記憶する。
【００２６】
（Ｂ）追加データ量に基づく逐次退避では、データ収集部３１が収集したデータを自ノードに追加する際に、追加データ量を計算し、その追加データを格納するための空き容量が自ノードのデータ記憶部２０内に確保できるように、データを退避する。つまり、空き容量を確保するために必要な分の古いデータを、自ノード装置１０から親ノード装置１１に退避させる。なお、このときに計算に用いるデータ記憶部２０の容量は、記憶装置が物理的に有する容量であってもよいし、パラメーター等によって設定される容量であってもよい。
つまり、この場合、退避ルール記憶部２３は、自ノード装置のデータ記憶部２０にデータを書き込む際に書き込むデータのデータ量を計算しデータ記憶部２０の空き容量が不十分である場合に、自ノード装置が最上位の親でない場合にはデータ記憶部２０に記憶されているデータのうちの空き容量確保に必要な分を親のノード装置に退避させ、自ノード装置が最上位の親である場合にはデータのうちの空き容量確保に必要な分を削除するための退避ルール（追加データ量に基づく逐次退避のルール）を記憶する。
【００２７】
（Ｃ）不足容量に基づく逐次退避では、データ収集部３１が収集したデータを自ノードのデータ記憶部２０に書き込む（追加する）ことを試みて、データ記憶部２０の容量が不足した場合には、一定量のデータを退避させる。つまり、その一定量のデータを自ノード装置１０から親ノード装置１１に退避させる。そして、そのときに追加すべきデータのすべてを自ノードのデータ記憶部２０に書き込めるようになるまで、上記一定量のデータの親ノードへの退避を繰り返す。なお、このときも、データ記憶部２０の容量は、記憶装置が物理的に有する容量であってもよいし、パラメーター等によって設定される容量であってもよい。
つまり、この場合、退避ルール記憶部２３は、自ノード装置のデータ記憶部２０にデータの書き込みを試みた結果として容量不足エラーが発生したときに、自ノード装置が最上位の親でない場合にはデータ記憶部２０に記憶されているデータを親のノード装置に退避させ、自ノード装置が最上位の親である場合にはデータを削除するための退避ルール（不足容量に基づく逐次退避のルール）を記憶する。
【００２８】
（Ｄ）空き容量に基づく逐次退避では、自ノードのデータ記憶部２０の空き容量を監視し、空き容量が予め定めた閾値を下回ったときに一定量のデータを親ノード装置１１に退避する。あるいは、１件のデータのサイズが固定長である場合には、空き容量の代わりに、データの空き個数（あと何件のデータを格納できるかを表す数値）を監視し、空き個数が予め定めた閾値を下回ったときに一定量のデータを親ノード装置１１に退避する。なお、このときも、データ記憶部２０の容量は、記憶装置が物理的に有する容量であってもよいし、パラメーター等によって設定される容量であってもよい。
つまり、この場合、退避ルール記憶部２３は、自ノード装置のデータ記憶部２０の空き容量を監視し空き容量が所定の閾値を下回ったときに、自ノード装置が最上位の親でない場合にはデータ記憶部２０に記憶されているデータを親のノード装置に退避させ、自ノード装置が最上位の親である場合にはデータを削除するための退避ルール（空き容量に基づく逐次退避のルール）を記憶する。
【００２９】
以上、４種類のルールを説明したが、これら以外のルールに基づいてデータを子から親へ退避させるようにしてもよい。
また、いずれのルールを用いる場合にも、ルートノード装置１０Ｒにおいては、データを退避させる代わりに、必要量のデータを単にデータ記憶部２０から削除する。つまり、古いデータから順に、データベースシステム１００から削除するようにする。
【００３０】
なお、特殊な条件下にある場合を除き、一般的には、同じ階層に属している異なるノード装置の間で、データの格納範囲が異なり得る。つまり、あるノード装置に接続された複数の子ノード装置の間で、データの格納範囲が異なる場合がある。また、あるノード装置と、その子ノード装置との間で、データの格納範囲が一部重複する場合があり得る。
上記の「特殊な条件下」とは、例えば、（Ａ）定期退避が用いられ、その定期退避を行うための時間間隔がすべてのノードにおいて同一であって、ルートノード装置１０Ｒからリーフノード装置１０Ｌまでの深さ（接続の段数）がツリーの枝に依らずにすべて一定であって、すべてのリーフノード装置１０Ｌにおけるデータの発生頻度（単位時間当たりのデータ量）が同一であって、且つある階層における各ノード装置での１回あたりの退避データ量が同一である場合である。そのような特殊な条件を満たす場合に限り、階層ごとにその時点におけるデータ格納範囲（上限時刻と下限時刻）が決まる。
【００３１】
データ収集部３１は、自ノード装置１０に格納すべきデータを収集する。自ノード装置１０がルート層または中間層に位置するノードである場合、データ収集部３１は、子ノード装置１２からのデータを収集する。また、自ノード装置１０がリーフ層に位置するノードである場合、データ収集部３１は、例えば、自ノード装置１０において生成されるデータを収集したり、接続されているセンサー等で生成されるデータを収集したりする。
いずれの場合も、データ収集部３１は、収集したデータを格納処理部３２に渡す。
【００３２】
格納処理部３２は、データ収集部３１から渡されるデータを、自ノード装置１０のデータ記憶部２０に書き込む。また、格納処理部３２は、退避ルール記憶部２３を参照してえられる退避ルールにしたがって、自ノード装置１０のデータ記憶部２０から退避させるデータを読み出し、親ノード装置１１に送信する。また、データを退避させる際には、格納処理部３２は、退避対象のデータをデータ記憶部２０から削除する。
ただし、自ノード装置１０がルート層に位置するノードである場合には、親ノード装置１１が存在しないため、退避すべきデータの親ノード装置１１への送信は行わない。
【００３３】
なお、格納処理部３２は、データ収集部３１から受け取ったデータをデータ記憶部２０に書き込んだり、データ記憶部２０が保持していたデータを対比させたりする場合には、適宜、格納情報記憶部２２を更新する。即ち、格納処理部３２は、格納情報記憶部２２に記憶されているデータの範囲の情報を更新することにより、その時点でデータ記憶部２０に格納されているデータの範囲と、格納情報記憶部２２に保持されているデータの範囲の情報とを整合させる。
【００３４】
つまり、格納処理部３２は、データの登録要求を受け付けてそのデータをデータ記憶部２０に書き込むとともに、退避ルール記憶部２３が保持する退避ルールを参照することによって、前記のデータに関連付けられた順序情報（時刻の情報）が示す順序でデータ記憶部２０から退避させるべきデータを親のノード装置に退避させる、あるいはルートノードにおいては、格納処理部３２は、前記のデータに関連付けられた順序情報（時刻の情報）が示す順序で、データ記憶部２０から削除すべきデータを削除する。このとき、格納処理部３２は、例えば接続リスト記憶部２１を参照することにより、自ノード装置がルートノードであるか否かを知る。
【００３５】
問合せ処理部３５は、上位から受け取った検索要求を処理する。具体的には、自ノード装置１０がルート層に位置している場合、問合せ処理部３５は、クライアント装置９から受け取った検索要求を処理する。また、自ノード装置１０が中間層またはリーフ層に位置している場合、問合せ処理部３５は、親ノード装置１１から受け取った検索要求を処理する。
具体的には、問合せ処理部３５は、（１）自ノード装置１０のデータベースの検索と、（２）子ノード装置１２への検索要求の分配と、（３）検索範囲に応じて検索要求を自ノード装置１０において打ち切るか否かの判断と、を行う。
【００３６】
（１）自ノード装置のデータベースの検索は次の通りに行われる。即ち、問合せ処理部３５は、格納情報記憶部２２を参照し、目的とするデータを自ノード装置のデータ記憶部２０が保持している可能性がある場合には、データ記憶部２０に格納されているデータを検索する。
（２）子ノード装置への検索要求の分配は、次の通りに行われる。即ち、問合せ処理部３５は、格納情報記憶部２２を参照し、目的とするデータを子ノード装置１２が保持している可能性がある場合には、それらの子ノード装置１２に検索要求を分配（転送）する。このとき、問合せ処理部３５は、必要に応じて接続リスト記憶部２１を参照することによって、分配先とすべき子ノード装置１２の情報を得る。
（３）検索要求の打ち切りの判断は、次の通りに行われる。即ち、問合せ処理部３５は、格納情報記憶部２２を参照し、目的とするデータを子ノード装置１２が保持している可能性が全くない場合には、子ノード装置１２への検索要求の分配を行わず、自ノード装置１０において打ち切る。子ノード装置１２に検索要求の分配を行わないのは、例えば、子ノード装置１２およびさらにその下（孫等）のノード装置には所定の時刻よりも新しいデータしか格納されておらず、且つ検索要求の対象がその所定時刻よりも古いデータのみである場合である。
【００３７】
つまり、問合せ処理部３５は、受け付けた検索要求に含まれる順序情報に関する検索条件を抽出し、自ノード装置のデータ記憶部２０には検索条件に合致するデータが記憶されていない場合には、自ノード装置のデータ記憶部２０に記憶されているデータの検索を行わず、第１検索結果として空集合のデータを取得したものとする。
また、問合せ処理部３５は、受け付けた検索要求に含まれる順序情報に関する検索条件を抽出し、子のノード装置またはより下位のノード装置（つまり、子孫のノード装置群）のデータ記憶部２０には検索条件に合致するデータが記憶されていない場合には、検索要求をその系列の子のノード装置に送信せず、当該子のノード装置に関しては第２検索結果として空集合のデータを取得したものとする。
【００３８】
なお、問合せ処理部３５は、自ノード装置１０のデータベースを検索して得られた結果と、子ノード装置１２から返された検索結果とを統合して、親ノード装置１１に検索結果を返す。
以上説明したように、問合せ処理部３５は、データの検索要求を受け付けて、自ノード装置のデータ記憶部２０に記憶されているデータを検索し検索結果（これを便宜的に第１検索結果と呼ぶ）を取得するとともに、検索要求を子のノード装置に送信し当該子のノード装置から検索結果（これを便宜的に第２検索結果と呼ぶ）を取得し、第１検索結果と第２検索結果を統合して要求元に送信する。なお、自ノード装置のデータ記憶部２０のデータを検索しない場合には、空集合のデータを、第１検索結果として取り扱う。また、子ノード装置に検索要求を送信しない場合には、空集合のデータを第２検索結果として取り扱う。
【００３９】
次に、データベースシステム１００が格納するデータの構造について説明する。
図３は、データベースシステム１００が保持するデータの基本構造を示す概略図である。各ノード装置１０におけるデータ記憶部２０が、同図に示す構造のデータを記憶している。一例として、同図では、表形式でデータを示している。図示するように、データベースシステム１００は、時刻（順序情報）とデータ内容とを関連付けて保持し、管理する。時刻は、データ内容に関連付けられた時刻である。一例として、時刻は、そのデータが生成された時刻である。時刻は、「ＹＹＹＹ／ＭＭ／ＤＤ  ｈｈ：ｍｍ：ｓｓ．ｎｎｎ」（年月日、時分秒、千分の一秒）の形式で表される。データベースシステム１００において、データは、関連付けられている時刻によって一意に順序付けられている。また、データ内容は、任意のデータである。一例として、データ内容は、リーフ層のノード装置１０Ｌにおいて生成されたものである。
【００４０】
次に、データベースシステム１００が使用する接続リストおよび格納情報について説明する。
図４は、接続リスト記憶部２１が記憶する接続リストのデータ構成例を示す概略図である。図示するように、接続リストのデータは、一例として、表形式で表される。この接続リストのデータは、ノード種別、ノード論理名、アドレス、その他のノード属性の各項目を有する。
ノード属性は、接続先のノードが、自ノードから見て、親ノードであるか子ノードであるかを表すデータである。ノードがツリー状に接続されているため、自ノードに直接接続されているノードは、親ノードまたは子ノードのいずれかである。
ノード論理名は、接続先のノードを識別するために付与された論理的な名称である。ノード論理名は、ノードごとにユニークな名称である。
アドレスは、接続先のノードと通信するために用いられるアドレスの情報である。アドレスとしては、例えば、ＩＰアドレスを用いる。
その他のノード属性は、ノード種別やノード論理名やアドレス以外の、接続先のノードの属性を表す情報である。
【００４１】
図４（Ａ）は、中間層に位置するノード装置１０が保持する接続リストの例を示す。中間層に位置するノード装置の接続リストは、１個の親ノードの情報と、１個または複数の子ノードの情報とを含む。
図４（Ｂ）は、ルート層に位置するノード装置１０が保持する接続リストの例を示す。ルート層に位置するノード装置の接続リストは、親ノードの情報を含まず、１個または複数の子ノードの情報を含む。
図４（Ｃ）は、リーフ層に位置するノード装置１０が保持する接続リストの例を示す。リーフ層に位置するノード装置の接続リストは、１個の親ノードの情報を含み、子ノードの情報を含まない。
【００４２】
図５は、格納情報記憶部２２が記憶する格納情報のデータ構成例を示す概略図である。図５（Ａ）および図５（Ｂ）のそれぞれは、異なるタイプの格納情報を示している。
【００４３】
図５（Ａ）に示す格納情報は、自ノード格納範囲のデータのみを有し、子ノード格納範囲のデータを持たない。自ノードのデータの格納範囲（時刻の範囲）が定まれば子ノードの格納範囲も定まる場合に、格納情報記憶部２２は、図５（Ａ）に示すタイプの格納情報を保持する。
自ノード格納範囲は、その日時データの上限値および下限値で表される。ここでは、日時の過去側（日時の数値の小さい方）を下とし、未来側（日時の数値の大きい方）を上とする。自ノード格納範囲の上限値は、自ノード装置１０が格納するデータのうちの最新のデータに関連付けられている時刻（日時）の値である。また、自ノード格納範囲の下限値は、自ノード装置１０が格納するデータのうちの最古のデータに関連付けられている時刻（日時）の値である。
このとき、自ノード装置から接続されているすべての子ノード装置およびさらにその子孫のノード装置は、自ノード装置格納範囲の上限値よりも大きい（新しい）時刻に関連付けられたデータを保持する。
格納情報記憶部２２が図５（Ａ）に示すタイプの格納情報を保持することにより、ノード装置１０において格納されているデータの範囲がわかる。
【００４４】
図５（Ｂ）に示す格納情報は、自ノード格納範囲のデータと、子ノード格納範囲のデータとを含む。自ノードのデータの格納範囲（時刻の範囲）が定まれば子ノードの格納範囲も定まるかどうかに関わらず、格納情報記憶部２２は、図５（Ｂ）に示すタイプの格納情報を保持することができる。
自ノード格納範囲のデータについては、既に上で述べたとおりである。
子ノード格納範囲のデータは、自ノードの直接の子ノードごとに、その子を含む枝（子ノードや孫ノード等を含む枝）が有する最古のデータに関連付けられた日時の情報を持つ。即ち、直接の子ノードごとに、その枝が有するデータに関連付けられた日時の下限値を持つ。また、これらの日時の下限値は、対応する子ノードの論理名と関連付けて保持されている。
格納情報記憶部２２が図５（Ｂ）に示すタイプの格納情報を保持することにより、自ノード装置および子ノード装置以下において格納されているデータの範囲がわかる。
【００４５】
次に、データベースシステム１００を構成する各ノード装置による処理の手順について説明する。
【００４６】
図６は、ノード装置１０（ルートノードやリーフノードも含む）におけるデータ登録の処理の手順を示すフローチャートである。以下、このフローチャートに沿って説明する。
まずステップＳ１１において、格納処理部３２は、データの登録要求を受け付ける。なお、ルート層または中間層に位置するノード装置１０においては、データの登録要求は、子ノード装置１２から送られ、データ収集部３１が受け付けたものである。また、リーフ層に位置するノード装置１０においては、データの登録要求は、データ収集部３１におけるデータ生成に基づくものである。
【００４７】
次にステップＳ１２において、格納処理部３２は、必要に応じて、自ノードのデータベース（データ記憶部２０）内のデータの一部を親ノードに退避させる。つまり、格納処理部３２は、親ノード装置１１に対して、退避データの登録を要求する。ただし、実際に退避すべきデータ存在するか否かは、退避ルール記憶部２３で設定されているルールや、そのときのデータ記憶部２０の空き容量の状況等にも依る。
なお、ルート層に位置するノード装置１０においては、本ステップの処理で、データを親ノードに退避させる代わりに、単にそのデータの削除を行う。
【００４８】
次にステップＳ１３において、格納処理部３２は、自ノードのデータベース（データ記憶部２０）にデータを登録する。
以上で、このフローチャート全体の処理を終了する。なお、データの退避と格納の詳細な処理については、後で別のフローチャートを参照しながらさらに詳細に説明する。
【００４９】
図７は、ノード装置１０（ルートノードやリーフノードも含む）におけるデータ検索の処理の手順を示すフローチャートである。以下、このフローチャートに沿って説明する。
まずステップＳ２１において、問合せ処理部３５は、外部からの検索要求を受け付ける。なお、ルート層に位置するノード装置１０においては、この検索要求はクライアント装置９から送られてくるものである。また、中間層またはリーフ層に位置するノード装置においては、この検索要求は親ノード装置１１から送られてくるものである。
【００５０】
次にステップＳ２２において、問合せ処理部３５は、ステップＳ２１で受け付けた検索要求に基づき、自ノードのデータベース（データ記憶部２０）にアクセスして検索結果を取得する。なお、後述するように検索要求に含まれる条件（時刻の条件）によっては、自ノードのデータベースの検索を省略する場合がある。
次にステップＳ２３において、問合せ処理部３５は、ステップＳ２１で受け付けた検索要求に基づき、子ノード装置１２に対して検索要求を転送する。そして、その子ノード装置１２からの応答として、検索結果を取得する。なお、子ノード装置１２が複数接続されている場合には、問合せ処理部３５は、それらの子ノード装置１２の各々に対して検索要求を転送し、検索結果を取得する。また、後述するように検索要求に含まれる条件（時刻の条件）によっては、子ノード装置１２への検索要求を省略する場合がある。
【００５１】
次にステップＳ２４において、問合せ処理部３５は、自ノードのデータベースから取得した検索結果と、子ノード装置１２から取得した検索結果とを、統合（マージ）する。なお、自ノードのデータベースの検索あるいは子ノード装置の検索のいずれかが省略された場合には、統合する際に、省略された側の検索結果が空集合であるものとして扱う。
次にステップＳ２５において、問合せ処理部３５は、ステップＳ２４で得られた検索結果を要求元に返す。
以上で、このフローチャート全体の処理を終了する。なお、データの検索の詳細な処理については、後で別のフローチャートを参照しながらさらに詳細に説明する。
【００５２】
図８，図９，図１０，図１１は、個々の退避ルールに応じたデータの退避およびデータの登録の処理の手順を示すフローチャートである。以下において、（Ａ）定期退避、（Ｂ）追加データ量に基づく逐次退避、（Ｃ）不足容量に基づく逐次退避、（Ｄ）空き容量に基づく逐次退避のそれぞれの場合の処理を説明する。
【００５３】
図８は、退避ルールとして定期退避が選択される場合の、データの登録および退避の処理の手順を示すフローチャートである。なお、図８（Ａ）はデータの登録の処理の手順を示し、図８（Ｂ）はデータの移動の処理の手順を示す。これらのデータ格納処理とデータ移動処理とは、ノード装置１０において別スレッドとして互いに独立、且つ並列に実行され得るものである。データ移動の処理は、それぞれ所定の時間間隔で繰り返し実行される。
図８（Ａ）のステップＳ１０１において、格納処理部３２は、データ収集部３１から渡されるデータを、自ノードのデータベース（データ記憶部２０）に登録する。本ステップの処理が終了すると、このフローチャート全体の処理を終了する。
図８（Ｂ）のステップＳ１１１において、格納処理部３２は、一定量のデータを親ノード装置１１に移動させる。つまり、格納処理部３２は、そのデータの登録を親ノード装置１１に要求する。なお、データ記憶部２０に存在するデータが上記の一定量に満たない場合には、存在するすべてのデータを親ノード装置１１に移動させる。ただし、自ノード装置１０がルート層に位置する場合には、格納処理部３２は、一定量のデータを親ノードに移動させる代わりに、単にそのデータを削除する。本ステップの処理が終了すると、このフローチャート全体の処理を終了する。
【００５４】
図９は、退避ルールとして追加データ量に基づく逐次退避が選択される場合の、データの登録および退避の処理の手順を示すフローチャートである。以下、このフローチャートに沿って説明する。
まずステップＳ１２１において、格納処理部３２は、登録するデータのデータ量を計算する。
次にステップＳ１２２において、格納処理部３２は、ステップＳ１２１で算出された登録データ量に基づいて、データベース（データ記憶部２０）に充分な空き容量が存在しているか否かを判断する。空き容量が充分である場合（ステップＳ１２２：ＹＥＳ）には、ステップＳ１２４に飛ぶ。空き容量が不充分である場合（ステップＳ１２２：ＮＯ）には、次のステップＳ１２３に進む。
次にステップＳ１２３に進んだ場合、同ステップおいて、格納処理部３２は、容量が不足する分のデータを、親ノード装置１１に移動させる。なお、自ノード装置１０がルート層に位置するノードである場合には、そのデータを親ノードに移動させる代わりに、単にデータベース（データ記憶部２０）から削除する。
次にステップＳ１２４において、格納処理部３２は、データ収集部３１から渡されるデータを、自ノードのデータベース（データ記憶部２０）に登録する。本ステップの処理が終了すると、このフローチャート全体の処理を終了する。
【００５５】
図１０は、退避ルールとして不足容量に基づく逐次退避が選択される場合の、データの登録および退避の処理の手順を示すフローチャートである。以下、このフローチャートに沿って説明する。
まずステップＳ１３１において、格納処理部３２は、データ収集部３１から渡されたデータの、自ノードのデータベース（データ記憶部２０）への登録を試みる。
次にステップＳ１３２において、格納処理部３２は、ステップＳ１３１におけるデータの登録（書き込み）において、容量不足のエラーが起こったか否かを判断する。容量不足エラーが起こった場合（ステップＳ１３２：ＹＥＳ）には、ステップＳ１３３に進む。容量不足エラーが起こらず正常にデータ登録が完了した場合（ステップＳ１３２：ＮＯ）には、このフローチャート全体の処理を終了する。
次にステップＳ１３３に進んだ場合、同ステップおいて、格納処理部３２は、一定量のデータを親ノード装置１１に移動させる。ただし、自ノード装置１０がルート層に位置するノードである場合には、本ステップにおいて、一定量のデータを親ノード装置１１に移動させる代わりに、そのデータを単にデータベース（データ記憶部２０）から削除する。本ステップの処理が終了すると、再度、ステップＳ１３１に戻る。
【００５６】
図１１は、退避ルールとして空き容量に基づく逐次退避が選択される場合の、データの登録および退避の処理の手順を示すフローチャートである。なお、図１１（Ａ）はデータの登録の処理の手順を示し、図１１（Ｂ）はデータの移動の処理の手順を示す。なお、データの移動を行うために、格納処理部３２は、データベースの空き容量を監視する。これらのデータ格納処理とデータ移動処理とは、ノード装置１０において別スレッドとして互いに独立、且つ並列に実行され得るものである。データ移動の処理は、それぞれ所定の時間間隔で繰り返し実行される。
【００５７】
図１１（Ａ）のステップＳ１４１において、格納処理部３２は、データ収集部３１から渡されるデータを、自ノードのデータベース（データ記憶部２０）に登録する。本ステップの処理が終了すると、このフローチャート全体の処理を終了する。
【００５８】
図１１（Ｂ）のステップＳ１５１において、格納処理部３２は、自ノードのデータベース（データ記憶部２０）の空き容量または空き件数をチェックする。ここで、空き件数をチェックできるのは、１件のデータのサイズが固定長である場合などである。
次にステップＳ１５２において、格納処理部３２は、ステップＳ１５１で確認した空き容量等が予め定めた閾値以上であるかどうかを判定する。そして、閾値以上の空き容量が存在する場合（ステップＳ１５２：ＹＥＳ）には、このフローチャート全体の処理を終了する。空き容量が閾値未満である場合（ステップＳ１５２：ＮＯ）には、次のステップＳ１５３に進む。
次にステップＳ１５３に進んだ場合、同ステップにおいて、格納処理部３２は、一定量のデータを親ノード装置１１に移動させる。ただし、自ノード装置１０がルート層に位置するノードである場合には、本ステップにおいて、一定量のデータを親ノード装置１１に移動させる代わりに、そのデータを単にデータベース（データ記憶部２０）から削除する。本ステップの処理が終了すると、このフローチャート全体の処理を終了する。
【００５９】
図１２は、データを移動させる処理のさらに詳細な手順を示すフローチャートである。
つまり、図８（Ｂ）のステップＳ１１１や、図９のステップＳ１２３や、図１０のステップＳ１３３や、図１１のステップＳ１５３におけるデータの移動（退避）の処理の、詳細な手順を示すものが図１２である。以下、このフローチャートに沿って説明する。
【００６０】
まずステップＳ１６１において、格納処理部３２は、自ノードがルートノードであるか否かを判定する。自ノードがルートノードであるか否かは、例えば、接続リスト記憶部２１を参照したり、その他の定義情報を参照したりすることによって判定可能である。そして、自ノードがルートノードである場合（ステップＳ１６１：ＹＥＳ）には、ステップＳ１６４に移る。自ノードがルートノードではない場合（ステップＳ１６１：ＮＯ）には、ステップＳ１６２に進む。
【００６１】
次にステップＳ１６２に進んだ場合、同ステップにおいて、格納処理部３２は、移動するデータの範囲の情報を取得する。つまり、格納処理部３２は、移動すべきデータに関連付けられた時刻の範囲の情報を取得する。データは、古いものから順に親ノードに移動される。したがって、望まれる範囲の情報は、移動すべきデータの量とその時点でデータベース（データ記憶部２０）に格納されているデータとから取得可能である。
次にステップＳ１６３において、格納処理部３２は、親ノード装置１１に、その範囲のデータの登録要求を送信する。本ステップの処理が終了すると、次にステップＳ１６５に進む。
【００６２】
一方、ステップＳ１６４に進んだ場合、同ステップにおいて、格納処理部３２は、削除すべきデータの範囲の情報を取得する。つまり、格納処理部３２は、削除すべきデータに関連付けられた時刻の範囲の情報を取得する。範囲の情報を取得するための原理は、ステップＳ１６２の説明で述べたものと同様である。
【００６３】
次にステップＳ１６５において、格納処理部３２は、移動対象のデータ（またはルートノードの場合には削除対象のデータ）をデータベース（データ記憶部２０）から削除する。
以上でこのフローチャート全体の処理を終了する。
【００６４】
図１３は、データ検索のさらに詳細な処理手順を示すフローチャートである。同図に示す処理は、図７におけるステップＳ２２およびＳ２３の処理に当たる部分である。図示する通り、問合せ処理部３５は、検索要求を分配して処理する。以下、このフローチャートに沿って説明する。
まずステップＳ４１において、問合せ処理部３５は、受け取った検索要求から、時刻に関する検索条件を抽出する。
【００６５】
次にステップＳ４２において、問合せ処理部３５は、ステップＳ４１で抽出した時刻に関する抽出条件に基づいて、自ノードが、その時刻の条件に合致するデータを含んでいる可能性があるか否かを判定する。自ノードがそのデータを含む可能性がある場合（ステップＳ４２：ＹＥＳ）には次のステップＳ４３に進む。自ノードがそのデータを含む可能性がない場合（ステップＳ４２：ＮＯ）にはステップＳ４４に飛ぶ。
次にステップＳ４３に進んだ場合、同ステップにおいて、問合せ処理部３５は、自ノードのデータベースを検索し、検索結果を取得する。
【００６６】
次にステップＳ４４において、問合せ処理部３５は、ステップＳ４１で抽出した時刻に関する抽出条件に基づいて、子ノード以下のノードが、その条件に合致するデータを含んでいる可能性があるか否かを判定する。子ノード以下のノードがそのデータを含む可能性がある場合（ステップＳ４４：ＹＥＳ）には次のステップＳ４５に進む。子ノード以下のノードがそのデータを含む可能性がない場合（ステップＳ４４：ＮＯ）にはこのフローチャートの処理全体を終了する。
次にステップＳ４５に進んだ場合、同ステップにおいて、問合せ処理部３５は、子ノードに対して検索要求を送り、その子ノードから検索結果を取得する。なお、自ノードが複数の子ノードに接続されているとき、子ノードの枝ごとにデータの格納範囲が異なる場合には、検索条件に合致するデータを含む可能性のある枝の子ノードのみに検索要求を送るようにしてもよい。そして、本ステップの処理が終了すると、このフローチャートの処理全体を終了する。
【００６７】
なお、ステップＳ４２およびＳ４４における判定の方法の詳細は、次の通りである。」
即ち、上記のステップＳ４２においては、問合せ処理部３５は、格納情報記憶部２２の自ノード格納範囲の情報を参照する。これにより、問合せ処理部３５は、検索要求に含まれる時刻の条件と、自ノード格納範囲の上限と下限とで表される範囲とが重なるか否かを判定する。
また、上記のステップＳ４４において、問合せ処理部３５は、次のような判定を行う。即ち、格納情報記憶部２２が図５（Ａ）に示したタイプの格納情報を保持している場合、問合せ処理部３５は、検索要求に含まれる時刻の条件と、自ノード格納範囲の上限よりも大きい（新しい）範囲とが重なるか否かを判定する。一方、格納情報記憶部２２が図５（Ｂ）に示したタイプの格納情報を保持している場合、問合せ処理部３５は、検索要求に含まれる時刻の条件と、子ノード格納範囲の下限よりも大きい（新しい）範囲が重なるか否かを、子ノードごとに判定する。
【００６８】
以下では、本実施形態を用いる場合の検索性能と、従来技術を用いる場合の検索性能とを、例に基づいて比較する。本実施形態のデータベースシステムは、４階層のノード装置で構成される。第１層（ルート層）は、１台のノード装置を含む。このルート層のノード装置が、第２層における１００台のノード装置に接続されている。そして、第２層のノード装置の各々が、第３層における１００台のノード装置に接続されている。つまり、第３層のノード装置は１００００台である。そして、第３層のノード装置の各々が、第４層における１００台のノード装置に接続されている。つまり、第４層のノード装置は１００００００台（百万台）である。第４層はリーフ層であり、第４層のノード装置は、センサー等からの信号に基づいてデータを生成する。第４層の各ノード装置のデータベース容量は１ＧＢ（ギガバイト）である。つまり、第４層の百万台のノード装置全体でのデータベース容量は１ＰＢ（ペタバイト）である。第３層の１００００台のノード装置の各々のデータベース容量は１００ＧＢである。つまり、第３層の１００００台のノード装置全体でのデータベース容量は１ＰＢ（ペタバイト）である。第２層の１００台のノード装置の各々のデータベース容量は１０ＴＢ（テラバイト）である。つまり、第２層の１００台のノード装置全体でのデータベース容量は１ＰＢ（ペタバイト）である。第１層（ルート層）の１台のノード装置のデータベース容量は１ＰＢである。つまり、第１層から第４層までのノード装置全体でのデータベースの総容量は４ＰＢである。
一方、従来技術を用いた構成で、１，０００，０００台（百万台）のデータ管理装置が、データを保持する。これらの百万台のデータ管理装置は、ツリー構造あるいは層構造を成しておらず、すべてがフラットにネットワークに接続されている。また、各々のデータ管理装置のデータベース容量は４ＧＢである。つまり、百万台のデータ管理装置全体でのデータベース容量は４ＰＧである。つまり、全体のデータベース容量は、上記の本実施形態を用いる場合と同等である。
【００６９】
上記の前提で、従来技術と本実施形態との性能を比較する。なお、ハードウェアの性能として、ネットワークのデータ転送速度が１ＧＢ／秒、データベース（磁気ハードディスク装置で構成）のアクセス速度が１００ＭＢ／秒であることを想定する。
本実施形態の例では、検索は、各層（第１層から第４層まで）のノード装置で行われる。第１層（ルート層）のノード装置では、１ＰＢの容量のデータベースに１００ＭＢ／秒のアクセス速度でシーケンシャルにアクセスするため、１［ＰＢ］／１００［ＭＢ／秒］で、１０，０００，０００秒（１千万秒）を要する。なお、第２層から第４層までにおける各ノード装置でのデータベースへのアクセスと、取得されたデータの上位層への転送は、上で想定した速度によれば充分に速いため、第１層（ルート層）でのデータアクセス時間の１千万秒に隠蔽される。
一方、従来技術の例では、４ＰＢのデータに１００ＭＢ／秒の速度でアクセスするため、４［ＰＢ］／１００［ＭＢ／秒］で、合計で４０，０００，０００秒（４千万秒）を要する。
つまり、本実施形態の例で検索した場合の性能は、従来技術の例の場合の性能を上回る。
【００７０】
次に、検索要求内に時刻の条件を含む場合について、上記の前提を用いて、従来技術と本実施形態との性能を比較する。ここでも、ハードウェアの性能として、ネットワークのデータ転送速度が１ＧＢ／秒、データベース（磁気ハードディスク装置で構成）のアクセス速度が１００ＭＢ／秒であることを想定する。
また、本実施形態の各層におけるデータ格納状況は次の通りである。即ち、第４層（リーフ層）は現時点から２４時間前まで（これを「当日」と呼ぶ）のデータを格納している。また、第３層は、２４時間前から４８時間前まで（これを「１日前」と呼ぶ）のデータを格納している。また、第２層は、４８時間前から７２時間前（これを「２日前」と呼ぶ）のデータを格納している。また、第１層は、７２時間前から９６時間前（これを「３日前」と呼ぶ）のデータを格納している。ここで、検索要求内に、時刻の条件として、１日前のデータ（つまり、第３層のノード装置に格納されているデータ）のみを検索する条件を含む場合を想定する。つまり、第３層の１０，０００台のノード装置の各々において、１００ＧＢのデータを探索する。つまり、１０，０００並列にデータアクセスが行われる。このデータアクセスに要する時間は、１００［ＧＢ］／１００［ＭＢ／秒］で、１，０００秒である（時間Ａ）。アクセスの結果得られたデータを第３層から第２層に転送する処理は、１００並列で行われる（第２層のノード装置が１００台）。第３層から第２層へのデータ転送に要する時間は、１０［ＴＢ］／１［ＧＢ／秒］で、１０，０００秒である（時間Ｂ）。このデータを第２層から第１層に転送する処理は、１並列で（シーケンシャルに）行われる（第１層のノード装置が１台）。第２層から第１層へのデータ転送に要する時間は、１［ＰＢ］／１［ＧＢ／秒］で、１，０００，０００秒である（時間Ｃ）。つまり、これらの時間Ａ、時間Ｂ、時間Ｃをたし合わせると、検索処理に要する総時間は、１，０１１，０００秒である。
一方、従来技術の例では、１ＰＢのデータにシーケンシャルにアクセスする。つまり、このデータアクセスに要する時間は、１［ＰＢ］／１００［ＭＢ／秒］で、合計で１０，０００，０００秒（１千万秒）である。
つまり、この場合も、本実施形態の例で検索した場合の性能は、従来技術の例の場合の性能を上回る。
【００７１】
（第２の実施形態）
次に、第２の実施形態について説明する。なお、前述の実施形態と共通の事項については以下における説明を省略し、本実施形態に特有の事項を中心に説明する。
第１の実施形態におけるデータベースシステムに格納されるデータの構成は図３に示した通りであった。一方、本実施形態におけるデータベースシステム１０１は、複数の系列（時系列）のデータを格納する。
【００７２】
図１４は、本実施形態によるデータベースシステム１０１が保持するデータの基本構造を示す概略図である。データベースシステム１０１に含まれる各ノード装置１０におけるデータ記憶部２０が、同図に示す構造のデータを記憶している。図示するように、データベースシステム１０１は、時刻（順序情報）とデータ内容とを関連付けて保持し、管理する。また、本実施形態における特徴として、データベースシステム１０１は、複数の系列のデータをひとつのツリー構造のノード装置群で管理する。そのため、図示する表は、データ項目のひとつとして系列識別情報を持つ。系列識別情報は、データの各系列を識別するものである。図示する例では、系列識別情報として「Ｐ」および「Ｑ」の２つの値が表の中に含まれている。
例えば、系列識別情報「Ｐ」および「Ｑ」は、リーフノード装置１０Ｌにおいてデータを生成する２種類のセンサー（センサーＰとセンサーＱ）に対応する。
つまり、本実施形態におけるデータ記憶部２０は、順序情報（時刻）によって順序付けられる複数の系列のデータを記憶する。
【００７３】
図１５は、複数の系列を有するデータ（図１４参照）が、ツリー構造で接続されるノード装置間で分散して格納される状況を示す概略図である。同図において、３つのノード装置１０は、親−子−孫の関係を有している。これら３つのノード装置以外については図面における記載を省略している。これらのノード装置間で、時刻の情報（順序情報）をキーとして、データを分散して保持する点は、第１の実施形態と同様である。ただし、本実施形態においては、系列識別情報「Ｐ」および「Ｑ」で表される２つの系列のデータが、論理的には相互に独立に、ノード装置１０内に格納されている。
なお、ここでは、データベースシステム１０１が管理するデータの系列数が２の場合について例示しているが、データの系列数は３以上であってもよい。
【００７４】
本実施形態において、時刻（順序情報）をキーとしたノード間での分散のさせ方に、２種類の方式がある。第１の方式では、複数の系列に共通の格納範囲を用いてノード間のデータ分散を行う。第２の方式では、複数の系列それぞれに独立の格納範囲によってノード間のデータ分散を行う。以下に、これら２つの方式の具体例を説明する。
【００７５】
図１６は、上記の第１の方式により、複数の系列に共通の格納範囲を用いた場合のデータの格納例を示す概略図である。なお、ここでのデータ例は、図１５に示したデータに対応している。同図において、第１層のノードは、第２層のノードの直接の親である。また、第２層のノードは、第３層のノードの直接の親である。本方式においては、複数の系列に共通の格納範囲が、各ノードで設定されている。
具体的には、第１層のノードでは、系列Ｐ，Ｑに依らずに、自ノード格納範囲の上限が「２０１７／０１／０３  ０４：００：００．０００」であり、下限が「２０１７／０１／０２  ２１：００：００．０００」である。また、第２層のノードでは、同じく系列Ｐ，Ｑに依らずに、自ノード格納範囲の上限が「２０１７／０１／０３  １０：００：００．０００」であり、下限が「２０１７／０１／０３  ０４：００：００．０００」である。また、第３層のノードでは、同じく系列Ｐ，Ｑに依らずに、自ノード格納範囲の上限が「２０１７／０１／０３  ０４：００：００．０００」であり、下限が「２０１７／０１／０２  ２１：００：００．０００」である。
つまり、この場合、格納処理部３２は、複数の系列のデータに共通の順序情報が示す順序で、データ記憶部２０から退避させるべきデータを親のノード装置に退避させまたはルートノードにおいてはデータ記憶部２０から削除すべきデータを削除する、
このように、自ノード格納範囲はデータ系列に依存しない。したがって、本方式において、各ノード装置１０の格納情報記憶部２２は、データ系列に依存せず共通の格納範囲の情報（自ノード格納範囲等）を保持する。
【００７６】
本実施形態の本方式（第１の方式）によると、データ系列をまたいで、合計のデータ量に基づいて古い順にデータを親ノードに退避させるということが可能となる。
【００７７】
図１７は、上記の第２の方式により、複数の系列それぞれに独立の格納範囲によってノード間のデータ分散を行った場合のデータの格納例を示す概略図である。なお、ここでのデータ例は、図１５に示したデータに対応している。同図において、第１層のノードは、第２層のノードの直接の親である。また、第２層のノードは、第３層のノードの直接の親である。本方式においては、系列ごとに格納範囲が設定されている。
具体的には、第１層のノードにおいて系列Ｐに関して、自ノード格納範囲の上限が「２０１７／０１／０３  ０１：００：００．０００」であり、下限が「２０１７／０１／０２  ２１：００：００．０００」である。また、第１層のノードの系列Ｑに関して、自ノード格納範囲の上限が「２０１７／０１／０３  ０８：００：００．０００」であり、下限が「２０１７／０１／０３  ００：００：００．０００」である。
また、第２層のノードにおいて系列Ｐに関して、自ノード格納範囲の上限が「２０１７／０１／０３  ０６：００：００．０００」であり、下限が「２０１７／０１／０３  ０２：００：００．０００」である。また、第２層のノードの系列Ｑに関して、自ノード格納範囲の上限が「２０１７／０１／０３  １２：００：００．０００」であり、下限が「２０１７／０１／０３  １０：００：００．０００」である。
また、第３層のノードにおいて系列Ｐに関して、自ノード格納範囲の上限が「２０１７／０１／０３  １１：００：００．０００」であり、下限が「２０１７／０１／０３  ０７：００：００．０００」である。また、第２層のノードには系列Ｑのデータが存在しない。
つまり、この場合、格納処理部３２は、複数の系列のデータごとの順序情報が示す順序で、データ記憶部２０から退避させるべきデータを親のノード装置に退避させまたはデータ記憶部２０から削除すべきデータを削除する。
このように、自ノード格納範囲はデータ系列ごとに異なる。したがって、本方式において、各ノード装置１０の格納情報記憶部２２は、データ系列ごとに、格納範囲の情報（自ノード格納範囲等）を保持する。
【００７８】
本実施形態の本方式（第２の方式）によると、データ系列ごとに個別に古い順にデータを親ノードに退避させるということが可能となる。
【００７９】
（第３の実施形態）
次に、第３の実施形態について説明する。なお、前述の各実施形態と共通の事項については以下における説明を省略し、本実施形態に特有の事項を中心に説明する。本実施形態におけるデータベースシステムの特徴として、ノード装置１０は必ずしもツリー構造状に接続される必要はない。
【００８０】
図１８は、本実施形態によるデータベースシステム１０２の構成例を示す概略図である。図示するように、本実施形態においても、複数のノード装置１０が接続されることによりデータベースシステム１０２が構成される。そして、ノード装置間では、親ノードと子ノードの関係が定義される。図内の有向矢印線の元側が親ノードであり、先側が子ノードである。ただし、データベースシステム１０２において、例えばノード装置１０−８は、ノード装置１０−５と１０−６の２つの親を持つ。このように、データベースシステム１０２において、ノード装置１０はツリー構造に接続されなくてもよい。ただし、データベースシステム１０２を構成するノード装置群において、親子関係に関する半順序が成立する。即ち、あるノード装置は、他のあるノード装置の、直系の先祖であるか、直系の子孫であるか、あるいは先祖でも子孫でもないか、のいずれかである。あるノード装置が他のノード装置の先祖でもあり且つ子孫でもあるという関係は存在しない。言い換えれば、親子関係を表す有向グラフにおける閉路は存在しない。
【００８１】
本実施形態において、前述の各実施形態と同様に、データに関連付けられた時刻をキーとしてデータの格納および退避が行われる。また、前述の各実施形態と同様に、子ノード側から親ノード側にデータの退避が行われる。データの退避ルールとして、例えば、第１の実施形態で説明した４種類のルールのうちいずれかを用いることができる。ただし、あるノード装置１０が複数の親を持つ場合、そのノード装置１０は、適宜、退避先である親ノード装置を分散させてデータの退避を行う。退避先の親ノード装置を分散させる方法は任意であるが、例えば、データに関連付けられた時刻（順序情報）を区切ってデータの移動先の親ノード装置を決定する。あるいは、例えば、データに関連付けられた時刻（順序情報）を、そのノード装置に接続されている親ノード装置の数で除した場合の剰余により、移動先の親ノード装置を決定する。あるいは、例えば、データにハッシュ関数を適用して得られた結果に基づいて移動先の親ノード装置を決定する。
【００８２】
また、本実施形態において、前述の各実施形態と同様にデータの検索処理が行われる。つまり、ノード装置１０は、適宜、子ノード装置への検索要求の分配を行う。ただし、複数の親ノード（例えば、ノード装置１０−５と１０−６）が１つの共通の子ノード（ノード装置１０−８）を持つ場合には、それら複数の親ノードのうちのどの親ノードから、共通の子ノードに対して検索要求を送るかを、ルール等により予め定めておく。
【００８３】
本実施形態によれば、ノード装置間の接続の形態は必ずしもツリー構造状でなくてもよく、柔軟にシステムを構成できる。本実施形態においても、子ノードから親ノードにデータを退避させていくことにより、各ノード装置の記憶手段を有効に使用することができる。また、順序情報にしたがって、どのノード装置にどの範囲のデータが存在するかを管理することができる。
【００８４】
（第４の実施形態）
次に、第４の実施形態について説明する。なお、前述の各実施形態と共通の事項については以下における説明を省略し、本実施形態に特有の事項を中心に説明する。本実施形態におけるデータベースシステムの特徴として、ノード装置１０は必ずしもツリー構造状に接続される必要はなく、また必ずしも単一のルートノード装置を有さない構成としてもよい。
【００８５】
図１９は、本実施形態によるデータベースシステム１０３の構成例を示す概略図である。図示するように、本実施形態においても、複数のノード装置１０が接続されることによりデータベースシステム１０２が構成される。そして、ノード装置間では、親ノードと子ノードの関係が定義される。図内の有向矢印線の元側が親ノードであり、先側が子ノードである。
【００８６】
本実施形態において、前述の各実施形態と同様に、データに関連付けられた時刻をキーとしてデータの格納および退避が行われる。また、前述の各実施形態と同様に、子ノード側から親ノード側にデータの退避が行われる。データの退避ルールとして、例えば、第１の実施形態で説明した４種類のルールのうちいずれかを用いることができる。ただし、データベースシステム１０３において、ノード装置１０−５１から１０−５８までのグループと、ノード装置１０−５９から１０−６２までのグループとは、グラフとして連結されていない。したがって、ノード間でデータを退避させる場合にも、これら２つのグループをまたいでデータが移動することはない。
【００８７】
また、本実施形態において、前述の各実施形態と同様にデータの検索処理が行われる。つまり、ノード装置１０は、適宜、子ノード装置への検索要求の分配を行う。ただし、ノードの親子関係における最上位の親ノードが複数存在する場合（例えば、図１９におけるノード装置１０−５１や１０−５９）には、クライアント装置９がそれら複数のノード装置（ノード装置１０−５１や１０−５９）に検索要求を分配する。あるいは、クライアント装置９と最上位の親ノードであるノード装置との間に、フロントエンド処理装置を設けて、そのフロントエンド処理装置が最上位の親ノードである複数のノード装置に検索要求を分配するようにしてもよい。
【００８８】
本実施形態によれば、すべてのノード装置が必ずしも１つに連結されていなくてもよい。つまり、ノード間接続のグラフ構造として、非連結のノード装置群を有していてもよい。これにより、柔軟にシステムを構成できる。本実施形態においても、子ノードから親ノードにデータを退避させていくことにより、各ノード装置の記憶手段を有効に使用することができる。また、順序情報にしたがって、どのノード装置にどの範囲のデータが存在するかを管理することができる。
【００８９】
上記各実施形態では、データベースシステムに格納するデータの順序を表す情報として、データの各件に関連付けられた時刻（日時）の情報を用いた。しかし、時刻に代わって、他の情報により、データの順序を表すようにしてもよい。例えば、データの発生順序を表すシリアル番号（通番）をデータの各件に付与し、これを順序情報として用いてもよい。あるいは、時刻（日本標準時や協定世界時）とは異なる他の何らかの数値データをデータの各件に付与し、これを順序情報として用いてもよい。このように、時刻（日時）以外の順序情報を用いる場合にも、子ノードから親ノードに退避させるデータの範囲の管理を、その順序情報を用いて行うことができる。また、検索要求を、自ノード内で処理するか否か、あるいは子ノードに分配するか否か、を判断する場合にも、その順序情報に基づくことができる。つまり、適切に付与された順序情報は、上記各実施形態における時刻（日時）の代わりに適用することができる。
【００９０】
また、上記各実施形態では、順序情報を用いてデータの順序を管理するにあたり、数値が大きい側を新しいデータの側とし、数値が小さい側を古いデータの側とした。しかし、この新旧の順序と数値の大小との関係は、逆転していてもよい。
【００９１】
以上説明した少なくともひとつの実施形態によれば、退避ルール記憶部２３が記憶する退避ルールに従ってノード間で子から親へと順次データを退避させる格納処理部３２を持つことにより、ノード装置１０が有する記憶手段を有効に使用することができ、中央サーバー装置へのデータの集中を回避することができる。また、データベースシステム全体としてのデータ格納容量を大きくすることができる。また、以上説明した少なくともひとつの実施形態によれば、上位からの検索要求を分配する問合せ処理部３５を持つことにより、多並列に検索処理を行うことができ、データ検索の効率が向上する。
【００９２】
なお、上述した実施形態におけるノード装置やクライアント装置の機能をコンピューターで実現するようにしても良い。その場合、この機能を実現するためのプログラムをコンピューター読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピューターシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＵＳＢメモリー等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリーのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００９３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００９４】
１０，１０−１〜１０−１０，１０−５１〜１０−６２…ノード装置、１０Ｒ…ノード装置（ルートノード装置）、１０Ｌ…ノード装置（リーフノード装置）、１１…親ノード装置、１２…子ノード装置、２０…データ記憶部、２１…接続リスト記憶部、２２…格納情報記憶部、２３…退避ルール記憶部、３１…データ収集部、３２…格納処理部、３５…問合せ処理部、１００，１０１，１０２，１０３…データベースシステム
【図１】
2018116348.tif 000003
【図２】
2018116348.tif 000004
【図３】
2018116348.tif 000005
【図４】
2018116348.tif 000006
【図５】
2018116348.tif 000007
【図６】
2018116348.tif 000008
【図７】
2018116348.tif 000009
【図８】
2018116348.tif 000010
【図９】
2018116348.tif 000011
【図１０】
2018116348.tif 000012
【図１１】
2018116348.tif 000013
【図１２】
2018116348.tif 000014
【図１３】
2018116348.tif 000015
【図１４】
2018116348.tif 000016
【図１５】
2018116348.tif 000017
【図１６】
2018116348.tif 000018
【図１７】
2018116348.tif 000019
【図１８】
2018116348.tif 000020
【図１９】
2018116348.tif 000021