ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

SQL和NoSQL的区别

2022-07-23 17:03:09  阅读:239  来源: 互联网

标签:存储 NoSQL 区别 查询 SQL 借阅 数据


关系型数据库与非关系型数据库的区别

1、存储方式

SQL(关系型数据库)数据存在特定的结构的表中,而NoSQL(非关系型数据库)则更加灵活和可扩展,存储方式可以是JSON文档、hash表或者其他方式。SQL通常以数据库表形式存储数据。举个例子:

 

 而NoSQL存储方式比较灵活,比如使用类JSON文件存储上表中熊大的借阅数据:

 

 2、表/数据集合的数据关系

在SQL中,必须定义好表和字段结构后才能够添加数据,例如定义表的主键(primary key),索引(index),触发器(trigger),存储过程(stored procedure)等。表结构可以在被定义之后更新,但是如果有比较大的结构变更的话就会变得比较复杂。在NoSQL中,数据可以在任何时候任何地方添加,不需要先定义表。例如下面这段代码会自动创建一个新的“借阅表”的数据集合:

 

 NoSQL也可以在数据集中建立索引。以MongoDB为例,会自动在数据集合创建后创建唯一值_id字段,这样的话就可以在数据集创建后增加索引。

从这点来看,NoSQL可能更加适用于初始化数据还不明确或者未定的项目中。

3、外部数据存储

SQL中如何需要添加外部关联数据的话,规范化做法实在原表中增加一个外键,关联外部数据表。例如需要在借阅表中增加审核人信息,先建立一个审核人表:

 

 再在原来的借阅人表中增加审核人外键:

 

 

这样如果我们需要更新审核人个人信息的时候只需要更新审核人表而不需要对借阅人表做更新。而在NoSQL中除了这种规范化的外部数据表做法以外,我们还能用如下的非规范化方式把外部数据直接放到原数据集中,以提高查询效率。缺点也比较明显,更新审核人数据的时候将会比较麻烦。

 

 4、SQL中的JOIN查询

SQL中可以使用JOIN表链接方式将多个关系数据表中的数据用一条间的查询语句查询出来。NoSQL暂未提供类似JOIN的查询方式对多个数据集中的数据做查询。所以大部分NoSQL使用的是非规范化的数据存储方式存储数据。

5、数据耦合性

SQL中不允许删除已被使用的外部数据,例如审核人中表中的“熊三”已经被分配给了借阅人熊大,那么在审核人表中将不允许删除熊三这条数据,以保证数据完整性。而NoSQL中则没有这种强耦合的概念,可以随时删除任何数据。

6、事务

SQL中如果多张表数据需要同批次被更新,即如果其中一张表更新失败的话其他的表也不能更新成功。这种场景可以通过事务来控制,可以在所有命令完成后再统一提交事务。而NoSQL中没有事务这个概念,每一个数据集的操作都是原子级的。

7、增删改查语法

8、查询性能

在相同水平的系统设计前提下,因为NoSQL中省略了JOIN查询的消耗,故理论上性能是优于SQL的。

标签:存储,NoSQL,区别,查询,SQL,借阅,数据
来源: https://www.cnblogs.com/longlyseul/p/16512398.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有