Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

25
Banco de Dados NoSQL Distribuídos João Helis Bernardo Smith Ascari

description

Slides da apresentação do seminário sobre Banco de Dados NoSQL, na disciplina de Sistemas Distribuídos - UFPB.

Transcript of Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Page 1: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Banco de Dados NoSQL Distribuídos

João Helis BernardoSmith Ascari

Page 2: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

● Uma visão geral sobre BDR● O que é NoSQL● Por que NoSQL?● Realidade das aplicações atuais● Características● Modelos

Agenda

Page 3: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Visão geral sobre BDRTodos os dados guardados em tabelas

● Tabelas (Entidades, Relações)● Registros (Tuplas)● Colunas (Atributos)● Chave

○ Primária○ Estrangeira

● Restrições de integridade

Page 4: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

O que é NoSQL?● Um movimento que promove armazenamento de dados

não relacionais (Not Only SQL).

● Resolve problemas como:○ Tratamento de grande quantidade de dados○ Execução de consulta com baixa latência○ Modelos flexíveis de armazenamento de dados (e.g.

XML, JSON)

Page 5: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Por que NoSQL?● Mudança das aplicações interativas

● Três meta-tendências inter-relacionadas (Big Data, Big User, Cloud Computing)

● Aplicações precisam suportar o grande número de usuários simultâneos

Page 6: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Realidade das Aplicações Atuais

Fonte: http://www.couchbase.com/why-nosql/nosql-database

● Big Users

Page 7: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Realidade das Aplicações Atuais● Big Data

Page 8: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Realidade das Aplicações Atuais● Cloud Computing

● A maioria das aplicações utilizam a arquitetura web 3-tier

● Suportam um grande número de usuários

● BD NoSQL foram projetados pra serem distribuídos ○ Escalabilidade horizontal (scale out)

Page 9: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

O uso do NoSQL pelos desenvolvedores

● Por que os desenvolvedores estão considerando o NoSQL?

○ Modelo mais flexível dos dados

■ Complexidade do modelo relacional■ Facilidade do modelo NoSQL (e.g. BD NoSQL

orientados a documentos, utilizando o formato JSON).

Page 10: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

O uso do NoSQL pelos desenvolvedores

Modelo Relacional - Esquema Rígido x Modelo NoSQL - Sem Esquema

Fonte: http://www.couchbase.com/why-nosql/nosql-database

Page 11: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Características➔ Armazenamento

◆ objetivo - Disponibilidade◆ utiliza memória principal (alguns modelos 100%)◆ cache integrado (impacta sobre a latência)

Page 12: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Características➔ Escalabilidade

◆ modelos que trabalham na forma vertical e horizontal

◆ auto-sharding

Page 13: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Modelos de NOSQL➔ Existem vários modelos

➔ Abordaremos 4 destes◆ Chave-Valor◆ Tabular◆ Baseado em documentos◆ Baseado em grafos

Page 14: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Modelo Chave-Valor➔ utiliza uma tabela hash➔ implementação mais simples e fácil

➔ exemplos◆ Valdemort, Oracle BDB, Redis

➔ aplicações ◆ cache de conteúdo

Page 15: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Chave-Valor

Fonte: http://www.ingenioussql.com/wp-content/uploads/2013/02/KeyValueStore.gif

Page 16: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Modelo Tabular➔ o conceito de chave(key) ainda é presente, mas

apontam para um conjunto de colunas

➔ exemplos◆ Cassandra, HBase, Riak

➔ aplicações◆ sistemas de arquivos distribuídos

Page 17: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Modelo Tabular

Fonte: http://maxgrinev.files.wordpress.com/2010/07/twitterschema-tweets.png

Page 18: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Baseado em Documentos➔ similar ao modelo chave-valor➔ coleções de outras coleções (key-value)➔ considerado o próximo nível do chave-valor➔ suportam consultas eficientes➔ documentos (semi-estruturados) são armazenados em formato

JSON

➔ exemplos◆ CouchDB, MongoDB

➔ aplicações◆ apps Web

Page 19: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Exemplo MongoDB

http://try.mongodb.org/

Page 20: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Baseado em Grafos➔ relacionamento entre nós➔ facilita a conexão entre nós➔ também é escalável

➔ exemplos ◆ Neo4J, InfoGrid, Infinite Graph

➔ aplicações◆ redes sociais

Page 21: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Baseado em Grafos

Fonte: http://blog.caelum.com.br/wp-content/uploads/2011/05/grafo.png

Page 22: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Modelos NOSQL

Fonte: http://conteudo.imasters.com.br/21781/39725.png

Page 23: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Quando usar NOSQL

Adaptado de: http://imasters.com.br/artigo/21781/banco-de-dados/escolhendo--a-ferramenta-certa-para-o-banco-de-dados-nosql/

NOSQL RDBs

O armazenamento deve ser capaz de lidar com carregamentos pesados Armazenamento é esperado para apresentar carregamento pesado também, mas consiste principalmente na leitura de operações

Você executa muitas operações de escrita no armazenamento Você precisa de uma linguagem SQL query poderosa

Você quer um armazenamento que seja escalável horizontalmente

Simplicidade é bom, como em uma linguagem query bem simples (sem joins)

Page 24: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Dúvidas?

Page 25: Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Referências❏ http://www.couchbase.com/why-nosql/nosql-database❏ http://www.devmedia.com.br/conceito-nosql-cassandra-em-java/22863❏ http://www.devmedia.com.br/introducao-a-tecnologia-nosql/27682❏ http://imasters.com.br/artigo/21781/banco-de-dados/escolhendo--a-

ferramenta-certa-para-o-banco-de-dados-nosql/