NoSQL综述及HBase基础
NoSQL
什么是NoSQL
- NoSQL:not only SQL,非关系型数据库
- NoSQL是一个通用术语
- 指不遵循传统RDBMS模型的数据库
- 数据是非关系的,且不使用SQL作为主要查询语言
- 解决数据库的可伸缩性和可用性问题
- 不针对原子性或一致性问题
为什么使用NoSQL
- 互联网的发展,传统关系型数据库出现瓶颈
- 高并发读写
- 高存储量
- 高可用性
- 高扩展性
- 低成本
NoSQL与关系型数据库对比
- 主要区别如下
NoSQL的特点
- 最终一致性
- 应用程序增加了维护一致性和处理事务等职责
- 冗余数据存储
- NoSQL != 大数据
- NoSQL产品是为了帮助解决大数据存储问题
- 大数据不仅仅包含数据存储的问题
NoSQL三大基石
-
1、CAP
- 数据库最多支持3个中的2个
- Consistency(一致性)
- Availability(可用性)
- Partition Tolerance(分区容错性)
- NoSQL不保证“ACID”(事务四特性)
- 提供“最终一致性”
- 数据库最多支持3个中的2个
-
2、BASE
- Basically Availble(基本可用)
- 保证核心可用
- Soft-state(软状态)
- 状态可以有一段时间不同步
- Eventual Consistency(最终一致性)
- 系统经过一定时间后,数据最终能够达到一致的状态
- Basically Availble(基本可用)
-
核心思想是即使无法做到强一致性,但应用可以选择适合的方式达到最终一致性
-
3、最终一致性
- 最终结果保持一致性,而不是时时一致
- 如账户余额,库存量等数据需强一致性
- 如catalog等信息不需要强一致性
- Causal consistency(因果一致性)
- Read-your-writes consistency(读写一致性)
- Session consistency(会话一致性)
索引和查询
- Indexing(索引)
- 大多数NoSQL是按key进行索引
- 部分NoSQL允许二级索引
- HBase使用HDFS,append-only
- 批处理写入Logged
- 重新创建并排序文件
- Query(查询)
- 没有专门的查询语言,通常使用脚本语言查询
- 有些开始支持SQL查询
- 有些可以使用MapReduce代码查询
NoSQL分类
- 主要有以下四种:
- 各种的区别:
- 键值存储数据库(Key-Value)
- 列存储数据库(Wide Column Store)
- 文档型数据库(Document Store)
- 图数据库(Graph Databases)
- 键值存储数据库(Key-Value)
HBase
概述
- HBase是一个领先的NoSQL数据库
- 是一个面向列存储的数据库
- 是一个分布式hash map
- 基于Google Big Table论文
- 使用HDFS作为存储并利用其可靠性
- HBase特点
- 数据访问速度快
- 支持随机读写
- 可扩展性
HBase发展历史
HBase应用场景
- 增量数据-时间序列数据
- 高容量,高速写入
- 高容量,高速写入
- 信息交换-消息传递
- 高容量,高速读写
- 高容量,高速读写
- 内容服务-Web后端应用程序
- 高容量,高速读写
- 高容量,高速读写
HBase物理架构
- HBase采用Master/Slave架构
- HMaster
- HMaster的作用
- 是HBase集群的主节点,可以配置多个,用来实现HA
- 管理和分配Region
- 负责RegionServer的负载均衡
- 发现失效的RegionServer并重新分配其上的Region
- HMaster的作用
- RegionServer
- RegionServer负责管理维护Region
- RegionServer负责管理维护Region
- Region和Table
- HMaster
HBase逻辑架构
- Row
- Rowkey(行键)是唯一的并已排序
- Schema可以定义何时插入记录
- 每个Row都可以定义自己的列,即使其他Row不使用
- 相关列定义为列族
- 使用唯一时间戳维护多个Row版本
- 在不同版本中值类型可以不同
- HBase数据全部以字节存储
HBase数据管理
- 数据管理目录
- 系统目录表hbase:meta
- 存储元数据等
- HDFS目录中的文件
- Servers上的region实例
- 系统目录表hbase:meta
- HBase数据在HDFS上
- 可以通过HDFS进行修复File
- 修复路径
- RegionServer->Table->Region->RowKey->列族
- RegionServer->Table->Region->RowKey->列族
HBase架构特点
- 强一致性
- 自动扩展
- 当Region变大会自动分割
- 使用HDFS扩展数据并管理空间
- 写恢复
- 使用WAL(Write Ahead Log)
- 与Hadoop集成
HBase Shell
-
HBase Shell是一种操作HBase的交互模式
- 支持完整的HBase命令集
- 支持完整的HBase命令集
-
通过hbase shell进入
-
基本操作
-
将文档数据导入HBase