SlideShare uma empresa Scribd logo
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

PPTX
Apresentação - MongoDB
PDF
Mongo db slides
PPTX
Using Kafka to scale database replication
PDF
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트:: AWS Summit Online Ko...
PPTX
UNIT I Introduction to NoSQL.pptx
PPTX
가상화 기술과 컨테이너 기술의 차이점과 기대 효과
PPTX
What you need to know about ceph
PDF
나에게 맞는 AWS 데이터베이스 서비스 선택하기 :: 양승도 :: AWS Summit Seoul 2016
Apresentação - MongoDB
Mongo db slides
Using Kafka to scale database replication
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트:: AWS Summit Online Ko...
UNIT I Introduction to NoSQL.pptx
가상화 기술과 컨테이너 기술의 차이점과 기대 효과
What you need to know about ceph
나에게 맞는 AWS 데이터베이스 서비스 선택하기 :: 양승도 :: AWS Summit Seoul 2016

Mais procurados (20)

PDF
관계형 데이터베이스의 새로운 패러다임 Amazon Aurora :: 김상필 :: AWS Summit Seoul 2016
PDF
Presentation citrix cloud platform for infrastructure as a service
PDF
Sansanがメッセージング (SQS) でスケーラビリティを手に入れた話
PDF
게임을 위한 최적의 AWS DB 서비스 선정 퀘스트 깨기::최유정::AWS Summit Seoul 2018
PDF
AWS 기반 데이터 레이크(Datalake) 구축 및 분석 - 김민성 (AWS 솔루션즈아키텍트) : 8월 온라인 세미나
PPTX
Point of View -Converged Infrastructure
PPTX
AWS 12월 웨비나 │클라우드 마이그레이션을 통한 성공사례
PPTX
MongoDB 101
PDF
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
PDF
Reactive design: languages, and paradigms
PPT
Migrating to MongoDB: Best Practices
PDF
[AWS Migration Workshop] 데이터베이스를 AWS로 손쉽게 마이그레이션 하기
PDF
HBaseConAsia2018 Keynote 2: Recent Development of HBase in Alibaba and Cloud
PDF
Oracle databáze – Konsolidovaná Data Management Platforma
PDF
Maxscale_메뉴얼
PPTX
IBM DS8880 and IBM Z - Integrated by Design
PDF
다양한 배포 기법과 AWS에서 구축하는 CI/CD 파이프라인 l 안효빈 솔루션즈 아키텍트
PPTX
Introduction to NuoDB
PDF
An Introduction to AWS
PDF
Migrating from RDBMS to MongoDB
관계형 데이터베이스의 새로운 패러다임 Amazon Aurora :: 김상필 :: AWS Summit Seoul 2016
Presentation citrix cloud platform for infrastructure as a service
Sansanがメッセージング (SQS) でスケーラビリティを手に入れた話
게임을 위한 최적의 AWS DB 서비스 선정 퀘스트 깨기::최유정::AWS Summit Seoul 2018
AWS 기반 데이터 레이크(Datalake) 구축 및 분석 - 김민성 (AWS 솔루션즈아키텍트) : 8월 온라인 세미나
Point of View -Converged Infrastructure
AWS 12월 웨비나 │클라우드 마이그레이션을 통한 성공사례
MongoDB 101
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
Reactive design: languages, and paradigms
Migrating to MongoDB: Best Practices
[AWS Migration Workshop] 데이터베이스를 AWS로 손쉽게 마이그레이션 하기
HBaseConAsia2018 Keynote 2: Recent Development of HBase in Alibaba and Cloud
Oracle databáze – Konsolidovaná Data Management Platforma
Maxscale_메뉴얼
IBM DS8880 and IBM Z - Integrated by Design
다양한 배포 기법과 AWS에서 구축하는 CI/CD 파이프라인 l 안효빈 솔루션즈 아키텍트
Introduction to NuoDB
An Introduction to AWS
Migrating from RDBMS to MongoDB
Anúncio

Destaque (6)

PDF
Techzone 2014 presentation rundeck
PDF
Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...
KEY
PDF
RunDeck
PPTX
Aula05 - Android - Persistência
PDF
Rundeck + Nexus (from Nexus Live on June 5, 2014)
Techzone 2014 presentation rundeck
Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...
RunDeck
Aula05 - Android - Persistência
Rundeck + Nexus (from Nexus Live on June 5, 2014)
Anúncio

Semelhante a Apresentação MongoDB (20)

PPTX
Mongo db
PPTX
Introdução ao MongoDB (NoSQL)
PDF
mongodb.pdf
KEY
MongoDB - Apresentação
PPTX
MongoDB Aggregation Framework
PPTX
#1 Introdução ao MongoDB
PPTX
Workshop MongoDB
PPTX
Desenvolvimento de aplicações PHP com MongoDB
PPTX
Minicurso mongo db
PPTX
Introdução ao NoSQL e modelagem de dados com MongoDB
PDF
Mongopesl
PPT
Mongo Db - PHP Day Workshop
PPTX
MongoDB - Performance e Escalabilidade para aplicações web
PDF
Mini-Curso de MongoDB
PDF
Mongodb workshop cinlug
PDF
MongoDB outras alternativas de persistência
PDF
MongoDB: um banco de dados orientado a documento
PDF
Curso mongo db com php
PPTX
MongoDB + PHP
PDF
Mongo DB
Mongo db
Introdução ao MongoDB (NoSQL)
mongodb.pdf
MongoDB - Apresentação
MongoDB Aggregation Framework
#1 Introdução ao MongoDB
Workshop MongoDB
Desenvolvimento de aplicações PHP com MongoDB
Minicurso mongo db
Introdução ao NoSQL e modelagem de dados com MongoDB
Mongopesl
Mongo Db - PHP Day Workshop
MongoDB - Performance e Escalabilidade para aplicações web
Mini-Curso de MongoDB
Mongodb workshop cinlug
MongoDB outras alternativas de persistência
MongoDB: um banco de dados orientado a documento
Curso mongo db com php
MongoDB + PHP
Mongo DB

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/