Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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/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
Node.js MongoDB+;NodeJS:MapReduce或手动计算_Node.js_Mongodb_Rest_Mapreduce - Fatal编程技术网

Node.js MongoDB+;NodeJS:MapReduce或手动计算

Node.js MongoDB+;NodeJS:MapReduce或手动计算,node.js,mongodb,rest,mapreduce,Node.js,Mongodb,Rest,Mapreduce,我正在NodeJS中创建一个restapi,它连接到MongoDB,并执行MapReduce,将结果存储在不同的集合中 代码非常简单。它获取一个用户ID,使用某种算法获取与该用户相关的所有其他用户,然后为每个用户计算相似度百分比。假设测试数据库中有50k个用户,这个MapReduce大约需要200-800ms。这对我来说很理想。如果这是著名的,有数百个像这样的并发请求,我敢肯定,情况将不再如此。我知道MongoDB可能需要根据需要进行切分 另一种情况是只执行普通的find(),在光标上循环并执行

我正在NodeJS中创建一个restapi,它连接到MongoDB,并执行MapReduce,将结果存储在不同的集合中

代码非常简单。它获取一个用户ID,使用某种算法获取与该用户相关的所有其他用户,然后为每个用户计算相似度百分比。假设测试数据库中有50k个用户,这个MapReduce大约需要200-800ms。这对我来说很理想。如果这是著名的,有数百个像这样的并发请求,我敢肯定,情况将不再如此。我知道MongoDB可能需要根据需要进行切分


另一种情况是只执行普通的find(),在光标上循环并执行相同的逻辑。它所花费的时间与MapReduce提醒您的时间相同。然而,我只是想尝试将繁重的计算放在客户端(NodeJS),而不是像MapReduce那样放在服务器端。这个想法有价值吗?我认为,通过这种方式,我可以在负载平衡器或其他东西后面水平扩展API。

最好不要让处理每个请求的服务器负担过重,并将其放到数据库中

如果您有1000个请求,其中200个请求需要您执行计算,那么服务器可以正常处理800个请求,只要mongo使用mapReduce或aggregation进行计算

如果您改为在节点服务器上手动运行计算,则所有请求都将受到必须执行繁重工作的服务器的影响

Mongo当然在聚合方面也相当高效,我想mapReduce也是如此

我最近将大量的逻辑从我的服务器转移到mongoDB上,在那里我可以做到,这使我的服务器变得与众不同