RDMBC 一些概念 | 青训营笔记

72 阅读3分钟

深入理解 RDMBC

RDMBC 事务的 ACID

事务是有一组sql语句组成的一个程序执行单元(unit),满足ACID的特性

ACID

  1. 原子性:事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生
  2. 一致性:数据库事务不能破坏数据库的完整性以及业务逻辑的一致性
  3. 隔离性:多个事务并发访问是,事务之间是隔离的,一个事务不应该影响其他事务的运行效果
  4. 持久性:在事务完成以后,该事务所对数据库所作的操作便持久保存在数据库中,并不会被回滚

发展历史

前 DBMS 时代

在使用计算机进行存储时,通过人工的方式进行数据的记录与管理,但是效率太低,在 1950 年代计算机的出现人们开始使用文件系统来进行数据的管理

DBMS 时代

过后的10年,文件系统的无法满足人们的多用户分享数据和快速检索的需求,所以产生了数据库系统(DBMS)

DBMS 按照某种数据模型来组织、存储和管理数据的仓库,按照数据模型的特点,将其划分网状数据库 层次数据库 和关系数据库

20230213223320.png

他们划分的原则是数据之间的联系方式,层次数据库是按照记录来进行数据的存储,网状数据库是采用网状的原理和方法来存储数据;关系型数据库是行列的形式进行存储数据

  1. 网状模型
  • 能直接描述现实世界
  • 存储效率高
  • 结构复杂
  • 用户使用不方便
  • 访问程序设计复杂
  1. 层次模型
  • 结构简单
  • 查询效率高
  • 可以提供完整性支持
  • 但是无法表示 M:N 关系
  • 插入和删除的限制多
  • 遍历需要经过父节点
  • 访问程序设计复杂
  1. 关系模型
  • 实体之间的联系通过二维表结构表示
  • 可以表示 M: N 关系
  • 数据访问路径对用户透明
  • 关联查询的效率不高
  • 实体间的关系需要进行规范化

SQL 语言

在 1974 年IBM 的Ray Boyce 和 DonChamberlin 将Codd 关系数据库的12 条准则的数学定义以简单的关键字进行描述,提出了 sql 语言

  • 语法风格接近自然语言
  • 高度非过程化
  • 以集合的方式进行操作
  • 语言简单,方便学习和使用

在非关系数据模型数据库中的操作语言是以面向过程的语言,需要指定存取路径,但是 sql 只需指明我们的操作的目的是做什么的,实现的过程不要进行了解以及存储的路径的指定,减轻用户的负担,提高数据的独立性

sql 采用集合的方式进行操作,其结果可以是元组的集合包括 插入 删除和更新的操作

关键技术

一条 sql 的一生

Parser

解析器一般包括的解析步骤为

  • 词法分析 - 对 sql 语句按照事先的分类进行token的划分
  • 语法分析 - 将词法分析的结果生成语法树,然后输出结构化的数据结构
  • 语义分析 - 对树中的信息合法性校验

Optimizer

基于规则的优化

  • 对条件进行简化
a = 5 and b > a -> a = 5 and b > 5
a > 5 and a < b and b = 1 -> false
  • 表连接优化

    小表先进行连接

  • Scan优化

    • 唯一索引
    • 普通索引
    • 全表扫描

Note: 数据库索引是数据库管理系统中辅助的数据结构,用于协助快速查询 更新数据库表中的数据(通常使用 B+ 树实现)