MongoDB

298 visualizações

Publicada em

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

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
298
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
3
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

MongoDB

  1. 1. Isaac Garcia Jorge
  2. 2. Isaac Garcia Jorge “Estou feliz por eles terem colocado computação nas nuvens”
  3. 3. Problema! Crescimento exponencial de dados! Isaac Garcia Jorge
  4. 4. “Não somente SQL” Isaac Garcia Jorge
  5. 5. 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
  6. 6. Tipos: Isaac Garcia Jorge
  7. 7. 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
  8. 8. Key/value (Chave/Valor): Isaac Garcia Jorge
  9. 9. 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
  10. 10. Wide Colum Store (Big Table): Isaac Garcia Jorge
  11. 11. 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
  12. 12. Graph Store(orientado a grafo): Isaac Garcia Jorge
  13. 13. 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
  14. 14. Isaac Garcia Jorge Document Store (orientado a documento):
  15. 15. Capacidade/Complexidade: Isaac Garcia Jorge
  16. 16. Isaac Garcia Jorge
  17. 17. Isaac Garcia Jorge
  18. 18. C++ 01010101010010 10101010101100 10101010101010 10101010101010 10101010101010 BSON Isaac Garcia Jorge
  19. 19. Mongosis Business Intelligence: Integration Services Isaac Garcia Jorge
  20. 20. _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
  21. 21. Restrições: 16 MB Isaac Garcia Jorge
  22. 22. Vamos praticar!
  23. 23. 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
  24. 24. DATABASE TABLE ROWS QUERY INDEX PARTITION DATABASE COLLECTION DOCUMENT JSON INDEX SHARD Isaac Garcia Jorge Terminologia:
  25. 25. Criação e uso de Base: CREATE DATABASE usuario; GO USE usuario; >use usuario; Isaac Garcia Jorge
  26. 26. 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
  27. 27. 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')
  28. 28. 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});
  29. 29. Consultas: Isaac Garcia Jorge SELECT * FROM usuario WHERE nome;LIKE (‘*isaac*’) >db.cetiUser.find({nome: /Isaac*/i}); >db.cetiUser.find({nome : { $regex : 'Isaac*'}});
  30. 30. 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"});
  31. 31. 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}});
  32. 32. 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
  33. 33. 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});
  34. 34. 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}});
  35. 35. 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});
  36. 36. Importação de dados de arquivo externo: > mongoimport --db [nome do banco] --collection [nome da collection] --file [camino] Isaac Garcia Jorge
  37. 37. Executar script antes de alguma ação: > mongo [caminho do arquivo js] --shell Isaac Garcia Jorge
  38. 38. Isaac Garcia Jorge
  39. 39. Isaac Garcia Jorge
  40. 40. Franklin (velho) (edição das imagens) Isaac Garcia Jorge Agradecimentos: Mauricio Martins (Business Intelligence)

×