You are on page 1of 12

REDIS NOSQL

Grupo 1

Prof. Jorge Chavez

31/10/2017

Integrantes
Vilca Pulido Orlando Flavio

Masias Vilca Mario

Vargas Quispe Edgar F.


Salazar Olarte Paul Jonathan

Ciclo 2017 -2
Muoz ahuero Daniel
REDIS NOSQL

REDIS NOSQL

Contenido
1. Introduccion. .......................................................................................................................... 3
2. REDIS .................................................................................................................................... 4
3. Modelo de Datos. ............................................................................................................... 6
Lenguajes Soportados : ............................................................................................................ 6
4. Persistencia y Replicacin. ................................................................................................... 7
Persistencia ................................................................................................................................ 7
Replicacin ................................................................................................................................. 7
5. Que debemos esperar de REDIS NOSQL. .................................................................... 8
Ventajas y desventajas.............................................................................................................. 8
Para qu se usa Redis............................................................................................................... 8
Quin usa Redis? ....................................................................................................................... 9
6. Rendimiento. ....................................................................................................................... 10
De dnde sale tanto rendimiento? ................................................................................... 10
Escalabilidad ............................................................................................................................ 10
Limitaciones ............................................................................................................................ 10
7. Conclusiones. ...................................................................................................................... 11
8. Linkografa............................................................................................................................ 12

Grupo 1 2
REDIS NOSQL

1. Introduccion.
A parte de las clsicas bases de datos SQL (RDBMS), aparecen y van tomando fuerza nuevos
tipos de bases de datos. Su mayor ventaja es que estn preparados para ser muy rpidos.
Mucho; segn su tipo, cada una sigue una estrategia completamente diferente para persistir
la informacin.

Cabe destacar que normalmente no sustituyen a la base de datos clsica SQL, sino que
surgen por otra necesidad. Una necesidad de rendimiento extremo. Si se utilizan de una
manera nica, o se combinan con una base de datos SQL es una decisin de arquitectura del
sistema.
Algunas de ellas pueden ser accedidas mediante SQL, pero normalmente no ser as, puesto
que cada una tendr una API exclusiva.

Existen proyectos como SpringDATA que pretenden abstraernos de dicha complejidad.


Siendo posible cambiar de un tipo de base de datos a otra de una manera directa, segn nos
convenga.
Hoy en da, empresas como Twitter, Facebook y similares tienen un trfico millones de veces
superior, tenemos aplicaciones RIA que son accedidas simultneamente por infinidad de
clientes de todo tipo, as que la tecnologa existente se quedaba un poco corta. No porque no
fuese capaz de hacerlo, sino porque lo haca muy lentamente.

Las bases de datos NoSQL rompen con la barrera del rendimiento, segn su tipo, su
estrategia de ejecucin es distinta, pero algunas de ellas como Redis funcionarn segn nos
interese en memoria, llevando un registro en el disco y peridicos snapshots de la informacin,
o directamente en disco. En el caso de Redis podemos llegar a configurar qu parte de la
memoria queremos que utilice, pudiendo incluso apagar el consumo de la misma para el
proceso de datos.

Una comparacin desafortunada podra ser que las bases de datos NoSQL son como un
MemCach para nuestra aplicacin. Algunas arquitecturas colocan una aplicacin
bd(nosql)/bd(sql) de forma que la informacin es accedida increblemente rpido.Otro
problema de los servidores tradicionales son el los lmites de espacio y proceso que tienen,
en el caso de NoSQL, segn su tipo, el lmite es el propio sistema operativo.

Por ahora vemos que hay cuatro vertientes, que son la siguiente:

Clave-Valor REDIS
Mapeo de Columnas HBASE
Documentos MONGODB
Grafos NEO4J

Por esta razn, decidimos investigar en este caso, REDIS y es el objetivo de este informe.

Grupo 1 3
REDIS NOSQL

2. REDIS
Redis es una de las bases de datos NoSQL en este caso de tipo clave-valor. Los valores pueden
ser de diferentes tipos y tiene una amplia coleccin de operaciones disponibles para usar segn
el tipo de datos asociado a la clave.
REDIS es una de las bases de datos para almacenar informacin de los conocidas como NoSQL.
Almacena los datos en memoria por lo que es muy rpido y es usada como base de datos, como
cache o broker de mensajes. Los datos no se almacenan en tablas como en los sistemas
relacionales tradiciones RDMS como PostgreSQL o MySQL sino en estructuras de datos como
cadenas, hashes, listas, conjuntos, conjuntos ordenado con rangos, bitmaps, hyperloglogs e
ndices geoespaciales. Incorpora replicacin, scripting con LUA, desalojo LRU, transacciones,
diferentes niveles de persistencia en disco y alta disponibilidad con Redis Sentinel y
particionamiento con Redis Cluster.
El punto ms crtico en el rendimiento en una aplicacin suele estar en la base de datos relacional,
dado que han de garantizar las propiedades ACID y almacenan grandes cantidades de datos en
disco son lentas (comparativamente) adems de presentar dificultades para escalar
horizontalmente. Redis almacena los datos en memoria por lo que es significativamente ms
rpida que una base de datos relacional aunque con la limitacin de no poder almacenar las
grandes cantidades de datos medidos hoy en da en terabytes o TiB (1024 GiB) que podra
almacenar una base de datos relacional. Para la necesidad de acceder datos de forma rpida,
de cachear datos a los que acceder rpido, datos a los que se acceden frecuentemente, datos
precalculados, hay grandes cantidades de escrituras o necesidad de escalar Redis es una opcin
a tener en cuenta.
Redis es un sistema de datos clave-valor en el que cada clave tiene asociado un tipo de datos y
unos datos que almacena. Segn el tipo de datos de la clave se pueden realizar
diferentes operaciones o comandos de consulta.

Operaciones con cadenas


Operaciones con sets
Operaciones con sorted sets
Operaciones con list
Operaciones con hashes
Operaciones genricas con keys

Grupo 1 4
REDIS NOSQL

La popularidad de Redis se debe en gran medida a su espectacular velocidad, ya que mantiene la


informacin en memoria; pero tambin a su sencillez de uso y flexibilidad.
Sin embargo lo que hace que Redis sea tan popular, es que adems de permitir asociar valores
de tipo string a una clave, permite utilizar tipos de datos avanzados, que junto a las operaciones
asociadas a estos tipos de datos, logra resolver muchos casos de uso de negocio, que a priori no
pensaramos que furamos capaces con una base de datos clave-valor. No en vano, Redis se
define usualmente como un servidor de estructuras de datos, aunque en sus inicios, haciendo
honor a su nombre, fuese un simple diccionario remoto (REmote DIctionary Server).

En Paradigma creemos que siempre se debe usar la mejor herramienta para cada trabajo, en
este caso, la tecnologa de almacenamiento que mejor se ajuste a los requisitos de negocio. Las
tecnologas NoSQL, desde su concepcin, tienen que ver con la especializacin en la gestin de
datos, y Redis es un caso excelente de cmo resolver necesidades concretas con un motor de
almacenamiento, por s mismo, o en combinacin con otras bases de datos NoSQL y/o
relacionales.

Grupo 1 5
REDIS NOSQL

3. Modelo de Datos.
El modelo de datos de Redis se basa en la estructura de datos del tipo diccionario o tabla de
hashes que relaciona una llave a un contenido almacenado en un ndice. La principal diferencia
entre Redis y otros sistemas similares es que los valores no estn limitados a ser de tipo string,
otros tipos de datos estn soportados:
Listas (Lists) de strings
Sets de strings (colecciones de elementos desordenados no repetidos)
hashes donde la llave y el valor son del tipo string

El tipo de valor determina las operaciones (los comandos) que son disponibles. Redis
soporta operaciones atmicas de alto nivel del lado del servidor, como inserciones, unions, y
diferencias entre sets y listas ordenadas. Desde la versin 2.6, liberada a finales de octubre de
2012, se introduce una funcionalidad clave, la posibilidad de ejecutar Scripts en el servidor Redis,
escritos en lenguaje Lua.

Lenguajes Soportados :
Los lenguajes de programacin que soportan Redis son:

ActionScript
C
C++,
C#
Clojure
Common Lisp
Erlang
Go
Haskell
haXe
Io
Java
server-side JavaScript (Node.js)
Lua
Objective-C
Perl
PHP
Pure Data
Python
Ruby
Scala
Smalltalk
Tcl.

Grupo 1 6
REDIS NOSQL

4. Persistencia y Replicacin.
Persistencia

Redis normalmente guarda la informacin en la memoria RAM, pero en versiones


superiores a la 2.4 se puede configurar para utilizar Memoria virtual6 pero ahora esto
est desactualizado. Se puede hacer que los datos sean persistentes de dos formas,
una es hacer snapshots (capturas), aunque no sera realmente durable ya que estos son
asncronos al transferir la memoria al disco cada cierto tiempo. Desde la versin 1.1 la
mejor alternativa es usar un archivo del tipo appendonly gracias a un sistema
de Journaling el cual escribe en este archivo cada modificacin que se realice sobre los
datos en memoria pudiendo regenerar los datos. Esto genera un costo en el
rendimiento, pero se puede configurar de dos formas, always, que escribir cualquier
cambio en el instante, o everysec que lo har segundo tras segundo.

Replicacin
Redis soporta la replicacion del tipo maestro-esclavo, pudindose replicar los datos de
un servidor a muchos esclavos, tambin un esclavo puede ser maestro para otro
esclavo, lo que permite soportar en Redis una replicacin en forma de rbol. Los esclavos
permiten la escritura de datos, lo que puede ocasionar inconsistencias en los datos no
intencionales.
La funcin de publicacin/subscripcin esta totalmente soportada, cuando un cliente
esclavo se subscribe a un canal este recibe un feed completo de publicaciones del
maestro, replicando as en todo el rbol. La replicacin es til para escalar la lectura (no
la escritura) y/o redundar los datos

Grupo 1 7
REDIS NOSQL

5. Que debemos esperar de REDIS NOSQL.


Ventajas y desventajas
Lo miremos como lo miremos, es muy diferente a otras bases de datos, no es ni mejor ni peor,
simplemente es diferente, por lo tanto, para cada proyecto Redis tendr ventajas y desventajas,
por lo que tendremos que aprender a saber cundo usarla.
La principal ventaja de Redis es la velocidad. Guarda todos los datos en RAM, por lo que cuando
el microprocesador le pide un dato, lo busca en la RAM sin tocar el disco duro, para entender el
potencial de esto, tenemos que saber que la memoria RAM es hasta 100.000 veces ms rpida
que el disco duro Imagnate la velocidad!
No obstante, la gran velocidad y el guardarlo en memoria RAM hace que nos encontremos con
la desventaja de Redis que se traduce en no poder guardar tablas enteras ni muchos datos.
Aunque si est permitido guardar datos en JSON (realmente se guarda en String) y aunque se
puede conseguir crear una especie de tablas, Redis est pensando sobre todo como una base
de datos Clave-Valor.

Para qu se usa Redis


Mucha gente, aun entendiendo toda la teora no ven ejemplos prcticos para usar este tipo de
base de datos, as que voy a indicar uno muy usado.

El principal uso que se da a Redis es de cach. Imagnate que tienes una plataforma
web y que acceden miles de usuarios registrados por hora.

Cada vez que un usuario visita una pgina de tu plataforma, tienes que hacer varias
consultas a la base de datos para saber si ese usuario con esa cookie est registrado y
est autorizado para ver esa pgina.

Si por ejemplo de media tienes 10.000 usuarios por hora y cada usuario se ha movido
por tu plataforma unas 50 veces, querr decir que tendrs que hacer medio milln de
consultas a la base de datos por hora, conectarte, mandarle los datos, esperar a que
responda, procesar la informacin y devolverla al usuario.

Esto con Redis no pasara ya que, si cachearas la primera vez los datos del usuario, te
ahorraras 490.000 consultas de verificacin por hora.

Al final del da te habrs ahorrado ms de 11 millones de peticiones a la base de datos


para ver si el usuario est autentificado.

Grupo 1 8
REDIS NOSQL

Quin usa Redis?

A continuacin podemos ver ejemplos de cmo algunas de las empresas ms conocidas del
mundo estn usando Redis.
Twitter usa Redis para mantener el timeline de sus usuarios. El timeline es una lista de
los tuits de las personas a las que se sigue, y Twitter usa Redis para poder actualizar en
el menor tiempo posible los timelines de todos sus usuarios. Teniendo en cuenta que
algunos usuarios tienen ms de 60.000.000 de seguidores, actualizar todas estas listas
cada vez que se escribe un tuit, se convierte en una operacin crtica.
Hulu usa Redis para mantener la posicin en la que un usuario se encuentra en un
vdeo, as como el histrico de visualizaciones de los usuarios.
Pinterest utiliza Redis para mantener la informacin de los usuarios y los tablones que
sigue cada uno.
Flickr utiliza Redis como base del sistema de colas para mantener de manera asncrona
las tareas a realizar sobre las imgenes de los usuarios. Tambin forma parte de la
infraestructura para la generacin de notificaciones push a sus usuarios.
Trello usa Redis para mantener toda la informacin efmera que es necesario compartir
entre todos sus servidores.

Grupo 1 9
REDIS NOSQL

6. Rendimiento.
En escenarios de datos no durables (solo usando memoria RAM) el rendimiento puede ser
extremo comparado con motores de bases de datos,8 tampoco hay una notable diferencia entre
lectura y escritura de datos.
Redis es single threaded, a diferencia de otros sistemas que crean un proceso o fork por cada
peticin nueva. En los servidores actuales es muy comn tener mltiples ncleos, por lo que se
puede dar el caso de desperdiciar toda la potencia del CPU.
Para mejorar el rendimiento del CPU, se puede iniciar mltiples instancias Redis en el mismo
servidor. Hay algunas libreras como Predis (Librera para redis en PHP) que ya realizan esto
de forma automtica.

De dnde sale tanto rendimiento?


En una base de datos relacional, realizar una consulta implica: convertir, preparar, optimizar,
procesar, leer del disco, ejecutar y muchas cosas mas ,hasta 9 pasos para traerse una simple
query , esto realmente es incomodo a la hora de realizar algunas operaciones que necesitan
rpida atencin como puede ser : Facebook .
En NoSQL se evita hacer todo esto, puesto que cada runtime (segn el tipo) se encarga de que
mediante el api accedamos directamente a los datos.
Accediendo al ms bajo nivel y teniendo lo que nos interesa en la memoria y no en el disco
obtenemos tasas de rendimiento muy elevadas, sobre todo en volmenes de datos grandes.
Escalabilidad
Ha sido diseada para ser escalable, por lo que escalar un servidor es muy sencillo, usa un
sistema de replicacin master-slave (maestro esclavo) que permite a los servidores esclavos
obtener copias exactas del maestro. La replicacin cumple las siguientes caractersticas:

Un maestro puede tener mltiples esclavos.


Un esclavo puede tener otros esclavos.
La replicacin de redis es non-blocking en el maestro, esto quiere decir que mientras un
maestro puede seguir atendiendo peticiones mientras uno o varios esclavos se
sincronizan.
Configurar un servidor para que sea esclavo de otro, es totalmente trivial, simplemente
hay que especificar lo siguiente en el fichero de configuracin del esclavo.

Limitaciones
La principal limitacin es la memoria, las estructuras de datos no pueden ser ms grandes que
la memoria.
Una vez superada la memoria redis comenzar a hacer swapping y el rendimiento se ver
notablemente afectado. Debemos evitar a toda costa este caso, para ello podemos hacer un
script que monitorice si sucede esto.
Alternativamente tambin existe una opcin maxmemory en el archivo de configuracin que
pone un lmite a la memoria usada. Una vez llegado a ese lmite redis dar error en las
operaciones de escritura pero aceptar las de lectura.

Grupo 1 10
REDIS NOSQL

7. Conclusiones.
Se entiende , por lo ledo y explicado :

Redis es una base de datos en RAM que gracias a que nos permite ahorrarnos millones
de conexiones con la base de datos principal
Gracias A REDIS conseguimos ahorrar muchsimo dinero en servidores a la vez
Conseguimos que nuestra plataforma sea muchsimo ms rpida.
Por lo tanto, aprender Redis es fundamental en cualquier rea de un proyecto a trabajar
para alguna empresa que tenga algn gran proyecto o individual.

Grupo 1 11
REDIS NOSQL

8. Linkografa.

https://picodotdev.github.io/blog-bitix/2017/06/introduccion-a-la-base-de-datos-
nosql-redis/

http://www.antweb.es/servidores/redis-todo-lo-que-debes-saber

https://www.paradigmadigital.com/techbiz/no-solo-clave-valor-redis-te-da-alas/
http://openmymind.net/redis.pdf
https://redis.io/
https://es.wikipedia.org/wiki/Redis

Grupo 1 12

You might also like