NoSQL概述
为什么要用NoSql?
- 数据量如果太大,一个机器放不下
- 数据的索引(如MySQL的B+Tree,300万一定要建立索引),一个机器内存也放不下
- 访问量(读写混合),一个服务器承受不了
用户的个人信息、社交网络、地理位置、用户自己产生的数据、用户日志等等爆发式增长!这个时候我们就需要使用NoSQL数据库,NoSQL数据库可以很好的处理以上问题。
NoSQL特点
- 方便扩展(数据之间没有关系,很好扩展)
- 大数据量高性能(Redis 写8w/s 读11w/s),NoSQL的缓存记录级是一种细粒度的缓存,性能会比较高
- 数据类型是多样型的(不需要事先设计数据库)
- 传统的RDBMS和NoSQL
传统RDBMS:
- 结构化组织
- SQL
- 数据和关系都存在单独的表中
- 操作操作,数据定义语言
- 严格的一致性
- 基础的事物
- …
NoSQL:
- 不仅仅是数据
- 没有固定的查询语言
- 键值对存储,列存储,文档存储,图形数据库(社交关系)
- 最终一致性
- CAP定理和BASE理论(BA、S、E)(异地多活)
- 高性能、高可用、高扩展
NoSQL四大分类
KV键值对
- 新浪:Redis
- 美团:Redis + Tair
- 阿里、百度:Redis + memecache
文档型数据库(bson格式,和json一样)
- MongoDB(一般必须要掌握)
- 是一个基于分布式文件存储的数据库,C++编写,主要用于处理大量的文档
- MongoDB是一个介于关系型数据库和非关系型数据中中间的产品!MongoDB是非关系型数据库中功能最丰富,最像关系型数据库的!
- CouchDB
列存储数据库
- HBase
- 分布式文件系统
图关系数据库
他不是存图形,放的是关系,比如:朋友圈社交网络,广告推荐!
- Neo4j
- InfoGrid