NoSQL概述

为什么要用NoSql?

  1. 数据量如果太大,一个机器放不下
  2. 数据的索引(如MySQL的B+Tree,300万一定要建立索引),一个机器内存也放不下
  3. 访问量(读写混合),一个服务器承受不了

用户的个人信息、社交网络、地理位置、用户自己产生的数据、用户日志等等爆发式增长!这个时候我们就需要使用NoSQL数据库,NoSQL数据库可以很好的处理以上问题。

NoSQL特点

  1. 方便扩展(数据之间没有关系,很好扩展)
  2. 大数据量高性能(Redis 写8w/s 读11w/s),NoSQL的缓存记录级是一种细粒度的缓存,性能会比较高
  3. 数据类型是多样型的(不需要事先设计数据库)
  4. 传统的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