Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos

Post on 09-Jul-2015

152 views 7 download

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

Banco de Dados NoSQL Distribuídos

João Helis BernardoSmith Ascari

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

Agenda

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

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)

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

Realidade das Aplicações Atuais

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

● Big Users

Realidade das Aplicações Atuais● Big Data

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)

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).

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

Características➔ Armazenamento

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

Características➔ Escalabilidade

◆ modelos que trabalham na forma vertical e horizontal

◆ auto-sharding

Modelos de NOSQL➔ Existem vários modelos

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

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

Chave-Valor

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

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

Modelo Tabular

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

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

Exemplo MongoDB

http://try.mongodb.org/

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

Baseado em Grafos

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

Modelos NOSQL

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

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)

Dúvidas?

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/