Hbase高手之路 -- 第三章 -- HBase原理核数据模型

本文深入解析HBase的数据结构,包括行键(rowkey)设计、列簇(columnfamily)与列限定符的设计原则,以及单元格的组成。重点讲解了数据模型和性能优化技巧,适合HBase高级学习者和开发者阅读。
摘要由CSDN通过智能技术生成

Hbase高手之路 – 第三章 – HBase原理核数据模型

一、 概述

在HBase中,数据存储在行和列的表中,可以把表看作是多个维度的Map(k-v)结构
Rowkey 列簇1(column family 1)列簇2(cf2)
1001 列名1 列名2 列名3 列名4 列名5

KeyValue
rowkey1001
Cf1列1=>值1
列2=>值2
列3=>值3
Cf2列1=>值1
列2=>值2

二、 术语

  1. 表(table)
  • HBase中数据都是以表的形式来组织的
  • HBase中的表由多行(几十亿)组成

在HBase WebUI(http://node1.itcast.cn:16010中可以查看到目前HBase中的表)
在这里插入图片描述

1. 行(rowkey)

  • HBASE中的行由一个rowkey(行键)和一个或多个列组成,列的值与rowkey、列相关联
  • 行在存储时按行键按字典顺序排序
  • 行键的设计非常重要,尽量让相关的行存储在一起
  • 例如:存储网站域。如行键是域,则应该将域名反转后存储(org.apache.www、org.apache.mail、org.apache.jira)。这样,所有Apache域都在表中存储在一起,而不是根据子域的第一个字母展开

2. 列(Column)

  • HBASE中的列由列蔟(Column Family)和列限定符(Column Qualifier)组成
  • 表示如下——列蔟名:列限定符名。例如:C1:USER_ID、C1:SEX

在这里插入图片描述

3. 列簇(column family)

  • 处于性能的考虑,列簇将一组列及其值组织在一起
  • 每个列簇都有一组存储属性,比如是否存储在内存、数据是否被压缩及使用的编码等等

在这里插入图片描述

在这里插入图片描述

  • 出于性能原因,列蔟将一组列及其值组织在一起
  • 每个列蔟都有一组存储属性,例如:
     是否应该缓存在内存中
     数据如何被压缩或行键如何编码等
  • 表中的每一行都有相同的列蔟,但在列蔟中不存储任何内容
  • 所有的列蔟的数据全部都存储在一块(文件系统HDFS)
  • HBase官方建议所有的列蔟保持一样的列,并且将同一类的列放在一个列蔟中

4. 列限定符

  • 列蔟中包含一个个的列限定符,这样可以为存储的数据提供索引
  • 列蔟在创建表的时候是固定的,但列限定符是不作限制的
  • 不同的行可能会存在不同的列标识符
    在这里插入图片描述

5. 单元格

  • 单元格是行、列簇和列限定符的组合
  • 包含一个值和时间戳(标识该值的版本)
  • 单元格的内容以二进制存储即字节数组(byte[])

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值