CouchDB: diferenças entre revisões

Origem: Wikipédia, a enciclopédia livre.
Conteúdo apagado Conteúdo adicionado
ZéroBot (discussão | contribs)
m r2.7.1) (Robô: A adicionar: es:CouchDB
Reestruturação e reciclagem do conteúdo; Adicionada a bibliografia
Linha 23: Linha 23:
}}
}}


'''CouchDB''' é um [[banco de dados]] orientado a [[documento]]s e de [[código fonte aberto]] escrito na linguagem [[Erlang]], buscando [[replicação]] e [[escalabilidade]] horizontal. Focado no fácil uso, "feito para abraçar a web", segundo o site do projeto.<ref name="official-website">{{cite web|last=Apache Software Foundation|title=Apache CouchDB|url=http://couchdb.apache.org/|accessdate=15 April 2012}}</ref>
'''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"<ref name="official-website">{{cite web|last=Apache Software Foundation|title=Apache CouchDB|url=http://couchdb.apache.org/|accessdate=15 de April de 2012}}</ref>. É 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]][2]. 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 multi-versã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<ref>{{cite web|last=Smith|first=Jason|title=What is the CouchDB replication protocol? Is it like Git?|url=http://stackoverflow.com/a/4766398/395287|work=StackOverflow|publisher=Stack Exchange|accessdate=14 de April de 2012}}</ref>.

Outras características são a semântica [[ACID]] com consistência eventual, [[MapReduce]], replicação incremental e tolerância a falhas. A administração é suportada com uma aplicação web embutida chamado Futon.

== Histórico ==
'''CouchDB''' (''Couch'' é um acrônimo para ''Cluster of Unreliable Commodity Hardware'')<ref>[http://www.ibm.com/developerworks/opensource/library/os-couchdb/index.html Exploring CouchDB], article from IBM Developer Works</ref> é 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]].<ref>[http://mail-archives.apache.org/mod_mbox/incubator-general/200802.mbox/%3c3d4032300802121136p361b52ceyfc0f3b0ad81a1793@mail.gmail.com%3e Apache mailing list announcement] on mail-archives.apache.org</ref>. Alguns meses depois, se tornou um projeto de alto nível<ref>[http://mail-archives.apache.org/mod_mbox/incubator-couchdb-dev/200811.mbox/%3c3F352A54-5FC8-4CB0-8A6B-7D3446F07462@jaguNET.com%3e Re: Proposed Resolution: Establish CouchDB TLP] on mail-archives.apache.org</ref>. Isso levou à primeira versão estável, liberada em julho de 2010.<ref>[http://www.pcworld.com/businesscenter/article/201046/couchdb_nosql_database_ready_for_production_use.html "CouchDB NoSQL Database Ready for Production Use"], article from PC World of Jully 2010</ref>

Em meados de 2012, Damien Katz deixou o projeto para se focar no [[Couchbase]]<ref>{{cite web|last=Katz|first=Damien|title=The future of CouchDB|url=http://damienkatz.net/2012/01/the_future_of_couchdb.html|accessdate=15 de April de 2012}}</ref>. O projeto foi continuado, e a versão 1.2 foi lançada em abril de 2012.

== Principais características ==
; 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]]<ref name="ACID">[http://couchdb.apache.org/docs/overview.html CoachDB, Technical Overview]</ref>. Isso é possível graças ao [[controle de concorrência multi-versã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 eventual
: O CouchDB garante a consistência eventual para prover disponibilidade e tolerância à falhas.



É um banco de dados não relacional que usa [[JSON]] como estrutura de armazenamento, [[JavaScript]] como linguagem de busca usando, [[MapReduce]] e o protocolo [[HTTP]] como sua [[API]].<ref name=official-website/> CouchDB foi lançado inicialmente em 2005 and depois tornou-se um projeto [[Apache Software Foundation|Apache]] em 2008.


{{Referências}}
{{Referências}}

== Bibliografia ==
{{Refbegin}}
* {{citation
| first1 = J. Chris | last1 = Anderson | first2 = Noah | last2 = Slater | first3 = Jan | last3 = Lehnardt | date = November 15, 2009 | title = CouchDB: The Definitive Guide | edition = 1st | publisher = [[O'Reilly Media]] | pages = 300 | isbn = 0-596-15816-5 | url = http://guide.couchdb.org/editions/1/en/index.html }}
* {{citation | first1 = Joe | last1 = Lennon | date = December 15, 2009 | title = Beginning CouchDB | edition = 1st | publisher = [[Apress]] | pages = 300 | isbn = 1-4302-7237-6 | url = http://www.apress.com/book/view/9781430272373 }}
* {{citation | first1 = Bradley | last1 = Holt | date = March 7, 2011 | title = Writing and Querying MapReduce Views in CouchDB | edition = 1st | publisher = [[O'Reilly Media]] | pages = 76 | isbn = 1-4493-0312-9| url = http://oreilly.com/catalog/0636920018247 }}
* {{citation | first1 = Bradley | last1 = Holt | date = April 11, 2011 | title = Scaling CouchDB | edition = 1st | publisher = [[O'Reilly Media]] | pages = 72 | isbn = 1-4493-0343-9 | url = http://oreilly.com/catalog/9781449303433}}
* {{citation | first1 = MC | last1 = Brown | date = October 31, 2011 | title = Getting Started with CouchDB | edition = 1st | publisher = [[O'Reilly Media]] | pages = 50 | isbn = 1-4493-0755-8 | url = http://oreilly.com/catalog/9781449307554}}
* {{citation | first1 = Mick | last1 = Thompson | date = August 2, 2011 | title = Getting Started with GEO, CouchDB, and Node.js | edition = 1st | publisher = [[O'Reilly Media]] | pages = 64 | isbn = 1-4493-0752-3 | url = http://oreilly.com/catalog/9781449307523}}
{{Refend}}


== Ligações externas ==
== Ligações externas ==

Revisão das 19h22min de 7 de outubro de 2012

CouchDB
logo

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[2]. 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 multi-versã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 eventual, MapReduce, replicação incremental e tolerância a falhas. A administração é suportada com uma aplicação web embutida chamado Futon.

Histórico

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

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 multi-versã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 eventual
O CouchDB garante a consistência eventual para prover disponibilidade e tolerância à falhas.


Referências

  1. Apache Software Foundation. «Apache CouchDB». Consultado em 15 de April de 2012  Verifique data em: |acessodata= (ajuda)
  2. Smith, Jason. «What is the CouchDB replication protocol? Is it like Git?». StackOverflow. Stack Exchange. Consultado em 14 de April de 2012  Verifique data em: |acessodata= (ajuda)
  3. Exploring CouchDB, article from IBM Developer Works
  4. Apache mailing list announcement on mail-archives.apache.org
  5. Re: Proposed Resolution: Establish CouchDB TLP on mail-archives.apache.org
  6. "CouchDB NoSQL Database Ready for Production Use", article from PC World of Jully 2010
  7. Katz, Damien. «The future of CouchDB». Consultado em 15 de April de 2012  Verifique data em: |acessodata= (ajuda)
  8. CoachDB, Technical Overview

Bibliografia

Ligações externas

Ícone de esboço Este artigo sobre software é um esboço. Você pode ajudar a Wikipédia expandindo-o.