2

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

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

使用 timeSeries 和 timeSeriesInstance 资源而不是容器和 contentInstance 资源可以实现任何其他优势吗?

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

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

此外,是否有任何特定目的将 contentInfo 属性保留在 timeSeries 而不是 timeSeriesInstance 中(就像我们在 contentInstance 资源中有 contentInfo )

4

2 回答 2

2

<container> 和 <timeSeries> 资源类型之间存在一些差异。

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

这也是为什么contentInfo属性不能是 <container> 资源的一部分的原因,因为内容的类型可以只是混合,或者 <container> 资源根本没有直接的 <contentInstance> 资源。

<timeSeries> 资源只能将 <timeSeriesInstance> 资源作为子资源(<subscription>、<oldest>、<latest> 等除外)。假设所有子 <timeSeriesInstance> 资源属于同一类型,因此contentInfo位于 <timeSeries> 资源中。

<timeSeriesInstance> 资源也可能有一个sequenceNr属性,它允许 CSE 检查丢失或无序的数据。例如,参见 <timeSeries> 资源中的missingDataDetect属性。

对于您的应用程序(每 30 秒发送和存储数据):这取决于要求。始终传输测量值是否重要,或者何时知道何时丢失数据很重要?然后使用 <timeSeries> 和 <timeSeriesInstances>。如果您的应用程序只是在测量值更改时发送数据,并且检索最新值很重要,则使用 <container> 和 <contentInstance>。

于 2019-06-17T13:10:48.690 回答
2

<timeSeries> 的两个用例在我看来比使用 <container> 更好。

第一个用例涉及dataGenerationTime属性。这允许传感器专门记录传感器值被捕获的时间,而使用 <contentInstance> 您有创建时间(您可以将捕获时间放入内容属性中,但这需要额外的处理才能从内容中提取)。如果您使用 <contentInstance> 的creationtime属性,则基于 CSE 接收原语的时间会有所不同。当使用 <timeSeriesInstance> 时,变化消失了,因为 CREATE 请求包含dataGenerationTime属性。这使得数据更加准确。

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

于 2019-06-26T02:10:46.953 回答