Apache CouchDB, commonly referred to as CouchDB, is an open source, document-oriented, non-relational database management server accessible using a RESTful JavaScript Object Notation (JSON) API. The database can be queried and indexed in a MapReduce fashion using JavaScript. If you are looking for a relational database, a replacement for all databases, or an object-oriented datbase, CouchCB is not for you.
It is written in the Erlang programming language which has an emphasis on fault tolerance. CouchDB borrows from NoSQL and is designed for local replication and to scale horizontally across a wide range of devices.
CouchDB is a peer based distributed database system. Any number of CouchDB hosts (servers and offline-clients) can have independent “replica copies” of the same database, where applications have full database interactivity (query, add, edit, delete). When back online or on a schedule, database changes are replicated bi-directionally
CouchDB is supported by commercial enterprises Couchbase and Cloudant. It is used in large and small organizations for a variety of applications where a traditional SQL database is not the best solution for the problem at hand.
Features include:
- Futon, a browser based graphical user interface.
- Document storage – CouchDB stores documents in their entirety. You can think of a document as one or more field/value pairs expressed as JSON. Field values may be strings, numbers, dates, or even ordered lists and associative maps. Every document in a CouchDB database has a unique id and there is no required document schema.
- ACID Semantics – Like many relational database engines, CouchDB provides ACID semantics. It does this by implementing a form of Multi-Version Concurrency Control (MVCC) not unlike InnoDB or Oracle. That means CouchDB can handle a high volume of concurrent readers and writers without conflict.
- Map/Reduce Views and Indexes – To provide some structure to the data stored in CouchDB, you can develop views that are similar to their relational database counterparts. In CouchDB, each view is constructed by a JavaScript function (server-side JavaScript by using CommonJS and SpiderMonkey) that acts as the Map half of a MapReduce operation. The function takes a document and transforms it into a single value which it returns. The logic in your JavaScript functions can be arbitrarily complex. Since computing a view over a large database can be an expensive operation, CouchDB can index views and keep those indexes updated as documents are added, removed, or updated. This provides a very powerful indexing mechanism that grants unprecedented control compared to most databases.
- Robust, incremental replication with bi-directional conflict detection/resolution – this means multiple replicas can have their own copies of the same data, modify it, and then sync those changes at a later time. The replication framework offers:
- Master to Slave replication.
- Master <–> Master replication.
- Filtered replication.
- Incremental replication with bi-directional conflict detection/resolution.
- REST API – CouchDB treats all stored items (there are others besides documents) as a resource. All items have a unique URI that gets exposed via HTTP. REST uses the HTTP methods POST, GET, PUT and DELETE for the four basic CRUD (Create, Read, Update, Delete) operations on all resources. HTTP is widely understood, interoperable, scalable and proven technology. A lot of tools, software and hardware, are available to do all sorts of things with HTTP like caching, proxying and load balancing.
- Excellent data integrity/reliability utilizing MVCC.
- Stores BLOBs (Binary Large Objects) natively.
- Effectively no storage limit.
- Native SSL support.
- Easy installation on many platforms.
Website: couchdb.apache.org
Support: Wiki
Developer: Apache Software Foundation
License: Apache License 2.0
Apache CouchDB is written in Erlang. Learn Erlang with our recommended free books and free tutorials.
Return to Document-Oriented Databases
Popular series | |
---|---|
The largest compilation of the best free and open source software in the universe. Each article is supplied with a legendary ratings chart helping you to make informed decisions. | |
Hundreds of in-depth reviews offering our unbiased and expert opinion on software. We offer helpful and impartial information. | |
The Big List of Active Linux Distros is a large compilation of actively developed Linux distributions. | |
Replace proprietary software with open source alternatives: Google, Microsoft, Apple, Adobe, IBM, Autodesk, Oracle, Atlassian, Corel, Cisco, Intuit, and SAS. | |
Awesome Free Linux Games Tools showcases a series of tools that making gaming on Linux a more pleasurable experience. This is a new series. | |
Machine Learning explores practical applications of machine learning and deep learning from a Linux perspective. We've written reviews of more than 40 self-hosted apps. All are free and open source. | |
New to Linux? Read our Linux for Starters series. We start right at the basics and teach you everything you need to know to get started with Linux. | |
Alternatives to popular CLI tools showcases essential tools that are modern replacements for core Linux utilities. | |
Essential Linux system tools focuses on small, indispensable utilities, useful for system administrators as well as regular users. | |
Linux utilities to maximise your productivity. Small, indispensable tools, useful for anyone running a Linux machine. | |
Surveys popular streaming services from a Linux perspective: Amazon Music Unlimited, Myuzi, Spotify, Deezer, Tidal. | |
Saving Money with Linux looks at how you can reduce your energy bills running Linux. | |
Home computers became commonplace in the 1980s. Emulate home computers including the Commodore 64, Amiga, Atari ST, ZX81, Amstrad CPC, and ZX Spectrum. | |
Now and Then examines how promising open source software fared over the years. It can be a bumpy ride. | |
Linux at Home looks at a range of home activities where Linux can play its part, making the most of our time at home, keeping active and engaged. | |
Linux Candy reveals the lighter side of Linux. Have some fun and escape from the daily drudgery. | |
Getting Started with Docker helps you master Docker, a set of platform as a service products that delivers software in packages called containers. | |
Best Free Android Apps. We showcase free Android apps that are definitely worth downloading. There's a strict eligibility criteria for inclusion in this series. | |
These best free books accelerate your learning of every programming language. Learn a new language today! | |
These free tutorials offer the perfect tonic to our free programming books series. | |
Linux Around The World showcases usergroups that are relevant to Linux enthusiasts. Great ways to meet up with fellow enthusiasts. | |
Stars and Stripes is an occasional series looking at the impact of Linux in the USA. |