Algorithm Mongo索引算法使用的是什么?二叉树?
我想知道MongoDB使用的是哪种内部索引算法。因为我有一些数据要存储,每个文档(行)都有一个id,这可能是一个唯一的哈希值。(例如,由md5()或其他哈希算法生成)。因此,我想了解应该使用哪种散列方法来创建id,以便MongoDB能够快速索引它。:) 是的,mongoDB使用b-树: 索引是收集有关值的信息的数据结构 中指定字段的 收藏的文件。此数据 结构由Mongo的查询使用 优化器,用于快速排序和 在集合中对文档进行排序。 从形式上讲,这些指数是 实现为“B树”索引Algorithm Mongo索引算法使用的是什么?二叉树?,algorithm,indexing,mongodb,Algorithm,Indexing,Mongodb,我想知道MongoDB使用的是哪种内部索引算法。因为我有一些数据要存储,每个文档(行)都有一个id,这可能是一个唯一的哈希值。(例如,由md5()或其他哈希算法生成)。因此,我想了解应该使用哪种散列方法来创建id,以便MongoDB能够快速索引它。:) 是的,mongoDB使用b-树: 索引是收集有关值的信息的数据结构 中指定字段的 收藏的文件。此数据 结构由Mongo的查询使用 优化器,用于快速排序和 在集合中对文档进行排序。 从形式上讲,这些指数是 实现为“B树”索引 我建议将mongodb
我建议将mongodb用于collection _id,而根本不关心“如何创建_id?”。因为它可能是mongodb的任务,但不是开发人员的任务。我认为最好考虑模式、索引等。对于Mongo 3.2+,默认的存储引擎是,B+树用于存储数据 WiredTiger使用称为B-树(具体为B+树)的数据结构在内存中维护表的数据,将B-树的节点称为页面。内部页面只携带键。叶页同时存储键和值 LSM树用于存储数据 WiredTiger支持日志结构的合并树,其中更新缓存在适合高速随机更新的小文件中,然后在后台自动合并为更大的文件,以便读取延迟接近传统的Btree文件。LSM树会自动创建Bloom过滤器,以避免对无法包含匹配键的文件进行不必要的读取
- 如果您不需要极高的写吞吐量,那么btree可能是一个更好的选择。读取吞吐量更好,并且可以保持较高的写入量
- 如果您的工作负载需要高写吞吐量,那么LSM是最佳选择
和LSM树用于存储数据是什么意思?其中只有一个会被使用,对吗?