實時聚集在探索如何做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歲支架組的年齡,和你有一個年齡數組,你怎麼可以優化更新計數對於每個組你與新時代的更新文件?說年齡陣列將不斷推/拉。
- 最小值/最大值:有一些什麼方法來計算和存儲文檔中年齡陣列的最小/最大?