Seven Weeks

Lyrics to Seven Databases in Song

Relational, columnar, graph or key-value store,
document datastores too.
So much to discover, in this song we’ll cover
from each type at least one or two.

Neo4J, Postgres and HBase and Redis then
CouchDB, Mongo and Riak.
of partitions, consistency, availability:
pick two, you can’t have all three-ach.

Postgres is relational, stable, transactional.
Tables have columns and rows.
Rules, window functions and SQL for querying;
vertically is how it grows.

Riak’s key-value store implements Dynamo,
shards data out to a ring.
It’s REST-based with mapreduce link-walking functions and
vector-clocks; made in Erlang.

HBase is columnar just like BigTable:
distributed, sorted and sparse.
Hadoop’s ecosystem provides extra features but
setup’s a pain in the arse.

Oh, Mongo stores JSON—-its documents speedily
replicate so it’s webscale.
Indexes and updates your deep nested attributes
in-line, so data’s not stale.

Neo4J is so ACID compliant; this
graph database really shines.
You query through edges that connect two vertices.
No ORM-based designs.

The Redis key-value holds rich data structures;
is RAM-based or writes them to disk.
Expiry’s for caching. PUB/SUB message passing,
and queueing by block reading lists.

The CouchDB doc store has partial mapreduce;
is RESTful, crash-only and stable.
Great for embedding, ad-hoc replicating,
though don’t try to join, it’s not able.

The database world is now rich with complexity;
so much to research and know.
You have many options you’ll need to consider like…

Disk read and writing and
Bloom filters, buffering
CPU
querying
TTL
caching plus
consistent hashing and more!

  • 11 June 2012
  • 1