Images externe

Product :4D - 4D Server
OS : Mac OS X

Bonjour
je possède une base en v16 (32bit) qui va passer en catalina v18 (64bit)
elle pèse 120go, avec 76000 enregistrements

mon problème :
la structure possède un champs image stockées directement dans la base
pour le moment, les images sont environ à 40% en tiff, 50% en jpeg et 10% en pict
j’ai trouvé une méthode pour tout convertir en jpeg
mais je découvre que le champ image de la structure peut être stocker en dehors de la base
d’où les multiples questions
-où sont stockées les images, comment 4d gére le dossier ?
-l’acces est il aussi rapide que si les images sont stockées dans la base ?
-quand une image est copier coller directement dans le champs, 4d fait il une copie de l’image dans le dossier externe ?

et surtout :
comment exporter toutes les images dans le dossier externe gérer par 4d et qu’elles se retrouvent bien dans les enregistrements ?

je vous remercie de votre aide
bonne soirée
Jules

Bonjour,
• description du stockage externe
elle https://doc.4d.com/4Dv18/4D/18/Stockage-externe-des-donnees.300-4575564.fr.htmlse trouve ici>.
• performance
en supposant (?) que lire dans le 4DD soit une peu plus rapide que lire un fichier externe, un fichier image, c’est gros de toutes façons, je doute que ça fasse une différence notable
• copier coller
c’est transparent, dans l’application tu vois un champ comme avant, c’est simplement le moteur qui se débrouille pour le stocker à coté du data
• exporter
de mémoire, il faut compacter le fichier de données avec le CSM pour que 4d créé les fichiers et dossiers externes

merci de ton aide

pour l’export,
veux tu dire que si je change le champ pour un stockage externe et que je compacte
4d va automatiquement créer le dossier externe et mettre toutes les photos dedans ?

J’utilise un autre méthode que celle décrite par Arnaud.
J’ai 150000 photos numériques avec une version JPEG et une RAW ; le poids peut atteindre jusqu’à 45 Mo pour une RAW, plus de 2 To au total.
Autant dire que c’est un premier argument pour ne pas les stocker dans le data !
Le 2e argument, dans mon cas, est que les photos ont une existence avant 4D et sans 4D.
Je peux ainsi copier un répertoire entier.

Je les classe donc dans des répertoires où on peut les trouver sans 4D et je les indexe avec 4D pour faciliter les recherches et traitements.
L’identifiant est donné par l’appareil photo sous la forme DSC01234 mais comme les appareils numériques ne savent pas compter au delà de 9999, je corrige le compteur ; et comme il ont tous le même préfixe, je le change dans le paramétrage de l’appareil.

Si tes images sont générées dans le cadre du fonctionnement de 4D, il est possible de générer un classement et des noms d’image et de dossier humainement compréhensibles*, en relation avec ton business.

Pour le classement, j’ai un classement par date/sujet qui facilite aussi les sauvegardes : seule la dernière année est modifiée.
L’accès est très simple et aussi rapide que si c’était dans un champ et les nouvelles commendes File et Folder sont très efficaces.

  • je serais un peu inquiet à l’idée de faire un contrôle de bon fonctionnement sur 76000 images avec ce classement…
    Accounting.4DD
    [Accounting.ExternalData]
    Table3
    Field5
    Data_1B7F3A 56F6544B45951EFA60426D5ABC.txt
    Data_1B7F3A 56F6544B45951EFA60426D5CCC.txt

    2
    Data_2ADBFBA478AAE4409DA9C2D13C90A53B.txt
    Data_32F8A30B87EE7E4BBC802468D553DC43.txt

je te remercie de ta réponse,
j’ai trouvé le dossier où sont les photos en natif

il reste des questions :

si dans ce dossier j’ai une 111.pct et que je la change pour 111.jpg
4d va t il retrouver la photo ?
la base utilise que le nom (111) ou aussi l’extension ?

Bonjour,

: Jules MAEGHT

comment exporter toutes les images dans le dossier externe gérer par
4d et qu’elles se retrouvent bien dans les enregistrements ?
C’est transparent pour toi, mais tu ne dois pas modifier toi même le contenu du dossier… C’est 4D qui gère.

120go, avec 76000 enregistrements… Donc c’est une base qui contient beaucoup d’images… Tu as une idée de la taille moyenne de tes enregistrements ?

As-tu pensé à stocker tes images sur le cloud par exemple ? tu peux toujours avoir des enregistrements mais au lieu de contenir des images ils contiennent des lien vers une resources S3 par exemple…

L’intérêt de ca c’est que ça réduit drastiquement la taille de ta base, cela simplifie la gestion des sauvegardes, etc…Tu peux conserver une prévus en base def dans ta base et t’appuyer sur le cloud pour gérer les images en résolution plus importante.

4D stocke “en vrac” tous les images dans un seul dossier (par champ) et ça fait des dossier avec des nombre de documents très grand et les OS ont parfois du mal à gérer (c’est pas prévu pour).

PS : n’oublie pas de convertir les images au format pict qui est obsolete/déprécié.

si je comprends bin, le probleme vient du passage 32 - 64 bit
l’idée est de passer ma base de V12 en V16 (app en 32bit)
puis de faire la conversion et apres de la passe en V18

je ne sais pas exactement où faire ma conversion
ecrire une methode de base et l’executer ?

avec :

<code 4D>
TOUT SELECTIONNER([tablexx])
tant que(Non(Fin de selection([Tablexx])))
convertir image([tablexx]champsimage;".jpg")
stocker enregistrement([tablexx])
enregistrement suivant([tablexx])
fin tant que

</code 4D>

: Bruno LEGAY

4D stocke “en vrac” tous les images dans un seul dossier (par champ)
et ça fait des dossier avec des nombre de documents très grand et les
OS ont parfois du mal à gérer (c’est pas prévu pour).

Non, heureusement !

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. 

Ce n’en est pas moins un stockage “opaque”.

Tu as raison (heureusement).

On a eu une expérience plutôt négative avec le stockage externe, mais c’était dans un cas différent.

C’était pour un stockage de fichier de mail et tout était stocké en externe. On avait 1 million d’éléments dans ce dossier “ExternalData”…
Le backup 4D prenait des plombes, la copie/duplication sur windows posait aussi problème. L’antivirus ne voulait pas copier certains fichier car il identifiait des “virus” des faux positifs, mais ça nous a pas mal compliqué la vie.

Il faut croire que c’est la copie de dossiers avec un million de fichiers qui m’a traumatisé…

On a décidé de tout ré-intégrer dans le fichier 4D (avec le changement de propriété sur le champ et un simple appliquer formule)…

pour les pict de la biblio :

<code 4D>
C_LONGINT($i;$SOA;$RIS;$PictRef)
C_TEXT($PictName)
C_PICTURE($Pict)
//------------ initialisation tableaux ------------------
ARRAY LONGINT($aL_PictRef;0)
ARRAY TEXT($aT_PictName;0)
ARRAY TEXT($at_Codecs;0)
PICTURE LIBRARY LIST($aL_PictRef;$aT_PictName)
$SOA:=Size of array($aL_PictRef)
//------------ conversion des images pict en png ------------------
If($SOA>0)
For($i;1;$SOA) // pour chaque image
$PictRef:=$aL_PictRef{$i}
$PictName:=$aT_PictName{$i}
GET PICTURE FROM LIBRARY($aL_PictRef{$i};$Pict)
GET PICTURE FORMATS($Pict;$at_Codecs)
For($j;1;Size of array($at_Codecs))
If($at_Codecs{$j}=".pict") // si le format est obsolète
CONVERT PICTURE($Pict;".png") // conversion en png
// et stockage dans la bibliothèque
SET PICTURE TO LIBRARY($Pict;$PictRef;$PictName)
End if
End for
End for
Else
ALERT(“La bibliothèque d’images est vide.”)
End if
//------------ fin de la méthode ------------------
</code 4D>

je suis passé en V18 64bit
les images des boutons qui étaient dans la biblio sont converties en png avec la méthode du dessus
pour les images de la base :
la méthode de convertir image n’est pas pratique
j’ai écrit une méthode de base que j’ai executée
mais 4D ne dit pas quand il termine
donc je ne vois pas le process en cours
je le vois par le moniteur d’activité du mac qui me dit : proc à 90% sur 4D donc j’en déduit que 4D continue à convertir les images

comment afficher dans 4D le process en cours et sa consommation ?
merci de votre aide

Salut Bruno,
j’ai aussi laissé tomber après quelques tests. L’emmerdant est qu’en dehors d’alléger le 4DD, le reste des comportements est conçu pour être identique au stockage interne, donc avec les mêmes inconvénients. Ce qui m’a le plus déçu est le chargement d’enregistrement : ça n’a pour moi aucun intérêt si je ne ne dispose pas d’un réglage pour dire à 4D “charge-moi l’enregistrement SANS ce @#&$ gros champ que j’ai mis dehors pour des raisons de performances”.

Donc tu fais quoi …
Comme moi ton propre classement ?
Un autre avantage de le faire soi-même est de pouvoir charger une imagette, ce qui est rapide.
Je mets un suffixe “_s” à mes imagettes avant d’automatiser les traitements.

: Bernard ESCAICH

Donc tu fais quoi …
Comme moi ton propre classement ?
Oui. Pour autant, ça demande du boulot de gérer des documents, qui plus est en client/serveur. Dans le cas de Jules qui utilisait jusqu’ici le stockage interne, la solution “clé en main” de 4D lui demandera beaucoup moins de temps - à moins que ce fil ne soit dans le coin des débutants par excès de modestie :wink:

merci à tous de votre aide
je suis passé de v12 à v18 (le gros bond…)
voici ma solution :

-passé de v12 en v13
-puis en v13, conversion des images de la biblio en png
-conversion des images de la base en jpg (je n’ai pas trouvé la solution pour afficher le process en cours pour savoir quand 4d avait terminé sa conversion, donc j’ai utilisé le moniteur d’activités du mac)
-v13 en v14 et création clés primaires
-v14 en v15
-v15 en v16
-v16 en v18
à chaque étape j’ai fait une copie de la base pour revenir d’un cran en arrière
la base est de 150Go donc j’ai fait les copies sur SSD et non DD (9 minutes de copie contre 1h environ)
ne pas oublier le passage en unicode pour le 64bit
base en v12 : 115go+43mo
base en v18 : 143go+42mo je ne comprends pas cet embonpoint alors que les images sont en jpg

suite à la découverte de la v18 il me reste des questions:
en v12 et 13, pour les recherches :
-apres une recherche par formulaire, (en v12) si on demande un recherche normale on retrouve la recherche demandée dans le formulaire. (en v18) la recherche est vide
-dans les listes : la molette de la souris faisait défilé une page, alors qu’en v18 c’est x lignes
(impossible de trouver le réglage)
-comme j’ai des images dans la base, si je change le champs image pour ‘stockage’ externe et que je demande un compactage, 4D va t il sortir les images de la base ?
-comme les images dans la base sont souvent des copier/coller, comment est donné par 4d le nom de l’image ? comment 4d va gérer si deux images ont le même nom ?

merci mille fois