Desenvolvendo com mongodb

1,909 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,909
On SlideShare
0
From Embeds
0
Number of Embeds
69
Actions
Shares
0
Downloads
25
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Desenvolvendo com mongodb

    1. 1. DESENVOLVENDO COM MONGODB
    2. 2. QUEM SOU EU?• Thiago Avelino• Socio da empresa Trianguli Consultoria Web• Desenvolvedor Python• Gerente de Projeto• Commiter em alguns projetos • MongoDB • MongoEngine • CentOS (Kernel)
    3. 3. PRÓS MONGODB• Tipagem dinâmica• Migrações• Flexibilidade• Cache• BSON
    4. 4. Documentos
    5. 5. Documentos
    6. 6. DOCUMENTOO documento do MongoDB é criado a partir de um JSON.Exemplo: { nome: ‘Thiago Avelino’, liguagem: ‘Python’, database: ‘MongoDB’ }
    7. 7. Migração
    8. 8. MIGRAÇÃOAtualizando a estrutura de dados dinamicamente { nome: ‘Thiago Avelino’, liguagem: ‘Python’, database: ‘MongoDB’ } { nome: ‘Thiago Avelino’, liguagem: [‘Python’, ‘Go’, ‘C’, ‘C++’, ‘Ruby’], database: [‘MongoDB’, ‘PostgreSQL’, ‘MySQL’] }
    9. 9. AGREGADORDistintos > db.tdc2011.insert({linguagem: ‘Python’}) > db.tdc2011.insert({linguagem: ‘C’}) > db.tdc2011.insert({linguagem: ‘C++’}) > db.tdc2011.insert({linguagem: ‘Ruby’}) > db.tdc2011.distinct(‘linguagem’) [ "python", "c", "c++" ]
    10. 10. map-reduce
    11. 11. MAP-REDUCEOperações destinadas a manipulação grande conjuntos de informações function () { this.linguagem.forEach(function(z) { emit(z, 1); }); } function (key, values) { var total = 0; for (var i = 0; i < values.length; i++) { total += values[i]; } return total; }
    12. 12. desenvolvendo
    13. 13. PYTHONExemplo >>> from pymongo import Connection >>> con = Connection >>> db = con[‘tdc2011’] >>> >>> tdc = {nome: ‘Thiago Avelino’, liguagem: [‘Python’, ‘Go’, ‘C’, ‘C++’, ‘Ruby’], database: [‘MongoDB’, ‘PostgreSQL’, ‘MySQL’]} >>> db.tdc2011.insert(tdc) ObjectId(‘4d2e48e7cc9374271b02247a’) >>> >>> db.tdc2011.find_one({}) >>> {u‘_id’: ObjectId(‘4d2e48e7cc9374271b02247a’),u‘nome’: u‘Thiago Avelino’, u‘linguagem’: [u‘Python’,u’c’,u’c++’], u’database’: [‘MongoDB’, ‘PostgreSQL’, ‘MySQL’]}
    14. 14. ORM
    15. 15. PYTHON ORMMontando models com MongoEngine class Cadastro(Document): nome = StringField(required = True, max_length = 200) twitter = StringField(max_length = 25) class Caracteristicas(Cadastro): linguagem = ListField(StringField(max_length = 50)) database = ListField(StringField(max_length = 50))
    16. 16. PYTHON ORMFazendo insert com MongoEngine >>> add1 = Cadastro(nome = ‘Thiago Avelino’, twitter = ‘avelino0’) >>> add1.linguagem = [‘Python’, ‘C’, ‘C++’, ‘Ruby’] >>> add1.database = [‘MongoDB’, ‘PostgreSQL’, ‘MySQL’] >>> add1.save() >>> add2 = Cadastro(nome = ‘Lerolero’) >>> add2.linguagem = [‘Ruby’] >>> add2.database = [‘PostgreSQL’] >>> add2.save()
    17. 17. PYTHON ORMBuscando informações via Objeto >>> for cad in Cadastro.objects: ... print cad.nome ... if isinstance(cad, Caracteristicas): ... print ‘Twitter: @%s’ % cad.twitter ... print ‘====’ ... Thiago Avelino Twitter: @avelino0 ==== Lerolero ====
    18. 18. PYTHON ORMBuscando informações via Objeto em lista >>> len(Caracteristicas.objects(database = ‘mongodb’)) 1 >>> len(Caracteristicas.objects(database = ‘PostgreSQL’)) 2
    19. 19. PYTHON ORMGridFS class Img(Document): nome = StringField(required = True, max_length = 50) photo = FileField() >>> i = Img(nome = ‘Python’) >>> photo_py = open(‘python.png’, ‘r’) >>> i.photo = photo_py >>> i.photo.content_type = ‘image/png’ >>> i.save() >>> i = Img.object(nome = ‘Python’).first() >>> photo = i.photo.read() >>> content_type = i.photo.content_type
    20. 20. MiniMongo ...
    21. 21. RUBYExemplo require ‘rubygems’ require ‘mongo’ coll = Mongo::Connection.new.db(‘tdc2011’) doc = {‘nome’ => ‘Avelino’, ‘linguagem’ => ‘Ruby’} coll.insert(doc) doc[‘nome’] = ‘Thiago Avelino’ coll.update({‘_id’ => doc[‘_id’]}, doc) coll.find({‘linguagem’ => ‘Ruby’})
    22. 22. RUBY MONGOMAPPERExemplo class Cadastro include MongoMapper::Document key :nome, String key :linguagem, String end cad = Cadastro.new(:nome => ‘Thiago Avelino’, :linguagem => ‘Ruby’) cad.save! Cadastro.where(:linguagem => ‘Ruby’).first
    23. 23. RUBY ORM• MongoID• MongoMapper• MongoODM (Brasileiro)• ...
    24. 24. CASEMONITOR DE MIDIA SOCIAL
    25. 25. CASEMONITOR DE MIDIA SOCIAL
    26. 26. CASEMONITOR DE MIDIA SOCIAL
    27. 27. CASEMONITOR DE MIDIA SOCIAL
    28. 28. CASEGAME USANDO MONGODB
    29. 29. CASEGAME USANDO MONGODB
    30. 30. OBRIGADO!PERGUNTAS? Thiago Avelino thiago@avelino.us www.avelino.us @avelino0

    ×