bitcask是一個key-value存儲系統,其特點是使用內存儲存索引數據,使用硬盤儲存實際數據。
1.所有的key數據放在內存中,通過hashmap組織,便于快速查找,內存中同時存放了key所對應數據在磁盤上的文件指針,直接定位數據。
2.磁盤數據使用追加寫的方式,充分利用磁盤適合順序存取的特點,每次數據更新會寫入磁盤文件,同時更新索引。
3.讀數據時根據索引直接定位,利用文件系統的cache機制,bitcask不再單獨實現cache機制。
4.由于更新會寫入新位置,老位置的數據會定期清理合并,減少占用的磁盤空間。
5.讀寫的并發控制使用向量時鐘(vector clock)。
6.內存中的索引數據也會刷新到單獨的索引文件,這樣重啟時不需要重建全部索引。
http://highscalability.com/blog/2011/1/10/riaks-bitcask-a-log-structured-hash-table-for-fast-keyvalue.html