我的编程空间,编程开发者的网络收藏夹
学习永远不晚

关系型数据库尚能饭否?

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

关系型数据库尚能饭否?

一、关系型数据库尚能饭否?

关系型数据库出现至今的几十年时间里,一直是数据库领域的佼佼者。下图是全球较为权威的DB-Engines的统计排名, 排名主要依据Google以及Bing搜索引擎的关键字搜索数量、从业人数信息、职位搜索量、Stack Overflow上提问关注数量等 :


关系型数据库尚能饭否?

DB-Engines 2018年6月公布的数据库排名


截止至2018年6月,排名前6位的数据库,仅有排名第5的MongoDB是文档型数据库,其余全部是关系型数据库,且前3位所占有的比重远远领先于其后的其他数据库。


1、优势


关系型数据库在经过大数据、NoSQL以及NewSQL等技术革新的轮番轰炸之后依然坚挺,与其固有的优势密不可分。它的优势主要体现在对开发人员、运维人员以及系统本身这3个方面的影响。


开发优势


对于开发人员来说,关系型数据库的首要优势是面向SQL。


SQL是关系型数据库的结构化查询语言,虽然不同的关系型数据库有不同的SQL方言,但基于ANSI标准的SQL是大部分关系型数据库都支持的。且SQL是面向数据库的访问语言,可以非常方便的对数据库进行增、删、改、查以及授权和管理。SQL的查询灵活度非常高,可以十分便捷的在联机事务处理(OLTP(https://www.xihefangpei.com))与联机分析处理(OLAP)之间转换。


此外,SQL是应用开发工程师所必须掌握的一门编程语言,流行度非常广泛,招聘到一个完全不会写SQL的应用开发程序员的概率非常小。因此,SQL极大降低了开发人员招聘的成本。


除了SQL语言本身,各种开发语言对关系型数据库的支持也十分完善。以Java举例:JDBC是Java语言访问数据库的标准接口,各个关系型数据库厂商均提供了实现JDBC接口的驱动程序。使用Java语言开发的工程师无需感知不同关系型数据库间的差异,只要根据JDBC接口编程即可。


由于面向关系的数据库存储与面向对象的Java程序不易一一对应,产生了很多对象关系映射(ORM)框架用于简化关系对象模型的阻抗不匹配,如JPA及其官方实现Hibernate、MyBatis、Jooq等,进一步简化了应用工程师的日常开发工作。ORM框架大多是采用JDBC封装,对各个关系型数据库的兼容性非常高。


运维优势


关系型数据库由于存在时间长久,针对每一种常见的关系型数据库,都能较容易地招聘到相应的数据库管理员(DBA),以保证关系型数据库的稳定性、安全性、完整性以及性能,同时保证监控和分析关系型数据库的系统瓶颈以及设计的合理性。


成熟的关系型数据库都有自己完善的生态圈,用于保证高可用、数据备份、性能监测分析等成熟的配套工具。规模较大的企业及重要业务系统一般都需要专门的DBA进行运维工作。


系统优势


只有时间才是检验技术的成熟与稳定的标准。关系型数据库经历了几十年的考验,已经有超大规模的使用,其存储引擎已经十分成熟。基于MVCC的数据库引擎在性能和正确性上做到了很好的平衡,并且通过B+tree索引大幅提升了查询的效率。面对数据这样的关键节点,谨慎的选用关系型数据库是架构师们的首选方案。


基于ACID的事务是关系型数据库带给应用系统的又一强力保障。ACID指数据库事务能够正确执行的四个基本要素的首字母缩写。它包括原子性、一致性、隔离性和持久性。只有支持事务的数据库才能最大限度的保证数据的正确性和完整性:


  • 原子性 (Atomicity) 。 位于同一事务中的所有操作,要么全部完成(提交),要么全部不完成(回滚),不能停滞在某个中间环节。如果事务在执行过程中发生错误,数据将会恢复到事务开始前的状态。

  • 一致性 (Consistency) 。 非只读的事务应封装数据库的状态从一个一致状态转变为另一个一致状态。一致状态是指数据库中的数据应满足完整性约束,并且事务的中间状态不应在事务之外被感知。

  • 隔离性 (Isolation) 。 多事务并发执行时,不应相互影响其他事务,就像只有这一个操作在并行的被数据库执行一样。

  • 持久性 (Durability) 。 事务完成后,该事务对数据库的所有更改将持久的保存在数据库中。


在编程中使用事务也并非难事,各类如Spring之类的开发框架已经在面向切面(AOP)层面将其做的十分简单和优雅了。


2、不足


关系型数据库的性能和访问承载能力,在面向单一数据节点的企业级应用时代是无可挑剔的。但在访问量和数据量急剧膨胀的今天,关系型数据库已经很难再像以前那样成为如此巨大规模系统的底层支撑,甚至成为了应用系统的瓶颈所在。


关系型数据库主要有以下三处不足:


  • 单节点并发访问量受限。 在服务任意扩容和拆分的同时,由于数据库中存储的数据是有状态的,因此很难像服务一样任意拆分和扩容。单一的数据库节点承载大量的服务节点的查询和更新请求,这并非一个对等的架构部署模式。

  • 单节点数据承载量受限。 单一数据库节点对数据的承载能力是有限的。数据量越大,用于查询数据所创建的索引的深度就越深。索引深度决定IO访问的次数,索引深度越深,查找越慢。

  • 分布式事务性能衰退严重。 将数据库拆分之后,需要使用分布式事务代替本地事务。基于XA的分布式事务采用两阶段提交,在准备阶段即锁定资源,直至整个事务结束。在系统并发度增加时,性能会急剧衰退。


综上所述,关系型数据库的不足,归根结底是设计初衷导致的。它并非分布式的产物,对分布式系统的天生不友好,导致它很难适应互联网的架构模型。面对可以随时弹性扩容的无状态服务,关系型数据库已经略显笨重。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

关系型数据库尚能饭否?

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

数据库是数据的结构化集合,可分为关系型数据库和非关系型数据库关系型数据库更适合处理结构化数据;表与表之间有很复杂的关联关系。大都遵循 SQL (结构化查询语言,Structured Query Language)标准。常见的关系型数据库管理系统(DBMS) 有
数据库:关系型数据库和非关系型数据库
2015-08-25

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

关系型数据库:  1、定义:    创建在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据  2、关系模型常用概念:    (1)关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名    (2)元组:可以理解为二维
2019-09-16

关系型数据库

关系型数据库(RDBMS)是一种以表格形式存储和组织数据的系统。其遵循关系模型,确保数据完整性、高效组织和易于操作。RDBMS适用于需要结构化数据、数据完整性、高并发性和OLTP的应用程序。常见的RDBMS包括MySQL、PostgreSQL和Oracle。尽管NoSQL数据库的兴起,但RDBMS的基本原则仍然是数据管理的基石。
关系型数据库
2024-04-02

关系型数据库和非关系型数据库有哪些区别

关系型数据库和非关系型数据库有哪些区别,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.关系型数据库通过外键关联来建立表与表之间的关系,2.非关系型数据库通常指数据以对象的形式
2023-06-04

关系型数据库和非关系型数据库有哪些优缺点

这篇文章主要介绍“关系型数据库和非关系型数据库有哪些优缺点”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“关系型数据库和非关系型数据库有哪些优缺点”文章能帮助大家解决问题。一、关系型数据库1、概念关系
2023-06-29

mysql是关系型数据库吗?

是,mysql 是一种关系型数据库管理系统(rdbms),它使用关系模型来存储和管理数据,包括:表,其中行表示数据实体,列表示属性。主键,唯一标识每个行。外键,用于建立表之间的关系。数据完整性约束,如主键和外键约束,以确保数据准确性和一致性
mysql是关系型数据库吗?
2024-08-02

mysql是关系型数据库吗

是的,MySQL 是一种关系型数据库管理系统(RDBMS)。关系型数据库是指采用了关系模型来组织数据的数据库系统。在一个关系型数据库中,数据以表格的形式进行存储,每个表由行和列组成,其中每一列代表一个属性,每一行代表一个记录。MySQL
mysql是关系型数据库吗
2024-04-09

编程热搜

目录