Database Model
在 关系型数据库 中,行 是 属性 值的集合,是 关系 中的一条 记录。
行 也就是数学领域中的 多元组。
元组结构
对于 存储管理器 来说,元组 是一个字节序列,DBMS 负责将这些字节转成 属性 类型和值。
元组包含:
- 元组头(tuple header):元组 的元信息
- DBMS 的并发控制协议的可见性信息(关于哪个事务创建/修改了该元组的信息)
- NULL 值的 bitmap
- 注意这里不需要存储 架构 信息
- 元组数据(tuple data)
- 标识符(unique identifier)
数据库管理系统 给每个 元组 分配了一个独一无二的 record id,用于记录该元组在磁盘的物理位置 [1]:
- 通常由 page_id+(offset 或者 slot) 组成
- 大部分数据库不会将 record id 存储到 元组 中
- SQLite 使用
ROWID
隐藏列作为真正的主键
CMU 15-445
A tuple is a set of attribute values in the relation.[2]
Tuple layout
A tuple is essentially a sequence of bytes. It is the DBMS’s job to interpret those bytes into attribute types and values.[3]