Apache CouchDB (link resides outside ibm.com) is an open source NoSQL document database that collects and stores data in JSON-based document formats. Unlike relational databases, CouchDB uses a schema-free data model, which simplifies record management across various computing devices, mobile phones, and web browsers.
CouchDB was introduced in 2005 and later became an Apache Software Foundation (link resides outside ibm.com) project in 2008. As an open source project, CouchDB is supported by an active community of developers who continuously improve the software with a focus on ease of use and embracing the web.
For most enterprises, deciding on which vendor to use when sourcing data management technology can be a challenge. Not only does proprietary software impose certain licensing restrictions on the use of the technology, but there are business continuity concerns when moving all of your enterprise data into a “one-size-fits-all” database management system (DBMS) with no visibility into its internal structure.
CouchDB is different. Unlike proprietary software that can risk “vendor lock-in,” CouchDB is open source, free to use, and easily integrates within your current data management infrastructure. Because you have more control over the software, you also have more flexibility when adapting it to the unique needs of your business. Whether requiring a general purpose document store, enabling efficient data synchronization, or adopting an “Offline First” mindset, CouchDB gives businesses the flexibility they need to create durable, reliable, and scalable infrastructures.
This video explains more about CouchDB and how it works:
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.
CouchDB offers benefits to users and developers alike.
Scalability. The architectural design of CouchDB makes it extremely adaptable when partitioning databases and scaling data onto multiple nodes. CouchDB supports both horizontal partitioning and replication to create an easily managed solution for balancing both read and write loads during a database deployment.
CouchDB features a very durable and reliable storage engine that was built from the ground up for multicloud and multi-database infrastructures. As a NoSQL database, CouchDB is very customizable and opens the door to developing predictable and performance-driven applications regardless of your data volume or number of users.
No read locks. CouchDB uses MVCC (Multi-Version Concurrency Control) to manage concurrent access to databases. This removes the need to lock pieces of data during update and increases CouchDB's ability to sustain high throughput workloads. In-flight requests will read the versions of documents that existed when their reads started, and writes will only be rejected if they create a conflict with a concurrent update.
Open source development. Because of its strong backing and support in the open source community, CouchDB maintains a strong, reliable foundation for enterprise database management. Developed over several years as a schema-less solution, CouchDB offers unparalleled flexibility that simply can’t be found in most proprietary database solutions.
The data layer for hyperscale, resilient, globally available applications, based on open source Apache CouchDB.
Learn about the strengths and weakness of CouchDB, where where the project is heading, and more in this interview with two database experts.
NoSQL is an approach to database design that enables the storage and querying of data outside the traditional structures found in relational databases.
Get an introduction to the important aspects of cloud storage, including how it works, its benefits, and the different types of cloud storage that are available.
Based on Apache CouchDB, IBM Cloudant is a fully managed, distributed database optimized for heavy workloads and fast-growing web and mobile apps. Available as an IBM Cloud service with a 99.99% SLA, Cloudant scales throughput and storage elastically, and its API and replication protocols are compatible with Apache CouchDB for hybrid or multicloud architectures.