Что касается PostgreSQL , то тип text
исключен.Он медленнее, использует больше места и более подвержен ошибкам, чем bytea
для этой цели.
Существует в основном 3 подхода:
тип использования bytea (в основном pg-эквивалент типа BLOB-объекта SQL)
использование " больших объектов "
сохраняет большие двоичные объекты как файлы в файловой системе и сохраняет только имя файла в базе данных.
У каждого есть свои преимущества и недостатки.
довольно прост в обращении, но требует наибольшего дискового пространства.Требуется некоторое декодирование и кодирование, что делает его также медленным.Размеры резервных копий быстро растут!
немного неудобно в обращении, но у вас есть собственная инфраструктура для работы с BLOB-объектами - если вам это нужно.Кроме того, вы можете легко создавать отдельные резервные копии.
- самый быстрый способ и занимает меньше места на диске.Но он не обеспечивает ссылочную целостность, которую вы получаете при хранении внутри базы данных.
У меня есть несколько реализаций, подобных этой для файлов изображений: сохраните небольшую миниатюру в байтовом поле для ссылочной целостности и быстрой ссылки.Сохраните исходное изображение как файл в файловой системе.Конечно, вам нужно подумать, когда и как удалять устаревшие файлы, как создавать резервные копии внешних файлов и тому подобное.