B 樹與 樹區別

2021-10-11 23:58:58 字數 1544 閱讀 7906

很明顯,我們要想弄清楚原因就要知道b樹和b+樹的區別。為了不長篇大論。我們直接給出他們的形式總結他們的特點。

1、b樹

b樹是一種自平衡的搜尋樹,形式很簡單:

這就是一顆b樹。針對我們這個問題的最核心的特點如下:

(1)多路,非二叉樹

(2)每個節點既儲存索引,又儲存資料

(3)搜尋時相當於二分查詢

在這裡我們假定都已經了解了b樹相關的結構。

2、b+樹

b+樹是b-樹的變種

最核心的特點如下:

(1)多路非二叉

(2)只有葉子節點儲存資料

(3)搜尋時相當於二分查詢

(4)增加了相鄰接點的指向指標。

從上面我們可以看出最核心的區別主要有倆,乙個是資料的儲存位置,乙個是相鄰節點的指向。就是這倆造成了mongodb和mysql的差別。為什麼呢?

3、b樹和b+樹的區別

(1)b+樹查詢時間複雜度固定是logn,b樹查詢複雜度最好是 o(1)。

(2)b+樹相鄰接點的指標可以大大增加區間訪問性,可使用在範圍查詢等,而b-樹每個節點 key 和 data 在一起,則無法區間查詢。

(3)b+樹更適合外部儲存,也就是磁碟儲存。由於內節點無 data 域,每個節點能索引的範圍更大更精確

(4)注意這個區別相當重要,是基於(1)(2)(3)的,b樹每個節點即儲存資料又儲存索引,所以磁碟io的次數很少,b+樹只有葉子節點儲存,磁碟io多,但是區間訪問比較好。

有了他們的區別之後,現在我們再來解釋這個原因就好多了。

想要解釋原因,我們還必須要了解一下mongodb和mysql的基本概念。

1、mongodb

mongodb 是文件型的資料庫,是一種 nosql,它使用類 json 格式儲存資料。比如之前我們的表可能有使用者表、訂單表、購物籃表等等,還要建立他們之間的外來鍵關聯關係。但是類json就不一樣了。

我們可以看到這種形式更簡單,通俗易懂。那為什麼 mongodb 使用b-樹呢?

mongodb使用b樹,所有節點都有data域,只要找到指定索引就可以進行訪問,無疑單次查詢平均快於mysql

2、mysql

mysql作為乙個關係型資料庫,資料的關聯性是非常強的,區間訪問是常見的一種情況,b+樹由於資料全部儲存在葉子節點,並且通過指標串在一起,這樣就很容易的進行區間遍歷甚至全部遍歷。

這倆區別的核心如果你能看懂b-樹和b+樹的區別就很容易理解。

B樹與B 樹區別

b樹是一種平衡多路查詢樹,它的每乙個節點最多包含k個孩子,k被稱作為b樹的階,k的大小取決於磁碟頁的大小。一棵m階b樹 balanced tree of order m 是一棵平衡的m路搜尋樹。它或者是空樹,或者是滿足下列性質的樹 根結點至少有兩個子女 每個中間節點都包含k 1個元素和k個孩子,其中...

B樹與B 樹的區別

就是b 樹,不讀b減樹,那讀槓,網上有很多把它們混淆了 定義 是一棵平衡的m路平衡搜尋樹 其結構如下 關鍵字存在於整棵樹,每個結點中關鍵字從小到大排列,當前節點關鍵字數量為n,則子節點個數為n 1,查詢時若能在當前節點找到對應關鍵字,則返回,否則到其範圍對應的子節點進行遞迴查詢。資料層 可如下表示 ...

B樹與B 樹的區別

看了很多講b樹和 b 樹的文章,大多都是圍繞各自的特性講的,第一,樹中每個結點最多含有m個孩子 m 2 第二,我也是從這些文章裡弄懂了各種樹的聯絡與區別,要真寫,我可能還不如人家寫得好。所以就在這裡簡明扼要的用幾張圖記錄一下主要區別吧。為了便於說明,我們先定義一條資料記錄為乙個二元組 key,dat...