4D v16.3

Stockage externe des données

Accueil

 
4D v16.3
Stockage externe des données

Stockage externe des données  


 

 

Vous pouvez choisir le lieu de stockage des données de chaque champ de type BLOB, Image, Texte et Objet. En plus des options de stockage internes (dans l’enregistrement ou dans le fichier de données), vous pouvez choisir de stocker ces champs en-dehors du fichier de données. Dans ce cas, vos données sont enregistrées sous forme de fichiers externes qui sont gérés par 4D peuvent être manipulés par des applications tierces - à condition de procéder avec précaution afin de préserver l’intégrité des données. 

Ce principe est transparent pour l’utilisateur : l’accès aux données est identique quel que soit leur emplacement. 

Le stockage externe des données permet d’optimiser le fonctionnement de l’application en permettant par exemple de déporter les données les plus volumineuses ou d’accéder depuis le système d’exploitation aux textes ou aux images contenu(e)s dans la base, même lorsqu’elle n’est pas ouverte.

La prise en charge du stockage externe des données peut être effectuée dans deux modes :

  • Mode automatique : dans ce mode, 4D crée et gère un dossier par défaut, structuré de façon spécifique et contenant toutes les données à stockage externe. Dans ce cas, la gestion de ces données s’effectue de manière transparente, vous bénéficiez des mêmes fonctions et automatismes que pour les champs stockés en interne.
    Pour activer le mode automatique, vous pouvez soit :
    • Configurer le stockage externe dans l’éditeur de structure (paramétrage enregistré avec la structure de la base). Cette option est décrite dans le paragraphe .
    • Utiliser la commande SET EXTERNAL DATA PATH avec une constante dans le paramètre chemin (le paramétrage est alors valide pour la session). 
  • Mode personnalisé : dans ce mode, vous désignez librement le lieu de stockage des fichiers externes pour chaque champ et chaque enregistrement. Dans ce cas, 4D conserve uniquement le lien entre le champ et ses données et y accède en lecture, certains mécanismes de base de données ne sont plus disponibles.
    Le mode personnalisé est activé à l’aide de la commande SET EXTERNAL DATA PATH en désignant un chemin d’accès complet (autre que le dossier par défaut) dans le paramètre chemin.

Le tableau suivant compare les fonctions et automatismes disponibles dans les modes automatique et personnalisé :

Mode automatiqueMode personnalisé
Définition du dossier de stockageNom et emplacement définis par 4D ; un seul dossier par défaut pour toute la baseNom et emplacement libres, peut être différent pour chaque champ
Chargement des fichiers externesAutomatiqueAutomatique
Création et mise à jour des fichiers externesAutomatiqueManuel
Suppression du fichier externe si suppression de l’enregistrementOuiNon
Suppression du fichier externe si valeur Null affectée au champOuiNon
Intégration automatique à la sauvegarde de la baseOuiOui (chemin externe)
Prise en charge automatique lors de l’intégration de l’historiqueOuiOui (chemin externe)
Prise en charge des index standard (champs texte)NonNon
Prise en charge index de mots-clé (champs texte et image)OuiNon
Prise en charge des transactionsOuiNon

Les données stockées à l’extérieur du fichier de données sont organisées selon les principes suivants :

  • Pour chaque enregistrement, les données sont stockées dans un fichier externe nommé xxx.txt (champ Texte), xxx.blob (champs BLOB et Objet) ou xxx.jpg, xxx.tiff... (champ Image, l’extension dépend du type de l’image) où xxx est un identifiant unique (UUID) géré par 4D. 
  • En mode automatique, toutes les données externes sont placées dans un dossier nommé <NomDeLaBase>.ExternalData où <NomDeLaBase> est remplacé par le nom du fichier de structure de la base. Ce dossier est placé à côté du fichier de données de la base (fichier .4DD).
    A l’intérieur de ce dossier, 4D crée un dossier pour chaque table disposant de données externes (nommé "Table+numéro de la table"), puis un sous-dossier pour chaque champ externe (nommé "Field+numéro du champ)". Les 100 premiers éléments du champ sont stockés au premier niveau de ce dossier, les suivants sont stockés dans des sous-dossiers numérotés à partir de "2", chaque sous-dossier contenant 100 éléments. Par exemple, si le champ n°5 de la table n°3 de la base "Accounting" est stocké en-dehors des données, l’arborescence suivante sera créée par 4D :
    Accounting.4DD
    [Accounting.ExternalData]
        Table3
            Field 5
                Data_1B7F3A 56F6544B45951EFA60426D5ABC.txt
                Data_1B7F3A 56F6544B45951EFA60426D5CCC.txt
                ...
                2
                    Data_2ADBFBA478AAE4409DA9C2D13C90A53B.txt
                    Data_32F8A30B87EE7E4BBC802468D553DC43.txt
                    ...
  • En mode personnalisé, le nom et l’emplacement du dossier sont libres, ils peuvent être définis séparément pour chaque champ à stockage externe via la commande SET EXTERNAL DATA PATH. Ce paramétrage n’est pas stocké dans la structure de la base.

En mode automatique, l’écriture du champ dans un fichier externe est effectuée au moment où l’enregistrement est stocké sur disque (après validation de la transaction le cas échéant) :

  • si le fichier externe n’existe pas, il est créé ;
  • si un fichier externe existe déjà, il est écrasé par 4D.
    Si vous souhaitez le conserver, vous pouvez soit définir un autre chemin (à l’aide de la commande SET EXTERNAL DATA PATH), soit utiliser la commande RELOAD EXTERNAL DATA afin de charger en mémoire le contenu du champ depuis son fichier externe avant de le réécrire sur disque. Cette possibilité est utile lorsque le fichier a été modifié par une autre application après le chargement de l’enregistrement.

En mode personnalisé (chemin défini par la commande SET EXTERNAL DATA PATH), 4D stocke uniquement le chemin d'accès du fichier au moment où l’enregistrement est stocké sur disque. Le fichier doit être géré (création et modification) par le développeur. 

Le lieu de stockage des données est un paramètre local à chaque base. Dans le cadre d’une synchronisation ou d’une réplication (cf. Réplication via le SQL), ces paramètres peuvent différer entre la base locale et la base distante. Dans ce cas, le stockage est réalisé conformément aux paramètres de chaque base, la synchronisation ou la réplication ne les modifient pas.

Par exemple, si un champ image de la base distante est stocké en-dehors du fichier de données et que le même champ de la base locale est stocké dans le fichier de données, il sera bien stocké dans le fichier de données après une opération de synchronisation.

Les fichiers de stockage externes sont accessibles en lecture écriture pour d’autres applications que 4D (système d’exploitation, éditeur de texte ou graphique, etc.). Toutefois, ces accès doivent être effectués avec précaution car ils peuvent altérer le fonctionnement de l’application :

  • si un fichier de stockage externe est supprimé, renommé ou déplacé par le système d’exploitation ou application tierce, 4D considérera que le champ correspondant a la valeur Null et en mode automatique le fichier sera recréé (s’il n’est pas Null) au moment de la sauvegarde de l’enregistrement. En mode personnalisé, une erreur sera générée au moment de l'exécution de la commande SET EXTERNAL DATA PATH.
  • si vous utilisez des index et si des fichiers de stockage sont modifiés par une application tierce sans que les enregistrements parents ne soient réécrits sur disque, les index ne seront pas mis à jour.

Note : Les fichiers Texte externes sont stockés au format UTF-8 sans BOM. S’ils sont ouverts par une application tierce puis enregistrés avec une BOM, ils pourront être rouverts par 4D mais seront réenregistrés sans BOM.

A noter que le chargement en "lecture seulement" d’un enregistrement ne verrouille pas les fichiers externes des champs de l’enregistrement. Les fichiers restent modifiables sur disque par 4D ou des applications tierces, alors que leur contenu est chargé en mémoire par 4D.

 
PROPRIÉTÉS 

Produit : 4D
Thème : Définir la structure de la base de données

 
HISTORIQUE 

Créé : 4D v13

 
UTILISATION DE L'ARTICLE

4D - Mode Développement ( 4D v16)
4D - Mode Développement ( 4D v16.1)
4D - Mode Développement ( 4D v16.3)