0

我正在使用OneM2M标准的OM2M (Eclipse)实现。在这里,他们为每个遥测数据生成一个内容实例,并使用一个随机数来生成它的 ID。现在,假设由于某种原因,设备两次发送相同的遥测数据,那么在这种情况下,我们将为此遥测数据创建重复条目,因为我们创建了内容实例的随机 ID。

有两种可能——

  1. 我可以使用遥测时间戳来生成内容实例的 ID。这样就不会有任何重复的条目。
  2. 我什么都不做并存储重复的条目,以便我们以后可以分析数据并捕获此异常。并相应地更改设备配置。

使用 oneM2M 可以实现这两个选项中的哪一个?

oneM2M 如何支持时间序列数据流?

提前致谢。

4

1 回答 1

1

您在问题中描述的场景实际上是两个不同的用例:

  • 您要么想要时间序列数据(独立发送的数据,无论它是否在特定时间间隔内发生变化,例如每分钟),或者
  • 您想要传感器的最新数据,并且只记录更改。

您需要决定要为您的场景实施哪种案例,但从您的问题看来,第二个用例是您想要实施的。

您在选项 1) 中建议的内容是不可能的,因为 <contentInstance> 资源类型不允许更新现有资源。使用此资源的唯一可能性是每次要存储数据时创建一个新的 <contentInstance>。

此外,您不能提供、设置或更新resourceIdentifier,因为它始终由 CSE 分配。

但是,当您只需要为每个传感器存储一个数据记录时,有几个选项可以实现您想要做的事情。您应该查看 <container> 定义,因为在这里您可以将maximumNumberOfInstance (mni) 属性设置为 1。这意味着 <container> 始终确保自动存储一个数据实例(即,它会删除所有较旧的实例)。要访问您的数据,您将不会直接访问 <contentInstance>,而是使用 <container> 的 <latest> 虚拟子资源。向该资源发送 RETRIEVE 请求时,您将自动获得最新的 <contentInstance>,独立于其名称或资源标识符。

另一种可能性是使用 <flexContainer>。在这里,您可以定义自己的数据点并存储数据记录,而无需任何版本控制。但我不确定您使用的 om2m 版本是否完全支持 <flexContainer> 资源类型。

于 2021-02-22T12:28:31.170 回答