nosql tucumanvalley-10
TRANSCRIPT
Not only SQL
¿Y este quién es?
Luis Lavena
Director de tecnología en AREA 17
Consultor y desarrollador en el area de video profesional (TV/Cable) por mas de 12 años.
Maintainer de RubyInstaller (for Windows)
http://www.area17.com
¿Y qué es NoSQL?
Aquellos sistemas que no poseen un schema fijo.
Aquellos sistemas que no almacenan la infomación de una manera estructurada.
¿Qué?
RDBMS
MySQL, PostgreSQL, Oracle, MSSQL
Un registro esta formado por N cantidad de columnas que son consistentes para cada registro
Esos registros pueden ser incluidos o usados de referencia para otras consultas (join, etc)
Ahora... NoSQL es...
Todo lo que no es RDBMS (Relational Database Management System)
Hay mas de un tipo de solución (siempre hay mas de un tipo de problema)
Tipos de sistemas NoSQL
Document (CouchDB, MongoDB)
Key/Value (memcached, redis, Tokyo Cabinet, SimpleDB) – RAM o Disco
Graph (AllegroGraph, Neo4j)
Muchos más (http://nosql-databases.org/)
Document Store
Document Store
Hay un base o tipo de documento
Cada documento tiene sus propios atributos
Cada documento puede contener otros documentos propios de si.
CouchDB
Usa standard de comunicación (HTTP)
Representacion de recursos (REST)
Fácil expansión usando proxy y load balancing)
http://couchdb.apache.org/
MongoDB
Uso de JSON como formato de datos (BSON)
Propio sistema de conexión
Indexado
JavaScript como lenguaje de Query
Sharding
http://www.mongodb.org/
Ejemplos
Fichas médicas
Registros de enfermedades
HowTos (Guias paso a paso)
Censos
Key / Value (Diccionario)
Key Value
Por cada k hay un v equivalente (k => v)
Principio básico de representación de objetos (hashes)
Conceptos y funcionalidades simplificados
Memcached
Comandos sencillos
Rápido
Expiración automática de claves
Solo memoria, entre más, mejor.
http://memcached.org/
Redis
Comandos sencillos
Rápido
Lo mejor de memcached, pero persistente
Más alla de memcached (Sets, Lists, Uniones, etc)
http://redis.io/
Ejemplos
Cache en memoria (memcached)
Cache de fragmentos (memcached)
Friends y Followers (Redis)
Activity Feeds (Redis)
Twitter-clones (Redis)
Processing Queues (Redis)
Graph
Graph
Su objetivo principal no es los datos sino las relaciones entre ellos
Optimizados para resolver relaciones de 2do nivel o superiores.
neo4j
Graph Engine con almacenamiento de datos
Rápido (en memoria y persistente)
Nodos, relaciones, edges y propiedades
Plugins para queries complejos (Gremlin)
Java, con opción REST
http://neo4j.org/
Ejemplos
Sistemas de recomendaciones (amigos, amigos de amigos, etc)
Followers y Following
Recomendaciones musicales (Last.FM)
Tags y relaciones (no clouds)
Recordar:
Simpre hay una herramienta para cada problema.
No siempre por que se pueda hacer en SQL singnifica que se deba :-)
¿Preguntas?
¡Muchas gracias a todos!
CC: attribution, non-commercial, share alike.