NoSQL 是 Not Only SQL 的缩写,意思是“不仅仅是 SQL”,而不是“不使用 SQL”。常见的 NoSQL 数据库有 MongoDB、Memcached、Redis、HBase、CouchDB、Neo4j、Cassandra、Riak 等。
NoSQL 数据库是众多非关系型数据库的统称,它和关系型数据库一样,也是用来存储数据的仓库。
随着互联网的高速发展,数据量、访问量呈爆发式增长,人们对网络的需求逐渐多样化。比如,通过 QQ、微信、微博等进行聊天互动,刷朋友圈,点赞,互评;又如,通过各大视频网站、音乐网站看视频、看直播、听音乐等,这么多数据都是需要存储的。
然而,传统的关系型数据库面对这些海量数据的存储,以及实现高访问量、高并发读/写,就会显得力不从心;尤其是当面对超大规模、高并发、高吞吐量的大型动态网站的时候,就会暴露出很多难以克服的问题,影响用户体验。为了满足对海量数据的高速存储需求,实现高并发、高吞吐量,NoSQL 应运而生。
NoSQL 的出现可以解决传统关系型数据库所不能解决的问题。
Web 2.0 动态网站需要根据用户的个性化信息来实时生成动态页面和提供动态信息,而无法使用动态页面的静态化技术,因此数据库的并发负载就会非常高。比如,微博、朋友圈的实时更新,就会出现每秒上万次的读/写需求。
关系型数据库在面对每秒上万次的 SQL 查询操作时还能应对自如,但是在面对每秒上万次的 SQL 写操作时就难以胜任了。
普通的 BBS 系统网站也存在高并发读/写的需求,比如,实时统计在线人数、记录热门帖子的浏览次数等,当面对这些需求时,传统的关系型数据库就会出现大量问题。
面对实时产生的大数据量的存储与查询,关系型数据库是难以应付的,会显得效率非常低;而利用 NoSQL 的高效存储与查询能力,就能解决这个问题。
在基于 Web 的架构中,关系型数据库难以进行横向扩展。
当一个网站系统的用户量和访问量与日俱增的时候,数据库没有办法像 Web 服务器或应用服务器那样通过添加更多的硬件来搭建负载均衡的服务器。对于很多提供 24 小时不间断服务的网站来说,对数据库系统的维护升级和扩展是非常折磨人的一件事,往往需要停机维护和数据迁移。
总之,NoSQL 的出现解决了大规模数据库集中和数据种类不同所带来的各种问题,尤其是大数据实现的困难。
NoSQL 数据库具有如下特点:
NoSQL 数据库的应用场景比较广泛,下面简单说一下比较适合使用 NoSQL 的几个场景:
以上这些相关业务场景都可以使用 NoSQL 来存储。NoSQL 还有很多其他应用,在此不再细述,请读者自行参考其他相关资料。