一、数据库的基础知识
课程大纲&回顾
课程主要内容
- 存储
- 查询引擎
- 事务管理
- 分布式一致性协议
可能涉及的数据管理系统
- LevelDB(Google) — 存储 (NoSQL)
- TiDB(PingCAP) — 查询
- DBX1000(Prototype) — 事务管理
回顾
-
传统关系数据库 — 单节点数据库
- 不能满足性能的需求
-
NoSQL — 非结构化数据管理
- key-value存储(任意数据)
- 数据特征(图数据——Neo4j、文本数据、时序数据库)
-
NewSQL — 可扩展的分布式数据库
-
OldSQL vs. NoSQL vs. NewSQL
-
如何评价数据库性能?
- 响应时间
- 吞吐率:每秒完成操作的数量
1. 性能
- 时延(响应时间)
- 吞吐量 —— 事务/简单查询的吞吐率
- 可扩展性 —— 增加计算资源(CPU,节点)后系统性能的增长趋势(有没有线性增加)
特殊性能指标
- 日志的恢复时间
- 节点的切换时间(一台节点挂了之后要切换)
从系统内部看什么会影响性能
- critical path 类似于os中的临界区
2. 容错
- 系统如何应对节点问题?
- 节点宕机、重启
- 网络分区、延迟
- 数据库系统中有何体现?
- 日志管理
- 一致性副本
数据一致性
-
数据一致性在不同场景中有不同意义(常用的三种)
- 读写操作一致性(多核CPU,KVS系统)
- 读操作时有静态数据、动态数据,以动态数据为准。
- 读写集合操作(事务ACID)
- 副本间数据一致性
- 数据传递也需要时间
- 读写操作一致性(多核CPU,KVS系统)
-
实现
- 日志的实现(WAL)
- 并发控制的实现