Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de...

35
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 Apresentar os conceitos dos bancos de dados NoSQL Analisar características e diferenças entre os principais modelos de dados NoSQL Discutir a importância e as vantagens do NoSQL na construção de aplicações Web

Transcript of Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de...

Page 1: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 2: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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!

!

Page 3: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 4: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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!

Page 5: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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!!

Page 6: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 7: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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.

Page 8: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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.

Page 9: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 10: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 11: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 12: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 13: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 14: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 15: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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”

Page 16: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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!”

Page 17: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 18: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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)

Page 19: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 20: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

07/10/11

20

Twitter

n  O Twitter utiliza o Cassandra –  Armazenamento de resultados de data mining –  Resultado de trend topics –  @toptweets –  Análises em tempo real

Twitter

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

Page 21: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

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

Page 22: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 23: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 24: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

07/10/11

24

LinkedIn

n  Voldemort mostrou bons resultados no desempenho da aplicação

n  Suporta: –  Escalabilidade horizontal –  Replicação –  Particionamento

Exemplo!

Page 25: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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;

Page 26: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 27: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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!!

Page 28: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 29: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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;

Page 30: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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.

Page 31: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

07/10/11

31

Exemplo

n  Alterando usuário:

Exemplo

n  Removendo usuário:

Page 32: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 33: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 34: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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

Page 35: Objetivos do minicurso - ADDLabs · Objetivos do minicurso ! Apresentar os conceitos dos bancos de dados NoSQL ! ... (Windows, Linux, OS X e Solaris). – possui drivers para diversas

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/