关系型数据库

什么是关系型数据库(Relational database)?

  • 关系数据库,是建立在关系模型基础上的数据库。
  • 关系型数据库是由多张能互相联接的二维行列表格组成的数据库。
  • 关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。
    当前主流的关系型数据库有Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、浪潮K-DB、MariaDB、SqLite等。

关系型数据库的优缺点有哪些?

  关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织。

优点:

  1. 结构简单、易于维护:都是使用表结构,格式一致;数据库设计和规范化过程也简单易行和易于理解。
  2. 使用方便、灵活:使用标准查询语言SQL,允许用户几乎毫无差别地从一个产品到另一个产品存取信息。与关系数据库接口的应用软件具有相似的程序访问机制,提供大量标准的数据存取方法。
  3. 复杂操作:可以进行join等复杂查询;
  4. 保持数据的一致性;
  5. 由于以标准为前提,数据更新的开销小(相同的字段基本都是只有一处);
  6. 存在很多实际成果和专业技术信息(成熟的技术)。

缺点:

  1. 数据类型表达能力差:关系数据模型不直接支持复杂的数据类型。
    由于第一范式的要求,所有的数据必须转换为简单的类型,如整数、实数、双精度数和字符串。 面对复杂数据类型的就是需要额外地分解数据结构工作,这些被分解的结构不能直接表示应用数据,且从基本成分重构时也非常繁琐和费时间。
  2. 复杂读写功能差:关系型数据库的规范化,一个实体数据可能被分割成很多部分存入数据库不同的表中。那么,这种复杂信息的查询过程通常会产生大量的简单表。在这种情况下,由存取信息产生的查询必须处理大量的表和复杂的码联系以及连接运算。
  3. 支持长事务能力差:由于RDBMS记录锁机制的颗粒度限制,对于支持多种记录类型的大段数据的登记和查询来说,简单的记录级的锁机制是不够
  4. 环境应变能力差:在要求系统频繁改变的环境下,关系系统的成本高且修改困难。关系数据库和编程语言所提供的数据类型的不一致,使得从一个环境转换到另一个环境时需要多至30%的附加代码。
  5. 读写性能:面对海量数据的高并发读写需求,效率就会变得很差,硬盘I/O是一个很大的瓶颈;
  6. 扩展方式:固定的表结构,灵活度稍欠,如字段不固定时的应用;

关系型数据库遵循ACID规则

关系型数据库有如下四个特性:

1、A (Atomicity) 原子性
原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。
例如:从A账户转10元至B账户,分为两个步骤:1.从A账户取10元;2.存入10元至B账户。这两步要么一起完成,要么一起不完成,当只完成第一步,第二步失败的情况下,钱就会回滚到A账户中去,否则的话,钱就会莫名其妙少了10元。

2、C (Consistency) 一致性
一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。
例如:现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。

3、I (Isolation) 独立性
所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。
例如:现在从A账户转10元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的10的。

4、D (Durability) 持久性
持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。

  • 18
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序螺丝钉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值