Nosql概述

1.为什么要学习Nosql

1.单机mysql的年代

 

 

90年代,一个基本的网络的访问量一般不会太大,单个数据库完全够用

那个时候更多的去使用静态网页,服务器没有什么压力

思考这种情况下,整个网站的瓶颈是什么

  1. 数据量如果太大,一个机器放不下
  2. 数据的索引(B+Tree),一个机器也放不下
  3. 访问量(读写混合),一个服务器承受不了

出现上述三种情况,需要晋级了

2.Memcached(缓存)+Mysql+垂直拆分

网站80%的情况都是在读数据,每次都去查询数据库的话就十分麻烦,所以希望减轻数据库的压力,可以使用缓存来提高效率

发展过程:优化数据结构和索引-->文件缓存(IO)-->Memcached(当时最热门的缓存技术)

 

3.分库分表+水平拆分+Mysql集群

技术和业务在发展的同时,对人的要求也越来越高(技术爆炸)

操作数据库的本质是读和写

早些年MyISAM:表锁,十分影响效率,高并发下就会出现严重的锁问题

之后转战Innodb:行锁

慢慢的就开始使用分库分表来解决写的压力,Mysql在哪拿个年代推出了表分区,但没有多少公司使用

Mysql的集群,很好的满足了那个年代的所有需求

Mysql集群:在不同的集群中存入等分的数据,三个集群,每个集群各存1/3的数据

 

 

 

 

4.如今最近的年代

2010-2020十年之间,时间已经发生了翻天覆地的变化(定位,音乐,热搜)

Mysql等关系型数据库不够用了,数据量很大,变化很快

Mysql有的使用它来存储一些比较大的文件,博客,图片,数据库表很大,效率很低

需要一种数据库来专门处理这些数据,Mysql的压力就变得什么小了

在大数据IO压力下,表几乎没法更改

5.目前一个基本的互联网项目

 

 

2.为什么要使用NoSQL

用户的个人信息,社交网络,地理位置。用户自己产生的数据,用户日志等等爆发式的增长

这个时候我们需要使用NoSQL数据库,NoSQL可以很好的处理以上的情况

3.什么是NoSQL

NoSQL==Not Only SQL(不仅仅是SQL)

关系型数据库:表格,行,列

NoSQL泛指非关系型数据库,随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0时代,尤其是超大规模的高并发的社区,暴露出来跟多难以克服的问题

NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的,而且是我们当下一定要掌握的一个技术。

很多的数据类型用户的个人信息,社交网络,地理位置,这些数据类型的存储不需要一个固定的格式。

不需要多余操作就可以横向扩展的。

例如:Map<String,Object>使用键值对来控制

4.NoSQL的特点

解耦

  1. 方便扩展(数据之间没有关系,很好扩展)
  2. 大数据量高性能(Redis1秒写8万次,读取11万次,NoSQL的缓存记录级,是一种细粒度的缓存,性能会比较高)
  3. 数据类型是多样型(不需要事先设计数据库,随取随用,如果数据量十分大的表,很多人就无法设计)
  4. 传统的RDBMS和NoSQL

传统的RDBMS

  • 结构化组织
  • SQL语句
  • 数据和关系都存在独立的表中
  • 数据操作,定义数据语言
  • 严格的一致性
  • 基础的事务
  • ......

NoSQL

  • 不仅仅是数据
  • 没有固定的查询语言
  • 键值对存储,列存储,文档存储,图形数据库(社交关系)
  • 最终一致性
  • CAP定理和BASE(异地多活)初级架构师
  • 高性能,高可用,高可扩
  • ......

5.了解:3V+3高

大数据时代的3V:主要是描述问题的

  1. 海量Volume
  2. 多样Variety
  3. 实时Velocity

大数据时代的3高:主要是对程序的要求

  1. 高并发
  2. 高可拓
  3. 高性能

 

posted @ 2020-08-12 14:18  罗晓峥  阅读(160)  评论(0编辑  收藏  举报