小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
为什么要用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理论(异地多活)
- 高性能,高可用,高扩展
......
\