寫入流程:
1.首先寫入LOG文件。也就是WAL LOG。
2.寫畢再將數據更新至Memtable。
3.當Memtable size超過一定大小限制之後,會將Memtable整理成一個 Immutable Memtable,顧名思義便是不可變更的KV表。
4.把Immutable Memtalbe 寫入至磁碟,變為SST文件。寫畢後釋放LOG文件的空間。
5.當Level 0 SST文件太多的時候,Level 0會與 Level 1的文件進行合併,且保證有序性。
6.Level 1 SST文件過多時,也會進行相同工作。
讀取流程
1.先去Memtable中查找相關的Key值,如果存在,回傳相應Value。
2.如果不存在,此時就去Immutable Memtable查找。
3.如果都不存在,那就必須去SS Table查找了,那勢必會較多時間。
*從數據新舊程度來看,Level 0所儲存的文件是最新的,所以先從最新找起,依序往Level 1,2順序查找,找到就回傳,沒有找到就讀取失敗。
Manifest & Current
Manifest:簡而言之,就是屬於SST的Log,儲存SSTable的key範圍和其他重要的metadata。
Current:記載當前manifest的文件名。
文章參考:https://zhuanlan.zhihu.com/p/34665791
沒有留言:
張貼留言