Quel est le meilleur endroit pour stocker des fichiers binaires liés aux données de votre base de données? Devrais-tu:
- Stocker dans la base de données avec un blob
- Stocker sur le système de fichiers avec un lien dans la base de données
- Stocker dans le système de fichiers mais renommer un hachage du contenu et stocker le hachage sur la base de données
- Quelque chose que je n'ai pas pensé
Les avantages de (1) sont (entre autres) que l’atomicité des transactions est préservée. Le coût est que vous pourriez augmenter considérablement les besoins en stockage (et la diffusion / sauvegarde associée)
Le but de (3) est de préserver l'atomicité dans une certaine mesure - si vous pouvez imposer que le système de fichiers que vous écrivez ne permet pas la modification ou la suppression de fichiers, et a toujours le hachage correct comme nom de fichier. L’idée serait d’écrire le fichier sur le système de fichiers avant de permettre l’insertion / la mise à jour référençant le hachage - si cette transaction échoue après l’écriture du système de fichiers mais avant la base de données DML, c’est bien parce que le système de fichiers est en train de «simuler» le référentiel de tous. fichiers et hachages possibles - peu importe si certains fichiers ne sont pas référencés (vous pouvez les nettoyer périodiquement si vous êtes prudent)
MODIFIER:
Il semble que certains SGBDT traitent cela de manière individuelle - je serais intéressé de savoir comment les autres le font - et en particulier une solution pour postgres