PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Stocker des images dans PostgreSQL

Mise à jour jusqu'en 2012, lorsque nous constatons que la taille des images et le nombre d'images ne cessent de croître, dans toutes les applications...

Nous avons besoin d'une distinction entre "l'image originale" et "l'image traitée", comme la vignette.

Comme le dit la réponse de Jcoby, il y a deux options, alors, je recommande :

  • utiliser blob (Binary Large OBject) :pour stocker des images originales, à votre table. Voir la réponse d'Ivan (pas de problème avec la sauvegarde des blobs !), les modules supplémentaires fournis par PostgreSQL, les tutoriels, etc.

  • utilisez une base de données séparée avec DBlink :pour le stockage d'images d'origine, dans une autre base de données (unifiée/spécialisée). Dans ce cas, je préfère bytea , mais blob est proche du même. Séparer la base de données est le meilleur moyen pour un "service Web d'images unifiées".

  • utiliser bytea (BYTE Array) :pour la mise en cache des images miniatures. Mettez en cache les petites images pour les envoyer rapidement au navigateur Web (pour éviter les problèmes de rendu) et réduire le traitement du serveur. Cache également les métadonnées essentielles, comme la largeur et la hauteur. La mise en cache de la base de données est le moyen le plus simple, mais vérifiez vos besoins et les configurations du serveur (par exemple, les modules Apache) :stocker les vignettes au niveau du système de fichiers peut être préférable, comparez les performances. N'oubliez pas qu'il s'agit d'un service Web (unifié), qui peut donc être stocké dans une base de données distincte (sans sauvegardes), desservant de nombreuses tables. Voir aussi le manuel des types de données binaires PostgreSQL, les tests avec la colonne bytea, etc.

NOTE1 :aujourd'hui, l'utilisation de "solutions duales" (base de données + système de fichiers) est obsolète (!). Il y a de nombreux avantages à utiliser "uniquement la base de données" au lieu du double. PostgreSQL a des performances comparables et de bons outils d'exportation/importation/entrée/sortie.

NOTE2 :rappelez-vous que PostgreSQL n'a que bytea , ne pas avoir de BLOB d'Oracle par défaut :"Le standard SQL définit (...) BLOB. Le format d'entrée est différent de bytea, mais les fonctions et opérateurs fournis sont pour la plupart les mêmes", Manuel.

MODIFIER 2014  :Je n'ai pas modifié le texte original ci-dessus aujourd'hui (ma réponse était le 22 avril 2012, maintenant avec 14 votes), j'ouvre la réponse pour vos modifications (voir "mode Wiki", vous pouvez éditer !), pour la relecture et pour les mises à jour .
La question est stable (@Ivans's '08 answer with 19 votes), s'il vous plaît, aidez à améliorer ce texte.