Make Presentation much more fun
MongoDB - Uso pra que?
http://about.me/rogeriofontes Rogério Fontes
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 é?
Make Presentation much more fun
– Quem é?
@rogeriofontes
MongoDB – Uso pra que?
Qualquer lugar desde que planejado
Make Presentation much more fun
– Quem é?
@rogeriofontes
A palestra – Agenda
Essa palestra abordara conceitos, para quem quer iniciar nesse noSQL baseado em documentos:
• Definições
• Comparações
• Onde usar e como usar o banco
• Agradecimentos
Make Presentation much more fun
– Quem é?
@rogeriofontes
O Caminho
Bora trilhar – “lho” ?
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.
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).
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.
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)
Make Presentation much more fun
– Quem é?
@rogeriofontes
Ferramentas – Mais usadas
Database Server Client Server Mongod mongo
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} ] }
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.
Make Presentation much more fun
– Quem é?
@rogeriofontes
O que o mongoDB é?
• Escalavél
• Com alta performace
• Open-source
• Orientado a documento
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.
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.
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.
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++
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
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
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
Make Presentation much more fun
– Quem é?
@rogeriofontes
Porque deveria usar mongoDB?
• É Foda mano……….
Make Presentation much more fun
– Quem é?
@rogeriofontes
Quem Utiliza?
Dentre outros…
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
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.
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. :-)
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
Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos Listar database
• Listar todas as bases dados existentes no MongoDB?
$ show dbs
Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos Acessar database
• Como acessar uma base de dados no MongoDB? $ use suaBaseDeDados
Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos Verificar database
• Como verificar em qual base de dados você esta no MongoDB?
$ db
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ê tera o seguinte retorno de sucesso: { "ok" : 1 }
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
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.
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 " }
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()
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 " }
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.
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()
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
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
Make Presentation much more fun
– Quem é?
@rogeriofontes
Principais comandos Deletar database
• Como deletar (drop) uma base de dados no MongoDB?
$ db.dropDatabase()
Make Presentation much more fun
– Quem é?
@rogeriofontes
Relecionamento com Dev`s
• http://planet.mongodb.org/
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
Make Presentation much more fun
– Quem é?
@rogeriofontes
Demo
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”]
}