SlideShare une entreprise Scribd logo
1  sur  48
MongoDB
Aggregation
Framework
• Leandro Domingues
• MongoDB Ambassador / Evangelist
• Advocacy Hub Member
• #1 as the most impactful member in the MongoDB
community
• MongoDB Certified Developer
• Co-organizer: MUG-SP, NoSQL-SP e Cognitive Computing
• Head of Software Development at Lumini IT Solutions
About me
MongoDB – quem é?
• Escrito em C++
• Document Model / Multi-model
• Opensource
• Alta disponibilidade
• Alta escalabilidade
• Origem do nome: Humongous – Gigantesco
MongoDB – o que é?
• Documento é um registro em formato JSON
• Coleção é um conjunto de documentos
• Operações permitidas:
• db.collection.insert({ name: ”Leandro” })
• db.collection.find({ name: ”Leandro” })
• db.collection.remove({ name: ”Leandro” })
• db.collection.update(
{ name: ”Leandro”},
{ name: ”Domingues” }
)
MongoDB – o que é?
• Permite nested documents
db.collection.insert({
name: ”Leandro”,
addresses: [
{ city: ”São Paulo” },
{ city: ”Rio de Janeiro” }
]
})
db.collection.find({
”addresses.city”: ”São Paulo”
})
Aggregation Framework
MapReduce é muito bom, mas…
• Extremamente versátil e poderoso
• Muito complexo para fazer operações simples
• AVG
• SUM
• GROUP
• RESHAPING
• Alto nível de complexidade
• Dificuldades para programar e debugar
Aggregation Framework
• Executado nativamente
• Escrito em C++
• Parâmetro JSON
• Flexível, funcional e simples
• Operation Pipeline
• Se dá muito bem com Sharding
Aggregation Pipeline
cat /var/log/syslog | grep 127.0.0.1
Aggregation Pipeline – O que é?
• Uma série de transformações no documento
• Executado em estágios
• Input original é uma collection
• Output pode ser um document, cursor ou collection
$match $project $group $sort
• Ótima biblioteca de funções disponível
• Filtro, cálculo, agrupamento e sumarização de dados
• Output de um estágio envia um input para o próximo
• Operações executadas em sequência
Pipeline Operators
• $match
• Filtra os documentos
• $project
• ”Reformata” os documentos
• $group
• Sumariza os documentos
• $unwind
• Expande os documentos
• $sort
• Ordena os documentos
• $limit / $skip
• ”Pagina” os documentos
• $redact
• Restringe acesso aos
documentos
• $lookup
• JOIN!?
$match
• Filtra dos documentos
• Utiliza a mesma sintax de query
• Facilita a exclusão de shards
Matching field values
Matching with query operators
$project
• ”Reformata” os documentos
• Inclui, exclui ou renomeia campos
• Adiciona campos calculados
• Cria campos como sub-documentos
Including and excluding fields
$group
• Agrupa documentos por valor
• Referência campos, objetos ou constante
• Outros campos calculados
• $max, $min, $avg, $sum
• $addToSet, $push
• $first, $last
• Processa todos os dados em memória por default
Calculate an Average
Summing fields and counting
$unwind
• Opera com um campo array
• Cria documentos a partir de um array
• Campos vazios não gera output
Expanding documents
$sort, $limit, $skip
• Ordena documentos por um ou mais campos
• Limita os resultados do cursor – { $limit: 5 }
• Pula n resultados – { $skip: 5 }
Ordenando documentos
$lookup
• Consegue trazer documentos de outra collection
{ managedBy: ObjectId(’12334’) }
{ $ lookup: {
$from: ’people’,
$localField: ’managedBy’,
$foreignField: ’_id’,
$as: ’manager’ }
}
{ manager: {…} }
Usos
• db.collection.aggregate([…],{<options>})
• Retorna um cursor
• Opcionalmente pode ter um documento para
especificar as opções de agregação
• allowDiskUse, explain
• Use o operador $out para enviar o resultado para
uma collection
Limitações
• Limites de memória do pipeline
• Estágios limitados a 100MB
• ”allowDiskUse” para datasets maiores
• Alguns BSON types não suportados
• Symbol, MinKey, MaxKey, DBRef, Code e
CodeWScope
Casos de uso
• AD-hoc reporting
• Real-time analytics
• Transforming Data
Replicaset & Sharding
Durabilidade - Replicasets
Nó 1
Nó 2 Nó 3
Inicializando um Replicaset
Nó 1
(Primary)
Nó 2
(Secondary)
Nó 3
(Secondary)
Heartbeat
Replicação Replicação
Falha - Replicaset
Nó 1
(Primary)
Nó 2
(Secondary)
Nó 3
(Secondary)
Eleger novo Primary
Heartbeat
Superando a falha - Replicasets
Nó 1
(Primary)
Nó 2
(Primary)
Nó 3
(Secondary)
Replicação
Heartbeat
Recuperando - Replicasets
Nó 1
(Recovery)
Nó 2
(Primary)
Nó 3
(Secondary)
Heartbeat
Replicação
Replicação
Recuperado - Replicasets
Nó 1
(Secondary)
Nó 2
(Primary)
Nó 3
(Secondary)
Heartbeat
Replicação
Replicação
Sharding – Motivações
• Distribuir entre várias máquinas
• Data sets muito grandes
• Operações com alto throughput
Sharding
Sharding
Sharding – Shard keys
• Utilizada para dividir os documentos da collection
• Temos a liberdade de escolher qual será nossa shard key, mas ela não
pode ser alterada depois de criada
• Apenas uma shard key por collection
• A escolha afeta:
• Performance
• Eficiencia
• Escalabilidade
Sharding - Vantagens
• Reads / Writes
• Distribuição da carga entre os servidores, permitindo que cada shard
processe seu próprio subconjunto de dados
• Tanto leituras como escritas, podem ser escaladas horizontalmente no
cluster adicionando mais shards
• Storage
• Com os dados distribuídos pelo cluster, podemos adicionar capacidade
apenas no shard que exigir e não no cluster todo
• High Availability
• Um cluster ”shardeado” pode continuar lendo e escrevendo se um ou
mais shards ficarem indisponíveis
Sharding – Tipos de distribuição
• Range Sharding
• Mais indicado para aplicações que utilizam queries baseadas em range
• Hash Sharding
• Garante uma distribuição uniforme no cluster
• Não é aconselhado para os cenários que utilizam ranges
• Zone Sharding
• Permite que os DBA’s / Operações definam regras específicas para a colocação
dos dados no shard
• As Zonas podem ser: região geográfica, configuração de hardware,
funcionalidade da aplicação
• Permite a constante modificação dessas regras. Nesse caso o MongoDB migra
automaticamente os dados para a nova zona
MongoDB Atlas - DBaaS
• MongoDB Atlas
• M0 Free
• M10
• 2GB RAM
• 10GB Storage
• 3 Nós
• $ 0,12/hr
MongoDB Atlas – Preços
Dúvidas?
19/10 depois de 40 anos
• MongoDB:
• https://www.mongodb.com/
• MongoDB docs:
• https://docs.mongodb.com/
• SQL to Aggregation Mapping Chart
• https://docs.mongodb.com/manual/reference/sql-
aggregation-comparison/
• MongoUniversity:
• https://university.mongodb.com/
• MongoDB Atlas
• https://www.mongodb.com/cloud/atlas
Referências
Contatos:
• leandro.domingues@luminiitsolutions.com
• Linkedin: https://www.linkedin.com/in/leandro-domingues
• Twitter: @delbussoweb
Obrigado!

Contenu connexe

Tendances

Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com phpSuissa
 
Turbinando Drupal com Redis
Turbinando Drupal com RedisTurbinando Drupal com Redis
Turbinando Drupal com RedisDaniel Santos
 
S3 - Simple storage service
S3 - Simple storage serviceS3 - Simple storage service
S3 - Simple storage serviceRicardoKutscher
 
MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberChristiano Anderson
 
MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento Marcos Thomaz
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - ApresentaçãoTerra / Neo
 

Tendances (8)

Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com php
 
Turbinando Drupal com Redis
Turbinando Drupal com RedisTurbinando Drupal com Redis
Turbinando Drupal com Redis
 
Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1
 
S3 - Simple storage service
S3 - Simple storage serviceS3 - Simple storage service
S3 - Simple storage service
 
Mongo + php
Mongo + phpMongo + php
Mongo + php
 
MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saber
 
MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - Apresentação
 

Similaire à MongoDB Aggregation Framework em

Document store e Mongodb
Document store e MongodbDocument store e Mongodb
Document store e MongodbAline Ferreira
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordtchandy
 
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 no sql mongodb java
Introdução no sql mongodb javaIntrodução no sql mongodb java
Introdução no sql mongodb javaFabiano Modos
 
Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Thiago de Azeredo
 
Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC Fernando Rizzato
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensAlessandro Binhara
 
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...iMasters
 
Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!! Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!! Alessandro Binhara
 
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Tchelinux
 
Migrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMRMigrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMRAmazon Web Services LATAM
 
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
 
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e ElasticsearchTDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearchtdc-globalcode
 
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
 
FireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDBFireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDBAlan Glei
 
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Luiz Henrique Zambom Santana
 

Similaire à MongoDB Aggregation Framework em (20)

Mongo db
Mongo dbMongo db
Mongo db
 
Document store e Mongodb
Document store e MongodbDocument store e Mongodb
Document store e Mongodb
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecord
 
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 no sql mongodb java
Introdução no sql mongodb javaIntrodução no sql mongodb java
Introdução no sql mongodb java
 
Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)
 
Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvens
 
Mongo db slides
Mongo db slidesMongo db slides
Mongo db slides
 
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
 
Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!! Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!!
 
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
 
Migrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMRMigrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMR
 
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
 
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e ElasticsearchTDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
 
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
 
FireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDBFireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDB
 
Workshop MongoDB
Workshop MongoDBWorkshop MongoDB
Workshop MongoDB
 
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
 

Dernier

AULA_02_-_SISTEMA_DE_NUMERACAO2023/2.pdf
AULA_02_-_SISTEMA_DE_NUMERACAO2023/2.pdfAULA_02_-_SISTEMA_DE_NUMERACAO2023/2.pdf
AULA_02_-_SISTEMA_DE_NUMERACAO2023/2.pdfhistonfilho
 
EM-3ª-SERIE-SLIDE-DE-BIOLOGIA-os-principios-das-leis-da-genetica-ou-mendelian...
EM-3ª-SERIE-SLIDE-DE-BIOLOGIA-os-principios-das-leis-da-genetica-ou-mendelian...EM-3ª-SERIE-SLIDE-DE-BIOLOGIA-os-principios-das-leis-da-genetica-ou-mendelian...
EM-3ª-SERIE-SLIDE-DE-BIOLOGIA-os-principios-das-leis-da-genetica-ou-mendelian...9z64mgz4kf
 
Selling Story Max Excellence DIS - Q2'24 DIS TD (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS TD (1).pdfSelling Story Max Excellence DIS - Q2'24 DIS TD (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS TD (1).pdfmaanuarruda
 
Selling Story Max Excellence DIS - Q2'24 DIS VJ (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS VJ (1).pdfSelling Story Max Excellence DIS - Q2'24 DIS VJ (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS VJ (1).pdfmaanuarruda
 
Selling Story Max Excellence DIS - Q2'24 DIS HIB (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS HIB (1).pdfSelling Story Max Excellence DIS - Q2'24 DIS HIB (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS HIB (1).pdfmaanuarruda
 
Relatório de Gestão 2022-2023 Intra Leste Nordeste
Relatório de Gestão 2022-2023 Intra Leste NordesteRelatório de Gestão 2022-2023 Intra Leste Nordeste
Relatório de Gestão 2022-2023 Intra Leste NordesteDaniloMatos36
 

Dernier (6)

AULA_02_-_SISTEMA_DE_NUMERACAO2023/2.pdf
AULA_02_-_SISTEMA_DE_NUMERACAO2023/2.pdfAULA_02_-_SISTEMA_DE_NUMERACAO2023/2.pdf
AULA_02_-_SISTEMA_DE_NUMERACAO2023/2.pdf
 
EM-3ª-SERIE-SLIDE-DE-BIOLOGIA-os-principios-das-leis-da-genetica-ou-mendelian...
EM-3ª-SERIE-SLIDE-DE-BIOLOGIA-os-principios-das-leis-da-genetica-ou-mendelian...EM-3ª-SERIE-SLIDE-DE-BIOLOGIA-os-principios-das-leis-da-genetica-ou-mendelian...
EM-3ª-SERIE-SLIDE-DE-BIOLOGIA-os-principios-das-leis-da-genetica-ou-mendelian...
 
Selling Story Max Excellence DIS - Q2'24 DIS TD (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS TD (1).pdfSelling Story Max Excellence DIS - Q2'24 DIS TD (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS TD (1).pdf
 
Selling Story Max Excellence DIS - Q2'24 DIS VJ (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS VJ (1).pdfSelling Story Max Excellence DIS - Q2'24 DIS VJ (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS VJ (1).pdf
 
Selling Story Max Excellence DIS - Q2'24 DIS HIB (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS HIB (1).pdfSelling Story Max Excellence DIS - Q2'24 DIS HIB (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS HIB (1).pdf
 
Relatório de Gestão 2022-2023 Intra Leste Nordeste
Relatório de Gestão 2022-2023 Intra Leste NordesteRelatório de Gestão 2022-2023 Intra Leste Nordeste
Relatório de Gestão 2022-2023 Intra Leste Nordeste
 

MongoDB Aggregation Framework em

  • 2. • Leandro Domingues • MongoDB Ambassador / Evangelist • Advocacy Hub Member • #1 as the most impactful member in the MongoDB community • MongoDB Certified Developer • Co-organizer: MUG-SP, NoSQL-SP e Cognitive Computing • Head of Software Development at Lumini IT Solutions About me
  • 3. MongoDB – quem é? • Escrito em C++ • Document Model / Multi-model • Opensource • Alta disponibilidade • Alta escalabilidade • Origem do nome: Humongous – Gigantesco
  • 4. MongoDB – o que é? • Documento é um registro em formato JSON • Coleção é um conjunto de documentos • Operações permitidas: • db.collection.insert({ name: ”Leandro” }) • db.collection.find({ name: ”Leandro” }) • db.collection.remove({ name: ”Leandro” }) • db.collection.update( { name: ”Leandro”}, { name: ”Domingues” } )
  • 5. MongoDB – o que é? • Permite nested documents db.collection.insert({ name: ”Leandro”, addresses: [ { city: ”São Paulo” }, { city: ”Rio de Janeiro” } ] }) db.collection.find({ ”addresses.city”: ”São Paulo” })
  • 7. MapReduce é muito bom, mas… • Extremamente versátil e poderoso • Muito complexo para fazer operações simples • AVG • SUM • GROUP • RESHAPING • Alto nível de complexidade • Dificuldades para programar e debugar
  • 8. Aggregation Framework • Executado nativamente • Escrito em C++ • Parâmetro JSON • Flexível, funcional e simples • Operation Pipeline • Se dá muito bem com Sharding
  • 10. cat /var/log/syslog | grep 127.0.0.1
  • 11. Aggregation Pipeline – O que é? • Uma série de transformações no documento • Executado em estágios • Input original é uma collection • Output pode ser um document, cursor ou collection $match $project $group $sort • Ótima biblioteca de funções disponível • Filtro, cálculo, agrupamento e sumarização de dados • Output de um estágio envia um input para o próximo • Operações executadas em sequência
  • 12. Pipeline Operators • $match • Filtra os documentos • $project • ”Reformata” os documentos • $group • Sumariza os documentos • $unwind • Expande os documentos • $sort • Ordena os documentos • $limit / $skip • ”Pagina” os documentos • $redact • Restringe acesso aos documentos • $lookup • JOIN!?
  • 13.
  • 14. $match • Filtra dos documentos • Utiliza a mesma sintax de query • Facilita a exclusão de shards
  • 16. Matching with query operators
  • 17. $project • ”Reformata” os documentos • Inclui, exclui ou renomeia campos • Adiciona campos calculados • Cria campos como sub-documentos
  • 19. $group • Agrupa documentos por valor • Referência campos, objetos ou constante • Outros campos calculados • $max, $min, $avg, $sum • $addToSet, $push • $first, $last • Processa todos os dados em memória por default
  • 21. Summing fields and counting
  • 22. $unwind • Opera com um campo array • Cria documentos a partir de um array • Campos vazios não gera output
  • 24. $sort, $limit, $skip • Ordena documentos por um ou mais campos • Limita os resultados do cursor – { $limit: 5 } • Pula n resultados – { $skip: 5 }
  • 26. $lookup • Consegue trazer documentos de outra collection { managedBy: ObjectId(’12334’) } { $ lookup: { $from: ’people’, $localField: ’managedBy’, $foreignField: ’_id’, $as: ’manager’ } } { manager: {…} }
  • 27. Usos • db.collection.aggregate([…],{<options>}) • Retorna um cursor • Opcionalmente pode ter um documento para especificar as opções de agregação • allowDiskUse, explain • Use o operador $out para enviar o resultado para uma collection
  • 28. Limitações • Limites de memória do pipeline • Estágios limitados a 100MB • ”allowDiskUse” para datasets maiores • Alguns BSON types não suportados • Symbol, MinKey, MaxKey, DBRef, Code e CodeWScope
  • 29. Casos de uso • AD-hoc reporting • Real-time analytics • Transforming Data
  • 32. Inicializando um Replicaset Nó 1 (Primary) Nó 2 (Secondary) Nó 3 (Secondary) Heartbeat Replicação Replicação
  • 33. Falha - Replicaset Nó 1 (Primary) Nó 2 (Secondary) Nó 3 (Secondary) Eleger novo Primary Heartbeat
  • 34. Superando a falha - Replicasets Nó 1 (Primary) Nó 2 (Primary) Nó 3 (Secondary) Replicação Heartbeat
  • 35. Recuperando - Replicasets Nó 1 (Recovery) Nó 2 (Primary) Nó 3 (Secondary) Heartbeat Replicação Replicação
  • 36. Recuperado - Replicasets Nó 1 (Secondary) Nó 2 (Primary) Nó 3 (Secondary) Heartbeat Replicação Replicação
  • 37. Sharding – Motivações • Distribuir entre várias máquinas • Data sets muito grandes • Operações com alto throughput
  • 40. Sharding – Shard keys • Utilizada para dividir os documentos da collection • Temos a liberdade de escolher qual será nossa shard key, mas ela não pode ser alterada depois de criada • Apenas uma shard key por collection • A escolha afeta: • Performance • Eficiencia • Escalabilidade
  • 41. Sharding - Vantagens • Reads / Writes • Distribuição da carga entre os servidores, permitindo que cada shard processe seu próprio subconjunto de dados • Tanto leituras como escritas, podem ser escaladas horizontalmente no cluster adicionando mais shards • Storage • Com os dados distribuídos pelo cluster, podemos adicionar capacidade apenas no shard que exigir e não no cluster todo • High Availability • Um cluster ”shardeado” pode continuar lendo e escrevendo se um ou mais shards ficarem indisponíveis
  • 42. Sharding – Tipos de distribuição • Range Sharding • Mais indicado para aplicações que utilizam queries baseadas em range • Hash Sharding • Garante uma distribuição uniforme no cluster • Não é aconselhado para os cenários que utilizam ranges • Zone Sharding • Permite que os DBA’s / Operações definam regras específicas para a colocação dos dados no shard • As Zonas podem ser: região geográfica, configuração de hardware, funcionalidade da aplicação • Permite a constante modificação dessas regras. Nesse caso o MongoDB migra automaticamente os dados para a nova zona
  • 44. • MongoDB Atlas • M0 Free • M10 • 2GB RAM • 10GB Storage • 3 Nós • $ 0,12/hr MongoDB Atlas – Preços
  • 46. 19/10 depois de 40 anos
  • 47. • MongoDB: • https://www.mongodb.com/ • MongoDB docs: • https://docs.mongodb.com/ • SQL to Aggregation Mapping Chart • https://docs.mongodb.com/manual/reference/sql- aggregation-comparison/ • MongoUniversity: • https://university.mongodb.com/ • MongoDB Atlas • https://www.mongodb.com/cloud/atlas Referências
  • 48. Contatos: • leandro.domingues@luminiitsolutions.com • Linkedin: https://www.linkedin.com/in/leandro-domingues • Twitter: @delbussoweb Obrigado!