【发布时间】:2016-12-28 09:28:19
【问题描述】:
我的网站(使用 MEAN.JS)有 1 个登录页面,还有多个统计页面(基于 db 数据构建的报告页面)。
有 1 份繁重的报告会从数据库中提取约 100MB,并且需要约 10 秒才能完成。问题是在运行此报告时,大多数其他网页都无法在浏览器上加载,因为它们也对 MongoDB 进行查询。例如,即使登录页面的UI已经显示,用户也无法在登录页面上登录。
MongoDB 是否能够并行执行多个查询或仅执行一个查询队列?
MongoDB 服务器版本为 v3.2.3。该报告使用 2 个集合:用户、跟踪位置。我正在构建一个月的报告:
30 days * 100 users * 10000 gps locations/day/user
= 30 million locations
user: {
username: (string),
organization: (objectid)
}
trackinglocation: {
username: (string),
date: (date),
locations: [
{
speed: (number),
long: (number),
lat: (number)
}
]
}
我首先查询以查找管理员组织中的那些用户。然后查询以报告该组织中用户在某个日期范围内的旅行距离。
不仅是登录页面,很多其他页面在生成报表的那10秒内都没有响应浏览器(UI部分仍然由ExpressJS响应,但里面的数据表没有机会)。
【问题讨论】:
-
你使用什么 mongo 版本?查询是否对报告和用户登录使用相同的集合?您使用什么类型的繁重查询?您还使用什么存储引擎?所有这些都很重要。
-
mongodb server v3.2.3,报告使用2个集合:users,trackinglocations;可能这会干扰许多其他查询。我在问题中添加了更多信息
标签: node.js mongodb performance nosql