2017-09-26 116 views
2

我想我在MySQL数据库模式,我想我的结构要由数据采集表形成,这将是一个自动生成天鹅,对于这些数据,然后它的后续相关的表与温室和用户。建模BD MYSQL天鹅FIWARE

所有表中的每个用户的所有传感器的数据,然后将之与每个用户和温室,我认为这是正确的做法。

但我试图创建两个订阅一个,在这个表元数据的另一个实体ID实体ID和另一个,但它会自动创建我的两个表和想法是尽在其中。

这怎么办?

enter image description here

我附上我的实体:

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 
        } 
       } 
      } 
     } 
    ] 

我的订阅,以及:

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" 
      } 
     } 
    ] 

编辑:

表的名称是:

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(加上其他前缀,如MySQL,FIWARE服务路径前缀的情况)的拼接。然而,使用GR(或NM),你可以改变这种串联:

  • GR直接让你改变的entity_identity_type完整的拼接,指定,例如,你想关于类型的所有实体car是信息存储在all_cars表中。
  • NM以更细粒度的方式进行替换,允许您修改entity_identity_type或两者(甚至更多恶意选项可用:-))。例如,你可以说你想用allcar实体类型替换所有实体ID cars;最后你会得到和GR相同的行为:all_cars

请注意,替换只会影响命名proceses;存储在表中的数据保持不变。

请对GR文档看看。还有NM

+0

你好, 我已阅读,在过去的版本中,你必须使用名称映射更好,但我不想代替每个实体的名称。 重要提示:从发布1.6.0,此功能支持名称映射的弃用。更多详细信息可以在这里找到。 我有版本1.7.0 我想保存不同的实体和不同的订阅在同一个表。 我一定要使用分组规则? 问候。 – Manolait

+0

正如我告诉你的,“替换只影响命名过程;存储在表中的数据保持不变”。这意味着如果你有标识为“CAR 1”并输入“汽车”的“CAR2”两个实体,你可以决定映射实体ID为“all_my”,并映射实体类型为“汽车”,并在年底你将有一个表名“all_my_cars”。但是表格中的行将保持原始实体ID和类型,即“car1”,“car2”和“car”。 – frb

+0

好吧,我明白了。 那么作为我的版本是1.7.0,则建议使用分组规则或名称映射? 谢谢 – Manolait