Banco de Dados orientado a documento
THIAGO AVELINO

•   Trabalha com Software Livre desde 2005

•   Desenvolvedor Python desde 2006

•   Committer de alguns projetos OpenSource

    •   CentOS (Kernel)

    •   MongoDB

    •   Algumas biblioteca Python (MongoEngine)
PORQUE ESSE NOME?
Veio da palavra humongous (Gigantesco)
O QUE É MONGODB?


•   Open Source

•   Alta Performance

•   Schema (Esquema) Aberto

•   Orientado a Documento

•   Suporte Geo nativo

•   Banco de Dados
O QUE É MONGODB?
“O MongoDB trabalha com key-value (que são rápidos e altamente escalável) e sistema
RDBMS (Relational database management system) tradicional (que oferecem consultas rica e profunda
funcionalidade)”
QUEM ESTA USANDO MONGODB
SCHEMA ABERTO



•   Pós

    •   Tipagem dinâmica

    •   Migrações

    •   Flexibilidade

    •   Cache
DOCUMENTO
O Documento do MongoDB é basicamente um json.

exemplo:

  {
      ‘nome’: ‘Thiago’,
      ‘sobrenome’: ‘Avelino’,
      ‘linguagem’: ‘Python’,
      ‘database’: ‘mongodb’
  }
MIGRAÇÃO

Você pode atualizar seus dados dinamicamente

  {
      ‘nome’: ‘Thiago’,
      ‘sobrenome’: ‘Avelino’,
      ‘linguagem’: ‘Python’,
      ‘database’: ‘mongodb’
  }




  {
      ‘nome’: ‘Thiago’,
      ‘sobrenome’: ‘Avelino’,
      ‘linguagem’: [‘Python’,’c’,’c++’],
      ‘database’: ‘mongodb’,
      ‘empresa’: ‘gonow’
  }
AGREGADOR

Distintos


  db.gonow.insert({‘linguagem’: ‘python’})
  db.gonow.insert({‘linguagem’: ‘c’})
  db.gonow.insert({‘linguagem’: ‘c++’})

  db.gonow.distinct(‘linguagem’)
SQL PARA MONGO
                                                   A criação de documento no MongoDB é dinamica, basta
CREATE TABLE gonow (a Number, b Number);
                                                   fazer o primeiro insert()

INSERT INTO gonow (1,1);                           db.gonow.insert({a: 1, b: 1})

SELECT * FROM gonow;                               db.gonow.find({})

SELECT * FROM gonow WHERE sobrenome = ‘Avelino’;   db.gonow.find({‘sobrenome’: ‘Avelino’})

SELECT * FROM gonow ORDER BY sobrenome;            db.gonow.find({}).sort({sobrenome:1})

SELECT * FROM gonow WHERE a < 1;                   db.gonow.find({a: {$gt:1}})

SELECT * FROM gonow WHERE a > 1;                   db.gonow.find({a: {$lt:1}})

SELECT * FROM gonow LIMIT 1;                       db.gonow.find({}).limit(1)
OPERADORES

 <                        $lt

 <=                       $lte

 >                        $gt

 >=                       $gte




http://www.mongodb.org/display/DOCS/Advanced+Queries
MONGODB COM PYTHON

Exemplo


  >>> from pymongo import Connection
  >>> con = Connection(‘localhost’)
  >>> db = con[‘gonow’]
  >>>
  >>> gonow = {‘nome’: ‘Thiago’,‘sobrenome’: ‘Avelino’, ‘linguagem’: [‘Python’,’c’,’c++’]}
  >>> db.gonow.insert(gonow)
  ObjectId(‘4d2e48e7cc9374271b02247a’)

  >>> db.gonow.find_one({})
  {u‘_id’: ObjectId(‘4d2e48e7cc9374271b02247a’),u‘nome’: u‘Thiago’,u‘sobrenome’:
  u‘Avelino’, u‘linguagem’: [u‘Python’,u’c’,u’c++’]}
MONGODB COM RUBY

Exemplo


  require 'rubygems'
  require 'mongo'

  db = Mongo::Connection.new("localhost").db("gonow")
  gonow = {‘nome’: ‘Thiago’,‘sobrenome’: ‘Avelino’, ‘linguagem’: [‘Python’,’c’,’c++’]}
  db.insert(gonow)
BIT.LY/DOCMONGO
             ou

MONGODB.ORG/DISPLAY/DOCS/HOME
OBRIGADO!!! PERGUNTAS?

             Thiago Avelino
     thiago.avelino@gonow.com.br

          Twitter: @avelino0
        Blog: http://blog.avelino.us

MongoDB, Banco de Dados orientado a documento

  • 1.
    Banco de Dadosorientado a documento
  • 2.
    THIAGO AVELINO • Trabalha com Software Livre desde 2005 • Desenvolvedor Python desde 2006 • Committer de alguns projetos OpenSource • CentOS (Kernel) • MongoDB • Algumas biblioteca Python (MongoEngine)
  • 3.
    PORQUE ESSE NOME? Veioda palavra humongous (Gigantesco)
  • 4.
    O QUE ÉMONGODB? • Open Source • Alta Performance • Schema (Esquema) Aberto • Orientado a Documento • Suporte Geo nativo • Banco de Dados
  • 5.
    O QUE ÉMONGODB? “O MongoDB trabalha com key-value (que são rápidos e altamente escalável) e sistema RDBMS (Relational database management system) tradicional (que oferecem consultas rica e profunda funcionalidade)”
  • 6.
  • 7.
    SCHEMA ABERTO • Pós • Tipagem dinâmica • Migrações • Flexibilidade • Cache
  • 8.
    DOCUMENTO O Documento doMongoDB é basicamente um json. exemplo: { ‘nome’: ‘Thiago’, ‘sobrenome’: ‘Avelino’, ‘linguagem’: ‘Python’, ‘database’: ‘mongodb’ }
  • 9.
    MIGRAÇÃO Você pode atualizarseus dados dinamicamente { ‘nome’: ‘Thiago’, ‘sobrenome’: ‘Avelino’, ‘linguagem’: ‘Python’, ‘database’: ‘mongodb’ } { ‘nome’: ‘Thiago’, ‘sobrenome’: ‘Avelino’, ‘linguagem’: [‘Python’,’c’,’c++’], ‘database’: ‘mongodb’, ‘empresa’: ‘gonow’ }
  • 10.
    AGREGADOR Distintos db.gonow.insert({‘linguagem’:‘python’}) db.gonow.insert({‘linguagem’: ‘c’}) db.gonow.insert({‘linguagem’: ‘c++’}) db.gonow.distinct(‘linguagem’)
  • 11.
    SQL PARA MONGO A criação de documento no MongoDB é dinamica, basta CREATE TABLE gonow (a Number, b Number); fazer o primeiro insert() INSERT INTO gonow (1,1); db.gonow.insert({a: 1, b: 1}) SELECT * FROM gonow; db.gonow.find({}) SELECT * FROM gonow WHERE sobrenome = ‘Avelino’; db.gonow.find({‘sobrenome’: ‘Avelino’}) SELECT * FROM gonow ORDER BY sobrenome; db.gonow.find({}).sort({sobrenome:1}) SELECT * FROM gonow WHERE a < 1; db.gonow.find({a: {$gt:1}}) SELECT * FROM gonow WHERE a > 1; db.gonow.find({a: {$lt:1}}) SELECT * FROM gonow LIMIT 1; db.gonow.find({}).limit(1)
  • 12.
    OPERADORES < $lt <= $lte > $gt >= $gte http://www.mongodb.org/display/DOCS/Advanced+Queries
  • 13.
    MONGODB COM PYTHON Exemplo >>> from pymongo import Connection >>> con = Connection(‘localhost’) >>> db = con[‘gonow’] >>> >>> gonow = {‘nome’: ‘Thiago’,‘sobrenome’: ‘Avelino’, ‘linguagem’: [‘Python’,’c’,’c++’]} >>> db.gonow.insert(gonow) ObjectId(‘4d2e48e7cc9374271b02247a’) >>> db.gonow.find_one({}) {u‘_id’: ObjectId(‘4d2e48e7cc9374271b02247a’),u‘nome’: u‘Thiago’,u‘sobrenome’: u‘Avelino’, u‘linguagem’: [u‘Python’,u’c’,u’c++’]}
  • 14.
    MONGODB COM RUBY Exemplo require 'rubygems' require 'mongo' db = Mongo::Connection.new("localhost").db("gonow") gonow = {‘nome’: ‘Thiago’,‘sobrenome’: ‘Avelino’, ‘linguagem’: [‘Python’,’c’,’c++’]} db.insert(gonow)
  • 15.
    BIT.LY/DOCMONGO ou MONGODB.ORG/DISPLAY/DOCS/HOME
  • 16.
    OBRIGADO!!! PERGUNTAS? Thiago Avelino thiago.avelino@gonow.com.br Twitter: @avelino0 Blog: http://blog.avelino.us