I have built a completely useless database.
I had a couple flights across the country this week so I decided to test some ideas in Rust. If you’re not yet familiar with Rust, it’s a systems language focusing on performance, safety, and concurrency. I’ve really enjoyed using it so far and every day it feels much more natural. I’ve been thinking about database internals a lot recently, and decided to see what it would be like to implement a typed database in Rust using byte buffers. The simplest case is a DB which holds a single variable… so there you have it.
______________________ < You have been warned > ---------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
Welcome to UselessDB. It supports 3 types: float, int, and string. There are no drivers, you simply connect over a raw socket. It’s retro.
telnet localhost 6000
There’s only a handful of commands. The variable is stored in memory, there’s nothing written to disk. You can set the type of the variable as so:
type = int, and set the value
var = 5. Trying to set the value to an incorrect type will fail:
var = 2.0 type_error
You can do comparisons (leading > indicates user input):
> var > 4 true > var < 10 true > var >= 5 true
There’s a simple PEG parser written using the Rust-PEG library. I’ll write a post at some point discussing writing PEG parsers for Rust in detail.
Umm.. yeah that’s about it. Please do not use this for anything. If you judge, remember, I wrote it on a flight with limited internet access with the goal of understanding some implementation details of an idea.