It's a lower-level "database engine" that allows you to build different types of higher level databases based on a very simple foundation:<p>1) BTree-based K/V engine (which gives you an ability to iterate over lexicographically sorted keys)
2) Strong immutability guarantees (data can not be overwritten)
3) ACID transactions
4) Server-side executable imperative language that gives you a control over querying costs<p>In a sense, it's as much of a database constructor as different MUMPS systems (GT.M, for example: <a href="https://en.wikipedia.org/wiki/GT.M" rel="nofollow">https://en.wikipedia.org/wiki/GT.M</a>)<p>PumpkinDB also aims to provide a good set of standard primitives that help building more sophisticated databases, ranging from hashing to JSON support, and more to come.
I like how every commit message is formatted as a problem and a solution: <a href="https://github.com/PumpkinDB/PumpkinDB/commits/master" rel="nofollow">https://github.com/PumpkinDB/PumpkinDB/commits/master</a>
Very interesting! I think one thing that this would benefit from is a lot of usage examples, especially around pumpkinscript. I was reading recently about MUMPS and Caché and it's interesting to see a modern implementation of similar ideas.<p>One question - what is the storage layout like? Do you have plans to support efficient range queries at all?
What's an actual use-case for this? I am reading the documentation but still don't see why I should use it and what the actual advantages compared to current solutions are.
I don't get this whole "never overwrite data" thing, including Datomic, for example.<p>Isn't the disk space needed for these schemes enormous?
Holy cow it's in Rust.<p>I'm doing a thesis in Classification Trees, doing R and hoping to do the backend of the R package in Rust (it looking to be C++). I'll look through the source code of this to see it's tree implementation. Probably used the rust standard library's implementation of BTree?