两者的区别:
1. 两者的多表之间的关联方式
关系型数据库通过外键关联来建立表与表之间的关系;
非关系型数据库 通常指数据以对象的形式存储于数据库中,而对象之间的关系通过对象的自身属性来决定。
比如 :
有一个学生的数据:
姓名:张三,性别:男,学号:12345,班级:二年级一班
还有一个班级的数据:
班级:二年级一班,班主任:李四
关系型数据库中,我们创建学生表和班级表来存这两条数据,并且学生表中的班级存储的是班级表中的主键。
非关系型数据库中,我们创建两个对象,一个是学生对象,一个是班级对象,(它的关联靠的是 属性 classid)用代码表示如下:
1 class Student {
2 String id;
3 String name;
4 String sex;
5 String number;
6 String classid;
7 }
8 class Grade {
9 String id;
10 String name;
11 String teacher;
12 }
2.两表的数据存储方式
关系型和非关系型数据库的主要差异是数据存储的方式。关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。
非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因素。
3.数据的查询方式不一样
关系型数据库通过所谓结构化查询语言(也就是我们常说的SQL)来操作数据。SQL支持数据库CRUD(增加,查询,更新,删除)操作的功能非常强大,是业界标准用法。
非关系型数据库以块(像文档一样)为单元操纵数据,使用所谓的非结构化查询语言(UnQL),它是没有标准的,因数据库提供商的不同而不同。关系型表中主键的概念对应非关系存储中的文档Id。关系型数据库使用预定义优化方式(比如列索引定义)帮助加速查询操作,而非关系型数据库采用更简单而精确的数据访问模式。
关系型数据库中,查询一条数据结果是一个对象。
非关系型数据库中,我们查询一条数据,结果出来一个数组。
4.事务的一致性
关系型数据库可以进行高事务性或者复杂的数据查询。因为关系型数据库支持对事务原子性细粒度控制,并且易于回滚事务。
5.
| 数据库 类型 |
特性 | 优点 | 缺点 |
| 关系型数据库 Oracle、 mysql、SQLite、 SQLServer |
1、关系型数据库,是指采用了关系模型来组织 数据的数据库; 2、关系型数据库的最大特点就是事务的一致性; 3、简单来说,关系模型指的就是二维表格模型, 而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。 |
1、容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解; 5、数据一致性高,冗余低,数据完整性好,便于操作 |
1、为了维护一致性所付出的巨大代价就是其读写性能比较差; 2、固定的表结构; 3、高并发读写需求; 4、海量数据的高效率读写; |
| 非关系型数据库 MongoDb、 redis、HBase |
1、使用键值对存储数据; 2、分布式; 3、一般不支持ACID特性; 4、非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。 |
1、无需经过sql层的解析,读写性能很高; 2、基于键值对,数据没有耦合性,容易扩展; 3、存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型。 |
1、不提供sql支持,学习和使用成本较高; 2、无事务处理,附加功能bi和报表等支持也不好; |
关系型数据库的优点:
1. 复杂查询,可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
2.保持数据的一致性(事务处理)
3. 事务支持使得对于安全性能很高的数据访问要求得以实现。
其中能够保持数据的一致性是关系型数据库的最大优势。
对方的优点就是 另一方的缺点。
补充:
1,数据库事务(关系型数据库中的)必须具备ACID特性,ACID是Atomic原子性,Consistency一致性,Isolation隔离性,Durability持久性。
2,数据的持久存储,尤其是海量数据的持久存储,需要使用关系数据库。

浙公网安备 33010602011771号