首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Cygnus在CKAN中存储复杂的上下文属性

如何使用Cygnus在CKAN中存储复杂的上下文属性
EN

Stack Overflow用户
提问于 2016-09-06 22:20:53
回答 1查看 113关注 0票数 1

目前,我已经使用Fiware-Orion + Fiware-Cygnus + CKAN配置了一个解决方案。

我有以下问题:

上下文属性始终按类型、值和元数据存储;在行模式中,与在列模式中一样好。但是,我在上下文代理中使用了更复杂的JSON结构(类型为'T')

但是,大多数标准的CKAN前端查看器不能处理JSON属性值。

有什么解决方案可以解决这个问题吗?

元数据也存在类似的问题,根据定义,元数据目前由Cygnus作为JSON存储在CKAN中。

最简单的解决方案是将上下文代理数据模型更改为使用平面数据类型。但是,我认为这是一个糟糕的解决方案,因为我不希望上下文建模受到存储适配器限制。

另一种解决方案是升级标准查看器并编写新的查看器。但是,下面是一个更通用的解决方案,它允许我使用任何CKAN查看器。

假设我有一个名为myAttr、值为{ a: 1, b: 2, c: 3}的ContextElement属性。目前,它将由CKAN Sink存储为:

行持久性模式

代码语言:javascript
复制
attrName: "myAttr"
attrValue: "{ a: 1, b: 2, c: 3}"
attrMd: "[{name: md1_name, type: md1_type, value: md1_value}, {name: md2_name, type: md2_type, value: md2_value}]"

列持久化模式:

代码语言:javascript
复制
column: myAttr
value:  { a: 1, b: 2, c: 3}
column: myAttr_md 
value [{name: md1_name, type: md1_type, value: md1_value}, {name: md2_name, type: md2_type, value: md2_value}]

为了解决这个问题,我提出了以下结构:

行持久化模式:

代码语言:javascript
复制
attrName: myAttr_a
attrType: primitive myAttr.a type
attrValue: 1
attrName: myAttr_b
attrType: primitive myAttr.b type
attrValue: 2
attrName: myAttr_c
attrType: <primitive myAttr.b type>
attrValue: 3
attrName: myAttr_md_md1_name
attrType: md1_type
attrValue: md1_value
attrName: myAttr_md_md2_name
attrType: md2_type
attrValue: md2_value
...

我很欣赏你的意见。

EN

回答 1

Stack Overflow用户

发布于 2016-09-13 17:44:06

首先,必须指出您描述“列”-like持久性的方式是不正确的。如果具有属性名称myAttr、属性值{ a: 1, b: 2, c: 3}和属性元数据[{name: md1_name, type: md1_type, value: md1_value}, {name: md2_name, type: md2_type, value: md2_value}],则仅持久化两列:

  • 第一列名为myAttr,值为{ a: 1, b: 2, c: 3}
  • And;第二列名为myAttr_md,值为[{name: md1_name, type: md1_type, value: md1_value}, {name: md2_name, type: md2_type, value: md2_value}]。即,单个列中的所有元数据,而不是像您所描述的那样拆分。

您可以在readthedocs上找到有关CKAN持久性的所有详细信息。

也就是说,我认为通过更改Orion的数据模型,您的用例可以很容易地修复。由于您似乎需要按“子值”拆分单个值{ a: 1, b: 2, c: 3},即a: 1b: 2c: 3 (同样适用于元数据),因此只需使用3个具有适当类型和元数据的属性即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39351378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档