Il motivo alla base dello sviluppo di CouchDB può essere definito con una parola: relax. CouchDB viene fornito con una suite di funzioni progettate per ridurre lo sforzo di esecuzione di un sistema distribuito resiliente. Ecco alcune funzioni principali di CouchDB e le differenze rispetto agli altri database NoSQL.
Replica. Una delle funzioni distintive di CouchDB è la replica bidirezionale, che permette 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 recupero dei dati, geo-localizzare i dati più vicini agli utenti finali e semplificare i processi di backup.
In CouchDB, non esiste alcuna distinzione se i dati sono ospitati su un server o su più server. Invece, CouchDB identifica le modifiche ai documenti quando si verificano da qualsiasi origine 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 ospitando informazioni accurate e in tempo reale su più ambienti di calcolo.
Viste. CouchDB utilizza le viste come strumento principale per l'esecuzione di query e la creazione di report dai file di documenti memorizzati. Le viste ti consentono di filtrare i documenti per trovare informazioni pertinenti per uno specifico processo del database. Queste informazioni possono poi essere mappate secondo le tue preferenze ed estratte in un ordine specifico.
Il bello di CouchDB è la libertà di scegliere il modo in cui le informazioni sono presentate. Siccome le viste di CouchDB sono costruite dinamicamente e non influenzano direttamente alcun archivio di documenti sottostante, non c'è alcuna limitazione a quante diverse viste degli stessi dati puoi eseguire. Queste viste sono create all'interno di speciali documenti di progettazione e sono in grado di essere replicate su più istanze di database come normali dati memorizzati.
Un'altra funzione importante di CouchDB è la disponibilità di Apache MapReduce per creare potenti indici che individuano facilmente i documenti in base a uno qualsiasi dei valori in essi contenuti. È quindi possibile utilizzare questi indici per stabilire relazioni tra un documento e l'altro ed eseguire una varietà di calcoli in base a tali queste connessioni.
API HTTP. CouchDB usa una API REST per accedere al database da qualsiasi luogo, con piena flessibilità di operazioni di creazione, lettura, aggiornamento ed eliminazione (CRUD - create, read, update, delete). Questo mezzo semplice ed efficace di connettività del database rende CouchDB flessibile, veloce e potente da usare rimanendo al contempo altamente accessibile.
Costruito per l'offline. Quando vengono scalate l'usabilità e l'accessibilità del database, è essenziale essere in grado di realizzare applicazioni che funzionano bene sia offline che online. CouchDB consente alle applicazioni di memorizzare i dati raccolti localmente su dispositivi mobili e browser, poi sincronizza quei dati una volta che è di nuovo online.
Storage dei documenti efficiente. In CouchDB, i documenti sono le unità primarie di dati utilizzati in JSON, composti da vari campi e allegati per uno storage facile. Non esiste alcun limite alla dimensione del testo o al numero di elementi di ogni documento ed è possibile accedere ai dati e aggiornarli da più origini di database e su server-cluster distribuiti globalmente.
Compatibilità. CouchDB è estremamente abbordabile e offre una varietà di vantaggi di compatibilità quando è integrato con la tua infrastruttura attuale. CouchDB è stato scritto in Erlang (un linguaggio di programmazione generale, concorrente, con raccolta dei dati inutilizzati e un sistema di runtime) rendendolo affidabile e facile da utilizzare per gli sviluppatori.
A causa delle sue funzionalità open source, CouchDB è estremamente flessibile e può essere installato ed eseguito su vari sistemi operativi e strumenti di virtualizzazione. È anche compatibile con PouchDB, un database leggero progettato per funzionare nei browser dei dispositivi mobili.