国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

數據存儲檢索之B+樹和LSM-Tree

存儲 存儲軟件
作為一名應用系統開發人員,為什么要關注數據內部的存儲和檢索呢?首先,你不太可能從頭開始實現一套自己的存儲引擎,往往需要從眾多現有的存儲引擎中選擇一個適合自己應用的存儲引擎。

 作為一名應用系統開發人員,為什么要關注數據內部的存儲和檢索呢?首先,你不太可能從頭開始實現一套自己的存儲引擎,往往需要從眾多現有的存儲引擎中選擇一個適合自己應用的存儲引擎。因此,為了針對你特定的工作負載而對數據庫調優時,最好對存儲引擎的底層機制有一個大概的了解。

[[283718]]

今天我們就先來了解下關系型數據庫MySQL和NoSQL存儲引擎HBase的底層存儲機制。對于一個數據庫的性能來說,其數據的組織方式至關重要。眾所周知,數據庫的數據大多存儲在磁盤上,而磁盤的訪問相對內存的訪問來說是一項很耗時的操作,對比如下。因此,提高數據庫數據的查找速度的關鍵點之一便是盡量減少磁盤的訪問次數。

 

數據存儲檢索之B+樹和LSM-Tree

 

磁盤與內存的訪問速度對比

為了加速數據庫數據的訪問,大多傳統的關系型數據庫都會使用特殊的數據結構來幫助查找數據,這種數據結構叫作索引( Index)。對于傳統的關系型數據庫,考慮到經常需要范圍查找某一批數據,因此其索引一般不使用 Hash算法,而使用樹( Tree)結構。然而,樹結構的種類很多,卻不一定都適合用于做數據庫索引。

二叉查找樹與平衡二叉樹

最常見的樹結構是二叉查找樹( Binary Search Tree),它就是一棵二叉有序樹:保證左子樹上所有節點的值都小于根節點的值,而右子樹上所有節點的值都大于根節點的值。其優點在于實現簡單,并且樹在平衡的狀態下查找效率能達到 O(log n);缺點是在極端非平衡情況下查找效率會退化到 O(n),因此很難保證索引的效率。

 

數據存儲檢索之B+樹和LSM-Tree

 

二叉查找樹的查找效率

針對上述二叉查找樹的缺點,人們很自然就想到是否能用平衡二叉樹( Balanced Binary Tree)來解決這個問題。但是平衡二叉樹依然有個比較大的問題:它的樹高為 log n——對于索引樹來說,樹的高度越高,意味著查找所要花費的訪問次數越多,查詢效率越低。

況且,主存從磁盤讀數據一般以頁為單位,因此每次訪問磁盤都會讀取多個扇區的數據(比如 4KB大小的數據),遠大于單個二叉樹節點的值(字節級別),這也是造成二叉樹相對索引樹效率低下的原因。正因如此,人們就想到了通過增加每個樹節點的度來提高訪問效率,而 B+樹(B+-tree)便受到了更多的關注。

B+樹

在傳統的關系型數據庫里, B+樹( B+-tree)及其衍生樹是被用得比較多的索引樹。

 

數據存儲檢索之B+樹和LSM-Tree

 

B+樹

B+樹的主要特點如下。每個樹節點只存放鍵值,不存放數值,而由葉子節點存放數值。這樣會使樹節點的度比較大,而樹的高度就比較低,從而有利于提高查詢效率。葉子節點存放數值,并按照值大小順序排序,且帶指向相鄰節點的指針,以便高效地進行區間數據查詢;并且所有葉子節點與根節點的距離相同,因此任何查詢的效率都很相似。與二叉樹不同, B+樹的數據更新操作不從根節點開始,而從葉子節點開始,并且在更新過程中樹能以比較小的代價實現自平衡。

正是由于 B+樹的上述優點,它成了傳統關系型數據庫的寵兒。當然,它也并非無懈可擊,它的主要缺點在于隨著數據插入的不斷發生,葉子節點會慢慢分裂——這可能會導致邏輯上原本連續的數據實際上存放在不同的物理磁盤塊位置上,在做范圍查詢的時候會導致較高的磁盤 IO,以致嚴重影響到性能。

日志結構合并樹

眾所周知,數據庫的數據大多存儲在磁盤上,而無論是傳統的機械硬盤( HardDiskDrive, HDD)還是固態硬盤( Solid State Drive, SSD),對磁盤數據的順序讀寫速度都遠高于隨機讀寫。

 

數據存儲檢索之B+樹和LSM-Tree

 

磁盤順序與隨機訪問吞吐對比

然而,基于 B+樹的索引結構是違背上述磁盤基本特點的——它會需要較多的磁盤隨機讀寫,于是, 1992年,名為日志結構( Log-Structured)的新型索引結構方法便應運而生。日志結構方法的主要思想是將磁盤看作一個大的日志,每次都將新的數據及其索引結構添加到日志的最末端,以實現對磁盤的順序操作,從而提高索引性能。不過,日志結構方法也有明顯的缺點,隨機讀取數據時效率很低。

1996年,一篇名為 Thelog-structured merge-tree(LSM-tree)的論文創造性地提出了日志結構合并樹( Log-Structured Merge-Tree)的概念,該方法既吸收了日志結構方法的優點,又通過將數據文件預排序克服了日志結構方法隨機讀性能較差的問題。盡管當時 LSM-tree新穎且優勢鮮明,但它真正聲名鵲起卻是在 10年之后的 2006年,那年谷歌的一篇使用了 LSM-tree技術的論文 Bigtable: A Distributed Storage System for Structured Data橫空出世,在分布式數據處理領域掀起了一陣旋風,隨后兩個聲名赫赫的大數據開源組件( 2007年的 HBase與 2008年的 Cassandra,目前兩者同為 Apache頂級項目)直接在其思想基礎上破繭而出,徹底改變了大數據基礎組件的格局,同時也極大地推廣了 LSM-tree技術。

LSM-tree最大的特點是同時使用了兩部分類樹的數據結構來存儲數據,并同時提供查詢。其中一部分數據結構( C0樹)存在于內存緩存(通常叫作 memtable)中,負責接受新的數據插入更新以及讀請求,并直接在內存中對數據進行排序;另一部分數據結構( C1樹)存在于硬盤上 (這部分通常叫作 sstable),它們是由存在于內存緩存中的 C0樹沖寫到磁盤而成的,主要負責提供讀操作,特點是有序且不可被更改。

 

數據存儲檢索之B+樹和LSM-Tree

 

LSM-tree的 C0與 C1部分

LSM-tree的另一大特點是除了使用兩部分類樹的數據結構外,還會使用日志文件(通常叫作 commit log)來為數據恢復做保障。這三類數據結構的協作順序一般是:所有的新插入與更新操作都首先被記錄到 commit log中——該操作叫作 WAL(Write Ahead Log),然后再寫到 memtable,最后當達到一定條件時數據會從 memtable沖寫到 sstable,并拋棄相關的 log數據; memtable與 sstable可同時供查詢;當 memtable出問題時,可從 commit log與 sstable中將 memtable的數據恢復。

我們可以參考 HBase的架構來體會其架構中基于 LSM-tree的部分特點。按照 WAL的原則,數據首先會寫到 HBase的 HLog(相當于 commit log)里,然后再寫到 MemStore(相當于 memtable)里,最后會沖寫到磁盤 StoreFile(相當于 sstable)中。這樣 HBase的 HRegionServer就通過 LSM-tree實現了數據文件的生成。HBase LSM-tree架構示意圖如下圖。

 

數據存儲檢索之B+樹和LSM-Tree

 

HBase LSM-tree架構示意圖

LSM-tree的這種結構非常有利于數據的快速寫入(理論上可以接近磁盤順序寫速度),但是不利于讀——因為理論上讀的時候可能需要同時從 memtable和所有硬盤上的 sstable中查詢數據,這樣顯然會對性能造成較大的影響。為了解決這個問題, LSM-tree采取了以下主要的相關措施。

定期將硬盤上小的 sstable合并(通常叫作 Merge或 Compaction操作)成大的 sstable,以減少 sstable的數量。而且,平時的數據更新刪除操作并不會更新原有的數據文件,只會將更新刪除操作加到當前的數據文件末端,只有在 sstable合并的時候才會真正將重復的操作或更新去重、合并。

對每個 sstable使用布隆過濾器( Bloom Filter),以加速對數據在該 sstable的存在性進行判定,從而減少數據的總查詢時間。

總結

LSM樹和B+樹的差異主要在于讀性能和寫性能進行權衡,在犧牲的同時尋找其余補救方案。

B+樹存儲引擎,不僅支持單條記錄的增、刪、讀、改操作,還支持順序掃描(B+樹的葉子節點之間的指針),對應的存儲系統就是關系數據庫。但隨著寫入操作增多,為了維護B+樹結構,節點分裂,讀磁盤的隨機讀寫概率會變大,性能會逐漸減弱。LSM樹(Log-Structured MergeTree)存儲引擎和B+樹存儲引擎一樣,同樣支持增、刪、讀、改、順序掃描操作。而且通過批量存儲技術規避磁盤隨機寫入問題。當然凡事有利有弊,LSM樹和B+樹相比,LSM樹犧牲了部分讀性能,用來大幅提高寫性能。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2022-10-29 08:44:39

分布式數據庫存儲

2023-09-27 09:39:08

Java優化

2019-08-29 10:46:22

MySQL索引數據庫

2020-04-01 18:08:57

MySQL B-樹B+樹

2019-03-14 09:51:50

MySQL存儲邏輯架構

2025-03-04 00:20:45

2021-11-12 05:00:00

數據庫索引技術

2021-04-19 10:03:33

MongoDbB 樹 B+ 樹

2025-12-16 09:52:51

2023-07-31 09:12:39

B+樹節點B+Tree

2019-01-29 19:43:10

MySQL索引數據庫

2021-02-16 16:38:41

MySQLB+樹索引

2023-10-10 11:02:00

LSM Tree數據庫

2019-09-24 09:33:53

MySQLB+樹InnoDB

2019-09-19 14:03:32

B樹節點數據結構

2024-07-16 08:31:41

2023-08-29 08:31:13

B+樹數據索引

2024-11-19 08:40:18

2025-01-17 08:17:55

2021-12-14 17:19:15

存儲數據
點贊
收藏

51CTO技術棧公眾號

国产精品网站在线看| 99re热这里只有精品视频| 亚洲欧洲偷拍精品| 国产福利小视频在线观看| 综合网在线视频| 日本一区二区黄色| 九一久久久久久| 色婷婷精品国产一区二区三区| 精品成人在线| 国产区一区二区三区| 欧美精品99| 91久久在线视频| 久久综合影院| 国产ts人妖一区二区三区| 精品丝袜久久| 69av在线播放| 欧美精品momsxxx| 欧美中文在线观看国产| 日本中文字幕在线一区| 国外成人在线直播| 久久大胆人体视频| 日本免费久久高清视频| 亚洲亚洲免费| 国产欧美日韩专区发布| 久久影视一区| 国产欧美一区二区视频| 日韩午夜精品| 伊人久久大香线蕉av一区| 国产一区二区久久| 国产a级片网站| 国产丝袜美腿一区二区三区| 国产美女av| 欧美午夜www高清视频| 91在线网址| 欧美精品一区二区三| av在线播放一区| 欧美精品videos性欧美| jiujiure精品视频播放| 国产精品久久久久久久免费大片| 美女网站久久| 麻豆tv在线播放| 一区二区三区小说| 亚洲欧美视频一区二区| 亚洲第一福利网站| 欧美影视资讯| 亚州av一区二区| 国产在线成人| 老司机激情视频| 最新国产成人在线观看| 国产玉足榨精视频在线观看| 日韩精品福利网站| 欧美大片91| 91久久极品少妇xxxxⅹ软件| 久久av老司机精品网站导航| 天天爽天天爽夜夜爽| 日韩欧美在线看| 日韩在线免费| 国产免费一区视频观看免费| 青娱乐精品视频| 福利在线一区二区三区| 欧美日韩亚洲国产综合| 香蕉久久一区| 99se婷婷在线视频观看| 国产sm精品调教视频网站| 国产三级香港三韩国三级| 51久久夜色精品国产麻豆| 欧美日韩视频免费看| 成人写真视频福利网| 国产一本一道久久香蕉| 老司机午夜激情| 亚洲国产日韩一区| 九九综合在线| 中文视频一区视频二区视频三区| 国产精品麻豆久久久| av网址在线| 国产精品91久久久久久| 激情久久久久久久久久久久久久久久| 激情丁香婷婷| 亚洲精品ady| 99re6这里只有精品| 欧日韩免费视频| 欧美日韩黄色影视| 天海翼精品一区二区三区| 在线观看污视频| 精品婷婷伊人一区三区三| 成人午夜大片| 欧美黄色免费网址| 在线不卡免费欧美| 国产一区网站| 免费裸体美女网站| 日韩福利视频在线观看| 欧美视频不卡| 黄网站免费观看| 久久精品国产欧美激情| 毛片一区二区| 欧美日本网站| 欧美性在线视频| kk眼镜猥琐国模调教系列一区二区| 国产网站在线播放| 日韩av免费在线观看| 国产成人av一区| www视频在线看| 91亚洲永久免费精品| 中文字幕亚洲成人| 日韩成人一区| 亚洲制服欧美久久| 欧美精品乱码久久久久久 | 久久精品国产一区二区三区日韩| 国产精品麻豆视频| 国产精品高潮久久| 日本黄色a视频| 日韩欧美另类在线| 亚洲午夜极品| 亚洲热app| 国产精品亚洲片夜色在线| 国产精品天美传媒沈樵| 欧美97人人模人人爽人人喊视频| 亚洲一区二区在线看| 91麻豆精品国产自产在线| 黄色日韩精品| 粉嫩av在线播放| 97人人香蕉| 一本大道久久a久久综合婷婷| 日本三级久久| 国产美女av| 日本乱人伦a精品| 亚洲视频在线一区观看| 国产精品99久久免费观看| 免费男同深夜夜行网站 | 国产精品狠色婷| 亚洲日本丝袜连裤袜办公室| 日本一区二区在线不卡| 老司机免费在线视频| 久久综合伊人77777蜜臀| 中文一区一区三区高中清不卡| 欧美精品一区二区三区精品| 成人黄色在线免费| 91黑丝在线观看| 午夜激情久久| 91在线直播| 亚洲已满18点击进入在线看片| 免费成人在线观看| 国产二级片在线观看| 欧美精品免费播放| 亚洲每日在线| 久久99精品久久久久久青青日本 | 国产欧美一区二区在线| 免费黄网站欧美| 一区二区国产精品| 免费在线看v| 国产精品久久久久7777婷婷| 在线国产亚洲欧美| 亚洲婷婷在线视频| 国产精品五区| 高清av不卡| 青青青国产在线视频| 中文字幕亚洲欧美日韩2019| 国产在线一区二区| 久久精品亚洲人成影院| 国产日韩欧美精品| 欧美日本一道本在线视频| 久久一本综合频道| 超碰aⅴ人人做人人爽欧美| 成人在线观看你懂的| 国产91精品黑色丝袜高跟鞋| 日韩欧美福利视频| 久久一区欧美| 成人国产网站| 日本一区二区三区电影| 97人摸人人澡人人人超一碰| 精品三级av在线| 91色视频在线| 99视频精品全国免费| 日本不卡影院| 成年人免费大片| 国产精品1234| 日韩三区在线观看| 欧美激情资源网| 91久久在线| 国产精品99精品一区二区三区∴| 韩国97影院| 色一情一乱一伦一区二区三欧美 | 成人免费乱码大片a毛片软件| 91在线播放视频| 亚洲视频自拍偷拍| 亚洲大片在线观看| 国产精品伊人色| 91嫩草亚洲精品| 日韩性xxx| 欧洲亚洲在线| 成年人免费在线播放| 国产在线观看一区| 欧美激情免费观看| 欧美一区午夜视频在线观看| 久久久久久久综合日本| 国产精品久久久免费| 少妇久久久久| 日韩大尺度黄色| 日韩子在线观看| 国产真实伦在线观看|