SlideShare une entreprise Scribd logo
1  sur  39
Redis, base de datos
  NoSQL clave-valor
@gimenete

         10 noviembre 2011
  Libre software world conference
Qué es Redis

• Base de datos clave-valor
• Soporta tipos de datos ¡y
  transacciones!

• Muuuuuuuuuuy rápida. ~100k ops/s
• Esponsorizada por VMWare
NoSQL buzzzzzzz
¿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
¿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?
Ejemplos de apps que
    necesitan escalar

• Juegos. Especialmente multijugador
• Aplicaciones sociales. Ej: Facebook
  apps

• Web services. Ej: pasarelas de pago.
• ¿Tú? Depende, claro
Escalar es...

• Escalar es poder atender más
  peticiones/s

• Se consigue
 • Con software más óptimo. ¡Ahorro
    de costes! Ej: http://bit.ly/ibdi20
 • Con hardware verticalmente u
    horizontalmente
RDMBS to the limit
SQL ¿rápido?

                 5.Acceder a los
1.Parsear SQL
                   datos
2.Planificar
                 6.Álgebra
  consulta
                   relacional
3.Optimizar
                 7.Cerrar tablas
  consulta
                 8.Devolver
4.Abrir tablas
                   resultado
SQL ¿rápido?


• Muchos pasos
• Difícil de optimizar
• Perdemos control
• Difícil de escalar
Ejemplo:
menéame.net
Join, join, join, join
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
Meneame.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
Back to basics
Clave ➔ valor

•DNI      ➔ persona
•Matrícula ➔ vehículo
•Puntero ➔ dato
•PK       ➔ fila
get / set

redis > set foo bar
OK
redis > get foo
“bar”
incr

redis > incr usuarios
(integer) 1
redis > get usuarios
“1”
Ventajas
•Fácil de escalar, como veremos
•Rendimiento predecible. Sólo
 operaciones eficientes:
 optimizado por defecto
•Operaciones atómicas
¿Cómo escalar?



• Escalar lecturas: replicación
• Escalar escrituras: particionamiento
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
  “autoámtico”:

  • nodo = hash(clave) % nodos
Particionamiento

• nodo = hash(clave) % nodos
• Problema: resharding. Al añadir o
  quitar nodos ¡hay que mover casi
  todos los datos!
• Solución: consistent hashing
Para no hacerlo
        nosotros...


• redis-cluster (en desarrollo)
• redis-sharding. Sustituto temporal
  hasta que redis-cluster esté listo.
Datos estructurados
¿get/set/incr suficiente?

• Objetos:
  • claves “usuario:1”, “usuario:2”,...
  • valores: serialización, json, xml,...
• ¿Consultas?
  • Listas que guardan ids, también
    serializados.
Pero Redis nos lo hace
       más fácil

• Soporta datos estructurados:
 • Hashes
 • Listas
 • Sets y sets ordenados
Hashes
redis > hset usuario:1 nombre Antonio
(integer) 1

redis > hset usuario:1 apellido Gonzalo
(integer) 1

redis > hgetall usuario:1
1. “nombre”
2. “Antonio”
3. “apellido”
4. “Gonzalo”
Hashes

  redis > hincrby usuario:1 followers
  (integer) 1


• Nos ahorramos leer-calcular-modificar
• Siguen siendo operaciones atómicas
Listas
redis > lpush mensajes mundo
(integer) 1
redis > lpush mensajes hola
redis > lrange mensajes 0 -1
1. “hola”
2. “mundo”
Sets y sets ordenados
redis > zincrby superheroes 1 batman
“1”
redis > zincrby superheroes 10 kickass
“10”
redis > zincrby superheroes 3 spiderman
“3”
redis > zrevrange superheroes 0 -1 withscores
1. “kickass”
2. “10”
3. “spiderman”
4. “3”
5. “batman”
6. “1”
Modelado de datos

• Objetos ➔ hashes
• Consultas ➔ listas, sets y sets
  ordenados

  • Guardar sólo el id
  • Son índices manuales
Consultas

• Consultamos el índice y hacemos JOIN
  en la aplicación

• Consultas complejas con UNIONES e
  INTERSECCIONES

• Paginaciones con LIMIT y OFFSET
• Borrado en cascada? Lecturas
  destructivas
Transacciones

• MULTI. Inicia transacción
• EXEC. Ejecuta transacción
• DISCARD. Cancela transacción
• WATCH / UNWATCH. Bloquea /
  desbloquea valores de ser modificados
  durante la transacción.
PUB / SUB
PUB / SUB
redis > subscribe canal1
Reading messages... (press Ctrl-c to quit)
1. “subscribe”
2. “canal1”
3. (integer) 1
---------------
redis > publish canal1 Hola
(integer) 1
---------------
1. “message”
2. “canal1”
3. “Hola”
Próximamente en Redis

• Scripting con LUA en la 2.6. Algo así
  como procedimientos almacenados
• Redis-cluster en la 3.0
• Y más: http://antirez.com/post/short-
  term-redis-plans.html
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.

• Como base de datos principal.
¿Algún inconveniente?

• Funciona con los datos en memoria
• ¡Pero es persistente!
  • Snapshots o Append-only-file
• Y soporta replicación
• VM y diskstore fueron “deprecated”
¿Preguntas?


Thanks for attending!

    @gimenete
   http://redis.io

Contenu connexe

Tendances

lenguaje de marcas
lenguaje de marcas lenguaje de marcas
lenguaje de marcas Maria Hanse
 
Presentación Introducción al lenguaje HTML
Presentación Introducción al lenguaje HTMLPresentación Introducción al lenguaje HTML
Presentación Introducción al lenguaje HTMLandreajose13
 
Base De Datos Distribuidas
Base De Datos DistribuidasBase De Datos Distribuidas
Base De Datos DistribuidasJorge Guerra
 
Vistas en mySql
Vistas en mySqlVistas en mySql
Vistas en mySqlEduardo Ed
 
HTML5: features with examples
HTML5: features with examplesHTML5: features with examples
HTML5: features with examplesAlfredo Torre
 
LDAP - Lightweight Directory Access Protocol
LDAP - Lightweight Directory Access ProtocolLDAP - Lightweight Directory Access Protocol
LDAP - Lightweight Directory Access ProtocolS. Hasnain Raza
 
CSS Day: CSS Grid Layout
CSS Day: CSS Grid Layout CSS Day: CSS Grid Layout
CSS Day: CSS Grid Layout Rachel Andrew
 
Data Lake Implementation: Processing and Querying Data in Place (STG204-R1) -...
Data Lake Implementation: Processing and Querying Data in Place (STG204-R1) -...Data Lake Implementation: Processing and Querying Data in Place (STG204-R1) -...
Data Lake Implementation: Processing and Querying Data in Place (STG204-R1) -...Amazon Web Services
 
6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)Laura Folgado Galache
 
Overview of secret management solutions and architecture
Overview of secret management solutions and architectureOverview of secret management solutions and architecture
Overview of secret management solutions and architectureYuechuan (Mike) Chen
 
Data controls ppt
Data controls pptData controls ppt
Data controls pptIblesoft
 
SOA for PL/SQL Developer (OPP 2010)
SOA for PL/SQL Developer (OPP 2010)SOA for PL/SQL Developer (OPP 2010)
SOA for PL/SQL Developer (OPP 2010)Lucas Jellema
 

Tendances (20)

lenguaje de marcas
lenguaje de marcas lenguaje de marcas
lenguaje de marcas
 
Ensamblador y lenguaje c
Ensamblador y lenguaje cEnsamblador y lenguaje c
Ensamblador y lenguaje c
 
MYSQL
MYSQLMYSQL
MYSQL
 
LDAP
LDAPLDAP
LDAP
 
Presentación Introducción al lenguaje HTML
Presentación Introducción al lenguaje HTMLPresentación Introducción al lenguaje HTML
Presentación Introducción al lenguaje HTML
 
Base De Datos Distribuidas
Base De Datos DistribuidasBase De Datos Distribuidas
Base De Datos Distribuidas
 
Css selectors
Css selectorsCss selectors
Css selectors
 
Vistas en mySql
Vistas en mySqlVistas en mySql
Vistas en mySql
 
Sql
SqlSql
Sql
 
HTML5: features with examples
HTML5: features with examplesHTML5: features with examples
HTML5: features with examples
 
LDAP - Lightweight Directory Access Protocol
LDAP - Lightweight Directory Access ProtocolLDAP - Lightweight Directory Access Protocol
LDAP - Lightweight Directory Access Protocol
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
CSS Day: CSS Grid Layout
CSS Day: CSS Grid Layout CSS Day: CSS Grid Layout
CSS Day: CSS Grid Layout
 
Xml 215-presentation
Xml 215-presentationXml 215-presentation
Xml 215-presentation
 
Tablas en Oracle
Tablas en OracleTablas en Oracle
Tablas en Oracle
 
Data Lake Implementation: Processing and Querying Data in Place (STG204-R1) -...
Data Lake Implementation: Processing and Querying Data in Place (STG204-R1) -...Data Lake Implementation: Processing and Querying Data in Place (STG204-R1) -...
Data Lake Implementation: Processing and Querying Data in Place (STG204-R1) -...
 
6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)
 
Overview of secret management solutions and architecture
Overview of secret management solutions and architectureOverview of secret management solutions and architecture
Overview of secret management solutions and architecture
 
Data controls ppt
Data controls pptData controls ppt
Data controls ppt
 
SOA for PL/SQL Developer (OPP 2010)
SOA for PL/SQL Developer (OPP 2010)SOA for PL/SQL Developer (OPP 2010)
SOA for PL/SQL Developer (OPP 2010)
 

En vedette

Aprendiendo REDIS en 20 minutos
Aprendiendo REDIS en 20 minutosAprendiendo REDIS en 20 minutos
Aprendiendo REDIS en 20 minutosGonzalo Chacaltana
 
Redis: servidor de estructuras de datos
Redis: servidor de estructuras de datosRedis: servidor de estructuras de datos
Redis: servidor de estructuras de datosAntonio Ognio
 
NoSQL bases de datos no relacionales
NoSQL bases de datos no relacionalesNoSQL bases de datos no relacionales
NoSQL bases de datos no relacionalesAndrés Londoño
 
Taller Redis
Taller RedisTaller Redis
Taller Redisbetabeers
 
Bases de datos NoSQL orientadas a documentos
Bases de datos NoSQL orientadas a documentosBases de datos NoSQL orientadas a documentos
Bases de datos NoSQL orientadas a documentosAnthony Sotolongo
 
Bases de datos documentales
Bases de datos documentalesBases de datos documentales
Bases de datos documentalesPepe
 
Delivering Excellent Support Customer Experiences in Marketing
Delivering Excellent Support Customer Experiences in MarketingDelivering Excellent Support Customer Experiences in Marketing
Delivering Excellent Support Customer Experiences in MarketingDavid Loia
 
Circuitos Digitales - Corrimiento de bits
Circuitos Digitales - Corrimiento de bits Circuitos Digitales - Corrimiento de bits
Circuitos Digitales - Corrimiento de bits Fernando Marcos Marcos
 
DevOps Boston - Heartbleed at Acquia
DevOps Boston - Heartbleed at AcquiaDevOps Boston - Heartbleed at Acquia
DevOps Boston - Heartbleed at AcquiaMarc Seeger
 
Saludos en español a
Saludos en español aSaludos en español a
Saludos en español asalpadilla
 
Introdução às Metodologias Ágeis de Desenvolvimento
Introdução às Metodologias Ágeis de DesenvolvimentoIntrodução às Metodologias Ágeis de Desenvolvimento
Introdução às Metodologias Ágeis de DesenvolvimentoJerry Medeiros
 

En vedette (20)

Aprendiendo REDIS en 20 minutos
Aprendiendo REDIS en 20 minutosAprendiendo REDIS en 20 minutos
Aprendiendo REDIS en 20 minutos
 
Redis: servidor de estructuras de datos
Redis: servidor de estructuras de datosRedis: servidor de estructuras de datos
Redis: servidor de estructuras de datos
 
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4jBases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
 
NoSQL bases de datos no relacionales
NoSQL bases de datos no relacionalesNoSQL bases de datos no relacionales
NoSQL bases de datos no relacionales
 
Taller Redis
Taller RedisTaller Redis
Taller Redis
 
Bases de datos NoSQL orientadas a documentos
Bases de datos NoSQL orientadas a documentosBases de datos NoSQL orientadas a documentos
Bases de datos NoSQL orientadas a documentos
 
Bases de datos documentales
Bases de datos documentalesBases de datos documentales
Bases de datos documentales
 
Resume of Lenin Babu
Resume of Lenin BabuResume of Lenin Babu
Resume of Lenin Babu
 
Delivering Excellent Support Customer Experiences in Marketing
Delivering Excellent Support Customer Experiences in MarketingDelivering Excellent Support Customer Experiences in Marketing
Delivering Excellent Support Customer Experiences in Marketing
 
CAP and BASE
CAP and BASECAP and BASE
CAP and BASE
 
Circuitos Digitales - Corrimiento de bits
Circuitos Digitales - Corrimiento de bits Circuitos Digitales - Corrimiento de bits
Circuitos Digitales - Corrimiento de bits
 
DevOps Boston - Heartbleed at Acquia
DevOps Boston - Heartbleed at AcquiaDevOps Boston - Heartbleed at Acquia
DevOps Boston - Heartbleed at Acquia
 
Etl tool
Etl toolEtl tool
Etl tool
 
Saludos en español a
Saludos en español aSaludos en español a
Saludos en español a
 
Introdução às Metodologias Ágeis de Desenvolvimento
Introdução às Metodologias Ágeis de DesenvolvimentoIntrodução às Metodologias Ágeis de Desenvolvimento
Introdução às Metodologias Ágeis de Desenvolvimento
 
06 regression
06 regression06 regression
06 regression
 
Decimales: Valor Posicional
Decimales: Valor PosicionalDecimales: Valor Posicional
Decimales: Valor Posicional
 
sukanya HR Resume updated
sukanya HR Resume updatedsukanya HR Resume updated
sukanya HR Resume updated
 
Romanos 10 palavra
Romanos 10   palavraRomanos 10   palavra
Romanos 10 palavra
 
Objective runtime
Objective runtimeObjective runtime
Objective runtime
 

Similaire à Redis base de datos NoSQL clave-valor rápida y escalable

Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAlberto Gimeno
 
Introducción a NoSQL
Introducción a NoSQLIntroducción a NoSQL
Introducción a NoSQLCycle-IT
 
Introducción mongodb y desarrollo
Introducción mongodb y desarrolloIntroducción mongodb y desarrollo
Introducción mongodb y desarrolloJuan Ladetto
 
Polybase
PolybasePolybase
PolybaseSolidQ
 
Git: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoGit: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoAprende Git
 
Pon tus aplicaciones a 100 con redis
Pon tus aplicaciones a 100 con redisPon tus aplicaciones a 100 con redis
Pon tus aplicaciones a 100 con redisDaniel Mazzini
 
Primeros pasos con neo4j
Primeros pasos con neo4jPrimeros pasos con neo4j
Primeros pasos con neo4jUbaldo Taladriz
 
Actividad de aprendizaje 4
Actividad de aprendizaje 4Actividad de aprendizaje 4
Actividad de aprendizaje 4Sinai Diaz
 
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareCarbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareJulián Castiblanco
 
Primeros pasos con Neo4j
Primeros pasos con Neo4jPrimeros pasos con Neo4j
Primeros pasos con Neo4jUbaldo Taladriz
 
Gestores de Base de Datos en Linux: Un vistazo a MySQL y PostgreSQL
Gestores de Base de Datos en Linux:  Un vistazo a MySQL y PostgreSQLGestores de Base de Datos en Linux:  Un vistazo a MySQL y PostgreSQL
Gestores de Base de Datos en Linux: Un vistazo a MySQL y PostgreSQLJuan Percy Rojas Cruz
 
Monta una Infraestructura para Big Data en tu Empresa
Monta una Infraestructura para Big Data en tu EmpresaMonta una Infraestructura para Big Data en tu Empresa
Monta una Infraestructura para Big Data en tu EmpresaUrko Zurutuza
 
Big Data, Almacenes de Datos Empresariales (EDW) y Windows Azure (SQL Databas...
Big Data, Almacenes de Datos Empresariales (EDW) y Windows Azure (SQL Databas...Big Data, Almacenes de Datos Empresariales (EDW) y Windows Azure (SQL Databas...
Big Data, Almacenes de Datos Empresariales (EDW) y Windows Azure (SQL Databas...Joseph Lopez
 

Similaire à Redis base de datos NoSQL clave-valor rápida y escalable (20)

Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
 
Mongo Mapper
Mongo MapperMongo Mapper
Mongo Mapper
 
El futuro de Big Data: La calidad del análisis. Modelos efectivos y casos de uso
El futuro de Big Data: La calidad del análisis. Modelos efectivos y casos de usoEl futuro de Big Data: La calidad del análisis. Modelos efectivos y casos de uso
El futuro de Big Data: La calidad del análisis. Modelos efectivos y casos de uso
 
Introducción a NoSQL
Introducción a NoSQLIntroducción a NoSQL
Introducción a NoSQL
 
Introducción mongodb y desarrollo
Introducción mongodb y desarrolloIntroducción mongodb y desarrollo
Introducción mongodb y desarrollo
 
Polybase
PolybasePolybase
Polybase
 
Git: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoGit: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativo
 
Pon tus aplicaciones a 100 con redis
Pon tus aplicaciones a 100 con redisPon tus aplicaciones a 100 con redis
Pon tus aplicaciones a 100 con redis
 
Desayuno de arquitectos: Big data en azure
Desayuno de arquitectos: Big data en azureDesayuno de arquitectos: Big data en azure
Desayuno de arquitectos: Big data en azure
 
Social Erlang
Social ErlangSocial Erlang
Social Erlang
 
Primeros pasos con neo4j
Primeros pasos con neo4jPrimeros pasos con neo4j
Primeros pasos con neo4j
 
Actividad de aprendizaje 4
Actividad de aprendizaje 4Actividad de aprendizaje 4
Actividad de aprendizaje 4
 
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareCarbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
 
Primeros pasos con Neo4j
Primeros pasos con Neo4jPrimeros pasos con Neo4j
Primeros pasos con Neo4j
 
Big Data en Azure: Azure Data Lake
Big Data en Azure: Azure Data LakeBig Data en Azure: Azure Data Lake
Big Data en Azure: Azure Data Lake
 
Gestores de Base de Datos en Linux: Un vistazo a MySQL y PostgreSQL
Gestores de Base de Datos en Linux:  Un vistazo a MySQL y PostgreSQLGestores de Base de Datos en Linux:  Un vistazo a MySQL y PostgreSQL
Gestores de Base de Datos en Linux: Un vistazo a MySQL y PostgreSQL
 
Monta una Infraestructura para Big Data en tu Empresa
Monta una Infraestructura para Big Data en tu EmpresaMonta una Infraestructura para Big Data en tu Empresa
Monta una Infraestructura para Big Data en tu Empresa
 
Big Data, Almacenes de Datos Empresariales (EDW) y Windows Azure (SQL Databas...
Big Data, Almacenes de Datos Empresariales (EDW) y Windows Azure (SQL Databas...Big Data, Almacenes de Datos Empresariales (EDW) y Windows Azure (SQL Databas...
Big Data, Almacenes de Datos Empresariales (EDW) y Windows Azure (SQL Databas...
 
Desarrollo Full Stack UAM.net
Desarrollo Full Stack UAM.netDesarrollo Full Stack UAM.net
Desarrollo Full Stack UAM.net
 
Base de datos
Base de datos Base de datos
Base de datos
 

Dernier

definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 

Dernier (20)

definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 

Redis base de datos NoSQL clave-valor rápida y escalable

  • 1. Redis, base de datos NoSQL clave-valor @gimenete 10 noviembre 2011 Libre software world conference
  • 2. Qué es Redis • Base de datos clave-valor • Soporta tipos de datos ¡y transacciones! • Muuuuuuuuuuy rápida. ~100k ops/s • Esponsorizada por VMWare
  • 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. Ejemplos de apps que necesitan escalar • 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 • Se consigue • Con software más óptimo. ¡Ahorro de costes! Ej: http://bit.ly/ibdi20 • Con hardware verticalmente u horizontalmente
  • 8. RDMBS to the limit
  • 9. SQL ¿rápido? 5.Acceder a los 1.Parsear SQL datos 2.Planificar 6.Álgebra consulta relacional 3.Optimizar 7.Cerrar tablas consulta 8.Devolver 4.Abrir tablas resultado
  • 10. SQL ¿rápido? • Muchos pasos • Difícil de optimizar • Perdemos control • Difícil de escalar
  • 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. Meneame.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
  • 16. Clave ➔ valor •DNI ➔ persona •Matrícula ➔ vehículo •Puntero ➔ dato •PK ➔ fila
  • 17. get / set redis > set foo bar OK redis > get foo “bar”
  • 18. incr redis > incr usuarios (integer) 1 redis > get usuarios “1”
  • 19. Ventajas •Fácil de escalar, como veremos •Rendimiento predecible. Sólo operaciones eficientes: optimizado por defecto •Operaciones atómicas
  • 20. ¿Cómo escalar? • Escalar lecturas: replicación • Escalar escrituras: particionamiento
  • 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 “autoámtico”: • nodo = hash(clave) % nodos
  • 22. Particionamiento • nodo = hash(clave) % nodos • Problema: resharding. Al añadir o quitar nodos ¡hay que mover casi todos los datos! • Solución: consistent hashing
  • 23. Para no hacerlo nosotros... • redis-cluster (en desarrollo) • redis-sharding. Sustituto temporal hasta que redis-cluster esté listo.
  • 25. ¿get/set/incr suficiente? • Objetos: • claves “usuario:1”, “usuario:2”,... • valores: serialización, json, xml,... • ¿Consultas? • Listas que guardan ids, también serializados.
  • 26. Pero Redis nos lo hace más fácil • Soporta datos estructurados: • Hashes • Listas • Sets y sets ordenados
  • 27. Hashes redis > hset usuario:1 nombre Antonio (integer) 1 redis > hset usuario:1 apellido Gonzalo (integer) 1 redis > hgetall usuario:1 1. “nombre” 2. “Antonio” 3. “apellido” 4. “Gonzalo”
  • 28. Hashes redis > hincrby usuario:1 followers (integer) 1 • Nos ahorramos leer-calcular-modificar • Siguen siendo operaciones atómicas
  • 29. Listas redis > lpush mensajes mundo (integer) 1 redis > lpush mensajes hola redis > lrange mensajes 0 -1 1. “hola” 2. “mundo”
  • 30. Sets y sets ordenados redis > zincrby superheroes 1 batman “1” redis > zincrby superheroes 10 kickass “10” redis > zincrby superheroes 3 spiderman “3” redis > zrevrange superheroes 0 -1 withscores 1. “kickass” 2. “10” 3. “spiderman” 4. “3” 5. “batman” 6. “1”
  • 31. Modelado de datos • Objetos ➔ hashes • Consultas ➔ listas, sets y sets ordenados • Guardar sólo el id • Son índices manuales
  • 32. Consultas • Consultamos el índice y hacemos JOIN en la aplicación • Consultas complejas con UNIONES e INTERSECCIONES • Paginaciones con LIMIT y OFFSET • Borrado en cascada? Lecturas destructivas
  • 33. Transacciones • MULTI. Inicia transacción • EXEC. Ejecuta transacción • DISCARD. Cancela transacción • WATCH / UNWATCH. Bloquea / desbloquea valores de ser modificados durante la transacción.
  • 35. PUB / SUB redis > subscribe canal1 Reading messages... (press Ctrl-c to quit) 1. “subscribe” 2. “canal1” 3. (integer) 1 --------------- redis > publish canal1 Hola (integer) 1 --------------- 1. “message” 2. “canal1” 3. “Hola”
  • 36. Próximamente en Redis • Scripting con LUA en la 2.6. Algo así como procedimientos almacenados • Redis-cluster en la 3.0 • Y más: http://antirez.com/post/short- term-redis-plans.html
  • 37. 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. • Como base de datos principal.
  • 38. ¿Algún inconveniente? • Funciona con los datos en memoria • ¡Pero es persistente! • Snapshots o Append-only-file • Y soporta replicación • VM y diskstore fueron “deprecated”
  • 39. ¿Preguntas? Thanks for attending! @gimenete http://redis.io

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n