Node.js MongoDB+;NodeJS:MapReduce或手动计算
我正在NodeJS中创建一个restapi,它连接到MongoDB,并执行MapReduce,将结果存储在不同的集合中 代码非常简单。它获取一个用户ID,使用某种算法获取与该用户相关的所有其他用户,然后为每个用户计算相似度百分比。假设测试数据库中有50k个用户,这个MapReduce大约需要200-800ms。这对我来说很理想。如果这是著名的,有数百个像这样的并发请求,我敢肯定,情况将不再如此。我知道MongoDB可能需要根据需要进行切分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(),在光标上循环并执行
另一种情况是只执行普通的find(),在光标上循环并执行相同的逻辑。它所花费的时间与MapReduce提醒您的时间相同。然而,我只是想尝试将繁重的计算放在客户端(NodeJS),而不是像MapReduce那样放在服务器端。这个想法有价值吗?我认为,通过这种方式,我可以在负载平衡器或其他东西后面水平扩展API。最好不要让处理每个请求的服务器负担过重,并将其放到数据库中 如果您有1000个请求,其中200个请求需要您执行计算,那么服务器可以正常处理800个请求,只要mongo使用mapReduce或aggregation进行计算 如果您改为在节点服务器上手动运行计算,则所有请求都将受到必须执行繁重工作的服务器的影响 Mongo当然在聚合方面也相当高效,我想mapReduce也是如此 我最近将大量的逻辑从我的服务器转移到mongoDB上,在那里我可以做到,这使我的服务器变得与众不同