思考:固态硬盘的普及,是否影响到了存储引擎的设计?
思考 1:固態硬盤的普及,是否影響到了存儲引擎的設計?
Reference: Let’s Talk About Storage & Recovery Methods for Non-Volatile Memory Database Systems
DBMSs have always dealt with the trade-off between volatile and non-volatile storage devices. In order to retain data after a loss of power, the DBMS must write that data to a non-volatile device, such as a SSD or HDD. Such devices only support slow, bulk data transfers as blocks. Contrast this with volatile DRAM, where a DBMS can quickly read and write a single byte from these devices, but all data is lost once power is lost.
在設計數據庫系統的時候,通常要在“易失性存儲”和“非易失性存儲”之間做權衡。為了在掉電之后仍然能夠保存數據,人們將內存數據寫入持久化存儲中,然后用 Write-ahead log 來保持內存和磁盤刷寫一致。在早期,持久化存儲通常是一些 HDD 設備,相比 DRAM,它們讀寫緩慢,且數據傳輸粒度通常比較大。
為了平衡內存和磁盤的讀寫速度差異,人們做出了很多努力。比如在磁盤上維護有序結構時采用 B-tree (將樹的高度降下來,減少磁盤 I/O 次數。3~4 層的 B-tree 已經可以適合大多數數據庫,degree 為 500 的 4 KB 頁的四級樹可以存儲高達 256 TB)。比如在寫磁盤時,為了減少直接的原地更新(In-place Updates)帶來的效率問題,采用一些“懶”方案(例如 Copy-on-Write Updates,Log-structured Updates)。另外,在 SSD 上,固件內部使用 Log-structured 算法將“隨機寫入”轉換為底層存儲芯片上的“順序寫入”,也是為了加快寫磁盤的速度。
近年來,固態硬盤的普及,一定程度上減少了內存與磁盤之間的讀寫速度差異,它是否會對原有的存儲引擎的設計產生影響?
以及,未來如果非易失性存儲普及,又會對存儲引擎的設計產生哪些影響?
思考 2:B+ tree 的選型原因
Reference: Skip Lists: A Probabilistic Alternative to Balanced Trees
完整說一下吧,無論 B/B+,RB,AVL,還是 skiplist,在最開始都實際上面臨同一個問題,在數據有序的情況下,都會成為一個鏈表。最后導致查詢復雜度 O(N), B/B+/RB/AVL 的采用的策略是 self adjust ,就是所謂的 rebalance。跳表的策略是做 randomize,他假定了一個概率 P,有一個“退化”描述,即,當 P =1/2 時,有百分之50%的數據在第一層,百分之25的數據在第二層,百分之12.5的數據在第三層 etc. 通過這樣讓數據分層明顯,避免全局退化。所以在這種情況下 skiplist 在期望復雜度上做到了查詢 O(logn)(實際上這也是一個統計上的期望計算)。skiplist 的優勢也很明顯,實現簡單,性能不錯,但是缺陷也很明顯,在內存的情況下,由于其是個 randomize 的數據結構,導致其 CPU cache的利用率并不是很明顯,所以可能要考慮這塊的場合還是需要去用 RB 這種數據結構。在磁盤 I/O 的情況下,由于其 randomize 的特性,導致你沒法去做 Sequential reading ,而 randomize reading 對于磁盤來說一直是個大問題。在這個問題上 RB 這種數據結構實際上面臨的問題也是一樣的,所以 B/B+ 樹用適當的數據聚合的方式,將樹的高度降下來,方面我們做 page read,避免 randomize reading
穩定這話實際上也沒說錯,,因為 skiplist 畢竟是個 randomize 的數據結構,他復雜度取還是概率上的描述23333(并不保障嚴格的平衡性 lol
總結
以上是生活随笔為你收集整理的思考:固态硬盘的普及,是否影响到了存储引擎的设计?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从另一个角度理解分布式系统与CAP定理
- 下一篇: leetcode 787. Cheape