繁体   English   中英

在 django 中存储动态数据

[英]Storing dynamic data in django

因此,在我的应用程序中,我目前正在接收和存储一些数据,目前的结构基于此:

  • 每个应用程序都有许多设备
  • 每个设备都有来自其传感器的传入数据
  • 每个传感器都有一个类型(例如温度/湿度/等)

最初,我想找到一种解决方案,将所有数据动态存储到一个表中,model 可能如下所示:

time = models.DateTimeField()
sensor = models.ForeignKey(Sensor, on_delete=models.CASCADE)
data = ???

现在,模型中的每个传感器都连接到所有细节(包括应用程序、传感器硬件信息和用于连接到所述传感器的其他 API 相关信息),但是,对于数据,我查找了许多选项,但我有还没有找到一个感觉足够的,我探索的一些选择是:

  1. 根据此处的答案,将数据存储在字典中并将其存储在 model 中

  2. 除了使用此处讨论的 inheritance 的某些系统之外,在使用此处的方法存储数据时,具有单独的表并稍后以某种方式调用模型

  3. 使用动态字段与此类似的东西

我目前正在使用 mySQL,并且我看到了一些其他解决方案,例如可能使用 PostgreSQL,但如果有其他选项,我想避免切换数据库。

我只是觉得必须有一个更好更干净的解决方案,因为它感觉就像一个简单的实现。 从某种意义上说,这些实现中的大多数要么感觉太老套且效率低下,特别是考虑到我将存储大量数据(大量传感器连续向服务器发送数据),或者不允许对子查询进行查询数据。

我的应用程序还有其他更好的实现吗? 如果不是,那么这些实现中的哪一个最适合我关注?

如果有人遇到类似问题,我最终使用的方法如下:

主model:

class Sensor(Device):
    sensorName = models.CharField(max_length=50)
    sensorSerial = models.CharField(max_length=50)
    sensorTable = models.CharField(max_length=50)

每个传感器将接收数据,每个数据条目将按如下方式保存:

class Entry(models.Model):
    time = models.DateTimeField()
    sensor = models.ForeignKey(Sensor, on_delete=CASCADE)

每个条目将包含许多未知的字段,具体取决于它是哪种传感器,因此包含用于 DATA 的第三个 class 并使用伪字典:

class Data(models.Model):
    entry = models.ForeignKey(Entry, on_delete=CASCADE)
    key = models.CharField(max_length=50)
    value = models.CharField(max_length=50)

我仍在研究如何提高效率,但这绝对比在解码 XML/JSON 超过 100 数千个条目时循环遍历条目要快得多。

我会用我发现的任何突破或更新来更新答案。

暂无
暂无

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

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