目录表(Table)1. rowkey行键2. Column Family列族3. Column列4. cell单元格5. Timestamp时间戳理解数据模型各概念的图HBase是
HBase是运行在hadoop集群上的一个数据库,与传统的数据库有严格的ACID(原子性、一致性、隔离性、持久性)要求不一样,HBase降低了这些要求从而获得更好的扩展性,它更适合存储一些非结构化和半结构化的数据。
下面给大家详细介绍HBase表的数据模型,内容如下所示:
HBase 中的数据以表的形式存储。同一个表中的数据通常是相关的,使用表主要是可以把某些列组织起来一起访问。表名作为 hdfs 存储路径的一部分来使用,在 HDFS 中可以看到每个表名都作为独立的目录结构。
HBase表的数据模型主要概念包括rowkey、Column Family、Column、cell、Timestamp。
user
,有两个列族,分别是userInfo
和addressInfo
,建表语句create 'user', 'userInfo', 'addressInfo'
列族名:列名
表示,如userInfo
列族下的name
列,表示为userInfo:name
知道row key行键、列族、列,可以确定的一个cell单元格
cell中的数据是没有类型的,全部是以字节数组进行存储
上表展示的是 HBase 中的用户信息表 user,有三行记录和两个列族(不考虑空白的列族,代表可以有很多列族),行键分别为 1、2 和 3,两个列族分别为 userInfo 和 addressInfo,每个列族中含有若干列,如列族 userInfo 包括 name、age、sex 3列,列族 addressInfo 包括 address、from、phone、email、ralary 5列。
在 HBase 中,列不是固定的表结构,在创建表时,不需要预先定义列名,可以在插入数据时临时创建。
从表的逻辑模型来看,HBase 表与关系型数据库中的表结构之间好像没什么差别,只不过多了列族的概念。但实际上是有很大差别的,关系型数据库中表的结构需要预先定义,如:列名及其数据类型和值域等内容。
当需要添加新列,则需要修改表结构,这会对已有的数据产生很大影响。同时,关系型数据库中的表为每个列预留了存储空间,即表中的空白 Cell 数据在关系型数据库中以“NULL”值占用存储空间。因此,对稀疏数据来说,关系型数据库表中就会产生很多“NULL”值,消耗大量的存储空间。
与面向行存储的关系型数据库不同,HBase 是面向列存储的,且在实际的物理存储中,列族是分开存储的,即表中的用户信息表将被存储为 userInfo 和 addressInfo 两个部分。
同时HBase存在时间戳,可以多次对一个cell赋值,可以存储多个版本的值,如上表中rowkey为1的数据存储了2个时间版本的数据。
到此这篇关于详解HBase表的数据模型的文章就介绍到这了,更多相关HBase数据模型内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: 详解HBase表的数据模型
本文链接: https://lsjlt.com/news/149020.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0