I‘m happy to pre-announce new query server – Couchbox.

Couchbox is an augment for CouchDB, that extends built-in query server with
so long desired hooks/triggers and async api.

Both api methods and hooks are defined as branches of design documents,
very similar to lists, shows and updates. Unlike native QS functions,
Couchbox hook and api functions are async and see extensions as this._email
or this._cache or whatever, bound to current design doc. Not to mention you
can query CouchDB during function execution.

Couchbox is a combo of CouchDB, node.js 7+, Redis and, optionally, nginx.
There is a script to install all dependencies in nearly one click.

Couchbox employs one of best CouchDB principles: ‘deploy it, start it once
and forget’. That‘s why Couchbox is configured using native CouchDB config,
so it can be (and intended to be) managed from Futon.

Since Couchbox runs in node.js as a swarm of VMs inside several workers,
api and hooks functions fully support ES6 syntax. It also means adding new
plugins (new functions visible as this._something) to Couchbox is an easy
task. Just take known node.js lib and wrap it with several lines of code –
and you have new plugin, available from inside your hooks or api.

Couchbox mimics CouchDB practices whenever possible. Request object,
inhaled by api functions is well known Req object like in Couch, require()
and isArray() work exactly same, so making old lists/updates work in new
Couchbox literally takes minutes (and we sometimes observed more then order
of magnitude performance boost for old lists running in new QS).

Couchbox is specifically designed to work in large distributed nets of
CouchDB instances, actually it was created to run pretty complex commercial
project (which it now runs).

----

We plan to make Couchbox fully OSS at the end of June, now it lives in
restricted dev repo. If somebody wants to preview and play with it right
now, please, register at Gitlab and let me know your nickname, I‘ll grant a
guest access.

Questions are welcomed.

ermouth

Reply via email to