joinea - mongodb en php y symfony2

31
mongoDB en php y Symfony2

Upload: sergiovier

Post on 20-Jun-2015

2.062 views

Category:

Documents


1 download

DESCRIPTION

Presentación realizada en la JoInEA 2011, en la que se introduce a los conceptos básicos de la base de datos noSQL mongodb y como se integra con Symfony2.

TRANSCRIPT

Page 1: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Page 2: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

➢ Licenciado en Sistemas de Información (egresado de la casa)

➢ Miembro de la comunidad Misiones Software Libre

➢ +5 manejando GNU/Linux

➢ +4 desarrollador activo (php, symfony)

➢ Socio fundador de             empresa dedicada a desarrollar y ofrecer soluciones TIC utilizando Software Libre

about:me

Page 3: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

mongoDB

Page 4: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

(proviene de “humongous”) es una base de datos escalable, de alto rendimiento, open source, schema­free  y orientado a documentos. 

 http://mongodb.org

✔ Su desarrollo comenzó en 2007; primera beta pública en 2009; primera versión estable en 2010. Versión actual 1.8.x.

✔ Core licenciado bajo la AGPL v3.0 y los drivers bajo Apache Licence v2.0.

✔ Soporte multiplataforma y multilenguaje.

Page 5: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

✔ mongoDB acorta las diferencias entre esquemas de almacenamientos key/value y RDBMS.

✔ mongoDB  logra  escalabilidad  horizontal  al  dejar de usar uniones(joins) y transacciones complejas.

Page 6: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

¿Por qué podríamos elegir mongoDB?

Page 7: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

➔ Orientado a Documentos: fácil mapeo de objetos a documentos. Soporta la evolución del esquema (schemaless).

➔ Multifuncional: implementa funciones de sistemas relacionales con la flexibilidad y capacidad para escalar de modelos no­relacionales.

➔ Alto rendimiento: no existe joins y soporta documentos embebidos y colecciones. Manejo de índices potente.

➔ Alta disponibilidad: soporta replicación master­slave.

➔ Fácilmente escalable: sharding automático (auto­particionado de datos a través de servidores). 

➔ Lenguaje de consulta poderoso: Los datos son almacenados y tratados como JSON (y serializados a BSON).

➔ Soporte ACID parcial: sin transacción y MVCC multi­documento en post de mejorar el rendimiento.

Page 8: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Modelo de Datos mongoDB 

Page 9: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

➔ Un Sistema Mongo mantiene un conjunto de bases de datos.

➔ Una  Base  de  Datos  mantiene  un  conjunto  de colecciones.

➔ Una Colección mantinene un conjunto de documentos.

➔ Un Documento es un conjunto de campos.

➔ Un Campo es un par clave­valor.

➔ Una Clave es un identificador (string).

➔ Un  valor  es  un  tipo  básico  (string,  integer, float, timestamp, binary, etc. un documento, o un array de valores).

Page 10: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

¿Pero realmente a que equivalen?

Page 11: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Tablas Colecciones

Filas Documentos

Columnas Claves (BSON)

Valores Valores (BSON, o documento)

Unión (joins) Embebido y enlazado

Consultas retornan registros

Consultas retornan un cursor!

Page 12: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Lenguaje de Consultas mongoDB 

Page 13: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

  Métodos➔ find() ➔ findOne() ➔ save() ➔ remove() ➔ update() ➔ group() ➔ limit() ➔ skip() ➔ ensureIndex() ➔ count() ➔ ...

  Operadores➔ $ne➔ $in➔ $nin➔ $mod➔ $all➔ $size➔ $exists➔ $type➔ $gt➔ $lt➔ $gte➔ $lte

Page 14: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Page 15: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Page 16: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Page 17: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Symfony2

Page 18: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

✔Framework para PHP basado en componentes. Logra alta cohesión y bajo acoplamiento (GRASP)

✔Versión 2.x, reescrito para PHP >= v5.3.2

✔Soporte extendido para las ramas estables (2.x)

✔Popularidad en github.com/symfony/symfony:

• 2,914 watchers (#1 in PHP, #25 total) • 746 forks (#1 en PHP, #12 total)

✔Tanto Drupal como phpBB analizan utilizar componentes de Symfony2

• groups.drupal.org/node/167299

• wiki.phpbb.com/PhpBB4/RFC/Symfony_2

Page 19: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Que nos está brindando Symfony2

Page 20: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Fuente:www.slideshare.net/javier.eguiluz/desymfony-2011-tutorial-1-instalacion-y-primeros-pasos

Page 21: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Configuración PHP XML YAML

Plantillas PHP TWIG

Almacenamiento SQL NoSQL

Flujo de Trabajo

Anotaciones Archivos

Fuente:www.slideshare.net/javier.eguiluz/desymfony-2011-tutorial-1-instalacion-y-primeros-pasos

Page 22: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Doctrine mongoDB ODM(Object Document Mapper)

Page 23: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Page 24: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Page 25: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Page 26: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Page 27: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Page 28: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

En conclusión

Page 29: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

➢ noSQL es un complemento a las tecnologías de los RDBMS.

➢ Ideal para desarrollos ágiles, lograr escalabilidad o manejar enormes cantidades de datos. 

➢ UnQL en camino, lo que acelera la adopción noSQL. unqlspec.org

Page 30: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

¿Preguntas?

Page 31: Joinea - mongoDB en php y Symfony2

mongoDB en php y Symfony2

Documentación Oficial➔ www.mongodb.org➔ www.symfony.com➔ www.doctrine-project.org/projects/mongodb_odm

➔Aportes Interesantes➔ jwage.com/2010/08/25/blending-the-doctrine-orm-and-mongodb-odm➔ slideshare.net/spf13/blending-mongodb-and-rdbms-for-ecommerce➔ blog.servergrove.com/2010/04/28/mongodb-with-php-and-symfony

@sergiovier