美文网首页HBase
HBase 数据模型

HBase 数据模型

作者: Alex90 | 来源:发表于2018-12-27 15:37 被阅读12次

    理解 HBase 的数据模型,能够更好的理解 HBase 针对 Region 的操作(Split、Compact等)的必要性。

    逻辑模型

    HBase 记录的逻辑模型图如下:
    Rowkey 作为每条记录的唯一不重复ID,ColumnFamily 包含一些 Columns,Column 的值有自己版本(版本默认是时间戳)

    Logical Row

    物理模型

    每一个 Column 的值以 Key-Value 的形式作为一条记录存储,参考 HFile v1 的数据结构:

    Physical Row

    以下部分是固定长度:KeyLength、ValueLength、RowLength、ColumnFamilyLength、TimeStamp、KeyType
    以下部分是可变长度:Row、ColumnFamily、ColumnQualifier、Value

    可以看到每条记录中都会包含的与Value无关的信息是:Row、ColumnFamily、ColumnQualifier,所以在实际应用中,他们的值不宜设置的太长,会占用大量的存储空间。

    已知的 HFile 中存储的是同一个 ColumnFamily 的数据,不清楚为什么把 ColumnFamily 的信息放在每一条记录中,而不是放在 HFile 中。

    逻辑视图

    逻辑视图参照下图,整个表按照 Rowkey 的字典序排列
    逻辑视图类似传统数据库的表,按照 ColumnFamily 垂直切分(CF管理不同的 Column),按照 Region 水平切分(Region 管理一段连续的 Rowkey)

    Logical Table

    物理视图

    在物理存储上,参考前面的物理模型,可以描绘出下图:
    可以看到不同的 Column Family 存储在不同的文件中,每个逻辑单元格(cell)会对应一行数据,由 Timestamp 标记版本,每次插入、删除都会生成新的一行数据(append-only)。由于 append only 的这种特性,写的效率会比较高。
    注意:每个 Rowkey 的数据可能分布在不同的 HFile 中。物理视图并不代表实际存储的格式,实际存储中还有很多 meta 和 index 等信息。

    Physical Table

    相关文章

      网友评论

        本文标题:HBase 数据模型

        本文链接:https://www.haomeiwen.com/subject/yborlqtx.html