我有一個運行Mongo和Rails應用程序的web服務器(40gig hd,1 gig ram)。用有限的資源來擴展Mongo的最簡單方法?
Mongo DB是Twitter推文和用戶的文檔商店,擁有數百萬條記錄。我對數據執行map-reduce查詢以提取諸如最常見的主題標籤,單詞,提及等(非常標準的東西)。每條推文的元數據已經存儲,因此map-reduce與單個收集一樣高效。但是,由於它運行在一個(相當)大的數據集上,因此無法實時完成 - 例如,我有一個報告生成器,可以計算出一大堆這些map-reduce排2萬分鍾,需要2萬分鐘的推文。
什麼是最快,最便宜的方式來縮放mongo,特別是在地圖縮減性能?我可以建立一個額外的服務器並分割負載,但是不知道我應該使用分片,複製還是兩者?對於這種情況,分片可能會過度。
會喜歡我的mysql-mongo連接上的一些輸入。 mysql包含存儲每個配置文件的twitter id的twitter配置文件。每個地圖縮短完成時間,它收集所有的ID被供給作爲選項加入到MapReduce的,即:在TwitterTweet
@profile_tweet_ids = current_profile_tweet_ids # array of ids
@daily_trend = TwitterTweet.daily_trend :query => {:twitter_id => {"$in" => @profile_tweet_ids}}
MapReduce的功能是這樣的:
def daily_trend(options={})
options[:out] = "daily_trend"
map = %Q(function(){
if (this.created_at != null)
{
emit(this.created_at.toDateString(), 1);
}
})
result = collection.map_reduce(map, standard_reduce, options)
normalize_results(result)
end
任何建議表示讚賞!像MongoLab雲服務