@magary4

Когда лучше хранить изображения в файловой системе а когда в БД?

собственно перешли с PHP на Node.js (Meteor) вижу что много инструментов в mongo для хранения файлов в БД
  • Вопрос задан
  • 647 просмотров
Пригласить эксперта
Ответы на вопрос 7
BuriK666
@BuriK666
Компьютерный псих
Не нужно хранить файлы в БД, если файл лежит на диске можно использовать sendfile (например в nginx).
Ответ написан
Комментировать
@LiguidCool
По сравнению с PHP собственно тоже самое - все хранится на диске, в базе только путь.
Ответ написан
Комментировать
@ShamblerR
однозначно на файловой системе, рыба отдельно мухи отдельно.
если у вас большая проблема с размерами и количеством файлов то тут можно порекомендовать
1.ssd с отсутствующими головками как класс, как следствие среднее время поиска файла в 50К раз выше.
2. При очень большом количестве файлов, ограничения наоложеные файловой системой будут уже значительны ( по поиску последних) то можно пойти по пути цукерберга, форматировать ФАЙЛ! под ext2 = файл блочное устройство. размеро 1x1 к размеру самого винта, монтировать его как устройство, в таком случае физически файл будет 1 а алгоритм поиска внутри 1 файла работает быстрей чем поиск по самим файлам, так что профит будет очевиден.
Но сдается мне что тут не тот случай.
БД вообще не самая быстрая штука в мире, ее основная задача всеже совершение транзакций, при этом приходится чем-то жертвовать. В данном случае скоростью. Так что хранить в бд что-то это вообще не умная мысль, и уж тем более вещи котолрые без нее вообще здорово себе живут.
Ответ написан
Комментировать
angrySCV
@angrySCV
machine learning, programming, startuping
для того чтоб повысить скорость отдачи ответов, результаты запросов хранятся все вместе в одном документе, например в профиле человека часто хранят, списки групп на которые он подписан, также например фото его аватарки, что позволяет формировать профиль пользователя сразу со всеми требуемыми данными, с одного запроса.
П. С.
файловая система и есть БД!!!111111 поэтому думаю тут особо нечего обсуждать, только сравнивать скорость работы разных бд, и удобство с ними работы.
например для файловой системы у вас в ос уже есть разные удобные инструменты для CRUD, а для монги нужно программистов пинать чтоб с фоточками работать)
Ответ написан
Комментировать
@nApoBo3
Если не знаете точно зачем хранить в БД храните в файлах. Если есть веские причины, храните в БД. Все зависит от архитектуры платформы. ИМХО файлы удобнее, но надо понимать, что они тянут за собой дополнительные технологии резервного копирования и распределенного хранения.
Ответ написан
Комментировать
@lega
в БД:
+ вы можете добавить специфичеких индексов и использовать разные запросы для быстрого получения файлов
+ вместе с файлом можно хранить метаданные
+ бекап/дамп делается сразу по данным и файлам
+ в монге есть шардинг и реплика из коробки, когда файлы не влазят на хост или не хватает io
- нужно делать инструменты для раздачи файлов
в ФС:
+ есть готовые инструменты для раздачи
- все остальные пункты сверху (реплика, метаданные, дамп отдельно, нет индексов и запросов)
Ответ написан
Комментировать
mirrr
@mirrr
Программист и просто хороший человек
Немного припозднился с ответом. Но все же.
Лучше организовать приложение на ноде так, чтобы можно было перебросить большую часть работы хоть на тот же nginx. На машине девелопера пусть себе файлы отправляет нода. На продакшине отдачу статики лучше возложить на nginx. В идеале - шаблоны сайтов тоже пусть он шлет, а взаимодействие nodejs-клиент пусть происходит в формате легких json запросов, которые уже на клиенте оборачиваются в шаблоны с помощью doT.js или swig.
Если же файлы будут лежать в БД, то выковырять их оттуда чем-либо, кроме вашего приложения будет проблематично.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы