NoSQL:从关系型数据库到非关系型数据库

关系型数据库

所谓关系型数据库,,就是指采用了关系模型来组织数据的数据库

什么是关系模型,简单说,关系模型就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

关系模型中常用的概念:

1、关系

可以理解为一张二维表,每个关系都有一个关系名,在数据库中被称为表名

2、元组

可以理解为二维表中的一行,在数据库中被称为记录

3、属性

可以理解为二维表中的一列,在数据库中被称为字段

4、域

属性的取值范围,在数据库中为某一列的取值限制

5、关键字

一族可以唯一标识元组的属性,在数据库中被称为主键

6、关系模型

指对关系的描述,其格式为:关系名(属性1、属性2、属性3、...、属性N),在数据库中称为表结构

关系型数据库的优缺点

关系型数据库有如下优点:

1、容易理解

二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解

2、使用方便

通用的SQL语言使得操作关系型数据非常方便

3、易于维护

丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大见底了数据冗余和数据不一致的概率

关系型数据库有如下缺点:

1、高并发读写

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

2、海量数据的高效率读写

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

3、扩展性和可用性低

基于Web的结构当中,数据库是最难进行横向扩展的,同时对于数据库的升级也是非常痛苦的,往往需要停机维护和数据迁移

对于一个网站来说,关系型数据库的很多特性是不需要的:

1、事务一致性

关系型数据库在对事物一致性的维护中有很大的开销,而现在很多Web系统对事物读写一致性的要求都不高

2、读写实时性

对关系型数据库而言,插入一条数据之后立即查询,那肯定是可以读出这条数据的。但是对于很多Web系统来说并不需要这么高的实时性,比如发了一条消息后,过几秒乃至十几秒之后才看到这条动态数据是完全可以接受的

3、复杂SQL特别是多表关联查询

任何大数据的Web系统,都非常忌讳多个大表的关联查询以及复杂的数据复杂类型的复杂SQL报表查询,对很多网站来说,都要常常避免这点,因此极大弱化了SQL的功能

NoSQL

NoSQL,Not only SQL,即不仅仅是SQL,泛指非关系型数据库。因为传统的关系型数据库在应付Web2.0网站,尤其是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,NoSQL的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

NoSQL提出另一种不同的存储理念,例如以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。使用这种方式,用户可以根据需要去添加自己的资源,这样获取信息的时候就不需要像关系型数据库那样,对多表进行关联查询了。只需要根据键,拿到对应的value就可以完成一次查询。

不过,NoSQL由于极少的约束,因此它不能够像关系型数据库所提供的where这种对于字段属性值情况的查询,并且难以体现设计的完整性,它只适合存储一些较为简单的数据,对于需要进行较复杂查询的数据,关系型数据库显得更为合适。

关系型数据库VS非关系型数据库

关系型数据库最大的特点就是事物的一致性:传统的关系型数据库读写操作都是事物的,具有ACID的特点,这个特性使得关系型数据库可以用在几乎所有对一致性有要求的系统中,比如火车购票系统,抢票的时候同一时间只能有一个用户抢到某一张固定的车票。

但是,在网页应用中,尤其是SNS应用中,一致性却不是显得那么重要,比方说淘宝吧,某件商品有10个库存量,用户A和用户B同时点了下单,照理说应该点击之后用户A和用户B看到的剩余库存量应该是8,但是实际上他们看到的可能同时都是9,这又有什么关系呢?在某些业务场景下,数据在几秒、十几秒的更新存在时间差是完全可以容忍的,因此,关系型数据库的最大特点在这里已经被淡化了。

相反地,关系型数据库为了维护一致性所付出的巨大代价就是其读写性能较差,而像微博、facebook这类SNS应用,对并发读写能力要求极高,关系型数据库已经无法应对了,因此,必须用一种新型的数据结构来替代关系型数据库。

关系型数据库的另一个特点就是其具有固定的表结构,因此,其扩展性能极差,而在SNS中,系统的升级、功能的增加,往往意味着数据结构巨大的变动,这一点关系型数据库也难以应付,需要新的结构化数据存储,

于是,非关系型数据库就应运而生,由于不可能用一种数据结构化存储应付所有的新需求,因此非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合

时间: 2024-12-26 07:22:00

NoSQL:从关系型数据库到非关系型数据库的相关文章

关系型数据库和非关系型数据库,RDBMS和NoSQL区别?

简单地讲:什么是关系型数据库?依据关系模型来建立的,不同的表或库之间有相关联性 什么是非关系型数据库?不同的表或库之间没有相关联性,依据非关系模型来建立 关系型数据库和非关系型数据库各自的特点:RDBMS:二维表数据存取通过SQL数据安全性方面强 NoSQL:关注高性能,高并发,灵活性等特点 首先说说各自的优缺点:强大的查询功能--强一致性--二级索引: 关系型的优点,非关系型的缺点灵活模式--扩展性--性能: 非关系形的优点,关系型的缺点 NoSQL的分类和典型的产品:键值(KV)存储:Mem

关系型数据库与非关系型数据库的区别

在关系型数据库中,导致性能欠佳的最主要因素是多表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询.     为了保证数据库的ACID特性(ACID:● 安全存储合适的数据  ●快速检索合适的数据  ●支持多个并行的用户会话 ), 我们必须尽量按照其要求的范式进行设计,关系型数据库中的表都是存储一些格式化的数据结构,每个元组字段的组成都一样,即使不是每个元组都需要所有的字段,但数据库会为每个元组分配所有的字段,这样的结构可以便于表与表之间进行连接等操作,但从另一个角度来说它也是关系型数据库性

关系型数据库与非关系型数据库

关系型数据库与非关系型数据库 自1970年,埃德加·科德提出关系模型之后,关系数据库便开始出现,经过了40多年的演化,如今的关系型数据库具备了强大的存储.维护.查询数据的能力.但在关系数据库日益强大的时候,人们发现,在这个信息爆炸的"大数据"时代,关系型数据库遇到了性能方面的瓶颈,面对一个表中上亿条的数据,SQL语句在大数据的查询方面效率欠佳.我们应该知道,往往添加了越多的约束的技术,在一定程度上定会拖延其效率. 在1998年,Carlo Strozzi提出NOSQL的概念,指的是他开

关系型数据库和非关系型数据库的区别

关系型数据库和非关系型数据库的区别 1.关系型数据库通过外键关联来建立表与表之间的关系,2.非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定        比如 有一个学生的数据:              姓名:张三,性别:男,学号:12345,班级:二年级一班       还有一个班级的数据:             班级:二年级一班,班主任:李四 关系型数据库中,我们创建学生表和班级表来存这两条数据,并且学生表中的班级存储的是班级表中的主键.

关系型数据库、非关系型数据库

2019-02-25  20:38:36 转自 https://www.cnblogs.com/zylq-blog/p/7595979.html 关系型数据库和非关系型数据的比较 一.关系型数据库 关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织优点:1.易于维护:都是使用表结构,格式一致:2.使用方便:SQL语言通用,可用于复杂查询:3.复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询.缺点:1.读写性能比较差,尤其是海量数据的高效率读写:2.固定的表

关系型数据库与非关系型数据库的简介、对比、说明

关系型数据库与非关系型数据库的简介.对比和说明!!! 分类专栏:数据库 数据库MySQL的系列知识 关系型数据库: Oracle SQLServer Sybase Informix Access DB2 mysql vfp Ingers FoxPro 非关系型数据库:关系型数据库与非关系型数据库的对比 MongoDB Cassandra CouchDB Hypertable Redis Riak Neo4j Hadoop HBase Couchbase MemcacheDB REVENDB Vo

关系型数据库和非关系型数据库之间的那些区别(一)

说说关系型数据库和非关系型数据库之间的那些区别 第一弹 就拿现在最流行的两种数据库来说吧:mysql和mongodb(介于关系型和非关系型之间的一种产品,在这里面我们就当做非关系型数据库用来和mysql比较一下) 举个实际好理解的的例子:学生选课的系统(简化来说举出系统里面的两个:学生,课程) 首先说在mysql里面建立的模型是 学生表(student): S Sid name gender age address email college class 1 张三 女 19 a 111 外语 1

01关系型数据库与非关系型数据库

数据库 就是用来存储数据的仓库,分为两类:关系型数据库和非关系型数据库   关系型数据库  严格限定了字段的类型,大小,向数据库中传数据时,必须按照相应的字段传数据 eg:mysql 非关系型数据库(免费) 字段类型可以随便写 eg: mongodb 原文地址:https://www.cnblogs.com/SRH151219/p/10200625.html

关系型数据库和非关系型数据库

目前的市面上的关系型数据有:Oracle.DB2.Microsoft SQL Server.Microsoft Access.MySQL等. 非关系型数据库有:NOSQL,Cloudant 非关系型数据库主流的还是NOSQL,  那么 NOSQL和关系型数据库的区别是: 优:1.成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜. 2.查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查