A motivação por trás do desenvolvimento do CouchDB pode ser definida com uma palavra: relaxar. O CouchDB vem com um conjunto de recursos projetados para reduzir o esforço de execução de sistemas distribuídos resilientes. A seguir, alguns recursos-chave do CouchDB e como ele se diferencia de outros bancos NoSQL.
Replicação. Um dos recursos definidores do CouchDB é a replicação bidirecional, que possibilita a sincronização de dados entre vários servidores e dispositivos por meio de replicação em ambas as direções. Essa replicação permite que as empresas maximizem a disponibilidade dos sistemas, reduzam o tempo de recuperação de dados, localizem geograficamente os dados mais próximos dos usuários finais e simplifiquem os processos de backup.
No CouchDB, não há distinção entre dados armazenados em um único servidor ou em vários. Em vez disso, o CouchDB identifica alterações nos documentos à medida que ocorrem em qualquer fonte e garante que todas as cópias do banco de dados permaneçam sincronizadas com as informações mais atualizadas. Isso permite que várias réplicas do banco sejam autocontidas e gerenciadas, mantendo informações em tempo real e precisas em diversos ambientes de computação.
Visualizações. O CouchDB usa visualizações como ferramenta principal para executar consultas e gerar relatórios a partir dos arquivos de documentos armazenados. As visualizações permitem filtrar documentos para encontrar informações relevantes a um processo específico do banco de dados. Essas informações podem ser mapeadas conforme suas preferências e extraídas em uma ordem determinada.
A beleza do CouchDB está na liberdade de como as informações são apresentadas. Como as visualizações do CouchDB são criadas de forma dinâmica e não afetam diretamente nenhum armazenamento de documentos subjacente, não há limite para quantas visões diferentes dos mesmos dados você pode executar. Essas visualizações são criadas dentro de documentos de design especiais e podem ser replicadas em várias instâncias de banco de dados como dados armazenados normais.
Outro recurso importante do CouchDB é a disponibilidade do MapReduce. As visualizações do CouchDB podem realizar agregações de sumarização nos dados armazenados no índice. Elas são pré-calculadas e armazenadas, o que significa que podem ser retornadas instantaneamente, mesmo quando há bilhões de documentos.
API HTTP. O CouchDB usa uma API REST para acessar o banco de dados de qualquer lugar, com total flexibilidade de operações CRUD (criar, ler, atualizar, excluir). Esse meio simples e eficaz de conexão ao banco de dados torna o CouchDB flexível, rápido e poderoso, mantendo alta acessibilidade.
Criado para uso off-line. Ao escalar a usabilidade e acessibilidade do seu banco de dados, ser capaz de criar aplicações que funcionem tão bem off-line quanto on-line é essencial. O CouchDB permite que aplicações armazenem dados coletados localmente em dispositivos móveis e navegadores, sincronizando-os assim que voltarem a ficar on-line.
Armazenamento eficiente de documentos. No CouchDB, os documentos JSON são as unidades principais de dados, juntamente com anexos binários associados, como imagens. Não há limite para o tamanho do texto ou para a contagem de elementos de cada documento. Quando replicados, os dados podem ser acessados e atualizados em clusters de servidores distribuídos globalmente.
Compatibilidade. O CouchDB é altamente acessível e oferece diversos benefícios de compatibilidade quando integrado à sua infraestrutura atual. O CouchDB foi escrito em Erlang (uma linguagem de programação e sistema de tempo de execução de propósito geral, concorrente e com coleta de lixo), tornando-o confiável e fácil de usar para desenvolvedores. Ele pode ser colocado atrás de balanceadores de carga HTTP padrão. Clientes HTTP estão disponíveis para todas as linguagens de programação, assim como bibliotecas específicas para CouchDB.
O CouchDB é flexível e pode ser instalado e executado em muitos sistemas operacionais e ferramentas de virtualização. Ele também é compatível com o PouchDB, um banco de dados leve projetado para rodar no navegador, inclusive em dispositivos móveis.