以下の説明では、「インターフェース部」は、1個以上のインターフェースで良い。当該1個以上のインターフェースは、1個以上の同種の通信インターフェースデバイス(例えば1個以上のNIC(Network Interface Card))であっても良いし2個以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であっても良い。
また、以下の説明では、「メモリ部」は、1個以上のメモリであり、典型的には主記憶デバイスで良い。メモリ部における少なくとも1つのメモリは、揮発性メモリであっても良いし不揮発性メモリであっても良い。
また、以下の説明では、「PDEV部」は、1個以上のPDEVであり、典型的には補助記憶デバイスで良い。「PDEV」は、物理的な記憶デバイス(Physical storage DEVice)を意味し、典型的には、不揮発性の記憶デバイス、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)である。つまり、PDEV部は、記憶デバイス部の一例である。
また、以下の説明では、「記憶部」は、メモリ部及びPDEV部のうちの少なくとも1つ(典型的には少なくともメモリ部)である。
また、以下の説明では、「プロセッサ部」は、1個以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでも良い。少なくとも1つのプロセッサは、シングルコアでも良いしマルチコアでも良い。少なくとも1つのプロセッサは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサでも良い。
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、この種の情報は、どのような構造のデータでも良いし、入力に対する出力を発生するニューラルネットワークのような学習モデルでも良い。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2個以上のテーブルに分割されても良いし、2個以上のテーブルの全部又は一部が1つのテーブルであっても良い。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及び/又はインターフェース部等を用いながら行うため、処理の主語が、プロセッサ部(或いは、そのプロセッサ部を有するコントローラのようなデバイス)とされても良い。プログラムは、プログラムソースから計算機のような装置にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体であっても良い。また、以下の説明において、2個以上のプログラムが1つのプログラムとして実現されても良いし、1つのプログラムが2個以上のプログラムとして実現されても良い。
また、以下の説明では、「kkk部」(インターフェース部、記憶部及びプロセッサ部を除く)の表現にて機能を説明することがあるが、機能は、1個以上のコンピュータプログラムがプロセッサ部によって実行されることで実現されても良いし、1個以上のハードウェア回路によって実現されても良い。各機能の説明は一例であり、複数の機能が1つの機能にまとめられたり、1つの機能が複数の機能に分割されたりしても良い。
また、以下の説明では、「ストレージシステム」は、複数のストレージノードを含んだシステムである。当該複数のストレージノードから、複数のユーザに対応した複数のボリュームの基になる複数のストレージノード群が構築されて良い。ボリュームとストレージノード群の関係は、1:1、1:多、多:1、多:多のいずれでも良い。ストレージノード群は、典型的には、スケールアウト型のストレージシステム、或いは、分散ストレージシステムと呼ばれて良い。「ストレージノード」は、ストレージシステムのメンバとしての装置であり、汎用計算機でも良いし、専用計算機(例えば、複数個のPDEVを有するいわゆるディスクアレイ装置のようなストレージ装置)でも良い。ストレージノード群は、冗長構成グループを有して良い。冗長構成は、Erasure Coding、RAIN(Redundant Array of Independent Nodes)及びノード間ミラーリングのように複数のストレージノードでの構成でも良いし、PDEV部の少なくとも一部としての1以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループのように単一の計算機(例えばストレージノード)での構成でも良い。
また、以下の説明では、「データセット」とは、アプリケーションプログラムのようなプログラムから見た1つの論理的な電子データの塊であり、例えば、レコード、ファイル、キーバリューペア及びタプルのうちのいずれでも良い。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通部分を使用し、同種の要素を区別して説明する場合に、参照符号を使用することがある。例えば、ストレージノードを特に区別しないで説明する場合には、「ストレージノード14」と記載し、個々のノードを区別して説明する場合には、「ストレージノード14a」、「ストレージノード14b」のように記載することがある。
以下、本発明の一実施例を、図面を参照し、説明する。なお、以下の説明で言う「セグメント」は、例えば、geometric segmentで良い。
以下、各要素の構成並びに、動作フローを用いて詳細を説明する。
なお、以下の説明では、ボリューム103を実現するストレージノード群(例えば分散ファイルストレージシステム)(例えば、後述のデータアクセスプログラム1410、ノード増設プログラム1411、ノード減設プログラム1412)自身の動作並びに仕様に関しては、例えば、Cephのような既知の技術に従って良い。
図1は、本発明の一実施例に係るデータレイクサービスシステムを含んだシステム全体の構成図である。
複数のセグメントから構成される複数の地域に複数のセンサ201が配置される。
ユーザ毎に、当該ユーザに関する地域に配置されている1以上のセンサ201の各々からのセンサデータセット(例えば、当該センサ201の測定値と測定日時とを含んだデータセット)を収集し分析や可視化の処理が実行されるユーザアプリケーションシステム101が設けられる。ユーザアプリケーションシステム101のうちの少なくとも一部が、複数のユーザに共通でも良い。
ユーザアプリケーションシステム101からのセンサデータセットを保存し、ユーザアプリケーションシステム101からの要求されるデータを提供するデータレイクサービスシステム102が備えられる。データレイクシステム102が、管理ノード13と、1以上のストレージノード14とを含む。データレイクシステム102のうちの少なくとも管理ノード13が、データストアシステムの一例である。
各センサ201とユーザアプリケーションシステム101との間に、センサデータセットを仲介するセンサネットワーク2がある。また、ユーザアプリケーションシステム101とデータレイクサービスシステム102との間に、データ通信を仲介するデータレイクネットワーク1がある。センサネットワーク2は、無線方式(WiFi(登録商標)、LPWA(Low Power Wide Area)、Bluetooth(登録商標)、etc.)のネットワークと、有線方式のネットワークのどちらでも良い。データレイクネットワーク1は、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)など、データ通信を提供できる通信ネットワークであれば良い。
図示の模式的な地理100は、複数のセンサ201が現実の複数の地域を含んだ複数の地帯に設定されていることを、説明を簡便化する表記である。例として、日本の大陸の境界線を併記している。例えば、或るセンサ201は、九州北西に設置されていることがわかる。
ユーザアプリケーションシステム101は、リダイレクトサーバ9、アプリケーションサーバ10、及び、ユーザ端末11を含む。
リダイレクトサーバ9は、センサネットワーク2を介して、各センサ201からセンサデータセットを収集し、データレイクサービスシステム102のボリューム103へ、収集したセンサデータセットを送信(格納)する。
アプリケーションサーバ10は、データレイクネットワーク1を介して、データレイクサービスシステム102のボリューム103が保持するセンサデータセットを取得して、分析もしくは、可視化する処理を実行する。
ユーザ端末11は、アプリケーションサーバ10の実行した可視化処理の結果の表示と、データレイクサービスシステム102の設定操作を行う。
データレイクサービスシステム102は、上述したように、データを保持する1以上のストレージノード14と、それらを管理する管理ノード13とを有する。ストレージノード14は、PDEV部15を有する。管理ノード13は、後述の複数の管理テーブルを保持する管理DB(データベース)4を有する。
分散ファイルストレージシステムとしてのストレージノード群(1以上のストレージノード14)が、ボリューム103として、ユーザアプリケーションシステム101から使用される。また、スケールアウトが行われる場合、矢印105に示すように、保持しているデータは維持しつつ、一部の新たなストレージノード14dが、ボリューム103Aを提供するメンバとして増設され、結果として、ボリューム103A(ストレージノード14a〜14cに基づくボリューム)がボリューム103Bに拡張される。拡張後のボリューム103Bが、ユーザアプリケーションシステム101から使用される。また、逆に、矢印106に示すように、スケールインが行われた場合、保持しているデータは維持しつつ、ボリューム103Bを提供するメンバから一部のストレージノード14dが減設されて、結果として、ボリューム103Bがボリューム103Aに縮小される。縮小後のボリューム103Aが、ユーザアプリケーションシステム101から使用される。ただし、分散ファイルストレージシステムによってデータセットが多重化されるので、一般的に、ストレージノード14の台数は、多重度より多い台数が使用される。
以上で、本実施例のシステムの全体構成を説明した。
図2は、データレイクサービスシステム102が有するボリューム103のデータ構成の一例を示している。
このデータ構成は、データレイクサービスシステム102に対してアクセスを行うデータレイクアクセスプログラム913及び1011(図7及び図8)に把握される。
ボリューム103が保持するセンサデータセットは、本実施例では、ファイルである。ボリューム103では、データ構成は、ネームスペースのように、フォルダ(ディレクトリ)やファイルのようなノードと、ノード間のエッジとを含んだ木構造(階層構造)である。ファイルは、階層化されたフォルダのうち、当該ファイルに関連付けられている測定日時と測定位置にフォルダに格納される。
図2の例によれば、ボリューム103の先頭のフォルダ“root”214に、測定日時で分類する1以上のフォルダ“Daytime”213が属する。各フォルダ“Daytime”213には、測定位置で分類する1以上のフォルダ“Segment”212が属する。フォルダ“Segment”212に、1以上のファイル211が格納される。具体的には、図2のデータ構成によれば、或るファイル211の格納先フォルダは、当該或るファイル211に関連付いている測定日時が属するフォルダ“Daytime”213に属する複数のフォルダ“Segment”212のうちの、当該或るファイル211に関連付いている測定位置が属するセグメント(地区)202に対応したフォルダ“Segment”212である。
なお、フォルダ“Segment”212は、例えば、測定位置の緯度と経度から計算式で求まる情報で定義されても良い。また、地域を特定する地名に相当する情報を使用することもできる。
また、フォルダ“Daytime”211とフォルダ“Segment”212の上下関係は、逆にしても良いが、センサの寿命の問題などで、ファイル(センサデータセット)が継続的に保持されなくなった場合、ファイルを特定する過程において、フォルダ日時が上位であれば、先に絞り込みが行われ、無駄な選定処理の発生を防げる。性能要件がない場合、フォルダ“Daytime”211とフォルダ“Segment”212のどちらが上位でも差し支えない。
また、図2は、本実施例で行われる処理の一例の流れの概要も示す。或るセンサ201からのデータセットが、リダイレクトサーバ9経由で、ファイル211として、当該或るセンサ201が配置されている地域に対応したユーザに関するボリューム103に、アップロード(送信)される(S1))。当該ファイル211のアップロード先は、当該或るセンサ201に関する測定日時及び測定位置に対応したフォルダ“Segment”212である。当該アップロードに伴い、アップロード先のフォルダ“Segment”212に対応したセグメント202についての書込み頻度が、当該セグメント202を含む地域に対応したユーザに関する通知条件を満たす場合、当該セグメント202を、管理ノード13が検出する(S2)。管理ノード13は、必要に応じて、当該検出されたセグメント202を含んだ地域に対応したユーザのアプリケーションサーバ10に、通知メッセージを送信し(S3)、且つ、当該アップロード先のボリューム103のスケールリングを、ストレージシステム(例えば、ボリューム103の基である少なくとも1つのストレージノード14)へ要求する(S4)。なお、アプリケーションサーバ10は、ユーザ端末11からの表示操作に際して、取消しの要求を受け付けると、管理ノード13に、上記のスケーリング(スケールアウトもしくはスケールイン)の取消しの要求を送信する。管理ノード13は、その取消しの要求に応答して、S4で要求したスケーリングの取消しを、ストレージシステムに要求する。
以上で、ボリューム103に対するファイル(センサデータセット)の置き方について説明した。
図3は、センサ201の設置位置と、セグメント202と、地名で代表される地域303との対応関係の一例を示している。
本実施例では、複数のユーザに使用される多数のセンサ201が広範囲に設置される。さらに、各センサ201は、或るユーザの所有物であっても良いし、それに代えて、第三者が、地域横断的に提供するセンサであっても良い。或るユーザが或る地域303についてのセンサデータセットを使用する際、当該地域303に属するセンサ201に絞り込んだセンサデータセットにアクセスする必要がある。
図3によれば、緯度と経度から定義される二次元平面を基に、模式的に、地域303とセグメント202の関連付けが行われる。例えば、地域303を内包する矩形範囲302(破線枠の範囲)に対して、その矩形範囲302に重なる(例えばその矩形範囲302(又は地域303)を構成する)1以上のセグメント202が定義される。従って、地域303に関わるセグメント202は、矩形範囲302に重なる全ての又は一部のセグメント202(例えば、地域303との重複部分の面積がセグメント202の面積の所定割合以上であるセグメント202)である。セグメント202と地域303の対応関係は、1:1、1:多、多:1及び多:多のいずれでも良い。セグメント202は、上述のフォルダ“Segment”212に対応付くので、当該セグメント202に対応するフォルダ“Segment”212から、当該セグメント202に設置されているセンサ201のセンサデータセットを取り出すことができる。
また、緯度と経度で表現される2次元位置座標系上のセンサ201の位置(測定位置)が、複数の位置座標(頂点)で指定される折れ線として表現される地域303に包含されているか否かの判定の方法としては、OpenGLのセレクション機能に従う方法のような既知の方法を採用できる。
図4及び図5は、管理DB4に含まれる管理テーブルの構成を示す。
地域プロパティ管理テーブル401は、地域プロパティに関する情報を保持する。例えば、地域プロパティ管理テーブル401は、カラム「地域ID」、「地域境界調整」及び「地域面積」を有する。つまり、地域プロパティ管理テーブル401は、地域毎に、地域IDを格納し、且つ、地域境界調整及び地域面積といった地域プロパティを示す情報を保持する。
カラム「地域ID」は、地名に対応する重複のない地域IDを保持する。例えば、地域IDとして、日本の国土地理院が公開する地図データで使用されている識別番号が使用されても良い。
カラム「地域境界調整」は、地域の境界線を定義する境界線情報として、境界線を折れ線表現した場合の頂点の数と座標のリストとを保持する。境界線情報は、日本の国土地理院が公開する地図データで使用されている座標情報等を含んで良い。
カラム「地域面積」は、地域の面積を保持する。この地域の面積は、例えば、数1のような式を用いて、地域の頂点座標を基に求めても良い。
図4の地域関連管理テーブル402は、地域プロパティに属する情報以外の、地域に関する情報を保持する。例えば、地域関連管理テーブル402は、カラム「地域ID」、「地域名」及び「ユーザID」を有する。つまり、地域関連管理テーブル402は、地域毎に、地域IDを格納し、且つ、地域名及びユーザIDといった情報を保持する。
カラム「地域ID」は、前述の地域IDを保持する。カラム「地域名」は、地域の地名を示す情報を保持する。カラム「ユーザID」は、地域を扱うユーザのユーザIDを保持する。
図5のユーザ管理テーブル501は、ユーザに関する情報を保持する。例えば、ユーザ管理テーブル501は、カラム「ユーザID」、「ユーザ名」及び「通知条件」を有する。つまり、ユーザ管理テーブル501は、ユーザ(例えば、データレイクサービスを利用する顧客)毎に、ユーザID、ユーザ名及び通知条件といった情報を保持する。
カラム「ユーザID」は、ユーザIDを保持する。カラム「ユーザ名」は、ユーザの名称を保持する。カラム「通知条件」は、ユーザの入力した通知条件を保持する。通知条件の詳細は後述する。
統計管理テーブル502は、各セグメントについて書込み頻度の統計情報を保持する。例えば、統計管理テーブル502は、カラム「セグメントID」、「フォルダパス」、「長期の書込み頻度」及び「短期の書込み頻度」を有する。つまり、統計管理テーブル502は、セグメント毎に、地域IDを格納し、且つ、地域名及びユーザIDといった情報を保持する。
カラム「セグメントID」は、セグメントのIDを保持する。セグメントIDは、例えば、数2のような式を用いて、センサの測定位置(例えば、緯度と経度)を基に、決定されても良い。これにより、セグメントのIDから、センサデータセットを送ってきたセンサの設置位置(測定位置)の範囲が計算できる。
カラム「フォルダパス」は、対応するフォルダ“Segment”へのパスのパス名を保持する。
カラム「長期の書込み頻度」は、比較的長い期間での書込み頻度である長期の書込み頻度(例えば、対応するフォルダ“Segment”に対する書き込みが発生した1週間当たりの移動平均を1日当たりにした値のような平均書込み頻度)を保持する。カラム「長期の書込み頻度」は、比較的短い期間での書込み頻度である短期の書込み頻度(例えば、対応するフォルダ“Segment”に対する書き込みが発生した1日当たりの移動平均値のような平均書込み頻度)を保持する。「比較的長い期間」と「比較的短い期間」の各々の期間は、一方が他方よりも長い又は短いといった期間である。
以上、管理DB4が有する管理テーブルを説明した。
図6は、センサ201の内部構成を示す。
センサ201は、1以上のセンサモジュール806を含んだデバイスである。例えば、センサ201は、マイクロコントローラ802、センサネットワークインターフェース803、メモリ804、リアルタイムクロックモジュール805、1以上のセンサモジュール806、及び、それら要素間のデータ通信を仲介するデータパス801を有する。
センサネットワークインターフェース803は、インターフェース部の一例であり、例えば、イーサネットプロトコル(イーサネットは登録商標)又はLPWAを介してデータ送受を行うためのNIC(Network Interface Card)モジュールである。センサネットワークインターフェース803経由で、センサネットワーク2へ接続することができる。
メモリ804は、記憶部(例えばメモリ部)の一例である。なお、メモリ804は、このセンサ201の動作のための1以上のプログラム(マイクロコントローラ802(プロセッサ部の一例)によって実行される1以上のプログラム)として、例えば、センサ測定プログラム810と、センサ転送プログラム811とを格納する。さらに、メモリ804は、データ保持領域として、センサバッファ812を有する。また、メモリ804は、センサ位置情報813を格納する。センサ位置情報813は、センサ201の設置位置を示す位置情報(例えば緯度及び軽度)である。センサ201の設置作業時に、センサ201の設置位置を示すセンサ位置情報813が記録される。センサ位置情報813が、センサ201からのセンサデータセットに関連付けられている。また、センサ201が、GPS(Global Positioning System)装置のような位置検出機能を有する場合、当該機能により検出された位置を示す情報がセンサ位置情報813として記録されても良い。なお、個々のプログラムの説明は、後述する。
リアルタイムクロックモジュール805は、現在日時を出力する時計モジュールで良い。
1以上のセンサモジュール806の各々は、用途に応じて採用されたセンサモジュールで良い。例えば、センサモジュール806aは、振動値を測定するモジュールで良く、センサモジュール806bは、加速度を測定するモジュールで良い。
図7は、リダイレクトサーバ9の内部構成を示す。
リダイレクトサーバ9は、MPU902、メモリ903、ネットワークインターフェース904、及び、それら要素間のデータ通信を仲介するデータパス901を有する。
MPU902は、プロセッサ部の一例であり、マイクロプロセッサである。メモリ903は、記憶部(例えばメモリ部)の一例である。メモリ903は、リダイレクトサーバ9の動作のための1以上のプログラム(MPU902に実行される1以上のプログラム)として、データ変換プログラム911と、データ記録プログラム912と、データレイクアクセスプログラム913とを格納する。また、メモリ903は、データ保持領域として、検出データバッファ914を有する。なお、個々のプログラムの説明は、後述する。
ネットワークインターフェース904は、インターフェース部の一例であり、例えば、イーサネットプロトコルを扱えるNICモジュールである。これにより、センサネットワーク2と、データレイクネットワーク1とに接続できる。
図8は、アプリケーションサーバ10の内部構成を示す。
アプリケーションサーバ10は、MPU1002、メモリ1003、ネットワークインターフェース1004、及び、それら要素間のデータ通信を仲介するデータパス1001を有する。
MPU1002は、プロセッサ部の一例であり、マイクロプロセッサである。メモリ1003は、記憶部(例えばメモリ部)の一例である。メモリ1003は、アプリケーションサーバ10の動作のための1以上のプログラム(MPU1002に実行される1以上のプログラム)として、センサプログラム1010と、データレイクアクセスプログラム1011と、ユーザプログラム1012とを格納する。また、メモリ1003は、データ保持領域として、監視データバッファ1013を有する。なお、個々のプログラムの説明は、後述する。
ネットワークインターフェース1004は、インターフェース部の一例であり、イーサネットプロトコルを扱えるNICモジュールである。これにより、データレイクネットワーク1に接続できる。
図9は、ユーザ端末11の内部構成を示す。
ユーザ端末11は、MPU1102、ユーザインターフェース1103、メモリ1104、ネットワークインターフェース1105、及び、それら要素間のデータ通信を仲介するデータパス1101を有する。
MPU1102は、プロセッサ部の一例であり、マイクロプロセッサである。
ユーザインターフェース1103は、表示デバイス12への表示データ(表示用情報)と、入力デバイス1106からの入力データを、それぞれとデータ送受するためのインタフェースモジュールである。入力デバイス1106は、キーボードやポインティングデバイスで良い。表示デバイス12と入力デバイス1106が一体となったタッチパネルディスプレイデバイスが採用されても良い。
メモリ1104は、記憶部(例えばメモリ部)の一例である。メモリ1104は、ユーザ端末11の動作のための1以上のプログラム(MPU1102に実行される1以上のプログラム)として、ユーザ端末プログラム1111を格納する。なお、個々のプログラムの説明は、後述する。
ネットワークインターフェース1105は、インターフェース部の一例であり、イーサネットプロトコルを扱えるNICモジュールである。これにより、データレイクネットワーク1に接続できる。
図10は、ユーザ端末11の表示デバイス12に表示されるセットアップ画面の一例を示す。
セットアップ画面1201は、データレイクサービスシステム102における管理ノード13からの通知を表示するユーザインターフェース画面(例えばGUI(Graphical User Interface))である。セットアップ画面1201は、ユーザ名1202、ユーザID1203、通知条件UI(User Interface)1204、通知メッセージ1206、ボタン「Cancel」1207、ボタン「OK」1208、及び、ボタン「Exit」1209を表示する。セットアップ画面1201の表示は、管理ノード13からアプリケーションサーバ10経由して受信した表示データに従う内容であり、ユーザプログラム1012(図8)及びユーザ端末プログラム1111(図9)により制御される。表示データは、通知の表示用のデータを含む。
図10の例では、通知条件UI1204及び通知メッセージ1206は、異常発生等の特定のイベントが検出された地域毎に表示される。通知メッセージ1206は、通知条件が満たされたときに発行された通知の内容を示すメッセージである。通知条件UI1204は、当該通知に関わる地域についての現在の通知条件を表示するUIである。当該UI1204に関して所定の操作がされると、通知条件の指定のためのUI(例えばプルダウンメニュー)1205が表示される。なお、通知条件として、例えば、“高頻度”や“低頻度”がある。ボタン「Cancel」1207は、通知の内容に示される動作の取消しを要求するためのボタンである。当該動作としては、ユーザに対応したボリューム103に関してのスケーリング(スケールアウト又はスケールイン)がある。なお、通知メッセージ1206が、取消し可能な動作に関する通知を含まない場合、ボタン「Cancel」1207は、非表示(又は無効)とされる。
ボタン「OK」1208は、指定した通知条件をデータレイクサービスシステム102へ送信するためのボタンである。ボタン「Exit」1209は、ユーザ端末プログラム1111を終了させるためのボタンである。
図11は、管理ノード13の内部構成を示す。
管理ノード13は、MPU1302、メモリ1303、ネットワークインターフェース1304、及び、それら要素間のデータ通信を仲介するデータパス1301を有する。
MPU1302は、プロセッサ部の一例であり、マイクロプロセッサである。
メモリ1303は、記憶部(例えばメモリ部)の一例である。メモリ1303は、管理ノード13の動作のための1以上のプログラム(MPU1302に実行される1以上のプログラム)として、ユーザサービスプログラム1310と、監視プログラム1311と、ファイルアクセスプログラム1312と、スケーリングプログラム1313とを格納する。ユーザサービスプログラム1310、監視プログラム1311、ファイルアクセスプログラム1312、及び、スケーリングプログラム1313がMPU1302に実行されることで、ユーザサービス部、監視部、ファイルアクセス部、及び、スケーリング部といった機能が実現される。なお、個々のプログラムの説明は、後述する。
管理DB4は、メモリ1303(又は図示しないPDEV部)に格納される。管理DB4に含まれる管理テーブルの詳細は、図4と図5を参照して、説明済みである。
ネットワークインターフェース1304は、インターフェース部の一例であり、イーサネットプロトコルを扱えるNICモジュールである。これにより、データレイクネットワーク1に接続できる。
図12は、ストレージノード14の内部構成を示す。
ストレージノード14は、MPU1402、メモリ1403、PDEV部15、ネットワークインターフェース1405、及び、それら要素間のデータ通信を仲介するデータパス1401を有する。
MPU1402は、プロセッサ部の一例であり、マイクロプロセッサである。
メモリ1403(メモリ部の一例)及びPDEV部15は、記憶部の一例である。メモリ1403は、ストレージノード14の動作のための1以上のプログラム(MPU1402に実行される1以上のプログラム)として、データアクセスプログラム1410と、ノード増設プログラム1411と、ノード減設プログラム1412とを格納する。なお、個々のプログラムの説明は、後述する。PDEV部15は、センサデータセット(ファイル)を保持するための1以上のPDEVである。
ネットワークインターフェース1405は、インターフェース部の一例であり、イーサネットプロトコルを扱えるNICモジュールである。これにより、データレイクネットワーク1に接続できる。
以上で、システム構成、並びに、各装置の内部構成を説明した。以下、各プログラムの動作を、説明する。
まず、センサ201における各プログラムの動作を説明する。
センサ測定プログラム810は、1以上のセンサモジュール806から、測定値を取得し、リアルタイムクロックモジュール805から測定日時(現在日時)を取得し、測定値及び測定日時を含んだセンサデータセットをセンサバッファ812に保存する。
図13は、センサ転送プログラム811の動作フローを示す。
S1601では、センサ転送プログラム811は、センサバッファ812に保存されているセンサデータ量(センサデータセットの総量)の変化量を算出する。
S1602では、センサ転送プログラム811は、算出された変化量が、既定の条件を満たすが判定する。S1602の判定結果が真であれば(S1602:YES)、S1604が実行され、そうでなければ(S1602:NO)、S1603が実行される。「既定の条件」とは、例えば、変化量が既定値以上で良い。
S1603では、センサ転送プログラム811は、リアルタイムクロックモジュール805から現在日時を取得し、取得した現在日時が既定の定期報告日時か判定する。S1603の判定結果が真であれば(S1603:YES)、S1604が実行され、そうでなければ(S1603:NO)、動作が終了する。
S1604では、センサ転送プログラム811は、センサネットワークインターフェース803を介して、リダイレクトサーバ9へ、センサバッファ812が保持するセンサデータセット(例えば、測定値、測定日時、測定位置(センサ位置情報813が示す位置)を含んだデータセット)を、送信する。
次に、リダイレクトサーバ9における各プログラムの動作を説明する。
データ変換プログラム911は、センサネットワークインターフェース1105を介して、センサ201から、センサデータセットを受信する。データ変換プログラム911は、受信したセンサデータセットから、既定の検出計算を行い、測定値(例えば検出計算後の値)、検出日時(例えば測定日時)、及び測定位置等を含んだセンサデータセットとしての検出結果を、検出データバッファ914に保存する。なお、この検出計算は、センサ201から送られてくるデータセット中の測定値をユーザの仕様に変換する計算で良い。例えば、検出計算として、フーリエ変換計算によるスペクトラムデータへの変換、数値の大小比較による状態値への変換、複数のセンサの測定値の相関を取る計算等が採用されて良い。
データ記録プログラム912は、検出データバッファ914が保持する検出結果(測定日時、測定位置、検出計算後の値などを含んだセンサデータセット)を、データレイクアクセスプログラム913経由で、データレイクサービスシステム102のボリューム103に記録する。
データレイクアクセスプログラム913は、データ記録プログラム912から受け取ったセンサデータセットを、管理ノード13のファイルアクセスプログラム1312を介して、既定のパス構造で、ボリューム103に保存する。この既定のパス構造は、図2で説明済みである。
次に、アプリケーションサーバ10の各プログラムの動作を説明する。
センサプログラム1010は、データレイクアクセスプログラム1011を介して、データレイクサービスシステム102のボリューム103から、現在日時から過去既定時間の範囲の測定日時で、既定の地域の測定結果としてのセンサデータセット(ファイル)を取得し、取得したセンサデータセットを監視データバッファ1013へ保存する。
データレイクアクセスプログラム1011は、センサプログラム1010から受け取ったセンサデータセット中の測定日時と測定位置を基に、ボリューム103から、当てはまるセンサデータセット(例えば、当該測定日時と測定位置とに対応したフォルダ内のデータセット)を取得し、取得したセンサデータセットを監視データバッファ1013に保存する。
ユーザプログラム1012は、ユーザ端末11から、接続要求があれば、監視データバッファ1013が保持するセンサデータセットの少なくとも一部を、ユーザ端末11へ返す。
次に、ユーザ端末11の各プログラムの動作を説明する。
図14は、ユーザ端末プログラム1111の動作フローを示す。
S2301では、ユーザ端末プログラム1111は、入力デバイス1106による操作者からの入力操作で、接続先を取得し、取得した接続先に接続要求を送信する。ここで、本実施例での接続先候補として、アプリケーションサーバ10と管理ノード13の2つがあるが、管理ノード13との接続を主に説明する。
S2302では、ユーザ端末プログラム1111は、接続先(管理ノード13)から送られてくる表示データを、表示デバイス12に表示する。
S2303では、ユーザ端末プログラム1111は、入力デバイス1106による操作者の入力操作の内容を、接続先(管理ノード13)に送信する。
S2304では、ユーザ端末プログラム1111は、ボタン「Exit」1209が選択されたかの判定を行う。選択されたならば(S2304:YES)、処理が終了し、そうでなければ(S2304:NO)、処理がS2302に戻る。
次に、管理ノード13の各プログラムを説明する。
図15は、ユーザサービスプログラム1310の動作フローを示す。
S2401では、ユーザサービスプログラム1310は、ユーザ端末11から接続要求があれば、セットアップ画面1201の表示データを送信する。
S2402では、ユーザサービスプログラム1310は、ユーザ端末11からの操作内容が終了かを判定する。終了であれば(S2402:YES)、処理が終了し、そうでなければ(S2402:NO)、処理がS2403に進む。
S2403では、ユーザサービスプログラム1310は、ユーザ端末11からの操作内容がボタン「Cancel」1207の選択(押下)かを判定する。そうであれば(S2403:YES)、処理がS2406に進み、そうでなければ(S2403:NO)、処理がS2404に進む。
S2406では、ユーザサービスプログラム1310は、管理ノード13で実行されているスケーリング(スケールアウトもしくはスケールイン)の取消し要求を管理ノード13に送信する。取消し要求は、スケーリングを止めて、ボリューム103の基になるストレージノード14の台数を元に戻す要求に相当する。
S2404では、ユーザサービスプログラム1310は、ユーザ端末11から、ユーザ管理テーブル501のレコードデータを受信して、当該レコードデータに従うレコードを、管理DB4におけるユーザ管理テーブル501へ登録する。
S2405では、ユーザサービスプログラム1310は、上記登録したレコードに従いセットアップ画面1201の表示内容を変更する更新後の表示データを、ユーザ端末11へ送信する。
図16は、監視プログラム1311の動作フローを示す。
S2501では、監視プログラム1311は、アクセス対象のファイルパス(ファイルアクセスプログラム1312からの引数としてのファイルパス)に関して、当該ファイルパスに従うアクセス先のセグメント(アクセス先のフォルダに対応したセグメント)についての長期の書込み頻度(FL)と短期の書込み頻度(FS)との差(絶対値)が既定値(Th1)以上かの判定を行う。当該セグメントについての長期の書込み頻度と短期の書込み頻度は、統計管理テーブル502から特定される。既定値以上であれば(S2501:YES)、処理がS2502に進み、そうでなければ(S2501:NO)、処理が終了する。
S2502では、監視プログラム1311は、上記ファイルパスを基に、アクセス先のセグメントに対応したセグメントIDを統計管理テーブル502から抽出し、当該セグメントIDに対応した地域IDについて、地域プロパティ管理テーブル401から、対象地域の緯度と経度の範囲を求める。監視プログラム1311は、地域プロパティ管理テーブル401から、上記の緯度と経度の範囲を持つ地域の地域面積を求める。監視プログラム1311は、地域関連管理テーブル402及びユーザ管理テーブル501から、上記の地域IDに対応したユーザIDと通知条件を特定する。
S2503では、監視プログラム1311は、S2502で特定した通知条件に従う通知(通知メッセージ1206)を含む表示データを生成する。
S2504では、監視プログラム1311は、短期の書込み頻度が、長期の書込み頻度を上回まっているかを判定する。そうであれば(S2504:YES)、処理がS2505に進み、そうでなければ(S2504:NO)、処理がS2507に進む。
S2505では、監視プログラム1311は、S2502で特定された通知条件が“高頻度”か判定する。そうであれば(S2505:YES)、処理がS2506に進み、そうでなければ(S2505:NO)、処理が終了する。
S2506では、監視プログラム1311は、S2502で特定した地域面積と、2つの書込み頻度(FLとFS)と、S2502で特定したユーザに対応のボリューム103の基になっている現在のストレージノード数とを引数に持つ既定のスケール評価式に従い、増設するストレージノード数(或いは、増設後のストレージノード数)を算出し、管理ノード13へ、当該算出したストレージノード数に従うスケールアウト要求を送信する。
S2507では、監視プログラム1311は、S2502で特定された通知条件が“低頻度”か判定する。そうであれば(S2507:YES)、処理がS2508に進み、そうでなければ(S2507:NO)、処理が終了する。
S2508では、監視プログラム1311は、S2502で特定した地域面積と、2つの書込み頻度(FLとFS)と、S2502で特定したユーザに対応のボリューム103の基になっている現在のストレージノード数とを引数に持つ既定のスケール評価式に従い、減設するストレージノード数(或いは、減設後のストレージノード数)を算出し、管理ノード13へ、当該算出したストレージノード数に従うスケールイン要求を送信する。
なお、上記の既定のスケール評価式として、例えば、下記数3を採用することができる。これにより、ユーザに対応した地域の面積に応じたスケールアウトとスケールインの規模を推定することができる。
図17は、ファイルアクセスプログラム1312の動作フローを示す。
S2601では、ファイルアクセスプログラム1312は、データレイクネットワーク1からの要求が、書込み要求かを判定する。そうであれば(S2601:YES)、処理がS2602に進み、そうでなければ(S2601:NO)、処理がS2605に進む。
S2602では、ファイルアクセスプログラム1312は、書込み要求を基に、その要求から特定されるファイルパスに従うファイル書込み要求をボリューム103に対して送信する。
S2603では、ファイルアクセスプログラム1312は、統計管理テーブル502の長期の書込み頻度と短期の書込み頻度(S2602でのファイルパスに従うフォルダ(セグメント)に対応する2つの書込み頻度)を更新する。データレイクネットワーク1からの書込み頻度(書込み要求の受信頻度)は、センサ201において異常発生等の特定イベントが生じた場合に増え、セグメント毎に、長期の書込み頻度と短期の書込み頻度が管理される。
S2604では、ファイルアクセスプログラム1312は、S2602でのファイルパスと、S2603での更新後の2つの書込み頻度を引数に、監視プログラム1311を呼び出す。
S2605では、ファイルアクセスプログラム1312は、データレイクネットワーク1からの要求が、読出し要求かを判定する。そうであれば(S2605:YES)、処理がS2606に進み、そうでなければ(S2605:NO)、処理が終了する。なお、図17が示す動作フローは、データレイクネットワーク1からの要求として書込み要求と読出し要求の2つを例に取っているが、それらの要求以外の要求もあれば、S2605:NOの後は、当該要求の処理が行われて良い。
S2606では、ファイルアクセスプログラム1312は、読出し要求を基に、その要求から特定されるファイルパスに従うファイル読出し要求をボリューム103に対して送信し、そのファイル読出し要求に応答して読み出されたファイルを、要求元へ送信する。
スケーリングプログラム1313は、スケールアウトの場合、使用されていないストレージノード14へ、ボリューム103への加入の要求を送信する。スケーリングプログラム1313は、スケールインの場合、ボリューム103から脱退させるストレージノード14が保持するデータを他の使用中のストレージノード14へ転送し、脱退させるストレージノード14へ、脱退要求を送信する。
次に、ストレージノード14の各プログラムの動作を説明する。
データアクセスプログラム1410は、管理ノード13からの要求が、データ書込み(ファイル書込み要求)であれば、管理ノードからのデータ(ファイルを構成するデータ)を、PDEV部15(又はキャッシュメモリ)へ書き込む。データアクセスプログラム1410は、管理ノード13からの要求が、データ読出し(ファイル読出し要求)であれば、PDEV部15(又はキャッシュメモリ)から、データを読出し、管理ノード13へ返送する。
ノード増設プログラム1411では、増設対象のストレージノード14に関して、使用中状態とし、且つ、管理ノード13からのデータ送受動作の許可を設定する。
ノード減設プログラム1412は、減設対象のストレージノード14に関して、空き状態とし、且つ、管理ノード13からのデータ送受動作の禁止を設定する。
以上で、本実施例に係るシステムの構成と動作の概要を説明した。
本実施例に係るシステムは、社会インフラ管理と、それを実現するITシステムに適用できる。特に、社会インフラの監視データ(センサーデータ)を保持するデータレイクを提供するITシステムの共同利用に適用できる。
以上、一実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。例えば、いずれかのストレージノード14が管理ノード13としても機能して良い。また、例えば、セットアップ画面1201は、通知条件の設定と、通知とを兼ねた画面(例えば、通知の際に通知条件の設定を可能とした画面)であるが、通知条件設定用の画面と、通知用の画面とが異なっていても良い。
なお、上述の説明を、例えば下記のように総括できる。下記総括は、上述の説明に無い事項を含んでいても良い。
管理ノード13が、データセットアクセス部(例えばファイルアクセス部)と、監視部とを有する。
データセットアクセス部は、複数のユーザにそれぞれ対応した複数の地域303に関わる複数のセグメント202に存在する複数のセンサ201の各々について、当該センサ201の測定値に関して所定の条件が満たされる都度に、当該センサ201のセンサデータセットの書込み要求を受信するようになっている。ここで言う「所定の条件」とは、例えば、単位時間当たりのセンサデータセット増加量でも良いし、単位時間当たりの測定値変動量でも良い。各センサ201(又はリダイレクトサーバ9のような中継器)が、当該センサ201の測定に関して異常発生等の特定イベントが生じた場合にセンサデータセットの書込み要求を管理ノード13に発行するようになっている。データセットアクセス部は、いずれかのセンサ201のセンサデータセットの書込み要求を受信した場合、複数のユーザにそれぞれ対応した複数のボリューム103のうち、当該センサ201が存在するセグメント202が関わる地域303に対応するユーザに対応したボリューム103に対する、当該センサデータセットの書込み要求を発行する。なお、複数のボリューム103の各々は、同一のストレージシステムに存在する1以上のストレージノード14であるスケールアウト型のストレージノード群に基づいている。複数のボリューム103の各々において、当該ボリューム103に格納されている各センサデータセット(例えばファイル)に、当該センサデータセットに関して、当該センサデータセットに対応したセンサ201の測定位置と測定日時とが関連付けられている(例えば、当該センサデータセットは、当該測定位置と測定日時に対応したフォルダ(格納領域の一例)に格納されるようになっている)。
監視部は、複数のボリューム103の各々について、当該ボリュームに対応したユーザに関する地域303を構成するセグメント202毎に書込み頻度を監視する。
これにより、センサデータセットの書込み頻度の変化により、異常発生等の特定イベントが発している地域303の特定が、センサデータセットそれ自体を分析すること無しに、可能である。
なお、管理DB4が、地域303とセグメント202との対応関係を示す管理テーブルを含んで良い。
管理ノード13が、更に、書込み頻度に関する条件が満たされたセグメント202である対象セグメント202が関わる地域303に対応したユーザに対する条件該当通知を発行するユーザサービス部を備える。「条件該当通知」は、書込み頻度に関する条件が満たされたことの通知であり、例えば、通知メッセージ1206である。
システムが共同利用されると、センサデータセットの書込みに関して条件が満たされても、いずれのユーザを通知先とするかの特定が難しいケースがあり得る。例えば、ユーザとは独立な第三者が設置し運営する大量のセンサを、TCO削減の目的で利用されることを想定すると、いずれのセンサに関しての通知をいずれのユーザが必要としているかの特定が容易ではないと考えられる。上述のユーザサービス部によれば、異常発生等の特定イベントが発していると特定された地域303を管轄するユーザが特定され、当該ユーザに、通知がされる。
管理ノード13が、更に、スケーリング部を備える。スケーリング部は、対象セグメント(書込み頻度に関する条件が満たされたセグメント)202が関わる地域303のプロパティ(例えば、地域面積や地域人口のような地域の規模に関する値)と、対象セグメント202が関わる地域303に対応したユーザについてのボリューム103である対象ボリューム103の基になっているストレージノード14の数とに基づいて、当該対象ボリューム103の基となるストレージノードのスケール(例えばストレージノード数)を決定し、決定したスケールに従うスケーリングの実行要求をストレージシステムに発行する。
これにより、複数のユーザに共同利用されるシステムの運用管理者が、地域303に関する知識がなくても、ボリューム103のスケールを、当該地域303に応じたスケールにすることが、可能である。
ユーザサービス部は、対象ボリューム103についてスケールが決定された場合、対象ボリューム103に対応したユーザに対するスケーリング通知を発行する。スケーリング通知の発行とは、例えば、上述の通知メッセージ1206が、スケーリングの実施がされていることを示す通知を含むことと、当該通知メッセージ1206に対してボタン「Cancel」1207が有効とされることであって良い。スケーリング部は、スケーリング通知に対して取消しを受け付けた場合、決定したスケールに従うスケーリングの取消しの要求をストレージシステムに発行する。ストレージシステムは、当該取消しの要求に応答して、ボリューム103の基になるストレージノード群の構成を基に戻す。
これにより、広域災害などでスケールアウトがなされるといった正常なケース(例えば、広域災害が生じると多くのセンサ201に関するセンサデータセットの書込み頻度が増加しそれに伴い記憶容量を増やすためのスケールアウトが行われるケース)と異なるケースでのスケーリング(例えば、センサ201のエラーなどによる誤動作が原因で増えた又は減った書込み頻度に応じたスケーリング)の取消ができるようになる。なお、上述の実施例では、少なくともスケールアウトに関しては、広域災害等が原因で急激にセンサデータセットの書込み頻度が増えても対処できるよう、ユーザからのスケーリング指示を受け付けること無しにスケーリングが開始されるが、センサ201の誤作動等が原因でそのようなスケーリングが生じても、取消しが可能である。
複数のボリューム103の各々について、当該ボリュームに対応したユーザに関する地域303を構成するセグメント202毎に、短期の書込み頻度と長期の書込み頻度とがある。書込み頻度に関する上述の条件は、短期の書込み頻度と長期の書込み頻度との差(例えば絶対値)が既定値以上であることである。決定されたスケールに従うスケーリングは、下記である。
・短期の書込み頻度が長期の書込み頻度よりも高く、且つ、対象ボリューム103に対応したユーザから高頻度の通知が望まれている場合(通知条件が“高頻度”の場合)、スケールアウト。
・短期の書込み頻度が長期の書込み頻度よりも低く、且つ、対象ボリューム103に対応したユーザから低頻度の通知が望まれている場合(通知条件が“低頻度”の場合)、スケールイン。
これにより、短期の書込み頻度と長期の書込み頻度との差が既定値以上である場合における短期の書込み頻度と長期の書込み頻度との関係に応じて、各ユーザに、当該ユーザの希望する通知頻度に応じた頻度での通知をできることが期待できる。
なお、各ユーザに関して希望される通知条件が無くても、短期の書込み頻度と長期の書込み頻度との差が既定値以上である場合における短期の書込み頻度と長期の書込み頻度との関係に応じて、ユーザへの通知が可能である。また、短期の書込み頻度と長期の書込み頻度との関係に関わらず短期の書込み頻度と長期の書込み頻度との差が既定値以上の場合に、ユーザへの通知が行われても良い。