У меня есть веб-приложение, в котором хранится множество пользовательских файлов. В настоящее время все они хранятся в файловой системе сервера, что имеет несколько недостатков для меня.
- Когда мы перемещаем "папки" (как определено нашим приложением), мы также должны перемещать файлы на диск (хотя это связано, в основном, с необычными дизайнерскими решениями со стороны оригинальных разработчиков, чем с требованием хранить вещи на файловая система).
- Трудно писать тесты для действий файловой системы; У меня есть класс файловой системы mock, который регистрирует такие действия, как move, delete и т.д., Не выполняя их, что более или менее выполняет задание, но у меня нет 100% уверенности в тестах.
- Я добавлю некоторые другие задания, которым необходимо получить доступ к файлам из другой службы для выполнения дополнительных задач (например, индексирование в Solr, создание эскизов, преобразование формата фильма), поэтому мне нужно удаленно получать файлы. Выполнение этого по сетевым ресурсам кажется изворотливым...
- Работа с разрешениями на файловую систему, поскольку иногда это давало нам проблемы в прошлом, хотя теперь, когда мы перешли в чистую Linux-среду, это должно быть меньше проблем.
Итак, мои основные вопросы:
- Каковы недостатки хранения файлов в виде BLOB в MySQL?
- Существуют ли те же проблемы с системами NoSQL, такими как Cassandra?
- Есть ли у кого-нибудь другие предложения, которые могут быть подходящими, например. MogileFS и т.д.