Your SlideShare is downloading. ×
0
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Desenvolvendo soluções com banco de dados não relacional - MongoDB

8,979

Published on

Palestra de Christiano Anderson no tech talk 7Masters no iMasters.

Palestra de Christiano Anderson no tech talk 7Masters no iMasters.

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
8,979
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
57
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Desenvolvendo soluções com banco de dados não relacional - MongoDB Christiano Anderson Twitter: @dump Blog: http://christiano.me Email: anderson@gonow.com.br Site: http://www.gonow.com.br 1
  • 2. O que é MongoDB?• Banco de dados não relacional;• Orientado a documentos;• Alta Performance;• Software Livre;• Schema Free; 2
  • 3. “MongoDB preenche a lacuna entre modelagem chave/ valor(que são bem rápidas e escaláveis) e os tradicionais banco de dados relacionais (que oferecem várias funcionalidades)” 3
  • 4. Quem utiliza?• Foursquare;• Github;• SourceForge;• Disqus;• bit.ly;• Globo.com;• Entre outros... 4
  • 5. Não muito bom se você precisa de...Transações Suporte completo a SQL 5
  • 6. Linguagens de Programação• O MongoDB tem suporte nativo para as principais linguagens de programação:• C, C++, Erlang, Haskell, Java, JavaScript, Perl, PHP, Python, .NET, Ruby, Scala, Go Language, Node.js, Lisp, Lua, Smalltalk...• Relação completa em: http://www.mongodb.org/display/DOCS/Drivers 6
  • 7. Modelo de documento {‘nome’:‘Christiano’, ‘linguagem’:‘Python’, ‘nota’: 10} Sim, é praticamente um JSON.Muito fácil trabalhar com esse modelode dados na maioria das linguagens de programação. 7
  • 8. Migrations É possível mudar dinamicamente um documento {‘nome’:‘Christiano’,{‘nome’:‘Christiano’, ‘linguagem’: ‘Python’,‘linguagem’: ‘Python’, ‘nota’: 10,‘nota’: 10} ‘local’: ‘Gonow’}Não é necessário alterar a modelagem para inserir novos elementos... 8
  • 9. Map/ReduceÉ utilizado para criar funções especiais, pode ser comparado a uma stored procedure Utiliza-se JavaScript para criar essas funções Bastante flexível 9
  • 10. Map/ReduceExemplo de Map/Reduce para contar tags repetidas function() { this.tags.forEach(function(z)) { emit(z, 1); });} function(key, value) { var total = 0; for(var i = 0; i < values.length; i++) { total += values[i]; } return total; } 10
  • 11. Comparando SQL e MongoDB 1 SQL MongoDBINSERT INTO USERS VALUES(1,1) db.users.insert({a:1, b:1}) SELECT a,b FROM users db.users.find({}, {a: 1, b: 1}) SELECT * FROM users db.users.find() SELECT * FROM users WHERE age=33 db.users.find({age: 33}) SELECT * FROm users WHERE name = “pedro” db.users.find({name:”pedro”}) 11
  • 12. Comparando SQL e MongoDB 2 SQL MongoDB SELECT * FROM users WHERE db.users.find({‘age’:33}).sort({name: age=33 ORDER BY name 1})SELECT * FROM users WHERE age db.users.find({‘age’:{$lt:33}})}) < 33CREATE INDEX myindexname ON db.users.ensureIndex({name:1}) user(name)SELECT * FROM users WHERE a = 1 AND b = ‘q’ db.users.find({a:1, b:’q’}) SELECT * FROM users LIMIT 10 SKIP 20 db.users.find().limit(10).skip(20) 12
  • 13. GridFS• É possível armazenar arquivos binários no MongoDB;• Maior flexibilidade para tratar arquivos utilizando sua linguagem de programação favorita;• Maior controle de permissão de acesso;• Possível armazenar arquivos grandes no MongoDB;• Mais: http://www.mongodb.org/display/DOCS/GridFS 13
  • 14. Replica sets• Possível dividir a carga em vários servidores, replicando seu conteúdo via Replica Sets;• Possível crescer o ambiente de forma bastante orgânica;• Replica Set consiste em um ou mais node que replicam seus valores entre si. Server 1 Server 2 Somente leitura Leitura, Escrita Primário Cliente 14
  • 15. Python e MongoDB Exemplo de conexão>>> from pymongo import Connection>>> con = Connection(“localhost”)>>> db = con[‘blog’] 15
  • 16. Inserindo um documento>>> post = {title:My first post, …author:Christiano Anderson, …content: This is my firstparagraph, … tags: [mongodb,blog,example]}>>> posts = db[posts]>>> posts.insert(post)ObjectId(4cb662f508bf532b1b000000) 16
  • 17. Inserindo vários documentos>>> other_posts = [{title:Second Post, author: ChristianoAnderson,tags:[test], content: Hey, my second Post},{title:Third Post, author:Luke Skywalker,tags:[naboo],content:Hey princess Leya}]>>> posts.insert(other_posts)[ObjectId(4cb6651b08bf532b97000000),ObjectId(4cb6651b08bf532b97000001)] 17
  • 18. Realizando pesquisas>>> my_post = db.posts.find_one({}){ucontent: uThis is my first post at MongoDB, utitle: uMyfirst post, u_id: ObjectId(4cb662f508bf532b1b000000),utags: [umongodb, ublog, uexample], uauthor:uChristiano Anderson}>>> my_post = db.posts.find_one({ author: ChristianoAnderson}) 18
  • 19. Operadores• Também é possível utilizar operadores como $ne, $lte, $gte,entre outros...• Mais: http://www.mongodb.org/display/DOCS/Advanced+Querie 19
  • 20. Consultando a base>>> all_posts = db.posts.find({})>>> for p in all_posts:... print p[title]My first post Second Post Third Post 20
  • 21. Consultando a base - passando parâmetros>>> p = db.posts.find_one({tags:naboo}){ucontent: uHey princess Leya, utitle: uThird Post, u_id:ObjectId(4cb6651b08bf532b97000001), utags: [unaboo],uauthor: uLuke Skywalker} 21
  • 22. Hospedando MongoDB na nuvem• MongoGrid é um serviço oferecido pela NodeGrid, criada por brasileiros:• http://nodegrid.com/resources/mongogrid/ 22
  • 23. Obrigado!!!Christiano Anderson Twitter: @dump Blog: http://christiano.me Email: anderson@gonow.com.br Site: http://www.gonow.com.br 23

×