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.
Cassandra does one thing very well. It's able to collect any type of metrics and analytics and store them at very fast speeds. But when it comes to reading the data, there are minor performance issues. That's when other databases such as couchdb or couchbase come in. They can …
It has been 5+ years since we chose CouchDB. We looked an MongoDB, Cassandra, and probably some others. At the end of the day, the performance, power potential, and simplicity of CouchDB made it a simple choice for our needs. No one should use just because we did. As I said …
Apache Cassandra is a NoSQL database and well suited where you need highly available, linearly scalable, tunable consistency and high performance across varying workloads. It has worked well for our use cases, and I shared my experiences to use it effectively at the last Cassandra summit! http://bit.ly/1Ok56TK It is a NoSQL database, finally you can tune it to be strongly consistent and successfully use it as such. However those are not usual patterns, as you negotiate on latency. It works well if you require that. If your use case needs strongly consistent environments with semantics of a relational database or if the use case needs a data warehouse, or if you need NoSQL with ACID transactions, Apache Cassandra may not be the optimum choice.
Great for REST API development, if you want a small, fast server that will send and receive JSON structures, CouchDB is hard to beat. Not great for enterprise-level relational database querying (no kidding). While by definition, document-oriented databases are not relational, porting or migrating from relational, and using CouchDB as a backend is probably not a wise move as it's reliable, but It may not always be highly available.
Continuous availability: as a fully distributed database (no master nodes), we can update nodes with rolling restarts and accommodate minor outages without impacting our customer services.
Linear scalability: for every unit of compute that you add, you get an equivalent unit of capacity. The same application can scale from a single developer's laptop to a web-scale service with billions of rows in a table.
Amazing performance: if you design your data model correctly, bearing in mind the queries you need to answer, you can get answers in milliseconds.
Time-series data: Cassandra excels at recording, processing, and retrieving time-series data. It's a simple matter to version everything and simply record what happens, rather than going back and editing things. Then, you can compute things from the recorded history.
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.
Cassandra runs on the JVM and therefor may require a lot of GC tuning for read/write intensive applications.
Requires manual periodic maintenance - for example it is recommended to run a cleanup on a regular basis.
There are a lot of knobs and buttons to configure the system. For many cases the default configuration will be sufficient, but if its not - you will need significant ramp up on the inner workings of Cassandra in order to effectively tune it.
I would recommend Cassandra DB to those who know their use case very well, as well as know how they are going to store and retrieve data. If you need a guarantee in data storage and retrieval, and a DB that can be linearly grown by adding nodes across availability zones and regions, then this is the database you should choose.
Because our current solution S3 is working great and CouchDB was a nightmare. The worst is that at first, it seemed fine until we filled it with tons of data and then started to create views and actually delete.
Couchdb is very simple to use and the features are also reduced but well implemented. In order to use it the way its designed, the ui is adequate and easy. Of course, there are some other task that can't be performed through the admin ui but the minimalistic design allows you to use external libraries to develop custom scripts
it support is minimal also hw requirements. Also for development, we can have databases replicated everywhere and the replication is automagical. once you set up the security and the rules for replication, you are ready to go. The absence of a model let you build your app the way you want it
We evaluated MongoDB also, but don't like the single point failure possibility. The HBase coupled us too tightly to the Hadoop world while we prefer more technical flexibility. Also HBase is designed for "cold"/old historical data lake use cases and is not typically used for web and mobile applications due to its performance concern. Cassandra, by contrast, offers the availability and performance necessary for developing highly available applications. Furthermore, the Hadoop technology stack is typically deployed in a single location, while in the big international enterprise context, we demand the feasibility for deployment across countries and continents, hence finally we are favor of Cassandra
I have no experience with this but from the blogs and news what I believe is that in businesses where there is high demand for scalability, Cassandra is a good choice to go for.
Since it works on CQL, it is quite familiar with SQL in understanding therefore it does not prevent a new employee to start in learning and having the Cassandra experience at an industrial level.