Inspirado no Apache CouchDB, o PouchDB (Portable CloudDB) é um banco de dados com baixas demandas de memória e processamento, criado para aplicações web, principalmente aplicações móveis, que necessitam de uma solução de armazenamento baseada no navegador e que possa ser usada offline. Os dados podem ser sincronizados com bancos de dados CouchDB ou outros bancos PouchDB quando o dispositivo estiver online.
O PouchDB é na verdade uma biblioteca JavaScript, com 131KB na sua forma minimizada e comprimida. Em sua versão atual, o banco pode realizar as seguintes tarefas: criar, consultar, replicar e remover um banco de dados; criar, recuperar, atualizar e remover documentos; consultar informações sobre o banco de dados (metadados) e monitorar e reagir a eventos de alterações no banco de dados.
O banco também fornece um adaptador HTTP RESTful para sincronizar seu conteúdo com outros bancos de dados CouchDB ou PouchDB.
O PouchDB utiliza a API IndexedDB do HTML5, para acessar o mecanismo de armazenamento oferecido pelo navegador, por exemplo o SQLite no Firefox ou LevelDB no Chrome.
Quando questionado sobre possíveis cenários onde o PouchDB seria útil, Dave Harvey, hoje o principal desenvolvedor do projeto, comenta:
[Os cenários principais de uso são] em qualquer aplicação web, móvel ou não, que necessite trabalhar offline (e eu acredito que a maioria delas deveria). Acho que qualquer aplicação que possa funcionar offline ou na nuvem terá que lidar com a questão de sincronizar dados de modo confiável, e seria uma potencial usuária do PouchDB. Os exemplos óbvios são aplicações do tipo lista de tarefas e cadastros.
Comparando o PouchDB com uma instalação offline do CouchDB, Harvey acrescenta:
O CouchDB funciona muito bem no servidor, entretanto não pode ser utilizado com uma aplicação web offiline. Já o PouchDB é um CouchDB minúsculo e embutível, que pode funcionar dentro do navegador, além de conversar com o CouchDB (muito mais poderoso) quando estiver online.
O PouchDB está em alfa e foi testado com Firefox 12+ e Chrome 19+. Espera-se que funcione também com outros navegadores que suportem a API IndexedDB. O código está disponível no Github sob licença Apache 2.0.