Вы находитесь на странице: 1из 39

NoSQL

Anderson
Paulucci
Nome do
Professor

Aula 1

Introduo Not only SQL


NoSQL

Os CEOs sabem onde est o ouro e no entendem porque TI no o extrai l.


Eles, CEOs, sentem que os gestores de TI no so gelogos que sabem onde
extrair ouro.

Introduo NoSQL
Invaso dos Brbaros

> 40 anos
Era da informao

Introduo NoSQL
SQL

Mainframe
IMS Estrutura hierrquica

Motivaes NoSQL
BIG DATA - Grande volume de dados;
BIG DATA - Velocidade para analise de dados;
BIG DATA - Capturar, armazenar e analisar dados no

estruturados;
Web scale;
Flexibilidade no desenvolvimento;
Nova Arquitetura em Nuvem;
Internet of things Tudo conectado ligado;

Demandas por escalabilidade cada vez maior

SQL Vs NoSQL
SQL
Relacional, processamento
de transaes, concorrncia,
consistncia, baixssima
latncia;
Dificuldades para escalar;

NoSQL
No Relacional, distribudo,
alta performance para e alta
escalabilidade;

No serve para tudo;

Modelagem de dados Relacional

Modelo MER;
Normalizao;

RDBMS (SQL)

Regras (Constraints);
Relacionamentos (PK, FK);
Schemas;

Consultas bem estruturadas com garantia matemtica


atravs de algebra relacional;

Qual o caminho ?
O ouro est aqui!
Key-value
Famlia de Colunas
Documento DB

RDBMS
Tradicional

Social Semantic
Zone

Size

Grafos DB

90% das Aplicaes

Zona de conforto SQL

Complexidade

Next Generation Databases


No
Relacional

Distribudo

Open

Scale out

Produtividade no desenvolvimento de aplicativos


Arquitetura
Cloud

Flexibilidade no Modelo
Grande quantidade de dados

Escalabilidade

Incompatibilidade de impedncia
Diferena entre a estrutura de dados na memria (aplicativo) e o modelo relacional.
Aplicaes

XML
JSON

Caractersticas:

No utilizam modelo relacional;


Tem uma boa execuo em cluster;
Seu cdigo aberto Open Source;
So criados para atender a arquitetura do
sculo XXI;
No tm esquema;

Modelo
Relacional

RDBMS

NoSQL

MongoDB

Persistncia
Poliglota

Tipos de databases NoSQL


Column Store /
Column Families

Document Store

Key Value / Tuple


Store

Graph Databases

HBase

MongoDB

DynamoDB

Neo4J

Cassandra

Couchbase
Server

Azure Table
Storage

Infinite Graph

Hypertable

CouchDB

Riak

HyperGraphDB

Amazon
SimpleDB

RethinkDB

Redis

GraphBase

Hypertable

Terrastore

Voldemort

Trinity

...

...

...

...

http://nosql-database.org/

SQL + NoSQL = NewSQL


NewSQL
O termo foi usado pela primeira vez por 451 analista Grupo Matthew Aslett em um
trabalho de pesquisa 2011 discutindo o surgimento de novos sistemas de banco de
dados como adversrios a fornecedores estabelecidos.

Sistemas de processamento de pedidos e financeiros, tambm precisam ser capazes


de escalar; (Alternativas)
Comprar uma mquina mais potentes;
Desenvolver middleware personalizado que distribui consultas sobre ns DBMS
tradicionais;
NoSQL no seria uma boa opo considerando as implicaes ACID por
exemplo;

Cluster NoSQL

Cluster DB

Cliente
J-N

Particionamento

Cliente
A-D

Cliente
E-I

Atualizao

Mestre

Consultas

Replicao
Slave 2

Slave 1

Replicao NoSQL
Replicao Mestre Escravo

Ponto nico de
falha

+ Performance e Escala para Leitura;


+ Resilincia para Leitura;
- Consitncia

Sistema distribudo
Escalabilidade horizontal para leitura
Cluster A

N Mestre

Ns Escravos

DC Principal

DC Principal

DC Secundrio

DC Principal

Node A
Prioridade = 5

Node B
Prioridade = 5

Node C
Prioridade = 1

Node D
Prioridade = 5

Particionamento NoSQL
Replicao + Particionamento

Sistema distribudo

No geral, no h garantias nas


gravaes:
Conceito de Qurum: exemplo
N = 6 (fator de replicao)
W = 4 (fator de escrita bem
sucedida)
N W = 2 (tolerncia)

Cluster A

BRA

N Mestre

Ns Escravos

DC Principal

DC Principal

DC Secundrio

DC Principal

Node A
Prioridade = 5

Node B
Prioridade = 5

Node C
Prioridade = 1

Node D
Prioridade = 5

EUA

N Mestre

Ns Escravos

DC Principal

DC Principal

DC Secundrio

Node E
Prioridade = 5

Node F
Prioridade = 5

Node G
Prioridade = 1

Consistncia NoSQL
A consistncia um fundamento chave para entendermos os modelos de dados NoSQL. Para que
possamos obter mais dados e ganhar escalabilidade pode ser preciso relaxar a consistncia.

(ERRADO) Banco de dados


NoSQL no suportam
transaes, no conseguem ser
consistentes;

deadlock

DB Grafos suportam ACID,


assim como banco de dados
relacionais.

Consistncia NoSQL
Performance

Conflitos de
Atualizao

NoSQL suportam atualizaes Atmicas no mesmo agregado;


Janela de inconsistncia: NoSQL pode ter uma janela curta como o
Amazon SimpleDB que garante uma janela menor que 1 segundo;

Teorema de CAP
Somente possvel obter 2 delas.

Sistemas distribudos, escolher 2:


Consistency: Todos os nodes veem os

CA

mesmos dados

AP

RDBMS
(Oracle,
Mysql, etc)

Availability: Todos os pedidos recebem uma

Dynamo
Voldemort

Aster
Greenplum
Vertica

resposta
Partition Tolerance: Sistema funcional aps

Cassandra
SimpleDB
CouchDB
Riak

Availability

falhas de rede

CAP
Tolerncia a
Parties

Consistency

CP
Big Table
Hbase

MongoDB
Redis

BASE vs ACID
NoSQL

BASE

(BA) Caracteriza-se por ser basicamente disponvel, ou seja, o


sistema parece estar funcionando o tempo todo; (S) em estado
leve, o sistema no precisa ser consistente o tempo todo; (E) e
eventualmente consistente, o sistema torna-se consistente no
momento devido.

ACID

SQL

- Basically Available, Soft state, Eventual consistency

- Atomicidade, Consistncia, Isolamento e Durabilidade

(A) A transao deve ter todas as suas operaes executadas


em caso de sucesso ou nenhum resultado em caso de falha;
(C) uma transao deve levar o banco de dados de um estado
consistente a um outro estado consistente; (I) tentam evitar
que transaes paralelas interfiram umas nas outras ; (D)
transao em caso de sucesso (commit) devem persistir no
banco de dados mesmo em presena de falhas;

Consistncia fraca;
Primeiro Disponibilidade;
Melhor esforo;
Respostas proximadas;
Agressivo (otimista);
+ Simples;
+ Rpido;
Fcil Evoluo;

Consitncia forte;
Isolamento;
Foco no commit;
Transaes aninhadas;
Disponibilidade ?
Conservador (pessimista);
Difcil Evoluo (ex.
Esquemas);

Orientao ao Agregados
Chave

Valor = Objeto
Endereo

Pedidos
Pagamento

Conjunto de obejtos relacionado que podem


ser tratados como uma unidade;
Banco de dados relacionais no possuem
uma orientao a agregados no seu modelo;

Chave = ID Cliente

Cliente

Valo
r

Loja

Banco de Dados chave-valor, de


documentos e de famlia de colunas podem
ser exemplos de bancos de dados
orientados a agregados;

Itens Pedidos
Produto

Os agregados facilitam, para o banco de


dados, o gerenciamento do armazenamento
de dados em cluster;
Funcionam melhor quando as interaes
com os dados so realizadas no mesmo
agregado;

Plataforma

Exemplo MR

Carrinho
de
compras

Sesso

ChaveValor

Pedidos
Concludos

Orientado
Documentos

RDBMS

Estoque e
Vendas

RDBMS

DW/BI

Famlia
De
Colunas

Aula 2

Modelagem NoSQL
Documentos

Modelagem NoSQL

NoSQL = No Join
O que substitui o JOIN ?
Hierarquia;
Duplicar Dados (desnormalizar);
Diferentes modelos para consultas e indexao;

Modelagem NoSQL
Qual a prioridade ?
Alta consistncia ?
Alta performance de leitura ?
Alta performance de escrita ?

Modelagem NoSQL
Como a aplicao acessa e manipula os
dados ?
Read/Write proporo;
Tipos de consultas/atualizaes;
Ciclo de vida e tx. crescimento dos dados;
Analytics/Agregao;

Joins so desenhados em tempo de modelagem


Ao contrrio do MER em que JOINS so manipulados na consulta

Modelagem NoSQL
Updates [Normalizao Vs Agregados]

Modelagem NoSQL
Relacional

NoSQL

Modelagem NoSQL
Relacional

Documentos

Modelagem NoSQL
Embedado
Cliente
- Nome
- Categoria
- CPF
- Email
Pedidos [ ]
- Itens [ ] date

Endereo [ ]

Loja
- Nome
- Endereo
- Cliente [ ]

- CEP
- Num

Tag [ ]
- Value

Link

Modelagem NoSQL
Ferramentas para acesso:
Schemas Flexveis;
Estruturas embedadas;
ndices secundrios;
Multi-Key Indexes;
Agregao;
$project, $match, $limit, $skip, $sort, $group, $unwind

Parte 1 - Documentos

Relao 1 para 1

Parte 1 - Documentos

Relao 1 para N

Parte 1 - Documentos

Usando Link (c/ Publisher)

Parte 1 - Documentos

Usando Link (c/ Book)

Quando h perspectivas de um crescimento ilimitado de livros;

Parte 1 - Documentos

Relao N p/ N
Como sua aplicao acessa e manipula os dados ?

Parte 1 - Documentos

Pense sobre ndices


Talvez uma boa alternativa seria adicionar um ndice onde adicionar a referncia

Parte 1 - Documentos

Armazenamento Hierrquico.

Parte 1 - Documentos

Pense sobre a Key (Shard)


Para funes de agregao e usando mapreduce importante definir como
distribuir os dados;

Exerccio 1 - Documentos
post
comments
id *
post_id
by_user
message
data_time
likes

id *
title
description
url
likes
post_by

tags
id *
post_id
tag

1) Com base na representao do Modelo normalizado acima, crie um modelo para o JSON
otimizado para consultas simples, considerando a relao de 1 para N;
2) Crie uma coleo de documentos chamada exercicio1 com 5 documentos com base no modelo
JSON criado;
3) Aplique uma funo de processamento MapReduce para agrupar a qtd de likes por usurios do
post;

Dvidas

Вам также может понравиться