Enquanto participava da conferência Berlin Buzzwords NoSql, Jan Lehnardt (@janl), um dos organizadores do evento e co-autor do livro CouchDB: The Definitive Guide (um livro gratuíto da O'Reilly) apresentou uma palestra com o título: "Making Software for Humans - CouchDB and The Usable Peer-to-Peer Web" ("Fazendo software para Seres Humanos -CouchDB e a utilizável Web Peer-to-Peer ").
Jan falou de forma entusiasmada sobre a sua visão das características centrais do couchdb, sendo elas:
- facilidade de instalação
- baseado em documentos
- JSON como o subconjunto comum de tipo de dados compartilhado por todas as linguagens de programação
- Interface e API REST com bom comportamento
- Aplicações com duas camadas clara e simples (html+javascript no browser + couch+javascript como servidor)
- Couch Apps
- Possibilidade de escalar tanto para cima como para baixo
- Disponibilidade em diversas plataformas / dispositivos, incluindo mobile (Android, Nokias Maemo/MeeGo e algumas aparições em algumas versões do IPhone)
- Construído para lidar com sincronização, replicação e conflitos.
- Performance
- Views geradas através de map/reduce em javascript
- Notificação de mudanças no banco de dados com suporte via HTTP-Socket
Jan também enfatizou questões relativas a privacidade e propriedade de dados, citando o facebook e o projeto diaspora. Uma solução proposta poderia ser manter os dados de forma mais pessoal (ou pelo menos uma cópia) em uma instância local do couchdb. ("Todo computador deve rodar um webserver de qualquer jeito, esta é uma das idéias originais da internet."). Se você possui essas instâncias em qualquer um de seus computadores com informações como:
- contatos
- compromissos
- bookmarks e históricos do browser
- inclusive email e mensagens instantâneas
poderiam ser guardadas como documentos em um banco de dados e ser automaticamente sincronizado (a nível de bando de dados) para instâncias do couchdb em todos os dispositivos que você utiliza. O impacto em aplicar esta idéia pode ser imenso. Possuindo apenas um mecanismo de armazenamento para todos os tipos de dados pessoais pode tornar os formatos de documento mais limpos por todas as aplicações. Isso poderia ser muito mais fácil para escrever qualquer quantidade de clientes para estes conteúdos pois você não precisa se preocupar em armazenamento, procura e recuperação dos dados, e a interface é bem limpa. Criando aplicações mashup locais (que pode se estender para o cloud) devem tornar-se também bem mais fáceis.
Durante a pausa, alguns participantes discutiram maneiras de projetar soluções dentro desta maneira em duas camadas dependentes. Se você utiliza HTML5 e javascript no browser como cliente, ele roda em qualquer plataforma. CouchDB+javascript via REST poderia ser o seu servidor (com toda a infraestrutura HTTP à frente). E node.js+javascript pode ser utilizado para o trabalho pesado. Isto pode possibilitar colocar a sua regra de negócio em bibliotecas javascript e reutilizá-la em qualquer parte da sua arquitetura.
Os videos da conferência estarão disponíveis nos próximos dias.