DB01 Intro
2024-01-23 20:09:24

鸽了很久,再一次打算补上了。去年在家看网课的时候遇上了手机脱焊,希望今年能平安无事地搞完。

Intro

DB 一般指有组织的数据,组织数据的软件则叫 DBMS。简单来说,DBMS 就是用户和数据之间的交互接口。

不难想象 DBMS 有很多应用,通常对 DBMS 的要求有这么几方面:

  1. consistency:对同一数据的多个拷贝修改,应当使结果保持一致
  2. integrity:修改操作不应该破坏数据原有的语义
  3. confidentiality:机密数据不应泄露
  4. 还有一些别的可以畅想的

Data model

讲的是用户和 DBMS 如何看待和描述 DB 中的数据。

以关系模型为例,DB 中的数据就是若干“关系”(或者有序集合),这些“关系”(集合)可以通过操作得到新的“关系”(集合)。用户通过提供“关系操作”来描述期望的查询结果。

relation 也叫 table,后者是更直观的名字。

Layering

就是你想的那样

  • 物理层
  • 逻辑层
  • 用户层

DDL/DML

Data Definition Language,说的是用来定义和描述数据的语言。用 DDL 而不是直接写裸数据有这么些原因:

  1. 描述数据的语义约束,例如身份证校验、邮箱格式
  2. 提供一些数据的元信息,例如权限、名称
  3. 易用

Data Manipulation Language,说的是用来操作数据的语言。操作包括大家都知道的增删查改,类型有大家喜爱的 declarative 和 procedural。

Schema/Instance

出现在这里显得很奇怪的两个词,找到的各种解释都不太满意

schema 给人的感觉是数据的组织结构,instance 就是你想的那个意思

DBMS structure

粗略地看,DBMS 和 OS 没有太大差别,都是一个 shell 用来交互用户和 kernel 状态,然后还要上并发和文件系统

Storage Management

负责

  • 和存储设备交互
  • 做一些 caching
  • 权限检查

通常要实现一些特别的数据结构来提供这些服务

Query Management

负责

  • 把查询翻译成数据查询操作
  • 把 DDL 翻译成数据表示
  • 做一些查询/修改的(语言上的)优化

简单地说,就是一个 SQL 编译器

Transaction Management

网红概念辨析

transaction 说的是实现了某个单一目标的一组操作。通常要求

  1. Atomic:这一组操作要么全部完成,要么全部失败(实质是单一目标的原子性:要么成功,要么失败,没有中间态)
  2. Consistent:应该叫 consistency-preservation,即 consistent 的数据库在操作后仍然 consistent
  3. Isolation:多个目标对应的多组操作互不影响
  4. Durability:操作的结果不会丢失

所以 Transaction Manager 需要负责

  • 错误恢复
  • 并发控制
  • 和一些你懂得的活