HBASE表介绍
Hbase表
- 表(Table): 表名是映射成hdfs上面的文件,所以要合法名字。
- 行(Row): 每一行都是以一个行键(Row Key)来进行唯一标识的,以二进制的字节来存储。
- 列族(Column Family): 列族一旦确定后,就不能轻易修改,因为它会影响到HBase真实的物理存储结构,但是列族中的列标识(Column Qualifier)以及其对应的值可以动态增删。表中的每一行都有相同的列族,但是不需要每一行的列族里都有一致的列标识(Column Qualifier)和值,所以说是一种稀疏的表结构,这样可以一定程度上避免数据的冗余。
- 单元(Cell): 每一个 行键,列族和列标识共同组成一个单元,以二进制字节来存储。
- 时间戳(Timestamp): 默认下每一个单元中的数据插入时都会用时间戳来进行版本标识。每一个列族的单元数据的版本数量都被HBase单独维护,默认情况下HBase保留3个版本数据。
也可以把HBase看成一个多维度的Map模型去理解它的数据模型。
又有的时候,也可以把HBase看成是一个类似Redis那样的Key-Value数据库。这也是HBase的API内部实际的工作原理。
HBase提供了丰富的API接口让用户去操作这些数据。主要的API接口有3个,Put,Get,Scan。
Put和Get是操作指定行的数据的,所以需要提供行键来进行操作。
Scan是操作一定范围内的数据,通过指定开始行键和结束行键来获取范围,如果没有指定开始行键和结束行键,则默认获取所有行数据。