SlideShare uma empresa Scribd logo
NoSQL: onde, como e por quê? Rodrigo Hjort [email_address]
Quem aqui usa banco de dados?
Por que precisamos de SQL?
Onde usamos SQL (i.e. ACID)?
MAS...
Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.
Aplicações web modernas
Escalabilidade vertical é complicada e/ou cara!
Os modelos transacionais ACID pessimista, forçando consistência ao final de cada operação
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
Zoologia dos bancos NoSQL Wide Column Store / Column Families Key-Value Store Document Store NoSQL Database
MAS...
Você precisa escolher 2! Teorema de Brewer: CAP Consistência : visão única para os clientes
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
I. Consistência e Disponibilidade Limitações na escalabilidade (leitura e escrita) C A
II. Consistência e Partição Completamente inacessível se qualquer um dos nós estiver fora! C P
III. Disponibilidade e Partição Nem sempre lê a informação mais recente:  futuramente consistente 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 Row schema-less schema-optional
Exemplo: modelagem do Twitter Users Following Followers @paul segue @brigitte desde 22/08/2010 john name: John Doe pass: swordfish joined: 20091115 paul name: Paul Lane pass: thepass joined: 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
CQL (Query Language) CREATE COLUMNFAMILY users ( KEY varchar PRIMARY KEY, name varchar, pass varchar, joined bigint); INSERT INTO users (KEY, name, pass) VALUES ('jsmith', 'John Smith', 'changeme') USING CONSISTENCY QUORUM; SELECT * FROM users WHERE KEY = 'jsmith'; u'jsmith' | u'pass',u'changeme' SELECT name..pass FROM users WHERE KEY >= 'h' LIMIT 10; CREATE INDEX users_joined_idx ON users (joined); DELETE joined FROM users where KEY = 'jsmith';
“ 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) N=3 h(key2) 0 1 1/2 F E D C B A h(key1)
Ajuste de parâmetros (N, R, W) Consistência versus Escalabilidade
Ajuste  por requisição (R, W) Zero
One
Quorum: N / 2 + 1
All N: réplicas
R + W  > N
Read repair ack cliente réplica réplica réplica coordenador
Comunicação entre os nós Gossip-Based Protocol
Relacional versus NoSQL Dados do benchmark Base com 50 GB de dados MySQL leitura: ~350 ms
escrita: ~300 ms Cassandra leitura: ~15 ms
escrita: ~0,12 ms Leitura 23x mais rápida! Escrita 2500x mais rápida!
“ MongoDB (from "humongous") is a scalable, high-performance, open source, powerful, document-oriented database written in C++.”
O modelo de dados Relacional (Tabular) Orientado a Documentos

Mais conteúdo relacionado

PDF
Primeiros passos com o Cassandra
PPT
Banco de Dados - NoSQL
PDF
Conhecendo Apache Cassandra @Movile
PPTX
NoSQL, Base VS ACID e Teorema CAP
PDF
Bancos de dados NoSQL
PPTX
Modelos NoSQL e a Persistência Poliglota
PDF
NoSQL Familia de Colunas Monografia
PDF
Cassandra NoSQL JUG Vale 2012
Primeiros passos com o Cassandra
Banco de Dados - NoSQL
Conhecendo Apache Cassandra @Movile
NoSQL, Base VS ACID e Teorema CAP
Bancos de dados NoSQL
Modelos NoSQL e a Persistência Poliglota
NoSQL Familia de Colunas Monografia
Cassandra NoSQL JUG Vale 2012

Mais procurados (20)

PPTX
Seminário - NoSQL
PDF
Sistemas NoSQL, surgimento, características e exemplos
PDF
Material Seminário NoSQL
PDF
Apresentação cassandra
PDF
Cassandra - O básico
PPT
Comparação de desempenho entre SQL e NoSQL
PDF
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
PDF
Introducao aos Bancos de Dados Não-relacionais
PDF
Algumas das principais características do NoSQL
PPTX
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
PPTX
NOSQL uma breve introdução
PDF
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
PDF
Introdução ao NoSql
PDF
Artigo Nosql
PDF
Bancos orientados a colunas (Cassandra)
PDF
[TDC2016] Apache Cassandra Estratégias de Modelagem de Dados
PPTX
No sql Orientado a documento
PDF
Apresentacao Cassandra
PDF
ODP
Persistência Poliglota, Big Data e NoSQL FISL 15
Seminário - NoSQL
Sistemas NoSQL, surgimento, características e exemplos
Material Seminário NoSQL
Apresentação cassandra
Cassandra - O básico
Comparação de desempenho entre SQL e NoSQL
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Introducao aos Bancos de Dados Não-relacionais
Algumas das principais características do NoSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
NOSQL uma breve introdução
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
Introdução ao NoSql
Artigo Nosql
Bancos orientados a colunas (Cassandra)
[TDC2016] Apache Cassandra Estratégias de Modelagem de Dados
No sql Orientado a documento
Apresentacao Cassandra
Persistência Poliglota, Big Data e NoSQL FISL 15
Anúncio

Destaque (20)

PPTX
HBase Vs Cassandra Vs MongoDB - Choosing the right NoSQL database
PDF
MongoDB e Bancos de Dados Orientados a Documentos
PDF
Real-Time Analytics with Apache Cassandra and Apache Spark
ODP
NoSQL - Por que e quando usar?
PPTX
Benchmarking Top NoSQL Databases: Apache Cassandra, Apache HBase and MongoDB
KEY
noSql - db4o
PDF
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
PDF
Cassandra Trip Brasil
PDF
NoSql Introduction
ODP
Persistência nas Nuvens com NoSQL
PPT
Introduction to cassandra
PPTX
MongoDB: Prós, Contras e Showcases.
PDF
Boas Práticas de Design em Aplicações Ruby on Rails
KEY
Pentaho
PDF
CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...
PDF
NoSQL Database- cassandra column Base DB
PDF
WSGI: a resposta para a questão definitiva sobre Python, a web e tudo mais?
KEY
Programacao Funcional Em Ruby
PDF
Orientação a objetos na prática
PDF
Desenvolvimento web com Python, Zope e Plone
HBase Vs Cassandra Vs MongoDB - Choosing the right NoSQL database
MongoDB e Bancos de Dados Orientados a Documentos
Real-Time Analytics with Apache Cassandra and Apache Spark
NoSQL - Por que e quando usar?
Benchmarking Top NoSQL Databases: Apache Cassandra, Apache HBase and MongoDB
noSql - db4o
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Cassandra Trip Brasil
NoSql Introduction
Persistência nas Nuvens com NoSQL
Introduction to cassandra
MongoDB: Prós, Contras e Showcases.
Boas Práticas de Design em Aplicações Ruby on Rails
Pentaho
CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...
NoSQL Database- cassandra column Base DB
WSGI: a resposta para a questão definitiva sobre Python, a web e tudo mais?
Programacao Funcional Em Ruby
Orientação a objetos na prática
Desenvolvimento web com Python, Zope e Plone
Anúncio

Semelhante a NoSQL: onde, como e por quê? Cassandra e MongoDB (20)

PDF
MAC5855 - NoSQL
PPTX
Introdução ao Nosql
PDF
Palestra nosql
KEY
Utilizando NoSQL no desenvolvimento de soluções inteligentes
PDF
NoSql e NewSql
ODP
No sql std
PPTX
Introdução ao NoSQL e modelagem de dados com MongoDB
PPTX
Introdução ao MongoDB (NoSQL)
PPT
Mongo Db - PHP Day Workshop
PDF
Introducao a base de dados IBD07 NoSQL.pdf
PDF
Hello NoSQL World
PPT
Bancos de dados NoSQL (Not only sql)
PPTX
Sem limites com NoSQL
PPTX
Banco de Dados NoSql - JornalJava
PDF
Pesquisa sobre no sql
PDF
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
PDF
O NoSQL e o Relacional: Uma Análise
PDF
Python e bancos NoSQL
PDF
MongoDB e OpenShift - JUDCon2014
MAC5855 - NoSQL
Introdução ao Nosql
Palestra nosql
Utilizando NoSQL no desenvolvimento de soluções inteligentes
NoSql e NewSql
No sql std
Introdução ao NoSQL e modelagem de dados com MongoDB
Introdução ao MongoDB (NoSQL)
Mongo Db - PHP Day Workshop
Introducao a base de dados IBD07 NoSQL.pdf
Hello NoSQL World
Bancos de dados NoSQL (Not only sql)
Sem limites com NoSQL
Banco de Dados NoSql - JornalJava
Pesquisa sobre no sql
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
O NoSQL e o Relacional: Uma Análise
Python e bancos NoSQL
MongoDB e OpenShift - JUDCon2014

Último (19)

PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Apple Pippin Uma breve introdução. - David Glotz
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Aula 18 - Manipulacao De Arquivos python
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Processos na gestão de transportes, TM100 Col18
Aula04-Academia Heri- Tecnologia Geral 2025
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Custos e liquidação no SAP Transportation Management, TM130 Col18
COBITxITIL-Entenda as diferença em uso governança TI
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss

NoSQL: onde, como e por quê? Cassandra e MongoDB

  • 1. NoSQL: onde, como e por quê? Rodrigo Hjort [email_address]
  • 2. Quem aqui usa banco de dados?
  • 4. Onde usamos SQL (i.e. ACID)?
  • 6. Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.
  • 8. Escalabilidade vertical é complicada e/ou cara!
  • 9. Os modelos transacionais ACID pessimista, forçando consistência ao final de cada operação
  • 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. Zoologia dos bancos NoSQL Wide Column Store / Column Families Key-Value Store Document Store NoSQL Database
  • 14. Você precisa escolher 2! Teorema de Brewer: CAP Consistência : visão única para os clientes
  • 15. Disponibilidade : toda operação tem uma resposta
  • 16. Partição : sistema continua operante mesmo enfrentando partições na rede Consistência Consistency Disponibilidade Availability Partição Partition Tolerance
  • 17. I. Consistência e Disponibilidade Limitações na escalabilidade (leitura e escrita) C A
  • 18. II. Consistência e Partição Completamente inacessível se qualquer um dos nós estiver fora! C P
  • 19. III. Disponibilidade e Partição Nem sempre lê a informação mais recente: futuramente consistente A P
  • 20. “ A high performance, scalable, distributed storage and processing system for structured and unstructured data.”
  • 21. Cassandra: um breve histórico Bigtable Dynamo
  • 22. Um novo modelo de dados Row schema-less schema-optional
  • 23. Exemplo: modelagem do Twitter Users Following Followers @paul segue @brigitte desde 22/08/2010 john name: John Doe pass: swordfish joined: 20091115 paul name: Paul Lane pass: thepass joined: 20091129 john paul: 20091204 brigitte: 20100815 paul john: 20091205 debora: 20100729 brigitte: 20100822 john tom: 20091128 paul: 20091205 brigitte john: 20100815 paul: 20100822
  • 24. 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
  • 25. CQL (Query Language) CREATE COLUMNFAMILY users ( KEY varchar PRIMARY KEY, name varchar, pass varchar, joined bigint); INSERT INTO users (KEY, name, pass) VALUES ('jsmith', 'John Smith', 'changeme') USING CONSISTENCY QUORUM; SELECT * FROM users WHERE KEY = 'jsmith'; u'jsmith' | u'pass',u'changeme' SELECT name..pass FROM users WHERE KEY >= 'h' LIMIT 10; CREATE INDEX users_joined_idx ON users (joined); DELETE joined FROM users where KEY = 'jsmith';
  • 26. “ It took two weeks to perform ALTER TABLE on the statuses [tweets] table.” – Twitter
  • 27. Particionamento e replicação Fixed Circular Space (Ring) Virtual Nodes Consistent Hashing (MD5) N=3 h(key2) 0 1 1/2 F E D C B A h(key1)
  • 28. Ajuste de parâmetros (N, R, W) Consistência versus Escalabilidade
  • 29. Ajuste por requisição (R, W) Zero
  • 30. One
  • 31. Quorum: N / 2 + 1
  • 33. R + W > N
  • 34. Read repair ack cliente réplica réplica réplica coordenador
  • 35. Comunicação entre os nós Gossip-Based Protocol
  • 36. Relacional versus NoSQL Dados do benchmark Base com 50 GB de dados MySQL leitura: ~350 ms
  • 37. escrita: ~300 ms Cassandra leitura: ~15 ms
  • 38. escrita: ~0,12 ms Leitura 23x mais rápida! Escrita 2500x mais rápida!
  • 39. “ MongoDB (from "humongous") is a scalable, high-performance, open source, powerful, document-oriented database written in C++.”
  • 40. O modelo de dados Relacional (Tabular) Orientado a Documentos
  • 42. Modelo Orientado a Documentos
  • 43. { _id : ObjectId("5ebf5e0fec5fab7db2b9b40e"), title : "Introdução ao MongoDB", slug : "introducao-ao-mongodb", body : "Este é o texto do post...", published : true, created : "Jun 28 2011 13:48:22 AMT", updated : "Jun 28 2011 17:01:15 AMT", comments : [ { author : "john", email : "john@doe.com", body : "Caramba!", created : "Jun 28 2011 15:01:30 BRST" } ] , tags : [ "databases", "MongoDB", "nosql" ] } Um documento JSON Array Object ID Embedded Document
  • 44. Linguagem de Consulta SELECT * FROM usuarios > db.usuarios.find() SELECT nome FROM usuarios > db.usuarios.find({}, {“nome”: 1}) SELECT * FROM usuarios WHERE idade = 29 > db.usuarios.find({“idade”: 29}) SELECT * FROM usuarios WHERE idade = 29 AND ativo = true > db.usuarios.find({“idade”: 29, “ativo”: true}) SELECT * FROM usuarios WHERE idade >= 18 AND idade <= 30 > db.usuarios.find({“idade”: {“$gte”: 18, “$lte”: 30}}) SELECT * FROM usuarios WHERE nome LIKE “%admin%” > db.usuarios.find({“nome”: /admin/i})
  • 45. Linguagem de Consulta SELECT * FROM usuarios ORDER BY nome > db.usuarios.find().sort({“nome”: 1}) SELECT * FROM usuarios ORDER BY idade DESC, nome > db.usuarios.find().sort({“idade”: -1, “nome”: 1}) SELECT * FROM usuarios LIMIT 3 > db.usuarios.find().limit(3) SELECT * FROM usuarios OFFSET 5 > db.usuarios.find().skip(5) SELECT * FROM usuarios LIMIT 3 OFFSET 5 > db.usuarios.find().limit(3).skip(5) SELECT * FROM usuarios ORDER BY nome LIMIT 3 > db.usuarios.find().sort({“nome”: 1}).limit(3)
  • 46. Map Reduce índices capped collections Server-Side Scripting GridFS ad hoc queries
  • 51. “ 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://www.hjort.co

Notas do Editor

  • #2: ...
  • #3: A grande maioria das aplicações necessita de algum tipo de persistência de dados.
  • #4: 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
  • #5: 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
  • #6: ...
  • #7: Informação digital criada, capturada e replicada pelo mundo Fonte: IDC White Paper, &amp;quot;The Diverse and Exploding Digital Universe&amp;quot;, 2008.
  • #8: 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”
  • #9: • Scaling existing Relational Databases is hard • Sharding is one solution, but makes your RDBMS unusable • Operational Nightmare
  • #10: 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
  • #11: 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)
  • #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: CA – Corruption possible if live nodes can’t communicate (network partition)
  • #16: CP – Completely inaccessible if any nodes are dead
  • #17: AP – Always available, but may not always read most recent NoSQL chooses AP, but makes consistency configurable
  • #18: Cassandra highlights ● High availability ● Incremental scalability ● Eventually consistent ● Super fast writes ● Tunable tradeoffs between consistency and latency ● Minimal administration ● No SPF
  • #19: Developed at Facebook (problem of inbox search) Follows the BigTable ( Google ) Data Model - column oriented http://labs.google.com/papers/bigtable.html Follows the Dynamo ( Amazon ) Eventual Consistency model http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html Opensourced at Apache as an incubator project (2008) and then was top-leveled (2010) Implemented in Java
  • #20: Keyspace Agrupamento de famílias de colunas (~banco de dados) Column Family Agrupamento de colunas com ordenação fixada (~tabela) Row Key Chave que representa uma linha de colunas (~chave primária) Column Representação de um valor, com: - Nome (Name) - Valor (Value) - Timestamp
  • #21: ...
  • #22: ...
  • #23: Similar à linguagem SQL, mas com particularidades do Cassandra: consistency levels, TTL, slices
  • #24: Importância de esquemas flexíveis
  • #25: Every node is equal! Always at least one copy in each datacenter Alternate datacenters on the ring DHT (Distributed Hash Table) Ring
  • #26: 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 &gt; N
  • #27: Gossip protocol (~P2P) is used for cluster membership and failure detection on nodes. 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
  • #28: * Dados das primeiras versões do Cassandra (v0.6) Versão 1.0 trouxe melhoras de: - 40% na escrita - 400% na leitura! http://www.datastax.com/dev/blog/whats-new-in-cassandra-1-0-performance
  • #29: MongoDB is a powerful, flexible, and scalable data store. It combines the ability to scale out with many of the most useful features of relational databases, such as secondary indexes, range queries, and sorting. MongoDB is also incredibly featureful: it has tons of useful features such as built-in support for MapReduce-style aggregation and geospatial indexes. 1. (Slang.) humongous extraordinarily large.
  • #30: MongoDB basic concepts: • A document is the basic unit of data, roughly equivalent to a row in a RDBMS • Similarly, a collection can be thought of as the schema-free equivalent of a table • A single instance of MongoDB can host multiple independent databases , each of which can have its own collections and permissions Document : an ordered set of keys with associated values (i.e., map, hash, or dictionary)
  • #31: With Mongo, you do less &amp;quot;normalization&amp;quot; than you would perform designing a relational schema because there are no server-side joins . Generally, you will want one database collection for each of your top level objects.
  • #33: JSON-style documents with dynamic schemas offer simplicity and power.
  • #34: Rich, document-based queries.
  • #36: Index on any attribute, just like you&apos;re used to. Allows it to do queries orders of magnitude faster. Geospatial index is also provided. Map Reduce : a method of aggregation that can be easily parallelized across multiple servers. A capped collection is created fixed in size, behaving like circular queues . GridFS is a mechanism for storing large binary files in MongoDB. No need for a separate file storage architecture. JavaScript can be executed on the server.
  • #37: Sharding is the process of splitting data up and storing different portions of the data on different machines. Sharding is MongoDB’s approach to scaling out . Sharding allows you to add more machines to handle increasing load and data size without affecting your application. Scale horizontally without compromising functionality.
  • #38: From the application’s point of view, a sharded setup looks just like a nonsharded setup. There is no need to change application code when you need to scale. To set up sharding with no points of failure , you’ll need the following: • Multiple config servers • Multiple mongos servers • Replica sets for each shard • w set correctly
  • #39: Grande ruptura – IMS x RDBMS (invenção do modelo relacional)
  • #40: A segunda ruptura: RDBMS x NoSQL
  • #41: Conclusão NoSQL can’t do everything Right tool for the right job