我有两个集合。一个集合是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”,它不应该影响我的网站的性能。
我所关心的就是性能/资源。我注意到当我在那里处理数据时,节点应用程序将使用大量的内存和CPU。我认为,因为它会保持我用猫鼬选择的整个系列。 MongoDB也会使用很多CPU,但我也不知道在MongoDB vs Node应用程序中处理它的优缺点 – kentor