CouchDB
Interface web do CouchDB | |
Desenvolvedor | Apache Software Foundation |
Plataforma | Multiplataforma |
Idioma(s) | Inglês |
Escrito em | Erlang |
Gênero(s) | Banco de dados orientado à documentos |
Licença | Apache License 2.0 |
Página oficial | Apache CouchDB. |
Apache CouchDB, comumente referido como CouchDB, é um banco de dados de código-aberto que foca na facilidade de uso e na filosofia de ser "um banco de dados que abrange a Web".[1] É um banco de dados não-relacional (NoSQL) que usa JSON para armazenar os dados, JavaScript como sua linguagem de consulta usando o MapReduce, e HTTP como API.[1] Uma de suas características marcantes é a facilidade na replicação. CouchDB foi lançado em 2005, e em 2008 tornou-se um projeto da Apache Software Foundation.
Ao contrário de um banco de dados relacional, o CouchDB não armazena os dados e relacionamentos em tabelas. Cada banco de dados é uma coleção de documentos independentes, e cada documento mantém seus próprios dados e esquemas. Uma aplicação pode acessar vários bancos de dados, por exemplo, no smartphone do usuário e outro em um servidor. Os metadados do documento contém informações de revisão, possibilitando mesclar quaisquer diferenças que possam ter ocorrido enquanto os bancos de dados estavam desconectados.
CouchDB implementa uma forma de Controle de concorrência multiversão (MVCC), a fim de evitar a necessidade de travar o arquivo de banco de dados durante as gravações. Os conflitos são deixados para a aplicação de resolver. Resolver um conflito geralmente envolve primeira mesclagem de dados em um dos documentos, apagando o antigo.[2]
Outras características são a semântica ACID com consistência posterior, MapReduce, replicação incremental e tolerância a falhas. A administração é suportada com uma aplicação web embutida chamado Futon.
Histórico
[editar | editar código-fonte]CouchDB (Couch é um acrônimo para Cluster of Unreliable Commodity Hardware)[3] é um projeto criado em abril de 2005 por Damien Katz, ex-desenvolvedor da IBM. Damien Katz o definiu como "sistema de armazenamento de bancos de dados para objetos de larga escala". Seu objetivo é tornar o CouchDB um banco de dados para a Internet, voltado à aplicações web. Ele manteve o projeto por quase dois anos, então liberou como código-aberto sob a GNU General Public License.
Em fevereiro de 2008, se tornou um projeto da Incubadora de projetos Apache e sua licença mudou para a Licença Apache.[4] Alguns meses depois, se tornou um projeto de alto nível.[5] Isso levou à primeira versão estável, liberada em julho de 2010.[6]
Em meados de 2012, Damien Katz deixou o projeto para se focar no Couchbase.[7] O projeto foi continuado, e a versão 1.2 foi lançada em abril de 2012.
Principais características
[editar | editar código-fonte]- Armazenamento em documentos
- CouchDB armazena os dados como "documentos", com um ou mais pares de campo/valor, expressos em JSON. Os valores do campo podem ser string, números ou datas, além de arrays e vetores associativos. Todo documento no banco de dados do CouchDB tem uma id única e não há necessidade de um esquema.
- Semântica ACID
- CouchDB provê semântica ACID.[8] Isso é possível graças ao Controle de concorrência multiversão, que permite que o CouchDB manipular um grande volume de leituras e escritas simultâneas sem conflitos.
- Views e índices com Map/Reduce
- Os dados armazenados são estruturados usando-se views. No CouchDB, cada view é construída por uma função em JavaScript que atua como a operação Map do MapReduce. Essa função transforma um documento em um único valor, que é retornado na forma de índice. O CouchDB indexa as views e os mantém atualizados enquanto os documentos são adicionados, removidos ou atualizados.
- Arquitetura distribuída com replicação
- O CouchDB foi desenvolvido com replicação bidirecional (ou sincronização) e operação off-line. Isso significa que múltiplas réplicas podem ter suas cópias do mesmo dado, modificá-los e sincronizá-los mais tarde.
- API REST
- Todos os itens têm uma URI exclusiva, que são acessadas através do HTTP. O REST utiliza os métodos POST, GET, PUT, DELETE para as operações CRUD (Create, Read, Update, Delete) em todos os recursos.
- Consistência posterior
- O CouchDB garante a consistência posterior para prover disponibilidade e tolerância à falhas.
- ↑ a b Apache Software Foundation. «Apache CouchDB». Consultado em 15 de abril de 2012
- ↑ Smith, Jason. «What is the CouchDB replication protocol? Is it like Git?». StackOverflow. Stack Exchange. Consultado em 14 de abril de 2012
- ↑ Exploring CouchDB, article from IBM Developer Works
- ↑ Apache mailing list announcement on mail-archives.apache.org
- ↑ Re: Proposed Resolution: Establish CouchDB TLP on mail-archives.apache.org
- ↑ "CouchDB NoSQL Database Ready for Production Use", article from PC World of Jully 2010
- ↑ Katz, Damien. «The future of CouchDB». Consultado em 15 de abril de 2012
- ↑ «CoachDB, Technical Overview». Consultado em 7 de outubro de 2012. Arquivado do original em 20 de outubro de 2011
Bibliografia
[editar | editar código-fonte]- Anderson, J. Chris; Slater, Noah; Lehnardt, Jan (15 de novembro de 2009), CouchDB: The Definitive Guide, ISBN 0-596-15816-5 1st ed. , O'Reilly Media
- Lennon, Joe (15 de dezembro de 2009), Cópia arquivada, ISBN 1-4302-7237-6 1st ed. , Apress, consultado em 7 de outubro de 2012, cópia arquivada em 5 de dezembro de 2010
- Holt, Bradley (7 de março de 2011), Writing and Querying MapReduce Views in CouchDB, ISBN 1-4493-0312-9 1st ed. , O'Reilly Media
- Holt, Bradley (11 de abril de 2011), Scaling CouchDB, ISBN 1-4493-0343-9 1st ed. , O'Reilly Media
- Brown, MC (31 de outubro de 2011), Getting Started with CouchDB, ISBN 1-4493-0755-8 1st ed. , O'Reilly Media
- Thompson, Mick (2 de agosto de 2011), Getting Started with GEO, CouchDB, and Node.js, ISBN 1-4493-0752-3 1st ed. , O'Reilly Media