一、概述
因为实时计算的特殊性,需要针对多维度的实时显示累计和分时的UV、PV数。目前有22+N个维度(后面简称dimName),N是用户会加的维度,每个dimName都会有维度值(后面简称dimValue),每个dimName都有不同数量的dimValue,在用户选择n(目前n<=5)个dimName时要输出这n个dimName对应的dimValue的组合数,也就是n个中取5个dimName,然后这些dimName下所有dimValue不重复的组合结果。但是每个dimValue有可能有m个dimName(m>0)。
因为数据量太大,最好将乘法转换成加法,这样所有dimName的dimValue总和也不会很大了,按照正常的思考是拿着dimName去group by方式查,但是需要把所有数据都保存下来,数据量巨大就会产生资源和请求性能的问题。
我的方案是使用倒排索引做加法,所有dimValue都是索引的字段,uv就是uid为唯一id(唯一id就是MySQL的自增主键),pv就是一个跟之前所有数据id不同的唯一id,这样就可以检索需要的字段了,检索内容就是dimValue。
二、解决方案
针对多维度实时计算的需求用倒排索引来计算结果效率应该是最高的,倒排索引的简单数据结构是
DimValue |
Uid |
|||||
中国 |