Hbase数据模型入门

HBase是一个分布式列式存储系统,它的数据模型不同于传统的关系型数据库。表由行组成,行由行键和列族、列限定符及对应的值构成。列族是一组列的集合,具有共同的存储属性;列限定符在列族内提供索引。每个单元格包含一个值和时间戳,表示数据的不同版本。时间戳用于版本控制,未指定时返回最新值。HBase的表在存储时按行键排序,允许高效的数据定位。这种数据模型使得HBase特别适合于处理大规模稀疏数据集。
摘要由CSDN通过智能技术生成

在HBase中,数据存储在具有行和列的表中。这是与关系数据库(RDBMS)的术语重叠,但这并不是一个有用的类比。相反,将HBase表视为多维映射会有所帮助。

HBase数据模型术语


一个HBase表由多行组成。


HBase中的一行由行键和一列或多列与它们相关联的值组成。行在存储时按行键按字母顺序排序。因此,行键的设计非常重要。目的是以相关行彼此靠近的方式存储数据。常见的行rowkey模式是网站域。如果行键是域,则可能应该反向存储它们(org.apache.www,org.apache.mail,org.apache.jira)。这样,表中所有的Apache域都彼此靠近,而不是根据子域的第一个字母散布开来。


HBase中的列由列族和列限定符组成,它们由:(冒号)字符分隔。

列族
出于性能考虑,列族实际上将一组列及其值并置在一起。每个列族都有一组存储属性,例如是否应将其值缓存在内存中,如何压缩其数据或对其行键进行编码等。表中的每一行都具有相同的列族,尽管给定的行可能不会在给定的列族中存储任何内容。

列限定词
将列限定符添加到列族,以提供给定数据段的索引。给定列族内容,列限定符可能是content:html,另一个可能是content:pdf。尽管列族在创建表时是固定的,但列限定符是可变的,并且行之间的差异可能很大。

Cell
单元格是行,列族和列限定符的组合,并包含一个值和一个时间戳,代表该值的版本。

时间戳
时间戳记与每个值一起写入,并且是值的给定版本的标识符。默认情况下,时间戳表示写入数据时在RegionServer上的时间,但是在将数据放入单元格时,可以指定其他时间戳值。

举个例子
该表中看起来为空的单元格在HBase中不占用空间,或者实际上不存在。 这就是使HBase“稀疏”的原因。 表格视图不是查看HBase中数据的唯一可能方法,甚至不是最准确的方法。 以下代表与多维Map相同的信息。 这仅是出于说明目的的模型,可能并非严格准确。

在这里插入图片描述

{
  "com.cnn.www": {
    contents: {
      t6: contents:html: "<html>..."
      t5: contents:html: "<html>..."
      t3: contents:html: "<html>..."
    }
    anchor: {
      t9: anchor:cnnsi.com = "CNN"
      t8: anchor:my.look.ca = "CNN.com"
    }
    people: {}
  }
  "com.example.www": {
    contents: {
      t5: contents:html: "<html>..."
    }
    anchor: {}
    people: {
      t5: people:author: "John Doe"
    }
  }
}

尽管从概念上讲,表可以看作是行的稀疏集合,但它们实际上是按列族存储的。 可以随时将新的列限定符(column_family:column_qualifier)添加到现有的列族。
在这里插入图片描述
概念视图中显示的空单元格根本不存储。 因此,在时间戳记t8处对content:html列的值的请求将不返回任何值。 同样,在时间戳t9处请求anchor:my.look.ca值的请求将不返回任何值。 但是,如果未提供时间戳,则将返回特定列的最新值。 给定多个版本,因为时间戳以降序存储,所以最新的也是找到的第一个版本。 因此,如果未指定时间戳,则对com.cnn.www行中所有列的值的请求为:来自时间戳t6的content:html的值,来自时间戳t9的anchor:cnnsi.com的值, 时间戳记t8中的anchor:my.look.ca。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值