亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

樹結構中MongoDb使用的到底是 B 樹還是B+樹

發布時間:2021-09-29 09:10:32 來源:億速云 閱讀:113 作者:柒染 欄目:數據庫

這篇文章給大家介紹樹結構中MongoDb使用的到底是 B 樹還是B+樹,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

關于 B 樹與 B+ 樹,網上有一個比較經典的問題:為什么 MongoDb 使用 B 樹,而 MySQL 索引使用 B+ 樹?

但實際上 MongoDb 真的用的是 B 樹嗎?

通過查閱資料,我從 MongoDb 的官網和 WiredTiger 官網找到了答案。MongoDb 官網關于存儲引擎(Storage  Engine)的描述寫道:從 MongoDb 3.2 版本開始,其使用了 WiredTiger 作為其默認的存儲引擎。

樹結構中MongoDb使用的到底是 B 樹還是B+樹

文檔地址:WiredTiger Storage Engine — MongoDB Manual

而從 WiredTiger 官網文檔,我們可以知道:WiredTiger 使用的是 B+ 樹作為其存儲結構。

樹結構中MongoDb使用的到底是 B 樹還是B+樹

文檔地址:WiredTiger: Tuning page size and compression

那為什么會出現很多資料說 MongoDb 使用 B 樹作為存儲的數據結構呢?我想可能有兩個原因:一個原因可能是 B+ Tree 本身是 B  樹的一種優化,所以很多人就直接把 B+ 樹說成 B 樹了。另一個原因可能是 MongoDb 3.2 之前,確實使用 B 樹作為存儲的數據結構。

對于這兩個原因,我沒有深入去探尋,有答案的朋友可以留言討論一下。但我知道,無論是什么原因,都不影響我們對這個問題的討論。表面上,我們是在討論  MongoDb 與 MySQL 存儲的數據結構,但實際上我們是在討論 B 樹和 B+ 樹這兩種數據結構的特點。

因此,無論 MongoDb 使用的是 B 樹,還是 B+ 樹。只要我們弄清楚 B 樹與 B+  樹之間的區別,我們就可以在合適的時候,選擇合適的數據結構。

B 樹與 B+ 樹,其比較大的特點是:B 樹對于特定記錄的查詢,其時間復雜度更低。而 B+ 樹對于范圍查詢則更加方便,另外 B+ 樹相對于 B  樹來說更加扁平。

對于 MongoDb 來說,其是非關系型數據庫,較少做聯表的范圍查詢。如果這確實是 MongoDb 非常典型的使用場景,使用 B  樹其實可以加快其查詢速度。

但實際上 MongoDb 3.2 之后,其使用了 B+ 樹作為其數據結構。B+ 樹其在范圍查詢方面更有優勢,那有可能是 B+  樹更加扁平,可以讓其更加快速地找到數據,加快其查找速度。也有可能是 MongoDb 的范圍查詢特性使用更加廣泛了。

說到這里,你可能有點迷糊,那實際情況到底是什么呢?

其實我自己并沒有找到答案。我的思考也是到此為止,我也并沒有找到更好的答案。與其腹死胎中,還不如寫下來與大家討論。或許不久之后我就忽然大悟,明白這其中的道理,到時候再來給大家分享。

寫到這里,腦袋里蹦出另外一個問題:那為啥 MongoDb 要使用 B+ 樹 ?而不使用平衡二叉樹?嗯,答案其實很簡單——是因為需要使用 B  樹能加載大數據量的特性,否則其實現不了這么大量數據的查詢和排序。

關于樹結構中MongoDb使用的到底是 B 樹還是B+樹就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴山县| 保亭| 日照市| 车致| 克什克腾旗| 临城县| 霍城县| 石门县| 浏阳市| 武山县| 潼关县| 平山县| 富锦市| 潜江市| 弥渡县| 元氏县| 敦煌市| 温宿县| 新竹市| 集贤县| 通道| 昔阳县| 元朗区| 马关县| 通河县| 昌黎县| 天津市| 铁岭县| 浙江省| 桃园市| 虎林市| 静宁县| 土默特右旗| 塔城市| 海林市| 清水县| 沂源县| 萨迦县| 七台河市| 宁明县| 玛沁县|