CouchDB was written in the Erlang programming language. It was started by Damien Katz in 2005. CouchDB became an Apache project in 2008. The current version of CouchDB is 1.61.
The architecture of CouchDB is described below:
- CouchDB Engine: It is based on B-tree and in it, data is accessed by keys or key ranges which map directly to the underlying B-tree operations. It is the core of the system which manages to store internal data, documents, and views.
- Document: It stores a large amount of data.
- Replica Database: It is used for replicating data to a local or remote database and synchronizing design documents.
Features of CouchDB
Features of CouchDB includes the following:
- Replication: It provides the simplest form of replication and no other database is so simple to replicate.
- Document Storage: It is a NoSQL database that follows document storage where each field is uniquely named and contains values of various data types such as text, number, Boolean, lists, etc.
- ACID Properties: The CouchDB file layout follows all the features of ACID properties.
- Security: It also provides database-level security and the permissions are divided into readers and admins where readers can do both the read and write to the database.
- Map/Reduce: The main reason for the popularity of CouchDB is a map/reduce system.
- Authentication: CouchDB facilitates you to keep authentication open via a session cookie-like a web application.
- Built for Offline: CouchDB can replicate to devices like smartphones that have a feature to go offline and handle data sync for you when the device is back online.
- Eventual Consistency: CouchDB guarantees eventual consistency to provide both availability and partition tolerance.
- HTTP API: All items have a unique URI(Unique Resource Identifier) that gets exposed via HTTP. It uses the HTTP methods like POST, GET, PUT, and DELETE for the four basic CRUD (Create, Read, Update, Delete) operations on all resources.
Advantages of CouchDB
Advantages of CouchDB includes the following:
- HTTP API is used for easy Communication.
- It is used to store any type of data.
- ReduceMap allows optimizing the combining of data.
- Structure of CouchDB is very simple
- Fast indexing and retrieval.
Disadvantages of CouchDB
Disadvantages of CouchDB includes the following:
- CouchDB takes a large space for overhead, which is a major disadvantage as compared to other databases.
- Arbitrary queries are expensive.
- There’s a bit of extra space overhead with CouchDB compared to most alternatives.
- Temporary views on huge datasets are very slow.
- It doesn’t support transactions
- Replication of large databases may fail.