我想配置Orion和Cygnus将所有数据存储在一个表中。
我知道我应该在HTTP标头中配置数据库和表的名称,如下所示:
dbName=<fiware-service-header>
tableName=<fiware-servicePath-header>_<entityId>_<entityType>
我被告知in this post要问另一个问题。
答案 0 :(得分:1)
Cygnus使用通知的fiware-service
和fiware-servicePath
标头来组成不同后端元素的名称。具体做法是:
<fiware-service>
<fiware-servicePath>_<destination>
/user/<your_user>/<fiware-service>/<fiware-servicePath>/<destination>/<destination>.txt
<fiware-service>
<fiware-servicePath>
<destination>
默认情况下,<destination>
等于<entityId>_<entityType>
。如问题所述,这可能会导致每个通知实体创建一个MySQL表/ HDFS文件夹/ CKAN资源。
这种默认目的地生成可以通过使用Cygnus的高级功能(基于模式的分组)来改变;顾名思义,该功能基于在数据中查找(配置)模式,以便对显示模式的上下文数据进行分组。例如,该特征允许某种类型的所有实体存储在单个MySQL表中;或者以前缀开头的某些实体一起存储在HDFS文件中。
要激活此功能,请编辑/usr/cygnus/conf/matching_table.conf
文件并根据需要添加任意数量的匹配规则;匹配规则语法描述为here。基本上,规则说明一旦基于模式的匹配得到确认,请使用新的<destination>
和新的<fiware-servicePath>
&#34;:
<rule_id>|<list_of_fields_to_be_compared>|<regular_expresion>|<new_destination>|<new_fiware-servicePath>
因此,&#34;将所有数据存储在名为“my_unique_table&#39;&#34;”的MySQL表中。规则看起来像:
<any_unique_number>|<entityId>|.*|unique_table|my_
或:
<any_unique_number>|<entityId>|.*|_table|my_unique
这两个规则都是有效的,因为正如已经说过的那样,通过连接<fiware-servicePath>
和<destination>
创建MySQL表名;在这种情况下,表名等于&#34;我的_&#34; + _ +&#34; unique_table&#34;或者&#34; my_unique&#34; +&#34; _table&#34;。