实时聚集在探索如何做MongoDB的实时分析,似乎是做算术相当标准的方法,但没有更复杂的聚集方面。有些事情已经帮助...策略MongoDB中
- Twitter's Rainbird:实时总和,递增键上的计数器分层次。卡桑德拉。
- Yahoo's S4和source:不知道到底是如何工作的呢,但看起来它是实时的map-reduce。所以基本上,为每一个加入真实的记录,你把它传递给一个映射器,它把它转换成一个散列,并且将其发送到集成到报告文件。
- http://www.slideshare.net/dacort/mongodb-realtime-data-collection-and-stats-generation
- Hummingbird
做资金的基本方法是,以原子为进来的每个新的纪录,增量文件的密钥缓存常用查询:
Stats.collection.update({"keys" => ["a", "b", "c"]}, {"$inc" => {"counter_1" => 1, "counter_2" => 1"}, "upsert" => true);
这不除了总和以外的其他汇总工作。我的问题是,可以这样做的平均值,分,和max在mongodb?
说你有一个这样的文件:
{
:date => "04/27/2011",
:page_views => 1000,
:user_birthdays => ["12/10/1980", "6/22/1971", ...] # 1000 total
}
你能做到这一点分组的生日弄成这样一些原子或优化/实时操作?
{
:date => "04/27/2011",
:page_views => 1000,
:user_birthdays => ["12/10/1980", "6/22/1971", ...], # 1000 total
:average_age => 27.8,
:age_rank => {
"0 to 20" => 180,
"20 to 30" => 720,
"30 to 40" => 100,
"40 to 50" => 0
}
}
...就像你可以做Doc.collection.update({x => 1}, {"$push" => {"user_birthdays" => "12/10/1980"}})
的东西添加到一个数组,而不必加载文档,你可以做这样的事情,以平均/聚合数组?有没有什么东西可以用于实时聚合?
的MapReduce是用来做这在批处理作业,我在寻找模式的东西,如实时的map-reduce为:
- 平均值:每次推新项目的时间在MongoDB的数组,什么是实时进行平均的值的最佳方式是什么?
- 分组:如果你10岁支架组的年龄,和你有一个年龄数组,你怎么可以优化更新计数对于每个组你与新时代的更新文件?说年龄阵列将不断推/拉。
- 最小值/最大值:有一些什么方法来计算和存储文档中年龄阵列的最小/最大?