当前位置:首页 > 问答 > 正文

说说那些NoSQL数据库的具体用法和实际操作案例,帮你更好理解它

说起NoSQL数据库,咱们可以把它想象成一个超级灵活的大仓库,它不像我们平时用的那种规规矩矩的表格仓库(关系型数据库),什么东西都得按固定格子放,NoSQL仓库的货架各式各样,你可以根据要存的东西,随时调整货架的形状和大小,下面我就用几个生活中的例子,说说几种常见的NoSQL仓库都是怎么用的。

第一种,键值对仓库,这就像我们用的储物柜。

它的用法最简单直接:一个唯一的钥匙(Key)对应一个包裹(Value),你存东西的时候,把包裹塞进一个柜子,拿到钥匙;取东西的时候,用钥匙打开柜子,拿出整个包裹,你不需要关心包裹里面具体装了啥,要拿就整个拿走。

实际操作案例:购物车。 这是最经典的用法了,比如你在淘宝或者京东上买东西,每点一次“加入购物车”,后台的NoSQL数据库(比如Redis)就会这样做:把你的用户ID当作唯一的“钥匙”,然后把你的整个购物车信息(比如商品ID、数量、加入时间等打包成一个“包裹”)存起来,下次你再打开购物车页面时,系统只用你的用户ID这把“钥匙”去数据库里,把整个“购物车包裹”取出来,瞬间展示给你,这种方式速度极快,因为结构简单,而且像Redis这种数据库,数据主要放在内存里,读写速度是微秒级别的,比你用传统数据库现拼SQL语句去好几个表里查要快太多了。(来源:常见电商架构设计案例)

第二种,文档型仓库,这就像一本本可以随意增减页数的活页笔记本。

它比键值对仓库聪明一点,它存的也是一个一个的“文档”(类似于键值对里的“值”),但这个文档本身是有结构的,最常见的就是用JSON格式,就像一本活页笔记本,每个笔记本属于一个人(相当于一个Key),但笔记本里的每一页可以自由记录不同的信息,比如一页写个人资料,一页写博客文章,一页写评论,而且每页的格式可以完全不一样。

实际操作案例:用户个人信息页。 想象一下一个社交网站的用户主页,比如像知乎的个人主页,这个页面包含了很多不同类的信息:用户的基本资料(姓名、简介)、他发表的文章列表、他关注的用户、他收藏的内容等等,如果用传统表格数据库,这些信息可能要分散在七八个不同的表里,查询起来很麻烦,但用文档数据库(比如MongoDB),可以把一个用户的全部信息,都塞进一个JSON文档里存起来,查询时,直接把这个“用户文档”整个取出来,前端页面需要什么数据就直接从这个文档里拿,如果用户以后增加了新的信息,喜欢的电影”,直接在这个文档里加一个新字段就行,完全不用像改数据库表结构那样兴师动众。(来源:MongoDB官方用例介绍及常见Web应用架构)

第三种,列族仓库,这个有点像一个大号的、可以横着竖着无限扩展的Excel表格。

它的特点是,它的“列”不是固定的,想象一个表格,每一行代表一个主体(比如一个用户),但每一行的列可以完全不同,它把数据按“列族”分组存储,这样当你只需要查询某一类数据时,数据库可以非常快地只读取那几个相关的列,避免了扫描所有数据的开销,这种仓库是为处理海量数据而生的。

实际操作案例:物联网传感器数据。 比如一个全国性的气象监测网络,有成千上万个传感器,每秒钟都在记录温度、湿度、气压等数据,如果用文档数据库,每个传感器的每秒数据都存成一个文档,文档数量会爆炸,而用列族数据库(比如HBase或Cassandra)就非常合适,我们可以把“传感器ID”作为行键(Row Key),然后每一列代表一个时间点的某种监测数据,它的强大之处在于,当我们需要查询“北京地区所有传感器在昨天下午的平均温度”时,数据库可以高效地只扫描“温度”这一列族下的数据,而忽略掉湿度和气压等其他数据,在海量数据背景下,这种查询效率非常高。(来源:大数据及物联网领域数据处理案例分析)

第四种,图数据库,这个最好理解,它就像一张巨大的关系网。

它不关心数据本身的具体值,最关心的是数据之间的关系,它用“节点”来代表实体(比如人、地点、商品),用“边”来代表节点之间的关系(比如朋友关系、购买关系、居住在)。

实际操作案例:社交网络的好友推荐。 比如微信的“好友推荐”或者淘宝的“猜你喜欢”,在图数据库(比如Neo4j)里,可以轻松地表达“用户A是用户B的朋友”、“用户B是用户C的朋友”,那么系统就能很快地推断出“是否应该把用户C推荐给用户A?”(因为他们有共同好友B),它可以通过分析复杂的网络关系,找出那些看似不直接相连,但通过多层关系紧密联系的节点,这种“关系查询”如果用传统SQL数据库来做,需要编写非常复杂、性能低下的多层连接查询,而图数据库是专门干这个的,就像用渔网捞鱼和用鱼竿钓鱼的区别,效率天差地别。(来源:社交网络及推荐系统技术解析)

NoSQL数据库没有绝对的好坏,它们是为了解决不同类型的问题而诞生的,当你需要极速缓存时,想想键值对仓库;当你的数据像一本本结构灵活的个人档案时,想想文档仓库;当你面对的是天文数字般的海量数据时,列族仓库可能帮上忙;而当你的业务核心是挖掘事物之间的深层联系时,图数据库就是你的利器,理解了它们各自最擅长的场景,就能在合适的场合选择最合适的工具。

说说那些NoSQL数据库的具体用法和实际操作案例,帮你更好理解它