DB01 Intro
2024-01-23 20:09:24
鸽了很久,再一次打算补上了。去年在家看网课的时候遇上了手机脱焊,希望今年能平安无事地搞完。
Intro
DB 一般指有组织的数据,组织数据的软件则叫 DBMS。简单来说,DBMS 就是用户和数据之间的交互接口。
不难想象 DBMS 有很多应用,通常对 DBMS 的要求有这么几方面:
- consistency:对同一数据的多个拷贝修改,应当使结果保持一致
- integrity:修改操作不应该破坏数据原有的语义
- confidentiality:机密数据不应泄露
- 还有一些别的可以畅想的
Data model
讲的是用户和 DBMS 如何看待和描述 DB 中的数据。
以关系模型为例,DB 中的数据就是若干“关系”(或者有序集合),这些“关系”(集合)可以通过操作得到新的“关系”(集合)。用户通过提供“关系操作”来描述期望的查询结果。
relation 也叫 table,后者是更直观的名字。
Layering
就是你想的那样
- 物理层
- 逻辑层
- 用户层
DDL/DML
Data Definition Language,说的是用来定义和描述数据的语言。用 DDL 而不是直接写裸数据有这么些原因:
- 描述数据的语义约束,例如身份证校验、邮箱格式
- 提供一些数据的元信息,例如权限、名称
- 易用
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 说的是实现了某个单一目标的一组操作。通常要求
- Atomic:这一组操作要么全部完成,要么全部失败(实质是单一目标的原子性:要么成功,要么失败,没有中间态)
- Consistent:应该叫 consistency-preservation,即 consistent 的数据库在操作后仍然 consistent
- Isolation:多个目标对应的多组操作互不影响
- Durability:操作的结果不会丢失
所以 Transaction Manager 需要负责
- 错误恢复
- 并发控制
- 和一些你懂得的活