http://www.EkbIT.Pro File Table Алексей Князев a.knyazev@t-sql.ru http://www.t-sql.ru Содержание • Неструктурированные данные в SQL Server • SQL Server 2005 и ниже – Реляционные данные хранятся в базе данных, а нереляционные бинарные данные (BLOB) хранятся в файловой системе – Реляционные данные хранятся в базе данных вместе с нереляционными данными • SQL Server 2008 – Remote BLOB Storage – FileStream • SQL Server 2012 – FileTable • Заключение • Вопросы? 2 Стоимость 1Gb, долларов за период 1960 - 2010 3 Темпы роста количества контента 4 Ещё немного цифр 5 Бизнес-сценарии • • • • • • • специалистам страховой компании необходимо иметь возможность сохранять полисы и загружать их для обработки исков; для отображения на сайте магазина необходимо иметь возможность сохранять результат видеосъемки товара; для работы телефонной системы необходимо иметь возможность сохранять сообщения голосовой почты, чтобы пользователи могли прослушивать сообщения в удаленном режиме; работникам радиостанции нужна библиотека оцифрованных записей, доступных для загрузки с веб-узла, с функцией поиска; юридической службе необходимо хранить электронные копии документов в формате изображений и иметь возможность легко загрузить документы, имеющие отношение к определенному клиенту или определенному случаю; партнерству архитекторов требуется сохранять и загружать цифровые чертежи, а также относящиеся к ним данные клиентов; библиотеке требуется преобразовывать и архивировать большой объем существующих бумажных документов и аналогового содержимого для индексирования и использования при помощи средства работы с цифровыми справочными материалами. 6 Сложности в работе с неструктурированными данными • Хотя быстрое распространение новых типов неструктурированного цифрового содержимого приносит ощутимую пользу и открывает новые возможности для бизнеса, параллельно возникают проблемы для разработчиков архитектуры системы, администраторов и разработчиков приложений, которые должны сделать так, чтобы существующие приложения и службы работали с этими неструктурированными источниками данных. 7 Сложности, связанные с сохранением неструктурированных данных • • • • • • • • затраты на хранение неструктурированных данных, включающие не только затраты на оборудование, но и накладные расходы на управление; физические хранилища для неструктурированных данных, такие как файловые серверы и устройства хранения данных, подключаемые к сети (NAS); управление политиками хранения и архивации; объединение файлов, содержащих неструктурированные данные, и согласованных с ними реляционными данными, а также обеспечение транзакционной согласованности между источниками структурированных и неструктурированных данных; минимизация накладных расходов на управление, связанных с обслуживанием как структурированных, так и неструктурированных данных; быстродействие и масштабируемость; защита неструктурированных данных и обеспечение согласованной безопасности также для связанных с ними реляционных данных; доступность и возможность восстановления неструктурированных данных. 8 Сложности, связанные с использованием неструктурированных данных • на этапе разработки приложения, в котором используются структурированные и неструктурированные данные, могут возникнуть проблемы, связанные с составлением кода, отвечающего за создание, загрузку, обновление и удаление неструктурированных данных, а также с обеспечением транзакционной согласованности между источниками реляционных и неструктурированных данных; • индексирование неструктурированных данных и поиск; • извлечение метаданных, доступных в явной форме (например, из полей форм или из атрибутов файлов), и предоставление этих данных пользователю; • преобразование содержимого документа в форматы, пригодные для выполнения поиска и составления запросов (например, преобразование звуковых файлов в текстовые, в которых затем может быть выполнен поиск по запросу базы данных или поиск при помощи обработчика полнотекстового поиска). 9 Цели SQL Server в работе с неструктурированными данными • Сложности, связанные с неструктурированными данными, отражают некоторые общие проблемы, с которыми сталкиваются специалисты, начинающие разработку решений для цифрового содержимого, такие как: – управление несколькими платформами, когда приходится иметь дело как с реляционными, так и с нереляционными данными, приводит к неоправданной сложности; – раздельные хранилища данных приводят к повышению сложности разработки приложений, а также к проблемам с управлением развертыванием; – разработчики и администраторы баз данных должны принимать меры для компенсации недостающих служб, поскольку их набор может быть разным для данных различных типов. • SQL Server ставит своей целью разрешение этих проблем при помощи: – снижения затрат на руководство различными типами данных; – упрощения разработки приложений, использующих реляционные и нереляционные данные; – расширения возможностей, которые доступны на данный момент только для реляционных данных, чтобы они были доступны и для неструктурированных данных. 10 Мотивация для развития поддержки неструктурированных данных в SQL Server 11 Хранение неструктурированных данных в SQL Server 2005 и ниже • Приложения, основанные на работе с реляционными и нереляционными данными, в основном используют одну из трех архитектур: – реляционные данные находятся в базе данных, а данные в формате больших нереляционных двоичных объектов (BLOB) находятся в файловых системах или на файловых серверах; – реляционные данные находятся в базе данных, а нереляционные данные – в хранилище, предназначенном для BLOB-данных; – реляционные и нереляционные данные находятся в базе данных. 12 BLOB-данные в SQL Server • В SQL Server 2005 был использован новый тип данных varbinary(max), который позволяет сохранять большой объем двоичных данных размером до 2 147 483 647 байт в столбце или переменной SQL Server. При использовании модификатора max можно задать значение параметра таблицы large value types out of row, который позволяет контролировать, в каком виде происходит физическое хранение данных. Если значение этого параметра задано как ON, все значения сохраняются на отдельных связанных страницах, а 16-байтовый корневой указатель на них хранится в странице данных для строки. Если значение параметра равно OFF, то значения, размер которых меньше 8000 байт, встраиваются в страницу данных для строки, а значения большего размера сохраняются на отдельных связанных страницах. 13 Хранение неструктурированных данных в SQL Server 2008 • FILESTREAM: значение этого атрибута можно установить в столбце varbinary, чтобы данные были сохранены в файловой системе (таким образом используются преимущества и потоковой передачи, и этого способа хранения), но при этом данные доступны напрямую из базы данных, и управление данными осуществляется в контексте этой базы данных; • удаленное хранилище BLOB-данных Remote BLOB: программный интерфейс (API), который снижает сложность разработки приложений, использующих BLOBданные из внешнего хранилища и реляционные данные из базы данных. • Кроме того, SQL Server 2008 продолжает поддерживать стандартные столбцы BLOB с типом данных varbinary. 14 FileStream как осколок Атлантиды WinFS • • • • • • • • • • Идейно под названием Object File System известна с начала 90-х Проект Cairo не состоялся, но фрагментарно получил воплощение в широком спектре от Windows 95 до 2000 Затем это называлось Storage+ в СОМ, затем Relational File System в SQL Server 2000, ... Под именем WinFS объявлена на PDC 2003, запланирована в составе Висты В августе 2004 объявлена в качестве downloadable update где-нибудь на следующий год после Висты Еще через год выпущена Beta 1, доступная подписчикам MSDN Работала на XP, требовала .NET Framework (System.Storage) В декабре 2005 обновление до .NET 2.0 23 июня 2006 г. в блоге WinFS Team было опубликовано (http://blogs.msdn.com/winfs/archive/2006/06/23/644706.aspx), что 2-й беты не будет и WinFS не будет выпускаться в виде отдельного компонента, ее ключевые технологии войдут в SQL Server «Katmai» (2008) и ADO .NET в Visual Studio «Orcas» 15 Что такое FILESTREAM • varbinary(max), хранящийся не в БД, а в файловой системе • Нет ограничения в 2 ГБ, только размером тома • Стримовый доступ (за счет стандартных интерфейсов Win32) • SQL-ный буферный пул не используется, NT system cache • Доступ к файловой системе на удаленной тачке – SMB • Файл-группа базы должна иметь атрибут FILESTREAM • Вместо файлов БД содержит каталоги файловой системы (контейнеры) • Контейнеры не могут быть вложенными • Учётная запись SQL Server должна иметь NTFS-права на доступ к контейнерам, раздача прав внутри SQL Server – обычным образом • Пока БД открыта, с контейнерами нельзя работать извне SQL Server • Интеграция SQL Server-ного движка с NTFS позволяет делать по ним вставку, обновление, запросы, поиск, backup стандартными SQL-ными операторами • При кластеризации – на общем диске 16 Filestream Demo SQL Server 2012 Условия использования FILESTREAM • В SQL Server большие двоичные объекты (BLOB) могут представлять собой либо стандартный тип varbinary(max), где данные хранятся в таблице базы данных, либо объекты FILESTREAM типа varbinary(max), где данные хранятся в файловой системе. Выбор в качестве хранилища базы данных или файловой системы определяется размером и назначением данных. Объекты FILESTREAM следует использовать в следующих случаях: – средний размер сохраняемых объектов превышает 1 МБ; – важен быстрый доступ для чтения; – в разрабатываемых приложениях для логики приложений используется средний уровень. • При работе с объектами меньшего размера сохранение больших двоичных объектов (BLOB) типа varbinary(max) в базе данных часто позволяет добиться лучшей производительности потоков. 18 Сравнение вариантов хранения BLOB-данных Файловый сервер или хранилище, предназначенное для BLOB-данных BLOB-данные SQL Server Столбцы Программн. FILESTREAM интерфейс удаленного хранения BLOBданных В зависимости от Да хранилища Быстрая потоковая передача В зависимости от хранилища Нет Согласованность на уровне ссылок Нет Да Да Да Согласованность на уровне данных Нет Да Нет Да Объединенное управление данными Нет Да Нет Да Использование удаленных файловых серверов Windows Неприм. Нет Да Не в данном выпуске Взаимодействие с внешними хранилищами BLOBданных Неприм. Нет Да Нет 19 Что такое FileTable • Ура, у нас есть удобная интеграция базы данных и файловой системы! Copy/Past, Network, Applications etc… SELECT INSERT UPDATE DELETE stream_i name d file_stream 1F7815B SomeData.x 0x46696C655 5ml 4 20 FILESTREAM и FileTable как альтернатива комбинации СУБД + файл-сервер 21 FileTable • • Хранить файлы в SQL Server ничуть не хуже, чем в файловой системе На самом деле даже лучше, потому что при этом штатными средствами на раз обеспечивается – – – – • К сожалению, до последнего времени эти преимущества мало, что давали, потому что приложения привыкли работать с файлами при помощи Windows API – – • Транзакционность операций Резервное копирование Сортировка и поиск по атрибутам, полнотекстовый и семантический по содержанию Безопасность, разделение доступа, администрирование на основе политик, ... Чтобы открыть документ в Ворде, его придется выгрузить из SQL Server в файловую систему. Хотя бы на время. Чтобы посмотреть фильм в плеере – аналогично и т.д. FileTable – это способ засветить файлстримовский контент, хранящийся в SQLной базе, в виде файловой шары – – – \\<SQL-Server-Machine>\<InstanceShare>\<Database_Directory>\<FileTable_Directory>\ Для Windows-приложения FileTable выглядит как обычная папка общего доступа, и оно может читать оттуда файлы, копировать туда новые, создавать директории и т.д. SQL Server перехватывает эти вызовы и интерпретирует их внутри себя в привычные реляционные операции 22 FILETABLE - обзор функциональности 23 Структура папок FileTable • Инстанс – База данных 1 • Таблица 1 • Таблица 2 – База данных 2 24 Filetable Demo SQL Server 2012 FileTable Columns 26 Доступ к данным FileTable 27 Администрирование FileTable 28 Ограничения FileTable 29 Сравнение FILESTREAM и таблиц FileTable Компонент Одно решение для задач управления Один набор служб: поиск, отчеты, запросы и т. д. Интегрированная модель безопасности Обновление на месте для данных FILESTREAM Иерархия каталогов и файлов сохраняется в базе данных Совместимость с приложениями Windows Реляционный доступ к атрибутам файлов Файловый сервер и решение для базы данных Решение FILESTREAM Решение FileTable Отсутствует Да Да Нет Да Да Нет Да Да Да Нет Да Нет Нет Да Да Нет Да Нет Нет Да 30 Заключение Q&A Ваши вопросы Ресурсы • FILESTREAM – http://msdn.microsoft.com/ru-ru/library/gg471497.aspx • Таблицы FileTable – http://msdn.microsoft.com/ru-ru/library/ff929144.aspx • Наш сайт – http://www.EkbIT.Pro • Мой блог – http://www.t-sql.ru 33