与容器资源相比,使用timeSeries的优势

时间:2019-06-17 07:13:31

标签: onem2m

timeSeries资源代表数据实例的容器,timeSeriesInstance资源代表资源中的数据实例。

container和contentInstance的主要区别是将时间信息与数据保持在一起,并能够检测到丢失的数据。

使用timeSeries和timeSeriesInstance资源而不是container和contentInstance资源还能实现其他优势吗?

它是否还有助于节省数据冗余,例如如果我的一个应用程序实例每30秒发送一次数据,那么一天将创建24 * 120 contentInstance。

如果正在使用timeSeries和timeSeriesInstance资源,那么对于上述情况,是否会在一天(即24 * 120)内创建相同数量的timeSeriesInstance?

另外,在timeSeries中保留contentInfo属性而不是timeSeriesInstance有什么特定目的(例如,在contentInstance资源中包含contentInfo)

2 个答案:

答案 0 :(得分:2)

资源类型之间有一些区别。

资源可以包含任意数量的资源以及和(子)资源作为子资源。这样做的好处是可以进一步构造来表示更复杂的数据类型。

这也是为什么 contentInfo 属性不能成为资源一部分的原因,因为内容的类型可以混合,或者资源不能直接使用完全资源。

资源只能将资源作为子资源(等除外)。假定所有子资源都是同一类型,因此 contentInfo 位于资源中。

资源还可能具有 sequenceNr 属性,该属性使CSE可以检查丢失或失序的数据。例如,请参见资源中的 missingDataDetect 属性。

对于您的应用程序(每30秒发送和存储数据):取决于要求。始终传输测量值是否很重要,或者什么时候知道何时丢失数据很重要?然后使用。如果您的应用程序仅在度量值发生变化时发送数据,并且仅获取最新值非常重要,请使用

答案 1 :(得分:2)

来说,有两个用例比对用例更好。

第一个用例涉及 dataGenerationTime 属性。这允许传感器专门记录捕获传感器值的时间,而使用则具有创建时间(您可以将捕获时间放入 content 属性,但这需要从 content 中提取的其他处理)。如果您使用 creationtime 属性,则时间会根据CSE接收原语的时间而有所不同。使用时,变化会消失,因为CREATE请求包含 dataGenerationTime 属性。这样可以使数据更准确。

第二个用例涉及 missingDataDetect 属性。简而言之,使用此功能以及预期的 periodicInterval ,您可以为传感器实现“心跳”类型的功能。如果传感器未发送指示门每30秒关闭/打开一次的测量值,则可以发送通知以指示传感器发生故障或被篡改。