3

我想配置 Orion 和 Cygnus 将所有数据存储在一个表中。

我知道我应该配置基于 HTTP 标头的数据库和表的名称,如下所示:

dbName=<fiware-service-header>
tableName=<fiware-servicePath-header>_<entityId>_<entityType>

在这篇文章中被告知要问另一个问题。

4

1 回答 1

1

Cygnus 使用通知fiware-servicefiware-servicePath标头来组成不同后端元素的名称。具体来说:

  • MySQL
    • 数据库被称为<fiware-service>
    • 表名被称为<fiware-servicePath>_<destination>
  • 高密度文件系统
    • HDFS 路径创建为/user/<your_user>/<fiware-service>/<fiware-servicePath>/<destination>/<destination>.txt
  • CKAN
    • 组织被称为<fiware-service>
    • 包/数据集被称为<fiware-servicePath>
    • 资源被称为<destination>

默认情况下,<destination>等于<entityId>_<entityType>。如问题中所述,这可能会导致为每个通知实体创建一个 MySQL 表/HDFS 文件夹/CKAN 资源。

这种默认的目的地生成可以通过使用 Cygnus 的高级功能(基于模式的分组)来更改;顾名思义,该功能基于在数据中查找(配置)模式,以便对显示模式的上下文数据进行分组。例如,此功能允许某种类型的所有实体都存储在单个 MySQL 表中;或某些以前缀开头的实体一起存储在 HDFS 文件中。

为了激活此功能,编辑/usr/cygnus/conf/matching_table.conf文件并根据需要添加尽可能多的匹配规则;匹配规则语法在此处描述。基本上,规则说“一旦确认了基于模式的匹配,就使用这个新的<destination>和这个新的<fiware-servicePath>”:

<rule_id>|<list_of_fields_to_be_compared>|<regular_expresion>|<new_destination>|<new_fiware-servicePath>

因此,“将所有数据存储在名为 'my_unique_table' 的 MySQL 表中”规则如下所示:

<any_unique_number>|<entityId>|.*|unique_table|my_

或者:

<any_unique_number>|<entityId>|.*|_table|my_unique

<fiware-servicePath>这两个规则都是有效的,因为 MySQL 表名是通过连接和创建的,如前所述<destination>;在这种情况下,表名等于“my_”+_+“unique_table”或“my_unique”+“_table”。

于 2015-04-23T13:46:39.793 回答