2011-01-16 4 views
1

Я отвечаю за создание системы управления документами ASP.NET MVC. Он должен иметь возможность выполнять основные задачи по управлению документами, такие как добавление, редактирование и поиск записей, а также выполнение версий.Система управления документами - Где хранить файлы?

В любом случае, я нацелен на PDF, Office и многие форматы изображений в качестве файла, прикрепленного к каждой записи документа в базе данных. Мой вопрос: какие принципы проектирования придерживаются профессионалов при создании механизма хранения? Хранили ли файлы документов в файловой системе? База данных? Как обрабатывается загрузка файлов?

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

+1

Используйте возможности FileStream в SQL Server 2008. – slugster

+0

часть вашего вопроса - вопрос хранения файлов в базе данных было предложено бесчисленное количество раз на этом сайте. Я еще не вижу разумной причины для этого, даже если у БД есть возможность. Jere является одним из ранних сообщений с информацией о еде. http://stackoverflow.com/questions/8952/storing-a-file-in-a-database-as-opposed-to-the-file-system – David

+0

Кстати, зачем строить, когда есть свободные, доступные с огромным пользователем общин и лучшей поддержки? DotNetNuke обрабатывает его в версии Professional (хотя это и не является бесплатным) Confluence - еще один хороший, основанный на Java, но не бесплатный, и они предлагают черту гораздо больше, чем просто управление документами. Я все для создания вещей самостоятельно, но это одна из тех вещей, где отличные инструменты уже существуют, а для несвободных - стоимость все еще намного меньше, чем вы бы инвестировали в ее правильное построение. – David

ответ

0

Файлы обычно должны храниться в файловой системе, а не в базе данных.

Вы, однако, должны рассмотреть некоторые другие вещи:

  • Вы планируете когда-либо поддержки балансировки нагрузки, репликации и т.д. для вашей системы?

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

  • Планируете ли вы защищать доступ к файлам?

    Если это так, вам необходимо убедиться, что они не могут быть прочитаны кем-то, кто знает URL. например: путем возврата файла в виде вложения в запрос.

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

+0

Насколько я знаю, их хранение в файловой системе связано с высокой фрагментацией дисков и низкой производительностью. Это правда? –

+0

Значительная фрагментация диска должна произойти только в том случае, если у вас большой объем сбоев данных (write-delete-write). Базы данных документов, как правило, загружают контент и либо быстро удаляются (ошибочно загружены), либо остаются до тех пор, пока данные не будут заархивированы. Файлы не собирают фрагментацию волшебным образом. Если вы предоставите серверу достаточное количество дисков и убедитесь, что обслуживание выполняется регулярно - это не должно быть проблемой. –

+0

Это невозможно разобраться, но после работы над одной такой системой: вы уволены;) Поместите их в базу данных, используйте возможности Filedream SQL Server 2008 для получения дискового пространства, управляемого базой данных, чтобы у вас была одна точка резервного копирования/восстановления, все остальные SUCKS с админитративной точки зрения. – TomTom

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