SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Persistência nas Nuvens com NoSQL Rodrigo Hjort [email_address]
Quem aqui usa banco de dados?
Por que precisamos de SQL?
Onde usamos SQL (i.e. ACID)?
[object Object]
Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.
Aplicações web modernas
[object Object]
Os modelos transacionais ,[object Object]
BASE otimista, aceitando que a consistência esteja em um “estado de fluxo” http://queue.acm.org/detail.cfm?id=1394128 Possibilita a escalabilidade horizontal...
NoSQL = Not Only SQL http://nosql-database.org/ distribuídos não relacionais horizontalmente escaláveis esquemas flexíveis replicáveis APIs simples
NoSQL nas Nuvens escalabilidade flexibilidade performance disponibilidade
Zoologia dos bancos NoSQL Wide Column Store / Column Families Key-Value Store Document Store Azure Storage Services
[object Object]
[object Object],Teorema de Brewer: CAP ,[object Object]
Disponibilidade : toda operação tem uma resposta
Partição : sistema continua operante mesmo enfrentando partições na rede Consistência Consistency Disponibilidade Availability Partição Partition Tolerance
Breve explicação do CAP um dia ensolarado... partições de rede!
I. Consistência e Disponibilidade ,[object Object],C A
II. Consistência e Partição ,[object Object],C P
III. Disponibilidade e Partição ,[object Object],A P
“ A high performance, scalable, distributed storage and processing system for structured and unstructured data.”
Cassandra: um breve histórico Bigtable Dynamo
Um novo modelo de dados Agrupamento de famílias de colunas (~banco de dados) Agrupamento de colunas (~tabela) com ordenação fixada Chave que representa uma linha de colunas (~chave primária) Representação de um valor, com: ,[object Object]
Valor (Value)
Timestamp Keyspace Column Family (Row) Key Column
As famílias de colunas
Exemplo: modelagem do Twitter Users Following Followers @paul segue @brigitte desde 22/08/2010 john fullname: John Doe password: swordfish joindate: 20091115 paul fullname: Paul Lane password: thepass joindate: 20091129 john paul: 20091204 brigitte: 20100815 paul john: 20091205 debora: 20100729 brigitte: 20100822 john tom: 20091128 paul: 20091205 brigitte john: 20100815 paul: 20100822
Exemplo: modelagem do Twitter Statuses (Tweets) Timeline Userline Tweets do @john Tweets dos usuários que o @paul segue data/hora tweet 12345 user: john body: Nuvem privada do @serpro! retweets: 123 12346 user: brigitte john 20100116083155: 12346 paul 20100116083002: 12345 20100116083155: 12346 john 20100116083002: 12345 20100118235914: 23457 brigitte 20100116083155: 12346 tweet body: Acabei de #acordar. tags acordar: 1
“It took two weeks to perform ALTER TABLE on the statuses [tweets] table.” – Twitter
Particionamento e replicação Fixed Circular Space (Ring) Virtual Nodes Consistent Hashing (MD5) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Weitere ähnliche Inhalte

Ähnlich wie Persistência nas Nuvens com NoSQL

Comparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLComparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQL
pichiliani
 
Introdução ao Nosql
Introdução ao NosqlIntrodução ao Nosql
Introdução ao Nosql
José Silva
 

Ähnlich wie Persistência nas Nuvens com NoSQL (20)

Conhecendo Apache Cassandra @Movile
Conhecendo Apache Cassandra  @MovileConhecendo Apache Cassandra  @Movile
Conhecendo Apache Cassandra @Movile
 
MAC5855 - NoSQL
MAC5855 - NoSQLMAC5855 - NoSQL
MAC5855 - NoSQL
 
Palestra Google Cloud Spanner
Palestra Google Cloud SpannerPalestra Google Cloud Spanner
Palestra Google Cloud Spanner
 
No sql std
No sql stdNo sql std
No sql std
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 
Bancos de dados NoSQL: uma visão geral
Bancos de dados NoSQL: uma visão geralBancos de dados NoSQL: uma visão geral
Bancos de dados NoSQL: uma visão geral
 
Comparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLComparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQL
 
Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014
 
Distribuição de Dados em Escala Global com Cassandra
Distribuição de Dados em Escala Global com CassandraDistribuição de Dados em Escala Global com Cassandra
Distribuição de Dados em Escala Global com Cassandra
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvcc
 
NoSQL Livre
NoSQL LivreNoSQL Livre
NoSQL Livre
 
Introdução ao Nosql
Introdução ao NosqlIntrodução ao Nosql
Introdução ao Nosql
 
Alinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLAlinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQL
 
NoSQL com Cassandra
NoSQL com CassandraNoSQL com Cassandra
NoSQL com Cassandra
 
Cassandra NoSQL JUG Vale 2012
Cassandra NoSQL JUG Vale 2012Cassandra NoSQL JUG Vale 2012
Cassandra NoSQL JUG Vale 2012
 
L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalier
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
Primeiros passos com o Cassandra
 Primeiros passos com o Cassandra  Primeiros passos com o Cassandra
Primeiros passos com o Cassandra
 
Nosql4java
Nosql4javaNosql4java
Nosql4java
 
[TDC2016] Apache Cassandra Estratégias de Modelagem de Dados
[TDC2016]  Apache Cassandra Estratégias de Modelagem de Dados[TDC2016]  Apache Cassandra Estratégias de Modelagem de Dados
[TDC2016] Apache Cassandra Estratégias de Modelagem de Dados
 

Kürzlich hochgeladen

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Kürzlich hochgeladen (6)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Persistência nas Nuvens com NoSQL

  • 1. Persistência nas Nuvens com NoSQL Rodrigo Hjort [email_address]
  • 2. Quem aqui usa banco de dados?
  • 4. Onde usamos SQL (i.e. ACID)?
  • 5.
  • 6. Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.
  • 8.
  • 9.
  • 10. BASE otimista, aceitando que a consistência esteja em um “estado de fluxo” http://queue.acm.org/detail.cfm?id=1394128 Possibilita a escalabilidade horizontal...
  • 11. NoSQL = Not Only SQL http://nosql-database.org/ distribuídos não relacionais horizontalmente escaláveis esquemas flexíveis replicáveis APIs simples
  • 12. NoSQL nas Nuvens escalabilidade flexibilidade performance disponibilidade
  • 13. Zoologia dos bancos NoSQL Wide Column Store / Column Families Key-Value Store Document Store Azure Storage Services
  • 14.
  • 15.
  • 16. Disponibilidade : toda operação tem uma resposta
  • 17. Partição : sistema continua operante mesmo enfrentando partições na rede Consistência Consistency Disponibilidade Availability Partição Partition Tolerance
  • 18. Breve explicação do CAP um dia ensolarado... partições de rede!
  • 19.
  • 20.
  • 21.
  • 22. “ A high performance, scalable, distributed storage and processing system for structured and unstructured data.”
  • 23. Cassandra: um breve histórico Bigtable Dynamo
  • 24.
  • 26. Timestamp Keyspace Column Family (Row) Key Column
  • 27. As famílias de colunas
  • 28. Exemplo: modelagem do Twitter Users Following Followers @paul segue @brigitte desde 22/08/2010 john fullname: John Doe password: swordfish joindate: 20091115 paul fullname: Paul Lane password: thepass joindate: 20091129 john paul: 20091204 brigitte: 20100815 paul john: 20091205 debora: 20100729 brigitte: 20100822 john tom: 20091128 paul: 20091205 brigitte john: 20100815 paul: 20100822
  • 29. Exemplo: modelagem do Twitter Statuses (Tweets) Timeline Userline Tweets do @john Tweets dos usuários que o @paul segue data/hora tweet 12345 user: john body: Nuvem privada do @serpro! retweets: 123 12346 user: brigitte john 20100116083155: 12346 paul 20100116083002: 12345 20100116083155: 12346 john 20100116083002: 12345 20100118235914: 23457 brigitte 20100116083155: 12346 tweet body: Acabei de #acordar. tags acordar: 1
  • 30. “It took two weeks to perform ALTER TABLE on the statuses [tweets] table.” – Twitter
  • 31.
  • 32.
  • 33.
  • 34. One
  • 35. Quorum: N / 2 + 1
  • 36.
  • 37. R + W > N
  • 38. Read repair ack cliente réplica réplica réplica coordenador
  • 39. Filiação cluster / detecção falha Gossip-Based Protocol
  • 40.
  • 41.
  • 42. escrita: ~0,12 ms Leitura 23x mais rápida! Escrita 2500x mais rápida!
  • 43. Escrita é mais rápida que leitura?!
  • 44. “ NoSQL adoption is inevitable because, just as in every other walk of life, there are different tools for different jobs” – Stephen O'Graddy (RedMonk) Rodrigo Hjort [email_address] http://agajorte.blogspot.com

Hinweis der Redaktion

  1. ...
  2. A grande maioria das aplicações necessita de algum tipo de persistência de dados.
  3. Por que precisamos de SQL? Modelo relacional está bem consolidado Linguagem com décadas de evolução Integridade referencial e transações (ACID) Conjunto rico de ferramentas É o que aprendemos É o que o mercado usa
  4. Onde usamos SQL (i.e. ACID)? Aplicações empresariais Agências de viagem Internet banking Compras online Cartões de crédito Transações em geral
  5. ...
  6. Informação digital criada, capturada e replicada pelo mundo Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.
  7. Aplicações web modernas Grandes volumes de dados (escala da Internet) Altas taxas de leitura e escrita Necessidade de alta disponibilidade Frequentes mudanças nos esquemas Aplicações “sociais” não exigem os mesmos níveis de consistência que aplicações “bancárias”
  8. • Scaling existing Relational Databases is hard • Sharding is one solution, but makes your RDBMS unusable • Operational Nightmare
  9. Os modelos transacionais ACID Atomicity, Consistency, Isolation, Durability: a set of properties that guarantee database transactions are processed reliably BASE Basically Available, Soft state, Eventual consistency : as opposed to the database concept of ACID http://queue.acm.org/detail.cfm?id=1394128 Eventually Consistent http://queue.acm.org/detail.cfm?id=1466448
  10. O Movimento NoSQL NoSQL = Not Only SQL http://nosql-database.org/ bancos que diferem do modelo clássico relacional não relacionais distribuídos horizontalmente escaláveis com esquemas flexíveis replicáveis APIs simples BASE (e não ACID)
  11. Por que precisamos de NoSQL nas Nuvens? escalabilidade [horizontal] : mais CPUs comuns ao invés de upgrades performance : alcançado através de design simplificado e denormalização dos dados flexibilidade : natureza dos bancos sem esquema permite metodologias de desenvolvimento ágil [alta] disponibilidade : não existe ponto único de falha (SPOF – single point of failure)
  12. Wide Column Store: Bigtable (Google) SimpleDB (AWS) Cassandra (Apache) HBase (Apache) Hypertable Document Store: CouchDB (Apache) MongoDB Key-Value Store: Riak Redis Table Storage (Microsoft Azure)
  13. ...
  14. Eric Brewer (UCB) in 2000 presented the CAP theorem , which states that of 3 properties of shared-data systems: C: data consistency A: system availability P: tolerance to network partition Only 2 can be achieved at any given time! A more formal confirmation can be found in a 2002 paper by Seth Gilbert and Nancy Lynch.
  15. ...
  16. CA – Corruption possible if live nodes can’t communicate (network partition)
  17. CP – Completely inaccessible if any nodes are dead
  18. AP – Always available, but may not always read most recent NoSQL chooses AP, but makes consistency configurable
  19. Cassandra highlights ● High availability ● Incremental scalability ● Eventually consistent ● Super fast writes ● Tunable tradeoffs between consistency and latency ● Minimal administration ● No SPF
  20. Developed at Facebook Follows the BigTable Data Model - column oriented ( Google ) Follows the Dynamo Eventual Consistency model ( Amazon ) Opensourced at Apache Implemented in Java
  21. ...
  22. ...
  23. ...
  24. ...
  25. ...
  26. Every node is equal Always at least one copy in each datacenter Alternate datacenters on the ring DHT (Distributed Hash Table) Ring
  27. Eventual consistency ● Synch to Washington, asynch to Hong Kong Client API Tunables ● Confirm R replicas match at read time ● Synchronously write to W replicas of N total replicas Allows for almost-strong consistency ● When W + R > N
  28. Gossip protocol is used for cluster membership Enables seamless nodes addition Rebalancing of keys Fast detection of nodes that goes down Every node knows about all others - no master State disseminated in O(log N) rounds
  29. ...
  30. ...
  31. Conclusão NoSQL can’t do everything Adhoc queries are not possible Right tool for the right job