问题一:mongo索引的数据结构为B-树,但是B-树各个节点节点之间是无指针相连的,那么当进行范围查询或遍历时,是如何在B-树上完成的?
问题二:B-树的数据遍布在每个节点上,那么mongo非_id索引节点上的数据是存的_id吗?通过非_id索引查询数据时,也是先找到对应的_id列表,然后再去_id索引中查找完整的数据吗?
问题三:mongo作为文档型数据库,我们在使用mongo作为数据库时,会推荐把相关的实体以嵌套文档的形式作为一条数据存储,而不是像关系型数据库中那样分多张表存储,那么单条数据过大会影响整张表的性能吗?如果会,那单条数据的大小一般建议是多大呢?
查找资料很久没查到,希望大佬解决小弟心中疑惑,感激不尽
haysBoo 已回答的问题
问题一:MongoDB 索引的数据结构是 B+树,B+树的叶子节点是通过链表串联的,可以实现范围查询
问题二:B+树的节点存的是只是索引,并没有存具体的数据
问题三:MongoDB中每条数据叫 文档(Document),单个文档有最大 16MB 的大小限制
Weidong 发表新评论
我是在唐建法(TJ)老师的极客时间 MongoDB 课程上看到老师说 MongoDB 索引用的是B+树,我查了官网,官网确实也说是B-Tree,我在GitHub上追问老师了,这是issue地址: https://github.com/tapdata/geektime-mongodb-course/issues/3 ,等TJ老师解答一下吧。
是在新版本中索引的数据结构变成B+树了吗?看网上的资料都说MongoDB 索引的数据结构是 B-树