数据库分为关系型和非关系型,接下来要学习的Hbase是非关系型数据库,那我们在讲解非关系型数据时,先来了解一下什么是关系型数据库,在了解关系型数据库后,再来对比一下非关系型数据库的特征。
:-:
(1)一个院系有自己的属性(系号、名称、电话),一个学生也有自己的属性(学号、姓名、性别、年龄),讲院系和学生构建起关系:学生是属于院系,一个院系有多个学生,属于1对多的关系。构建一个实体模型。
(2)把实体模型抽象成关系模型,分别把学生和院系的各自属性列举出来,优化一下,可以在学生里创建一个外键,外键可以使用院系的号码,代表了这个学生是属于这个院系。
(3)最后创建表,可以形成一张院系表和一张学生表,因为学生表里有外键院系的号码,在学生表里面可以知道这个学生是属于哪个学院的。那么两张表的就可以构建出学生和院系的关系了。大家可以这么理解:通过实体之间的关系构建出表和表之间的关系,重点要理解,他们首先是存在有关系的,所以这类型的数据库称为:关系型数据库。
非关系型数据库是什么呢?顾名思义,就是没有关系的数据库,就是说在创建数据库表的时候,是不需要先构建表和表之间关系的。我们提到了Hadoop的思想起源之一是BigTable,那什么是BigTable呢?BigTable叫大表,存放大量数据的表,把所有的数据保存到一张表中,不需要构建表和表之间的关系,采用冗余的方式,就是说一张表里面可能会有很多重复的数据,它的好处就是可以提高查询效率,通过牺牲存储空间,来换取查询的高效。
:-:
(1)rowkey: 相当于关系型数据库中的主键,在关系型数据库中,主键是不可以重复的,但是在非关系型数据库中,rowkey是可以重复的,重复就代表他们是同一条记录,在这里也可以发现,非关系型数据库数据是很冗余的。
(2)列族:关系型数据库叫列,一个列代表一个属性的值。但是在非关系型数据库中,不叫列,叫列族,因为这个列族不仅仅代表一个属性的值,代表的是一类属性的值,这个列族可能会存放很多个不同的列。
(3)创建表:关系型数据库创建表的时候需要指定一张表所有的列,但是在非关系型数据库是不需要指定每一个列的,只需要指定一个列族即可,一个列族的多个列是在插入数据的时候动态插入的。
[info] 总结:Hbase是受到非关系型数据库BigTable的启发所衍生出来的一个非关系型数据库,这个Hbase也构成Hadoop生态圈的数据库。
内容来源于网络,如有侵权,请联系作者删除!