Spool: particionado de datos

Spool: particionado de datos

Introducción

En el contexto de la gestión de APIs, el término Spool hace referencia a una técnica que permite almacenar temporalmente datos en un espacio intermedio, facilitando la distribución o procesamiento. Este mecanismo resulta particularmente útil cuando se trabaja con grandes volúmenes de información, asegurando la eficiencia y organización de las operaciones.

Por buenas prácticas, las APIs entregan de forma sincrónica hasta un máximo de 10.000 registros, aunque en algunos casos de uso puede ser necesario entregar cantidades mayores.

Una funcionalidad clave asociada al Spool es la partición de resultados. Este proceso consiste en dividir los datos obtenidos de una operación (por ejemplo la respuesta de una API) en bloques más pequeños o particiones. La partición es esencial cuando:


  1. Los datos son voluminosos: Evita la sobrecarga de memoria o red al trabajar con conjuntos de datos que no pueden procesarse en una sola operación.

  2. Se busca paralelismo: Permite que diferentes particiones sean procesadas simultáneamente, mejorando el rendimiento.

  3. Se requiere paginación: Facilita la entrega ordenada y escalonada de información a los clientes de una API.


La partición de resultados trabaja sobre la entrada de datos, almacenando temporalmente en el spool, definiendo criterios de partición para dividir los datos, sea por tamaño (número de registros) o por condiciones específicas (por ejemplo, fechas, género, o distintas categorías) y logrando que cada bloque generado pueda ser procesado de forma independiente.  

El nombre de la funcionalidad en VOR-TEX se inspira en el significado de Spool de las bases de datos. En el contexto de bases de datos "spool" se refiere a la funcionalidad de volcar (grabar o registrar) la salida de una sesión en un archivo. Cuando un origen de datos tenga habilitada la función de Spool, Vor-Tex ejecutará el origen de datos y guardará el resultado en un archivo que podrá ser descargado por el usuario.

Gracias a incorporar la funcionalidad de spool-partición de resultados de VOR-TEX, se vuelve posible reducir tiempos de procesamiento con un aprovechamiento mas eficiente de los recursos, soportar operaciones en distintas arquitecturas haciendo posible la escalabilidad, y mejorar la experiencia de los usuarios brindando respuestas más ágiles. 


Configurar Spool: particionado. 

Nombres y columnas del particionado

Con la función de Spool de Vor-Tex , se pueden segmentar los resultados de un origen de datos, es decir, se puede particionar el resultado. Este particionado puede realizarse sobre una o más columnas de respuesta del origen de datos. Sobre cada columna que aplicará como particionado deberá definirse un nombre y sobre qué columna aplicará:


  • Nombre: se utilizará como nombre del parámetro de la vista de datos, que podrá ser modificado posteriormente en la vista de datos.

  • Columna: puede indicarse por posición [column0] o por nombre, por ejemplo, “account_id”.


En Vor-Tex, el particionado se realiza mediante corte de control, por tanto es importante que los datos estén ordenados por las columnas que se utilizarán para generar el particionado.

Ejemplo

A continuación se presenta un ejemplo sobre una base de datos de 8 columnas que contiene un total de nueve registros. 

account_id

country

employee_id

birth_date

first_name

last_name

gender

hire_date

100

ARG

10000

1/6/1963

Duangkaew

Piveteau

F

24/8/1989

100

ARG

10001

2/9/1953

Georgi

Facello

M

26/6/1986

101

ARG

10002

2/6/1964

Bezalel

Simmel

F

21/11/1985

101

USA

10003

3/12/1959

Parto

Bamford

M

28/8/1986

101

USA

10004

1/5/1954

Chirstian

Koblick

M

1/12/1986

102

ARG

10005

21/1/1955

Kyoichi

Maliniak

M

12/9/1989

102

ARG

10006

20/4/1953

Anneke

Preusig

F

2/6/1989

102

ARG

10007

23/5/1957

Tzvetan

Zielinski

F

10/2/1989

102

USA

10008

19/2/1958

Saniya

Kalloufi

M

15/9/1994


Particionado por una columna.

Si se define el particionado según la columna “account_id”,  se particionará el resultado según los valores únicos de esa columna. En el caso de esta tabla, habiendo tres ID (100, 101 y 102), se generarían 3 grupos:


Grupo 1. account_id=100


account_id

country

employee_id

birth_date

first_name

last_name

gender

hire_date

100

ARG

10000

1/6/1963

Duangkaew

Piveteau

F

24/8/1989

100

ARG

10001

2/9/1953

Georgi

Facello

M

26/6/1986


Grupo 2. account_id=101


account_id

country

employee_id

birth_date

first_name

last_name

gender

hire_date

101

ARG

10002

2/6/1964

Bezalel

Simmel

F

21/11/1985

101

USA

10003

3/12/1959

Parto

Bamford

M

28/8/1986

101

USA

10004

1/5/1954

Chirstian

Koblick

M

1/12/1986


Grupo 3. account_id=102


account_id

country

employee_id

birth_date

first_name

last_name

gender

hire_date

102

ARG

10005

21/1/1955

Kyoichi

Maliniak

M

12/9/1989

102

ARG

10006

20/4/1953

Anneke

Preusig

F

2/6/1989

102

ARG

10007

23/5/1957

Tzvetan

Zielinski

F

10/2/1989

102

USA

10008

19/2/1958

Saniya

Kalloufi

M

15/9/1994


Particionado por más de una columna.

Si define particionar el resultado por mas de una columna, por ejemplo según la columna “account_id” y la columna “country”, se particionará según los valores únicos de la combinación de esas columnas. Siguiendo el ejemplo, en este caso se generarían 5 grupos:


Grupo 1. account_id = 100 y country = ARG


account_id

country

employee_id

birth_date

first_name

last_name

gender

hire_date

100

ARG

10000

1/6/1963

Duangkaew

Piveteau

F

24/8/1989

100

ARG

10001

2/9/1953

Georgi

Facello

M

26/6/1986


Grupo 2. account_id = 101 y country = ARG


account_id

country

employee_id

birth_date

first_name

last_name

gender

hire_date

101

ARG

10002

2/6/1964

Bezalel

Simmel

F

21/11/1985


Grupo 3. account_id = 101 y country = USA


account_id

country

employee_id

birth_date

first_name

last_name

gender

hire_date

101

USA

10003

3/12/1959

Parto

Bamford

M

28/8/1986

101

USA

10004

1/5/1954

Chirstian

Koblick

M

1/12/1986


Grupo 4. account_id = 102 y country = ARG


account_id

country

employee_id

birth_date

first_name

last_name

gender

hire_date

102

ARG

10005

21/1/1955

Kyoichi

Maliniak

M

12/9/1989

102

ARG

10006

20/4/1953

Anneke

Preusig

F

2/6/1989

102

ARG

10007

23/5/1957

Tzvetan

Zielinski

F

10/2/1989


Grupo 5. account_id = 102 y country = USA


account_id

country

employee_id

birth_date

first_name

last_name

gender

hire_date

102

USA

10008

19/2/1958

Saniya

Kalloufi

M

15/9/1994


Configurar Spool en Workspace de VOR-TEX

La configuración de Spool se realiza durante la conexión a un origen de datos. Una vez configurado el origen de datos, en el segundo paso puede activar la funcionalidad de Spool y aplicar configuraciones adicionales.

Las configuraciones del Spool son las siguientes: 


  • Usar atributos como cabeceras: si está activado se utilizará la primera fila, los atributos o nombres de las columnas como cabeceras del archivo generado.

  • Valores con comillas: permite configurar comillas dobles para encerrar el texto o los valores.

  • Carácter de delimitador: permite definir el carácter que separará los valores. Si no selecciona ninguno, por defecto se utilizará la coma.

  • Carácter de final de línea: permite definir la cadena de caracteres usada para terminar las líneas producidas. Por defecto es '\r\n' .


Realizadas estas configuraciones, se debe proceder con el guardado de las mismas y avanzar hacia la creación de la vista de datos. Al crear la vista de datos no habrá selección y previsualización de los datos. De todas formas, puede configurar los parámetros, metadatos y multientorno.


Para agregar un método seleccione en su API la vista creada. Una vez seleccionada la vista podrá configurar el método como en el resto de los casos, con la diferencia de que en este caso no deberá configurar plantillas de salida. Una vez que haya guardado su método, puede publicar la API.

Ejecutar método spool

Dado que la ejecución de los métodos de tipo Spool es asincrónica, su ejecución implica dos solicitudes:


  • Obtener identificador “uuid”: En caso que la ejecución sea exitosa, la primera solicitud entregará un identificador de tarea en el atributo “uuid”. 


{

  "message": "Response is not ready call later with uuid >> 6a2f32af-a54c-4640-9a23-ea974a9c90c0",

  "code": 409,

  "uuid": "6a2f32af-a54c-4640-9a23-ea974a9c90c0"

}



  • Obtención del resultado: para obtener el resultado, deberá ejecutar una segunda solicitud al mismo método, aunque agregando la cabecera X-UUID con el valor obtenido en la solicitud anterior.


curl 'example.com/accounts/v1/accounts' \

--header 'Authorization: ************' \

--header 'X-UUID: 302d9bbf-f789-4d46-9dba-c0210f3d7c98'

Repaso

El Spool es un concepto que viene del trabajo con bases de datos y es incorporado para lograr particionar resultados cuando se trabaja con grandes volúmenes, en busca de tener mas eficiencia y escalabilidad. 


VOR-TEX cuenta con esta funcionalidad, la cual se configura al momento de conectarse a los orígenes de datos con los que se desee trabajar, pudiendo ser de distintos tipos como bases de datos, servicios web, planillas, documentos, entre otros. El particionado de los resultados de un origen de datos, se puede realizar a partir de alguna columna de datos o a partir de distintos valores o categorías, permitiendo trabajar con resultados segmentados a partir de dichos criterios. 


Al configurar spool en la plataforma de VOR.TEX , los usuarios logran: 


  • Optimización del rendimiento: Reduce el tiempo de procesamiento y el uso de recursos al manejar los datos por partes.

  • Escalabilidad: Soporta operaciones en arquitecturas distribuidas, como microservicios.

  • Mejor experiencia del usuario: Facilitar respuestas rápidas y gestionables, mejorando la interacción con APIs.


De esta manera, con VOR-TEX platform, no solo se pueden construir y gestionar APIs en minutos, sino que se pueden construir y gestionar APIs conectadas a grandes volúmenes de datos, garantizando eficiencia, seguridad, escalabilidad y una buena experiencia para los usuarios finales que consuman las APIs. 


    • Related Articles

    • Configurar Spool en origen de datos

      Introducción Spool es una funcionalidad que permite entregar grandes volúmenes de datos en las APIs. Por buenas prácticas las APIs entregan de forma sincrónica hasta un máximo de 10.000 registros, aunque en algunos casos de uso puede ser necesario ...
    • Orígenes de datos desde Bases de datos

      Resumen El conector a Bases de datos ofrece todas las capacidades necesarias para conectarse a este tipo de orígenes. Esta opción permite recolectar datos desde diferentes tipos de bases de datos o configurar acciones de escritura, para luego crear ...
    • Qué es una vista de datos

      Resumen La plataforma no requiere de un proceso ETL off-line para extraer los datos desde los orígenes, sino que asociadas a la vista se encuentran un conjunto de reglas que el motor de datos interpreta para consultar la fuente a demanda o ...
    • Orígenes de datos desde URLs

      Resumen El conector de URLs permite recolectar datos desde protocolos HTTP(s) y FTP. Para recolectar datos desde un archivo alojado en una URL, debes ir a Orígenes de Datos → Desde URLs Configuración Ingresar una URL con un  enlace válido desde donde ...
    • Orígenes de datos desde servicios web REST/json

      Resumen El conector a servicios web REST/JSON ofrece todas las capacidades necesarias para conectarse a este tipo de orígenes. Esta opción permite recolectar datos desde servicios web REST/JSON o configurar acciones de escritura, para luego crear ...