4 ms·
Literally write a toy database. Redis from Scratch will walk you through the very basics. Want to know how to build compilers? Crafting Interpreters (while ve
by rgbgraph 3y ago
Literally write a toy database.
Redis from Scratch will walk you through the very basics.
Want to know how to build compilers? Crafting Interpreters (while very wordy) will walk you (painstakingly) through the very basics.
Want to build a basic server? Beej on Linux Networking.
Build a time-series database to handle back-testing for automated trading systems.
Slap on a bare-bones SQL interpreter onto it.
Now add networking so you can deploy it somewhere.
Now figure out what’s wrong with it (is the performance merely slow or are there serious pitfalls a la MongoDB?)
How do you handle multi user environments?
How you optimize for filesystem throughput while maintaining ACID? Are you like Mongo where you just queue everything and return an ACK — or do you only ACK back when you’ve successfully written to disk?
What’s your protocol for communicating with your DB?
How about sharding or distributed storage?
Hot/cold data swapping?
Execution engine or hand-crafted data retrieval semantics a la q (lang)?
How about remote direct memory access (RDMA) to get past the kernel? How about regular old kernel bypass?
How you handle a catastrophic failure where I physically pull the plug on your machine?
Are you using SIMD/vectorization?
There’s so much you could do. Pick whatever interests you the most.