履歴の未加工および集約された時系列コンテキスト情報の保存

STH コンポーネントには、未処理の履歴コンテキスト情報、および集約された時系列コンテキスト情報を格納する主な2つの方法があります :

  1. The formal オプション
  2. The minimalistic オプション

formal オプションは CyngusというFIWARE エコシステムの追加のコンポーネントを使用しています。Cygnus は、Orion Context Broker インスタンスによって管理されているコンテキスト情報を別個のリポジトリまたはデータ・ストアに永続させることを担当するコンポーネントです。これを行うために、Cygnusは、 Apache Hadoop, Apache Kafka, CartoDB, CKAN, MySQL, PostgreSQL などの多くの外部リポジトリまたはデータストレージに対して別個のコネクタ(別名、sinks、シンク)をサポートしています。

Cygnus を使用して、未処理および集約時系列コンテキスト情報を STH コンポーネントに登録するには、次のような2つの追加シンクを実装しました。

  1. MongoDB sink : MongoDB シンクは、Orion Context Broker インスタンスに登録されている、所望のコンテキスト情報を MongoDB データベースに保持する役割を担っています。一旦それが所望のMongoDBデータベースに格納されると、STH コンポーネントはそれが提供する未処理のコンテキスト情報APIによって利用可能にすることができます。これは次のセクションで説明します。
  2. STH sink : STHシンクは、Orion Context Brokerインスタンスに登録されている、所望の集約時系列コンテキスト情報をMongoDBデータベースに保持する役割を担っています。STH シンクは、STH コンポーネントが公開する API を使用して、この集約された時系列コンテキスト情報の検索をほぼ瞬時に行うように、構成された解像度に従ってコンテキスト情報を事前集計します。API については、次のセクションで説明します。

MongoDB と STH シンクを適切に設定して使用して、STH コンポーネントによって取得される可能性のある MongoDB データベースに未処理および集約された時系列コンテキスト情報を登録するには、Cygnus Github リポジトリサイトで提供されている以下のドキュメントを参照してください :

STH コンポーネントによって取得される可能性のある未処理および集約時系列コンテキスト情報を登録する2番目の、いわゆる minimalistic オプションは、STH コンポーネント自体を使用して、時間の経過と共に関心のあるエンティティ属性の値が時間とともに変化すると、Orion Context Broker インスタンスによって送信された通知を受け取って処理します。

関心のあるエンティティ属性に STH コンポーネント・インスタンスをサブスクライブする方法として、以下のようなリクエストを、STHコンポーネントによって管理したい、未処理および集約された時系列コンテキスト情報を持つ Orion Context Broker インスタンスに送信する必要があります :

curl <orion-context-broker-host>:<orion-context-broker-port>/v1/subscribeContext -s -S --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Fiware-Service: <service>' --header 'Fiware-ServicePath: <service-path>' -d @- <<EOF
{
    "entities": [
        {
            "type": "<entity-type>",
            "isPattern": "<false|true>",
            "id": "<entity-id>"
        }
    ],
    "attributes": [
        "<attribute2Notify1>",
        ...,
        "<attribute2NotifyK>"
    ],
    "reference": "http://<sth-host>:<sth-port>/notify",
    "duration": "<duration>",
    "notifyConditions": [
        {
            "type": "ONCHANGE",
            "condValues": [
                "<attribute2Observe1>",
                ...,
                "<attribute2ObserveN>"
            ]
        }
    ],
    "throttling": "<throttling>"
}
EOF

上のサブスクリプションでは、実際の値の代わりにテンプレートを使用しています。これらのテンプレートは、それぞれの具体的なケースで望ましい値に置き換えてください。

サブスクリプションが期限切れになると、再度有効にする必要があることに注意することが重要です。より具体的には、duration プロパティはサブスクリプションの期間を設定します。

一方、STH コンポーネントは JSON 形式の通知のみを管理することがでるため、Accept ヘッダーに application/json を 設定することが非常に重要です。

大事なことを言い忘れていましたが、throttling は、通知の頻度を制御することができます。関心のある集約された時系列コンテキスト情報の解像度に応じて、throttling を細かく調整する必要があります。たとえば、STH コンポーネントの最小解像度を second に設定したにもかかわらず、スロットルを PT60s (60秒)に設定することは意味がありません。この構成では、1つの値の更新が60秒(1分)ごとに通知されるため、対応する最小の推奨解像度は minute でなければなりません。

Orion Context Broker サブスクリプション API の詳細については、次のマニュアルを参照してください :