HBASE数据库介绍:
hbase是bigtable的开源java版本,是建立在hdfs之上,提供高可靠性,高性能,列存储,可伸缩,实时读写nosql的分布式数据库系统,它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)
主要用来存储结构化和半结构化的松散数据
HBASE查询数据功能很简单,不支持join等复杂操作,不支持复杂的事务(行级的事务)
hbase中支持的数据类型: byte[]
与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力
思想:hbase软件如果只有一个,那么所有的数据操纵都要经过它,那么查询速度会很慢。我们说hbase是分布式的数据库并不是说他的文件存储在hdfs上就是分布式的,而是这个软件本身就是分布式的。那就意味着这个软件就可以在很多台机器上运行。这个时候就会有一个问题。如果客户端发出一条语句。那么哪个软件帮我们查询?
首先理清以下思路:我们要查询数据的话肯定要查询一个表。那我们能不能这样呢?一个hbase负责不同的表,我们查询不同的表就去找不同的服务器。但是这样也不好。
hbase的设计思想就是:这个表可以很大,可能我整个系统一张表就够了。所有的数据都在一张表中,可能有几十亿行,几百万列。数据量可能达到几十个T,那这样就意味着,有很多个查询的时候依然会很慢。
这个时候,我们就需要将表拆开。若干行作为一个片,那么这张表就可以分成很多子范围。就像下面这样: