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


图解|什么是高并发利器NoSQL文章插图
1.迷茫的小黑
小黑最近有点郁闷 。
手头的工作不是特别喜欢 , 技术退步有点严重 , 于是想出去看看机会 。
小黑通过朋友内推 , 前几天去北京CBD附近的一家大公司面试 , 被一些问题三连击直接跪掉了 。
大白安抚小黑说:"黑哥 , 你要知道没有好工作 , 只有好工人 , 其实哪儿都差不多 , 都是打工嘛!"
小黑说:"那咋能一样 , 工具人么得意思 , 俺的目标是架构师!"
小黑把大白数落了一顿 , 毕竟不想当架构师的后端不算好的程序员 , 然后开始说他碰到的问题 , 原来事情是这样的:
小黑开场白介绍完自己之后 , 面试官问他喜欢哪个领域 , 小黑说分布式存储 。
面试官附和道:"确实是个不错的领域,那问你几个存储相关的问题吧!"
小黑窃喜以为问题在自己知识射程范围内 , 于是面试官抛出了几个问题:
1.在实际工作中用到过哪些NoSQL?
2.NoSQL相比MySQL有什么优缺点?
3.WAL和LSM这些底层机制了解吗?
4.如何设计一个NoSQL 。
听完这几个问题 , 小黑慌得一批 , 东扯西扯了几句后 , 面试官也看出小黑关于存储的知识边界了 , 很有礼貌地不再追问了 。
出于友好礼节 , 问了几个小黑简历上的东西 , 最后结束了这场面试 。
大白听完也有点慌 , 故作镇定说:"黑哥 , 你这几个问题都比较典型 , 周末写一篇文章 , 给你讲讲这块东西 。 "
小黑笑道:"哈哈哈 , 就等你这个呢 , 老规矩周五放松一下!上周恰烧烤了 , 这周恰个火锅呗"
大白和小黑真是吃喝二人组啊 , 言归正传 , 开始NoSQL之旅吧!
2. 大器晚成NoSQL
NoSQL一词最早出现于1998年 , 受限于当时的技术场景和应用情况 , 并没有折腾出什么大浪 , 但是在2009年NoSQL再次被提出 , 这一次出场有点炸裂 , 颇有明日之星的赶脚 。
图解|什么是高并发利器NoSQL文章插图
一般来说 , 这事行不行往往和口号有很大关系 , 像我大白的口号就是:人生实苦 , 早点退休 。
2009年在亚特兰大的一次重要会议上对NoSQL提出了个文雅 本质上NoSQL是一类数据库的泛称 , 具体的可以分为以下几种:
图解|什么是高并发利器NoSQL文章插图
本文只介绍键值对key-value型数据库 , 先看下NoSQL名字的来源和含义的几种解读吧:

  • 解读一
NoSQL 意为"No SQL" 翻译为SQL已死 。 潜台词是这类数据库没有SQL语句 , 摒弃了老大哥MySQL的路子 , 让它退休 。
嚯 , 好家伙 , 口气不小 , 事实证明 , 这种"SQL已死"的自信确实有点扯犊子了 。
  • 解读二
NoSQL 意为"Not Only SQL" , 显然没有那么嚣张了 , 倒添了几分谦虚 , 不仅仅是SQL , 除了继承了老大哥MySQL的一些功能 , 还增加了新东西 , 听起来还不错的样子 。
  • 解读三
NoSQL本质上是非关系型数据库 , 我们都知道关系型数据库一般缩写为RDS或者RDB , 所以有人觉得NoSQL应该称为"No Relational Database" , 简称"没关系数据库" 。
综上 , 我们更倾向于NoSQL为"Not Only SQL" , 作为关系型数据库的补充而存在的一种新形式的数据库 。
3. 给NoSQL一首歌的时间
工欲善其事 必先利其器 , 大家都这么忙 , 必须要给个学习NoSQL的理由 。
我们试想几种熟悉的场景(点击查看大图):
  • 场景一
Leader大熊给小黑一个需求 , 这个需求在几千万行的MySQL中加个字段 , 由于是生产环境需要找DBA手动执行 , 好家伙排队大半天才给执行 , 给小黑气的 , 太耽误事了太不方便了 。