SurrealDB, a multi-model database written in Rust
- Database server, or embedded library
- Multi-row, multi-table ACID transactions
- Single-node, or highly-scalable distributed mode
- Record links and directed typed graph connections
- Store structured and unstructured data
- Incrementally computed views for pre-computed advanced analytics
- Realtime-api layer, and security permissions built in
- Store and model data in any way with tables, documents, and graph
- Simple schema definition for frontend and backend development
- Connect and query directly from web-browsers and client devices
- Use embedded JavaScript functions for custom advanced functionality
This looks too good to be true. It's worth investigating because the claimed feature set is very appealing. The only other database I am aware of that works well in embedded mode as well as in server mode is Firebird which has a long and lustrious history behind it.
More information about their feature set is available here.
This HackerNew conversation is interesting, especially this quote from the founder
Currently the underlying storage engines are memory, and distributed TiKV. For the next beta release (coming this week) we also have a local RocksDB implementation and a distributed FoundationDB storage implementation.
In the long run, we want to implement our own key-value store so that we can offer some of the temporal/versioning aspects (which would allow you to view your data in the graph as it appeared at a particular point in time).
For the browser, SurrealDB sits on top of a key-value store which is powered by IndexedDB, so that SurrealDB can run in the browser, using WebAssembly.
The reddit discussion is here