物联网大数据量频繁对MongoDB查询问题

3 篇文章 0 订阅
1 篇文章 0 订阅

闲聊

晚上失眠,把之前使用MongoDB时碰到的问题以及处理方法写下来,我是菜鸟,希望大家提出宝贵的意见。


环境

centos7+MongoDB3.2


问题描述

经过一段时间的使用发现MongoDB各方面都还算稳定,每天所有传感器通过socket采集过来的数据量大概有10w+,很快存放的集合数据量过于

庞大,而数据处理时的需求需要按升序处理并且过滤掉已经处理的数据,这样导致类似sql数据库的全表扫描和排序,严重占用了服务器cpu的资源。

之前的流程示例图


解决方法

方案一:开始的设想是采用redis等缓存数据库来存放未处理的数据,但是基于缓存数据库的搭建需要时间并且服务器当机等意外可能导致数据丢失,而服务器性能被影响,需要短时间内解决,暂时放弃。

方案二:发现MongoDB在某些场合下也可以当缓存数据库来使用,于是直接在进入集合前,先放入MongoDB的临时集合存放,数据处理完毕后再移入集合。这样比较简单的解决了问题。

方案二示例图


未来方案设想:为了缩短中间存入操作产生的通讯成本(ps:soa架构牺牲了一些的通讯成本)后期设想通过MQ消息队列实现socket采集完数据直接推送至数据处理模块,欢迎大家留言讨论,后期还会继续更新实践。


明天还要上班,冲2个小时电先,晚安。     ^.^
















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值