3 ms·
A lot of this is the result of the confusion in the community, there is the CouchDB Apache project, then the CouchBase work and their own "Single Server" releas
by rkalla 15y ago
A lot of this is the result of the confusion in the community, there is the CouchDB Apache project, then the CouchBase work and their own "Single Server" releases that don't necessarily map 1:1 to the Apache versions.
Then there is the CouchBase "Couch Server" offering which, from what little I can tell, is membase + CouchDB and their CouchDB build, according to their docs, isn't 100% 1:1 with the Apache CouchDB builds (some differences about protocol or something).
Then you have no officially maintained libraries for the different platforms which was a turn off to me the first time I cracked that egg open.
Then you have CouchBase wanting to focus Couch on the mobile-cloud story since they are the only NoSQL solution doing that , with native builds for some of the mobile platforms.
Then you have BigCouch and IrisCouch and a slew of other things I can't figure out where they fit in.
Ultimately when you enter the eco system and start digging, it is hard to figure out exactly what "CouchDB" is, where to grab binaries for your platform from and drivers for your platform.
As wavephorm pointed out, you can figure it all out with some reading and digging, but you have to persist.
It's not like Mongo, you don't just head to the official site, grab the official binary and install the official driver.
I'd also point out that CouchDB's biggest feature, the must-have feature no other NoSQL repo besides RavenDB replicates, is the master-master replication. If you don't need that, your barrier to entry with the other NoSQL solutions is much easier/straight forward.
I hope at some point the CouchDB community focuses their efforts on barriers to entries and figures out a common message for beginners they can communicate, and from there introduce the customizations for the people that need them (mobile Couch, BigCouch, etc.)
- mark242 15y agoCouchbase offers 3 products -- Couchbase Server (which is Membase, with an instance of CouchDB for persistant storage). Couchbase Single Server (which is CouchDB plus Geocouch plus a few other addons). Couchbase Mobile (self-explanatory). My understanding is that version 3.0 will probably merge the Membase and Couchbase products into one, so you'll have Couchbase and Couchbase mobile. BigCouch is a separate product from the Cloudant guys, which is essentially CouchDB with an elastic sharding layer. Cloudant also sells a hosted version of BigCouch with -- I think -- a Lucene engine on top. There will likely be some overlap here between BigCouch and version 3 of Couchbase Server. IrisCouch is a hosted version of Couchbase, with GeoCouch thrown in as well. "Then you have no officially maintained libraries for the different platforms which was a turn off to me the first time I cracked that egg open." I think this comes out of the initial popularity of CouchDB-- a bunch of people wrote drivers for all kinds of languages. Some of those guys work for Couchbase now. The libraries at http://www.couchbase.org/code/couchbase-single http://www.couchbase.org/code/couchbase-single aren't comprehensive, but they do give you a good idea as to what's out there. There was a bit of digging involved to get a lot of driver and connection information, but it seems like the Couchbase guys are doing a great job at cleaning up what was previously a scattershot list on the Apache site.
- jethroalias97 15y agoAlso, CouchDB is all REST, so many people just write their own drivers.
- mark242 15y agoI think it's also important to add-- writing a "driver" for Couch is, basically, writing an API that essentially calls some HTTP library with some options set, and then parses the resulting JSON data. For example-- Ektorp, one of the more popular Java libraries? Wraps the Apache HttpClient, and uses the Jackson library to parse JSON. CouchDB4J does something similar, only it uses JSON-lib. A good Java coder could probably write their own fully-functional driver in a day. jquery.couch.js is basically just a wrapper to $.ajax(). node-couchdb uses the built in client library for node. A good node coder could probably write a fully-functional driver in an hour. So I don't think it's a matter of "download the official driver" as much as it is "download your platform's preferred JSON parser".
- seanmcq 15y agoThis is true until you realize you'll need to support keepalive and chunked encoding to write a reasonbly good driver. Two things that often require significant effort, if not custom coding, to make work with http libraries.
- yxhuvud 15y agoHmm. I thought Riak also had master-master replication.
- pixelcort 15y ago> I'd also point out that CouchDB's biggest feature, the must-have feature no other NoSQL repo besides RavenDB replicates, is the master-master replication. If you don't need that, your barrier to entry with the other NoSQL solutions is much easier/straight forward. The other unique feature is incremental MapReduce. If you need to transform your mostly unchanging data in a way more complex than a mere attribute index, the ability for CouchDB to reuse parts of the last MapReduce operation is very convenient. Of course, if you want to do any transormations beyond one set of map and reduce operations, you're on your own. I think only [Twister][1] does iterative MapReduce at the moment, although I'm not sure if it is incremental or not. [1]: http://www.iterativemapreduce.org/ http://www.iterativemapreduce.org/
- cemerick 15y agoThe interesting thing about CouchDB is that it's actually more like an HTTP storage and query API/protocol than a particular database implementation. As you've noted, there's lots of implementations and variants, platform targets and hosted services. What ties them all together is that you can point your CouchDB client library (or curl! :-P) at any of them, and be off and running. While having a tip of the spear with a consistent message, canonical implementation and download, etc. is one approach (and I could certainly live with better messaging from certain places!), I think people are convinced enough by the merits of the CouchDB model to effectively route around the lack of that and some have produced fantastic (compatible / interoperable) alternatives. (FWIW, I've been using CouchDB for a long time with a lot of apps and instances, but have been able to use all of them with Cloudant instead.) Insofar as MongoDB's fate is tied to 10gen's, the distributed nature of the CouchDB ecosystem is actually working out quite well AFAICT.
- kkovacs 15y agoI have to agree. Not long ago, the biggest advantage of CouchDB for those new to NoSQL were its simplicity and "relax". Lately it really has disappeared into IBM-esque product combination offerings. I truly hope they sort it out though, since CouchDB itself is great technology.
- rkalla 15y agoI think you nailed it with the IBM analogy.