2023-03-18

Nosql简述

在单机Mysql时可能出现:

  • 数据量太大
  • 数据的索引太大
  • 访问量,读写混合量太大

进而出现Memcached(缓存)+ Mysql + 垂直拆分(读写分离)

通过多台数据库服务器分配读写的任务分摊压力,使用缓存来保存以提高效率


分库分表 + 水平拆分 + Mysql集群

早年MyISAM:表锁,高并发下会出现锁问题

现今Innodb:行锁

所以通过分库分表来减少写的压力,将读写统一为一个集群,通过多集群分摊压力提高效率


NoSql的出现

用户的各类信息爆发式增长,数据量过多,Mysql等关系型数据库不够用,为了解决这类情况需要用到NoSql数据库


什么是NoSQL

NoSQL = Not only Sql,泛指非关系型数据库

关系型数据库:表格,行,列

非关系型数据库:不需要一个固定的存储格式,可以简单地进行横向扩展


NoSQL特点

  • 方便扩展
  • 大数据量高性能
  • 数据类型多样,不需要事先设计数据库
  • 传统RDBMS
    • 结构化组织
    • SQL
    • 数据和关系都存在单独的表中
    • 数据操作,数据定义语言
    • 严格的一致性
    • 基础的事务
    • ······
  • NoSQL
    • 不仅仅是数据
    • 没有固定的查询语言
    • 键值对存储,列存储,文档存储,图形数据库存储(社交关系)
    • CAP定理和BASE(异地多活)
    • 高性能,高可用,高可扩展
    • ······

NoSQL的四大分类

KV键值对

  • Redis
  • Tair
  • memecache

文档型数据库(bson格式)

  • MongoDB
  • ConthDB

列存储数据库

  • HBase
  • 分布式文件系统

图关系数据库

  • Neo4j InfoGrid