Ответ Re jcoby:
bytea, являющийся "нормальным" столбцом, также означает, что значение полностью считывается в память, когда вы его извлекаете. Blobs, напротив, можно передавать в стандартный вывод. Это помогает уменьшить объем памяти, занимаемой сервером. Особенно при хранении изображений размером 4-6 Мпикс.
Нет проблем с резервным копированием больших двоичных объектов. pg_dump предоставляет опцию "-b" для включения больших объектов в резервную копию.
Итак, я предпочитаю использовать pg_lo_ *, как вы можете догадаться.
Ответ Криса Эриксона:
Скажу наоборот :). Если изображения - не единственные данные, которые вы храните, не храните их в файловой системе, если в этом нет крайней необходимости. Это такое преимущество - всегда быть уверенным в согласованности данных и иметь данные «в одном куске» (БД). Кстати, PostgreSQL отлично подходит для сохранения согласованности.
Однако, правда, реальность часто слишком требовательна к производительности ;-) и заставляет вас обслуживать двоичные файлы из файловой системы. Но даже в этом случае я склонен использовать БД в качестве «главного» хранилища для двоичных файлов, со всеми другими связями, последовательно связанными, обеспечивая при этом некоторый механизм кэширования на основе файловой системы для оптимизации производительности.