What does HackerNews think of sled?

the champagne of beta embedded databases

Language: Rust

#9 in Database
#32 in Rust
I just found these today which are LSM-based storage engines which supposedly support both transactions. Sled can operate on a single file, I'm not sure about wiredtiger. I've never used either of these before though, so please perform your own due diligence:

- 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.

For the people who, like me, were curious about the lack of DB to configure, the options for storage seem to be Sled[1] or SQLite.

[1] https://github.com/spacejam/sled

Check out sled

https://github.com/spacejam/sled

It’s surprisingly mature and the person behind it is very committed to the project.

The author of sled[1], an embedded database in Rust which has a number of promising features, has also written parts of rio[2], an underlying pure Rust io_uring library, which is intended to become the core write path for sled. rio has support for files but also has a demo for TCP (on Linux 5.5 and later) and O_DIRECT.

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!

[1]: https://github.com/spacejam/sled

[2]: https://github.com/spacejam/rio

> Applications of Java and Rust do not overlap.

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.

Thought it would be worth mentioning Sled as an alternative to RocksDB for the Rust crowd:

https://github.com/spacejam/sled

Sled might be a useful library to build your DB on: https://github.com/spacejam/sled
I've been loosely following this:

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.