分布式数据库

HBase,非关系型数据库,NoSQL
非关系型和关系型数据库最大的区别就是sql语句能不能用

关系型数据库的瓶颈:

当我们的数据达到几千万甚至几亿级别的时候,对于数据的单条查询的检索就会花费很多时间,查询的速度会受到以下两个因素影响:
  1. 高并发的更新、插入、修改……
  2. 多表关联后的复杂查询,性能实际上是下降的

CAP定理

C:一致性
A:高可用性
P:高容错性
HBase遵循的就是CA

HBase支持海量的数据的实时读写

  1. 分布式
  2. K键V值
  3. 列示储存
  4. 索引,lSM树
  5. 很吃内存
  6. 布隆过滤器(查询)
    总结:就是基于hadoop的数据库,提供了一个十亿级别的表存储,对表中的数据提供了随机读写操作

HBase的特点:

  1. 海量存储
    HBase适合存储PB以上的数据,能在几十到百毫秒之间返回数据
    1kb=1024b 1mb=1024kb 1gb=1024kb 1tb=1024gb 1pb=1024tb 1eb=1024pb
    1秒=1024毫秒
  2. 列式存储
    为了保证性能,基本上所有的大数据的数据库都是列式存储
    列式存储就是列族存储,HBase是根据列族来存储数据的,列族下面可能有非常多的列,列族在创建表的时候必须指定
  3. 极易扩展
    HBase在扩展体现在两个方面,第一个就是多添加(RegionServer),类似于HDFS中的NameNode
    第二个扩展是性能扩展,基于Region实现的扩展
  4. 高并发
  5. 稀疏
    主要是针对HBase列的灵活性,在列族中,可以指定任意多的列,在列数据为空值的情况下,是不会完全占用存储的(就是什么都不存)

HBase的优点:

  1. 基于HDFS的高容错率和高扩展性来实现HBase的数据存储的,所以说HBase天生具有超高的扩展性和吞吐量
  2. HBase采用的是key/value的存储方式(key会进行排序,适用于二分查找),这意味着,即使面对海量数据的增长,也不会导致查询结果下降
  3. HBase是一个列式数据库,相对于传统的数据库而言,当单张表的字段很多的时候,可以将相同的列表在不同的服务器实例上,分担负载压力1

HBase的缺点

  1. 架构设计很复杂,且使用hdfs来作为分布式存储,如果只是存储少量的数据,它不会很快的,在大数据量的时候,它慢的不会明显
  2. HBase不支持表的关联操作的,因此数据分析不是HBase的强项
  3. HBase部分支持了ACID(事务的可靠性)

事务的四大特性:原子性、一直性、隔离性、持久性

HBase适用的场景:

单表数据超千万,上亿的时候,并高并发

HBase不适用的场景:

主要需求是数据分析,比如做报表,数据量规模不大,对实时性要求高

HBase的数据模型:

Key/value形式存储数据,HBase更像是一个多维map(一个key可以存储多个v)来进行存储的

你可能感兴趣的:(数据库,分布式,hbase)