(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-08-17
(54)【発明の名称】大量の時系列データの滑らか且つ解像度が扱いやすいビュー
(51)【国際特許分類】
G06F 16/909 20190101AFI20220809BHJP
G06F 3/0488 20220101ALI20220809BHJP
G06F 3/04845 20220101ALI20220809BHJP
G06F 16/906 20190101ALI20220809BHJP
【FI】
G06F16/909
G06F3/0488
G06F3/04845
G06F16/906
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022505578
(86)(22)【出願日】2020-07-27
(85)【翻訳文提出日】2022-03-25
(86)【国際出願番号】 US2020043735
(87)【国際公開番号】W WO2021021734
(87)【国際公開日】2021-02-04
(32)【優先日】2019-07-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】518009205
【氏名又は名称】ファルコンリー インコーポレイテッド
【氏名又は名称原語表記】FALKONRY INC.
(74)【代理人】
【識別番号】110000855
【氏名又は名称】特許業務法人浅村特許事務所
(72)【発明者】
【氏名】トロマン、ビュカシン
(72)【発明者】
【氏名】カーンズ、ダニエル
(72)【発明者】
【氏名】サブラマニアン、レーニン クマール
(72)【発明者】
【氏名】メータ、ニクンジ アール.
【テーマコード(参考)】
5B175
5E555
【Fターム(参考)】
5B175DA10
5B175FA01
5B175FB04
5B175GB01
5B175JA02
5E555AA04
5E555AA06
5E555AA26
5E555BA02
5E555BA86
5E555BB02
5E555BC17
5E555CA02
5E555CA13
5E555CB03
5E555CB12
5E555CB46
5E555CC01
5E555DA01
5E555DB06
5E555DC05
5E555FA00
(57)【要約】
タイルは、このタイルにカバーされる時間の期間内に存在する実データの、特定の解像度で集約されたデータを収める。タイルは、コンピュータ・ディスプレイに適したあらゆる可能な解像度で生成され、平均及び分散などの集約基準を提供する。タイルは、最高レベルのビューから、収集された特定のデータ時点に至るまで、再検討及び分析のために、最も興味のあるパターンの挙動があるときに、ユーザの注目が惹きつけられるような、データの概要を提供する。
【特許請求の範囲】
【請求項1】
コンピュータ実行方法であって、
時系列データから、複数の解像度のそれぞれに対する複数のタイルを生成するステップであって、
前記複数の解像度のうちの1つの解像度に関連付けられた前記複数のタイルのそれぞれが、第1の共通時間長に対応する、
ステップと、
前記複数の解像度のうちの前記1つの解像度に関連付けられた複数のスーパータイルを生成するステップであって、
前記複数のスーパータイルのそれぞれが、前記複数のタイルの、タイルのグループに対応し、タイルの前記グループの各タイルのストレージ・オフセットを含むスーパータイル・ヘッダを含む、
ステップと、
前記複数のタイル及び前記複数のスーパータイルを生成した後、リクエストしたコンピュータからの第1のユーザ・リクエストを受信するステップであって、前記第1のユーザ・リクエストが、第1のタイムスタンプ、及び前記複数の解像度のうちの第1の解像度を指定する、ステップと、
前記第1のユーザ・リクエストにおいて指定された前記第1の解像度に関連付けられた複数のスーパータイルから第1のスーパータイルを決定するステップと、
前記第1のスーパータイル内の第1のタイルの格納ロケーションを識別するステップ、及び、これに応じて、前記格納ロケーションにおける前記第1のタイルを検索するステップであって、
前記第1のタイルに関連付けられた時間の第1の期間が、前記第1のユーザ・リクエストにおいて指定された前記第1の解像度に依存し、前記第1のタイムスタンプの時間を含み、
前記第1のタイルが、前記第1のタイルに対応する時間の前記第1の期間内にある全てのデータ時点を表す複数の集約された値を含む、
ステップと、
前記第1のタイルの前記複数の前記集約された値の可視化を生成するために、前記第1のタイルを含む第1のレスポンスを、前記リクエストしたコンピュータに伝送するステップと
を含む、コンピュータ実行方法。
【請求項2】
前記時系列データが、数的又はカテゴリ別であり、前記時系列データが、複数の時点における産業機器の動作中に、前記産業機器のセンサによって生成された信号の値を含む、請求項1に記載のコンピュータ実行方法。
【請求項3】
前記複数の集約された値が、前記第1のタイルに対応する時間の前記第1の期間内にある全てのデータ時点のMIN値、MAX値、MEAN値、及び/又はSTDEV値を含む、請求項1に記載のコンピュータ実行方法。
【請求項4】
前記複数の集約された値が、前記第1のタイルに対応する前記時間の前記第1の期間内にある全てのデータ時点のカウント値、トップ値、一意の値、及び/又は頻度値を含む、請求項1に記載のコンピュータ実行方法。
【請求項5】
前記複数の解像度の各解像度に対するパーケット・ファイルを作り出すステップ及び格納するステップであって、前記パーケット・ファイルが、前記パーケット・ファイルに対応するそれぞれの解像度に関連付けられた複数のスーパータイルを含む、ステップをさらに含む、請求項1に記載のコンピュータ実行方法。
【請求項6】
前記リクエストしたコンピュータからの前記第1のユーザ・リクエストを受信するステップに応答して、前記第1のユーザ・リクエストにおいて指定された前記第1の解像度に基づいて、複数のパーケット・ファイルからの特定のパーケット・ファイルを識別するステップ及びアクセスするステップであって、前記特定のパーケット・ファイルが、前記第1のユーザ・リクエストにおいて指定された前記第1の解像度に関連付けられた前記複数のスーパータイルを含む、ステップをさらに含む、請求項1に記載のコンピュータ実行方法。
【請求項7】
前記複数の解像度の各解像度に対して、それぞれの解像度に対する複数のスーパータイルをデータ・リポジトリ内の同じディレクトリ・ロケーションに格納するステップをさらに含む、請求項1に記載のコンピュータ実行方法。
【請求項8】
前記第1のユーザ・リクエストの後で第2のユーザ・リクエストを受信することに応答して、第2のタイルを検索するステップをさらに含む、請求項1に記載のコンピュータ実行方法。
【請求項9】
前記第2のユーザ・リクエストがズーム・ジェスチャに関連付けられるとき、前記第2のタイルが、時間の前記第1の期間とは異なる時間長に対応し、前記第1のタイムスタンプの前記時間をカバーする時間の第2の期間に対応するセルの第2のアレイを含み、前記第2のタイルが、前記ズーム・ジェスチャと対応する第2の解像度に関連付けられたスーパータイル内にある、請求項8に記載のコンピュータ実行方法。
【請求項10】
前記第2のユーザ・リクエストがパン・ジェスチャに関連付けられるとき、前記第2のタイルが、時間の前記第1の期間と同じ時間長に対応し、第1のタイムスタンプの前記時間とは異なる第2のタイムスタンプの時間をカバーする時間の第2の期間に対応するセルの第2のアレイを含む、請求項8に記載のコンピュータ実行方法。
【請求項11】
コンピュータ実行方法であって、
タイムライン上の時間ロケーション、及び複数の解像度のうちの1つの解像度を指定するユーザ・リクエストを生成するステップであって、
前記ユーザ・リクエストが、第1の信号を閲覧するためのものである、
ステップと、
前記ユーザ・リクエストに応答してタイルを含むデータを受信するステップであって、
前記タイルが、前記ユーザ・リクエストにおいて指定された前記時間ロケーションをカバーする時間の期間に対応し、
前記タイルに関連付けられた時間の前記期間が、前記ユーザ・リクエストにおいて指定された前記解像度に依存し、
前記タイルが、前記タイルに対応する時間の前記期間内にある前記第1の信号の全てのデータ時点を表す複数の集約された値を含む、
ステップと、
前記タイルの前記複数の集約された値の可視化を含むグラフィカル・ディスプレイを生成するステップと
を含む、コンピュータ実行方法。
【請求項12】
前記タイルが、ローカル・キャッシュから検索されるか、リモート・サーバから受信され、前記タイルが、前記タイルが前記リモート・サーバから受信された後、ローカルにキャッシュされる、請求項11に記載のコンピュータ実行方法。
【請求項13】
前記タイルが、期限切れ時間後に、前記タイルがローカル・キャッシュから削除されるように、前記期限切れ時間を有する、請求項11に記載のコンピュータ実行方法。
【請求項14】
前記第1の信号が、数的信号であり、前記複数の集約された値が、前記タイルに対応する時間の前記期間内にある前記第1の信号の全てのデータ時点のMIN値、MAX値、MEAN値、及び/又はSTDEV値を含み、前記第1の信号を表す前記複数の集約された値が、1つの画面上に複数の概要線として表示される、請求項11に記載のコンピュータ実行方法。
【請求項15】
前記複数の概要線からの1つの概要線が、1つ又は複数のデータ・ポイントを欠き、データ・ギャップを形成しているとき、前記概要線の前記データ・ギャップの両側の2つの最も近いデータ・ポイントが、直線を使用して接続される、請求項14に記載のコンピュータ実行方法。
【請求項16】
前記第1の信号が、分類別信号であり、前記複数の集約された値が、前記タイルに対応する前記時間の前記期間内にある前記第1の信号の全てのデータ時点のカウント値、トップ値、一意の値、及び/又は頻度値を含み、前記データ時点が、1つ又は複数の分類別イベントに関連し、前記第1の信号が、前記1つ又は複数の分類別イベントのそれぞれに対する色の縞模様を含むバーバー・ポールとして表示される、請求項11に記載のコンピュータ実行方法。
【請求項17】
前記複数の集約された値が、比例バーとして表示される、請求項16に記載のコンピュータ実行方法。
【請求項18】
前記グラフィカル・ディスプレイが、前記第1の信号がプロットされた同じ時間スケール上にプロットされた第2の信号の可視化を含み、前記第2の信号及び前記第1の信号が、異なるレートでサンプリングされる、請求項11に記載のコンピュータ実行方法。
【請求項19】
前記第1の信号上の特定のカーソル・ポジションにおけるマウスオーバー入力を受信するステップをさらに含む、請求項11に記載のコンピュータ実行方法。
【請求項20】
前記マウスオーバー入力を受信するステップに応答して、前記グラフィカル・ディスプレイにおける全てのプロット全体に垂直に延びる前記特定のカーソル・ポジションにおける垂直カーソルを生成するステップ、及び、前記特定のカーソル・ポジションにおける前記第1の信号の前記複数の集約された値の少なくとも1つを指示するキャプションを生成するステップをさらに含む、請求項19に記載のコンピュータ実行方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の1つの技術分野は、データ処理及びデータ可視化の分野における方法、システム、コンピュータ・ソフトウェア、及び/又はコンピュータ・ハードウェアに関する。
【背景技術】
【0002】
本セクションにおいて説明されるアプローチは、推進されることが可能なアプローチであるが、必ずしも以前に想像又は推進されたことがあるアプローチではない。したがって、別途指示されない限り、本セクションにおいて説明されるアプローチのいずれかが、単に本セクションにこれらを含むという理由で、従来技術としてふさわしいと仮定されるべきではない。
【0003】
製造及び処理エンジニアはますます、前例のない量の動作データを管理し、再検討している。例えば、石油及びガス業界、金属及び採掘業界、並びに半導体業界などの業界における機械及びセンサは、企業全体から数テラバイトもの動作データを時間の経過とともに生み出す。大量データを管理し、再検討する際に生じる非常に多くの難題がある。これらの難題は、フロントエンドにおけるデータの配信及び提示から、バックエンドにおける処理及び格納限界までの範囲に及ぶ。
【発明の概要】
【課題を解決するための手段】
【0004】
したがって、大量データの処理、格納、及び視覚化に対する改善された解決策を有することが役立つはずである。
【0005】
本発明は、添付の図面の図において、限定としてではなく、例として示され、同様の参照番号が同様の要素を参照する。
【図面の簡単な説明】
【0006】
【
図1】いくつかの実施例による、実例のネットワーク化されたコンピュータ・システムを示す図である。
【
図2A】いくつかの実施例による、実例のタイルを示す図である。
【
図2B】いくつかの実施例による、実例のスーパータイルを示す図である。
【
図2C】いくつかの実施例による、実例のパーケット・ファイルを示す図である。
【
図3】いくつかの実施例による、大量の時系列データの処理の実例の方法を示す図である。
【
図4】いくつかの実施例による、大量の時系列データの提示の実例の方法を示す図である。
【
図5】いくつかの実施例による、複数の信号の値を示す実例の対話型グラフィカル・ユーザ・インターフェースを示す図である。
【
図6】いくつかの実施例による、数的信号に関する値を示す実例の対話型グラフィカル・ユーザ・インターフェースを示す図である。
【
図7】いくつかの実施例による、数的信号のためのキャプションを示す実例の対話型グラフィカル・ユーザ・インターフェースを示す図である。
【
図8】いくつかの実施例による、概要ラインにおける欠損値の実例の表示を示す図である。
【
図9】いくつかの実施例による、分類別(categorical)信号に関する値を示す実例の対話型グラフィカル・ユーザ・インターフェースを示す図である。
【
図10】いくつかの実施例による、分類別信号のためのキャプションを示す別の実例の対話型グラフィカル・ユーザ・インターフェースを示す図である。
【
図11A】いくつかの実施例による、一連のズーム動作を通じた信号の段階的詳細を示す図である。
【
図11B】いくつかの実施例による、一連のズーム動作を通じた信号の段階的詳細をさらに示す図である。
【
図12】本発明の実施例が実装され得るコンピュータ・システムの実例のブロック図である。
【
図13】コンピューティング・デバイスの動作を制御するための基本ソフトウェア・システムの実例のブロック図である。
【発明を実施するための形態】
【0007】
以下の説明では、説明のために、非常に多くの具体的詳細が、本発明を完全に理解するために示される。それでも、これらの具体的詳細がなくても、本発明が実践され得ることが明らかであろう。他の事例では、よく知られた構造及びデバイスが、本発明を必要以上にあいまいにしないように、ブロック図の形で示される。
【0008】
実施例は、以下の概略に従ってセクション内において本明細書で説明される。
1.0 総括
2.0 システムの全体像
3.0 構造的全体像
3.1 全体的なデータ構造
3.2 タイルの実装
3.3 スーパータイルの実装
3.4 座標系
3.5 ストレージ・レイアウト
3.6 リクエスト・フォーマット
4.0 手順の全体像
5.0 グラフィカル・ユーザ・インターフェースの実装
5.1 時間プロット
5.2 数的プロット
5.3 数値キャプション
5.4 データ・ギャップ
5.5 分類別プロット
5.6 分類別キャプション
5.7 垂直カーソル
5.8 段階的詳細
5.9 ジェスチャ
6.0 リアルタイム処理
6.1 タイル・ツリー
6.2 時間次元階層
6.3 座標系
6.4 ストレージ
6.5 クエリ・サービス
7.0 ハードウェアの全体像
8.0 ソフトウェアの全体像
9.0 開示の他の態様
【0009】
1.0 総括
【0010】
数的及び分類別時系列データの統合された、階層型の、及び応答的な処置は、動作データの探索、及び予測の斬新且つ明白でない手段である。このようなデータの特定の編成及びストレージが、解像度、範囲、又はコンピューティング・デバイスに関わらず、簡単に理解される可視化における非常に複雑なデータの滑らかなビューを生じる。
【0011】
機械及びセンサは、時系列データを含み得る未加工又は実際の動作データを生み出す。各時系列は全体的に1つの信号に対応し、1つ又は複数の時点に関する1つ又は複数の特徴ベクトルを含む。ここで説明される技法は、タイルを使用した実データの中心ビュー(foveal view)を提供し、タイルは、データ転送の基本単位である。実施例では、タイルは、このタイルにカバーされる時間の期間内に存在する実データの、特定の可視化解像度で集約されたデータを収める。タイルは、コンピュータ・ディスプレイに適したあらゆる可能な解像度で生成され、平均及び分散などの集約基準を提供する。本実施例では、特定の解像度レベルにおけるあらゆるタイルが、同じ相対的な期間を含み、タイル内の時点の観点から、タイルのどれも重複しないような、開始点を有する。いくつかの実施例では、タイルは、ツリーの葉ノードが、データが記録された丁度そのときの未加工データを収め、その一方で、中間又は分岐ノードが、異なる解像度での集約を表すようなツリーに編成され得る。タイルは、最高レベルのビューから、収集された特定のデータ時点に至るまで、再検討及び分析のために、最も興味のあるパターンがあるときに、ユーザの注目が惹きつけられ得るような、データの概要を提供する。
【0012】
1つの態様では、コンピュータ実行方法は、時系列データから、複数の解像度のそれぞれに対する複数のタイルを生成することであって、複数の解像度のうちの1つの解像度に関連付けられた複数のタイルのそれぞれが、第1の共通時間長に対応する、生成することを含む。方法はまた、複数の解像度のうちの1つの解像度に関連付けられた複数のスーパータイルを生成することであって、複数のスーパータイルのそれぞれが、複数のタイルの、タイルのグループに対応し、タイルのグループの各タイルのストレージ・オフセットを含むスーパータイル・ヘッダを含む、生成することを含む。方法はまた、複数のタイル及び複数のスーパータイルを生成した後、リクエストしたコンピュータからの第1のユーザ・リクエストを受信することであって、第1のユーザ・リクエストが、第1のタイムスタンプ、及び複数の解像度のうちの第1の解像度を指定する、受信することと、第1のユーザ・リクエストにおいて指定された第1の解像度に関連付けられた複数のスーパータイルから第1のスーパータイルを決定することとを含む。方法はまた、第1のスーパータイル内の第1のタイルの格納ロケーションを識別すること、及び、これに応じて、格納ロケーションにおける第1のタイルを検索することであって、第1のタイルに関連付けられた時間の第1の期間が、第1のユーザ・リクエストにおいて指定された第1の解像度に依存し、第1のタイムスタンプの時間を含み、第1のタイルが、第1のタイルに対応する時間の第1の期間内にある全てのデータ時点を表す複数の集約された値を含む、検索することを含む。方法はまた、第1のタイルの複数の集約された値の可視化を生成するために、第1のタイルを含む第1のレスポンスを、リクエストしたコンピュータに伝送することを含む。
【0013】
別の態様では、コンピュータ実行方法は、タイムライン上の時間ロケーション、及び複数の解像度のうちの1つの解像度を指定するユーザ・リクエストを生成することであって、ユーザ・リクエストが、第1の信号を閲覧するためのものである、生成することを含む。方法はまた、ユーザ・リクエストに応答してタイルを含むデータを受信することであって、タイルが、ユーザ・リクエストにおいて指定された時間ロケーションをカバーする時間の期間に対応し、タイルに関連付けられた時間の期間が、ユーザ・リクエストにおいて指定された解像度に依存し、タイルが、タイルに対応する時間の期間内にある第1の信号の全てのデータ時点を表す複数の集約された値を含む、受信することを含む。方法はまた、タイルの複数の集約された値の可視化を含むグラフィカル・ディスプレイを生成することを含む。
【0014】
本明細書で開示される技法は、動作データを閲覧するためのリクエストの処理をはかどらせ、動作データの可視化を向上させるように、異なる頻度で生成され得る前例のない量の動作データを管理する。技法は、画面上での速い検索及び集約データを可能にして、効率的だが有益な可視化を可能にするために、ストレージ内の未加工データ及び事前計算された集約データをインテリジェントに編成することを伴う。技法は、リクエストを処理するサーバの計算負荷を低減させる。技法はまた、動作データが、異なる時間スパンにわたって、又は異なる解像度で視覚化されるにつれて、低い検索レイテンシ及びストレージ要求を伴う大きいデータセットの高い可視性を可能にする。タイルは、転送の基本単位であり、適切な量の未加工データ又は集約データを収め、ユーザを詳細に導くときに表示のために簡単にロードされるか、時間の特定の部分にナビゲートし、応答的に又は対話形式で、異なる時間範囲及び解像度にわたって、ユーザがデータを閲覧することを可能にする。必然的に、開示の技法は、非常に多くの技術的利益をもたらす。1つの実例は、メモリ、CPUサイクル、ネットワーク・トラフィック、及び他のコンピュータ・リソースの低減された使用であり、本明細書で示される理由全てのために、機械効率を改善させる。
【0015】
他の実施例、態様、及び特徴が、全体として本開示の残りから明らかになるであろう。
【0016】
2.0 システムの全体像
【0017】
全ての描かれた図、説明の全て、及び本開示における請求項は、説明される機能を実行するようにプログラムされた専用の分散型コンピュータ・システム・デザイン及び命令使用して、特別にプログラムされたコンピュータを含む技術的システム及び技術的方法を提示、開示、及び特許請求することを意図するものである。これらの要素は、産業環境において大量の時系列データを効率的且つインテリジェントに視覚化する際の困難さの問題にコンピューティング技術を実際に適用するために、以前に利用可能でなかった機能を実行する。このようにして、本開示は技術的問題に対する技術的解決策を提示し、抽象的観念、精神的処理、人間活動又は数学的アルゴリズムを編成するための方法などの、特許保護適格性への何らかの司法例外をカバーするための本開示又は特許請求の何らかの解釈は、本開示では支持されず、誤っている。
【0018】
図1は、様々な実施例が実践され得る実例のコンピュータ・ネットワーク・システム100のブロック図である。
図1は、本明細書で説明されるプログラミングを実行するように構成された構成要素の多くの可能な配置の1つだけを示す。他の配置は、より少ない又は異なる構成要素を含み得、構成要素間の機能の分割は、配置に応じて変化し得る。
【0019】
図1の実例では、ネットワーク化されたコンピュータ・システム100は、ネットワーク102を介して直接的又は間接的に通信連結された、1つ又は複数のクライアント・コンピュータ104とサーバ・コンピュータ108との間のデータの交換を容易にし得る。したがって、
図1の要素104及び108のそれぞれは、処理及び可視化動作とともに本明細書でさらに説明される機能及び動作を提供する格納されたプログラムをホスト又は実行する1つ又は複数のコンピュータを表し得る。
【0020】
サーバ・コンピュータ108は、1つ又は複数のプロセッサ・コア、コプロセッサ、若しくは他のコンピュータを有するサーバクラス・コンピュータ又は他のコンピュータを使用して実装され得る。サーバ・コンピュータ108は、可視化のためのデータの格納、処理、分析、及び送信を行うようにプログラム又は構成された命令を格納する、コンピュータ、ソフトウェア、及び/若しくはハードウェア、又は組合せであり得る。サーバ・コンピュータ108は、1つ又は複数のデータ・リポジトリ106に関連付けられ得る。
【0021】
実施例では、サーバ・コンピュータ108は、受信命令110、タイル生成命令112、タイル格納命令114、予測命令116、検索命令118、及び伝送命令120を実行し、これらの機能は、本明細書の他の部分で説明される。オペレーティング・システム、ユーティリティ・ライブラリ、プレゼンテーション層、データベース・インターフェース層などの完全なシステムを形成するための命令の他のセットが含まれ得る。
【0022】
受信命令110は、データ・リポジトリ106内の処理及び/又は格納のために動作データを受信することをサーバ・コンピュータ108に行わせ得る。実施例では、動作データは時系列データであり得、例えばクライアント・コンピュータ104などのリクエストしたコンピュータ上での、可視化(例えば、閲覧)のために処理され得る。実施例では、動作データは、機械、デバイス、又は機器の動作中に、機械、デバイス、又は機器(
図1に図示せず)によって生成された実データ又は未加工データであり得るか、1つ又は複数の機械学習(ML:machine learning)予測モデルによって生成された予測データであり得る。時系列データは、数的な、分類別の、又は2次元のイメージであり得る。実例の数的時系列データは、機械、デバイス、若しくは機器によって生成された温度、圧力、若しくは流量、又は、ML予測モデルによって行われた状態予測の信頼度スコアに関するものであり得る。実例の分類別時系列データは、値の固定セット、(機械、デバイス、若しくは機器の)このような異なる状態、又は、(予測モデルによって行われた)状態予測を有する。実例の2次元イメージの時系列データは、カラー、赤外線、紫外線、又はモノクロームの定点写真撮影又はレイアウト情報を含むことができる。
【0023】
タイル生成命令112は、複数の解像度のそれぞれについての、次にさらに論じられるような、複数のタイル及び複数のスーパータイルを生成するために、時系列データを含む動作データ(例えば、実データ又は予測データ)を処理することを、サーバ・コンピュータ108に行わせ得る。各タイルは、このタイルによってカバーされる時間の期間内に存在する動作データについての集約されたデータを含むメタデータを含み得る。例えば、解像度0におけるタイルは、動作データの10秒をカバーし、このタイルのメタデータの一部として、この10秒の時間区間内に存在する動作データを表す概要データ(例えば、集約されたデータ)を含み得る。別の実例として、解像度4におけるタイルは、動作データの100,000秒をカバーし、このタイルのメタデータの一部として、この100,000秒の時間区間内に存在する動作データを表す概要データ(例えば、集約されたデータ)を含み得る。
【0024】
タイル格納命令114は、複数の解像度のそれぞれのための複数のタイルをデータ・リポジトリ106に格納することをサーバ・コンピュータ108に行わせ得る。実施例では、各解像度のための複数のタイルは、この解像度のための複数のスーパータイルにグループ化され得る。1つの解像度のための複数のスーパータイルは、複数のスーパータイル内の特定のタイルの素早いアクセス及び検索のために、構成及び/又はストレージ・システムに基づき、データ・リポジトリ106の様式で格納され得る。1つの解像度のための複数のスーパータイルは、データ・リポジトリ106に単一のファイル(例えば、パーケット・ファイル)として一緒に格納され得る。1つの解像度のための複数のスーパータイルは、この解像度のための同じディレクトリ下の個々のファイルとして、データ・リポジトリ106に格納され得る。実施例では、スーパータイル内の各タイルは、LZ4、又は当業者に知られた他の技法を使用して、圧縮及びエンコードされ得る。
【0025】
予測命令116は、例えば、機械、デバイス、又は機器によって生成された実データ又は未加工データを使用して、機械、デバイス、又は機器の警告、条件、又は状態(予測データ)を予測するために、訓練された予測モデルを適用することを、サーバ・コンピュータ108に行わせ得る。予測モデルによって生成された予測データは、数的又は分類別であり得、リクエストしたコンピュータ上での可視化(例えば、閲覧)のために処理された動作データであり得る。
【0026】
検索命令118は、リクエストしたコンピュータからユーザ・リクエスト(APIリクエスト)を受信すること、処理された動作データを閲覧すること、及びこれに応じて、リクエストに対応する伝送の1つの単位としてタイルのロケーションを決定することを、サーバ・コンピュータ108に行わせ得る。検索命令118はまた、ロケーションを使用してタイルを検索することをサーバ・コンピュータ108に行わせ得る。伝送命令120は、可視化のために、検索命令118によって検索されたタイルをクライアント・コンピュータ104に伝送することを、サーバ・コンピュータ108に行わせ得る。
【0027】
実施例では、コンピュータ・システム100は、本明細書で説明される機能を実施するための、1つ又は複数のメモリに格納されたプログラム命令を実行する1つ又は複数のハードウェア・プロセッサなどの、1つ又は複数のコンピューティング・デバイスにおけるハードウェアによって少なくとも部分的に実行される構成要素を備える。本明細書で説明される全ての機能は、様々な実施例において、専用コンピュータ又は汎用コンピュータにおけるプログラミングを使用して実施される動作を指示することを意図するものである。「コンピュータ」は、1つ又は複数の物理コンピュータ、仮想コンピュータ、及び/又はコンピューティング・デバイスであり得る。例として、コンピュータは、1つ又は複数のサーバ・コンピュータ、クラウド・ベース・コンピュータ、コンピュータのクラウド・ベース・クラスタ、ドッカー・コンテナ、仮想プロセッサなどの仮想マシン・インスタンス若しくは仮想マシン・コンピューティング要素、ストレージ及びメモリ、データ・センタ、ストレージ・デバイス、デスクトップ・コンピュータ、ラップトップ・コンピュータ、モバイル・デバイス、並びに/又は、任意の他の専用コンピューティング・デバイスであり得る。本明細書での「コンピュータ」へのいずれかの言及は、別途明確に述べられない限り、1つ又は複数のコンピュータを意味し得る。
【0028】
本明細書で説明されるコンピュータ実行可能命令は、CPUの命令セット内の機械実行可能コード内にあり得、単独で、又は、JAVA(登録商標)SCRIPT、他のスクリプト言語、及び他のプログラミング・ソース・テキストにおけるスクリプトと組み合わせて、JAVA(登録商標)、SCALA、C++、PYTHON、又は、任意の他の人間が読めるプログラミング言語又は環境で書かれたソース・コードに基づいてコンパイルされていてよい。別の実施例では、プログラムされた命令はまた、
図1のシステム、又は別個のリポジトリ・システム内の、不揮発性RAM又はディスク・ストレージなどの大容量ストレージ・デバイスにデジタル的に格納されたソース・コードの1つ又は複数のファイル又はプロジェクトを表し得、これらの命令は、コンパイル又は翻訳されたときに実行可能命令を生成し、実行可能命令は、実行されると、これらの命令を参照しながら本明細書で説明される機能又は動作をコンピュータに実施させる。言い換えれば、描かれた図は、プログラマ又はソフトウェア開発者が、コンピュータによる実行のために、実行可能ファイルに後でコンパイルするために、又は、バイトコード若しくは同等物に翻訳するために、ソース・コードを編成及び配置する様式を表し得る。
【0029】
データ・リポジトリ106は、サーバ・コンピュータ108と連結され、データベース(例えば、リレーショナル・データベース、オブジェクト・データベース、ポストリレーショナル・データベース)、ファイルシステム、blobストレージ、及び/又は、ストレージ・システムの任意の他の適切なタイプを含み得る。データ・リポジトリ106は、機械、デバイス、若しくは機器によって生成された実データ若しくは未加工データなどの動作データ、及び/又は、ML予測モデルによって生成された予測データを格納し得る。例えば、1つ又は複数のセンサは、機械、デバイス、又は機器の動作中に、機械、デバイス、又は機器の1つ又は複数の性質を検出又は測定し得る。実例の機械、デバイス、又は機器は、ウィンドミル、コンプレッサ、多関節ロボット、IoTデバイス、又は他の機械設備である。実データ又は未加工データは、処理のために、ネットワーク102上でサーバ・コンピュータ108に直接的又は間接的に伝送されるか、そうでなければ提供され得る。1つ又は複数の信号の処理された時系列データは、処理されたデータをできるだけ素早くサーブすること、及び/又は読み込むことを可能にする特定のデータ構造に応じて、データ・リポジトリ106に格納され得る。実施例では、データ構造は、セル、タイル、スーパータイル、及び/又はパーケット・ファイルに関する。
【0030】
ネットワーク102は、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、パブリック・インターネットなどのグローバル相互接続インターネットワーク、又は、その組合せなどの、1つ又は複数のワイヤレス又は有線ネットワークの組合せを広く表す。それぞれのこのようなネットワークは、トランスミッション・コントロール・プロトコル(TCP)又はユーザ・データグラム・プロトコル(UDP)、インターネット・プロトコル(IP)、ハイパー・テキスト・トランスファ・プロトコル(HTTP)等を含むがこれらに限定されない、オープン・システム相互接続(OSI)マルチレイヤ・ネットワーキング・モデルなどの規格によるインターネットワーキング・プロトコルを実装する格納されたプログラムを使用又は実行し得る。本明細書で説明される全てのコンピュータは、ネットワーク102に接続するように構成され得、本開示は、
図1の全ての要素が、ネットワーク102を介して通信連結されることを前提とする。
図1に描写された様々な要素はまた、説明のために
図1に描写されていない直接通信リンクを介して互いに通信し得る。
【0031】
サーバ・コンピュータ108は、クライアント・コンピュータ104などの、複数のリクエスト・コンピューティング・デバイスによってネットワーク102上でアクセス可能である。任意の他の数のクライアント・コンピュータ104が、サーバ・コンピュータ108にいつでも登録され得る。したがって、
図1の要素は、1つの実行可能な実施例を表すことを意図するが、他の実施例で使用可能な要素の数を制限又は限定することを意図するものではない。
【0032】
クライアント・コンピュータ104などのリクエスト・コンピューティング・デバイスは、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット型コンピュータ、スマートフォン、又は、サーバ・コンピュータ108へのアクセスを可能にするコンピューティング・デバイスの他の任意のタイプを備え得る。クライアント・コンピュータ104は、処理のために実データ若しくは未加工データをサーバ・コンピュータ108に送信し得、並びに/又は、処理されたデータをリクエストするため、及び閲覧又は視覚化するために、使用され得る。
【0033】
例えば、クライアント・コンピュータ104は、処理されたデータを閲覧したいというユーザ・リクエストをサーバ・コンピュータ108に送信し、これに応じて、サーバ・コンピュータ108からタイルを含むレスポンスを受信し得る。クライアント・コンピュータ104上のブラウザ又はクライアント・アプリケーションは、タイルを受信し、タイルの解凍及びデコードをハンドリングし得る。クライアント・コンピュータ104は、本明細書でさらに説明されるような、ズーム、パン、及び選択ジェスチャなどの簡単な閲覧動作を可能にする対話型グラフィカル・ユーザ・インターフェース(GUI)に、タイルに関連付けられたデータを表示し得る。
【0034】
実施例では、クライアント・コンピュータ104は、サーバ・コンピュータ108へのコールを最小化する(例えば、レイテンシを最小化する)ためのデータ・キャッシングを担い得る。クライアント・コンピュータ104は、DBベース・キャッシュ及び/又はHTTPキャッシュを利用し得る。例として、以前に閲覧された粒度にズームバックすることなどによって、タイルが再検討されるとき、クライアント・コンピュータ104は、特定のタイルがローカルにディスク上に格納されているか、メモリに格納されているかを最初にチェックし得る。このタイルがローカルに格納されている場合、クライアント・コンピュータ104は、このタイルをキャッシュからリロードする。そうでなければ、クライアント・コンピュータ104は、適切なタイルを返すために、ユーザ・リクエストをサーバ・コンピュータ108に送信する。実施例では、サーバ・コンピュータ108から受信された各タイルは、キャッシュされたデータを期限切れにすることによって、占有されたディスク・スペースをクライアント・コンピュータ104が放棄することを可能にするための、時間満了データに関連付けられ得る。
【0035】
3.0 構造的全体像
【0036】
3.1 全体的なデータ構造
【0037】
機械、デバイス、又は機器によって生成された時系列データは、時系列IDによってそれぞれ識別された1つ又は複数の時系列を含み得、異なる解像度で閲覧されるようにサーバ・コンピュータ108又はクライアント・デバイスによって処理され得る。より細かい粒度でのより高い解像度は、データ・レンダリング及び可視化時に、より短い時間スライスに関連付けられる。同様に、より粗い粒度でのより低い解像度は、データ・レンダリング及び可視化時に、より長い時間スライスに関連付けられる。
【0038】
各解像度は、データ処理及び可視化のための単位として使用される時間スライスの長さに基づいて割り当てられたレベル及び解像度IDに関連付けられ得る。この時間スライスは、本明細書では、この解像度のステップと呼ばれる。実施例では、ステップ・サイズは、対数スケール上のものであり得る。例えば、解像度0のステップは、長さ1msの時間スライスを有し得、解像度12のステップは、長さ1012msの時間スライスを有し得る。別の実施例では、ステップは、人の消費のためにデザインされ得る。
【0039】
3.2 タイルの実装
【0040】
時間ドメインは、
図2Aに示されているように、タイルに分けられ得る。例えば、
図2Aは、時間ドメイン内の2つの連続的な時間の期間又は時間区間と対応するタイル200
A及びタイル200
Bを示す。各タイル200は、複数のステップ202を含む。実施例では、(各ステップによってカバーされる時間長は、解像度に基づいて変化し得るが)タイル200は全て、同じ数のTILE_SIZEのステップを有し得る。例えば、タイル200
Aは、ステップ202
A-1、ステップ202
A-2、...、及びステップ202
A-TILE_SIZEを含み、タイル200
Bは、ステップ202
B-1、ステップ202
B-2、...、及びステップ202
B-TILE_SIZEを含む。
【0041】
単一のステップ202のデータは、本明細書ではセルと呼ばれる。ベース又はオリジナルの解像度(例えば、未加工測定値又はデータ時点が生成される頻度に対応する解像度)に関連付けられたステップ202は、ステップ202の時間スライスの期間内の時系列データの未加工測定値又はデータ時点を含む。実施例では、それぞれのこのようなセルは、未加工測定値の正確なタイムスタンプを保持する。実施例では、セルは、未加工のサンプリング頻度より細かい解像度では維持されない。
【0042】
ベース又はオリジナルの解像度より粗い解像度に関連付けられたステップ202は、ステップ202の時間スライスの期間内の時系列データの全ての測定値又はデータ時点を表す集約された値を含み得る。タイル200は、それぞれのセルが、タイル200内のTILE_SIZEステップに対応する、一連のTILE_SIZE値としてエンコードされ得る。実施例では、タイル200内のステップ202の集約された値は、JSONアレイオブアレイとしてシリアライズされ得る。XML及びYAMLなどの他のフォーマットが可能である。実施例では、それぞれのこのようなセルは、ステップ202の時間スライスの開始時間及び終了時間のタイムスタンプを保持する。
【0043】
タイル200内のセルは、ステップによってカバーされた時間内の1つ又は複数の信号によって生成された1つ又は複数の時系列の全ての測定値又はデータ時点を表す1つ又は複数の集約された値に関連付けられ得る。タイル200はまた、タイル200の時間の期間内の時系列データの全ての測定値又はデータ時点を表す集約された値に関連付けられ得る。実施例では、タイル200の集約された値は、タイル200のメタデータとして格納され得る。
【0044】
集約された値は、このデータのタイプに適切な集約関数を使用して計算され得る。数的時系列データについては、集約関数の実例は、MEAN、STDEV、MAX、及びMINである。分類別時系列データについては、集約関数の実例は、カウント、トップ、ユニーク、及び頻度である。イメージ又は2次元の時系列データについては、集約関数の実例は、平均及びデルタである。
【0045】
実施例では、解像度Kにおけるタイルの値は、解像度K-1における複数のタイルの値から集約されたデータを表す。同様に、解像度Kにおけるセルの値は、解像度K-1における複数のセルの値から集約されたデータを表し得る。
【0046】
実施例では、望まれる集約関数と同じくらい多くのタイルが、作り出され得る。例えば、複数の集約された値が単一のタイルのセルに記録されるのではなく、単一の集約された値が単一のタイルのセルに記録され得、同じ時間の期間又は時間区間に対して、複数のタイルが、それぞれ異なる集約のために、作り出され得る。
【0047】
3.3 スーパータイルの実装
【0048】
実施例では、タイル200は、バックエンドとフロントエンドとの間の(例えば、サーバ・コンピュータ108とクライアント・コンピュータ104との間の)転送の基本単位である。タイル200は、したがって、素早い転送を可能にするのに十分小さいが、多すぎるリクエストを防ぐのに十分大きい必要がある。実施例では、TILE_SIZEは10,000(ステップ)であるが、他のサイズが可能である。
【0049】
全体的な時間ドメインの長さに応じて、これは、途方もなく大きい数のタイルを生じ得、これは、ファイルシステム・オーバヘッド、及びストレージ処理負荷などの、基礎をなすストレージに対する有害な効果を有し得る。
【0050】
このような有害な効果を回避するための1つの技法は、セクション6で論じられるように、タイルをツリーに編成することである。それでも、手短に言えば、ツリー内の各レベルが解像度に対応し、親ノードが、例えばTILE_SIZEのセルを収めるなど、一杯のときだけ、新しいタイル・ノードが作り出される。これが起こると、親タイルは、集約されたセルとして再構築され、次に低い解像度へのコンバージョンの要因に基づく対応する数の子タイルが作り出され、それぞれが、これらの時間範囲に適するように、前の親タイルのセルを保持する。ツリーのこのような動的作成が、必要以上の多くの解像度を作り出すのを回避し、ストレージ要求を低減させる。
【0051】
別の技法は、
図2Bに示されているように、タイルをスーパータイルにグループ化することである。スーパータイルへのタイルのグループ化又は抽象化のこの追加のレベルを有することは、関心のあるデータの部分への、より素早い焦点合わせを可能にし、データの他の部分にアクセスする必要性を低減させ得る。例えば、
図2Bは、時間ドメインにおける2つの連続的な時間の期間又は時間区間と対応するスーパータイル250
I及びスーパータイル250
Jを示す。各スーパータイル250は、ヘッダ252及び複数のタイル200を含む。実施例では、スーパータイル250は、同じ数のSUPERTILE_SIZEの個々のタイルを収め得る。例えば、スーパータイル250
Aは、ヘッダ252
I、タイル200
I-1、タイル200
I-2、...タイル200
I-SUPETILE_SIZEを含み、スーパータイル250
Jは、ヘッダ252
J、タイル200
J-1、タイル200
J-2、...タイル200
J-SUPERTILE_SIZEを含む。各ヘッダ252は、対応するスーパータイル250における各タイル200のそれぞれのオフセットを格納する。例えば、ヘッダ252
Iは、タイル200
I-1、タイル200
I-2、...タイル200
I-SUPERTILE_SIZEのオフセットを格納し、ヘッダ252
Jは、タイル200
J-1、タイル200
J-2、...タイル200
J-SUPERTILE_SIZEのオフセットを格納する。
【0052】
実施例では、SUPERTILE_SIZEは1,000(タイル)であるが、他のサイズが可能である。実施例では、スーパータイル250内の各タイル200は、LZ4、又は別の適切なデータ圧縮アルゴリズムを使用して圧縮され得る。
【0053】
構成に応じて、各時系列データは、不要なタイルが生成されるのを防ぐための、最大及び最小解像度を有し得る。例えば、最大又は最も細かい解像度は、解像度-3(R-3)におけるものであり得、最小又は最も粗い解像度は、解像度8(R8)におけるものであり得る。
【0054】
実施例では、パーケット・ファイルが、各解像度に対して作り出され得、対応する解像度IDを使用して識別され得る。
図2Cは、いくつかの実施例による、実例のパーケット・ファイル275を示す。パーケット・ファイル275は、この解像度に対する全てのスーパータイル250を行として収める。例えば、
図2Cは、スーパータイル250
1、スーパータイル250
2、...、スーパータイル250
Mを示している。スーパータイル250
1は、ヘッダ252
1、タイル200
1-1、タイル200
1-2、...タイル200
J-Nを含む。スーパータイル250
2は、ヘッダ252
2、タイル200
2-1、タイル200
2-2、...タイル200
2-Nを含む。スーパータイル250
Mは、ヘッダ252
M、タイル200
M-1、タイル200
M-2、...タイル200
M-Nを含む。実施例では、Nは、SUPERTILE_SIZEである。対応するスーパータイル250内の各タイル200は、JSONフォーマットセルの圧縮されたアレイを収めるタイプバイトの列としてモデル化され得る。XML又はYAMLなどの別の適切なフォーマットが使用され得る。
【0055】
本明細書で説明される技法を使用すると、APIコールが、タイルに対してサーバ・コンピュータ108で受信されると、タイルは、下記で論じられるように、簡単に位置特定され、圧縮されたバイトが、パーケット・ファイルから、クライアント・コンピュータ104などのリクエストしたコンピューティング・デバイスに直接的に移動され得、クライアント・コンピュータ104上のブラウザ又はクライアント・アプリケーションが解凍をハンドリングする。
【0056】
3.4 座標系
【0057】
スーパータイル、タイル、及びセル・ロケーションを決定するために、固定座標系が使用され得る。固定座標系の実例は、Unix(登録商標)エポックである。
【0058】
実施例では、解像度スケールの原点は1msであり、R0(解像度0)とラベル付けされ、これは、R1(解像度1)におけるセルが10msに及び、R-3(解像度-3)におけるセルが1μsに及ぶことを意味する。実施例では、タイルは、他の解像度のタイルが形成され得ない場合でも、クライアントによって最もよく選ばれる解像度など、特定の解像度(R4(解像度4)など)で常に生成され、格納され得る。実施例では、座標は、スーパータイル内のタイルのアレイ・オフセット内で直接的に使用される。
【0059】
表1は、解像度(R)を考慮して、セルについての、タイルについての、及びスーパータイルについての期間計算を示す。ここで、各セルは特定の解像度における時間長に及び、TILE_SIZEは10,000であり、SUPERTILE_SIZEは1,000である。
【表1】
【0060】
表2は、表1に示された計算に基づく解像度及び対応する期間を示す。
【表2】
【0061】
例えば、ユーザ・リクエストにおいて識別されるような、所与の時間ロケーション(タイムスタンプ)及び所与の解像度(R)を使用して、対応するセル識別子(cell.abs.id、cell.rel.id)、対応するタイル識別子(tile.id)、及び対応するスーパータイル識別子(supertile.id)が、表3に示された座標計算を使用して決定され得る。セル識別子、タイル識別子、及び/又はスーパータイル識別子は、検索及び/又は可視化のために、データの特定のロケーションを決定するために使用され得る。
【表3】
【0062】
3.5 ストレージ・レイアウト
【0063】
いくつかの実施例では、所与の解像度(R)において、各スーパータイルは、TILE_SIZE×SUPERTILE_SIZE×10Rmsの長さの時間ドメインの一部をカバーする。マッピング方式は、所与の解像度に対する任意の時間Tにスーパータイル、タイル、及び値を割り当てるために使用され得る。
【0064】
例えば、
図1のデータ・リポジトリ106がファイルシステムの場合、
$TIME_SERIES_ID/$RESOLUTION_ID/$SUPER_TILE_ID
は、ファイルシステム・ベースのデータ・リポジトリのためのディレクトリ構造であり得、$TIME_SERIES_IDが時系列データを識別し、$RESOLUTION_IDが解像度を識別し、$SUPER_TILE_IDがスーパータイルを識別する。このようなディレクトリ構造を使用すると、容易で便利なアクセスのために、同じ解像度に対する全てのスーパータイルを一緒に格納することができる(例えば、解像度に対する全てのスーパータイルが同じディレクトリに格納される)。別の実例として、上述のように、パーケット・ファイルが、各解像度に対して作り出され得る。パーケット・ファイルは、この解像度に対する全てのスーパータイルを行として収める。したがって、各$RESOLUTION_IDは、パーケット・ファイルにインデックスをつけ、この解像度における全てのタイルへのアクセスは、ただ1つのファイル入出力動作を必要とし得る。
【0065】
APIコール(例えば、ユーザ・リクエスト)がタイムスタンプ及び解像度を指定するとき、対応するスーパータイルが識別及びアクセスされ、タイルが、表3に記述されたように、スーパータイル内で位置特定される。
【0066】
3.6 リクエスト・フォーマット
【0067】
いくつかの実施例では、サーバ・コンピュータ108が処理する、クライアント・コンピュータ104などのリクエストしたコンピューティング・デバイスからのユーザ・リクエストは、HTTP GETリクエストであり得る。GETリクエストは、時系列データの識別子(例えば、$TIME_SERIES_ID)、解像度の識別子(例えば、$RESOLUTION_ID)、及び時間ロケーション(例えば、$TIME)を含み得る。GETリクエストの構造は、実施例によれば、
$TIME_SERIES_ID/$RESOLUTION_ID/$TIME
であり得る。
【0068】
サーバ・コンピュータ108は、いずれかのI/O作業負荷を最小化するために、リクエストを、データ・リポジトリ106内の経路に翻訳する。例えば、$TIME引数は、表3に示された計算を使用して、スーパータイル及び内部オフセットに翻訳する。サーバ・コンピュータ108は、スーパータイルのロケーションを決定し、タイルの必要なオフセット(ロケーション)を決定するために、スーパータイルのスーパータイル・ヘッダを読み込む。実施例では、ユーザ・リクエストへのレスポンスは、この時間ロケーションをカバーするタイルに関連付けられたJSONアレイである。実施例では、レスポンスは、デフレート・トランスファ・エンコーディングを有する。
【0069】
本明細書で説明される技法は、クライアント・コンピュータ104にキャッシュしやすいタイルを利用し、ユーザが、再検討されることになる時間の特定の部分にナビゲートするのにかかる時間内にロードされることが可能である。これらの技法は、ディスプレイを、ズーム、パン、及び選択するのに滑らか且つ扱いやすくする。異なるレートでサンプリングされ、異なる値範囲を伴うデータを閲覧するとき、タイルのコンパクトな表示は、多変量の行動を伴う複雑なシステムの行動を一緒に分析するのを可能にする。タイル・デザインはまた、大量のタイルに対して大量のユーザによって行われるリクエストから最低限の負荷を生み出すように、タイル・リクエストの処理を簡素化する。本明細書で説明される技法は、未加工データに対する非常に小さい計算時間及び全ストレージについて、大きいデータセットに対する高度の並行性及び有用性をユーザに提供する。
【0070】
4.0 手順の全体像
【0071】
図3は、いくつかの実施例による、大量の時系列データの処理の実例の方法を示す。例えば、受信命令110、タイル生成命令112、タイル格納命令114、予測命令116、検索命令118、及び/又は伝送命令120が、
図3に従ってプログラムされ得る。
図3は、サーバ・コンピュータ108が実行又はホストする1つ若しくは複数のコンピュータ・プログラム、又は他のソフトウェア要素として、方法300をコーディングするための基礎として使用され得る。
図3は、実施例を実装するためにコンピュータ・プログラムを構築及び実行する方法を当業者間で伝達するために、本開示が関連する当業者によって使用されるものと同じ詳細レベルで示され、説明される。
【0072】
ステップ302において、複数の解像度のそれぞれに対する複数のタイルが時系列データから生成される。時系列データは数的なものでよく、又は分類別のものでもよい。時系列データは、値又はデータ時点を含む。データ時点は、複数の時点における産業機器の動作中に産業機器のセンサによって生成された信号の実データ時点でよい。データ時点はまた、訓練された予測モデルによって予測されたデータ時点でもよい。
【0073】
複数の解像度のうちの1つの解像度に関連付けられた複数のタイルのそれぞれが、第1の共通時間長に対応する。例えば、解像度0(R0)に関連付けられた複数のタイルのそれぞれが、10秒の共通時間長に対応し得る。別の実例として、解像度4(R4)に関連付けられた複数のタイルのそれぞれが、100,000秒の共通時間長に対応し得る。
【0074】
ステップ304において、複数の解像度のうちの1つの解像度に関連付けられた複数のスーパータイルが生成される。複数のスーパータイルのそれぞれが、複数のタイルの、タイルのグループに対応し、タイルのグループの各タイルのストレージ・オフセットを含むスーパータイル・ヘッダを含む。
【0075】
タイル及びスーパータイルは、容易且つ便利なアクセス及び検索のために、データ・リポジトリのストレージ・システム・タイプに応じて、特定の様式でデータ・リポジトリに格納され得る。例えば、パーケット・ファイルが複数の解像度の各解像度に対して作り出され、格納され得る。パーケット・ファイルは、パーケット・ファイルに対応するそれぞれの解像度に関連付けられた複数のスーパータイルを、パーケット・ファイル内の行として含み得る。複数のスーパータイルのそれぞれにおける各タイルは、列としてモデル化され得る。別の実例として、データ・リポジトリがファイルシステム構造(例えば、階層型ディレクトリ)を使用する場合、複数のスーパータイルは、複数の解像度の各解像度に対して、データ・リポジトリ内の共通サブパス内の同じディレクトリ・ロケーションに格納され得る。
【0076】
実施例では、時系列データは、不要なタイルが生成及び格納されるのを防ぐために、最大及び最小解像度に関連付けられ得る。例えば、最大解像度は解像度-3(R-3)におけるものであり、最小解像度は解像度8(R8)におけるものである。
【0077】
ステップ306において、第1のユーザ・リクエストが、リクエストしたコンピュータから受信される。第1のユーザ・リクエストは、複数のタイル及び複数のスーパータイルが生成された後、受信され得る。第1のユーザ・リクエストは、第1のタイムスタンプ、及び複数の解像度のうちの第1の解像度を指定する。時系列データは最大及び最小解像度に関連付けられ得るので、第1のユーザ・リクエストは、時系列データに関連付けられた最小解像度及び最大解像度の範囲外のデータのリクエストではない。
【0078】
実施例では、リクエストしたコンピュータから第1のユーザ・リクエストを受信することに応答して、第1のユーザ・リクエストにおいて指定された第1の解像度に基づいて、複数のパーケット・ファイルからの特定のパーケット・ファイルがデータ・リポジトリから識別及びアクセスされる。
【0079】
ステップ308において、第1のユーザ・リクエストにおいて指定された第1の解像度に関連付けられた複数のスーパータイルからの第1のスーパータイルが決定される。特定のパーケット・ファイルは、第1の解像度に関連付けられた複数のスーパータイルを含む。実施例では、第1のユーザ・リクエストにおいて指定された時間の第1の期間ロケーション及び第1の解像度を使用して、第1のスーパータイルを識別又は決定するために、表3に示された座標計算に従って、スーパータイル識別子(supertile.id)が計算され得る。
【0080】
ステップ310において、第1のスーパータイル内の第1のタイルの格納ロケーションが識別され、これに応じて、第1のタイルが格納ロケーションから検索される。実施例では、第1のユーザ・リクエストにおいて指定された第1のタイムスタンプ及び第1の解像度を使用して、第1のタイルを識別又は決定するために、表3に示された座標計算に従って、タイル識別子(tile.id)が計算され得る。第1のタイルに対応するタイル識別子に関連付けられた第1のタイルのオフセットが次に、第1のスーパータイルのヘッダから読み込まれる。第1のタイルの格納ロケーションが、オフセットを使用して位置特定される。
【0081】
実施例では、第1のタイルに関連付けられた時間の第1の期間が、第1のユーザ・リクエストにおいて指定された第1の解像度に依存し、第1のタイムスタンプの時間を含む。第1のタイルが、第1のタイルに対応する時間の第1の期間内にある全てのデータ時点を表す複数の集約された値を含む。例えば、時系列データが数的であり、このタイルが集約された値を保持する場合、複数の集約された値は、第1のタイルに対応する時間の第1の期間内にある全てのデータ時点の、MIN値、MAX値、MEAN値、及び/又はSTDEV値を含み得る。別の実例として、時系列データが分類別であり、このタイルが集約された値を保持する場合、複数の集約された値は、第1のタイルに対応する時間の第1の期間内にある全てのデータ時点の、カウント値、トップ値、一意の値、及び/又は頻度値を含む。
【0082】
ステップ312において、第1のタイルの複数の集約された値の可視化を生成するために、第1のタイルを含む第1のレスポンスが、リクエストしたコンピュータに伝送される。リクエストしたコンピュータ上のブラウザ又はクライアント・アプリケーションがタイルを受信し、タイルの解凍及びデコードをハンドリングし、ズーム、パン、及び選択ジェスチャに滑らか且つ扱いやすく思えるように、対話型グラフィカル・ユーザ・インターフェースに、タイルに関連付けられたデータを表示する。
【0083】
実施例では、第1のユーザ・リクエストの後に第2のユーザ・リクエストを受信することに応答して、第2のタイルが検索され得る。
【0084】
第2のユーザ・リクエストがズーム・ジェスチャに関連付けられているとき、第2のタイルは、時間の第1の期間とは異なる時間長を有し、第1のタイムスタンプの時間をカバーする時間の第2の期間に対応するセルの第2のアレイを含む。第2のタイルは、ズーム・ジェスチャに対応する第2の解像度及びタイムスタンプに関連付けられたスーパータイル内にある。
【0085】
第2のユーザ・リクエストがパン・ジェスチャに関連付けられているとき、第2のタイルは、時間の第1の期間と同じ時間長を有し、第1のタイムスタンプの時間とは異なる第2のタイムスタンプの時間をカバーする時間の第2の期間に対応するセルの第2のアレイを含む。第2のタイルは、スーパータイルの時間間隔境界に応じて、同じスーパータイル内にあっても、第1の解像度に関連付けられた異なるスーパータイル内にあってもよい。
【0086】
図4は、いくつかの実施例による、大量の時系列データの閲覧の実例の方法を示す。
図4は、クライアント・コンピュータ104が実行又はホストする1つ若しくは複数のコンピュータ・プログラム、又は他のソフトウェア要素として、方法400をコーディングするための基礎として使用され得る。
図4は、実施例を実装するためにコンピュータ・プログラムを構築及び実行する方法を当業者間で伝達するために、本開示が関連する当業者によって使用されるものと同じ詳細レベルで示され、説明される。
【0087】
ステップ402において、ユーザ・リクエストが生成される。ユーザ・リクエストは、タイムライン上の時間ロケーション、及び複数の解像度のうちの1つの解像度を指定する。ユーザ・リクエストは、第1の信号を閲覧するためのものである。第1の信号は、産業機器の動作中に産業機器によって生成されるか、訓練された予測モデルによって予測される、データ時点を含み得る。
【0088】
ステップ404において、第1のユーザ・リクエストに応答して、タイルを含むデータが受信される。タイルは、ローカル・キャッシュから検索され得る。代替として、タイルは、リモート・サーバから受信され得る。タイルは、タイルがリモート・サーバから受信された後、ローカルにキャッシュされ得る。実施例では、タイルは、期限切れ時間後に、タイルがローカル・キャッシュから削除されるように、期限切れ時間を有し得る。ローカル・キャッシュは、DBベースのキャッシュ及び/又はHTTPキャッシュであり得る。
【0089】
タイルは、ユーザ・リクエストにおいて指定された時間ロケーションをカバーする時間の期間に対応する。タイルに関連付けられた時間の期間は、ユーザ・リクエストにおいて指定された解像度に依存する。例えば、タイルに関連付けられた時間の期間は、指定された解像度が解像度0(R0)であるとき、10秒の時間区間に対応し得る。別の実例として、タイルに関連付けられた時間の期間は、指定された解像度が解像度4(R4)であるとき、100,000秒の時間区間に対応し得る。
【0090】
実施例では、タイルは、タイルに対応する時間の期間内にある第1の信号の全てのデータ時点を表す複数の集約された値を含む。例えば、第1の信号が数的信号である場合、複数の集約された値は、タイルに対応する時間の期間内にある第1の信号の全てのデータ時点の、MIN値、MAX値、MEAN値、及び/又はSTDEV値を含み得る。第1の信号を表す複数の集約された値は、1つの画面上に及び/又は同時に、複数の概要線として表示され得る(各概要線が、集約された値に対応する)。複数の概要線からの1つの概要線が、1つ又は複数のデータ・ポイントを欠き、データ・ギャップを形成しているとき、概要線のデータ・ギャップの両側の2つの最も近いデータ・ポイントが、直線を使用して接続され得る。
【0091】
別の実例として、第1の信号が分類別信号である場合、複数の集約された値は、タイルに対応する時間の期間内にある第1の信号の全てのデータ時点の、カウント値、トップ値、一意の値、及び/又は頻度値を含む。データ時点は、1つ又は複数の分類別イベントに関連し得る。第1の信号は、1つ又は複数の分類別イベントのそれぞれに対する色の縞模様を含むバーバー・ポールとして表示され得る。実施例では、複数の集約された値は、比例バーとして表示され得る。
【0092】
ステップ406において、グラフィカル・ディスプレイが生成される。グラフィカル・ディスプレイは、タイルの複数の集約された値の可視化を含む。タイルの複数の集約された値は、タイルに関連付けられた時間の期間内のデータ時点の概要を提供する。
【0093】
実施例では、グラフィカル・ディスプレイはまた、第1の信号がプロットされた同じ時間スケール上にプロットされた第2の信号の可視化を含み得る。第2の信号及び第1の信号は視覚的に並べられる。第2の信号及び第1の信号は、異なるレートでサンプリングされ得る。
【0094】
実施例では、第1の信号上の特定のカーソル・ポジションにおけるマウスオーバー入力が受信され得る。マウスオーバー入力を受信することに応答して、特定のカーソル・ポジションにおける垂直カーソルが生成され得る。垂直カーソルは、グラフィカル・ディスプレイにおける全てのプロット全体に垂直に延び得る。さらに、キャプションも生成され得る。キャプションは、特定のカーソル・ポジションにおける第1の信号の複数の集約された値の少なくとも1つを指示し得る。
【0095】
5.0 グラフィカル・ユーザ・インターフェースの実装
【0096】
実施例では、対話型グラフィカル・ユーザ・インターフェースが、分類別信号及び数的信号を含む複数の信号を示し得る。時間は、グラフィカル・ユーザ・インターフェースにおける全ての信号全体に同期的に維持される。言い換えれば、全ての信号が、(例えば
図5及び
図7に示されているように)時間の観点から同時にプロットされ、視覚的に並べられる。グラフィカル・ユーザ・インターフェースにおける第1の選択機能は、訓練されたデータに基づく結論を予測するための複数の機械学習予測モデルからモデルを選択するためのトグル又は選択であり得る。予測は、条件又はイベントであり得る。モデルの選択時、「予測」信号が、選択されたモデルに基づいて生成され、実信号と比較されることが可能である。実施例では、予測信号は、分類別信号であり得る。グラフィカル・ユーザ・インターフェースの左の第2の選択機能は、クライアント・コンピュータによって提供された動作データを閲覧又はアクセスするための選択であり得る。グラフィカル・ユーザ・インターフェースの左の第3の選択機能は、イベントを閲覧又はセットするための選択であり得る。イベントは、システム問題又はシステム状態を指示する。
【0097】
5.1 時間プロット
【0098】
数的信号及び分類別信号は、同じ時間スケール上にプロットされ、視覚的に並べられ得る。
図5は、信号を示す実例の対話型グラフィカル・ユーザ・インターフェースを示す。最上部の2つの信号(信号1及び信号10)は数的信号である。底部の2つの信号(信号2及び信号9)は分類別信号である。タイムラインは、4つの信号全体で同期される。これらのタイムラインは、連続的な時間区間をカバーする1つ又は複数のタイルに対応し得る。
【0099】
5.2 数的プロット
【0100】
数的信号は、折れ線グラフとしてレンダリングされ得る。数的信号の折れ線グラフは、上述された集約された値に対応する複数の概要線を含み得、これは、現在の解像度又はズーム・レベルにより、個々のデータ時点を解像できないときでも、ユーザが基礎をなす信号を理解するのに役立つ。
図6は、複数の概要線によって表された数的信号を示す実例の対話型グラフィカル・ユーザ・インターフェースを示す。実施例では、数的信号は、現在の解像度における時間の期間にわたる数的信号値の、中間値、最大値、最小値、及び標準偏差を表す5(5)つの概要線によって表される。
図6に示された連続的な垂直線のペアは、(例えば、1及び2としてラベル付けされた)セルに関連付けられた時間の期間を示す。時間の期間は、現在の解像度においてタイルに関連付けられた同じ時間長を有する。
【0101】
Meanは、垂直線の最も近いセットの間の全ての信号データ時点の平均値である(最も太い線)。Maxは、垂直線の最も近いセットの間の全ての信号データ時点の最大値である(最も細い上の方の線)。Minは、垂直線の最も近いセットの間の全ての信号データ時点の最小値である(最も細い下の方の線)。垂直線の最も近いセットの間の全ての信号データ時点値の標準偏差(+1σ及び-1σ)(上の方及び下の方の断続線)。これらの5(5)つの概要線は、データ内の分散がある場所についての視覚的合図を提供するのに役立つ。
【0102】
5.3 数値キャプション
【0103】
特定の解像度に対するタイムライン内の特定のポイントにおける数的信号にマウスオーバーするとき、特定のポイントにおける概要線のそれぞれの正確な値を指示するキャプションが示され得る。値が未加工値の場合、単一のタイムスタンプがキャプション内に指示される。値が集約を表す場合、キャプション内に示されるような、値が集約される時間範囲の開始及び終了が、キャプション内に指示される。
【0104】
ズーム・アウトされると、個々のデータ時点は解像され得ず、垂直線の間には複数のデータ時点があり得る。十分にズーム・インされると、個々のデータ時点は、垂直線の各セットの間にただ1つのポイントがあるように、(信号ディスプレイ上のポイントとして)解像され得る。
【0105】
図7は、タイムライン内の現在の解像度及びカーソル・ポジションにおける概要線の正確な値を指示する数的信号704についてのキャプション702を示す実例の対話型グラフィカル・ユーザ・インターフェースを示す。カーソル・ポジションにおける細線706は、数的信号704のプロットを含む、全ての表示されたプロット全体に垂直に延び得る。他のプロットは、数的信号及び/又は分類別信号であり得る。実施例では、キャプション702はまた、プロット上のカーソルが置かれた場所に基づいて、特定の日付、開始及び終了時間、時間の期間、並びに集約された値を指示し得る。
【0106】
5.4 データ・ギャップ
【0107】
図8は、概要ラインにおける欠損値の表示を示す実例の対話型グラフィカル・ユーザ・インターフェースを示す。概要線が欠損値を有するとき、
図8のマークされた部分802でわかるように、各ギャップ802の両側の2(2)つの最も近いデータ時点が直線で接続され得る。
【0108】
5.5 分類別プロット
【0109】
分類別信号は、時間の次元全体の色の帯として、又は、互いに近すぎて表示できない複数のラベルがあるとき、バーバー・ポールにおける別々の色として、プロットされ得る。
図9は、実例のバーバー・ポールを示す。各バーバー・ポールは、この時間区間内に分類別イベント又は条件があるのと同じくらい多くの色の縞模様を有し得る。
図9では、バーバー・ポールは、2つの分類別イベント又は条件902、904を表す2(2)つの色の縞模様を含む。他の実例では、3つの分類別イベントが時間区間内に発生している可能性があり、バーバー・ポールは、3つの等しい幅の色の縞模様の積重ねの繰返しを構成するはずである。他の実施例では、バーバー・ポールは、分類別値に対して、分類別値の1つ又は分類別値の分散を指すはずの集約統計情報を直接的に指示するように示されることが可能である。例えば、同じ幅の縞模様を何度も示す代わりに、バーバー・ポールは、各色の縞模様を一度だけ、しかし、時間区間内の対応する条件の発生の数に比例した幅で、示すことができる。バーバー・ポールはまた、時間区間内の対応する条件の発生の頻度の順序で色の縞模様を示すことなど、特定の順序で色の柄を示すことができる。このやり方では、バーバー・ポールは、時間区間内の分類別値の分散、最大、最小、又はカウントを示すことができる。
【0110】
5.6 分類別キャプション
【0111】
図10は、タイムライン内の現在の解像度及びカーソル・ポジションにおける分類別信号1004についてのキャプション1002を示す実例の対話型グラフィカル・ユーザ・インターフェースを示す。カーソル・ポジションにおける細線1006は、分類別信号1004のプロットを含む全ての表示されたプロット全体に垂直に延び得る。他のプロットは、数的信号及び/又は分類別信号であり得る。実施例では、キャプション1002はまた、プロット上のカーソルが位置する場所に基づいて、各分類別イベント又は条件の特定の日付、開始及び終了時間、時間の期間、並びに頻度を指示し得る。
図10では、分類別信号1004は、4、4、3、及び2の頻度値をそれぞれ有する、「the_only_normal」、「未知」、「ラベルなし1」、及び「ラベルなし5」とラベル付けされた4(4)つの分類別イベント又は条件を含む。
【0112】
5.7 段階的詳細
【0113】
ユーザが時間内のポイントに注意を向けると、より高い解像度及びより深いビューが、一連のビジュアルを通じて立て続けに提供され得、一連のビジュアルは、あらゆる解像度で基礎をなすデータの滑らか且つ階層型ビューを提供し、より大きく興味のある詳細を伴うエリアへの注目を可能にする。
図11A、
図11Bは、対話型グラフィカル・ユーザ・インターフェースを介した、下記で説明されるような、一連のズーム動作を通じた信号の段階的詳細を示す。
図11Aでは、スケール・レベル7(R7)からスケール・レベル3(R3)までの信号の段階的詳細が示されている。
図11Bでは、スケール・レベル2(R2)からスケール・レベル-3(R-3)までの信号の段階的詳細が示されている。
【0114】
次のリクエストされた解像度が待たれているとき、グラフィカル・ディスプレイは、表示される時間範囲を変え、同じ範囲に対して利用可能な最も近い解像度タイルからこの範囲を比例して埋める。これは、解像度が次第に向上され、ユーザが常にグラフィカル・ディスプレイを見ている滑らかさを作り出す。
【0115】
5.8 ジェスチャ
【0116】
ジェスチャは、ユーザによって要求された正確なデータを見せるために、クライアント・コンピュータ104のディスプレイとともに使用され得る入力の組合せである。これらのアクションは、キーボードと併用して、トラックパッド又はポインタ・デバイス(マウス)を用いて実施され得る。対話型GUIは、クライアント・コンピュータ104と通信連結されたトラックパッド又はポインタ・デバイスを介して入力されたジェスチャに応答的であり得る。表4は、実例のユーザ・ジェスチャ及びそれぞれのアクションを示す。
【表4】
【0117】
6.0 リアルタイム処理
【0118】
6.1 タイル・ツリー
【0119】
図1のサーバ・コンピュータ108は、未加工又は実際の動作データを、リアルタイム又は準リアルタイムに(例えば、データが、機械、デバイス、又は機器によって生成され、サーバ・コンピュータ108において受信されるとすぐに)処理し得る。実施例では、サーバ・コンピュータ108は、タイルのツリーなどのデータ構造を使用して、未加工データセットを分け、格納し得る。ツリーは、さらに論じられるような、時間次元ロールアップ階層(time dimension rollup hierarchy)であり得る。未加工データセットは、各信号に対する時間-値のペアの配列を含み得る。時間成分は連続的でなくてもよい。それでも、多くても1つの値が、(例えば、ナノ秒の解像度で)任意の所与の時点に関連付けられ得る。
【0120】
ツリーは、複数のノードを含む。複数のノードは、親ノード及び子ノードを含む。親ノードは、ルート・ノード又は分岐ノードであり得る。子ノードは、分岐ノード又は葉ノードであり得る。各親ノードは、1つ又は複数の子ノードに対する親であり得る。各子ノードは、1つの親ノードを有する。ツリーの葉ノードは通常、未加工データを収める。ツリーにおける各レベルは、解像度に関連付けられ得る。
【0121】
ツリーの各ノードは、セクション5で論じられるように、タイルに一致する。タイルは、(ルート・ノードに関連付けられた)ルート・タイル、(分岐ノードに関連付けられた)分岐タイル、又は、(葉ノードに関連付けられた)葉タイルであり得る。タイルは、1つ若しくは複数の子タイルの親タイルであり得、及び/又は、親タイルの子タイルであり得る。
【0122】
時間ドメインは、異なるツリー深度の静的な数の区画に分けられる。各タイルは、時間の範囲をカバーする。所与のツリー深度における全てのタイルが同じ期間をカバーし、連続的な期間を有する(例えば、期間のどれも重複しないような、この期間に位置合わせされた開始点を有する)。所与のツリー深度における親タイルによってカバーされる全時間長は、所与の子タイルによってカバーされる時間内の全てのポイントがその親タイルによってのみカバーされるように、重複することなく、これらの子タイルによって等しく分割される。言い換えれば、全ての親タイルが、1からTILE_SIZEまでのセル及び/又は子タイルを有し、親タイルの全ての子タイルによってカバーされる時間間隔又は期間は、親タイルによってカバーされる時間間隔と同じである。
【0123】
各タイルは、等しい期間のサブセグメント又はセルに分割され得る。任意の子タイルの境界は、その親タイル内のセルのセル境界に位置合わせされ得る。
【0124】
時系列のデータ時点が受信されると、データ時点は一般に、対応する葉タイルに追加される。異なる時系列が、異なるサンプリング頻度に対応し得るが、所定の頻度のデータ欠損は、ギャップとして示されることが可能であるか、隣のデータ若しくは履歴に基づいて、又は当業者に知られた他の技法を使用して、推測されることが可能である。
【0125】
実施例では、所与の時間範囲内にデータが記録される時間スライスの数がTILE_SIZEを超過しない限り、この時間範囲を表すために単一のタイルが使用される。このようなタイル内のセルは、未加工測定値だけを収める。
【0126】
データ時点の数の観点からの構成可能な最大葉容量(例えばTILE_SIZE)が施行され得、サーバ・コンピュータ108は、最大葉容量に達したとき、影響を受けたタイルを複数のタイルに分け得る。同じ容量制約及び分けられる動作は、非葉タイルに適用することができる。新しいタイルは、オーバーフローしたタイルと同じ深さで、又は、親の最大容量に達したとき、より大きな深さで、作り出されることが可能である。この技法は、データセット全体が、必要な深さだけを通じた順序(例えば深さ優先)で横断可能な同様にサイズ調整されたタイルを含むことを保証する。この技法はまた、適度な数のデータ時点を伴う時間範囲に関するリクエストを効率的にサーブする。
【0127】
例証として、効率的に伝送可能なデータ時点より多くのデータ時点を収める時間スパンが、閲覧されることになることを考える。説明される技法を使用して、所与のデータセット内のデータ時点の集約ビューが提供され得る。未加工データを概略するために、集約値(例えば、最小、最大、頻度等)が非葉タイルに格納されることが可能である。集約は、非葉タイルの子の葉タイルの未加工値、又は、子の分岐タイルの集約を結合させることによって実行され得る。各分岐タイルは、これらの(非空の)子タイルのそれぞれに対応する集約に対応するチャンクのセットを収める。
【0128】
実施例では、ツリーは、葉からルートへ(例えば、より細かい解像度からより粗い解像度へ)ボトム・アップで構築及び更新される。ツリーの深さdに関連付けられた十分なタイルがあればすぐに、ツリーの深さd-1にタイルが作り出される。同様に、ツリーの深さd-1に、関連付けられた十分なタイルがある場合、ツリーの深さd-2にタイルが作り出される。この処理は、サーバ・コンピュータ108がリアルタイム処理又は準リアルタイム処理のために未加工又は実際の動作データを受信する限り、再帰的に実施される。
【0129】
集約の一貫性は、チェンジ・キューを通じて維持され得る。チェンジ・キューに書かれた各データ時点は、セクション5で論じられるように、データ時点に対する、決定された影響を受けたタイルの識別子に関連付けられ得る。更新は、葉タイルの更新によって、葉タイルの集約の再計算、及び葉タイルの親タイルの更新が行われるとき、「ミニバッチ」で処理され得る。これは、親タイルの既存のチャンクを置き替える動作を生じ、これは、タイルIDによるグルーピングが維持されるか、変化しない限り、データ構造のロックを必要としない。実施例では、タイルIDは、時間範囲と、再計算されることになる解像度の両方を識別する。再計算が必要なときはいつでも、このタイルIDだけが通信され、これにより、このタイルの下の子ノード全てがバッチとして再計算されることになる。
【0130】
親タイルを更新すると、全ての変更が全てのレベル上で処理されるように、同じチェンジ・キューに対するイベントが発信される。このアプローチは、更新が伝搬されている間、タイルにおける値が依然として流動的であり得、子タイル又は親タイルにおける値と一致していないことがあり得るが、伝搬が完了すると、全てのタイルにおける値が安定し、正しくなるはずであるという点で、集約の最終的な一貫性を可能にする。したがって、異なるユーザが結局は、同じデータの同じ値を閲覧するはずである。
【0131】
追加の書込みが、書込みの増幅を生じ得る。例えば、データが時系列で徐々に書き込まれているとき、それぞれのこのような書込みが、新しい親タイル全体を無効化し、バッチ更新全体をトリガし得る。それでも、より高いレベルでますますグループ化された書込みが、書込み増幅を低減させる。例えば、同じタイル関する全ての更新が一度に処理され、特定のタイムスタンプまでの全ての更新が処理されたのが明らかな場合、複数のイベントが放棄されることが可能である。書込み増幅のこの低減により、サーバ・コンピュータ108は、(葉ノードに近い)きめの細かいレベルにおける受信データの処理及び格納時に、(数年分程度になる可能性がある)最高レベルにおけるものよりはるかに低いレイテンシを有することを可能にする。
【0132】
ほとんどのインスタンスでは、タイル化又は処理されたデータをサーブすることは、必要なタイルを見つけ、これらの内容を結合すること、及び/又は、必要なタイルを連続して伝送することを必要とする。それでも、ユーザ・リクエストが、葉の深さが、リクエストされたツリー深度より大きい範囲内の特定の解像度(例えば、特定のツリー深度)の集約されたデータについてのものであるとき、追加の処理が要求され得る。例えば、未加工データは低密度であり得るので、集約データの生成及び格納が、過度の書込み増幅を引き起こしていたはずである。このようなケースでは、集約は、低密度未加工データから生成され、リクエストに応じて、急いでサーブ・アウトされる。これは、いくつかの追加のCPU利用を生じ得るが、これは、データが非常に低密度のときにしか起こらないので、これは、全体的な性能に著しく影響を及ぼすわけではない。また、レスポンスはキャッシュされることが可能なので、この計算は、あまり頻繁に繰り返される必要はない。
【0133】
実施例では、影響を受けたタイルについてのリクエストが受信されると、リクエストは、影響を受けたタイルに関する全ての更新が完了されるまでブロックされ得る。別の実例として、影響を受けたタイルに関連付けられた全ての更新を含む(影響を受けたタイルのために)新しいタイルが作り出され得、データ構造は、原子的に実施されることが可能な、影響を受けたタイルから新しいタイルへのポインタ・スワップで更新され得る。このようにして、リクエストは、ブロックされることなく果たされ得る。
【0134】
6.2 時間次元階層
【0135】
クエリ・レイテンシは、可視化及び分析のための必要なデータの速い検索を可能にする、上記で説明されたような、静的な時間次元ロールアップ階層に沿った、時系列データの集約ビューを事前に実現することによって管理され得る。
【0136】
時間階層はセル上のデータを集約し、ここで、セルの時間限度内で観察される個々のデータ時点は、セルの時間スパンを表すために、集約機能によって単一の値に結合される。セルは、Unix(登録商標)エポックからのint64ナノ秒のオフセットとして、セルの最も左の座標によって識別され得る。
【0137】
長い時間範囲にわたってデータを概略するスピードを含む、いくつかの理由で、時系列の集約が実現される。階層を使用する時間ロールアップが望まれ得、階層における各レベルが解像度に関連付けられる。実施例では、階層は、視覚エイリアシングを低減させる非対称レベルを含む。レベル00と表された階層のレベルは、解像度0(R0)に関連付けられ得、その一方で、階層の最上位レベルは、レベル14と表され、解像度14(R14)に関連付けられ得る。
【0138】
表5は、解像度(解像度ID)、対応するレベルID(ツリー深度とは異なる)、次に上のレベルに対する低い方のレベルを集約するファクタ(例えば、レベルR5は、6(5)つのレベルR4コンテンツを集約することによって取得される)、及び対応する期間を示す。
【表5】
【0139】
集約ファクタは、大量データの人間の解釈を支援する。ユーザが、例えばR8など、高い解像度の単一の時間スライスを見るとき、このような時間スライスの全値における、このような時間範囲の期間を見ることが、より簡単で、より理解しやすい。
【0140】
任意の所与の数のポイント及び時間の範囲について、所望の範囲にフィットする最大数の利用可能な時間スライスとして使用されるべき最適なデータ解像度を決定することが可能であり得る。例えば、所望の時間の範囲が3日であり、特定の画面解像度に望ましいポイントの数が2,560である場合、R6が、各ポイントに対する1以上の最小数(2560/24/6/10=1.778)を生み出すので、理想的な解像度はR6である。データ・ポイントの数より高い画面解像度が利用可能な場合、限定的なデータ解像度は、ポイント自体の間のギャップを通じて視覚的に伝えられる。
【0141】
6.3 座標系
【0142】
上述のように、時間ドメインは、異なるツリー深度又はレベルのそれぞれにおいて、静的な数の区画に分けられる。各ツリー深度又はレベルにおいて、区画は、このレベルのセル幅に関する偶数値に基づいて、この区画の開始時間によって識別される。したがって、限定的な数の区画が各レベルに存在し、このレベルに値が記録されることが可能である。さらに、1970年1月1日から2070年12月31日までなどの、ビジネスの実用的な目的のためには、固定数のこのような区画しかない。さらに、これらの区画は、ナノ秒時間スケール(例えば、下記の表5に示されるようなR-6)であっても、符号なし64ビット整数によって識別されることが可能である。
【0143】
タイルロケーションを決定するために、Unix(登録商標)エポックなどの固定座標系が使用され得る。この座標系では、日付0は、1970年1月1日であり、日付1は、1970年1月2日である。時間0は、1970年1月1日の00:00:00.000であり、時間1は、1970年1月1日の00:00:00:001である。さらに言うと、同様の値が、ナノ秒解像度におけるナノ0及びナノ1について存在する。
【0144】
この座標系は、1つ又は複数の時間次元に基づいてキー・タイルに使用される。実施例では、座標系の3つの次元(日付、ミリ秒、及びナノ秒)があり、これらのそれぞれが、この単位でUnix(登録商標)エポックからカウントされる。実施例では、座標系の負の値の次元はない。実施例では、座標系の負の値の次元はない。実施例では、タイル・ストレージ・システム内のタイルを直接位置特定するために、座標が使用される。
【0145】
例えば、ユーザ・リクエストにおいて識別されるような、所与の時間ロケーション(タイムスタンプ)及び所与の解像度(R)を使用して、対応するタイルが、クエリに応答するために位置特定されることが可能である。タイル識別子は、検索及び/又は可視化のために、データの特定のロケーションを決定するために使用され得、Unix(登録商標)エポックから始まるTILE_SIZE×Rに対する範囲の要求される時間についての整数演算によって取得されることが可能である。
【0146】
実施例では、レスポンス内のセルのうちのいくつかが、要求される範囲の外側にあったとしても、所与の時間範囲及び解像度のために要求されるタイル全てのデータ全てが検索される。これは、タイル・リクエストと返されたタイルとの間の直接且つ安定したマッピングがあるので、キャッシングの利益を目立たせる。
【0147】
6.4 ストレージ
【0148】
実施例では、未加工データ及びタイル化された(処理された)データが、パーケット・データセット(パーケット・ファイル)としてキー値データベース(S3、ABS、MinIOなど)に格納され得る。実施例では、パーケット・データセットは、テナントID、データストリームID、及びタイプ(未加工又は集約済)などの識別子によって位置特定される。実例のオブジェクト格納経路は、
/<root>/<tenant>/<datastream>/<datastream|assessment/model>/<RAW|AGGREGATE>
である。
【0149】
上述のように、所与の解像度(R)において、各タイルが、TILE_SIZE×Rの長さの時間ドメインの一部をカバーする。実施例では、開始値及び終了値をそれぞれ伴う3つの区画キーのペア(日付、時間、及びナノ秒)が、タイルによってカバーされた時間範囲を一括して扱うために使用され得る。
【0150】
所与の解像度Rに対するタイムスタンプTは、TILE_SIZEに対する整数除算を使用して、タイルにマッピングされることが可能である。例えば、要求される日付である所与の日付Tに対するR8値を保持するタイルは、floor演算子及びceil演算子を使用して、開始日付と終了日付のペアを確立するために、TILE_SIZEによって分割され得る。対応する時間とナノのペアが、所与の日付に対して作り出される。全部で3つの区画キーのペアの組合せが、リクエストされた解像度におけるタイルを位置特定するために使用される。
【0151】
例えば、
図1のデータ・リポジトリ106がファイルシステムの場合、
$TIME_SERIES_ID/SD=$START_DATE/ED=$END_DATE/ST=$START_TIME/ET=$END_TIME/SN=$START_NANOS/EN=$END_NANOS/L=$LEVEL_ID
が、ファイルシステム・ベース・データ・リポジトリのためのディレクトリ構造であり得、$TIME_SERIES_IDは、時系列データを識別し、識別子が、3つの区画キーのペア(例えば、日付に関する$START_DATE及び$END_DATE、時間に関する$START_TIME及び$END_TIME、並びにナノ秒に関する$START_NANOS及び$END_NANOS)に対応し、$LEVEL_IDは、リクエストされた解像度に対応するレベルを識別する。このようなディレクトリ構造を使用することによって、ただ1つのファイル検索とともに、任意のリクエストに応答することができる。別の実例として、上述のように、パーケット・ファイルが、各タイルに対して作り出され得る。パーケット・ファイルは、この解像度に対する全てのセルを行として収める。
【0152】
6.5 クエリ・サービス
【0153】
タイムスタンプ及び解像度を指定するAPIコール(例えば、ユーザ・リクエスト)をサーバ・コンピュータで受信することに応答して、対応するタイルが識別及びアクセスされる。実施例では、求められている解像度で既に位置合わせされたユーザ・リクエストが生成され得る。サーバ・コンピュータがユーザ・リクエストを受信すると、サーバ・コンピュータは、日付成分、時間成分、及びナノ秒成分を取得するためにタイムスタンプを抽出する。サーバ・コンピュータは、この情報を使用してデータ・リポジトリ内のタイルを検索する。
【0154】
クエリ・サービスは、ホット及びコールド・ストアからデータをマージすることによって、データ・ポイント又は集約列のセットを配信するためのロジックを実装し得る。APIコールは以下の通りであり得る。
getCells(columns=ALL,start_time,end_time,level=NULL,count=800)
getPoints(time,count,direction=ascending)
【0155】
getCells()について、列は、avg、stdev、max、min、topNなどの集約である。level又はcountが指定され得るが、両方ではない。countが指定される場合、サーバ・コンピュータは、指定された時間範囲に少なくともカウント数のセルを提供するレベルを識別することになる。いくつかの実施例では、countが10000を超過することはない。
【0156】
ポイント・ディスプレイについて、列firstpointは、セル内に第1のポイントのタイムスタンプを保持する。セルのカウントが1の場合、集約値(例えば、最小/最大/等)が、このポイントに適用される。グラフ化のために、各セルに整数のピクセルを割り当てることが十分であるはずだが、firstpointのオフセットが、例えばホバリングなどの詳細な表示のために、使用されることが可能である。
【0157】
リクエストに対するレスポンスは、(1)開始セルの開始時間、(2)終了セルの終了時間、及び(3)リクエストされた各列に対するセルスパンのステップにおける時系列での数字の配列、を含み得る。実例のレスポンスは以下の通りであり得る。
{
“startTime”:“2020-01-01T12:00:00”,
“endTime”:“2020-01-01T12:00:00”,
“avg”:[1,2,3,...],
“max”:[1,1.5,2.7,...]
}
【0158】
例えば、ユーザ・コンピュータ(さらに言うと、ユーザ)は、ディスプレイ上のスペース(display real estate)のいくらかの量における、いくらかの時間範囲についての、いくつかの信号を、ユーザ・インターフェース上にグラフ化することを望む。実施例では、ユーザ・コンピュータは、ポイントあたり数ピクセルを可能にする解像度を伴う各信号のmean集約を最初に要求し得、これらの値を検索及び表示した後、ユーザ・コンピュータは、min、max、stdev、及び/又は別の集約についてのリクエストをフォローアップし得る。この技法は、ユーザ・インターフェースが、おおよそのビューをより速くレンダリングすることを可能にする。他の優先順位付け方式及び先読みクエリも可能である。
【0159】
7.0 ハードウェア実装形態
【0160】
1つの実施例によれば、本明細書で説明される技法は、少なくとも1つのコンピューティング・デバイスによって実装される。技法は、パケット・データ・ネットワークなどのネットワークを使用して連結された少なくとも1つのサーバ・コンピュータ及び/又は他のコンピューティング・デバイスの組合せを使用して、全体的に又は部分的に実装され得る。コンピューティング・デバイスは、技法を実施するために配線接続され得るか、又は、技法を実施するように永続的にプログラムされた、少なくとも1つの特定用途向け集積回路(ASIC)若しくはフィールド・プログラマブル・ゲート・アレイ(FPGA)などの、デジタル電子デバイスを含み得るか、又は、ファームウェア、メモリ、他のストレージ、若しくは組合せに含まれるプログラム命令に従って技法を実施するようにプログラムされた少なくとも1つの汎用ハードウェア・プロセッサを含み得る。このようなコンピューティング・デバイスはまた、説明される技法を実現するために、カスタムの配線接続ロジック、ASIC、又はFPGAをカスタム・プログラミングと結合させ得る。コンピューティング・デバイスは、サーバ・コンピュータ、ワークステーション、パーソナル・コンピュータ、ポータブル・コンピュータ・システム、ハンドヘルドデバイス、モバイル・コンピューティング・デバイス、ウェアラブル・デバイス、ボディ・マウント型又は埋込型デバイス、スマートフォン、スマート・アプライアンス、インターネットワーキング・デバイス、ロボット又は無人の地上若しくは航空車両などの自律又は半自律デバイス、説明される技法を実装するための、配線接続及び/若しくはプログラム・ロジックを組み込んだ任意の他の電子デバイス、データ・センタ内の1つ又は複数の仮想コンピューティング機械又はインスタンス、並びに/或いは、サーバ・コンピュータ及び/又はパーソナル・コンピュータのネットワークであり得る。
【0161】
図12は、実施例が実装され得る実例のコンピュータ・システムを示すブロック図である。
図12の実例には、ハードウェア、ソフトウェア、又はハードウェアとソフトウェアの組合せにおいて開示の技術を実装するための、コンピュータ・システム1200及び命令が、コンピュータ・アーキテクチャ及びコンピュータ・システムの実装形態を伝えるために、本開示が関係する当業者によって一般に使用される同じ詳細レベルで、例えばボックス及び円として、図式的に表されている。
【0162】
コンピュータ・システム1200は、電子信号経路上でコンピュータ・システム1200の構成要素間で情報及び/又は命令を伝えるためのバス及び/又は他の通信メカニズムを含み得る入出力(I/O)サブシステム1202を含む。I/Oサブシステム1202は、I/Oコントローラ、メモリ・コントローラ、及び少なくとも1つのI/Oポートを含み得る。電子信号経路は、例えば、線、一方向の矢印、又は双方向の矢印として、図面に図式的に表されている。
【0163】
少なくとも1つのハードウェア・プロセッサ1204が、情報及び命令を処理するためにI/Oサブシステム1202に連結される。ハードウェア・プロセッサ1204は、例えば、汎用マイクロプロセッサ若しくはマイクロコントローラ、及び/又は、埋込型システム若しくは画像処理装置(GPU)若しくはデジタル・シグナル・プロセッサ若しくはARMプロセッサなどの専用マイクロプロセッサを含み得る。プロセッサ1204は、統合型の算術論理演算装置(ALU)を備え得るか、別々のALUに連結され得る。
【0164】
コンピュータ・システム1200は、プロセッサ1204によって実行されることになるデータ及び命令を電子的にデジタル的に格納するためにI/Oサブシステム1202に連結されたメイン・メモリなどの、メモリ1206の1つ又は複数のユニットを含む。メモリ1206は、様々な形式のランダム・アクセス・メモリ(RAM)又は他の動的ストレージ・デバイスなどの、揮発性メモリを含み得る。メモリ1206はまた、プロセッサ1204によって実行されることになる命令の実行中に、一時的な変数又は他の中間情報を格納するために使用され得る。このような命令は、プロセッサ1204にアクセス可能な非一時的コンピュータ可読ストレージ媒体に格納されると、コンピュータ・システム1200を、命令で指定された動作を実施するようにカスタマイズされた専用機械に変えることができる。
【0165】
コンピュータ・システム1200は、プロセッサ1204のための情報及び命令を格納するためにI/Oサブシステム1202に連結されたリード・オンリ・メモリ(ROM)1208又は他の静的ストレージ・デバイスなどの、不揮発性メモリをさらに含む。ROM1208は、消去可能PROM(EPROM)又は電気的消去可能PROM(EEPROM)などの、様々な形式のプログラマブルROM(PROM)を含み得る。永続ストレージ1212のユニットは、フラッシュ・メモリ若しくはソリッドステート・ストレージ、磁気ディスク、又は、CD-ROM若しくはDVD-ROMなどの光ディスクなどの、様々な形式の不揮発性RAM(NVRAM)を含み得、情報及び命令を格納するためにI/Oサブシステム1202に連結され得る。ストレージ1210は、プロセッサ1204によって実行されると、本明細書における技法を実行するためのコンピュータ実行方法を実施する、命令及びデータを格納するために使用され得る非一時的コンピュータ可読媒体の実例である。
【0166】
メモリ1206、ROM1208、又はストレージ1210内の命令は、モジュール、メソッド、オブジェクト、関数、ルーチン、又はコールとして編成された命令の1つ又は複数のセットを含み得る。命令は、1つ又は複数のコンピュータ・プログラム、オペレーティング・システム・サービス、又は、モバイル・アプリを含むアプリケーション・プログラムとして編成され得る。命令は、オペレーティング・システム及び/又はシステム・ソフトウェア、(マルチメディア、プログラミング、又は他の機能をサポートするための)1つ又は複数のライブラリ、(TCP/IP、HTTP、又は他の通信プロトコルを実装するための)データ・プロトコル命令又はスタック、(HTML、XML、JPEG、MPEG、又はPNGを使用してコード化されたファイルを構文解析又はレンダリングするための)ファイル・フォーマット検索命令、(グラフィカル・ユーザ・インターフェース(GUI)、コマンドライン・インターフェース、又はテキスト・ユーザ・インターフェースに対するコマンドをレンダリング又は解釈するための)ユーザ・インターフェース命令、(オフィス・スイート、インターネット・アクセス・アプリケーション、デザイン及び製造アプリケーション、グラフィックス・アプリケーション、オーディオ・アプリケーション、ソフトウェア・エンジニアリング・アプリケーション、教育アプリケーション、ゲーム又は種々雑多なアプリケーションなどの)アプリケーション・ソフトウェアを含み得る。命令は、ウェブ・サーバ、ウェブ・アプリケーション・サーバ、又はウェブ・クライアントを実装し得る。命令は、プレゼンテーション層、アプリケーション層、及び、(構造化問合せ言語(SQL)を使用した若しくはSQLを使用しないリレーショナル・データベース・システム、オブジェクト・ストレージ、グラフ・データベース、フラット・ファイルシステム、又は他のデータ・ストレージなどの)データ・ストレージ層として編成され得る。
【0167】
コンピュータ・システム1200は、I/Oサブシステム1202を介して少なくとも1つの出力デバイス1212に連結され得る。1つの実施例では、出力デバイス1212は、デジタル・コンピュータ・ディスプレイである。様々な実施例で使用され得るディスプレイの実例は、タッチ・スクリーン・ディスプレイ又は発光ダイオード(LED)ディスプレイ又は液晶ディスプレイ(LCD)又はeペーパー・ディスプレイを含む。コンピュータ・システム1200は、代替として、又はディスプレイ・デバイスに加えて、出力デバイス1212の他のタイプを含み得る。他の出力デバイス1212の実例は、プリンタ、チケット・プリンタ、プロッタ、プロジェクタ、サウンド・カード若しくはビデオ・カード、スピーカ、ブザー若しくは圧電デバイス若しくは他の可聴デバイス、ランプ若しくはLED若しくはLCDインジケータ、触感デバイス、アクチュエータ、又はサーボを含む。
【0168】
少なくとも1つの入力デバイス1214は、信号、データ、コマンド選択、又はジェスチャをプロセッサ1204に伝えるために、I/Oサブシステム1202に連結される。入力デバイス1214の実例は、タッチ・スクリーン、マイクロフォン、スチル及びビデオ・デジタル・カメラ、英数字及び他のキー、キーパッド、キーボード、グラフィックス・タブレット、イメージ・スキャナ、ジョイスティック、クロック、スイッチ、ボタン、ダイアル、スライド、並びに/又は、(力センサ、運動センサ、熱センサ、加速度計、ジャイロスコープ、及び慣性計測ユニット(IMU)センサなどの)様々なタイプのセンサ、並びに/又は、(セルラー若しくはWi-Fiなどのワイヤレス、無線周波数(RF)若しくは赤外線(IR)トランシーバ、及び全地球測位システム(GPS)トランシーバなどの)様々なタイプのトランシーバを含む。
【0169】
別のタイプの入力デバイスは制御デバイス1216であり、制御デバイス1216は、代替として、又は入力機能に加えて、ディスプレイ画面上のグラフィカル・インターフェースにおけるナビゲーションなどのカーソル制御又は他の自動制御機能を実施し得る。制御デバイス1216は、方向情報及びコマンド選択をプロセッサ1204に伝えるため、並びに、ディスプレイ1212上のカーソルの動きを制御するための、タッチパッド、マウス、トラックボール、又はカーソル方向キーであり得る。入力デバイスは、第1の軸(例えばx)及び第2の軸(例えばy)という2つの軸において少なくとも2つの自由度を有し得、これにより、デバイスは、平面におけるポジションを指定することができる。別のタイプの入力デバイスは、ジョイスティック、ペン型スキャナ、コンソール、ハンドル、ペダル、ギアシフト・メカニズム、又は他のタイプの制御デバイスなどの、有線、ワイヤレス、又は光学制御デバイスである。入力デバイス1214は、ビデオ・カメラ及び深度センサなどの、複数の異なる入力デバイスの組合せを含み得る。
【0170】
別の実施例では、コンピュータ・システム1200は、出力デバイス1212、入力デバイス1214、及び制御デバイス1216の1つ又は複数が省略されたモノのインターネット(IoT)デバイスを備え得る。或いは、このような実施例では、入力デバイス1214は、1つ又は複数のカメラ、運動検出器、温度計、マイクロフォン、地震検出器、他のセンサ又は検出器、測定デバイス又はエンコーダを備え得、出力デバイス1212は、シングルラインLED又はLCDディスプレイなどの専用ディスプレイ、1つ若しくは複数のインジケータ、ディスプレイ・パネル、メータ、バルブ、ソレノイド、アクチュエータ、又はサーボを備え得る。
【0171】
コンピュータ・システム1200がモバイル・コンピューティング・デバイスのとき、入力デバイス1214は、複数のGPS衛星の三角測量を行い、コンピュータ・システム1200の地球物理学的ロケーションについての緯度-経度値などの地理位置情報又はポジション・データを決定及び生成することができるGPSモジュールに連結された全地球測位システム(GPS)受信機を備え得る。出力デバイス1212は、ホスト1224又はサーバ1230に向けられる、単独又は他のアプリケーション固有データと組み合わせてコンピュータ・システム1200のポジションを指定する、ポジション・レポート・パケット、通知、パルス若しくは心拍信号、又は他の反復性データ伝送を生成するための、ハードウェア、ソフトウェア、ファームウェア、及びインターフェースを含み得る。
【0172】
コンピュータ・システム1200は、カスタマイズされた配線接続されたロジック、少なくとも1つのASIC又はFPGA、(コンピュータ・システムと組み合わせてロードされ、使用されるか、実行されると、コンピュータ・システムを専用機械として動作させるか、プログラムする、)ファームウェア及び/又はプログラム命令若しくはロジックを使用して、本明細書で説明される技法を実装し得る。1つの実施例によれば、本明細書における技法は、メイン・メモリ1206に収められた少なくとも1つの命令の少なくとも1つのシーケンスをプロセッサ1204が実行することに応答して、コンピュータ・システム1200によって実施される。このような命令は、ストレージ1210などの別のストレージ媒体からメイン・メモリ1206に読み込まれる。メイン・メモリ1206に収められた命令のシーケンスの実行は、本明細書で説明される処理ステップをプロセッサ1204に実施させる。代替実施例では、配線接続された回路機器は、ソフトウェア命令の代わりに又はこれと組み合わせて使用され得る。
【0173】
本明細書で使用されるような「ストレージ媒体」という用語は、特定の様式で機械を動作させるデータ及び/又は命令を格納する任意の非一時的媒体を指す。このようなストレージ媒体は、不揮発性媒体及び/又は揮発性媒体を備え得る。不揮発性媒体は、ストレージ1210などの、例えば光又は磁気ディスクを含む。揮発性媒体は、メモリ1206などの動的メモリを含む。ストレージ媒体の一般的形式は、例えば、ハードディスク、ソリッドステート・ドライブ、フラッシュ・ドライブ、磁気データ・ストレージ媒体、任意の光又は物理データ・ストレージ媒体、メモリ・チップ等を含む。
【0174】
ストレージ媒体は、伝送媒体とは別個であるが、伝送媒体と併用して使用され得る。伝送媒体は、ストレージ媒体間の情報の転送に関与する。例えば、伝送媒体は、同軸ケーブル、銅線、及び光ファイバを含み、I/Oサブシステム1202のバスを含むワイヤを含む。伝送媒体はまた、電波及び赤外線データ通信中に生成されるものなど、音響波又は光波の形をしていることが可能である。
【0175】
実行のために少なくとも1つの命令の少なくとも1つのシーケンスをプロセッサ1204に搬送することに、様々な形式の媒体が関係し得る。例えば、命令は、リモート・コンピュータの磁気ディスク又はソリッドステート・ドライブ上で最初に搬送され得る。リモート・コンピュータは、その動的メモリに命令をロードし、モデムを使用して、光ファイバ又は同軸ケーブル又は電話線などの通信リンク上で命令を送信することができる。コンピュータ・システム1200にローカルなモデム又はルータは、通信リンク上でデータを受信し、コンピュータ・システム1200によって読み込まれることが可能なフォーマットにデータをコンバートすることができる。例えば、無線周波数アンテナ又は赤外線検出器などの受信機は、ワイヤレス又は光信号で搬送されるデータを受信することができ、適切な回路機器が、バス上にデータを置くことなど、I/Oサブシステム1202にデータを提供することができる。I/Oサブシステム1202はデータをメモリ1206に搬送し、プロセッサ1204が、メモリ1206から命令を検索及び実行する。メモリ1206によって受信された命令は、任意選択として、プロセッサ1204による実行の前又は後に、ストレージ1210に格納され得る。
【0176】
コンピュータ・システム1200はまた、バス1202に連結された通信インターフェース1218を含む。通信インターフェース1218は、ネットワーク1222などの少なくとも1つの通信ネットワーク、又は、インターネット上のパブリック若しくはプライベート・クラウドに直接的又は間接的に接続されたネットワーク・リンク1220に連結する双方向データ通信を提供する。例えば、通信インターフェース1218は、イーサネット(登録商標)・ネットワーキング・インターフェース、インテグレーテッド・サービス・デジタル・ネットワーク(ISDN)カード、ケーブル・モデム、衛星モデム、或いは、例えば、任意の種類のイーサネット(登録商標)・ケーブル若しくは金属ケーブル、又は光ファイバ線若しくは電話線などの、通信線の対応するタイプにデータ通信接続を提供するためのモデムであり得る。ネットワーク1222は、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、キャンパス・ネットワーク、インターネットワーク、又はその任意の組合せを広く表す。通信インターフェース1218は、互換性のあるLANへのデータ通信接続を提供するためのLANカード、又は、セルラー無線電話ワイヤレス・ネットワーキング規格に従ってセルラー・データを送信するか受信するために配線されたセルラー無線電話インターフェース、又は、衛星ワイヤレス・ネットワーキング規格に従ってデジタル・データを送信するか受信するために配線された衛星無線インターフェースを含み得る。任意のこのような実装形態では、通信インターフェース1218は、様々なタイプの情報を表すデジタル・データ・ストリームを搬送する信号経路上で、電気信号、電磁気信号、又は光信号を送信し、受信する。
【0177】
ネットワーク・リンク1220は典型的には、例えば、衛星、セルラー、Wi-Fi、又はBLUETOOTH(登録商標)技術を使用して、直接的に、又は、他のデータ・デバイスへの少なくとも1つのネットワークを通じて、電気、電磁気、又は光データ通信を提供する。例えば、ネットワーク・リンク1220は、ネットワーク1222を通じてホスト・コンピュータ1224に接続を提供し得る。
【0178】
さらに、ネットワーク・リンク1220は、ネットワーク1222を通じた接続、又は、インターネット・サービス・プロバイダ(ISP)1226によって運用されるインターネットワーキング・デバイス及び/若しくはコンピュータを介した他のコンピューティング・デバイスへの接続を提供し得る。ISP1226は、インターネット1228として表されたワールドワイド・パケット・データ通信ネットワークを通じたデータ通信サービスを提供する。サーバ・コンピュータ1230は、インターネット1228に連結され得る。サーバ1230は、任意のコンピュータ、データ・センタ、仮想マシン、又は、(ハイパーバイザがある若しくはない)仮想コンピューティング・インスタンス、又は、(DOCKER又はKUBERNETESなどのコンテナ化されたプログラム・システムを実行する)コンピュータを広く表す。サーバ1230は、2つ以上のコンピュータ又はインスタンスを使用して実装され、ウェブ・サービス・リクエスト、HTTPペイロード内のパラメータを伴うユニフォーム・リソース・ロケータ(URL)文字列、APIコール、アプリ・サービス・コール、又は他のサービス・コールを伝送することによってアクセス及び使用される、電子デジタル・サービスを表し得る。コンピュータ・システム1200及びサーバ1230は、タスクを実施するか、アプリケーション若しくはサービスを実行するために協働する、他のコンピュータ、処理クラスタ、サーバ・ファーム、又は、コンピュータの他の編成を含む分散コンピューティング・システムの要素を形成し得る。サーバ1230は、モジュール、メソッド、オブジェクト、関数、ルーチン、又はコールとして編成された、命令の1つ又は複数のセットを備え得る。命令は、1つ又は複数のコンピュータ・プログラム、オペレーティング・システム・サービス、又は、モバイル・アプリを含むアプリケーション・プログラムとして編成され得る。命令は、オペレーティング・システム及び/又はシステム・ソフトウェア、(マルチメディア、プログラミング、又は他の機能をサポートするための)1つ又は複数のライブラリ、(TCP/IP、HTTP、又は他の通信プロトコルを実装するための)データ・プロトコル命令又はスタック、(HTML、XML、JPEG、MPEG、又はPNGを使用してコード化されたファイルを構文解析又はレンダリングするための)ファイル・フォーマット検索命令、(グラフィカル・ユーザ・インターフェース(GUI)、コマンドライン・インターフェース、又はテキスト・ユーザ・インターフェースのためのコマンドをレンダリング又は解釈するための)ユーザ・インターフェース命令、(オフィス・スイート、インターネット・アクセス・アプリケーション、デザイン及び製造アプリケーション、グラフィックス・アプリケーション、オーディオ・アプリケーション、ソフトウェア・エンジニアリング・アプリケーション、教育アプリケーション、ゲーム又は種々雑多なアプリケーションなどの)アプリケーション・ソフトウェアを含み得る。サーバ1230は、プレゼンテーション層、アプリケーション層、及び、構造化問合せ言語(SQL)を使用したリレーショナル・データベース・システム、若しくはNoSQL、オブジェクト・ストア、グラフ・データベース、フラット・ファイルシステム、又は他のデータ・ストレージなどのデータ・ストレージ層をホストするウェブ・アプリケーション・サーバを含み得る。
【0179】
コンピュータ・システム1200は、ネットワーク、ネットワーク・リンク1220、及び通信インターフェース1218を通じて、メッセージを送信し、プログラム・コードを含むデータ及び命令を受信することができる。インターネットの実例では、サーバ1230は、インターネット1228、ISP1226、ローカル・ネットワーク1222、及び通信インターフェース1218を通じて、アプリケーション・プログラムのためのリクエストされたコードを伝送し得る。受信されたコードは、受信されると、及び/又は、後の実行のためにストレージ1210若しくは他の不揮発性ストレージに格納されると、プロセッサ1204によって実行され得る。
【0180】
本セクションで説明されるような命令の実行は、実行され、プログラム・コード及びその現在の活動から成る、コンピュータ・プログラムのインスタンスの形の処理を実装し得る。オペレーティング・システム(OS)に応じて、処理は、命令を同時に実行する実行の複数のスレッドから作り上げられ得る。この文脈では、コンピュータ・プログラムは、命令の受動的なコレクションであり、その一方で、処理は、これらの命令の実際の実行であり得る。いくつかの処理は同じプログラムに関連付けられ得、例えば、同じプログラムのいくつかのインスタンスを開くことは、2つ以上の処理が実行されていることをしばしば意味する。マルチタスキングは、複数の処理がプロセッサ1204を共有できるように実装され得る。各プロセッサ1204又はプロセッサのコアが、単一のタスクを一度に実行する間、コンピュータ・システム1200は、各タスクが終了するのを待つ必要なく、実行されているタスク間で各プロセッサがスイッチできるようにするために、マルチタスキングを実装するようにプログラムされ得る。実施例では、スイッチは、タスクが入出力動作を実施するとき、タスクがスイッチされることが可能であると示すとき、又は、ハードウェア割込み時に、実施され得る。タイムシェアリングは、コンテキスト・スイッチを素早く実施して、同時に複数の処理を同時に実行しているように見せることによって対話型ユーザ・アプリケーションに対する速いレスポンスを可能にするために実装され得る。実施例では、セキュリティ及び信頼性のために、オペレーティング・システムは、独立した処理間の直接通信を防ぎ得、厳密に媒介及び制御された相互処理通信機能を提供する。
【0181】
8.0 ソフトウェアの全体像
【0182】
図13は、コンピューティング・デバイス1200の動作を制御するために採用され得る基本ソフトウェア・システム1300のブロック図である。ソフトウェア・システム1300及びその構成要素は、構成要素の接続、関係、及び機能を含み、例示であることのみ意図し、実例の実施例の実装形態を限定することを意図しない。実例の実施例を実装するのに適した他のソフトウェア・システムは、種々の構成要素を有し、種々の接続、関係、及び機能を伴う構成要素を含み得る。
【0183】
ソフトウェア・システム1300は、コンピューティング・デバイス1200の動作を指図するために提供される。ソフトウェア・システム1300は、システム・メモリ(RAM)1206及び固定ストレージ(例えば、ハードディスク又はフラッシュ・メモリ)1210に格納され得、カーネル又はオペレーティング・システム(OS)1310を含む。
【0184】
OS1310は、処理の実行、メモリ・アロケーション、ファイル入出力(I/O)、及びデバイスI/Oの管理を含む、コンピュータ動作の低レベルの態様を管理する。1302A、1302B、1302C~1302Nと表された1つ又は複数のアプリケーション・プログラムが、システム1300による実行のために、「ロード」(例えば、固定ストレージ1210からメモリ1206への転送)が行われ得る。デバイス1300上での使用を意図されるアプリケーション又は他のソフトウェアも、例えば、インターネット・ロケーション(例えば、ウェブ・サーバ、アプリ・ストア、又は他のオンライン・サービス)からのダウンロード及びインストールのために、ダウンロード可能コンピュータ実行可能命令のセットとして格納され得る。
【0185】
ソフトウェア・システム1300は、グラフィカルな様式(例えば、「ポイントアンドクリック」又は「タッチ・ジェスチャ」)でユーザ・コマンド及びデータを受信するための、グラフィカル・ユーザ・インターフェース(GUI)1315を含む。これらの入力は、今度は、オペレーティング・システム1310及び/又はアプリケーション1302からの命令に従って、システム1300によって作用され得る。GUI1315はまた、OS1310及びアプリケーション1302からの動作の結果を表示するように機能し、その結果、ユーザは追加の入力を供給するか、セッションを終了させる(例えば、ログ・オフする)。
【0186】
OS1310は、デバイス1200のベア・ハードウェア1320(例えば、プロセッサ1204)上で直接実行することができる。代替として、ハイパーバイザ又は仮想マシン・モニタ(VMM)1330が、ベア・ハードウェア1320とOS1310との間に介在され得る。この構成では、VMM1330は、デバイス1200のOS1310とベア・ハードウェア1320との間のソフトウェア「クッション」又は仮想化層としてふるまう。
【0187】
VMM1330は、1つ又は複数の仮想マシン・インスタンス(「ゲスト・マシン」)をインスタンス生成し、動かす。各ゲスト・マシンは、OS1310などの「ゲスト」オペレーティング・システムと、ゲスト・オペレーティング・システム上で実行するようにデザインされたアプリケーション1302などの1つ又は複数のアプリケーションとを備える。VMM1330は、仮想オペレーティング・プラットフォームを伴うゲスト・オペレーティング・システムを提示し、ゲスト・オペレーティング・システムの実行を管理する。
【0188】
いくつかの事例では、VMM1330は、ゲスト・オペレーティング・システムが、デバイス1200のベア・ハードウェア1320上で直接動いているかのように動くことを可能にし得る。これらのインスタンスでは、ベア・ハードウェア1320上で直接実行するように構成されたゲスト・オペレーティング・システムの同じバージョンが、修正又は再構成することなく、VMM1330上でも実行し得る。言い換えれば、VMM1330は、完全なハードウェア及びCPU仮想化を、いくつかのインスタンスにおけるゲスト・オペレーティング・システムに提供し得る。
【0189】
他のインスタンスでは、ゲスト・オペレーティング・システムが、効率のために、VMM1330上で実行するように特にデザイン又は構成され得る。これらのインスタンスでは、ゲスト・オペレーティング・システムは、仮想マシン・モニタ上で実行していることを「認識して」いる。言い換えれば、VMM1330は、疑似仮想化(para-virtualization)を、いくつかのインスタンスにおけるゲスト・オペレーティング・システムに提供し得る。
【0190】
上述の基本的なコンピュータ・ハードウェア及びソフトウェアは、実例の実施例を実装するために使用され得る基本的な基礎をなすコンピュータ構成要素を示すために提示される。それでも、実例の実施例は、任意の特定のコンピューティング環境又はコンピューティング・デバイス構成に必ずしも限定されない。それどころか、実例の実施例は、当業者が本開示の観点から、本明細書で提示される実例の実施例の特徴及び機能をサポートできると理解するはずの、任意のタイプのシステム・アーキテクチャ又は処理環境において実装され得る。
【0191】
9.0 開示の他の態様
【0192】
前述の明細書では、本発明の実施例が、実装形態によって変化し得る非常に多くの具体的詳細を参照しながら説明されてきた。したがって、本発明が何であるか、及び、本発明であると出願人によって意図されることについての、唯一且つ排他的な指標は、任意のその後の補正を含むこのような請求項が発行する特定の形式で本出願から発行する請求項のセットである。このような請求項に収められた用語についての本明細書で明確に示されたいずれかの定義は、特許請求の範囲において使用されるような用語の意味を規定するべきである。したがって、請求項において明確に列挙されない限定、要素、性質、特徴、長所、又は属性が、何らかのやり方でこのような請求項の範囲を限定するべきではない。したがって、本明細書及び図面は、制限的な意味ではなく例証的な意味で評価されるべきである。
【0193】
本明細書で使用されるような用語「含む(include)」及び「備える(comprise)」(並びに、「含む(including)」、「含む(includes)」、「備えること(comprising)」、「備える(comprises)」、「備えられる(comprised)」などのこれらの用語の変形)は包括的であることを意図され、さらなる特徴、構成要素、整数、又はステップを除外することを意図するものではない。
【0194】
様々な動作が、フローチャートを使用して説明されてきた。特定のケースでは、所与のフローチャートのステップの機能/処理は、説明された異なるやり方で、及び/又は、種々のシステム若しくはシステム・モジュールによって、実施され得る。さらに、いくつかのケースでは、フローチャートによって描写された所与の動作が複数の動作に分割され得、及び/又は、複数のフローチャートの動作が単一の動作に結合され得る。さらに、特定のケースでは、フローチャートに描写され、説明されるような動作の順序は、本開示の範囲から逸脱することなく変更されることが可能であり得る。
【0195】
本明細書において開示及び定義される実施例は、テキスト又は図面から言及される又は明らかな個々の特徴の2つ以上の全ての代替の組合せに広がるということが理解されよう。これらの種々の組合せの全てが、実施例の様々な代替の態様を構成する。
【国際調査報告】