PHP y NoSQL PHPConMX 2012

Post on 04-Jul-2015

1.007 views 0 download

Transcript of PHP y NoSQL PHPConMX 2012

PHP y NoSQL

Carlos Nacianceno

Quién soy?

• PHP desde hace 12 años

• Zend Certified Engineer

• Instructor de cursos Zend

• El Taller Web

Carlos Nacianceno

Agenda

• NoSQL??

• Tipos de BD no relacionales

• Algunas BD no relacionales y PHP

• Conclusiones

• Preguntas

NoSQL??

NoSQL

• Bases de datos que no son RDBMS

• No relacional

• No hay un lenguaje de consulta

• No es necesario un esquema

• Puede no cumplir ACID

PHP y NoSQL

NoSQL

• Teorema CAP

� Consitencia

� Disponibilidad

� Tolerancia a fallo

• Creció con Google, Amazon, Twitter, Facebook

� Volumenes de datos

� RDBMS no solucionaba

PHP y NoSQL

NoSQL

• No hay “Santos Griales”

• No todo el NoSQL suple a las RDBMS

• Casos de uso

• No solo usarlo por usarlo sino por que puedes sacar provecho de las características

PHP y NoSQL

Tipos de BD No Relacionales

• Orientadas a Documentos

• Documentos no tablas

• Organizados en Colecciones o Tags

• Encodificaciones

• JSON

• BSON

• XML

• YAML

• CouchDB• MongoDB

PHP y NoSQL

Tipos de BD No Relacionales

• Gráficas

• Datos cuya relacion se puede expresar con una gráfica

• Relaciones sociales

• Vínculos

• Arboles de decisiones

• InfiniteGraph• Neo4j

PHP y NoSQL

Tipos de BD No Relacionales

• Llave-Valor

• Relación simple

• Una llave que me regresa un valor

• Contenedor o recipiente

• Redis• Cassandra• Riak

PHP y NoSQL

Tipos de BD No Relacionales

• Tabulares o Distribuidas

• Tablas multidimensionales

• Sistema de archivos

• Hadoop• BigTable• HBase

PHP y NoSQL

MongoDB

• 10gen• Documentos (Hash/Arreglo)• BSON• SQLish• Fácil Replicación• Balanceo de carga• Map/Reduce• Protocolo propio de comunicación

PHP y NoSQL

Ejemplos de uso MongoDB

PHP y NoSQL

MongoDB y PHP

• Extension oficial

• PECL

• Github

• Zend Server

• Clases

• Mongo (conexión)

• MongoDB (base de datos)

• MongoCollection (colecciones documentos)

• MongoCursor (resultados)

• http://php.net/mongo

PHP y NoSQL

CouchDB

• Apache• Documentos• JSON• Views• Fácil Replicación• Map/Reduce (Javascript)• Interfaz HTTP REST

PHP y NoSQL

Ejemplos de uso CouchDB

PHP y NoSQL

CouchDB y PHP

• Extension no oficial

• http://www.topdog.za.net/2010/08/11/php-couchdb-extension/

• Doctrine ODM

• Object Freezer

• PHPillow

PHP y NoSQL

Redis

• Llave-valor Avanzado• En memoria• Operaciones atómicas (push,pull,add,remove)• Fácil Replicación• Protocolo binario propio• VMware

PHP y NoSQL

Ejemplos de uso Redis

PHP y NoSQL

Redis y PHP

• Extension phpredis• https://github.com/nicolasff/phpredis

• Predis

• https://github.com/nrk/predis

• Redis Server

PHP y NoSQL

Riak

• Basho• Llave-valor Particionado• Replicación Masterless• Fault tolerant• Map/Reduce• Interfaz HTTP REST

PHP y NoSQL

Ejemplos de uso Riak

Riak y PHP

• No hay extension • Librería PHP Basho • Github

• https://github.com/basho/riak-php-client

PHP y NoSQL

Conclusiones

• Aprovechar sus ventajas• Establecer un caso de uso adecuado• No usarlo para todo• Estar actualizado

PHP y NoSQL

Preguntas?

Gracias

@igormx

@eltallerweb

http://eltallerweb.com