【问题标题】:Mongodb Performance of getting a document in the case of non existing documentMongodb 在文档不存在的情况下获取文档的性能
【发布时间】: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


【解决方案1】:

查找不存在的文档是查找文档的最坏情况。与现实生活中一样,如果您要寻找的东西不存在,那么您将需要更多的时间来检查所有地方,而不是某个时间点存在的东西。

所有查找优化同样适用于查找最终不存在的文档(索引、分片键等)。

【讨论】:

    猜你喜欢
    • 2023-02-25
    • 1970-01-01
    • 2013-07-12
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 2019-12-13
    相关资源
    最近更新 更多