(57)【要約】  情報記憶装置間でのデータの複製や送受信を必要とすることなく、情報送信装置から送信されるデータを分散記憶させることができるようにする。  複数の情報記憶装置の各々において、データ書き込み部の制御の下、予め設定された、情報記憶装置と当該情報記憶装置が担当するエンドポイントとの対応関係を示す情報に基づいて、担当するエンドポイントが判定される。共有設定記憶部に記憶される、エンドポイントと当該エンドポイントが取得するデータの種類を示す識別子とを対応付ける第１の対応表に基づいて、情報送信装置から送信されるデータの中から、担当するエンドポイントに対応付けられている識別子とともに送信されるデータが取得され、当該取得されたデータがデータ記憶部に記憶される。対応表更新部の制御の下、担当するエンドポイントとの対応付けが、共有設定記憶部に記憶される第２の対応表に書き込まれる。
2019087786.tif 000002
【特許請求の範囲】
【請求項１】
情報送信装置および情報受信装置との間でデータ通信が可能な複数の情報記憶装置を具備する情報分散記憶システムであって、
前記複数の情報記憶装置の各々は、
前記複数の情報記憶装置間で共有される、情報受信装置と当該情報受信装置が取得するデータの種類を示す識別子とを対応付ける第１の対応表と、情報記憶装置と当該情報記憶装置が担当する情報受信装置との対応関係を示す第２の対応表とに基づいて、前記情報送信装置から送信されるデータの中から、自らが担当する情報受信装置に対応付けられている識別子とともに送信されるデータを取得するデータ取得部と、
前記取得されたデータを記憶する記憶媒体と
を備える情報分散記憶システム。
【請求項２】
前記複数の情報記憶装置の各々はさらに、
情報受信装置からのデータ要求を取得する要求取得部と、
前記取得されたデータ要求が前記担当する情報受信装置からのものであるか否かを判定する判定部と、
前記取得されたデータ要求が前記担当する情報受信装置からのものであると判定された場合に、前記担当する情報受信装置に対して、前記記憶媒体に記憶されたデータを出力する出力部とを具備し、
前記判定部は、前記取得されたデータ要求が前記担当する情報受信装置からのものではないと判定された場合に、前記第２の対応表に基づいて、当該データ要求の送信元の情報受信装置を担当する情報記憶装置を判定し、
前記データ要求の送信元の情報受信装置を担当する情報記憶装置であると判定された情報記憶装置の記憶媒体に記憶されたデータを取得する中継部をさらに具備し、
前記出力部は、前記中継部を介して取得されたデータを、前記データ要求の送信元の情報受信装置に出力する、
請求項１に記載の情報分散記憶システム。
【請求項３】
前記複数の情報記憶装置間で共有される前記第１の対応表または前記第２の対応表の初期設定またはデータアクセスを実行する管理装置をさらに具備する、請求項２に記載の情報分散記憶システム。
【請求項４】
前記複数の情報記憶装置の各々は、
情報受信装置が追加される際に、前記第２の対応表において、前記追加される情報受信装置を情報記憶装置に対応付けずに記憶させる対応表更新部と、
前記第２の対応表を参照して、情報記憶装置が対応付けられていない情報受信装置の中から、担当する情報受信装置を選択する選択部とを具備し、
前記対応表更新部は、前記第２の対応表において、前記選択された情報受信装置に対応付けられたことを記憶させる、
請求項２に記載の情報分散記憶システム。
【請求項５】
前記第２の対応表は、各情報記憶装置について、情報受信装置との対応付けがされた時刻もさらに記憶しており、
前記複数の情報記憶装置の各々は、
前記第２の対応表を参照して、前記担当する情報受信装置を担当する他の情報記憶装置に関して記憶されている時刻について、当該時刻が記憶されてから所定の時間が経過しているか否かを判定する対応表監視部と、
前記時刻が記憶されてから所定の時間が経過していると判定された場合に、前記第２の対応表において、当該判定をされた情報記憶装置についての情報受信装置との対応付けを削除し、前記第２の対応表において、自らの情報記憶装置に関して記憶されている時刻を更新する対応表更新部と
をさらに備える、請求項２に記載の情報分散記憶システム。
【請求項６】
前記複数の情報記憶装置の各々は、前記第２の対応表において、情報記憶装置毎に、担当する情報受信装置のコストの合計値を算出する算出部をさらに備え、
前記情報分散記憶システムに情報記憶装置が追加される際に、前記追加される情報記憶装置は、
前記算出されたコストの合計値が最も大きい情報記憶装置が担当する情報受信装置のうちコストが最も大きい情報受信装置を、担当する情報受信装置として選択する選択部と、
前記第２の対応表において、前記選択された情報受信装置に対応付けられたことを記憶させる対応表更新部と
をさらに備える、請求項２に記載の情報分散記憶システム。
【請求項７】
前記コストは、前記情報受信装置に対する単位時間あたりのアクセス頻度である、請求項６記載の情報分散記憶システム。
【請求項８】
前記コストは、前記情報受信装置を担当する前記情報記憶装置において増加する処理量である、請求項６記載の情報分散記憶システム。
【請求項９】
前記第１の対応表は、前記情報送信装置の変更、又は前記情報受信装置が要求するデータの種類を変更する場合に更新される、請求項２記載の情報分散記憶システム。
【請求項１０】
前記第２の対応表は、前記情報受信装置の変更、又は前記情報記憶装置の変更をする場合に更新される、請求項２記載の情報分散記憶システム。
【請求項１１】
前記第１の対応表は、前記情報受信装置により、前記第２の対応表と関連付けられている、請求項２記載の情報分散記憶システム。
【請求項１２】
情報送信装置および情報受信装置との間でデータ通信が可能な複数の情報記憶装置を具備する情報分散記憶システムの各情報記憶装置が実行する情報分散記憶方法であって、
前記複数の情報記憶装置間で共有される、情報受信装置と当該情報受信装置が取得するデータの種類を示す識別子とを対応付ける第１の対応表と、情報記憶装置と当該情報記憶装置が担当する情報受信装置との対応関係を示す第２の対応表とに基づいて、前記情報送信装置から送信されるデータの中から、自らが担当する情報受信装置に対応付けられている識別子とともに送信されるデータを取得する過程と、
前記取得されたデータを記憶させる過程と
を備える情報分散記憶方法。
【請求項１３】
コンピュータに請求項１２に記載の情報分散記憶方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データを分散記憶させる情報分散記憶システム、方法およびプログラムに関する。
【背景技術】
【０００２】
近年注目されているＩｏＴシステムでは、例えば、多種多数のセンサデバイスから送信されたデータを漏らさず蓄積し、蓄積されたデータから任意のデータを任意のタイミングで読み出すことを可能にする基盤ソフトウェアが必要とされる。【０００３】
ＩｏＴシステムにおいてセンサデバイスから送信されるデータは、サイズの小さなデータが高頻度で送信されるものが多い。したがって、このようなデータは、ＭＱＴＴ（Message Queueing Telemetry Transport）に代表されるような軽量なPublisher - Subscriberモデルのメッセージングプロトコルにより、集約を行う基盤ソフトウェアへと送信されることが一般的である。【０００４】
ところで、センサデバイスには永続化領域が無く、また周囲に作業要員が常駐しないことが予想される。したがって、基盤ソフトウェアではデータを継続的に漏れなく記憶領域に書き込む必要があり、そのためには、基盤ソフトウェアが耐故障性を保証できることが望ましい（例えば、非特許文献１を参照）。【０００５】
また、ＩｏＴシステムでは、従来インターネットにつながっていなかったデバイスが段階的にネットワークに接続していくことが見込まれ、さらに、呼を発する主体はユーザ単位ではなくデバイス単位である。したがって、スモールスタートから大規模なシステムへと徐々に拡張可能なスケールアウト性を有するシステムであることが望ましい（例えば、非特許文献２を参照）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】平賀弘平, and 建部修見. "分散ファイルシステムにおけるメタデータサーバの冗長化手法の検討." 研究報告ハイパフォーマンスコンピューティング (HPC) 2011.37 (2011): 1-7.
【非特許文献２】近藤直樹, et al. "Fat-Btree, P-tree, SkipGraph を用いた範囲問合せ性能の比較実験." 研究報告 情報基礎とアクセス技術 (IFAT) 2011.15 (2011): 1-8.
【発明の概要】
【０００７】
一般的な分散データベースは、データを分散記憶させる際に、上述した耐故障性を有することを目的として、同一のデータを複数の情報記憶装置にそれぞれ記憶させてデータの冗長性を担保している。
【０００８】
非特許文献１に記載されるような従来の分散データベースでは、データの冗長性を担保するために、データを受信した情報記憶装置が、実際にデータを記憶させる複数の情報記憶装置を定めてデータを複製し送信する。ところが、このような分散データベースでは、データを複製しその複製データを送受信する処理が必要となるので、非分散データベースと比較すると、単一情報記憶装置あたりの書き込み性能が低下してしまうという問題がある。
【０００９】
この発明は上記事情に着目してなされたもので、その目的とするところは、情報記憶装置間でのデータの複製や送受信を必要とすることなく、情報送信装置から送信されるデータを分散記憶させることができる情報分散記憶システム、方法およびプログラムを提供することにある。
【００１０】
上記課題を解決するために、この発明の第１の態様は、情報送信装置および情報受信装置との間でデータ通信が可能な複数の情報記憶装置を具備する情報分散記憶システムにあって、前記複数の情報記憶装置の各々が、前記複数の情報記憶装置間で共有される、情報受信装置と当該情報受信装置が取得するデータの種類を示す識別子とを対応付ける第１の対応表と、情報記憶装置と当該情報記憶装置が担当する情報受信装置との対応関係を示す第２の対応表とに基づいて、前記情報送信装置から送信されるデータの中から、自らが担当する情報受信装置に対応付けられている識別子とともに送信されるデータを取得するデータ取得部と、前記取得されたデータを記憶する記憶媒体とを備えるようにしたものである。
【００１１】
この発明の第２の態様は、前記複数の情報記憶装置の各々がさらに、情報受信装置からのデータ要求を取得する要求取得部と、前記取得されたデータ要求が前記担当する情報受信装置からのものであるか否かを判定する判定部と、前記取得されたデータ要求が前記担当する情報受信装置からのものであると判定された場合に、前記担当する情報受信装置に対して、前記記憶媒体に記憶されたデータを出力する出力部とを具備し、前記判定部は、前記取得されたデータ要求が前記担当する情報受信装置からのものではないと判定された場合に、前記第２の対応表に基づいて、当該データ要求の送信元の情報受信装置を担当する情報記憶装置を判定し、前記データ要求の送信元の情報受信装置を担当する情報記憶装置であると判定された情報記憶装置の記憶媒体に記憶されたデータを取得する中継部をさらに具備し、前記出力部は、前記中継部を介して取得されたデータを、前記データ要求の送信元の情報受信装置に出力するようにしたものである。
【００１２】
この発明の第３の態様は、前記情報分散記憶システムが、前記複数の情報記憶装置間で共有される前記第１の対応表または前記第２の対応表の初期設定またはデータアクセスを実行する管理装置をさらに具備するようにしたものである。
【００１３】
この発明の第４の態様は、前記複数の情報記憶装置の各々が、情報受信装置が追加される際に、前記第２の対応表において、前記追加される情報受信装置を情報記憶装置に対応付けずに記憶させる対応表更新部と、前記第２の対応表を参照して、情報記憶装置が対応付けられていない情報受信装置の中から、担当する情報受信装置を選択する選択部とを具備し、前記対応表更新部は、前記第２の対応表において、前記選択された情報受信装置に対応付けられたことを記憶させる対応表更新部とを備えるようにしたものである。
【００１４】
この発明の第５の態様は、前記第２の対応表が、各情報記憶装置について、情報受信装置との対応付けがされた時刻もさらに記憶しており、前記複数の情報記憶装置の各々が、前記第２の対応表を参照して、前記担当する情報受信装置を担当する他の情報記憶装置に関して記憶されている時刻について、当該時刻が記憶されてから所定の時間が経過しているか否かを判定する対応表監視部と、前記時刻が記憶されてから所定の時間が経過していると判定された場合に、前記第２の対応表において、当該判定をされた情報記憶装置についての情報受信装置との対応付けを削除し、、前記第２の対応表において、自らの情報記憶装置に関して記憶されている時刻を更新する対応表更新部とをさらに備えるようにしたものである。
【００１５】
この発明の第６の態様は、前記複数の情報記憶装置の各々が、前記第２の対応表において、情報記憶装置毎に、担当する情報受信装置のコストの合計値を算出する算出部をさらに備え、前記情報分散記憶システムに情報記憶装置が追加される際に、前記追加される情報記憶装置が、前記算出されたコストの合計値が最も大きい情報記憶装置が担当する情報受信装置のうちコストが最も大きい情報受信装置を、担当する情報受信装置として選択する選択部と、前記第２の対応表において、前記選択された情報受信装置に対応付けられたことを記憶させる対応表更新部とをさらに備えるようにしたものである。
【００１６】
また、次のような付加的な態様も考えられる。  
その第１の付加的な態様は、上記第６の態様において前記第２の対応表に対応付けを記憶させた後に、前記追加される情報記憶装置が、前記算出されたコストの合計値が最も大きい情報記憶装置に通知するようにしたものである。
【００１７】
第２の付加的な態様は、上記第６の態様において前記第２の対応表に対応付けを記憶させた後に、前記追加される情報記憶装置が、自らに対応付けられている情報受信装置のコストの合計値を算出し、算出されたコストの合計値が所定の値を超えたか否かを判定するようにしたものである。
【００１８】
この発明の第１の態様によれば、複数の情報記憶装置の各々において、複数の情報記憶装置間で共有される、情報受信装置と当該情報受信装置が取得するデータの種類を示す識別子とを対応付ける第１の対応表と、情報記憶装置と当該情報記憶装置が担当する情報受信装置との対応関係を示す情報とに基づいて、自らが担当する情報受信装置に対応付けられている識別子とともに送信されるデータが取得され、当該取得されたデータが記憶される。すなわち、各情報記憶装置が、取得すべきデータを自律的に取得し蓄積する。
【００１９】
このように、各情報記憶装置が自律的にデータを取得できるようにすることにより、情報記憶装置間でのデータの複製や送受信を必要とすることなく、複数の情報記憶装置間でデータを分散記憶させることができる。これにより、データ記憶時における単一情報記憶装置あたりの書き込み性能の低下が防がれた情報分散記憶システムを実現することができる。
【００２０】
また、例えば、上述した情報記憶装置と当該情報記憶装置が担当する情報受信装置との対応関係を示す情報において、１つの情報受信装置を２つ以上の情報記憶装置が担当するように設定すれば、複数の情報記憶装置間でデータの冗長性を担保することができ、情報分散記憶システムの耐故障性が保証される。
【００２１】
この発明の第２の態様によれば、複数の情報記憶装置の各々において、情報受信装置からのデータ要求が取得され、当該取得されたデータ要求が上記担当する情報受信装置からのものであるか否かが判定される。そして、その判定の結果、データ要求が上記担当する情報受信装置からのものである場合に、上記担当する情報受信装置に対して、上記記憶されたデータが出力される。一方、データ要求が上記担当する情報受信装置からのものではない場合には、複数の情報記憶装置間で共有される、情報受信装置と当該情報受信装置を担当する情報記憶装置とを対応付ける第２の対応表に基づいて、上記データ要求の送信元の情報受信装置を担当する情報記憶装置が判定される。その後、上記データ要求の送信元の情報受信装置を担当する情報記憶装置であると判定された情報記憶装置に記憶されたデータが取得され、上記データ要求の送信元の情報受信装置に出力される。したがって、情報受信装置は、いずれの情報記憶装置にアクセスしたとしても、所望のデータを取得することができる。
【００２２】
この発明の第３の態様によれば、管理装置によって、上記複数の情報記憶装置間で共有される第１の対応表または第２の対応表の初期設定またはデータアクセスが実行される。したがって、管理装置によって、複数の情報記憶装置に共有される情報の一括管理、すなわち、情報分散記憶システムの一括管理をすることができる。
【００２３】
この発明の第４の態様によれば、情報受信装置が追加される際に、複数の情報記憶装置の各々において、追加される情報受信装置が特定の情報記憶装置と対応付けされずに第２の対応表に記憶される。その後、複数の情報記憶装置の各々において、第２の対応表が参照され、情報記憶装置が対応付けられていない情報受信装置の中から、担当する情報受信装置が選択され、第２の対応表において、当該選択された情報受信装置に対応付けられたことが記憶される。
【００２４】
したがって、第４の態様によれば、システムに情報受信装置を追加可能なスケールアウト性を、当該スケールアウト実行時に情報記憶装置間でデータの送受信を必要とすることなく持たせることができる。これにより、スケールアウト性を有し、かつ、スケールアウト実行時にも単一情報記憶装置あたりの書き込み性能の低下が防がれた情報分散記憶システムを実現することができる。
【００２５】
なお、例えば非特許文献２に記載されるような、システム拡張が可能なスケールアウト性を有する従来のデータベースでは、キーに対するハッシュを用い、ツリー構造によりハッシュ値の範囲またはツリーの部分木により分割統治を行うのが一般的である。このような方式の場合、データベースの内部で、情報送信装置から送信されるデータを解析し、情報を書き込むべき情報記憶装置を探索し、その結果に基づいて、対象となる情報記憶装置に書き込みを行う。このように、非特許文献２に記載されるような従来の技術では、複数の情報記憶装置間で情報を送受信する処理が必要となるので、非分散データベースと比較すると、一回の書き込みに対する仕事量が情報記憶装置の数に比例して増大し、単一情報記憶装置あたりの書き込み性能が低下する。すなわち、上記第４の態様は従来技術に対して上述したような利点がある。
【００２６】
この発明の第５の態様によれば、複数の情報記憶装置の各々において、第２の対応表が参照され、自らが担当する情報受信装置を担当する他の情報記憶装置に関して記憶されている時刻について、当該時刻が記憶されてから所定の時間が経過しているか否かが判定される。そして、その判定の結果、時刻が記憶されてから所定の時間が経過している場合には、複数の情報記憶装置の各々において、第２の対応表において、上記時間が経過した情報記憶装置と情報受信装置との対応付けが削除され、一方で自らの情報記憶装置に関して記憶されている時刻が更新される。
【００２７】
一般に、正常に動作することを確認されていた情報記憶装置であっても、運用時間が経過するにしたがい、何らかの原因により正常に動作しなくなる可能性がある。しかしながら、上記第５の態様のように、時間を基準に、情報受信装置に対して対応付けられていた情報記憶装置についての対応付けを削除することによって、正常に動作をしていない情報記憶装置が情報受信装置を担当し続けるといった不具合を防ぐことができ、これにより情報分散記憶システム全体の信頼性を向上させることができる。
【００２８】
また、上述したような対応表の監視処理を実行した情報記憶装置については、監視処理と同時に動作確認がされる。したがって、上述したように第２の対応表において時刻を更新することによって、正常に動作している情報記憶装置の対応付けまでが削除されて情報分散記憶の効率が低下してしまうことを防ぐことができる。
【００２９】
この発明の第６の態様によれば、複数の情報記憶装置の各々において、第２の対応表において、情報記憶装置毎に、担当する情報受信装置のコストの合計値が算出される。そして、情報分散記憶システムに情報記憶装置が追加される際に、追加される情報記憶装置において、算出されたコストの合計値が最も大きい情報記憶装置が担当する情報受信装置のうちコストが最も大きい情報受信装置が、担当する情報受信装置として選択され、当該選択された情報受信装置に対応付けられたことが第２の対応表に記憶される。
【００３０】
したがって、システムに情報記憶装置を追加可能なスケールアウト性を、当該スケールアウト実行時に情報記憶装置間でデータの送受信を必要とすることなく持たせることができる。これにより、スケールアウト性を有し、かつ、スケールアウト実行時にも単一情報記憶装置あたりの書き込み性能の低下が防がれた情報分散記憶システムを実現することができる。
【００３１】
さらに、上記第１の付加的な態様によれば、上記第６の態様において第２の対応表に対応付けを記憶させた後に、上記追加される情報記憶装置により、上記算出されたコストの合計値が最も大きい情報記憶装置に通知がなされる。このため、当該通知を受けた情報記憶装置は、上記追加される情報記憶装置が担当することとなった情報受信装置との対応付けを開放し、以後、当該対応付けを解放された情報受信装置に対するデータを取得しないようにすることができる。これにより、負荷が大きかった情報記憶装置の負荷を軽減させることができる。
【００３２】
上記第２の付加的な態様によれば、上記第６の態様において第２の対応表に対応付けを記憶させた後に、上記追加される情報記憶装置において、自らに対応付けられている情報受信装置のコストの合計値が算出され、算出されたコストの合計値が所定の値を超えたか否かが判定される。このため、当該判定結果に応じて、追加で情報受信装置を担当するようにすることもでき、例えば、情報記憶装置間で負荷の均一化を図ることが可能となる。
【００３３】
すなわちこの発明の各態様によれば、情報記憶装置間でのデータの複製や送受信を必要とすることなく、情報送信装置から送信されるデータを分散記憶させることができる情報分散記憶システム、方法およびプログラムを提供することができる。
【図面の簡単な説明】
【００３４】
【図１】この発明の第１の実施形態に係るネットワークシステムの概略構成図。
【図２Ａ】図１に示したネットワークシステム中の情報記憶装置の機能構成を示すブロック図。
【図２Ｂ】図２Ａに示した設定共有部の詳細な機能構成を示すブロック図。
【図３】設定管理装置および複数の情報記憶装置の間で共有される、情報受信装置と当該情報受信装置が取得するデータの種類を示す識別子とを対応付ける第１の対応表の一例を示す図。
【図４】設定管理装置および複数の情報記憶装置の間で共有される、情報受信装置と当該情報受信装置を担当する情報記憶装置とを対応付ける第２の対応表の一例を示す図。
【図５】図２に示した情報記憶装置の制御ユニットによって実行されるデータ書き込み処理の一例を示すフロー図。
【図６】図２に示した情報記憶装置の制御ユニットによって実行されるデータ要求応答処理の一例を示すフロー図。
【図７】図１に示したネットワークシステムに情報受信装置が追加される際に、図２に示した情報記憶装置の制御ユニットによって実行される、担当する情報受信装置の選択処理の一例を示すフロー図。
【図８】図２に示した情報記憶装置の制御ユニットによって実行される対応表監視処理の一例を示すフロー図。
【図９】図８に示した対応表監視処理に伴い、第２の対応表が更新される様子を示す図。
【図１０】図１に示したネットワークシステムに情報記憶装置が追加される際に、図２に示した情報記憶装置の制御ユニットによって実行される、担当する情報受信装置の選択処理の一例を示すフロー図。
【図１１】図１０に示した担当する情報受信装置の選択処理に伴い、第２の対応表が更新される様子を示す図。
【発明を実施するための形態】
【００３５】
以下、図面を参照してこの発明に係わる実施形態を説明する。  
［第１の実施形態］
（構成）
図１は、この発明の第１の実施形態に係るネットワークシステムの概略構成図である。  
図１に示すネットワークシステムは、例えばＩｏＴシステムにおいて使用されるPublisher - Subscriberモデルのように、データ通信が可能な状態で、例えばセンサデバイスであるデータ送信側の情報送信装置２Ａ，２Ｂ，２Ｃ，２Ｄ，２Ｅ，２Ｆおよびブローカ３と、送信データを記憶する情報分散記憶システムとしての情報記憶装置１Ａ，１Ｂ，１Ｃ，１Ｄおよび設定管理装置５とを備えており、さらに、例えばアプリケーションであるデータ受信側の情報受信装置４Ａ，４Ｂ，４Ｃ，４Ｄを備えている。なお、図１に図示されるネットワークシステムは一例に過ぎず、ネットワークシステムでは、各々１つ以上の任意の数の情報送信装置および情報受信装置が存在していてもよく、また、２つ以上の任意の数の情報記憶装置が存在していてもよい。
【００３６】
設定管理装置５および情報記憶装置１Ａ，１Ｂ，１Ｃ，１Ｄは各々、情報受信装置と当該情報受信装置が取得するデータの種類を示す識別子とを対応付ける第１の対応表と、情報受信装置と当該情報受信装置を担当して当該情報受信装置に対するデータを記憶する情報記憶装置とを対応付ける第２の対応表とを記憶している。上記第１および第２の対応表は、設定管理装置５および情報記憶装置１Ａ，１Ｂ，１Ｃ，１Ｄの間で同期した状態で共有される。なお、上記第１の対応表および第２の対応表は、例えば、設定管理装置５においてオペレータにより初期設定される。
【００３７】
情報記憶装置１Ａ，１Ｂ，１Ｃ，１Ｄは各々、第１の対応表に基づいて、情報受信装置４Ａ，４Ｂ，４Ｃ，４Ｄのうちの担当する情報受信装置毎に、情報送信装置２Ａ，２Ｂ，２Ｃ，２Ｄ，２Ｅ，２Ｆから送信されるデータの中から、当該担当する情報受信装置が取得するデータを記憶する。１つの情報受信装置を２つ以上の情報記憶装置によって担当するようにする場合には、当該情報受信装置が取得するデータを分割および複製して情報記憶装置間で分散記憶する。
【００３８】
一方、情報記憶装置１Ａ，１Ｂ，１Ｃ，１Ｄは各々、情報受信装置４Ａ，４Ｂ，４Ｃ，４Ｄからのデータ要求に応じ、上記第２の対応表に基づいて、必要に応じて情報記憶装置１Ａ，１Ｂ，１Ｃ，１Ｄ間でデータの送受信を行い、各情報受信装置４Ａ，４Ｂ，４Ｃ，４Ｄから要求されるデータを出力する。
【００３９】
（１）情報記憶装置
図２Ａは、図１に示した情報記憶装置１Ａの機能構成を示すブロック図である。以下では情報記憶装置１Ａの機能構成について説明するが、情報記憶装置１Ｂ，１Ｃ，１Ｄ等の他の情報記憶装置も同様の機能構成を有している。なお、図２Ａでは参照のために、実線の矢印によりデータの入出力を示しており、破線の矢印により、第１の対応表および第２の対応表に係る設定情報の入出力を示している。
【００４０】
情報記憶装置１Ａは、制御ユニット１１Ａと、記憶ユニット１２Ａと、通信インタフェースユニット１３Ａとを備えている。
【００４１】
通信インタフェースユニット１３Ａは、例えば１つ以上の有線または無線の通信インタフェースユニットを含んでいる。通信インタフェースユニット１３Ａは、制御ユニット１１Ａから出力される、例えばデータの種類を示す識別子を有するデータ要求を取得し、当該データ要求を通信ネットワークを介してブローカ３に出力する。その後、通信インタフェースユニット１３Ａは、情報送信装置２Ａ，２Ｂ，２Ｃ，２Ｄ，２Ｅ，２Ｆから送信されるデータの中から、上記識別子とともに送信されるデータを、通信ネットワークを介してブローカ３から取得し、取得されたデータを制御ユニット１１Ａに出力する。
【００４２】
また、通信インタフェースユニット１３Ａは、情報受信装置４Ａ，４Ｂ，４Ｃ，４Ｄから送信されるデータ要求を、通信ネットワークを介して取得し、取得されたデータ要求を制御ユニット１１Ａに出力する。その後、通信インタフェースユニット１３Ａは、制御ユニット１１Ａから出力されるデータを、通信ネットワークを介して当該データ要求の送信元の情報受信装置に送信する。また、通信インタフェースユニット１３Ａは、情報記憶装置１Ｂ，１Ｃ，１Ｄ等の他の情報記憶装置とのデータおよび設定情報の送受信や、設定管理装置５との設定情報の送受信も実行する。
【００４３】
記憶ユニット１２Ａは、記憶媒体として例えばＨＤＤ（Hard Disk Drive）またはＳＳＤ（Solid State Drive）等の随時書き込みおよび読み出しが可能な不揮発メモリを使用したものであり、本実施形態を実現するために使用される記憶領域として、データ記憶部１２１Ａと、共有設定記憶部１２２Ａとを備えている。
【００４４】
データ記憶部１２１Ａは、自らの情報記憶装置が担当する情報受信装置毎に、ブローカ３から取得されるデータを記憶させるために使用される。
【００４５】
共有設定記憶部１２２Ａは、情報記憶装置１Ａ，１Ｂ，１Ｃ，１Ｄおよび設定管理装置５によって共有される、情報受信装置と当該情報受信装置が取得するデータの種類を示す識別子とを対応付ける第１の対応表を記憶させるために使用される。また、共有設定記憶部１２２Ａは、情報記憶装置１Ａ，１Ｂ，１Ｃ，１Ｄおよび設定管理装置５によって共有される、情報受信装置と当該情報受信装置を担当する情報記憶装置とを対応付ける第２の対応表を記憶させるために使用される。
【００４６】
制御ユニット１１Ａは、ＣＰＵ（Central Processing Unit）等のハードウェアプロセッサと、プログラムメモリとを備え、本実施形態における処理機能を実行するために、データ書き込み部１１１Ａと、データ出力部１１２Ａと、中継判定部１１３Ａと、中継部１１４Ａと、設定共有部１１５Ａとを備えている。これらの各部における処理機能はいずれも、プログラムメモリに格納されたプログラムを上記ハードウェアプロセッサに実行させることによって実現される。
【００４７】
データ書き込み部１１１Ａは、記憶ユニット１２Ａの共有設定記憶部１２２Ａに記憶される、情報受信装置と当該情報受信装置が取得するデータの種類を示す識別子とを対応付ける第１の対応表を読み出す処理を実行する。その後、データ書き込み部１１１Ａは、予め設定された、情報記憶装置と当該情報記憶装置が担当する情報受信装置との対応関係を示す情報と、第１の対応表とに基づいて、自らの情報記憶装置１Ａが担当する情報受信装置に対応付けられている識別子を含むデータ要求を、通信インタフェースユニット１３Ａを介してブローカ３に出力する処理を実行する。
【００４８】
その後、データ書き込み部１１１Ａは、情報送信装置２Ａ，２Ｂ，２Ｃ，２Ｄ，２Ｅ，２Ｆから送信されるデータの中から、上記識別子とともに送信されるデータを、通信インタフェースユニット１３Ａを介してブローカ３から取得し、取得されたデータを、担当する情報受信装置毎に、記憶ユニット１２Ａのデータ記憶部１２１Ａに記憶させる処理を実行する。なお、他の情報記憶装置１Ｂ，・・・，１Ｄが、情報記憶装置１Ａが担当する情報受信装置に対するデータを第１の対応表に基づいて取得するようにしてもよく、データ書き込み部１１１Ａは、当該データを取得した情報記憶装置から当該データを取得し、記憶ユニット１２Ａのデータ記憶部１２１Ａに記憶させるようにしてもよい。
【００４９】
なお、上述した情報記憶装置と当該情報記憶装置が担当する情報受信装置との対応関係を示す情報は、例えば、設定管理装置５によって予め選択された対応関係を示す情報であってもよく、あるいは、制御ユニット１１Ａの設定共有部１１５Ａにおいて選択された対応関係を示す情報であってもよい。また、上述した情報記憶装置と当該情報記憶装置が担当する情報受信装置との対応関係を示す情報は、情報記憶装置１Ｂ，１Ｃ，１Ｄ等の他の情報記憶装置についての対応関係も含むものであってもよい。
【００５０】
中継判定部１１３Ａは、情報受信装置４Ａ，４Ｂ，４Ｃ，４Ｄ等の任意の情報受信装置から当該情報受信装置を示す識別子とともに送信されるデータ要求を、通信インタフェースユニット１３Ａを介して取得する処理を実行する。なお、以下では、例として情報受信装置４Ａからデータ要求が取得されたものとして説明する。
【００５１】
その後、中継判定部１１３Ａは、取得されたデータ要求が、自らの情報記憶装置１Ａが担当する情報受信装置から送信されたものであるか否かを判定する処理を実行する。例えば、当該判定処理は、上述した情報記憶装置と当該情報記憶装置が担当する情報受信装置との対応関係を示す情報に基づくものであってもよい。あるいは、当該判定処理は、記憶ユニット１２Ａの共有設定記憶部１２２Ａに記憶される、情報受信装置と当該情報受信装置を担当する情報記憶装置とを対応付ける第２の対応表に基づくものであってもよい。中継判定部１１３Ａは、取得されたデータ要求が、自らの情報記憶装置１Ａが担当する情報受信装置からのものではないと判定された場合には、記憶ユニット１２Ａの共有設定記憶部１２２Ａに記憶される第２の対応表に基づいて、当該データ要求の送信元の情報受信装置４Ａを担当する情報記憶装置を判定する処理を実行する。なお、以下では、例として情報記憶装置１Ｂが、当該データ要求の送信元の情報受信装置４Ａを担当する情報記憶装置であると判定されたものとして説明する。
【００５２】
中継部１１４Ａは、取得されたデータ要求が、自らの情報記憶装置１Ａが担当する情報受信装置からのものではないと判定された場合に、当該データ要求の送信元の情報受信装置４Ａを担当する情報記憶装置であると判定された情報記憶装置１Ｂに対し、通信インタフェースユニット１３Ａを介して、当該データ要求を出力する処理を実行する。その後、中継部１１４Ａは、通信インタフェースユニット１３Ａを介して、情報記憶装置１Ｂのデータ記憶部１２１Ｂに記憶されたデータを取得する処理を実行する。例えば、当該取得されるデータを、記憶ユニット１２Ａに記憶させるようにしてもよい。なお、中継先である情報記憶装置１Ｂに対して、上記データ要求を出力する代わりに、情報記憶装置１Ｂのデータ記憶部１２１Ｂに記憶されている情報受信装置４Ａに対するデータを送信させるための指示を出力するようにしてもよい。
【００５３】
データ出力部１１２Ａは、取得されたデータ要求が、自らの情報記憶装置１Ａが担当する情報受信装置からのものではないと判定された場合には、中継部１１４Ａにおける処理によって取得されたデータを、通信インタフェースユニット１３Ａを介して情報受信装置４Ａに対して出力する処理を実行する。一方、データ出力部１１２Ａは、取得されたデータ要求が、自らの情報記憶装置１Ａが担当する情報受信装置からのものであると判定された場合には、記憶ユニット１２Ａのデータ記憶部１２１Ａに記憶される、データ要求の送信元の情報受信装置４Ａに対するデータを読み出す処理を実行する。その後、データ出力部１１２Ａは、読み出されたデータを通信インタフェースユニット１３Ａを介して情報受信装置４Ａに対して出力する処理を実行する。
【００５４】
設定共有部１１５Ａは、設定管理装置５によって実行された、設定管理装置５の共有設定記憶部５２１に記憶される第１の対応表あるいは第２の対応表における初期設定またはデータアクセスに応じて、記憶ユニット１２Ａの共有設定記憶部１２２Ａに記憶される第１の対応表および第２の対応表を同期する処理を実行する。
【００５５】
さらに、設定共有部１１５Ａは、記憶ユニット１２Ａの共有設定記憶部１２２Ａに記憶される第１の対応表あるいは第２の対応表が更新された場合に、設定管理装置５および情報記憶装置１Ｂ，１Ｃ，１Ｄ等において記憶される第１の対応表および第２の対応表を同期させるための設定情報を、通信インタフェースユニット１３Ａを介して出力する処理を実行する。
【００５６】
図２Ｂは、設定共有部１１５Ａの詳細な機能構成を示すブロック図である。設定共有部１１５Ａは、担当装置選択部１１５１Ａと、対応表監視部１１５２Ａと、対応表更新部１１５３Ａとを備えている。
【００５７】
担当装置選択部１１５１Ａは、自らの情報記憶装置１Ａが担当する情報受信装置を選択する処理を実行する。例えば、当該選択処理は、記憶ユニット１２Ａの共有設定記憶部１２２Ａに記憶される第２の対応表を参照して実行するようにしてもよい。なお、担当装置選択部１１５１Ａは、自らの情報記憶装置１Ａ以外の他の情報記憶装置が担当する情報受信装置を選択する処理を実行してもよい。
【００５８】
対応表監視部１１５２Ａは、記憶ユニット１２Ａの共有設定記憶部１２２Ａに記憶される第２の対応表を監視する処理を実行する。
【００５９】
対応表更新部１１５３Ａは、自らの情報記憶装置１Ａと、担当装置選択部１１５１Ａまたは設定管理装置５において選択された情報受信装置との対応付けを、データ書き込み部１１１Ａにおけるデータ書き込み処理が完了した以後に、記憶ユニット１２Ａの共有設定記憶部１２２Ａに記憶される第２の対応表に書き込む更新処理を実行する。さらに、対応表更新部１１５３Ａは、対応表監視部１１５２Ａにおける監視処理にしたがって、記憶ユニット１２Ａの共有設定記憶部１２２Ａに記憶される第２の対応表を更新する処理も実行する。
【００６０】
（２）対応表
図３は、設定管理装置５および情報記憶装置１Ａ，１Ｂ，１Ｃ，１Ｄの間で共有される、情報受信装置と当該情報受信装置が取得するデータの種類を示す識別子とを対応付ける第１の対応表の一例を示す図である。図３に示す第１の対応表の例では、情報受信装置４Ａ，４Ｂ，４Ｃ，４Ｄを示す識別子に各々が対応するエンドポイント＃１，＃２，＃３，＃４と、データの種類を示す識別子に対応するトピック＃１，＃２，＃３，＃４との対応付けが記憶されている。
【００６１】
図４は、設定管理装置５および情報記憶装置１Ａ，１Ｂ，１Ｃ，１Ｄの間で共有される、情報受信装置と当該情報受信装置を担当する情報記憶装置とを対応付ける第２の対応表の一例を示す図である。図４に示す第２の対応表の例では、情報受信装置４Ａ，４Ｂ，４Ｃ，４Ｄを示す識別子に各々が対応するエンドポイント＃１，＃２，＃３，＃４と、情報記憶装置１Ａ，１Ｂ，１Ｃ，１Ｄとの対応付けが記憶されている。
【００６２】
また、図４に示す第２の対応表の例では、情報記憶装置１Ａ，１Ｂ，１Ｃ，１Ｄについて、いずれかのエンドポイントと対応付けられた直近の時刻を記憶しており、また、各エンドポイントについて、情報記憶装置との対応付けを待ち受けていることを示す待ち受け中フラグを記憶することができる。さらに、図４に示す第２の対応表の例では、各エンドポイントについてコストが記憶されている。当該エンドポイントのコストは、例えば、当該エンドポイントに対する単位時間あたりのアクセス頻度、当該エンドポイントを担当することにより情報記憶装置において増加する単位時間あたりの処理量を表すものである。
【００６３】
（動作）
次に、以上のように構成された情報記憶装置１Ａ，１Ｂ，１Ｃ，１Ｄ等の情報記憶装置の動作を説明する。  
以下では、例として、情報記憶装置１Ａを主体とした動作について説明するが、以下に説明する動作フローの任意のステップを、情報記憶装置１Ａ以外の他の任意の情報記憶装置によって実行してもよい。また、例として、以下で説明する動作フローでは、図３に示した第１の対応表、および、図４に示した第２の対応表を利用するものとして説明する。さらに、図３および図４において、情報受信装置４Ａ，４Ｂ，４Ｃ，４Ｄを示す識別子にエンドポイント＃１，＃２，＃３，＃４の各々が対応すると説明したように、以下の説明では、情報受信装置４Ａとエンドポイント＃１、情報受信装置４Ｂとエンドポイント＃２、情報受信装置４Ｃとエンドポイント＃３、および、情報受信装置４Ｄとエンドポイント＃４をそれぞれ、同義のものとして説明している。
【００６４】
（１）データ書き込み処理
図５は、図２に示した情報記憶装置１Ａの制御ユニット１１Ａによって実行されるデータ書き込み処理の一例を示すフロー図である。
【００６５】
最初に、ステップＳ１１において、制御ユニット１１Ａは、データ書き込み部１１１Ａの制御の下、予め設定された、情報記憶装置と当該情報記憶装置が担当するエンドポイントとの対応関係を示す情報に基づいて、自らの情報記憶装置１Ａが担当するエンドポイントを判定する。以下では、エンドポイント＃１が、自らの情報記憶装置１Ａが担当するエンドポイントとして判定された場合について説明する。
【００６６】
なお、上述した情報記憶装置と当該情報記憶装置が担当するエンドポイントとの対応関係を示す情報は、例えば、設定管理装置５によって予め選択された対応関係を示す情報であってもよく、あるいは、制御ユニット１１Ａの設定共有部１１５Ａにおいて選択された対応関係を示す情報であってもよい。
【００６７】
また、例えば、設定管理装置５によって、例えば、エンドポイントと当該エンドポイントを担当することになる情報記憶装置を予め対応付けるように第２の対応表が初期設定されているような場合には、上述した情報記憶装置と当該情報記憶装置が担当するエンドポイントとの対応関係を示す情報は、当該第２の対応表からの情報であってもよい。
【００６８】
ステップＳ１２において、制御ユニット１１Ａは、データ書き込み部１１１Ａの制御の下、共有設定記憶部１２２Ａに記憶される、エンドポイントと当該エンドポイントが取得するデータの種類を示す識別子とを対応付ける第１の対応表を読み出す。そして、この第１の対応表に基づいて、制御ユニット１１Ａは、データ書き込み部１１１Ａの制御の下、情報送信装置２Ａ，２Ｂ，２Ｃ，２Ｄ，２Ｅ，２Ｆから送信されるデータの中から、担当するエンドポイント＃１に対応付けられているトピック＃２を示す識別子とともに送信されるデータをブローカ３から取得し、取得されたデータを記憶ユニット１２Ａのデータ記憶部１２１Ａに記憶させる。
本技術の特徴の１つは、第１の対応表で、受信装置を表すエンドポイントと、受信装置が要求する、データを生成するセンサや機器ごとの抽象的なデータの種類や構造を表す識別子であるトピックとの対応関係を記憶し、第２の対応表で、受信装置を表すエンドポイントと、その受信装置が要求するデータを記憶する具体的な情報記憶装置の対応関係を記憶し、さらに対応表１，２を関連付けることである。
データ書き込み処理の中で、データを記憶する情報記憶装置の分担を決定する処理では、ＩｏＴシステムに追加・削除される具体的なデータ生成装置の情報を気にする必要がなく、受信装置と情報記憶装置の対応関係の情報だけに基づいて第２の対応表を更新・メンテナンスするだけで、自動的にデータ蓄積を担当する記憶装置を決定することができるため、単純な仕組みで分散保存の仕組みを維持することができる。
また、ＩｏＴシステムにデータ生成機器を新たに追加したり、情報受信装置が要求するデータの種類を変更する場合には、第１の対応表を更新することで、情報記憶装置の構成を気にすることなく、接続するデータ生成機器やデータ受信装置の要求するデータの変更を反映することが可能となる。
データ生成機器の変更や受信装置の要求するデータの種類の変更時には第１の対応表を更新し、受信装置や記憶装置の追加などの構成変更時には第２の対応表を参照・変更して記憶装置の分担を決定することにより、システムを構成する機器の構成変更や要求データの変更を反映しながら、単純な仕組みで自動的にデータを複数の記憶装置に分散保存することができる。
例えば、新たなセンサ等をＩｏＴシステムに接続する際の処理では第１の対応表のみをメンテナンスすればよく、新たな情報受信装置を追加する際の担当記憶装置を分散して割り当てる処理では第２の対応表のみをメンテナンスすればよいため、各処理の実装が容易になる。
さらに、第１の対応表及び第２の対応表を組み合わせることで機器の更新と分散保存の割り当てを自動化できるため、分散保存システムの維持管理の負担を小さくすることができるのが本特許の利点である。
【００６９】
なお、例えば、当該データ記憶部１２１Ａへの書き込み処理では、担当するエンドポイント毎に、当該エンドポイントに対するデータであることを一意に特定できるキーを付与して記憶させてもよい。当該キーは、すべての情報記憶装置および設定管理装置５において共通して使用できるように、例えば、第１の対応表において記憶されている。
【００７０】
ステップＳ１３において、制御ユニット１１Ａは、対応表更新部１１５３Ａの制御の下、情報記憶装置１Ａと担当するエンドポイント＃１との対応付けを、共有設定記憶部１２２Ａに記憶される第２の対応表に書き込む。その結果、図４の第２の対応表に示されているように、情報記憶装置１Ａとエンドポイント＃１とが対応付けられていることを示す○が書き込まれ、当該第２の対応表はすべての情報記憶装置および設定管理装置５の間で共有される。
【００７１】
（２）データ要求応答処理
図６は、図２に示した情報記憶装置１Ａの制御ユニット１１Ａによって実行されるデータ要求応答処理の一例を示すフロー図である。
【００７２】
最初に、ステップＳ２１において、制御ユニット１１Ａは、中継判定部１１３Ａの制御の下、情報受信装置４Ａ，４Ｂ，４Ｃ，４Ｄ等の任意の情報受信装置から、当該情報受信装置を示す識別子とともに送信されるデータ要求を取得する。
【００７３】
ステップＳ２２において、制御ユニット１１Ａは、中継判定部１１３Ａの制御の下、取得されたデータ要求が、自らの情報記憶装置１Ａが担当するエンドポイントからのものであるか否かを判定する。例えば、当該判定処理は、ステップＳ１１において説明した、情報記憶装置と当該情報記憶装置が担当するエンドポイントとの対応関係を示す情報に基づくものであってもよい。あるいは、当該判定処理は、共有設定記憶部１２２Ａに記憶される第２の対応表を参照することによって実行されるものであってもよい。
取得されたデータ要求が、例えば、自らの情報記憶装置１Ａが担当するエンドポイント＃１からのものであると判定された場合は、ステップＳ２３において、制御ユニット１１Ａは、データ出力部１１２Ａの制御の下、データ記憶部１２１Ａに記憶される当該エンドポイント＃１に対するデータを読み出し、読み出されたデータを、データ要求の送信元のエンドポイント＃１に対応する情報受信装置４Ａに対して出力する。
【００７４】
一方、取得されたデータ要求が、例えば、情報記憶装置１Ａが担当しないエンドポイント＃２からのものであると判定された場合は、ステップＳ２４において、制御ユニット１１Ａは、中継判定部１１３Ａの制御の下、共有設定記憶部１２２Ａに記憶される第２の対応表に基づいて、当該データ要求の送信元のエンドポイント＃２を担当する情報記憶装置を判定する。その後、制御ユニット１１Ａは、中継部１１４Ａの制御の下、上記データ要求の送信元のエンドポイント＃２を担当する情報記憶装置であると判定された情報記憶装置１Ｂと情報記憶装置１Ｃとの少なくとも一方に対し、当該データ要求を出力する。
【００７５】
その後、ステップＳ２５において、制御ユニット１１Ａは、中継部１１４Ａの制御の下、当該データ要求の送信元のエンドポイント＃２を担当する情報記憶装置１Ｂと情報記憶装置１Ｃとの少なくとも一方に記憶されたデータを取得する。
【００７６】
ステップＳ２６において、制御ユニット１１Ａは、データ出力部１１２Ａの制御の下、上記取得されたデータを、データ要求の送信元のエンドポイント＃２に対応する情報受信装置４Ｂに対して出力する。
【００７７】
（３）情報受信装置追加に伴う、担当する情報受信装置の選択処理
図７は、図１に示したネットワークシステムに情報受信装置が追加される際に、図２に示した情報記憶装置１Ａの制御ユニット１１Ａによって実行される、担当する情報受信装置の選択処理の一例を示すフロー図である。
【００７８】
ネットワークシステムに情報受信装置４Ｅが追加される場合に、先ずステップＳ３１において、制御ユニット１１Ａは、対応表更新部１１５３Ａの制御の下、共有設定記憶部１２２Ａに記憶される第２の対応表において、情報受信装置４Ｅに対応するエンドポイント＃５の行または列を、情報記憶装置との対応付けを記入しない状態で、待ち受け中フラグを立てて追加する。
【００７９】
なお、制御ユニット１１Ａは、対応表更新部１１５３Ａの制御の下、共有設定記憶部１２２Ａに記憶される第１の対応表において、エンドポイント＃５の行または列を追加してもよい。第１の対応表では、追加されるエンドポイント＃５に対して、例えば情報受信装置４Ｅから通知された、取得するデータの種類を示す識別子が対応付けられて記憶されてもよい。
【００８０】
続いてステップＳ３２において、制御ユニット１１Ａは、担当装置選択部１１５１Ａの制御の下、共有設定記憶部１２２Ａに記憶される第２の対応表を読み出し、待ち受け中フラグの立っているエンドポイントの中から担当するエンドポイントを選択する。当該選択処理は、例えば、待ち受け中フラグの立っているエンドポイントの中からランダムに選択するものであってもよい。
【００８１】
次にステップＳ３３において、制御ユニット１１Ａは、担当装置選択部１１５１Ａの制御の下、共有設定記憶部１２２Ａに記憶される第２の対応表において、選択されたエンドポイントが２つ以上の情報記憶装置に対応付けられているか否かを判定する。そして、選択されたエンドポイントが２つ以上の情報記憶装置に対応付けられていると判定されると、ステップＳ３２の処理が再度実行される。
【００８２】
これに対し、選択されたエンドポイントが２つ以上の情報記憶装置に対応付けられていないと判定された場合には、ステップＳ３４において、制御ユニット１１Ａは、データ書き込み部１１１Ａの制御の下、共有設定記憶部１２２Ａに記憶される第１の対応表に基づいて、情報送信装置２Ａ，２Ｂ，２Ｃ，２Ｄ，２Ｅ，２Ｆから送信されるデータの中から、選択されたエンドポイントに対応付けられている識別子とともに送信されるデータを取得する。
【００８３】
続いてステップＳ３５において、制御ユニット１１Ａは、対応表更新部１１５３Ａの制御の下、情報記憶装置１Ａと上記選択されたエンドポイントとの対応付けを、共有設定記憶部１２２Ａに記憶される第２の対応表に書き込む。
【００８４】
ステップＳ３６において、制御ユニット１１Ａは、担当装置選択部１１５１Ａの制御の下、共有設定記憶部１２２Ａに記憶される第２の対応表において、すべてのエンドポイントが２つ以上の情報記憶装置に対応付けられたか否かを判定する。２つ以上の情報記憶装置に対応付けられていないエンドポイントが存在すると判定されると、ステップＳ３２からの処理を繰り返す。
【００８５】
これに対し、すべてのエンドポイントが２つ以上の情報記憶装置に対応付けられたと判定された場合には、ステップＳ３７において、制御ユニット１１Ａは、対応表更新部１１５３Ａの制御の下、共有設定記憶部１２２Ａに記憶される第２の対応表において待ち受け中フラグを削除する。
【００８６】
（４）対応表監視処理
図８は、図２に示した情報記憶装置１Ａの制御ユニット１１Ａによって実行される対応表監視処理の一例を示すフロー図である。また、図９は、図８に示した対応表監視処理に伴い、図４に示した第２の対応表が更新される様子を示している図である。
【００８７】
最初に、ステップＳ４１において、制御ユニット１１Ａは、対応表監視部１１５２Ａの制御の下、共有設定記憶部１２２Ａに記憶される第２の対応表を参照して、担当するエンドポイント＃１を担当する他の情報記憶装置１Ｄに関して記憶されている時刻“１０３４５６８１”、および、担当するエンドポイント＃４を担当する他の情報記憶装置１Ｂに関して記憶されている時刻“１２３４５６７９”を読み出す。
【００８８】
ステップＳ４２において、制御ユニット１１Ａは、対応表監視部１１５２Ａの制御の下、図９に示されているように、読み出された時刻“１２３４５６７９”，“１０３４５６８１”の各々について、当該時刻が記憶されてから所定の時間が経過しているか否かを判定する。情報記憶装置１Ｂに関して記憶されている時刻“１２３４５６７９”は、所定の時間が経過していないと判定されるのに対して、情報記憶装置１Ｄに関して記憶されている時刻“１０３４５６８１”は、既に所定の時間が経過していると判定される。
【００８９】
ステップＳ４３において、制御ユニット１１Ａは、対応表更新部１１５３Ａの制御の下、図９に示されているように、共有設定記憶部１２２Ａに記憶される第２の対応表において、所定の時間が経過している時刻“１０３４５６８１”に関する情報記憶装置１Ｄについてのエンドポイントとの対応付けを削除し、対応付けを削除されたエンドポイント＃１，＃３に待ち受け中フラグを立てる。
【００９０】
ステップＳ４４において、制御ユニット１１Ａは、対応表更新部１１５３Ａの制御の下、共有設定記憶部１２２Ａに記憶される第２の対応表において、自らの情報記憶装置である情報記憶装置１Ａに関して記憶されている時刻“１２３４５６７８”を更新する。なお、当該更新処理は、ステップＳ４２において、読み出されたすべての時刻について所定の時間が経過していないと判定された場合にも実行するようにしてもよい。
【００９１】
ステップＳ４５において、制御ユニット１１Ａは、対応表監視部１１５２Ａの制御の下、共有設定記憶部１２２Ａに記憶される第２の対応表を参照して、担当するすべてのエンドポイントについて上述したような時刻の確認処理を実行したか否かを判定する。この判定の結果、時刻の確認処理を実行していないエンドポイントがある場合には、当該エンドポイントについて、ステップＳ４１からの処理を繰り返す。
【００９２】
なお、ステップＳ４１からステップＳ４５の処理は、例えば、情報記憶装置１Ａ，１Ｂ，１Ｃ，１Ｄの間で同期したクロックを基準に、情報記憶装置１Ａ，１Ｂ，１Ｃ，１Ｄの間で異なるタイミングで例えば定期的に実行するようにしてもよい。
【００９３】
また、ステップＳ４３において待ち受け中フラグが立てられたエンドポイントについては、図７のステップＳ３２以降の処理を各情報記憶装置において実行して、担当するエンドポイントを選択するようにしてもよい。
【００９４】
（５）情報記憶装置追加に伴う、担当する情報受信装置の選択処理
図１０は、図１に示したネットワークシステムに情報記憶装置が追加される際に、図２に示した情報記憶装置１Ａの制御ユニット１１Ａ、および、追加される情報記憶装置１Ｅの制御ユニット１１Ｅによって実行される、担当する情報受信装置の選択処理の一例を示すフロー図である。また、図１１は、図１０に示した担当する情報受信装置の選択処理に伴い、図４に示した第２の対応表が更新される様子を示している図である。
【００９５】
最初に、ステップＳ５１において、制御ユニット１１Ａは、対応表更新部１１５３Ａの制御の下、エンドポイントを担当する際に、共有設定記憶部１２２Ａに記憶される第２の対応表において、当該エンドポイントのコストを更新する。当該更新処理は、例えば、当該エンドポイントに対する単位時間あたりのアクセス頻度の通知に基づいて実行してもよく、あるいは、当該エンドポイントを担当することにより情報記憶装置において増加する単位時間あたりの処理量を計測し、当該計測された値に基づいて実行するようにしてもよい。
【００９６】
ステップＳ５２において、制御ユニット１１Ａは、対応表更新部１１５３Ａの制御の下、共有設定記憶部１２２Ａに記憶される第２の対応表において、情報記憶装置毎に、当該情報記憶装置が担当するエンドポイントのコストの合計値を算出する。なお、当該算出処理は、各情報記憶装置においてそれぞれ、自らの情報記憶装置に対応付けられているエンドポイントのコストの合計値をそれぞれ算出するものであってもよく、あるいは、１つの情報記憶装置が、複数の情報記憶装置について、対応付けられているエンドポイントのコストの合計値をそれぞれ算出するものであってもよい。
【００９７】
ステップＳ５３において、追加される情報記憶装置１Ｅの制御ユニット１１Ｅは、担当装置選択部１１５１Ｅの制御の下、共有設定記憶部１２２Ｅに記憶される第２の対応表を参照し、図１１に示されているように、上記算出されたコストの合計値が最も大きい情報記憶装置１Ｂが担当するエンドポイントのうち、コストが最も大きいエンドポイントであるエンドポイント＃２を担当することを決定する。
【００９８】
ステップＳ５４において、追加される情報記憶装置１Ｅの制御ユニット１１Ｅは、データ書き込み部１１１Ｅの制御の下、先ず共有設定記憶部１２２Ｅに記憶される第１の対応表を読み出す。そして、この第１の対応表に基づいて、情報送信装置２Ａ，２Ｂ，２Ｃ，２Ｄ，２Ｅ，２Ｆから送信されるデータの中から、担当するエンドポイント＃２に対応付けられているトピック＃１，＃２に対応する識別子とともに送信されるデータをブローカ３から取得し、取得されたデータを記憶ユニット１２Ｅのデータ記憶部１２１Ｅに記憶させる。
【００９９】
ステップＳ５５において、追加される情報記憶装置１Ｅの制御ユニット１１Ｅは、対応表更新部１１５３Ｅの制御の下、自らの情報記憶装置１Ｅと担当するエンドポイント＃２との対応付けを、共有設定記憶部１２２Ｅに記憶される第２の対応表に書き込む。
【０１００】
ステップＳ５６において、追加される情報記憶装置１Ｅの制御ユニット１１Ｅは、上記算出されたコストの合計値が最も大きい情報記憶装置である情報記憶装置１Ｂに通知する。当該通知に応じて、情報記憶装置１Ｂは、情報記憶装置１Ｅが担当することとなったエンドポイント＃２との対応付けを開放し、以後、エンドポイント＃２に対応付けられている識別子とともに送信されるデータを取得しないようにし、第２対応表における対応付けを削除するようにしてもよい。
【０１０１】
ステップＳ５７において、追加される情報記憶装置１Ｅの制御ユニット１１Ｅは、対応表更新部１１５３Ｅの制御の下、共有設定記憶部１２２Ｅに記憶される第２の対応表において、自らの情報記憶装置１Ｅに対応付けられているエンドポイントのコストの合計値を算出し、算出されたコストの合計値が所定の値を超えたか否かを判定する。例えば、当該算出されたコストの合計値が、（エンドポイントのコストの合計）×冗長度／情報記憶装置数を超えたか否か、例えば、図９の第２の対応表の例では、（６＋８＋４＋６）×２／５を超えたか否かを判定する。この判定の結果、算出されたコストの合計値が所定の値を超えていない場合には、ステップＳ５１からの処理を繰り返す。
【０１０２】
（効果）
以上詳述したように、この発明の第１の実施形態では、以下のような効果が奏せられる。
【０１０３】
（１）情報記憶装置１Ａにおいて、データ書き込み部１１１Ａの制御の下、情報記憶装置と当該情報記憶装置が担当するエンドポイントとの対応関係を示す情報に基づいて、例えばエンドポイント＃１が、自らの情報記憶装置１Ａが担当するエンドポイントとして判定される。データ書き込み部１１１Ａの制御の下、共有設定記憶部１２２Ａに記憶される、エンドポイントと当該エンドポイントが取得するデータの種類を示す識別子とを対応付ける第１の対応表が読み出され、第１の対応表に基づいて、情報送信装置２Ａ，２Ｂ，２Ｃ，２Ｄ，２Ｅ，２Ｆから送信されるデータの中から、担当するエンドポイント＃１に対応付けられているトピック＃２に対応する識別子とともに送信されるデータがブローカ３から取得され、取得されたデータがデータ記憶部１２１Ａに記憶される。対応表更新部１１５３Ａの制御の下、情報記憶装置１Ａと担当するエンドポイント＃１との対応付けが、共有設定記憶部１２２Ａに記憶される第２の対応表に書き込まれる。
【０１０４】
このように、各情報記憶装置が自律的にデータを取得できるようにすることにより、情報記憶装置間でのデータの複製や送受信を必要とすることなく、複数の情報記憶装置間でデータを分散記憶させることができる。これにより、データ記憶時における単一情報記憶装置あたりの書き込み性能の低下が防がれた情報分散記憶システムを実現することができる。また、例えば、上述した情報記憶装置と当該情報記憶装置が担当するエンドポイントとの対応関係を示す情報において、１つのエンドポイントを２つ以上の情報記憶装置が担当するように設定すれば、複数の情報記憶装置間でデータの冗長性を担保することができ、情報分散記憶システムの耐故障性が保証される。
【０１０５】
（２）情報記憶装置１Ａにおいて、中継判定部１１３Ａの制御の下、情報受信装置４Ａ，４Ｂ，４Ｃ，４Ｄ等の任意の情報受信装置から、当該情報受信装置を示す識別子とともに送信されるデータ要求が取得される。中継判定部１１３Ａの制御の下、取得されたデータ要求が、自らの情報記憶装置１Ａが担当するエンドポイントからのものであるか否かが判定される。取得されたデータ要求が、例えば、自らの情報記憶装置１Ａが担当するエンドポイント＃１からのものであると判定された場合は、データ出力部１１２Ａの制御の下、データ記憶部１２１Ａに記憶される当該エンドポイント＃１に対するデータが読み出され、読み出されたデータが、データ要求の送信元のエンドポイント＃１に対応する情報受信装置４Ａに対して出力される。一方、取得されたデータ要求が、例えば、情報記憶装置１Ａが担当しないエンドポイント＃２からのものであると判定された場合は、中継判定部１１３Ａの制御の下、共有設定記憶部１２２Ａに記憶される第２の対応表に基づいて、当該データ要求の送信元のエンドポイント＃２を担当する情報記憶装置が判定される。その後、中継部１１４Ａの制御の下、上記データ要求の送信元のエンドポイント＃２を担当する情報記憶装置であると判定された情報記憶装置１Ｂと情報記憶装置１Ｃとの少なくとも一方に対して、当該データ要求が出力される。その後、中継部１１４Ａの制御の下、当該データ要求の送信元のエンドポイント＃２を担当する情報記憶装置１Ｂと情報記憶装置１Ｃとの少なくとも一方に記憶されたデータが取得される。その後、データ出力部１１２Ａの制御の下、取得されたデータが、データ要求の送信元のエンドポイント＃２に対応する情報受信装置４Ｂに対して出力される。
【０１０６】
したがって、情報受信装置は、いずれの情報記憶装置にアクセスしたとしても、所望のデータを取得することができる。
【０１０７】
（３）情報記憶装置１Ａにおいて、対応表監視部１１５２Ａの制御の下、共有設定記憶部１２２Ａに記憶される第２の対応表が参照されて、担当するエンドポイント＃１を担当する他の情報記憶装置１Ｄに関して記憶されている時刻“１０３４５６８１”、および、担当するエンドポイント＃４を担当する他の情報記憶装置１Ｂに関して記憶されている時刻“１２３４５６７９”が読み出される。対応表監視部１１５２Ａの制御の下、読み出された時刻“１２３４５６７９”，“１０３４５６８１”の各々について、当該時刻が記憶されてから所定の時間が経過しているか否かが判定される。対応表更新部１１５３Ａの制御の下、共有設定記憶部１２２Ａに記憶される第２の対応表において、所定の時間が経過している時刻“１０３４５６８１”に関する情報記憶装置１Ｄについてのエンドポイントとの対応付けが削除され、対応付けを削除されたエンドポイント＃１，＃３に待ち受け中フラグが立てられる。対応表更新部１１５３Ａの制御の下、共有設定記憶部１２２Ａに記憶される第２の対応表において、自らの情報記憶装置である情報記憶装置１Ａに関して記憶されている時刻“１２３４５６７８”が更新される。
【０１０８】
一般に、正常に動作することを確認されていた情報記憶装置であっても、運用時間が経過するにしたがい、何らかの原因により正常に動作しなくなる可能性がある。しかしながら、上記のように時間を基準に、エンドポイントに対して対応付けられていた情報記憶装置についての対応付けを削除することによって、正常に動作をしていない情報記憶装置がエンドポイントを担当しているといった状況を防ぐことができ、これにより、情報分散記憶システム全体の信頼性を向上させることができる。また、上述したような対応表の監視処理を実行した情報記憶装置については、監視処理と同時に動作確認がされる。したがって、上述したように第２の対応表において時刻を更新することによって、正常に動作している情報記憶装置の対応付けまでが削除されて情報分散記憶の効率が低下してしまうことを防ぐことができる。
【０１０９】
（４）ネットワークシステムに情報受信装置４Ｅが追加される場合に、情報記憶装置１Ａにおいて、対応表更新部１１５３Ａの制御の下、共有設定記憶部１２２Ａに記憶される第２の対応表において、情報受信装置４Ｅに対応するエンドポイント＃５の行または列が、情報記憶装置との対応付けを記入しない状態で、待ち受け中フラグを立てて追加される。担当装置選択部１１５１Ａの制御の下、共有設定記憶部１２２Ａに記憶される第２の対応表が読み出され、待ち受け中フラグの立っているエンドポイントの中から担当するエンドポイントが選択される。データ書き込み部１１１Ａの制御の下、共有設定記憶部１２２Ａに記憶される第１の対応表に基づいて、情報送信装置２Ａ，２Ｂ，２Ｃ，２Ｄ，２Ｅ，２Ｆから送信されるデータの中から、選択されたエンドポイントに対応付けられている識別子とともに送信されるデータが取得される。対応表更新部１１５３Ａの制御の下、情報記憶装置１Ａと上記選択されたエンドポイントとの対応付けが、共有設定記憶部１２２Ａに記憶される第２の対応表に書き込まれる。
【０１１０】
また、ネットワークシステムに情報記憶装置１Ｅが追加される場合に、対応表更新部１１５３Ａの制御の下、共有設定記憶部１２２Ａに記憶される第２の対応表において、情報記憶装置毎に、当該情報記憶装置が担当するエンドポイントのコストの合計値が算出される。追加される情報記憶装置１Ｅにおいて、共有設定記憶部１２２Ｅの第２の対応表が参照されて、担当装置選択部１１５１Ｅの制御の下、算出されたコストの合計値が最も大きい情報記憶装置である情報記憶装置１Ｂが担当するエンドポイントのうち、コストが最も大きいエンドポイントであるエンドポイント＃２を担当することが決定される。データ書き込み部１１１Ｅの制御の下、共有設定記憶部１２２Ｅに記憶される第１の対応表が読み出され、第１の対応表に基づいて、情報送信装置２Ａ，２Ｂ，２Ｃ，２Ｄ，２Ｅ，２Ｆから送信されるデータの中から、担当するエンドポイント＃２に対応付けられているトピック＃１，＃２に対応する識別子とともに送信されるデータがブローカ３から取得される。対応表更新部１１５３Ｅの制御の下、情報記憶装置１Ｅと担当するエンドポイント＃２との対応付けが、共有設定記憶部１２２Ｅに記憶される第２の対応表に書き込まれる。
【０１１１】
このように、システムに情報受信装置および情報記憶装置を追加可能なスケールアウト性を、当該スケールアウト実行時に情報記憶装置間でデータの送受信を必要とすることなく持たせることができる。これにより、スケールアウト性を有し、かつ、スケールアウト実行時にも単一情報記憶装置あたりの書き込み性能の低下が防がれた情報分散記憶システムを実現することができる。
【０１１２】
（５）上記追加される情報記憶装置１Ｅにより、第２の対応表において担当するエンドポイント＃２との対応付けが書き込まれた後に、上記算出されたコストの合計値が最も大きい情報記憶装置１Ｂに通知がなされる。さらに、上記追加される情報記憶装置１Ｅにおいて、自らに対応付けられているエンドポイントのコストの合計値が算出され、算出されたコストの合計値が所定の値を超えたか否かが判定される。
【０１１３】
このため、上記通知を受けた情報記憶装置１Ｂは、上記追加される情報記憶装置１Ｅが担当することとなったエンドポイント＃２との対応付けを開放し、以後、当該対応付けを解放されたエンドポイント＃２に対するデータを取得しないようにすることができる。これにより、負荷が大きかった情報記憶装置の負荷を軽減させることができる。さらに、上記判定結果に応じて、上記追加される情報記憶装置１Ｅは追加でエンドポイントを担当するようにすることもでき、例えば、情報記憶装置間で負荷の均一化を図ることが可能となる。
【０１１４】
［他の実施形態］
なお、この発明は上記実施形態に限定されるものではない。例えば、上述した動作フローにおいて任意の情報記憶装置によって実行されるとして説明した、担当する情報受信装置の選択処理、対応表更新処理、ならびに、第２の対応表におけるコストの更新処理およびコストの合計値算出処理等の、対応表に関連して実行される各処理は、設定管理装置によって実行されるように構成してもよい。このように、設定管理装置により処理を実行するようにすると、複数の情報記憶装置に共有される情報の一括管理、すなわち、情報分散記憶システムの一括管理をすることができる。また、上記実施形態では、各情報記憶装置におけるデータ書き込み処理の後に第２の対応表において情報受信装置と情報記憶装置との対応付けを書き込むように構成したが、例えば、データ書き込み処理以前に当該対応付けを書き込むように構成してもよい。さらに、上記実施形態では、情報記憶装置において、第２の対応表における待ち受け中フラグに基づいて担当する情報受信装置を選択する例、および、第２の対応表におけるエンドポイントのコストに基づいて担当する情報受信装置を選択する例を説明した。しかしながら、このような選択処理が実行されるのは、上記実施形態において記載した状況に限定されるわけではない。すなわち、担当する情報受信装置の選択処理は、いかなる状況で実行されるものであっても、上記実施形態において説明した方法を任意に組み合わせて実行するようにしてもよい。
【０１１５】
その他、情報記憶装置および設定管理装置の種類とその構成、ならびに、第１の対応表および第２の対応表の構成等についても、この発明の要旨を逸脱しない範囲で種々変形して実施可能である。
【０１１６】
要するにこの発明は、上記第１の実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記第１の実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、上記第１の実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図１】
2019087786.tif 000003
【図２Ａ】
2019087786.tif 000004
【図２Ｂ】
2019087786.tif 000005
【図３】
2019087786.tif 000006
【図４】
2019087786.tif 000007
【図５】
2019087786.tif 000008
【図６】
2019087786.tif 000009
【図７】
2019087786.tif 000010
【図８】
2019087786.tif 000011
【図９】
2019087786.tif 000012
【図１０】
2019087786.tif 000013
【図１１】
2019087786.tif 000014
【国際調査報告】
2019087786.tif 000015
2019087786.tif 000016