Waterline is a brand new kind of storage and retrieval engine.
It provides a uniform API for accessing stuff from different kinds of databases, protocols, and 3rd party APIs. That means you write the same code to get users, whether they live in mySQL, LDAP, MongoDB, or Facebook.
At the same time, Waterline aims to learn lessons and maintain the best features from both Rails' ActiveRecord and Grails' Hibernate ORMs. Waterline also comes with built-in transaction support which takes advantage of any API the datstore you're using offers, but falls back to maintaining a separate atomic commit log (i.e. the same way Mongo does transactions).
Adapters currently supported
- Dirty (in memory and simple disk JSON store)
- mongoDB (Jan)
- redis (March)
- Active Directory
It's easy to add your own adapters for integrating with proprietary systems or existing open APIs. For most things, it's as easy as
require('some-module') and mapping the appropriate methods to match waterline semantics.