HBase 表设计

本篇来自 《HBase 实战》之 “HBase 表设计”。

 

我们需要思考几个问题:

  • 一张表需要多少列族?
  • 一个列族需要多少列?
  • 什么数据应当存入列名中?
  • 什么数据应当存入单元?

这里将会学习一下 HBase 的模式设计,讨论 HBase 设计模式和行键应该考虑的东西,为了应对系统的访问模式需要进行性能优化。

模式简单会有更多的调整空间:有些模式的写性能很棒,但是读取数据时表现却不好,或者正好相反。

当说到模式(schema)的时候,要考虑到如下内容:

  • 这个表应该有多少列族?
  • 列族使用什么数据?
  • 每个列族应该有多少列?
  • 列名应该是什么?尽管列名不必在建表时定义,但是读写数据时需要知道的。
  • 单元存放什么数据?
  • 每个单元存储多少个时间版本?
  • 行键结构是什么?应该包括什么信息?

 

一个特定列族的所有数据在 HDFS 上会有一个物理存储。

这个物理存储可能由多个 HFile 组成,理想情况下可以通过合并得到一个 HFile。

一个列族的所有列在硬盘上存放在一起,使用这个特性可以把不同访问模式的列放在不同列族,以便隔离它们。

这也是 HBase 被称为 面向列族的存储(column-family-oriented store)的原因。

 

重要的事情是定义访问模式,也就是应用系统如何访问 HBase 表里的数据。

 

用户关注的例子

读访问模式:

  • TheFakeMT 关注了谁?
  • TheFakeMT 关注了 TheRealMT 了吗?
  • 谁关注了 TheFakeMT?
  • TheRealMT 关注了 TheFakeMT 了吗?

写数据到 HBase:

  • 一个用户关注了某人
  • 一个用户取消关注某人

 

HBase 不支持事务

HBase 把一切数据存储为字节数组(byte[]),可以在一个列族里拥有任意数量的列。

列限定符将使用 follower 的用户名,而不再是它们在关注用户列表里面的位置。

现在单元值可以是任何内容,因为单元不能是空的,所以需要存点东西,所以输入数字 1。

 

转载于:https://www.cnblogs.com/tuhooo/p/11270584.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值