2013-04-27 3 views
0

Я разрабатываю проект, в котором я должен использовать файл загрузки. Я использую ASP.NET MVC3 (C#) в качестве интерфейса и SQL Server 2008 R2 в качестве бэкэнд. Теперь для загрузки файла у меня есть варианты:Что лучше? Хранение файла в БД или Хранение его пути в БД?

1) Загрузка файла в конкретный каталог проекта и сохранение его пути в базу данных (перед загрузкой файла в этот каталог мне нужно изменить имя файла как текущую временную метку, чтобы все файлы будут иметь уникальное имя.)

2) Загрузка файла непосредственно в базу данных.

Какой вариант будет лучше? Мой проект загружает файлы в KBs (pdf/word/images).

+0

@CodeIgnoto, okie. В этом случае второй вариант будет полезен? – Dhwani

ответ

3

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

Третий вариант - использовать функции потока файлов MSSQL, которые позволяют обрабатывать файлы как поля в БД, но также обращаться к ним напрямую как файлы через общий ресурс.

+0

ОКЕ. В этом случае второй вариант будет полезен? – Dhwani

+1

Вы получаете поддержку транзакций для обработки файлов, поэтому вы можете обновлять метаданные и файл вместе. У вас будут все данные в одном месте, упрощающие резервное копирование и т. Д., И вы можете использовать один уровень доступа к данным. –

0

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

Конечно, есть дополнительная сложность в поддержании транзакции - файловая система и db должны быть синхронизированы всегда.

+0

okie. В этом случае второй вариант будет полезен? – Dhwani

+0

Вам не нужно явно следить за транзакциями. Вы можете просто использовать транзакции sql-сервера во втором варианте. – aquaraga

0

Хранение пути. Вы можете легко изменить свои файлы.