【发布时间】:2019-07-10 07:54:28
【问题描述】:
我有 40 个缺少如下图所示的 IP 范围,需要查找具有该 IP 范围的 IP 详细信息。
如何在 5ms 时间内高效完成。需要使用哪个数据库来存储数据和查询?
尝试了以下方法。
-
我已经尝试过以下解决方案,但它对内存中的数组会很有效,我需要在 40 行中找到缺失的行,所以它不会很有效。
还尝试使用 MongoDB,在 mongo 集合中存储了所有 40 个缺少的行,使用了
$gte和$lte查询。但是本地 mongo 服务器的响应时间超过 150 毫秒。对我来说,响应时间应该小于 5ms。
【问题讨论】:
-
IP 字段是否已编入索引? gte,lte应该比较快?在光标上使用 explain() 来查看 mongo 决定做什么。
-
是的,IP 字段已编入索引。我添加了更多字段 start 和 end 来收集,这两个字段是上图 from 和 to from 的副本。但是
start和end保存IP 字符串from和to转换后的整数,按照上述第1 点解决方案。并使用这些 start 和 end 两个使用 $lte 和 $gte 进行查询。
标签: node.js database mongodb aerospike flash-memory