SlideShare uma empresa Scribd logo
1 de 35
NoSQL e MongoDB
David de Lucca
Confidencial © UNEAR 2015
Confidencial © UNEAR 2015
Agenda
• Um pouco sobre NoSQL
• MongoDB
• Scala + MongoDB
Confidencial © UNEAR 2015
O que é NoSQL?
• Termo criado em 1998 e voltou a ser usado em
2009;
• Uma nova forma de armanezar dados;
• Bancos NoSQL não são baseados em tabelas;
• Pode não ser capaz de oferecer operações ACID
(Atomic, Consistent, Isolated, Durable);
• Voltado para soluções distribuídas e tolerantes a
falhas;
• BASE (Basic Availability, Soft-state, Eventual
consistency);
Confidencial © UNEAR 2015
Por que utilizar NoSQL?
● Schemas dinâmicos;
● Grandes volumes de dados;
● Escala!!
Confidencial © UNEAR 2015
Existem duas maneiras de escalar
Crédito: http://abiasforaction.net/wp-content/uploads/2015/01/Network-Diagram-2.jpg
Confidencial © UNEAR 2015
Tipos de bases NoSQL
● Key-Value
● Column-Oriented
● Graph DB
● Document
Confidencial © UNEAR 2015
Tipos de bases NoSQL: Key-Value
● Foco em escalar muitas, mas muitas informações;
● Preparado para lidar com cargas grandes;
● Baseado no Amazon Dynamo;
● Modelo de dados: chave-valor
● Exemplos:
○ Voldemort;
○ Aerospike
Crédito: http://www.vmdude.fr/wp-content/uploads/2013/06/scaled_keyvalue.jpg
Confidencial © UNEAR 2015
Tipos de bases NoSQL: Column-Oriented
● Similar as tabelas do RDBMs;
● Baseado no Google’s BigTable;
● Modelo de dados: Coluna > Dados da coluna
● Exemplos:
○ Cassandra;
○ BigTable;
○ HBase;
Crédito: http://arxtecture.com/wp-content/uploads/2014/01/row-store-v-column-
store.gif
Confidencial © UNEAR 2015
Tipos de bases NoSQL: Graph DB
● Foco na interconectividade das informações;
● Inspirada pela Teoria dos Grafos (G=(E,V))
● Modelo de dados: Nós > Relação entre eles;
● Exemplos:
○ Neo4J;
Crédito: http://dev.assets.neo4j.com.s3.amazonaws.com/wp-content/uploads/2009/09/socnet-start.png
Confidencial © UNEAR 2015
Tipos de bases NoSQL: Document
● Similar ao modelo Key-Value;
● Inspirado pelo Lotus Notes;
● Modelo de dados: Coleção de Chave-Valor;
● Exemplos:
○ MongoDB;
○ CouchDB;
○ Redis;
Crédito: http://docs.couchbase.com/couchbase-devguide-2.0/images/relational_vs_doc1.png
Confidencial © UNEAR 2015
Teorema CAP
● Consistency
○ Todos os servidores apresentam o mesmo
resultado. Fortemente presente em bases que
implementam ACID.
● Availability
○ Garantia que todas as requisições irão receber
alguma resposta.
● Partition tolerance
○ As propriedades são mantidas mesmo quando
ocorre alguma oscilação na rede.
Confidencial © UNEAR 2015
Teorema CAP
Crédito: http://blog.beany.co.kr/wp-content/uploads/2011/03/nosql_cap.png
Confidencial © UNEAR 2015
NoSQL resolve todos meus problemas?
Confidencial © UNEAR 2015
NoSQL resolve todos meus problemas?
Não!!!!!
Confidencial © UNEAR 2015
NoSQL resolve todos meus problemas?
Não!!!!!
Polyglot Persistence
Confidencial © UNEAR 2015
MongoDB - Overview
● Orientado a documentos;
● Facilmente escalável verticalmente e
horizontalmente;
● Boas ferramentas de gerenciamento (MongoDB
Managment Service e Ops Manager);
● Comunidade que cresce muito rápido;
● Query Language simples;
Confidencial © UNEAR 2015
MongoDB - Overview
Crédito: http://mongodb.org
Confidencial © UNEAR 2015
MongoDB - Overview
Crédito: http://db-engines.com
Confidencial © UNEAR 2015
MongoDB - Overview
Crédito: http://db-engines.com
Confidencial © UNEAR 2015
MongoDB x CouchDB
MongoDB CouchDB
Query Queries simples são simples de
executar (db.documentos.find(
{“name”:”david”})
Queries simples exigem que
seja escrito uma query de
Map/Reduce
Armazenamento BSON (Binary JSON) JSON
Coleções Divisão em várias collections “Coleção gigante”
Replicação Master/Slave, automático
failover.
Master/Master
Confidencial © UNEAR 2015
MongoDB - Quem Utiliza?
Confidencial © UNEAR 2015
MongoDB - CRUD
● db.colecao.comando(params). Ex.:
○ db.funcionarios.insert(
{“nome” : “david”, “area” : “produtos”})
○ db.funcionarios.find( {“nome” : “david”})
○ db.funcionarios.update({“nome” : “david”}, {$set
: {“idade” : “30”}})
○ db.funcionarios.remove(<query>)
● Diversos operadores para serem usados no find(),
update()
Confidencial © UNEAR 2015
MongoDB - Schema Design
● Não é igual modelar para bancos relacionais;
● Afeta diretamente a performance da aplicação;
● Operações de escritas são atômicas;
● Schemaless;
● Embedded:
○ “Contém”;
● References (Normalized):
○ Complexos N-N;
Confidencial © UNEAR 2015
MongoDB - Performance
● Índices!!!
○ Múltiplos campos? Índices compostos!!!
● Usa o sort() constantemente? Crie um índice!!!
● Retornar apenas o que for utilizar;
● Limitar a quantidade de linhas retornadas -
limit()/skip();
● Utilize o método .explain() para obter estatísticas de
uma coleção.
Confidencial © UNEAR 2015
MongoDB - Replicação
● Replica-set;
● Redundância e aumento da disponibilidade dos
dados;
Crédito: http://docs.mongodb.org/manual/_images/replica-set-primary-with-two-secondaries.png
Confidencial © UNEAR 2015
MongoDB - Sharding
● Particionamento dos dados:
○ Escala;
○ Balancear a carga de trabalho;
● Auto-gerenciável;
Crédito: http://blog.optimal.io/assets/img/how-to-do-mongodb-
sharding.png
Confidencial © UNEAR 2015
MongoDB - Aggregation Framework
● Processamento de operações no Mongo:
○ Aggregation Pipeline
■ Processamento em estágios;
■ Alternativa onde a complexidade do map
reduce não é justificada;
○ Map Reduce:
■ Comando mapReduce;
■ Transformação de grande volumes de
dados em informações úteis;
Confidencial © UNEAR 2015
MongoDB - Aggregation: Aggregation
Pipeline
Crédito: http://docs.mongodb.org/manual/_images/aggregation-pipeline.png
Confidencial © UNEAR 2015
MongoDB - Aggregation: Map Reduce
Crédito: http://docs.mongodb.org/manual/_images/map-
reduce.png
Confidencial © UNEAR 2015
MongoDB - Manutenção e Análise
● Tudo está lento? Observe o I/O do disco!
● O disco está ok:
○ Ative o profiling do banco!
● db.currentOp() para ver operações que não foram
finalizadas;
● mongostat para ver informações do processo
mongod;
○ Forneça RAM e CPU suficientes;
○ Use SSD!!!!!
● Outras informações na documentação!
○ http://docs.mongodb.org/manual/administration
Confidencial © UNEAR 2015
MongoDB - Ecossistema
● 11 drivers oficiais disponíveis para C, C++, C#,
Java, NodeJS, Perl, PHP, Python, Motor, Ruby e
Scala;
● Go e Erlang suportados pela comunidade;
● Integração nativa com Hadoop;
● humongous.io, UMongo, MongoVue, …;
● Comunidade open-souce;
Confidencial © UNEAR 2015
Referências
● http://mongodb.org
● http://mongodb.com
● http://www.thoughtworks.com/pt/insights/blog/nos
ql-databases-overview
● http://martinfowler.com/bliki/PolyglotPersistence.ht
ml
● http://www.aerospike.com/what-is-a-nosql-key-
value-store/
● http://rebelic.nl/2011/05/28/the-four-categories-of-
nosql-databases/
● http://kkovacs.eu/cassandra-vs-mongodb-vs-
couchdb-vs-redis
Confidencial © UNEAR 2015
Links úteis
● http://martinfowler.com
● http://mongouniversity.com
● https://docs.mongodb.org/manual/
NoSQL e MongoDB

Mais conteúdo relacionado

Mais procurados

Redes Avançadas - 3.Noções de Projeto de Redes
Redes Avançadas - 3.Noções de Projeto de RedesRedes Avançadas - 3.Noções de Projeto de Redes
Redes Avançadas - 3.Noções de Projeto de RedesMauro Tapajós
 
Criação de tabelas com HTML
Criação de tabelas com HTMLCriação de tabelas com HTML
Criação de tabelas com HTMLLeonardo Soares
 
O que é Business Intelligence (BI)
O que é Business Intelligence (BI)O que é Business Intelligence (BI)
O que é Business Intelligence (BI)Marco Garcia
 
As boas práticas da Gestão de Dados Moderna
As boas práticas da Gestão de Dados ModernaAs boas práticas da Gestão de Dados Moderna
As boas práticas da Gestão de Dados ModernaBergson Lopes Rêgo, PMP
 
Atividade fundamentos-de-redes
Atividade fundamentos-de-redesAtividade fundamentos-de-redes
Atividade fundamentos-de-redesArlimar Jacinto
 
Banco de Dados II: MER (aula 1)
Banco de Dados II: MER (aula 1)Banco de Dados II: MER (aula 1)
Banco de Dados II: MER (aula 1)Gustavo Zimmermann
 
Bddm recuperação de falhas em banco distribuido
Bddm   recuperação de falhas em banco distribuidoBddm   recuperação de falhas em banco distribuido
Bddm recuperação de falhas em banco distribuidoAntonio Ezequiel Mendonça
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosLeinylson Fontinele
 
Introdução à computação - Aula Prática 4 - Redes de Computadores (Cabeamento ...
Introdução à computação - Aula Prática 4 - Redes de Computadores (Cabeamento ...Introdução à computação - Aula Prática 4 - Redes de Computadores (Cabeamento ...
Introdução à computação - Aula Prática 4 - Redes de Computadores (Cabeamento ...Leinylson Fontinele
 
Mini Curso de Microsoft Power BI
Mini Curso de Microsoft Power BIMini Curso de Microsoft Power BI
Mini Curso de Microsoft Power BIMultimidia e Arte
 
Introdução ao Sharepoint
Introdução ao SharepointIntrodução ao Sharepoint
Introdução ao SharepointHuxley Dias
 
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...Leinylson Fontinele
 
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...Leinylson Fontinele
 

Mais procurados (20)

Redes Avançadas - 3.Noções de Projeto de Redes
Redes Avançadas - 3.Noções de Projeto de RedesRedes Avançadas - 3.Noções de Projeto de Redes
Redes Avançadas - 3.Noções de Projeto de Redes
 
Criação de tabelas com HTML
Criação de tabelas com HTMLCriação de tabelas com HTML
Criação de tabelas com HTML
 
O que é Business Intelligence (BI)
O que é Business Intelligence (BI)O que é Business Intelligence (BI)
O que é Business Intelligence (BI)
 
As boas práticas da Gestão de Dados Moderna
As boas práticas da Gestão de Dados ModernaAs boas práticas da Gestão de Dados Moderna
As boas práticas da Gestão de Dados Moderna
 
Atividade fundamentos-de-redes
Atividade fundamentos-de-redesAtividade fundamentos-de-redes
Atividade fundamentos-de-redes
 
Integridade De Dados
Integridade De DadosIntegridade De Dados
Integridade De Dados
 
Aula 3 - Introdução a cloud computing
Aula 3 - Introdução a cloud computingAula 3 - Introdução a cloud computing
Aula 3 - Introdução a cloud computing
 
Banco de Dados II: MER (aula 1)
Banco de Dados II: MER (aula 1)Banco de Dados II: MER (aula 1)
Banco de Dados II: MER (aula 1)
 
Banco de Dados - Conceitos Básicos
Banco de Dados - Conceitos BásicosBanco de Dados - Conceitos Básicos
Banco de Dados - Conceitos Básicos
 
Business Intelligence
Business IntelligenceBusiness Intelligence
Business Intelligence
 
Bddm recuperação de falhas em banco distribuido
Bddm   recuperação de falhas em banco distribuidoBddm   recuperação de falhas em banco distribuido
Bddm recuperação de falhas em banco distribuido
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
 
Introdução à computação - Aula Prática 4 - Redes de Computadores (Cabeamento ...
Introdução à computação - Aula Prática 4 - Redes de Computadores (Cabeamento ...Introdução à computação - Aula Prática 4 - Redes de Computadores (Cabeamento ...
Introdução à computação - Aula Prática 4 - Redes de Computadores (Cabeamento ...
 
Mini Curso de Microsoft Power BI
Mini Curso de Microsoft Power BIMini Curso de Microsoft Power BI
Mini Curso de Microsoft Power BI
 
Big Data - Conceitos Básicos
Big Data - Conceitos BásicosBig Data - Conceitos Básicos
Big Data - Conceitos Básicos
 
Introdução ao Sharepoint
Introdução ao SharepointIntrodução ao Sharepoint
Introdução ao Sharepoint
 
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
 
Modelagem de Dados
Modelagem de DadosModelagem de Dados
Modelagem de Dados
 
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 

Destaque

Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...
Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...
Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...Ambiente Livre
 
Aula05 - Android - Persistência
Aula05 - Android - PersistênciaAula05 - Android - Persistência
Aula05 - Android - PersistênciaArthur Emanuel
 
Rundeck + Nexus (from Nexus Live on June 5, 2014)
Rundeck + Nexus (from Nexus Live on June 5, 2014)Rundeck + Nexus (from Nexus Live on June 5, 2014)
Rundeck + Nexus (from Nexus Live on June 5, 2014)dev2ops
 

Destaque (6)

Techzone 2014 presentation rundeck
Techzone 2014 presentation rundeckTechzone 2014 presentation rundeck
Techzone 2014 presentation rundeck
 
Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...
Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...
Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...
 
SQLite
SQLiteSQLite
SQLite
 
RunDeck
RunDeckRunDeck
RunDeck
 
Aula05 - Android - Persistência
Aula05 - Android - PersistênciaAula05 - Android - Persistência
Aula05 - Android - Persistência
 
Rundeck + Nexus (from Nexus Live on June 5, 2014)
Rundeck + Nexus (from Nexus Live on June 5, 2014)Rundeck + Nexus (from Nexus Live on June 5, 2014)
Rundeck + Nexus (from Nexus Live on June 5, 2014)
 

Semelhante a Apresentação MongoDB

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
 
Bancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBBancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBPaulo Bischof
 
Apostila NoSql.pdf
Apostila NoSql.pdfApostila NoSql.pdf
Apostila NoSql.pdfEizo Edson
 
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
 
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
 
Introdução ao NoSQL e modelagem de dados com MongoDB
Introdução ao NoSQL e modelagem de dados com MongoDBIntrodução ao NoSQL e modelagem de dados com MongoDB
Introdução ao NoSQL e modelagem de dados com MongoDBJhonathan de Souza Soares
 
I nd t_bigdata(1)
I nd t_bigdata(1)I nd t_bigdata(1)
I nd t_bigdata(1)wchevreuil
 
Bancos de Dados em “Clouds”
Bancos de Dados em “Clouds”Bancos de Dados em “Clouds”
Bancos de Dados em “Clouds”elliando dias
 
Infraestrutura como código
Infraestrutura como códigoInfraestrutura como código
Infraestrutura como códigoEduardo Rozario
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDenis Vieira
 
Cloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performanceCloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performanceSaveincloud
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformAndré Paulovich
 
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGoogle AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGustavo Concon
 
Fisl10 MySql na Globo.com por Camila Dias
Fisl10 MySql na Globo.com por Camila DiasFisl10 MySql na Globo.com por Camila Dias
Fisl10 MySql na Globo.com por Camila DiasCamila Dias
 
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net core
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net coreConhecimentos para tomar atitude e migrar sua aplicação para asp.net core
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net coreRodrigo Kono
 
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
 

Semelhante a Apresentação MongoDB (20)

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 -...
 
Bancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBBancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDB
 
Apostila NoSql.pdf
Apostila NoSql.pdfApostila NoSql.pdf
Apostila NoSql.pdf
 
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
 
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
 
Introdução ao NoSQL e modelagem de dados com MongoDB
Introdução ao NoSQL e modelagem de dados com MongoDBIntrodução ao NoSQL e modelagem de dados com MongoDB
Introdução ao NoSQL e modelagem de dados com MongoDB
 
I nd t_bigdata(1)
I nd t_bigdata(1)I nd t_bigdata(1)
I nd t_bigdata(1)
 
B Ds Clouds
B Ds CloudsB Ds Clouds
B Ds Clouds
 
Bancos de Dados em “Clouds”
Bancos de Dados em “Clouds”Bancos de Dados em “Clouds”
Bancos de Dados em “Clouds”
 
Infraestrutura como código
Infraestrutura como códigoInfraestrutura como código
Infraestrutura como código
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full Javascript
 
Cloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performanceCloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performance
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud Platform
 
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGoogle AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
 
Fisl10 MySql na Globo.com por Camila Dias
Fisl10 MySql na Globo.com por Camila DiasFisl10 MySql na Globo.com por Camila Dias
Fisl10 MySql na Globo.com por Camila Dias
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net core
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net coreConhecimentos para tomar atitude e migrar sua aplicação para asp.net core
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net core
 
Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
 
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
 
Spring data
Spring dataSpring data
Spring data
 

Apresentação MongoDB

  • 3. Confidencial © UNEAR 2015 Agenda • Um pouco sobre NoSQL • MongoDB • Scala + MongoDB
  • 4. Confidencial © UNEAR 2015 O que é NoSQL? • Termo criado em 1998 e voltou a ser usado em 2009; • Uma nova forma de armanezar dados; • Bancos NoSQL não são baseados em tabelas; • Pode não ser capaz de oferecer operações ACID (Atomic, Consistent, Isolated, Durable); • Voltado para soluções distribuídas e tolerantes a falhas; • BASE (Basic Availability, Soft-state, Eventual consistency);
  • 5. Confidencial © UNEAR 2015 Por que utilizar NoSQL? ● Schemas dinâmicos; ● Grandes volumes de dados; ● Escala!!
  • 6. Confidencial © UNEAR 2015 Existem duas maneiras de escalar Crédito: http://abiasforaction.net/wp-content/uploads/2015/01/Network-Diagram-2.jpg
  • 7. Confidencial © UNEAR 2015 Tipos de bases NoSQL ● Key-Value ● Column-Oriented ● Graph DB ● Document
  • 8. Confidencial © UNEAR 2015 Tipos de bases NoSQL: Key-Value ● Foco em escalar muitas, mas muitas informações; ● Preparado para lidar com cargas grandes; ● Baseado no Amazon Dynamo; ● Modelo de dados: chave-valor ● Exemplos: ○ Voldemort; ○ Aerospike Crédito: http://www.vmdude.fr/wp-content/uploads/2013/06/scaled_keyvalue.jpg
  • 9. Confidencial © UNEAR 2015 Tipos de bases NoSQL: Column-Oriented ● Similar as tabelas do RDBMs; ● Baseado no Google’s BigTable; ● Modelo de dados: Coluna > Dados da coluna ● Exemplos: ○ Cassandra; ○ BigTable; ○ HBase; Crédito: http://arxtecture.com/wp-content/uploads/2014/01/row-store-v-column- store.gif
  • 10. Confidencial © UNEAR 2015 Tipos de bases NoSQL: Graph DB ● Foco na interconectividade das informações; ● Inspirada pela Teoria dos Grafos (G=(E,V)) ● Modelo de dados: Nós > Relação entre eles; ● Exemplos: ○ Neo4J; Crédito: http://dev.assets.neo4j.com.s3.amazonaws.com/wp-content/uploads/2009/09/socnet-start.png
  • 11. Confidencial © UNEAR 2015 Tipos de bases NoSQL: Document ● Similar ao modelo Key-Value; ● Inspirado pelo Lotus Notes; ● Modelo de dados: Coleção de Chave-Valor; ● Exemplos: ○ MongoDB; ○ CouchDB; ○ Redis; Crédito: http://docs.couchbase.com/couchbase-devguide-2.0/images/relational_vs_doc1.png
  • 12. Confidencial © UNEAR 2015 Teorema CAP ● Consistency ○ Todos os servidores apresentam o mesmo resultado. Fortemente presente em bases que implementam ACID. ● Availability ○ Garantia que todas as requisições irão receber alguma resposta. ● Partition tolerance ○ As propriedades são mantidas mesmo quando ocorre alguma oscilação na rede.
  • 13. Confidencial © UNEAR 2015 Teorema CAP Crédito: http://blog.beany.co.kr/wp-content/uploads/2011/03/nosql_cap.png
  • 14. Confidencial © UNEAR 2015 NoSQL resolve todos meus problemas?
  • 15. Confidencial © UNEAR 2015 NoSQL resolve todos meus problemas? Não!!!!!
  • 16. Confidencial © UNEAR 2015 NoSQL resolve todos meus problemas? Não!!!!! Polyglot Persistence
  • 17. Confidencial © UNEAR 2015 MongoDB - Overview ● Orientado a documentos; ● Facilmente escalável verticalmente e horizontalmente; ● Boas ferramentas de gerenciamento (MongoDB Managment Service e Ops Manager); ● Comunidade que cresce muito rápido; ● Query Language simples;
  • 18. Confidencial © UNEAR 2015 MongoDB - Overview Crédito: http://mongodb.org
  • 19. Confidencial © UNEAR 2015 MongoDB - Overview Crédito: http://db-engines.com
  • 20. Confidencial © UNEAR 2015 MongoDB - Overview Crédito: http://db-engines.com
  • 21. Confidencial © UNEAR 2015 MongoDB x CouchDB MongoDB CouchDB Query Queries simples são simples de executar (db.documentos.find( {“name”:”david”}) Queries simples exigem que seja escrito uma query de Map/Reduce Armazenamento BSON (Binary JSON) JSON Coleções Divisão em várias collections “Coleção gigante” Replicação Master/Slave, automático failover. Master/Master
  • 22. Confidencial © UNEAR 2015 MongoDB - Quem Utiliza?
  • 23. Confidencial © UNEAR 2015 MongoDB - CRUD ● db.colecao.comando(params). Ex.: ○ db.funcionarios.insert( {“nome” : “david”, “area” : “produtos”}) ○ db.funcionarios.find( {“nome” : “david”}) ○ db.funcionarios.update({“nome” : “david”}, {$set : {“idade” : “30”}}) ○ db.funcionarios.remove(<query>) ● Diversos operadores para serem usados no find(), update()
  • 24. Confidencial © UNEAR 2015 MongoDB - Schema Design ● Não é igual modelar para bancos relacionais; ● Afeta diretamente a performance da aplicação; ● Operações de escritas são atômicas; ● Schemaless; ● Embedded: ○ “Contém”; ● References (Normalized): ○ Complexos N-N;
  • 25. Confidencial © UNEAR 2015 MongoDB - Performance ● Índices!!! ○ Múltiplos campos? Índices compostos!!! ● Usa o sort() constantemente? Crie um índice!!! ● Retornar apenas o que for utilizar; ● Limitar a quantidade de linhas retornadas - limit()/skip(); ● Utilize o método .explain() para obter estatísticas de uma coleção.
  • 26. Confidencial © UNEAR 2015 MongoDB - Replicação ● Replica-set; ● Redundância e aumento da disponibilidade dos dados; Crédito: http://docs.mongodb.org/manual/_images/replica-set-primary-with-two-secondaries.png
  • 27. Confidencial © UNEAR 2015 MongoDB - Sharding ● Particionamento dos dados: ○ Escala; ○ Balancear a carga de trabalho; ● Auto-gerenciável; Crédito: http://blog.optimal.io/assets/img/how-to-do-mongodb- sharding.png
  • 28. Confidencial © UNEAR 2015 MongoDB - Aggregation Framework ● Processamento de operações no Mongo: ○ Aggregation Pipeline ■ Processamento em estágios; ■ Alternativa onde a complexidade do map reduce não é justificada; ○ Map Reduce: ■ Comando mapReduce; ■ Transformação de grande volumes de dados em informações úteis;
  • 29. Confidencial © UNEAR 2015 MongoDB - Aggregation: Aggregation Pipeline Crédito: http://docs.mongodb.org/manual/_images/aggregation-pipeline.png
  • 30. Confidencial © UNEAR 2015 MongoDB - Aggregation: Map Reduce Crédito: http://docs.mongodb.org/manual/_images/map- reduce.png
  • 31. Confidencial © UNEAR 2015 MongoDB - Manutenção e Análise ● Tudo está lento? Observe o I/O do disco! ● O disco está ok: ○ Ative o profiling do banco! ● db.currentOp() para ver operações que não foram finalizadas; ● mongostat para ver informações do processo mongod; ○ Forneça RAM e CPU suficientes; ○ Use SSD!!!!! ● Outras informações na documentação! ○ http://docs.mongodb.org/manual/administration
  • 32. Confidencial © UNEAR 2015 MongoDB - Ecossistema ● 11 drivers oficiais disponíveis para C, C++, C#, Java, NodeJS, Perl, PHP, Python, Motor, Ruby e Scala; ● Go e Erlang suportados pela comunidade; ● Integração nativa com Hadoop; ● humongous.io, UMongo, MongoVue, …; ● Comunidade open-souce;
  • 33. Confidencial © UNEAR 2015 Referências ● http://mongodb.org ● http://mongodb.com ● http://www.thoughtworks.com/pt/insights/blog/nos ql-databases-overview ● http://martinfowler.com/bliki/PolyglotPersistence.ht ml ● http://www.aerospike.com/what-is-a-nosql-key- value-store/ ● http://rebelic.nl/2011/05/28/the-four-categories-of- nosql-databases/ ● http://kkovacs.eu/cassandra-vs-mongodb-vs- couchdb-vs-redis
  • 34. Confidencial © UNEAR 2015 Links úteis ● http://martinfowler.com ● http://mongouniversity.com ● https://docs.mongodb.org/manual/