MongoDB: Uma forma diferente de pensar no desenvolvimento
-
Upload
marcos-thomaz -
Category
Data & Analytics
-
view
161 -
download
0
description
Transcript of MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: A nova e a velha forma de Pensar em Desenvolvimento
Marcos Thomaz da Silva
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
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;
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
MongoDB – Tipos de Dados
Suporte a principais tipos de dados: String; Double; Inteiros; Date; Null; Binary Data; TimeStamp; Boolean.
MongoDB – Tipos de Dados
E suporte a alguns tipos especiais: Array; Regular Expressions; Javascript ; ObjectID; Object;
Mas espere um pouco, não era OO!
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
MongoDB – DML
Suporte às principais operações DML (Data Manipulation Language): Insert; Update; Delete; e Select.
MongoDB – Drivers e Clientes
MongoDB é suportado pelas seguintes linguagens: Javascript; C, C++, Haskell; PHP, C#, Python, Perl, Ruby Erlang, Scala e Java;
MongoDB – Crescimento
Quem usa: CraigList; eBay; Foursquare; SourceForge; The New York Times;
MongoDB
Possui estrutura semelhante à outros Bancos de Dados: Tabelas; Registros; Campos; Índices;
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.
MongoDB – Tabelas e Campos
Tabelas: No MongoDB são chamadas de
Collections; Campos:
Sem restrição no nome do campo;
MongoDB - Registros
Chamados de Documents (Documentos);
São uma estrutura JSON; Podem ter diferentes campos em
uma mesma Collection;
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)
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;
MongoDB - Queries
MongoDB - Agregação
Permite os principais comandos de agregação: Sum; Max; Min; Count; Avg;
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.
MongoDB - Executáveis
Executáveis servidores (gerenciadores do banco):
Banco de Dados Executável
MySQL mysqld
Oracle oracle
MongoDB mongod
MongoDB - Executáveis
Executáveis de consulta:
Banco de Dados Executável
MySQL mysql
Oracle sqlplus
PostgreSQL psql
MondoDB mongo
MongoDB – Triggers/Procedures
MongoDB não suporta triggers nem procedures;
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
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;
Performance de Consultas - Exemplo
Performance de Consultas – Exemplo
E se precisar de mais desempenho...
Explain; Instrução Hint; Índices; Tablespaces; Sharding;
Exemplos de Implementação
E vamos para a prática...
Modelo 01 – Tabela Simples
Modelo 02 – Evoluindo o Modelo
Modelo 03 – Relacionamento 1:1
Modelo 03 – Relacionamento 1:1
Modelo 04 – Relacionamento 1:N
Modelo 04 – Relacionamento 1:N
Modelo 05 – Relacionamento 1:N
Modelo 05 – Relacionamento 1:N
Modelo 05 – Relacionamento 1:N
Realizando Consultas
Exemplo 01
Exemplo 02
Exemplo 03
Exemplo 04
Exemplo 05
Exemplo 06
Nem tudo são flores...
Exemplo 06
E por aí vai
Quando usar?
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