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