1. Make Presentation much more fun
MongoDB - Uso pra que?
http://about.me/rogeriofontes
Rogério Fontes
2. Make Presentation much more fun
– Quem é?
@rogeriofontes
• Apaixonado por desenvolvimento de código e formas ágeis de criá-los.
• Fomentador e evangelista do Open-Source e Open-Hardware, com mais de 10
anos aventurando-se nessa área usando Java e suas tecnologias, android,
mongoDB dentre outros e agora apaixonado por AngularJS.
• Co-fundador e Líder do UaiJUG (Grupo de Usuários do Triângulo Mineiro),
• Co-fundador do Triângulo Hackerspace e,
• Novo empreendedor, aventurando em sua nova Start-up (Não da grana
nenhuma ainda, só trampo por enquanto. ;) )
Rogério Fontes – Quem é?
3. Make Presentation much more fun
– Quem é?
@rogeriofontes
MongoDB – Uso pra que?
Qualquer lugar desde que planejado
4. Make Presentation much more fun
– Quem é?
@rogeriofontes
A palestra – Agenda
Essa palestra abordará conceitos, para quem quer
iniciar nesse noSQL baseado em documentos:
• Definições
• Comparações
• Onde usar e como usar o banco
• Agradecimentos
5. Make Presentation much more fun
– Quem é?
@rogeriofontes
O Caminho
Bora trilhar – “lho” ?
6. Make Presentation much more fun
– Quem é?
@rogeriofontes
Definições – Database
• Database é um container físico de coleções.
• Cada database recebe o seu próprio conjunto de
arquivos no sistema operacional.
• Um servidor simples de MongoDB, tem tipicamente
multiplos databases.
7. Make Presentation much more fun
– Quem é?
@rogeriofontes
Definições – Coleções
• Coleção para o MongoDB é um grupo de
documentos.
• Isto é equivalente a uma tabela de um banco
relacional.
• A coleção existe dentro de um database simples.
• Com coleções você não precisa de um esquema.
• Documento dentro de uma coleção pode ter
diferentes campos.
• Normalmente, todos os documentos em uma coleção
são de propósito semelhante ou similares (Ou seja,
tem algo relacionado).
8. Make Presentation much more fun
– Quem é?
@rogeriofontes
Definições – Documentos
• Um documento nada mais é que um conjunto de par
chave-valor.
• Documentos são esquemas dinâmicos.
• Esquemas dinâmicos significa que documentos na
mesma coleção não precisa ter o mesmo conjunto de
campos ou estrutura e campos comuns.
• Em documentos, uma coleção pode conter diferentes
tipos de dados.
9. Make Presentation much more fun
– Quem é?
@rogeriofontes
Comparação – mongoDB X RDBMs
RDBMS
MongoDB
Database Database
Table Collection
Tuple/Row Document
column Field
Table Join Embedded Documents
Primary Key
Primary Key (Default key _id
provided by mongodb itself)
10. Make Presentation much more fun
– Quem é?
@rogeriofontes
Ferramentas – Mais usadas
Database
Server
Client
Server
Mongod mongo
11. Make Presentation much more fun
– Quem é?
@rogeriofontes
Json, bunitim! – todo mundo curti J
{ _id: ObjectId(7df78ad8902c)
Qtle: 'MongoDB Overview',
descripQon: 'MongoDB is no sql database', by: ’uaijug cloud day',
url: 'h:p://www.uaijug.com.br',
tags: ['mongodb', 'database', 'NoSQL'], likes: 100,
comments: [ {
user:'user1',
message: 'My first comment', dateCreated: new
Date(2011,1,20,2,15), like: 0
},
{ user:'user2',
message: 'My second comments', dateCreated: new
Date(2011,1,25,7,45), like: 5}
] }
12. Make Presentation much more fun
– Quem é?
@rogeriofontes
Bson, Que porra é essa?
• Representa documentos JSON em formato binário
chamado BSON.
• BSON Abstrai o modelo de JSON para fornecer tipos
de dados adicionais e para ser eficiente para
codificação e decodificação em diferentes
linguagens.
13. Make Presentation much more fun
– Quem é?
@rogeriofontes
O que o mongoDB é?
• Escalavél
• Com alta performace
• Open-source
• Orientado a documento
14. Make Presentation much more fun
– Quem é?
@rogeriofontes
O que o mongoDB é?
• MongoDB's tem a estrutura de dados baseada na
flexibilidade, capacidade de Indexação, query data,
auto-sharding, isso torna o mongoDB uma
ferramenta forte que se adaptar bem as mudanças.
• Isso ajuda a reduzir a complexidade dos banco
relacionais.
15. Make Presentation much more fun
– Quem é?
@rogeriofontes
Porque mongoDB?
• MongoDB é multi-plataforma, orientado a
documento, alta performace, alta disponibilidade,
fácil de escalar.
• MongoDB, trabalha com o conceito de coleção de
documento.
16. Make Presentation much more fun
– Quem é?
@rogeriofontes
Filosofia
• Reduzir semântica transacional por performace
• Bancos Não-relationais (noSQL) é a melhor maneira
de escalar horizontalmente.
17. Make Presentation much more fun
– Quem é?
@rogeriofontes
Características
• O mongoDB é uma aplicação de código aberto
• Contém uma alta performance , sem esquemas
• Possui uma orientação a documentos
• Foi escrito na linguagem C++
18. Make Presentation much more fun
– Quem é?
@rogeriofontes
Características
• É formado por um conjunto de documentos JSON
• Não utiliza transações nem joins.
• Quando um aplicativo utiliza esse tipo de banco de
dados, o resultado que se tem são consultas simples
19. Make Presentation much more fun
– Quem é?
@rogeriofontes
Vantages do mongoDB sobre RDBMs
• Não existe schema: MongoDB é uma base de dados
que suporta diferentes coleções e differences
documentos.
• A estrutura de um documento simples é simples.
• Não tem joins complexos.
• Suporta query dinamicas usando document-based
query
• Fácil de escalar
20. Make Presentation much more fun
– Quem é?
@rogeriofontes
Porque deveria usar mongoDB?
• Documento Orientado Storage : Os dados são
guardados em um form, no esQlo de documentos
JSON usando Index em qualquer atributo.
• Replicação & Alta Performace
• Auto-Sharding
• Rich Queries
• Suporte professional pela MongoDB
21. Make Presentation much more fun
– Quem é?
@rogeriofontes
Porque deveria usar mongoDB?
• É Foda mano……….
23. Make Presentation much more fun
– Quem é?
@rogeriofontes
Como instalar e utilizar?
• Instalação do MongoDB no Windows
§ http://docs.mongodb.org/manual/tutorial/install-
mongodb-on-windows
• Instalação do MongoDB no Linux
§ http://docs.mongodb.org/manual/administration/
install- on-linux
• Instalação do MongoDB no Mac
§ http://docs.mongodb.org/manual/tutorial/install-
mongodb-on-os-x
24. Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos
Iniciar o DB
• Abra o terminal e execute o seguinte comando:
$ mongod
• Obs: Se você fechar o terminal o serviço do MongoDB
vai cair, sendo assim, não feche, e abra um novo para
executar os próximos comandos.
25. Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos
Conectar ao DB
• Para conectar no MongoDB, basta executar o comando
abaixo:
$ mongo
• Pronto! Estamos conectado no MongoDB. :-)
26. Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos
Criar database
• O comando para criar uma nova base de dados é: use
nomeDaBaseDeDados.
• Vamos, criar a base de dados do nosso cliente, a
• Base de dados do site do UaiJUG:
• $ use siteUaiJUG
27. Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos
Listar database
• Listar todas as bases dados existentes no MongoDB?
$ show dbs
28. Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos
Acessar database
• Como acessar uma base de dados no MongoDB?
$ use suaBaseDeDados
29. Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos
Verificar database
• Como verificar em qual base de dados você esta no
MongoDB?
$ db
30. Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos
Criar uma coleção
• Como criar uma estrutura de dados (collection) no
MongoDB?
$ db.createCollection(‘palestrante’)
• Após a execução do médoto, você terá o seguinte
retorno de sucesso: { "ok" : 1 }
31. Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos
Listar todas coleções
• Como listar todas as estruturas de dados
(collections) existentes na base de dados do
MongoDB?
$ show collections
32. Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos
Inserir na coleção
• Comoinserir(insert)naestrutadedados(collec?on)no
MongoDB?
db.palestrante.insert({
name:‘Rogériofontes’,
twitter:‘@rogeriofontes’,
mensagem: ‘Inserindo palestrante no MongoDB’
})
• Se a collecção não existe ela será recriada
automaticamente, sempre cuidado para não duplicar
dados.
33. Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos
Listar dados na coleção
• Como visualizar os dados que estão dentro de uma
estrutura de dados (collection) no MongoDB?
• $ db.palestrante.find()
O retorno não é muito agradável, ficando na seguinte
forma:
{"_id": ObjectId("21252b31e3b6e54896b6c8010113123f"),
"name" : " Rogério fontes ", " twitter " : "@rogeriofontes ",
"mensagem" : " Inserindo palestrante no MongoDB " }
34. Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos
Listar dados na coleção
• Como visualizar os dados que estão dentro de uma
estrutura de dados (collection) no MongoDB?
• Podemos adicionar o pretty(), o comando fica da
seguinte forma:
• $db.palestrante.find().pretty()
35. Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos
Listar dados na coleção
• E o retorno:
{
"_id" : ObjectId("21252b31e3b6e54896b6c8010113123f"),
"name" : " Rogério fontes ",
" twitter" : " @rogeriofontes ",
"mensagem" : " Inserindo palestrante no MongoDB "
}
36. Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos
Alterar dados na coleção
• Como atualizar (update) os dados que estão dentro
de uma estrutura de dados (collection) do
MongoDB?
$ db.palestrante.update({name: ‘Rogério fontes’}, {$set:
{twi:er: ‘@pres’}})
• O comando $set faz com que seja mantido todos os
dados, e alterado apenas os dados desejados.
37. Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos
Remover dados na coleção
• Como remover (remove) os dados que estão dentro
de uma estrutura de dados (collection) no
MongoDB?
$ db.palestrante.remove({name: ‘Rogério Fontes’})
• Para remover todos os dados da collection palestrante,
basta não passar nenhum parâmetro para o método:
$ db.contato.remove()
38. Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos
Deletar uma coleção
• Como deletar (drop) uma estrutura de dados
(collection) no MongoDB?
$ db.contato.drop()
• Retorna: true
39. Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos
Deletar uma coleção
• Como deletar (drop) uma estrutura de dados
(collection) no MongoDB?
$ db.palestrante.drop()
• Retorna: true
40. Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos
Deletar database
• Como deletar (drop) uma base de dados no MongoDB?
$ db.dropDatabase()
41. Make Presentation much more fun
– Quem é?
@rogeriofontes
Relecionamento com Dev`s
• http://planet.mongodb.org/
42. Make Presentation much more fun
– Quem é?
@rogeriofontes
Cursos Grátis
• https://university.mongodb.com/
Cursos:
• C100DBA: MongoDB Certified DBA Associate Exam
• C100DEV: MongoDB Certified Developer Associate Exam
• M101J: MongoDB for Java Developers (Coached)
• M101J: MongoDB for Java Developers
• M101JS: MongoDB for Node.js Developers
• M101P: MongoDB for Developers
• M102: MongoDB for DBAs
• M202: MongoDB Advanced Deployment and Operations
44. Make Presentation much more fun
– Quem é?
@rogeriofontes
Obrigado
{
"Palestra": "MongoDB - Uso pra que? ",
"Evento":"UaiJUG cloudDay",
"redes sociais":[
{“twitter","@rogeriofontes "},
{“About-me","http://about.me/rogeriofontes"},
],
"messages":[
"Obrigado",
"thanks",
"Vlw”]
}