2012-03-04 2 views
5

Я запускаю веб-сайт, который обрабатывает мультимедийные загрузки для одного из своих основных видов использования. Мне интересно, какие лучшие практики или отраслевой стандарт для организации большого количества загруженных пользователем файлов на сервере.Организация большого количества загрузок файлов

ответ

3

Я не думаю, что вы получите какие-либо конкретные ответы, если вы не указали больше контекста и не описали, что такое прецедент для файлов. Как и любое другое технологическое решение, «лучшая практика» всегда будет компромиссом между различными функциональными и нефункциональными требованиями, и поэтому вопрос требует гораздо большего контекста, чтобы дать ответы, на которые вы можете пойти и действовать.

Сказав, что, вот некоторые из стратегий, которые я хотел бы рассмотреть звуковые варианты:

1) Использование условности, диктуемые потребителем файлов. Например, если файлы будут использоваться решением CMS/публикации, эта система, вероятно, имеет стандартизованное решение для обработки файлов.

2) Используйте стороннее решение для загрузки. Существует множество инструментов, которые помогут вам в решении, которое решает вашу конкретную проблему. Такие инструменты, как Transloadit, Zencoder и Encoding, имеют разные варианты обработки загрузок. Взглянув на эти варианты, вы должны дать вам представление о том, что можно считать «отраслевым стандартом».

3) Посмотрите на проверенные решения и имитируйте детали, подходящие вашему месту использования. Существуют решения с открытым исходным кодом, которые обрабатывают то, что вы описываете здесь. Посмотрите на различные плагины, например, paperclip, чтобы узнать, как они организуют файлы, или, что более важно, какие абстракции они предоставляют, что позволяет вам передумать при изменении требований.

4) Создайте собственное решение. Сделайте шип, это один из самых эффективных способов разоблачения требований, о которых вы не думали. Попробуйте интегрировать один из упомянутых выше инструментов и посмотрите, как это происходит. Программное обеспечение является мягким, поэтому решение не является окончательным. Возможно, лучшим решением является просто попробовать что-то и изменить его, когда он больше не подходит.

Это, вероятно, не конкретный ответ, который вы искали, но, как я уже упоминал в начале, проектные решения всегда являются компромиссом, «передовая практика» в одном контексте может быть худшим решением в другом контексте:)

Удачи!

1

Из чего я понимаю, вы хотите получить предложение о том, как хранить файлы. Если это то, что вы хотите, я бы предложил вам иметь 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

С уважением ,

8

Ваш вопрос исключительно широк, но я предполагаю, что вы говорите о хранении/организации/иерархии файлов (а не о платформе/инфраструктуре).

Типичным подходом к организации является загрузка файлов в иерархическую структуру уровня 3 на основе самого имени файла.

Например. Имя файла = "My_Video_12.mpg"

, которые затем будут сохранены в

/M/Y/_/My_Video_12.mpg 

Или другой пример, "a9usfkj_0001.jpg"

/a/9/u/a9usfkj_0001.jpg 

Таким образом, вы в конечном итоге с управляемым которая позволяет легко находить местоположение файла просто на основе его имени. Это также гарантирует, что каталоги не растут до огромных масштабов и становятся невероятно медленными для доступа.

Просто идея, но, возможно, стоит более подробно рассказать о вашем вопросе.

+0

Это такая хорошая идея, спасибо! – Staysee

+0

Отличный ответ. Благодаря! –

Смежные вопросы