如何最有效地search数据? (RAM或MongoDB中的对象)

在nodeJS服务器的内存中加载了40mb文本的静态集合的情况下,

每当你的web客户端要求search(1000个元素来查看),哪个方法是最优的?

  • 查询mongoDB数据库
  • 对已经在RAM中的集合执行一个.find(),这个集合将parsing1000个元素,在那个元素中寻找多个不同的string

在开始实现一个复杂的.find()函数之前,我正在寻找性能最高的方法。

正如@Storm所提到的,

在您的nodeJS服务器的内存中加载了40mb文本的静态集合的情况下

所以我想在加载后数据不会被改变。

在我们select任何技术解决scheme之前,我build议您使用常见的MongoDB设置进行性能负载testing。 根据以下条件(您没有提到):

  1. 客户要求的数量(例如1K / s,10K / s …)
  2. 目标响应时间(例如全部小于10ms的95%)
  3. 你将执行哪些查询?

由于40mb 1000个文档不是一个大的数据,MongoDB更喜欢把热门的数据放入内存来加速查询。 如果常见的MongoDB设置不能满足您的性能目标,则可以考虑:

1.改善基础设施软件

  • 尝试使用MongoDB 内存引擎 (由于数据不会被修改)
  • 尝试其他基于内存的数据库,如Redis(如果你不需要非常复杂的查询)

2.提高您使用的代码质量

  • 在MongoDB中构build高效的索引
  • 任何更好的数据模型devise?