A compter de 4D v13, vous pouvez choisir le lieu de stockage des données de chaque champ de type BLOB, Image et Texte. 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 :
Utiliser la commande FIXER CHEMIN DONNEES EXTERNES avec une chaîne vide 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, certains mécanismes de base de données ne sont plus disponibles. Le mode personnalisé est activé à l’aide de la nouvelle commande FIXER CHEMIN DONNEES EXTERNES 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 automatique
Mode personnalisé
Définition du dossier de stockage
Nom et emplacement définis par 4D ; un seul dossier par défaut pour toute la base
Nom et emplacement libres, peut être différent pour chaque champ
Création, chargement et enregistrement des fichiers externes
Automatique
Automatique
Suppression du fichier externe si suppression de l’enregistrement
Oui
Non
Suppression du fichier externe si valeur Null affectée au champ
Oui
Non
Intégration automatique à la sauvegarde de la base
Oui
Oui (chemin externe)
Prise en charge automatique lors de l’intégration de l’historique
Oui
Oui (chemin externe)
Prise en charge des index standard (champs texte)
Non
Non
Prise en charge index de mots-clé (champs texte et image)
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 (champ BLOB) 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 FIXER CHEMIN DONNEES EXTERNES. Ce paramétrage n’est pas stocké dans la structure de la base.
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 FIXER CHEMIN DONNEES EXTERNES), soit utiliser la commande RECHARGER DONNEES EXTERNES 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.
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 le fichier sera recréé (s’il n’est pas Null) au moment de la sauvegarde de l’enregistrement.
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
Nom intl. : External data storage