2017-09-18 56 views
0

我有两个集合。一个集合是band_profiles约15,000个文档和一个player_profiles集合约500,000个配置文件。一个球员可以在一个乐队中,一个乐队可以容纳多达100名球员。这些信息纯粹是信息性的,我没有设计我的数据库关系。 BandProfile文件包含必要的PlayerProfile信息。长时间运行的查询与节点应用程序中的处理

所有信息来自第三方API,因此PlayerProfile可以比BandProfile更新,反之亦然。为了找到未知的乐队,我扫描了所有的PlayerProfiles并检查未知的乐队ID。

我的问题:

两个集合是非常大的,我能够找到与汇总查询这需要未知数ID〜40-120s与当前数据集运行。我很担心,因为我的MongoDB的CPU使用率很高,我考虑尝试选项。

我想我可以在我的Express应用程序中处理数据。我在这两个集合上使用find()来获取整个集合数据。之后,我使用Express处理数据,并发现RAM上升了4GB和CPU 30%(本地主机上有1个调试实例)。

因此,我想知道:什么是处理这种大型数据集的最佳方法?使用长时间运行的MongoDB查询是好的,还是应该在Express中处理我的数据?由于这是一个“BackgroundTask”,它不应该影响我的网站的性能。

回答

0

取决于您关心这些大型数据集的新鲜程度。


1.少的最新数据接近

您可以复制的设定的MongoDB和处理长期聚集查询存在。


2. Freshier数据的方法(变化取决于CPU的功率/代码效率)

可以获取数据与非聚合查询集和做那些计算中的Node.js,JavaScript的。

+0

我所关心的就是性能/资源。我注意到当我在那里处理数据时,节点应用程序将使用大量的内存和CPU。我认为,因为它会保持我用猫鼬选择的整个系列。 MongoDB也会使用很多CPU,但我也不知道在MongoDB vs Node应用程序中处理它的优缺点 – kentor

相关问题