Big Table

Big Table

Big Table的读

(1)给定一个key,Big table 先从内存的memtable(本质上是skiplist)找对应value, 因为memtable的数据是最新的,如果memtable找不到,则会在硬盘里的每个Sstable内部,逐个二分查找(Sstable里的key是有序的)

Big Table的写

(1) 给定key-value pair,先在内存的memtable查看key是否存在,有的话直接overwrite

(2) 否则在硬盘里的Sstable逐个通过Sstable里面的Bloom Filter查询key是否在里面,如果在则通过索引快速寻找key,然后overwrite。如果所有Sstable都找不到的话,就在内存直接写到memtable里

(3) 每个写操作都是先写一次write ahead log, 这样如果突然断电,memtable的数据丢失时,可以通过log重写恢复

Write Ahead Log

Bloom Filter

Last updated