A apresentação introduz o MongoDB, um banco de dados não-relacional orientado a documentos. Ela discute as limitações dos bancos de dados relacionais, como a forte ligação entre dados e problemas de escalabilidade. Em seguida, explica como o MongoDB resolve esses problemas através de sua estrutura flexível baseada em documentos JSON e operações CRUD.
1. 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
2. Sobre mim
Estudante 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
3. 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
contato@eccjr.com.br
5. 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.
6. 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.
8. 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.
9. 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
18. 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
22. 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
24. 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
26. insertOne
Recebe: 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
27. insertMany
Recebe: 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
28. insert
Recebe: 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
30. find
Recebe: 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
31. 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
33. updateOne
Recebe: 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
34. updateMany
Recebe: 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)
35. update
Recebe: 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
36. tags
Sã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
38. deleteOne
Recebe: 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
39. deleteMany
Recebe: 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
40. remove
Recebe: 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