B+樹的應用場景:主要用在傳統的行數據庫中,因為查詢速度快。但是如有有大量的數據需要查詢時就暴露出其弊端。
LSM樹的應用場景:Hbase就是使用了LSM樹。
主要的實現方式:寫數據時,第一步,寫到預寫日志中,目的是防止數據在寫入時丟失;
第二步,將數據放入到內存中。
第三步,當內存的大小超過指定值,會把內存中的數據寫入到磁盤上。
需要注意一個關鍵點:磁盤的數據是有序的,這是利用預寫日志和內存把隨機寫數據進行排序后寫入,因此也能保證穩定的數據插入速率。
LSM的優點:能快速進行數據的合並和拆分。
知道hbase的存儲形式,接下來講下hbase為什么能快速的讀寫刪除。
讀功能:
讀取內容的順序是先到內存中去尋找,再到磁盤中查找。我們都清楚的一點是,磁盤的查詢速度是非常慢的。
問題來了,為什么kafka和hbase的速度非常快的。
這個需要認識到磁盤的一些小知識。我們在查找數據時,首先是去磁盤尋道。這個才是最耗時的。
所以,使用Hbase的范圍查詢,假如有五個存儲文件,最多也就進行五次的磁盤尋道。所以讀功能的性能瓶頸也就得到了提升。
刪除功能:
刪除數據不是進行實質上的刪除,也就是磁盤上仍然存在此條數據。只不過是對刪除的數據打上了墓碑標記。利用墓碑標記,讀數據會忽略此條數據。
當進行小文件合並時,才會進行實質上刪除。