1. 程式人生 > >雜湊儲存、B樹儲存和LSM樹儲存引擎

雜湊儲存、B樹儲存和LSM樹儲存引擎

1、雜湊儲存引擎  是雜湊表的持久化實現,支援增、刪、改以及隨機讀取操作,但不支援順序掃描,對應的儲存系統為key-value儲存系統。對於key-value的插入以及查詢,雜湊表的複雜度都是O(1),明顯比樹的操作O(n)快,如果不需要有序的遍歷資料,雜湊表就是your Mr.Right

       雜湊儲存引擎雜湊表的持久化實現,支援增、刪、改以及隨機讀取操作,但不支援順序掃描,對應的儲存系統為key-value儲存系統。對於key-value的插入以及查詢,雜湊表的複雜度都是O(1),明顯比樹的操作O(n)快,如果不需要有序的遍歷資料,雜湊表就非常適合。代表性的資料庫有:Redis,Memcache,以及儲存系統Bitcask。 Bitcask是一個基於雜湊表結構的鍵值儲存系統,它僅支援追加操作(Append-only),所有的寫操作只追加不修改老的資料。每個檔案有一定的大小限制,當檔案增加到相應大小,就會產生一個新檔案,老的檔案只讀不寫。在任意時刻,只有一個檔案是可寫的,用於資料追加,稱為活躍檔案,而其他已經達到大小限制的檔案,稱為老資料檔案。

2、B樹儲存引擎是B樹的持久化實現,不僅支援單條記錄的增、刪、讀、改操作,還支援順序掃描(B+樹的葉子節點之間的指標),對應的儲存系統就是關係資料庫(Mysql等)。

     相比雜湊儲存引擎,B樹儲存引擎不僅支援隨機讀取,還支援範圍掃描。關係資料庫中通過索引訪問資料,在Mysql InnoDB中,有一個稱為聚集索引的特殊索引,行的資料存於其中,組織成B+樹(B樹的一種)資料結構。

3、LSM樹(Log-Structured Merge Tree)儲存引擎和B樹儲存引擎一樣,同樣支援增、刪、讀、改、順序掃描操作。而且通過批量儲存技術規避磁碟隨機寫入問題。當然凡事有利有弊,LSM樹和B+樹相比,LSM樹犧牲了部分讀效能,用來大幅提高寫效能。