Nosql概述

87 阅读3分钟

为什么要用Nosql

一般的关系型数据库无法满足需求.

单机mysql的年代! image.png

90年代,一个基本的网站访问量很小,单个数据库就可以满足正常的使用需求! 使用最多的互联网产品就是静态网站,服务器压力小.

整个网站的瓶颈是什么?

  • 1.1数据量如果太大,一个机器放不下!
  • 1.2数据的索引(B+ Tree),一个机器内存也装不下!
  • 1,3访问量(读写混合),一个服务器无法承担. 以上三种情况,都需要涉及缓存.

Memcached(缓存)+MySQL+读写分离

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

image.png

网站大多数时候都是在读,每次都执行查询数据库的话耗时长效率低,减轻数据读写压力,通过读写缓存.

分库分表+MySQL集群

本质: 数据库的读和写

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

Innodb:行锁 后来使用分库分表来解决写的压力.

** 为什么要用NoSQL**

MySql等关系型数据库不够用!数据种类多,量大! 用户的个人信息.社交网络,地理位置,用户自己生产的数据,用户日志等等爆发式增长!

什么是NoSQL

NoSql = Not only SQL(不仅仅是sql); 泛指非关系型数据库,随着web2.0互联网的诞生!传统的关系型数据库难以应付!尤其是超大规模的高并发社区暴露出来很多难以克服的问题,NoSql在当今大数据环境下发展十分迅速,redis发展是快速的,而且是我们当下必须掌握的一个技术!

很多的数据类型如用户的个人信息,社交网络,地理位置,这些数据类型的存储不需要一个固定的格式!不需要多样的操作就可以横向拓展! Map<String,Object>使用键值对的形式来控制!

NoSql的特点

解耦!

  • 方便拓展(数据之间没有关系,很好拓展)

  • 大数据量高性能(redis一秒8万次,读取11万,NoSql的缓存记录级,是一种细粒级的缓存,性能会比较高!)

  • 数据类型是多样性的!(不需要事先设计数据库,随取随用!如果是数据量十分大的表,设计会变得很复杂)

  • 传统的关系型数据库:

    • 结构化组织;
    • sql;
    • 数据和关系都存在于单独的表中;
    • 数据定义语言;
    • 严格的一致性.
    • 基础的事务
  • NoSql

    • 不仅仅是数据
    • 没有固定的查询语言
    • 键值对存储,列存储,文档存储,图形数据库
    • 最终一致性
    • cap定理和BASE(异地多活)
    • 高性能,高可用,高可扩

拓展

大数据时代的3V:
1.Volume(海量)
2.Variety(多样)
3.Velocity(实时)

大数据时代的3高:
1.高并发
2.高可扩
3.高性能

真正的企业项目实战中:关系型+非关系型结合.