这篇文章主要介绍“HBase数据模型和表设计知识点有哪些”,在日常操作中,相信很多人在HBase数据模型和表设计知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”HBase数据模型和表设计知识点有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
术语
Table
Hbase的table由多个行组成。
Row
一个行在Hbase中由一个或多个有值的列组成。Row按照字母进行排序,因此行键的设计非常重要。这种设计方式可以让有关系的行非常的近,通常行键的设计是网站的域名反转,比如(org.apache.www, org.apache.mail, org.apache.jira),这样的话所有的Apache的域名就很接近。
Column Family(列簇或列族)
列簇在物理上包含了许多的列与列的值,每个列簇都有一些存储的属性可配置。例如是否使用缓存,压缩类型,存储版本数等。在表中,每一行都有相同的列簇,尽管有些列簇什么东西也没有存。
Column
列由列簇加上列的标识组成,一般是“列簇:列标识”,创建表的时候不用指定列名(列标识)
Column Qualifier
列簇的限定词,理解为列的唯一标识。但是列标识是可以改变的,因此每一行可能有不同的列标识
Cell
Cell是由row,column family,column qualifier包含时间戳与值组成的,一般表达某个值的版本。
Timestamp
时间戳一般写在value的旁边,代表某个值的版本号,默认的时间戳是写入数据的那一刻,也可以在写入数据的时候指定不同的时间戳
标识设计要点
hbase与关系型数据库对比
属性 | hbase | RDBMS |
---|---|---|
数据类型 | 只有字符串 | 丰富的数据类型 |
数据操作 | 增删改查,不支持join | 各种各样的函数与表连接 |
存储模式 | 基于列式存储 | 基于表结构和行式存储 |
数据保护 | 更新后仍然保留旧数据 | 数据替换 |
可伸缩性 | 轻易增加节点 | 需要中间层,牺牲性能 |
设计时考虑因素
Hbase关键概念:表,rowkey,列簇,时间戳
这个表应该有多少列簇
列簇使用什么数据
每个列簇有有多少列
列名是什么,尽管列名不必在建表时定义,但读写数据是要知道的
单元应该存放什么数据
每个单元存储多少时间版本
行键(rowKey)结构是什么,应该包含什么信息
设计要点
行键rowkey设计
说明
细节
列簇设计
说明
列簇是一些列的集合,一个列簇的成员有相同的前缀,以冒号(:)作为分隔符。
细节
当前Hbase不能很好处理2~3个以上的列簇,所以尽可能让列簇少一些,如果表有多个列簇,列簇A有100万行数据,列簇B有10亿行,那么列簇A会分散到很多的Region导致扫描列簇A的时候效率底下。
列簇名的长度要尽量小,一个为了节省空间,另外加快效率,比如d表示data,v表示value
列簇属性
到此,关于“HBase数据模型和表设计知识点有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程之家网站,小编会继续努力为大家带来更多实用的文章!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。