Algorithm Mongo索引算法使用的是什么?二叉树?

Algorithm Mongo索引算法使用的是什么?二叉树?,algorithm,indexing,mongodb,Algorithm,Indexing,Mongodb,我想知道MongoDB使用的是哪种内部索引算法。因为我有一些数据要存储,每个文档(行)都有一个id,这可能是一个唯一的哈希值。(例如,由md5()或其他哈希算法生成)。因此,我想了解应该使用哪种散列方法来创建id,以便MongoDB能够快速索引它。:) 是的,mongoDB使用b-树: 索引是收集有关值的信息的数据结构 中指定字段的 收藏的文件。此数据 结构由Mongo的查询使用 优化器,用于快速排序和 在集合中对文档进行排序。 从形式上讲,这些指数是 实现为“B树”索引 我建议将mongodb

我想知道MongoDB使用的是哪种内部索引算法。因为我有一些数据要存储,每个文档(行)都有一个id,这可能是一个唯一的哈希值。(例如,由md5()或其他哈希算法生成)。因此,我想了解应该使用哪种散列方法来创建id,以便MongoDB能够快速索引它。:)

是的,mongoDB使用b-树:

索引是收集有关值的信息的数据结构 中指定字段的 收藏的文件。此数据 结构由Mongo的查询使用 优化器,用于快速排序和 在集合中对文档进行排序。 从形式上讲,这些指数是 实现为“B树”索引


我建议将mongodb用于collection _id,而根本不关心“如何创建_id?”。因为它可能是mongodb的任务,但不是开发人员的任务。我认为最好考虑模式、索引等。

对于Mongo 3.2+,默认的存储引擎是,B+树用于存储数据

WiredTiger使用称为B-树(具体为B+树)的数据结构在内存中维护表的数据,将B-树的节点称为页面。内部页面只携带键。叶页同时存储键和值

LSM树用于存储数据

WiredTiger支持日志结构的合并树,其中更新缓存在适合高速随机更新的小文件中,然后在后台自动合并为更大的文件,以便读取延迟接近传统的Btree文件。LSM树会自动创建Bloom过滤器,以避免对无法包含匹配键的文件进行不必要的读取

  • 如果您不需要极高的写吞吐量,那么btree可能是一个更好的选择。读取吞吐量更好,并且可以保持较高的写入量
  • 如果您的工作负载需要高写吞吐量,那么LSM是最佳选择

您检查过MongoDB源代码存储库了吗?若否,原因为何?如果是的话,你读的是什么具体的代码模块?B-树和二叉树是不同的。因为我需要一个不能使用Mongo内部索引的索引,所以我想知道Mongo是否能更好地使用以下索引:1)仅字符串,2)仅数字,3)固定#十六进制数字字符。(字符和数字的混合),4)或没有关系。@murvinlai:也许最好问问谷歌集团的mongodb开发者(因为我不知道mongodb在内部是如何工作的)@pingw33n:Ohh,好吧,我真的不知道。您可以更正我的答案或自己回答。您所说的
和LSM树用于存储数据是什么意思?其中只有一个会被使用,对吗?