NoSQL:
什么是NoSQL?:
not only SQL —非关系型数据库
- 不遵循
传统RDBMS模型
的数据库 - 数据是
非关系的
,且不使用SQL作为主要查询语言 - 解决数据库的
可伸缩性
和可用性
问题–快速扩容
- 不针对
原子性
和一致性
问题–
NoSQL和关系型数据库对比:
对比 | NoSQL | 关系型数据库 |
---|---|---|
常用数据库 | HBase,MongoDB,Redis | Oracle,DB2,mysql |
存储格式 | 文档,键值对,图结构 | 表格式,行和列 |
存储规范 | 鼓励冗余 | 规范性,避免重复-三大范式 |
存储扩展 | 横向扩展,分布式 | 纵向扩展(横向扩展有限) |
查询 | 非结构性语言 | 结构化语言 |
事务 | 不支持事务一致性 | 支持事务 |
性能 | 读写性能高 | 读写性能差 |
成本 | 简单易部署,开源,成本低 | 成本高 |
NoSQL的特点:
- 最终一致性—异步性-只有在最后才知道
- 应用程序增加了维护一致性和处理事务等职责
- 冗余数据存储
NoSQL的相关概念:
-
三大基石
-
CAP&BASE&最终一致性
CAP
:一个分布式系统不能同时满足最终一致性
,可用性
和分区容错性
最终一致性 Consistency
:任何一个读操作总是读取到之前完成的写操作结果,不是强一致性,不能同时拿到。可用性 Availability
:一直可以正常的做读写操作。简单而言就是客户端一直可以正常访问并得到系统的正常响应。用户角度来看就是不会出现系统操作失败或者访问超时等问题。----只要收到用户的请求,服务器就必须给出回应。分区容错性 Partition tolerance
:分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务
HBase属于CP范畴,所以我们在工作中更关注保护他的高可用性
-
NoSQL分类:
分类 | 举例 | 典型应用场景 |
---|---|---|
键值存储数据库 (key-value) | Redis, MemcacheDB, Voldemort | 内容缓存等 |
列存储数据库 (WIDE COLUMN STORE) |
Cassandra, HBase | 应对分布式存储的海量数据 |
文档型数据库 (DOCUMENT STORE) | CouchDB, MongoDB | Web应用(可看做键值数据库的升级版) |
图数据库 (GRAPH DB) |
Neo4J, InfoGrid, Infinite Graph | 社交网络,推荐系统等,专注于构建关系图谱 |
NoSQL和BI大数据的关系:
- BI(Business Intelligence):商务智能
- 一套完整的解决方案
- BI应用涉及模型,模型依赖于模式
- BI主要支持标准SQL,对NoSQL支持弱于关系型数据库
- NoSQL和大数据相关性较高:
- 通常大数据场景采用列存储数据库
- Hbase和Hadoop
HBase:
Hbase特点:
- 数据访问速度快
- 支持随机读写
- 可扩展性
Hbase应用场景:
- 增量数据-时间序列数据
- 高容量-高速写入
- 信息交换-消息传递
- 高容量-高速读写
- 内容服务-web后端应用程序
- 高容量-高速读写
Hbase物理架构具体划分:
Hbase采用
Master/Slave架构
物理架构图:
一:HMaster的作用:
- 是HBase集群的主节点,可以配置多个,用来实现HA
- 管理和分配Region
- 负责RegionServer的负载均衡
- 发现失效的RegionServer并重新分配期上的Region
二:RegionServer的作用:
负责管理维护Region
- 一个RegionServer包含一个WAL,一个BlockCache和多个Region
- 一个Region包含多个存储区,每个存储区对应一个列族
三:HStore的作用:
- 一个存储区由多个
StoreFile
和MemFile
组成 - 一个
StoreFile对应一个列簇
HBase逻辑架构:
- Rowkey(行键)是唯一的并己排序
- schema可以定义何时插入记录
- 每个row都可以定义自己的列,即使其他的row不使用
- 使用唯一时间戳维护多个row版本
- hbase数据全部以字节存储
HBase数据管理:
-
数据管理目录:
-
HBase数据在HDFS上:
meta在hmaster上
root表在zookeeper上
HBase架构特点:
- 强一致性
- 自动切割
转载:https://blog.csdn.net/qq_35050438/article/details/106957634
查看评论