​NOSQL与关系型数据库的区别

简介:
+关注继续查看

关系型数据库存在的瓶颈

1、高并发读写需求
网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈

2、海量数据的高效率读写
网站每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的

3、高扩展性和可用性
在基于web的结构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库却没有办法像web serverapp server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移。

4、事务一致性
关系型数据库在对事物一致性的维护中有很大的开销,而现在很多web2.0系统对事物的读写一致性都不高

5、读写实时性
对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出这条数据的,但是对于很多web应用来说,并不要求这么高的实时性,比如发一条消息之后,过几秒乃至十几秒之后才看到这条动态是完全可以接受的

6、复杂SQL,特别是多表关联查询
任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询,特别是SNS类型的网站,从需求以及产品阶级角度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能极大的弱化了

在关系型数据库中,导致性能欠佳的最主要原因是多表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询。为了保证数据库的ACID特性,我们必须尽量按照其要求的范式进行设计,关系型数据库中的表都是存储一个格式化的数据结构。每个元组字段的组成都是一样,即使不是每个元组都需要所有的字段,但数据库会为每个元组分配所有的字段,这样的结构可以便于标语表之间进行链接等操作,但从另一个角度来说它也是关系型数据库性能瓶颈的一个因素。

 

spacer.gif 


非关系型数据库

1、对数据库高并发读写的需求
Web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO就已经无法承受了。其实对于普通的BBS网站,往往也存在对高并发写请求的需求,例如像JavaEye网站的实时统计在线用户状态,记录热门帖子的点击次数,投票计数等,因此这是一个相当普遍的需求。 

2、对海量数据的高效率存储和访问的需求 
类似FacebooktwitterFriendfeed这样的SNS网站,每天用户产生海量的用户动态,以Friendfeed为例,一个月就达到了2.5亿条用户动态,对于关系数据库来说,在一张2.5亿条记录的表里面进行SQL查询,效率是极其低下乃至不可忍受的。再例如大型web网站的用户登录系统,例如腾讯,盛大,动辄数以亿计的帐号,关系数据库也很难应付。 

3、对数据库的高可扩展性和高可用性的需求 
在基于web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像web serverapp server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移,为什么数据库不能通过不断的添加服务器节点来实现扩展呢?

 

在上面提到的三高需求面前,关系数据库遇到了难以克服的障碍,而对于web2.0网站来说,关系数据库的很多主要特性却往往无用武之地,例如: 

1. 数据库事务一致性需求 

很多web实时系统并不要求严格的数据库事务,对读一致性的要求很低,有些场合对写一致性要求也不高。因此数据库事务管理成了数据库高负载下一个沉重的负担。 

2. 数据库的写实时性和读实时性需求 

对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web应用来说,并不要求这么高的实时性,比方说我(JavaEyerobbin)发一条消息之后,过几秒乃至十几秒之后,我的订阅者才看到这条动态是完全可以接受的。 

3、对复杂的SQL查询,特别是多表关联查询的需求 

任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询,特别是SNS类型的网站,从需求以及产品设计角度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。

 













本文转自信自己belive51CTO博客,原文链接:http://blog.51cto.com/11638205/1881482 ,如需转载请自行联系原作者

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
2月前
|
存储 JSON NoSQL
NoSql非关系型数据库之MongoDB应用(三):MongoDB在项目中的初步应用
NoSql非关系型数据库之MongoDB应用(三):MongoDB在项目中的初步应用
|
2月前
|
SQL NoSQL 数据可视化
NoSql非关系型数据库之MongoDB应用(二):安装MongoDB可视化工具
NoSql非关系型数据库之MongoDB应用(二):安装MongoDB可视化工具
|
2月前
|
SQL NoSQL 数据可视化
NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务
NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务
|
4月前
|
存储 SQL 传感器
「物联网架构」在物联网应用使用关系数据库还是NoSQL?
「物联网架构」在物联网应用使用关系数据库还是NoSQL?
169 1
|
4月前
|
存储 SQL NoSQL
基于NoSQL非关系数据库数据存储系统的设计与实现
本文讨论了基于NoSQL非关系数据库数据存储系统的设计与实现,以海量文档的存储、管理为背景,提出了基于MongoDB的文档管理系统。根据登录对象的身份权限,可以进行文档上传、下载、审批等功能。作为非关系数据技术中的MongoDB数据存储系统,具备了NoSQL的高性能、高扩展性的显著特性,而作为最像关系型数据库的非关系数据库,使其具备了传统的SQL关系型数据库系统的一些特征。对于本文的所讨论的基于MongoDB的文档管理系统,具有最佳的适用性。
5654 0
|
11月前
|
存储 SQL JSON
|
11月前
|
SQL 存储 NoSQL
非关系型数据库(NOSQL)和关系型数据库(SQL)区别详解
非关系型数据库(NOSQL)和关系型数据库(SQL)区别详解
161 0
|
分布式计算 NoSQL Hadoop
NoSQL数据库与关系数据库
NoSQL数据库与关系数据库
123 0
|
新零售 监控 数据库
【干货合集】NoSQL技术体系深度解读系列(二):MongoDB,最像关系型数据库的非关系型数据库
在2018年开年NoSQL数据库直播大讲堂峰会即将召开之际,云栖社区特收集整理了一批优秀的技术博客,希望能够对大家探究、学习NoSQL体系中的MongoDB技术的原理及实践经验有所帮助。
8130 0
推荐文章
更多