QuineDB

discontinued

by Gary Fredericks · since 2016 · also known as quinedb

A joke key-value store that is also a quine: every write prints a new copy of itself containing your data.

key-valueembedded libraryopen source (copyleft)legacy

discontinued. Joke project with no commits since 2017; the script still runs on Bash 4 but nothing is maintained.

Overview

QuineDB is Gary Fredericks' 2016 satire of database design: a single Bash 4 script that stores keys and values inside its own source code. Running it prints the (possibly modified) script to stdout and the command result to stderr, so a write only persists if you redirect stdout back over the file; get, set, delete and keys are the whole API, and 'transactions' are built by piping one invocation into the next. The README cheerfully reports that 1,000 inserts take over 11 minutes and dodges questions about concurrency and clustering. It is a fun teaching prop about quines, persistence and what a database fundamentally is, and should never hold real data.

Strengths & trade-offs

Strengths

  • +The entire database, code and data, travels as one self-reproducing file
  • +Forking or versioning the database is just copying a script
  • +A memorable illustration of quines and of what 'persistence' really requires

Trade-offs

  • −Deliberately impractical: very slow beyond a few hundred keys
  • −Writes are lost unless stdout is redirected back over the script
  • −No concurrency control, networking or real durability guarantees

Great for

  • +Teaching quines and self-modifying programs
  • +Conference talks and jokes about database design

Think twice for

  • −Storing anything you care about
  • −Any concurrent or multi-user use

Capabilities

Native or official first-party support · 1 of 25 tracked

✓Durable persistence
–Transactions
–Joins
–Secondary indexes
–Full-text search
–Vector search
–Geospatial
–JSON
–Change data capture
–Triggers
–Stored procedures
–Materialized views
–TTL / expiry
–Pub/Sub
–Columnar storage
–In-memory
–Compression
–Encryption at rest
–Role-based access
–Time travel
–Branching
–Online schema changes
–Streaming ingest
–Offline sync
–Runs in WebAssembly

Scale & consistency

Comfortable data size
Small · ≤ 100 GB
Horizontal scaling
None
Multi-region
No
Transactions
Limited ACID
Consistency
Strong
Schema
Schemaless
Architecture
Embedded, Single node
Query languages
Command-line get/set/delete/keys

Operations get slower roughly with n log n of the data size; a thousand keys is already painful.

Deployment

Self-hosted Vendor-managed cloud Serverless Embedded Edge Kubernetes operator

Ecosystem

apis & protocolsCLI

Alternatives to QuineDB

Compare all→
SQLiteRelational75.5

The in-process SQL engine that ships in every phone, browser and OS: one file, zero servers.

quinedb vs sqlite →
LMDBKey-Value39.7

Tiny memory-mapped B+tree with ACID transactions and lock-free readers; reached 1.0 in 2026.

quinedb vs lmdb →
bboltKey-Value11.5

etcd's maintained fork of BoltDB: a simple, pure-Go B+tree store in a single file.

quinedb vs bbolt →
EhcacheKey-Value17.6

The standard embedded JVM cache, with heap, off-heap and disk tiers and optional Terracotta clustering.

quinedb vs ehcache →
libmdbxKey-Value4.9

Heavily reworked LMDB descendant: memory-mapped ACID B+tree with auto-growing files.

quinedb vs libmdbx →
SlateDBKey-Value19.7

Embedded LSM storage engine that writes straight to object storage like S3.

quinedb vs slatedb →

QuineDB FAQ

What is QuineDB?

QuineDB is a key-value database by Gary Fredericks, first released in 2016. QuineDB is Gary Fredericks' 2016 satire of database design: a single Bash 4 script that stores keys and values inside its own source code. Running it prints the (possibly modified) script to stdout and the command result to stderr, so a write only persists if you redirect stdout back over the file; get, set, delete and keys are the whole API, and 'transactions' are built by piping one invocation into the next. The README cheerfully reports that 1,000 inserts take over 11 minutes and dodges questions about concurrency and clustering. It is a fun teaching prop about quines, persistence and what a database fundamentally is, and should never hold real data.

Is QuineDB open source?

Yes. QuineDB is open source. License: Eclipse Public License 1.0.

Does QuineDB support ACID transactions?

Partly. QuineDB offers limited ACID guarantees (for example, single-record or single-partition transactions), with strong consistency.

Does QuineDB scale horizontally?

QuineDB does not scale horizontally; it runs on a single node, so you scale it up rather than out. It is comfortable at small scale (≤ 100 GB).

How can I run QuineDB?

You can self-host it and embed it in your application.

What is QuineDB best for?

QuineDB is a strong fit for teaching quines and self-modifying programs; and conference talks and jokes about database design. Think twice for storing anything you care about.

What are the best alternatives to QuineDB?

Common alternatives to QuineDB include SQLite, LMDB, bbolt, Ehcache and libmdbx. The right choice depends on your workload, scale and hosting; WhichDB's smart match ranks them against your requirements.

Is QuineDB still maintained?

QuineDB is discontinued. Joke project with no commits since 2017; the script still runs on Bash 4 but nothing is maintained.

How popular is QuineDB?

QuineDB ranks #598 of 844 databases on the WhichDB Score (0.9/100), and #105 among key-value databases. The score combines public adoption signals such as package downloads, GitHub activity, job posts and developer discussion.