SlideShare uma empresa Scribd logo
1 de 236
Baixar para ler offline
TRADE-OFF'S DE
CONFIABILIDADE E
DISPONIBILIDADE
COM BANCOS DE DADOS NOSQL
NoSQL?
Como representar dados?
Modelo Relacional
Modelo Relacional
RelaçõesSuplas
Tuplas
Modelo Relacional
TabelasLinhas
Modelo Relacional
Relacionamentos
Modelo Relacional
Alunos
ID Nome Idade
1 Leonardo 20
2 Carlos 18
3 Bruno 30
4 José 19
Modelo Relacional
Alunos
ID Nome Idade
1 Leonardo 20
2 Carlos 18
3 Bruno 30
4 José 19
Chave
primária
Modelo Relacional
Requerimentos
ID Mensagem Aluno_ID
1
Renovação de
Carterinha
1
2 Segunda chamada 2
3 Trancar matrícula 4
Modelo Relacional
Requerimentos
ID Mensagem Aluno_ID
1
Renovação de
Carterinha
1
2 Segunda chamada 2
3 Trancar matrícula 4
Chave
estrangeira
Modelo Relacional
- Modelo de dados simples
Modelo Relacional
- Modelo de dados simples
- Contrato forte (schema design)
Modelo Relacional
- Modelo de dados simples
- Contrato forte (schema design)
- Interoperabilidade
Modelo Relacional
Modelo Relacional
Modelo Relacional
Modelo Relacional
Banco de Integração
Requisitos não-funcionais
Concurrency control
x
1
1 0
Transactions (TX)
Begin Commit
1 0
Transactions (TX)
Begin Commit
Estado
Consistente
Estado
Consistente
Unit of Work
Transactions (TX)
A
C
I
D
tomic
onsistent
solation
urable
Transactions (TX)
Begin
1
Transactions (TX)
Begin
Begin Commit
1 0
1
Transactions (TX)
Begin
Begin Commit
1 0
1
?
Isolation levels
Serializable
Repeatable Reads
Read Committed
Read Uncommitted
Meu nome é
ACID
Isolation levels
==
Controle de consistência
Bancos Relacionais
- Modelo Relacional
- Integração
- Transações “ACID”
- Segurança
NoSQL?
“Quando tudo o que se tem é um martelo, todos
os problemas parecem pregos"
“Quando tudo o que se tem é um martelo, todos
os problemas parecem pregos"
Complexity
Performance
Como salvar Logs?
Como salvar um mapa?
Como salvar isso?
Como modelar hierarquias?
Impendance Mismatch
Impendance Mismatch
Impendance Mismatch
RelaçõesSuplas
Tuplas
Cara no meio
ORM
Impedance Mismatch
Dados não uniformes
Produto
Nome, Modelo, Cor
Produto
Nome, Modelo, Cor,Ano de Fabricação
Escalabilidade
Vertical
Horizontal
?
? ?
?? ?
Questões técnicas
Confiabilidade
Usuarios, Cursos, Professores,Turmas
Usuarios, Cursos Professores,Turmas
Usuarios, Cursos Professores,Turmas
Ponto único de falhas
por fragmento
Disponibilidade
por
fragmento
Integridade referencial
Transações
Consistência
Questões técnicas
Questões comerciais
Questões técnicas
Questões comerciais
NoSQL
==
Persistência Poliglota
Como?
Modelos de distribuição
Produtos,Vendas, Usuarios, Franquias
Não distribuir :)
Produtos,Vendas, Usuarios, Franquias
Produtos,Vendas, Usuarios, Franquias
Produtos,Vendas, Usuarios, Franquias
Produtos,Vendas, Usuarios, Franquias
Produtos,Vendas, Usuarios, Franquias
Produtos,Vendas, Usuarios, Franquias
100%
Produtos
Vendas
Usuários
Franquias
Produtos
Vendas
Usuários
Franquias
25%
25%
25%
25%
Produtos
25%
Franquias
25%
Usuario
25%
Vendas
25%
Produtos Franquias Usuario Vendas
25% 25% 25% 25%
Fragmentação
(Sharding)
Produtos Franquias Usuario Vendas
Produtos Franquias Usuario Vendas
Produtos Franquias Usuario Vendas
Produtos Franquias Usuario Vendas
Produtos Franquias Usuario Vendas
100% 100% 100% 100%
Como organizar
os dados nos
fragmentos?
Distribuição Geográfica
Vendas
0
50
100
150
200
Bangu Campo Grande Méier Santa Cruz
Franquias
0
50
100
150
200
Bangu Campo Grande Méier Santa Cruz
Produtos Franquias,Vendas Usuario
Campo Grande
Parelhamento de Carga
A B C D
25% 25% 25% 25%
Dias da semana
Acesso aos dados quentes
0
50
100
150
200
Quarta Quinta Sexta Sábado
Quando fragmentar?
Fragmentação
+ Performance
Fragmentação
+ Performance
- Disponibilidade por fragmento
Produtos Franquias,Vendas Usuario
Campo Grande
Produtos
Produtos
Produtos
Leituras
Produtos
Escritas
Leituras
Produtos
Escritas
Leituras
Produtos
Escritas
Leituras
Produtos
Escritas
Slave
Produtos
Master
Slave
Produtos
Master
Slave
Produtos
Master
Slave
Produtos
Master Slave
Replicação
(Master-slave)
Fragmentação + Replicação
(master-slave)
+ Performance
+Tolerância a falhas
Produtos
Master
Slave
Produtos
Master
Slave
Produtos
Master
Slave
Produtos
Master
Slave
Produtos
Master
Slave
B
Consistência eventual
Atualizações são propagadas um tempo depois
Consistência eventual
Atualizações são propagadas um tempo depois
Abrindo Janelas de Inconsistência
Inconsistência
de
Leitura
Produtos
Master
Slave
Produtos
Master
Slave
OK!
Produtos
Master
Slave
Falha de durabilidade
Produtos
Master
Slave
Produtos
Master
Slave
Produtos
Master
Slave
OK!
Produtos
Master
Slave
Produtos
Master
Slave
Produtos
Master
?
Replicação
(p2p)
{
"produto" : "Maçã",
"massa" : 20
}
{
"produto" : "Maçã",
"massa" : 20
}
{
"produto" : "Maçã",
"massa" : 20
}
{
"produto" : "Maçã",
"massa" : 20
}
Massa: 17 Massa: 21
{
"produto" : "Maçã",
"massa" : 20
}
{
"produto" : "Maçã",
"massa" : 20
}
Massa: 17 Massa: 21
?
Inconsistência de
gravação
(Conflito escrita-escrita)
{
"produto" : "Maçã",
"massa" : 20
}
{
"produto" : "Maçã",
"massa" : 20
}
Massa: 17 Massa: 21
Leonardo Amanda
{
"produto" : "Maçã",
“massa” : 21
}
{
"produto" : "Maçã",
“massa” : 17
}
Soluções
Lock
{
"produto" : "Maçã",
"massa" : 20
}
{
"produto" : "Maçã",
"massa" : 20
}
Leonardo Amanda
{
"produto" : "Maçã",
"massa" : 20
}
{
"produto" : "Maçã",
"massa" : 20
}
Leonardo Amanda
Quero
escrever!
{
"produto" : "Maçã",
"massa" : 20
}
{
"produto" : "Maçã",
"massa" : 20
}
Leonardo Amanda
Quero
escrever!
{
"produto" : "Maçã",
"massa" : 20
}
{
"produto" : "Maçã",
"massa" : 20
}
Massa: 17
Leonardo Amanda
Quero
escrever!
{
"produto" : "Maçã",
"massa" : 20
}
{
"produto" : "Maçã",
"massa" : 20
}
Massa: 17
Leonardo Amanda
Quero
escrever!
Lock pessimista
Lock pessimista
- Performance
{
"produto" : "Maçã",
"massa" : 20,
"versao" : 0,
}
{
"produto" : "Maçã",
"massa" : 20,
"versao" : 0,
}
{
"produto" : "Maçã",
"massa" : 20,
"versao" : 0,
}
Leonardo
Versão: 0
{
"produto" : "Maçã",
"massa" : 20,
"versao" : 0,
}
Amanda
Versão: 0
{
"produto" : "Maçã",
"massa" : 20,
"versao" : 1,
}
Amanda
{
"produto" : "Maçã",
"massa" : 20,
"versao" : 1,
}
Leonardo
Versão: 0
{
"produto" : "Maçã",
"massa" : 20,
"versao" : 1,
}
Leonardo
Versão: 0
Lock otimista
Serialização é necessário
Replicação
(Master-slave)
{
"produto" : "Maçã",
"massa" : 20
}
{
"produto" : "Maçã",
"massa" : 20
}
Massa: 17 Massa: 21
?
{
"produto" : "Maçã",
"massa" : 20
}
Massa: 17 Massa: 21
Aceitar escritas
{
"produto" : "Maçã",
"massa" : 20
}
{
"produto" : "Maçã",
"massa" : 20
}
Massa: 17 Massa: 21
Usuário decide
Inconsistência
=
Problema
?
Load Balancer
Load Balancer
Load Balancer
Relaxar
Relaxar
Relaxar
Bancos relacionais já faziam
Relaxar
Bancos relacionais já faziam
MyISAM
Relaxar
Bancos relacionais já faziam
MyISAM
Performance
CAP
Split Brain
CA
CP
AP
CA
CA
CA
CA
CA
Cluster tem que saber lidar com
particionamento!
CAP
Balancear Consistência e Disponibilidade
Rio de Janeiro
São Paulo
Rio de Janeiro
São Paulo
Pode?
Rio de Janeiro
São Paulo
Rio de Janeiro
São Paulo
Nega a escrita
CP
CONSISTÊNCIA
EVENTUAL
AP
O que acontece
O que acontece
Quando não há particionamento?
CAP
Consistência
sempre!
Por que sacrificar a
consistência?
Quando não há particionamento?
AP
CONSISTÊNCIA
EVENTUAL
Latência
Baixa latência
Consistência forte
VS
P?(A|C):(C|L)
PAC/CL
particionamento?
sim!
consistência
disponibilidade
não!
consistência
latência
Resumão
ENEM
NoSQLPersistencia poliglota
Modelo de dados
Clusterização
Fragmentação
Replicação
Problemas de consistência
Relaxar consistência
CAP
P?(A|C):(C|L)
Obrigado!
Leonardo Cordeiro
leonardobcordeirodev@gmail.com
:)

Mais conteúdo relacionado

Semelhante a NoSQL e CAP

Workshop VTEX - Como aumentar a taxa de conversão da sua loja virtual
Workshop VTEX - Como aumentar a taxa de conversão da sua loja virtualWorkshop VTEX - Como aumentar a taxa de conversão da sua loja virtual
Workshop VTEX - Como aumentar a taxa de conversão da sua loja virtualAlexandre Soncini
 
Data science e os físicos
Data science e os físicosData science e os físicos
Data science e os físicosCaio Gomes
 
Apresentação W21 2009
Apresentação W21 2009Apresentação W21 2009
Apresentação W21 2009mauroradomile
 
Marketplace Conference 2018 - Ampliando o marketplace para as lojas físicas -...
Marketplace Conference 2018 - Ampliando o marketplace para as lojas físicas -...Marketplace Conference 2018 - Ampliando o marketplace para as lojas físicas -...
Marketplace Conference 2018 - Ampliando o marketplace para as lojas físicas -...E-Commerce Brasil
 
Introdução a data science
Introdução a data scienceIntrodução a data science
Introdução a data scienceCaio Gomes
 
Workshop sobre Market Place
Workshop sobre Market PlaceWorkshop sobre Market Place
Workshop sobre Market PlaceLaboratorium
 
Interaje 2011 - Sobre o Empreendimento de Ruby no Brasil
Interaje 2011 - Sobre o Empreendimento de Ruby no BrasilInteraje 2011 - Sobre o Empreendimento de Ruby no Brasil
Interaje 2011 - Sobre o Empreendimento de Ruby no BrasilFabio Akita
 
Chleba Agência Digital Líder em Comércio Eletrônico - Webstore
Chleba Agência Digital Líder em Comércio Eletrônico - WebstoreChleba Agência Digital Líder em Comércio Eletrônico - Webstore
Chleba Agência Digital Líder em Comércio Eletrônico - WebstoreChleba Agência Digital
 
"Como iniciar e promover seu e commerce com a Plataforma JET ONE"
"Como iniciar e promover seu e commerce com a Plataforma JET ONE""Como iniciar e promover seu e commerce com a Plataforma JET ONE"
"Como iniciar e promover seu e commerce com a Plataforma JET ONE"JET e-Commerce
 
Não fique preso a apenas uma arquitetura
Não fique preso a apenas uma arquiteturaNão fique preso a apenas uma arquitetura
Não fique preso a apenas uma arquiteturarafaelmueller
 
Marketing Educacional e Gestão Comercial - Geduc 2010
Marketing Educacional e Gestão Comercial - Geduc 2010Marketing Educacional e Gestão Comercial - Geduc 2010
Marketing Educacional e Gestão Comercial - Geduc 2010Rafael Villas Boas Albergaria
 
Fast start tv b#1 p9_tela_modelo_negocio
Fast start tv b#1 p9_tela_modelo_negocioFast start tv b#1 p9_tela_modelo_negocio
Fast start tv b#1 p9_tela_modelo_negociofabricastartups
 
Planejamento de negócios Inovadores e tendências no e-commerce
 Planejamento de negócios Inovadores e tendências no e-commerce Planejamento de negócios Inovadores e tendências no e-commerce
Planejamento de negócios Inovadores e tendências no e-commerceLaboratorium
 
Slide do artigo proposta de e-commerce de venda de ingressos online no interi...
Slide do artigo proposta de e-commerce de venda de ingressos online no interi...Slide do artigo proposta de e-commerce de venda de ingressos online no interi...
Slide do artigo proposta de e-commerce de venda de ingressos online no interi...Teeh Amaral
 
SEBRAE - André Tavares - Crescimento do Comércio Eletrônico baseado no Mercad...
SEBRAE - André Tavares - Crescimento do Comércio Eletrônico baseado no Mercad...SEBRAE - André Tavares - Crescimento do Comércio Eletrônico baseado no Mercad...
SEBRAE - André Tavares - Crescimento do Comércio Eletrônico baseado no Mercad...Innersite
 
iMasters DevCommerce 2016 - A difícil tarefa de ser TI numa empresa de varejo...
iMasters DevCommerce 2016 - A difícil tarefa de ser TI numa empresa de varejo...iMasters DevCommerce 2016 - A difícil tarefa de ser TI numa empresa de varejo...
iMasters DevCommerce 2016 - A difícil tarefa de ser TI numa empresa de varejo...Leonardo "Hackin" Freire
 

Semelhante a NoSQL e CAP (20)

A explosão do e-commerce
A explosão do e-commerceA explosão do e-commerce
A explosão do e-commerce
 
SEO - Relatório On Page - Otimização
SEO - Relatório On Page - OtimizaçãoSEO - Relatório On Page - Otimização
SEO - Relatório On Page - Otimização
 
Workshop VTEX - Como aumentar a taxa de conversão da sua loja virtual
Workshop VTEX - Como aumentar a taxa de conversão da sua loja virtualWorkshop VTEX - Como aumentar a taxa de conversão da sua loja virtual
Workshop VTEX - Como aumentar a taxa de conversão da sua loja virtual
 
Data science e os físicos
Data science e os físicosData science e os físicos
Data science e os físicos
 
Apresentação W21 2009
Apresentação W21 2009Apresentação W21 2009
Apresentação W21 2009
 
Marketplace Conference 2018 - Ampliando o marketplace para as lojas físicas -...
Marketplace Conference 2018 - Ampliando o marketplace para as lojas físicas -...Marketplace Conference 2018 - Ampliando o marketplace para as lojas físicas -...
Marketplace Conference 2018 - Ampliando o marketplace para as lojas físicas -...
 
Introdução a data science
Introdução a data scienceIntrodução a data science
Introdução a data science
 
Startup
StartupStartup
Startup
 
Workshop sobre Market Place
Workshop sobre Market PlaceWorkshop sobre Market Place
Workshop sobre Market Place
 
Interaje 2011 - Sobre o Empreendimento de Ruby no Brasil
Interaje 2011 - Sobre o Empreendimento de Ruby no BrasilInteraje 2011 - Sobre o Empreendimento de Ruby no Brasil
Interaje 2011 - Sobre o Empreendimento de Ruby no Brasil
 
Chleba Agência Digital Líder em Comércio Eletrônico - Webstore
Chleba Agência Digital Líder em Comércio Eletrônico - WebstoreChleba Agência Digital Líder em Comércio Eletrônico - Webstore
Chleba Agência Digital Líder em Comércio Eletrônico - Webstore
 
Produtividade e Qualidade
Produtividade e QualidadeProdutividade e Qualidade
Produtividade e Qualidade
 
"Como iniciar e promover seu e commerce com a Plataforma JET ONE"
"Como iniciar e promover seu e commerce com a Plataforma JET ONE""Como iniciar e promover seu e commerce com a Plataforma JET ONE"
"Como iniciar e promover seu e commerce com a Plataforma JET ONE"
 
Não fique preso a apenas uma arquitetura
Não fique preso a apenas uma arquiteturaNão fique preso a apenas uma arquitetura
Não fique preso a apenas uma arquitetura
 
Marketing Educacional e Gestão Comercial - Geduc 2010
Marketing Educacional e Gestão Comercial - Geduc 2010Marketing Educacional e Gestão Comercial - Geduc 2010
Marketing Educacional e Gestão Comercial - Geduc 2010
 
Fast start tv b#1 p9_tela_modelo_negocio
Fast start tv b#1 p9_tela_modelo_negocioFast start tv b#1 p9_tela_modelo_negocio
Fast start tv b#1 p9_tela_modelo_negocio
 
Planejamento de negócios Inovadores e tendências no e-commerce
 Planejamento de negócios Inovadores e tendências no e-commerce Planejamento de negócios Inovadores e tendências no e-commerce
Planejamento de negócios Inovadores e tendências no e-commerce
 
Slide do artigo proposta de e-commerce de venda de ingressos online no interi...
Slide do artigo proposta de e-commerce de venda de ingressos online no interi...Slide do artigo proposta de e-commerce de venda de ingressos online no interi...
Slide do artigo proposta de e-commerce de venda de ingressos online no interi...
 
SEBRAE - André Tavares - Crescimento do Comércio Eletrônico baseado no Mercad...
SEBRAE - André Tavares - Crescimento do Comércio Eletrônico baseado no Mercad...SEBRAE - André Tavares - Crescimento do Comércio Eletrônico baseado no Mercad...
SEBRAE - André Tavares - Crescimento do Comércio Eletrônico baseado no Mercad...
 
iMasters DevCommerce 2016 - A difícil tarefa de ser TI numa empresa de varejo...
iMasters DevCommerce 2016 - A difícil tarefa de ser TI numa empresa de varejo...iMasters DevCommerce 2016 - A difícil tarefa de ser TI numa empresa de varejo...
iMasters DevCommerce 2016 - A difícil tarefa de ser TI numa empresa de varejo...
 

NoSQL e CAP