Apache CouchDB

846 visualizações

Publicada em

CouchDB - Um Banco de Dados Documental

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
846
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
16
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Apache CouchDB

  1. 1. Apache CouchDB Hugo Souza hugo.souza82@gmail.com Maceió, Novembro de 2014 Instituto de Computação Universidade Federal de Alagoas
  2. 2. Roteiro •Introdução •Principais Características •BD Relacional X BD Documental •Primeiros Passos •MapReduce •RESTful e BD Documental •Principais Referências Apache CouchDB
  3. 3. Introdução •É um banco de dados não-relacional (NoSQL) •Foi desenvolvido em 2005 sob a linguagem C++ •Em 2008 passou a ser desenvolvido sob a plataforma Erlang OTP e a ser mantido pela Apache (couchdb.apache.org) •É o acrônimo de “Cluster Of Unreliable Commodity Hardware” Apache CouchDB
  4. 4. Introdução •É Opensource –Atualmente, está na versão 1.6.1 (Estável) •Suporte a vários Sistemas Operacionais, como o Microsoft Windows, distribuições Linux e Apple MacOS •Foi criado na Web e para a Web 2.0 •JavaScript (JSON) como sua linguagem de consulta usando o MapReduce •HTTP como API Apache CouchDB
  5. 5. Introdução •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 BDs simultaneamente como, por exemplo, no smartphone do usuário e outro em um servidor. Apache CouchDB
  6. 6. Introdução Apache CouchDB Figura 1 – Coleção de documentos independentes
  7. 7. Principais Características •Armazenamento em documentos –CouchDB armazena os dados como "documentos", com um ou mais pares de chave/valor –Os valores da chave ou 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. –Afinal, qual a vantagem nisso? Apache CouchDB
  8. 8. Principais Características Figura 2 - Um campo multi-valorado exige duas tabelas no banco relacional, mas os documentos flexivelmente acomodam os valores num array. Apache CouchDB
  9. 9. Principais Características •Semântica –Armazena em JSON { “_id” : “f384e53951a2c9769”, “_rev” : “2-ed28d803d95bd6ada”, “nome” : “Hugo”, “idade” : 32, “altura”: 1.85 } Apache CouchDB
  10. 10. Principais Características •Semântica –Consultas em Javascript function(carros){ emit(carros.marca, carros.modelo); } Apache CouchDB
  11. 11. Principais Características •Provê semântica ACID –Isso é possível graças ao Controle de Concorrência Multiversão (MVCC) •Views e índices com Map/Reduce –Os dados armazenados e estruturados usando views. –Cada view é construída por uma função em Javascript que atua como a operação Map do MapReduce. Apache CouchDB
  12. 12. Principais Características •Arquitetura distribuída com replicação –O CouchDB foi desenvolvido com replicação bidirecional (ou sincronização) e operação off-line. •API RESTful –O Futon –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. Apache CouchDB
  13. 13. BD Relacional X BD Documental •Não há nenhuma tabela, linha, coluna ou relacionamento no Documental •Enquanto no relacional, é possível ter quatro ou mais tabelas para armazenar esses dados: –uma para "Pessoa", uma para "Empresa", uma para "Detalhes do Contato" e uma para o próprio cartão de visita. Apache CouchDB
  14. 14. BD Relacional X BD Documental Figura 3 – Conjunto de tabelas de um BD Relacional Apache CouchDB
  15. 15. BD Relacional X BD Documental •BD Relacional há dados com colunas e linhas rígidas •Em BD Documental pode ter identificadores exclusivos – Universally Unique Identifier (UUID) •BD Documental não suporta junções, pois não há chaves estrangeiras e nem primária Apache CouchDB
  16. 16. Primeiros Passos Apache CouchDB •A instalação é fácil –Existe um modo package no portal da Apache Foundation –couchdb.apache.org •Ou é possível instalar via linha/comando por um distribuição Debian •Não esquecer de instalar o JDK antes!
  17. 17. Primeiros Passos Apache CouchDB •Utilizei o Ubuntu 14.04 –A instalação não passa de dois passos! –Instalação da última versão do JDK sudo apt-get install -y openjdk-7-jre-headless –E, finalmente, a instalação do CouchDB sudo apt-get install -y couchdb
  18. 18. Primeiros Passos •Futon –Interface gráfica via browser –Na verdade, é uma API de JSON RESTful –Essa API pode ser acessada através de pedidos HTTP GET e POST e retorna dados no formato de objetos JavaScript usando JSON –É possível simplesmente usar uma estrutura JavaScript com objetos de pedido Ajax, como Prototype, JQuery ou ExtJS Apache CouchDB
  19. 19. Primeiros Passos •Demonstrar um “Hello World” –Primeiro crie um banco de dados em “Create Database”. –Em seguida, crie um novo documento em “New Document”. –Vá na aba “Fields”, onde é possível adicionar campos apenas por cliques. –Não esquecer de, ao final, salvar o documento em “Save Document” Apache CouchDB
  20. 20. Primeiros Passos •Inclusive, há a possibilidade de incluir anexos. •Assim, como também há a possibilidade de deletá-los. •Existem dois tipos de views para os documentos: •Temporárias (Temporary view) •Permanentes (Design documents) Apache CouchDB
  21. 21. MapReduce •O CouchDB é construído em um poderoso mecanismo de armazenamento B-tree –É responsável por manter os dados do CouchDB classificados e fornece um mecanismo para consultar, inserir e excluir •Depende do uso das views para criar relacionamentos arbitrários entre documentos e para fornecer recursos de agregação e relatório. Apache CouchDB
  22. 22. MapReduce •A combinação de map e reduce no CouchDB é representada através de uma view •Funções de map são chamadas de uma vez com cada documento como argumento. –A função pode optar por ignorar o documento completo ou emitir uma ou mais linhas vista como pares de chave / valor. •As views são armazenadas como linhas que são mantidas ordenadamente por chave Apache CouchDB
  23. 23. MapReduce •O principal objetivo da função map é a construção de um índice que armazena os dados relacionados com chaves próximas. •Vamos criar documentos que possui o preço de diversos automóveis como os encontrados em diferentes marcas. Apache CouchDB
  24. 24. MapReduce •E o Reduce? Como funciona no CouchDB? –CouchDB utiliza uma heurística para detectar funções Reduce –Uma função Reduce deve reduzir os valores de entrada para um valor de produção menor Apache CouchDB
  25. 25. MapReduce Apache CouchDB $ chave : $valor $ chave : $valor $ chave : $valor $ chave : $valor $ chave : $valor Map Reduce $ chave : $valor Figura 4 – MapReduce simples
  26. 26. MapReduce Apache CouchDB $ chave : $valor $ chave : $valor $ chave : $valor $ chave : $valor $ chave : $valor Map Reduce $ chave : $valor $ chave : $valor $ chave : $valor Re-Reduce Figura 5 – Map Re-Reduce
  27. 27. MapReduce •Vamos ver na prática um exemplo •Como faço um simples Map? •E um simples Map/Reduce com o exemplo já criado? Apache CouchDB Id : 1 marca : Audi modelo : A3 ano : 2000 Id : 2 marca : Audi modelo : A4 ano : 2005 Id : 3 marca : BMW modelo : Z4 ano : 2012 Id : 4 marca : BMW modelo : 3 ano : 2011
  28. 28. RESTful e BD Documental •É possível também utilizar qualquer executável linha/comando •E aí utilizar HTTP GET e POST e retorna dados no formato de objetos JavaScript usando JSON. •É possível simplesmente usar uma estrutura JavaScript com objetos de pedido Ajax, como Prototype, JQuery ou ExtJS –Não há necessidade para uma linguagem do lado do servidor para seus aplicativos da Web. Apache CouchDB
  29. 29. RESTful e BD Documental •Por questão de simplicidade e para ilustrar as respostas JSON brutas emitidas pela API –App curl será utilizada. •Permite emitir os pedidos GET, POST, PUT e DELETE •Exibe a resposta HTTP bruta recebida do servidor da Web (neste caso, um servidor CouchDB instalado localmente). Apache CouchDB
  30. 30. RESTful e BD Documental •Então, os comandos podem ter os seguintes fins: –Saber todos os bancos de dados criados •Método GET –Criar um banco de dados •Método PUT –Apagar •Método DELETE Apache CouchDB
  31. 31. Principais Referências Apache Software Foundation. Disponível em: <http://couchdb.apache.org/> . Acesso em 14 de Junho de 2014. IBM Developer Works. Explorando o CouchDB. Disponível em: <http://www.ibm.com/developerworks/br/library/os- couchdb/>. Acesso em 13 de Junho de 2014. Anderson, J. Chris; Slater, N; Lehnardt, J. CouchDB: The Definitive Guide, O'Reilly Media, 2009. Apache CouchDB
  32. 32. Obrigado! Contato: hugo.souza82@gmail.com Apache CouchDB

×