HBase,非关系型数据库,NoSQL
非关系型和关系型数据库最大的区别就是sql语句能不能用
关系型数据库的瓶颈:
当我们的数据达到几千万甚至几亿级别的时候,对于数据的单条查询的检索就会花费很多时间,查询的速度会受到以下两个因素影响:
- 高并发的更新、插入、修改……
- 多表关联后的复杂查询,性能实际上是下降的
CAP定理
C:一致性
A:高可用性
P:高容错性
HBase遵循的就是CA
HBase支持海量的数据的实时读写
- 分布式
- K键V值
- 列示储存
- 索引,lSM树
- 很吃内存
- 布隆过滤器(查询)
总结:就是基于hadoop的数据库,提供了一个十亿级别的表存储,对表中的数据提供了随机读写操作
HBase的特点:
- 海量存储
HBase适合存储PB以上的数据,能在几十到百毫秒之间返回数据
1kb=1024b 1mb=1024kb 1gb=1024kb 1tb=1024gb 1pb=1024tb 1eb=1024pb
1秒=1024毫秒 - 列式存储
为了保证性能,基本上所有的大数据的数据库都是列式存储
列式存储就是列族存储,HBase是根据列族来存储数据的,列族下面可能有非常多的列,列族在创建表的时候必须指定 - 极易扩展
HBase在扩展体现在两个方面,第一个就是多添加(RegionServer),类似于HDFS中的NameNode
第二个扩展是性能扩展,基于Region实现的扩展 - 高并发
- 稀疏
主要是针对HBase列的灵活性,在列族中,可以指定任意多的列,在列数据为空值的情况下,是不会完全占用存储的(就是什么都不存)
HBase的优点:
- 基于HDFS的高容错率和高扩展性来实现HBase的数据存储的,所以说HBase天生具有超高的扩展性和吞吐量
- HBase采用的是key/value的存储方式(key会进行排序,适用于二分查找),这意味着,即使面对海量数据的增长,也不会导致查询结果下降
- HBase是一个列式数据库,相对于传统的数据库而言,当单张表的字段很多的时候,可以将相同的列表在不同的服务器实例上,分担负载压力1
HBase的缺点
- 架构设计很复杂,且使用hdfs来作为分布式存储,如果只是存储少量的数据,它不会很快的,在大数据量的时候,它慢的不会明显
- HBase不支持表的关联操作的,因此数据分析不是HBase的强项
- HBase部分支持了ACID(事务的可靠性)
事务的四大特性:原子性、一直性、隔离性、持久性
HBase适用的场景:
单表数据超千万,上亿的时候,并高并发
HBase不适用的场景:
主要需求是数据分析,比如做报表,数据量规模不大,对实时性要求高
HBase的数据模型:
Key/value形式存储数据,HBase更像是一个多维map(一个key可以存储多个v)来进行存储的