问题描述
- 项目背景: 我们现在开发一个工业物联网服务端,前端传感器硬件会每秒上传采集到的数据(温度、湿度、压力),一天上传的数据量就有七八万。
- 需要解决: 我们现在需要得到历史统计数据,每日、每周、每月。如果全部读取出一个月的温度数据将有几十万,读取速度慢且不方便前端显示。
- 想要效果:因为数据大部分情况下都是相似的,所以在时间跨度比较长的时候,变化幅度较小的点被删除,历史数据量减小。但出现大幅度变化的区间仍保持相应的精度。
问题出现的环境背景及自己尝试过哪些方法
根据上述的问题我们构思方案的野路子方案是:
- 在数据上传到服务端写入数据库之前,对数据进行变化率的计算,低于变化阈值的数据将不会存入数据库。
- 每小时运行压缩批处理,将上一个小时的数据根据历史数据进行进一步压缩,并存入数据库。
- 使用elasticsearch代替查询数据,实现更快的搜索
请教各位大牛、先阶段的主流解决方案是什么样?
历史数据是不会变化的,可以通过后Job统计出每日的数据,在每日的数据基础上统计每周的,依次类推,统计季度、年的数据。
前端请求过来查询数据,直接查统计好的表就行了。
核心就是历史数据不会变,这个很重要
ES等其他技术可以使用,提高查询效率
看了背景,你们对实时性要求不是很高,如果很高,需要实时计算可以使用Spark等类似的大数据处理方式,一天7-8万数据很少,常规SQL+合适数据清洗,就能解决