The Road to CouchDB 2.0
blog.couchdb.org
blog.couchdb.org
¹https://news.ycombinator.com/item?id=11757015
(couchbase sales people came answering, even if couchbase is a completely different product that covers different usecases)
Probably. But is that really my fault?
There is CouchDB, CouchIO, CouchOne, Couchbase, Couchbase Server, Couchbase Mobile, Couchbase Lite, CouchApps, BigCouch, Touchbase, Membase, Memcached, MemcacheDB... all different and yet related in a way not at all obvious from the names alone.
First there was CouchDB, a database created by Damien Katz, a former IBM developer. Its official name was changed to Apache CouchDB after it became an Apache project.
A company named CouchIO was founded to work on Apache CouchDB and later changed its name to CouchOne (by "its name" I mean the company name - not the database name).
CouchOne (formerly CouchIO) merged with Membase (formerly NorthScale) to form a new company called Couchbase. Membase (the company) developed Membase (a product of the same name). Membase was created by several leaders of the Memcached project and it used the Memcached protocol. After the merger of CouchOne and Membase, Couchbase continued the development of the Membase software and later changed its name to Couchbase Server.
Today I think most people believe that Couchbase Server is a new version of CouchDB but it is in fact a new version of Membase. It still uses the Memcached protocol and not the RESTful API of CouchDB. Meanwhile CouchDB is still CouchDB, actively maintained and enhanced as an Apache project.
It fell behind in terms of perception while Mongo was chasing benchmarks early on but has seemingly continued to just keep chugging along with it's design decisions.
General community, "You sure about that? I mean...benchmarks."
Couch, "Yep...we're sure."
* few years later *
General community, "Have you seen CouchDB? This thing is really solid. Did you ever read that Hacker News thread about how terribly unreliable Mongo is?"
For example, Erlang/OTP brings a lot to the table. Being functional, it would protect you against certain types of errors leaving you free to solve more complex problems. You pay for it with run time performance. String operations are slow etc.
C++ is very fast and very sharp. Not easy to get everything right. (Some sort Greenspun's rule would apply here I think. Substitute Erlang for Common Lisp).
I am only saying that Mongo is not unreliable because C++ was selected; it's unreliable because of architectural choices and lack of care which may or may not have been intentional.
In fact, the 'MEAN stack' was coined by a MongoDB developer on his blog [1], a post which is a perfect example of the kind of marketing, anecdotes, messaging, and strategies that Mongo employed to stay relevant.
[1] http://blog.mongodb.org/post/49262866911/the-mean-stack-mong...
CouchDB 2.0 is a unification of the CouchDB 1.x line (a single-node DB) with BigCouch (which was a fork by Cloudant that added proper out-of-the-box clustering).
Things like:
* Native Lucene search, which you had to build as a weird add-on for Couch. Now it's full-featured out of the box.
* Geospatial queries, also a weird add-on which only kind of worked in Couch, is also cooked in and is pretty strong now.
* True node clustering and data sharding; Couch has always had really really easy replication between nodes, and getting master-master replication is essentially creating a document on each node. However, you had to store your entire data set on every node, which would grow out of control in a hurry.
* A better auto-compactor. Couch 1.6 does fairly well but it's still a weird cron-based thing that can still fail horribly. The auto-compactor in Cloudant/Couch 2.0 is pretty solid and you don't have to worry about massive spikes in disk space consumption.
Do you know if there has been changes on this side for CouchDB 2.0 ?
function(newDoc, oldDoc, userCtx) {
if (userCtx.roles.indexOf('can-write-sessions') !== -1 || userCtx.roles.indexOf('admin') !== -1) {
return;
} else {
throw ({
forbidden: 'can-write-sessions role missing'
});
}
}
Why do you think that the Couchbase Sync Gateway is better?Couchbase's channels allow you to segregate docs with different read (or write) rights inside the same db.
I'm not sure what other software I could say that about.
It can't be a coincidence that both of them are written in Erlang.
Oddly: https://github.com/couchbase/couchdb?files=1 seems to be more like the code than any of the Apache stuff
I decided to write my views[1] in Parenscript[2]. Might not be for everybody, but it makes them fit a lot better in the rest of the application.
[1] https://github.com/cicakhq/potato/blob/72e162a95332e8979d865...
Is the new Fauxton interface included? The old GUI feels more like a proof of concept than an actual user interface. Fauxton would be appreciated.
[1] http://damienkatz.net/2012/01/the_future_of_couchdb.html
Looks like they've just been busy for the past while working on this merge and (eventual) release of 2.0, will need to take another look.