广西网站建设哪里有,如何申请二级域名,软件工程的八个步骤,建设银行青海省分行招聘网站目录 NoSQL(非关系型数据库)与SQL(关系型数据库)的差别
1.数据结构#xff1a;结构化与非结构化
2.数据关联#xff1a;关联性与非关联性
3.查询方式#xff1a;SQL查询与非SQL查询
4.事务特性#xff1a;ACID与BASE
分析ACID与BASE的含义#xff1a;
5.存储方式结构化与非结构化
2.数据关联关联性与非关联性
3.查询方式SQL查询与非SQL查询
4.事务特性ACID与BASE
分析ACID与BASE的含义
5.存储方式磁盘与内存
6.扩展性垂直与水平
7.使用场景 NoSQL(非关系型数据库)与SQL(关系型数据库)的差别
1.数据结构结构化与非结构化
SQL是关系型数据库它是具有结构化的。
分析
在项目设计之初我们就进行确定了数据表对应各个字段对应的约束条件以及数据类型及其大小
一旦我们构建出了对应的数据表之后我们之后进行插入或操作数据 那么都是基于这个结构去进行的这就是结构化。
由于我们的数据表是面向业务的所以一旦我们确立了表之后就不会再轻易去进行修改表的结构对应的约束了。因为一旦牵扯数据量过大会影响很多记录。如果影响过多数据记录甚至会导致锁表
举例MySQL就是一种表类型存储的表可以有许多字段字段被很多数据类型所修饰。并且可以有主键外键等等。
NoSQL是非关系型数据库非结构化。 数据结构的形式是不一定的可变化的。
分析
存储数据记录对应的数据结构是多种多样的。并且当我们确定存储之后我们也可以进行随意修改数据对应的结构。这一点和SQL类型数据库正好相反。并且对于存储数据加一个减一个数据 对于整体的影响也不大。
举例Redis是Key-Value键值型的。MongoDB是文档类型的。HBase是列类型的。Neo4j是Graph类型的
2.数据关联关联性与非关联性
SQL中多张表之间会构成关联关系 这就是关联性。 NoSQL是非关联性的数据之间是无关联的如果非要构建关联也需要我们自己去进行设定。
3.查询方式SQL查询与非SQL查询
SQL语句结构统一。
分析无论是MySQL还是Orcle查询都是select * from 表名
非SQL优势在于它简单语法贴近我们日常开发语法。缺点就是不同的NoSQL类型数据库对应的语法不同
分析对于不同类型的NoSQL数据库查询语句差别很大。
4.事务特性ACID与BASE
SQL关系型数据库对应事务是一致性的即是ACID。适合使用于相关业务对数据安全性较高的场景。
非SQL对事务一致性基本满足 有可能不满足即是BASE。安全性不高适用于对性能要求高的业务。
分析ACID与BASE的含义
ACID
事务是由一组SQL语句组成的逻辑处理单元事务具有以下四个属性通常简称为事务的ACID属性。
(1) 原子性(Atomicity)
事务是对一个原子操作单元其中对数据的修改要么全部执行要么全部不执行。 (2)一致性(Consistent)
在事务开始和完成时数据都必须保证一致状态这就意味着所有相关的数据规则都必须应用于事务的修改以保持数据的完整性。 (3) 隔离性(Isolation)
数据库系统提供一定的隔离机制保证事务在不受外部并发操作影响的“独立”环境下执行。这就意味着对外部是不可见的。 (4) 持久性(Durable)
事务完成之后它对于数据的修改是永久性的即使出现系统故障也能保持。 BASE:
1.基本可用Basically Available: NoSQL允许分布式系统中某些部分出现故障那么系统的其余部分依然可用。它不会像ACID那样在系统出现故障时进行强制拒绝允许继续部分访问。
2.软状态Soft State: NoSQL在数据处理过程中允许这个过程存在数据状态暂时不一致的情况。但经过纠错处理最终会一致的。
3.最终一致性Eventually Consistent NoSQL的软状态允许数据处理过程的暂时不一致但是最终处理结果将是一致的说明NoSQL对数据处理过程可以有短暂的时间间隔也允许分更细的步骤一个一个地处理最好数据达到一致即可。这在互联网上进行分布式应用具有其明显的优势。
5.存储方式磁盘与内存
存储方式
SQL类型的数据库的数据是存储在磁盘上面的。NoSQL是存储在内存中的。这就意味着NoSQL类型的数据库进行查询时效率更高但是内存是有限度的。
6.扩展性垂直与水平
对于SQL类型的数据库比如说MySQL数据库。设计者一开始设计的时候就没有考虑到后续的扩展性能问题它是垂直扩展的所谓垂直扩展即是MySQL数据库主从同步但是主机和从机的数据保持一致性从机只负责进行读主机负责写一定程度上提升了查询的效率。但是对于数据的存储量的提升我们还是需要从数据库所在的服务器进行着手这很大程度上就限制了业务场景。
对于NoSQL类型的数据库比如说Redis缓存设计者一开始就考虑到其后续的性能扩展性所以扩展时可以进行水平扩展所谓水平扩展即是我们可以把数据部署在多条服务器上这样弥补了SQL类型数据库的数据存储依赖服务器性能上限的问题。Redis存储数据一般即是通过Hash运算计算出该数据最终是存储在哪一个节点上的。
7.使用场景
SQL(1)数据结构固定 (2)相关业务对数据安全性一致性要求高
NoSQL(1)数据结构不固定 (2)对一致性安全性要求不高 (3) 对性能要求高
其实SQL与NoSQL类型的数据存储可以一起使用相辅相成。比如MySQL与Redis对于数据的存储为了考虑到安全性我们存储到MySQL数据库中但是对于热点数据的读取我们可以放置到Redis缓存中。 总结不易期待三连支持谢谢大家。