您的位置:首页 > 数据库

关系型数据库和NoSQL的对比表格

2016-06-20 14:47 447 查看
首选给出关系型数据库和非关系型数据库之间的对比



整个数据库演进的过程是这样的:

传统的关系型数据库,比如说MySQL,具有不错的性能,高稳定性,并且使用简单,功能强大。

刚开始的时候,网站的访问量不大,读写要求不高,一般的关系型数据库就能满足网站的需求了。

随着访问量上升,数据库压力增大,网站性能受到影响。程序员开始用缓存技术来缓解数据库的压力。

当访问量继续上升,多台服务器机器的缓存不能共享,同时大量的小文件的缓存又带来了IO压力,于是就引入了memcache缓存服务器,为多台服务器提供一个共享的高性能缓存服务。

当web服务的多样化,当某种业务写入数量比较多的时候,数据库又有了写入压力的增加。memcache只能缓解数据库的读取压力,所以写入压力的问题出现了。此时的解决方案是使用数据库复制技术实现读写分离,提高读写性能和可扩展性。比如说master-slave主从复制模式。

随着互联网发展,数据量的猛增,写入数量的持续增加,数据库的一致性要加锁等操作,使得性能瓶颈再一次出现。此时的解决方案是使用分表分库来缓解压力,以及实现扩展性。

但是所有这些都不足以满足数据写入读取的持续增加,关系型数据库的扩展性差,大数据量下的IO压力大等问题是一直存在的。同时这些技术的实现,比如说主从复制、分表分库等等,又花费了工作人员很多精力去处理。所以有了这些问题,也就促使了NoSQL的出现。

NoSQL具有很好的读写性能,这主要得益于它不具有一致性。同时数据库结构简单灵活,无需事先为存储的数据建立字段,相比于关系型数据库增删字段的严格限制,NoSQL在这一点上有先天的优势。也正是因为不需要严格的字段限制,使得NoSQL的冗余很低。

NoSQL的读写性能高主要是由于它不支持事务操作,不具有一致性,同时也由于它可能是部署在内存中的,比如说Redis,内存空间是有限的。正是由于不具有一致性这些原因,可能会带来一些错误,但是错误率比较低,一般的业务能够容忍的话就可以使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: