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 | Sí | No |
Compartible en objetos y colecciones | No | Sí |
Pasado por referencia* | No | Sí |
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!