Objetivos do minicurso - ADDLabs - Laboratório de … · – Banco de dados orientado a colunas...
Transcript of Objetivos do minicurso - ADDLabs - Laboratório de … · – Banco de dados orientado a colunas...
07/10/11
1
NoSQL no Desenvolvimento de Aplicações Web Colaborativas
Bernadette Farias Lóscio – [email protected] Hélio Rodrigues Oliveira – [email protected] Jonas César de Sousa Pontes – [email protected]
Objetivos do minicurso
n Apresentar os conceitos dos bancos de dados NoSQL
n Analisar características e diferenças entre os principais modelos de dados NoSQL
n Discutir a importância e as vantagens do NoSQL na construção de aplicações Web
07/10/11
2
Agenda
n Histórico n Introdução ao NoSQL n Modelos de dados n Quem está usando? n Exemplo n Conclusões
Histórico e Conceitos básicos!
!
07/10/11
3
Histórico
n No início eram os sistemas de arquivos...
n Depois vieram os os primeiros SGBDs – Controle de concorrência – Recuperação após falha – Gerenciamento de transações – Controle de restrições de integridade – Segurança – Gerenciamento de transações
07/10/11
4
Histórico
n Primeiro vieram os modelos hierárquico e rede...
n Depois vieram os modelos relacionais – Conceito básico: relação – Restrições de integridade – Base formal (cálculo relacional e álgebra relacional) – Normalização – Linguagem SQL
Aplicações convencionais de bancos de dados!
Histórico
n Depois surgiram os bancos de dados pós-relacionais – Manipulação de novos formatos
§ Som, vídeo, tipos complexos – BDOO, BDOR, BD Temporal, BD Geográfico, BD
Dedutivo...
Aplicações não convencionais de bancos de dados!
07/10/11
5
Histórico
n As propostas de novos modelos/bancos de dados surgem de acordo com o comportamento das aplicações
n E então? O que aconteceu depois?
n A Web! A Computação em Nuvem!
Novos cenários implicam em novas aplicações e novos requisitos para
os bancos de dados!!
Histórico
n Grande número de aplicações onde: – Há a necessidade de manipular grandes volumes de
dados – Deve-se permitir dados não estruturados ou
semiestruturados – O acesso aos dados deve ser feito de forma simples e
rápida – Escalabilidade e disponibilidade são fundamentais!
Bancos de dados relacionais não são adequados para estas
aplicações!!
07/10/11
6
Histórico
n NoSQL (Not only SQL) – Soluções propostas para resolver alguns problemas
gerados pelo grande volume de dados da Web – Tenta suprir a ineficiência dos bancos de dados
convencionais ao lidar com estes problemas
NoSQL
“NoSQL é um um termo genérico para uma classe definida de banco de dados não-relacionais que
rompe uma longa história (ou império) de banco de dados relacionais com propriedades ACID.”
Wikipedia
07/10/11
7
NoSQL
n Importante!!! n NoSQL não veio para substituir o Relacional
– Possuem papéis diferentes – Apropriado para aplicações em grande escala de dados
semiestruturados
a tecnologia RDBMS é um ajuste forçado para os modernos sistemas de software.!!
NoSQL n NoSQL e RDBMS são utilizados para fins
diferentes – Estima-se que o Facebook armazena cerca de 135
bilhões de mensagens por mês. Se estas mensagens fossem limitadas a 160 caracteres, ainda seriam 21,600,000,000,000 bytes de dados por mês
– Bancos de dados relacionais podem lidar com grandes quantidades de dados, porém nesta escala fica difícil
– Atualizações de índices tomam muito tempo, por exemplo...
Slide re(rado da apresentação Nosql: Cassandra database, Allan Bosso, Alessandro C. Fernandes, Daniel Albuquerque, ICMC, São Carlos.
07/10/11
8
NoSQL
Slide re(rado da apresentação Nosql: Cassandra database, Allan Bosso, Alessandro C. Fernandes, Daniel Albuquerque, ICMC, São Carlos.
NoSQL
n Características: – Tabelas não são necessárias – Operações de junção não são necessárias – Geralmente é escalado horizontalmente (investimento
em mais computadores ao invés de um servidor melhor) – Flexibiliza as propriedades ACID de uma transação!
Slide re(rado da apresentação Nosql: Cassandra database, Allan Bosso, Alessandro C. Fernandes, Daniel Albuquerque, ICMC, São Carlos.
07/10/11
9
NoSQL x Relacional n BD relacional: ACID
– Atomicidade: a transação será executada totalmente ou não será executada.
– Consistência – Isolamento: duas transações não afetam a mesma tupla
concorrentemente – Durabilidade: assim que uma transação é efetuada
(commit), os seus resultados serão permanentes n NoSQL: BASE
– Basicamente disponível – Estado leve – Consistente em momento indeterminado
Slide re(rado da apresentação Nosql: Cassandra database, Allan Bosso, Alessandro C. Fernandes, Daniel Albuquerque, ICMC, São Carlos.
NoSQL: Características
n As principais características dos bancos de dados NoSQL são: – Escalabilidade horizontal – Esquema flexível – Suporte à replicação – API simples para acesso a dados – Eventual consistência
07/10/11
10
NoSQL: Características
n Escalabilidade horizontal – Escalabilidade vertical x horizontal – Aumento do poder de processamento através da
divisão de tarefas e threads em máquinas distribuídas
NoSQL: Características
n Esquema flexível – Diferente do modelo relacional, NoSQL não exige
esquema rígido – Flexibilidade do esquema facilita a escalabilidade dos
dados – Porém, não garante a integridados dos dados – De uma forma geral, a estrutura básica está associada
a um par chave-valor
07/10/11
11
NoSQL: Características
n Suporte à replicação – Outra forma de escalabilidade dos dados – Duas abordagens:
§ Master-Slave – cada escrita no banco resulta em N escritas no total, onde N
é o número de nós escravos. A escrita é feita no nó mestre, sendo a escrita refeita em cada nó escravo pelo nó mestre
§ Multi-Master – existem vários nós mestres, de forma que é possível
diminuir o gargalo gerado pela escrita que ocorre na abordagem mestre-escravo
– Multi-Master é mais utilizada, tem melhor desempenho na capacidade de escrita durante a replicação
NoSQL: Características
n API simples para acesso aos dados – Foco na aplicação e não nos dados – Necessidade de acesso simples e rápido
07/10/11
12
NoSQL: Características
n Eventual consistência – Diferente dos bancos relacionais, NoSQL não garante a
consistência dos dados – Teorema CAP (Consistency, Availability and Partition
tolerance) – Em geral, são priorizadas a disponibilidade e a
tolerância à partição
Propriedades ACID não são obedecidas!!
NoSQL: técnicas
n Algumas técnicas importantes para a implementação do NoSQL: – Map/reduce: permite gerenciar dados em ambientes
distribuídos § Na fase de map, os problemas são quebrados em
subproblemas que são distribuídos em outros nós na rede § Na fase reduce, os subproblemas são resolvidos em cada
nó filho e o resultado é repassado ao pai
– Consistent hashing: mecanismos para armazenamento e recuperação em banco de dados distribuídos, onde a quantidade de sites está em constante modificação
07/10/11
13
Modelos de dados e casos de sucesso!
!
Classificação quanto ao Modelo de Dados
n Principais modelos de dados NoSQL: – Chave-valor – Orientado a colunas – Orientado a documentos – Orientado a grafos
07/10/11
14
Chave-Valor
n Modelo mais simples n Conjunto de pares chave-valor (hash)
– Chave: string única – Valor: string ou binário
n Métodos básicos: get( ) e set( ) n Vantagem: rápida implementação n Desvantagem: dificuldade para recuperar objetos
mais complexos
O banco de dados é uma grande tabela de pares chave-valor!!
Chave-Valor
n Exemplo:
n Bancos de dados que adotam o modelo chave-valor – Dynamo – Redis – Riak – GenieDB
Nome Hélio Rodrigues Idade 45 Sexo Masculino Fone 99 99999999
07/10/11
15
Orientado a Colunas
n Muda o paradigma de orientado a registro (Relacional) para orientado coluna (NoSQL)
n Os valores são indexados por uma tripla – <linha, coluna, timestamp>
n Usa o conceito de Column Family – grupo de colunas do mesmo tipo de dado
Orientado a Colunas n Exemplo:
n Bancos de dados que adotam o modelo orientado
a colunas – Cassandra: http://incubator.apache.org/cassandra/ – Bigtable: http://labs.google.com/papers/bigtable.html – Hbase: http://hbase.apache.org/
“ID001”
“local:cidade” “local:endereco” “nome:sobrenome” “nome:primeiroNome”
“Hélio” “Rodrigues” “Rua A” “Fortaleza”
“Rua B” “Recife”
07/10/11
16
Orientado a Documentos
n Cada documento possui um identificador único n Conjunto de campos (semelhante a chave-valor) n Campos podem ser strings, listas ou documentos
aninhados n Estrutura de documentos flexível
Orientado a Documentos
n Exemplo:
n Exemplos de bancos de dados que adotam o modelo orientado a documentos: – CouchDB: http://couchdb.apache.org/ – MongoDB: http://www.mongodb.org/
ID: P001 Assunto: “Eu gosto de laranjas” Autor: “Hélio” Data: “27/01/2011” Tags: [“laranjas”, “suco”, “plantas”] Mensagem: “Hoje estou com vontade de tomar suco de laranja!”
07/10/11
17
Orientado a Grafos
n Conceitos básicos: – Nós (vértices) – Relacionamentos (arestas) – Propriedades (atributos) dos nós e relacionamentos – Multigrafo rotulado e direcionado
n Consultas que exigem muitos joins no modelo relacional são rapidamente realizadas em um grafo
Orientado a Grafos
n Exemplo
n Exemplos de bancos – Neo4j: http://www.neo4j.org/ – AllegroGraph: http://www.franz.com/agraph/ – Virtuoso: http://www.openlinksw.com/
Fortaleza
Recife
João Pessoa
São Paulo Paraty
Rio de Janeiro
Belo Horizonte
Berna Hélio Jonas
Viajou Morou
07/10/11
18
Modelos de Dados NoSQL
n Qual melhor modelo de dados para NoSQL? – Depende!!
n Diferentes aplicações exigem soluções específicas
n A escolha certa contribui para a diminuição do custo de criação do banco e para o aumento da eficiência no processamento dos dados
Modelos de Dados NoSQL
n Manipulação de dados estatísticos (pouca leitura e muita escrita) – Chave-valor (Redis) ou documento (MongoDB)
n Alta disponibilidade – Orientado a colunas (Cassandra)
n Consultas que exigem alto desempenho e muitas junções – Grafos (Neo4j)
07/10/11
19
Casos de Sucesso
n NoSQL está entre nós… n O mercado já adotou esta ideia
– Google, Facebook, Amazon, LinkedIn, Digg, Twitter… n O que eles tem em comum?
– Problemas!!! – Grande volume de dados, escalabilidade,
disponibilidade, tempo de resposta
n Rede social e servidor para microblogging n Desafio: gerenciar o grande volume de acesso em
tempo-real – Preocupação com a disponibilidade dos dados – 1,2 bilhões de tweets por mês (Fev/2010)
n Substituição MySQL pelo Cassandra – Após avaliação de várias soluções, o Cassandra foi
considerado a melhor opção
07/10/11
20
n O Twitter utiliza o Cassandra – Armazenamento de resultados de data mining – Resultado de trend topics – @toptweets – Análises em tempo real
n Vantagens – Modelagem dos dados relacionados aos tweets,
timeline entre outros – Melhor desempenho nas buscas por palavras-chaves – Aumento da disponibilidade dos seus serviços
n Empresa Pingdom avaliou a disponibilidade do Twitter em 2010 em 99,72% (downtime 23 horas e 45 minutos)
n Em 2008, o site esteve indisponível por 84 horas
07/10/11
21
n Facebook conta hoje com mais de 3,5 bilhões de conteúdos (links, posts etc) compartilhados por semana
n Devido a problemas de escalabilidade e disponibilidade, a empresa desenvolveu o Cassandra – Inicialmente criado para otimização do sistema de
buscas do Facebook
n Cassandra: – Banco de dados orientado a colunas – Desenvolvido pelo Facebook, hoje mantido pela
Fundação Apache – Suporte à replicação – Detecção de falhas – Baseado no banco de dados Dynamo da Amazon
n Tornou-se largamente utilizado por outras empresas – Cisco, Digg, Twitter
07/10/11
22
n Solução própria – BigTable – Orientado a colunas
n Utilizada em mais de 60 produtos da Google – Dentre elas: Gmail, Google Docs, Google Earth, Google
Analytics, Orkut etc n É utilizada em conjunto com o sistema de
arquivos da Google (GFS) e o map/reduce para distribuição dos dados
n Uma das maiores empresas de comércio eletrônico do mundo
n Um dos maiores desafios enfrentados – Confiabilidade dos serviços disponibilizados
n Em 2007, a Amazon desenvolveu o banco de dados Dynamo
07/10/11
23
Amazon
n Dynamo é orientado a chave-valor n Oferece:
– Replicação – Particionamento – Versionamento
n Dynamo foi criado especificamente para prover alta disponibilidade
n Após sua adesão, diversos serviços tem se mantido 99,9995% disponíveis
n Rede de negócios para relacionamento entre profissionais
n Em 2011, já possuia mais de 100 milhões de usuários
n Desempenho afetado pelo rápido crescimento da quantidade de dados
n Após uso de diversas soluções utilizadas sem sucesso, a empresa desenvolveu o banco de dados Voldemort
07/10/11
24
n Voldemort mostrou bons resultados no desempenho da aplicação
n Suporta: – Escalabilidade horizontal – Replicação – Particionamento
Exemplo!
07/10/11
25
Exemplo
n Criação de uma aplicação Web utilizando a linguagem de programação PHP e o banco de dados MongoDB
n MongoDB – é um banco de dados orientado a documentos – pode ser usado e, diferentes sistemas operacionais
(Windows, Linux, OS X e Solaris). – possui drivers para diversas linguagens de
programação, entre elas: C, C#, C++, Java, Perl, PHP, Python e Ruby
Exemplo
n MongoDB – Um banco de dados armazena um conjunto de
coleções; – Uma coleção armazena um conjunto de documentos; – Um documento é um conjunto de campos; – Um campo é um par chave-valor; – Uma chave é um nome (string); – Um valor é um(a):
§ caracter, inteiro, ponto flutuante, timestamp ou binário; § um documento; § um "array" de valores;
07/10/11
26
Exemplo
n Desenvolvimento de uma aplicação onde usuários podem postar mensagens de texto simples, permitindo que: – Um usuário crie uma conta de usuário, informando seu
email, nome e definindo uma senha; – Um usuário registrado possa gravar mensagens de
texto em seu mural; – Um usuário registrado possa adicionar amigos ao seu
perfil e também possa ser adicionado por outros usuários;
– Todas as mensagens de um usuário sejam mostradas nos murais de seus amigos e vice-versa;
Exemplo n Passo a passo:
– Fazer o download da versão adequada em: http://www.mongodb.org/downloads;
– Seguir os procedimentos de configuração, de acordo com o sistema operacional, descritos em: http://www.mongodb.org/display/DOCS/Quickstart;
– Fazer o download do instalador do WampServer em http://www.wampserver.com/;
– Instalar o WampServer (instalação padrão de aplicativos Windows);
– Habilitar o driver do MongoDB no arquivo de inicialização do PHP (php.ini) o mesmo encontra-se em: http://www.php.net/manual/en/mongo.installation.php#mongo.installation.windows
07/10/11
27
Exemplo
n Modelando a aplicação
Exemplo
n Representação de arrays do PHP
Não é necessário ter um esquema!!
07/10/11
28
Exemplo
n Os conceitos de tabelas e de relacionamentos através de chaves estrangeiras não são utilizados
n uma coleção de mensagens pode ser inserida no objeto usuário sem a preocupação com a definição de tabelas e de seus relacionamentos
n Devido à falta de estrutura definida, não existe o conceitos de cardinalidade e participação
n A qualquer instante é possível modificar um documento sem precisar respeitar uma estrutura previamente definida – qualquer carga de validação de tipo de dado ou estrutura fica
a cargo da aplicação
Exemplo
n Implementando a aplicação colaborativa n Criação das classes de domínio no PHP, que
representam as informações de usuário e mensagens – Usuario.php e Mensagem.php – Classe BancoMongo.php para realização da conexão
ao MongoDB
07/10/11
29
Exemplo
n Outras classes: – CadastroUsuario.php: responsável pela realização de cadastros dos
usuários no sistema; – AdicionarAmigo.php: lista todos usuários do sistema, para o usuário
logado, e permite adicioná-los como amigos; – PostarMensagem.php: permite que um usuário logado publique
mensagens de texto que serão vistas por todos os seus amigos; – Login.php: permite que um usuário realize autenticação no sistema.
Após a validação, o usuário é redirecionado para o seu mural de mensagens;
– Mural.php: responsável pelo gerenciamento do mural dos usuários; – Menu.php: exibirá os links de navegação para que o usuário possa
navegar pelas telas do sistema.
Exemplo
n Criação do banco de dados
n Para criação do banco de dados, utilizaremos o seguinte comando: – $this->db = $con->curso;
07/10/11
30
Exemplo
n Adicionando um usuário:
Exemplo
n Consultando os dados de um usuário: – Consulta que retorna um array com os dados do usuário
de id = 1 através do método find.
07/10/11
32
Conclusão
n Um ponto comum a todas as empresas que têm adotado a tecnologia NoSQL são os problemas enfrentados quando uma grande quantidade de dados precisa ser compartilhada em tempo real
n As aplicações devem ser escaláveis e seus dados devem ter alta disponibilidade
Conclusão
n Várias empresas já aderiram a soluções NoSQL, cada uma de acordo com as necessidades dos serviços prestados
n Importante! A solução NoSQL não veio com o intuito de substituir o modelo relacional – NoSQL permite que as aplicações tenham vantagens como:
alta disponibilidade, escalabilidade, esquema flexível, alta performance e gerenciamento de dados semi-estruturados.
– Nem sempre será possível garantir a consistência dos dados, controle de concorrência, dentre outras características fundamentais dos bancos de dados convencionais
07/10/11
33
Obrigada! !
Referências
n [Cattell 2010] Cattell, R., Scalable SQL and NoSQL data stores, ACM SIGMOD Record, v.39 n.4, 2010.
n [Chang 2008]Chang, F., Dean, J., Ghemawat, S., Hsieh, W. C., Wallach, D. A., Burrows M., Chandra,T., Fikes, A., Gruber, R. E., Bigtable: A Distributed Storage System for Structured Data, ACM Transactions on Computer Systems (TOCS), v.26 n.2, p.1-26, June 2008.
n [DeCandia 2007] DeCandia, G., Hastorun, D., Jampani, M., Kakulapati, G., Lakshman, A., Pilchin, A., Sivasubramanian, S.,Vosshall, P., Vogels, W., Dynamo: Amazon’shighly available key-value store. In Proceedings of the21st ACM Symposium on Operating Systems Principles, October 2007.
n [Hewitt 2011]Hewitt, E., Cassandra: the definitive guide, Journal of the Electrochemical Society, v. 129, p. 330, 2011.
n [Lakshman 2010] Lakshman, A., Malik, P., Cassandra: a decentralized structured storage system, ACM SIGOPS Operating Systems Review, v.44 n.2, April 2010.
n [Leavit 2010] Leavitt,N., Will NoSQL Databases Live Up to Their Promise?, IEEE Computer (COMPUTER), v.43 n.2, pp:12-14, 2010
07/10/11
34
Referências
n [Pritchett 2008]Pritchett, D., BASE: AN ACID ALTERNATIVE, ACM Queue, v.6 n.3, May/June 2008.
n [Stonebraker 2010]Stonebraker, M., SQL databases v. NoSQL databases, Communications of the ACM, v.53 n.4, April 2010.
n [Stonebraker 2007] Stonebraker, M., Madden, S., Abadi, D. J., Harizopoulos, S., Hachem, N., and Helland, P. 2007. The end of an architectural era: (it's time for a complete rewrite). In Proceedings of the 33rd international Conference on Very Large Data Bases, VLDB Endowment, pp: 1150-1160, 2007.
n [Xiang 2010] Xiang P., Hou, R., Zhou, Z.,Cache and consistency in NOSQL, Computer Science and Information Technology ICCSIT 2010 3rd IEEE International Conference on, v. 6, pp: 117-120, 2010.
n Cassandra Data Model(http://maxgrinev.com/2010/07/09/a-quick-introduction-to-the-cassandra-data-model/acesso em 30/05/2011).
n NoSQLWhite Paper, CouchBase(http://www.couchbase.com/sites/default/files/uploads/all/whitepapers/NoSQL-Whitepaper.pdf acesso em 30/05/2011).
n NoSQL – Your Ultimate Guide to Non – Relational Universe, http://nosqldatabases.org/
Referências
n Introdução ao nosql – http://escalabilidade.com/2010/03/08/introducao-ao-nosql-parte-i/
n ACID - propriedades
– http://blog.lucasrenan.com/propriedades-acid/
n Cassandra – http://www.dicasl.com.br/arquivo/apache_cassandra_nosql_
uma_tecnologia_emergente.php – http://nosql.mypopescu.com/search/cassandra/page/2 – http://demoiselle.sourceforge.net/component/demoiselle-cassandra/1.0.0/
example.html
n Indexação – http://nivaldomjunior.blogspot.com/2010/07/entendendo-o-banco-de-dados-
nosql.html – http://arin.me/blog/wtf-is-a-supercolumn-cassandra-data-model
07/10/11
35
Referências
n Comparação HBase x Cassandra - ADKU – http://blog.adku.com/2011/02/hbase-vs-cassandra.html
n Chave Valor - Conceito
– http://en.wikipedia.org/wiki/Associative_array
n PHP e Cassandra – http://nivaldomjunior.blogspot.com/2010/07/cassandra-php.html
n CQL – http://www.datastax.com/dev/blog/what%E2%80%99s-new-in-
cassandra-0-8-part-1-cql-the-cassandra-query-language – http://www.slideshare.net/shotaz/cql-cassandra-query-language
n Hadoop
– http://hadoop.apache.org/
Referências
n Arquitetura Cassandra – http://www.datastax.com/cassandra-technology-
differentiators – http://wiki.apache.org/cassandra/GettingStarted – http://www.cellopoint.com/media_resources/blog/
2010/05/cassandra-data-model n Facebook não usa mais Cassandra
– http://facility9.com/2010/11/facebook-messaging-hbase-comes-of-age/