在使用Hbase之前,我们来简单的介绍一下HBase;
Hbase是一种分布式的列式的存储系统,和传统的RDBMS不一样;
Hbase是一种面向列的数据库;
那么什么是面向列?
坐标系大家都知道吧?(不知道请自行百度.哈哈哈哈)几个坐标放在一起可以指定到一个准确的位置;
Hbase中的数据需要通过行键(Rowkey以下称作rk),列族(ColumnFamily以下称作cf),列(Column以下称作 c),以及版本号(TimeStamp 默认为时间戳),来确定的;
下面是笔者总结的HBase和RDBMS的区别
| 比较 | RDBMS | Hbase |
|---|---|---|
| 数据构成 | 行式 | 面向列族 |
| 数据类型 | 多种类型 | String |
| 事务 | 多行 | 单行 |
| 查询语言 | SQL | API |
| 安全性 | 授权&验证 | 高版本中也有 |
| 索引 | 指定列 | 基于Row_Key |
| 存储量 | TBs | ~1PB(只要HDFS足够) |
| 读写速度(s) | 千次 | 百万次 |
注:
如果想使用SQL在Hbase中查询可以使用Phoenix框架
或者使用Hive与Hbase集成,则可以使用一些Hive的手段去查询
比如现在有两个人将其记录到HBase中
| RowKey | name | age | tel | address |
|---|---|---|---|---|
| xx1 | zhangsan | 25 | 186xxx | beijing |
| xx2 | lisi | 16 | 147xxx | shanghai |
那么name为基础信息将其放进一个Column_Family中basic_info
age tle address 作为私有信息放进private_info中
id 作为一个Rowkey
那么通过
rk + cf + c + time ==> value
#也就像坐标一样
xx1 + basic_info + name + time ==> zhangsan
xx1 + private_info + age +time ⇒ 25
HBase和HDFS的区别
| 比较 | HDFS | Hbase |
|---|---|---|
| 写入方式 | 仅能追加 | 随机写入 |
| 读取方式 | 全表扫描&分区扫描 | 随机读取&小范围扫描&全表扫描 |
| SQL性能 | 非常好 | 比HDFS慢4-5倍 |
| 结构化存储 | 非常多 | 列族&列 |
| 存储量 | ~PB | ~PB |

本文介绍了HBase作为一种分布式列式存储系统的基本概念,并详细对比了HBase与传统关系型数据库(RDBMS)在数据构成、事务处理、查询语言等方面的不同。同时,还讨论了HBase与HDFS之间的主要区别。
1191

被折叠的 条评论
为什么被折叠?



