理解 HBase 的数据模型

本文介绍了HBase作为Google BigTable开源实现的数据模型。HBase是一个稀疏的、分布式的多维有序映射,其中row key、column key和时间戳构成索引。行键策略需考虑相似性以优化数据布局,而列可以根据需要动态添加到column family中。查询数据需精确到列名和可能的版本号,使得HBase中的数据通常表现为稀疏形式。

本文源自 Unstanding HBase and BigTable
HBase 是 Google BigTable 的开源实现。
BigTable 是一个稀疏的、分布式的、持久化的多维有序 map,该 map 由 row key, column key 和一个时间戳(timestamp)构成索引,索引对应的值是原始的字节数组。HBase 的数据模型和上述定义类似。
这里比较独特的是这个 map 是按照 key 构成的索引有序排列的。这就要求我们在制订 row key 生成策略时,要考虑哪些 key 具有类似性,最好把他们排在一起。例如一个 hbase 表的 row key 是网站的域名,那么我们最好将域名倒排(com.google.www, com.google.mail.www, com.jd.www, com.baidu.www)作为 key 以便将具有相同子域名聚集在一起。
多维是指 value 部分可以有多个列组成,这些列又分别组成了多个 column family。定义 HBase 表的时候,colunm family 是需要确定的,并且不能更改,列位于 column 中,可以动态添加。其数据形式类似与一个 JSON 数据段。

{
  // ...
  "row key a" : {
    "column family A" : {
      "column o" : "y",
      "column p" : "d"
    },
    "column family B" : {
      "column q" : "w"
    }
  },
  "row key b" : {
    "column family A" : {
      "column o" : "world",
      "column x" : "domination"
    },
    "column family B" : {
      "column q" : "ocean"
    }
  },
  // 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值