(58)【調査した分野】(Int.Cl.,DB名)
前記受信したデータを前記ストリーム処理することが、1つの処理単位である1つのオペレーターを複数組み合わせて構成された第1のストリーム処理ラインにおいて実行される、請求項1に記載の方法。
前記オペレーターの組み合わせの再配置が、前記欠損の可能性の確率、前記欠損の種類、前記欠損による処理結果の影響範囲、処理結果の出力の優先順位、前記オペレーターの依存関係、前記更新の為に許容される処理時間、若しくは前記更新の為に使用可能なシステム・リソース、又はそれらの組み合わせに従って決定される、請求項3〜5のいずれか一項に記載の方法。
前記オペレーターの組み合わせの再配置が、前記更新の為に許容される処理時間若しくは前記更新の為に使用可能なシステム・リソース又はそれらの組み合わせに制限があることに応じて、処理結果の出力の優先順位に従って決定される、請求項3〜5のいずれか一項に記載の方法。
前記ストリーム処理手段が、前記受信したデータの前記ストリーム処理を、1つの処理単位である1つのオペレーターを複数組み合わせて構成された第1のストリーム処理ラインにおいて実行し、
前記コンピュータ・システムが、
前記ストリーム処理で得られた結果を更新するために使用されるオペレーターの組み合わせを再配置して、当該更新をするために使用する第2のストリーム処理ラインを定義するオペレーター再配置手段
をさらに備えている、請求項18に記載のコンピュータ・システム。
データを処理するコンピュータ・システム用プログラムであって、コンピュータ・システムに、請求項1〜17のいずれか一項に記載の方法の各ステップを実行させる前記コンピュータ・システム用プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0019】
従来は、大量データの処理方法として、大量データをコンピュータに一旦保存しておいて、そして分析するのが主流であった。この処理方法は、データベースを使用したストック型のデータ技術である。
【0020】
近年、時々刻々と流れてくる大量かつ多様なデータ(ストリーム・データ又はイベントとも呼ばれる)を、保存するのではなく、リアルタイムにサーバで処理するストリーム・コンピューティングが注目を浴びてきている。ストリーム・コンピューティングによって、1秒間に数万〜数百万件のデータを処理できるようになっている。ストリーム・コンピューティングは、並列処理を実現するプログラミング手法の一つであり、ストリーム・プロセッシングを用いることにより、コンピュータ・プログラマーは、チップ上の多数のコア(又は、演算の単位)や、それぞれに接続されたバスやメモリ、I/Oなどを別々に管理する必要が無いという恩恵を受けることが可能である。
【0021】
近年、多くのセンサやデバイスが世界中で利用されている。例えば自動車、道路、及び工場には種々のセンサが組み込まれている。これらセンサやデバイスから送信される種々のデータ(例えば、制御情報、位置情報、移動状況、温度)を逐一収集し、リアルタイムに分析して活用すること(すなわち、ストリーム処理すること)で、企業又は個人に役立つ種々の即時サービスの実現が可能である。
【0022】
そして、ストリーム・コンピューティングの実現により、現実世界に起こる多様な事象や状況の変化をリアルタイムに認識し、それらに対して迅速にアクションを起こしたり、適切なサービスを提供したりすることが可能になる。
【0023】
しかしながら、リアルタイムでデータを受信する場合に、データの一部が転送経路で欠損する場合がある。そのような場合には、リアルタイムでデータの解析をしつつ、欠損の無いデータを用いて、データを再評価する必要がある場合がある。また、そのような再評価を短時間でしかも限られたシステム・リソースで行わなければならないような場合がある。
【0024】
例えば、自動車開発において行われるテスト走行について考えてみる。
【0025】
自動車には、数多くの電子制御ユニット(Electronic Control Unit、ECU)が搭載されており、数多くのセンサから種々のデータ(ビッグデータであり、また測定値でもある)を収集している。テスト走行では、リアルタイムで、電子制御ユニットから種々のデータを収集して、分析し、活用している。
【0026】
しかしながら、ストリーム処理を行うためにサーバ・コンピュータが、テスト走行中の自動車から種々のデータをリアルタイムでリモート・システムから受信する場合に、当該データの一部がデータ転送経路において欠損する場合がある。上記サーバ・コンピュータは、データの一部が欠損していても、当該データについてストリーム処理を行い続け、当該データをリアルタイムに分析し、テスト走行の現場にフィードバックする。
【0027】
自動車には、上記種々のデータを格納した記録媒体がある。そこで、自動車テスト走行終了後に、上記記録媒体を取り出して、又は上記記録媒体から上記種々のデータを他の記録媒体にコピーすることによって、欠損のないデータを得ることができる。
【0028】
テスト走行中に、リアルタイムで上記種々のデータの解析をし、そして分析結果(データの一部が欠損しているデータに基づく仮の結果でもある)をモニタすることは、テスト走行において例えば実際の路面状態による運転特性の取得や、車の制御(例えば、エンジン回転数又はギアの設定)やハンドリングなどの様々な運転操作をリアルタイムに指示する為に重要である。そのために、欠損のないデータが揃ってから(すなわち、テスト走行が終了してから)、当該種々のデータ処理をし始めるのでは、走行中の有効なデータ取得ができず、テスト走行中の評価が十分にできなくなる。
【0029】
また、欠損のないデータを数日又は数週間掛けて分析してもよい場合には、上記欠損のないデータの分析に数時間から十時間掛けて行ってもよい。
【0030】
しかしながら、通常は性能評価のために数時間のテスト走行を行い、その結果を受けて車の調整や設定変更、燃料補給などの作業を行った後、再度テスト走行を行うといった繰り返しを何度か行う。例えば1度目のテスト走行があり、その終了直後に車の調整作業などを行った上で2度目のテスト走行テストを行う場合において、1度目のテスト走行の結果を限られた時間で効果的に評価し次の走行で有効に利用する為には、1度目のテスト走行終了後の限られた時間(例えば、10〜30分程度)で、当該1度目のテスト走行の結果として上記欠損のないデータを分析する必要がある。
【0031】
そこで、本発明は、欠損を含むデータをリアルタイムにストリーム処理(例えば、集計処理)し、その後、上記ストリーム処理で得られた結果を更新する技法を提供することを目的とする。
【0032】
また、本発明は、上記欠損のないデータを受信した場合に、短時間でしかも限られたシステム・リソースで、当該リアルタイムで得られた結果を更新することを可能にする技法を提供することを目的とする。
【課題を解決するための手段】
【0033】
本発明は、データを処理する技法を提供する。当該技法は、上記データを処理する方法、並びに、上記データを処理する為のコンピュータ・システム、コンピュータ・システム用プログラム及びコンピュータ・システム用プログラム製品を包含しうる。
【0034】
(本発明に従う第1の態様)
【0035】
本発明に従う第1の態様において、データを処理する方法は、コンピュータが、
データを受信し、当該受信したデータをリアルタイムにストリーム処理しながら、当該受信したデータ中の欠損の可能性のある部分を検出するステップと、
上記受信したデータに対応し且つ欠損のないマスター・データと、上記欠損の可能性のある部分とを比較し、上記欠損が存在することに応じて、上記マスター・データを使用して上記ストリーム処理で得られた結果を更新するステップと
を実行することを含む。
【0036】
本発明の一つの実施態様において、上記受信したデータをストリーム処理することが、1つの処理単位である1つのオペレーターを複数組み合わせて構成された第1のストリーム処理ラインにおいて実行されうる。
【0037】
本発明の一つの実施態様において、上記コンピュータ・システムが、
上記ストリーム処理で得られた結果を更新するために使用されるオペレーターの組み合わせを再配置して、当該更新をするために使用する第2のストリーム処理ラインを定義するステップ
をさらに実行することを含みうる。
【0038】
本発明の一つの実施態様において、上記ストリーム処理で得られた結果を更新するステップが、
上記マスター・データを上記第2のストリーム処理ラインに従って処理し、当該処理により得られた結果で、上記ストリーム処理で得られた結果を更新するステップ
を含みうる。
【0039】
本発明の一つの実施態様において、上記コンピュータ・システムが、
上記再配置されたオペレーターそれぞれを上記コンピュータ・システム上の複数のプロセッサ・ノード又は複数の仮想プロセッサ・ノード上に配置するステップ
をさらに実行することを含みうる。
【0040】
本発明の一つの実施態様において、上記オペレーターの組み合わせの再配置が、上記欠損の可能性の確率、上記欠損の種類、上記欠損による処理結果の影響範囲、処理結果の出力の優先順位、上記オペレーターの依存関係、上記更新の為に許容される処理時間、若しくは上記更新の為に使用可能なシステム・リソース、又はそれらの組み合わせに従って決定されうる。
【0041】
本発明の一つの実施態様において、上記オペレーターの組み合わせの再配置が、上記更新の為に許容される処理時間若しくは上記更新の為に使用可能なシステム・リソース又はそれらの組み合わせに制限があることに応じて、処理結果の出力の優先順位に従って決定されうる。
【0042】
本発明の一つの実施態様において、上記受信したデータ中の欠損の可能性のある部分を検出するステップが、
上記欠損の可能性のあるデータ範囲、上記欠損の可能性の確率、上記欠損の種類、上記欠損による処理結果の影響範囲、上記処理結果の出力の優先順位、上記ストリーム処理が1つの処理単位である1つのオペレーターを複数組み合わせて構成されたストリーム処理ラインにおいて実行される場合のオペレーターの依存関係、上記オペレーターが上記ストリーム処理に要した処理時間、若しくは上記オペレーターが上記ストリーム処理に要したシステム・リソース、又はそれらの組み合わせを出力するステップ
をさらに含みうる。
【0043】
本発明の一つの実施態様において、上記データが少なくとも1つのセンサからの測定値であり、
上記受信したデータ中の欠損の可能性のある部分を検出するステップが、
上記測定値を使用して又は上記ストリーム処理によりリアルタイムに算出された集計値を使用して、上記欠損の可能性のある部分を検出するステップ
を含みうる。
【0044】
本発明の一つの実施態様において、上記データが少なくとも1つのセンサからの測定値であり、
上記受信したデータ中の欠損の可能性のある部分を検出するステップが、
各測定値の収集間隔を検出するステップ
をさらに含みうる。
【0045】
本発明の一つの実施態様において、上記受信したデータ中の欠損の可能性のある部分を検出するステップが、
上記収集間隔の違いが検出されることに応じて、当該違いが検出された部分のデータを欠損の可能性のある部分として検出するステップ
を含みうる。
【0046】
本発明の一つの実施態様において、上記ストリーム処理で得られた結果を更新するステップが、
上記ストリーム処理した結果のうち上記収集間隔の違いによる欠損から生じた結果を、上記マスター・データを処理して得られた結果で更新するステップ
を含みうる。
【0047】
本発明の一つの実施態様において、上記受信したデータ中の欠損の可能性のある部分を検出するステップが、
時系列中で値が欠落していること、
値が異常値であること、
値が一定期間変わらないこと、
値の変化率が異常であること、
センサの収集間隔が違うこと、
関連する複数の属性の相関が異常であること、若しくは、
繰り返し行動から得られる値の差を比較することによって得られる値が異常であること
に応じて、又は、
欠損履歴を格納した欠損履歴データを参照して、
上記欠損の可能性のある部分を検出するステップ
を含みうる。
【0048】
本発明の一つの実施態様において、上記ストリーム処理で得られた結果を更新するステップが、
上記欠損が存在することに応じて、当該欠損がある部分から生じた結果を更新するように、上記マスター・データを処理するステップ
を含みうる。
【0049】
本発明の一つの実施態様において、上記ストリーム処理で得られた結果を更新するステップが、
上記更新状況を示すレポートをリアルタイムで更新するステップ
をさらに含みうる。
【0050】
本発明の一つの実施態様において、上記更新状況を示すレポートが、
上記更新が終了したこと、
上記欠損が存在しなかったこと、又は、
上記更新の終了予定時刻若しくは上記更新の進捗割合
を含みうる。
【0051】
本発明の一つの実施態様において、上記ストリーム処理で得られた結果を更新するステップが、
上記更新の為に許容される処理時間内に、上記更新を終了することが出来ない場合には、当該更新処理を中止するステップと、
上記中止した時点で更新されなかった結果にマーク付けするステップと
をさらに含みうる。
【0052】
本発明の一つの実施態様において、上記ストリーム処理で得られた結果を更新するステップは、
上記ストリーム処理で得られた結果と上記欠損のないデータを処理して得られた結果との差分を算出して、上記ストリーム処理で得られた結果を上記算出した差分で修復するステップ
を含みうる。
【0053】
(本発明に従う第2の態様)
【0054】
本発明に従う第2の態様において、欠損データを再処理するコンピュータ・システムは、
データを受信するデータ受信手段と、
上記受信したデータをリアルタイムにストリーム処理するストリーム処理手段と、
上記ストリーム処理中に、上記受信したデータ中の欠損の可能性のある部分を検出する欠損可能性検出手段と、
上記受信したデータに対応し且つ欠損のないマスター・データと、上記欠損の可能性のある部分とを比較し、上記欠損が存在することを検証する欠損検証手段と、
上記欠損が存在することに応じて、上記マスター・データを使用して上記ストリーム処理で得られた結果を更新するストリーム処理結果更新手段と
を備えている。
【0055】
本発明の一つの実施態様において、上記ストリーム処理手段が、上記受信したデータの上記ストリーム処理を、1つの処理単位である1つのオペレーターを複数組み合わせて構成された第1のストリーム処理ラインにおいて実行しうる。
【0056】
本発明の一つの実施態様において、上記コンピュータ・システムが、
上記ストリーム処理で得られた結果を更新するために使用されるオペレーターの組み合わせを再配置して、当該更新をするために使用する第2のストリーム処理ラインを定義するオペレーター再配置手段
をさらに備えうる。
【0057】
本発明の一つの実施態様において、上記ストリーム処理結果更新手段が、上記マスター・データを上記第2のストリーム処理ラインに従って処理し、当該処理により得られた結果で、上記ストリーム処理で得られた結果を更新しうる。
【0058】
本発明の一つの実施態様において、上記コンピュータ・システムが、上記再配置されたオペレーターそれぞれを上記コンピュータ・システム上の複数のプロセッサ・ノード又は複数の仮想プロセッサ・ノード上に配置する配置手段をさらに備えうる。
【0059】
本発明の一つの実施態様において、上記オペレーター再配置手段が、上記オペレーターの組み合わせの再配置を、上記欠損の可能性の確率、上記欠損の種類、上記欠損による処理結果の影響範囲、処理結果の出力の優先順位、上記オペレーターの依存関係、上記更新の為に許容される処理時間、若しくは上記更新の為に使用可能なシステム・リソース、又はそれらの組み合わせに従って決定しうる。
【0060】
本発明の一つの実施態様において、上記オペレーター再配置手段が、上記オペレーターの組み合わせの再配置を、上記更新の為に許容される処理時間若しくは上記更新の為に使用可能なシステム・リソース又はそれらの組み合わせに制限があることに応じて、処理結果の出力の優先順位に従って決定しうる。
【0061】
本発明の一つの実施態様において、上記欠損可能性検出手段が、上記欠損の可能性のあるデータ範囲、上記欠損の可能性の確率、上記欠損の種類、上記欠損による処理結果の影響範囲、上記処理結果の出力の優先順位、若しくは上記ストリーム処理が1つの処理単位である1つのオペレーターを複数組み合わせて構成されたストリーム処理ラインにおいて実行される場合のオペレーターの依存関係、又はそれらの組み合わせをさらに出力しうる。
【0062】
本発明の一つの実施態様において、上記コンピュータ・システムがさらに、上記オペレーターが上記ストリーム処理に要した処理時間、若しくは上記オペレーターが上記ストリーム処理に要したシステム・リソース、又はそれらの組み合わせをさらに出力するストリーム処理時間算出部を備えうる。
【0063】
本発明の一つの実施態様において、上記データが少なくとも1つのセンサからの測定値であり、
上記欠損可能性検出手段が、上記測定値を使用して又は上記ストリーム処理によりリアルタイムに算出された集計値を使用して、上記欠損の可能性のある部分を検出しうる。
【0064】
本発明の一つの実施態様において、上記データが少なくとも1つのセンサからの測定値であり、
上記コンピュータ・システムがさらに、各測定値の収集間隔を検出するデータ収集間隔検出手段を備えうる。
【0065】
本発明の一つの実施態様において、上記欠損可能性検出手段が、上記各測定値の上記収集間隔の違いが検出されることに応じて、当該違いが検出された部分のデータを欠損の可能性のある部分として検出しうる。
【0066】
本発明の一つの実施態様において、上記ストリーム処理結果更新手段が、上記ストリーム処理した結果のうち上記収集間隔の違いによる欠損から生じた結果を、上記マスター・データを処理して得られた結果で更新しうる。
【0067】
本発明の一つの実施態様において、上記欠損可能性検出手段が、
時系列中で値が欠落していること、
値が異常値であること、
値が一定期間変わらないこと、
値の変化率が異常であること、
センサの収集間隔が違うこと、
関連する複数の属性の相関が異常であること、若しくは、
繰り返し行動から得られる値の差を比較することによって得られる値が異常であること
に応じて、又は、
欠損履歴を格納した欠損履歴データを参照して、
上記欠損の可能性のある部分を検出しうる。
【0068】
本発明の一つの実施態様において、上記ストリーム処理結果更新手段が、上記欠損が存在することに応じて、当該欠損がある部分から生じた結果を更新するように、上記マスター・データを処理しうる。
【0069】
本発明の一つの実施態様において、上記ストリーム処理結果更新手段がさらに、上記更新状況を示すレポートをリアルタイムで更新しうる。
【0070】
本発明の一つの実施態様において、上記更新状況を示すレポートが、
上記更新が終了したこと、
上記欠損が存在しなかったこと、又は、
上記更新の終了予定時刻若しくは上記更新の進捗割合
を含みうる。
【0071】
本発明の一つの実施態様において、上記ストリーム処理結果更新手段がさらに、上記更新の為に許容される処理時間内に、上記更新を終了することが出来ない場合には、当該更新処理を中止し、当該中止した時点で更新されなかった結果にマーク付けしうる。
【0072】
本発明の一つの実施態様において、上記ストリーム処理結果更新手段は、上記ストリーム処理で得られた結果と上記欠損のないデータを処理して得られた結果との差分を算出して、上記ストリーム処理で得られた結果を上記算出した差分で修復しうる。
【0073】
(本発明に従う第3の態様)
【0074】
本発明に従う第3の態様において、データを処理する為のコンピュータ・システム用プログラム又はコンピュータ・システム用プログラム製品は、コンピュータ・システムに、本発明に従う上記第1の態様の各ステップを実行させる。
【0075】
本発明の実施態様に従うコンピュータ・システム用プログラムは、一つ又は複数のフレキシブル・ディスク、MO、CD−ROM、DVD、BD、ハードディスク装置、USBに接続可能なメモリ媒体、ROM、MRAM、RAM等の任意のコンピュータ読み取り可能な記録媒体に格納することができる。当該コンピュータ・システム用プログラムは、上記記録媒体への格納のために、通信回線で接続する他のコンピュータ、例えばサーバ・コンピュータからダウンロードしたり、又は他の記録媒体から複製したりすることができる。また、本発明の実施態様に従うコンピュータ・システム用プログラムは、圧縮し、又は複数に分割して、単一又は複数の記録媒体に格納することもできる。また、様々な形態で、本発明の実施態様に従うコンピュータ・システム用プログラム製品を提供することも勿論可能であることにも留意されたい。本発明の実施態様に従うコンピュータ・システム用プログラム製品は、例えば、上記コンピュータ・システム用プログラムを記録した記憶媒体、又は、上記コンピュータ・システム用プログラムを伝送する伝送媒体を包含しうる。
【0076】
本発明の上記概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの構成要素のコンビネーション又はサブコンビネーションもまた、本発明となりうることに留意すべきである。
【0077】
本発明の実施態様において使用されるコンピュータの各ハードウェア構成要素を、複数のマシンと組み合わせ、それらに機能を配分し実施する等の種々の変更は当業者によって容易に想定され得ることは勿論である。それらの変更は、当然に本発明の思想に包含される概念である。ただし、これらの構成要素は例示であり、そのすべての構成要素が本発明の必須構成要素となるわけではない。
【0078】
また、本発明は、ハードウェア、ソフトウェア、又は、ハードウェア及びソフトウェアの組み合わせとして実現可能である。ハードウェアとソフトウェアとの組み合わせによる実行において、上記コンピュータ・システム用プログラムのインストールされたコンピュータ・システムにおける実行が典型的な例として挙げられる。かかる場合、当該コンピュータ・システム用プログラムが当該コンピュータ・システムのメモリにロードされて実行されることにより、当該コンピュータ・システム用プログラムは、当該コンピュータ・システムを制御し、本発明に係る処理を実行させる。当該コンピュータ・システム用プログラムは、任意の言語、コード、又は、表記によって表現可能な命令群から構成されうる。そのような命令群は、当該コンピュータ・システムが特定の機能を直接的に、又は、1.他の言語、コード若しくは表記への変換及び、2.他の媒体への複製、のいずれか一方若しくは双方が行われた後に、本発明の実施態様に従う処理を実行することを可能にするものである。
【発明の効果】
【0079】
本発明の実施態様に従いデータを処理する技法は、欠損のあるデータをリアルタイムにストリーム処理しながら、当該データ中の欠損の可能性のある部分を検出するので、上記ストリーム処理後に行われる当該ストリーム処理の結果の更新(修復処理)を限られた時間や限られたシステム・リソースにおいて実行することが可能になる。
【0080】
また、本発明の実施態様に従いデータを処理する技法は、リアルタイムにストリーム処理する際に使用するストリーム処理ラインを上記更新に適するように再配置する為に、上記ストリーム処理後に行われる当該ストリーム処理の結果の更新(修復処理)を限られた時間や限られたシステム・リソースにおいて実行することが可能になる。また、上記再配置は自動的に行われる為に、コンピュータ・プログラマーがコードを改めて書くなどの処理が不要になる。
【0081】
また、本発明の実施態様に従いデータを処理する技法は、限られた時間や限られたシステム・リソースにおいて上記更新を可能にすることから、短時間での処理や低いコストで最終処理結果の提供を受けというクライアントのニーズを満たすことが可能になる。
【発明を実施するための形態】
【0083】
本発明の実施形態を、以下に図面に従って説明する。以下の図を通して、特に断らない限り、同一の符号は同一の対象を指す。本発明の実施形態は、本発明の好適な態様を説明するためのものであり、本発明の範囲をここで示すものに限定する意図はないことを理解されたい。
【0084】
図1Aは、本発明の実施態様において使用されうるコンピュータ・システム又は本発明の実施態様に従うコンピュータ・システムの一例を示した図である。当該コンピュータ・システムは例えば、1又は複数のコンピュータ、例えばサーバ・コンピュータ(例えば、サーバ機能を備えているコンピュータ)でありうるが、これらに制限されるものではない。
【0085】
コンピュータ・システム(101)は、1又は複数のCPU(102)とメイン・メモリ(103)とを備えており、これらはバス(104)に接続されている。CPU(102)は例えば、32ビット又は64ビットのアーキテクチャに基づくものである。当該CPU(102)は例えば、インターナショナル・ビジネス・マシーンズ・コーポレーションのPower(商標)シリーズ、インテル社のXeon(登録商標)シリーズ、Core(商標) iシリーズ、Core(商標) 2シリーズ、Pentium(登録商標)シリーズ、Celeron(登録商標)シリーズ若しくはAtom(商標)シリーズ、又は、AMD(Advanced Micro Devices)社のOpteron(商標)シリーズ、Aシリーズ、Phenom(商標)シリーズ、Athlon(商標)シリーズ、Turion(登録商標)シリーズ若しくはSempron(商標)でありうる。
【0086】
バス(104)には、ディスプレイ・コントローラ(105)を介して、ディスプレイ(106)、例えば液晶ディスプレイ(LCD)が接続されうる。また、液晶ディスプレイ(LCD)は例えば、タッチパネル・ディスプレイ又はフローティング・タッチ・ディスプレイであてもよい。ディスプレイ(106)は、コンピュータ・システム(101)上で動作中のソフトウェア(例えば、本発明の実施態様に従うコンピュータ・システム用プログラム又は当該コンピュータ・システム(101)上で動作中の任意の各種コンピュータ・システム用プログラム(例えば、任意の各種コンピュータ・システム用プログラム))が稼働することによって表示されるオブジェクトを、適当なグラフィック・インタフェースで表示するために使用されうる。また、ディスプレイ(106)は例えば、ウェブ・ブラウザ・アプリケーションの画面を出力しうる。
【0087】
バス(104)には任意的に、例えばSATA又はIDEコントローラ(107)を介して、ディスク(108)、例えばハードディスク又はソリッド・ステート・ドライブ(SSD)が接続されうる。
【0088】
バス(104)には任意的に、例えばSATA又はIDEコントローラ(107)を介して、ドライブ(109)、例えばCD、DVD又はBDドライブが接続されうる。
【0089】
バス(104)には、周辺装置コントローラ(110)を介して、例えばキーボード・マウス・コントローラ又はUSBバスを介して、任意的に、キーボード(111)及びマウス(112)が接続されうる。
【0090】
ディスク(108)には、オペレーティング・システム、例えばメインフレーム用に開発されたオペレーティング・システム(例えば、z/OS、z/VM、若しくはz/VSE)、Windows(登録商標)、UNIX(登録商標)、Linux(登録商標)MacOS(登録商標)、及びAndroid(登録商標)、並びにJ2EEなどのJava(登録商標)処理環境、Java(登録商標)アプリケーション、Java(登録商標)仮想マシン(VM)、Java(登録商標)実行時(JIT)コンパイラを提供するプログラム、本発明の実施態様に従うコンピュータ・システム用プログラム、及びその他の任意の各種コンピュータ・システム用プログラム、並びにデータが、メイン・メモリ(103)にロード可能なように記憶されうる。
【0091】
また、ディスク(108)には、ストリーム処理を可能にするソフトウェアが、メイン・メモリ(103)にロード可能なように記憶されうる。
【0092】
ディスク(108)は、コンピュータ・システム(101)内に内蔵されていてもよく、当該コンピュータ・システム(101)がアクセス可能なようにケーブルを介して接続されていてもよく、又は、当該コンピュータ・システム(101)がアクセス可能なように有線又は無線ネットワークを介して接続されていてもよい。
【0093】
ドライブ(109)は、必要に応じて、CD−ROM、DVD−ROM又はBDからプログラム、例えばオペレーティング・システム、アプリケーション・プログラム又は本発明の実施態様に従うコンピュータ・システム用プログラムをディスク(108)にインストールするために使用されうる。
【0094】
通信インタフェース(114)は、例えばイーサネット(登録商標)・プロトコルに従う。通信インタフェース(114)は、通信コントローラ(113)を介してバス(104)に接続され、コンピュータ・システム(101)を通信回線(115)に有線又は無線接続する役割を担い、コンピュータ・システム(101)のオペレーティング・システムの通信機能のTCP/IP通信プロトコルに対して、ネットワーク・インタフェース層を提供する。なお、通信回線は例えば、無線LAN接続規格に基づく無線LAN環境、IEEE802.11a/b/g/nなどのWi-Fi無線LAN環境、又は携帯電話網環境(例えば、3G、LTE又は4G環境)でありうる。
【0095】
図1Bは、本発明の実施態様において使用されうるコンピュータ・システム又は本発明の実施態様に従うコンピュータ・システムの一例であって、当該コンピュータ・システム上で1又は複数の仮想マシンを稼働させる場合を示した図である。当該コンピュータ・システムは例えば、ワークステーション、ラックマウント型サーバ、ブレード型サーバ、ミッドレンジ、メインフレームなどのコンピュータ装置として構成されうる。
【0096】
図1Bに示すコンピュータ・システム(121)は、ハードウェア・リソース(122)として、1又は複数のCPU(131)、メイン・メモリ(132)、ストレージ(133)、通信コントローラ(134)、及び通信インタフェース(135)を備えうる。上記1又は複数のCPU(131)、メイン・メモリ(132)、ストレージ(133)、通信コントローラ(134)、及び通信インタフェース(135)並びに通信回線(136)はそれぞれ、
図1Aに示すコンピュータ・システム(101)の1又は複数のCPU(102)、メイン・メモリ(103)、ディスク(108)、通信コントローラ(113)、及び通信インタフェース(114)、並びに通信回線(115)それぞれに対応しうる。
【0097】
また、コンピュータ・システム(121)は、物理ホストマシンとして稼働し、また、仮想化ソフトウェア(例えば、VMWare(登録商標)、Hyper−V(登録商標)、Xen(登録商標))のハイパーバイザ(仮想化モニタ又は仮想化OSとも呼ばれる)上で、同一の又は異なるOS(例えば、Windows(登録商標)、UNIX(登録商標)、Linux(登録商標))をゲストOS(156)とした1又は複数の仮想マシン1〜n(125−1〜125−2)(ドメインU又はチャイルド・パーティションとも呼ばれる)を稼働させることが可能である。
【0098】
また、コンピュータ・システム(121)は、上記ハイパーバイザ上で、管理用仮想マシン(124)(ドメイン0又はペアレント・パーティションとも呼ばれる)を稼働させることが可能である。管理用仮想マシン(124)は、管理用OS(141)、当該管理用OS(141)上で動作する制御モジュール(142)、及び仮想リソース(143)を含む。制御モジュール(142)は、ハイパーバイザ(123)に対しコマンドを発行するモジュールである。また、制御モジュール(142)は、ハイパーバイザ(123)に対して、ユーザドメインの仮想マシン1〜n(125−1〜125−2)の作成、及びゲストOS(156)の起動の命令を発行し、仮想マシン1〜n(125−1〜125−2)の動作を制御する。仮想リソース(143)は、管理用仮想マシン(124)の為に割り当てられたハードウェア・リソース(122)である。
【0099】
仮想マシン1〜n(125−1〜125−2)は、仮想リソース、ゲストOS(156)、及び、ゲストOS(156)上で動作する種々のアプリケーション1〜n(157−1〜157−3)を含む。仮想リソースは例えば、仮想CPU(151)、仮想メモリ(152)、仮想ディスク(153)、仮想通信コントローラ(154)及び仮想通信インタフェース(155)を含む。
【0100】
下記
図2A〜
図2Dは、本発明の実施態様に従い、データを処理する為のフローチャートを示す。
【0101】
以下において、コンピュータ・システム(121)と記載する場合には、
図1Bに示すコンピュータ・システム(121)の代わりに、
図1Aに示すコンピュータ・システム(101)であってもよいことを理解されたい。
【0102】
図2Aは、本発明の実施態様に従い、欠損の可能性のあるデータをリアルタイムにストリーム処理しながら、当該受信したデータ中の欠損の可能性のある部分を検出する処理の為のフローチャートを示す。
【0103】
ステップ201において、コンピュータ・システム(121)は、データをリアルタイムにストリーム処理することを開始する。
【0104】
ステップ202において、コンピュータ・システム(121)は、データを他のシステム(例えば、リモート・システム)から有線又は無線ネットワークを介して受信を開始する。
【0105】
上記受信するデータは、ストリーム・データでありうる。ストリーム・データは次々に到来する時刻順のデータであり、イベントとも呼ばれる。ストリーム・データは、例えばセンサからの生データでありうる。ストリーム・データはまた、ビッグデータでありうる。ストリーム・データは例えば、各種センサからのデータ、又は時々刻々と生成されうるデータでありうる。また、ストリーム・データは例えば、車、飛行機若しくは電車などの乗り物に備え付けられているコンピュータ(例えば、ECU)からのデータ、宇宙空間にある宇宙ステーションからのデータ、宇宙から飛来する電波情報、センサやアンテナなどの計測装置からのデータ、スマート・メータ(Smart Meter)からのデータ、モノのインターネット(Internet of Things、IoT)のデータ、交通情報データ、証券業界における取引データ、又は通話明細レコード(Call Detail Record;CDR)でありうるが、これら具体例に限定されるものでない。
【0106】
上記受信するデータは、コンピュータ・システム(121)が当該データを受信したときには、既に何らかの理由(例えば、伝送経路による)によりデータの一部に欠損が生じているものである。
【0107】
ステップ203において、コンピュータ・システム(121)は、上記受信したデータをリアルタイムにストリーム処理する。
【0108】
当該処理は例えば、集計処理又は集計処理を含む処理でありうる。ストリーム処理は例えば、1つの処理単位である1つのオペレーター(演算子とも呼ばれる)を複数組み合わせて構成されたストリーム処理ライン(以下、第1のストリーム処理ラインという)において実行される。第1のストリーム処理ラインは、予めユーザによって定義された又はストリーム処理ラインを自動的に構築するソフトウェアによって定義された組み合わせに従い、オペレーターを組み合わせたものでありうる。オペレーターは例えば、割り当てられた時間又は割り当てられたシステム・リソースに従って、複数のプロセッサ・ノード又は複数の仮想マシン上に分散されて、デプロイされる。デプロイとは、分散して組み合わされたオペレーターを実行可能なようにすることである(コンパイラによるコンパイラをイメージされたい)。
【0109】
ストリーム処理を行うためのソフトウェア・プラットフォームとして、例えば、IBM(登録商標) InfoSphere(登録商標) Streamsが用いられうる。IBM(登録商標)InfoSphere(登録商標)Streamsは、大量の流入データをストリーム処理するための包括的なプラットフォームである。IBM(登録商標) InfoSphere(登録商標) Streamsは、数千規模のプロセッサ・ノード上に配置された複数のオペレーターをデプロイし、ほぼ無限のキャパシティとミリ秒単位の応答時間を実現可能なスケーラブルな実行環境を提供する。IBM(登録商標) InfoSphere(登録商標) Streamsは、個々の処理を、定義された言語(SPL)で記載し、オペレーターとして再利用可能にする。IBM(登録商標) InfoSphere(登録商標) Streamsでは、オペレーターをグループ化し、処理順やリソースの割り当てを容易に行うことが可能であることから、アプリケーション開発やデバッグの向上を可能にする。
【0110】
また、ストリーム処理を行うためのソフトウェア・プラットフォームとして、IBM(登録商標) InfoSphere(登録商標) Streams以外に、Amazon Inc.若しくは日立製作所株式会社から上市されているストリーム処理を可能にする製品、又は、Stanford大学、Berkley、MIT又はA&Tが保有しているストリーム処理を可能にするシステムが使用可能でありうる。
【0111】
また、ステップ203において、コンピュータ・システム(121)は、例えばオペレーター毎に、上記受信したデータをリアルタイムにストリーム処理するのに要した処理時間を取得又は算出しうる。そして、コンピュータ・システム(121)は、当該取得又は算出した処理時間を、例えば当該処理時間を格納する記録媒体に格納しうる。
【0112】
また、ステップ203において、コンピュータ・システム(121)は、例えばオペレーター毎に、上記受信したデータをリアルタイムにストリーム処理するのに要したシステム・リソースを取得又は算出しうる。そして、コンピュータ・システム(121)は、当該取得又は算出したシステム・リソースを、例えば当該システム・リソースを格納する記録媒体に格納しうる。
【0113】
ステップ204において、コンピュータ・システム(121)は任意的に、データ中の欠損の可能性のある部分を検出する為に、ステップ202で受信したデータのデータ収集間隔を検出しうる。データ収集間隔を検出する処理の詳細は、
図2Bに示すフローチャートに従って、下記において別途説明する。
【0114】
ステップ205において、コンピュータ・システム(121)は、ステップ203に示すようにステップ202で受信したデータをリアルタイムにストリーム処理しながら、当該受信したデータ中の欠損の可能性のある部分を検出する。また、コンピュータ・システム(121)は、ステップ204において検出したデータ収集間隔に基づいて、当該受信したデータ中の欠損の可能性のある部分を検出しうる。また、コンピュータ・システム(121)は、当該受信したデータ中の欠損の可能性のある部分を検出するとともに、当該欠損可能性(例えば、%)を、過去に欠損として蓄積した欠損履歴データを参照して取得し又は算出しうる。当該受信したデータ中の欠損の可能性のある部分を検出する処理の詳細は、
図2Cに示すフローチャートに従って、下記において別途説明する。
【0115】
ステップ206において、コンピュータ・システム(121)は、ステップ203に示すようにステップ202で受信したデータをリアルタイムにストリーム処理しながら、ステップ203においてストリーム処理された結果(例えば、集計結果)中の欠損の可能性のある部分を検出する。また、コンピュータ・システム(121)は、ステップ205において検出された欠損の可能性のある部分が処理結果に使用されているか否かを参照しながら、
図2Dに示す変化率の異常(ステップ243)、相関の異常(ステップ245)及び集計値との乖離(ステップ247)を検出しうる。当該ストリーム処理された結果中の欠損の可能性のある部分を検出する処理の詳細は、
図2Dに示すフローチャートに従って、下記において別途説明する。
【0116】
コンピュータ・システム(121)は、ステップ203におけるリアルタイムのストリーム処理、ステップ204におけるデータ収集間隔の検出、ステップ205におけるデータ中の欠損の可能性のある部分の検出、並びに、ステップ206におけるストリーム処理された結果中の欠損の可能性のある部分の検出を、並列に処理しうる。
【0117】
ステップ207において、コンピュータ・システム(121)は、ステップ202で開始したデータの受信が終了したかを判断する。当該判断は例えば、上記他のシステム(例えば、リモート・システム)より計測終了のシグナルが送信されてくることにより、又は、所定の期間、データが送信されてこないことによって行われうる。コンピュータ・システム(121)は、上記データの受信が終了することに応じて、処理をステップ208に進める。一方、コンピュータ・システム(121)は、上記データの受信が終了していないことに応じて、処理をステップ203に戻し、当該データの受信が終了するまでステップ203〜207を繰り返す。
【0118】
ステップ208において、コンピュータ・システム(121)は、ステップ203でリアルタイムにストリーム処理した結果(以下、ストリーム処理結果ともいう)を、レポートとして表示装置の画面上に若しくは印刷物として又はファイルとして出力しうる。また、コンピュータ・システム(121)は、当該ストリーム処理結果を、例えばストリーム処理結果を格納する記録媒体に格納しうる。
【0119】
ステップ209において、コンピュータ・システム(121)は、データをリアルタイムにストリーム処理することを終了する。
【0120】
次に、コンピュータ・システム(121)は、1つの処理単位であるオペレーターの組み合わせを再配置する処理の為に、
図3A〜
図3Bに示す処理を開始する。
【0121】
図2Bは、
図2Aに示すフローチャートのうち、ステップ202で受信したデータのデータ収集間隔を検出するステップ(ステップ204)の処理の為のフローチャートを示す。
【0122】
ステップ211において、コンピュータ・システム(121)は、ステップ202で受信したデータのデータ収集間隔を検出する処理を開始する。
【0123】
ステップ212において、コンピュータ・システム(121)は、データ(測定値でもありうる)を取得する。当該測定値は例えば、センサからの測定値でありうる。
【0124】
ステップ213において、コンピュータ・システム(121)は、当該取得した測定値が前回の測定値から変化したかを判断する。コンピュータ・システム(121)は、当該取得した測定値が前回の測定値から変化していないことに応じて、処理をステップ214に進める。一方、コンピュータ・システム(121)は、当該取得した測定値が前回の測定値から変化したことに応じて、処理をステップ215に進める。
【0125】
ステップ214において、コンピュータ・システム(121)はさらに、カウンタが最小値であるかを判断する。コンピュータ・システム(121)は、カウンタが最小値であることに応じて、処理をステップ216に進める。一方、コンピュータ・システム(121)は、カウンタが最小値でないことに応じて、処理を終了ステップ217に進める。
【0126】
ステップ215において、コンピュータ・システム(121)は、当該取得した測定値が前回の測定値から変化していないことに応じて、カウンタをインクリメントする。そして、コンピュータ・システム(121)は、処理を終了ステップ217に進める。
【0127】
ステップ216において、コンピュータ・システム(121)は、カウンタが最小値であることに応じて、データ収集間隔を更新する。そして、コンピュータ・システム(121)は、処理を終了ステップ217に進める。
【0128】
また、ステップ216において、コンピュータ・システム(121)は、上記更新したデータ収集間隔を、例えばデータ収集間隔を格納する記録媒体に格納しうる。
【0129】
ステップ217において、コンピュータ・システム(121)は、ステップ202で受信したデータのデータ収集間隔を検出する処理を終了する。
【0130】
図2Cは、
図2Aに示すフローチャートのうち、ステップ202で受信したデータ中の欠損の可能性のある部分を検出するステップ(ステップ205)の処理の為のフローチャートを示す。
【0131】
ステップ221において、コンピュータ・システム(121)は、ステップ202で受信したデータ中の欠損の可能性のある部分を検出する処理を開始する。コンピュータ・システム(121)は、欠損の可能性のある部分を判断する為に用いる欠損履歴データを読み込む。
【0132】
ステップ222において、コンピュータ・システム(121)は、コンピュータ・システム(121)は、データ(測定値でもありうる)を取得する。当該測定値は例えば、センサからの測定値でありうる。
【0133】
ステップ223において、コンピュータ・システム(121)は、時系列中で値が欠落したデータがあるか(すなわち、有るべきデータが無いか)、又は時系列中で値が異常であるかを判断する。
【0134】
コンピュータ・システム(121)は、時系列中で値が欠落したデータがあるかを例えば、ある時系列中でデータが空白であること、又はある時系列中でデータがnullを示すことで判断しうる。
【0135】
コンピュータ・システム(121)は、上記データが異常であることを例えば、値が異常に高かったり若しくは低かったり、又は値がゼロやマイナス(例えば、−1)であることで判断しうる。コンピュータ・システム(121)は、当該判断を例えば、既に到着しているデータと比べて、又は、過去に欠損として蓄積した欠損履歴データを参照して判断しうる。
【0136】
コンピュータ・システム(121)は、時系列中で値が欠落したデータがあること又は上記値が異常であることに応じて、処理をステップ224に進める。一方、コンピュータ・システム(121)は、時系列中で値が欠落したデータがないこと且つ上記値が異常でないことのいずれも満たすことに応じて、処理をステップ225に進める。
【0137】
ステップ224において、コンピュータ・システム(121)は、時系列中で値が欠落したデータがあること又は上記値が異常であることに応じて、当該欠落したデータがある部分又は当該異常がある部分を欠損の可能性のある部分として、例えば欠損可能性部分を保存する記憶媒体に格納する。そして、コンピュータ・システム(121)は、処理をステップ229に進める。
【0138】
ステップ225において、コンピュータ・システム(121)は、上記取得したデータとそれ以前に取得したデータとの間に変化が無いかを判断する。コンピュータ・システム(121)は例えば、上記変化が無いかを、値が一定期間変わらないこと(例えば、センサのデータ検出間隔よりも長いこと)又はデータ受信の所定回数以上変わらないことで判断しうる。上記変化が無いということは同じ値が続くことを意味し、かかる場合には当該データを欠損の可能性のある部分として判断されうる。なぜならば、センサ故障により同じ値が送信され続けたり、又は、センサ装置に関連付けられたデバイスや伝送経路の障害により同じ値が送信され続けたりする場合があるからである。
【0139】
コンピュータ・システム(121)は、上記変化が無いことに応じて処理をステップ226に進める。一方、コンピュータ・システム(121)は、上記変化があることに応じて処理をステップ229に進める。
【0140】
ステップ226において、コンピュータ・システム(121)は、上記変化が無いことに応じて、カウンタをインクリメントする。
【0141】
ステップ227において、コンピュータ・システム(121)は、カウンタが所定値以上であることに応じて、処理をステップ228に進める。一方、コンピュータ・システム(121)は、カウンタが所定値未満であることに応じて、処理をステップ229に進める。
【0142】
ステップ228において、コンピュータ・システム(121)は、カウンタが所定値以上であることに応じて、当該データのある部分を欠損の可能性のある部分として、例えば欠損可能性部分を保存する記憶媒体に格納する。そして、コンピュータ・システム(121)は、処理をステップ229に進める。
【0143】
ステップ229において、コンピュータ・システム(121)は、データの変化率が異常であるか、又はデータ間の相関が異常であるかを判断する。
【0144】
コンピュータ・システム(121)は、データの変化率が異常であるかを例えば、データが抜けていること、又は、特定のデバイスや装置の測定値の変化率が正常値と乖離しているかによって判断しうる。特定のデバイスや装置の測定値は例えば、データが車から得られるものであるとすれば、ギアや回転数、速度などでありうるがこれらに限定されるものでない。
【0145】
コンピュータ・システム(121)は、データ間の相関が異常であるかを例えば、複数の関連する属性の相関が異常であること(例えば、データが車から得られるものであるとすれば、エンジン回転数と油圧との相関が異常であること)で判断しうる。
【0146】
コンピュータ・システム(121)は、データ間の相関が異常であることに応じて、処理をステップ230に進める。一方、コンピュータ・システム(121)は、データ間の相関が異常でないことに応じて、処理をステップ231に進める。
【0147】
ステップ230において、コンピュータ・システム(121)は、上記データ間の相関が異常であることに応じて、当該データのある部分を欠損の可能性のある部分として、例えば欠損可能性部分を保存する記憶媒体に格納する。そして、コンピュータ・システム(121)は、処理をステップ231に進める。
【0148】
ステップ231において、コンピュータ・システム(121)は、上記データ中の欠損の可能性のある部分が存在したかを判断する。コンピュータ・システム(121)は、データ中の欠損の可能性のある部分が存在したことに応じて、処理をステップ232に進める。一方、コンピュータ・システム(121)は、データ中の欠損の可能性のある部分が存在しなかったことに応じて、処理を終了ステップ233に進める。
【0149】
ステップ232において、コンピュータ・システム(121)は、欠損の可能性のある部分として記憶した部分それぞれについて、欠損可能性(例えば、%)を例えば、過去に欠損として蓄積した欠損履歴データを参照して取得し又は算出しうる。コンピュータ・システム(121)は、欠損の可能性のある部分として記憶した部分それぞれについて、当該欠損可能性を例えば、ステップ202で受信したデータが決められたコース(例えば、自社のテスト走行用のサーキット若しくは自動車競技用のサーキット)でしか行えない走行テスト又は自動車競技である場合には、走行中の値(例えば、ラップ集計、正常周、又はピット周)と比較することによって算出しうる。
【0150】
欠損可能性は、時系列中で値が欠落した部分がある場合又は上記値が異常である場合(ステップ223を参照)には、例えば100%としうる。
【0151】
同様に、欠損可能性は、上記取得したデータとそれ以前に取得したデータとの間に変化が無い場合(ステップ225を参照)には、例えばX%(100%と0%との間の数字)としうる。
【0152】
同様に、欠損可能性は、データの変化率が異常であること又はデータ間の相関が異常である場合(ステップ229を参照)には、例えばY%(100%と0%との間の数字)としうる。
【0153】
また、ステップ232において、コンピュータ・システム(121)は、欠損の可能性のある部分として記憶した部分それぞれについて、当該部分があることによって影響する影響範囲を算出しうる。コンピュータ・システム(121)は例えば、当該部分があることによってどのレポートのどの解析(例えば、障害、警告、ただの蓄積)のどの属性に影響があるのかを算出しうる。
【0154】
コンピュータ・システム(121)は、当該算出した欠損可能性を、例えば欠損可能性を保存する記憶媒体に格納する。そして、コンピュータ・システム(121)は、処理を終了ステップ233に進める。
【0155】
ステップ233において、コンピュータ・システム(121)は、ステップ202で受信したデータ中の欠損の可能性のある部分を検出する処理を終了する。
【0156】
図2Cに示すフローチャートにおいて、欠損の可能性のある部分として記憶する為の判断内容をステップ223、225及び229に示した。しかしながら、当該判断内容はステップ223、225及び229に示した事項に限定されるものでなく、その他の判断内容を適宜追加しうる。その他の判断内容としては、例えばデータが車から得られるものであるとすれば、例えば上記走行テスト又は自動車競技におけるラップ毎の差異、例えばデータが人工衛星や宇宙から得られるものであるとすれば、例えば地球の周回毎の差異でありうる。
【0157】
図2Dは、
図2Aに示すフローチャートのうち、集計結果中の欠損の可能性のある部分を検出するステップの処理の為のフローチャートを示す。
【0158】
ステップ241において、コンピュータ・システム(121)は、ステップ203におけるストリーム処理によって得られた結果から、欠損の可能性のある部分を検出する処理を開始する。
【0159】
ステップ242において、コンピュータ・システム(121)は、ステップ203におけるストリーム処理によって得られた結果を取得する。
【0160】
ステップ243において、コンピュータ・システム(121)は、ステップ242で取得した結果において、変化率が異常であるかを判断する。コンピュータ・システム(121)は、上記変化率が異常であることに応じて、処理をステップ244に進める。一方、コンピュータ・システム(121)は、上記変化率が異常でないことに応じて、処理をステップ245に進める。
【0161】
ステップ244において、コンピュータ・システム(121)は、上記変化率が異常であることに応じて、当該データのある部分を欠損の可能性のある部分として、例えば欠損可能性部分を保存する記憶媒体に格納する。そして、コンピュータ・システム(121)は、処理をステップ245に進める。
【0162】
ステップ245において、コンピュータ・システム(121)は、ステップ242で取得した結果において、当該結果間の相関が異常であるかを判断する。コンピュータ・システム(121)は、上記結果間の相関が異常であることに応じて、処理をステップ246に進める。一方、コンピュータ・システム(121)は、上記結果間の相関が異常でないことに応じて、処理をステップ247に進める。
【0163】
ステップ246において、コンピュータ・システム(121)は、上記結果間の相関が異常であることに応じて、当該異常がある部分を欠損の可能性のある部分として、例えば欠損可能性部分を保存する記憶媒体に格納する。そして、コンピュータ・システム(121)は、処理をステップ247に進める。
【0164】
ステップ247において、コンピュータ・システム(121)は、ステップ203でリアルタイムにストリーム処理により得られた集計値とステップ242で取得した結果とが乖離しているかを判断する。コンピュータ・システム(121)は、上記集計値と上記結果とが乖離していることに応じて、処理をステップ248に進める。一方、コンピュータ・システム(121)は、上記集計値と上記結果とが乖離していないことに応じて、処理をステップ249に進める。
【0165】
ステップ248において、コンピュータ・システム(121)は、上記集計値と上記結果とが乖離していることに応じて、当該乖離している部分を欠損の可能性のある部分として、例えば欠損可能性部分を保存する記憶媒体に格納する。そして、コンピュータ・システム(121)は、処理をステップ249に進める。
【0166】
ステップ249において、コンピュータ・システム(121)は、上記集計結果中に欠損の可能性がある部分が存在したかを判断する。コンピュータ・システム(121)は、上記集計結果中に欠損の可能性のある部分が存在したことに応じて、処理をステップ250に進める。一方、コンピュータ・システム(121)は、上記集計結果中に欠損の可能性のある部分が存在しなかったことに応じて、処理を終了ステップ251に進める。
【0167】
ステップ250において、コンピュータ・システム(121)は、欠損の可能性のある部分として記憶した部分それぞれについて、欠損可能性(例えば、%)を、過去に欠損として蓄積した欠損履歴データを参照して算出しうる。当該欠損可能性については、
図2Cに示すステップ232の説明において述べたとおりである。
【0168】
また、ステップ250において、コンピュータ・システム(121)は、欠損の可能性のある部分として記憶した部分それぞれについて、当該部分があることによって影響する影響範囲を算出しうる。コンピュータ・システム(121)は例えば、当該部分があることによってどのレポートのどの解析(例えば、障害、警告、ただの蓄積)のどの属性に影響があるのかを算出しうる。
【0169】
コンピュータ・システム(121)は、当該算出した欠損可能性を、例えば欠損可能性を保存する記憶媒体に格納する。そして、コンピュータ・システム(121)は、処理を終了ステップ251に進める。
【0170】
ステップ251において、コンピュータ・システム(121)は、ステップ203におけるストリーム処理によって得られた結果から、欠損の可能性のある部分を検出する処理を終了する。
【0171】
次に、コンピュータ・システム(121)は、ステップ202において受信したデータに対応し且つ欠損のないマスター・データを受信することに応じて、
図4に示す処理を開始する。
【0172】
図3A及び
図3Bはそれぞれ、本発明の実施態様に従い、1つの処理単位であるオペレーターの組み合わせを再配置する処理の為のフローチャートを示す。
【0173】
ステップ301において、コンピュータ・システム(121)は、
図2A〜
図2Dに示すフローチャートの処理が終了することに応じて、
図2Aに示すフローチャートのうちのステップ203で使用した第1のストリーム処理ラインにおけるオペレーターの組み合わせを再配置して、第2のストリーム処理ラインを生成する処理を開始する。
【0174】
ステップ302において、コンピュータ・システム(121)は、ステップ203におけるストリーム処理の結果として得られる一つのレコードを読み出す。
【0175】
ステップ303において、コンピュータ・システム(121)は、ステップ302で読み出したレコードに関係する処理を決定する。
【0176】
ステップ304において、コンピュータ・システム(121)は、ステップ303で決定した処理に依存する処理(例えば、ステップ303で決定した処理が依存し、ステップ303で決定されていない他の処理)があるかを判断する。当該依存する処理とは例えば、ある更新処理の為に、前提として必要な更新処理、又は、ある更新処理を行うことによって、さらに再計算が必要となる処理でありうる。コンピュータ・システム(121)は、上記依存する処理があることに応じて処理をステップ305に進める。一方、コンピュータ・システム(121)は、上記依存する処理がないことに応じて処理をステップ306に進める。
【0177】
ステップ305において、コンピュータ・システム(121)は、上記依存処理があることに応じて、当該依存処理を処理対象として追加する。
【0178】
ステップ306において、コンピュータ・システム(121)は、
図2A〜
図2Dに示す処理によって出力されたレポート(
図2Aに示すステップ208を参照)のうち、
図2Aに示すステップ203のストリーム処理で得られた結果を更新する処理(
図4に示すフローチャートを参照)において修正されるレポートをステップ303で決定された処理及びステップ305で追加された処理に基づいて抽出する。また、コンピュータ・システム(121)は、当該抽出したレポートに関連付けられた処理に、処理すべき優先度を付すようにしうる。コンピュータ・システム(121)は、当該優先度を例えば、当該レポートを必要とするクライアント(ユーザ)からの要求に応じて、上記抽出したレポートに関連付けられたオペレーターに付すようにしうる。代替的には、コンピュータ・システム(121)は、当該優先度を例えば、当該レポートを必要とするクライアント(ユーザ)からの要求に応じて、上記抽出したレポートに関連付けられた処理に付すようにしうる。当該抽出したレポートに関連付けられた処理は、コンピュータ・システム(121)が単一又は複数のオペレーターを実行することであるので、優先度をオペレーターに付す代わりに、上記処理に優先度を付しても、優先度の高いレポートを優先的に出力されるようにするという同じ目的を達成することが可能であるからである。
【0179】
ステップ307において、コンピュータ・システム(121)は、未処理のレコードがあるかを判断する。コンピュータ・システム(121)は、未処理のレコードがあることに応じて処理をステップ302に戻し、ステップ302〜307を繰り返す。コンピュータ・システム(121)は、未処理のレコードがないことに応じて、処理をステップ308に進める。
【0180】
ステップ308において、コンピュータ・システム(121)は、ステップ306で抽出されたレポート(例えば、下記
図5Bに示すレポート構造(505))を参照し、
図2Aに示すフローチャートのうちのステップ203で使用した第1のストリーム処理ラインを更新して、第2のストリーム処理ラインを構築するために、第1のストリーム処理ラインにおけるオペレーターを再配置する。すなわち、コンピュータ・システム(121)は、オペレーターの組み合わせを変更したり、不要なオペレーターを削除したりすることによって、オペレーターを再配置する。コンピュータ・システム(121)は、ステップ306において抽出されたレポートに関連付けられた処理に優先度が付されている場合には、当該優先度に従うように、上記オペレーターを再配置しうる。従って、上記レポートの中で、優先度の高い結果が優先して処理されるように、上記オペレーターが再配置されうる。
【0181】
ステップ309において、コンピュータ・システム(121)は、ステップ308において再配置されたオペレーターにおいて、重複処理があるかを判断する。コンピュータ・システム(121)は、上記重複処理があることに応じて、処理をステップ310に進める。一方、コンピュータ・システム(121)は、上記重複処理がないことに応じて、処理をステップ311に進める。
【0182】
ステップ310において、コンピュータ・システム(121)は、オペレーターの上記重複処理を解消する。コンピュータ・システム(121)は、オペレーターが重複しないように、重複しているオペレーターを削除しうる。
【0183】
ステップ311において、コンピュータ・システム(121)は、再配置されたオペレーターを実行する為のシステム・リソースを、例えば
図2Aに示すステップ203において取得又は算出したシステム・リソースに基づいて算出しうる。
【0184】
ステップ312において、コンピュータ・システム(121)は、ステップ311で算出したシステム・リソースが、与えられたシステム・リソースを超過するかを判断する。コンピュータ・システム(121)は、上記算出したシステム・リソースが、与えられたシステム・リソースを超過することに応じて、処理をステップ313に進める。一方、コンピュータ・システム(121)は、上記算出したシステム・リソースが、与えられたシステム・リソースを超過しないことに応じて、処理をステップ316に進める。
【0185】
ステップ313において、コンピュータ・システム(121)は、上記算出したシステム・リソースが、与えられたシステム・リソースを超過することに応じて、超過した分について、オペレーターの処理に要するシステム・リソースを減らすことができるかを判断する。超過した分について、オペレーターの処理に要するシステム・リソースを減らすことは例えば、オペレーターの一部のモジュールやサブルーチンを削除することや実行しないことを含みうる。コンピュータ・システム(121)は、上記システム・リソースを減らすことができることに応じて、処理をステップ314に進める。一方、上記システム・リソースを減らすことができないことに応じて、処理をステップ315に進める。
【0186】
ステップ314において、コンピュータ・システム(121)は、ステップ306において処理に付された優先度に従って、当該処理に関連付けられ且つ優先度の低いオペレーターに割り当てられるシステム・リソースを減少させるように変更する。
【0187】
ステップ315において、コンピュータ・システム(121)は、上記システム・リソースを減らすことができないことに応じて、並列処理を当該並列処理の代わりにシリアライズ処理(逐次処理)するように変更する。
【0188】
ステップ316において、コンピュータ・システム(121)は、
図2Aに示すステップ203に示すストリーム処理で得られた結果を更新する為に必要な予定時間を、例えば上記ストリーム処理において実際に要した処理時間に基づいて算出する。
【0189】
ステップ317において、コンピュータ・システム(121)は、ステップ316で算出した予定時間が、与えられた予定時間(例えば、レポートを必要とするクライアント(ユーザ)によって与えられうる)を超過するかを判断する。コンピュータ・システム(121)は、上記算出した予定時間が、与えられた予定時間を超過することに応じて、処理をステップ318に進める。一方、コンピュータ・システム(121)は、上記算出した予定時間が、与えられたシステムを超過しないことに応じて、処理をステップ319に進める。
【0190】
ステップ318において、コンピュータ・システム(121)は、上記算出した予定時間が、与えられた予定時間を超過することに応じて、ステップ306において処理に付された優先度に従って、当該処理に関連付けられ且つ優先度の低いオペレーターをシリアライズ処理の後ろへ移動する。
【0191】
ステップ319において、コンピュータ・システム(121)は、ステップ315及びステップ318によりステップ308で再配置したオペレーターの配置に変更が必要な場合には、当該オペレーターの配置をさらに変更し、そして最終的に配置が決まったオペレーターの組み合わせ(第2のストリーム処理ライン)をデプロイする。すなわち、コンピュータ・システム(121)は、最終的に配置が決まったオペレーターの組み合わせを実行可能なようにコンパイルする。コンピュータ・システム(121)は、各オペレーターを上記最終的な配置に従って、1又は複数のコアにディスパッチする。
【0192】
ステップ320において、コンピュータ・システム(121)は、上記ストリーム処理で得られた結果を更新する処理の予定(例えば、開始予定時間及び終了予定時間を含みうる)を表示装置の画面上に若しくは印刷物として又はファイルとして出力しうる。
【0193】
ステップ321において、コンピュータ・システム(121)は、オペレーターの組み合わせを再配置して、上記第2のストリーム処理ラインを生成する処理を終了する。
【0194】
図4は、本発明の実施態様に従い、
図2Aに示すステップ202で受信したデータに対応し且つ欠損のないマスター・データを使用して、
図2Aのステップ203に示すストリーム処理で得られた結果を更新する処理の為のフローチャートを示す。
【0195】
ステップ401において、コンピュータ・システム(121)は、上記マスター・データを使用して、上記ストリーム処理で得られた結果を更新する処理を開始する。
【0196】
ステップ402において、コンピュータ・システム(121)は、上記マスター・データを受信する。コンピュータ・システム(121)は、当該マスター・データを例えば、全データを含むファイル(ファイルの保存形式は任意である)として受信する。当該受信されたマスター・データは、
図2Aに示すステップ202で受信したデータに対応し、且つ、欠損の無いことが判っているデータである。例えば、受信したデータが車から得られるものであるとすれば、上記マスター・データは例えば、当該車に備えられた記憶媒体から直接的に取り出したデータでありうる。
【0197】
ステップ403において、コンピュータ・システム(121)は、ステップ202で受信したデータを順次取り出し、当該取り出したデータが欠損の可能性のある部分として格納されたデータであるかを判断する。コンピュータ・システム(121)は、上記取り出したデータが欠損の可能性のある部分として格納されたデータであることに応じて、処理をステップ404に進める。一方、コンピュータ・システム(121)は、上記取り出したデータが欠損の可能性のある部分として格納されたデータでないことに応じて、処理をステップ411に進める。
【0198】
ステップ404において、コンピュータ・システム(121)は、当該欠損の可能性のある部分が本当に欠損している部分であるかを確認する為に、ステップ402で受信したマスター・データとステップ403で欠損の可能性のある部分のデータとを比較する。
【0199】
ステップ405において、コンピュータ・システム(121)は、上記比較の結果、上記欠損の可能性のある部分が実際に欠損している部分であるかを判断する。コンピュータ・システム(121)は、上記欠損の可能性のある部分が実際に欠損している部分であることに応じて、処理をステップ406に進める。一方、コンピュータ・システム(121)は、上記欠損の可能性のある部分が実際には欠損している部分でないことに応じて、処理をステップ407に進める。
【0200】
ステップ406において、コンピュータ・システム(121)は、上記欠損の可能性のある部分が実際に欠損している部分であることに応じて、欠損履歴を格納している履歴データを更新して、当該部分に欠損があるという情報を追加する。
【0201】
ステップ407において、コンピュータ・システム(121)は、上記欠損の可能性のある部分が実際には欠損している部分でないことに応じて、欠損履歴を格納している履歴データを更新して、当該部分に欠損がないという情報を追加する。
【0202】
ステップ408において、コンピュータ・システム(121)は、ステップ402で受信したマスター・データを使用して、
図2Aのステップ203に示すストリーム処理で得られた結果を更新する為に、当該マスター・データを
図3Bに示すステップ319においてデプロイされた第2のストリーム処理ラインにディスパッチする。コンピュータ・システム(121)は、当該ディスパッチにおいて、上記マスター・データのうち、上記第2のストリーム処理ラインに必要な部分のみを上記第2のストリーム処理ラインにディスパッチしうる。
【0203】
ステップ409において、コンピュータ・システム(121)は、上記ディスパッチされたマスター・データを上記第2のストリーム処理ラインを使用して処理し、そして当該マスター・データの処理結果を得る。そして、コンピュータ・システム(121)は、
図2Aのステップ203に示すストリーム処理で得られた結果を、上記マスター・データの処理結果で更新する。
【0204】
ステップ410において、コンピュータ・システム(121)は、上記更新状況を示す更新処理状況データを更新する。コンピュータ・システム(121)は例えば、表示装置の画面上に表示されている更新処理状況を最新の更新状況に更新したり、又は更新状況を格納する更新状況データを更新したりしうる。
【0205】
ステップ411において、コンピュータ・システム(121)は、次に処理すべき欠損の可能性のあるデータがあるかを判断する。コンピュータ・システム(121)は、次に処理すべき欠損の可能性のあるデータがあることに応じて、処理をステップ403に戻し、ステップ403〜411を繰り返す。一方、コンピュータ・システム(121)は、次に処理すべき欠損の可能性のあるデータがないことに応じて、処理を終了ステップ412に進める。
【0206】
ステップ412において、コンピュータ・システム(121)は、上記マスター・データを使用して、上記ストリーム処理で得られた結果を更新する処理を終了する。
【0207】
図5A〜
図5Cはそれぞれ、本発明の実施態様において使用されうる各種データ構造の例を示す。また、当該各種データ構造は、データが上記走行テスト又は自動車競技において競技中の車から得られるデータを処理する場合において、本発明の実施態様において使用されうるデータ構造の例である。
【0208】
図5Aに示すデータ構造(501)は、
図2Aに示すステップ202で受信したデータを送信するセンサ又はデバイスから、当該データの収集間隔を動的に蓄積する為に用いられる。データ構造(501)は、
図2Aのステップ204及びその詳細な
図2Bに示すフローチャートの処理において用いられる。コンピュータ・システム(121)は、
図2Bに示すステップ216においてデータ収集間隔が更新された場合に、当該更新されたデータ収集間隔をデータ構造(501)中に格納する。データ構造(501)は例えば、ID(例えば、センサを特定する為の識別子や周期行動を特定する為の識別子)、属性(例えば、センサから得られるデータの種類)、及び間隔(例えば、センサによる収集間隔)を含みうる。データ構造(501)は例えば、
図7A及び
図7Bそれぞれに示すデータ収集間隔を格納する記憶媒体(782)中に格納される。
【0209】
図5Aに示すデータ構造(502)は、過去の欠損履歴を蓄積する為に用いられる。データ構造(502)は、
図2Aに示すステップ205及び206並びに、それらの詳細な
図2Cに示すフローチャート及び
図2Dに示すフローチャートの処理において、欠損の可能性のある部分を検出する為に用いられる。データ構造(502)は例えば、欠損可能性の種類(例えば、欠損の原因)、属性(例えば、欠損の可能性のあるデータが属する属性)、値の範囲(例えば、欠損の可能性のある値の範囲)、条件(例えば、欠損の可能性があると判定される条件)、及び欠損の可能性(欠損があると判定されうる確率に、実際に欠損があった確率を加味したもの)を含みうる。データ構造(502)は例えば、
図7A及び
図7Bそれぞれに示す欠損履歴を格納する記憶媒体(783)中に格納される。
【0210】
図5Aに示すデータ構造(503)は、欠損の可能性のあるデータ又データ群を格納する為に用いられる。データ構造(503)は、
図2Aに示すステップ205及び206並びに、それらの詳細な
図2Cに示すフローチャート及び
図2Dに示すフローチャートの処理において用いられる。コンピュータ・システム(121)は、
図2Cに示すステップ224、228及び230、並びに、
図2Dに示すステップ244、246及び248において、欠損の可能性のある部分が検出された場合に、当該検出された欠損の可能性のある部分をデータ構造(503)中に格納する。データ構造(503)は例えば、属性(例えば、欠損の可能性あると判断される事象やデバイス)、範囲(例えば、欠損の可能性のある時間帯)、欠損の種類(例えば、欠損の原因)、データ量、欠損の可能性(欠損があると判定されうる確率)を含みうる。データ構造(503)は例えば、
図7A及び
図7Cそれぞれに示す欠損可能性部分を格納する記憶媒体(784)中に格納される。
【0211】
図5Bに示すデータ構造(504)は、
図2Aに示すステップ203において、ストリーム処理に要したシステム・リソース及び処理時間を格納する為に用いられる。また、データ構造(504)は、マスター・データを使用してストリーム処理で得られた結果を更新する為に必要なシステム・リソース及び処理時間を算出する為に用いられる。データ構造(504)は例えば、オペレータ群(例えば、オペレーター又はオペレーター群が用いられるある処理)、処理データ数(例えば、オペレータ又はオペレータ群によって処理されたデータ数)、処理属性数(例えば、オペレータ又はオペレータ群によって処理される属性)、割り当てシステム・リソース(例えば、オペレータ又はオペレータ群に割り当てられたシステム・リソース;例えば、コア数、又はメモリ容量)、及び処理時間(ある処理を実行する為に要した処理時間)を含みうる。データ構造(504)は例えば、
図7A及び
図7Cそれぞれに示す処理時間結果及びシステム・リソースを格納する記憶媒体(785)中に格納される。
【0212】
図5Bに示すデータ構造(505)は、どの属性のどの処理(データ構造(505)中の種類に対応する)が、どのレポートの解析の為に使われているかを示す。データ構造(505)は、
図3Aに示すステップ306において、修正されるレポートを抽出する為に使用される。データ構造(505)は例えば、属性(例えば、欠損の可能性あると判断される事象やデバイス)、種類(例えば、属性のタイプ)、サンプリング間隔(例えば、センサやデバイスからのデータの受信又は送信間隔)、解析(例えば、属性に関連付けられた解析内容)、及びレポート(例えば、報告される解析内容)を含みうる。データ構造(505)は例えば、
図7Bに示すレポートを格納する記憶媒体(786)中に格納される。
【0213】
図5Bに示すデータ構造(506)は、どのレポートのどの解析及び属性の優先度が高いかを示す。データ構造(506)は、ステップ306において抽出されたレポートに付された優先度を格納する為に使用されうる。また、データ構造(506)は、
図3Bに示すステップ315及びステップ318において、オペレーターのシステム・リソースを決定する為に使用されうる。データ構造(506)は例えば、レポート(例えば、報告される解析内容)、解析(例えば、属性に関連付けられた解析内容)、属性(例えば、レポート中に記載される事象やデバイス)、及び優先順位(例えば、処理すべき優先度)を含みうる。データ構造(506)は例えば、
図7Bに示す処理優先度を格納する記憶媒体(787)中に格納される。
【0214】
図5Cに示すデータ構造(507)は、
図2Aに示すステップ203のストリーム処理で得られた結果を更新する更新処理(
図4に示すフローチャートを参照)の種類(出力されるデータ)を示す。データ構造(507)は例えば、オペレーター群(例えば、オペレーター又はオペレーター群が用いられる或る処理)、出力される属性(例えば、上記更新処理により出力される属性)、出力される属性の種類(例えば、処理により出力される属性のタイプ)、サンプリング間隔(例えば、センサやデバイスからのデータの受信又は送信間隔)、及び依存オペレーター(例えば、あるオペレーターと依存関係を有するオペレーター)を含みうる。データ構造(507)は例えば、
図7Bに示す更新処理を格納する記憶媒体(788)中に格納される。
【0215】
図5Cに示すデータ構造(508)は、
図2Aに示すステップ203のストリーム処理で得られた結果を更新する更新処理(
図4に示すフローチャートを参照)の更新状況を示す。データ構造(508)は、
図4に示すステップ411において、上記更新状況を示す更新処理状況データを更新する為に使用される。データ構造(508)は例えば、(例えば、報告される解析内容)、解析(例えば、属性に関連付けられた解析内容)、属性(例えば、レポート中に記載される事象やデバイス)、更新処理状況(例えば、上記更新の進捗状況)、及び処理予測時間(例えば、上記更新の終了予定時刻)を含みうる。データ構造(508)は例えば、
図7Cに示す更新処理状況を格納する記憶媒体(791)中に格納される。
【0216】
図6Aは、本発明の実施態様において、
図2Aに示すステップ202で受信したデータをリアルタイムにストリーム処理する為に使用されうる第1のストリーム処理ライン(601)を示す。
【0217】
第1のストリーム処理ライン(601)は、オペレーター又はオペレーター群(611、612、613、614、615、616、及び617)とそれらの入出力を接続(621、622、623、624、625、626、627、及び628)することによって、ストリーム処理を可能にする。コンピュータ・システム(121)は、第1のストリーム処理ライン(601)を用いて、
図2Aに示すステップ202で受信したデータをリアルタイムにストリーム処理した結果をファイル(631)として出力し、又は、データベース(632)に出力しうる。
【0218】
図6Bは、本発明の実施態様において、
図4Aに示すステップ402で受信したマスター・データを使用して、
図2Aのステップ203に示すストリーム処理で得られた結果を更新する処理する為に使用されうる第2のストリーム処理ライン(602)を示す。
【0219】
第2のストリーム処理ライン(602)は、オペレーター又はオペレーター群(641、642、643、644、及び646、並びに、651、652、及び653)とそれらの入出力を接続(661、662、663、665、666、並びに、669、及び670)することによって、ストリーム処理を可能にする。
【0220】
第2のストリーム処理ライン(602)は、
図6Aに示す第1のストリーム処理ライン(601)におけるオペレーター又はオペレーター群を再配置することによって得られたものである。当該再配置には、オペレーター又はオペレーター群の削除、追加、若しくは並び替え、又はそれらの組み合わせを含みうる。
【0221】
第2のストリーム処理ライン(602)では、更新の為のマスター・データのストリーム処理に必要ないと判断されたオペレーターが、
図6Aに示す第1のストリーム処理ライン(601)から削除されている(オペレーター「Acceleration」(681)、オペレーター「Direction」(682)、オペレーター「Oil Temperature」(683)、オペレーター「Throttle」及び「Water Pressure」(684)、オペレーター「100ms Interval」(685)、オペレーター「Water Analysis」(686)、及びオペレーター「DB Append」(687)。
【0222】
また、第2のストリーム処理ライン(602)では、更新時の為のマスター・データのストリーム処理に必要ないと判断された接続(ストリーム)が削除されている(665;
図6Aに示す接続(625)を参照されたい)。
【0223】
また、第2のストリーム処理ライン(602)では、更新時に要するシステム・リソースの節約の為に、更新の為のマスター・データのストリーム処理において不必要なデータ書き込み処理が除去されている(688;
図6Aに示すオペレーター(615)、接続(627)及びファイル(631)を参照されたい)。
【0224】
また、第2のストリーム処理ライン(602)では、オペレーター「Data Source」(651)が追加されている。オペレーター「Data Source」(651)は、並列度の向上の為に追加されたものであり、入力や途中処理を受け持つ。
【0225】
また、第2のストリーム処理ライン(602)では、オペレーター「DB Data Source」(652)が追加されている。オペレーター「DB Data Source」(652)は、集計済みデータの有効部分を利用する為に追加されたものである。
【0226】
また、第2のストリーム処理ライン(602)では、オペレーター群「DB Append」(
図2Aのオペレーター群(617)を参照)が、オペレーター・タイプを必要に応じて変更する為に、オペレーター群「Db Update」(653)に処理が変更されている。第1のストリーム処理ライン(601)では、データベース(632)中にデータが入っていなかった為にデータの追加(Append)処理となっているが、第2のストリーム処理ライン(602)では、第1のストリーム処理ライン(601)でデータベース(632、
図6Bのデータベース(692)に対応する)中に保存されたデータを更新(Update)する処理であるので、追加(Append)処理が必要で無い為に、更新(Update)処理に変更されている。
【0227】
図7A〜
図7Cはそれぞれ、
図1A又は
図1Bに従うハードウェア構成を好ましくは備えており、本発明の実施態様に従い、データを処理する為のコンピュータ・システムの機能ブロック図の一例を示した図である。
【0228】
図7Aは、本発明の実施態様に従い、上記受信したデータをリアルタイムにストリーム処理しながら、当該受信したデータ中の欠損の可能性のある部分を検出する為のコンピュータ・システムの機能ブロック図の一例を示した図である。
【0229】
コンピュータ・システム(701)は、
図1Aに従うハードウェア構成(101)又は
図1Bに従うハードウェア構成(121)を備えうる。
【0230】
コンピュータ・システム(701)は、データ受信手段(711)、受信データ・ストリーム処理手段(712)、ストリーム処理時間算出部(713)、データ収集間隔検出手段(714)、及び欠損可能性検出手段(715)を備えている。
【0231】
データ受信手段(711)は、データ(771)、例えばストリーム・データを受信する。
【0232】
また、データ受信手段(711)は、
図2Aに示すステップ202の処理を実行しうる。
【0233】
受信データ・ストリーム処理手段(712)は、データ受信手段(711)が受信したデータ(771)をリアルタイムにストリーム処理する。また、受信データ・ストリーム処理手段(712)は、データ受信手段(711)が受信したデータ(771)のストリーム処理を、1つの処理単位である1つのオペレーターを複数組み合わせて構成された第1のストリーム処理ライン(761を参照)において実行する。
【0234】
また、受信データ・ストリーム処理手段(712)は、上記ストリーム処理の結果を、例えば、上記ストリーム処理の結果を格納する記憶媒体(781)に格納しうる。
【0235】
また、受信データ・ストリーム処理手段(712)は、
図2Aに示すステップ203の処理を実行しうる。
【0236】
ストリーム処理時間算出部(713)は、上記オペレーターが上記ストリーム処理に要した処理時間、若しくは上記オペレーターが上記ストリーム処理に要したシステム・リソース、又はそれらの組み合わせを出力する。ストリーム処理時間算出部(713)は、上記処理時間、上記システム・リソース又はそれらの組み合わせを、例えば上記処理時間及び上記システム・リソースを格納する記憶媒体(785)に格納しうる。
【0237】
また、ストリーム処理時間算出部(713)は、
図2Aに示すステップ203の処理において、オペレーターがストリーム処理に要した処理時間、若しくはオペレーターがストリーム処理に要したシステム・リソースを算出しうる。
【0238】
データ収集間隔検出手段(714)は、データ受信手段(711)が受信したデータ(771)が少なくとも1つのセンサからの測定値である場合に、各測定値の収集間隔を検出する。
【0239】
また、データ収集間隔検出手段(714)は、上記収集間隔を、例えば、上記収集間隔を格納する記憶媒体(782)に格納しうる。
【0240】
また、データ収集間隔検出手段(714)は、
図2Aに示すステップ204の処理及び
図2Bに示す各ステップの処理を実行しうる。
【0241】
欠損可能性検出手段(715)は、受信データ・ストリーム処理手段(712)がリアルタイムにデータ(771)をストリーム処理中に、データ受信手段(711)が受信したデータ(771)中の欠損の可能性のある部分を検出する。欠損可能性検出手段(715)は、欠損の可能性のある部分を検出する為に、過去の欠損履歴を蓄積するデータ(欠損履歴データ)(783を参照)を参照しうる。
【0242】
また、欠損可能性検出手段(715)は、上記欠損の可能性のあるデータ範囲、上記欠損の可能性の確率、上記欠損の種類、上記欠損による処理結果の影響範囲、上記処理結果の出力の優先順位、上記ストリーム処理が1つの処理単位である1つのオペレーターを複数組み合わせて構成されたストリーム処理ラインにおいて実行される場合のオペレーターの依存関係、上記オペレーターが上記ストリーム処理に要した処理時間、若しくは上記オペレーターが上記ストリーム処理に要したシステム・リソース、又はそれらの組み合わせをさらに出力する。
【0243】
また、欠損可能性検出手段(715)は、データ受信手段(711)が受信したデータ(771)が少なくとも1つのセンサからの測定値である場合に、当該測定値を使用して又は上記ストリーム処理によりリアルタイムに算出された集計値を使用して、上記欠損の可能性のある部分を検出する。
【0244】
また、欠損可能性検出手段(715)は、データ受信手段(711)が受信したデータ(771)が少なくとも1つのセンサからの測定値である場合に、各測定値の上記収集間隔の違いが検出されることに応じて、当該違いが検出された部分のデータを欠損の可能性のある部分として検出する。
【0245】
また、欠損可能性検出手段(715)は、時系列中で値が欠落していること、値が異常値であること、値が一定期間変わらないこと、値の変化率が異常であること、センサの収集間隔が違うこと、関連する複数の属性の相関(例えば、相関率)が異常であること、若しくは、繰り返し行動から得られる値の差を比較することによって得られる値が異常であることに応じて、又は、欠損履歴を格納した欠損履歴データ(783を参照)を参照して、上記欠損の可能性のある部分を検出する。上記繰り返し行動から得られる値とは例えば、平均値、最大値、最小値、又は累積値でありうるがこれらに限定されるものでない。繰り返し行動から得られる値の差とは例えば、繰り返し行動から得られる値と通常時の値に対する乖離でありうる。
【0246】
また、欠損可能性検出手段(715)は、
図2Aに示すステップ205の処理及び
図2Cに示す各ステップの処理、並びに、
図2Aに示すステップ206の処理及び
図2Dに示す各ステップの処理を実行しうる。
【0247】
図7Bは、
図1A又は
図1Bに従うハードウェア構成を好ましくは備えており、本発明の実施態様に従い、上記ストリーム処理で得られた結果を更新するために使用されるオペレーターの組み合わせを再配置して、当該更新をするために使用するストリーム処理ライン(第2のストリーム処理ライン)を定義する為のコンピュータ・システムの機能ブロック図の一例を示した図である。
【0248】
コンピュータ・システム(702)は、
図1Aに従うハードウェア構成(101)又は
図1Bに従うハードウェア構成(121)を備えうる。コンピュータ・システム(702)は、コンピュータ・システム(701)と同じハードウェアであっても異なるハードウェアであってもよい。
【0249】
コンピュータ・システム(702)は、オペレーター再配置手段(721)、及びオペレーター群デプロイ手段(722)を備えている。
【0250】
オペレーター再配置手段(721)は、受信データ・ストリーム処理手段(712)によるストリーム処理で得られた結果を更新するために使用されるオペレーターの組み合わせを再配置して、当該更新をするために使用する第2のストリーム処理ラインを定義する。
【0251】
また、オペレーター再配置手段(721)は、上記オペレーターの組み合わせの再配置を、上記欠損の可能性の確率、上記欠損の種類、上記欠損による処理結果の影響範囲、処理結果の出力の優先順位、上記オペレーターの依存関係、上記更新の為に許容される処理時間、若しくは上記更新の為に使用可能なシステム・リソース(例えば、コア数、又はメモリ容量)、又はそれらの組み合わせに従って決定する。
【0252】
また、オペレーター再配置手段(721)は、上記オペレーターの組み合わせの再配置を、上記更新の為に許容される処理時間若しくは上記更新の為に使用可能なシステム・リソース(785を参照)又はそれらの組み合わせに制限があることに応じて、処理結果の出力の優先順位に従って決定する。
【0253】
また、オペレーター再配置手段(721)は、上記オペレーターの組み合わせの再配置を、レポート(786を参照)、処理優先度(787を参照)、更新処理(788を参照)、処理時間結果(785を参照)、システム・リソース(785を参照)、欠損履歴(783を参照)、若しくはデータ収集間隔(782を参照)及びそれらの組み合わせ従って決定する。
【0254】
また、オペレーター再配置手段(721)は、
図3A及び
図3Bに示すステップ302〜318及び320の各処理を実行しうる。
【0255】
オペレーター群デプロイ手段(722)は、オペレーター再配置手段(721)が再配置したオペレーターの組み合わせ(第2のストリーム処理ライン)をデプロイする。
【0256】
また、オペレーター群デプロイ手段(722)は、上記再配置されたオペレーターそれぞれを上記コンピュータ・システム上の複数のプロセッサ・ノード又は複数の仮想プロセッサ・ノード上に配置する配置手段(図示せず)をさらに備えている。
【0257】
また、オペレーター群デプロイ手段(722)は、
図3Bに示すステップ319の各処理を実行しうる。
【0258】
図7Cは、
図1A又は
図1Bに従うハードウェア構成を好ましくは備えており、本発明の実施態様に従い、上記受信したデータに対応し且つ欠損のないマスター・データと、欠損の可能性のある部分とを比較し、上記欠損が存在することに応じて、上記マスター・データを使用して、上記ストリーム処理で得られた結果を更新する為のコンピュータ・システムの機能ブロック図の一例を示した図である。
【0259】
コンピュータ・システム(703)は、
図1Aに従うハードウェア構成(101)又は
図1Bに従うハードウェア構成(121)を備えうる。コンピュータ・システム(703)は、コンピュータ・システム(701)と同じハードウェアであっても異なるハードウェアであってもよい。同様に、コンピュータ・システム(703)は、コンピュータ・システム(702)と同じハードウェアであっても異なるハードウェアであってもよい。
【0260】
コンピュータ・システム(703)は、マスター・データ受信手段(731)、欠損検証手段(732)、マスターデータ・ディスパッチ手段(733)、マスター・データ・ストリーム処理手段(734)、ストリーム処理結果更新手段(735)、及び更新表示データ送信手段(736)を備えている。
【0261】
マスター・データ受信手段(731)は、データ受信手段(711)が受信したデータに対応し且つ欠損のないマスター・データ(772)を受信する。マスター・データ受信手段(731)は、マスター・データ(772)を、例えば全データを含むファイル(ファイルの保存形式は任意である)として受信する。
【0262】
また、マスター・データ受信手段(731)は、
図4に示すステップ402の処理を実行しうる。
【0263】
マスター・データ受信手段(731)は、
図7Aに示すデータ受信手段(711)と同じであってもよい。
【0264】
欠損検証手段(732)は、マスター・データ受信手段(731)が受信したマスター・データ(772)と、欠損可能性検出手段(715)により検出された上記欠損の可能性のある部分(784を参照)とを比較し、上記欠損が存在することを検証する。
【0265】
また、欠損検証手段(732)は、上記欠損が存在することに応じて、当該欠損を、例えば欠損履歴を蓄積するデータ(欠損履歴データ)(783を参照)に記録する。
【0266】
また、欠損検証手段(732)は、
図4に示すステップ403〜407及び411の各処理を実行しうる。
【0267】
マスターデータ・ディスパッチ手段(733)は、マスター・データ受信手段(731)が受信したマスター・データ(772)を使用して、受信データ・ストリーム処理手段(712)によるストリーム処理で得られた結果を更新する為に、当該マスター・データ(772)を、オペレーター群デプロイ手段(722)によりデプロイされた第2のストリーム処理ラインにディスパッチする。
【0268】
また、マスターデータ・ディスパッチ手段(733)は、
図4に示すステップ408の処理を実行しうる。
【0269】
マスター・データ・ストリーム処理手段(734)は、マスター・データ受信手段(731)が受信したマスター・データ(772)の処理(原則的にストリーム処理であるが、シリアライズ処理を実行することもありうる)を、第2のストリーム処理ラインを再配置してデプロイされた第2のストリーム処理ライン(762を参照)において実行する。マスター・データ・ストリーム処理手段(734)は、その処理結果を、例えば当該処理結果を格納する記録媒体(789)に格納しうる。
【0270】
また、マスター・データ・ストリーム処理手段(734)は、上記欠損が存在することに応じて、当該欠損がある部分から生じた結果を更新するように、上記マスター・データ(772)を処理する。
【0271】
また、マスター・データ・ストリーム処理手段(734)は、データ受信手段(711)が受信したデータをリアルタイムにストリーム処理する。また、受信データ・ストリーム処理手段(712)は、データ受信手段(711)が受信したデータのストリーム処理を、1つの処理単位である1つのオペレーターを複数組み合わせて構成された第1のストリーム処理ラインにおいて実行する。
【0272】
また、マスター・データ・ストリーム処理手段(734)は、
図4に示すステップ409において、上記ディスパッチされたマスター・データ(772)を上記第2のストリーム処理ラインを使用して処理し、当該マスター・データ(772)の処理結果を得る処理を実行する。
【0273】
また、マスター・データ・ストリーム処理手段(734)は、
図7Aに示す受信データ・ストリーム処理手段(712)と同じであってもよい。
【0274】
ストリーム処理結果更新手段(735)は、マスター・データ受信手段(731)が受信したマスター・データ(772)を使用して、受信データ・ストリーム処理手段(712)によるストリーム処理で得られた結果(781を参照)を更新する。ストリーム処理結果更新手段(735)は、マスター・データ・ストリーム処理手段(734)により処理された処理結果(789を参照)を読み出し、当該読み出した処理結果で、受信データ・ストリーム処理手段(712)によるストリーム処理で得られたストリーム処理結果(781を参照)を更新する。当該更新は、受信データ・ストリーム処理手段(712)によるストリーム処理で得られたストリーム処理結果(781を参照)をマスター・データ・ストリーム処理手段(734)により処理された処理結果(789を参照)で修復するものでもある。
【0275】
また、ストリーム処理結果更新手段(735)は、マスター・データ・ストリーム処理手段(734)による処理により得られた結果で、受信データ・ストリーム処理手段(712)によるストリーム処理で得られた結果を更新する。
【0276】
また、ストリーム処理結果更新手段(735)は、受信データ・ストリーム処理手段(712)によるストリーム処理で得られた結果と、マスター・データ・ストリーム処理手段(734)による処理により得られた結果との差分を算出して、受信データ・ストリーム処理手段(712)によるストリーム処理で得られた結果を上記算出した差分で修復しうる。
【0277】
また、ストリーム処理結果更新手段(735)は、データ受信手段(711)が受信したデータが少なくとも1つのセンサからの測定値である場合に、上記ストリーム処理した結果のうち上記収集間隔の違いによる欠損から生じた結果を、上記マスター・データ(772)を処理して得られた結果で更新する。
【0278】
また、ストリーム処理結果更新手段(735)は、上記更新した結果を、例えば更新結果を格納する記憶媒体(790)に格納しうる。また、ストリーム処理結果更新手段(735)は、更新状況を示すレポートを、例えば当該更新状況を示すレポートを格納する記憶媒体(791)に格納しうる。
【0279】
また、ストリーム処理結果更新手段(735)は、更新状況を示すレポートをリアルタイムで更新する。当該更新状況を示すレポートは例えば、処理毎に、上記更新が終了したこと、上記欠損が存在しなかったこと、又は、上記更新の終了予定時刻若しくは上記更新の進捗割合を含む。
【0280】
また、ストリーム処理結果更新手段(735)は、上記更新の為に許容される処理時間内に、上記更新を終了することが出来ない場合には、当該更新処理を中止し、当該中止した時点で更新されなかった結果にマーク付けする。
【0281】
また、ストリーム処理結果更新手段(735)は、
図4に示すステップ409において、
図2Aのステップ203に示すストリーム処理で得られた結果を、マスター・データ・ストリーム処理手段(734)による処理結果で更新する。
【0282】
また、ストリーム処理結果更新手段(735)は、
図4に示すステップ410の処理を実行しうる。
【0283】
更新表示データ送信手段(736)は、ストリーム処理結果更新手段(735)により更新された処理結果及び/又は更新処理状況を、当該更新された処理結果及び/又は更新処理状況を要求するクライアント端末(704)に送信する。
【0284】
クライアント端末(704)は、更新表示データ受信手段(741)及び更新表示データ表示手段(742)を備えている。
【0285】
更新表示データ受信手段(741)は、更新表示データ送信手段(736)からの更新された処理結果及び/又は更新処理状況を受信する。
【0286】
更新表示データ表示手段(742)は、更新表示データ受信手段(741)が受信した更新された処理結果及び/又は更新処理状況を表示装置の画面上に若しくは印刷物として又はファイルとして出力する。
【0287】
(実施例)
自動車の性能評価において、決められたコース(例えば、自社のテスト走行用のサーキット又は自動車競技用のサーキット)でしか行えない走行テストがある。
【0288】
自動車メーカーの開発チームは、上記決められたコースを所定回数周回することにより自動車の性能評価を行う走行テストを予定している。当該走行テストでは、午前に1度目のテスト走行が行われ、当該1度目のテスト走行の終了後間もなく午後には1度目の走行テストの結果により再調整された車で2度目の走行テストが行われる。
【0289】
上記自動車は複数のセンサを備えており、テスト走行中に当該センサからのデータをリアルタイムに、無線ネットワークを介してリモート・コンピュータに送信可能である。ただし、上記決められたコース(特に、上記サーキット)を利用してデータを送信する場合には、上記決められたコースにおける通信は無線で安定していないこと、上記決められたコースに固有の経路(受信装置、格納装置、及び送信装置)で送られること、車が高速で走ること、通信する他の車がいること、他と共有している通信回線であり専用の回線でないことなどの理由によって、データが通信経路上で失われることがある。
【0290】
また、当該リモート・コンピュータは、無線又は有線ネットワークを介して、上記センサから受信したデータを本発明の実施態様に従うコンピュータ・システムに送信可能である。
【0291】
テスト走行をサポートする自動車開発チームは、テスト走行中に、上記コンピュータ・システムからの処理結果をリアルタイムに、当該自動車開発チームが所有するクライアント端末に受信することが可能である。当該自動車開発チームは、テスト走行中の種々の指示をドライバーやエンジニアに与える為に、上記処理結果をリアルタイムに受信することが必要である。
【0292】
午前の1度目のテスト走行が9時に始まったとする。
【0293】
上記自動車はリアルタイムに上記リモート・コンピュータにデータを送信する。また、上記リモート・コンピュータは、当該データを受信することに応じて、当該受信したデータをリアルタイムに上記コンピュータ・システムに送信する。
【0294】
上記コンピュータ・システムは、上記データを受信することに応じて、リアルタイムに当該受信したデータをストリーム処理する。また、上記コンピュータ・システムは、当該ストリーム処理をしながら、
図2B〜
図2Dに示すフローチャートに従って、当該受信したデータ中の欠損の可能性のある部分を検出し、またストリーム処理されたデータ中の欠損の可能性のある部分を検出する。なお、当該受信したデータは、そのデータの一部が伝送経路で欠損しているとする。
【0295】
また、上記コンピュータ・システムは、上記ストリーム処理の結果(例えば、測定値観測、アラート解析、相関解析や傾向分析を含みうる)を、例えば上記リモート・コンピュータを介して、上記クライアント端末にリアルタイムに送信する。当該ストリーム処理の結果は、上記受信したデータに上記欠損があることから、仮の結果であるといえる。
【0296】
上記自動車開発チームは、上記クライアント端末の表示装置上で上記仮の結果(テスト走行中の結果)を見ながら、種々の指示をドライバーやエンジニアに与えることが可能である。
【0297】
午前のテスト走行が11時半に終了したとする。
【0298】
上記自動車開発チームは、上記センサからのデータ(マスター・データである)を安全な方法で(例えば、USBメモリなどの物理記録媒体を介して)、上記自動車から取り出す。そして、当該取り出したデータは例えば、安定した通常のインターネット回線を介して、上記コンピュータ・システムに送信される。
【0299】
上記コンピュータ・システムは、午前の1度目のテスト走行が終了したことに応じて、
図2B〜
図2Dに示すフローチャートに従って、上記ストリーム処理で用いたストリーム処理ラインのオペレーターを再配置し、再配置されたオペレーターをデプロイする。
【0300】
午後の2度目のテスト走行が12時から開始されるとする。
【0301】
上記コンピュータ・システムは、午前の1度目のテスト走行が終了した後の限定された時間(例えば、10分〜20分)内に、
図4に示すフローチャートに従って、上記マスター・データを使用して、上記ストリーム処理で得られた結果を更新する必要がある。また、上記コンピュータ・システムは、上記更新の為に、午前の1度目のテスト走行2時間分のデータを2時間で解析できるのに十分なシステム・リソースを与えられている。当該限られたシステム・リソースは、午前の1度目のテスト走行2時間分のデータを2時間で解析するには十分であるが、午前の1度目のテスト走行2時間分のデータのマスター・データ(すなわち、2時間分のデータ)を上記限られた時間で解析するには、限定されたシステム・リソースである。
【0302】
上記コンピュータ・システムは、限定された時間内及び限定されたシステム・リソースを用いて、午後の2度目のテスト走行が開始される前に、当該更新された結果を上記自動車開発チームに送信する。当該更新された結果は、欠損のないマスター・データを使用して仮の結果を更新していることから、最終の結果であるといえる。
【0303】
上記自動車開発チームは、午後の2度目のテスト走行が開始される前に、上記最終の結果を受信する。上記自動車開発チームは、上記クライアント端末の表示装置上で上記最終の結果を見て、午後の2度目のテスト走行に対する対策を考える。
【0304】
本発明の実施態様に従うと、上記の通り、上記自動車開発チームは、午前の1度目のテスト走行が終了し且つ午後の2度目のテスト走行が開始される前の限られた時間内に、欠損を含むデータをストリーム処理することによって得られた仮の結果ではなく、欠損のないマスター・データを使用して更新された最終の結果を受け取ることが可能になる。従って、上記自動車開発チームは、当該最終の結果に基づいて、午後の2度目のテスト走行における種々の指示をドライバーやエンジニアに与えることが可能になる。
【0305】
上記実施例では、自動車開発におけるテスト走行を取り上げたが、例えば、飛行機開発におけるテスト飛行、電車(例えば、新幹線やリニアモーターカー)におけるテスト走行においても本願発明の上記実施態様が適用可能なことは当業者に明白である。同様に、サーキットで行われる自動車競技においても本願発明の上記実施態様が適用可能なことは当業者に明白である。