Node.js&;MongoDB |通过存储本地JSON文件减少对DB的调用
我正在开发一个应用程序,向用户显示其所选位置内的某些可用服务,包括该服务的价格。我将Node.js&;MongoDB |通过存储本地JSON文件减少对DB的调用,node.js,mongodb,Node.js,Mongodb,我正在开发一个应用程序,向用户显示其所选位置内的某些可用服务,包括该服务的价格。我将服务存储在一个集合中,并将这些服务的价格存储在各自的另一个集合中(价格)。有些服务具有相同的定价,因此通常存在一对多关系 问题是,在我用来确定最佳可用服务的“算法”中,有很多值是我通过轮询Mongo并获得正确的值(包括服务价格)来确定的 我最初将每个服务的定价结构嵌入到服务模型中,但这是一个问题,因为我必须定期扫描服务集合,以更新此定价的变化/波动性。我最终将一个DB引用从服务嵌入到价格 我的问题 我如何才能在减
服务
存储在一个集合中,并将这些服务的价格存储在各自的另一个集合中(价格
)。有些服务具有相同的定价,因此通常存在一对多关系
问题是,在我用来确定最佳可用服务的“算法”中,有很多值是我通过轮询Mongo并获得正确的值(包括服务价格)来确定的
我最初将每个服务的定价结构嵌入到服务
模型中,但这是一个问题,因为我必须定期扫描服务
集合,以更新此定价的变化/波动性。我最终将一个DB引用从服务
嵌入到价格
我的问题
我如何才能在减少Mongo通话次数的同时,最好地实现我目前正在做的事情
目前,我对Mongo的点击率为每个用户搜索50-400次(特别是定价),这与其他查询相结合时会稍微降低速度,而且效率极低。
我正在考虑一些选择:
global
命名空间中的一个对象),通过\u id
缓存所有定价信息。每次我需要查找服务的定价
,我都会查看该存储桶,如果定价已经缓存在该存储桶中,我会进行计算并返回价格,否则我会从Mongo获取文档并将其添加到该存储桶中以供当前和将来使用require()
ing读取带有节点的JSON文件。这是目前我的首选选项,因为我可以使用fs
API来处理JSON文件的定期更新n
次(n
是某个时间点服务上的用户数)
考虑到以上3个选项,哪一个有很好的工作机会?有些选项可能是不可能的,所以我可以把它们从我的列表中划掉,可能还有一些我还没有考虑过
最后,我的免责声明:
我知道在SQL中使用JOIN语句可以很容易地实现这一点,不,我不是在用锤子做需要螺丝刀的事情。虽然对于我项目的某些部分SQL看起来是一个明显的胜利,但对于我存储的大部分数据,Mongo更好。再加上以体验的名义重新发明轮子会有所帮助
多亏了让mongodb将数据存储在内存中而不是硬盘上是一个很好的考虑因素。这是可能的,因为mongodb是IO不可知论者。看看这篇文章:我已经看过这篇文章了,我不想让自己的事情复杂化,至少现在是这样。我已经实施了第三种方案,并将在几周内投入生产。之后我会决定哪一个更好。我会考虑将所有东西都存储在内存中,我认为Mongo已经做到了。一个很好的考虑是使用像redis这样的缓存。“他们都踢得很好。”普拉迪普·马德武肯定会调查此事,但他没有想到这一点。我会在这几周内尝试一下,然后回来用我的结果更新这个问题