236
TRADE-OFF'S DE CONFIABILIDADE E DISPONIBILIDADE COM BANCOS DE DADOS NOSQL

NoSQL e CAP

Embed Size (px)

Citation preview

Page 1: NoSQL e CAP

TRADE-OFF'S DE CONFIABILIDADE E DISPONIBILIDADE

COM BANCOS DE DADOS NOSQL

Page 2: NoSQL e CAP
Page 3: NoSQL e CAP

NoSQL?

Page 4: NoSQL e CAP

Como representar dados?

Page 5: NoSQL e CAP

Modelo Relacional

Page 6: NoSQL e CAP

Modelo Relacional

RelaçõesSuplasTuplas

Page 7: NoSQL e CAP

Modelo Relacional

TabelasLinhas

Page 8: NoSQL e CAP

Modelo RelacionalRelacionamentos

Page 9: NoSQL e CAP

Modelo RelacionalAlunos

ID Nome Idade

1 Leonardo 20

2 Carlos 18

3 Bruno 30

4 José 19

Page 10: NoSQL e CAP

Modelo RelacionalAlunos

ID Nome Idade

1 Leonardo 20

2 Carlos 18

3 Bruno 30

4 José 19

Chave primária

Page 11: NoSQL e CAP

Modelo RelacionalRequerimentos

ID Mensagem Aluno_ID

1 Renovação de Carterinha 1

2 Segunda chamada 2

3 Trancar matrícula 4

Page 12: NoSQL e CAP

Modelo RelacionalRequerimentos

ID Mensagem Aluno_ID

1 Renovação de Carterinha 1

2 Segunda chamada 2

3 Trancar matrícula 4

Chave estrangeira

Page 13: NoSQL e CAP

Modelo Relacional

- Modelo de dados simples

Page 14: NoSQL e CAP

Modelo Relacional

- Modelo de dados simples

- Contrato forte (schema design)

Page 15: NoSQL e CAP

Modelo Relacional

- Modelo de dados simples

- Contrato forte (schema design)

- Interoperabilidade

Page 16: NoSQL e CAP

Modelo Relacional

Page 17: NoSQL e CAP

Modelo Relacional

Page 18: NoSQL e CAP

Modelo Relacional

Page 19: NoSQL e CAP

Modelo RelacionalBanco de Integração

Page 20: NoSQL e CAP

Requisitos não-funcionais

Page 21: NoSQL e CAP

Concurrency control

x

Page 22: NoSQL e CAP
Page 23: NoSQL e CAP
Page 24: NoSQL e CAP

1

Page 25: NoSQL e CAP

1 0

Page 26: NoSQL e CAP

Transactions (TX)

Begin Commit1 0

Page 27: NoSQL e CAP

Transactions (TX)

Begin CommitEstadoConsistente

EstadoConsistente

Unit of Work

Page 28: NoSQL e CAP

Transactions (TX)

ACID

tomic

onsistent

solation

urable

Page 29: NoSQL e CAP

Transactions (TX)

Begin1

Page 30: NoSQL e CAP

Transactions (TX)

Begin

Begin Commit1 0

1

Page 31: NoSQL e CAP

Transactions (TX)

Begin

Begin Commit1 0

1 ?

Page 32: NoSQL e CAP

Isolation levels

Serializable

Repeatable Reads

Read Committed

Read Uncommitted

Page 33: NoSQL e CAP
Page 34: NoSQL e CAP

Meu nome é ACID

Page 35: NoSQL e CAP

Isolation levels ==

Controle de consistência

Page 36: NoSQL e CAP

Bancos Relacionais- Modelo Relacional

- Integração

- Transações “ACID”

- Segurança

Page 37: NoSQL e CAP

NoSQL?

Page 38: NoSQL e CAP
Page 39: NoSQL e CAP

“Quando tudo o que se tem é um martelo, todos os problemas parecem pregos"

Page 40: NoSQL e CAP

“Quando tudo o que se tem é um martelo, todos os problemas parecem pregos"

ComplexityPe

rform

ance

Page 41: NoSQL e CAP

Como salvar Logs?

Page 42: NoSQL e CAP

Como salvar um mapa?

Page 43: NoSQL e CAP

Como salvar isso?

Page 44: NoSQL e CAP

Como modelar hierarquias?

Page 45: NoSQL e CAP

Impendance Mismatch

Page 46: NoSQL e CAP

Impendance Mismatch

Page 47: NoSQL e CAP

Impendance Mismatch

RelaçõesSuplasTuplas

Page 48: NoSQL e CAP
Page 49: NoSQL e CAP

Cara no meio

Page 50: NoSQL e CAP

ORM

Page 51: NoSQL e CAP
Page 52: NoSQL e CAP
Page 53: NoSQL e CAP

Impedance Mismatch

Page 54: NoSQL e CAP

Dados não uniformes

Page 55: NoSQL e CAP

Produto

Nome, Modelo, Cor

Page 56: NoSQL e CAP

Produto

Nome, Modelo, Cor, Ano de Fabricação

Page 57: NoSQL e CAP

Escalabilidade

Page 58: NoSQL e CAP

Vertical

Page 59: NoSQL e CAP

Horizontal

Page 60: NoSQL e CAP
Page 61: NoSQL e CAP
Page 62: NoSQL e CAP

?? ??? ?

Page 63: NoSQL e CAP

Questões técnicas

Page 64: NoSQL e CAP

Confiabilidade

Page 65: NoSQL e CAP

Usuarios, Cursos, Professores, Turmas

Page 66: NoSQL e CAP

Usuarios, Cursos Professores, Turmas

Page 67: NoSQL e CAP

Usuarios, Cursos Professores, Turmas

Page 68: NoSQL e CAP

Ponto único de falhas por fragmento

Page 69: NoSQL e CAP

Disponibilidade por

fragmento

Page 70: NoSQL e CAP

Integridade referencialTransações

Consistência

Page 71: NoSQL e CAP

Questões técnicas

Questões comerciais

Page 72: NoSQL e CAP
Page 73: NoSQL e CAP

Questões técnicas

Questões comerciais

Page 74: NoSQL e CAP

NoSQL

Page 75: NoSQL e CAP

==Persistência Poliglota

Page 76: NoSQL e CAP
Page 77: NoSQL e CAP
Page 78: NoSQL e CAP
Page 79: NoSQL e CAP

Como?

Page 80: NoSQL e CAP

Modelos de distribuição

Page 81: NoSQL e CAP

Produtos, Vendas, Usuarios, Franquias

Page 82: NoSQL e CAP

Não distribuir :)

Page 83: NoSQL e CAP

Produtos, Vendas, Usuarios, Franquias

Page 84: NoSQL e CAP

Produtos, Vendas, Usuarios, Franquias

Page 85: NoSQL e CAP

Produtos, Vendas, Usuarios, Franquias

Page 86: NoSQL e CAP

Produtos, Vendas, Usuarios, Franquias

Page 87: NoSQL e CAP

Produtos, Vendas, Usuarios, Franquias

Page 88: NoSQL e CAP

Produtos, Vendas, Usuarios, Franquias100%

Page 89: NoSQL e CAP

Produtos

Vendas

Usuários

Franquias

Page 90: NoSQL e CAP

Produtos

Vendas

Usuários

Franquias

25%

25%

25%

25%

Page 91: NoSQL e CAP

Produtos

25%

Franquias

25%

Usuario

25%

Vendas

25%

Page 92: NoSQL e CAP

Produtos Franquias Usuario Vendas

25% 25% 25% 25%

Page 93: NoSQL e CAP

Fragmentação(Sharding)

Page 94: NoSQL e CAP
Page 95: NoSQL e CAP

Produtos Franquias Usuario Vendas

Page 96: NoSQL e CAP

Produtos Franquias Usuario Vendas

Page 97: NoSQL e CAP

Produtos Franquias Usuario Vendas

Page 98: NoSQL e CAP

Produtos Franquias Usuario Vendas

Page 99: NoSQL e CAP

Produtos Franquias Usuario Vendas

100% 100% 100% 100%

Page 100: NoSQL e CAP
Page 101: NoSQL e CAP

Como organizar os dados nos fragmentos?

Page 102: NoSQL e CAP

Distribuição Geográfica

Page 103: NoSQL e CAP

Vendas

050

100150200

Bangu Campo Grande Méier Santa Cruz Franquias

050

100150200

Bangu Campo Grande Méier Santa Cruz

Page 104: NoSQL e CAP

Produtos Franquias, Vendas Usuario

Campo Grande

Page 105: NoSQL e CAP

Parelhamento de Carga

Page 106: NoSQL e CAP

A B C D

25% 25% 25% 25%

Page 107: NoSQL e CAP

Dias da semana

Page 108: NoSQL e CAP

Acesso aos dados quentes

0

50

100

150

200

Quarta Quinta Sexta Sábado

Page 109: NoSQL e CAP

Quando fragmentar?

Page 110: NoSQL e CAP
Page 111: NoSQL e CAP
Page 112: NoSQL e CAP
Page 113: NoSQL e CAP

Fragmentação

+ Performance

Page 114: NoSQL e CAP

Fragmentação

+ Performance

- Disponibilidade por fragmento

Page 115: NoSQL e CAP

Produtos Franquias, Vendas Usuario

Campo Grande

Page 116: NoSQL e CAP

Produtos

Page 117: NoSQL e CAP

Produtos

Page 118: NoSQL e CAP

Produtos

Leituras

Page 119: NoSQL e CAP

Produtos

Escritas

Leituras

Page 120: NoSQL e CAP

Produtos

Escritas

Leituras

Page 121: NoSQL e CAP

Produtos

Escritas

Leituras

Page 122: NoSQL e CAP

Produtos

Escritas

Slave

Page 123: NoSQL e CAP

Produtos

Master

Slave

Page 124: NoSQL e CAP

Produtos

Master

Slave

Page 125: NoSQL e CAP

Produtos

Master

Slave

Page 126: NoSQL e CAP

Produtos

Master Slave

Page 127: NoSQL e CAP

Replicação(Master-slave)

Page 128: NoSQL e CAP

Fragmentação + Replicação(master-slave)

+ Performance+ Tolerância a falhas

Page 129: NoSQL e CAP
Page 130: NoSQL e CAP

Produtos

Master

Slave

Page 131: NoSQL e CAP

Produtos

Master

Slave

Page 132: NoSQL e CAP

Produtos

Master

Slave

Page 133: NoSQL e CAP

Produtos

Master

Slave

Page 134: NoSQL e CAP

Produtos

Master

Slave

B

Page 135: NoSQL e CAP

Consistência eventual

Atualizações são propagadas um tempo depois

Page 136: NoSQL e CAP

Consistência eventual

Atualizações são propagadas um tempo depoisAbrindo Janelas de Inconsistência

Page 137: NoSQL e CAP

Inconsistência de

Leitura

Page 138: NoSQL e CAP

Produtos

Master

Slave

Page 139: NoSQL e CAP

Produtos

Master

Slave

OK!

Page 140: NoSQL e CAP

Produtos

Master

Slave

Page 141: NoSQL e CAP

Falha de durabilidade

Page 142: NoSQL e CAP

Produtos

Master

Slave

Page 143: NoSQL e CAP

Produtos

Master

Slave

Page 144: NoSQL e CAP

Produtos

Master

Slave

OK!

Page 145: NoSQL e CAP

Produtos

Master

Slave

Page 146: NoSQL e CAP

Produtos

Master

Slave

Page 147: NoSQL e CAP

Produtos

Master ?

Page 148: NoSQL e CAP
Page 149: NoSQL e CAP
Page 150: NoSQL e CAP
Page 151: NoSQL e CAP

Replicação(p2p)

Page 152: NoSQL e CAP
Page 153: NoSQL e CAP
Page 154: NoSQL e CAP
Page 155: NoSQL e CAP

{"produto" : "Maçã","massa" : 20

}

{"produto" : "Maçã","massa" : 20

}

Page 156: NoSQL e CAP

{"produto" : "Maçã","massa" : 20

}

{"produto" : "Maçã","massa" : 20

}

Massa: 17 Massa: 21

Page 157: NoSQL e CAP

{"produto" : "Maçã","massa" : 20

}

{"produto" : "Maçã","massa" : 20

}

Massa: 17 Massa: 21

?

Page 158: NoSQL e CAP

Inconsistência de gravação

(Conflito escrita-escrita)

Page 159: NoSQL e CAP

{"produto" : "Maçã","massa" : 20

}

{"produto" : "Maçã","massa" : 20

}

Massa: 17 Massa: 21

Leonardo Amanda

Page 160: NoSQL e CAP

{"produto" : "Maçã",“massa” : 21

}

Page 161: NoSQL e CAP

{"produto" : "Maçã",“massa” : 17

}

Page 162: NoSQL e CAP

Soluções

Page 163: NoSQL e CAP

Lock

Page 164: NoSQL e CAP

{"produto" : "Maçã","massa" : 20

}

{"produto" : "Maçã","massa" : 20

}

Leonardo Amanda

Page 165: NoSQL e CAP

{"produto" : "Maçã","massa" : 20

}

{"produto" : "Maçã","massa" : 20

}

Leonardo AmandaQuero

escrever!

Page 166: NoSQL e CAP

{"produto" : "Maçã","massa" : 20

}

{"produto" : "Maçã","massa" : 20

}

Leonardo AmandaQuero

escrever!

Page 167: NoSQL e CAP

{"produto" : "Maçã","massa" : 20

}

{"produto" : "Maçã","massa" : 20

}

Massa: 17

Leonardo AmandaQuero

escrever!

Page 168: NoSQL e CAP

{"produto" : "Maçã","massa" : 20

}

{"produto" : "Maçã","massa" : 20

}

Massa: 17

Leonardo AmandaQuero

escrever!

Page 169: NoSQL e CAP

Lock pessimista

Page 170: NoSQL e CAP

Lock pessimista- Performance

Page 171: NoSQL e CAP

{"produto" : "Maçã","massa" : 20,"versao" : 0,

}

Page 172: NoSQL e CAP

{"produto" : "Maçã","massa" : 20,

"versao" : 0, }

Page 173: NoSQL e CAP

{"produto" : "Maçã","massa" : 20,

"versao" : 0, }

Leonardo

Versão: 0

Page 174: NoSQL e CAP

{"produto" : "Maçã","massa" : 20,

"versao" : 0, }

Amanda

Versão: 0

Page 175: NoSQL e CAP

{"produto" : "Maçã","massa" : 20,

"versao" : 1, }

Amanda

Page 176: NoSQL e CAP

{"produto" : "Maçã","massa" : 20,

"versao" : 1, }

Leonardo

Versão: 0

Page 177: NoSQL e CAP

{"produto" : "Maçã","massa" : 20,

"versao" : 1, }

Leonardo

Versão: 0

Page 178: NoSQL e CAP

Lock otimista

Page 179: NoSQL e CAP

Serialização é necessário

Page 180: NoSQL e CAP

Replicação(Master-slave)

Page 181: NoSQL e CAP

{"produto" : "Maçã","massa" : 20

}

{"produto" : "Maçã","massa" : 20

}

Massa: 17 Massa: 21

?

Page 182: NoSQL e CAP

{"produto" : "Maçã","massa" : 20

}

Massa: 17 Massa: 21

Page 183: NoSQL e CAP

Aceitar escritas

Page 184: NoSQL e CAP

{"produto" : "Maçã","massa" : 20

}

{"produto" : "Maçã","massa" : 20

}

Massa: 17 Massa: 21

Page 185: NoSQL e CAP

Usuário decide

Page 186: NoSQL e CAP

Inconsistência

=

Problema

?

Page 187: NoSQL e CAP
Page 188: NoSQL e CAP
Page 189: NoSQL e CAP

Load Balancer

Page 190: NoSQL e CAP

Load Balancer

Page 191: NoSQL e CAP
Page 192: NoSQL e CAP

Load Balancer

Page 193: NoSQL e CAP

Relaxar

Page 194: NoSQL e CAP

Relaxar

Page 195: NoSQL e CAP

RelaxarBancos relacionais já faziam

Page 196: NoSQL e CAP

RelaxarBancos relacionais já faziam

MyISAM

Page 197: NoSQL e CAP

RelaxarBancos relacionais já faziam

MyISAM

Performance

Page 198: NoSQL e CAP

CAP

Page 199: NoSQL e CAP

Split Brain

Page 200: NoSQL e CAP

CA

Page 201: NoSQL e CAP

CP

Page 202: NoSQL e CAP

AP

Page 203: NoSQL e CAP

CA

Page 204: NoSQL e CAP

CA

Page 205: NoSQL e CAP

CA

Page 206: NoSQL e CAP

CA

Page 207: NoSQL e CAP

CA

Page 208: NoSQL e CAP

Cluster tem que saber lidar com particionamento!

Page 209: NoSQL e CAP

CAPBalancear Consistência e Disponibilidade

Page 210: NoSQL e CAP
Page 211: NoSQL e CAP

Rio de Janeiro

São Paulo

Page 212: NoSQL e CAP

Rio de Janeiro

São Paulo

Pode?

Page 213: NoSQL e CAP

Rio de Janeiro

São Paulo

Page 214: NoSQL e CAP

Rio de Janeiro

São Paulo

Nega a escrita

CP

Page 215: NoSQL e CAP
Page 216: NoSQL e CAP
Page 217: NoSQL e CAP

CONSISTÊNCIA EVENTUAL

Page 218: NoSQL e CAP

AP

Page 219: NoSQL e CAP

O que acontece

Page 220: NoSQL e CAP

O que acontece Quando não há particionamento?

Page 221: NoSQL e CAP

CAP

Page 222: NoSQL e CAP

Consistência sempre!

Page 223: NoSQL e CAP

Por que sacrificar a consistência?

Quando não há particionamento?

Page 224: NoSQL e CAP

AP

Page 225: NoSQL e CAP

CONSISTÊNCIA EVENTUAL

Page 226: NoSQL e CAP

Latência

Page 227: NoSQL e CAP
Page 228: NoSQL e CAP

Baixa latência

Consistência forte

VS

Page 229: NoSQL e CAP

P?(A|C):(C|L)

PAC/CL

Page 230: NoSQL e CAP

particionamento?

Page 231: NoSQL e CAP

sim!consistência

disponibilidade

Page 232: NoSQL e CAP

não!consistência

latência

Page 233: NoSQL e CAP

ResumãoENEM

Page 234: NoSQL e CAP

NoSQLPersistencia poliglota

Modelo de dadosClusterização

FragmentaçãoReplicação

Problemas de consistênciaRelaxar consistência

CAPP?(A|C):(C|L)

Page 235: NoSQL e CAP
Page 236: NoSQL e CAP

Obrigado!

Leonardo [email protected]

:)