oneM2M系统中是否可能存在重复的遥测数据

问题描述

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

有两种可能-

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

使用 oneM2M 可以选择两个选项中的哪一个

oneM2M 如何支持时序数据流?

提前致谢。

解决方法

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

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

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

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

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

但是,当您只需要为每个传感器存储一个数据记录时,有多种选择可以实现您想要执行的操作。您应该看看 的定义,因为在这里您可以将 maximumNumberOfInstance (mni) 属性设置为 1。这意味着 始终确保自动存储数据的一个实例(即它删除所有旧实例)。要访问您的数据,您将不直接寻址 ,而是使用 虚拟子资源。向该资源发送 RETRIEVE 请求时,您将自动获取最新的 ,而与其名称或资源标识符无关。

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...