好的,所以我在运行 mongo 服务的同一桌面系统上有一个在 Node.js 上运行的应用程序。我有一个特定的查询需要大约 20 秒才能完成,整个系统与手机应用程序交互,所以 20 秒有点太慢了。我一直在阅读使用 mongodb 的数据库集群,岩石聚类和带有开放 mpi 的 arch linux在我开始任何尝试之前,是否有人能告诉我,这些解决方案中的哪一个实际上会减少我作为服务运行的 Node.js 应用程序和 mongodb 搜索的计算时间?是否有组合会对两者产生影响?我是否需要实施多个解决方案?如果我要购买硬件作为节点,在任何解决方案中,我可以在以下单元上这样做吗?这并且仍然看到性能提升?这些客户端/节点需要多强大/昂贵才能真正看到性能提升?或者我需要获得9ish 虚拟专用服务器? 任何指示都将不胜感激,谢谢。
好的,让我更详细地介绍一下它的作用。我有一个概念证明,我正准备将其投入生产,现在它在我的桌面上,我知道它不能一直留在那里,所以我想看看有什么解决方案,这是我第一次这样做。
简而言之,这是一种索引服务,可根据用户的选择返回数据。相关数据由一个集合保存,系统首先运行该集合,收集一个字段,并将这些内容作为一系列选项呈现给用户。用户可以选择其中的一些或不选择。然后,系统会遍历同一个集合,看看这些选择中是否有符合用户所寻找的内容(如果他们没有选择任何东西,它会抓取所有内容),如果符合,它会选择另一组值呈现给用户。系统以这种方式继续,直到它有足够的数据向用户呈现他们所寻找的最终数据。运行集合的第三个标准大约需要 30 秒才能完成,但这是因为迄今为止有 1807 个唯一标准,并且有 779 个集合成员正在被评估。这个巨大的 1807 次上拉和返回触发了这篇文章,让我假设我无法继续使用我当前的设备/设置进行测试,我需要考虑转向生产环境。
我认为 mongodb 的哈希/分片/集群设置可能适合我,但我不知道,因为我从未这样做过。我只是想看看这个网站上是否有人将服务从开发带到了生产,并愿意分享他们在硬件方面做了什么。
答案1
集群是一种选择(open-mpi 更适合在处理器级别传递消息)。但是,在此之前,您需要确定瓶颈在哪里。正在运行哪种查询?您可以在生产系统中运行一些基准测试或测试吗?您可以设置测试系统来调整数据库设置吗?您是否受到硬件能力的限制?也许您需要更多内存、SSD?同样,所有这些都取决于查询。还请查看 Mongo 服务的一般性能建议。