A motivação por trás do desenvolvimento CouchDB pode ser definido com uma palavra: relaxar. O CouchDB vem com um conjunto de recursos criados para reduzir o esforço de execução de um sistema resiliente distribuído. Aqui estão alguns recursos importantes do CouchDB e como diferem de outros bancos de dados NoSQL.
Replicação. Um dos principais recursos do CouchDB é a replicação bidirecional, que permite a sincronização de dados entre diversos servidores e dispositivos por meio da replicação bidirecional. Essa replicação permite que as empresas maximizem a disponibilidade dos sistemas, reduzam os tempos de recuperação de dados, localizem geograficamente os dados mais próximos aos usuários finais e simplifiquem os processos backup.
No CouchDB, não há distinção se os dados estão hospedados em um servidor ou em vários. Em vez disso, o CouchDB identifica alterações de documento à medida que ocorrem, a partir de qualquer origem e assegura que todas as cópias de banco de dados estejam sincronizadas com as informações mais atuais. Isso permite que diversas réplicas de banco de dados sejam autocontidas e gerenciadas, sem deixar de hospedar informação precisas e em tempo real em diversos ambientes de computação.
Visualizações. O CouchDB usa visualizações como a ferramenta principal para executar consultas e criar relatórios a partir de arquivos de documento armazenados. As visualizações permitem filtrar documentos em busca de informações relevantes para um determinado processo de banco de dados. Essas informações podem então ser mapeadas de acordo com as suas preferências e extraídas em uma ordem específica.
A melhor parte do CouchDB é a liberdade sobre como as informações são apresentadas. Como as exibições do CouchDB são construídas de forma dinâmica e não afetam diretamente nenhum armazenamento de documentos básico, não existe limitação de quantas visualizações diferentes dos mesmos dados podem ser executadas. Essas visualizações são criadas dentro de documentos de design especial e podem ser replicadas em diversas instâncias de banco de dados, como dados armazenados comuns.
Outro grande recurso do CouchDB é a disponibilidade do Apache MapReduce para criar índices poderosos, que podem localizar documentos facilmente com base em qualquer valor que resida neles. Você poderá então usar esses índices para estabelecer relacionamentos entre documentos e fazer diversos cálculos com base nessas conexões.
API HTTP. O CouchDB usa uma API REST para acessar o banco de dados de qualquer lugar, com a flexibilidade total das operações CRUD (create, read, update, delete). Este meio simples e efetivo para conectividade do banco de dados torna o CouchDB flexível, rápido e poderoso para uso, mantendo-se altamente acessível.
Desenvolvido para uso off-line. Quando estiver ajustando a escala da usabilidade e acessibilidade do seu banco de dados, ser capaz de construir aplicativos que funcionem tão bem off-line quanto on-line, é essencial. O CouchDB permite que os aplicativos armazenem dados coletados em dispositivos móveis e navegadores e, em seguida, sincronizem esses dados assim que estiverem on-line novamente.
Armazenamento de documentos eficiente. No CouchDB, os documentos são as unidades principais de dados em JSON, compostos por vários campos e anexos para fácil armazenamento. Não há limite para o tamanho do texto ou número de elementos em cada documento; além disso, os dados podem ser acessados e atualizados a partir de diversas origens de banco de dados e em clusters de servidores distribuídos globalmente.
Compatibilidade. O CouchDB é extremamente acessível e oferece diversos benefícios de compatibilidade quando integrado à sua infraestrutura atual. O CouchDB foi criado em Erlang (um sistema de tempo de execução e linguagem de programação de propósito geral, simultânea e de garbage collection), que faz dele confiável e fácil de trabalhar para desenvolvedores.
Devido às suas capacidades de software livre, o CouchDB é extremamente flexível e pode ser instalado e executado em vários sistemas operacionais e ferramentas de virtualização. Também é compatível com PouchDB, um banco de dados leve, projetado para execução no navegador de dispositivos móveis.