室内温度监控的 mysql 数据库设计

2019-09-08 14:55:48 +08:00
 kayseen
需求:
室内温度实时监控

1.展示近 30 分钟内的实时室内温度(比如 11:30, 11:31 的温度分别是多少)
2.展示同一时刻的近 7 天的温度变化(比如现在是 11:30,需要展示的是往前共计 6 天的 11:30 的温度)


请教下这种需求的数据库应该怎么设计啊?
要展示近七天历史的每分钟的室内温度,总不能在数据库给每分钟都建立一个字段吧....请大家赐教
8989 次点击
所在节点    Python
74 条回复
newtype0092
2019-09-08 16:58:02 +08:00
@kayseen 你这点数据谈不上压力
KomeijiSatori
2019-09-08 17:38:35 +08:00
@kayseen MySQL 什么时候连这点数据都顶不住了
opengps
2019-09-08 17:41:54 +08:00
@kayseen
[分享一个我用过的压测 SqlServer 写入能力的方法代码]( https://www.opengps.cn/Blog/View.aspx?id=422)
[mysql,sqlserver 数据库单表数据过大的处理方式]( https://www.opengps.cn/Blog/View.aspx?id=284)
unixeno
2019-09-08 17:42:05 +08:00
@kayseen 这点数据量根本谈不上压力,再加 2 个 0 都没问题
而且你这个也没有啥查询压力,对时间戳做个索引就可以了
vincenttone
2019-09-08 18:17:12 +08:00
每分钟记录一次没什么问题,60 * 24 * 7 = 10080 一周才一万条记录,就算你记上一年闰年也才 524040,50w 条。
如果你磁盘实在是小,那你起个脚本定时清理一下一周前的记录也就完事了,一直保持 10080 条就可以了。
lolizeppelin
2019-09-08 19:13:31 +08:00
不想改代码就用 maxwell 把数据实时转发就是,不影响线上记录相关代码
跳出来海阔天空啊!
sayhier
2019-09-08 20:45:00 +08:00
我再把问题延伸一下啊,其实这是个物联网问题,假设数据不止温度一个,也不止从一个地方发来数据,应该如何设计
hjmeteor
2019-09-08 21:07:55 +08:00
为什么不参考下气象探测(采集)呢?每一条记录固定格式,把字节分配下,比如时间(举例 YYYYMMDDHHMM )、房间号、要素值,使用时读取、适当的转换即可。
Huelse
2019-09-08 22:37:07 +08:00
其实也可以考虑 nginx 那样的写日志文件
GreyYang
2019-09-08 22:47:43 +08:00
建议 influxdb. 这个需求比较合适.
starsriver
2019-09-08 22:48:07 +08:00
为什么要 mysql。

这么点数据 直接文件存
Sasasu
2019-09-08 23:16:38 +08:00
时序数据库都有很强的压缩,比直接用关系数据库能省至少 75% 的硬盘
kayseen
2019-09-08 23:46:42 +08:00
@GreyYang 这个数据库资料好少啊,请问在 python 中操作方便吗?或者在 flask 中操作方便吗?
kayseen
2019-09-08 23:47:20 +08:00
@sayhier 是的,物联网,除此之外会有什么温度湿度降水量之类的很多数据的。。
GreyYang
2019-09-09 00:03:41 +08:00
@kayseen python 操作方便, 参考: https://github.com/influxdata/influxdb-python ; 可视化可以使用原生的 chronograf https://www.influxdata.com/time-series-platform/chronograf/ ; 整套解决方案可以使用 tick 技术栈: telegraf + influxdb + chronograf + kapacitor, 满足数据采集, 存储, 时序数据分析, 报警, 可视化整套需求. 缺点: 集群收费...很贵. 不过单机性能已经很强了, 一般数据量不是特别大应该 ok.
autogen
2019-09-09 00:22:50 +08:00
我觉得 excel 都可以。。。
AlphaTr
2019-09-09 01:03:22 +08:00
@sayhier #27 time、group,type、value ;时间、分组对应地方等、type 对应类型(温度,湿度)、值:类型数据
Pythondr
2019-09-09 01:21:57 +08:00
时序数据库,influxDB
ninjachen
2019-09-09 03:40:13 +08:00
其实他除了原始数据还有个统计需求。
你先记录原始数据,然后每分钟跑个 cron 统计上一分钟的数据,记在新表里,他们业务是不一样的,用 rdbms 的话不能存一起。
daozhihun
2019-09-09 07:01:50 +08:00
如果你的项目要用到 MySQL,不建议楼上有些人说的那样另搞一个时序数据库,反而增加复杂度。这点数据量没什么压力,顶多一年一次给旧数据挪窝就行。
如果没有用到 MySQL,倒是可以考虑用类时序数据库来存储。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/599018

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX