- https://github.com/spacejam/sled
- http://source.wiredtiger.com/11.0.0/overview.html
To add transaction support, you probably need a good understanding of how the memtable works in Log Structured Merge trees: https://creativcoder.dev/what-is-lsm-tree
as well as how to implement something like https://en.wikipedia.org/wiki/Optimistic_concurrency_control
You might also be interested in the design of the Nova database: https://www.usenix.org/conference/fast16/technical-sessions/...
There are probably newer system designs out there, this just happened to be linked from the creativcoder.dev article above.
https://github.com/spacejam/sled
It’s surprisingly mature and the person behind it is very committed to the project.
I tested rio recently as I had a Brilliant but Bad Idea™ involving file access and was pleasantly surprised by the API, as I have been with sled's.
I'm excited for the experimentation in the Rust ecosystem and for such low level crates to handle the complex io_uring tasks (relatively) safely!
Both are general purpose languages, so of course they overlap.
> Good luck rewritting all the big data tools from Java (Elasticsearch, Spark, Kafka, Hadoop, Neo4j, Deeplearning4j, Cassandra, Solr, Arrow, OrientDB)
Cassandra (https://scylladb.com) and Kafka (https://vectorized.io) have already been rewritten once in C++, with massive latency and throughput improvements. No reason why they couldn't get their superior Rust clones in the observable future.
Materialize (https://materialize.com), Noria (https://github.com/mit-pdos/noria), and Sled (https://github.com/spacejam/sled) are just some of the Rust database projects that are aiming at unseating the de facto standard implementations in the space. InfluxDB (https://www.influxdata.com) is now doing major Rust development as well.
The future is almost here. It's just not evenly distributed yet.
https://github.com/spacejam/sled
Since I'm writing in rust it might be a good fit. It's non-SQL but does have some nice features. I would need to figure out how to adapt all the syncer features to that model though. Right now I should just focus on finishing the merging code to be able to release a 1.0 some time soon.
Same with https://github.com/mozilla/mentat/
https://github.com/indradb/indradb is a newer db in alpha.
https://github.com/spacejam/sled is also in alpha but is being actively developed.