【发布时间】:2015-01-04 17:47:36
【问题描述】:
所以我有一些 node.js 代码,其中有一个用于 mongodb 的 $in 和 $nin id。
“$nin”列表实际上比“$in”列表大。
在“我的实现”中,我通过将两个 ids 列表传递给 mongodb 以“简单的方式”做到了:
query = { _id: { $in: in_list, $nin: not_in_list } }
然后我的同事来了,从“$in”列表中删除了所有“$nin”的id,只查询了$in
in_list = _.difference in_list, not_in_list
query = { _id: { $in: in_list } }
我的假设是,mongodb 足够聪明,可以比 node.js 更有效地处理这个问题,但我实际上不知道这种差异是否真的可测量和/或显着。
有什么意见吗?
【问题讨论】:
-
为什么不测试这两种方法并比较性能?
-
我希望在基准测试方面有良好经验的人可以用一种很好的基准测试方法来启发我们。目前我只能像每个人一样运行 1000 倍并进行比较,但我怀疑这不是“正确的方式”!?
-
这基本上可以归结为哪个更适合为您处理数字。通过线路发送所有结果,以供查询优化器提取列表中的差异或在客户端中计算出差异。这可能与列表的大小有关。你如何将你的发现作为你的答案。其他人可能会发现它很有用。顺便说一句,您的评论回复来自可以说是这里经验最丰富的两个人。
-
我没有考虑网络延迟/成本(如此明显!!)该应用程序将运行多年,对于活跃用户来说,这个列表将变得相当大。我相信在“代码”上处理它们(与 mongo 相反)将是正确的,因为我们对这个集群进行了自动缩放,而 mongodb 只有少量固定的实例。
标签: node.js mongodb benchmarking