想做一个类似家里数据监控的 WEB 服务,但想不到一个合适的方法储存数据

2014-11-24 19:58:40 +08:00
 beric
简单点说就比如家里面室内温度,想通过采集传到服务器上,然后服务器保存数据到数据库,在外面就可以用浏览器查看或查询当前或历史温度。
对于WEB查询端想要的功能是:
1.能查看实时温度,和1小时内的温度曲线。
2.保存历史温度,半小时保存一次。
3.假设上报的时候为5秒。
下面问题来了:
怎么设计一个好的方法保存数据到数据库,又不想把全部的数据都存下来?就比如超过1小时后的数据只存1个就行了,之前的1小时是要保存。
3025 次点击
所在节点    问与答
18 条回复
cbsw
2014-11-24 20:13:48 +08:00
没明白最后一句是什么意思,不过这个不是很简单的吗,一个树莓派,一个程序负责采集存储数据,数据库(MySQL/PostgreSQL...)有了数据之后,后面的网站就随便搭了
virusdefender
2014-11-24 20:20:46 +08:00
yeelink就行了~
ZackYang
2014-11-24 20:46:02 +08:00
设置个TTL=1小时, 搞定.
zjgsamuel
2014-11-24 20:53:46 +08:00
beric
2014-11-25 00:10:00 +08:00
@cbsw 就是不知道有什么好的方式的存储和展示数据。最后一句是,比如我只想保存1小时内的数据,而超过1小时的只按1小时的平均值保存一次到数据里
beric
2014-11-25 00:10:51 +08:00
@ZackYang 没看明白……
beric
2014-11-25 00:11:41 +08:00
@virusdefender 不是硬件问题
@zjgsamuel 谢谢,这个看起来有点意思……
cbsw
2014-11-25 01:55:19 +08:00
你这逻辑不是很清楚吗,采集的数据带有时间戳,直接把它们存到数据库中,即采集一次,就往数据库中写一次,1个小时比如采集60次,那就每写60个之后就从数据库中取出前60个,取个平均写入数据库,然后继续采集写入
展示的话不就是写个简单的网站吗,网页打开,后台从数据库中取出数据,简单的话直接以表格形式显示,想要高端的话,后台利用数据生成图片返回给网页端,想要更高端的话,用 Ajax 实时从服务器拉数据,前端用 D3.js 之类的库甚至直接用 html5 的 canvas 画图
kmcool
2014-11-25 05:20:10 +08:00
kmcool
2014-11-25 05:26:29 +08:00
家用温度没必要5秒一次 大概1分钟一次就行 否则功耗很大
如果是1分钟一次 一年下来的数据量也没多少。。。
rrfeng
2014-11-25 08:42:09 +08:00
就这点儿数据,一分钟一次全存了也没多少吧。
bearice
2014-11-25 08:54:12 +08:00
rrdtool 你值得拥有。
beric
2014-11-25 09:17:26 +08:00
@cbsw
@kmcool
@rrfeng
啊,看来我表达很有问题,我其实纠结的是,比如在频率高的一直存下去的情况下,不想数据库大太的做法是比如存够了10W条后这后存一条再删一条吗?我就想要一个缓存的FIFO之类的。
ijse
2014-11-25 09:20:34 +08:00
用redis或者memcached,对存入的数据可以设置过期时间的。
virusdefender
2014-11-25 09:48:30 +08:00
@beric yeelink可以帮你存储数据的 有开放平台~
beric
2014-11-25 09:51:25 +08:00
@ijse 哈哈,感谢,正是我想要的!!!PS:有时候有需求,但还是很难用搜索引擎找出答案~~~
beric
2014-11-25 09:51:48 +08:00
@virusdefender 只想自己做设计嘛……
ZackYang
2014-11-25 09:52:10 +08:00
@beric 很多数据库都能设置数据的生存时间(即TTL), 超过那个时间的数据会被自动删除, 你设置成1小时就好了.

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

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

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

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

© 2021 V2EX