Хранилище двоичных файлов SQL Server

Для справки: у меня есть приложение, которое я в настоящее время поддерживаю и которое работает на Oracle 10.2 с выделенными администраторами баз данных. В прошлом, когда я хотел создать таблицу, в которой будут храниться двоичные данные (BLOB в их мире — это могут быть PDF-файлы, DOCX и т. д.), администраторы баз данных всегда «разбивали» хранилище данных этого столбца/таблицы ( не знаю какой) в отдельную физическую область на диске. Они объясняли это тем, что это помогло гарантировать, что на производительность не повлияет большое количество двоичных файлов, хранящихся в том же файле, что и остальные данные, в которых происходил поиск.

Мой вопрос в том, должен ли я делать что-то подобное для SQL Server (2012, хотя я сомневаюсь, что версия имеет значение)? Если да, то как я могу это сделать и какова правильная терминология для этого?


person Scott Salyer    schedule 24.04.2012    source источник


Ответы (1)


Вы можете создать отдельную файловую группу, файлы которой находятся на другом томе, а затем явно создать таблицы, в которых хранятся ваши данные LOB в этой файловой группе. Обозначение файловой группы является частью CREATE TABLE и CREATE INDEX, по умолчанию это файловая группа PRIMARY.

У вас также есть различные варианты хранения файлов в SQL Server, в 2008+ вы можете использовать FILESTREAM (см. также здесь), а в 2012 году вы можете использовать FILETABLE. Однако в большинстве случаев мне было трудно оправдать сохранение файла в базе данных; часто менее проблематично хранить файл в файловой системе и указатель в базе данных.

И вы можете прочитать мои устаревшие и многословные мнения в эту статью часто задаваемых вопросов я написал 12 лет назад.

Имея в виду, что некоторые технологии изменились (очевидно, FILESTREAM и FILETABLE тогда не были доступны), некоторые моменты остаются актуальными...

И, наконец, несколько советов MSDN по обработке файлов/групп файлов, которые могут полезное чтение.

person Aaron Bertrand    schedule 24.04.2012
comment
Если я на виртуальной машине, это имеет значение? У меня есть отдельные дисковые тома, но, находясь на виртуальной машине, я не уверен, насколько это важно. Независимо от ответа, я обязательно прочитаю то, что вы опубликовали - спасибо за такой быстрый ответ! - person Scott Salyer; 24.04.2012
comment
VM или нет, узким местом почти наверняка будет подсистема ввода-вывода. Виртуальная машина может использовать быстрый ввод-вывод так же, как и физическая машина. Конечно, всегда существует вероятность того, что уровень виртуализации, в зависимости от технологии виртуальных машин и программного обеспечения/драйверов, предоставляемых поставщиком ввода-вывода, а также от конфигурации виртуальной машины и ввода-вывода, может оказаться сложным набором переменных для настроить правильно... - person Aaron Bertrand; 24.04.2012