What do you like best?
The best feature of CouchDB is it's simplicity and use of familiar technology and concepts:
- A RESTful API means I can use any language to access it (even using shell and curl).
- It plays well in the HTTP-based world with things like proxy servers, load balancers, and SSL offloading.
- APIs to assist in the integration of CouchDB with other technologies:
* change API lets me connect to Elasticsearch using logstash
* os_daemons support lets me integrate external apps and services into CouchDB environment
- Replication is simple and powerful in both master-master and master-slave modes
What do you dislike?
#1 issue with using CouchDB is lack of consolidated documentation on how to solve issues. Forgive me authors, but the books out there are not great. Be prepared to spend a fair amount of time searching for answers. If this is your first NoSQL/document database, prepare for a learning curve mostly on your own.
Recommendations to others considering the product
When we started with CouchDB, we did not plan on using logstash or Elasticsearch. But we use both now and the integration was trivial. We can use Postman for experimenting and testing. These are just two examples of how easy it was to make CouchDB work with other things - an effort that would have been much harder if CouchDB had a binary interface, or didn't use JSON, or required us to leanr a new language to write our m/r functions.
What business problems are you solving with the product? What benefits have you realized?
We are capturing large amounts of unstructured data from hundreds of remote locations and at greatly varying rates. The devices sourcing this data range from IoT (Raspberry Pi) to very large servers. We process around 500GB of new or modified data per hour - CouchDB handles this fine.
CouchDB is also used for simple messaging between systems (using change API). And we use replication to distribute software updates out to remote sites. This provides a simple and "free" reliable mechanism to update many sites automatically.
We use M/Rfor simple, single-term searches and for summary displays of data (using shows & lists). We use logstash to send data from CouchDB to Elasticsearch for more complex & fulltext searches.
Benefits have been numerous: we have scaled horizontally and vertically several times with no issues. Performance of CouchDB is excellent on mediocre hardware. CouchDB has proved to be very reliable and immune to issue caused by bugs or network errors.