NoSQL综述及Apache HBase基础

7 篇文章 0 订阅

NoSQL综述

什么是NoSQL:
NoSQL:not only SQL,非关系型数据库
NoSQL是一个通用术语

指不遵循传统RDBMS模型的数据库
数据是非关系的,且不使用SQL作为主要查询语言
解决数据库的可伸缩性和可用性问题
不针对原子性或一致性问题

为什么我们要使用NoSQL:
互联网的发展,传统关系型数据库存在瓶颈
高并发读写
高存储量
高可用性
高扩展性
低成本

NoSQL和关系型数据库对比
在这里插入图片描述
NoSQL的特点
最终一致性
应用程序增加了维护一致性和处理事务等职责
冗余数据存储
NoSQL != 大数据

NoSQL产品是为了帮助解决大数据存储问题
大数据不仅仅包含数据存储的问题还有Hadoop、Kafka、Spark, etc

NoSQL基本概念
三大基石(CAP、BASE、 最终一致性)
CAP:
数据库最多支持3个中的2个
Consistency(一致性),Availability(可用性),Partition Tolerance(分区容错性)
NoSQL不保证“ACID”
提供“最终一致性”

在这里插入图片描述

BASE
Basically Availble(基本可用):保证核心可用
Soft-state(软状态):状态可以有一段时间不同步
Eventual Consistency(最终一致性):系统经过一定时间后,数据最终能够达到一致的状态
核心思想是即使无法做到强一致性,但应用可以选择适合的方式达到最终一致性

最终一致性
最终结果保持一致性,而不是时时一致
如账户余额,库存量等数据需强一致性
如catalog等信息不需要强一致性
Causal consistency(因果一致性)
Read-your-writes consistency
Session consistency

Indexing(索引)
大多数NoSQL是按key进行索引
部分NoSQL允许二级索引
HBase使用HDFS,append-only
批处理写入Logged
重新创建并排序文件

Query(查询)
没有专门的查询语言,通常使用脚本语言查询
有些开始支持SQL查询
有些可以使用MapReduce代码查询

*MapReduce
不是Hadoop的MapReduce,概念相关
可进行数据的处理查询

Sharding(分片)
一种分区模式
可以复制分片
有利于灾难恢复

Apache HBase 生态圈

HBase生态圈技术:
Lily – 基于HBase的CRM
OpenTSDB – HBase面向时间序列数据管理
Kylin – HBase上的OLAP
Phoenix – SQL操作HBase工具
Splice Machine – 基于HBase的OLTP
Apache Tephra – HBase事务支持
TiDB – 分布式SQL DB
Apache Omid - 优化事务管理
Yarn application timeline server v.2 迁移到HBase
Hive metadata存储可以迁移到HBase
Ambari Metrics Server将使用HBase做数据存储

HBase物理架构 - HMaster
HMaster的作用:
是HBase集群的主节点,可以配置多个,用来实现HA
管理和分配Region
负责RegionServer的负载均衡
发现失效的RegionServer并重新分配其上的Region

HBase物理架构 - RegionServer
RegionServer负责管理维护Region:
一个RegionServer包含一个WAL、一个BlockCache (读缓存)和多个Region
一个Region包含多个存储区,每个存储区对应一个列族
一个存储区由多个StoreFile和MemStore组成
一个StoreFile对应于一个HFile和一个列族
HFile和WAL作为序列文件保存在HDFS上
Client与RegionServer交互

HBase物理架构 - Region和Table
单个Table(表)被分区成大小大致相同的Region
Region是HBase集群分布数据的最小单位
Region被分配给集群中的RegionServer
一个Region只能分配给一个RegionServer

HBase逻辑架构 - Row
Rowkey(行键)是唯一的并已排序
Schema可以定义何时插入记录
每个Row都可以定义自己的列,即使其他Row不使用
相关列定义为列族
使用唯一时间戳维护多个Row版本
在不同版本中值类型可以不同
HBase数据全部以字节存储

HBase架构特点
强一致性
自动扩展
当Region变大会自动分割
使用HDFS扩展数据并管理空间
写恢复
使用WAL(Write Ahead Log)
与Hadoop集成

HBase shell常用命令
用户权限:
user_permission [‘表名’…]
grant ‘用户名’, ‘RWXCA’
表:
增:create ‘表名’,{NAME=>‘列簇名’},{NAME=>‘列簇名’}…
删:disable ‘表名’ + drop '表名’
改:snapshot ‘表名’,‘镜像名’
clone_snapshot ‘镜像名’,‘新表名’
delete_snapshot ‘镜像名’
查:list
行:put的时候:put ‘表名’,‘行键’,‘列簇名:列名’,‘值’[,‘时间戳’]
可以单独删除行,行內数据全部删除
列簇:
增:alter ‘表名’,NAME=>‘列簇名’
删:alter ‘表名’,NAME=>‘列簇名’,METHOD=>‘delete’
改:先加后删
查:get ‘表名’,‘行键(row)’,‘列簇名’
列:cell 值+时间戳

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值