330 likes | 614 Views
http://www.EkbIT.Pro. Алексей Князев a.knyazev@t-sql.ru http ://www.t-sql.ru. File Table. Содержание. Неструктурированные данные в SQL Server SQL Server 2005 и ниже Реляционные данные хранятся в базе данных, а нереляционные бинарные данные ( BLOB ) хранятся в файловой системе
E N D
http://www.EkbIT.Pro Алексей Князев a.knyazev@t-sql.ru http://www.t-sql.ru File Table
Содержание • Неструктурированные данные в SQL Server • SQL Server 2005 и ниже • Реляционные данные хранятся в базе данных, а нереляционные бинарные данные (BLOB) хранятся в файловой системе • Реляционные данные хранятся в базе данных вместе с нереляционными данными • SQL Server 2008 • Remote BLOB Storage • FileStream • SQL Server 2012 • FileTable • Заключение • Вопросы?
Стоимость 1Gb, долларовза период 1960 - 2010
Бизнес-сценарии • специалистам страховой компании необходимо иметь возможность сохранять полисы и загружать их для обработки исков; • для отображения на сайте магазина необходимо иметь возможность сохранять результат видеосъемки товара; • для работы телефонной системы необходимо иметь возможность сохранять сообщения голосовой почты, чтобы пользователи могли прослушивать сообщения в удаленном режиме; • работникам радиостанции нужна библиотека оцифрованных записей, доступных для загрузки с веб-узла, с функцией поиска; • юридической службе необходимо хранить электронные копии документов в формате изображений и иметь возможность легко загрузить документы, имеющие отношение к определенному клиенту или определенному случаю; • партнерству архитекторов требуется сохранять и загружать цифровые чертежи, а также относящиеся к ним данные клиентов; • библиотеке требуется преобразовывать и архивировать большой объем существующих бумажных документов и аналогового содержимого для индексирования и использования при помощи средства работы с цифровыми справочными материалами.
Сложности в работе с неструктурированнымиданными • Хотябыстроераспространениеновыхтиповнеструктурированногоцифровогосодержимогоприноситощутимуюпользу и открываетновыевозможностидлябизнеса, параллельновозникаютпроблемыдляразработчиковархитектурысистемы, администраторов и разработчиковприложений, которыедолжнысделатьтак, чтобысуществующиеприложения и службыработали с этиминеструктурированнымиисточникамиданных.
Сложности, связанные с сохранением неструктурированных данных • затраты на хранение неструктурированных данных, включающие не только затраты на оборудование, но и накладные расходы на управление; • физические хранилища для неструктурированных данных, такие как файловые серверы и устройства хранения данных, подключаемые к сети (NAS); • управление политиками хранения и архивации; • объединение файлов, содержащих неструктурированные данные, и согласованных с ними реляционными данными, а также обеспечение транзакционной согласованности между источниками структурированных и неструктурированных данных; • минимизация накладных расходов на управление, связанных с обслуживанием как структурированных, так и неструктурированных данных; • быстродействие и масштабируемость; • защита неструктурированных данных и обеспечение согласованной безопасности также для связанных с ними реляционных данных; • доступность и возможность восстановления неструктурированных данных.
Сложности, связанные с использованием неструктурированных данных • на этапе разработки приложения, в котором используются структурированные и неструктурированные данные, могут возникнуть проблемы, связанные с составлением кода, отвечающего за создание, загрузку, обновление и удаление неструктурированных данных, а также с обеспечением транзакционной согласованности между источниками реляционных и неструктурированных данных; • индексирование неструктурированных данных и поиск; • извлечение метаданных, доступных в явной форме (например, из полей форм или из атрибутов файлов), и предоставление этих данных пользователю; • преобразование содержимого документа в форматы, пригодные для выполнения поиска и составления запросов (например, преобразование звуковых файлов в текстовые, в которых затем может быть выполнен поиск по запросу базы данных или поиск при помощи обработчика полнотекстового поиска).
Цели SQL Server в работе с неструктурированными данными • Сложности, связанные с неструктурированнымиданными, отражаютнекоторыеобщиепроблемы, с которымисталкиваютсяспециалисты, начинающиеразработкурешенийдляцифровогосодержимого, такиекак: • управление несколькими платформами, когда приходится иметь дело как с реляционными, так и с нереляционными данными, приводит к неоправданной сложности; • раздельные хранилища данных приводят к повышению сложности разработки приложений, а также к проблемам с управлением развертыванием; • разработчики и администраторы баз данных должны принимать меры для компенсации недостающих служб, поскольку их набор может быть разным для данных различных типов. • SQL Server ставитсвоейцельюразрешениеэтихпроблемприпомощи: • снижения затрат на руководство различными типами данных; • упрощения разработки приложений, использующих реляционные и нереляционные данные; • расширения возможностей, которые доступны на данный момент только для реляционных данных, чтобы они были доступны и для неструктурированных данных.
Мотивация для развития поддержки неструктурированных данных в SQL Server
Хранение неструктурированных данных в SQL Server2005 и ниже • Приложения, основанныенаработе с реляционными и нереляционнымиданными, в основномиспользуютоднуизтрехархитектур: • реляционные данные находятся в базе данных, а данные в формате больших нереляционных двоичных объектов (BLOB) находятся в файловых системах или на файловых серверах; • реляционные данные находятся в базе данных, а нереляционные данные – в хранилище, предназначенном для BLOB-данных; • реляционные и нереляционные данные находятся в базе данных.
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 байт, встраиваются в страницуданныхдлястроки, а значениябольшегоразмерасохраняютсянаотдельныхсвязанныхстраницах.
Хранение неструктурированных данных в SQL Server2008 • FILESTREAM: значение этого атрибута можно установить в столбце varbinary, чтобы данные были сохранены в файловой системе (таким образом используются преимущества и потоковой передачи, и этого способа хранения), но при этом данные доступны напрямую из базы данных, и управление данными осуществляется в контексте этой базы данных; • удаленное хранилище BLOB-данных Remote BLOB: программный интерфейс (API), который снижает сложность разработки приложений, использующих BLOB-данные из внешнего хранилища и реляционные данные из базы данных. • Крометого, SQL Server 2008 продолжаетподдерживатьстандартныестолбцы BLOB с типомданныхvarbinary.
FileStreamкак осколок Атлантиды WinFS Идейно под названием ObjectFileSystem известна с начала 90-х Проект Cairo не состоялся, но фрагментарно получил воплощение в широком спектре от Windows 95 до 2000 Затем это называлось Storage+ в СОМ, затем RelationalFileSystem в SQL Server 2000, ... Под именем WinFS объявлена на PDC 2003, запланирована в составе Висты В августе 2004 объявлена в качестве downloadableupdate где-нибудь на следующий год после Висты Еще через год выпущена Beta 1, доступная подписчикам MSDN Работала на XP, требовала .NET Framework (System.Storage) В декабре 2005 обновление до .NET 2.0 23 июня 2006 г. в блоге WinFSTeam было опубликовано (http://blogs.msdn.com/winfs/archive/2006/06/23/644706.aspx), что 2-й беты не будети WinFS не будет выпускаться в виде отдельного компонента, ее ключевые технологии войдут в SQL Server «Katmai» (2008) и ADO .NET в VisualStudio «Orcas»
Что такое FILESTREAM varbinary(max), хранящийся не в БД, а в файловой системе Нет ограничения в 2 ГБ, только размером тома Стримовый доступ (за счет стандартных интерфейсов Win32) SQL-ныйбуферный пул не используется, NT system cache Доступ к файловой системе на удаленной тачке – SMB Файл-группа базы должна иметь атрибут FILESTREAM Вместо файлов БД содержит каталоги файловой системы (контейнеры) Контейнеры не могут быть вложенными Учётная запись SQLServer должна иметь NTFS-права на доступ к контейнерам, раздача прав внутри SQLServer – обычным образом Пока БД открыта, с контейнерами нельзя работать извне SQLServer Интеграция SQL Server-ногодвижкас NTFS позволяет делать по ним вставку, обновление, запросы, поиск, backup стандартными SQL-нымиоператорами При кластеризации – на общем диске
Filestream Demo SQL Server 2012
Условия использования FILESTREAM • В SQL Server большие двоичные объекты (BLOB) могут представлять собой либо стандартный тип varbinary(max), где данные хранятся в таблице базы данных, либо объекты FILESTREAM типа varbinary(max), где данные хранятся в файловой системе. Выбор в качестве хранилища базы данных или файловой системы определяется размером и назначением данных. Объекты FILESTREAM следует использовать в следующих случаях: • средний размер сохраняемых объектов превышает 1 МБ; • важен быстрый доступ для чтения; • в разрабатываемых приложениях для логики приложений используется средний уровень. • При работе с объектами меньшего размера сохранение больших двоичных объектов (BLOB) типа varbinary(max) в базе данных часто позволяет добиться лучшей производительности потоков.
Сравнение вариантов хранения BLOB-данных
Что такое FileTable SELECT INSERT UPDATE DELETE Copy/Past, Network, Applications etc… Ура, у нас есть удобная интеграция базы данных и файловой системы!
FILESTREAM и FileTable как альтернатива комбинации СУБД + файл-сервер
FileTable • Хранить файлы в SQL Server ничуть не хуже, чем в файловой системе • На самом деле даже лучше, потому что при этом штатными средствами на раз обеспечивается • Транзакционность операций • Резервное копирование • Сортировка и поиск по атрибутам, полнотекстовый и семантический по содержанию • Безопасность, разделение доступа, администрирование на основе политик, ... • К сожалению, до последнего времени эти преимущества мало, что давали, потому что приложения привыкли работать с файлами при помощи Windows API • Чтобы открыть документ в Ворде, его придется выгрузить из SQL Server в файловую систему. Хотя бы на время. • Чтобы посмотреть фильм в плеере – аналогично и т.д. • FileTable – это способ засветить файлстримовский контент, хранящийся в SQLной базе, в виде файловой шары • \\<SQL-Server-Machine>\<InstanceShare>\<Database_Directory>\<FileTable_Directory>\ • Для Windows-приложения FileTableвыглядит как обычная папка общего доступа, и оно может читать оттуда файлы, копировать туда новые, создавать директории и т.д. • SQL Server перехватывает эти вызовы и интерпретирует их внутри себя в привычные реляционные операции • Также над FileTableдоступны прямые запросы, обновления и пр.операции ср-вами T-SQL
Структура папок FileTable • Инстанс • База данных 1 • Таблица 1 • Таблица 2 • База данных 2
Filetable Demo SQL Server 2012
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