所以 BuddyMedia 正在使用其中的一些。 Gilt Groupe 做了一些很酷的事情蜂鸟 http://projects.nuttnet.net/hummingbird/(node.js + MongoDB)。
我曾在社交媒体领域的一家大型在线广告商工作过,我可以证明实时报告确实很痛苦。尝试每天“汇总”5 亿的展示次数已经是一个挑战,但尝试实时做到这一点是可行的,但它有一些明显的局限性。 (好像实际上延迟了 5 分钟:)
坦白说,这类问题是我开始使用 MongoDB 的原因之一。而且我不是唯一一个。人们使用 MongoDB 进行各种实时分析:服务器监控 http://www.serverdensity.com/, 集中记录 http://www.graylog2.org/以及仪表板报告。
进行此类报告时,真正的关键是要了解数据结构与 MongoDB 完全不同,您将避免“聚合”查询,因此查询和输出图表将会有所不同。客户端有一些额外的编码工作。
下面的关键可能会为您指明使用 MongoDB 执行此操作的正确方向。看一下下面的数据结构:
{
date: "20110430",
gender: "M",
age: 1, // 1 is probably a bucket
impression_hour: [ 100, 50, ...], // 24 of these
impression_minute: [ 2, 5, 19, 8, ... ], // 1440 of these
clicks_hour: [ 10, 2, ... ],
...
}
显然这里有一些调整,适当的索引,也许将数据+性别+年龄混合到一个_id
。但这就是使用 MongoDB 进行点击分析的基本结构。更新展示次数和点击次数非常容易{ $inc : { clicks_hour.0 : 1 } }
。您可以自动更新整个文档。报告实际上是很自然的。您已经拥有一个包含每小时或分钟级数据点的数组。
希望这能为您指明正确的方向。