A hobby Distributed OLTP SQL database management system written in Go. This is being developed with a motive to learn about distributed systems and databases.
Note: The project is under development and isn't ready.
Approximate progress of the project.
- Storage engine
- Raft
- MVCC transactions
- Key value service
- Lexer & Parser
- Table encoding
- Query planner
- Query execution
- Query optimization
- Unit testing
TODO: List of features
The project is divided into two main parts:
- Server
- Client
The server is a grpc service exposing a transactional key value storage layer. The server receives grpc calls from the client and serves them. It also communicates with the other servers for replication using the Raft consensus protocol. The server contains a LSM storage layer for persisting data to disk.
The client is responsible for most of the heavy lifting. It provides a REPL for the user to enter their SQL queries. It then executes those queries and uses the server as the storage medium.
TODO: More details, diagrams and blog posts.