这是我参与「第五届青训营」笔记创作活动的第16天。
RDBMS事务
事务(Transaction):是由一组SQL语句组成的一个程序执行单元(Unit),它需要满足ACID特性。
ACID:
原子性(Atomicity):
事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。
两个操作要么同时成功,要么同时失败,不存在中间状态。
一致性(Consistency):
数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
每个操作都必须是合法的,账户信息应该从一个有效的状态变为另一个有效的状态。
隔离性(Isolation):
多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
两个操作在对同一个账户并发进行操作时,应该是相互不影响,表现的像是串行操作。
持久性(Durability):
在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
操作更新成功之后,更新的结果应该永久性的保留下来,不会因为宕机等问题而丢失。
高并发 Concurrency
高可靠/高可用 High Reliability/Availability
发展历史
前DBMS时代
人工管理
文件系统
DBMS时代
| . | 网状模型 | 层次模型 | 关系模型 |
|---|---|---|---|
| 优势 | 能直接描述现实世界 | 结构简单 | 实体及实体间的联系都通过二维表结构表示 |
| . | 存取效率较高 | 查询效率高 | 可以方便的表示M:N关系 |
| . | . | 可以提供较好的完整性支持 | 数据访问路径对用户透明 |
| 劣势 | 结构复杂 | 无法表示M:N的关系 | 关联查询效率不够高 |
| . | 用户不易使用 | 插入、删除限制多 | 关系必须规范化 |
| . | 访问程序设计复杂 | 遍历子节点必须经过父节点 | . |
| . | . | 访问程序设计复杂 | . |
SQL语言
语法风格接近自然语言。
高度非过程化。
面向集合的操作方式。
语言简洁,易学易用。