Fazia tempo que uma determinada tecnologia não me deixava tão empolgado quanto CouchDB. Já estava na minha ToDo list a bastante tempo, mas sempre passava alguma outra coisa na frente e assim fui adiando o momento de colocar a mão na massa e conhecer melhor este banco de dados não relacional, também conhecido como NoSQL.
Encontrei o Fernando Ike na I Conferência W3C que aconteceu aqui em São Paulo, entre as nossas conversas, um dos assuntos foi banco de dados onde o Fike me perguntou se eu já tinha testado o CouchDB nos meus projetos web. O assunto rendeu bastante e alterei minha ToDo list, passando o CouchDB como próximo assunto a ser estudado.
Não precisei de muito tempo para gostar do CouchDB e ficar com uma boa expectativa para realizar testes e aplicar em alguns projetos da Trianguli. O banco de dados é orientado a documentos, diferente dos mais conhecidos, como MySQL, Postgres, etc, que são bancos de dados relacionais. O CouchDB não possui tabelas, cada banco de dados possui um conjunto de documentos no formato JSON e o aplicativo fornece uma maneira bastante eficiente de fazer consultas via Http utilizando um modelo REST. Parece bastante estranho, mas pode ser muito prático para web, principalmente se utiliza Ajax onde a consulta pode ser feita diretamente no banco, sem passar por uma aplicação.
Navegando um pouco encontrei o post 10 Must-Know Topics For Software Architects In 2009, onde o CouchDB é citado como tecnologia promissora e que não deve ser negligenciada. Tem muita gente apostando nesta tecnologia, inclusive eu, que tenho passado por alguns apertos em projetos web que dependem de bancos relacionais e exigem uma manutenção constante em busca de performance, otimização de queries e demais problemas que eventualmente acontecem.
As consultas em um banco CouchDB são realizadas através de views, o retorno é sempre em formato JSON, mas possui diversas bibliotecas para trabalhar com sua linguagem de programação favorita. Em poucos minutos trabalhando com o CouchDB utilizando a sua biblioteca python-couchdb, montei um sistema de inclusão e consultas sem muita dificuldade.
Ainda não avaliei sua performance, mas tenho projetos com um grande volume de informações e vou tentar converter a base para CouchDB e realizar consultas, simulando as mesmas operações que são feitas no MySQL. Não tem muita documentação a respeito, mas consegui informações através de muitas consultas no Google. Em todos os casos, fiquei bastante animado com essa tecnologia e acredito que tenha um grande potencial em aplicações web.
E como aparece no logotipo do CouchDB: relax! 🙂