SlideShare una empresa de Scribd logo
Mongo Mapper
YO:
@kidpollo
¿POR QUÉ?
¿CON QUÉ?
   ¿CÓMO?
¿POR QUÉ?
• Sufres   de “Nubemania”

• Necesitasuna escusa para hacer lo que los chicos cool
 hacen. (PELIGROSO!!!)

• Tienes   curiosidad.

• Odias MySQL, no crees que Postgres sea mas rapido y no
 te alcanza para licencias de Oracle.

• Tus
    datos son principalmente referenciados por ID sin la
 necesidad de “JOINS” muy complejos.

• Manejas  una cantidad de datos no trivial y la replicacion y
 escalabilidad de MySQL te dan miedo.
¿CON QUÉ?
EL FUTURO!!!

               Tokio Cabinet / Redis


                        Couchdb
INTRO Y COMPARACION CON COUCHDB


•   Super Rapido?                   •   Super Rapido?

•   Conexion por drivers            •   REST (lento pero cool)

•   Documento/Colleccion            •   Vistas / Documentos

•   Consultas e indices dinamicos   •   Consultas e indices estaticos :(

•   Replicado                       •   Replicado

•   A prueba de fallos?             •   A prueba de fallos?

•   Map / Reduce (muy pronto)       •   Map / Reduce
BUENO PARA

• Sitios   web en general

• Caching

• Alto   volumen, bajo valor

• Gran     escalabilidad

• Guardar     estructuras de los objetos en JSON o BSON
NO TAN BUENO PARA


• Alto   volumen de transacciones

• Inteligencia   de Negocios (BI)

• Cosas   que requieran SQL
INSTALACION

• mkdir   -p /data/db

• bajar, descompactar, mongod   run

• http://video.railstips.org/mongomapper-demo/

• http://www.shiftcommathree.com/articles/how-to-install-
 mongodb-on-os-x
BASE DE DATOS


• mismo   concepto que en MySQL (Repositorio de datos)

• formado    de colecciones

• creadas   al vuelo al ser instanciadas :D
COLECCIÓN

• Tabla   pero sin esquema :D!!!!!!!!!

• Agrupa    datos en menores sets (velocidad, couch no hace
 esto.)

• Cada entidad de primer nivel tiene su colección.(usuarios,
 artículos, etc.)

• Indexable    por una o mas llaves (Máximo 10 por el momento)
DOCUMENTO

• Almacenado     como parte de una colección.

• Pueden    tener un campo _id que sirve como llave primaria.

• Se   manejan tres tipos de relaciones:

 • Documento      Embebido (Subdocument)

 • Asociación.

 • Referencia    a otra bd.
CONSULTAS

• db.collection.find({‘first_name’: ‘Paco’})     # los Pacos

• db.collection.find({‘first_name’: /^J/})     # regex

• db.collection.find_first({‘_id’:1})   # primero con _id 1

• db.collection.find({‘age’: {‘$gt’: 21}})   # borrachos

• db.collection.find({‘author.first_name’:‘John’})     # subdocumento

• db.collection.find({$where:‘this.age       >= 6 && this.age <= 18’})
MORE QUERYING

• $in, $nin, $all, $ne, $gt, $gte, $lt, $lte, $size, $where

• :fields   (igual a :select en active record)

• :limit, :offset   para paginado

• :sort   ascendiente o descendiente [[‘foo’, 1], [‘bar’, -1]]

• count    and group (usa map/reduce)
¿CÓMO?
CON RUBY

• mongo-ruby-driver   http://github.com/mongodb/mongo-ruby-
 driver

• activerecord adapter http://github.com/mongodb/
 activerecord-mongo-adapter

• mongorecord  http://github.com/mongodb/mongo-
 activerecord-ruby
NUNEMAPPER
               (MONGOMAPPER)

• Mongo    no es MySQL (No emula ORM atado a SQL)

• DSL    que abstrae a Mongo pero no lo esconde.

• Aprendes    Mongo mientras lo usas.

• Es   muy divertido de usar y refrescante!

• Mas   parecido a Datamapper.
CARACTERISTICAS

• Typecasting(El tipo puede       • Creacion  y actualizacion
 ser una clase definida por ti!)     simple or multiple.

• Callbacks
          (after_create,          • Delete    y Destroy y _all
 before_destroy etc.)
                                  • Find: id, ids, :all, :first, :last
• Validaciones   (como
 extension)                       • Manejo de asociaciones y
                                    sub documentos.
• Conexióny base de datos
 por documento.
EJEMPLOS
class User
  include MongoMapper::Document
  key :name, String, :required => true, :length => 5..100
  key :email, String, :required => true, :index => true
  key :age, Integer, :numeric => true
  key :active, Boolean, :default => true
  key :address, Address
  many :articles
end

class Address
  include MongoMapper::EmbeddedDocument
  key :street, String
  key :city, String
  key :state, String, :length => 2
  key :zip, Integer, :numeric => true, :length => 5
end
LINKS

•   http://railstips.org/2009/6/3/what-if-a-key-value-store-mated-with-a-relational-database-system

•   http://railstips.org/2009/6/27/mongomapper-the-rad-mongo-wrapper

•   http://railstips.org/2009/7/23/getting-started-with-mongomapper-and-rails

•   http://locomotivation.squeejee.com/post/117119353/mongodb-ruby-friendly-document-storage-
    that-doesnt-rhyme

•   http://mongodb.com/

•   http://10gen.com
GRACIAS
                  Presentacion basada (copiada) de:
             http://www.mefeedia.com/watch/25040980
http://railstips.org/2009/8/19/mongomapper-indy-rb-presentation



           kidpollo@gmail.com

Más contenido relacionado

PPTX
NoSQL, Mongo DB & Google Maps
PPTX
PPTX
Elastic search
PPT
Web Design For Librarians (2)
PPTX
Taller de Scrapy - Barcelona Activa
ODP
losnavegadores
DOCX
Emilio php
PDF
Spring Data y Mongo DB en un proyecto Real
NoSQL, Mongo DB & Google Maps
Elastic search
Web Design For Librarians (2)
Taller de Scrapy - Barcelona Activa
losnavegadores
Emilio php
Spring Data y Mongo DB en un proyecto Real

Similar a Mongo Mapper (20)

PPTX
Jean piere sarumo mongodb
PPTX
Introducción mongodb y desarrollo
PPTX
Ultisgbd
PPTX
MongoDB.basededatos-nosql-basenorelacion
PPTX
PPTX
Mongo db
PDF
Cloud Computing: las nuevas Capas de Persistencia
PPTX
Mongo db dtalk
PPTX
1 tutorial de mongo db
PPTX
Persistencia-NoSQL-y-MongoDB-v-2018.02-Prof.-L.-Straccia.pptx
PPTX
Bd no sql
PPSX
Presentacion BD NoSQL
PPTX
PPTX
NOSQL: Primeros Pasos en MongoDB
PPT
Mongo db course introduction
PDF
Mongodb
KEY
Creating Productive Workshops in Scary Situations
PPTX
Base de datos raquel
PDF
Tema principal de Mongodb y sus beneficios
PDF
José Ramón Palanco - NoSQL Security [RootedCON 2011]
Jean piere sarumo mongodb
Introducción mongodb y desarrollo
Ultisgbd
MongoDB.basededatos-nosql-basenorelacion
Mongo db
Cloud Computing: las nuevas Capas de Persistencia
Mongo db dtalk
1 tutorial de mongo db
Persistencia-NoSQL-y-MongoDB-v-2018.02-Prof.-L.-Straccia.pptx
Bd no sql
Presentacion BD NoSQL
NOSQL: Primeros Pasos en MongoDB
Mongo db course introduction
Mongodb
Creating Productive Workshops in Scary Situations
Base de datos raquel
Tema principal de Mongodb y sus beneficios
José Ramón Palanco - NoSQL Security [RootedCON 2011]
Publicidad

Último (20)

PDF
Temas y subtemas de las fichas 1 y 2.pdf
PDF
Calidad desde el Docente y la mejora continua .pdf
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
ACTIVIDAD 2.pdf j
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PPTX
Yogurt de tocosh (1).pptx preparacion receta
PDF
Maste clas de estructura metálica y arquitectura
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PPTX
Introduccion a servidores de Aplicaciones (1).pptx
DOCX
Trabajo colaborativo Grupo #2.docxmmuhhlk
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PDF
clase auditoria informatica 2025.........
DOCX
Trabajo colaborativo Grupo #2.docxmkkkkkkl
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PDF
diagrama de pareto.pdf valerie giraldo diaz
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPTX
Administración se srevidores de apliaciones
PPT
Que son las redes de computadores y sus partes
Temas y subtemas de las fichas 1 y 2.pdf
Calidad desde el Docente y la mejora continua .pdf
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
ACTIVIDAD 2.pdf j
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Yogurt de tocosh (1).pptx preparacion receta
Maste clas de estructura metálica y arquitectura
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
Introduccion a servidores de Aplicaciones (1).pptx
Trabajo colaborativo Grupo #2.docxmmuhhlk
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
clase auditoria informatica 2025.........
Trabajo colaborativo Grupo #2.docxmkkkkkkl
Plantilla para Diseño de Narrativas Transmedia.pdf
Presentación PASANTIAS AuditorioOO..pptx
diagrama de pareto.pdf valerie giraldo diaz
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Administración se srevidores de apliaciones
Que son las redes de computadores y sus partes
Publicidad

Mongo Mapper

  • 5. • Sufres de “Nubemania” • Necesitasuna escusa para hacer lo que los chicos cool hacen. (PELIGROSO!!!) • Tienes curiosidad. • Odias MySQL, no crees que Postgres sea mas rapido y no te alcanza para licencias de Oracle. • Tus datos son principalmente referenciados por ID sin la necesidad de “JOINS” muy complejos. • Manejas una cantidad de datos no trivial y la replicacion y escalabilidad de MySQL te dan miedo.
  • 7. EL FUTURO!!! Tokio Cabinet / Redis Couchdb
  • 8. INTRO Y COMPARACION CON COUCHDB • Super Rapido? • Super Rapido? • Conexion por drivers • REST (lento pero cool) • Documento/Colleccion • Vistas / Documentos • Consultas e indices dinamicos • Consultas e indices estaticos :( • Replicado • Replicado • A prueba de fallos? • A prueba de fallos? • Map / Reduce (muy pronto) • Map / Reduce
  • 9. BUENO PARA • Sitios web en general • Caching • Alto volumen, bajo valor • Gran escalabilidad • Guardar estructuras de los objetos en JSON o BSON
  • 10. NO TAN BUENO PARA • Alto volumen de transacciones • Inteligencia de Negocios (BI) • Cosas que requieran SQL
  • 11. INSTALACION • mkdir -p /data/db • bajar, descompactar, mongod run • http://video.railstips.org/mongomapper-demo/ • http://www.shiftcommathree.com/articles/how-to-install- mongodb-on-os-x
  • 12. BASE DE DATOS • mismo concepto que en MySQL (Repositorio de datos) • formado de colecciones • creadas al vuelo al ser instanciadas :D
  • 13. COLECCIÓN • Tabla pero sin esquema :D!!!!!!!!! • Agrupa datos en menores sets (velocidad, couch no hace esto.) • Cada entidad de primer nivel tiene su colección.(usuarios, artículos, etc.) • Indexable por una o mas llaves (Máximo 10 por el momento)
  • 14. DOCUMENTO • Almacenado como parte de una colección. • Pueden tener un campo _id que sirve como llave primaria. • Se manejan tres tipos de relaciones: • Documento Embebido (Subdocument) • Asociación. • Referencia a otra bd.
  • 15. CONSULTAS • db.collection.find({‘first_name’: ‘Paco’}) # los Pacos • db.collection.find({‘first_name’: /^J/}) # regex • db.collection.find_first({‘_id’:1}) # primero con _id 1 • db.collection.find({‘age’: {‘$gt’: 21}}) # borrachos • db.collection.find({‘author.first_name’:‘John’}) # subdocumento • db.collection.find({$where:‘this.age >= 6 && this.age <= 18’})
  • 16. MORE QUERYING • $in, $nin, $all, $ne, $gt, $gte, $lt, $lte, $size, $where • :fields (igual a :select en active record) • :limit, :offset para paginado • :sort ascendiente o descendiente [[‘foo’, 1], [‘bar’, -1]] • count and group (usa map/reduce)
  • 18. CON RUBY • mongo-ruby-driver http://github.com/mongodb/mongo-ruby- driver • activerecord adapter http://github.com/mongodb/ activerecord-mongo-adapter • mongorecord http://github.com/mongodb/mongo- activerecord-ruby
  • 19. NUNEMAPPER (MONGOMAPPER) • Mongo no es MySQL (No emula ORM atado a SQL) • DSL que abstrae a Mongo pero no lo esconde. • Aprendes Mongo mientras lo usas. • Es muy divertido de usar y refrescante! • Mas parecido a Datamapper.
  • 20. CARACTERISTICAS • Typecasting(El tipo puede • Creacion y actualizacion ser una clase definida por ti!) simple or multiple. • Callbacks (after_create, • Delete y Destroy y _all before_destroy etc.) • Find: id, ids, :all, :first, :last • Validaciones (como extension) • Manejo de asociaciones y sub documentos. • Conexióny base de datos por documento.
  • 21. EJEMPLOS class User include MongoMapper::Document key :name, String, :required => true, :length => 5..100 key :email, String, :required => true, :index => true key :age, Integer, :numeric => true key :active, Boolean, :default => true key :address, Address many :articles end class Address include MongoMapper::EmbeddedDocument key :street, String key :city, String key :state, String, :length => 2 key :zip, Integer, :numeric => true, :length => 5 end
  • 22. LINKS • http://railstips.org/2009/6/3/what-if-a-key-value-store-mated-with-a-relational-database-system • http://railstips.org/2009/6/27/mongomapper-the-rad-mongo-wrapper • http://railstips.org/2009/7/23/getting-started-with-mongomapper-and-rails • http://locomotivation.squeejee.com/post/117119353/mongodb-ruby-friendly-document-storage- that-doesnt-rhyme • http://mongodb.com/ • http://10gen.com
  • 23. GRACIAS Presentacion basada (copiada) de: http://www.mefeedia.com/watch/25040980 http://railstips.org/2009/8/19/mongomapper-indy-rb-presentation kidpollo@gmail.com

Notas del editor

  • #16: find always returns a cursor that you can keep iterating through