Hbase如何存储数据

1、HBase是一个针对结构化的可伸缩、高可靠的、面向列的开源数据库,HBase不同于传统的关系型数据库,采用了BigT的able数据模型,是一个适合于非结构化数据存储的数据库。HBase是Apache的Hadoop项目的子项目。HBase的数据模型:增强的稀疏排序表(Key/Value),键由行关键字、列关键字和时间戳构成。HBase提供了对大规模数据的随机、实时读写访问。HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美的结合在一起。

数据模型:Schema-->Table-->Column Family-->Rowkey-->TimeStamp-->Value


2、HBase表的特点

 HBase表很大:一个表可以有数十亿行,上百万列;

HBase表无模式:每行都有一个可排序的主键好任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有不同的列;

面向列:列独立检索;

稀疏:空列并不占用存储空间,表可以设计的非常稀疏;

数据类型单一:HBase中的数据都是字符串,没有类型


Hbase基本概念

RowKey:是Byte array,是表中每条记录的“主键”;

Column Family:列族,拥有一个名称(string),包含一个或者多个相关列

Column:属于某一个columnfamily,familyName:columnName,每条记录可动态添加

Version Number:类型为Long,默认值是系统时间戳,可由用户自定义

Value(cell):Byte array


物理存储:

1、Table中所有行都按照row key的字典排序;

2、Table在行的方向上分割多个Region;


HBase与HDFS对比

两者都具有较好的容错性和扩展性,都可以扩展到成百上千个点;

HDFS适合批处理场景

不适合增量数据处理

不支持数据更新


HBase的三维有序存储是指:rowkey(行主键),column key,timetamp(时间戳)三部分组成的三维有序存储。

rowkey:rowkey是行的主键,HBase只能用一个rowkey。rowkey的设计时至关重要的,关系到应用层的查询效率。rowkey是以字典顺序排序的。而存储的字节码,字典排序,若是字母,就是字母的顺序,比如,有两个rowkey,rowkey1:aaa222,rowkey2:bbb111,那么rowkey1是rowkey2前面的。

column key :column key 是第二维,数据按rowkey字典排序后,如果rowkey相同,则根据 column key来排序,也是按字典排序。

timestamp:timestamp是时间戳,是第三维,是按降序排序的,即最新的数据排在最前面。

你可能感兴趣的:(Hbase如何存储数据)