Nosql概述

39 阅读3分钟

Nosql概述

为什么要用Nosql

1、单机MySQL的年代

image-20250407161658482

以前一个基本网站访问量不会太大,单个数据库完全够用。

当时都是使用静态网页HTML,服务器没有太大的压力。

思考:这种情况,网站瓶颈是什么?

1、数据量如果太大,一个机器放不下

2、数据的索引(B+tree),一个机器内存也放不下

3、访问量(读写混合),一个服务器承受不住

只要出现以上三种情况之一,就需要晋级

2、Memcached(缓存)+MySQL+垂直拆分(读写分离)

网站80%的情况都是在读,每次都访问数据库很麻烦,所以可以使用缓存来保证效率。

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

image-20250407163701711

3、分库分表+水平拆分+MySQL集群

本质:数据库(读、写)

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

中期Innodb:行锁。

后面开始使用分库分表来解决写的压力!MySQL推出了表分区!但是并没有多少公司使用。

后期又推出了MySQL的集群,很好的满足了一部分需求。

如今推出了一些新型的数据库

image-20250407164306400

4、新型数据库

MySQL等关系型数据库不够用了!

MySQL有时候用来存储一些比较大的文件,博客,图片等,数据库表很大,效率就低了。

如果有一种数据库专门来处理这种数据,MySQL压力就变小了。

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

image-20250407165844035

为什么要用NoSQL!

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

这个时候就需要NoSQL数据库,NoSQL可以很好的处理这些情况。

什么事NoSQL

NoSQL = Not Only SQL(不仅仅是SQL)泛指非关系型数据库,可以应对当今超大规模的高并发的场景。

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

很多的数据类型(用户的个人信息,社交网络,地理位置)不需要一个固定格式,不需要多余的操作就可以横向扩展。

NoSQL特点

1、方便扩展(数据之间没有关系,很好扩展)

2、大数据量高性能(redis一秒可以写8万次,读11万次,NoSQL的缓存记录级的,是一种细粒度的缓存,性能比较高)

3、数据类型是多样型的(不需要实现设计数据库!随取随用!)

4、传统RDBMS(关系型数据库)和NoSQL

传统RDBMS(关系型数据库)
- 结构化组织
- SQL
- 数据和关系都存在单独的表中
- 严格的一致性
- 基础的事务
- ...
NoSQL
- 不仅仅是数据
- 没有固定的查询语言
- 键值对存储,列存储,文档存储,图形数据库
- 最终一致性
- CAP定理和BASE(异地多活)
- 高性能,高可用,高可扩
- ...
了解:3V+3高

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

1.海量Volume

2.多样Variety

3.实时Velocity

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

1.高并发

2.高可拓

3.高性能

NoSQL的四大分类

KV键值对(redis)

文档型数据库(MongoDB:基于分布式文件存储的数据库,用来存储大量的文档)

列存储数据库(HBase,分布式文件系统)

图关系数据库(Neo4J 。不是存图形,是存关系的,如朋友圈社交网络)