PumpkinDB is an innovative database engine designed to provide immutable, ordered key-value storage with robust ACID transaction support. It features persistent storage and includes an embedded programming language called PumpkinScript. PumpkinDB is suitable for both standalone and embedded use cases, making it a versatile choice for various applications.
PumpkinDB ensures data immutability, meaning once a key's value is set, it cannot be overwritten. This approach encourages users to think about their data from a temporal perspective, which is highly beneficial for implementing event sourcing and similar architectures. Immutable data storage helps prevent data loss due to bugs, misunderstandings, or changing requirements.
PumpkinDB supports ACID transactions, ensuring data integrity and reliability. Transactions are performed atomically, meaning either all changes are committed, or none are. This guarantees that data remains consistent even in case of interruptions.
PumpkinDB offers persistent storage capabilities, making it suitable for applications requiring durable data retention. It leverages the underlying storage system for data persistence, ensuring that data is safely stored and can be recovered after system restarts.
PumpkinDB includes an embedded programming language called PumpkinScript, inspired by Forth. PumpkinScript is a stack-based language designed to facilitate building specialized application-specific databases. It allows applications to communicate with PumpkinDB by sending small PumpkinScript programs over a network interface or API.
PumpkinDB supports binary keys and values, allowing any encoding to be used, such as JSON, XML, Protobuf, Cap'n Proto, etc. This flexibility makes it suitable for a wide range of applications with varying data formats.
PumpkinDB can be used as a standalone server or embedded directly into applications. This versatility makes it a great choice for developers looking to integrate a powerful database engine into their projects.
Immutability in PumpkinDB ensures that replaced data is not simply deleted, providing a safer way to manage data. This approach prevents data loss due to bugs or changing requirements and allows for a temporal perspective on data, which is particularly useful for event sourcing architectures.
PumpkinDB is a database programming environment inspired by the core ideas behind MUMPS. It features a stack-based language, PumpkinScript, and a flat key namespace. The core motivation for immutability is that with declining storage costs, erasing data becomes strategically unnecessary. PumpkinDB aims to facilitate building specialized databases with a focus on immutability and data processing close to storage.
Applications communicate with PumpkinDB by sending small PumpkinScript programs over a network interface or API, allowing for flexible and efficient data management.
PumpkinDB is composed of several components:
PumpkinDB offers client libraries for various programming languages, including:
You can download PumpkinDB releases from GitHub or try it out using a Docker image:
Connect to it using pumpkindb-term
:
Alternatively, you can build PumpkinDB from source. You will need Rust Nightly to do this. The easiest way to get it is to use rustup:
Then build and run the PumpkinDB server: