mongodb

Post on 21-Jun-2015

71 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Apresentação de MongoDB com uma pequena introdução ao NoSQL, comparações entre SQL Server e muito mais.

TRANSCRIPT

Isaac Garcia Jorge

Isaac Garcia Jorge

“Estou feliz por eles terem colocado computação nas nuvens”

Problema! Crescimento exponencial de dados!

Isaac Garcia Jorge

Isaac Garcia Jorge

“Não somente SQL”

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

Tipos:

Isaac Garcia Jorge

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

Key/value (Chave/Valor):

Isaac Garcia Jorge

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

Wide Colum Store (Big Table):

Isaac Garcia Jorge

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

Graph Store(orientado a grafo):

Isaac Garcia Jorge

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

Isaac Garcia Jorge

Document Store (orientado a documento):

Capacidade/Complexidade:

Isaac Garcia Jorge

Isaac Garcia Jorge

Isaac Garcia Jorge

C++

0101010101001010101010101100101010101010101010101010101010101010101010BSON

Isaac Garcia Jorge

MongosisIntegration Services

Business Intelligence:

Isaac Garcia Jorge

_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

Restrições:

16 MB

Isaac Garcia Jorge

Vamos praticar!

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

DATABASETABLEROWS

QUERYINDEX

PARTITION

DATABASECOLLECTIONDOCUMENTJSONINDEXSHARD

Isaac Garcia Jorge

Terminologia:

Criação e uso de Base:

CREATE DATABASE usuario;GOUSE usuario;

>use usuario;

Isaac Garcia Jorge

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

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')

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});

Consultas:

Isaac Garcia Jorge

SELECT * FROM usuario WHERE nome;LIKE (‘*isaac*’)

>db.cetiUser.find({nome: /Isaac*/i});>db.cetiUser.find({nome : { $regex : 'Isaac*'}});

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"});

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}});

$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

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});

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}});

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});

> mongoimport --db [nome do banco] --collection [nome da collection] --file [camino]

Importação de dados de arquivo externo:

Isaac Garcia Jorge

> mongo [caminho do arquivo js] --shell

Executar script antes de alguma ação:

Isaac Garcia Jorge

Isaac Garcia Jorge

Isaac Garcia Jorge

Franklin (velho)(edição das imagens)

Isaac Garcia Jorge

Agradecimentos:

Mauricio Martins(Business Intelligence)

top related