什么是NoSql

181 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

为什么要用nosql

单机mysql的时代

这种情况下,网站的瓶颈是什么?

  • 数据量太大,一个机器放不下
  • 数据索引(B+Tree),一个机器内存放不下
  • 访问量(读写混合),一个服务器承受不了

只要出现以上的情况,架构需要升级

Memcached(缓存)

asdmemcached + mysql + 垂直拆分(读写分离)

网站80%都在读,没有必要每次查询都操作数据库,可以在中间加一层缓存,减轻数据库压力,保证效率

发展过程:优化数据结构和索引 -> 文件缓存(IO) -> memcached

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

技术和业务的发展,对人的要求也越来越高!

本质:数据库(读、写)

早些年MyISAM:表锁

现在Innodb:行锁

慢慢的就开始使用分库分表解决写的压力!Mysql推出了表分区(用的比较少)

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

最近的年代

三体中将最近的300年成为技术爆炸

mysql等关系型数据库不够用了!数据量很多,变化很快!

mysql存储一些较大的文件,效率就很低了,如果有一种数据库来专门处理这种数据,mysql 的压力就小很多,大数据的IO压力下表几乎没发更大!

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

为什么要用NoSql

用户的个人信息,社交网路、地理位置。用户自己产生的数据,用户日志等待爆发式增长,这个时候就需要使用NoSql来解决这些问题

什么是NoSql

NoSql = Not Only Sql (不仅仅是Sql)

泛指非关系型数据库,随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0时代,尤其是超大规模的高并发的社区,暴露出来的问题,Nosql在当今大数据环境下发展的十分迅速,Redis是发展最快的,而且我们当下必须掌握

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

NoSQL特点

解耦

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

2、大数据量高性能(Redis一秒写8w次,读11w次)

3、数据类型是多样性的(不需要事先设计数据库,随取随用)

4、传统RDBMS和NoSql

传统的RDBMS
- 结构化组织
- sql
- 数据和关系都存在单独表中
- 严格一致性
- 基础的事务
......
Nosql
- 不仅仅是数据
- 没有固定的查询语言
- 键值对存储,列存储,文档存储,图形数据库(社交关系)
- 最终一致性
- cap定力和base理论(异地多活)
- 高性能,高可用,高扩展
......

\