本文源自 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"
}
},
//

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

被折叠的 条评论
为什么被折叠?



