初识NoSQL

开始之前,因为最近在做一个项目,其中用到了redis,正所谓不谋万世者,不足谋一时,不谋全局者,不足谋一域,我们先介绍一下NoSQL,从宏观上把控非关系型数据库的特点,再详细去研究redis,相信这样的学习的效率也是非常高的。

废话不多说,我们先来介绍下NoSql。

概念

NoSQL(NoSQL=NotOnly SQL),意即“不仅仅是SQL”。

随着web2.0的快速发展,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的社会性网络服务类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型、分布式数据存储则由于其本身的特点得到了快速的发展,它们不保证关系数据的ACID特性。

NoSQL概念在2009年被提了出来。NoSQL最常见的解释是“non-relational”,“Not OnlySQL”也被很多人接受。在不到一年的时间,NoSQL就开始风生水起,大大小小的Web站点在追求高性能高可靠性方面,不由自主都选择了NoSQL技术作为优先考虑的方面。

NoSQL一词最早出现于1998年,是CarloStrozzi开发的一个轻量级、开源的、不提供SQL功能的关系数据库。直到2009年NoSQL再次被提出,NoSQL的概念发生了天翻地覆的改变,就像它的名字一样,不提供SQL功能的非关系型数据库。我们知道了NoSQL的产生背景,但是为什么它得到了快速发展?

传统关系数据库的瓶颈

传统的关系数据库具有不错的性能,高稳定型,久经历史考验,而且使用简单,功能强大,同时也积累了大量的成功案例。在互联网领域,MySQL成为了绝对靠前的王者,毫不夸张的说,MySQL为互联网的发展做出了卓越的贡献。

在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。

到了最近10年,网站开始快速发展。火爆的论坛、博客、sns、微博逐渐引领web领域的潮流。在初期,论坛的流量其实也不大,如果你接触网络比较早,你可能还记得那个时候还有文本型存储的论坛程序,可以想象一般的论坛的流量有多大。

SQL语言和关系型数据库(MySQL、PostgreSQL、Oracle等)是通用的数据解决方案,占有绝大多数的市场。不过在最近兴起的NoSQL运动中,涌现出一批具备高可用性、支持线性扩展、支持Map/Reduce操作等特性的数据产品,它们具有如下特性:

优点:

1.事务处理---保持数据的一致性;

2.由于以标准化为前提,数据更新的开销很小(相同的字段基本上只有一处);

3.可以进行Join等复杂查询。

缺点:

1.频繁的写入操作、相对较少的读取统计信息的操作(如网站访问计数器),应该使用基于内存的Key/Value(键/值)存储系统(如Redis)或者是具备本地更新特性的文档存储系统(如MongoDB)。

2.海量数据(如数据仓库中需要分析的数据)适合存储在一个结构松散、分布式的文件存储系统中,如Hadoop。

3.存储二进制文件(如mp3或者pdf文档)并且能够直接为用户的浏览器提供下载功能,可以使用Amazon S3。

4.临时性的数据(如网站的session、缓存HTML页面信息等)适合存储在Memcache中。

NOSQL的优势

易扩展

NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。

大数据量,高性能

NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。

一般MySQL使用 Query Cache,每次表的更新Cache就失效,是一种大粒度的Cache,在针对web2.0的交互频繁的应用,Cache性能不高。而NoSQL的 Cache是记录级的,是一种细粒度的Cache,所以NoSQL在这个层面上来说就要性能高很多了。

灵活的数据模型

NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。这点在大数据量的web2.0时代尤其明显。

高可用

NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。比如Cassandra,HBase模型,通过复制模型也能实现高可用。

总结

当然有优点也有缺点,只不过NoSQL数据库的出现,弥补了关系数据(比如MySQL)在某些方面的不足,在某些方面能极大的节省开发成本和维护成本。

MySQL和NoSQL都有各自的特点和使用的应用场景,两者的紧密结合将会给web2.0的数据库发展带来新的思路。让关系数据库关注在关系上,NoSQL关注在存储上。

所以,我们的核心思想是:合适的就是最好的。

相关文章

文章浏览阅读752次。关系型数据库关系型数据库是一个结构化的...
文章浏览阅读687次,点赞2次,收藏5次。商城系统中,抢购和秒...
文章浏览阅读1.4k次。MongoTemplate开发spring-data-mongodb...
文章浏览阅读887次,点赞10次,收藏19次。1.背景介绍1. 背景...
文章浏览阅读819次。MongoDB连接失败记录_edentialmechanisn...
文章浏览阅读470次。mongodb抽取数据到ES,使用ELK内部插件无...