首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL中构造传感器数据?

如何在SQL中构造传感器数据?
EN

Stack Overflow用户
提问于 2018-08-31 20:11:14
回答 1查看 363关注 0票数 1

我想将来自几个气象站的传感器数据存储在SQL数据库中,以便可以通过django网页查看。

为了保持解释简单,我每隔几分钟读取来自每个气象站的几个传感器(布尔值和浮点值)。我还想存储每次读取的时间戳。

在SQL数据库中构建此数据的最佳方式是什么?我想让系统运行几年,所以它必须能够存储数十万个值。我还需要读取这些值,以便在图形中显示。

EN

回答 1

Stack Overflow用户

发布于 2018-08-31 20:48:22

首先,您可以有两个表- stationsreadings

stations表有一个自动递增的id字段和您需要/拥有的站点的任何其他信息。例如:

代码语言:javascript
复制
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL DEFAULT '0',
`lat` DOUBLE NOT NULL DEFAULT '0',
`lng` DOUBLE NOT NULL DEFAULT '0',
...other things
PRIMARY KEY (`id`)

readings表包含在给定时间来自某个站点的单个报告的条目(我猜测这些值将在几分钟内取平均值):

代码语言:javascript
复制
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`time` TIMESTAMP NOT NULL,
`id_station` INT NOT NULL,
`temp` DOUBLE NULL,
`humidity` DOUBLE NULL,
`wind_speed` DOUBLE NULL,
`wind_dir` DOUBLE NULL,
`pressure` DOUBLE NULL,
`squirrel_count` DOUBLE NULL,
... other things 
PRIMARY KEY (`id`),
INDEX `time` (`time`),
INDEX `id_station` (`id_station`)

根据读数的数量和你的服务器有多大,你可以使用这个表来聚集(例如每天)并创建一个图表,或者你可能需要在另一个表中预先聚合数据以进行报告。

例如:脚本/SQL过程每天运行一次查询,该查询聚合前一天的数据并将其插入到另一个表中。第二个表将与第一个表几乎相同,只是它将只包含每日平均值(而不是几分钟左右的平均值)。

您可以使用预聚合来创建多个不同粒度的表(每小时、每天、每周...)根据您的报告所需。需要的数量和数量取决于您希望它运行的速度,以及您拥有的硬件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52115221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档