SlideShare une entreprise Scribd logo
1  sur  40
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)?
[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
Zoologia dos bancos NoSQL Wide Column Store / Column Families Key-Value Store Document Store NoSQL Database
[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
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 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) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ajuste de parâmetros (N, R, W) ,[object Object]
Ajuste  por requisição (R, W) ,[object Object]
One
Quorum: N / 2 + 1
All ,[object Object]
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 ,[object Object],MySQL ,[object Object]
escrita: ~300 ms Cassandra ,[object Object]
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

Contenu connexe

Tendances

Sistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplosSistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplosAricelio Souza
 
Apresentação cassandra
Apresentação cassandraApresentação cassandra
Apresentação cassandraRichiely Paiva
 
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 NoSQLpichiliani
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Ambiente Livre
 
Introducao aos Bancos de Dados Não-relacionais
Introducao aos Bancos de Dados Não-relacionaisIntroducao aos Bancos de Dados Não-relacionais
Introducao aos Bancos de Dados Não-relacionaisMauricio De Diana
 
Algumas das principais características do NoSQL
Algumas das principais características do NoSQLAlgumas das principais características do NoSQL
Algumas das principais características do NoSQLEric Silva
 
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQLEstudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQLOrlando Vitali
 
NOSQL uma breve introdução
NOSQL uma breve introduçãoNOSQL uma breve introdução
NOSQL uma breve introduçãoWise Systems
 
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
DBA Brasil 2.0   NOSql Apache Cassandra para DBAsDBA Brasil 2.0   NOSql Apache Cassandra para DBAs
DBA Brasil 2.0 NOSql Apache Cassandra para DBAsRonaldo Leite Martins
 
Bancos orientados a colunas (Cassandra)
Bancos orientados a colunas (Cassandra) Bancos orientados a colunas (Cassandra)
Bancos orientados a colunas (Cassandra) Otávio Santana
 
[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 DadosEiti Kimura
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 
Apresentacao Cassandra
Apresentacao CassandraApresentacao Cassandra
Apresentacao CassandraPeslPinguim
 
Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Christiano Anderson
 

Tendances (20)

Seminário - NoSQL
Seminário - NoSQLSeminário - NoSQL
Seminário - NoSQL
 
Sistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplosSistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplos
 
Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário NoSQL
 
Apresentação cassandra
Apresentação cassandraApresentação cassandra
Apresentação cassandra
 
Cassandra - O básico
Cassandra - O básicoCassandra - O básico
Cassandra - O básico
 
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
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
 
Introducao aos Bancos de Dados Não-relacionais
Introducao aos Bancos de Dados Não-relacionaisIntroducao aos Bancos de Dados Não-relacionais
Introducao aos Bancos de Dados Não-relacionais
 
Algumas das principais características do NoSQL
Algumas das principais características do NoSQLAlgumas das principais características do NoSQL
Algumas das principais características do NoSQL
 
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQLEstudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
 
NOSQL uma breve introdução
NOSQL uma breve introduçãoNOSQL uma breve introdução
NOSQL uma breve introdução
 
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
DBA Brasil 2.0   NOSql Apache Cassandra para DBAsDBA Brasil 2.0   NOSql Apache Cassandra para DBAs
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
 
Introdução ao NoSql
Introdução ao NoSqlIntrodução ao NoSql
Introdução ao NoSql
 
Artigo Nosql
Artigo NosqlArtigo Nosql
Artigo Nosql
 
Bancos orientados a colunas (Cassandra)
Bancos orientados a colunas (Cassandra) Bancos orientados a colunas (Cassandra)
Bancos orientados a colunas (Cassandra)
 
[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
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
Apresentacao Cassandra
Apresentacao CassandraApresentacao Cassandra
Apresentacao Cassandra
 
NoSQL
NoSQLNoSQL
NoSQL
 
Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15
 

En vedette

HBase Vs Cassandra Vs MongoDB - Choosing the right NoSQL database
HBase Vs Cassandra Vs MongoDB - Choosing the right NoSQL databaseHBase Vs Cassandra Vs MongoDB - Choosing the right NoSQL database
HBase Vs Cassandra Vs MongoDB - Choosing the right NoSQL databaseEdureka!
 
Real-Time Analytics with Apache Cassandra and Apache Spark
Real-Time Analytics with Apache Cassandra and Apache SparkReal-Time Analytics with Apache Cassandra and Apache Spark
Real-Time Analytics with Apache Cassandra and Apache SparkGuido Schmutz
 
NoSQL - Por que e quando usar?
NoSQL - Por que e quando usar?NoSQL - Por que e quando usar?
NoSQL - Por que e quando usar?Nico Steppat
 
Benchmarking Top NoSQL Databases: Apache Cassandra, Apache HBase and MongoDB
Benchmarking Top NoSQL Databases: Apache Cassandra, Apache HBase and MongoDBBenchmarking Top NoSQL Databases: Apache Cassandra, Apache HBase and MongoDB
Benchmarking Top NoSQL Databases: Apache Cassandra, Apache HBase and MongoDBAthiq Ahamed
 
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosBanco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosJoão Helis Bernardo
 
Persistência nas Nuvens com NoSQL
Persistência nas Nuvens com NoSQLPersistência nas Nuvens com NoSQL
Persistência nas Nuvens com NoSQLRodrigo Hjort
 
Introduction to cassandra
Introduction to cassandraIntroduction to cassandra
Introduction to cassandraNguyen Quang
 
MongoDB: Prós, Contras e Showcases.
MongoDB: Prós, Contras e Showcases.MongoDB: Prós, Contras e Showcases.
MongoDB: Prós, Contras e Showcases.Leonardo Quevedo
 
Boas Práticas de Design em Aplicações Ruby on Rails
Boas Práticas de Design em Aplicações Ruby on RailsBoas Práticas de Design em Aplicações Ruby on Rails
Boas Práticas de Design em Aplicações Ruby on Railsrinaldifonsecanascimento
 
CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...
CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...
CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...DataStax
 
NoSQL Database- cassandra column Base DB
NoSQL Database- cassandra column Base DBNoSQL Database- cassandra column Base DB
NoSQL Database- cassandra column Base DBsadegh salehi
 
WSGI: a resposta para a questão definitiva sobre Python, a web e tudo mais?
WSGI: a resposta para a questão definitiva sobre Python, a web e tudo mais?WSGI: a resposta para a questão definitiva sobre Python, a web e tudo mais?
WSGI: a resposta para a questão definitiva sobre Python, a web e tudo mais?Humberto Diógenes
 
Programacao Funcional Em Ruby
Programacao Funcional Em RubyProgramacao Funcional Em Ruby
Programacao Funcional Em RubyElomar Souza
 
Orientação a objetos na prática
Orientação a objetos na práticaOrientação a objetos na prática
Orientação a objetos na práticaTI Infnet
 
Desenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e PloneDesenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e PloneJacson Tiola
 

En vedette (20)

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

Similaire à NoSQL: onde, como e por quê

Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
Apresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFFApresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFFBianca Caruso da Paixão
 
Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014Matheus de Oliveira
 
Uma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e ElasticsearchUma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e ElasticsearchLuiz Henrique Zambom Santana
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Christiano Anderson
 
NOSQL_Uma_breve_introducao.pptx
NOSQL_Uma_breve_introducao.pptxNOSQL_Uma_breve_introducao.pptx
NOSQL_Uma_breve_introducao.pptxEizoKato
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a TestesGregorio Melo
 
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBDesenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBiMasters
 
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBCZabbix BR
 
MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014Christiano Anderson
 
Análise comparativa entre SGBDs NoSQL no contexto de IoT
Análise comparativa entre SGBDs NoSQL no contexto de IoTAnálise comparativa entre SGBDs NoSQL no contexto de IoT
Análise comparativa entre SGBDs NoSQL no contexto de IoTAllexandre Sampaio
 
Introdução ao nosql (mini curso)
Introdução ao nosql (mini curso)Introdução ao nosql (mini curso)
Introdução ao nosql (mini curso)Junior Fernandes
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - ApresentaçãoTerra / Neo
 

Similaire à NoSQL: onde, como e por quê (20)

Palestra nosql
Palestra nosqlPalestra nosql
Palestra nosql
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
MAC5855 - NoSQL
MAC5855 - NoSQLMAC5855 - NoSQL
MAC5855 - NoSQL
 
Apresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFFApresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFF
 
Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014
 
Uma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e ElasticsearchUma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
 
Python e MongoDB - Ensol
Python e MongoDB - EnsolPython e MongoDB - Ensol
Python e MongoDB - Ensol
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7
 
NOSQL_Uma_breve_introducao.pptx
NOSQL_Uma_breve_introducao.pptxNOSQL_Uma_breve_introducao.pptx
NOSQL_Uma_breve_introducao.pptx
 
Node.js: serious business
Node.js: serious businessNode.js: serious business
Node.js: serious business
 
Nosql4java
Nosql4javaNosql4java
Nosql4java
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
 
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBDesenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
 
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC
 
MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014
 
Análise comparativa entre SGBDs NoSQL no contexto de IoT
Análise comparativa entre SGBDs NoSQL no contexto de IoTAnálise comparativa entre SGBDs NoSQL no contexto de IoT
Análise comparativa entre SGBDs NoSQL no contexto de IoT
 
Introdução ao nosql (mini curso)
Introdução ao nosql (mini curso)Introdução ao nosql (mini curso)
Introdução ao nosql (mini curso)
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - Apresentação
 

NoSQL: onde, como e por quê

  • 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)?
  • 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. Zoologia dos bancos NoSQL Wide Column Store / Column Families Key-Value Store Document Store NoSQL Database
  • 13.
  • 14.
  • 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.
  • 18.
  • 19.
  • 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.
  • 28.
  • 29.
  • 30. One
  • 31. Quorum: N / 2 + 1
  • 32.
  • 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.
  • 37.
  • 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

Notes de l'éditeur

  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, &amp;quot;The Diverse and Exploding Digital Universe&amp;quot;, 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. 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)
  12. ...
  13. 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.
  14. CA – Corruption possible if live nodes can’t communicate (network partition)
  15. CP – Completely inaccessible if any nodes are dead
  16. AP – Always available, but may not always read most recent NoSQL chooses AP, but makes consistency configurable
  17. Cassandra highlights ● High availability ● Incremental scalability ● Eventually consistent ● Super fast writes ● Tunable tradeoffs between consistency and latency ● Minimal administration ● No SPF
  18. 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
  19. 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
  20. ...
  21. ...
  22. Similar à linguagem SQL, mas com particularidades do Cassandra: consistency levels, TTL, slices
  23. Importância de esquemas flexíveis
  24. Every node is equal! Always at least one copy in each datacenter Alternate datacenters on the ring DHT (Distributed Hash Table) Ring
  25. 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
  26. 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
  27. * 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
  28. 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.
  29. 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)
  30. 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.
  31. JSON-style documents with dynamic schemas offer simplicity and power.
  32. Rich, document-based queries.
  33. 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.
  34. 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.
  35. 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
  36. Grande ruptura – IMS x RDBMS (invenção do modelo relacional)
  37. A segunda ruptura: RDBMS x NoSQL
  38. Conclusão NoSQL can’t do everything Right tool for the right job