Mostrando entradas con la etiqueta rrdtool. Mostrar todas las entradas
Mostrando entradas con la etiqueta rrdtool. Mostrar todas las entradas

martes, julio 01, 2008

Dos productos Open Source interesantes saliendo de una tienda de viajes online

martes, julio 01, 2008 por Martín


Leyendo InfoQ he visto que Orbitz, una compañía de venta de viajes online, curiosamente ha lanzado dos frameworks como Open Source.

Uno es ERMA del que a pesar de la presentación en la JavaOne, que aunque yo no sería partidario de implementar este tipo de frameworks en una empresa teniendo cosas Hyperic, Wily o insideApps que pueden cubrir muchas de las necesidades, siempre está interesante alternativas para el procesado de eventos. En InfoQ hablan también de Esper que parece realmente interesante.

El otro es Graphite, que personalmente lo encuentro más interesante porque, su motor, whisper, supone una alternativa a RRDTool (n su página tienen una discusión sobre las diferencias entre ambos motores), y siempre está bien disponer de alternativas, especialmente Open Source. En InfoQ comentan que lo utilizan para manejar información agregada de 70000 métricas lo cual no está del todo mal, aunque tampoco especifican cuanta memoria o hardware se necesita para ello. En el wiki quizás haya más información.

Por cierto, he visto que uno de sus autores, Ray Krueger, es también el creador de un plugin para integrar memcached como caché de segundo nivel en Hibernate. Ni idea de como funcionará, pero si alguien se anima a probarlo, me encantaría oir sobre los resultados.

jueves, marzo 27, 2008

Round Robin Databases

jueves, marzo 27, 2008 por Martín


El año pasado por un requerimiento del trabajo me encontré on una herramienta que nunca había visto antes. Se trata de RRDTool. En su momento iba a postear sobre ello pero me imaginé que era algo bastante conocido ya que parece que mucha gente de sistemas está familiarizada con este tipo de herramientas. Hace unos días me encontré con un requisito que se ajustaba a este tipo de soluciones y la gente tampoco conocía el concepto por detrás de RRDTool, así que supongo que no está de más guardar el conocimiento por aquí.

RRDTool es una herramienta construida sobre el concepto de Round-Robin Database. Se trata de un tipo muy específico de base de datos, orientadas al almacenamiento de datos basados en series temporales, y que garantizan el espacio final ocupado por sus elementos.

RRDTool es muy sencillo de utilizar, y probablemente con un ejemplo se entienda mejor como funciona. Imaginaros un sistema de análisis bursátil. Cada día, una cotización puede variar de valor unas cuantas veces por segundo. Imaginémonos que varía 3 veces por segundo. Esto significa que en un día, asumiendo un intervalo de trading de ocho horas, se tienen 8*60*60*3 = 86400 valores por día. Si asumimos por ejemplo 100 valores a seguir, tendríamos 8640000 cotizaciones al día, lo que son casi 10 millones. En una semana (de 5 días), andaríamos cerca de los 40 millones de valores, y en un mes laboral rondaríamos los 200 millones.

Ahora bien, ¿a quién le interesa el valor que tenía la acción de Endesa en el segundo 20, del minuto 35, a las cuatro de la tarde del 21 de Enero del 2008? Respuesta simple: a nadie. Comúnmente la granularidad fina en los datos temporales es sólo interesante en una ventana corta de tiempo. Por ejemplo en un sistema de seguimiento de transacciones, interesa saber que ha fallado una transacción en las pocas horas, pero pasados los meses la información de exáctamente cuándo deja de perder importancia (sigue teniendo importancia el saber que hubo un fallo, pero ya no importa si en lugar de minutos nos quedamos con el día).

Lo que hace RRDTool es agrupar la información conforme a intervalos de tiempo que nosotros definimos. Por ejemplo, le podemos decir que queremos que guarde los datos con una granularidad de 1 segundo para la primera hora, con granularidad de 5 minutos, para las siguientes 23 horas, con granularidad de 30 minutos para 1 semana, 1 hora para los tres primeros meses, y 1 día para los últimos 9 meses del año. Al introducir datos en RRDTool, la herramienta se encarga de realizar las agruaciones y las medias conforme a los intervalos que hemos definido.

Seguramente, incluso los que no habíais oído hablar del concepto de Round-Robin Database ya os habríais encontrado con estos sistemas hace tiempo. En la página web de RRDTool tienen una amplia galería de ejemplos, pero si vais por ejemplo a Yahoo Finance (por poner un ejemplo) veréis como para mostrar las gráficas, la granularidad de los valores de una acción dependen del tipo de intervalo que escogéis: 1 minuto para el día, 5 minutos para 5 días, 1 día para el intervalor de 1 mes, etc. Se trata de economizar información.

En su web tienen bindings para lenguajes como Python y Ruby. Para los javeros, existe una implementación 100% Java de RRDTool: rrd4j que yo he probado y funciona bastante bien.

Pues nada más por hoy. ¡Espero que esto le sea útil a alquien!