逻辑上,HBase的数据模型同关系型数据库很类似,数据也是存储在一张表中,由行和列。但HBase的底层物理存储结构是Key-Value模式。
1、HBase的逻辑结构
Row_Key是必需有的,而且是唯一的,personal_info、office_info是列族,不同的列族是分开存储的。列族下面才是存储数据的列,而列是可以随便增加的。
上图是HBase表的逻辑结构,实际存储中,一个表可能是放在不同的服务器节点上面。另外存储是基于HDFS集群的,所以要先了解HDFS。
2、HBase的物理存储结构
这里需要注意,一条记录的某个字段中存储的数据,可能会有多个版本,版本是通过TimeStamp时间戳来区分控制的。例如,修改或删除数据,其实是增加一个版本,而不是删除。当查询数据时,就会通过时间戳来返回最后更改的结果。所以集群、客户端一定要注意时间同步的问题,否则可能就会出现,数据修改了或删除了,但查询数据并没有变化的情况。