6. 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
8. Key/value (Chave/Valor):
Esse é o tipo de banco de dados NoSql mais simples, o conceito dele é uma chave e um valor para esta
Ele é o que aguenta mais carga de dados.
Esses tipos de banco de dados são os que têm a maior escalabilidade.
Isaac Garcia Jorge
10. Wide Colum Store (Big
Table):
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;
Isaac Garcia Jorge
12. Graph Store(orientado a
grafo):
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;
Isaac Garcia Jorge
14. Document Store (orientado a
documento):
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:
Isaac Garcia Jorge
21. _id
ObjectId("507f1f77bcf86cd799439011")
string
nú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
24. Instalação como serviço no Windows:
1) Fazer download no site: http://www.mongodb.org/downloads
2) 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 datadb e datalog com o comando
a) >md datadb
b) >md datalog
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:datadb
b) logpath=c:datalogmongolog.txt
6) Iniciar o serviço com o comando >net start MongoDB
7) Iniciar o serviço com o comando >mongo
Isaac Garcia Jorge
25. DATABASE
TABLE
ROWS
QUERY
INDEX
PARTITION
DATABASE
COLLECTION
DOCUMENT
JSON
INDEX
SHARD
Isaac Garcia Jorge
Terminologia:
26. Criação e uso de Base:
CREATE DATABASE usuario;
GO
USE usuario;
>use usuario;
Isaac Garcia Jorge
27. 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
28. 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.cetiUser
ADD sexo char(1)
INSERT INTO dbo.cetiUser
VALUES('Carla’, 3000, 24, GETDATE(),
'10000-000', 'SP', 'Cascalhos', 62,
'apto: 10','F')
29. Consultas:
SELECT * FROM usuario;
SELECT * FROM usuario WHERE matricula = 2968;
Consulta somente com os campos nome e sexo
SELECT nome, sexo FROM usuario WHERE matricula = 2968;
Consulta sem os campos id e apelido
SELECT nome, dataCriacao, cep, cidade, rua, numero, complemento,FROM usuario WHERE matricula =
2968;
Isaac Garcia Jorge
>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});
30. Consultas:
Isaac Garcia Jorge
SELECT * FROM usuario WHERE nome;LIKE (‘*isaac*’)
>db.cetiUser.find({nome: /Isaac*/i});
>db.cetiUser.find({nome : { $regex : 'Isaac*'}});
31. 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"});
32. Operadores ($gt, $gte, $lt, $lte):
Isaac Garcia Jorge
SELECT * FROM usuario WHERE idade;> 22
SELECT * FROM usuario WHERE idade;>= 22
SELECT * FROM usuario WHERE idade;< 24
SELECT * 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}});
33. Outros operadores:
$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
Isaac Garcia Jorge
34. Consultas ordenadas:
Isaac Garcia Jorge
SELECT * FROM usuario WHERE nome;ASC
SELECT * FROM usuario WHERE nome;DESC
>db.cetiUser.find().sort({nome:1});
>db.cetiUser.find().sort({nome:-1});
35. Alteração:
Isaac Garcia Jorge
UPDATE cetiUser SET idade = 28 WHERE matricula = 2968
SELECT * 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}});
36. 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});
37. Importação de dados de arquivo externo:
> mongoimport --db [nome do banco] --collection [nome da collection] --file [camino]
Isaac Garcia Jorge
38. Executar script antes de alguma ação:
> mongo [caminho do arquivo js] --shell
Isaac Garcia Jorge