Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouBrenda Madeiros Alterado mais de 10 anos atrás
1
Arquitetura Baseada em Serviços Web Services e BD e NoSQL
Bruno C. de Paula Arquitetura Baseada em Serviços Web Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD
2
Resumo e motivação da aula
Vamos 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.
3
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. 23/03/2017
4
NoSQL - características
SGBDs 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... 23/03/2017
5
NoSQL - características
Podem ser instalados localmente ou, por serem distribuídos, podem ser jogados para a nuvem; 23/03/2017
6
Cloud Computing Computação em Nuvem
Detalhes 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. 23/03/2017
7
Teorema CAP Ao 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; 23/03/2017
8
Key-value: tabela hash; Document-based: metáfora de documentos;
NoSQL Tipos de SGBD Key-value: tabela hash; Document-based: metáfora de documentos; Não existe um padrão de linguagem! 23/03/2017
9
Exemplos de implementações NoSQL
Voldemort: Linkedin, Digg; Cassandra: Facebook; CouchDB; MongoDB; Amazon SimpleDB: usado pelo S3; 23/03/2017
10
Exemplos de implementações NoSQL
Google BigTable / Google Fusion Tables; HyperTable: implementação do BigTable; HBase; Yahoo Sherpa; LucidDB; ... Dezenas! 23/03/2017
11
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ó. 23/03/2017
12
Voldemort Serialização em Java; Clone do Amazon Dynamo;
Open Source (Java); Download em: 23/03/2017
13
Instalação Download de versão para Linux em:
23/03/2017
14
Exemplo de uso Iniciando um nó
./bin/voldemort-server.sh config/single_node_cluster > /tmp/voldemort.log & 23/03/2017
15
Exemplo de uso Iniciando a linha de comando
./bin/voldemort-shell.sh test tcp://localhost:6666 23/03/2017
16
Exemplo de uso Operações simples
Inserindo valor put "nome" "Bruno" Recuperando valor: get "nome" Excluindo valor: delete "nome" 23/03/2017
17
Exemplo de uso Versionamento
23/03/2017
18
Exemplo de uso Localização da chave
locate "bruno" 23/03/2017
19
Exemplo de uso Código Java - Conexão
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"); 23/03/2017
20
Exemplo de uso Inserindo e obtendo valores
Versioned value = client.get("some_key"); value.setObject("some_value"); client.put("some_key", value); 23/03/2017
21
Cassandra Desenvolvido 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. 23/03/2017
22
Cassandra Open source (Java); Facebook = 40 TB / 120 máquinas;
Usa o conceito de super colunas; { // 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: }, city: {name: "city", value: "san francisco", timestamp: }, zip: {name: "zip", value: "94107", timestamp: }, } 23/03/2017
23
Instalação Downloa de versão para Linux em:
23/03/2017
24
Exemplo de uso Iniciando um nó
23/03/2017 Exemplo de uso Iniciando um nó mkdir -p /var/log/cassandra touch /var/log/cassandra/system.log ./bin/cassandra -f Dica: precisei do SUDO para funcionar no Ubuntu... 23/03/2017
25
Exemplo de uso Iniciando a linha de comando
23/03/2017 Exemplo de uso Iniciando a linha de comando ./bin/cassandra-cli –host localhost –port 9160 Ver exemplos em: 23/03/2017
26
Exemplo de uso Inserindo valores
set Keyspace1.Standard1['bcp']['primeiro']='Bruno‘ set Keyspace1.Standard1['bcp']['sobrenome']='Bruno' 23/03/2017
27
Exemplo de uso Obtendo valores
get Keyspace1.Standard1['bcp'] 23/03/2017
28
CouchDB Servidor de banco baseado em documentos;
Acessível via API Rest; Schema-free; Distribuído; Open Source (Erlang); Views usando Map/Reduce. 23/03/2017
29
CouchDB Interface JavaScript; Ver testador online:
23/03/2017
30
Documento CouchDB Campos nomeados
23/03/2017
31
Referências No to SQL? Anti-database...
Livro sobre CouchDB (no prelo): Explorando o CouchDB: 23/03/2017
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.