此传感器数据的最佳数据结构是什么?

问题描述

我目前正在开发一个项目,使用 Django 框架将传感器数据存储在数据库中。我正在接收一个具有 19 个数据字段的数据对象,根据测量类型的不同,可以对其进行不同的解释。为了这个问题,我将把数据字段简化为五个字段。接收到的数据类似于以下示例:

{
  "data type": 1
  "values":[12,18.4,14,15,1]
}

可以根据数据类型解释数据值。例如,查找表可能如下所示:


数据类型 1:气候控制

字段 描述 单位
1 室温 C
2 所需温度 C
3 冷却器功率百分比 %
4 阀门位置 %
5 电源 千瓦时

这些数据类型中的每一种可能对给定数据有不同的解释。随着时间的推移,不同数据类型的数量可能会发生变化,因此我需要这是一个灵活的解决方案。

问题

我将如何以最佳方式存储这些数据?我:

  1. 将原始值存储在数据库中,并在模型中定义值的上下文?
  2. 像这样在数据库添加上下文?

    Example database

很高兴听到您的意见!

解决方法

我会通过将所有传感器数据(19 个字段)存储在一个带时间戳的模型中,并将任何其他分类值作为外键来解决这个问题。

出于以下原因:

首先,我将在这里做出一个巨大的假设,因为您想要收集数据的原因是源系统的存储容量有限,您需要额外的报告功能,或者您只能获得一个时间点馈送.

如果是这种情况,您希望尽可能按照最初接收数据的方式保留数据。源系统可能会发生变化,您可能会获得额外的数据点或规模变化,这将不可避免地破坏事物,您应该能够在一个地方解决这些类型的问题。

如果您想以编程方式插入这些值(例如 REST API),它也会在插入时使事情变得更简单。这是一种保持插入原子性的简单方法,如果插入失败,则不会进行任何提交,并且您不必因为必须通过多个模型添加数据而清理部分提交。