Es importante para el desarrollo del negocio conocer y disponer de la máxima información posible de nuestros sistemas o aplicaciones puesto que de ello dependerá tomar las decisiones necesarias para un buen funcionamiento o mejora de estos.
Por ejemplo, en un negocio de tienda online, es interesante conocer en tiempo real los datos de ventas y el máximo detalle de los productos vendidos de cara a inventario, provisión, ampliar o eliminar una línea de productos y todas las características de estos, que nos ayudará a conocer los perfiles de comprador, realizar ofertas personalizadas u orientar o potenciar ciertos artículos o líneas de negocio en función en número y características de venta de unos u otros artículos.
Conocer toda esta información es muy importante para el negocio, pero son datos e información que a medida que pasa el tiempo su relevancia puede verse afectada. Conocer el detalle de cada producto con todas sus características varios meses después de la venta puede ser irrelevante, sin embargo, si puede ser relevante guardar parte de los datos como puede ser volumen de ventas por producto, precio etc.
Nos encontramos por tanto ante la necesidad de poder disponer del control, desde el punto de vista temporal, sobre los datos para adecuarlos al uso que necesitemos hacer de ellos y almacenarlos lo más eficientemente posible, ahorrando espacio y por tanto costos.
Elasticsearch, como herramienta de tratamiento y almacenamiento masivo de datos, dispone de diferentes métodos para llevar a cabo la gestión de los datos a lo largo del tiempo y de la explotación de los mismos dependiendo de la necesidad en determinado momento.
Almacenamiento completo de todos los datos a largo plazo
En determinados casos de uso en los que el dato ha de mantenerse inalterado en periodos muy largos de tiempo como pueden ser datos sujetos a requisitos legales de almacenamiento por periodos de varios años, Elasticsearch dispone de un método que sino reduce el tamaño del almacenamiento si optimiza el costo asociado a mantener estos datos en periodos de tiempo tan largos y son los Data Tiers (Hot, Warm, Cold, Frozen)
A medida que pasa el tiempo desde la generación datos y en función de la periodicidad de consulta de estos, van cambiando entre las diferentes fases que suelen ir asociadas a un hardware más modesto orientado al almacenamiento a largo plazo y a la economización de entorno global. De esta forma, cuando el cliente decida que determinado dato solo volverá a ser consultado de forma muy puntual pasará a una fase Cold o Frozen con lo que conseguiremos almacenar gran cantidad de datos a muy largo plazo con un coste muy contenido.
Transformación de los datos para su almacenamiento
Con el paso del tiempo, los datos ingestados inicialmente en el clúster para una explotación determina pueden dejar de tener relevancia en la forma en que se ingestaron o el fin para el que fueron recolectados, sin embargo puede ser interesante transformar los datos o transformar la información en base a diferentes entidades o categorías para acotar la información que se va a almacenar a largo plazo y además abrir nuevas capacidades de análisis sobre información a priori irrelevante mediante nuevos modelos de explotación.
Siguiendo con el ejemplo de tienda online, en cada documento vienen las características del producto adquirido, y datos de usuario, pero de cara a realizar un estudio de comportamiento de cada uno de los usuarios que han realizado una compra, se puede realizar una transformación en los datos para conseguir que sea el usuario la entidad principal de cada documento de forma que podamos hacer estudios personalizados y estadísticas por usuario y eliminando el resto de información no relevante para este análisis.
Para llevar a cabo esta transformación de los datos, Elastic provee de la herramienta Transforms que permite transformar la información ingestada en el índice origen en índices resumidos por entidad o por categorías desechando los datos irrelevantes de cada documento, reduciendo así el tamaño y abriendo nuevas vías de explotación de los mismos datos.
Jobs de rollup
En casos de uso como Observabilidad, por ejemplo, de los sistemas de TI, es primordial disponer de la máxima cantidad de información disponible de los sistemas en tiempo real para conseguir una visión global del estado de un servicio o de una plataforma y poder anticiparnos a situaciones de falta de servicio o falta de rendimiento en los sistemas.
En estos casos de uso nos encontramos con que los datos habitualmente son efímeros ya que en pocas horas o días no tienen relevancia y difícilmente van a ser conservados largos periodos de tiempo o consultados con el mismo detalle que en el momento de su generación. Sin embargo, sí puede ser interesante conservar métricas agregadas de varios periodos temporales, es decir agrupar cada métrica que se va generando cada hora en una sola métrica que agrupa y calcula la media por día o por semana para almacenar así el estado de un servicio o servidor a lo largo del tiempo que nos permitirá hacer comparativas en consumos actuales y consumos pasados o provisión de recursos.
La solución que propone Elasticsearch para este tipo de casos son los Jobs de rollup, que son pequeñas tareas programadas que se lanzan periódicamente y mediante agregaciones va almacenando únicamente los datos que nos interesa mantener a largo plazo, calculando medias, sumas, o valores máximos de determinado campo y desechando el resto de información de cada documento. De esta forma conseguimos disponer de información histórica a lo largo de los años con un almacenamiento ínfimo que sigue siendo consultable y explotables desde nuestras visualizaciones o nuestros dashboards.
Como resumen podemos decir que Elasticsearch cubre todo el espectro de causticas en las que los datos cambian en relevancia a lo largo del tiempo aportando diferentes soluciones que pueden ser utilizadas conjuntamente en función de las necesidades del cliente.