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   curi...
¿CON QUÉ?
EL FUTURO!!!

               Tokio Cabinet / Redis


                        Couchdb
INTRO Y COMPARACION CON COUCHDB


•   Super Rapido?                   •   Super Rapido?

•   Conexion por drivers         ...
BUENO PARA

• Sitios   web en general

• Caching

• Alto   volumen, bajo valor

• Gran     escalabilidad

• Guardar     es...
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/

•...
BASE DE DATOS


• mismo   concepto que en MySQL (Repositorio de datos)

• formado    de colecciones

• creadas   al vuelo ...
COLECCIÓN

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

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

• ...
DOCUMENTO

• Almacenado     como parte de una colección.

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

•...
CONSULTAS

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

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

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

• :fields   (igual a :select en active record)
...
¿CÓMO?
CON RUBY

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

• activerecord adapter http://github.com/mo...
NUNEMAPPER
               (MONGOMAPPER)

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

• DSL    que abstrae a Mongo p...
CARACTERISTICAS

• Typecasting(El tipo puede       • Creacion  y actualizacion
 ser una clase definida por ti!)     simple ...
EJEMPLOS
class User
  include MongoMapper::Document
  key :name, String, :required => true, :length => 5..100
  key :email...
LINKS

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

•   http://rai...
GRACIAS
                  Presentacion basada (copiada) de:
             http://www.mefeedia.com/watch/25040980
http://rai...
Mongo Mapper
Upcoming SlideShare
Loading in …5
×

Mongo Mapper

1,746 views

Published on

Mongo mapper introduction for Pio.la Conference.

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

No Downloads
Views
Total views
1,746
On SlideShare
0
From Embeds
0
Number of Embeds
77
Actions
Shares
0
Downloads
34
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • find always returns a cursor that you can keep iterating through
  • Mongo Mapper

    1. 1. YO: @kidpollo
    2. 2. ¿POR QUÉ? ¿CON QUÉ? ¿CÓMO?
    3. 3. ¿POR QUÉ?
    4. 4. • 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.
    5. 5. ¿CON QUÉ?
    6. 6. EL FUTURO!!! Tokio Cabinet / Redis Couchdb
    7. 7. 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
    8. 8. BUENO PARA • Sitios web en general • Caching • Alto volumen, bajo valor • Gran escalabilidad • Guardar estructuras de los objetos en JSON o BSON
    9. 9. NO TAN BUENO PARA • Alto volumen de transacciones • Inteligencia de Negocios (BI) • Cosas que requieran SQL
    10. 10. 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
    11. 11. BASE DE DATOS • mismo concepto que en MySQL (Repositorio de datos) • formado de colecciones • creadas al vuelo al ser instanciadas :D
    12. 12. 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)
    13. 13. 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.
    14. 14. 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’})
    15. 15. 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)
    16. 16. ¿CÓMO?
    17. 17. 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
    18. 18. 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.
    19. 19. 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.
    20. 20. 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
    21. 21. 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
    22. 22. GRACIAS Presentacion basada (copiada) de: http://www.mefeedia.com/watch/25040980 http://railstips.org/2009/8/19/mongomapper-indy-rb-presentation kidpollo@gmail.com

    ×