![Page 1: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/3.jpg)
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.
321/04/23
![Page 4: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/4.jpg)
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...
421/04/23
![Page 5: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/5.jpg)
NoSQL - características
Podem ser instalados localmente ou, por serem distribuídos, podem ser jogados para a nuvem;
521/04/23
![Page 6: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/6.jpg)
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.
621/04/23
![Page 7: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/7.jpg)
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;
721/04/23
![Page 8: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/8.jpg)
NoSQLTipos de SGBD
Key-value: tabela hash;Document-based: metáfora de documentos;
Não existe um padrão de linguagem!
821/04/23
![Page 9: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/9.jpg)
Exemplos de implementações NoSQLVoldemort: Linkedin, Digg;Cassandra: Facebook;CouchDB;MongoDB; Amazon SimpleDB: usado pelo S3;
921/04/23
![Page 10: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/10.jpg)
Exemplos de implementações NoSQLGoogle BigTable / Google Fusion Tables;HyperTable: implementação do
BigTable;HBase;Yahoo Sherpa;LucidDB;...Dezenas!
1021/04/23
![Page 11: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/11.jpg)
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ó.
1121/04/23
![Page 12: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/12.jpg)
Voldemort
Serialização em Java;Clone do Amazon Dynamo;Open Source (Java);Download em:
–http://project-voldemort.com/
1221/04/23
![Page 13: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/13.jpg)
Instalação
Download de versão para Linux em:–http://github.com/voldemort/
voldemort/downloads
1321/04/23
![Page 14: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/14.jpg)
Exemplo de usoIniciando um nó./bin/voldemort-server.sh
config/single_node_cluster > /tmp/voldemort.log &
1421/04/23
![Page 15: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/15.jpg)
Exemplo de usoIniciando a linha de comando./bin/voldemort-shell.sh test
tcp://localhost:6666
1521/04/23
![Page 16: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/16.jpg)
Exemplo de usoOperações simplesInserindo valor
–put "nome" "Bruno"Recuperando valor:
–get "nome"Excluindo valor:
–delete "nome"
1621/04/23
![Page 17: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/17.jpg)
Exemplo de usoVersionamento
1721/04/23
![Page 18: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/18.jpg)
Exemplo de usoLocalização da chavelocate "bruno"
1821/04/23
![Page 19: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/19.jpg)
Exemplo de uso Código Java - Conexão
1921/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](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/20.jpg)
Exemplo de usoInserindo e obtendo valores
Versioned value = client.get("some_key");
value.setObject("some_value"); client.put("some_key", value);
2021/04/23
![Page 21: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/21.jpg)
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.
2121/04/23
![Page 22: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/22.jpg)
Cassandra
Open source (Java);Facebook = 40 TB / 120 máquinas;Usa o conceito de super colunas;
2221/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](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/23.jpg)
Instalação
Downloa de versão para Linux em:–http://incubator.apache.org/
cassandra/#download
2321/04/23
![Page 24: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/24.jpg)
Exemplo de usoIniciando um nómkdir -p /var/log/cassandratouch /var/log/cassandra/system.log./bin/cassandra -f
2421/04/23
![Page 25: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/25.jpg)
Exemplo de usoIniciando a linha de comando./bin/cassandra-cli –host localhost –port
9160
2521/04/23
![Page 26: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/26.jpg)
Exemplo de usoInserindo valoresset Keyspace1.Standard1['bcp']
['primeiro']='Bruno‘set Keyspace1.Standard1['bcp']
['sobrenome']='Bruno'
2621/04/23
![Page 27: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/27.jpg)
Exemplo de usoObtendo valoresget Keyspace1.Standard1['bcp']
2721/04/23
![Page 28: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/28.jpg)
CouchDB
Servidor de banco baseado em documentos;
Acessível via API Rest;Schema-free;Distribuído;Open Source (Erlang);Views usando Map/Reduce.
2821/04/23
![Page 29: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/29.jpg)
CouchDB
Interface JavaScript;Ver testador online:
–http://labs.mudynamics.com/wp-content/uploads/2009/04/icouch.html
2921/04/23
![Page 30: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/30.jpg)
Documento CouchDBCampos nomeados
3021/04/23
![Page 31: Arquitetura Baseada em Serviços Web Services e BD e NoSQL](https://reader036.vdocuments.site/reader036/viewer/2022062314/56814577550346895db2472c/html5/thumbnails/31.jpg)
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
3121/04/23