公司动态

Nosql与传统关系型数据库的区别

发布日期: [2016-12-26]

  

关系型数据库也称为关系型数据库管理系统(RDBMS)或SQL数据库。之所以称之为关系数据库,是因为其采用了关系模型来组织数据。 当下最受欢迎的是关系型数据库有Microsoft SQL Server,Oracle数据库,MySQL和IBM DB2。关系型数据库(RDBMS)主要应用于大型企业的数据存储中,其中MySQL除了企业级存储以外,也用于存储Web应用程序的数据。

关系型数据库(RDBMS)已经提供了数十年的完整性数据存储需求,但是过去的10年左右里,数据量呈现爆炸式的增长,新的数据类型也层出不穷,也由此改变了数据存储的要求,使得关系型数据库已经逐渐满足不了这一需求趋势。

非关系型数据库也称为NoSQL数据库。NoSQL曾经一度成为行业标准术语,但该名称已经开始不那么流行,因为它不能完全涵盖非关系型数据存储的复杂性和适用范围。目前,我们所知的非关系数据库有MongoDB,DocumentDB,Cassandra,Coachbase,HBase,Redis和Neo4j。

( 非关系型数据库 )

非关系型数据库的起源

新世纪以来,web2.0网站群起,由此衍生出非关系数据库产品。这源于传统的关系型数据库的局限性,特别是在应对超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露出很多难以克服的问题,例如:

1、对数据库高并发读写的需求

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

2、对体量巨大的数据的高效率存储和访问的需求

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

3、对数据库的高可扩展性和高可用性的需求

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

关系型和非关系型数据库之间的主要区别

关系型数据库的优点

  • 该系统中的关系具有约束,提高数据安全性,便于维护。
  • 丰富的完整性大大减少了数据冗余和不一致问题。
  • 可以使用sql语句进行复杂的查询。

关系型数据库的缺点

  • 许可费用昂贵。
  • 关系型数据库不能很好地水平扩展。
  • 数据要求一致性,影响读写性能。
  • 对非结构化数据没有很好的处理方式。
  • 对体量巨大的数据读写效率低。

非关系型/ NoSQL的优点

  • 数据没有耦合性,易于扩展。
  • 不需要经过SQL层的解析,可读写性高。
  • 大多数NoSQL数据库是开源的,还有商业产品可以免费使用。
  • 可存储的数据格式类型多样。

非关系型/ NoSQL的缺点

  • 数据一致性弱,数据关联支持有限。
  • 数据非结构化,处理繁琐。
  • 不提供sql支持,学习和使用难度高。

概述在何种场景下选用非关系型或NoSQL数据库。

( 非关系型数据库和关系型数据的应用范围 )

  • 数据模型比较简单。
  • 数据体量庞大。
  • 数据是非关系/半结构化的。
  • 数据扩展性或性能更重要,数据一致性不重要。
  • 接收大量用户服务请求。

简而言之,RDBMS用于企业OLTP和ACID合规性,或1TB以下的数据库。NoSQL用于扩展的OLTP和JSON文档,注:数据的持久存储,尤其是海量数据的持久存储,还是需要一种关系数据库。为了保持市场优势,选择合适的数据库系统,是每个企业现在必须权衡的事情,希望本文能够帮助你做出更好的选择。