php y nosql phpconmx 2012
TRANSCRIPT
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