CouchDB foi criado em meados de 2005 por Damien Katz, escrito originalmente em C++ e traduzido para Erlang em 2008. Este combina um modelo intuitivo de armazenagem em documentos com um poderoso sistema de pesquisa acessível via RESTful e HTTP/JSON Api.
Lennon (apud OLIVEIRA, 2009, p.19) observa que o termo "Couch" é um acrônimo para "Cluster of Unreliable Commodity Hardware" (Conjunto de Hardware Não-Confiáveis), "refletindo o objetivo do banco de dados ser extremamente escalável, oferecendo alta disponibilidade e confiabilidade, mesmo quando executando em um hardware que é tipicamente suscetível a falhas".
O couchDB combina um modelo intuitivo de armazenagem em documentos com um poderoso sistema de pesquisa acessível via RESTful e (HTTP/JSON Api), dentre suas funcionalidades está a replicação bidirecional com detecção de falhas e resolução de conflitos; sua base de dados é baseada em princípios MapReduce e em vez de armazenar dados em linhas e colunas, o CouchDB gerencia uma coleção de documentos, os chamados "JSON documents".
Este ainda utiliza um modelo de views baseado em JavaScript para a geração de agregações e filtros, provendo resultados de consultas a partir destes documentos semi-estruturados. Ao invés de armazenar dados em linhas e colunas, o CouchDB gerencia uma coleção de documentos, os chamados "JSON documents". O mesmo usa um método de visualização (Design Documents) com funções definidas que agregam dados e filtros para serem computados em paralelo.
Dentre suas funcionalidades estão à replicação bidirecional com detecção de falhas e resolução de conflitos. Essa base de dados é baseada em princípios de redução de código o chamado MapReduce.
Características Apache CouchDB
Para Anderson (2009), as principais características do CouchDB são:
- (i) atomicidade;
- consistência;
- isolamento;
- durabilidade;
- confiabilidade;
- tolerante a falhas;
- suporte a replicação.
Interface de administração Futon
Após uma analise da interface existente para o gerenciamento do banco de dados CouchDB versão 0.10, chegou-se a conclusão sobre algumas desvantagens apresentadas pela mesma.
- Parte de configurações não funciona muito bem, trava e algumas configurações simplesmente não funcionam na interface é necessário editar arquivos no servidor;
- Controle de usuários é precário, você somente pode adicionar usuários para administradores ou criar usuários com acesso à visualização;
- Gerenciador não funciona no Windows;
- Gerenciador não pode controlar mais que um banco, ou seja, cada servidor deve ter sua interface para controle;
- Todos os bancos criados são visualizados juntos, não a controle por usuários mesmo que administradores.
Vendo estas deficiências, se torna válido o estudo de uma nova interface que venha a contribuir com o banco de dados CouchDB em desempenho, agilidade e segurança.