Skip to content
transforms every database into a object key value store, written in node.js
Find file
Failed to load latest commit information.
var first commit
.gitignore Added leveldb store to gitignore Contributing guidelines
CacheAndBufferLayer.js Buffer should be per instance
CloneAndAtomicLayer.js Code cleanup and minor bugfixes.
LICENSE first commit added support for crate (
benchmark.js bump v
caseSensitiveTest.js Fixed the case sensitive problem of mysql
cassandra_db.js Brought in the new Cassandra driver
couch_db.js FIX - couch default settings
crate_db.js added support for crate (
defaultTestSettings.js added support for crate (
dirty_db.js added call dirty db close function - dirty 0.9.9
elasticsearch_db.js elasticsearch implementation for ueberDB
findKeysTest.js adjusted findKeysTest to work with results in different order
leveldb_db.js Fix LevelDB indentation
lmdb_db.js Adds lmdb support
mongodb_db.js Select only key field in mongo.find function (for findKeys)
mysql_db.js Create mysql table with utf8mb4 charset
npm-debug.log bump v
package.json added support for crate (
postgres_db.js Merge pull request #28 from Pita/master
randomAccessTest.js move default test settings into seperate file
redis_db.js Update redis_db.js
sqlite_db.js Implemented findKeys for SQLite, updated


Abstract your databases, make datababies. ueberDB turns every database into a simple key value store by providing a layer of abstraction between your software and your database. ueberDB uses a smart cache and buffer algorithm to make databases faster. Reads are cached and writes are done in a bulk. The bulk writing reduces the overhead of a database transaction. The syntax is simple and clean and getting started is easy.

Database Support

  • MySQL
  • SQLite
  • Postgres
  • Level
  • Dirty
  • Mongo
  • Redis
  • Couch
  • Elasticsearch
  • Crate


npm install ueberDB


var ueberDB = require("ueberDB");

var db = new ueberDB.database("mysql", {"user":"root", host: "localhost", "password":"", database: "store"});
//sqlite in-memory
//var db = new ueberDB.database("sqlite");
//sqlite in file
//var db = new ueberDB.database("sqlite", {filename:"var/sqlite3.db"});
//sqlite in file with a write interval of a half second
//var db = new ueberDB.database("sqlite", {filename:"var/sqlite3.db"}, {writeInterval: 500});

//initialize the database
db.init(function (err)

  //set a object as a value
  //can be done without a callback, cause the value is immediately in the buffer
  db.set("valueA", {a:1,b:2});

  //get the object
  db.get("valueA", function(err, value){


How to add support for another database

Look at sqlite_db.js and mysql_db.js, your module have to provide the same functions. Call it DATABASENAME_db.js and reimplement the functions for your database. If you think it works, test it with node benchmark.js DATABASENAME. Benchmark.js is benchmark and test at the same time. It tries to set 100000 values. You can pipe stderr to a file and will create a csv with benchmark results.


Only mysql, dirty, mongodb, couch and crate currently support findKeys feature. The following do not yet support the function:

  • leveldb
  • redis (Only keys of the format *:*:*)
  • cassandra (Only keys of the format *:*:*)
  • elasticsearch (Only keys of the format *:*:*)

For details on how it works please refer to the wiki:


Apache License v2

Something went wrong with that request. Please try again.