(57)【要約】      （修正有）【課題】ＩｏＴシステムのエッジサイトからクラウドサイトへのデータ送信、およびデータレイクへのデータ取り込みのためのストレージおよびトラフィックのコストおよび消費量を削減する。【解決手段】データアセット分析支援システムは、コアサーバに接続された複数のエッジノードを含み、複数の分析プロセスへの変更または追加に対応する分析プロセスによって利用されるデータチャネルを定義するように構成された第１のインタフェースを提供し、複数の分析プロセスへの変更または追加に対応するデータルーティングを定義するように構成された第２のインタフェースを提供し、複数の分析プロセスへの変更または追加に対応して、第１のインタフェースから受信した第１の修正に基づいてデータチャネルへの変更を、エッジノードに伝播し、第２のインタフェースから受信した第２の修正に基づいてデータチャネルへのサブスクリプションを更新する。【選択図】図１２
2020022153.tif 000002
【特許請求の範囲】
【請求項１】
コアサーバに接続された複数のエッジノードを含み、複数のエッジノードが、複数のエッジノードで受信したデータに関して複数の分析プロセスを実行するシステムのための方法であって、
複数の分析プロセスへの変更または追加の受信に対し、
前記複数の分析プロセスへの変更または追加に対応する分析プロセスによって利用されるデータチャネルを定義するように構成された第１のインタフェースを提供し、
前記複数の分析プロセスへの変更または追加に対応するデータルーティングを定義するように構成された第２のインタフェースを提供し、
前記複数の分析プロセスへの変更または追加に対応して、前記第１のインタフェースから受信した第１の修正に基づいてデータチャネルへの変更を、前記エッジノードに伝播し、
前記第２のインタフェースから受信した第２の修正に基づいてデータチャネルへのサブスクリプションを更新する、
ことを特徴とするデータフローを管理する方法。
【請求項２】
請求項１に記載のデータフローを管理する方法であって、
前記サブスクリプションの更新は、
前記データチャネルに関連する１つまたは複数のコネクタにメッセージを送信し、
前記データチャネルに対する新しい経路指定を示すメッセージについては、前記データチャネルに当該メッセージをサブスクライブし、
前記データチャネルの新しいルーティングを示していないメッセージについては、メッセージの前記データチャネルへの登録を解除する、
ことを特徴とするデータフローを管理する方法。
【請求項３】
請求項１に記載のデータフローを管理する方法であって、
前記第１の修正に基づいて前記データチャネルに変更を伝播は、
gitリポジトリから、最初の変更に対応する１つ以上の定義ファイルを取得し、
前記定義ファイルを実行可能ファイルにコンパイルし、
前記実行可能ファイルを前記データチャネルに登録する、
ことを特徴とするデータフローを管理する方法。
【請求項４】
請求項１に記載のデータフローを管理する方法であって、
新たなチャネルの追加を示す前記第１の修正に関して、前記第１の修正に基づいて前記データチャネルに変更を伝播は、
gitリポジトリから、新しいチャンネルに対応する１つ以上の定義ファイルを取得し、
前記１つ以上の定義ファイルを実行可能ファイルにコンパイルし、
前記実行可能ファイルを新しいチャネルに登録する、
ことを特徴とするデータフローを管理する方法。
【請求項５】
請求項１に記載のデータフローを管理する方法であって、
チャネルを対応するデータベースと関連付けるルーティング情報を管理することをさらに含み、
前記システムは、ルーティング情報に基づいてデータチャネルからデータをルーティングするように構成されたコネクタを含み、
前記第２のインタフェースは、定義されたデータルーティングに基づいてルーティング情報への変更を容易にすることによって、複数の分析プロセスへの変更または追加に対応するデータルーティングを定義するように構成されている、
ことを特徴とするデータフローを管理する方法。
【請求項６】
請求項１に記載のデータフローを管理する方法であって、
前記データチャネルはサブチャネルを含み、前記第１のインタフェースは、前記変更または前記複数の分析プロセスへの追加に対応する分析プロセスによって利用されるサブチャネルを定義するように構成される、
ことを特徴とするデータフローを管理する方法。
【請求項７】
コアサーバに接続された複数のエッジノードを備えるシステムのための命令を格納し、前記複数のエッジノードは、前記複数のエッジノードで受信されたデータに対して複数の分析プロセスを実行するものであり、前記コアサーバの１つまたは複数のハードウェアプロセッサによって実行されるように構成される前記命令を格納するコンピュータ記憶媒体であって、
前記命令は、
前記複数の分析プロセスへの変更または追加の受信し、
前記複数の分析プロセスへの変更または追加に対応する分析プロセスによって利用されるデータチャネルを定義するように構成された第１のインタフェースを提供し、
前記複数の分析プロセスへの変更または追加に対応するデータルーティングを定義するように構成された第２のインタフェースを提供し、
前記複数の分析プロセスへの変更または追加に対応して、前記第１のインタフェースから受信した第１の修正に基づいてデータチャネルへの変更をエッジノードに伝播し、
前記第２のインタフェースから受信した第２の修正に基づいてデータチャネルへのサブスクライブを更新する、
ことを特徴とするコンピュータ記憶媒体。
【請求項８】
請求項７に記載のコンピュータ記憶媒体であって、
前記第２の修正に基づいて前記データチャネルへの前記サブスクライブを更新は、
前記データチャネルに関連する１つまたは複数のコネクタにメッセージを送信し、
前記データチャネルに対する新しい経路指定を示すメッセージについては、メッセージを前記データチャネルにサブスクライブし、
前記データチャネルの新しいルーティングを示していないメッセージについては、メッセージの前記データチャネルへの登録を解除する、
ことを特徴とするコンピュータ記憶媒体。
【請求項９】
請求項７に記載のコンピュータ記憶媒体であって、
前記第１の修正に基づいてデータチャネルに伝搬する変更は、
gitリポジトリから、最初の変更に対応する１つ以上の定義ファイルを取得し、
前記定義ファイルを実行可能ファイルにコンパイルし、
前記実行可能ファイルをデータチャネルに登録する、
ことを特徴とするコンピュータ記憶媒体。
【請求項１０】
請求項７に記載のコンピュータ記憶媒体であって、
新しいチャネルの追加を示す前記第１の修正に関して、前記第１の修正に基づくデータチャネルへの伝播する変更は、
gitリポジトリから、新しいチャンネルに対応する１つ以上の定義ファイルを取得し、
前記１つ以上の定義ファイルを実行可能ファイルにコンパイルし、
前記実行可能ファイルを新しいチャネルに登録する、
ことを特徴とするコンピュータ記憶媒体。
【請求項１１】
請求項７に記載のコンピュータ記憶媒体であって、
前記命令は、チャネルを対応するデータベースと関連付けるルーティング情報を管理することをさらに含み、前記システムは、ルーティング情報に基づいてデータチャネルからデータをルーティングするように構成されたコネクタを含み、
前記第２のインタフェースは、定義されたデータルーティングに基づいてルーティング情報への変更を容易にすることによって、複数の分析プロセスへの変更または追加に対応するデータルーティングを定義するように構成される、
ことを特徴とするコンピュータ記憶媒体。
【請求項１２】
請求項７に記載のコンピュータ記憶媒体であって、
前記データチャネルはサブチャネルを含み、前記第１のインタフェースは、前記複数の分析プロセスへの変更または追加に対応する分析プロセスによって利用されるサブチャネルを定義するように構成される、
ことを特徴とするコンピュータ記憶媒体。
【請求項１３】
コアサーバと、前記コアサーバに接続された複数のエッジノードとを有するシステムであって、
前記複数のエッジノードは、前記複数のエッジノード上で受信されたデータに対して複数の分析プロセスを実行し、
前記コアサーバは、
前記複数の分析プロセスへの変更または追加の受信し、
前記複数の分析プロセスへの変更または追加に対応する分析プロセスによって利用されるデータチャネルを定義するように構成された第１のインタフェースを提供し、
前記複数の分析プロセスへの変更または追加に対応するデータルーティングを定義するように構成された第２のインタフェースを提供し、
前記複数の分析プロセスへの変更または追加に対応して、前記第１のインタフェースから受信した第１の修正に基づいてデータチャネルへの変更を前記エッジノードに伝播し、
前記第２のインタフェースから受信した第２の修正に基づいてデータチャネルへのサブスクライブを更新する、
ことを特徴とするシステム。
【請求項１４】
請求項１３に記載のシステムであって、
前記コアサーバのプロセッサは、前記第２の修正に基づいてデータチャネルへのサブスクライブの更新を、
前記データチャネルに関連する１つまたは複数のコネクタにメッセージを送信し、
前記データチャネルに対する新しい経路指定を示すメッセージについては、メッセージを前記データチャネルにサブスクライブし、
前記データチャネルの新しいルーティングを示していないメッセージについては、メッセージの前記データチャネルへの登録を解除することで行う、
ことを特徴とするシステム。
【請求項１５】
請求項１３に記載のシステムであって、
前記コアサーバのプロセッサは、前記第１の修正に基づいてデータチャネルへの変更の伝達を、
gitリポジトリから、最初の変更に対応する１つ以上の定義ファイルを取得し、
前記定義ファイルを実行可能ファイルにコンパイルし、
前記実行可能ファイルをデータチャネルに登録することで行う、
ことを特徴とするシステム。
【請求項１６】
請求項１３に記載のシステムであって、
新しいチャネルの追加を示す前記第１の修正に関して、前記コアサーバのプロセッサは、前記第１の修正に基づいてデータチャネルへの変更の伝播を、
gitリポジトリから、新しいチャンネルに対応する１つ以上の定義ファイルを取得し、
前記１つ以上の定義ファイルを実行可能ファイルにコンパイルし、
前記実行可能ファイルを新しいチャネルに登録することで行う、
ことを特徴とするシステム。
【請求項１７】
請求項１３に記載のシステムであって、
前記システムは、対応するデータベースとチャネルを関連付けるルーティング情報を管理するように構成されたメモリと、ルーティング情報に基づいてデータチャネルからデータをルーティングするように構成されたコネクタを含み、
前記第２のインタフェースは、定義されたデータルーティングに基づいてルーティング情報への変更を容易にすることによって、複数の分析プロセスへの変更または追加に対応するデータルーティングを定義するように構成される、
ことを特徴とするシステム。
【請求項１８】
請求項１３に記載のシステムであって、
前記データチャネルはサブチャネルを含み、前記第１のインタフェースは、前記複数の分析プロセスへの変更または追加に対応する分析プロセスによって利用されるサブチャネルを定義するように構成される、
ことを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にInternet of Things（ＩｏＴ）に関し、より具体的には、エッジコア分散分析システムのためのデータフローの管理に関する。
【背景技術】
【０００２】
ＩｏＴシステムでは、少なくともデータ収集機能およびデータ格納機能を提供する。IoTシステムでは、費用対効果がIoTシステムの導入を促進するため鍵の１つであるため、ネットワークコストとストレージコストを含むデータ管理コストを削減する必要がある。
【０００３】
関連技術の実装は、データ収集およびストレージシステム、特にデータ送信およびデータ取り込みに関するものである。関連技術の実施では、メッセージバスはモジュールを分離するために利用され、システムはそのようなメッセージバスをエッジとクラウドの両方に装備する。メッセージバスは、メッセージバス間のデータ伝送のために本来的にクラスタ機能または連合機能を提供する。
【０００４】
クラスタリング機能は複数のメッセージバスを接続し、１つの大きなメッセージバスとして機能する。この場合、メッセージバス間のメッセージ交換は要求に基づいて実行される。エッジとコア間の伝送量とコストが問題にならない場合は、メッセージ交換によって便利な機能を利用できる。フェデレーション機能は複数のメッセージバスを接続し、予め設定された特定のトピックまたはキーを持つ特定のメッセージのみを交換するため、メッセージバスを部分的に接続するための有効な機能である。ただし、オペレータがデータフローを変更する場合は、トピックまたはキーの設定を手動で変更しなければならない。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
関連技術の実装は、logstashおよびfluentdなどのデータ取り込みソフトウェアを利用する。どちらのソフトウェアもメッセージバスとデータレイクを接続し、メッセージバスからデータを取得し、データをデータレイクに格納することができる。このような実装は、保存されるべきメッセージを選択する。また、構成ファイル（コンフィグレーションファイル）で予約されるトピックまたはキーの選択を可能にすることができる能力を有する。ただし、そのような実装は静的な値で、オペレータがデータレイクへのデータフローを変更したい場合、オペレータは手動で設定を変更する必要がある。
【０００６】
ＩｏＴシステムは、継続的に拡張されることが予想されるアジャイル開発スタイルとして開発される傾向がある。そのため、データの重要性は各開発段階で変わる可能性がある。たとえば、初期段階では、未加工のセンシングデータが有効な機能値を調べるために重要になることがある、一方で、より成熟した段階で（たとえば、分析モジュールをデプロイした後など）、分析結果はより重要になり、生データはもはや必要でなくなる場合がある。
【０００７】
関連技術の実施では、メッセージバス間および／またはメッセージバスとデータレイクとの間の接続の構成は基本的に静的である。そのため、転送および保存されるデータ量は継続的に増加し、その結果、保存およびネットワークのコストが増大することとなる。
【０００８】
そこで、本発明の目的は、ＩｏＴシステム、特にエッジサイトからクラウドサイトへのデータ送信、およびデータレイクへのデータ取り込みのためのストレージおよびトラフィックのコストおよび消費量を削減することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決する本発明のデータアセット分析支援システムの一例は、コアサーバに接続された複数のエッジノードを含み、複数のエッジノードが、複数のエッジノードで受信したデータに関して複数の分析プロセスを実行するシステムのための方法であって、複数の分析プロセスへの変更または追加の受信に対し、複数の分析プロセスへの変更または追加に対応する分析プロセスによって利用されるデータチャネルを定義するように構成された第１のインタフェースを提供し、複数の分析プロセスへの変更または追加に対応するデータルーティングを定義するように構成された第２のインタフェースを提供し、複数の分析プロセスへの変更または追加に対応して、第１のインタフェースから受信した第１の修正に基づいてデータチャネルへの変更を、エッジノードに伝播し、第２のインタフェースから受信した第２の修正に基づいてデータチャネルへのサブスクリプションを更新する。
【発明の効果】
【００１０】
本発明によれば、センサからデータレイクへのデータフローの柔軟性を容易にすることで、所望の実施に従って送信および記憶のコスト／消費を低減することができる。
【００１１】
上記した以外の課題、構成および効果は、以下の発明を実施するための形態の説明により明らかにされる。
【図面の簡単な説明】
【００１２】
【図１】実施例による、コアエッジ分散分析システムの一例を示す図である。
【図２】実施例によるフロー制御ユニットの例示的アーキテクチャを示す図である。
【図３】実施例によるチャネル管理ＧＵＩの一例を示す図である。
【図４】実施例によるルーティング管理ＧＵＩの一例を示す図である。
【図５】実施例による、ユーザ管理テーブルの一例を示す図である。
【図６】実施例によるチャネル管理テーブルの一例を示す図である。
【図７】実施例によるルーティング管理テーブルの一例を示す図である。
【図８】実施例によるチャネル定義コンパイルプログラムの例示的なフローチャートを示す図である。
【図９】実施例による、ルーティングルール伝播プログラムの例示的なフローチャートを示す図である。
【図１０】実施例による、コネクタの例示的アーキテクチャを示す図である。
【図１１】実施例による、サブスクリプションチャネル管理テーブルの一例を示す図である。
【図１２】実施例による、サブスクリプションチャネル更新プログラムの例示的なフローチャートを示す図である。
【図１３】一実装例による手順および関連するメッセージフォーマットの例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して本発明の実施形態を説明する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は単数でも複数でも構わない。
【００１４】
以下の説明では、「テーブル」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「ＸＸテーブル」等を「ＸＸ情報」と呼ぶことがある。識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ＩＤ」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
【００１５】
同一あるいは同様な機能を有する構成要素が複数ある場合には、基本的に同一の符号を付して説明するが、機能が同じであっても機能を実現するための手段が異なる場合がある。
【００１６】
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、中央処理部であるプロセッサ（例えばＣＰＵ）によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）および／またはインターフェースデバイス（例えば通信ポート）等を用いながら行うため、処理の主体はプロセッサであるが、発明の理解を容易にするプログラムを主語として説明される場合がある。
【００１７】
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。
【００１８】
以下の詳細な説明は、本出願の図面および実施例のさらなる詳細を提供する。明確にするために、図面間の参照番号および重複する要素の説明は省略する。説明を通して使用される用語は例として提供されており、限定することを意図していない。例えば、「自動」という用語の使用は、本発明の実装を実践する当業者の所望の実装に応じて、実装の特定の態様に対するユーザまたはオペレータ（以下、管理者とも呼ぶ）による制御を含む全自動または半自動の実装を含み得る。選択は、ユーザインタフェースまたは他の入力手段を介してユーザによって行われ得るか、または所望のアルゴリズムを介して実施され得る。本明細書に記載の実施例は、単独でまたは組み合わせて利用することができ、実施例の機能は、所望の実装形態に従って任意の手段を介して実装することができる。
【００１９】
本開示の態様は、コアサーバに接続された複数のエッジノードを含むシステムのための命令を格納する非一時的コンピュータ可読媒体を含む。命令は、複数の分析プロセスへの変更または追加の受信し、複数の分析プロセスへの変更または追加に対応する分析プロセスによって利用されるデータチャネルを定義するように構成された第１のインタフェースを提供し、複数の分析プロセスへの変更または追加に対応するデータルーティングを定義するように構成された第２のインタフェースを提供し、複数の分析プロセスへの変更または追加に対応して、第１のインタフェースから受信した第１の修正に基づいてデータチャネルへの変更をエッジノードに伝播し、第２のインタフェースから受信した第２の修正に基づいてデータチャネルへのサブスクライブを更新する。
【００２０】
本開示の態様は、コアサーバに接続された複数のエッジノードを含むシステムを含み、複数のエッジノードは、複数のエッジノード上で受信されたデータに対して複数の分析プロセスを実行し、コアサーバは、複数の分析プロセスへの変更または追加の受信し、複数の分析プロセスへの変更または追加に対応する分析プロセスによって利用されるデータチャネルを定義するように構成された第１のインタフェースを提供し、複数の分析プロセスへの変更または追加に対応するデータルーティングを定義するように構成された第２のインタフェースを提供し、複数の分析プロセスへの変更または追加に対応して、第１のインタフェースから受信した第１の修正に基づいてデータチャネルへの変更をエッジノードに伝播し、第２のインタフェースから受信した第２の修正に基づいてデータチャネルへのサブスクライブを更新する。
【００２１】
実施例は、コアおよびコネクタ内のフロー制御ユニットの使用を通じて、センサからデータレイクへのデータフローの柔軟性を容易にすることを目的としている。フロー制御ユニットは、システム内のデータフロー全体を管理し、それらを動的に制御する。結果として、所望の実施に従って送信および記憶のコスト／消費を低減することができる。
【００２２】
後述の実施例では、システムは、フロー制御ユニット上のデータフローを管理して状況に応じてそれらを適切に制御するように構成されている。
【実施例】
【００２３】
図１は、実施例による、コアエッジ分散分析システムの一例を示す図である。この例では、エッジサイトにいくつかのセンサ１０１、メッセージバス１０２、データレイク１０３、およびいくつかのコネクタ１０４がある。コアとなるクラウドには、フロー制御部１０５、メッセージバス１０２、データレイク１０３、およびコネクタ１０４が存在する。  本実施例では、センサ１０１は、温度、湿度、振動などの何かを感知し、測定値をメッセージバス１０２に送信する。メッセージバス１０２は、メッセージ交換の仲介者として機能するよう構成され、センサまたは分析モジュールによって提供されたデータを受信して保存し、その結果を加入者であるクライアントに送信する。データレイク１０３は、将来の使用のためにデータを格納する。コネクタ１０４は、メッセージバス１０２をコア側メッセージバス１０２およびデータレイク１０３などの他の構成要素に接続する。フロー制御ユニット１０５は、送信元から送信先へのデータフローを制御する。エッジとコアは、ワイドエリアネットワーク（WAN）を介して接続される。所望の実施態様に応じて、サイト２の例に示されるように、データレイク１０３を任意に削除し、要求に応じて展開することもできる。
【００２４】
図１に示されるようなエッジノードまたはサイトは、分析モジュール（図示せず）を使用することによってエッジノード上で受信されたデータに対して、複数の分析プロセスを実行し、ユーザによる命令あるいは望ましい実装に応じて、分析プロセスに対する変更または追加を受信することができるように、フロー制御ユニット１０５を通じてコアサーバから修正することができる。
【００２５】
本明細書で説明されるように、フロー制御ユニット１０５が複数の分析プロセスに対する変更または追加を受け取ると、フロー制御ユニット１０５は、図３に示すような変更または分析プロセスに対応する分析プロセスによって利用されるデータチャネルを定義するように構成される第１のインタフェースを提供する。フロー制御ユニット１０５は、図４に示すような複数の分析プロセスへの変更または追加に対応するデータルーティングを定義するように構成された第２のインタフェースを提供する。フロー制御ユニット１０５は、図８と図１３に示すような複数の分析プロセスへの変更または追加に対応して、第１のインタフェースから受信した第１の修正に基づいてデータチャネルへの変更を伝播する。そして、フロー制御ユニット１０５は、図１２に示すように、第２のインタフェースから受信した第２の修正に基づいてデータチャネルへのサブスクリプション（加入）を更新する。
【００２６】
第２のインタフェースから受信した第２の修正に基づいてデータチャネルへのサブスクリプションを更新するための実施例を容易にするために、フロー制御ユニット１０５は、データチャネルに関連する１つ以上のコネクタへメッセージを生成し送信することによってサブスクリプションを更新することができる。データチャネルに対する新しい経路指定を示すメッセージについては、メッセージをデータチャネルに適用させる。そして、データチャネルのための新しいルーティングを示さないメッセージについては、図１２および図１３に示されるように、データチャネルへのメッセージのサブスクリプションを中止する。
【００２７】
第１の修正に基づいてデータチャネルへの変更を伝播するための実装例を容易にするために、フロー制御ユニット１０５は、第１の修正に対応する１つまたは複数の定義ファイルをｇｉｔリポジトリから取得し、定義ファイルを実行可能ファイルにコンパイルする。そして、実行可能ファイルを図８に示すようにデータチャネルに登録する。そのような実施例は、所望の実装形態に従って新しいチャネルおよび/または新しいサブチャネルの追加に対応するように拡張することができる。
【００２８】
フロー制御ユニット１０５は、そのメモリ内で、図２および図５から７に示すデータベースに対応するチャネルに関連付けられたルーティング情報を管理することができる。コネクタ１０４は、ルーティング情報に基づいてデータチャネルからデータをルーティングするようにフロー制御ユニット１０５によって構成することができる。さらに、第２のインタフェースは、図４と図９に示されるように定義されたデータルーティングに基づいて、ルーティング情報への変更を容易にする。これにより、複数の分析プロセスへの変更または追加に対応するデータルーティングを定義するように構成できる。
【００２９】
所望の実施態様に応じて、データチャネルはサブチャネルを含む階層的な方法で配置することができる。サブチャネルは、分析を処理するために特定のデータを指定された分析モジュールに集約するために利用することができる。そのようなサブチャネルは、図３のインタフェースによっても修正することができ、および／または新しいサブチャネルを所望の実装に従って定義することができる。
【００３０】
本明細書に記載の例示的な実装を通じて、コアサーバ側の指定されたユーザインタフェースを利用して分析システムを制御できる。コアサーバ側は、物理的にエッジノードにアクセスして、それらのチャネルおよびルーティング情報を再設定する必要なしに、システムのチャネルおよびエッジノードにおけるルーティングを変更することができる。
【００３１】
実施例では、機能性は、所望の実装形態に従って分析システムを構成するための２つの新しいインタフェースを利用して、gitリポジトリおよびコネクタを制御することができる。
【００３２】
図２は、実施例によるフロー制御ユニット１０５の例示的アーキテクチャを示す。フロー制御ユニット１０５は、メモリ２００と、中央処理装置（ＣＰＵ）２０１と、入出力（Ｉ ／ Ｏ）インタフェース２０２と、ネットワークインタフェース（Ｉ ／ Ｆ）２０３と、内部記憶装置２０４とを含む。ＣＰＵ２０１は、メモリ２００に格納されたプログラムやグラフィカルユーザインタフェース（ＧＵＩ）を実行するため、一以上のハードウェアプロセッサ、ソフトウェアとハードウェアとの組合せ、によって構成される。Ｉ ／ Ｏインタフェース２０２は、所望の実施に従ってタッチスクリーン、キーボード、マウスなどの入力装置を介してフロー制御ユニット１０５への入力および出力を容易にするように構成される。ネットワークＩ ／ Ｆ２０３は、フロー制御部１０５とＷＡＮとの接続する。内部記憶装置２０４は追加の記憶装置を提供し、所望の実施態様に応じてデータレイクとしても機能することができる。
【００３３】
メモリ２００は、チャネル管理ＧＵＩ２００−１、ルーティング管理ＧＵＩ２００−２、チャネル定義コンパイルプログラム２００−３、ルーティングルール伝播プログラム２００−４、ユーザ管理テーブル２００−５、チャネル管理テーブル２００−６、ルーティング管理テーブル２００−７を格納するように構成される。
【００３４】
チャネル定義コンパイルプログラム２００−３は、オペレータがチャネル管理ＧＵＩ２００−１を介してチャネル定義を作成または更新したときに実行される。ルーティングルール伝播プログラム２００−４は、オペレータがルーティング管理ＧＵＩ２００−２を介してルーティングルールを作成または更新したときに実行される。チャンネル管理ＧＵＩ２００−１を介して作成されたチャンネル定義は、チャンネル管理テーブル２００−６に格納される。ルーティング管理ＧＵＩ２００−２を介して作成されたルーティングルールは、ルーティング管理テーブル２００−７に格納される。これらの要素のさらなる詳細は本明細書に記載されている。
【００３５】
図３は、一実装例による、チャネル管理ＧＵＩ２００−１の一例を示す。このＧＵＩにおいて、オペレータはＢａｓｉｃ Ｉｎｆｏｒｍａｔｉｏｎ(基本情報)、Ｍｅｓｓａｇｅ Ｆｏｒｍａｔ（メッセージフォーマット）およびＭｅｓｓａｇｅ Ｄｅｆｉｎｉｔｉｏｎ（メッセージ定義）を含むチャンネル情報を記入する。基本情報は、チャネルを一意に識別するための関連ID（ID）である。この例では、IDは、インデックス、およびタイプの２つのレイヤがあり、これらの組み合わせによって一意のIDが得られる。メッセージフォーマットはメッセージの種類を示す。この例では、メッセージフォーマットは、生データ、ＪａｖａＳｃｒｉｐｔ Ｏｂｊｅｃｔ Ｎｏｔａｔｉｏｎ（ＪＳＯＮ）、およびｐｒｏｔｏｂｕｆ（すなわちプロトコルバッファ）から選択することができる。メッセージ定義は、gitなどのリポジトリに格納されているメッセージ定義ファイルへのポインタである。メッセージ定義は、protobufなどのメッセージフォーマットでメッセージ定義が必要な場合に使用する。各フィールドは、チャネル管理テーブル２００−６からのフィールドと関連付けられている。
【００３６】
本実施例では、オペレータは必要なフィールドに記入して作成ボタンを選択すると、チャンネル定義コンパイルプログラム２００−３が実行する。プログラムが正常に終了した後、そのようなフィールドの値はチャネル管理テーブル２００−６に格納される。
【００３７】
図４は、本実施例によるルーティング管理ＧＵＩ２００−２の一例を示す。このＧＵＩにおいて、オペレータは、基本情報を含むルーティングルールを入力する。ルーティングルールは、エッジからクラウドへのルーティングルール、およびメッセージバスからデータレイクへのルーティングルールを含む。基本情報は、制御されるチャンネルを示す。ルーティングルールには、パス/ブロックなどのルール、または高/低/ブロックなどのオプションがある。その場合、「高」はできるだけ早くデータを転送するルーティングルールを示し、「低」はデータを一時的にキャッシュし、特定の条件が満たされた後にデータを転送するルーティングルールを示す。
【００３８】
各フィールドは、ルーティング管理テーブル２００−７のフィールドと対応付けられている。オペレータが必要なフィールドに入力して作成ボタンを選択すると、ルーティングルール伝播プログラム２００−４が実行される。プログラムの実行に成功すると、それらのフィールドの値がルーティング管理テーブル２００−７に格納される。
【００３９】
図５は、一実装例による、ユーザ管理テーブル２００−５の一例を示す。テーブルの各行はgitアカウント情報などのアカウント情報を示す。このテーブルには、ＵＳＥＲ ＩＤ（ユーザID）、Ｄｏｍａｉｎ Ｎａｍｅ（ドメイン名）、Ｕｓｅｒｎａｍｅ（ユーザ名）、およびＡｃｃｅｓｓ Ｔｏｋｅｎ(アクセストークン)が含まれる。ユーザIDは、チャネル定義を作成したオペレータのオペレータIDを格納する。Git情報にはドメイン名、ユーザ名、アクセストークンが含まる。ドメイン名は、チャンネル定義を格納するgitリポジトリのドメイン名、ユーザ名とアクセストークンは、gitリポジトリにアクセスするために利用される情報を示す。
【００４０】
図６は、本実施例によるチャネル管理テーブル２００−６の一例を示す。テーブルの各行は、チャネル管理ＧＵＩ２００−１を介して作成されたチャネル情報を示す。このテーブルには、Ｃｈａｎｎｅｌ ＩＤ（チャネルID）、Ｍｅｓｓａｇｅ Ｆｏｒｍａｔ（メッセージフォーマット）、およびＭｅｓｓａｇｅ Ｄｅｆｉｎｉｔｉｏｎ（メッセージ定義）が含まれる。この例では、チャンネルIDはチャンネル識別子として、インデックスとタイプの２つの層を含む。メッセージフォーマットは、JSON、protobufなどのメッセージの種類を格納する。メッセージ定義は、gitリポジトリなどのリポジトリにメッセージ定義ファイルへのポインタを格納する。
【００４１】
図７は、本実施例によるルーティング管理テーブル２００−７の一例を示す。テーブルの各行は、ルーティング管理ＧＵＩ２００−２を介して作成されたルーティング情報を示す。このテーブルには、チャネルIDとＲｏｕｔｉｎｇ Ｒｕｌｅ（ルーティングルール）が含まれる。この例では、チャンネルＩＤは、チャンネル管理テーブル２００−６のチャンネルの行番号を格納する。ルーティングルールには、クラウドに送信するためのフラグ、エッジおよびクラウド用のデータベースフラグなど、コネクタに関連付けられた複数の列が含まれている。
【００４２】
この例では、２種類のコネクタがある。１つは、エッジとクラウドの間でメッセージバスを接続するためのもので、「Transmission to cloud」列に示されている。もう１つのタイプは、メッセージバスをデータベースに接続するためのもので、「Database」列に関連付けられている。コネクタの配置場所も、エッジにあるのかクラウドにあるのかなどの列に含まれている。たとえば、行「＃1」は、チャネルＩＤ＃1のデータがエッジデータレイクに格納され（True）、クラウド側に送信されない（False）ことを示している。
【００４３】
図８は、本実施例による、チャネル定義コンパイルプログラム２００−３の処理フローを示すフローチャートである。チャネル定義コンパイルプログラム２００−３は、オペレータがチャネル管理ＧＵＩ２００−１を介してチャネル定義を作成または更新するたびに実行される。このプログラムは、チャンネル管理ＧＵＩからチャンネル定義を受け取り（ステップ８０１）、チャンネルのメッセージフォーマットをチェックし、チャネル定義が必要かを判定する（ステップ８０２）。メッセージフォーマットがチャネル定義を必要とする場合（Ｙｅｓ）、プログラムは８０３に進んでコンパイルを実行し、そうでない場合（Ｎｏ）は終了する。
【００４４】
ステップ８０３で、プログラムは、ユーザ管理テーブル２００−５に格納されているユーザ名およびトークンを資格情報として使用することによって、リポジトリ（たとえば、ｇｉｔリポジトリ）からメッセージ定義ファイルをダウンロードする。次に、プログラムは定義ファイルをコンパイルして実行可能ファイルを生成する（ステップ８０４）。そして、ファイルを格納し、チャネル管理テーブル２００−６のファイルＵＲＬ（Uniform Resource Link）列にポインタを登録する(ステップ８０５)。
【００４５】
図９は、本実施例によるルーティングルール伝播プログラム２００−４の処理フローを示すフローチャートである。オペレータがルーティング管理ＧＵＩ２００−２を介してルーティングルールを作成または更新するときは、いつでもプログラムが実行される。このプログラムは、ルーティング管理ＧＵＩ２００−２からルーティングルールを受け取り（ステップ９０１）、次にルーティングルール更新メッセージを作成する（ステップ９０２）。次に、プログラムはメッセージをシステム内の各コネクタに送信する（ステップ９０３）。メッセージは、目的の実装に応じて、メッセージバスを介して、または直接各コネクタに送信できる。
【００４６】
図１０は、本実施例の実装による、コネクタ１０４の例示的アーキテクチャを示す。フロー制御ユニット１０５と同様に、コネクタ１０４は、メモリ１０００、ＣＰＵ１００１、Ｉ ／ Ｏ１００２、ネットワークＩ ／ Ｆ１００３、および内部記憶装置１００４を有する。この例では、メモリ１０００は、サブスクリプションチャネル更新プログラム１０００−１およびサブスクリプション(加入)チャネル管理テーブル１０００−２を記憶するように構成される。サブスクリプションチャネル更新プログラム１０００−１は、コネクタ１０４がフロー制御部１０５からルーティングルール更新メッセージを受信するたびに実行される。サブスクリプションチャネル更新プログラム１０００−１は、その途中でサブスクリプションチャネル管理テーブル１０００−２を使用する。その詳細は本明細書に記載されている。
【００４７】
図１１は、本実施例による、サブスクリプションチャネル管理テーブル１０００−２の一例を示す。テーブルの各行は、フロー制御ユニット１０５によってルーティングルール更新メッセージで制御されるチャネルステータスを示す。このテーブルには、チャネルID、Ｓｕｂｓｃｒｉｂｅ Ｓｔａｔｕｓ（サブスクライブステータス）、およびＣｈａｎｎｅｌ Ｄｅｓｅｒｉａｌｉｚｅｒ(チャネルデシリアライザ)ポインタが含まれる。チャンネルＩＤはチャンネル識別子を格納する。この例では、チャンネルＩＤは、チャンネル管理テーブル２００−６のチャンネルの行番号を示す。サブスクリプションステータスは、メッセージバスがサブスクリプションされているかどうかにかかわらず、メッセージバスに設定されている現在のステータスを格納する。チャネルデシリアライザは、チャネル内のメッセージをデシリアライズするために実行可能ファイルへのポインタを格納する。
【００４８】
図１２は、本実施例による、サブスクリプションチャネル更新プログラム１０００−１の例示的フローチャートを示す。プログラムは、フロー制御部１０５からルーティングルール更新メッセージを受信するたびに実行される。
【００４９】
このサブスクリプションチャネル更新プログラム１０００−１は、フロー制御部１０５からルーティングルール更新メッセージを受信すると、ルーティングルール更新メッセージを解析し（ステップ１２０１）、コネクタの種類と位置に関するルーティングルールを検索する（ステップ１２０２）。実施を容易にするために、コネクタのタイプおよびコネクタの位置は予め記憶されているものとする。本実施例の例では、コネクタ１０４は、メッセージバスを接続するためのものとデータレイクを接続するためのものの２種類を有する。コネクタの場所は、エッジまたはクラウドを表す。
【００５０】
ステップ１２０３で、プログラムは、現在のルーティングルールと新しいルーティングルールとを比較する。つまり、現在のルーティングルールをサブスクリプションチャネル管理テーブル１０００−２からの新しいサブスクリプションステータスと比較する。ステップ１２０４において、値が異なると判定された場合（Ｙｅｓ）は、ステップ１２０５に進み、そうでない場合（Ｎｏ）は、フローは終了する。
【００５１】
ステップ１２０５で、プログラムは、ルーティングルール更新メッセージに従って、新しいルーティングルールが実施されたかどうかを判定することによってメッセージバス上のサブスクリプショントピック（またはキー）を更新する。もしそうであれば（Ｙｅｓ）、ステップ１２０６でメッセージはチャンネルにサブスクリプションされる。そうでなければ（Ｎｏ）、フローはステップ１２０７に進み、チャンネルへのメッセージのサブスクリプションを中止する。ステップ１２０８で、サブスクリプションチャンネル管理テーブル１０００−２がそれに応じて更新される。
【００５２】
図１３は、本実施例による手順および関連するメッセージフォーマットの例を示す図である。これらの手順は、図２に示すＧＵＩを介してオペレータによって引き起こされる。つまり、チャネル定義が作成／更新された場合、チャネル定義コンパイルプログラムの処理後、チャネル定義更新メッセージがフロー制御部１０５からコネクタ１０４に送信される。
【００５３】
チャネル定義更新メッセージのメッセージフォーマットは、チャネルＩＤ１３００と、チャネル内のメッセージを逆シリアル化するための実行可能ファイルをダウンロードするためのポインタである定義ファイルＵＲＬ１３０１とを含む。メッセージを受信したコネクタは、そのURLに対応する実行可能ファイルを取得する。ルーティングルールが作成／更新された場合、ルーティングルール伝播プログラム２００−４の処理後にルーティングルール更新メッセージがフロー制御ユニットからコネクタに送信される。ルーティング定義更新メッセージは、ルーティング管理テーブルと同じ情報を含むことができるチャネルＩＤ１３００およびルーティングルール１３０２を含む。
【００５４】
本明細書に記載の実施例の実行を通じて、センサからクラウド、データレイク、または他のシステムへのデータフロー管理の柔軟性は、システム内の全体のデータフローの管理およびそのようなフローに対する動的制御を容易にすることができる。
【００５５】
詳細な説明のいくつかの部分は、コンピュータ内の動作のアルゴリズムおよび記号表現に関して提示されている。これらのアルゴリズム記述および記号表現は、他の当業者に彼らの革新の本質を伝えるためにデータ処理分野の当業者によって使用される手段である。アルゴリズムは、所望の最終状態または結果に至る一連の定義されたステップである。実施例では、実行されるステップは、具体的な結果を達成するための具体的な量の物理的操作を必要とする。
【００５６】
特に明記しない限り、説明から明らかなように、説明全体を通して、「処理」、「計算」、「計算」、「決定」、「表示」などの用語を利用した説明が理解される。コンピュータシステムのレジスタおよびメモリ内の物理（電子）量として表されるデータを操作し、コンピュータシステムのメモリまたはレジスタ内の物理量として同様に表される他のデータに変換するコンピュータシステムまたは他の情報処理装置の動作およびプロセスを含むことができる。
【００５７】
実施例はまた、本明細書の動作を実行するための装置にも関連し得る。この装置は、要求される目的のために特別に構成されてもよく、あるいは１つ以上のコンピュータプログラムによって選択的に起動または再構成される１つ以上の汎用コンピュータを含んでもよい。そのようなコンピュータプログラムは、コンピュータ可読記憶媒体またはコンピュータ可読信号媒体などのコンピュータ可読媒体に格納することができる。コンピュータ可読記憶媒体は、光ディスク、磁気ディスク、読み取り専用メモリ、ランダムアクセスメモリ、固体デバイスおよびドライブ、または適切な他の任意のタイプの有形または非一時的媒体などの有形の媒体を含むことができるがこれらに限定されない。電子情報を保存するため、コンピュータ可読信号媒体は、搬送波などの媒体を含み得る。本明細書に提示されたアルゴリズムおよび表示は、いかなる特定のコンピュータまたは他の装置にも本質的に関連していない。コンピュータプログラムは、所望の実装の動作を実行する命令を含む純粋なソフトウェア実装を含むことができる。
【００５８】
本明細書の実施例に従って様々な汎用システムをプログラムおよびモジュールと共に使用することができ、または所望の方法ステップを実行するためにより専門的な装置を構築することが便利であることを証明することができる。さらに、実施例は、任意の特定のプログラミング言語を参照して説明されていない。当然のことながら、本明細書に記載の実施例の教示を実装するために様々なプログラミング言語を使用することができる。プログラミング言語の命令は、１つまたは複数の処理装置、例えば中央処理装置（ＣＰＵ）、プロセッサ、またはコントローラによって実行することができる。
【００５９】
当技術分野で知られているように、上記の動作は、ハードウェア、ソフトウェア、またはソフトウェアとハードウェアの何らかの組合せによって実行することができる。実施例の様々な態様は、回路および論理デバイス（ハードウェア）を使用して実装され得るが、他の態様は、プロセッサによって実行されるとプロセッサに実行させる機械可読媒体（ソフトウェア）に格納された命令を使用して実装され得る。さらに、本出願のいくつかの実施例は、ハードウェア内でのみ実行されてもよく、他の実施例は、ソフトウェア内でのみ実行されてもよい。さらに、説明した様々な機能は、単一のユニットで実行することができ、または任意の数の方法で複数の構成要素に分散することができる。ソフトウェアによって実行されるとき、方法は、コンピュータ可読媒体に格納された命令に基づいて、汎用コンピュータなどのプロセッサによって実行され得る。必要に応じて、命令は圧縮および／または暗号化フォーマットで媒体に格納することができる。
【００６０】
さらに、他の実施例は、本明細書の考察および本出願の教示の実践から当業者には明らかであろう。説明された実施例の様々な態様および／または構成要素は、単独でまたは任意の組合せで使用され得る。本明細書および実施例の実装は例としてのみ考慮されることを意図しており、本出願の真の範囲および精神は特許請求の範囲によって示される。
【００６１】
以上の処理により、センサからデータレイクへのデータフローの柔軟性を容易にすることで、所望の実施に従って送信および記憶のコスト／消費を低減することができる。
【００６２】
コアサーバ側は、物理的にエッジノードにアクセスして、それらのチャネルおよびルーティング情報を再設定する必要なしに、システムのチャネルおよびエッジノードにおけるルーティングを変更することができる。
【符号の説明】
【００６３】
１０１：センサ、１０２：メッセージバス、１０３：データレイク、１０４：コネクタ、１０５：フロー制御部、
２００：メモリ、２００−１：チャネル管理ＧＵＩ、２００−２：ルーティング管理ＧＵＩ、２００−３：チャネル定義コンパイルプログラム、２００−４：ルーティングルール伝播プログラム、２００−５：ユーザ管理テーブル、２００−６：チャネル管理テーブル、２００−７：ルーティング管理テーブル、２０１：ＣＰＵ、２０２：入出力（Ｉ ／ Ｏ）インタフェース、２０３：ネットワークインタフェース（Ｉ ／ Ｆ）、２０４：内部記憶装置
１０００：メモリ、１０００−１：サブスクリプションチャネル更新プログラム、１０００−２：サブスクリプションチャネル管理テーブル、１００１：ＣＰＵ、１００２：入出力（Ｉ ／ Ｏ）インタフェース、１００３：ネットワークＩ ／ Ｆ、１００４：内部記憶装置。
【図１】
2020022153.tif 000003
【図２】
2020022153.tif 000004
【図３】
2020022153.tif 000005
【図４】
2020022153.tif 000006
【図５】
2020022153.tif 000007
【図６】
2020022153.tif 000008
【図７】
2020022153.tif 000009
【図８】
2020022153.tif 000010
【図９】
2020022153.tif 000011
【図１０】
2020022153.tif 000012
【図１１】
2020022153.tif 000013
【図１２】
2020022153.tif 000014
【図１３】
2020022153.tif 000015