Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 用有限的资源扩展Mongo最简单的方法?_Mongodb_Scalability - Fatal编程技术网

Mongodb 用有限的资源扩展Mongo最简单的方法?

Mongodb 用有限的资源扩展Mongo最简单的方法?,mongodb,scalability,Mongodb,Scalability,我有一个web服务器40G高清,1G内存,运行Mongo和Rails应用程序 Mongo DB是Twitter推特和用户的文档库,拥有数百万条记录。我对数据执行map reduce查询,以提取最常见的hashtag、单词、提及等非常标准的内容。每个tweet的元数据都已经存储,因此map-reduce实际上与单个collect一样高效 然而,由于它是在一个相当大的数据集上运行的,因此它不能再实时运行了——例如,我有一个报告生成器,它可以连续计算出一系列这些映射,大约需要2分钟来处理2万条推文 什

我有一个web服务器40G高清,1G内存,运行Mongo和Rails应用程序

Mongo DB是Twitter推特和用户的文档库,拥有数百万条记录。我对数据执行map reduce查询,以提取最常见的hashtag、单词、提及等非常标准的内容。每个tweet的元数据都已经存储,因此map-reduce实际上与单个collect一样高效

然而,由于它是在一个相当大的数据集上运行的,因此它不能再实时运行了——例如,我有一个报告生成器,它可以连续计算出一系列这些映射,大约需要2分钟来处理2万条推文

什么是缩放mongo最快、最便宜的方法,尤其是在map-reduce性能方面?我可以设置一个额外的服务器并拆分负载,但我想知道是应该使用分片、复制还是两者都使用?在这种情况下,切分可能是杀伤力过大

我想在我的mysql mongo连接上输入一些信息。mysql包含存储每个配置文件的twitter ID的twitter配置文件。每次完成map reduce时,它都会收集所有ID作为选项输入mapreduce ie:

@profile_tweet_ids = current_profile_tweet_ids # array of ids
@daily_trend = TwitterTweet.daily_trend :query => {:twitter_id => {"$in" => @profile_tweet_ids}}
TwitterTweet中的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之类的云服务。。不过,这取决于您对廉价的定义。

请使用诸如MongoLab之类的云服务。。取决于您对便宜的定义。

如果您正在进行简单的计数、求和、唯一性等,则可以完全避免使用map reduce。您可以使用$inc操作符实时获取所需的大部分内容。
我在上的博客文章中详细解释了这一点。

如果你做的是简单的计数、求和、单数等,你可以完全避免使用map reduce。您可以使用$inc操作符实时获取所需的大部分内容。
我在上的博客文章中详细解释了这一点。

关于使用操作符而不是MapReduce的答案有其优点,并且可能对您获取实时响应的努力更为有益。mongodb上的Map Reduce无法生成实时响应

此外,一旦新的聚合框架在下一版本中可用,您还可以从中受益

为了回答关于如何扩展MapReduce的更一般的问题,如果只是将新服务器添加为辅助服务器,则添加新服务器可能没有帮助,因为辅助服务器无法将M/R结果存储在集合中,因此内联是您唯一的选择。如果不需要将结果存储在集合中,那么这是最简单的方法。有关更多信息,请参见此处的深入讨论:


切分可以帮助扩展,但请记住,您需要通过mongos进程运行所有内容,配置服务器,并且mongos需要最终确定从每个切分返回的结果集,因此,您将根据您的数据添加一个新的潜在瓶颈,并且您将需要不止一台额外的机器才能使其以可靠的方式工作。

关于使用操作符而不是MapReduce的答案有其优点,并且可能对您获得实时响应的努力更为有利。mongodb上的Map Reduce无法生成实时响应

此外,一旦新的聚合框架在下一版本中可用,您还可以从中受益

为了回答关于如何扩展MapReduce的更一般的问题,如果只是将新服务器添加为辅助服务器,则添加新服务器可能没有帮助,因为辅助服务器无法将M/R结果存储在集合中,因此内联是您唯一的选择。如果不需要将结果存储在集合中,那么这是最简单的方法。有关更多信息,请参见此处的深入讨论:


切分可以帮助扩展,但请记住,您需要通过mongos进程运行所有内容,配置服务器,并且mongos需要最终确定从每个切分返回的结果集,因此,根据您的数据添加了一个新的潜在瓶颈,您将需要不止一台额外的机器才能使其可靠地工作。

听起来您的用例更多地是在线流/事件处理。
您可以使用mongo或其他数据库/缓存产品来存储引用数据,并使用事件处理框架来接收和处理事件。有一些工具可以帮助你做到这一点——在我脑海中有一些工具:Twitter风暴、Apache S4、免责声明——我为GigaSpaces和GridGain工作

听起来您的用例更多地是在线流/事件处理。 您可以使用mongo或其他数据库/缓存产品来存储引用数据,并使用事件处理框架来接收和处理事件。有一些工具可以
我可以帮你做到这一点——在我脑海里有几个:Twitter风暴、ApacheS4、免责声明——我为GigaSpaces和GridGain工作

不同数据项之间的连接对他们来说最有价值。他们让公众对数据进行分类,使其有价值,因此对你来说也是最危险的。不同数据项之间的连接对他们来说最有价值。他们让公众对数据进行分类使它有价值,因此对你来说也是最危险的