46
NoSQL: Vantagens, Desvantagens e Compromissos Mauricio De Diana (mestrando) Marco Aurélio Gerosa (orientador)

NoSQL: Vantagens, Desvantagens e Compromissos

Embed Size (px)

DESCRIPTION

Seminário apresentado no IME-USP, 16/09/2010 ---------------------------------------------------------------------- Qualquer decisão arquitetural em sistemas de software envolve compromissos entre atributos de qualidade como latência, tempo de resposta, escalabilidade, segurança, manutenibilidade, etc. Um compromisso feito ao se adotar alguns tipos de SGBDs NoSQL é abrir mão da consistência forte para se ganhar em escalabilidade, por exemplo. Nessa apresentação falaremos sobre esse e outros compromissos envolvidos no uso de NoSQL como solução de armazenamento e recuperação de dados.

Citation preview

Page 1: NoSQL: Vantagens, Desvantagens e Compromissos

NoSQL: Vantagens, Desvantagens e Compromissos

Mauricio De Diana (mestrando) Marco Aurélio Gerosa (orientador)

Page 2: NoSQL: Vantagens, Desvantagens e Compromissos

Agenda

Definição de NoSQL

Atributos de qualidade e trocas

Modelo de dados Escalabilidade

Transações Consistência e disponibilidade

Desempenho01/45

Page 3: NoSQL: Vantagens, Desvantagens e Compromissos

Dados em larga escala na web - Publicações

Bigtable (Google)

Dynamo (Amazon)

PNUTS (Yahoo!) Além de:GFS, MapReduce, Chubby...

Chang, F. et al (2006). Bigtable: A Distributed Storage System for Structured Data.DeCandia, G. et al (2007). Dynamo: Amazon's Highly Available Key-value Store.Cooper, B. et al (2008). PNUTS: Yahoo!'s Hosted Data Serving Platform.

02/45

Page 4: NoSQL: Vantagens, Desvantagens e Compromissos

Dados em larga escala na web - FLOSS

Cassandra MongoDB Neo4J

Redis

Riak

...

03/45

Page 5: NoSQL: Vantagens, Desvantagens e Compromissos

SGBDs NoSQL

Não-relacionais

Não-ACID

Distribuídos

04/45

Page 6: NoSQL: Vantagens, Desvantagens e Compromissos

SGBDs NoSQL

Não-relacionais

Não-ACID

Distribuídos

Para modelos de dados:24/09, 14:00, CEC (lab 06): Aula de MAC5855

05/45

Page 7: NoSQL: Vantagens, Desvantagens e Compromissos

Atributos de qualidade

Tempo de projeto

Modificabilidade

Testabilidade

...

Tempo de execução

Desempenho Disponibilidade Escalabilidade

Segurança

... Barbacci, M. (1995). Quality Attributes.Bass, L. et al. (2003). Software Architecture in Practice. 2a ed.

06/45

Page 8: NoSQL: Vantagens, Desvantagens e Compromissos

Atributos de qualidade - Trocas

Fonte: Quality Attributes. 07/45

Page 9: NoSQL: Vantagens, Desvantagens e Compromissos

Modelo de dados

Page 10: NoSQL: Vantagens, Desvantagens e Compromissos

Modelos não-relacionais

Grafos: interconectividade dos dados é tão ou mais importante quanto os dados em si Chave-valor: modelo simples Orientado a documentos: dados semiestruturados

Angles, R. e Gutierrez, C. (2008) Survey of Graph Database Models.Buneman, P. (1997). Semistructured Data.

09/45

Page 11: NoSQL: Vantagens, Desvantagens e Compromissos

SGBDs relacionais

Esquema Restrições de integridade (entidade, referencial, domínio) Normalização

10/45

Page 12: NoSQL: Vantagens, Desvantagens e Compromissos

Esquema

Banco de dados compartilhado

Hohpe, G e Woolf, B. (2003). Enterprise Integration Patterns.11/45

Page 13: NoSQL: Vantagens, Desvantagens e Compromissos

Diferença de impedância

OO

Herança

Encapsulamento

Polimorfismo

...

Relacional

Relacionamentos Junções

Normalização

...

Ambler, S. The Object-Relational Impedance Mismatch. http://www.agiledata.org/essays/impedanceMismatch.html

12/45

Page 14: NoSQL: Vantagens, Desvantagens e Compromissos

Escalabilidade

Page 15: NoSQL: Vantagens, Desvantagens e Compromissos

Escalando relacional

Page 16: NoSQL: Vantagens, Desvantagens e Compromissos

N servidores web1 db

Page 17: NoSQL: Vantagens, Desvantagens e Compromissos

Mestre / Escravo

Page 18: NoSQL: Vantagens, Desvantagens e Compromissos

Mestre / Escravo

Page 19: NoSQL: Vantagens, Desvantagens e Compromissos

Particionamento funcional

Page 20: NoSQL: Vantagens, Desvantagens e Compromissos

Particionamento horizontal

Pritchett, D. (2008). BASE: An Acid Alternative.

Page 21: NoSQL: Vantagens, Desvantagens e Compromissos

Perde-se

Junções

Normalização

Integridade de entidade e referencial

Transparência de localização

20/45

Page 22: NoSQL: Vantagens, Desvantagens e Compromissos

Transações

Page 23: NoSQL: Vantagens, Desvantagens e Compromissos

ACID

Atomicidade

Consistência

Isolamento

Durabilidade

22/45

Page 24: NoSQL: Vantagens, Desvantagens e Compromissos

ACID e escalabilidade

Atomicidade: protocolo distribuído (2PC)

Consistência: problemas com réplicas Isolamento: locks distribuídos

Abadi, D. (2010). The problems with ACID, and how to fix them without going NoSQL. http://dbmsmusings.blogspot.com/2010/08/problems-with-acid-and-how-to-fix-them.html

23/45

Page 25: NoSQL: Vantagens, Desvantagens e Compromissos

Exemplos de trocas com ACID em NoSQL

Atomicidade e isolamento: em único banco de dados (Bigtable)

Consistência: em momento indeterminado (Dynamo)

Durabilidade: memória + snapshotting (Redis)

Pritchett, D. (2008). BASE: An Acid Alternative.Vogels, W. (2009). Eventually Consistent. 24/45

Page 26: NoSQL: Vantagens, Desvantagens e Compromissos

Consistência e Disponibilidade

Page 27: NoSQL: Vantagens, Desvantagens e Compromissos

Teorema CAP

Consistência

Disponibilidade

Tolerância à partição

Fonte: http://blog.mattwoodward.com/

Brewer, E. (2000). Towards Robust Distributed Systems.Gilbert, S. e Lynch, N. (2002). Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-tolerant Web Services 26/45

Page 28: NoSQL: Vantagens, Desvantagens e Compromissos

ACID x BASE

Basicamente disponível (Basically available)

Soft state

Consistente em momento indeterminado (Eventually consistent)

Pritchett, D. (2008). BASE: An Acid Alternative. 27/45

Page 29: NoSQL: Vantagens, Desvantagens e Compromissos

Consistência em momento indeterminado

Page 30: NoSQL: Vantagens, Desvantagens e Compromissos
Page 31: NoSQL: Vantagens, Desvantagens e Compromissos
Page 32: NoSQL: Vantagens, Desvantagens e Compromissos
Page 33: NoSQL: Vantagens, Desvantagens e Compromissos
Page 34: NoSQL: Vantagens, Desvantagens e Compromissos
Page 35: NoSQL: Vantagens, Desvantagens e Compromissos
Page 36: NoSQL: Vantagens, Desvantagens e Compromissos
Page 37: NoSQL: Vantagens, Desvantagens e Compromissos
Page 38: NoSQL: Vantagens, Desvantagens e Compromissos

Consertando inconsistências

Fazer nada Tentar novamente

Ação de compensação

Hohpe, G. (2004). Starbucks Does Not Use Two-Phase Commit. http://www.eaipatterns.com/ramblings/18_starbucks.html 37/45

Page 39: NoSQL: Vantagens, Desvantagens e Compromissos

Desempenho

Page 40: NoSQL: Vantagens, Desvantagens e Compromissos

Cenários

OLTP

Operação CRUD pequeno e rápido

Consultas simples

OLAP

Informação (BI)

Batches demorados

Consultas complexas

Cargas de trabalho diferentes precisam de tratamento diferente

Stonebraker, M. e Cetintemel, U. (2005)."One Size Fits All": An Idea Whose Time Has Come and Gone.

39/45

Page 41: NoSQL: Vantagens, Desvantagens e Compromissos

Experimentos

OLTP

H-Store (VoltDB)

82x mais rápido que um SGBD comercial

OLAP

C-Store (Vertica)

124x mais rápido que um SGBD comercial orientado a linha

21x mais rápido que um SGBD comercial orientado a coluna

Stonebraker, M. et al. (2007).The End of an Architectural Era (It's Time for a Complete Rewrite).Stonebraker, M. et al. (2005). C-store: a Column-oriented DBMS. 40/45

Page 42: NoSQL: Vantagens, Desvantagens e Compromissos

Tempos em um SGBDR

Logging, locking, latching e gerenciamento de buffer

1/60 das instruções em uma transação são trabalho útil 20x mais rápido sem esses sub-subsistemas

Harizopoulos, S. et al. (2008). OLTP Through the Looking Glass, and What We Found There.

41/45

Page 43: NoSQL: Vantagens, Desvantagens e Compromissos

Especializações

Problema não está no modelo relacional, nem na SQL

Ordens de grandeza de diferença

Persistência poliglota

42/45

Page 44: NoSQL: Vantagens, Desvantagens e Compromissos

Conclusões

Contexto importa

Balancear vantagens e desvantagens é fundamental

43/45

Page 45: NoSQL: Vantagens, Desvantagens e Compromissos

Próximos passos

Foco em chave-valor (DHT) Desenvolvimento de taxonomia

Arquitetura de referência

Experimentos de escalabilidade e desempenho riak_core Benchmark para cloud do Yahoo!

44/45

Page 46: NoSQL: Vantagens, Desvantagens e Compromissos

Obrigado. Comentários, dúvidas, sugestões?

[email protected]@gmail.com

@mdediana