Mondongo, un ODM para PHP y MongoDB

Post on 26-Dec-2014

14.957 views 4 download

description

 

Transcript of Mondongo, un ODM para PHP y MongoDB

MondonGO

¿Qué es MondonGO?

“Mondongo es a los ODMs lo que MongoDB a las bases de datos.”

¿Ein?“Mondongo es a los ODMs lo que MongoDB a las

bases de datos.”

¿Qué es ?

“MongoDB es una base de datos escalable, de alto rendimiento, de código abierto y orientada a

documentos.”

Terminología

Base de Datos = Base de Datos

Base de Datos = Base de Datos Tabla = Colección

Base de Datos = Base de Datos Tabla = Colección

Registro ~ Documento

Documentos

JSON

Embebidos

Sin Esquema

Cada documento puede tener distinta estructura

No hay tipos

Drivers

en

Conectar con Mongo

Seleccionar bases de datos

Seleccionar colecciones

Las bases de datos y las colecciones se crean automáticamente si no existen

Los documentos son simplemente arrays

Insertar documentos

Actualizar documentos

Consultar documentos

¿Qué es un ODM?

ODM == Object Document Mapper

“Un ODM es una herramienta que mapea la estructura de bases de datos a objetos”

¿Qué es MondonGO?

“Mondongo es un sencillo, potente y ultrarápido ODM para PHP y MongoDB.”

Sencillo

Fácil de usar

Potente

MondonGO es increíblemente flexible gracias a Mondator

Puede usarse para cualquier tipo y tamaño de proyecto

Ultrarápido

Ha sido diseñado para ser extremadamente ligero

Es el mapeador más rápido en PHP actualmente

¿Qué es Mondator?

“Mondator es un generador de clases para PHP.”

Mondongo usa Mondator para generar las clases de documentos y repositorios

Iniciar un mondator

Las configuraciones de clases contienen la información de las clases que deben generarse

Asignar configuraciones de clases

Asignar configuraciones de clases

Las extensiones determinan qué clases se generarán y dónde a partir de las

configuraciones de clases

Asignar extensiones

Asignar extensiones

Procesar el mondator

Mondongo genera cuatro clases por cada configuración de clase

Las clases Base no deben editarse, se sobreescriben cada vez que se procesa el mondator

Documentos MondonGO

Los documentos Mondongo se mapean en las configuraciones de clases de Mondator

Campos

Son los datos de los documentos

Tipos MondonGO

● array

● bin_data

● boolean

● date

● float

● integer

● raw

● reference_one

● reference_many

● string

Se usan setters y getters para trabajar con los datos de los documentos

Referencias

Las referencias son relaciones hacia otros documentos

Referencias a uno

Referencias a varios

Embebidos

Los embebidos son documentos dentro de otros documentos

Se usan igual que las referencias

Guardar

Mondongo genera la inserción o actualización óptima de los campos modificados

Borrar

Configurar MondonGO

Iniciar un mondongo

Asignar conexiones al mondongo

Las conexiones son perezosas

Repositorios MondonGO

Los repositorios realizan funciones generales sobre clases de documentos

Se obtienen mediante el mondongo

Consultas MondonGO

Se realizan mediante los repositorios

Consultar documentos

Consultar documentos con opciones

Consultar documentos agrupando opciones

La sintaxis de las opciones Mondongo es la misma que la sintaxis Mongo

Consultar un documento

Consultar un documento por ID

Contar documentos

Borrar documentos

Eventos MondonGO

Mondongo proporciona varios hooks en los documentos, que se lanzan antes y después de

ciertas acciones

● preSave● postSave● preInsert● postInsert● preUpdate● postUpdate● preDelete● postDelete

Extensiones MondonGO

Las extensiones Mondongo son extensiones Mondator

Las extensiones Mondongo permiten personalizar muchísimo Mondongo

¿Quieres usar los documentos como arrays?

¿Quieres usar los documentos por sobrecarga?

¿Quieres importar y exportar datos con arrays?

Extensiones Independientes Mondongo

Se definen en las configuraciones de clases

¿Quieres guardar fechas de creación y actualización en algún documento?

¿Quieres guardar el slug de algún campo en algún documento?

¿Qué puedes hacer con extensiones independientes Mondongo?

● Modificar campos, referencias, embebidos● Añadir● Editar● Borrar

● Añadir propiedades y métodos a documentos y repositorios

● Añadir eventos a documentos● …

Extensiones Independientes Mondongopor defecto

¿Quieres guardar fechas de creación y actualización en todos los documentos?

Más mondongadas...

Mondongo permite manejar fácilmente los índices de las colecciones

Mondongo permite guardar ficheros mediante GridFS

Mondongo permite loguear las consultas de la base de datos para optimizar el desarrollo

Mondongo usa batchInsert para insertar documentos de manera eficiente

Mondongo usa operaciones atómicas para actualizar y borrar documentos eficientemente

Al usar clases generadas, y con PHPDoc, podrás usar el autocompletado de tu editor

IDE

Mondongo está completamente testeado con pruebas automáticas con PHPUnit

¿Por qué un ODM con MongoDB?

Un ODM acelera y simplifica muchísimo el desarrollo y mantenimiento de las aplicaciones

Los ODMs tienen una desventaja:el rendimiento

¿Es MondonGO realmente ultrarápido ?

Vamos a ver unas pruebas comparando Mondongo con Mongo directamente y con otros dos ODMs:

ActiveMongo y DoctrineMongo

Insertando

Consultando por ID

Hydratando

Resumiendo...

Y además...

sfMondongoPlugin

Integración con symfony

MondongoBundle

Integración con Symfony2

Conclusiones

● Mongo es sinónimo de alto rendimiento

Conclusiones

● Mongo es sinónimo de alto rendimiento

● Un ODM acelera y simplifica el desarrollo y mantenimiento de las aplicaciones

Conclusiones

● Mongo es sinónimo de alto rendimiento

● Un ODM acelera y simplifica el desarrollo y mantenimiento de las aplicaciones

● Mondongo es el mejor aliado para exprimir hasta la última gota de MongoDB en PHP

Conclusiones

● Mongo es sinónimo de alto rendimiento

● Un ODM acelera y simplifica el desarrollo y mantenimiento de las aplicaciones

● Mondongo es el mejor aliado para exprimir hasta la última gota de MongoDB en PHP

● Las extensiones Mondator enlarguis your... ¡mondongo!

¿Preguntas?

http://mondongo.es

pablodip@gmail.comhttp://twitter.com/pablodiphttp://github.com/pablodip

¿Te gusta Mondongo?

* Úsalo * Dalo a conocer * Blog * Twitter #mndgo