LevelDB is a key-value store, written by Jeff Dean and Sanjay Ghemawat at Google. What makes it interesting to Node developers is the LevelUp npm pacakage, which allows LevelDB to be included within a Node application.
A number of contributors have created npm modules that allow LevelDB to be used as the basis for a graph, a relational or a document database. In addition, LevelUp can be used not just with LevelDB, but with other databases, such as RocksDB.
This approach allows us to create a database for an application that meets our needs, while not forcing us to re-write all the database abstraction layer that an external database usually gives us. It means that we can use a single and very fast data store for a number of different use cases. It also allows us to swap out the data store, if we need to.
From a learning perspective, we can concentrate on thinking about (and implementing) different data abstractions, rather than spending time on understanding and installing a specific database, such as MongoDB or PostgreSQL. By making the database less of a black box, we are likely to get a better understanding of what we want a database to do for us and how.
One key feature that is hard to implement in LevelDB, but is available in forks such as HyperLevelDB and RocksDB, is live backup. Both HyperLevelDB and RocksDB are available as npm modules.
- LevelDB and Node: What is LevelDB Anyway? and Getting Up and Running by Rod Vagg
- LevelDB website
- LevelUp repo on GitHub
- List of community-written modules on the LevelUP wiki
- Level Me Up Scotty! (nodeschool tutorial)
- Intro to LevelDB by Kyle Young (video tutorial)
- Level
- Rod Vagg: A Real Database Rethink: "Introducing LevelDB and Node.JS" NodeconfEU2013 (video)
- Dominic Tarr: A Modular Database? (video)
- Julian Gruber: Level Me up Scotty! (video)
- Matteo Collina - How to cook a Graph database in a Night (video)
- Max Ogden at LXJS 2012: JavaScript Databases!? (video)
- Rod Vagg at LXJS 2013: JavaScript Databases 2 (video)
Rocks (Facebook)
- RocksDB
- level-rocksdb
- RocksDB: A High Performance Embedded Key-Value Store for Flash Storage - Data@Scale (video)
- a Node.js-style RocksDB wrapper
Riak
HyperLevelDB
SSDB
- SSDB ("an alternative to Redis")