4D v14

Blobs

Accueil

 
4D v14
Blobs

Blobs    


 

 

En complément des manipulations expliquées dans la vidéo, il faut noter que :

Au début, on se pose toujours les questions suivantes :

  • À quoi peut me servir un Blob et dans quelles circonstances ?
  • Mettre des "informations" dedans c'est facile, mais comment et surtout dans quel ordre les ressortir ?

Répondons d’abord à la deuxième question :

Bien qu’on puisse accéder à n’importe quel octet du Blob, dans la plupart des traitements vous ferez du FIFO (First In First Out) c’est-à-dire que vous récupérerez le contenu du Blob dans l’ordre dans lequel vous l’avez rangé.
Pour faire un parallèle simple, prenez une étagère dans laquelle vous rangez des livres de gauche à droite. Vous commencez par ranger un petit livre à gauche puis un gros livre collé au premier puis encore un gros livre puis une photo puis un bibelot rapporté de vacances, etc. Lorsqu’il faut faire les poussières sur cette étagère, vous ne vous posez pas la question de savoir à combien de centimètres du bord gauche est rangé tel ou tel livre. Vous les prenez dans l’ordre et vous décalez votre regard et vos mains au fur et à mesure, en fonction de la taille du dernier objet enlevé.

Dans un Blob, c’est pareil.

Notamment parce que vous savez ce que vous rangez dans le Blob.

Si vous rangez :

  • un entier c’est 2 octets
  • un entier long, ce sera 4
  • une date 6 octets
  • ...
  • Pour un texte, vous indiquerez la manière dont vous voulez qu’il soit rangé et comment est indiquée la longueur du texte (chaîne C, chaîne Pascal, etc.).

À la relecture, vous reprendrez les informations dans le même ordre et les rangerez dans des variables adaptées au contenu attendu (typées correctement).

Donc la lecture du Blob se fera de manière cohérente.
Voici maintenant la réponse à la première question (à quoi peut servir un Blob ?). Vous pouvez les utiliser par exemple dans les cas suivants :

  • stockage de variables, liste hiérarchiques, tableaux
  • échange de documents entre le client et le serveur
  • protection de certaines données confidentielles dans un blob crypté
  • enregistrement des variables contenant des plugins
  • envoi d’images, textes ou documents vers un navigateur web
  • communication avec un web service

La commande VARIABLE VERS BLOB stocke les données dans un format interne 4D, c’est la raison pour laquelle l’espace requis est légèrement supérieur au volume brut de données. L’avantage de cette commande est qu’elle vous évite de gérer le Byte Swapping (position de l’octet de poids fort) en cas de travail multi plate-forme.

Lorsque vous remplissez un Blob, vous pouvez utiliser le caractère * à la place de la variable $PositionDansBlob que nous avons utilisée.

4D comprend avec ce paramètre qu’il doit stocker la variable à la fin du Blob et l’agrandir en conséquence.

Imaginons maintenant que dans votre base de données, vous ayez un certain nombre de paramètres dont il faut tenir compte pour chaque utilisateur (ou chaque site d’installation de votre application) :

  • l’écran de démarrage
  • la couleur des fonds d’écran
  • la police et la taille des caractères
  • ...
    Il s’agit en fait des préférences utilisateurs.

Pour les conserver, il existe plusieurs solutions (créer une table, un fichier texte, un fichier XML, etc.).

Dans notre cas, nous pouvons conserver ces préférences dans un Blob, lui-même stocké dans un fichier sur le disque.

Les commandes d’écriture et de lecture des BLOBs sont BLOB VERS DOCUMENT et DOCUMENT VERS BLOB.

Pour gagner de la place et/ou des temps de transfert, pensez également à compresser vos Blobs.

Attention, 4D ne compresse les BLOBs que si leur taille est supérieure à 255 octets.

Lors de la décompression de vos BLOBs, pensez à tester si le BLOB est compressé, sinon la tentative de décompression générera une erreur.

 
 

 
PROPRIÉTÉS 

Produit : 4D
Thème : Blobs
Nom intl. : BLOBs

 
UTILISATION DE L'ARTICLE

Autoformation ( 4D v13)
Autoformation ( 4D v14)