@ArtemNemtsov
.NET программист

Как организовать хранение аудиофайлов для серверного проекта?

Всем привет!
Используя технологию ASP.NET.CORE с MVC, необходимо разработать сервер для прослушивание аудио файлов, который будут использовать множество пользователей. Как правильно организовать хранение аудио файлов?

Имеется несколько вариантов:
1) Хранить аудио в папках, сохраняя значения путей в БД (Что на мой взгляд не правильно!)
2) Хранить в NO-SQL базе данных, например MongoDB. Если выбрать этот путь, можно ли удобно использовать только эту базу данных для работы всего сервера, без дополнительной sql базы данных , такой как Postgres итд.
3) Использовать сторонний сервер, например Minio.
4) Другой вариант

Прошу предложить свой вариант, и написать, почему именно так лучше будет организовать хранение аудио файлов для данного проекта.
  • Вопрос задан
  • 1930 просмотров
Решения вопроса 1
@ArgosX
1) Хранить аудио в папках, сохраняя значения путей в БД (Что на мой взгляд не правильно!)

именно ваш взгляд не правильный
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@raiboon
Просто хранить на жёстких дисках - неудобно и не сильно надёжно.
Для кого разрабатывали ceph, minio, Gridfs, riakcs, etc?

В целом, если есть возможность, то лучше s3 или аналоги от конкурентов.
Но если хотите иметь полный контроль над инфраструктурой, то просто выберете подходящее решение.
Ответ написан
Хранить аудио-файлы локально на сервере в отдельной папке - это плохо масштабируемое решение, хотя для старта сойдет.
Как отметил raiboon , лучше использовать протокол S3. Лучше облачный хостинг, потому что нужно еще правильно отдавать контент, чтобы отдачей контента занимался отдельный сервер (или сервера), ответственный за раздачу контента и всё это было быстро масштабируемо. Бизнес-логика веб-приложения тогда будет находиться отдельно от серверов отдачи контента.
При создании объекта аудио-файла можно генерировать GUID и его использовать как идентификатор для поиска в коллекции. Отдельный компонент может быть ответственным за построение пути к файловому объекту в S3 по искомому GUID, будет также включать bucket , регион.
Префикс пути будет постоянным, наподобие такого:
"<bucket>.<region>.hostname/<parent_dir>/"
Суффикс - <GUID>

Если все делать по-малому (в домашних условиях), то можно хранить файлы в СУБД, конечно. Файлы лучше отдавать кэширующим сервером: Nginx, Varnish и др. При выборе Minio, RiakCS, Ceph, развертывание и поддержка инфраструктуры ложится на плечи сис. админа и это нужно учитывать.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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