NoSQL

作者: 李霖弢 | 来源:发表于2021-01-06 10:48 被阅读0次

SQL的弊端

高并发下有瓶颈,尤其不好处理写入/更新频繁的场景。

  1. 关系型数据库以行为存储单位,即使只修改其中一列也会将整行数据读入内存,导致 IO 较高
  2. 并发控制代价大,加锁必然影响性能
  3. 大量的二级索引占用空间且影响读写
  4. 表结构扩展不方便(修改期间需要锁表,部分服务不可用)
  5. 全文搜索功能弱(缺乏分词能力,like查询效率低)

NoSql

全称为Not Only SQL,泛指非关系型数据库,通常性能更强但缺失事务等功能
适用场景:

  1. 频繁写入,写远多于读(如操作流水、日志记录)
  2. 高并发(如秒杀活动)
  3. 下表中包含的其他场景
KV型NoSql(代表----Redis)

以键值对形式存储,查询速度快(只能K查V,不能V查K)
通常运行于内存,用于缓存的场景

搜索型NoSql(代表----ElasticSearch)

通过倒排索引方便进行全文搜索
内存占用大,数据结构不灵活,只适用于做搜索

倒排索引
文档型NoSql(代表----MongoDB)

和传统SQL数据库比较接近,没有Schema,以半结构化数据(JSON或XML)存储数据
优点在于方便扩展,读写性能优越。
缺点在于空间占用大(空间预分配机制+删除数据后空间不释放),事务支持度较差,多表关联查询较差

SQL数据库 MongoDB
集合
文档
字段
列式NoSql(代表----HBase)

方便扩展,且读写性能极高,但属于KV式,条件查询支持度差,且不支持分页查询(因为统计不了数据总数)

  1. 列式存储
id name age
1 AA 12
2 BB 18

变为

id name
1 AA
2 BB
id age
1 12
2 18
  1. 数据压缩


相关文章

网友评论

      本文标题:NoSQL

      本文链接:https://www.haomeiwen.com/subject/zefnoktx.html