HBase日常整理01-基本概念

一、概述

HBase以表的形式存储数据。表有行和列族组成。列族划分为若干个列。

其结构如下:

 

图片解释:HBase中的一行数据的结构。每一行(row),包括行键(ROWKEY),列族(Column Family)

每一个列族包括列(Column),在HBase中,如果修改数据,不是修改最原始的数据而是追加数据,在获取数据的时候,如果不指定,默认获取最新的(timestamp最新的)数据。时间戳在HBase的数据中称之为是这个数据的版本VERSION。 

二、Row Key:行键

1.hbase本质上也是一种Key-Value存储系统。Key相当于RowKey,Value相当于列族数据的集合

2.与nosql数据库们一样,row key是用来检索记录的主键

3.访问hbase table中的行,只有三种方式

a.通过单个row key访问

b.通过row key的range

c.全表扫描

4.Row key行键 (Row key)可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes),在hbase内部,row key保存为字节数组

5.存储时, 数据按照Rowkey的字典序(byte order)排序存储。设计key时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性)

例:

 

三、列族(列簇)

1.hbase表中的每个列,都归属与某个列族

2.列族是表的schema的一部分(而列不是),列族必须在使用表之前定义

3.列名都以列族作为前缀。例如courses:history , courses:math 都属于 courses 这个列族

4.访问控制、磁盘和内存的使用统计都是在列族层面进行的。实际应用中,列族上的控制权限能帮助管理不同类型的应用:允许一些应用可以添加新的基本数据、一些应用可以读取基本数据并创建继承的列族、一些应用则只允许浏览数据(甚至可能因为隐私的原因不能浏览所有数据)

四、Cell(单元)与时间戳

1.由{row key, column( =<family> + < label>), version} 唯一确定的单元(行键++version组成一个单元,也可以确定唯一的一个单元)

2.cell中的数据是没有类型的,全部是字节码形式存贮

3.每个 cell都保存着同一份数据的多个版本,版本通过时间戳来索引

4.时间戳的类型是 64位整型。时间戳可以由hbase(在数据写入时自动 )赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值

5.如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳

6.每个 cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面

7.为了避免数据存在过多版本造成的管理 (包括存贮和索引)负担,hbase提供了两种数据版本回收方式:

a.保存数据的最后n个版本

b.保存最近一段时间内的版本(比如最近七天)

用户可以针对每个列族进行设置

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值