Store data with a complete, queryable history of every past change.
Query what a record looked like at any previous point in time.
Branch and merge data the same way you would branch and merge code.
Connect existing Redis or PostgreSQL client tools to a Git-backed database.
| avelino/chrondb | yogthos/flatiron | dynamic-alpha/ducktape | |
|---|---|---|---|
| Stars | 97 | 27 | 19 |
| Language | Clojure | Clojure | Clojure |
| Setup difficulty | moderate | moderate | moderate |
| Complexity | 4/5 | 3/5 | 3/5 |
| Audience | developer | developer | data |
Figures from each repo's GitHub metadata at analysis time.
Requires Docker, or Java 11+ and Git 2.25+ if running from source.
ChronDB is a database that stores key-value data and keeps a complete record of every change ever made. Unlike most databases that overwrite old data when you update a record, ChronDB preserves all previous versions. This means you can look up what any piece of data looked like at any point in the past, which the project calls "time travel" queries. Under the hood, ChronDB uses Git as its storage foundation. Git is a tool normally used to track changes to code files, and ChronDB applies the same idea to data. This gives it built-in support for branching (creating isolated copies of your data for testing), merging changes, and a full audit trail of who changed what and when. You can connect to ChronDB in several ways. There is a native API for Clojure applications, an HTTP REST interface for any programming language, a Redis-compatible interface so tools built for Redis work without changes, and a PostgreSQL-compatible interface for SQL-based clients. There are also language bindings for Python and Rust if you want to embed the database directly in an application. ChronDB supports ACID transactions, meaning it guarantees that writes are consistent and durable. It stores any JSON-compatible data without requiring a fixed schema upfront. The search layer runs on Apache Lucene, the same search engine used by many production systems, which enables full-text search with configurable indexes. The quickest way to run it is via Docker, with ports exposed for all three protocol options. A Clojure dependency entry is available for direct use in JVM projects.
A key-value database built on Git that keeps every past version of your data, so you can query what any record looked like at any point in time.
Mainly Clojure. The stack also includes Clojure, Git, Apache Lucene.
You can use, study, modify, and redistribute it, but if you run a modified version as a network service, you must share that source code too.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.