为何会出现NoSQL数据库

为何会出现NoSQL数据库

1、总结

一句话总结:sql不支持分布式且且有性能瓶颈且不支持分布式,不一样NoSQL适合不一样的场景

 

一、"不一样的NoSQL数据库只适合不一样的场景"这句话对么?

对的,NoSQL数据库是针对点的,关系型数据库是针对面的前端

 

二、NoSQL数据库有哪四种?

KV键值对:redis,内容缓存,主要用于处理大量数据的高访问负载等; 
②bson:文档数据库,MongoDB 是一个基于分布式文件存储的数据库,C++编写的。皆在为web应用提供可扩展的高性能数据存储解决方案。它介于关系型数据库与非关系型数据库之间的产品,是非关系型中功能最丰富的,且最像关系型数据库的; 
列存储数据库:分布式文件系统 
图关系型数据库 :它不是放图的,放的是 关系:如朋友圈社交网络等。专一于关系图谱。
web

 

三、数据库主从复制和读写分离是什么?

主从复制:往主服务里插入一条数据的同时,也往从服务里写入一条数据(备份、容灾) 
读写分离:通常主做为写(20%),从做为读(80%)redis

 

 

 

2、互联网背景下为何会出现NoSQL?

1、传统应用模式 (ALL IN ONE) 


全部的东西都部署在一台机器上,包括站点、数据库、文件等等(如今阿里云的出现方便了不少)。核心工做就是:前端传过来一些数据,而后业务逻辑层拼装,而后访问数据库,数据库返回数据,数据拼装成页面,最终返回到浏览器。 
这时候数据库可能会率先成为瓶颈在流量峰值期容易宕机,第一能够优化sql语句,第二,典型的应用都是读数据库频率远大于写数据库频率。这时候能够采用读写分离,多读一写的数据库架构(通常是20%是写库,80%是读库);算法

这时候的主要矛盾点已经变为业务复杂度的提高带来的耦合,致使升级困难,开发容易引入bug,维护成本也提高sql

一、Memcached 分布式缓存服务器,经过文件缓存来缓解数据库压力,为多个web服务器提供了一个共享的高性能缓存服务。在Memcached服务器上,又发展了根据hash算法来进行多台Memcached缓存服务的扩展,而后又出现了一致性hash来解决增长或减小缓存服务器致使从新hash带来的大量缓存失效的弊端。数据库

不足: 
因为数据库的写入压力增长,Memcached只能缓解数据库的读取压力。读写集中在一个数据库上让数据库不堪重负,大部分网站开始使用主从复制技术来达到读写分离,以提升读写性能和读库的可扩展性。Mysql的master-slave模式成为这个时候的网站标配了。json

二、主从复制读写分离 
主从复制:往主服务里插入一条数据的同时,也往从服务里写入一条数据(备份、容灾) 
读写分离:通常主做为写(20%),从做为读(80%)数组

三、在Memcached 高速缓存、MySQL主从复制,读写分离的基础之上,因为大量数据的增长,写压力开始出现瓶颈,因为MyISAM使用表锁,在高并发下会出现严重的锁问题,大量的高并发MySQL应用开始使用InnoDB引擎代替MyISAM。 
同时开始使用分库分表来缓解压力。 
MySQL的扩展性差(须要复杂的技术来实现),大数据下IO压力大,表结构更改困难,正是当前使用MySQL的开发人员面临的问题。浏览器

四、为何用NoSQL? 
今天咱们能够经过第三方平台(如:Google,Facebook等)能够很容易的访问和抓取数据。用户的我的信息,社交网络,地理位置,用户生成的数据和用户操做日志已经成倍的增长。 
咱们若是要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的数据。缓存

 

2、什么是NoSQL?

NoSQL(NoSQL = Not Only SQL ),意即“不只仅是SQL”, 泛指非关系型的数据库。

一、做用 
NoSQL数据库种类繁多,可是一个共同的特色都是去掉关系数据库的关系型特性。数据之间无关系,这样就很是容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。 
NoSQL数据库都具备很是高的读写性能,尤为在大数据量下,这得益于它的无关系性,数据库的结构简单。 
NoSQL无需事先为要存储的数据创建字段,随时能够存储自定义的数据格式。而在关系数据库里,增删字段是一件很是麻烦的事情。若是是很是大数据量的表,增长字段简直就是一个噩梦。

二、关系型数据库(RDBMS)VS 非关系型数据库(NoSQL) 
RDBMS:

  • 高度组织化结构化数据
  • 结构化查询语言(SQL)
  • 数据和关系都存储在单独的表中。
  • 数据操纵语言,数据定义语言
  • 严格的一致性
  • 基础事务

    NoSQL:

  • 表明着不只仅是SQL
  • 没有声明性查询语言
  • 没有预约义的模式
  • 键 - 值对存储,列存储,文档存储,图形数据库
  • 最终一致性,而非ACID属性
  • 非结构化和不可预知的数据
  • CAP定理
  • 高性能,高可用性和可伸缩性

总结: RDBMS 和NoSQL都有各自的特色和使用的应用场景,让关系数据库关注在关系上,NoSQL关注在存储上

 

3、互联网时代面临的问题 

一、3V 和 3高 
3V: 海量的数据流量;多样(商品种类、各式各样);实时的数据需求 
3高: 高并发;高可用;高性能

4、NoSQL 数据模型简介 
传统的关系型数据模型的设计基本上是 基于数据库范式创建1:1 / 1:N / N:N,主外键的关系设计。 
一、NoSQL的设计: 
使用Bson() 相似于json的一种二进制形式的存储格式,简称 Binary JSON,它也一样支持内嵌的文档对象和数组对象。 
二、聚合模型 
高并发的操做是不太建议有关联查询的,互联网公司用冗余数据来避免关联查询,分布式事务是支持不了太多的并发的。 
三、NoSQL数据库的四大分类: 
KV键值对:redis,内容缓存,主要用于处理大量数据的高访问负载等; 
②bson:文档数据库,MongoDB 是一个基于分布式文件存储的数据库,C++编写的。皆在为web应用提供可扩展的高性能数据存储解决方案。它介于关系型数据库与非关系型数据库之间的产品,是非关系型中功能最丰富的,且最像关系型数据库的; 
列存储数据库:分布式文件系统 
图关系型数据库 :它不是放图的,放的是 关系:如朋友圈社交网络等。专一于关系图谱

 

参考:互联网背景下为何会出现NoSQL? - CSDN博客https://blog.csdn.net/u013709087/article/details/78313923

相关文章
相关标签/搜索