Este documento resume las características y usos de Redis, una base de datos clave-valor muy rápida que soporta datos estructurados. Redis puede escalar horizontalmente mediante particionamiento de datos en varios nodos y replicación de lecturas. Se recomienda usar Redis como caché, base de datos auxiliar o principal cuando se requiera alta velocidad de consulta. Redis ofrece tipos de datos como hashes, listas y conjuntos que facilitan el modelado y consulta de datos complejos de forma eficiente.
Comúnmente conocemos redis como un sistema de caché distribuido que podemos usar en modo PaaS gracias a la plataforma de azure. Pero redis se define como un sistema de base de datos NoSql de tipo clave valor, que funciona perfectamente como memoria caché, pero que además tiene muchas características adcionales. A lo largo de esta charla comentaremos las posibilidades de este servicio y cómo podemos explotarlas.
Introducción a esta base de datos NoSQL que permite desarrollar aplicaciones altamente escalables gracias a su velocidad (100k operaciones por segundo en un ordenador corriente) y su capacidad de trabajar en varios nodos.
Redis: servidor de estructuras de datosAntonio Ognio
Una introducción a Redis, un servidor de estructuras de datos en red que actua como una base de datos no-relacional con almacenamiento principal en memoria RAM y estrategias de almacenamiento persistente basadas en disco.
Comúnmente conocemos redis como un sistema de caché distribuido que podemos usar en modo PaaS gracias a la plataforma de azure. Pero redis se define como un sistema de base de datos NoSql de tipo clave valor, que funciona perfectamente como memoria caché, pero que además tiene muchas características adcionales. A lo largo de esta charla comentaremos las posibilidades de este servicio y cómo podemos explotarlas.
Introducción a esta base de datos NoSQL que permite desarrollar aplicaciones altamente escalables gracias a su velocidad (100k operaciones por segundo en un ordenador corriente) y su capacidad de trabajar en varios nodos.
Redis: servidor de estructuras de datosAntonio Ognio
Una introducción a Redis, un servidor de estructuras de datos en red que actua como una base de datos no-relacional con almacenamiento principal en memoria RAM y estrategias de almacenamiento persistente basadas en disco.
Charla hecha en el Codemotion celebrado en España los dias 18 y 19 de octubre para explicar de manera introductoria como administrar un entorno de mongodb en producción. Haciendo enfasis en hacer backups y sharding. Se recomienda descargar para su mejor visualización (Gifs animados ^_^)
Meetup de Spark y su interacción con Kerberos, para verlo como animación: https://docs.google.com/presentation/d/1DCjp_-s9J647Vydt5ltmqfXpS2PrJDo3KzoVz0C9T7Q/edit?usp=sharing
Agenda:
CDB vs no-CDB
¿Qué es una PDB?
¿Qué es el Root?
¿Qué es el Seed?
Instancia en un CDB
Diccionario en un CDB
Común vs Local
Cloud y Oracle Multitenant
Git: flujos de trabajo y herramientas para trabajo colaborativoAprende Git
Llevas unos meses dándole vueltas a subir ese parche que has hecho de jquery para corregir ese bug que te tenía loco. O crear ese proyecto en github para subir esa super tarea gulp que tanto os ha ayudado en el proyecto. Sí, te gustaría hacerlo pero no tienes ni idea de por dónde empezar: travis, pull-request, hooks, CI, gerrit, rebases, squashing, semantic versioning... ¿qué es todo eso y para qué sirve?. En esta charla hablaremos de qué herramientas aporta git y github para facilitar esta tarea, cómo podemos organizar nuestros repositorios y flujos de trabajo y os daremos las pautas para que podáis empezar a sacarle el máximo partido a los repositorios de código distribuido.
Estas diapositivas corresponden a la charla que se dio en madrid el 26/10/2015 en un meetup conjunto entre los grupos de HTML5 Spain y Spanish git Meetup.
Charla hecha en el Codemotion celebrado en España los dias 18 y 19 de octubre para explicar de manera introductoria como administrar un entorno de mongodb en producción. Haciendo enfasis en hacer backups y sharding. Se recomienda descargar para su mejor visualización (Gifs animados ^_^)
Meetup de Spark y su interacción con Kerberos, para verlo como animación: https://docs.google.com/presentation/d/1DCjp_-s9J647Vydt5ltmqfXpS2PrJDo3KzoVz0C9T7Q/edit?usp=sharing
Agenda:
CDB vs no-CDB
¿Qué es una PDB?
¿Qué es el Root?
¿Qué es el Seed?
Instancia en un CDB
Diccionario en un CDB
Común vs Local
Cloud y Oracle Multitenant
Git: flujos de trabajo y herramientas para trabajo colaborativoAprende Git
Llevas unos meses dándole vueltas a subir ese parche que has hecho de jquery para corregir ese bug que te tenía loco. O crear ese proyecto en github para subir esa super tarea gulp que tanto os ha ayudado en el proyecto. Sí, te gustaría hacerlo pero no tienes ni idea de por dónde empezar: travis, pull-request, hooks, CI, gerrit, rebases, squashing, semantic versioning... ¿qué es todo eso y para qué sirve?. En esta charla hablaremos de qué herramientas aporta git y github para facilitar esta tarea, cómo podemos organizar nuestros repositorios y flujos de trabajo y os daremos las pautas para que podáis empezar a sacarle el máximo partido a los repositorios de código distribuido.
Estas diapositivas corresponden a la charla que se dio en madrid el 26/10/2015 en un meetup conjunto entre los grupos de HTML5 Spain y Spanish git Meetup.
http://summit.solidq.com
Es innegable que los motores de BBDD transaccionales deben adaptarse a la posibilidad de gestionar datos no estructurados. Microsoft en SQL Server 2016 incluye un motor nuevo (llamado Polybase) que permite acceder con lenguaje Transact SQL a datos no estructurados y poder mezclarlos con datos estructurados. En esta sesión conocerá este nuevo motor y cómo empezar a integrar datos no estructurados en sus bases de datos transaccionales.
Material utilizado en la sesión técnica que tuvo lugar el 5 de mayo de 2016. A lo largo de la sesión Óscar Miró presentó ejemplos de qué es lo que funciona (y lo que no funciona) a nivel de análisis en proyectos de Big Data.
Sobre el ponente: Oscar Marín Miró (outliers.es)
Ingeniero de Telecomunicaciones, trabaja e investiga desde el año 2001 en lo que ahora llamamos ‘Big Data’. Especializado en el análisis de texto, redes sociales, datos urbanos y visualización de datos. Fundador del colectivo Outliers, desde donde se fomenta la aplicación del valor de los datos a todos los campos (Ciencia, Periodismo, Urbanismo, Sociología, Marketing…).
Miembro del equipo de investigación transdisciplinar DatAnalysis15m, enfocado en el análisis entre la viralidad y el contenido emocional del mensaje. En la faceta docente, imparte cursos regularmente sobre análisis y visualización de datos, en diversas Universidades, Compañías e Instituciones (UOC, UAB, Telenoika Audiovisual Community, Convent de Sant Agustí, Telefónica Digital).
Breve introducción a las bases de datos NoSQL, es decir, no relacionadas, que tuvo lugar en @cycle_it durante uno de los laboratorios de innovación.
Se trataron las bases de datos NoSQL, hablando de las principales categorías: Columna, Documento, Clave-Valor y Grafo. Se mencionan algunos ejemplos de vendedores en cada categoría como Cassandra, Hadoop/HBase, Redis, MongoDB, Riak, Neo4J, etc.
Presentación hecha en el SpringIO 2012 en Madrid España. Donde se muestra un poco de la experiencia adquirida durante el desarrollo y puesta a producción de la plataforma de eCommerce mas grande de LatinoAmerica construida con Grails
Escalabilidad y alto rendimiento con Symfony2Ricard Clau
En esta charla se pretenden tocar todas las cosas que debemos tener en cuenta para sacar el máximo rendimiento y poder escalar usando Symfony2.
Se toca desde parámetros de configuración de PHP y APC, optimización de Composer, dónde optimizar, quick wins varios, cómo hacer profiling correctamente, BBDD NoSQL vs SQL y por supuesto lecciones aprendidas en mis anteriores trabajos
4. ¿RDBMS suficiente?
• 640K - of memory - ought to be enough for
anybody - Bill Gates?
• Who the hell knew how much address space
we needed? - Vint Cerf
5. ¿Hasta cuánto
necesitaré escalar?
• ¿Cuántos usuarios tienes? ¿Cuál es tu máximo de
usuarios? Tu país, todos los smartphones del mundo,
el mundo entero?
• ¿Cuántas peticiones/s hace cada usuario de media?
• Elasticidad: ¿tienes picos?
6. ¿Quién necesita escalar
mucho? Ejemplos:
• Juegos. Especialmente multijugador.
• Aplicaciones sociales. Ej: Facebook apps
• Web services. Ej: pasarelas de pago.
• ¿Tú? Depende, claro.
7. Escalar es...
• Escalar es poder atender más peticiones / s
• Podemos escalar:
• Con software más óptimo. ¡Ahorro de costes!
Ejemplo: http://bit.ly/ibdi20
• Con hardware:
• Verticalmente: mejor hardware en 1 máquina
• Horizontalmente: más máquinas
13. Join, join, join, join
SELECT link_id AS id, link_author AS author, link_blog AS blog, /* muc
FROM links
INNER JOIN users ON (user_id = link_author)
LEFT JOIN (categories AS cat, categories AS meta) ON (cat.category_i
LEFT JOIN votes ON (link_date > @enabled_votes AND vote_type='links'
LEFT JOIN favorites ON (@user_id > 0 AND favorite_user_id = @user_i
LEFT JOIN link_clicks AS clicks ON (clicks.id = links.link_id)
INNER JOIN (SELECT link_id FROM links $from WHERE $where $order_by L
Fuente: http://bit.ly/fLf0MK
14. Menéame.net
Creo que sería muy complicado encontrar una consulta más
eficiente que la anterior para la base de datos del
Menéame. Pero no ha sido una idea que se me ocurrió de
un día para otro, ni siquiera en semanas. Fue la evolución y
el resultado de 5 años de experiencia directa, a veces
dolorosa, y de aprender muchas cosas en el proceso.
- Ricardo Galli
Fuente: http://bit.ly/fLf0MK
21. Particionamiento
• Los datos están en varios nodos
• A partir de la clave sabemos el nodo donde
está el dato.
• Particionamiento manual. Ej: claves con fechas
• Ejemplo particionamiento “automático”:
• nodo = hash(clave) % nodos
23. Para no hacerlo
nosotros...
• redis-cluster
• En desarrollo.Versión experimental en Marzo
• RC prevista para Junio
• http://bit.ly/c4XyyZ
• redis-sharding
• Sustituto temporal hasta que redis-cluster esté listo
• https://github.com/kni/redis-sharding
32. Modelado de datos
• Objetos → hashes
• Consultas → Listas, sets y sets ordenados
• Guardar sólo el id
• Son índices manuales
33. APIs bajo nivel
• Muchas en muchos lenguajes.
• En Java por ejemplo: Jedis
• Spring Data
34. APIs de alto nivel
• GORM Redis
• ¿Hacemos la nuestra?
35. Do it yourself
public static IntegerValue users = new IntegerValue("users");
public static ObjectValue<User> user
= new ObjectValue<User>(User.class, "user");
Integer n = users.incr();
User u = new User("Pepe");
user.withKey(n.toString()).set(u);
36. Do it yourself
• Clases que abstraen los valores soportados
en Redis:
• IntegerValue
• ObjectValue con generics
• ListValue
• SetValue
• SortedSetValue.
37. Do it yourself
• withKey(String...params)
• Construye una clave con un prefijo y los
params separados por “:”.
• Devuelve un objeto con métodos
apropiados para el tipo de dato
47. Cuándo usar Redis
• Como caché. Un memcache con datos estructurados
y persistente. También soporta expiración.
• Como base de datos auxiliar cuando se necesite
mucha velocidad. Que sea persistente tiene
• una ventaja importante: si
Como base de datos principal. se cae la caché, al volver a
arrancarla no está vacía.
Así que no habrá un aluvión
de peticiones a la fuente de
datos principal.