📄🐟⌨️🍜🌙

一写代码的
MYDB 4. 日志文件与恢复策略

MYDB 4. 日志文件与恢复策略

在 MYDB 的设计中,日志文件扮演着至关重要的角色,确保数据在崩溃后能够顺利恢复。每次操作底层数据时,DM 层都会生成并记录日志,形成一条连续的日志链。这些日志以特定的二进制格式存储,包含校验和和各个操作记录,确保在系统重启时能够精准地重建数据状态,维护数据的一致性与完整性。

MYDB 3. 数据页的缓存与管理

MYDB 3. 数据页的缓存与管理

DM 模块将文件系统抽象为页面,并以此为单位进行数据的读写和缓存。默认设置的数据页大小为8K,便于在高负载情况下提升写入性能。借助已实现的通用缓存框架,接下来将专注于具体定义页面结构,以实现高效的页面缓存管理。

MYDB 2. 引用计数缓存框架和共享内存数组

MYDB 2. 引用计数缓存框架和共享内存数组

数据管理器(DM)作为上层模块与文件系统之间的桥梁,负责分页和缓存管理,同时确保数据安全与恢复能力。特别是,在缓存策略上,DM 采用了引用计数的框架,而非传统的 LRU,旨在提升缓存的通用性与效率,为后续的数据操作奠定基础。

MYDB 1. 从最简单的 TM 开始

MYDB 1. 从最简单的 TM 开始

MYDB 中,事务的管理是通过 XID 文件实现的,每个事务都有一个唯一的 XID,从 1 开始递增,XID 0 被定义为超级事务,状态始终为已提交。TransactionManager 负责维护这一文件,并记录事务的三种状态:活动、已提交和已中止。这一机制确保了事务的状态能够被准确查询和管理,为系统的稳定性和可靠性提供了基础。

MYDB 0. 项目结构和一些不得不说的话

MYDB 0. 项目结构和一些不得不说的话

MYDB 项目是一个旨在探索和实现数据库基本原理的个人作品,经历了大半个月的努力,在闲暇时间逐步完成。我在学校学习数据库系统的过程中,积累了一些基础知识,尽管在实习期间更多是借机“摸鱼”。在面试时的坦诚回答虽未造成太大影响,但也促使我重新审视数据库的知识,决定主动学习和实践,从而推动了这个项目的诞生。