每秒大概实时数据几千上万条汇入,需要对数据做分析和汇总之后在前端做数据可视化展示,统计跨度包括过去两小时,上一天,上一周,一个月,原始数据只做分析不修改,后台技术方案如何选型?
我个人目前想的是,数据接入用mq做削峰,每天用定时任务生成上一天的汇总数据,当天的数据放redis实时分析,原始数据存储放mongodb,太久之前的数据从mongo移到文件存储中。
是否有更好的方案?这种场景适合用ES吗?
每秒大概实时数据几千上万条汇入,需要对数据做分析和汇总之后在前端做数据可视化展示,统计跨度包括过去两小时,上一天,上一周,一个月,原始数据只做分析不修改,后台技术方案如何选型?
我个人目前想的是,数据接入用mq做削峰,每天用定时任务生成上一天的汇总数据,当天的数据放redis实时分析,原始数据存储放mongodb,太久之前的数据从mongo移到文件存储中。
是否有更好的方案?这种场景适合用ES吗?
按照内容描述姑且算作1w/s,每个小时需要处理的数据量就是3600w/hour,和你标题提到的每天的数量级不一样,不知道以那个为准。每天千万级和每小时千万级差别还是挺大的。
另外,还需要从以下几个方面考虑你的需求(供参考):
clickhouse比es查询效率高百倍以上,字节在用,以供参考
influxDB时间序列数据,直接解决高并发写场景,特别适合按时间访问统计的场景
1.每天凌晨定时跑前一天的数据,统计到维度 小时,然后存到数据库
2.查询报表,查询历史,从数据库直接取,小时维度,很方便可以查询到天,周,月,数据量也不会大
3.当天数据,实时统计,放缓存。。。。另外可以在项目运行的时候就统计当天的存到缓存.
这个时候应该使用大数据流式计算比如flink,spack
tidb解决一切烦恼
mongo移到文件存储 ?
分布式数据库不香吗
同时做多个粒度的数据累积,比如,按小时,按天,按周,按月,按季度,按年度。后者可以基于前者累计得到。正常应该是这么做的。
如果统计当天的实时数据,可以考虑上大数据流处理引擎Flink,专门针对实时数据流做聚合处理;
Flink 开窗