Introdução ao MongoDB: conceitos e práticas

42
Introdução ao MongoDB conceitos e práticas 26ª Semana da Computação - UNESP/IBILCE Empresa Júnior de Ciência da Computação - ECCjr Bruno Barreto Carvalho

Transcript of Introdução ao MongoDB: conceitos e práticas

Page 1: Introdução ao MongoDB: conceitos e práticas

Introdução ao MongoDBconceitos e práticas

26ª Semana da Computação - UNESP/IBILCEEmpresa Júnior de Ciência da Computação - ECCjrBruno Barreto Carvalho

Page 2: Introdução ao MongoDB: conceitos e práticas

Sobre mimEstudante da UNESP desde 2014

Na Empresa Júnior desde 2015

Estudando Javascript desde agosto de 2015

Atualmente estudando assuntos relacionados a Big Data

Linguagens favoritas: Javascript e Scala

@carvalh0ak

Bruno Barreto Carvalho

box3x4

Page 3: Introdução ao MongoDB: conceitos e práticas

Empresa Júnior- Desenvolve projetos e presta serviços nas áreas de

desenvolvimento de softwares, soluções para web e consultoria computacional, principalmente para micro e pequenas empresas. Sempre aberta a trabalhar com novas tecnologias.

- Infelizmente ainda nao fizemos um projeto usando o MongoDB, mas eu tenho esperanças ainda!

Contatos

eccjr.com.br

facebook.com/eccjrunesp

[email protected]

Page 4: Introdução ao MongoDB: conceitos e práticas

O modelo relacional.

Page 5: Introdução ao MongoDB: conceitos e práticas

Breve história- Edgar Frank Codd publica o primeiro artigo sobre bancos relacionais em 1970. Sua publicação

leva a criação do grupo System R.

- Depois, é criado a SQL(Structured Query Language) pelo System R, que é usada até hoje e virou um padrão da indústria de tecnologia.

- Mais tarde, são criados os primeiros SGBDRs, que atacavam vários problemas que existiam nos sistemas que foram criados anteriormente.

Page 6: Introdução ao MongoDB: conceitos e práticas

Mas qual o problema?

- Relação muito forte entre os dados- Alguns problemas de escalabilidade- Performance (?)

Com a explosão das redes sociais e computação em nuvem, viu-se que talvez o modelo relacional nem sempre era a MELHOR ESCOLHA PARA TODOS OS CASOS.

Page 7: Introdução ao MongoDB: conceitos e práticas

A alternativa.

Page 8: Introdução ao MongoDB: conceitos e práticas

So it begins...

Pensando nesses problemas, o modelo não-relacional voltou a ativa!

Os “novos bancos” apresentam características bem distintas(praticamente opostas) dos bancos relacionais.

E sua principal característica: a falta(ou ausência) de relações, derp.

Page 9: Introdução ao MongoDB: conceitos e práticas

Filhos da “nova era”Vários bancos de dados NoSQL surgiram. E junto com eles, várias maneiras de armazenar os dados.

Alguns exemplos:

- Documentos- Grafos- Chave-Valor- Tabular

Page 10: Introdução ao MongoDB: conceitos e práticas

Breve comparação.

Page 11: Introdução ao MongoDB: conceitos e práticas

SchemaNão Relacional Relacional

Page 12: Introdução ao MongoDB: conceitos e práticas

EscalabilidadeNão Relacional

Escalabilidade Horizontal

Relacional

Escalabilidade Vertical

Page 13: Introdução ao MongoDB: conceitos e práticas

NormalizaçãoNão Relacional Relacional

Page 14: Introdução ao MongoDB: conceitos e práticas

AtomicidadeNão Relacional Relacional

Page 15: Introdução ao MongoDB: conceitos e práticas

Casos de uso

Page 16: Introdução ao MongoDB: conceitos e práticas

Nosso objeto de estudo.

Page 17: Introdução ao MongoDB: conceitos e práticas

Mas antes...- Javascript, Node.js

- JSON

Page 18: Introdução ao MongoDB: conceitos e práticas

Um pouco sobre ele- HuMONGOus, 2007- Bom banco para Operational Big Data- Orientado a documentos- Usa BSON para armazenar os documentos- Mongo Server: GNU AGPL 3.0- Mongo Drivers: Apache 2.0

Page 19: Introdução ao MongoDB: conceitos e práticas

Um típico documento

Um típico documento no mongoDB

Page 20: Introdução ao MongoDB: conceitos e práticas

Variedade de tipos

Page 21: Introdução ao MongoDB: conceitos e práticas

Algumas empresinhas...

High Tech Outras

Page 22: Introdução ao MongoDB: conceitos e práticas

O _id_id é o equivalente a uma chave primária do SQL.

É a ÚNICA chave primária usada no banco

ObjectId -> 4 bytes representando os segundos desde a era Unix

Identificador de máquina de 3 bytes

2 bytes do ID do processo

Contador de 3 bytes, começando de um valor aleatório

Page 23: Introdução ao MongoDB: conceitos e práticas

CRUD

Page 24: Introdução ao MongoDB: conceitos e práticas

Que isso?- CRUD representa as operações básicas dos bancos de dados: Create,

Read, Update, Delete

- O Mongo possui todas essas operações, e também tem a possibilidade de misturar elas

Page 25: Introdução ao MongoDB: conceitos e práticas

Create

Page 26: Introdução ao MongoDB: conceitos e práticas

insertOneRecebe: arg1: UM documento, que será inserido na coleção

arg2: um documento com o atributo writeConcern (opcional)

Retorna: um documento com os atributos:

acknowledged: boolean, insertedId: ObjectId do documento inserido

Page 27: Introdução ao MongoDB: conceitos e práticas

insertManyRecebe: arg1: um ARRAY de DOCUMENTOS, que serão inseridos na coleção

arg2: um documento com os atributos: writeConcern, ordered (opcional)

Retorna: um documento com os atributos:

acknowledged: boolean, insertedIds: ObjectIds dos documentos inseridos

Page 28: Introdução ao MongoDB: conceitos e práticas

insertRecebe: arg1: Um documento ou um array de documentos

arg2: um documento com os atributos: writeConcern, ordered (opcional)

Retorna: um documento com o atributo:

nInserted: número de documentos inseridos

ou um documento com os atributos:

writeErrors, writeConcernErros, nInserted, nUpserted, nMatched, nModified, nRemoved, upserted

Page 29: Introdução ao MongoDB: conceitos e práticas

Read

Page 30: Introdução ao MongoDB: conceitos e práticas

findRecebe: arg1: um documento que representa a query a ser realizada

arg2: um documento com a projeção do resultado

Retorna: se tiver matches, retorna os documentos

senão, não retorna nada

existem também os finds híbridos: findAndModify, findOne, findOneAndDelete, findOneAndReplace, findOneAndUpdate

Page 31: Introdução ao MongoDB: conceitos e práticas

Métodos adicionais importantes

sort: equivalente ao ORDER BY do sql, valor 1 é ASC e -1 é DESC

limit: limita o tamanho máximo do cursor que será retornado

batchSize: limita o número de documentos retornados, default = 20

skip: controla a partir de onde o banco irá começar a retornar os resultados

count: conta o número de documentos na coleção

Page 32: Introdução ao MongoDB: conceitos e práticas

Update

Page 33: Introdução ao MongoDB: conceitos e práticas

updateOneRecebe: arg1: um documento que representa a query a ser realizada

arg2: um documento que possui os atributos que serão mudados no documento encontrado

arg3: um documento com os atributos:

upsert: boolean, writeConcern

Retorna: um objeto com os campos

acknowledged: boolean, matchedCount: numero de matches, modifiedCount: numero de modificados

Page 34: Introdução ao MongoDB: conceitos e práticas

updateManyRecebe: arg1: um documento que representa a query a ser realizada

arg2: um documento que possui os atributos que serão mudados no documento encontrado

arg3: um documento com os atributos:

upsert: boolean, writeConcern

Retorna: um objeto com os campos

acknowledged: boolean, matchedCount: numero de matches, modifiedCount: numero de modificados, upsertedId: ObjectId do documento inserido(caso upsert esteja ativado)

Page 35: Introdução ao MongoDB: conceitos e práticas

updateRecebe: arg1: um documento que representa a query a ser realizada

arg2: um documento que possui os atributos que serão mudados no documento encontrado

arg3: um documento com os atributos:

upsert: boolean, multi: boolean, writeConcern

Retorna: um objeto com os campos

nMatched: numero de documentos que deram match, nUpserted: numero de documentos que foram inseridos via upsert, nModified: numero de documentos modificados

Page 36: Introdução ao MongoDB: conceitos e práticas

tagsSão usadas com os métodos de update para alterar os documentos encontrados. Usados no arg2 dos métodos de update

$set: faz o update dos atributos especificados. Recebe um documento com os atributos a serem alterados

$inc: incrementa o valor de um atributo numérico. Recebe um documento com os atributos a serem incrementados

$rename: troca o nome de um atributo. Recebe um documento com os atributos a serem renomeados

$unset: remove atributos do documento. Recebe um documento com os atributos a serem excluidos

Page 37: Introdução ao MongoDB: conceitos e práticas

Delete

Page 38: Introdução ao MongoDB: conceitos e práticas

deleteOneRecebe: arg1: um documento que representa a query a ser realizada

arg2: um documento com o atributo:

writeConcern

Retorna: um objeto com os campos

acknowledged: boolean, deletedCount: número de documentos removidos

Page 39: Introdução ao MongoDB: conceitos e práticas

deleteManyRecebe: arg1: um documento que representa a query a ser realizada

arg2: um documento com o atributo:

writeConcern

Retorna: um objeto com os campos

acknowledged: boolean, deletedCount: número de documentos removidos

Page 40: Introdução ao MongoDB: conceitos e práticas

removeRecebe: arg1: um documento que representa a query a ser realizada

arg2: um documento com o atributo:

justOne: boolean, writeConcern

Retorna: um objeto com os campos

nRemoved: número de documentos removidos

Page 41: Introdução ao MongoDB: conceitos e práticas

O próximo passo

Page 42: Introdução ao MongoDB: conceitos e práticas

Muito obrigado!!!