手机版

为什么用NoSQL?NOSQL的优势

时间:2021-08-05 来源:互联网 编辑:宝哥软件园 浏览:

类型:电子教程大小:8.5M语言:中文评分:8.3标签:立即下载NoSQL。2010年,大大小小的网站都选择了NoSQL技术作为追求高性能和高可靠性的首选。今年年初,InfoQ中文站有幸邀请到了来自凤凰城的孙俪。分享他在NoSQL的经历。我很荣幸被邀请在InfoQ上开设这样一个关于NoSQL的专栏,这是一个我非常尊重的技术媒体。同时,我也希望借助InfoQ推动NoSQL在中国的发展,希望和我一样感兴趣的朋友也能加入进来。本NoSQL专栏系列将首先整体介绍NoSQL,然后介绍如何在我自己的项目中将NoSQL应用到合适的场景中,并适当分析一些成功的案例。希望成功使用过NoSQL的朋友能给我提供一些线索和信息。随着web2.0的快速发展,非关系分布式数据存储得到了快速发展。他们确实保证了NoSQL关系数据的ACID特性。NoSQL的概念是在2009年提出的。NoSQL最常见的解释是“非关系”,“不仅仅是SQL”也被很多人接受。(1998年,轻量级关系数据库的名称中首次使用了“NoSQL”一词。)NoSQL是通过我们最常用的键值来存储的,当然还有其他的文档型、列型存储、图形数据库、xml数据库等等。在NoSQL的概念提出之前,这些数据库被用在各种系统中,但很少用于网络互联网应用。例如cdb、qdbm和bdb数据库。传统关系数据库的瓶颈。传统关系数据库性能好、稳定性高、历史测试长、使用简单、功能强大,积累了大量成功案例。在互联网领域,MySQL已经成为绝对的领导者。毫不夸张地说,MySQL为互联网的发展做出了卓越的贡献。在20世纪90年代,访问一个网站的次数通常很少,这可以很容易地用一个数据库来处理。当时大部分都是静态网页,动态交互类型的网站不多。在过去的10年里,网站开始迅速发展。热门论坛、博客、社交网站和微博逐渐引领网络领域的潮流。早期论坛的流量其实并不大。如果你早一点联系网络,可能还记得当时有文字存储的论坛程序,可以想象一般论坛的流量有多大。Memcached MySQL。后来随着访问量的增加,几乎大部分使用MySQL架构的网站开始出现数据库性能问题。web程序不再只关注功能,而是追求性能。程序员开始利用缓存技术来缓解数据库的压力,优化数据库的结构和索引。起初,文件缓存是为了缓解数据库压力而流行的。但当访问量持续增加时,无法通过文件缓存实现多台web机器的共享,大量的小文件缓存也带来了相对较高的IO压力。这个时候,Memcached自然成为了一个非常时尚的科技产品。Memcached作为一个独立的分布式缓存服务器,为多个web服务器提供共享的高性能缓存服务。在Memcached服务器上,根据哈希算法扩展多个Memcached缓存服务,然后出现一致的哈希,解决了增加或减少缓存服务器导致大量缓存失败的缺点。当时如果去面试,你说有Memcached经验,肯定会加分。Mysql主从读写分离由于数据库写压力的增加,Memcached只能缓解数据库读压力。读写都集中在一个数据库上,让数据库不堪重负。大多数网站开始采用主从复制技术,实现读写分离,从而提高读写性能和读取数据库的可扩展性。Mysql的主从模式已经成为这个时候网站的标配。

随着web2.0的快速发展,在Memcached缓存、MySQL主从复制、读写分离的基础上,MySQL主库的写入压力开始出现瓶颈,数据量持续飙升。由于MyISAM使用表锁,在高并发下会出现严重的锁问题,大量高并发的MySQL应用开始使用InnoDB引擎代替MyISAM。同时,利用子表和子数据库来缓解写压力和数据增长的扩张已经成为一种流行。此时,子表和子数据库已经成为业界讨论的热点技术、访谈热点问题和技术热点问题。这时MySQL引入了不稳定表分区,这也给技术实力一般的公司带来了希望。虽然MySQL引入了MySQL Cluster集群,但由于互联网上几乎没有成功的案例,性能无法满足互联网的要求,而只是在高可靠性上提供了很大的保障。MySQL的可扩展性瓶颈在于互联网,大部分MySQL应该是IO密集型的。事实上,如果你的MySQL是CPU密集型的,很可能你的MySQL设计有性能问题,需要优化。MySQL在大数据量、高并发环境下的应用开发变得越来越复杂,技术上也越来越具有挑战性。掌握子表和子数据库的规则需要经验。虽然像淘宝这样技术实力很强的公司开发了透明的中间件层来屏蔽开发者的复杂性,但是无法避免整个架构的复杂性。在某个阶段,子数据库和子表的子数据库面临扩展的问题。还有需求的变化,可能需要一种新的图书馆分类方式。MySQL数据库经常存储一些很大的文本字段,导致数据库表非常大,导致数据库恢复非常慢,要快速恢复数据库并不容易。比如1000万个4KB文本接近40GB,如果这个数据可以从MySQL中省略,MySQL就会变得很小。关系数据库非常强大,但是它不能很好地应对所有的应用场景。MySQL可扩展性差(需要复杂的技术才能实现)、大数据下IO压力大、表结构变化困难,这些都是当前使用MySQL的开发者面临的问题。NOSQL的优点很容易扩展。NoSQL数据库有很多种,但一个共同的特点是去掉了关系数据库的关系特征。数据之间没有关系,所以很容易扩展。无形中,它带来了架构级别的可扩展能力。大数据量高性能的NoSQL数据库具有非常高的读写性能,尤其是在大数据量的情况下。这是由于它的无关性和数据库的简单结构。通常,MySQL使用查询缓存,每次更新表时都会失败。它是一种大粒度的Cache,在web2.0交互应用中性能不高。虽然NoSQL缓存是记录级的细粒度缓存,但NoSQL在这一级别的性能要高得多。灵活的数据模型NoSQL可以随时存储用户定义的数据格式,而无需为要预先存储的数据创建字段。在关系数据库中,添加或删除字段是一件非常麻烦的事情。如果是一个包含大量数据的表,添加字段简直就是一场噩梦。这在大数据量的web2.0时代尤为明显。高可用性NoSQL可以在不影响性能的情况下轻松实现高可用性架构。比如Cassandra,HBase模型也可以通过复制模型来实现高可用性。综上所述,NoSQL数据库的出现弥补了关系数据(如MySQL)在某些方面的不足,在某些方面可以大大节省开发成本和维护成本。MySQL和NoSQL有各自的特点和应用场景,两者的紧密结合将为web2.0数据库的发展带来新的思路。让关系数据库关注关系,让NoSQL关注存储。

版权声明:为什么用NoSQL?NOSQL的优势是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。