背景/意图:一次增加数百个计数器,redis或mongodb?
所以我要从头开始创建一个事件跟踪器,并有几个关于如何做到这一点的想法,但我不确定的最佳方式与数据库方面着手东西的。我有兴趣做的一件事是允许这些事件是完全动态的,但同时允许报告关系事件计数器。
例如,所有国家按操作系统细分。预期的效果将是:
- 美事件#
- 的iOS - 事件#,在美国发生
- 的Android - 事件#,在美国发生
- CA#的事件
- iOS - 发生在CA的事件数#
- Android - 发生在CA中的事件数#
- 等
我的意图是要能够接受这些事件的名字,像这样:
/?country=US&os=iOS&device=iPhone&color=blue&carrier=Sprint&city=orlando&state=FL&randomParam=123&randomParam2=456&randomParam3=789
为了做关系计数器像上面我这意味着每个请求可能会增加100+个计数器。
假设每天会有上千万的上述请求。
我想让事情完全保持动态,而且我也希望以这种方式进行,以便数据查找保持超级快速。因此,我一直在研究如何使用redis或mongodb。
问题:
有没有更好的办法,同时保持动态的领域做到这一点,然后柜台?
如果这是全部在一个文件中(结构像一棵树),将在mongodb中使用$ inc操作符在一次操作中同时增加100个以上的计数器是可行的而不是缓慢的?这里的好处是,我可以在单个查询中快速检索一个“广告系列”的所有统计信息。
这会更适合于redis并为事件的所有适用计数器执行锌比?
感谢
如何“动态”你需要它?即什么延迟?另一种方法是为每个事件存储文档,然后定期使用map-reduce来汇总数据。这样的方法也可以让你改变事后报告的内容(例如添加'奥兰多'的自定义报告)。 – 2012-07-11 22:38:43
由于这是更多的市场营销信息,它将是理想的尽快提供。为什么我认为柜台可能很适合的另一个原因。 – Ataraxy 2012-07-12 00:51:02