PumpkinDB is a low-level event sourcing database engine that is ACID-compliant. It is a database engine that could be used to build different types of event sourcing systems such as embedded and client-server ones. [04][05][06]
- Website
- http://pumpkindb.org[01]
- Source Code
- https://github.com/PumpkinDB/PumpkinDB[02]
- Tech Docs
- http://pumpkindb.org/doc/[03]
- Developer
- Country of Origin
- CA
- Start Year
- 2017
- End Year
- 2017
- Project Type
- Open Source
- Written in
- Rust
- License
- Mozilla Public License
PumpkinDB is designed to be immutable, the reason behind this is that overwriting data could be unsafe, valuable history of data will be erased. As the cost of storage dropping, a more effective way of managing data is to enforcing immutability of key's value. And writing to the database is close to functional, such that writing side doesn't have to wait for shared resources, the read side will figure out the correct result.
In order to have control over querying costs, it provides an embedded executable imperative language, PumpkinScript, which is a low-level untyped language inspired by MUMPS.
PumpkinDB does not have custom protocols for communication, instead, it has a pipeline to a script executor. When the applications need to communicate with PumpkinDB, small PumpkinScript programs are sent through a network interface in order to do that.
PumpkinDB is a low-level event sourcing database engine that is ACID-compliant. It is a database engine that could be used to build different types of event sourcing systems such as embedded and client-server ones.
PumpkinDB is designed to be immutable, the reason behind this is that overwriting data could be unsafe, valuable history of data will be erased. As the cost of storage dropping, a more effective way of managing data is to enforcing immutability of key's value. And writing to the database is close to functional, such that writing side doesn't have to wait for shared resources, the read side will figure out the correct result.
In order to have control over querying costs, it provides an embedded executable imperative language, PumpkinScript, which is a low-level untyped language inspired by MUMPS.
PumpkinDB does not have custom protocols for communication, instead, it has a pipeline to a script executor. When the applications need to communicate with PumpkinDB, small PumpkinScript programs are sent through a network interface in order to do that.[04][05][06]
History[07]
PumpkinDB is a descendant of a event capture and querying framework ES4J. The difference from ES4J is that PumpkinDB has a HLC timestamp, a UUID, complies with the ELF format, and it treats events as binary blobs. It started as a backend for a lazy event sourcing approach on 2017.
Data Model[02]
It supports binary keys and values, which enables the use of any encoding such as XML, JSON and Protobuf.
Query Interface[08]
It doesn't support SQL, right now, it only supports low-level manual querying with PumpkinScript.
Citations
8 sources- PumpkinDB pumpkindb.org
- GitHub - PumpkinDB/PumpkinDB: Immutable Ordered Key-Value Database Engine · GitHub github.com
- Introduction · PumpkinDB pumpkindb.org
- Show HN: PumpkinDB, an event sourcing database engine | Hacker News ycombinator.com
- Releases · PumpkinDB/PumpkinDB github.com
- Your Functional Programs Are Imperative Pumpkins Back in 2016, on a rainy night in Bangkok, I was attending a regular Hack Night event, and I just had to jump into somebody's else conversation without an invitation. The guy I almost interrupted was github.com
- Problem: it is unclear what this project is about Solution: provide a minimal README github.com
- The journey to doing more with less PumpkinDB is my forth public attempt to perfect my vision for an event sourcing based database. I started off with some private prototypes and, eventually, [Genomu](https://github.com/genomu/genomu) a few years a github.com