SlideShare uma empresa Scribd logo
1 de 33
AGENDA
• NoSQL
• MongoDB
• Mongo shell
• Data Modeling
• CRUD Operations
• Logical Operations
• Links Úteis
• Prática
NOSQL
• Termo utilizado pela primeira vez em 1998 (noREL)
• São diferentes sistemas de armazenamento que vieram para
suprir a necessidade em demandas onde os bancos
relacionais são ineficazes.
NOSQL
• Com a crescente
popularização da internet,
diversos novos dados foram
surgindo e tratá-los foi se
tornando gradualmente mais
complexo e sua manutenção
mais cara
NOSQL
• Motivadores
Alta performance
Escalabilidade (Horizontal vs Vertical)
Tolerância a falha
Schemaless
Em sua maioria open-source
NOSQL
• Tipos de bases de dados NoSQL
• Column
Inspirados pelo BigTable, da Google, suportam varias linhas e colunas, além de
permitir subcolunas.
Ex:
Accumulo, Cassandra, BigTable, HBase, Cassandra
• Document
Baseados em documentos XML ou JSON, podem ser localizados pelo seu id
único ou por qualquer registro que o documento possua.
Ex:
Lotus Notes, CouchDB, Couchbase, MongoDB, OrientDB
NOSQL
• Tipos de bases de dados NoSQL
• Key-value
Tipo de banco de dados mais simples, conceito de uma chave e um valor para essa chave. Mas é
o que mais suporta carga de dados e possuem também maior escalabilidade.
Ex:
Dynamo, MemcacheDB, Redis, Riak
• Graph
Com complexidade maior, esses bancos de dados guardam objetos, e não
registros como os outros tipos de NoSQL. A busca desses itens é feita pela navegação
desses objetos.
Ex:
Allegro, Neo4J, InfiniteGraph
• Multi-model
• OrientDB, FoundationDB, ArangoDB, Alchemy Database, CortexDB
MONGODB
• Humongous Database
• Alta performance
• Alta disponibilidade
• Schemaless
• Distribuído
• Baseada em documentos JSON
• Open-Source
PARA QUE USAR O
MONGODB
• Conjunto de dados diversificado, misturado
• Concorrência massiva
• Alta incerteza no dimensionamento
• Sem tolerância a downtime
• Necessidade rápido de escalonamento
• Respostas rápidas
• Grande volume de dados
• Indecisão quanto ao schema
• Necessidade de slicing
• Falta de previsão quanto ao tamanho da base
O QUE NÃO É O MONGODB
• Uma suíte de Análise
• Uma ferramenta de BI
• Uma ferramenta de busca
QUEM UTILIZA
• Foursquare
• GitHub
• EasyTaxi
• Globo.com
• IG.com
• bit.ly
• Locaweb
• Oi
NO QUE O MONGODB NÃO
É MUITO BOM
• Gerenciamento de recursos de hardware
• Não é uma feature do mongoDB configurar quantidade de RAM, nº de CPUs, ou
operações de I/O para um usuário.
• Joins entre collections e transações entre
documentos
• Controlado no nível da aplicação. Um bom design do schema reduz sua necessidade.
• SQL
• O mongoDB não fala essa língua
DATA MODELING
• Armazena Documentos no formato
BSON
• Agrupa documentos em Collections
• Esquema flexível
DATA MODELING
• Estrutura do documento
• Embedded
• Modelo de dados “desnormalizado”
• Armazena dados relacionados em
um mesmo registro
• Somente uma consulta para toda
informação
• Recomendado para:
• Quando existe uma relação de “contém” entre entidades
• Quando existe uma relação de one-to-many e o lado many sempre é visualizado em conjunto com
seus documentos pais
DATA MODELING
• Estrutura do documento
• Referencies
• Modelo de dados normalizado
• Mais flexível que embedded
• Mais queries para buscar relações
• Recomendado para:
• Quando embedding duplicaria dados mas não proveria
vantagens no desempenho de read que justificasse seu uso
• Para representar relações de many-to-many mais complexas
• Para modelar grandes conjuntos de dados hierárquicos
DATA MODELING
• Atomicidade
• Garantir que qualquer transação seja “tudo ou nada”
• mongoDB somente garante atomicidade no nível de um documento
• mongoDB não implementa transação entre documentos ou collections
DATA MODELING
• GridFS
• Especificação para armazenar e recuperar arquivos que excedem o tamanho de um
documento (16MB)
• Divide o arquivo em pedaços (chunks) e as armazenam em documentos separados,
mantendo uma collection com meta dados dos arquivos
• Recomendações de uso
• Arquivo for maior que o tamanho de um documento
• Necessidade de acessar parte de arquivos ao invés do arquivo todo
CRUD OPERATIONS
• Operações de Create, Read, Update e Delete
• Cada operação afeta somente uma collection por vez
CRUD OPERATIONS
• Insert
db.collection.insert(
<document or array of
documents>,
{
writeConcern:
<document>,
ordered: <boolean>
}
)
CRUD OPERATIONS
• Update
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
CRUD OPERATIONS
• Delete
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern:
<document>
}
)
CRUD OPERATIONS
• Retrieve
db.collection.find(<crite
ria>, <projection>)
OPERADORES LÓGICOS
MONGO
$lt (menor que)
$lte (menor ou igual que)
$gt (maior que)
$gte (maior ou igual que)
$all (corresponder a todos os valores em um array)
$exists (verificar se um campo existe ou não)
$mod (módulo)
$ne (não igual)
OPERADORES LÓGICOS
MONGO
$in (corresponder a um ou mais valores em um array)
$nin (corresponder a valores zero em um array)
$or (corresponder uma consulta a outra)
$and (corresponder a todas as consultas)
$nor (não corresponder uma consulta nem outra)
$size (corresponder qualquer array com número definido de
elementos)
$type (corresponder valores com tipo de dados BSON especificado)
$not (não igual a)
COMANDOS MONGO
• db.collection.count()
retorna a quantidade de registros de uma coleção
• db.collection.distinct({key})
retorna uma consulta distinta contendo todos os valores da chave
informada
• db.getCollectionNames()
retorna todos os nomes das coleções
• show dbs
lista todas as bases de dados
• use <data_base>
conecta a uma base de dados
COMANDOS MONGO
• db
exibe o nome da base de dados a qual está conectado
• show collections
exibe todas as coleções
• db.collection.drop()
deleta uma collection
• db.dropDatabase()
deleta uma base de dados
• db.collection.selectOne()
JSON (JAVASCRIPT
OBJECT NOTATION)
JSON (JAVASCRIPT
OBJECT NOTATION)
INICIALIZANDO
• Processo mongod
• Pasta data
• Arquivo de configuração
MONGOSHELL
• Processo mongo
• Shell interativo JavaScript
• Autocompletion
ROBOMONGO
• Autocompletion
• Space ignore
• GUI Manipulation
VAMOS PRATICAR!
LINKS ÚTEIS
• https://www.mongodb.org
• https://docs.mongodb.org/manual/
• http://nosql-database.org
• https://bitbucket.org/edmilsonneto/minicurso-
mongodb
• http://www.json.org

Mais conteúdo relacionado

Mais procurados

Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasWaldemar Neto
 
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 - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - ApresentaçãoTerra / Neo
 
Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com phpSuissa
 
DocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São PauloDocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São PauloRenato Groff
 
Mongo DB
Mongo DBMongo DB
Mongo DBdist_bp
 
BigData - ElasticSearch + PHP
BigData - ElasticSearch + PHPBigData - ElasticSearch + PHP
BigData - ElasticSearch + PHPFelipe Weckx
 
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
 
Minicurso Epoca mongoDB
Minicurso Epoca mongoDBMinicurso Epoca mongoDB
Minicurso Epoca mongoDBLelyBarros
 
Modelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBModelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBThiago Avelino
 
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Miguel Gallardo
 
Spring Data com MongoDB
Spring Data com MongoDBSpring Data com MongoDB
Spring Data com MongoDBFabiano Modos
 
Nosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosNosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosYuri Adams
 
NOSQL uma breve introdução
NOSQL uma breve introduçãoNOSQL uma breve introdução
NOSQL uma breve introduçãoWise Systems
 
noSQL com CouchDb e PHP
noSQL com CouchDb e PHPnoSQL com CouchDb e PHP
noSQL com CouchDb e PHPTheoziran Lima
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDBElaine Naomi
 

Mais procurados (20)

Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscas
 
Introdução ao NoSql
Introdução ao NoSqlIntrodução ao NoSql
Introdução ao NoSql
 
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 - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - Apresentação
 
Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com php
 
DocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São PauloDocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São Paulo
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
BigData - ElasticSearch + PHP
BigData - ElasticSearch + PHPBigData - ElasticSearch + PHP
BigData - ElasticSearch + PHP
 
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)
 
Minicurso Epoca mongoDB
Minicurso Epoca mongoDBMinicurso Epoca mongoDB
Minicurso Epoca mongoDB
 
Modelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBModelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDB
 
#5 CRUD no MongoDB
#5   CRUD  no MongoDB#5   CRUD  no MongoDB
#5 CRUD no MongoDB
 
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
 
Spring Data com MongoDB
Spring Data com MongoDBSpring Data com MongoDB
Spring Data com MongoDB
 
Nosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosNosql e BD Orientados a Documentos
Nosql e BD Orientados a Documentos
 
Treinamento Elasticsearch - Parte 2
Treinamento Elasticsearch - Parte 2Treinamento Elasticsearch - Parte 2
Treinamento Elasticsearch - Parte 2
 
NOSQL uma breve introdução
NOSQL uma breve introduçãoNOSQL uma breve introdução
NOSQL uma breve introdução
 
noSQL com CouchDb e PHP
noSQL com CouchDb e PHPnoSQL com CouchDb e PHP
noSQL com CouchDb e PHP
 
SQL Saturday SP - SQL Server 2019 Big Data Clusters
SQL Saturday SP - SQL Server 2019 Big Data ClustersSQL Saturday SP - SQL Server 2019 Big Data Clusters
SQL Saturday SP - SQL Server 2019 Big Data Clusters
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDB
 

Destaque

MongoDB for Beginners
MongoDB for BeginnersMongoDB for Beginners
MongoDB for BeginnersEnoch Joshua
 
Introduction to mongo db
Introduction to mongo dbIntroduction to mongo db
Introduction to mongo dbRohit Bishnoi
 
MongoD Essentials
MongoD EssentialsMongoD Essentials
MongoD Essentialszahid-mian
 
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorialsMongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorialsSpringPeople
 
Connecting NodeJS & MongoDB
Connecting NodeJS & MongoDBConnecting NodeJS & MongoDB
Connecting NodeJS & MongoDBEnoch Joshua
 
Redis for the Everyday Developer
Redis for the Everyday DeveloperRedis for the Everyday Developer
Redis for the Everyday DeveloperRoss Tuck
 
Redis in Practice
Redis in PracticeRedis in Practice
Redis in PracticeNoah Davis
 
Intro to NoSQL and MongoDB
Intro to NoSQL and MongoDBIntro to NoSQL and MongoDB
Intro to NoSQL and MongoDBDATAVERSITY
 
Intro To MongoDB
Intro To MongoDBIntro To MongoDB
Intro To MongoDBAlex Sharp
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBRavi Teja
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to RedisDvir Volk
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsJonas Bonér
 

Destaque (18)

MongoDB for Beginners
MongoDB for BeginnersMongoDB for Beginners
MongoDB for Beginners
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
Introduction to mongo db
Introduction to mongo dbIntroduction to mongo db
Introduction to mongo db
 
MongoD Essentials
MongoD EssentialsMongoD Essentials
MongoD Essentials
 
Pdf almas
Pdf almasPdf almas
Pdf almas
 
Mongo db basics
Mongo db basicsMongo db basics
Mongo db basics
 
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorialsMongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
 
Mongo db
Mongo dbMongo db
Mongo db
 
Connecting NodeJS & MongoDB
Connecting NodeJS & MongoDBConnecting NodeJS & MongoDB
Connecting NodeJS & MongoDB
 
Redis for the Everyday Developer
Redis for the Everyday DeveloperRedis for the Everyday Developer
Redis for the Everyday Developer
 
Redis in Practice
Redis in PracticeRedis in Practice
Redis in Practice
 
Intro to NoSQL and MongoDB
Intro to NoSQL and MongoDBIntro to NoSQL and MongoDB
Intro to NoSQL and MongoDB
 
Mongo db
Mongo dbMongo db
Mongo db
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
Intro To MongoDB
Intro To MongoDBIntro To MongoDB
Intro To MongoDB
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability Patterns
 

Semelhante a Introdução ao MongoDB: NoSQL, Modelagem de Dados e Operações CRUD

Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Thiago de Azeredo
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 
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
 
MongoDB Aggregation Framework
MongoDB Aggregation FrameworkMongoDB Aggregation Framework
MongoDB Aggregation FrameworkLeandro Domingues
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Bancos de dados no sql – uma nova abordagem
Bancos de dados no sql – uma nova abordagemBancos de dados no sql – uma nova abordagem
Bancos de dados no sql – uma nova abordagemJoão Gabriel Lima
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDenis Vieira
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordtchandy
 
Big Data, NoSQL e In Memory Databases
Big Data, NoSQL e In Memory DatabasesBig Data, NoSQL e In Memory Databases
Big Data, NoSQL e In Memory DatabasesCaio Louro
 

Semelhante a Introdução ao MongoDB: NoSQL, Modelagem de Dados e Operações CRUD (20)

Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
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
 
MongoDB Aggregation Framework
MongoDB Aggregation FrameworkMongoDB Aggregation Framework
MongoDB Aggregation Framework
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
Nosql
NosqlNosql
Nosql
 
Banco de dados nas nuvens - aula 2
Banco de dados nas nuvens - aula 2Banco de dados nas nuvens - aula 2
Banco de dados nas nuvens - aula 2
 
Bancos de dados NoSQL
Bancos de dados NoSQLBancos de dados NoSQL
Bancos de dados NoSQL
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário NoSQL
 
SQL Oracle
SQL OracleSQL Oracle
SQL Oracle
 
Bancos de dados no sql – uma nova abordagem
Bancos de dados no sql – uma nova abordagemBancos de dados no sql – uma nova abordagem
Bancos de dados no sql – uma nova abordagem
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full Javascript
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecord
 
Big Data, NoSQL e In Memory Databases
Big Data, NoSQL e In Memory DatabasesBig Data, NoSQL e In Memory Databases
Big Data, NoSQL e In Memory Databases
 

Introdução ao MongoDB: NoSQL, Modelagem de Dados e Operações CRUD

  • 1.
  • 2. AGENDA • NoSQL • MongoDB • Mongo shell • Data Modeling • CRUD Operations • Logical Operations • Links Úteis • Prática
  • 3. NOSQL • Termo utilizado pela primeira vez em 1998 (noREL) • São diferentes sistemas de armazenamento que vieram para suprir a necessidade em demandas onde os bancos relacionais são ineficazes.
  • 4. NOSQL • Com a crescente popularização da internet, diversos novos dados foram surgindo e tratá-los foi se tornando gradualmente mais complexo e sua manutenção mais cara
  • 5. NOSQL • Motivadores Alta performance Escalabilidade (Horizontal vs Vertical) Tolerância a falha Schemaless Em sua maioria open-source
  • 6. NOSQL • Tipos de bases de dados NoSQL • Column Inspirados pelo BigTable, da Google, suportam varias linhas e colunas, além de permitir subcolunas. Ex: Accumulo, Cassandra, BigTable, HBase, Cassandra • Document Baseados em documentos XML ou JSON, podem ser localizados pelo seu id único ou por qualquer registro que o documento possua. Ex: Lotus Notes, CouchDB, Couchbase, MongoDB, OrientDB
  • 7. NOSQL • Tipos de bases de dados NoSQL • Key-value Tipo de banco de dados mais simples, conceito de uma chave e um valor para essa chave. Mas é o que mais suporta carga de dados e possuem também maior escalabilidade. Ex: Dynamo, MemcacheDB, Redis, Riak • Graph Com complexidade maior, esses bancos de dados guardam objetos, e não registros como os outros tipos de NoSQL. A busca desses itens é feita pela navegação desses objetos. Ex: Allegro, Neo4J, InfiniteGraph • Multi-model • OrientDB, FoundationDB, ArangoDB, Alchemy Database, CortexDB
  • 8. MONGODB • Humongous Database • Alta performance • Alta disponibilidade • Schemaless • Distribuído • Baseada em documentos JSON • Open-Source
  • 9. PARA QUE USAR O MONGODB • Conjunto de dados diversificado, misturado • Concorrência massiva • Alta incerteza no dimensionamento • Sem tolerância a downtime • Necessidade rápido de escalonamento • Respostas rápidas • Grande volume de dados • Indecisão quanto ao schema • Necessidade de slicing • Falta de previsão quanto ao tamanho da base
  • 10. O QUE NÃO É O MONGODB • Uma suíte de Análise • Uma ferramenta de BI • Uma ferramenta de busca
  • 11. QUEM UTILIZA • Foursquare • GitHub • EasyTaxi • Globo.com • IG.com • bit.ly • Locaweb • Oi
  • 12. NO QUE O MONGODB NÃO É MUITO BOM • Gerenciamento de recursos de hardware • Não é uma feature do mongoDB configurar quantidade de RAM, nº de CPUs, ou operações de I/O para um usuário. • Joins entre collections e transações entre documentos • Controlado no nível da aplicação. Um bom design do schema reduz sua necessidade. • SQL • O mongoDB não fala essa língua
  • 13. DATA MODELING • Armazena Documentos no formato BSON • Agrupa documentos em Collections • Esquema flexível
  • 14. DATA MODELING • Estrutura do documento • Embedded • Modelo de dados “desnormalizado” • Armazena dados relacionados em um mesmo registro • Somente uma consulta para toda informação • Recomendado para: • Quando existe uma relação de “contém” entre entidades • Quando existe uma relação de one-to-many e o lado many sempre é visualizado em conjunto com seus documentos pais
  • 15. DATA MODELING • Estrutura do documento • Referencies • Modelo de dados normalizado • Mais flexível que embedded • Mais queries para buscar relações • Recomendado para: • Quando embedding duplicaria dados mas não proveria vantagens no desempenho de read que justificasse seu uso • Para representar relações de many-to-many mais complexas • Para modelar grandes conjuntos de dados hierárquicos
  • 16. DATA MODELING • Atomicidade • Garantir que qualquer transação seja “tudo ou nada” • mongoDB somente garante atomicidade no nível de um documento • mongoDB não implementa transação entre documentos ou collections
  • 17. DATA MODELING • GridFS • Especificação para armazenar e recuperar arquivos que excedem o tamanho de um documento (16MB) • Divide o arquivo em pedaços (chunks) e as armazenam em documentos separados, mantendo uma collection com meta dados dos arquivos • Recomendações de uso • Arquivo for maior que o tamanho de um documento • Necessidade de acessar parte de arquivos ao invés do arquivo todo
  • 18. CRUD OPERATIONS • Operações de Create, Read, Update e Delete • Cada operação afeta somente uma collection por vez
  • 19. CRUD OPERATIONS • Insert db.collection.insert( <document or array of documents>, { writeConcern: <document>, ordered: <boolean> } )
  • 20. CRUD OPERATIONS • Update db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } )
  • 23. OPERADORES LÓGICOS MONGO $lt (menor que) $lte (menor ou igual que) $gt (maior que) $gte (maior ou igual que) $all (corresponder a todos os valores em um array) $exists (verificar se um campo existe ou não) $mod (módulo) $ne (não igual)
  • 24. OPERADORES LÓGICOS MONGO $in (corresponder a um ou mais valores em um array) $nin (corresponder a valores zero em um array) $or (corresponder uma consulta a outra) $and (corresponder a todas as consultas) $nor (não corresponder uma consulta nem outra) $size (corresponder qualquer array com número definido de elementos) $type (corresponder valores com tipo de dados BSON especificado) $not (não igual a)
  • 25. COMANDOS MONGO • db.collection.count() retorna a quantidade de registros de uma coleção • db.collection.distinct({key}) retorna uma consulta distinta contendo todos os valores da chave informada • db.getCollectionNames() retorna todos os nomes das coleções • show dbs lista todas as bases de dados • use <data_base> conecta a uma base de dados
  • 26. COMANDOS MONGO • db exibe o nome da base de dados a qual está conectado • show collections exibe todas as coleções • db.collection.drop() deleta uma collection • db.dropDatabase() deleta uma base de dados • db.collection.selectOne()
  • 29. INICIALIZANDO • Processo mongod • Pasta data • Arquivo de configuração
  • 30. MONGOSHELL • Processo mongo • Shell interativo JavaScript • Autocompletion
  • 31. ROBOMONGO • Autocompletion • Space ignore • GUI Manipulation
  • 33. LINKS ÚTEIS • https://www.mongodb.org • https://docs.mongodb.org/manual/ • http://nosql-database.org • https://bitbucket.org/edmilsonneto/minicurso- mongodb • http://www.json.org