SQL Database written in Golang
Goal: Build a minimal working SQL database with basic storage and query support.
- Slotted Pages
- Disk Manager for DB File
- Fully Implement B-Link Tree
- Write ahead log (Crash recovery)
- Service layer for ACID
- SQL parsing
- SQL optimisation
- MMAP Files?
- Kernel Bypass?
- Direct I/O?
- Distributed Raft? Paxos?
- Networking kernel bypass?
- Currently can only support one index, as value is inlined in the slotted pages instead of using RowIDs
- Pages need to be de-fragmented
- Database Internals by Alex Petrov