I’ve been dreaming about implementing my database management system since the beginning of my software engineer career.
My first DBMS, as far as I can call it so, was a simple client-server java application. It could store tables definition and data in an XML
file and execute simple select
, insert
, update
and delete
queries.
Few years passed in pursuit of career achievements but the dream hasn’t left my mind. When I heard about Rust
and played with it after the 1.0
release - the idea of DBMS again spun in my head. I have had a few attempts to write SQL
engines that are buried in the repo rust-sql-engine.
The dream started growing again after a short chat with Alex Petrov on research groups around DBMS. Shortly, I created a private git repo on GitHub
and started writing code. Then, suddenly for me, different concepts started popping up in my head. While I was writing code for a storage engine I realized that I have a lot of ideas that I would like to implement in my project. These are some of them:
- Implement
PostgreSQL
wire protocol and integrate it withRSocket
, - Go full non-blocking and reactive in a client-server communication,
- Write on-disk storage using
BPF
for Linux OS, - Write storage engine using
NVM
, - Compiling
SQL
queries into binary usingLLVM
, - Go distributed - implement effective conflict resolution algorithms, replication, CRDT.
There is a bunch of work that I couldn’t possibly do alone and fun that I would love to share with database community enthusiasts. Today, I am making my GitHub
repo public with the initial work that I’ve done. Here it is: alex-dukhno/database. If you are interested in contributing please don’t hesitate and reach me out.