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