SQL Server: как хранить двоичные данные (например, файл Word)? - PullRequest
13 голосов
/ 15 декабря 2010

Я не администратор баз данных, поэтому я просто не знаю плюсов и минусов использования различных методов хранения двоичных данных на SQL Server.

  • varbinary(n) хранит только 8000 байт
  • varbinary(max) магазины 2 ГБ
  • BLOB s предназначены для больших файлов, но идут с «административными» накладными расходами (файлы, на которые есть ссылки только в БД, но которые фактически находятся на локальном жестком диске)

В основном у меня есть около 1000 документов (в год), которые я хочу хранить в базе данных SQL Server 2008 R2 (заполняется простой загрузкой формы ASPX, просматривается простой загрузкой Gridview). Все документы, вероятно, будут около 2 - 8 МБ (файлы Word, Excel). Мое предположение заключается в том, что я должен использовать таблицу MyDocuments со следующим макетом:

MyDocuments 
    Data       varbinary(max)
    Title      varchar(255)
    ModifiedOn datetime()
    ModifiedBy varchar(100)

Я на пути к varbinary(max)? Или я иду в неправильном направлении (например, по производительности)?

1 Ответ

16 голосов
/ 15 декабря 2010

В SQL Server 2008 имеется хранилище «FILESTREAM». Оно обеспечивает хранение и эффективный доступ к BLOB-данным, используя комбинацию SQL Server 2008 и файловой системы NTFS.

Вы можете проверить это:

FILESTREAM Хранилище в SQL Server 2008
Сохранение и получение файла с помощью FileStream SQL Server 2008

EDIT:
Объекты размером менее 256 КБ лучше всего хранить в базе данных, тогда как объекты размером более 1 МБ лучше всего хранить в файловой системе.

Производительность: Varbinary vs FILESTREAM

http://www.sqlskills.com/BLOGS/PAUL/post/SQL-Server-2008-FILESTREAM-performance.aspx
Для BLOB или не для BLOB: хранение больших объектов в базе данных или файловой системе
Производительность SQL Server 2008 FILESTREAM

...