SQL 2008: Файловый поток против двоичных файлов в базе данных - PullRequest
1 голос
/ 10 ноября 2009

Вчера я задал вопрос о том, как мне сохранить мои файлы. После некоторых исследований я решил сохранить файлы «в» базе данных.

Я проверил разницу между хранением файлов с использованием файлового потока и хранением файлов в самой базе данных.

У каждого есть свои преимущества и недостатки. Чтобы помочь мне с моими исследованиями, этот сайт очень помог мне: http://www.codeproject.com/KB/database/SqlFileStream.aspx

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

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

Поэтому мне нужно ваше мнение, ребята. Что использовать? Файловый поток или сохранение файлов в базе данных с помощью VARBINARY?

Grtz, M.

Ответы [ 2 ]

7 голосов
/ 10 ноября 2009

Данные в файловой системе будут (должны) удаляться вскоре после удаления данных из базы данных, хотя это делается в отдельном системном фоновом потоке, поэтому он может оставаться в файловой системе, пока в основном сборщик мусора не запустится снова. Однако все результаты, доступ к которым осуществляется через любой из API-интерфейсов файлового потока (т. Е. Tsql или потоковая передача), гарантированно не будут иметь доступа к чему-либо, что было удалено, независимо от того, находятся ли данные файловой системы на диске (ACID обеспечивается с помощью файлового потока).

4 голосов
/ 10 ноября 2009

Использовать файловые потоки.

Базы данных предназначены для хранения реляционных данных, файловые системы предназначены для хранения файлов.

Я часто слышал от сотрудников Microsoft, что хранение больших двоичных объектов в SQL Server 2000/2005 (не помню) не является хорошей идеей.

Также рассмотрите Резервное копирование: Файл базы данных - ОДИН файл (РЕДАКТИРОВАТЬ: если вы настроите это так). Если вы используете Filestreams, вы можете создавать резервные копии отдельных файлов.

...