面试滑铁卢之:说说关系型数据库的特点

希望能对大家回答面试有帮助~


一、数据库的分类

数据库分为关系型数据库(Mysql,SqlServer等)和非关系型数据库(MongoDB、Redis等)

1.关系型数据库

采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库,存储的格式可以直观地反映实体间的关系。

特点:

1.存储方式:
传统的关系型数据库采用表格的储存方式,数据以行和列的方式进行存储,要读取和查询都十分方便。
2.存储结构:
关系型数据库按照结构化的方法存储数据,先定义好表的结构,再根据表的结构存入数据,所以整个数据表的可靠性和稳定性都比较高,但存入数据后,如果需要修改数据表的结构就会十分困难。
3.查询方式:
关系型数据库采用结构化查询语言(即SQL)来对数据库进行查询。
4.规范化:
在数据库的设计开发过程中开发人员通常会面对同时需要对一个或者多个数据实体(包括数组、列表和嵌套数据)进行操作,这样在关系型数据库中,一个数据实体一般首先要分割成多个部分,然后再对分割的部分进行规范化,规范化以后再分别存入到多张关系型数据表中。
5.事务性:
关系型数据库强调ACID规则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)),可以满足对事务性要求较高或者需要进行复杂数据查询的数据操作,而且可以充分满足数据库操作的高性能和操作稳定性的要求。并且关系型数据库十分强调数据的强一致性,对于事务的操作有很好的支持。关系型数据库可以控制事务原子性细粒度,并且一旦操作有误或者有需要,可以马上回滚事务。
6.读写性能:
关系型数据库十分强调数据的一致性,并为此降低读写性能付出了巨大的代价一旦面对海量数据的处理的时候效率就会变得很差,特别是遇到高并发读写的时候性能就会下降的非常厉害。

2.非关系型数据库(NoSQL)

出于简化数据库结构、避免冗余、影响性能的表连接、摒弃复杂分布式的目的被设计。指的是分布式的、非关系型的、不保证遵循ACID原则的数据存储系统。

特点:

1.易扩展:
数据之间无关系,这样就非常容易扩展。
2.大数据量,高性能:
NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。
3.灵活的数据模型:
NoSQL无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式。

二、NoSQL 与关系型数据库的区别

1.存储方式不同:
传统的关系型数据库采用表格的储存方式, 数据以行和列的方式进行存储。而非关系型数据通常以数据集的方式,大量的数据集中存储在一起,类似于键值对、图结构或者文档。
2.存储结构不同:
关系型数据库按照结构化的方法存储数据,一旦存入数据后,如果需要修改数据表的结构就会十分困难。而NoSQL数据库由于面对的是大量非结构化的数据的存储,它采用的是动态结构,对于数据类型和结构的改变非常的适应,可以根据数据存储的需要灵活的改变数据库的结构。
3.存储规范不同:
关系型数据库为了避免重复、规范化数据以及充分利用好存储空间,把数据按照最小关系表的形式进行存储,这样数据管理的就可以变得很清晰、一目了然,当然这主要是一张数据表的情况。如果是多张表情况就不一样了,由于数据涉及到多张数据表,数据表之间存在着复杂的关系,随着数据表数量的增加,数据管理会越来越复杂。而NoSQL数据库的数据存储方式是用平面数据集的方式集中存放,虽然会存在数据被重复存储,从而造成存储空间被浪费的问题,但是由于基本上单个数据库都是采用单独存放的形式,很少采用分割存放的方式,所以这样数据往往能存成一个整体,这对于数据的读写提供了极大的方便。
4.扩展方式不同:
扩展方式是NoSQL数据库与关系型数据库差别最大的地方,由于关系型数据库将数据存储在数据表中,数据操作的瓶颈出现在多张数据表的操作中,而且数据表越多这个问题越严重,如果要缓解这个问题,只能提高处理能力,也就是选择速度更快性能更高的计算机,这样的拓展空间一定有非常有限的。而NoSQL数据库由于使用的是数据集的存储方式,它的存储方式一定是分布式的,它可以添加更多数据库服务器到资源池,然后由这些增加的服务器来负担数据量增加的开销。
5.查询方式不同:
关系型数据库采用结构化查询语言(SQL)来对数据库进行查询。NoSQL数据库使用的是非结构化查询语言,它以数据集为单位来管理和操作数据,由于它没有一个统一的标准,所以每个数据库厂商提供产品标准是不一样的。
6.事务性不同:
关系型数据库强调ACID规则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)),可以满足对事务性要求较高或者需要进行复杂数据查询的数据操作,而且可以充分满足数据库操作的高性能和操作稳定性的要求。并且关系型数据库十分强调数据的强一致性,对于事务的操作有很好的支持。关系型数据库可以控制事务原子性细粒度,并且一旦操作有误或者有需要,可以马上回滚事务。而NoSQL数据库强调BASE原则(基本可用(Basically Available)、软状态(Soft-state)、最终一致性(Eventual Consistency)),它减少了对数据的强一致性支持,从而获得了基本一致性和柔性可靠性,并且利用以上的特性达到了高可靠性和高性能,最终达到了数据的最终一致性。NoSQL数据库虽然对于事务操作也可以使用,但由于它是一种基于节点的分布式数据库,对于事务的操作不能很好的支持,也很难满足其全部的需求,所以NoSQL数据库的性能和优点更多的体现在大数据的处理和数据库的扩展方面。
7.读写性能不同:
关系型数据库十分强调数据的一致性,并为此降低读写性能付出了巨大的代价,一旦面对海量数据的处理的时候效率就会变得很差,特别是遇到高并发读写的时候性能就会下降的非常厉害。NoSQL数据库是按key-value类型进行存储的,以数据集的方式存储的,因此无论是扩展还是读写都非常容易,并且NoSQL数据库不需要关系型数据库繁琐的解析,所以NoSQL数据库的大数据管理、检索、读写、分析以及可视化方面性能具有关系型数据库不可比拟的优势。

  • 0
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值