Introdução ao MongoDB (NoSQL)

17
Um banco de dados noSQL MSc. Thiago Ribeiro de Azeredo Professor do curso de Engenharia da Computação

Transcript of Introdução ao MongoDB (NoSQL)

Page 1: Introdução ao MongoDB (NoSQL)

Um banco de dados noSQL

MSc. Thiago Ribeiro de AzeredoProfessor do curso de Engenharia da

Computação

Page 2: Introdução ao MongoDB (NoSQL)

O que é um banco noSQL?• NoSQL abrange uma grande variedade de diferentes tecnologias

de banco de dados que foram desenvolvidos em resposta a um aumento do volume de dados armazenados sobre usuários, objetos e produtos, a frequência em que esses dados são acessados, e desempenho de processamento e necessidades. Bancos de dados relacionais, por outro lado, não foram projetados para lidar com os desafios de escala e agilidade que enfrentam aplicações modernas, nem foram construídos para tirar proveito do armazenamento barato e poder de processamento disponível hoje.

https://www.mongodb.com/nosql-explained

Page 3: Introdução ao MongoDB (NoSQL)

Quais as vantagens de um banco noSQL?• Quando comparado com bancos de dados relacionais, bancos de

dados NoSQL são mais escaláveis e proporcionam um desempenho superior.

• Seu modelo de dados aborda várias questões que o modelo relacional não é projetado para lidar com:• Grandes volumes de dados estruturados, semi-estruturados, não-

estruturados e• Sprints ágeis, iteração rápida e empurrões código frequentes• Programação orientada a objetos• Arquitetura escalável no lugar de arquitetura monolítica

https://www.mongodb.com/nosql-explained

Page 4: Introdução ao MongoDB (NoSQL)

Como são tão rápidos e escaláveis?Auto-sharding!Nativamente e automaticamente propagam dados entre um número arbitrário de servidores, sem exigir a aplicação ao mesmo esteja ciente da composição do pool de servidores. Dados e carga de consulta são automaticamente equilibrada entre servidores, e quando um servidor cair, ela pode ser rápida e transparente substituído sem interrupção do aplicativo.

https://www.mongodb.com/nosql-explained

Page 5: Introdução ao MongoDB (NoSQL)

Quais são os tipos de bancos noSQL?• Chave/Valor• Grafo• Colunas• Documentos

Page 6: Introdução ao MongoDB (NoSQL)

Chave/Valor• São os mais simples bancos NoSQL.• Todo item é armazenado com uma chave que o identifica• Muito útil para desenvolvimento de aplicações na nuvem• Exemplos: CouchDB, Oracle NoSQL Database, Dynamo,

FoundationDB, HyperDex, MemcacheDB, Redis, Riak, FairCom c-treeACE, Aerospike, OrientDB, MUMPS, Voldemort

Page 7: Introdução ao MongoDB (NoSQL)

Grafo• Armazenam de forma natural informações interligada• Conexões em redes sociais, mapa de ruas, topologia de redes são

bons exemplo de utilização• Exemplos: Allegro, Neo4J, InfiniteGraph, OrientDB, Virtuoso,

Stardog

Page 8: Introdução ao MongoDB (NoSQL)

Colunas• Otimizados para fazer consultas em grandes conjuntos de dados• Armazena os dados em colunas ao invés de linhas• Exemplos: Cassandra, HBase

Page 9: Introdução ao MongoDB (NoSQL)

Documentos• Cada registro é uma estrutura complexa chamada de documento• Cada documento contém um identificador único• Cada documento pode conter uma enorme quantidade chaves e

valores• Um valor pode ser um vetor de valores• Um valor também pode ser um outro documento• Exemplos: Clusterpoint, Apache CouchDB, Couchbase, DocumentDB, HyperDex, Lotus Notes, MarkLogic, MongoDB, OrientDB, Qizx

Page 10: Introdução ao MongoDB (NoSQL)

Documentos• Cada registro é uma estrutura complexa chamada de documento• Cada documento contém um identificador único• Cada documento pode conter uma enorme quantidade chaves e

valores• Um valor pode ser um vetor de valores• Um valor também pode ser um outro documento• Exemplos: Clusterpoint, Apache CouchDB, Couchbase, DocumentDB, HyperDex, Lotus Notes, MarkLogic, MongoDB, OrientDB, Qizx

Page 11: Introdução ao MongoDB (NoSQL)

MongoDB• Do inglês humongous (gigantesco)• Primeira versão publicada em 2009

• Quem usa? • Cidade de Chicago• Expedia• Adobe• Facebook• MTV• EA

• CISCO• Verizon• The New York

Times• eBay• Google• PEBBLE

Page 12: Introdução ao MongoDB (NoSQL)

Como funciona?• Armazena todas as informações em formato JSON (JavaScript Object Notation)

• Pode-se fazer analogias entre:• Coleções e Tabelas• Documentos e Linhas

Page 13: Introdução ao MongoDB (NoSQL)

Iniciando o banco•http://pastebin.com/Qd11K4xw

Page 14: Introdução ao MongoDB (NoSQL)

Primeiros passos• Shell do mongoDB aceita comandos javascript• Não existe comando para criar um novo database. É criado automaticamente.• Não existe comando para criar uma coleção. É criada automaticamente

• Automaticamente quando?• Quando um documento for inserido!

• show dbs• show collections• use fsma• db.alunos.insert({"nome":"Thiago",“sexo":”Masculino”})• db.alunos.find()

Page 15: Introdução ao MongoDB (NoSQL)

Inserindo documentos complexosdb.alunos.insert(

{"nome":"Thiago", "nascimento": new ISODate("1990-01-01"),“cr”:8.72,"materias":[

{"nome":"matemática","créditos":3

},{

"nome":"programação", "créditos":2}

]}

)

Page 16: Introdução ao MongoDB (NoSQL)

Como fazer buscas?• db.alunos.find()• db.alunos.find({“nome”:”Thiago”})• db.alunos.find({“cr”:{$gt:8}})• db.alunos.find({"materias":{$elemMatch:

{ "nome":"matemática"} } })• db.alunos.find({},{“nome”:1})• db.alunos.find({“cr”:{$gt:8}},{“materias”:1,_id:0})

$eq$gt$gte$lt$lte$ne$in$nin-$or$and$not$nor-$exists$type

https://docs.mongodb.org/manual/reference/operator/query/

Page 17: Introdução ao MongoDB (NoSQL)

Alterando/Removendo documentosdb.alunos.update( {"cr“ : { $gt : 8 } }, { $set : { "cr“ : 9 } } )db.alunos.remove({“cr”:9})