1)全内存存储
内存存储索引和数据
2)内存+磁盘
内存存储索引等,磁盘存储数据文件
索引主要有hash和B+树等;
磁盘数据文件大多采用日志性数据文件;只在文件末尾追加而不修改文件,写入和更新是追加新记录,删除也是追加记录(记录的value为特殊的值);此外,还有定期merge数据文件的过程,以免数据文件过多过大(随机io转换为顺序io,加快读写效率)。
hbase中使用b+树索引数据(根据row key )所在的Region(一个表由多个Region组成,一个Region包括多个store,每个store存储一个列簇,每个Strore又由一个memStore和0至多个StoreFile组成)。
memstore中的数据是排序的,到达一定大小就冻结,生成storefile。
hbase用bloom filter算法检测某个值是否在一个文件中(读数据时,需要从一系列文件中和memfile中读取值)。