Introducción y planteamiento inicial
En la empresilla familiar en la que trabajo me han encargado hacer un estudio sobre las tecnologías NoSQL y su posible utilidad para nosotros.
En un resumen rápido de 30 segundos podemos decir que los servidores de bases de datos NoSQL son utilizados cuando trabajamos con datos que no requieren tener una estructura que siga un modelo relacional “clásico”. Puede haber una estructura, pero está es mínima y en general lo que nos preocupa es la capacidad de almacenado y recuperación de una cantidad masiva de datos, y no tanto el establecimiento de relaciones entre distintos elementos.
Por ejemplo, queremos almacenar millones de pares clave-valor en uno o varios arrays asociativos enooormes o queremos almacenar millones de registros de datos. Ésto es particularmente útil para hacer análisis estadísticos o almacenar listados de elementos de longitud creciente (pensemos en los post de una cuenta en Twitter o en un registro de los accesos a Internet de los usuarios).
Los casos de uso que tenemos ahora en los que podríamos aplicar este tipo de soluciones serían los dos siguientes:
- Análisis de logs de acceso a Internet
- Ahora mismo el almacenado de los logs de acceso se hace en tablas MySQL. Estamos hablando de varias decenas de miles de usuarios con acceso a Internet y unos logs que registran cada URL y el tamaño de la descarga. Como se generan varias Gigabytes diarios lo que se hace es almacenar los logs en distintas tablas particionándolas verticalmente por mes (una tabla para Enero, otra para Febrero, etc …)
- Análisis de logs de servidores Unix repartidos geográficamente
- Usados para la comunicación con las oficinas comerciales, estaríamos hablando de los logs de los distintos servicios (FTP, SSH, Apache, MySQL, servicios de transferencia de archivos desarrollados por la empresa …) de unos 1000 servidores Linux
Centrándonos en el problema
Para el resto del análisis vamos a centrarnos en el primero de los problemas, el almacenamiento y análisis eficiente de los logs de las comunicaciones hechas por los empleados (varias decenas de miles) con acceso a Internet.
Lo que está claro por el momento es que en el momento en el que se decide particionar las tablas por meses (decisión que se ha tomado por cuestiones de volumen) se nos complican bastante las consultas ya que si queremos obtener estadísticas de uso de más de un mes tendremos que acceder a varios tablas.
El problema al que nos enfrentamos es cómo sustituir MySQL, solución aparentemente poco apropiada para este caso, por una alternativa NoSQL, que entendemos que nos dará mayor rendimiento para realizar estadísticas e informes basadas en los análisis de logs, con registros que incluirán datos como:
- Fecha y hora de acceso
- Usuario que accede
- URL visitada
- Tamaño en bytes de la descarga realizada
Las preguntas que queremos responder son del siguiente tipo:
- ¿Cuáles son las páginas más visitadas?
- ¿Y las más visitadas por mes? ¿La última semana? ¿Por departamento?
- ¿Qué usuarios pasan más tiempo en Internet?
- ¿Cuáles son los 100 usuarios cuyo volumen de tráfico es mayor?
- ¿Cuál es la media diario del volumen de tráfico desde la red de la empresa hacia Internet?
Estimación del volumen de datos
El tamaño y el número de registros de datos que se almacenan por mes son:
- Tamaño de los datos: entre 150 y 300 Gb
- Número de registros: entre 650 y 1.700 millones
Para una población de unos 70,000 usuarios que acceden a 1,5 millones de dominios distintos
Por lo tanto, dado el tamaño real del tráfico, en un año podríamos llegar a un volumen almacenado de 3,600 Gb para unas 20.000 millones de entradas en el registro.
Ver también
El resto de esta serie de artículos
Comentarios
Actualmente no hay comentarios a este artículo.
Añadir comentarios ...