• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

HBase之数据模型(DataModel)

mysql 搞代码 4年前 (2022-01-09) 17次浏览 已收录 0个评论

HBase基于Google的BigTable构建,是一种column-orientednosql数据库

HBase基于Google的BigTable构建,是一种column-orientednosql数据库

1.模型视图

1.1概念视图

从概念模型上看,HBase的存储逻辑同关系数据库类似,是基于Table的存储,存储视图如图所示:


图中列出了表格的一条记录,com.cnn.www是该记录的主键,,contents:、anchor:cnnsi.com和anchor:my.look.ca是表格的column

与关系数据库不同的是,这里的cell具有版本的概念(每个cell有多条记录,这些记录通过时间戳来区分彼此).

1.2物理视图

概念视图只是基于关系数据库的一种参照,在真正的物理存储上,HBase基于另外一种模型,模型视图如图所示:

如图所示,HBase实际上是基于列存储的数据库,可简单认为每个ColumnF

本文来源gaodai.ma#com搞##代!^码@网3

amily对应一张存储表,表格的RowKey、Timestamp和column确定了每条记录的唯一索引。在物理层面上,表格的数据是通过StoreFile来存储的,每个StoreFile相当于一个可序列化的Map,Map的key和value都是可解释型字符数组,如key的字符数组主要由以下信息组成(value于此类似):

rowlengthrowKey的字符长度

row rowKey的值

columnFamilyLengthcolumnFamily的字符长度

columnFamilycolumnFamily的值

columnqualifiercolumn

timestamp时间戳(版本)

keytypekey的类型(Put,Delete,DeleteColumn,DeleteFamily…)

这样便可从相应的Key/Value键值对中提炼出具体的rowKey、timestamp、columnKey和columnValue等信息。而多个map整合到一起,便形成一张松散的、可分布式的、多维的、可序列话的BigTable。

2.模型概念

2.1ColumnFamily

Column Family是一组Column的组合,在HBase中,Schema的定义主要为columnFamily的定义,同大多数nosql数据库一样,HBase也是支持SchemaFree的,但是前提要先定义出具体的columnFamily,而在随后的column定义则没有任何约束。

其次,HBase的访问权限控制,磁盘及内存统计等功能都是基于columnFamily层面完成的。

2.2Cell

概念模型中的cell由row、column和timestamp三元素组成

2.3Timestamp

HBase提供基于cell的版本管理功能,版本号默认通过timestamp来标识,并且呈倒叙排列。这样,最后添加的版本会首先遍历到

注:这里的cell指的是概念视图中


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:HBase之数据模型(DataModel)

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址