<aside> 📖 View 的两类使用
不能把数据库当成“黑盒”使用,因为每个数据库都是非常不同的
了解这种差异,了解你所使用数据库的特性,是开发成功数据库应用的基础
并发控制问题
不同数据库的锁机制是不一样的,比如 Oracle 独特的 MVCC
Null 值处理问题
例:Null值造成的数据库迁移障碍
为什么我们不能当黑盒?
要构建一个完全数据库独立的应用,而且是高度可扩展的应用是极其困难的。实际上,这几乎是不可能的。
最简单的索引 BST
但 BST 不适用于 DB 场景,因为 BST 的快速访问是基于 RAM 的,对于 HDD 和 SSD 我们需要更适合顺序 IO 的结构。
B-Tree 7. Tree Indexes
进一步的复杂问题:Secondary Link
位图索引
Bitmap Index 的 Lock contention 问题很严重,会锁住整个 Block
最小开销的变长存储需求
回收已删除记录的空间
构建freeblock,并指向第⼀个空闲块的指针保存在页头部,并保存可用字节数(确定是否能在碎片整理后被放⼊该页)
freeblock 70/30 原则