我们平常在存储数据时,会想到用Mysql关系型数据库、大硬盘文档存储等。但是,面临互联网自媒体时代的出现,采用Mysql来存储微信类评论数据、零碎图片、零碎视频,采用Mysql的数据库,已经力不从心。表现在:1、Mysql数据库字段固定。2、Mysql字段存储内容无法任意增加或删除。3、Mysql数据库水平扩展麻烦(分库分表依靠人手管理,非常麻烦),海量的数据存取存在瓶颈。因此,面临此类问题,Apache在HDFS的基础上推出了HBase的NoSQL数据库,解决此类问题。
HBase的表结构与传统关系型数据库相比,发生了巨大变化,因内容复杂,我们将HBase分为多个章节进行讲解。今天先带大家入门,讲第一章。
上表为HBase的典型存储逻辑结构。粗一看,大家发现,好像没有什么变化。但实际变化非常之大。
一、HBase的column-family-1是一个列族,比如为人员基本信息。而column-A可能姓名,column-B可能为性别。而column-family-2可能是人员学籍信息。
二、每个cell没有字段类型,而且里面可以任意增删数据。我们可以在同一个cell中按时间戳进行任意的数据增加,就像上表。t2:hk,51:jy,他们放入了同一个cell中。甚至可以放个视频、图像等大文件。
三、HBase按column-family进行自动分裂,存放不同的服务器的HDFS文件中,支持大容量的水平自动扩展。
四、HBase可以按RowKey进行自动分裂,可以设置手动、自动分裂。通过第三、第四的自动化扩展,HBase可以在廉价的pc服务器上存储大量的数据文件。
五、HBase对于null空的column不会进行数据存储,相比存在cell类型的Mysql而言,可以大量节省存储空间。
六、HBase可以自动进行join操作,相比Mysql跨库、跨表后复杂的join联结操作,程序员可以非常简便地进行数据查询计算。
今天HBase的第一章讲到这里,明天为大家带来HBase后台的存储原因。