2017-09-26 7 views
2

私は自分のDBをMYSQLでモデル化しようとしていますが、私の構造はcygnusを自動的に生成するデータ収集テーブルによって構成され、温室とユーザーがいます。モデル化BD MYSQL Cygnus FIWARE

テーブル内の各ユーザーのすべてのセンサーのすべてのデータを、それを各ユーザーと温室に関連付けると、私は正しい方法だと思います。

しかし、このテーブルのエンティティIDと別のエンティティIDの2つのサブスクリプションを作成しようとしていますが、自動的に2つのテーブルが作成され、アイデアはすべて1つになります。

どうすればいいですか?同様

GET /v2/entities/ HTTP/1.1 
Host: 1.2.3.4:1026 
Accept: application/json 
Content-Type: application/json 
Fiware-Service: pruebastienda 
Fiware-ServicePath: /tienda1 
Cache-Control: no-cache 
Postman-Token: e19de386-ca21-cd7d-cd24-f1dee9487196 

[ 
     { 
      "id": "palmerillas", 
      "type": "invernadero", 
      "pressure2": { 
       "type": "Integer", 
       "value": 6, 
       "metadata": {} 
      }, 
      "sensor32": { 
       "type": "Integer", 
       "value": 1, 
       "metadata": {} 
      }, 
      "sensor42": { 
       "type": "Integer", 
       "value": 44, 
       "metadata": {} 
      }, 
      "temperature2": { 
       "type": "float", 
       "value": 4, 
       "metadata": { 
        "accuracy": { 
         "type": "Float", 
         "value": 9 
        } 
       } 
      } 
     }, 
     { 
      "id": "palmerillas2", 
      "type": "invernadero2", 
      "pressure2": { 
       "type": "Integer", 
       "value": 6, 
       "metadata": {} 
      }, 
      "sensor32": { 
       "type": "Integer", 
       "value": 1, 
       "metadata": {} 
      }, 
      "sensor42": { 
       "type": "Integer", 
       "value": 44, 
       "metadata": {} 
      }, 
      "temperature2": { 
       "type": "float", 
       "value": 4, 
       "metadata": { 
        "accuracy": { 
         "type": "Float", 
         "value": 9 
        } 
       } 
      } 
     } 
    ] 

そして、私のサブスクリプション:

enter image description here

は、私は私のエンティティを添付

GET /v2/subscriptions/ HTTP/1.1 
Host: 1.2.3.4:1026 
Accept: application/json 
Fiware-Service: pruebastienda 
Fiware-ServicePath: /tienda1 
Cache-Control: no-cache 
Postman-Token: 7898a397-2018-42fc-7edf-e35f25105901 

    [ 
     { 
      "id": "59ca8b394df7c75fee3e1969", 
      "description": "A subscription to get info about palmerillas", 
      "status": "active", 
      "subject": { 
       "entities": [ 
        { 
         "id": "palmerillas", 
         "type": "invernadero" 
        } 
       ], 
       "condition": { 
        "attrs": [ 
         "pressure2" 
        ] 
       } 
      }, 
      "notification": { 
       "timesSent": 2, 
       "lastNotification": "2017-09-26T17:16:04.00Z", 
       "attrs": [ 
        "temperature2", 
        "pressure2", 
        "sensor32", 
        "sensor42" 
       ], 
       "attrsFormat": "legacy", 
       "http": { 
        "url": "http://localhost:5050/notify" 
       }, 
       "lastSuccess": "2017-09-26T17:16:04.00Z" 
      } 
     }, 
     { 
      "id": "59ca8bb94df7c75fee3e196a", 
      "description": "A subscription to get info about palmerillas", 
      "status": "active", 
      "subject": { 
       "entities": [ 
        { 
         "id": "palmerillas2", 
         "type": "invernadero2" 
        } 
       ], 
       "condition": { 
        "attrs": [ 
         "pressure2" 
        ] 
       } 
      }, 
      "notification": { 
       "timesSent": 2, 
       "lastNotification": "2017-09-26T17:17:56.00Z", 
       "attrs": [ 
        "temperature2", 
        "pressure2", 
        "sensor32", 
        "sensor42" 
       ], 
       "attrsFormat": "legacy", 
       "http": { 
        "url": "http://localhost:5050/notify" 
       }, 
       "lastSuccess": "2017-09-26T17:17:56.00Z" 
      } 
     } 
    ] 

EDIT:テーブルの

名は以下のとおりです。

tienda1_palmerillas_invernadero AND tienda1_palmerillas2_invernadero2 

私はよく理解している場合、あなたが絵

+0

質問を洗練できますか? Orionの購読に問題があるのか​​、MySQLでCygnusの永続性に問題があるのか​​分かりません。エラーメッセージを投稿できる場合は、それも素晴らしいでしょう!ありがとう:) – frb

+0

質問投稿を編集して、MySQLで生成されているテーブルの名前を含めてください。どうも! – fgalan

+1

アドバイスの一部:パブリックIPをパブリックインターネットに公開しないでください。 150.214.y.z. – fgalan

答えて

0

に見ることができるように、あなたはシグナスグループ化ルール(GR)を使用する必要があります。または、最近のバージョンで利用可能な名前マッピング(NM)。グループ化規則に似ていますが、より効果的で柔軟性があります。

GR(またはNM)では、バックエンドストレージエレメントの名前(MySQLの場合、データが格納されているテーブルの名前)を使用してプレイすることができます。既定では、このような名前は、entity_identity_typeの連結に基づいています(FIWAREサービスパスの先頭にはMySQLのように他のプレフィックスが付加されています)。それにも関わらず、GR(またはNM)を使用して、あなたは、このような連結を変更することができます。

  • GRは直接指定して、あなたがentity_identity_typeの完全な連結を変更することができ、例えば、あなたがタイプcarのすべてのエンティティに関する情報である必要all_carsテーブルに格納されます。
  • NMは、より細かい方法で置換を行います。entity_identity_type、またはその両方のいずれかを修正することができます(さらに悪質なオプションが利用できます:-))。たとえば、すべてのエンティティIDをallcarエンティティタイプをcarsで置き換えるとします。最終的にGR:all_carsと同じ動作をします。

名前の変更にのみ影響します。テーブルに格納されたデータは変更されません。

GRのドキュメントをご覧ください。また、NMも同様です。

+0

こんにちは、 私は最後のバージョンでは名前マッピングをよく使う必要があるとお読みになりましたが、各エンティティの名前を置き換えたくありません。 重要:リリース1.6.0以降では、この機能は名前マ​​ッピングを使用して非推奨になりました。詳細はこちらをご覧ください。 私はバージョン1.7.0を持っています 異なるエンティティと異なるサブスクリプションを同じテーブルに保存します。 グループ化ルールを使用する必要がありますか?グリーティング。 。 – Manolait

+0

私はあなたに言っているように、「置き換えは命名プロセスにのみ影響を与えます;テーブルに格納されたデータは変更されません」。これは、 "car"タイプの "car1"と "car2"と識別された2つのエンティティがある場合、エンティティIDを "all_my"にマッピングし、エンティティタイプを "cars"にマップすることを決定できます。テーブル名は "all_my_cars"になります。ただし、表内の行は元のエンティティIDとタイプ(「car1」、「car2」、「car」)を維持します。 – frb

+0

OK私は理解しています。 私のバージョンは1.7.0なので、グループ化ルールまたは名前マッピングを使用することをお勧めしますか? ありがとうございます – Manolait

関連する問題