HBase_HBase 中表的组织格式
由于我对HBase 中的表 ,存在非常多的疑惑。所以现在我对 HTable 的组织形式做一个整理。
先上一个表 官腔一点的描述:
HBase 是按照 BigTable 模式实现的,是一个稀疏的,分布式的,持久化的,多维的映射,由行键,列键和时间戳索引。
HBase 中的表 存在 行键,列族, 列, 时间戳(版本) 各种各样的概念。
那么它们之间是一个什么样的关系呢?
其实简单的来说它们是如下的一种方式
(Table, RowKey,Family,Column,Timestamp)-> Value
其实更像Java中这样的一个结构
SortedMap<
RowKey, List<
SortedMap<
Column, List<
Value, Timestamp
>
>
>
>或者用这样的Java数据结构来表示
SortedMap<RowKey,List<SortedMap<Column,List<Value,Timestamp>>>>
一个简单的样例
列族
这里,我先大家可能对列族这个概念还是不是很了解。
我的理解 :
一行由若干列组成,若干列又构成一个列族 (column family),这不仅有助于构建数据的语义边界 或者 局部边界。还有助于给它们设置某些特性(如压缩),或者指示它们存在内存中。
一个列族的所有列 存储在 同一个底层的存储文件中,这个存储文件叫做 HFile
列族更像是一种数据组织的形式,来对列进行组织的 !!!