Я запускаю веб-сайт, который обрабатывает мультимедийные загрузки для одного из своих основных видов использования. Мне интересно, какие лучшие практики или отраслевой стандарт для организации большого количества загруженных пользователем файлов на сервере.Организация большого количества загрузок файлов
ответ
Я не думаю, что вы получите какие-либо конкретные ответы, если вы не указали больше контекста и не описали, что такое прецедент для файлов. Как и любое другое технологическое решение, «лучшая практика» всегда будет компромиссом между различными функциональными и нефункциональными требованиями, и поэтому вопрос требует гораздо большего контекста, чтобы дать ответы, на которые вы можете пойти и действовать.
Сказав, что, вот некоторые из стратегий, которые я хотел бы рассмотреть звуковые варианты:
1) Использование условности, диктуемые потребителем файлов. Например, если файлы будут использоваться решением CMS/публикации, эта система, вероятно, имеет стандартизованное решение для обработки файлов.
2) Используйте стороннее решение для загрузки. Существует множество инструментов, которые помогут вам в решении, которое решает вашу конкретную проблему. Такие инструменты, как Transloadit, Zencoder и Encoding, имеют разные варианты обработки загрузок. Взглянув на эти варианты, вы должны дать вам представление о том, что можно считать «отраслевым стандартом».
3) Посмотрите на проверенные решения и имитируйте детали, подходящие вашему месту использования. Существуют решения с открытым исходным кодом, которые обрабатывают то, что вы описываете здесь. Посмотрите на различные плагины, например, paperclip, чтобы узнать, как они организуют файлы, или, что более важно, какие абстракции они предоставляют, что позволяет вам передумать при изменении требований.
4) Создайте собственное решение. Сделайте шип, это один из самых эффективных способов разоблачения требований, о которых вы не думали. Попробуйте интегрировать один из упомянутых выше инструментов и посмотрите, как это происходит. Программное обеспечение является мягким, поэтому решение не является окончательным. Возможно, лучшим решением является просто попробовать что-то и изменить его, когда он больше не подходит.
Это, вероятно, не конкретный ответ, который вы искали, но, как я уже упоминал в начале, проектные решения всегда являются компромиссом, «передовая практика» в одном контексте может быть худшим решением в другом контексте:)
Удачи!
Из чего я понимаю, вы хотите получить предложение о том, как хранить файлы. Если это то, что вы хотите, я бы предложил вам иметь 2 разных системы хранения для ваших файлов.
Первым хранилищем будет место для хранения физического файла, например, каталога на вашем сервере (без использования FTP, доступного или нет в браузерах, ...) или для Amazon s3 (aws.amazon.com/en/s3/), Rackspace CloudFiles (www.rackspace.com/cloud/cloud_hosting_products/files/) или любое другое решение для хранения (вы можете даже выбрать Dropbox, если хотите). Все эти опции предлагают API для сохранения/извлечения файлов.
Вторым хранилищем будет база данных, чтобы индексировать и контролировать файлы. В БД это может быть MySQL, MSSQL или нереляционная база данных, например Amazon DynamoDB или SimpleSQL, вы устанавливаете ссылку на свой файл (http-ссылка, путь к файлу или что-то в этом роде).
Кроме того, в БД вы можете управлять и хранить любые метаданные нужного файла и выбирать один или несколько решений @ ebaxt для его получения. Метаданные могут быть более старыми версиями файла, словами текстового файла, моделью камеры и географическим расположением изображения и т. Д. Конечно, это зависит от ваших потребностей и того, как они будут действительно использоваться. У вас очень много вариантов, но без дополнительной информации о том, что вы делаете, сложно предложить вам решение.
В районе Амазонки учебники (http://aws.amazon.com/articles/Amazon-S3?browse=1) вы можете найти много статей о нем, как Netflix's Transition to High-Availability Storage Systems, Using the Java Persistence API with Amazon SimpleDB и Petboard: An ASP.NET Sample Using Amazon S3 and Amazon SimpleDB
С уважением ,
Ваш вопрос исключительно широк, но я предполагаю, что вы говорите о хранении/организации/иерархии файлов (а не о платформе/инфраструктуре).
Типичным подходом к организации является загрузка файлов в иерархическую структуру уровня 3 на основе самого имени файла.
Например. Имя файла = "My_Video_12.mpg"
, которые затем будут сохранены в
/M/Y/_/My_Video_12.mpg
Или другой пример, "a9usfkj_0001.jpg"
/a/9/u/a9usfkj_0001.jpg
Таким образом, вы в конечном итоге с управляемым которая позволяет легко находить местоположение файла просто на основе его имени. Это также гарантирует, что каталоги не растут до огромных масштабов и становятся невероятно медленными для доступа.
Просто идея, но, возможно, стоит более подробно рассказать о вашем вопросе.
- 1. Организация большого количества мутаций
- 2. Загрузка большого количества загрузок с AFNetworking
- 3. Организация большого количества классов под пространством имен
- 4. Организация большого количества данных в результатах поиска
- 5. загрузка большого количества файлов
- 6. Переименование большого количества файлов
- 7. Хранение большого количества файлов
- 8. Сканирование большого количества файлов
- 9. Обработка большого количества файлов
- 10. Удаление большого количества файлов
- 11. Обработка большого количества файлов
- 12. Отображение количества загрузок HTML
- 13. Индексирование большого количества XML-файлов
- 14. HDFS - загрузка большого количества файлов
- 15. Обработка большого количества файлов JSON
- 16. Обработка большого количества файлов C#
- 17. rubyj обработка большого количества файлов
- 18. Эффективно Разбор большого количества файлов
- 19. Чтение большого количества файлов быстро
- 20. Слияние большого количества XML-файлов
- 21. Конкатенация большого количества файлов HDF5
- 22. Пакетное удаление большого количества файлов
- 23. Сортировка большого количества сжатых файлов
- 24. Сочетание большого количества файлов netCDF
- 25. NSurlSession - загрузка большого количества файлов
- 26. Загрузка большого количества файлов Drupal
- 27. Icefaces: Загрузка большого количества файлов?
- 28. Организация большого количества моделей, использующих STI в рельсах
- 29. Организация большого количества конфигурации приложения в Spring Cloud Config Server
- 30. Организация большого решения C#
Это такая хорошая идея, спасибо! – Staysee
Отличный ответ. Благодаря! –