Bonjour,
Éternel débat : stockage des fichiers dans la base ou le système
de fichier ?
http://wiki.postgresql.org/wiki/BinaryFilesInDB
Si vous préférez stocker les fichiers dans la base, je n'y vois
pas d'inconvénient. J'ai personnellement toujours enregistré les
fichiers à part dans le système de fichier mais dans le contexte
de Cantharella, le stockage dans la base suivrait une certaine
logique.
L'autre question qui se pose alors est : en bytea ou en BLOB (oid)
?
Dans notre cas de fichier peu volumineux (cf. limitation de taille
définie dans les spécs.), les deux alternatives peuvent convenir.
La principale différence étant que pour bytea, les données restent
dans une colonne de la table tandis que pour les BLOB, les données
sont externalisées dans une table système et référencées par un
oid.
D'un côté, Bytea semblent être plus facile à mettre en place mais
pourrait engendrer certains problèmes de performance lors de
requête sur l'ensemble des documents (preload), de l'autre BLOB
semble garder toujours de bonnes performances (on demand) même
avec des données plus volumineuses mais nécessite de mettre en
place un système de suppression automatique des BLOB lorsque la
référence (oid) est supprimé (trigger, rule).
Adrien
Le 14/02/2013 03:23, Eric Chatellier a écrit :
Bonjour,
Je viens de mettre à jour le serveur avec le début des
interfaces de gestion et visualisation des documents (seulement
pour les molécules avant de le généraliser).
Concernant le stockage des fichiers attachés, peut-on
les stocker directement dans la base de données ?
Cela simplifierais la gestion et la cohérence pour l'ajout
et la suppression.
Techniquement, le modèle de données serait typé en byte[]
voire en InputStream (voire si vraiment ca ne fonctionne pas
en java.sql.Blob) et annoté en @Lob