Download - MongoDB
![Page 1: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/1.jpg)
Isaac Garcia Jorge
![Page 2: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/2.jpg)
Isaac Garcia Jorge
“Estou feliz por eles terem colocado computação nas nuvens”
![Page 3: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/3.jpg)
Problema! Crescimento exponencial de dados!
Isaac Garcia Jorge
![Page 4: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/4.jpg)
![Page 5: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/5.jpg)
Isaac Garcia Jorge
“Não somente SQL”
![Page 6: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/6.jpg)
Movimento teve inicio no começo de 2009.
“NoSQL é um movimento que promove soluções de armazenamento de dados não relacionais.” (PORCELLI, 2011)
Próxima geração de banco de dados abordando áreas como: não relacional, distribuído, open-source e escalabilidade horizontal.
Isaac Garcia Jorge
![Page 7: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/7.jpg)
Tipos:
Isaac Garcia Jorge
![Page 8: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/8.jpg)
Esse é o tipo de banco de dados NoSql mais simples, o conceito dele é uma chave e um valor para estaEle é o que aguenta mais carga de dados. Esses tipos de banco de dados são os que têm a maior escalabilidade.
Key/value (Chave/Valor):
Isaac Garcia Jorge
![Page 9: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/9.jpg)
Key/value (Chave/Valor):
Isaac Garcia Jorge
![Page 10: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/10.jpg)
Fortemente inspirados pelo BigTable do Google;Suporta várias linhas e colunas, além disso ele permite sublinhas e subcolunas;Suporta um grande numero de colunas dinamicas (linha acima);Schema-free;
Wide Colum Store (Big Table):
Isaac Garcia Jorge
![Page 11: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/11.jpg)
Wide Colum Store (Big Table):
Isaac Garcia Jorge
![Page 12: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/12.jpg)
Modalidade de banco mais complexa;Estrutura baseada em grafos, nós, pontes e etc;Guardam objetos e não registros como nos outros NoSQL;A busca destes itens são feitas pela navegação destes objetos;
Graph Store(orientado a grafo):
Isaac Garcia Jorge
![Page 13: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/13.jpg)
Graph Store(orientado a grafo):
Isaac Garcia Jorge
![Page 14: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/14.jpg)
Desenvolvido para guardar, gerenciar e manipular informações orientadas a documentos (também conhecido como data semi estruturada);Baseado em documentos XML ou JSON;Podem ser localizados pelo seu id único ou por qualquer registro que tenha no documento:
Document Store (orientado a documento):
Isaac Garcia Jorge
![Page 15: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/15.jpg)
Isaac Garcia Jorge
Document Store (orientado a documento):
![Page 16: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/16.jpg)
Capacidade/Complexidade:
Isaac Garcia Jorge
![Page 17: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/17.jpg)
Isaac Garcia Jorge
![Page 18: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/18.jpg)
Isaac Garcia Jorge
![Page 19: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/19.jpg)
C++
0101010101001010101010101100101010101010101010101010101010101010101010BSON
Isaac Garcia Jorge
![Page 20: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/20.jpg)
MongosisIntegration Services
Business Intelligence:
Isaac Garcia Jorge
![Page 21: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/21.jpg)
_idObjectId("507f1f77bcf86cd799439011")
stringnúmero (int, double, float)
…Só não pode ser tipo array [ ]
Restrições:
PS: ObjectId("507c7f79bcf86cd7994f6c0e").getTimestamp() = ISODate("2012-10-15T21:26:17Z")
Isaac Garcia Jorge
![Page 22: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/22.jpg)
Restrições:
16 MB
Isaac Garcia Jorge
![Page 23: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/23.jpg)
Vamos praticar!
![Page 24: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/24.jpg)
1) Fazer download no site: http://www.mongodb.org/downloads2) Descompactar os arquivos (preferencialmente em c:\)3) Abrir o CMD e digitar o comando >cd \[caminho onde esta o MongoDB]4) Criar uma pasta \data com as subpastas \data\db e \data\log com o comando
a) >md \data\dbb) >md \data\log
5) Criar um arquivo de configuração com a extenção .config setando, no mínimo o caminho do banco e o caminho de log
a) dbpath=c:\data\dbb) logpath=c:\data\log\mongolog.txt
6) Iniciar o serviço com o comando >net start MongoDB7) Iniciar o serviço com o comando >mongo
Instalação como serviço no Windows:
Isaac Garcia Jorge
![Page 25: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/25.jpg)
DATABASETABLEROWS
QUERYINDEX
PARTITION
DATABASECOLLECTIONDOCUMENTJSONINDEXSHARD
Isaac Garcia Jorge
Terminologia:
![Page 26: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/26.jpg)
Criação e uso de Base:
CREATE DATABASE usuario;GOUSE usuario;
>use usuario;
Isaac Garcia Jorge
![Page 27: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/27.jpg)
Criação de tabela usuários e inserção:
CREATE TABLE dbo.cetiUser{id INT IDENTITY,nome VARCHAR(100),matricula int,idade int,dataCriacao DATETIME,cep VARCHAR(10),cidade VARCHAR(50),rua VARCHAR(150),numero INT,complemento VARCHAR(100)}
INSERT INTO dbo.cetiUser VALUES('Isaac’, 2968,22, GETDATE(), '00000-000', 'RJ', 'Inoã', 123, 'casa 180')
db.cetiUser.save({"nome":"Isaac","matricula":2968,"idade":22,"endereço" : {
"cep":"00000-00",
"cidade":"RJ","rua":"Inoã",
"numero":123,
"complemento": "casa180"}});
Isaac Garcia Jorge
![Page 28: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/28.jpg)
Alteração de tabela (documento) e inserção:
Isaac Garcia Jorge
db.cetiUser.save({"nome":"Carla","matricula":3000,"sexo":"F","endereço" : {
"cep":"10000-00",
"cidade":"SP",
"rua":"Cascalhos","numero":62,
"complemento": "apto: 10"}});
ALTER TABLE dbo.cetiUserADD sexo char(1)
INSERT INTO dbo.cetiUserVALUES('Carla’, 3000, 24, GETDATE(), '10000-000', 'SP', 'Cascalhos', 62, 'apto: 10','F')
![Page 29: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/29.jpg)
Consultas:
Isaac Garcia Jorge
SELECT * FROM usuario;SELECT * FROM usuario WHERE matricula = 2968;Consulta somente com os campos nome e sexoSELECT nome, sexo FROM usuario WHERE matricula = 2968;Consulta sem os campos id e apelidoSELECT nome, dataCriacao, cep, cidade, rua, numero, complemento,FROM usuario WHERE matricula = 2968;
>db.cetiUser.find();>db.cetiUser.find({matricula: 2968});>db.cetiUser.find({matricula: 2968});Consulta somente com os campos nome e sexo:>db.cetiUser.find({matricula: 2968},{ nome:1, matricula:1});Consulta sem os campos id e apelido:>db.cetiUser.find({matricula: 2968},{ _id:0, apelido:0});
![Page 30: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/30.jpg)
Consultas:
Isaac Garcia Jorge
SELECT * FROM usuario WHERE nome;LIKE (‘*isaac*’)
>db.cetiUser.find({nome: /Isaac*/i});>db.cetiUser.find({nome : { $regex : 'Isaac*'}});
![Page 31: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/31.jpg)
Exclusão:
Isaac Garcia Jorge
Apaga toda a tabela:DELETE FROM usuario
Apaga com condição:DELETE FROM usuario WHERE nome = ‘Isaac’
Apaga toda a tabela:>db.cetiUser.remove();Apaga com condição:>db.cetiUser.remove({nome: "Carla"});
![Page 32: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/32.jpg)
Operadores ($gt, $gte, $lt, $lte):
Isaac Garcia Jorge
SELECT * FROM usuario WHERE idade;> 22SELECT * FROM usuario WHERE idade;>= 22SELECT * FROM usuario WHERE idade;< 24SELECT * FROM usuario WHERE idade;<= 24
>db.cetiUser.find({idade: {$gt: 22}});>db.cetiUser.find({idade: {$gte: 22}});>db.cetiUser.find({idade: {$lt: 24}});>db.cetiUser.find({idade: {$lte: 24}});
![Page 33: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/33.jpg)
$all - retorna o objeto onde todos os valores foram encontrados$exists - retorna o objeto caso uma chave exista$or - retorna o objeto caso a cláusula OU for verdadeira$and - retorna o objeto caso a cláusula E for verdadeira$type - retorna o objeto caso a chave seja do tipo especificado para conferir a lista dos tipos e seus valores $ne (not equal) - retorna o objeto onde o valor não foi encontrado$in - retorna o objeto se o valor foi encontrado$nin (not in) - retorna o objeto se nenhum dos valores foi encontrado$nor (not or) - retorna o objeto caso a cláusula negação do OU for verdadeira$mod - retorna o objeto quando o módulo de um valor for encontrado
Outros operadores:
Isaac Garcia Jorge
![Page 34: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/34.jpg)
Consultas ordenadas:
Isaac Garcia Jorge
SELECT * FROM usuario WHERE nome;ASCSELECT * FROM usuario WHERE nome;DESC
>db.cetiUser.find().sort({nome:1});>db.cetiUser.find().sort({nome:-1});
![Page 35: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/35.jpg)
Alteração:
Isaac Garcia Jorge
UPDATE cetiUser SET idade = 28 WHERE matricula = 2968SELECT * FROM usuario WHERE nome;DESC
> usuario = db.cetiUser.findOne({matricula: 2968});> usuario.idade = 28> db.cetiUser.save(usuario);======================================================> db.cetiUser.update({matricula: 2968},{$set: {matricula: 2900}});
![Page 36: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/36.jpg)
Criação de index:
Isaac Garcia Jorge
CREATE INDEX usuario_nome_index ON usuario (nome)
> db.cetiUser.ensureIndex({nome:1});> db.cetiUser.ensureIndex({nome:1,idade:1});
![Page 37: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/37.jpg)
> mongoimport --db [nome do banco] --collection [nome da collection] --file [camino]
Importação de dados de arquivo externo:
Isaac Garcia Jorge
![Page 38: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/38.jpg)
> mongo [caminho do arquivo js] --shell
Executar script antes de alguma ação:
Isaac Garcia Jorge
![Page 39: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/39.jpg)
Isaac Garcia Jorge
![Page 40: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/40.jpg)
Isaac Garcia Jorge
![Page 41: MongoDB](https://reader035.vdocuments.com.br/reader035/viewer/2022070320/5585e214d8b42a87608b4e5c/html5/thumbnails/41.jpg)
Franklin (velho)(edição das imagens)
Isaac Garcia Jorge
Agradecimentos:
Mauricio Martins(Business Intelligence)