Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD...

31
Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula

Transcript of Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD...

Page 1: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Arquitetura Baseada em Serviços

Web Services e BD e NoSQL

2º Semestre 2009 > PUCPR > Pós em BD

Bruno C. de PaulaBruno C. de Paula

Page 2: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Resumo e motivação da aulaVamos trabalhar na aula de hoje com bancos de dados não relacionais;Esta nova abordagem está ganhando bastante força em arquiteturas baseadas em serviços devido às suas vantagens relacionadas a escalabilidade, distribuição e acesso.

Page 3: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Modelo relacional é excelente,porém...É necessário transmitir um texto SQL do

cliente ao SGBD para conseguir um resultado;

Difícil de criar estruturas reutilizáveis;Representação antinatural de

estruturas altamente hierárquicas;Não prevê, originalmente, sistemas

distribuídos e paralelizáveis.

311/04/23

Page 4: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

NoSQL - característicasSGBDs projetados para aplicações web

em mente;Distribuídos, descentralizados e

paralelizáveis;Tolerantes a falha;Fogem de schemas fixos;Escaláveis de maneira transparente;Acessíveis via web services;Não é ORM!Muito novos...

411/04/23

Page 5: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

NoSQL - características

Podem ser instalados localmente ou, por serem distribuídos, podem ser jogados para a nuvem;

511/04/23

Page 6: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Cloud ComputingComputação em NuvemDetalhes da infra-estrutura são escondidos do

usuário e localizados na Internet; IaaS (Infraestrutura como Serviço):

– Virtualização;PaaS (Plataforma como Serviço):

– Cloudware;– Seu sofware roda na Internet;

SaaS (Software como Serviço):– Licenciamento de um aplicativo sob demanda.

611/04/23

Page 7: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Teorema CAPAo mesmo tempo, você só pode escolher 2

ao mesmo tempo:– Consistência (consistency): todos os

clientes enxergam os mesmos dados;– Disponibilidade (availability) : todos os

clientes acessam alguma versão dos dados; – Tolerância a Partição (partition

tolerance): o banco pode ser dividido em múltiplos servidores.

NoSQL implementam consistência eventual;

711/04/23

Page 8: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

NoSQLTipos de SGBD

Key-value: tabela hash;Document-based: metáfora de documentos;

Não existe um padrão de linguagem!

811/04/23

Page 9: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Exemplos de implementações NoSQLVoldemort: Linkedin, Digg;Cassandra: Facebook;CouchDB;MongoDB; Amazon SimpleDB: usado pelo S3;

911/04/23

Page 11: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Voldemort

Desenvolvido pelo Linkedin;Dados são automaticamente:

–Replicados para múltiplos servidores;–Particionados (cada servidor contém

um pedaço dos dados);Dados são versionados;Cada nó é independente;10-20k operações por segundo por nó.

1111/04/23

Page 12: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Voldemort

Serialização em Java;Clone do Amazon Dynamo;Open Source (Java);Download em:

–http://project-voldemort.com/

1211/04/23

Page 13: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Instalação

Download de versão para Linux em:–http://github.com/voldemort/

voldemort/downloads

1311/04/23

Page 14: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Exemplo de usoIniciando um nó./bin/voldemort-server.sh

config/single_node_cluster > /tmp/voldemort.log &

1411/04/23

Page 15: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Exemplo de usoIniciando a linha de comando./bin/voldemort-shell.sh test

tcp://localhost:6666

1511/04/23

Page 16: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Exemplo de usoOperações simplesInserindo valor

–put "nome" "Bruno"Recuperando valor:

–get "nome"Excluindo valor:

–delete "nome"

1611/04/23

Page 17: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Exemplo de usoVersionamento

1711/04/23

Page 18: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Exemplo de usoLocalização da chavelocate "bruno"

1811/04/23

Page 19: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Exemplo de uso Código Java - Conexão

1911/04/23

String bootstrapUrl = "tcp://localhost:6666"; StoreClientFactory factory = new SocketStoreClientFactory(new ClientConfig().setBootstrapUrls(bootstrapUrl)); // Cria um cliente para a store StoreClient client = factory.getStoreClient("my_store_name");

Page 20: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Exemplo de usoInserindo e obtendo valores

Versioned value = client.get("some_key");

value.setObject("some_value"); client.put("some_key", value);

2011/04/23

Page 21: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

CassandraDesenvolvido para o Facebook;Armazenamento de modelo de dados

rico;Data replicada a múltiplos nós;Novos nós podem ser acrescentados sem

influenciar nos dados existentes;Consistência eventual:

– Sem updates após um período, os updates de propagam nas réplicas.

2111/04/23

Page 22: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Cassandra

Open source (Java);Facebook = 40 TB / 120 máquinas;Usa o conceito de super colunas;

2211/04/23

{ // esta é uma super coluna nome: "homeAddress", // com uma lista infinita de colunas value: { // observe que a chave é o nome da coluna street: {name: "street", value: "1234 x street", timestamp: 123456789}, city: {name: "city", value: "san francisco", timestamp: 123456789}, zip: {name: "zip", value: "94107", timestamp: 123456789}, }}

Page 23: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Instalação

Downloa de versão para Linux em:–http://incubator.apache.org/

cassandra/#download

2311/04/23

Page 24: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Exemplo de usoIniciando um nómkdir -p /var/log/cassandratouch /var/log/cassandra/system.log./bin/cassandra -f

2411/04/23

Page 25: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Exemplo de usoIniciando a linha de comando./bin/cassandra-cli –host localhost –port

9160

2511/04/23

Page 26: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Exemplo de usoInserindo valoresset Keyspace1.Standard1['bcp']

['primeiro']='Bruno‘set Keyspace1.Standard1['bcp']

['sobrenome']='Bruno'

2611/04/23

Page 27: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Exemplo de usoObtendo valoresget Keyspace1.Standard1['bcp']

2711/04/23

Page 28: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

CouchDB

Servidor de banco baseado em documentos;

Acessível via API Rest;Schema-free;Distribuído;Open Source (Erlang);Views usando Map/Reduce.

2811/04/23

Page 29: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

CouchDB

Interface JavaScript;Ver testador online:

–http://labs.mudynamics.com/wp-content/uploads/2009/04/icouch.html

2911/04/23

Page 30: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Documento CouchDBCampos nomeados

3011/04/23

Page 31: Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD Bruno C. de Paula.

Referências

No to SQL? Anti-database...– http://www.computerworld.com/s/article/

9135086/No_to_SQL_Anti_database_movement_gains_steam_

Livro sobre CouchDB (no prelo):– http://books.couchdb.org/relax/

Explorando o CouchDB:– http://www.ibm.com/developerworks/br/

library/os-couchdb/index.html

3111/04/23