beric
V2EX  ›  问与答

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

  •  
  •   beric · Nov 24, 2014 · 3745 views
    This topic created in 4213 days ago, the information mentioned may be changed or developed.
    简单点说就比如家里面室内温度,想通过采集传到服务器上,然后服务器保存数据到数据库,在外面就可以用浏览器查看或查询当前或历史温度。
    对于WEB查询端想要的功能是:
    1.能查看实时温度,和1小时内的温度曲线。
    2.保存历史温度,半小时保存一次。
    3.假设上报的时候为5秒。
    下面问题来了:
    怎么设计一个好的方法保存数据到数据库,又不想把全部的数据都存下来?就比如超过1小时后的数据只存1个就行了,之前的1小时是要保存。
    18 replies    2014-11-25 09:52:10 +08:00
    cbsw
        1
    cbsw  
       Nov 24, 2014
    没明白最后一句是什么意思,不过这个不是很简单的吗,一个树莓派,一个程序负责采集存储数据,数据库(MySQL/PostgreSQL...)有了数据之后,后面的网站就随便搭了
    virusdefender
        2
    virusdefender  
       Nov 24, 2014
    yeelink就行了~
    ZackYang
        3
    ZackYang  
       Nov 24, 2014
    设置个TTL=1小时, 搞定.
    zjgsamuel
        4
    zjgsamuel  
       Nov 24, 2014   ❤️ 1
    beric
        5
    beric  
    OP
       Nov 25, 2014
    @cbsw 就是不知道有什么好的方式的存储和展示数据。最后一句是,比如我只想保存1小时内的数据,而超过1小时的只按1小时的平均值保存一次到数据里
    beric
        6
    beric  
    OP
       Nov 25, 2014
    @ZackYang 没看明白……
    beric
        7
    beric  
    OP
       Nov 25, 2014
    @virusdefender 不是硬件问题
    @zjgsamuel 谢谢,这个看起来有点意思……
    cbsw
        8
    cbsw  
       Nov 25, 2014
    你这逻辑不是很清楚吗,采集的数据带有时间戳,直接把它们存到数据库中,即采集一次,就往数据库中写一次,1个小时比如采集60次,那就每写60个之后就从数据库中取出前60个,取个平均写入数据库,然后继续采集写入
    展示的话不就是写个简单的网站吗,网页打开,后台从数据库中取出数据,简单的话直接以表格形式显示,想要高端的话,后台利用数据生成图片返回给网页端,想要更高端的话,用 Ajax 实时从服务器拉数据,前端用 D3.js 之类的库甚至直接用 html5 的 canvas 画图
    kmcool
        10
    kmcool  
       Nov 25, 2014
    家用温度没必要5秒一次 大概1分钟一次就行 否则功耗很大
    如果是1分钟一次 一年下来的数据量也没多少。。。
    rrfeng
        11
    rrfeng  
       Nov 25, 2014
    就这点儿数据,一分钟一次全存了也没多少吧。
    bearice
        12
    bearice  
       Nov 25, 2014   ❤️ 1
    rrdtool 你值得拥有。
    beric
        13
    beric  
    OP
       Nov 25, 2014
    @cbsw
    @kmcool
    @rrfeng
    啊,看来我表达很有问题,我其实纠结的是,比如在频率高的一直存下去的情况下,不想数据库大太的做法是比如存够了10W条后这后存一条再删一条吗?我就想要一个缓存的FIFO之类的。
    ijse
        14
    ijse  
       Nov 25, 2014   ❤️ 1
    用redis或者memcached,对存入的数据可以设置过期时间的。
    virusdefender
        15
    virusdefender  
       Nov 25, 2014
    @beric yeelink可以帮你存储数据的 有开放平台~
    beric
        16
    beric  
    OP
       Nov 25, 2014
    @ijse 哈哈,感谢,正是我想要的!!!PS:有时候有需求,但还是很难用搜索引擎找出答案~~~
    beric
        17
    beric  
    OP
       Nov 25, 2014
    @virusdefender 只想自己做设计嘛……
    ZackYang
        18
    ZackYang  
       Nov 25, 2014
    @beric 很多数据库都能设置数据的生存时间(即TTL), 超过那个时间的数据会被自动删除, 你设置成1小时就好了.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   950 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 18:31 · PVG 02:31 · LAX 11:31 · JFK 14:31
    ♥ Do have faith in what you're doing.