TrustRadius: an HG Insights company

Apache CouchDB

Score6 out of 10

30 Reviews and Ratings

What is Apache CouchDB?

Apache CouchDB is an HTTP + JSON document database with Map Reduce views and bi-directional replication. The Couch Replication Protocol is implemented in a variety of projects and products that span computing environments from globally distributed server-clusters, over mobile phones to web browsers.

Top Performing Features

  • Deployment model flexibility

    Can be deployed on-premise or in the cloud.

    Category average: 8.9

  • Availability

    Availability is the probability that the NoSQL database will be available to preform its function when called upon.

    Category average: 8.9

  • Concurrency

    Concurrency is the ability for multiple processes to access or change shared data simultaneously. The greater the number of concurrent user processes that can execute without blocking each other, the greater the concurrency of the database system.

    Category average: 9

Areas for Improvement

  • Scalability

    NoSQL databases are inherently more stable than relational databases and have built-in support for replication and partitioning of data to support scalability.

    Category average: 9.4

  • Data model flexibility

    NoSQL databases do not rely on rely on tables, columns, rows, or schemas to organize and retrieve data, but use use more flexible data models to accommodate the large volume and variety of data being generated by modern applications.

    Category average: 9

  • Security

    Security features include authentication against external security mechanisms liker LDAP, Windows Active Directory, and authorization or privilege management. Some NoSQL databases also support encryption.

    Category average: 8.9

Easy to setup, flexible and highly available. All you need to do is relax on the CouchDB

Pros

  • Serialized objects can be stored as unstructured data in JSON formatted documents highly desirable for Web and Mobile Applications.
  • RESTful HTTP API provides flexible and seamless database operations.
  • Scalable distributed high availability solution with replication capability for redundant data storage.

Cons

  • NoSQL DB can become a challenge for seasoned RDBMS users.
  • The map-reduce paradigm can be very demanding for first-time users.
  • JSON format documents with Key-Value pairs are somewhat verbose and consume more storage.

Return on Investment

  • High availability cluster with replication capability virtually mitigates potential losses due to down-time.
  • Cloud implementation provides a highly scalable solution which can optimize cost with resource allocation.

Alternatives Considered

MongoDB, Amazon DynamoDB and Azure Cosmos DB

Other Software Used

Tableau Server, Microsoft Power BI, Google Data Studio, Looker

CouchDB for analytics

Pros

  • It can replicate and sync with web browsers via PouchDB. This lets you keep a synced copy of your database on the client-side, which offers much faster data access than continuous HTTP requests would allow, and enables offline usage.
  • Simple Map/Reduce support. The M/R system lets you process terabytes of documents in parallel, save the results, and only need to reprocess documents that have changed on subsequent updates. While not as powerful as Hadoop, it is an easy to use query system that's hard to screw up.
  • Sharding and Clustering support. As of CouchDB 2.0, it supports clustering and sharding of documents between instances without needing a load balancer to determine where requests should go.
  • Master to Master replication lets you clone, continuously backup, and listen for changes through the replication protocol, even over unreliable WAN links.

Cons

  • The HTTP content type headers aren't explicitly set to `application/json` when you make a request with your browser. They incorrectly respond with `text/plain`. This issue has been reported multiple times, and even had patches proposed, but so far they've been rejected.
  • CouchDB doesn't support returning gzipped responses. You can get around this by using nginx in front of your CouchDB servers, but it could be faster if it was supported directly.
  • Even in clustered mode, CouchDB nodes aren't able to share computed view data through replication. Each node needs to compute it on their own, which is a little wasteful.

Return on Investment

  • Faster development. Since it's a schemaless system, it's easy to add new fields and change the data model, so long as views stay the same.
  • Lower cost of ownership. Unlike paid systems, CouchDB is totally free and supported by the Apache Foundation. The only thing you need to pay for is the hardware it runs on.
  • Easier integration with other services. CouchDB uses a HTTP API for everything, and since nearly all languages have well maintained HTTP libraries, it's easy to connect them to the database.

Alternatives Considered

MongoDB

Other Software Used

Docker, Kubernetes, MariaDB

CouchDB - The Hidden Gem of NoSQL Databases

Pros

  • Technically easy to use and integrate. REST API allows CouchDB to work with all technologies we use: node.js, lua, python, elasticsearch, logstash, etc. Our experience is that it is very robust and has been trouble-free to sue for over 5 years of heavy daily use.
  • Using map/reduce allows us to quickly implement new views into our customer's data based on their needs. Easy to develop new features based on CouchDB's view/list/show mechanism. Functions are written in Javascript, which allows a broad range of our developer's to understand and contribute to code.
  • NoSQL is wonderful for our data set. We support format-specific metadata for many thousands of different file types without the need to change schemas or anything else. We find that CouchDB allows us to focus more on our applications and customers and less on back-end design.
  • Scales for us well. We have 100's millions of documents, many with binary attachments, stored in thousands of databases. Running on some fairly meager hardware distributed across multiple locations. There is not difference in performance today as when we had a few thousand documents when we started.
  • Replication model is very nice and simple. And fast! We use it for obvious things like backups & redundancy. But we also use it for deploying software updates and for remote data colleciton from customer sites.

Cons

  • CouchDB's documentation is a bit lacking. The technical bits are all there from Apache, but meaningful examples are hard to find. I would say the learning curve is a few months to get fluent. Not that CouchDB is too complex, but it has a design that takes some effort to understand and leverage. But for us the results have been more than worth it.
  • CouchDB could use some better tools for managing & administrating itself. We have many thousands of CouchDB databases and had to invest a bit of development effort to be able to managing it all. But the REST API is simple, there are node.js modules like cradle, etc that minimze any challenges we have had.
  • It is not widely used. Or if it is, not a lot of people are admitting to it! This may be a concern if you are looking for people that have CouchDB experience to work on your project.

Return on Investment

  • Biggest impact on our business has been that CouchDB has been pretty invisible from a cost or issues perspective. It just works.
  • We use the Apache releases, so it's free. Of course there is a cost to "free" - we have invested time to become fluent in using and understanding CouchDB. But we feel the investment was well worth the effort and we have a solid, fundamental technology to our products that "just works".
  • There are some things we do - SaaS vs self-hosting - that have probably been kept simple by using CouchDB. Overall, we are extremely happy with CouchDB.

Other Software Used

Elasticsearch, Logstash

CouchDB has a worse performance than AWS S3

Pros

  • Can host on your own server
  • Views can do complex things to show subsets of data
  • Install was easy

Cons

  • SUPER SLOW. We do tons of data and S3 and just using the file system were both way faster
  • Using views is too complex
  • Stores entire DB as 1 file, good luck when it becomes many TB

Return on Investment

  • It wasted our time.
  • It was easier to switch to AWS S3 from couchDB than it was to switch to couchDB from a filesystem so it set us up for that.

Alternatives Considered

Amazon S3 (Simple Storage Service)

Other Software Used

Laravel PHP Framework, AWS Elastic Beanstalk, PostgreSQL

CouchDB Fanboy

Pros

  • Ease of install and setup.
  • Ease of syncing with another database. This was truly set it and forget it.
  • The REST API to read data. No additional drivers are needed to work with CouchDB.

Cons

  • Documentation is always helpful. Took a while to understand how indexing and views worked.
  • User security was a bit hard to set up. Still don't believe we have it correct.
  • It returns data in a non-standard way than we've found with other packages like MongoDB. Caused a few days of head scratching until we realized what we were looking at.

Return on Investment

  • It has saved us hours and hours of coding.
  • It is has taught us a new way to look at things.
  • It has taught us patience as the first few weeks with CouchDB were not pleasant. It was not easy to pick up like MongoDB.

Alternatives Considered

MongoDB

Other Software Used

MySQL, Microsoft SQL Server, MongoDB