【发布时间】:2021-03-24 13:10:22
【问题描述】:
我们在 mongodb 中存储了大量数据,比如说 30M 文档。而且这些文件不会经常被修改。有大量读取查询(~15k qps)。由于我们用例的性质,其中许多查询(按 _id 字段)将导致空搜索结果。
我想了解 mongodb 是否进行了某种优化来检测 db、index 中是否有文档。是否有任何插件可以启用此功能?我看到的其他选择是使用应用程序级别的布隆过滤器,但这将是另一个需要维护的部分。 AFAIK HBASE 支持布隆过滤器以查看文档是否存在。
【问题讨论】:
-
默认情况下,
_id字段为每个 mongo 集合建立索引,如果您的查询确实使用它,那么这意味着 Mongo 将扫描索引,这是 mongo 的 B-tree - 这意味着它是 O( logb N) 复杂度,这几乎是搜索的下限。显然,这是在始终使用索引并且索引 btree 是平衡的假设下的。
标签: mongodb bloom-filter probabilistic-ds