1. Modelo NoSQL orientado à documentosModelo NoSQL orientado à documentos
Bruno Gabriel dos Santos
bruno.gsantos89@gmail.com
2. AgendaAgenda
Tópicos:
1. O que é NoSQL?
2. MongoDB;
3. Exemplo de Modelagem;
4. Instruções básicas;
5. Geoposition;
6. Modelo Pipeline;
7. Referências.
3. NoSQL: Not Only SQLNoSQL: Not Only SQL
Banco de Dados não relacional, nada de ACID:
● Modelo BASE Eventual: uma hora vai→
acontecer;
● Uso: Grandes quantidades de dados não
estruturados:
● Arquivos textuais, e-mail, multimídia etc.;
● Características:
● Eventual: uma hora vai acontecer;
● Arquitetura simplificada;
● Alta performance.
4. NoSQL: Breve histórico...NoSQL: Breve histórico...
● Surgimento: 2009;
● Johan Oskarsson e Eric Evans;
● Objectivo: Discutir o crescente surgimento de
novas soluções open source para
armazenamento de dados distribuídos de
forma “não relacional”.
5. Não Relacional X RelacionalNão Relacional X Relacional
● Distribuição:
● Dados particionados, distribuídos em inúmeros
servidores, p.e: computação em núvem;
● Evita perda de dados: Distribuição.
● Sem normalização;
● Desempenho: abrir mão da consistência:
● Consistência envolve:
● Integridade de dados;
● Unicidade de chaves e valores lógicos;
● Sem duplicação.
8. Modelos de base de dadosModelos de base de dados
● Chave/Valor;
● Orientado à grafos;
● Orientado à documentos;
● Família de colunas.
9. Chave/ValorChave/Valor
● Prós:
● Semelhança: Hash/Map;
● Simplicidades;
● Query constante: Qual a complexidade O(?):
● Chaves indexadas: <key, value>.
● Cache de memória;
● Contras:
● Complexidade na elaboração de chaves;
● Apenas um valor por chave.
10. Orientados à grafosOrientados à grafos
● Prós:
● Sem conceitos estruturados;
● Sem quedas de performance entre muitas
consultas envolvendo joins;
● Consultas rápidas.
● Contras:
● Complexidade dos grafos;
● Sharding: hoje é essencial: longas bases de
dados.
12. Orientados à documentosOrientados à documentos
● Prós:
● Simples;
● Escalável;
● Query.
● Contras:
● Map Reduce para longas queries;
● Modelos limitados a indexação e chaves.
13. Família de ColunasFamília de Colunas
● Prós:
● Compreensão dos Dados (cada coluna contém
só seu tipo);
● Mais eficiência (vide anterior).
● Contras:
● Armazenamento complexo;
● Sem interface amigável (query?).
14. MongoDB: Orientado à DocumentosMongoDB: Orientado à Documentos
● Significa monstruoso, extremamente grande;
● Escrito em C++;
● Entrada JSON, armazenamento BSON;
● Desenvolvimento rápido;
● Vantagens da multiplicidade de índices;
● Suporte a muitas linguagens de programação;
● Indexe aquilo que você mais busca:
● Desempenho superior!!!
20. Exemplo de Modelagem: CartolaExemplo de Modelagem: Cartola
Franklin Amorim: http://www.slideshare.net/franklinamorim/mongodb-globocom MongoSP
21. Instruções básicas: ComandosInstruções básicas: Comandos
Abre no terminal!
Exibe os dbs!
Usando uma base de
dados!!! Deletando
uma base de dados e
suas coleções.
26. Aggregation: Modelo PipelineAggregation: Modelo Pipeline
● Operações fora de ordem mudam o resultado;
● Suporte a muitas operações;
● Possui semelhantes a NoSQL exceto Join;
● Suporta Geoposition como primeira etapa.