RDBMS | 青训营

39 阅读3分钟

RDBMS

经典场景

用户之间的转账场景。
假设有这样一个转账操作:

  • 从账户A转出1亿。
  • 从账户B转入1亿。

我们用SQL语句可表示为:

  • update account_table set balance = balance - '1 billion' where id = 'A';
  • update account_table set balance = balance + '1 billion' where id = 'B';

在RDBMS中,转账操作可以形成一项事务,而事务需要符合ACID。
RDBMS还需要有高并发、高可靠和高可用的能力。

原子性 Atomicity

当账户A转出1亿后,服务器故障,从账户B转入1亿的操作未执行。
原子性就是保证事务中的操作要么同时执行,要么同时不执行,不可能出现中间状态。

一致性 Consistency

如果账户A中只有0.5亿,但是转出1亿的操作仍然成功了。
一致性就是保证每个操作都是合法的,数据库信息从一个有效的状态转化为另一个有效的状态。

隔离性 Isolation

如果账户B又转入了1亿,但是两个转账同时进行,并且都是从账户B为0的时候进行转账,结果是账户B中只有1亿的余额。
隔离性就是保证两个并发事务之间不会相互影响,表现出串行处理。

持久性 Durability

当转账操作成功后,但是没有写入磁盘,在这个时候服务器出现故障,那么账户信息就会还原,转账操作没有生效。
持久性就是保证每次操作的结果都能被持久性的保存下来,甚至在存储介质故障时具有恢复的能力。

高并发

当访问量非常大的时候,但是服务的的处理能力很弱,就会让用户等待很长的时间。

高可靠

数据库需要在任何时候都可以使用,需要保证在高负载下也不会崩溃失效。

发展历史

文件系统

使用文件存储所有需要的数据,并且这些文件可以存放在多种存储介质上。
使用文件系统管理数据有以下缺点:

  • 数据出现大量冗余
  • 数据可能出现不一致,无法保证完整性和一致性
  • 对每个文件都可以需要编写一个对应的应用
  • 数据和数据之间不互通,交换困难

网状模型

基于网状模型建立数据之间的联系,创造出了网状数据库。
网状模型是一张图,每个子节点可以有多个父节点,每个父节点可以有多个子节点。

层次模型

基于层次模型建立数据之间的联系,创造出了层次数据库。
层次模型是一棵树,每个父节点可以有多个子节点,但是每个子节点只能有一个父节点。

关系模型

关系模型将数据之间的联系构成一张二维表,并且创造了关系代数来进行关系运算。
在关系模型的基础上创造出关系型数据库。

模型对比

网状层次关系
优势直接描述世界、存取效率高结构简单、查询效率高表示多对多关系方便、屏蔽底层细节
劣势结构复杂、使用困难无法表示多对多关系、遍历效率低下、使用困难关联查询效率低、关系必须规范化