数据库的抽象化Abstraction:三种schema
- Views:external schema
Course_info(cid:string,enrollment:integer)
其中 external schema是拿来对外展示的 - conceptual schema
记录了逻辑上的schema,logical structure
Students(sid: string, name: string, login: string,
age: integer, gpa:real)
Courses(cid: string, cname:string, credits:integer)
Enrolled(sid:string, cid:string, grade:string)
- physical schema
记录了这个数据的存储方式,描述文件以及文件中的索引.比如说students的第一列是这些relations的索引
Relations stored as unordered files.
index on first column of Students.
Data Independence
两种数据独立性
- Logical data independence,保护逻辑schema的改变
- Physical data independence,保护物理schema的改变
Concurrency Control同步化的控制
- 需要使得cpu一直在运行,因为多个用户的IO比较慢,cpu不能等待IO完成再进行下一个操作,所以需要cpu上的操作需要同步进行
- 需要保证数据的锁的设计,使得不会出现interleaved的情况
- 因为dbms实现了concurrency,所有的用户都可以当成自己在单用户的情况下进行操作。
数据库事物 transaction
Definition
an atomic sequence of database actions (reads/writes)
Each transaction, executed completely, must leave the DB in a consistent state if DB is
consistent when the transaction begins.
Users can specify integrity constraints on the data, and the DBMS will enforce these constraints.
Scheduling Concurrent Transactions
Ensuring Atomicity 保证原子性
使用write ahead log的方式(如果没有被写进log,则不进行该操作),出现问题时则根据log执行undo
DBMS的结构
分层架构