/
Guardar datos de Entidades utilizando S3

Guardar datos de Entidades utilizando S3

Introducción

En muchos proyectos es muy común querer guardar datos históricos almacenados en Entidades, de forma que posteriormente se pueda aligerar el tamaño de los datos en las bases de datos. Un ejemplo sería leer datos de Entidades y almacenarlos como ficheros en S3, y de esta forma, se podrían tener backups de datos de Entidades en S3.

En este artículo se van a ver ejemplos útiles con el módulo de Dataflow para implementar todos estos casos de uso.

El objetivo no es dar una guía paso a paso de cómo replicar el ejemplo. Aquí se resaltarán las configuraciones más relevantes en cada pipeline.

Ejemplos

Escritura en S3

Se va a comenzar con el ejemplo más sencillo, que sería la lectura de los datos y la escritura directamente usando S3.

image-20250220-173545.png

En esta primera aproximación lo que se hace es definir una conector con Onesait Platform como origen. Este conector ejecutará una query para leer los datos que se quieran almacenar. Por ejemplo, se podría querer leer todos los datos anteriores a una fecha determinada.

Una vez leídos los datos, se usará el componente Amazon S3 para almacenar los datos utilizando S3. Aunque el componente se llame Amazon S3, se puede utilizar otro almacenamiento que soporte S3. En concreto, en este ejemplo se utiliza la integración de MinIO que se encuentra disponible en Onesait Platform.

Para configurar el conector de Onesait Platform, hay que tener en cuenta lo siguiente:

  • En la pestaña Connection, se tienen que rellenar los valores «Token» e «IoT Client» con los valores del Digital Client que se vayan a utilizar, teniendo en cuenta que este Digital Client debe tener permisos sobre la Entidad de la cual se tomen los datos.

  • En Ontology se debe poner el nombre de la Entidad elegida para este proceso, como se muestra en la imagen anterior, y donde se puede hacer uso de los parámetros

  • En la pestaña Configuration se debe escribir la query que se usará para obtener los datos de la Entidad

Para configurar el destino S3 los datos más relevantes son:

image-20250220-174035.png

Algo que hay que tener en cuenta con este ejemplo es que, por cómo funciona S3, con esta configuración se creará un fichero nuevo por cada batch de datos leídos de la Entidad origen. Si la Entidad contiene pocos datos se podrían leer todos los datos de una sola vez y generar un sólo fichero o usar un tamaño de batch lo suficientemente grande para que se genere un número aceptable de ficheros en S3. Sin embargo esto es bastante limitado si se tiene un gran número de datos.

Esto lleva a la evolución lógica de este ejemplo, que es contar con un paso intermedio que cree los ficheros con el tamaño que interese para almacenarlos en S3, con independencia del tamaño del batch, lo que permitirá incluso trabajar en streaming si fuese necesario.

Para ello, vamos a partir el flujo de datos en dos flujos. El primero se en cargará de leer de Onesait Platform y crear ficheros temporales con los datos. El segundo leerá los ficheros temporales y los guardará en S3. Además este segundo flujo de datos eliminará el fichero una vez esté en S3.

El primer flujo tendrá este aspecto:

Sin entrar en los detalles de configuración, lo relevante aquí es elegir el tamaño de fichero teniendo en cuenta el tamaño de fichero que se quiere tener en S3.

El destino «Local S3» permite definir este valor en base a número de líneas y tamaño de fichero. Se puede observar que se ha implementado un flujo de eventos para parar el pipeline. Esto no es obligatorio y dependerá del caso de uso. Para este ejemplo se ha hecho para que se pare automáticamente cuando termine de ejecutar la query que hay configurada, sin quedarse a escuchar nuevos registros que pudiesen llegar más adelante.

El segundo flujo de datos es parecido al original, salvo que lee de un directorio local.

Lo más relevante en este caso es que en todos los casos anteriores se estaba trabajando a nivel de registros utilizando formato JSON. En este caso ya no es necesario. En este ejemplo en el directorio local se tiene el fichero temporal ya formateado como interesa subirlo a S3, y por lo tanto no se necesita volver a parsear todas las líneas. Para evitar este procesamiento innecesario se utiliza el formato wholefile para leer del directorio local y para escribir en S3.

Además, para evitar tener que gestionar manualmente los ficheros temporales, en el directorio de origen se ha configurado la opción de post procesado para que borre los ficheros ya tratados.

Escritura en Onesait Platform leyendo desde S3

Este es un ejemplo bastante sencillo. Lo más relevante es configurar el origen Amazon S3 para que lea los ficheros que se desee y configurar un destino para Onesait Platform. Por ejemplo, esto se podría hacer para restaurar una Entidad en base a ficheros almacenados en S3.

 

Related content

Saving Entity data using S3
Saving Entity data using S3
More like this
Demostrador: Flujo expedientes bancarios
Demostrador: Flujo expedientes bancarios
More like this
Virtual Buckets sobre S3
Virtual Buckets sobre S3
More like this
Creación de una Entidad en una base de datos histórica
Creación de una Entidad en una base de datos histórica
More like this
¿Cómo utilizar la etapa de inserción Onesait?
¿Cómo utilizar la etapa de inserción Onesait?
More like this
¿Cúando usar el módulo Dataflow?
¿Cúando usar el módulo Dataflow?
More like this