Crear un atributo BLOB en un objeto

Traducido automáticamente de Deepl

Con la introducción de las clases en el entorno 4D, la necesidad de almacenar sus datos en objetos, y especialmente en blobs, ha aumentado. Por ello, 4D v19 R2 permite encapsular los blobs en objetos.

Más allá del aspecto del almacenamiento, dado que el objeto blob es un tipo de referencia, su rendimiento en términos de ocupación de memoria y velocidad mejorará considerablemente.

Ahora se puede asignar un blob como atributo de un objeto, como se hace con los números, el texto u otros tipos:

$o:=New object("blob"; $blob)

o mediante una conversión implícita:

$o:=New object
$o .blob:=$blob

o con un objeto compartido:

$sObj:=New shared object("blob"; $blob )

En muchos casos, es mejor utilizar un objeto blob (tipo 4D.Blob) en lugar de un tipo Blob. Por ejemplo, cuando pasas un objeto blob en un método o un parámetro de un comando, no se duplica como un tipo Blob sino que se pasa por referencia, como cualquier otro objeto 4D. Esto es más rápido y consume menos memoria:

var $blobObj : Object

// Download your MIME in a blob object
$blobObj :=IMAP_transporter.getMIMEAsBlob ( $msgID )

// The BLOB object is then passed to the AddToArchives method by reference.
AddToArchives ($blobObj)
// Unlike when you pass a Blob type, the blob is not duplicated when handled using a blob object.

Pero el tipo Blob estándar no está obsoleto. Cada tipo de blob tiene sus ventajas. Utilice la siguiente tabla para determinar cuál se ajusta a sus necesidades:

Blob 4D.Blob
Alterable No
Compartible en objetos y colecciones No
Pasado por referencia* No
Rendimiento al acceder a los bytes +
Tamaño máximo 2 GB*. Memoria

*Este límite de tamaño puede ser menor dependiendo de su sistema operativo y del espacio disponible.

Consulta la documentación para saber más sobre este nuevo tipo de atributo.

Ahora que los blobs se gestionan en objetos, sólo queda un paso más para que se gestionen en ORDA. ¡Esté atento!

Fabrice Mainguené
- Product Owner -Fabrice Mainguené se unió al equipo de 4D Program en noviembre de 2016. Como Product Owner, está a cargo de escribir las historias de usuario y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la característica entregada cumple con las necesidades del cliente. Después de obtener una licenciatura en Ciencias de la Computación en el CNAM, Fabrice se unió a una pequeña empresa de publicación de software como desarrollador Windev. A continuación, trabajó para diferentes empresas del sector industrial y comercial como desarrollador de Windev y de la web, así como asesor técnico de nuevas funcionalidades.