繁体   English   中英

传感器网络计算特征-设计数据库

[英]Sensor network calculating features - design database

你会如何 model 涉及传感器的系统

  • 其中有一些空间数据,如纬度、经度、海拔高度……
  • 产生原始测量值的,比方说距离、温度……
  • 为了计算它们所在位置的“特征”,例如体积、温度

这是我对桌子的想法

Sensor
- id
- model
- type

SensorMetadata
- sensorId
- timestamp // for time series to account for changing
- lat
- long
- alt
- metadata: json // some dynamic changeable data based on the domain lets say relative distance to something...
- unit

Measurements
- id
- timestamp
- sensorId
- value

Feature
- id
- type // complex features like volume
- value
- timestamp
- // relation to location (maybe sensorMetadata)

1 你会 model 它是特定于域的,如果我们说液体罐有问题,或者你 model 它会使用“特征”语言通用吗?

2 您将如何以及何时根据测量结果计算“特征”? 很明显,我在这里遗漏了我会考虑哪些传感器来计算位置的特征(假设他们在某些情况下使用多个传感器)

关于Sensor ,不要害怕使用像SensorInstance这样的东西——如果可以的话,歧义是应该避免的,特别是如果你可以这样做而不用做很长的名字。 从长远来看,清晰(明确)的数据库设计通常优于简洁的数据库设计。

SensorMetadata - SensorState 是另一种选择。

Measurements - 尽量避免复数名称,单数(如Sensor )通常更好。 这个页面有一些很好的指导: https://www.sqlshack.com/learn-sql-naming-conventions/

我可以看到的大问题是 Measurements.value——你如何解释这个值? 它是什么数据类型 - 即您的传感器产生的数据类型是什么? 测量与传感器相关 - 传感器测量是否总是产生一个值(如您的设计所暗示的那样)?

我不清楚Feature表的用途是什么。

对于这样的设计挑战,请查看现有的参考架构和设计 - 这家公司看起来可能有一些有用的白皮书: https://crate.io/use-cases/iot-sensor-data/这可能也很有用为您阅读但不会提供直接答案本身: https://hackernoon.com/ingesting-iot-and-sensor-data-at-scale-ee548e0f8b78

21 年 6 月 28 日更新

因此,Measurement 中的 Value 列将根据它来自的 SensorId 进行解释,并且由于 Sensor 具有存储其 Unit 的 SensorMetadata,如果可以的话,我将能够解释 Value 吗?

应该没事。

对于功能 - 几种方法:

  1. 稍后计算 - 即仅收集原始数据,然后进行批量计算。 例如,您可以将数据从数据捕获系统(由于表设计基本上是OLTP数据模型)ETL 到报告系统( OLAP数据模型)。

  2. 现在计算它——即当它被输入数据库的应用程序或数据库中的触发器/逻辑捕获时。 为此,您需要在特征表与测量和/或传感器表之间进行某种参考。 这样您就可以测试计算 Feature.Value 的逻辑,因为如果您不能那样做 - 您能相信您的数据吗? 如果您决定要更改计算公式,它还允许您计算新值。

我个人认为 #1 更灵活,一旦你有了原始数据,你就可以追溯添加你喜欢的任何新功能,但这可能不适合你需要的系统工作方式。

选项 2 很棘手。 如果 Feature.Value 是根据不止一个 Measurement.Value(可能不止一个传感器)计算得出的,那么测量值和传感器的数量也可能会因不同的特征而异——所以你需要一个多对多的关系他们(特征和测量)。

拥有多对多关系很好:连接表是常见的做法(一般而言),并且适合 OLTP model,这对事务(即数据收集)很有好处。 不过,将其转换为对报告更友好的 OLAP model 会更加复杂。

最后,关于您的问题 #2 - 我想我已经间接地部分回答了它。 基本上取决于:需要多长时间才能获取要素数据? 如果在运行时需要它,以便向人们或系统提供即时信息,那么您将希望尽快计算它。 也许把它作为第二个问题提出来,并提供有关功能用例、解决方案上下文(谁在使用它,在什么情况下使用它)等信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM