FILESTREAM в SharePoint 2010

Исходная статья опубликована 21 апреля 2011 г.

​Автор: Билл Баэр, старший технический менеджер по продуктам SharePoint, корпорация Майкрософт

FILESTREAM это новый компонент в SQL Server 2008, который позволяет хранить неструктурированные данные в файловой системе NTFS. Хранилище FILESTREAM (локальное или удаленное) в SharePoint 2010 является механизмом снижения капитальных расходов за счет хранения двоичных неструктурированных данных большого объема в хранилище с адресацией по содержимому или в специализированных хранилищах.

Неструктурированные данные

Неструктурированными являются данные, не соответствующие определенной модели или плохо вписывающиеся в структуру реляционных таблиц. В SharePoint неструктурированными данными могут быть файлы в формате приложений Microsoft Office, видео-, аудио- и аналогичные типы файлов.

 

Структурированные данные

В SharePoint структурированными данными называются метаданные, связанные с соответствующими неструктурированными данными или большими двоичными объектами (BLOB). В качестве примера структурированных данных чаще всего приводят реляционные таблицы.

 

SQL Server и хранение неструктурированных данных

В SQL Server есть три способа хранения неструктурированных данных: удаленное хранилище больших двоичных объектов (RBS), большие двоичные объекты SQL и FILESTREAM.

  • При использовании хранилища RBS SharePoint полагается на новый уровень SQL Server при чтении и обновлении больших двоичных объектов (BLOB), хранящихся вне базы данных в отдельных хранилищах (в файловой системе или выделенных хранилищах BLOB)
  • Для больших двоичных объектов SQL используется традиционное хранилище BLOB в SharePoint, данные таких объектов хранятся вместе со структурированными метаданными в базе данных контента
  • FILESTREAM

 

Обзор FILESTREAM

Тип FILESTREAM реализован на базе типа varbinary(max) и предписывает компоненту Database Engine хранить неструктурированные данные в файловой системе с помощью файловой группы FILESTREAM, которая содержит каталоги файловой системы, а не сами файлы, которые также называются контейнерами данных. Контейнеры данных являются интерфейсом между хранилищем компонента Database Engine и хранилищем в файловой системе; varbinary — это двоичный тип данных для больших двоичных объектов (BLOB), хранящихся в базах данных контента SharePoint 2010, который связан с двоичными данными переменной длины. (MAX) относится к значению и указывает, что максимальный размер, который может иметь хранилище, равен 2^31-1 байтов или 2 ГБ. Удаленное хранилище больших двоичных объектов (RBS) не предоставляет механизма для превышения двухгигабайтного ограничения на размер файла, устанавливаемого SharePoint.

 

В SharePoint 2010 удаленные большие двоичные объекты указываются в базе данных контента с помощью уникального идентификатора, заданного для хранилища RBS (см. иллюстрацию).

 

 

 

 

 

FILESTREAM предлагает ряд преимуществ в плане производительности 1) FILESTREAM использует системный кэш NT для кэширования файловых данных, что позволяет снизить влияние данных FILESTREAM на производительность компонента Database Engine, и 2) буферный пул SQL Server не используется, поэтому освобождается память для обработки запросов.

 

FILESTREAM становится оптимальным выбором в сценариях, где SharePoint используется для хранения больших объемов данных BLOB, таких как видеофайлы, для которых удобно использовать FILESTREAM, или данных BLOB, размер которых превышает 1 МБ.

 

Особые замечания

 

FILESTREAM и управление непрерывностью бизнеса

 

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

 

Если в поставщике FILESTREAM задано хранение данных BLOB в отдельной базе данных SQL или при использовании хранилища больших двоичных объектов третьего лица, база данных контента допускает зеркальное отображение, однако оно будет применяться только к базе данных контента, а не к данным BLOB. Данные BLOB необходимо обрабатывать отдельно и синхронизировать со связанными метаданными (базой данных контента). Для баз данных FILESTREAM BLOB это можно делать с помощью доставки журналов.

 

Сведения о различиях между FILESTREAM и удаленным хранилищем больших двоичных объектов в SQL Server см. по адресу https://blogs.msdn.com/b/sqlrbs/archive/2009/11/18/sql-server-remote-blob-store-and-filestream-feature-comparison.aspx.

 

FILESTREAM и кэш веб-приложений Office

 

Кэш веб-приложений Office используется веб-приложениями Word и PowerPoint для создания версии документа, запрошенной для просмотра через браузер, с целью повышения производительности и снижения потребления ресурсов на серверах путем создания кэшированных версий документа или презентации, которые будут доступны при поступлении нескольких запросов на один документ.

 

Кэш веб-приложений Office находится на двух различных уровнях: в файловой системе сервера и внутри "специализированного" семейства сайтов для каждого веб-приложения. Запросы на документ или презентацию, сделанные через веб-приложения Office, направляются в оба кэша, поскольку образы подготавливаются для использования на клиентах. Оба кэша используются всеми семействами сайтов в веб-приложении, в котором включены функции веб-приложений Office.

 

Базы данных контента, где настроен FILESTREAM, хранят кэшированные версии документа или презентации в заданном расположении поставщика. Рекомендуется настраивать кэш веб-приложений Office в базе данных, в которой не настроен FILESTREAM.

 

Настройка FILESTREAM в SharePoint 2010

Приведенные ниже инструкции предназначены для развертывания с одним демонстрационным сервером, в котором реализован локальный поставщик FILESTREAM.

 

Включение FILESTREAM в целевом экземпляре SQL Server

 

1. В меню Пуск укажите Все программы, Microsoft SQL Server 2008 (R2) , Средства настройки и выберите Диспетчер конфигурации SQL Server.

2. В списке служб щелкните правой кнопкой Службы SQL Server и выберите Открыть.

3. В оснастке Диспетчер конфигурации SQL Server найдите экземпляр SQL Server, в котором нужно включить FILESTREAM.

4. Щелкните экземпляр правой кнопкой мыши и выберите Свойства.

5. В диалоговом окне Свойства SQL Server перейдите на вкладку FILESTREAM.

6. Установите флажок Разрешить FILESTREAM при доступе через Transact-SQL.

7. Если нужно читать и записывать данные FILESTREAM из Windows, установите флажок Разрешить FILESTREAM при потоковом доступе файлового ввода-вывода. Введите имя общей папки Windows в поле Имя общей папки Windows.

8. Если к данным FILESTREAM, хранящимся в этой общей папке, должны иметь доступ удаленные клиенты, выберите Разрешить удаленным клиентам потоковый доступ к данным FILESTREAM.

9. Нажмите кнопку Применить.

10. Нажмите кнопку Пуск, выберите Все программы, Microsoft SQL Server 2008 (R2) и затем выберите SQL Server Management Studio.

11. В SQL Server Management Studio нажмите кнопку Создать запрос, чтобы открыть редактор запросов.

12. В редакторе запросов введите следующий код Transact-SQL:

 

EXEC sp_configure filestream_access_level, 2

 

В редакторе запросов введите следующий код Transact-SQL:

 

RECONFIGURE

Подготовка хранилища данных RBS

 

1. Нажмите кнопку Пуск, выберите Все программы, Microsoft SQL Server 2008 (R2) и затем выберите SQL Server Management Studio.

2. Разверните узел Базы данных.

3. Выберите базу данных контента, для которой нужно создать хранилище больших двоичных объектов, и нажмите кнопку Создать запрос.

4. В SQL Server Management Studio нажмите кнопку Создать запрос, чтобы открыть редактор запросов.

5. В редакторе запросов введите следующий код Transact-SQL:

 

use [имя базы данных]

 

if not exists (select * from sys.symmetric_keys where name = N'##MS_DatabaseMasterKey##')create master key encryption by password = N'Admin Key Password !2#4'

 

В редакторе запросов введите следующий код Transact-SQL:

 

use [имя базы данных]

 

if not exists (select groupname from sysfilegroups where groupname=N'RBSFilestreamProvider')alter database [имя базы данных] add filegroup RBSFilestreamProvider contains filestream

 

В редакторе запросов введите следующий код Transact-SQL:

 

use [имя базы данных]

 

alter database [имя базы данных] add file (name = RBSFilestreamFile, filename = 'c:\BlobStore') to filegroup RBSFilestreamProvider

Установка удаленного хранилища больших двоичных объектов Microsoft SQL Server 2008 R2

 

Загрузите 64-разрядный пакет удаленного хранилища больших двоичных объектов Microsoft SQL Server 2008 R2 из пакета дополнительных компонентов для Microsoft SQL Server 2008 R2 по адресу https://www.microsoft.com/downloads/en/details.aspx?FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52&displaylang=en.

 

Откройте командную строку с правами администратора и выполните следующую команду, чтобы установить загруженный пакет RBS.MSI:

 

msiexec /qn /lvx* rbs_install_log.txt /i RBS.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="<имя базы данных>" DBINSTANCE="<имя экземпляра>" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1

 

ПРИМЕЧАНИЕ.

В вышеуказанной инструкции укажите полный путь к RBS.MSI, то есть C:\Users\Administrator\Desktop\RBS.MSI. Замените значения DBNAME и DBINSTANCE на используемые в вашей среде.

 

Включение удаленного хранилища больших двоичных объектов

1. В меню Пуск выберите Все программы.

2. Выберите Продукты Microsoft SharePoint 2010.

3. Выберите Командная консоль SharePoint 2010.

4. В командной консоли SharePoint 2010 введите следующую инструкцию Windows PowerShell, чтобы задать базу данных контента для настройки:

$database=Get-SPContentDatabase –Identity "имя базы данных"

В командной консоли SharePoint 2010 введите следующую инструкцию Windows PowerShell, чтобы получить объект, содержащий параметры, определяющие способ использования базой данных контента удаленного хранилища больших двоичных объектов Microsoft SQL Server:

$rbs=$database.RemoteBlobStorageSettings

В командной консоли SharePoint 2010 введите следующую инструкцию Windows PowerShell, чтобы определить, было ли установлено хранилище RBS для выбранной базы данных контента:

$rbs.Installed()

ПРИМЕЧАНИЕ.

Результатом $rbs.Installed() должно быть значение True. Если результатом является значение False, убедитесь в правильности установки RBS.MSI, просмотрев файл rbs_install_log.txt. Убедитесь, что инструкция установки выполнялась в командной консоли SharePoint 2010. Введите следующую инструкцию Windows PowerShell, чтобы включить хранилище RBS для выбранной базы данных контента:

 

$rbs.Enable()

В командной консоли SharePoint 2010 введите следующие инструкции Windows PowerShell, чтобы задать поставщик RBS для выбранной базы данных контента:

$rbs.SetActiveProviderName($rbs.GetProviderNames()[0])

 

$rbs

 

ПРИМЕЧАНИЕ.

Результатом $rbs должно быть:

Таблица 1

 

Дополнение для таблицы 1

 

Enabled указывает, было ли включено хранилище RBS для выбранной базы данных контента.

 

ActiveProviderName — это имя поставщика удаленного хранилища больших двоичных объектов SQL, через который будут сохраняться новые файлы. Если новые файлы будут сохраняться без использования хранилища RBS SQL, это свойство будет иметь значение NULL.

 

MinimumBlobStorageSize указывает минимальный размер, который должен иметь большой двоичный объект, чтобы подходить для хранения в хранилище RBS. Данные BLOB, превышающие указанный размер MinimumBlobStorageSize, будут храниться в хранилище данных RBS.

 

Данные производительности FILESTREAM показывают, что наибольшая эффективность потоковой работы с данными достигается, когда большие двоичные объекты имеют размер более 1 МБ. См. также https://msdn.microsoft.com/en-us/library/cc949109(SQL.100).aspx.

 

 

Установка значения MinimumBlobStorageSize:

1. В меню Пуск выберите Все программы.

2. Выберите Продукты Microsoft SharePoint 2010.

3. Выберите Командная консоль SharePoint 2010.

4. В командной консоли SharePoint 2010 введите следующие инструкции Windows PowerShell, чтобы установить значение MinimumBlobStorageSize, равное 1 МБ:

$database = Get-SPContentDatabase "имя базы данных"

 

$database.RemoteBlobStorageSettings.MinimumBlobStorageSize=1048576

 

$database.Update()

UpgradePersistedProperties задает коллекцию имен и значений для удаленных или измененных полей.

 

Проверка установки

Чтобы проверить настройку FILESTREAM и установку хранилища RBS, выполните следующие действия:

 

1. Нажмите кнопку Пуск, выберите Все программы, Microsoft SQL Server 2008 и затем выберите SQL Server Management Studio.

2. Разверните узел Базы данных.

3. Выберите базу данных контента, для которой нужно создать хранилище больших двоичных объектов, и нажмите кнопку Создать запрос.

4. В SQL Server Management Studio нажмите кнопку Создать запрос, чтобы открыть редактор запросов.

5. В редакторе запросов введите следующий код Transact-SQL:

USE [имя базы данных]

SELECT * FROM dbo.DatabaseInformation

Убедитесь, что доступны обе строки, RBSCollectionId и RBSProvider.

 

Проверка хранилища данных RBS

1. Выберите нужную библиотеку документов на сайте в настроенной базе данных контента.

2. Передайте в нее файл размером больше 1 МБ.

3. На компьютере, на котором размещено хранилище RBS, нажмите кнопку Пуск и выберите Компьютер.

4. Перейдите в каталог хранилища данных RBS.

5. Откройте список файлов и перейдите в папку с самой последней датой изменения (кроме $FSLOG). В этой папке откройте файл с самой последней датой изменения. Убедитесь, что размер и содержимое этого файла такие же, как у переданного файла. Если это не так, убедитесь в том, что хранилище RBS было правильно установлено и включено.

Появится структура каталогов хранилища данных, которая аналогична структуре на следующей схеме.

 

 

ПРИМЕЧАНИЕ.

Если при передаче документов больше установленного значения MinimumBlobStorageSize появляется сообщение об ошибке "URL-адрес '<библиотека документов>/File' недопустим. Возможно, он указывает на несуществующие файл или папку, или на файл или папку, расположенные вне текущего веб-сайта", откройте диспетчер конфигурации SQL Server и установите параметр "Разрешить FILESTREAM при потоковом доступе файлового ввода-вывода" и перезапустите службу SQL Server (MSSQLSERVER).

 

Дополнительные ресурсы

 

 

Категория: Как это сделано; SharePoint 2010

Дата публикации: 22/04/2011 9:00:00

Это локализованная запись блога. Исходная статья находится по адресу FILESTREAM with SharePoint 2010