MongoDB: Uma forma diferente de pensar no desenvolvimento

49
MongoDB: A nova e a velha forma de Pensar em Desenvolvimento Marcos Thomaz da Silva

description

Apresentação sobre MongoDB, seus recursos, exemplos de uso e um comparativo de performance. Apresenta modelos e comandos básicos, porém úteis, comparando-os com comandos de bancos de dados relacionais, trazendo um comparativo básico de desempenho.

Transcript of MongoDB: Uma forma diferente de pensar no desenvolvimento

Page 1: MongoDB: Uma forma diferente de pensar no desenvolvimento

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

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

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

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

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

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

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

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

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

MongoDB – Crescimento

Quem usa: CraigList; eBay; Foursquare; SourceForge; The New York Times;

Page 11: MongoDB: Uma forma diferente de pensar no desenvolvimento

MongoDB

Possui estrutura semelhante à outros Bancos de Dados: Tabelas; Registros; Campos; Índices;

Page 12: MongoDB: Uma forma diferente de pensar no desenvolvimento

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

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

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

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

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

MongoDB - Queries

Page 18: MongoDB: Uma forma diferente de pensar no desenvolvimento

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

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

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

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

MongoDB – Triggers/Procedures

MongoDB não suporta triggers nem procedures;

Page 23: MongoDB: Uma forma diferente de pensar no desenvolvimento

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

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

Performance de Consultas - Exemplo

Page 26: MongoDB: Uma forma diferente de pensar no desenvolvimento

Performance de Consultas – Exemplo

Page 27: MongoDB: Uma forma diferente de pensar no desenvolvimento

E se precisar de mais desempenho...

Explain; Instrução Hint; Índices; Tablespaces; Sharding;

Page 28: MongoDB: Uma forma diferente de pensar no desenvolvimento

Exemplos de Implementação

Page 29: MongoDB: Uma forma diferente de pensar no desenvolvimento

E vamos para a prática...

Page 30: MongoDB: Uma forma diferente de pensar no desenvolvimento

Modelo 01 – Tabela Simples

Page 31: MongoDB: Uma forma diferente de pensar no desenvolvimento

Modelo 02 – Evoluindo o Modelo

Page 32: MongoDB: Uma forma diferente de pensar no desenvolvimento

Modelo 03 – Relacionamento 1:1

Page 33: MongoDB: Uma forma diferente de pensar no desenvolvimento

Modelo 03 – Relacionamento 1:1

Page 34: MongoDB: Uma forma diferente de pensar no desenvolvimento

Modelo 04 – Relacionamento 1:N

Page 35: MongoDB: Uma forma diferente de pensar no desenvolvimento

Modelo 04 – Relacionamento 1:N

Page 36: MongoDB: Uma forma diferente de pensar no desenvolvimento

Modelo 05 – Relacionamento 1:N

Page 37: MongoDB: Uma forma diferente de pensar no desenvolvimento

Modelo 05 – Relacionamento 1:N

Page 38: MongoDB: Uma forma diferente de pensar no desenvolvimento

Modelo 05 – Relacionamento 1:N

Page 39: MongoDB: Uma forma diferente de pensar no desenvolvimento

Realizando Consultas

Page 40: MongoDB: Uma forma diferente de pensar no desenvolvimento

Exemplo 01

Page 41: MongoDB: Uma forma diferente de pensar no desenvolvimento

Exemplo 02

Page 42: MongoDB: Uma forma diferente de pensar no desenvolvimento

Exemplo 03

Page 43: MongoDB: Uma forma diferente de pensar no desenvolvimento

Exemplo 04

Page 44: MongoDB: Uma forma diferente de pensar no desenvolvimento

Exemplo 05

Page 45: MongoDB: Uma forma diferente de pensar no desenvolvimento

Exemplo 06

Nem tudo são flores...

Page 46: MongoDB: Uma forma diferente de pensar no desenvolvimento

Exemplo 06

Page 47: MongoDB: Uma forma diferente de pensar no desenvolvimento

E por aí vai

Page 48: MongoDB: Uma forma diferente de pensar no desenvolvimento

Quando usar?

Page 49: MongoDB: Uma forma diferente de pensar no desenvolvimento

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