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

Post on 16-Apr-2015

108 views 1 download

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

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

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.

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

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

NoSQL - características

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

511/04/23

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

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

NoSQLTipos de SGBD

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

Não existe um padrão de linguagem!

811/04/23

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

911/04/23

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

Voldemort

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

–http://project-voldemort.com/

1211/04/23

Instalação

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

voldemort/downloads

1311/04/23

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

config/single_node_cluster > /tmp/voldemort.log &

1411/04/23

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

tcp://localhost:6666

1511/04/23

Exemplo de usoOperações simplesInserindo valor

–put "nome" "Bruno"Recuperando valor:

–get "nome"Excluindo valor:

–delete "nome"

1611/04/23

Exemplo de usoVersionamento

1711/04/23

Exemplo de usoLocalização da chavelocate "bruno"

1811/04/23

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");

Exemplo de usoInserindo e obtendo valores

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

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

2011/04/23

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

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}, }}

Instalação

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

cassandra/#download

2311/04/23

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

2411/04/23

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

9160

2511/04/23

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

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

['sobrenome']='Bruno'

2611/04/23

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

2711/04/23

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

CouchDB

Interface JavaScript;Ver testador online:

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

2911/04/23

Documento CouchDBCampos nomeados

3011/04/23

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