hbase 理解
1.简介:
HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群
2.HBase和RDBMS的关系
RDBMS(Relation DabaBase Management System-关系数据库):由关系模型构成的数据库就是关系数据库。关系数 据库由包含数据记录的多个数据表组成,用户可在有相关数据的多个表之间建立相互联系。在关系数据库中,数据被分散到不同的数据表中,以便使每一个表中的数据只记录一次,从而避免数据的重复输入,减少冗余。
1)关系数据库的主要特点:
a.关系系中的每个属性必须是不可分割的数据单元(即表中不能再包含表)。
b.关系中的每一列元素必须是类型相同的数据。
c.同一个关系中不能有相同的字段(属性),也不能有相同的记录。
d.关系的行、列次序可以任意交换,不影响其信息内容。
2)Hbase里面有以下2个主要概念:
Rowkey: Hbase 中的记录是按照rowkey来排序的;因此想用hbase存储数据设计好row-key很重要
Column family:(列族)是在系统启动之前预先定义好的;可有多个列簇,可动态增加,一个列簇可包含多个列
Hbase优缺点:
1.不支持条件查询以及orderby等查询;
2.列可以动态增加,列为空则不存储数据,节省存储空间;
3.会自动切分数据;
4.可以提供高并发读写操作的支持;
3.HBase 表解析
row-key:hbase是基于列的存储模式,所谓的基于列(HBase)就是基于row-key的存储模式,row-key 相当于关系数据库表的主键
查询的时候根据row-key去查询
列簇:hbase表中的每一列都归属为一个列簇,列簇是表的schema的一部分(列不是),必须在使用表之前定义,列名都是以列簇为前缀
如:Column family:test1(test1为列)
Column family:test2
如上:test1,test2 都是列簇 Column family 的列
*访问控制、磁盘和内存的使用统计都是在列族层面进行的。
时间戳:HBase中通过row和columns确定的为一个存贮单元称为cell。
每个 cell都保存着同一份数据的多个版本。版本通过时间戳来索引。
时间戳的类型是 64位整型。时间戳可以由hbase(在数据写入时自动 )赋值,
此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。
如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。
每个 cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。
当你插入一个数值的时候,如果不手工写时间戳,系统会自动生成一个。当你在hbase shell下scan某个具体表的时候,可以看到一大堆的时间戳
4.Hbase的优缺点
a.列的可以动态增加,并且列为空就不存储数据,节省存储空间.
b.Hbase自动切分数据,使得数据存储自动具有水平scalability.
c.Hbase可以提供高并发读写操作的支持
d.不能支持条件查询,只支持按照Row key来查询
e.暂时不能支持Master server的故障切换,当Master宕机后,整个存储系统就会挂掉.