MongoDB: Uma forma diferente de pensar no desenvolvimento

Post on 18-Jun-2015

161 views 0 download

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

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