The motivation behind CouchDB’s development can be defined with one word: relax. CouchDB comes with a suite of features designed to lower the effort of running resilient distributed system. Here are some key features of CouchDB and how it’s different from other NoSQL databases.
Replication. One of CouchDB’s defining features is bi-directional replication, which enables synchronization of data across multiple servers and devices via bi-directional replication. This replication enables enterprises to maximize systems availability, reduce data recovery times, geo-locate data closest to end users, and simplify backup processes.
In CouchDB, there is no distinction whether data is housed on one server or on multiple. Rather, CouchDB identifies document changes as they occur from any source and ensures all database copies remain synchronized with the most up-to-date information. This allows multiple database replicas to be self-contained and managed while still housing accurate, real-time information across multiple computing environments.
Views. CouchDB uses views as the primary tool for running queries and creating reports from stored document files. Views allow you to filter documents to find information relevant to a particular database process. This information can then be mapped according to your preferences and extracted in a specific order.
The beauty of CouchDB is the freedom you have with how information is presented. Because CouchDB views are built dynamically and don’t directly affect any underlying document stores, there is no limitation to how many different views of the same data you can run. These views are created inside of special design documents and are able to be replicated across multiple database instances like regular stored data.
Another great feature of CouchDB is the availability of MapReduce. CouchDB views can carry out summarisation aggregations on the data held within the index. These are pre-calculated and stored, meaning they can be returned instantly, even over billions of documents.
HTTP API. CouchDB uses a REST API to access the database from anywhere, with full CRUD (create, read, update, delete) operations flexibility. This simple and effective means of database connectivity makes CouchDB flexible, fast, and powerful to use while remaining highly accessible.
Built for offline. When you are scaling your database usability and accessibility, being able to build applications that work as well offline as they do online is essential. CouchDB enables applications to store collected data locally on mobile devices and browsers, then synchronizes that data once it is back online.
Efficient document storage. In CouchDB, JSON documents are the primary units of data, along with associated binary attachments such as images. There is no limit to the text size or element count of each document. When replicated, data can be accessed and updated across globally distributed server clusters.
Compatibility. CouchDB is extremely approachable and offers a variety of compatibility benefits when it is integrated with your current infrastructure. CouchDB was written in Erlang (a general-purpose, concurrent, garbage-collected programming language and runtime system) making it both reliable and easy to work with for developers. It can be placed behind standard HTTP load balancers. HTTP clients are available for every programming languages, as well as CouchDB-specific client libraries.
CouchDB is flexible and can be installed and run on many operating systems and virtualization tools. It also compatible with PouchDB, a lightweight database designed to run in the web browser, including on mobile devices.