Какие могут быть проблемы при хранении файлов в базе данных в двоичном виде?
Может быть какие-то ограничения? Какие на сегодняшний день распространены практики по хранению файлов на сервере, кроме как в файловой системе?
Рональд Макдональд, вы психопат. Файлы в бд можно отдать только скриптом, а это бесполезная трата процессорных ресурсов и дополнительная нагрузка на дампы базы
Иван Шумов, У меня нет проблем с доступом в интернет.
А вот в том месте где должны использоваться данные не всегда есть доступ в интернет.
И резервный канал не поможет.
Если вы не в курсе есть места куда провести интернет дорого или невозможно технически, а так же есть оборудование которое запрещено подключать к общественным сетям вроде интернета.
АртемЪ, да, признаю что об этом не подумал - в таких проектах предпочитаю не участвовать. Но и в этом случае уж лучше хранить файлы статикой на диске, чем в базе
Сергей Горностаев, решается это все очень легко, начиная от состояний записей и контроля порядка выполнения и заканчивая аудитом, которым занимаются постоянно в автоматическом режиме сервисы, которые предоставляют хранилища. Это не проблема, а задача
Доступ к папке только у сервера, запретить доступ пользователям.
Невозможно исключать системные сбои, ошибки админов и множество других факторов.
Ссылка в базе создается только в случае успешной записи файла.
Тогда возможна ситуация, когда файл частично или полностью записался, а запись с базе так и не появилась, а ещё этот подход не решает проблему обновления файла.
Соблюсти ACID в случае разделённых данных можно только через интеграционные механизмы и усложнение всей системы, что приведёт к ещё большим затратам ресурсов, снижению производительности, сложности поддержки и увеличению TCO.
Сергей Горностаев, и решается всеми и повсеместно. Можно сочинять книги и про разнице между красным и длинным, но только оно от этого красным и длинным быть не перестанет же)
ince, если Ваши файлы состоят из пары символов, то можете хранить и в бинарном виде. Но если на сайт планируется заливать большие объёмы данных, то тогда используйте сервер, а в БД храните ссылки.
ince Основной аргумент хранения на файловой системе - файловую систему вполне можно считать иерархической/графовой базой данных, оптимизированной под хранение значений больших объемов. Другие СУБД в более привычном понимании обычно лучше переваривают значения значительно меньших объёмов. Файл в 1 ГБ для современной ФС это абсолютно нормальное явление, в то время как значение атрибута записи в реляционной БД такого же размера - это очень много даже для современных РСУБД.
Плохо будет если конкретная БД не оптимальна для хранения такого рода данных.
Баз данных много, разных типов, и для разных задач.
Например есть СУБД которые постоянно всю базу держат в памяти - если вы там будете хранить сотни гигабайт редко используемых данных вы на памяти разоритесь.