1 unstable release
0.1.0 | Apr 17, 2019 |
---|
#6 in #cached
27KB
643 lines
Simple File-System Database
Why another database?
The problem with existing databases is that you have to learn them. Sfsdb is a high performance, incredibly simple yet extensible database, made to feel as native to the language as possible. If you know Rust, you can already use Sfsdb. Saving and Loading data is rather simple, so why are databases so complicated and bloated?
Meet Sfsdb
Features
- No runtime dependencies or external configuration
- High performance, Just run the benchmarks!
- Optional caching, Automatically managed for a free performance boost at no usage cost
- Optional indexing, Bundle index data together with your saves and query them with the Rust language itself
Documentation
Or, use the examples.
$ git clone https://github.com/AlmightyFloppyFish/sfsdb; cd sfsdb
$ cargo run --release --example simple
$ cargo run --release --example cached
$ cargo run --release --example indexed
$ cargo run --release --example benchmark
Benchmarks
Don't want to compile the benchmark example? Well here's my results
(Simple) Saving justin 1000 times took: 40.561932ms
(Simple) Loading justin (with key '400') 1000 times took: 3.490118ms
(Cached) Saving justin 1000 times took: 44.653967ms
(Cached) Loading justin (with key '400') 1000 times took: 776.095µs
(Indexed + Cached) Saving justin 1000 times took: 85.815535ms
(Indexed + Cached) Loading justin (with key '400') 1000 times took: 662.987µs
(Indexed + Cached) Querying for all logged-in users (which yielded 500 results) took: 44.308µs
(Indexed + Cached) Querying for all locked-out users (which yielded 179 results) took: 24.893µs
Intel i7-6600U (4) @ 3.400GHz
SATA SSD
16GB RAM
Cross-language support
There's an experimental Golang version and plans for a Haskell version.
They might take some time however since they aren't just ports. But full rewrites made to feel as native to the languages as possible.
Contributing
Code contributions are absolutely welcomed! Just put in a pull-request and make sure you format with rustfmt
Dependencies
~2.3–3MB
~56K SLoC