Hbase 基本理解

HBase的数据模型: HBase本质上其实就是Key-Value的数据库.

HBase中是有表的概念的
一个表中可以包含多个列族
一个列族可以包含很多的列
每一个列对应的单元格(值、timestamp)

HBase介于nosql(非关系型数据库)和RDBMS(关系型数据库管理系统)之间,仅能通过主键(row key)和主键的range来检索数据,
仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。主要用来存储非结构化和半结构化的松散数据。

RowKey(行键):
Rowkey相当于SQL中的主键。rowkey决定了row在表中的存储顺序,在HBase中,row的排序方式为字典顺序。
HBase中的三种查询方式:
1、基于Rowkey的单行查询
2、基于Rowkey的范围扫描
3、全表扫描 Row key行键
(Rowkey)可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes),在Hbase内部,rowkey保存为字节数组。

Column(列):
可以理解为其MySql中的列。基本的存储单位,一个或者多个列形成列族。 ColumnFamily(列族)
列族是我们在开始创建表的时候就需要定义的,它是表的一部分。 表中的有些属性也是在列族上定义的,比如过期时间、数据块缓存以及是否压缩等。

Cell(单元格):
{rowkey:column family:column:version}
一个列上可以存储多个版本的值,多个版本的值存储在多个单元格里面,多个版本之间通过版本号(Version)来区分

Time Stamp(时间戳)
时间戳就是实现多版本的关键所在。通过不同的timestamp来标识相同rowkey行对应的不同版本的数据。
HBase 中通过 rowkey和 columns 确定的为一个存储单元(cell),每个cell都保存着同一份数据的多个版本,通过时间戳来索引。

Hbase的一些操作(表,行键,列族,列)
创建表
HBase是没有schema的,就是在创建表的时候不需要指定表中有哪些列,只需要指定有多少个列蔟

create "表名","列蔟1", "列蔟2"

删除表
删除表之前我们首先要禁用表,如果不禁用表这里会出现无法删除的情况

禁用表

disable “表名”

删除表

drop “删除表”

https://blog.csdn.net/FengTin...
https://zhuanlan.zhihu.com/p/...

你可能感兴趣的:(hbase)