我是靠谱客的博主 坦率冬瓜,最近开发中收集的这篇文章主要介绍HBase数据库结构、存储理解(举例解释、容易理解、深入浅出),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

HBase数据库的结构对于初学者来说一直是一个比较难理解的问题,我也一样。
最近做了HBase的项目,对HBase存储和结构的理解又有了新的提升。现在我可以理解HBase设计巧妙的地方,写一篇文章记录一下,希望对读者也有所帮助

你是一名大公司的数据管理员,你使用的是关系型数据库(下文以MySQL举例)存储公司的员工信息。最近公司新来了100名员工,你需要把公司员工的数据录入数据库中,可是拿到表格的时候你楞了一下,因为人事部门给你的表格似乎不太OK:原先的数据库中,老员工的信息只有(工号、姓名、入职年份、学历、工资、联系方式、职位)这7个列
在这里插入图片描述
但是新员工的表格中却多出了(年龄、住房补贴、实习经历、五险一金)4个列。
在这里插入图片描述
老板希望你给数据库加入这4个列,并将(老员工福利)这一信息加在老员工的个人信息上面。你需要在MySQL中增加这些列,并且有个非常头疼的问题,新员工不需要(老员工福利)这一信息,而老员工也似乎不需要(实习经历)这样的信息
在这里插入图片描述

你觉得可以用null去填充,但是对于老员工来说,实习经历就是没有用的一列;对新员工来说,老员工福利是需要时间才能有的列。并且如果以后老板还要加入新的列,你又要去添加,这是一个复杂繁琐的过程。

你很需要一种数据库,可以不受行列对应的限制;一行数据,你想让它有几列,它就有几列,你想加列的时候,你就加入,当你想删除的时候,你可以直接把该列删除却又不影响别的数据;你可以忽视结构化的表格设计。

那么这个时候,谷歌爸爸带着他提出的HBase来了:一个弱化了行列关系的数据库、一个可以进行高吞吐又慢的不明显的数据库、一个非关系型数据库、一个适合于非结构化数据存储的数据库。

如果你对这方面的知识还不够了解,建议先看一下我之前的文章,附上链接:HBase基础知识

我们先来看一下HBase存储下该表的结构
在这里插入图片描述

可以看到,每一条数据都是带着他的标签,我们再来看一下hbase shell中数据的样子

一个列族下面可以有很多个列名,一个表中可以有很多列族,当然列族越少越好,多了会影响效率。包括时间戳,如果有疑问的话可以阅读我之前写的文章HBase基础知识

这样对应到我们的表格就很容易理解了
在这里插入图片描述
到这里会有人问:行键去哪里了?

行键需要我们自己去确定,并且需要注意的是:行键是唯一的!

可能你的值会有重复,但行键不行,他就像一个人的身份证一样,不能出现重复,他决定了该条数据的唯一性。对应到这张表格来说,我们就应该选择工号作为我们的行键,因为工号一个人只有一个并且不会出现重复。
在这里插入图片描述
这样的话,当我需要插入数据,就不用考虑任何的行列对应,你有100列或是1列都不影响我的存储,因为我不需要考虑存入的数据行列是否匹配大环境,我自成一派。就像docker的容器一样,互不影响。只需要知道你的行键,我就能拿到你的所有数据,或者是知道你的值,返回该值所在的行。
在这里插入图片描述


这样的例子和解释应该可以帮助你更好的理解

最后

以上就是坦率冬瓜为你收集整理的HBase数据库结构、存储理解(举例解释、容易理解、深入浅出)的全部内容,希望文章能够帮你解决HBase数据库结构、存储理解(举例解释、容易理解、深入浅出)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部