PumpkinDB - Event Sourcing Database Engine

  •        123

PumpkinDB is a event sourcing database engine that doesn't overwrite data. It features include Immutable key/value storage, ACID transactions, Binary keys and values (allows any encoding to be used: JSON, XML, Protobuf, Cap'n Proto, etc.), An embedded programming language (PumpkinScript), A range of event indexing and querying primitives.

The core ideas behind PumpkinDB stem from the so called lazy event sourcing approach which is based on storing and indexing events while delaying domain binding for as long as possible. That said, the intention of this database is to be a building block for different kinds of event sourcing systems, ranging from the classic one (using it as an event store) all the way to the lazy one (using indices) and anywhere in between. It's also possible to implement different approaches within a single database for different parts of the domain.




Related Projects

RocksDB - A persistent key-value store for fast storage environments

RocksDB is an embeddable persistent key-value store for fast storage. RocksDB builds on LevelDB to be scalable to run on servers with many CPU cores, to efficiently use fast storage, to support IO-bound, in-memory and write-once workloads, and to be flexible to allow for innovation. It is especially suited for storing data on flash drives. It has multi-threaded compactions, making it specially suitable for storing multiple terabytes of data in a single database.

Apache Accumulo - Key Value Store based on Google BigTable

The Apache Accumulo sorted, distributed key/value store is a robust, scalable, high performance data storage and retrieval system. Apache Accumulo is based on Google's BigTable design and is built on top of Apache Hadoop, Zookeeper, and Thrift. Apache Accumulo features a few novel improvements on the BigTable design in the form of cell-based access control and a server-side programming mechanism that can modify key/value pairs at various points in the data management process.

ForestDB - A Fast Key-Value Storage Engine Based on Hierarchical B+-Tree Trie

ForestDB is a key-value storage engine developed by Couchbase Caching and Storage Team, and its main index structure is built from Hierarchical B+-Tree based Trie, called HB+-Trie. ForestDB paper has been published in IEEE Transactions on Computers.

havalo - Non Distributed NoSQL Key Value Store

A zero configuration, non-distributed NoSQL key-value store that runs in any Servlet 3.0 compatible container. With Havalo, simply drop havalo.war into your favorite Servlet 3.0 compatible container and with almost no configuration you'll have access to a fast and lightweight K,V store backed by any local mount point for persistent storage.

Sophia - Advanced transactional MVCC key-value/row storage library

Sophia is RAM-Disk hybrid storage. It is designed to provide best possible on-disk performance without degradation in time. It has guaranteed O(1) worst case complexity for read, write and range scan operations. It provides Full ACID compliancy, MVCC engine, Optimistic, non-blocking concurrency with N-writers and M-readers, Prefix search, Automatic key-expire, Implemented as small C-written library with zero dependencies and lot more.

Berkeley DB - Embeddable Databases to Meet Your Needs

Oracle Berkeley DB provides the best open source embeddable databases allowing developers the choice of SQL, Key/Value, XML/XQuery or Java Object storage for their data model. At its core is a fast, scalable, transactional database engine with proven reliability and availability. Berkeley DB comes three versions: Berkeley DB, Berkeley DB Java Edition, and Berkeley DB XML.

Project-voldemort - A distributed database, Clone of Amazon's Dynamo

Voldemort is a distributed key-value storage system. Data is automatically replicated over multiple servers. Data is automatically partitioned so each server contains only a subset of the total data. Server failure is handled transparently. It is used at LinkedIn for certain high-scalability storage problems where simple functional partitioning is not sufficient.

ArangoDB - The Multi-purpose NoSQL DB

ArangoDB is a multi-purpose open-source database with flexible data model for documents, graphs, and key-values. Build high performance application using a convenient sql-like query language or JavaScript/Ruby extensions. Its key features are Schema-free, Convenient querying using AQL, Extendable through JS, Space efficiency, Supports modern storage hardware, like SSD and large caches and lot more.

BuntDB - Embeddable, in-memory key/value database for Go with custom indexing and geospatial support

BuntDB is a low-level, in-memory, key/value store in pure Go. It persists to disk, is ACID compliant, and uses locking for multiple readers and a single writer. It supports custom indexes and geospatial data. It's ideal for projects that need a dependable database and favor speed over data size.The desire to create BuntDB stems from the need for a new embeddable database for Tile38 and SummitDB.

badger - Fast key-value store in Go.

An embeddable, persistent, simple and fast key-value (KV) store, written purely in Go. It's meant to be a performant alternative to non Go based key-value stores like RocksDB. Badger is written out of frustration with existing KV stores which are either written in pure Go and slow, or fast but require usage of Cgo. Badger aims to provide an equal or better speed compared to industry leading KV stores (like RocksDB), while maintaining the entire code base in pure Go.

pickleDB - Key-value store using Python's simplejson module

pickleDB is a lightweight and simple key-value store. It is built upon Python's simplejson module and was inspired by redis.

Bolt - An embedded key/value database for Go.

Bolt is a pure Go key/value store inspired by Howard Chu's LMDB project. The goal of the project is to provide a simple, fast, and reliable database for projects that don't require a full database server such as Postgres or MySQL.

CodernityDB - Pure python, NoSQL, Fast Database

CodernityDB is pure python (no 3rd party dependency), fast multi-platform, schema-less, NoSQL database. It has optional support for HTTP server version (CodernityDB-HTTP), and also Python client library (CodernityDB-PyClient) that aims to be 100% compatible with embeded version. It is an advanced key-value database, with multiple key-values indexes in the same engine. It has support for Multiple indexes, Custom storage, Sharding.

Sparkey - Simple constant key/value storage library, for read-heavy systems with infrequent large bulk inserts.

Sparkey is a simple constant key/value storage library. It is mostly suited for read heavy systems with infrequent large bulk inserts. It includes both a C library for working with sparkey index and log files (libsparkey), and a command line utility for getting info about and reading values from a sparkey index/log (sparkey).

diskv - A disk-backed key-value store.

Diskv (disk-vee) is a simple, persistent key-value store written in the Go language. It starts with an incredibly simple API for storing arbitrary data on a filesystem by key, and builds several layers of performance-enhancing abstraction on top. The end result is a conceptually simple, but highly performant, disk-backed storage system.More complex examples can be found in the "examples" subdirectory.

goleveldb - LevelDB key/value database in Go.

This is an implementation of the LevelDB key/value database in the Go programming language.

Chronicle Map - High performance, off-heap, key-value, in memory, persisted data store

Chronicle Map is a high performance, off-heap, key-value, in memory, persisted data store. It works like a standard java map yet it automatically distributes data between processes, these processes can be both on the same server or across your network. In other words its a low latency, huge data key value store, which can store terabytes of data locally to your process.

trousseau - Networked and encrypted key-value database

*Trousseau* is an encrypted key-value store designed to be a *simple*, *safe* and *trustworthy* place for your data.It stores data in a single file, encrypted using the openpgp asymmetric encryption algorithm.It can be easily exported and imported to/from multiple remote storages: like S3, an ssh endpoint, gist (ftp, dropbox, and more to come...). It is able to restrict access to the data store to a set of openpgp recipients. Create a *trousseau* data store, specify which *opengpg* recipients ar

application-development-using-boltdb - Repository for my "Application Development Using BoltDB" talk

We've been taught for decades that we need a complex database server to run our applications. However, these servers incur a huge performance hit for most queries and they are frequently misconfigured because of their operational complexity which can cause slowness or downtime. In this talk, I'll show you how to use a local, pure Go key/value store called BoltDB to build applications that are both simple and fast. We will see how development and deployment become a breeze once you ditch your complex database server.Software is too complex and too slow. We've seen the speed of CPUs increase by orders of magnitude in the past few decades yet our applications seem to require more hardware than ever. In the past several years I've used embedded key/value databases for my applications because of their simplicity and speed. Today I'm going to walk you through building a simple application using a pure Go key/value store I wrote called BoltDB.

membase - distributed key-value database

Membase is an distributed, key-value database management system optimized for storing data behind interactive web applications. These applications must service many concurrent users, creating, storing, retrieving, aggregating, manipulating and presenting data in real-time. Supporting these requirements, membase processes data operations with quasi-deterministic low latency and high sustained throughput.