面向列的分部署存储技术,适用于大数据量(亿行,百万列)的存储。基于HDFS。
zookeeper,元信息,三级定位,结合使用,使高效查询成为可能。区别于数据库索引的B+树数据结构,hbase具有处理更大数据量的能力,相当于三层索引结构,不管面对多大是数据量都是足够的。
zookeeper找到hbase:meta,meta上记录这每个库的位置,以及start rowkey,end rowkey。
三级定位 --> rowKey,版本号(timestamp),列族+列
hbase使用字节按位比较的方式排序,使rowKey的查询遍历变的高效
从数据结构分析,要想充分发挥hbase的效率,rowKey的设计就显的非常重要。避免热点问题,使数据均匀分布,充分利用分布式的计算、存储能力。
由于hbase数据冗余的特性,所以列族,列名尽量短减少存储空间的占用。列族也尽量少,1~2个。因为每个列族在hdfs上按文件存储,当多个列族,查询整行数据就要涉及不同文件连接查询,这样将降低他的速度。
hbase对于动态列的存储支持很好,这是他NoSql的特性,也就是key-value结构,可以简单理解为每个列族内每行就是一个Map。他的插入/获取命令-put/get,和Map也十分相似