SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
NoSQL e as vantagens na
utilização do MongoDB
Fabio Perrella - Locaweb
Fabio Luiz Perrella
Engenheiro de Computação - Poli USP 2004
Lider Técnico de Desenvolvimento SaaS - Locaweb
Agenda
- Definição NoSql
- Diferenças entre Sql e NoSql
- Exemplo de uso
- Vantagens do MongoDB
- Desvantagens
NoSql - Definição
- Not only Sql
- Próxima geração de Banco de Dados

fonte: http://nosql-database.org
NoSql
Características:
- não relacional
- distribuído
- open-source
- escalável horizontalmente
fonte: http://nosql-database.org
NoSql
Mais algumas características:
- schema-free
- replicação simples
- API simples
- suporta grande quantidade de dados
- eventualmente consistente
fonte: http://nosql-database.org
NoSql
Eventualmente consistente. Teorema CAP:
- Consistência
- Disponibilidade
- Tolerância a Partição
Só conseguimos escolher 2 destes!
http://www.julianbrowne.com/article/viewer/brewers-cap-theorem
NoSql

fonte: http://smist08.wordpress.com/tag/cap-theorem
Principais diferenças
SQL
Exemplos:
- Mysql
- Oracle
- Postgres
- SqlServer
NoSql
Exemplos:
- Orientados a documentos:
- MongoDB, CouchDB, Cassandra
- Chave valor:
- Redis, Memcache, etc…
- Outros tipos..
SQL
Tabelas, linhas e colunas:
NoSQL (MongoDB)
Documentos:
( BSON binary Json )
Sql
Relacionamentos:

Fonte: http://www.codeproject.com/Articles/396822/Basic-Handling-and-Tips-of-Database-Relationships
NoSql
Embedded documents
NoSql
.. e também
“relacionamentos”
Sql
Queries:
SELECT * table_x WHERE y=1 ORDER BY...
NoSql
- Object Based (MongoDB)
- RESTful APIs (ElasticSearch)
- Map-reduce / JS functions (CouchDB)
….
- NoSQL!
Sql
Transações ACID
(Atomic Consistent Isolated Durable)
⇒ Consistência!
⇒ Table locks
⇒ Peformance prejudicada
⇒ Exemplo de uso: ERP
NoSql
Transações BASE
(Basically Available, Soft State, Eventually
Consistent)
⇒ Disponibilidade!
⇒ Performance!
⇒ Consistência eventual
⇒ Exemplo de uso: Google search
Exemplo de uso
Blog:
- Posts
- Comentários
- Usuários
Exemplo de uso
Modelo
relacional
SELECT * FROM posts p INNER JOIN
comments c ON p.id = c.post_id INER JOIN
users u on c.user_id = u.id
Exemplo de uso
Modelo orientado
a documento
db.posts.find({ _id: 12 })
Vantagens do MongoDB
Vantagens do MongoDB
- Fácil instalação
apt-get install mongodb-10gen
Vantagens do MongoDB
- Open Source
- Atualizações constantes
- Suporte enterprise (caso necessário)
- Comunidade ativa
Vantagens do MongoDB
- Drivers e ODM (object document mapper)
para várias linguagens
Exemplo: Mongoid e Mongomapper para Ruby
Vantagens do MongoDB
- Sharding automático e de fácil configuração

fonte: http://3.bp.blogspot.com/-aa2XhG7okKo/TzzjKOtPd_I/AAAAAAAAI0g/okMlHXFqitc/s1600/mongo_shard.png
Vantagens do MongoDB
- Replicação simples (Replica set)
Vantagens do MongoDB
- Orientado a documentos
- Schema Free
⇒ Facilidades para os desenvolvedores!
Vantagens do MongoDB
- Performance
- Escrita assíncrona configurável (write
concern levels)
- Leitura de dados dos secundários
(configurável)
Vantagens do MongoDB
- Operações de update atômicas
- inc
- set
- push
- pop
Vantagens do MongoDB
- Agregation framework
- Map-Reduce
- group by
- sum()
- etc...
Vantagens do MongoDB
- MMS (MongoDB Management Service)
Vantagens do MongoDB
- Treinamento online grátis oferecido pela
10gen!
http://education.mongodb.com
Desvantagens do MongoDB
:(
Desvantagens do MongoDB
- Alto uso de espaço
em disco
- Para cada linha precisa
guardar o nome das
“colunas”
- Tamanho do nome das
“coluna” influencia
Desvantagens do MongoDB
- Alto uso de memória RAM
- Índices devem caber na memória RAM
- Working-set preferencialmente deve caber
na memória RAM
⇒ Alternativa: SSD (ou $$D)
Desvantagens do MongoDB
- Custo alto com “parque” de servidores
- Cada shard requer no mínimo 3 servidores
para replica set (as máquinas devem ter o
mesmo perfil de preferência)
- Alternativa: Replica set Arbiter
- No mínimo 3 config servers
Desvantagens do MongoDB
- Custo alto com “parque” de servidores
Desvantagens do MongoDB
- Global write lock (agora por database)
- Solução da 10gen: sharding!... e em alguns
casos, habilitar leitura dos secundários
Desvantagens do MongoDB
- Falta de transações
⇒ Inconsistências!
Desvantagens do MongoDB
- Manutenção e operação difícil
- Compactação dos dados
- Re-index dos índices
- Replica sets que caem
- Queries pesadas que travam o banco
Desvantagens do MongoDB
- Manutenção e operação difícil
- Não tem backup diferencial. Em alguns
casos o Replica Set acaba sendo mais fácil
- Adicionar shardings pode degradar
performance temporiariamente
Desvantagens do MongoDB
- Não tem queries!
As vezes uma simples consulta requer um
código para executá-la
Desvantagens do MongoDB
- Pouca documentação*
Desvantagens do MongoDB
- Necessita de DBAs / Sysadmins especialistas
em MongoDB, o que é raro no mercado.
⇒ 10gen oferece cursos para developers e
sysadmins
Duvidas?
fabio.perrella@gmail.com
http://fabioperrella.blogspot.com.br
http://www.slideshare.net/fabioperrella56

Contenu connexe

Tendances

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
 
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Fernando Boaglio
 
Apresentação - MongoDB
Apresentação - MongoDBApresentação - MongoDB
Apresentação - MongoDBJDSBD
 
Bancos de dados nosql (not only sql)
Bancos de dados nosql (not only sql)Bancos de dados nosql (not only sql)
Bancos de dados nosql (not only sql)Rodrigo Valerio
 
noSQL com CouchDb e PHP
noSQL com CouchDb e PHPnoSQL com CouchDb e PHP
noSQL com CouchDb e PHPTheoziran Lima
 
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
 
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na WebMeritt - Cada Aluno é Único
 
Introdução no sql mongodb java
Introdução no sql mongodb javaIntrodução no sql mongodb java
Introdução no sql mongodb javaFabiano Modos
 
Lições Aprendidas MongoDB
Lições Aprendidas MongoDBLições Aprendidas MongoDB
Lições Aprendidas MongoDBFabiano Modos
 
Conhecendo Apache Cassandra @Movile
Conhecendo Apache Cassandra  @MovileConhecendo Apache Cassandra  @Movile
Conhecendo Apache Cassandra @MovileEiti Kimura
 
Apache CouchDB
Apache CouchDBApache CouchDB
Apache CouchDBHugo Souza
 

Tendances (20)

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
 
Bancos de dados NoSQL
Bancos de dados NoSQLBancos de dados NoSQL
Bancos de dados NoSQL
 
Seminário - NoSQL
Seminário - NoSQLSeminário - NoSQL
Seminário - NoSQL
 
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
 
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
 
Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário NoSQL
 
Banco de Dados - NoSQL
Banco de Dados - NoSQLBanco de Dados - NoSQL
Banco de Dados - NoSQL
 
#3 Instalação MongoDB
#3   Instalação MongoDB  #3   Instalação MongoDB
#3 Instalação MongoDB
 
Apresentação - MongoDB
Apresentação - MongoDBApresentação - MongoDB
Apresentação - MongoDB
 
Mongo db
Mongo dbMongo db
Mongo db
 
Bancos de dados nosql (not only sql)
Bancos de dados nosql (not only sql)Bancos de dados nosql (not only sql)
Bancos de dados nosql (not only sql)
 
Cassandra NoSQL JUG Vale 2012
Cassandra NoSQL JUG Vale 2012Cassandra NoSQL JUG Vale 2012
Cassandra NoSQL JUG Vale 2012
 
noSQL com CouchDb e PHP
noSQL com CouchDb e PHPnoSQL com CouchDb e PHP
noSQL com CouchDb e PHP
 
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
 
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
 
CouchDB Presentation
CouchDB PresentationCouchDB Presentation
CouchDB Presentation
 
Introdução no sql mongodb java
Introdução no sql mongodb javaIntrodução no sql mongodb java
Introdução no sql mongodb java
 
Lições Aprendidas MongoDB
Lições Aprendidas MongoDBLições Aprendidas MongoDB
Lições Aprendidas MongoDB
 
Conhecendo Apache Cassandra @Movile
Conhecendo Apache Cassandra  @MovileConhecendo Apache Cassandra  @Movile
Conhecendo Apache Cassandra @Movile
 
Apache CouchDB
Apache CouchDBApache CouchDB
Apache CouchDB
 

Similaire à No sql e as vantagens na utilização do mongodb

MongoDB com Java - SouJava
MongoDB com Java - SouJavaMongoDB com Java - SouJava
MongoDB com Java - SouJavaFernando Boaglio
 
MongoDB com Java - GUOB 2018
MongoDB com Java  - GUOB  2018MongoDB com Java  - GUOB  2018
MongoDB com Java - GUOB 2018Fernando Boaglio
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...iMasters
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoelliando dias
 
Mongo DB
Mongo DBMongo DB
Mongo DBdist_bp
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsRafael Soares
 
Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia J Chaves Silva
 
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
 
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São PauloNoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São PauloRenato Groff
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2Flávio Lisboa
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - IntroduçãoMarco Pinheiro
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfArleiEvaristo
 
L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalierGleicon Moraes
 
Nao perca tempo com bancos de dados relacionais, use mongo db
Nao perca tempo com bancos de dados relacionais,   use mongo dbNao perca tempo com bancos de dados relacionais,   use mongo db
Nao perca tempo com bancos de dados relacionais, use mongo dbFernando Boaglio
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopDiego Sana
 
Replicacao Object Sistemas
Replicacao Object SistemasReplicacao Object Sistemas
Replicacao Object Sistemastaniamaciel
 

Similaire à No sql e as vantagens na utilização do mongodb (20)

#1 Introdução ao MongoDB
#1   Introdução ao MongoDB#1   Introdução ao MongoDB
#1 Introdução ao MongoDB
 
MongoDB com Java - SouJava
MongoDB com Java - SouJavaMongoDB com Java - SouJava
MongoDB com Java - SouJava
 
MongoDB com Java - GUOB 2018
MongoDB com Java  - GUOB  2018MongoDB com Java  - GUOB  2018
MongoDB com Java - GUOB 2018
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre Nodejs
 
Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia
 
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
 
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São PauloNoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
NoSQL Livre
NoSQL LivreNoSQL Livre
NoSQL Livre
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - Introdução
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdf
 
L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalier
 
Nao perca tempo com bancos de dados relacionais, use mongo db
Nao perca tempo com bancos de dados relacionais,   use mongo dbNao perca tempo com bancos de dados relacionais,   use mongo db
Nao perca tempo com bancos de dados relacionais, use mongo db
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day Workshop
 
Replicacao Object Sistemas
Replicacao Object SistemasReplicacao Object Sistemas
Replicacao Object Sistemas
 

Plus de fabio perrella

Boas práticas e sobrevivência com vcr no rspec
Boas práticas e sobrevivência com vcr no rspecBoas práticas e sobrevivência com vcr no rspec
Boas práticas e sobrevivência com vcr no rspecfabio perrella
 
Deixando o código mais amigável para as próximas gerações
Deixando o código mais amigável para as próximas geraçõesDeixando o código mais amigável para as próximas gerações
Deixando o código mais amigável para as próximas geraçõesfabio perrella
 
Deixando o codigo_mais_amigavel_para_as_proximas_geracoes
Deixando o codigo_mais_amigavel_para_as_proximas_geracoesDeixando o codigo_mais_amigavel_para_as_proximas_geracoes
Deixando o codigo_mais_amigavel_para_as_proximas_geracoesfabio perrella
 
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...fabio perrella
 
[Campus code] Boas práticas em Rails
[Campus code] Boas práticas em Rails[Campus code] Boas práticas em Rails
[Campus code] Boas práticas em Railsfabio perrella
 
Coisas que aprendemos usando Mongoid com grande quantidade de dados
Coisas que aprendemos usando Mongoid com grande quantidade de dadosCoisas que aprendemos usando Mongoid com grande quantidade de dados
Coisas que aprendemos usando Mongoid com grande quantidade de dadosfabio perrella
 

Plus de fabio perrella (8)

Boas práticas e sobrevivência com vcr no rspec
Boas práticas e sobrevivência com vcr no rspecBoas práticas e sobrevivência com vcr no rspec
Boas práticas e sobrevivência com vcr no rspec
 
Deixando o código mais amigável para as próximas gerações
Deixando o código mais amigável para as próximas geraçõesDeixando o código mais amigável para as próximas gerações
Deixando o código mais amigável para as próximas gerações
 
Deixando o codigo_mais_amigavel_para_as_proximas_geracoes
Deixando o codigo_mais_amigavel_para_as_proximas_geracoesDeixando o codigo_mais_amigavel_para_as_proximas_geracoes
Deixando o codigo_mais_amigavel_para_as_proximas_geracoes
 
Efficient rails
Efficient railsEfficient rails
Efficient rails
 
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
 
[Campus code] Boas práticas em Rails
[Campus code] Boas práticas em Rails[Campus code] Boas práticas em Rails
[Campus code] Boas práticas em Rails
 
Ruby profiling
Ruby profilingRuby profiling
Ruby profiling
 
Coisas que aprendemos usando Mongoid com grande quantidade de dados
Coisas que aprendemos usando Mongoid com grande quantidade de dadosCoisas que aprendemos usando Mongoid com grande quantidade de dados
Coisas que aprendemos usando Mongoid com grande quantidade de dados
 

No sql e as vantagens na utilização do mongodb