wangshuai
2015-04-08 17:04:45 +08:00
这个问题吧,我认为, 其实 Event 表 可以理解成一个 log 的表,记录Star事件的,所以你说的那些统计内容,也就是吧event 表当个样本池子,是需要对Event表做类似 map-reduce的处理来获取分布啊之类的信息。
具体表的设计方面,我觉得也就是加一个类似 RepoPopular之类的名字的表,里面存放Repo的信息和username之外,应该有一个 senders 的 array , array 里面存放所有star过这个repo的人信息,比如名字,followers, 和location,是一个 document的array。 当你在为这个repo统计的时候,直接find这个reop,那所有和你统计相关的所有star的人的信息就都有了。
只不过是在update 这个 document的时候,程序那里通过代码来控制一些约束,比如什么重复人啊,之类的。
如果是持续运营阶段性的数据,就不用map-reduce,直接find document 搞就可以。 如果是一次批量取得很多数据,然后store 进 mongo, 那就搞的map-reduce, 稍微复杂一点的统计,就用这种方式基本很多问题都可以解决。