Redis – Tu base de datos libre en memoria

base de datos database memoria ram radis nosql

redisRedis es un motor de base de datos libre de tipo clave-valor (key-value) persistententes que residen en memoria ram y posteriormente vuelca el conjunto de datos almacenados al disco duro. Redis es cliente/servidor por lo que levanta su servicio y responde peticiones, cuenta con interfaz de red lo cual hace posible conectar clientes o nodos desde otros host.

Redis es key/value esto significa que solo entiende Claves y Valores, es decir, cadenas, listas, hash, conjuntos y conjuntos ordenados, de igual manera Redis provee mecanismos para manipular y consultar estas estructuras de datos. Al no pertenecer al mundo relacional automáticamente entra en el grupo de bases de datos libres de tipo NoSQL (Not Only SQL).

Se puede ejecutar operaciones atómicas sobre estos tipos, como agregar elementos a una cadena; incrementar el valor de un hash, empujando a una lista; intersección de conjuntos de computación, unión y diferencia, o conseguir el miembro de más alto rango en un conjunto ordenado.

Redis resuelve de manera sencilla y eficiente problemas que no necesitan la complejidad de las bases de datos relacionales, como lo es en la mayoría de los casos de usos el almacén y gestión de estructuras de datos temporales, por lo cual redis es mayoritariamente usado para incorporar soluciones sofisticadas de cache de datos ó como backend de operaciones en linea en escenarios de alta demanda. Redis no pierde tiempo pensando  en relaciones, restricciones ni tipos de datos, se enfoca en hacer eficientemente su trabajo que es establecer y recuperar (set y get) datos sobre las estructuras con las que cuenta.

memoria-ram-radis-nosql

memoria-ram-radis-nosql

Ahora bien, todo esto suena excelente, pero ¿para que querría alguien usar esto en la vida real?

  • Su compleja y mimada base de datos relacional que soporta toda la carga de sus operaciones, recientemente se le incorporo mensajería instantánea (si sus usuarios chatean entre si, con clientes y publico en general ) a la aplicación que hace uso de ella, se dio cuenta que esto que no es lo mas importante en su modelo de negocios, le esta colapsando su servicio. Pues transfiera la gestión de chat a Redis y luego totaliza la mensajería del dia y la manda como histórico a su base de datos principal.
  • Suponga que tiene un portal web con mucha trayectoria y miles de millones de contenidos, así como millones de visitas diarias, cuya pagina de inicio abarca el 90% de las visitas de su web, su pagina de inicio solo son 30 contenidos y otros elementos, pues en vez de recorrer su base de datos tradicional con los millones de contenidos en busca de los 30, simplemente los pone a disposición de la manera mas rápida posible.
  • Para análisis y procesamiento en tiempo real. Su país necesita implementar un sistema integral de atención a sus ciudadanos, ideal seria que la carga de consultas de los tickets vigentes resida en una solución como redis, y que el análisis y monitoreo del comportamiento de los usuarios en linea en el sistema también.
  • Gestión de sesiones de usuarios y soluciones de cache, entre muchas otras.

Actualmente Redis es usado por: Twitter, Instagram, GitHub, Flickr, DiggHeroku lo oferta en sus servicios, es soportado por muchos de los proveedores de plataforma como servicio, entre muchos otros de los grandes en internet.

Sigue leyendo

Monty Widenius habla sobre NoSQL y Big Data

NoSQL y los grandes volúmenes de datos
Michael-Widenius-maxdb-mysql-mariadb

Creador de MaxDB, MySQL y MariaDB
Michael Widenius comenta:

“La razón principal de que NoSQL se hiciera popular es que, a diferencia de SQL, se puede comenzar a utilizarlo sin diseño alguno. Esto hace que sea más fácil comenzar con NoSQL”

“Entonces, los beneficios principales (al menos antes de MariaDB) de la mayoría de soluciones NoSQL son:

✓ Acceso rápido a los datos (siempre y cuando pueda tener todo en la memoria)
✓ Replicación rápida de datos repartidos en muchos nodos.
✓ Esquema flexible (se puede añadir nuevas columnas al instante).”

“Más rendimiento y más esquemas flexibles son los dos principales impulsores de NoSQL.”

“SQL no va a desaparecer. NoSQL no puede reemplazarlo. Casi todo el mundo necesitara relaciones (JOIN’s) para utilizar sus datos. Sin embargo, hay lugares donde NoSQL tiene sentido. Creo que, en el futuro, se verá más combinado SQL y el uso de NoSQL.”

Entrevista completa: http://readwrite.com/2013/01/21/dont-write-off-relational-databases-for-big-data-just-yet

Explicación somera de Tweets de Tecnología

Es muy común para los que usamos twitter pensar:

¿Los tweets enviados simplemente pasan a la historia?

¿Quién los leerá pasado un tiempo? y ¿Como harán para llegar a ellos?

¿Alguien podrá encontrar esos 140 caracteres transcendentales que enviamos en algún momento?

A la fecha de este artículo mi cuenta @leninmhs tiene solo 650 tweets enviados (140*650 = cerca de 91.000 caracteres aproximadamente), siquiera yo puedo encontrar alguno que me interese como referencia de un tema técnico,  para dárselos a un conocido, o para volverlo a transitar. La propuesta que traigo es sencilla, seleccioné los tweets orientados a tecnologías libres (privativas solo para criticarlas) sobre los que he escrito, de esta forma pueden encontrarlos a partir de un punto de referencia o de partida, buscando fácilmente desde San Google.

01-08-12 Cuando tengan que limpiar #html usen #Perl así: s/<(?:[^>'”]*|([‘”]).*?\1)*> faltaría limpiar &nbsp; cc @NelsonFx @iamemhn
Una expresión regular que quita o limpia etiquetas HTML de la cadena o bloque de texto que nos interesa, adicional se elimino el muy usado aun &nbsp; mediante otra expresión de sustitución. Muy útil y importante tener a la mano el siguiente código:
#!/usr/bin/perl -w

my $html = '
<html dir="ltr" lang="es">
<head><meta charset="UTF-8" /></head>
<body style="font-family: small-caps;">
<br/><b> HTML A TEXTO  / HTML TO TEXT   </b><br/>
<br/><b> limpiar cadena de texto de html  / clean html text string  </b><br/>
<br/><div style="border-radius:5px;box-shadow:2px #DFDFDF;"><b> quitar etiquetas html / remove html tags </b></div><br/>
<img src="img/perl-regex-html.jpg" /><br/>
<br/><div><b><font color="red">&nbsp;Lenin Hernandez&nbsp;</font></b></div>
<etiquetafalsa><b>Twitter: @leninmhs </b></etiquetafalsa><br/>
<b>Lenguaje de Programación: &nbsp;&nbsp;</b>Perl<br/>
<b>Sistema Operativo:&nbsp;&nbsp;&nbsp;</b> todos en los que se interprete Perl.
</body>
</html>';
$html=~ s/<(?:[^>'"]*|(['"]).*?\1)*>//gs; #regex que limpia el html
$html=~ s/&nbsp;//g; #regex que limpia el &nbsp;
print $html;
Listado de Entornos de Desarrollo (IDE) para programar en Python, en lo particular he usado y me gusta Komodo Edit. Muy ligero y practico comparado con NetBeans ó Eclipse (escritos ambos en Java de ahí el consumo exagerado de recursos…)
Conocemos manejadores de contenidos muchos en PHP, en Perl hay, en Python también hay, pero en Python y haciendo uso del Framework de Desarrollo por excelencia en Python Django es como mucho pedir para los que lo usan, pero si los hay.
16-06-12 @diadebian mi opción es la “D” me toca hoy terminar unos pdfs usando #Reportlab de #Python
La librería ReportLab es excelente para generar PDF en el lenguaje Python. Si usan alguna distro basada en Debian pueden comenzar a usarla con:
#aptitude install python-reportlab
Después de tenerla instalada, a programar en python y leer la documentación de reportlab. El pdf que programe hacia mucho uso de tablas, se inserto imagen y algún otro detalle. Quedo así:
reportlab-python-table-sqlite

reportlab-python-table-sqlite

Alta Disponibilidad en PostgreSQL

Entrada I Jornada de Computación Aplicada utilizando Herramientas de Software libre

En el marco de la I Jornada de Computación Aplicada Utilizando Herramientas de Software Libre se realizo ponencia de Alta Disponibilidad en PostgreSQL a estudiantes de la carrera de ingeniería de la Universidad Nacional Experimental Romulo Gallegos (UNERG) en San Juan de los Morros, Estado Guarico.

Descargar presentación: alta-disponibilidad-postgres

Sigue leyendo

Alta Disponibilidad con PgPool-II

esquema-pgpool-postgres

Aunque el común denominador suele referirse a estas soluciones de base de datos como cluster o clusterización por el hecho de que normalmente implica varios servidores, varias instancias o instalaciones de bases de datos distribuidas tal vez hasta geográficamente, lo correcto es referirse a “Alta Disponibilidad” del ingles High Availability (en muchos textos se abrevia HA) por que nos indica que la prioridad es “Mantener la Continuidad Operativa” de nuestro servicio, de nuestras operaciones, de la infraestructura tecnológica que soporta un negocio que simplemente no se puede dar el lujo de detenerse, o en caso de falla tiene que recuperarse y restaurarse bajo unas reglas definidas previamente, es por ello que hablamos de Alta Disponibilidad y no de cluster. Pgpool-II es una de las mejores y mas completa herramienta para brindar soluciones de alta disponibilidad en el manejador de bases de datos libres PostgreSQL. PgPool-II es software libre que trabaja como intermediario (middleware) entre clientes que se conecten contra postgres (psql, pgadmin, DBA’s, software, aplicativos, etc..) y otras instancias de bases de datos (nodos) para distribuir el trabajo o la carga entre los distintos nodos con los que cuente nuestro diseño o implementación de alta disponibilidad. Los clientes ven y se conectan a PgPool a través de una cadena de conexión común y silvestre como si fuera una base de datos mas, y a su vez cada uno de los nodos ven a PgPool como si fuera un cliente mas, de ahí que PgPool podría ser considerado desde este punto de vista como cliente y servidor al mismo tiempo. Sigue leyendo