将MongoDB查询中的数据存储到对象中,并每20分钟更新一次

时间:2014-03-31 23:06:13

标签: javascript node.js mongodb performance nosql

如果这是一个新问题,请原谅我,因为我是一名试图学习全栈的前端开发人员。

我的节点应用程序每20分钟将记录插入一个MongoDB。

每次用户访问页面时查询数据库似乎都是不合逻辑的,因为数据库在20分钟的时间段内是相同的(直到我每20分钟插入一次新记录)。

我认为我可以将查询结果存储在对象或其他内容中,并且每20分钟更新一次此对象(每次插入新记录时,这是一个每20分钟运行一次的函数)。

我该怎么做呢?我需要这个全局变量吗?

这是一个好主意还是坏主意?为什么?

1 个答案:

答案 0 :(得分:1)

如果您的查询被编入索引和/或快速,那么点击数据库可能就好了。另一种选择是拥有一个缓存层。如果你在原始node.js中这样做,你会给自己带来很多复杂性(以及可能的性能问题),所以我要远离它。如果你在另一个服务(redis,memcached)中做到这一点,除非查询复杂或缓慢,否则你可能不会看到很多性能提升。如果查询很复杂,您可以每20分钟重新生成一次结果并将其保存在mongo中的某个地方,然后从中运行查询。例如:

setInterval(regen_stats, 20 * 60 * 1000)

最重要的是数据库是要查询的,所以你不必开始从它们那里拿走东西,直到它停止执行(通常是由于查询的规模或复杂性)