Hi Nim community,
I have released RocheDB v0.2.3, a technical preview of a new-concept NoSQL database written in Nim.
Repository: https://github.com/puffball1567/rochedb
Documentation: https://puffball1567.github.io/rochedb/
Install:
nimble install rochedb
roche --help
RocheDB is ring-oriented. Documents and vectors are stored in logical placement units called rings, such as:
docs/japan/support
training/math/algebra
tenant/acme/orders
A ring is not just a directory-like label. RocheDB stores ring metadata and uses it during retrieval. Ring-scoped reads touch only the selected ring or ring subtree, and the API reports statistics such as scanned, skippedVectors, ringsTouched, and candidateReduction. The goal is to make the application's natural data structure part of the query plan, not just part of the name.
The naming and some of the mental model are inspired by astronomy.
The idea is that the placement of data should help reads focus on a smaller, more relevant working set. Instead of treating the database only as a key/value lookup layer, RocheDB tries to make the application's natural data structure part of the retrieval model.
Some current benchmark results from the repository:
Current v0.2.x features include:
This is still a technical preview / research OSS release. It is not production-ready, and I am not presenting it as a Redis/PostgreSQL/MongoDB replacement yet.
Known gaps include TLS, dynamic cluster membership, coordinator redundancy, and larger real-world benchmarks.
I would appreciate feedback from the Nim community on:
The project is Apache-2.0 licensed.
Thanks.
I also added reproducible benchmark helper scripts for PostgreSQL and Redis comparisons.
The PostgreSQL comparison now has both local-local and Docker-Docker runs.
RocheDB vs PostgreSQL, local-local
PostgreSQL 14.23 single-row write with synchronous_commit=on: 1998 us/op
RocheDB vs PostgreSQL, Docker-Docker
RocheDB vs Redis, local-local
RocheDB vs Redis, Docker-Docker
The benchmark helpers are now in the repository:
These are local benchmark results, not universal performance claims. But they are useful because the comparison is no longer only "RocheDB on my machine"; there are now local-local and Docker-Docker reproduction paths for the main PostgreSQL and Redis comparisons.
The short interpretation is:
This is separate from RocheDB’s main working-set reduction idea. The point of these latency numbers is just to show that the reduced working set is not being bought with an obviously slow read path.
Thanks for the suggestion. I tried a quick experimental run with Nim devel and --strings:sso.
Environment:
Stable Nim 2.2.10, normal -d:release:
Nim devel 2.3.1, normal -d:release:
Nim devel 2.3.1, -d:release --strings:sso:
In this small local run, Nim devel itself was roughly neutral, and --strings:sso did not improve this RocheDB benchmark. This benchmark may simply not be a good fit for showing benefits from the new string mode.
I really truly wonder if these libraries will one day prove their weight, or just always remain a load of LLM generated slop.
IMO farrrr too many projects are being churned out here and then forgotten.
This is just my impression when I see projects created on GitHub like literally every day.
I could be wrong though, perhaps there are just a lot of people in the world.
I’m not really sure.
Also the language you used here is not nearly technical enough… I’m confused on the entire thing.