Ничего фантастически плохого в хранении двоичных данных в БД нету.
Не так мало приложений, в которых по структурированному ключу необходимо
получить доступ к потоку неинтерпретируемых данных. Причём реляционный
движок обеспечивает высокую гибкость поиска.Естественно, можно на каждую такую запись генерировать идентификатор и
хранить данные, скажем, в файлике. Совсем не факт, что такое решение
будет чем-то лучше применения BLOB-полей.
Конкретно с PostgreSQL могут (теоретически) быть проблемы с
производительностью при большом числе записей с BLOB-полями. Последний
раз, когда я данным вопросом интересовался, у pgsql был весьма тупой
модуль, отвечающий за хранение данных, который очень не любил поля
плавающей длины. По слухам, сейчас проблема потихоньку устраняется.