NoSQL简介

名称由来

NoSQL 这个名称其实要追溯到2009年,Twitter 上被人随手创建的一个tag, 可见万事都有它的随机性和创新性。至于大家对于 NoSQL 等于 Not Only SQL 或者 no-relationSQL 的解读,也就见仁见智了。

本质

A NoSQL database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases. NoSQL databases are document, key-value, graph or wide-column stores.

NoSQL数据库提供了一种以模块化方式存取数据的机制,不同于关系型数据库的表格形式。本质是一种聚合型数据库,它将所有相关的信息聚合在一起。
NoSQL数据库主要有文件,键值对,图形和行列等形式存储。

代表作品

  • Key-value : Redis, Riak
  • Document: MongoDB, CounchDB
  • Wide-column : HBase, Cassandra

其中特别注意的是行列形式(Wide-column),虽然也利用了SQL中的 row 和 column 这种表格形式,但每一行的column name 可以不同,这就极大的扩展了存储自由度。

和传统SQL的区别

SQL databases are relational, NoSQL are non-relational.
SQL databases use structured query language and have a predefined schema. NoSQL databases have dynamic schemas for unstructured data.
SQL databases are vertically scalable, NoSQL databases are horizontally scalable.
SQL databases are table based, while NoSQL databases are document, key-value, graph or wide-column stores.
SQL databases are better for multi-row transactions, NoSQL are better for unstructured data like documents or JSON.

这里分享一个示例,传统关系型数据库会把相同内容的信息存放在一张表中,比如学生信息表和导师信息表,各表之间通过某种自定义的方式进行表关联 JOIN。
而NoSQL,非关系型数据库 (也叫聚合性数据库,这个名字非常见名知意),将关于这位学生的所有相关信息都存放在一个地方,或者一个document中,即该文件相当于个人档案,包含和此人有关的所有信息:
NoSQL 的文件表现方式
但是问题来了,如果我想查询ID为222222的导师手上的所有学生信息该怎么办?这就比较麻烦了,因为没有一个地方存放这中信息。这时候我们需要引入 MapReduce 的模型概念。

MapReduce

MapReduce是一种对数据进行归纳整理的程序模型
MapReduce = Map + Reduce, Map用于对数据的filtering过滤和sorting排序, Reduce对数据进行summary总计操作
在这里插入图片描述

SQL or NoSQL ?

那么在开发中该选哪一种数据库呢?我的看法是综合运用,因为两者各有优点,我们要做的就是将二者的长处结合在一起。
如果你只想进行某一种针对聚合型数据的查询,则选择NoSQL。如果查询的方式比较多样和复杂,就需要利用SQL的实现。
在实际业务开发中也是这样实践的,比如通常将 MySQL/Oracle 作为真正存储数据和进行复杂查询的Database, 再结合 Redis 的缓存加持,存放一些不常变化的数据,以达到最优解。

部分内容参考 BitTiger视频 , Wikipedia
Ending~

后续也会出炉关于Redis的文章, 欢迎大家留言一起学习探讨!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值