Ticket #1346 (new task)

Opened 6 years ago

Last modified 6 years ago

Clase @Blob para el manejo de información binaria arbitraria.

Reported by: vdebuen Owned by: vdebuen
Priority: normal Milestone: TOL Extensions
Component: Kernel Version: head
Severity: normal Keywords:
Cc:

Description (last modified by vdebuen) (diff)

Es necesaria una forma de manejar en TOL información binaria arbitraria para distintos propósitos:

  • Almacenamiento de campos blob en bases de datos (de ahí el nombre)
  • Serialización binaria de objetos TOL (Ver #1291)
  • Comunicación entre procesos TOL (paralelización)
  • Tratamiento de archivos binarios (imágenes, mapas, ...)

Actualmente, en algunas API's para el manejo de estructuras de datos ajenas a TOL como TolExcel, TolIpopt, NonLinGloOpt, etc.; se está usando un Real que mapea el puntero a la estructura interna la cual es conocida por las funciones de la API.

Esta estrategia tiene sentido en ese tipo de API's pero existen aplicaciones algo más genéricas que requieren también información sobre el tamaño total del objeto y para las que se pueden dar ciertos métodos comunes, por lo que una clase sería lo más adecuado.

Según el tipo de información podría haber distintas formas de codificar la información que fueran más adecuadas que otras según otras condiciones como el tamaño, la necesidad de meta-información añadida, la estructura de los datos, la velocidad de transmisión, etc. He aquí algunos de los casos más claros cuya necesidad ya ha sido detectada:

  • Protocolos de codificación de objetos TOL
    • TOL: Expresión TOL para ser evaluada para cualquier tipo TOL. Puede ser útil para casos sencillos y para depurar.
    • OIS: formato binario para objetos TOL genéricos, indexados y documentados. Es el más potente pero implica mucho over-head para objetos sencillos.
    • DDS: formato binario de objetos sin documentación y restringida a ciertos tipos TOL (Ver #1291). Muy eficiente para pasar datos puros.
    • En caso de ser necesario, podría estudiarse algún protocolo ad-hoc que fuera especialmente eficaz en casos como tablas (Set de Set) y cosas por el estilo.
  • Protocolos de codificación de objetos externos
    • TXT: Texto ascii neutro.
    • BFL: formato binario para ficheros
    • ZIP: ficheros comprimidos con ZIP

La clase tendría los siguientes miembros

Class @Blob
{
  Text _.type;     //Type of information 
  Text _.protocol; //Codification protocol
  Real _.pointer;  //Internal address
  Real _.bytes;    //Total size 
}

Habría que ir declarando constructores para los distintos protocolos de codificación y tipos de información.

Otros tickets relacionados con el manejo eficiente de información en TOL son el #1070, #1072

Change History

Changed 6 years ago by vdebuen

  • description modified (diff)

Changed 6 years ago by vdebuen

  • description modified (diff)

Changed 6 years ago by vdebuen

  • description modified (diff)
Note: See TracTickets for help on using tickets.