Buscando una solución NoSQL para el análisis de logs (3 de 4)

Publicado
Comentarios:  Ninguno

Buscando una solución NoSQL para el análisis de logs (3 de 4)

Después de mucho leer descripciones, comparativas, blogs de expertos que se han enfrentado a situaciones similares a la mía y que describen su experiencia llega un momento en que hay que decir ¡BASTA! y, con las ideas cada vez más claras en mi cabecita tomar una decisión sobre qué solución implementar. El tiempo dirá si la decisión es correcta o no. En cualquier caso habremos aprendido mucho por el camino.

Dado que mi experiencia con NoSQL hasta el momento es nula lo que aquí se describe no es el consejo de un consultor informático experto en estas lides, si no más bien como un resumen de todo el proceso de estudio, reflexión y elección de un camino a seguir. Con suerte a alguien le ahorrará unas cuantas días de trabajo .

Descripción del tipo de datos y el problema

Como dije en el artículo anterior va a ser el tipo de datos que manejemos, su estructura y la naturaleza del problema la que nos van a dirigir hacia uno u otro tipo de solución NoSQL.

La cuestión es que queremos gestionar los logs de acceso a Internet de salida por los proxys de la empresa para varias decenas de miles de usuarios. La salida se hace a través de varios proxys HTTP distintos y los usuarios se tienen que autentificar para utilizarlo. Ahora mismo en una base de datos MySQL (particionada verticalmente por mes) almacenamos los siguientes datos:

  • Para cada acceso FTP: la IP interna desde la que se accede, fecha, hora, dominio, URI, tamaño y proxy
  • Para cada acceso: la IP interna, el id de usuario, la fecha y hora de acceso, el método HTTP utilizado, el protocolo, el dominio, la URI, el código de retorno HTTP, el tamaño de la transferencia, el proxy desde el que se accede, la tasa de transferencia y un campo de categoría (que entiendo que es una categoría asignada automáticamente a la URL de acceso usando algún tipo de filtro externo)

A partir de estos datos se generan

  • Estadísticas diarias del número de accesos por dominio de Internet
  • Estadísticas mensuales por categoría de página, dominio de Internet y usuario del número de accesos y el volumen de datos transferidos

Con lo cual vemos lo siguiente:

  • el tipo de datos está estructurado en registros, sin relación entre ellos (cada uno de estos cuatro elementos se almacenan en tablas distintas)
  • cada acceso se almacena en una tabla a modo de log que crece indefinidamente
  • los accesos a la base de datos son de escritura en su gran mayoría
  • cada acceso implica una modificación en los valores estadísticos, que se llevan por día para cada dominio de Internet y por mes para cada dominio de Internet, categoría de página y usuario.

Las consultas podríamos definirlas de antemano, ya que las estadísticas son generadas por alguna aplicación y para obtener resultados muy concretos. Podríamos definir un listado de informes a obtener o, tal y como yo prefiero, utilizar una solución NoSQL que nos permite lanzar queries a la base de datos con más flexibilidad.

Viendo esto ya podemos sacar algunas conclusiones que nos permitirán descartar algunas opciones

  • Los datos son registros con varios campos, con lo que necesitaremos una base orientada a documentos o tabular (múltiples columnas para un registro)
  • No necesitamos transacciones (los datos se van a ir añadiendo uno detrás de otro, de forma aislada)
  • Sí necesitamos realizar funciones MapReduce. Cada acceso genera un valor que tendrá que ser tratado para obtener estadísticas resumen por dominio, categoría y usuario. Y en el tiempo se obtendrán resúmenes estadísticas por día y mes.
  • Como requisitos añadidos tenemos que la solución:
    • ha de ser Open Source
    • lista para entornos de producción (estable)
    • con soporte profesional

No está mal.

Lecturas recomendadas antes de tomar una decisión

Para empezar de lo leído destacaría los siguientes enlaces:

Naturalmente la Wikipedia (en inglés) es tu amiga. Las descripciones para estos productos (algunas editadas y mejoradas por mí durante este estudio) están llenas de referencias muy útiles

El apéndice del libro de O’Reilly Cassandra, The Definite Guide incluye también una muy buena descripción del panorama NoSQL.

Ver también

El resto de esta serie de artículos


Etiquetas:

Comentarios

Actualmente no hay comentarios a este artículo.

Añadir comentarios ...

Escribe debajo tu comentario. Los campos marcados con * son obligatorios. Tienes que previsualizar tu comentario antes de enviarlo definitivamente.