SQL与NoSQL关系和区别
概念
SQL (Structured Query Language) 数据库,指 - 主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源)。
NoSQL(Not Only SQL)泛指 - 主要代表:MongoDB,Redis,CouchDB。
主要区别
1.存储⽅式:
SQL数据存在特定结构的表中;⽽NoSQL则更加灵活和可扩展,存储⽅式可以省是JSON⽂档、哈希表或者其他⽅式。
SQL通常以数据库表形式存储数据。举个栗⼦,存个学⽣借书数据:
数据表
⽽NoSQL存储⽅式⽐较灵活,⽐如使⽤类JSON⽂件存储上表中熊⼤的借阅数据:
数据⽂件
2. 表/数据集合的数据的关系
在SQL中,必须定义好表和字段结构后才能添加数据,例如定义表的主键(primary key),索引(index),触发器(trigger),存储过程(stored procedure)等。表结构可以在被定义之后更新,但是如果有⽐较⼤的结构变更的话就会变得⽐较复杂。
在NoSQL中,数据可以在任何时候任何地⽅添加,不需要先定义表。例如下⾯这段代码会⾃动创建⼀个
新的"借阅表"数据集合:
⾃动创建借阅表
NoSQL也可以在数据集中建⽴索引。以为例,会⾃动在数据集合创建后创建唯⼀值_id字段,这样的话就可以在数据集创建后增加索引。
oracle数据库表结构怎么看从这点来看,NoSQL可能更加适合初始化数据还不明确或者未定的项⽬中。
3. 外部数据存储
SQL中如何需要增加外部关联数据的话,规范化做法是在原表中增加⼀个外键,关联外部数据表。例如需要在借阅表中增加审核⼈信息,先建⽴⼀个审核⼈表
审核⼈表
再在原来的借阅⼈表中增加审核⼈外键
借阅⼈表
这样如果我们需要更新审核⼈个⼈信息的时候只需要更新审核⼈表⽽不需要对借阅⼈表做更新。
⽽在NoSQL中除了这种规范化的外部数据表做法以外,我们还能⽤如下的⾮规范化⽅式把外部数据直接放到原数据集中,以提⾼查询效率。缺点也⽐较明显,更新审核⼈数据的时候将会⽐较⿇烦。
4.SQL中的JOIN查询
SQL中可以使⽤JOIN表链接⽅式将多个关系数据表中的数据⽤⼀条简单的查询语句查询出来。
⽽NoSQL暂未提供类似JOIN的查询⽅式对多个数据集中的数据做查询。所以⼤部分NoSQL使⽤⾮规范化的数据存储⽅式存储数据。
5.数据耦合性
SQL中不允许删除已经被使⽤的外部数据,例如审核⼈表中的"熊三"已经被分配给了借阅⼈熊⼤,那么在审核⼈表中将不允许删除熊三这条数据,以保证数据完整性。
⽽NoSQL中则没有这种强耦合的概念,可以随时删除任何数据。
6.事务
SQL中如果多张表数据需要同批次被更新,即如果其中⼀张表更新失败的话其他表也不能更新成功。这种场景可以通过事务来控制,可以在所有命令完成后再统⼀提交事务。
⽽NoSQL中没有事务这个概念,每⼀个数据集的操作都是原⼦级的。
7.增删改查语法
8.查询性能
这个⽐较有争议。在相同⽔平的系统设计的前提下,因为NoSQL中省略了JOIN查询的消耗,故理论上性能上是优于SQL的。《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《
关系型数据库
<1>关系数据库的特点是:
- 数据关系模型基于关系模型,结构化存储,完整性约束。
- 基于⼆维表及其之间的联系,需要连接、并、交、差、除等数据操作。
- 采⽤结构化的查询语⾔(SQL)做数据读写。
- 操作需要数据的⼀致性,需要事务甚⾄是强⼀致性。
<2>优点:
- 保持数据的⼀致性(事务处理)
- 可以进⾏join等复杂查询。
- 通⽤化,技术成熟。
<3>缺点:
- 数据读写必须经过sql解析,⼤量数据、⾼并发下读写性能不⾜。
- 对数据做读写,或修改数据结构时需要加锁,影响并发操作。
- ⽆法适应⾮结构化存储。
- 扩展困难。
- 昂贵、复杂。
NoSQL数据库
<1>NoSQL数据库的特点是:
- ⾮结构化的存储。
-
基于多维关系模型。
- 具有特有的使⽤场景。
<2>优点:
- ⾼并发,⼤数据下读写能⼒较强。
- 基本⽀持分布式,易于扩展,可伸缩。
- 简单,弱结构化存储。
<3>缺点:
- join等复杂操作能⼒较弱。
- 事务⽀持较弱。
- 通⽤性差。
- ⽆完整约束复杂业务场景⽀持较差。
虽然在云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库⼜⽆法将其替代,NoSQL只能作为传统数据的补充⽽不能将其替代,所以规避传统数据库的缺点是⽬前⼤数据时代必须要解决的问题。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论