图解|什么是高并发利器NoSQL( 二 )


图解|什么是高并发利器NoSQL文章插图

  • 场景二
Leader大熊又给了小黑一个需求 , 让他存储一个数据包 , 数据包其实是Json的串 , 里面有很多字段 , 但是现在也不明确PM要怎么用 , 字段是否会调整 , 所以用MySQL存储的话 , 字段还不能确定 , 于是小黑加了个extra字段来存储后续的扩展 , 暂时解决了 。
图解|什么是高并发利器NoSQL文章插图
  • 场景三
Leader大熊让小黑设计一个并发访问大一些的服务 , 来完成用户账号体系查询 , 目前差不多有4亿账号ID , 大熊搞了C++服务&存储选择了MySQL , 性能怎么也提不上去 , 真是一筹莫展 。
图解|什么是高并发利器NoSQL文章插图
MySQL横行江湖数十载 , 无人匹敌 , 尤其在事务、数据一致性、关联查询等场景具有绝对的统治力 , 确实是数据库蓝波万 。
图解|什么是高并发利器NoSQL文章插图
科技进步和新常用新形式的出现也让MySQL有些捉襟见肘 , 毕竟MySQL不是万金油 , 要保住地位必须与时俱进才行 。
在很多场景中我们并不需要事务、强数据一致性、多表关联等特性 , 所以我们需要一类更轻快的数据库 , 它就是NoSQL 。
4. MySQL vs NoSQL
我们有必要将MySQL和NoSQL进行一番对比 , 来加深印象:
  • MySQL是高度组织化结构化的数据存储 , NoSQL无结构化存储
  • MySQL使用结构化查询语句 , NoSQL无查询语言
  • MySQL需要定义字段和模式 , NoSQL自由扩展
  • MySQL海量数据时读写性能劣于NoSQL
  • MySQL扩展性较差
上面这些好像全是diss老大哥MySQL的 , 但是并不是说MySQL很弱 , 相反是MySQL非常强悍 。
【图解|什么是高并发利器NoSQL】高并发&高可用&高可扩展的新要求成就了NoSQL , NoSQL之所以可以应对这些新场景 , 和它的设计思想有很大的关系 。
或许可以用葡萄来说明为啥NoSQL更适用于高并发场景 。
  • NoSQL是一粒一粒的葡萄 , 存取都非常方便 , 读写速度快
  • MySQL是一串葡萄 , 每一粒都是相互关联的 , 存取较为麻烦 , 读写速度慢
两类数据库的对比就说这么多 , 我们来看看几款大白在实际工作中用过的NoSQL吧!
5. NoSQL明星项目
开源的NoSQL非常多 , 大白按照层次挑几个典型的代表来和大家分享一下 。
NoSQL可以是单机的 , 也可以是分布式的 , 可以根据自己的目的来使用 。
今天要介绍的几款数据库:Redis、Pika、SSDB、RocksDB、LevelDB 。
其中LevelDB是谷歌开发的 , RocksDB是Facebook在LevelDB的基础上增加新特性开发的 , Redis则不用多说 , SSDB和Pika则是国内开源的类Redis的数据库 , 也非常棒 。
图解|什么是高并发利器NoSQL文章插图
接下来看看这几款数据库的特点、联系、底层原理等有趣的东西 。
5.1 谷歌出品LevelDB
LevelDB是谷歌的Sanjay Ghemawat和Jeff Dean使用C++开发的单进程/单机版持久化的key-value数据库 , 于2011年7月开源 , 可以说是重磅产品 。
LevelDB支持了最基础的key-value操作:Get/Put/Delete , 但是并没有封装其他的东西 , 严格意义上来说只是NoSQL存储引擎 。
图解|什么是高并发利器NoSQL文章插图
一般来说 , 机械磁盘最害怕的就是随机读写 , 磁盘呼噜噜转起来就意味着读写效率在下降 。


推荐阅读