La motivazione alla base dello sviluppo di CouchDB può essere definita con una sola parola: relax. CouchDB è dotato di una suite di caratteristiche progettate per ridurre lo sforzo necessario per gestire un sistema distribuito resiliente. Ecco alcune delle caratteristiche principali di CouchDB e le differenze rispetto agli altri database NoSQL.
Replica. Una delle caratteristiche di CouchDB è la replica bidirezionale, che consente la sincronizzazione dei dati su più server e dispositivi tramite la replica bidirezionale. Questa replica consente alle aziende di massimizzare la disponibilità dei sistemi, ridurre i tempi di ripristino dei dati, geolocalizzare i dati più vicini agli utenti finali e semplificare i processi di backup.
In CouchDB non c'è distinzione se i dati sono ospitati su un server o su più server. Piuttosto, CouchDB identifica le modifiche ai documenti via via che si verificano da qualsiasi fonte e garantisce che tutte le copie del database rimangano sincronizzate con le informazioni più aggiornate. Ciò consente a più repliche di database di essere autonome e gestite, pur conservando informazioni accurate e in tempo reale in più ambienti informatici.
Viste. CouchDB utilizza le viste come strumento principale per l'esecuzione di query e la creazione di report da file di documenti memorizzati. Le viste consentono di filtrare i documenti per trovare informazioni rilevanti per un particolare processo di database. Queste informazioni possono quindi essere mappate in base alle tue preferenze ed estratte in un ordine specifico.
Il bello di CouchDB è la libertà di presentare le informazioni. Poiché le viste di CouchDB sono create dinamicamente e non influiscono direttamente sui database di documenti sottostanti, non ci sono limiti al numero di viste diverse degli stessi dati che può eseguire. Queste viste vengono create all'interno di speciali documenti di progettazione e possono essere replicate su più istanze di database, come dati memorizzati regolarmente.
Un'altra grande caratteristica di CouchDB è la disponibilità di MapReduce. Le viste CouchDB possono effettuare aggregazioni di riepilogo sui dati contenuti all'interno dell'indice. Sono precalcolati e memorizzati, il che significa che possono essere restituiti istantaneamente, anche oltre miliardi di documenti.
API HTTP. CouchDB utilizza un'API REST per accedere al database da qualsiasi luogo, con la massima flessibilità delle operazioni CRUD (creazione, lettura, aggiornamento, eliminazione). Questo mezzo semplice ed efficace di connettività al database rende CouchDB flessibile, veloce e potente da utilizzare, pur rimanendo altamente accessibile.
Creato per l'offline. Quando si tratta di scalare l'usabilità e l'accessibilità del database, è essenziale poter costruire applicazioni che funzionino bene sia offline che online. CouchDB consente alle applicazioni di memorizzare i dati raccolti localmente sui dispositivi mobili e sui browser, per poi sincronizzarli una volta tornati online.
Storage efficiente dei documenti. In CouchDB, i documenti JSON sono le unità principali di dati, insieme agli allegati binari associati, come le immagini. Non ci sono limiti alle dimensioni del testo o al numero di elementi di ciascun documento. Quando vengono replicati, è possibile accedere ai dati e aggiornarli attraverso cluster di server distribuiti a livello globale.
Compatibilità. CouchDB è estremamente accessibile e offre una serie di benefici di compatibilità quando è integrato con la sua infrastruttura attuale. CouchDB è stato scritto in Erlang (un linguaggio di programmazione e un sistema runtime generico, simultaneo e garbage-collected) ed è affidabile e facile da usare per gli sviluppatori. Può essere posizionato dietro i bilanciatori di carico HTTP standard. I client HTTP sono disponibili per tutti i linguaggi di programmazione, così come le librerie client specifiche di CouchDB.
CouchDB è flessibile e può essere installato ed eseguito su molti sistemi operativi e strumenti di virtualizzazione. È inoltre compatibile con PouchDB, un database leggero progettato per essere eseguito nel browser web, anche su dispositivi mobili.