关系型数据库和非关系型数据库区别!

来源:互联网 发布:中国癌症发病率 数据 编辑:程序博客网 时间:2024/06/05 07:05

关系型数据库通过外键关联来建立表与表之间的关系,非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定



比如 有一个学生的数据:

    姓名:张三,性别:男,学号:12345,班级:二年级一班

还有一个班级的数据:

    班级:二年级一班,班主任:李四


关系型数据库中,我们创建学生表和班级表来存这两条数据,并且学生表中的班级存储的是班级表中的主键。

非关系型数据库中,我们创建两个对象,一个是学生对象,一个是班级对象,用java来表示就是:

1
2
3
4
5
6
7
8
9
10
11
12
class Student {
    String id;
    String name;
    String sex;
    String number;
    String classid;
}
class Grade {
    String id;
    String name;
    String teacher;
}

通过设置Student类的classid等于Grade类的id来建立这种关系;


关系型数据库中,我们查询一条数据,结果出来一个数组,非关系型数据库中,查询一条数据结果是一个对象。


如果你还不理解对象,建议你看看Java基础中 面向对象 的相关介绍




非关系型数据库Redis/Memcached

怎么又是数据库?,不是已经讲过了mysql了?是的,上面咱们说的mysql是关系型数据库,所以这两个叫做非关系型数据库。


为什么需要它们?


与mysql不同的是Redis和Memcached 的数据是放在内存中的,mysql是放在磁盘中的,而访问内存中的数据速度要远大于放在磁盘中,这就是它们的好处。


那为什么还要学习MySQL,干嘛不直接学习使用Redis和Memcached?


因为:MySQL更适合海量存储数据,Redis和Memcached是在内存中的,需要很大的内存才行,而且放在内存中的数据也容易丢失,如果机器故障重启内存就释放了。


一般互联网公司大都采用MySQL + Redis,或者 MySQL +Memcached的方式进行架构;Redis/Memcached都是基于内存的,所以它们的速度非常快,包括读和写都很快,一般用在一些高并发,大数据量访问的场景之下。




0 0