1.NoSql数据库简介
1.1技术发展
1.1.1 web1.0时代
早期时代:单体应用(一台服务器,一台数据库)
1.1.2web2.0时代
2.0时代,多台客户端访问,则引发了服务器cpu及内存压力,和数据库IO压力。
1.1.3解决服务器cpu及内存压力
问题场景:用户请求服务器时,首先会通过nginx负载均衡随机分配这个请求到一个服务器中,这个服务器内会生成一个session对象来保存用户信息,那用户第二次请求时,如果nginx随机分配这个请求到另一个服务器中,而这个服务器中根本就没有用户的session。
方案一 :存在cookie中
缺点:1.不安全
2.网络负担效率低
方案二:存在文件服务器或者数据库中
缺点:1.大量的IO效率问题
方案三:session复制
缺点:1.session数据冗余
2.节点越多,浪费越大
方案四:缓存数据库
完全在内存中,速度快
数据结构简单
1.1.4减少IO压力
1.2 NoSQL数据库
1.2.1 NoSQL数据库概述
NoSQL(not only SQL),“不仅仅是SQL”,泛指非关系型数据库。NoSQL数据库不依赖业务逻辑方式存储,而以简单的key-value模式存储,因此大大增加了数据库的扩展能力。
1.不遵循SQL标准。
2.不支持ACID。
3.远超SQL性能。
1.2.2 NoSQL数据库使用场景(秒杀案例)
1.对数据高并发读写
2.海量数据读写
3.对数据高可扩展性的
1.2.3 NoSQL不适合场景
1.需要事务支持
2.基于sql的结构化查询存储,处理复杂的关系。
(用不着sql或用了sql也不行的情况下,请考虑用NOSQL)
1.2.4 Memcache
1.很早出现的NOSQL数据库
2.数据都存在内存中,一般不进行持久化
3.支持单一的key-value模式,支持类型单一
4.一般作为缓存数据库辅助持久化的数据库
1.2.5 Redis
1.几乎覆盖了Memcache的绝大部分功能
2.数据都在内存中,支持持久化,主要用作备份恢复
3.除了支持简单的key-value模式,还支持多种数据结构的存储,比如list,set,hash,zset等。
4.一般作为缓存数据库辅助持久化的数据库
1.2.6 MongoDB
1.高性能、开源、模式自由的文档型数据库。
2.数据都在内存中,如果内存不足,把不常用的数据保存到硬盘
3.虽然是key-value 模式,但对于value(尤其是json)提供了丰富的查询功能
4.支持二进制数据及大型对象
5.可以根据数据的特点代替 RDBMS,成为独立的数据库,或者配合RDBMS,存储特定的数据。
1.3 行列式存储数据库(大数据)
各有利弊,目的都是提高我们的访问效率