SlideShare una empresa de Scribd logo
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

Similar a Mongo Mapper

Redis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valorRedis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valor
Alberto Gimeno
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
Alberto Gimeno
 
Greach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DBGreach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DB
greach_es
 
Taller Redis
Taller RedisTaller Redis
Taller Redis
betabeers
 
Presentacion BD NoSQL
Presentacion  BD NoSQLPresentacion  BD NoSQL
Presentacion BD NoSQL
Andrea Antunes
 
Introducción mongodb y desarrollo
Introducción mongodb y desarrolloIntroducción mongodb y desarrollo
Introducción mongodb y desarrollo
Juan Ladetto
 
1 tutorial de mongo db
1 tutorial de mongo db1 tutorial de mongo db
1 tutorial de mongo db
.. ..
 
Semana 3 Mongodb
Semana 3   MongodbSemana 3   Mongodb
Mallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDBMallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDB
Emilio Torrens
 
ElasticSearch: la tenés atroden Google
ElasticSearch: la tenés atroden GoogleElasticSearch: la tenés atroden Google
ElasticSearch: la tenés atroden Google
Mariano Iglesias
 
Desarrollo Full Stack UAM.net
Desarrollo Full Stack UAM.netDesarrollo Full Stack UAM.net
Desarrollo Full Stack UAM.net
Roberto Luis Bisbé
 
Introducción a NoSQL
Introducción a NoSQLIntroducción a NoSQL
Introducción a NoSQL
Cycle-IT
 
Introducción al mundo NoSQL
Introducción al mundo NoSQLIntroducción al mundo NoSQL
Introducción al mundo NoSQL
César Rodas
 
MySQL Good Database Design
MySQL Good Database DesignMySQL Good Database Design
MySQL Good Database Design
Nicola Strappazzon C.
 
Replica Sets en MongoDB
Replica Sets en MongoDBReplica Sets en MongoDB
Replica Sets en MongoDB
El Taller Web
 
Hawk: indexado de modelos en bases de datos NoSQL
Hawk: indexado de modelos en bases de datos NoSQLHawk: indexado de modelos en bases de datos NoSQL
Hawk: indexado de modelos en bases de datos NoSQL
Antonio García-Domínguez
 
Primeros pasos con neo4j
Primeros pasos con neo4jPrimeros pasos con neo4j
Primeros pasos con neo4j
Ubaldo Taladriz
 
El futuro de Big Data: La calidad del análisis. Modelos efectivos y casos de uso
El futuro de Big Data: La calidad del análisis. Modelos efectivos y casos de usoEl futuro de Big Data: La calidad del análisis. Modelos efectivos y casos de uso
El futuro de Big Data: La calidad del análisis. Modelos efectivos y casos de uso
Escoles Universitàries Gimbernat i Tomàs Cerdà
 
DBA del Futuro (Un nuevo paradigma)
DBA del Futuro (Un nuevo paradigma)DBA del Futuro (Un nuevo paradigma)
DBA del Futuro (Un nuevo paradigma)
Oracle User Group Mexico
 
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - ExasolExtendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Javier Abadía
 

Similar a Mongo Mapper (20)

Redis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valorRedis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valor
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
 
Greach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DBGreach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DB
 
Taller Redis
Taller RedisTaller Redis
Taller Redis
 
Presentacion BD NoSQL
Presentacion  BD NoSQLPresentacion  BD NoSQL
Presentacion BD NoSQL
 
Introducción mongodb y desarrollo
Introducción mongodb y desarrolloIntroducción mongodb y desarrollo
Introducción mongodb y desarrollo
 
1 tutorial de mongo db
1 tutorial de mongo db1 tutorial de mongo db
1 tutorial de mongo db
 
Semana 3 Mongodb
Semana 3   MongodbSemana 3   Mongodb
Semana 3 Mongodb
 
Mallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDBMallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDB
 
ElasticSearch: la tenés atroden Google
ElasticSearch: la tenés atroden GoogleElasticSearch: la tenés atroden Google
ElasticSearch: la tenés atroden Google
 
Desarrollo Full Stack UAM.net
Desarrollo Full Stack UAM.netDesarrollo Full Stack UAM.net
Desarrollo Full Stack UAM.net
 
Introducción a NoSQL
Introducción a NoSQLIntroducción a NoSQL
Introducción a NoSQL
 
Introducción al mundo NoSQL
Introducción al mundo NoSQLIntroducción al mundo NoSQL
Introducción al mundo NoSQL
 
MySQL Good Database Design
MySQL Good Database DesignMySQL Good Database Design
MySQL Good Database Design
 
Replica Sets en MongoDB
Replica Sets en MongoDBReplica Sets en MongoDB
Replica Sets en MongoDB
 
Hawk: indexado de modelos en bases de datos NoSQL
Hawk: indexado de modelos en bases de datos NoSQLHawk: indexado de modelos en bases de datos NoSQL
Hawk: indexado de modelos en bases de datos NoSQL
 
Primeros pasos con neo4j
Primeros pasos con neo4jPrimeros pasos con neo4j
Primeros pasos con neo4j
 
El futuro de Big Data: La calidad del análisis. Modelos efectivos y casos de uso
El futuro de Big Data: La calidad del análisis. Modelos efectivos y casos de usoEl futuro de Big Data: La calidad del análisis. Modelos efectivos y casos de uso
El futuro de Big Data: La calidad del análisis. Modelos efectivos y casos de uso
 
DBA del Futuro (Un nuevo paradigma)
DBA del Futuro (Un nuevo paradigma)DBA del Futuro (Un nuevo paradigma)
DBA del Futuro (Un nuevo paradigma)
 
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - ExasolExtendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
 

Último

REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
gisellearanguren1
 
625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
yuberpalma
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
NicandroMartinez2
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
jgvanessa23
 
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDADEXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
AngelCristhianMB
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
giampierdiaz5
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
al050121024
 
Modo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdfModo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdf
ranierglez
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
larapalaciosmonzon28
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
KukiiSanchez
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
leia ereni
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
cecypozos703
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
renzocruz180310
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
mantenimientocarbra6
 
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
MiguelAtencio10
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
YashiraPaye
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
YaniEscobar2
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
doctorsoluciones34
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
AbrahamCastillo42
 

Último (20)

REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
 
625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
 
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDADEXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
 
Modo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdfModo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdf
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
 
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
 

Mongo Mapper

  • 1.
  • 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

  1. find always returns a cursor that you can keep iterating through