# 传统数据库面临问题

  1. 关系型数据库如MySQL、Oracle等,在曾经用户访问量不大的情况下稳定性高,性能也不俗,成为了家家户户存储数据的首选,但是随着时代的发展,网站动辄成千上万的QPS(每秒访问量),传统的数据库已经有点难以招架,出现了性能问题

  2. 关系型数据库的关系二字尤为重要,数据都是存储在固定结构的表里,表结构更改比较困难

  3. 关系型数据库为了维护表的读取性能,往往会创建索引用于提升查询效率,而随着数据的不断增多,索引的维护也变得愈发困难

  4. 关系型数据库在全文索引方面,往往不具备分词功能,查询数据的精准度不够,查询效率也不行

问题总结: IO压力大,出现性能瓶颈,数据库表扩展困难,索引维护不易,全文索引效果差

# NoSQL介绍

全称:Not Only SQL,不仅仅是SQL,也被称为non-relational,非关系型数据库

优点:

  1. 大数据量: 可以高效存取大量数据
  2. 高扩展性: 没有关系型特性,数据复制简单,通过增设廉价的服务器,来使横向扩展变得更容易
  3. 高性能: NoSQL数据库通过键值对来获取数据,通过hash算法往往可以很快查找到所需数据,并且运行再内存中,比关系型数据库的IO读取方式上限高
  4. 数据模型灵活: 没有指定的数据模型,增删改一个字段十分便捷
  5. 高可用性: 许多NoSQL数据库通过分片等技术可以在不影响性能的前提下,轻松实现高可用架构

目前市场上有多种类型的NoSQL数据库,他们各自擅长的点不同,往往适用于不同的场景

# NoSQL种类

分类 常见产品 数据类型 优点 缺点 典型案例
键值数据库 Redis Key-Value 查找速度快 容量受内存限制 购物车、验证码
文档数据库 MongoDB JSON格式存储 表结构可变、易于扩展 只支持单文档事务 评论、流水日志
列式数据库 HBase 列式存储 查找速度快 不适合对实时性要求高的场景 日志、博客
图数据库 Neo4j 图结构 借助图论算法解决特定业务 其他领域受限 关系图谱