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. It use B-Tree instead of B+Tree. 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](https://en.wikipedia.org/wiki/MUMPS). PumpkinDB doesn't have custom protocols for communication, instead, it has a pipeline to a script executor. And 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 descendant of a event capture and querying framework [ES4J](https://github.com/eventsourcing/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.