MYDB: 一个简单的数据库实现 预告
断断续续写了大半个月,终于可以放一下预告了。
继 MY-RPC-FRAMEWORK 后的又一简历杀手,终于写完了。
算了,不吹了。吹得我都不好意思了。
MYDB 是一个 Java 实现的简单的数据库,部分原理参照自 MySQL、PostgreSQL 和 SQLite。实现了以下功能:
- 数据的可靠性和数据恢复
- 两段锁协议(2PL)实现可串行化调度
- 以 2PL 为基础的 MVCC
- 两种事务隔离级别(读提交和可重复读)
- 死锁处理
- 简单的表和字段管理
- 简陋的 SQL 解析(因为懒得写词法分析和自动机,就弄得比较简陋)
- 基于 socket 的 server 和 client
基本是一个看起来可用的数据库,写一写当个 demo,加深下对数据库的理解,自然是极好的。
最近比较忙,相关的实现教程(类似 RPC 的教程)基本会在下个月开始动工,预期一个月完成。教程会在牛客、csdn、我的公众号和我新开的博客(还没开)上同步更新。
感兴趣的同学可以提前看看代码。已经跑过了基本的测试,但是估计 bug 还不少,欢迎 CR 和 PR。
https://github.com/CN-GuoZiyang/MYDB
附上一个客户端的执行序列吧:
另,这个项目是在 wsl 下用 idea community 开发的,微软搞的 wslg 可用性还挺高的,用起来完全没障碍。
#秋招#