SlideShare uma empresa Scribd logo
1 de 44
MongoDB
INICIANDO COM NOSQL
Palestrante
Gabriel Alves Scavassa
Gestão de Projetos @ FAAG
Ciência da Computação @ USC
Desenvolvedor Web
Scrum Master
MongoDB
INICIANDO COM NOSQL
Objetivo
Conhecer as diferenças entre um banco de dados não relacional e um relacional, podendo
identificar as necessidade de uso de um banco não relacional. Conhecer e aplicar ações para criar
uma nova base de dados, assim como suas coleções e realizar procedimentos de inserção,
consulta, alteração e deleção de dados.
Agenda
Visão geral sobre bancos de dados
Introdução ao NoSQL
Banco de dados orientado a documento
Introdução ao MongoDB
JSON
Instalação do MongoDB
Primeiros comandos no MogoDB
CRUD
Operadores de Comparação e Lógicos
Exercícios
Agenda
Visão geral sobre bancos de dados
Introdução ao NoSQL
Banco de dados orientado a documento
Introdução ao MongoDB
JSON
Instalação do MongoDB
Primeiros comandos no MogoDB
CRUD
Operadores de Comparação e Lógicos
Exercícios
Visão geral sobre bancos de dados
Bancos de dados é uma entidade onde armazenamos dados de uma aplicação.
Estrutura que contem dados organizados que permite extrair informação.
Possuem um Sistema Gerenciador de Banco de Dados (SGDB).
Bancos de dados podem possuir SQL ou outra linguagem de comando e ser Relacional ou Não
Relacional.
Visão geral sobre bancos de dados
Relacional vs. Não relacional !
Relacional:
◦ Utiliza SQL para escrever query.
◦ Tabelas.
◦ ACID.
Não relacional:
◦ Estrutura de dados flexíveis.
◦ Redundância de dados.
◦ Diferentes tipos para escrever uma query.
◦ XML, DOC, JSON e etc...
Visão geral sobre bancos de dados
Relacional Não Relacional
Modelagem Tabelas com Linha e Colunas
normalizadas. As tabelas esperam
valores padronizados e em um formato
determinado.
Não há um esquema fixo. Existe duplicidade de
dados. Organização baseada em conjunto de
informações que a aplicação irá consumir.
Escalabilidade Mais fácil de escalar verticalmente com
Hardware.
Mais fácil escalar horizontalmente com mais
máquinas “pobres”.
Desempenho Depende do sistema do RDBMS (
componentes e configurações) e como a
estruturações das tabelas
Depende do programa que está utilizando.
Informações serão armazenadas em memória,
além do disco.
Visão geral sobre bancos de dados
RELACIONAIS NÃO RELACIONAIS
Agenda
Visão geral sobre bancos de dados
Introdução ao NoSQL
Banco de dados orientado a documento
Introdução ao MongoDB
JSON
Instalação do MongoDB
Primeiros comandos no MogoDB
CRUD
Operadores de Comparação e Lógicos
Exercícios
Introdução ao NoSQL
O Termo foi utilizado pela primeira vez por Carlo Strozzi.
◦ NoSQL era um banco de dados de código aberto e sem interface SQL.
Voltou a ser utilizado em 2009 quando Johan Oskarsson(Last.fm) organizava um evento sobre
bancos de código aberto.
◦ Em uma conferencia via IRC Eric Evans (rackspace) sugeriu este nome.
Segundo muitos, o nome deveria ser NoREL...
◦ É/foi chamado também de Schemaless, Doc DB, MR2N....
Introdução ao NoSQL
O termo NoSQL é utilizado para classificar bancos de dados não relacionais.
Estes bancos tem como proposta solucionar problemas de escalabilidade e melhorar a
performance em ações de escrita e leitura.
As informações necessárias estão em um mesmo registro!
Introdução ao NoSQL
São divididos em núcleos, ou seja, como eles trabalham com os dados.
◦ Podendo ser: Documento, Chave/Valor, Grafo, XML DB, Object Database e muitos outros.
Cada núcleo SQL possui sua própria maneira de escrever Querys.
Introdução ao NoSQL
A guerra santa entre NoSQL e SQL(relacionais) geram alguns mitos...
O Framework ou linguagem determina a base de dados
◦ MEAN (MongoDb, Express, Angular e NodeJS)
◦ LAMP (Linux, Apache Server, MySQL e PHP)
◦ Java + Apache + Oracle
◦ .NET + IIS + SQL Server
NoSQL não é seguro igual ao SQL
Introdução ao NoSQL
NoSQL é superior ao SQL.
Só se usa NoSQL para aplicações pequenas.
Introdução ao NoSQL
O NoSQL NÃO RESOLVE TODOS OS PROBLEMAS DO MUNDO!
Ainda não é seguro dizer que podemos utilizar NoSQL para sistemas que dependam de
ACID(Atomicidade, Consistência, Isolamento e Durabilidade), ou seja, se você precisar
realizar transações financeiras, os bancos NoSQL não são apropriados.
Sites onde o número de consultas é alto, onde a escalabilidade é uma necessidade e a
disponibilidade dos dados é imprescindível, como E-commerces, Redes Sociais, APIs de Consultas
e Geradores de Log(registros), bancos NoSQL vão te ajudar.
Agenda
Visão geral sobre bancos de dados
Introdução ao NoSQL
Banco de dados orientado a documento
Introdução ao MongoDB
JSON
Instalação do MongoDB
Primeiros comandos no MogoDB
CRUD
Operadores de Comparação e Lógicos
Exercícios
Banco de dados orientado a documento
São bases com documentos auto descritivos, ou seja, o próprio documento já é a definição do o
que é a informação e como ele deve ser apresentado.
Livres de esquema, Identificadores únicos, Consulta por métodos avançados, Redundância e
inconsistência.
Não possui uma abordagem bidimensional.
Banco de dados orientado a documento
Agenda
Visão geral sobre bancos de dados
Introdução ao NoSQL
Banco de dados orientado a documento
Introdução ao MongoDB
JSON
Instalação do MongoDB
Primeiros comandos no MogoDB
CRUD
Operadores de Comparação e Lógicos
Exercícios
Introdução ao MongoDB
Orientado a documento.
Código fonte aberto.
Escrito em C++.
Multiplataforma.
Querys escritas em JSON.
Introdução ao MongoDB
Mantido por MongoDB Inc. https://www.mongodb.com/
Versão atual 3.2.4.
Comunidade Ativa!
Fácil instalação.
Quem utiliza?
Introdução ao MongoDB
Introdução ao MongoDB
Terminologia
Introdução ao MongoDB
Relacional MongoDB
Database / Banco / DB Database / Banco / DB
Tabela Collection / Coleção
Linhas Document / Documento
Coluna Field / campo
Index Index
Joins -
Primary Key / Chave Primary Key / Chave
Introdução ao MongoDB
Estrutura
Introdução ao MongoDB
Introdução ao MongoDB
Cada documento, é uma informação do banco.
Eles são escritos em JSON.
O tamanho máximo de um arquivo JSON é de 16mb.
Introdução ao MongoDB
Introdução ao MongoDB
Documento JSON + auto descrição = redundância de dados!
Estruturar uma base no Mongo
◦ Devemos pensar em quais perguntas nós iremos responder.
◦ Quais dados nós iremos separar e quais iremos agrupar?
Ao consultar uma informação, deveremos ter isoladamente todas as informações necessárias.
Existem vantagens e desvantagens com isto...
Introdução ao MongoDB
Maior performance para escrita e leitura de dados.
Atualizar dados, um a um...
Introdução ao MongoDB
Exemplo:
Esquema de um Blog. Neste blog um autor pode postar e acrescentar tags aos seus posts. O
próprio autor e demais usuários cadastrados no site podem comentar nos posts.
Introdução ao MongoDB
Em um modelo Relacional
Introdução ao MongoDB
Introdução ao MongoDB
Não podemos criar relacionamento entre collections no MongoDB ?? 
Introdução ao MongoDB
Não podemos criar relacionamento entre collections no MongoDB ?? 
Sim!  Mas cuidado com a performance .
Para enteder melhor, vamos analisar um caso.
Introdução ao MongoDB
Exemplo:
Montadora tem N modelo de carros e um modelo de carro pertence a apenas uma única
montadora.
Introdução ao MongoDB
{
_id: objectId(“1981919”),
Carro: “Cruze”,
Modelo: “2015”
Montadora:{
_id: objectId(“872317”),
Montadora: “Chevrolet”
}
}
Objeto
JSON
de Carro
Informações sobre o
carro
Informações sobre a
montadora
Introdução ao MongoDB
Desta forma se pesquisarmos no DB sobre uma montadora, uma lista de carros também
aparecerá.
Dependendo das informações que nós formos colocar neste modelo, temos que ter atenção
para o tamanho limite de 16mb de um arquivo Json.
E se nós colocássemos todos os carros em uma montadora?
Introdução ao MongoDB{
_id: objectId(“91jw918”),
Montadora: “Chevrolet,
Modelos: [
{
_id:objectid(“98198”),
Carro: “Cruze”,
modelo: 2015
},
{
_id:objectid(“98198”),
Carro: “Onix”,
modelo: 2015
}
]
}
• Em pouco tempo, nós estouraríamos o limite de 16mb.
Informações sobre o carro
Informações sobre o carro
Informações sobre a montadora
Objeto JSON de Montadora
Introdução ao MongoDB
Nós podemos ter um Array dentro do objeto Montadora
contendo os ID’s dos Carros!
{
_id: objectId(“91jw918”),
Montadora: “Chevrolet,
Modelos: [ “9j9128jj”, “9h8fh837”, “fh7568h9”]
}
Desta maneira, teremos um Array muito grande para percorrer!
Introdução ao MongoDB
Mas podemos colocar o ID da montadora dentro do Carro!
{
_id: objectId(“1981919”),
Carro: “Cruze”,
Modelo: “2015”
Montadora: “h1h919n0”
}
Desta maneira, teremos um dado Linkado em um documento. Nós reduzimos um grande
número de informações
Esta situação deve ser sempre bem analisada.
Introdução ao MongoDB
O MongoDB também posusi uma documentação para ajudar a desenvolvedores utilizar
relacionamento.
https://docs.mongodb.org/manual/tutorial/model-referenced-one-to-many-relationships-
between-documents/

Mais conteúdo relacionado

Mais procurados

Apresentação MongoDB
Apresentação MongoDBApresentação MongoDB
Apresentação MongoDBDavid de Lucca
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dadosvini_campos
 
Introdução a modelagem de dados - Banco de Dados
Introdução a modelagem de dados - Banco de DadosIntrodução a modelagem de dados - Banco de Dados
Introdução a modelagem de dados - Banco de Dadosinfo_cimol
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPAricelio Souza
 
Non Relational Databases
Non Relational DatabasesNon Relational Databases
Non Relational DatabasesChris Baglieri
 
Apresentação Final de Banco de Dados
Apresentação Final de Banco de DadosApresentação Final de Banco de Dados
Apresentação Final de Banco de Dadossamlobo
 
NOSQL uma breve introdução
NOSQL uma breve introduçãoNOSQL uma breve introdução
NOSQL uma breve introduçãoWise Systems
 
Criação de uma base de dados para gestão de uma biblioteca
Criação de uma base de dados para gestão de uma bibliotecaCriação de uma base de dados para gestão de uma biblioteca
Criação de uma base de dados para gestão de uma bibliotecaDavid Canjamba 2D
 
Sqlite - Introdução
Sqlite - IntroduçãoSqlite - Introdução
Sqlite - IntroduçãoJoao Johanes
 
Módulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informaçãoMódulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informaçãoLuis Ferreira
 

Mais procurados (20)

Aula 2 banco de dados
Aula 2   banco de dadosAula 2   banco de dados
Aula 2 banco de dados
 
IBM DB2
IBM DB2IBM DB2
IBM DB2
 
Aula 2 - Introdução a Banco de Dados
Aula 2 - Introdução a Banco de DadosAula 2 - Introdução a Banco de Dados
Aula 2 - Introdução a Banco de Dados
 
NoSQL - MongoDB
NoSQL - MongoDBNoSQL - MongoDB
NoSQL - MongoDB
 
Banco de Dados IBM DB2
Banco de Dados IBM DB2Banco de Dados IBM DB2
Banco de Dados IBM DB2
 
Apresentação MongoDB
Apresentação MongoDBApresentação MongoDB
Apresentação MongoDB
 
Carboidratos
CarboidratosCarboidratos
Carboidratos
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dados
 
Introdução a modelagem de dados - Banco de Dados
Introdução a modelagem de dados - Banco de DadosIntrodução a modelagem de dados - Banco de Dados
Introdução a modelagem de dados - Banco de Dados
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 
Introdução a Bancos de Dados
Introdução a Bancos de DadosIntrodução a Bancos de Dados
Introdução a Bancos de Dados
 
Non Relational Databases
Non Relational DatabasesNon Relational Databases
Non Relational Databases
 
Apresentação Final de Banco de Dados
Apresentação Final de Banco de DadosApresentação Final de Banco de Dados
Apresentação Final de Banco de Dados
 
NOSQL uma breve introdução
NOSQL uma breve introduçãoNOSQL uma breve introdução
NOSQL uma breve introdução
 
My sql vs mongo
My sql vs mongoMy sql vs mongo
My sql vs mongo
 
Criação de uma base de dados para gestão de uma biblioteca
Criação de uma base de dados para gestão de uma bibliotecaCriação de uma base de dados para gestão de uma biblioteca
Criação de uma base de dados para gestão de uma biblioteca
 
Sqlite - Introdução
Sqlite - IntroduçãoSqlite - Introdução
Sqlite - Introdução
 
Módulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informaçãoMódulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informação
 
Introduction to mongodb
Introduction to mongodbIntroduction to mongodb
Introduction to mongodb
 

Destaque

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
 
Modelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBModelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBThiago Avelino
 
BANCO DE DADOS MONGODB VS BANCO DE DADOS SQL SERVER 2008
BANCO DE DADOS MONGODB VS BANCO DE DADOS SQL SERVER 2008BANCO DE DADOS MONGODB VS BANCO DE DADOS SQL SERVER 2008
BANCO DE DADOS MONGODB VS BANCO DE DADOS SQL SERVER 2008CharlesAlfenasmg
 
#6 Operadores de Comparação e Lógicos no MongoDB
#6   Operadores de Comparação e Lógicos no MongoDB#6   Operadores de Comparação e Lógicos no MongoDB
#6 Operadores de Comparação e Lógicos no MongoDBGabriel Alves Scavassa
 
MongoDB - Javascript for your Data
MongoDB - Javascript for your DataMongoDB - Javascript for your Data
MongoDB - Javascript for your DataPaulo Fagundes
 
Indexing and Query Optimization
Indexing and Query OptimizationIndexing and Query Optimization
Indexing and Query OptimizationMongoDB
 
Webinar: MongoDB and Hadoop - Working Together to provide Business Insights
Webinar: MongoDB and Hadoop - Working Together to provide Business InsightsWebinar: MongoDB and Hadoop - Working Together to provide Business Insights
Webinar: MongoDB and Hadoop - Working Together to provide Business InsightsMongoDB
 
No sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbNo sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbfabio perrella
 
Naturligt vaegttab kosttilskud, der kan vaere en fare for sundheden
Naturligt vaegttab kosttilskud, der kan vaere en fare for sundhedenNaturligt vaegttab kosttilskud, der kan vaere en fare for sundheden
Naturligt vaegttab kosttilskud, der kan vaere en fare for sundhedenhumoroustempo408
 
Thong tin tuyen_sinh_cac_truong_quan_doi
Thong tin tuyen_sinh_cac_truong_quan_doiThong tin tuyen_sinh_cac_truong_quan_doi
Thong tin tuyen_sinh_cac_truong_quan_doichienhuynh12
 
Mot so de_toan_on_0_3
Mot so de_toan_on_0_3Mot so de_toan_on_0_3
Mot so de_toan_on_0_3chienhuynh12
 

Destaque (20)

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
 
Modelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBModelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDB
 
#3 Instalação MongoDB
#3   Instalação MongoDB  #3   Instalação MongoDB
#3 Instalação MongoDB
 
#2 JSON Overview
#2   JSON Overview #2   JSON Overview
#2 JSON Overview
 
BANCO DE DADOS MONGODB VS BANCO DE DADOS SQL SERVER 2008
BANCO DE DADOS MONGODB VS BANCO DE DADOS SQL SERVER 2008BANCO DE DADOS MONGODB VS BANCO DE DADOS SQL SERVER 2008
BANCO DE DADOS MONGODB VS BANCO DE DADOS SQL SERVER 2008
 
Scrum - evolução contínua
Scrum - evolução contínuaScrum - evolução contínua
Scrum - evolução contínua
 
#6 Operadores de Comparação e Lógicos no MongoDB
#6   Operadores de Comparação e Lógicos no MongoDB#6   Operadores de Comparação e Lógicos no MongoDB
#6 Operadores de Comparação e Lógicos no MongoDB
 
MongoDB - Javascript for your Data
MongoDB - Javascript for your DataMongoDB - Javascript for your Data
MongoDB - Javascript for your Data
 
Capacityplanning
Capacityplanning Capacityplanning
Capacityplanning
 
Indexing and Query Optimization
Indexing and Query OptimizationIndexing and Query Optimization
Indexing and Query Optimization
 
Webinar: MongoDB and Hadoop - Working Together to provide Business Insights
Webinar: MongoDB and Hadoop - Working Together to provide Business InsightsWebinar: MongoDB and Hadoop - Working Together to provide Business Insights
Webinar: MongoDB and Hadoop - Working Together to provide Business Insights
 
No sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbNo sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodb
 
Diabetes Ev Doc 2013
Diabetes Ev Doc 2013Diabetes Ev Doc 2013
Diabetes Ev Doc 2013
 
Sundhed & Fitness Butik
Sundhed & Fitness ButikSundhed & Fitness Butik
Sundhed & Fitness Butik
 
15
1515
15
 
Slide tiếng anh
Slide tiếng anhSlide tiếng anh
Slide tiếng anh
 
null
nullnull
null
 
Naturligt vaegttab kosttilskud, der kan vaere en fare for sundheden
Naturligt vaegttab kosttilskud, der kan vaere en fare for sundhedenNaturligt vaegttab kosttilskud, der kan vaere en fare for sundheden
Naturligt vaegttab kosttilskud, der kan vaere en fare for sundheden
 
Thong tin tuyen_sinh_cac_truong_quan_doi
Thong tin tuyen_sinh_cac_truong_quan_doiThong tin tuyen_sinh_cac_truong_quan_doi
Thong tin tuyen_sinh_cac_truong_quan_doi
 
Mot so de_toan_on_0_3
Mot so de_toan_on_0_3Mot so de_toan_on_0_3
Mot so de_toan_on_0_3
 

Semelhante a #1 Introdução ao MongoDB

NoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEANNoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEANOsmar Petry
 
Cobo, Cristiane Brandão. Especialização Banco de Dados
Cobo, Cristiane Brandão. Especialização Banco de DadosCobo, Cristiane Brandão. Especialização Banco de Dados
Cobo, Cristiane Brandão. Especialização Banco de Dadoscris.finholdt
 
MongoDB com Java - SouJava
MongoDB com Java - SouJavaMongoDB com Java - SouJava
MongoDB com Java - SouJavaFernando Boaglio
 
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
 
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
 
MongoDB com Java - GUOB 2018
MongoDB com Java  - GUOB  2018MongoDB com Java  - GUOB  2018
MongoDB com Java - GUOB 2018Fernando Boaglio
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2Flávio Lisboa
 
Arquitetura de banco de dados
Arquitetura de banco de dadosArquitetura de banco de dados
Arquitetura de banco de dadosFelipe Correia
 
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
 
Nao perca tempo com bancos de dados relacionais, use mongo db
Nao perca tempo com bancos de dados relacionais,   use mongo dbNao perca tempo com bancos de dados relacionais,   use mongo db
Nao perca tempo com bancos de dados relacionais, use mongo dbFernando Boaglio
 
MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014Fernando Boaglio
 
Alinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLAlinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLpichiliani
 
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
 
MongoDB também no Azure? SIM! - DevOps Summit 2017
MongoDB também no Azure? SIM! - DevOps Summit 2017MongoDB também no Azure? SIM! - DevOps Summit 2017
MongoDB também no Azure? SIM! - DevOps Summit 2017Renato Groff
 

Semelhante a #1 Introdução ao MongoDB (20)

NoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEANNoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEAN
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
Cobo, Cristiane Brandão. Especialização Banco de Dados
Cobo, Cristiane Brandão. Especialização Banco de DadosCobo, Cristiane Brandão. Especialização Banco de Dados
Cobo, Cristiane Brandão. Especialização Banco de Dados
 
mongodb.pdf
mongodb.pdfmongodb.pdf
mongodb.pdf
 
MongoDB com Java - SouJava
MongoDB com Java - SouJavaMongoDB com Java - SouJava
MongoDB com Java - SouJava
 
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
 
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)
 
MongoDB com Java - GUOB 2018
MongoDB com Java  - GUOB  2018MongoDB com Java  - GUOB  2018
MongoDB com Java - GUOB 2018
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
Bancos de dados NoSQL
Bancos de dados NoSQLBancos de dados NoSQL
Bancos de dados NoSQL
 
Arquitetura de banco de dados
Arquitetura de banco de dadosArquitetura de banco de dados
Arquitetura de banco de dados
 
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
 
Nao perca tempo com bancos de dados relacionais, use mongo db
Nao perca tempo com bancos de dados relacionais,   use mongo dbNao perca tempo com bancos de dados relacionais,   use mongo db
Nao perca tempo com bancos de dados relacionais, use mongo db
 
Mongo
MongoMongo
Mongo
 
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)
 
MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014
 
Alinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLAlinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQL
 
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
 
MongoDB também no Azure? SIM! - DevOps Summit 2017
MongoDB também no Azure? SIM! - DevOps Summit 2017MongoDB também no Azure? SIM! - DevOps Summit 2017
MongoDB também no Azure? SIM! - DevOps Summit 2017
 

Último

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 

Último (6)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

#1 Introdução ao MongoDB

  • 2. Palestrante Gabriel Alves Scavassa Gestão de Projetos @ FAAG Ciência da Computação @ USC Desenvolvedor Web Scrum Master
  • 4. Objetivo Conhecer as diferenças entre um banco de dados não relacional e um relacional, podendo identificar as necessidade de uso de um banco não relacional. Conhecer e aplicar ações para criar uma nova base de dados, assim como suas coleções e realizar procedimentos de inserção, consulta, alteração e deleção de dados.
  • 5. Agenda Visão geral sobre bancos de dados Introdução ao NoSQL Banco de dados orientado a documento Introdução ao MongoDB JSON Instalação do MongoDB Primeiros comandos no MogoDB CRUD Operadores de Comparação e Lógicos Exercícios
  • 6. Agenda Visão geral sobre bancos de dados Introdução ao NoSQL Banco de dados orientado a documento Introdução ao MongoDB JSON Instalação do MongoDB Primeiros comandos no MogoDB CRUD Operadores de Comparação e Lógicos Exercícios
  • 7. Visão geral sobre bancos de dados Bancos de dados é uma entidade onde armazenamos dados de uma aplicação. Estrutura que contem dados organizados que permite extrair informação. Possuem um Sistema Gerenciador de Banco de Dados (SGDB). Bancos de dados podem possuir SQL ou outra linguagem de comando e ser Relacional ou Não Relacional.
  • 8. Visão geral sobre bancos de dados Relacional vs. Não relacional ! Relacional: ◦ Utiliza SQL para escrever query. ◦ Tabelas. ◦ ACID. Não relacional: ◦ Estrutura de dados flexíveis. ◦ Redundância de dados. ◦ Diferentes tipos para escrever uma query. ◦ XML, DOC, JSON e etc...
  • 9. Visão geral sobre bancos de dados Relacional Não Relacional Modelagem Tabelas com Linha e Colunas normalizadas. As tabelas esperam valores padronizados e em um formato determinado. Não há um esquema fixo. Existe duplicidade de dados. Organização baseada em conjunto de informações que a aplicação irá consumir. Escalabilidade Mais fácil de escalar verticalmente com Hardware. Mais fácil escalar horizontalmente com mais máquinas “pobres”. Desempenho Depende do sistema do RDBMS ( componentes e configurações) e como a estruturações das tabelas Depende do programa que está utilizando. Informações serão armazenadas em memória, além do disco.
  • 10. Visão geral sobre bancos de dados RELACIONAIS NÃO RELACIONAIS
  • 11. Agenda Visão geral sobre bancos de dados Introdução ao NoSQL Banco de dados orientado a documento Introdução ao MongoDB JSON Instalação do MongoDB Primeiros comandos no MogoDB CRUD Operadores de Comparação e Lógicos Exercícios
  • 12. Introdução ao NoSQL O Termo foi utilizado pela primeira vez por Carlo Strozzi. ◦ NoSQL era um banco de dados de código aberto e sem interface SQL. Voltou a ser utilizado em 2009 quando Johan Oskarsson(Last.fm) organizava um evento sobre bancos de código aberto. ◦ Em uma conferencia via IRC Eric Evans (rackspace) sugeriu este nome. Segundo muitos, o nome deveria ser NoREL... ◦ É/foi chamado também de Schemaless, Doc DB, MR2N....
  • 13. Introdução ao NoSQL O termo NoSQL é utilizado para classificar bancos de dados não relacionais. Estes bancos tem como proposta solucionar problemas de escalabilidade e melhorar a performance em ações de escrita e leitura. As informações necessárias estão em um mesmo registro!
  • 14. Introdução ao NoSQL São divididos em núcleos, ou seja, como eles trabalham com os dados. ◦ Podendo ser: Documento, Chave/Valor, Grafo, XML DB, Object Database e muitos outros. Cada núcleo SQL possui sua própria maneira de escrever Querys.
  • 15. Introdução ao NoSQL A guerra santa entre NoSQL e SQL(relacionais) geram alguns mitos... O Framework ou linguagem determina a base de dados ◦ MEAN (MongoDb, Express, Angular e NodeJS) ◦ LAMP (Linux, Apache Server, MySQL e PHP) ◦ Java + Apache + Oracle ◦ .NET + IIS + SQL Server NoSQL não é seguro igual ao SQL
  • 16. Introdução ao NoSQL NoSQL é superior ao SQL. Só se usa NoSQL para aplicações pequenas.
  • 17. Introdução ao NoSQL O NoSQL NÃO RESOLVE TODOS OS PROBLEMAS DO MUNDO! Ainda não é seguro dizer que podemos utilizar NoSQL para sistemas que dependam de ACID(Atomicidade, Consistência, Isolamento e Durabilidade), ou seja, se você precisar realizar transações financeiras, os bancos NoSQL não são apropriados. Sites onde o número de consultas é alto, onde a escalabilidade é uma necessidade e a disponibilidade dos dados é imprescindível, como E-commerces, Redes Sociais, APIs de Consultas e Geradores de Log(registros), bancos NoSQL vão te ajudar.
  • 18. Agenda Visão geral sobre bancos de dados Introdução ao NoSQL Banco de dados orientado a documento Introdução ao MongoDB JSON Instalação do MongoDB Primeiros comandos no MogoDB CRUD Operadores de Comparação e Lógicos Exercícios
  • 19. Banco de dados orientado a documento São bases com documentos auto descritivos, ou seja, o próprio documento já é a definição do o que é a informação e como ele deve ser apresentado. Livres de esquema, Identificadores únicos, Consulta por métodos avançados, Redundância e inconsistência. Não possui uma abordagem bidimensional.
  • 20. Banco de dados orientado a documento
  • 21. Agenda Visão geral sobre bancos de dados Introdução ao NoSQL Banco de dados orientado a documento Introdução ao MongoDB JSON Instalação do MongoDB Primeiros comandos no MogoDB CRUD Operadores de Comparação e Lógicos Exercícios
  • 22. Introdução ao MongoDB Orientado a documento. Código fonte aberto. Escrito em C++. Multiplataforma. Querys escritas em JSON.
  • 23. Introdução ao MongoDB Mantido por MongoDB Inc. https://www.mongodb.com/ Versão atual 3.2.4. Comunidade Ativa! Fácil instalação. Quem utiliza?
  • 26. Introdução ao MongoDB Relacional MongoDB Database / Banco / DB Database / Banco / DB Tabela Collection / Coleção Linhas Document / Documento Coluna Field / campo Index Index Joins - Primary Key / Chave Primary Key / Chave
  • 29. Introdução ao MongoDB Cada documento, é uma informação do banco. Eles são escritos em JSON. O tamanho máximo de um arquivo JSON é de 16mb.
  • 31. Introdução ao MongoDB Documento JSON + auto descrição = redundância de dados! Estruturar uma base no Mongo ◦ Devemos pensar em quais perguntas nós iremos responder. ◦ Quais dados nós iremos separar e quais iremos agrupar? Ao consultar uma informação, deveremos ter isoladamente todas as informações necessárias. Existem vantagens e desvantagens com isto...
  • 32. Introdução ao MongoDB Maior performance para escrita e leitura de dados. Atualizar dados, um a um...
  • 33. Introdução ao MongoDB Exemplo: Esquema de um Blog. Neste blog um autor pode postar e acrescentar tags aos seus posts. O próprio autor e demais usuários cadastrados no site podem comentar nos posts.
  • 34. Introdução ao MongoDB Em um modelo Relacional
  • 36. Introdução ao MongoDB Não podemos criar relacionamento entre collections no MongoDB ?? 
  • 37. Introdução ao MongoDB Não podemos criar relacionamento entre collections no MongoDB ??  Sim!  Mas cuidado com a performance . Para enteder melhor, vamos analisar um caso.
  • 38. Introdução ao MongoDB Exemplo: Montadora tem N modelo de carros e um modelo de carro pertence a apenas uma única montadora.
  • 39. Introdução ao MongoDB { _id: objectId(“1981919”), Carro: “Cruze”, Modelo: “2015” Montadora:{ _id: objectId(“872317”), Montadora: “Chevrolet” } } Objeto JSON de Carro Informações sobre o carro Informações sobre a montadora
  • 40. Introdução ao MongoDB Desta forma se pesquisarmos no DB sobre uma montadora, uma lista de carros também aparecerá. Dependendo das informações que nós formos colocar neste modelo, temos que ter atenção para o tamanho limite de 16mb de um arquivo Json. E se nós colocássemos todos os carros em uma montadora?
  • 41. Introdução ao MongoDB{ _id: objectId(“91jw918”), Montadora: “Chevrolet, Modelos: [ { _id:objectid(“98198”), Carro: “Cruze”, modelo: 2015 }, { _id:objectid(“98198”), Carro: “Onix”, modelo: 2015 } ] } • Em pouco tempo, nós estouraríamos o limite de 16mb. Informações sobre o carro Informações sobre o carro Informações sobre a montadora Objeto JSON de Montadora
  • 42. Introdução ao MongoDB Nós podemos ter um Array dentro do objeto Montadora contendo os ID’s dos Carros! { _id: objectId(“91jw918”), Montadora: “Chevrolet, Modelos: [ “9j9128jj”, “9h8fh837”, “fh7568h9”] } Desta maneira, teremos um Array muito grande para percorrer!
  • 43. Introdução ao MongoDB Mas podemos colocar o ID da montadora dentro do Carro! { _id: objectId(“1981919”), Carro: “Cruze”, Modelo: “2015” Montadora: “h1h919n0” } Desta maneira, teremos um dado Linkado em um documento. Nós reduzimos um grande número de informações Esta situação deve ser sempre bem analisada.
  • 44. Introdução ao MongoDB O MongoDB também posusi uma documentação para ajudar a desenvolvedores utilizar relacionamento. https://docs.mongodb.org/manual/tutorial/model-referenced-one-to-many-relationships- between-documents/

Notas do Editor

  1. - Inconsistencia do Inglês e não do português!!! Demora para ter a informação e não que ela não possa ser salva.
  2. - Por ser uma tecnologia relativamente nova, e pela comunidade não adotar mais o abito da tradução, muito se vê por ai a terminologia em inglês mesmo. Mesmo trabalhando em empresas brasileiras de pequeno porte. Exemplo disto são os fórums de JS e MongoDB no Brasil... Não se usa a versão em português.
  3. EXEMPLO : Pessoa – Aluno – Curso. A tabela Aluno tem o ID do Aluno e o ID do Curso. No nosso caso, temos apenas uma collection Aluno. Nela tem todas informações das pessoas e todas as informações do curso.