搜索

首页  >  问答  >  正文

java - mysql单表流水500W数据多维度统计的方案

现在项目中有张流水表结构大概如下
id sdkVersion jarVersion countryCode imei createTime

以前的需求是按sdkVersion,jarVersion,countryCode的分组求总数和imei排重后的总数,大致sql如下:

select sdkVersion,jarVersion,countryCode,count(*),count(distinct imei) from xxx 
where createTime = 'xxxx-xx-xx'
group by sdkVersion,jarVersion,countryCode

查出前一天的所有数据然后汇总到一张表里,结构大概如下

id sdkVersion jarVersion countryCode count(*) count(distinct imei) createTime

然后现在的需求是要任意纬度的组合查询,就是可以
group by sdkVersion
group by jarVersion
group by countryCode
group by sdkVersion,countryCode
等等各种组合,如果按以前的每日汇总方案的话就要为不同的纬度组合建立很多个表,有什么好的方案可以解决这种问题?或者是用专门的统计框架可以解决的?

黄舟黄舟2821 天前938

全部回复(4)我来回复

  • 仅有的幸福

    仅有的幸福2017-05-19 10:09:03

    楼主可以去看看PipelineDB流式数据库

    回复
    0
  • 黄舟

    黄舟2017-05-19 10:09:03

    apache kylin, 亚秒级olap

    回复
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-19 10:09:03

    每日汇总的话,实时性要求并不高,500W 记录也还在可以处理的范围内,视图 + 定时计划,可以满足要求,不需要建多表。
    题主最好能说明一下有什么瓶颈或者痛点,毕竟 mysql 是个成熟产品,换用新锐技术有一定风险。

    回复
    0
  • 黄舟

    黄舟2017-05-19 10:09:03

    写存储过程,每天定时跑就行了

    回复
    0
  • 取消回复