1.NoSQL介绍
- NoSQL(not only sql),泛指非关系型的数据库;是为了解决关系型数据库在数据量过大时的性能下降而兴起
- NoSQL数据库一般都是分布式数据库
- NoSQL数据库一般都复合CAP定理:CAP定理指强一致性、高可用性、强分区容错性最多只能取其二,无法三者兼顾
1.1 特点:
1. 易扩展:去掉关系数据库的关系型特性,数据之间无关系,易扩展
2. 大数据量,高性能:NoSQL数据库具有非常高的读写性能
3. 灵活的数据模型:NoSQL无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式
4. 高可用
5.不支持SQL
1.2 适用场景
- 数据模型比较简单
- 需要灵活性更强的IT系统
- 对数据库性能要求较高
- 不需要高度的数据一致性
- 对于给定key,比较容易映射复杂值的环境
2.HBase 简介
2.1 HBase 定义
HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库
- Hbase面向列存储;
- HBase基于Hadoop和HDFS;
- 类似于Google的BigTable,提供对10亿级别表数据的快速随机实时读写;
- HBase是开源的,分布式的,基于版本号的分布式数据库;
2.2 HBase 特点
-
海量存储
HBase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据。这与HBase的极易扩展性息息相关。正是因为HBase良好的扩展性,才为海量数据的存储提供了便利 -
列式存储(列族存储)
这里的列式存储其实说的是列族存储,HBase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定 -
极易扩展
HBase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)
通过横向添加RegionSever的机器,进行水平扩展,提升HBase上层的处理能力,提升Hbsae服务更多Region的能力 -
高并发
在并发的情况下,HBase的单个IO延迟下降并不多。能获得高并发、低延迟的服务 -
稀疏(列的灵活性)
在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的
2.3 HBase 优点
- 基于HDFS实现数据的存储,因此具有高容错性,高扩展性和吞吐量
- HBase采用key/value的存储方式,即使数据海量增长也不会降低查询性能
- HBase是一个列式数据库,单张表字段很多时,可以将相同的列(以region为单位)存到不同的服务器上,分散负载压力
2.4 Hbase 缺点
-
架构设计复杂,且使用HDFS作为分布式存储,因此只是存储少量数据,它也不会很快。在大数据量时,它慢的不会很明显
-
Hbase不支持表的关联操作,因此数据分析是HBase的弱项。常见的 group by或order by只能通过编写MapReduce来实现
-
Hbase部分支持了ACID:
- 事务的原子性(Atomicity);
- 事务的一致性(Consistency)
- 事务的独立性(Isolation)
- 事务的持久性(Durability)
2.5 HBase 应用场景
适合场景:单表超千万,上亿,且高并发
不适合场景:主要需求是数据分析,比如做报表。数据量规模不大,对实时性要求高
2.6 随机读写
HDFS只支持追加写,不支持随机写
HBase基于HDFS,hbase的数据由hdfs进行读写,hbase支持随机写
随机写操作: update+delete:
- 可以借助 insert+时间戳(版本号)
- 只允许客户端返回时间戳最新(版本号最大)的数据
2.7 实时读写
如何做到海量数据的实时读写?
①分布式
②将数据不管是读还是写都放入内存
③索引,LSM树
④kv存储
⑤列式存储(HFile)
⑥布隆过滤器(查询)