我有一个运行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云服务