![Page 1: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/1.jpg)
MongoDB: A nova e a velha forma de Pensar em Desenvolvimento
Marcos Thomaz da Silva
![Page 2: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/2.jpg)
Sobre mim...
Bacharel em Sistemas de Informação pela Universidade Federal do Acre
Analista de Tecnologia da Informação da Universidade Federal do Acre
Desenvolvedor em Linguagens como Clipper, Delphi, PHP e Python
Entusiasta por Bancos de Dados e Otimização de Consultas
![Page 3: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/3.jpg)
MongoDB – Muito prazer!
Banco de Dados NoSQL; Desenvolvimento iniciado em 2007
(10gen); Primeiro Release em 2009 (MongoDB
Inc.); Escrito em C++; Multi-Plataforma (Windows, Linux,
OSX); OpenSource; Banco de Dados Orientado a
Documentos;
![Page 4: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/4.jpg)
MongoDB – Um pouco mais...
Binários para 32 e 64 bits; Pacotes disponíveis para várias
distribuições Linux (Red Hat, CentOS, Fedora, Debian, ...);
Utiliza Javascript como “motor” do sistema;
Documentos JSON; É NoSQL, não OO
![Page 5: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/5.jpg)
MongoDB – Tipos de Dados
Suporte a principais tipos de dados: String; Double; Inteiros; Date; Null; Binary Data; TimeStamp; Boolean.
![Page 6: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/6.jpg)
MongoDB – Tipos de Dados
E suporte a alguns tipos especiais: Array; Regular Expressions; Javascript ; ObjectID; Object;
Mas espere um pouco, não era OO!
![Page 7: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/7.jpg)
JSON – Definição
“JSON (JavaScript Object Notation - Notação de Objetos JavaScript) é uma formatação leve de troca de dados.”
“JSON é em formato texto e completamente independente de linguagem...”
Fonte: http://www.json.org/json-pt.html
![Page 8: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/8.jpg)
MongoDB – DML
Suporte às principais operações DML (Data Manipulation Language): Insert; Update; Delete; e Select.
![Page 9: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/9.jpg)
MongoDB – Drivers e Clientes
MongoDB é suportado pelas seguintes linguagens: Javascript; C, C++, Haskell; PHP, C#, Python, Perl, Ruby Erlang, Scala e Java;
![Page 10: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/10.jpg)
MongoDB – Crescimento
Quem usa: CraigList; eBay; Foursquare; SourceForge; The New York Times;
![Page 11: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/11.jpg)
MongoDB
Possui estrutura semelhante à outros Bancos de Dados: Tabelas; Registros; Campos; Índices;
![Page 12: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/12.jpg)
MongoDB – Bancos de Dados
Semelhança com uso do MySQL: Conexão com o servidor; Comando use para indicar qual
database; Sem integridade referencial (MyISAM); Criado dinamicamente.
![Page 13: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/13.jpg)
MongoDB – Tabelas e Campos
Tabelas: No MongoDB são chamadas de
Collections; Campos:
Sem restrição no nome do campo;
![Page 14: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/14.jpg)
MongoDB - Registros
Chamados de Documents (Documentos);
São uma estrutura JSON; Podem ter diferentes campos em
uma mesma Collection;
![Page 15: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/15.jpg)
MongoDB – Índices
Podem ser criados índices de ordem ascendente ou descendente;
Podem ser criados índices compostos;
Podem ser criados índices únicos (considerando ou ignorando nulos);
Existem chaves-primárias (por padrão são campos nomeados por _id)
Permite índices para busca textual (text indexes)
![Page 16: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/16.jpg)
MongoDB - Queries
Permite consultas por quaisquer campos das Collections;
Permite consultas em arrays (mesmo campos do tipo array);
Permite consultas com diversos filtros, aplicando instruções como order by, limit e skip;
![Page 17: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/17.jpg)
MongoDB - Queries
![Page 18: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/18.jpg)
MongoDB - Agregação
Permite os principais comandos de agregação: Sum; Max; Min; Count; Avg;
![Page 19: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/19.jpg)
MongoDB - GeoLocalização
Tipos GeoJSON; Cadastro de Polygons, Point’s,
LineString; Consultas baseadas em
coordenadas: União; Intersecção; e Proximidade.
Criação de índices para melhora das consultas espaciais.
![Page 20: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/20.jpg)
MongoDB - Executáveis
Executáveis servidores (gerenciadores do banco):
Banco de Dados Executável
MySQL mysqld
Oracle oracle
MongoDB mongod
![Page 21: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/21.jpg)
MongoDB - Executáveis
Executáveis de consulta:
Banco de Dados Executável
MySQL mysql
Oracle sqlplus
PostgreSQL psql
MondoDB mongo
![Page 22: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/22.jpg)
MongoDB – Triggers/Procedures
MongoDB não suporta triggers nem procedures;
![Page 23: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/23.jpg)
Um pouco mais além....
Replicação; Cluster; mongoimport / mongoexport; Console Interativo de Consulta; Servidor REST; Ferramentas de Backup/Restore; Monitoramento (mongotop,
mongostat); Segurança
![Page 24: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/24.jpg)
Pontos Favoráveis
Instalação/Configuração Simples Servidor Leve; Servidor REST; Text Search com Multiplos Campos; Alta Performance; Alta Disponibilidade; Facilmente Escalável; Performance em consultas;
![Page 25: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/25.jpg)
Performance de Consultas - Exemplo
![Page 26: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/26.jpg)
Performance de Consultas – Exemplo
![Page 27: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/27.jpg)
E se precisar de mais desempenho...
Explain; Instrução Hint; Índices; Tablespaces; Sharding;
![Page 28: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/28.jpg)
Exemplos de Implementação
![Page 29: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/29.jpg)
E vamos para a prática...
![Page 30: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/30.jpg)
Modelo 01 – Tabela Simples
![Page 31: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/31.jpg)
Modelo 02 – Evoluindo o Modelo
![Page 32: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/32.jpg)
Modelo 03 – Relacionamento 1:1
![Page 33: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/33.jpg)
Modelo 03 – Relacionamento 1:1
![Page 34: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/34.jpg)
Modelo 04 – Relacionamento 1:N
![Page 35: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/35.jpg)
Modelo 04 – Relacionamento 1:N
![Page 36: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/36.jpg)
Modelo 05 – Relacionamento 1:N
![Page 37: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/37.jpg)
Modelo 05 – Relacionamento 1:N
![Page 38: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/38.jpg)
Modelo 05 – Relacionamento 1:N
![Page 39: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/39.jpg)
Realizando Consultas
![Page 40: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/40.jpg)
Exemplo 01
![Page 41: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/41.jpg)
Exemplo 02
![Page 42: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/42.jpg)
Exemplo 03
![Page 43: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/43.jpg)
Exemplo 04
![Page 44: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/44.jpg)
Exemplo 05
![Page 45: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/45.jpg)
Exemplo 06
Nem tudo são flores...
![Page 46: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/46.jpg)
Exemplo 06
![Page 47: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/47.jpg)
E por aí vai
![Page 48: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/48.jpg)
Quando usar?
![Page 49: MongoDB: Uma forma diferente de pensar no desenvolvimento](https://reader036.vdocuments.pub/reader036/viewer/2022062319/5581df42d8b42a75268b4eae/html5/thumbnails/49.jpg)
Mais Informações
http://www.mongodb.org/ Site oficial do MongoDB
https://education.mongodb.com/ Site com cursos oficiais gratuitos
http://www.mongodb.org/about/production-deployments/ Lista de empresas que usam MongoDB