Re la réponse de jcoby :
Le fait que bytea soit une colonne "normale" signifie également que la valeur est entièrement lue en mémoire lorsque vous la récupérez. Les blobs, en revanche, peuvent être diffusés dans le stdout. Cela permet de réduire l'empreinte mémoire du serveur. En particulier, lorsque vous stockez des images de 4-6 MPix.
Pas de problème avec la sauvegarde des blobs. pg_dump fournit l'option "-b" pour inclure les gros objets dans la sauvegarde.
Je préfère donc utiliser pg_lo_*, vous l'aurez deviné.
Re la réponse de Kris Erickson :
Je dirais le contraire :). Lorsque les images ne sont pas les seules données que vous stockez, ne les stockez pas sur le système de fichiers, sauf si c'est absolument nécessaire. C'est un tel avantage d'être toujours sûr de la cohérence de vos données, et d'avoir les données "en un seul morceau" (la BD). BTW, PostgreSQL est excellent pour préserver la cohérence.
Cependant, la réalité est souvent trop exigeante en termes de performances ;-), et elle vous pousse à servir les fichiers binaires à partir du système de fichiers. Mais même dans ce cas, j'ai tendance à utiliser la base de données comme stockage "maître" pour les binaires, avec toutes les autres relations liées de manière cohérente, tout en fournissant un mécanisme de mise en cache basé sur le système de fichiers pour optimiser les performances.