Алексей Князев [email protected] http ://t-sql.ru

33
Алексей Князев [email protected] http://www.t-sql.ru File Table http:// www.EkbIT.Pro

Upload: ailsa

Post on 04-Feb-2016

75 views

Category:

Documents


0 download

DESCRIPTION

http://www.EkbIT.Pro. Алексей Князев [email protected] http ://www.t-sql.ru. File Table. Содержание. Неструктурированные данные в SQL Server SQL Server 2005 и ниже Реляционные данные хранятся в базе данных, а нереляционные бинарные данные ( BLOB ) хранятся в файловой системе - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

Алексей Князев[email protected]://www.t-sql.ru

File Table

http://www.EkbIT.Pro

Page 2: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

2

Содержание

• Неструктурированные данные в SQL Server• SQL Server 2005 и ниже

– Реляционные данные хранятся в базе данных, а нереляционные бинарные данные (BLOB) хранятся в файловой системе

– Реляционные данные хранятся в базе данных вместе с нереляционными данными

• SQL Server 2008– Remote BLOB Storage– FileStream

• SQL Server 2012– FileTable

• Заключение• Вопросы?

Page 3: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

3

Стоимость 1Gb, долларов за период 1960 - 2010

Page 4: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

4

Темпы роста количества контента

Page 5: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

5

Ещё немного цифр

Page 6: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

6

Бизнес-сценарии

• специалистам страховой компании необходимо иметь возможность сохранять полисы и загружать их для обработки исков;

• для отображения на сайте магазина необходимо иметь возможность сохранять результат видеосъемки товара;

• для работы телефонной системы необходимо иметь возможность сохранять сообщения голосовой почты, чтобы пользователи могли прослушивать сообщения в удаленном режиме;

• работникам радиостанции нужна библиотека оцифрованных записей, доступных для загрузки с веб-узла, с функцией поиска;

• юридической службе необходимо хранить электронные копии документов в формате изображений и иметь возможность легко загрузить документы, имеющие отношение к определенному клиенту или определенному случаю;

• партнерству архитекторов требуется сохранять и загружать цифровые чертежи, а также относящиеся к ним данные клиентов;

• библиотеке требуется преобразовывать и архивировать большой объем существующих бумажных документов и аналогового содержимого для индексирования и использования при помощи средства работы с цифровыми справочными материалами.

Page 7: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

7

Сложности в работе с неструктурированными данными

• Хотя быстрое распространение новых типов неструктурированного цифрового содержимого приносит ощутимую пользу и открывает новые возможности для бизнеса, параллельно возникают проблемы для разработчиков архитектуры системы, администраторов и разработчиков приложений, которые должны сделать так, чтобы существующие приложения и службы работали с этими неструктурированными источниками данных.

Page 8: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

8

Сложности, связанные с сохранением неструктурированных данных

• затраты на хранение неструктурированных данных, включающие не только затраты на оборудование, но и накладные расходы на управление;

• физические хранилища для неструктурированных данных, такие как файловые серверы и устройства хранения данных, подключаемые к сети (NAS);

• управление политиками хранения и архивации;• объединение файлов, содержащих неструктурированные данные, и

согласованных с ними реляционными данными, а также обеспечение транзакционной согласованности между источниками структурированных и неструктурированных данных;

• минимизация накладных расходов на управление, связанных с обслуживанием как структурированных, так и неструктурированных данных;

• быстродействие и масштабируемость;• защита неструктурированных данных и обеспечение согласованной

безопасности также для связанных с ними реляционных данных;• доступность и возможность восстановления неструктурированных

данных.

Page 9: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

9

Сложности, связанные с использованием неструктурированных данных

• на этапе разработки приложения, в котором используются структурированные и неструктурированные данные, могут возникнуть проблемы, связанные с составлением кода, отвечающего за создание, загрузку, обновление и удаление неструктурированных данных, а также с обеспечением транзакционной согласованности между источниками реляционных и неструктурированных данных;

• индексирование неструктурированных данных и поиск;• извлечение метаданных, доступных в явной форме

(например, из полей форм или из атрибутов файлов), и предоставление этих данных пользователю;

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

Page 10: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

10

Цели SQL Server в работе с неструктурированными данными

• Сложности, связанные с неструктурированными данными, отражают некоторые общие проблемы, с которыми сталкиваются специалисты, начинающие разработку решений для цифрового содержимого, такие как:– управление несколькими платформами, когда приходится иметь дело

как с реляционными, так и с нереляционными данными, приводит к неоправданной сложности;

– раздельные хранилища данных приводят к повышению сложности разработки приложений, а также к проблемам с управлением развертыванием;

– разработчики и администраторы баз данных должны принимать меры для компенсации недостающих служб, поскольку их набор может быть разным для данных различных типов.

• SQL Server ставит своей целью разрешение этих проблем при помощи:– снижения затрат на руководство различными типами данных;– упрощения разработки приложений, использующих реляционные и

нереляционные данные;– расширения возможностей, которые доступны на данный момент

только для реляционных данных, чтобы они были доступны и для неструктурированных данных.

Page 11: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

11

Мотивация для развития поддержки неструктурированных данных в SQL Server

Page 12: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

12

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

• Приложения, основанные на работе с реляционными и нереляционными данными, в основном используют одну из трех архитектур:– реляционные данные находятся в базе

данных, а данные в формате больших нереляционных двоичных объектов (BLOB) находятся в файловых системах или на файловых серверах;

– реляционные данные находятся в базе данных, а нереляционные данные – в хранилище, предназначенном для BLOB-данных;

– реляционные и нереляционные данные находятся в базе данных.

Page 13: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

13

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 байт, встраиваются в страницу данных для строки, а значения большего размера сохраняются на отдельных связанных страницах.

Page 14: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

14

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

• FILESTREAM: значение этого атрибута можно установить в столбце varbinary, чтобы данные были сохранены в файловой системе (таким образом используются преимущества и потоковой передачи, и этого способа хранения), но при этом данные доступны напрямую из базы данных, и управление данными осуществляется в контексте этой базы данных;

• удаленное хранилище BLOB-данных Remote BLOB: программный интерфейс (API), который снижает сложность разработки приложений, использующих BLOB-данные из внешнего хранилища и реляционные данные из базы данных.

• Кроме того, SQL Server 2008 продолжает поддерживать стандартные столбцы BLOB с типом данных varbinary.

Page 15: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

15

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»

Page 16: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

16

Что такое FILESTREAM

• varbinary(max), хранящийся не в БД, а в файловой системе

• Нет ограничения в 2 ГБ, только размером тома

• Стримовый доступ (за счет стандартных интерфейсов Win32)

• SQL-ный буферный пул не используется, NT system cache

• Доступ к файловой системе на удаленной тачке – SMB

• Файл-группа базы должна иметь атрибут FILESTREAM

• Вместо файлов БД содержит каталоги файловой системы (контейнеры)

• Контейнеры не могут быть вложенными

• Учётная запись SQL Server должна иметь NTFS-права на доступ к контейнерам, раздача прав внутри SQL Server – обычным образом

• Пока БД открыта, с контейнерами нельзя работать извне SQL Server

• Интеграция SQL Server-ного движка с NTFS позволяет делать по ним вставку, обновление, запросы, поиск, backup стандартными SQL-ными операторами

• При кластеризации – на общем диске

Page 17: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

Filestream DemoSQL Server 2012

Page 18: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

18

Условия использования FILESTREAM

• В SQL Server большие двоичные объекты (BLOB) могут представлять собой либо стандартный тип varbinary(max), где данные хранятся в таблице базы данных, либо объекты FILESTREAM типа varbinary(max), где данные хранятся в файловой системе. Выбор в качестве хранилища базы данных или файловой системы определяется размером и назначением данных. Объекты FILESTREAM следует использовать в следующих случаях: – средний размер сохраняемых объектов превышает 1

МБ; – важен быстрый доступ для чтения; – в разрабатываемых приложениях для логики

приложений используется средний уровень.

• При работе с объектами меньшего размера сохранение больших двоичных объектов (BLOB) типа varbinary(max) в базе данных часто позволяет добиться лучшей производительности потоков.

Page 19: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

19

Сравнение вариантов хранения BLOB-данных

Файловый сервер или хранилище, предназначенное для BLOB-данных

BLOB-данные SQL Server

Программн. интерфейс удаленного хранения BLOB-данных

Столбцы FILESTREAM

Быстрая потоковая передача

В зависимости от хранилища

Нет В зависимости от хранилища

Да

Согласованность на уровне ссылок

Нет Да Да Да

Согласованность на уровне данных

Нет Да Нет Да

Объединенное управление данными

Нет Да Нет Да

Использование удаленных файловых серверов Windows

Неприм. Нет Да Не в данном выпуске

Взаимодействие с внешними хранилищами BLOB-данных

Неприм. Нет Да Нет

Page 20: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

20

Что такое FileTable

• Ура, у нас есть удобная интеграция базы данных и файловой системы!

stream_id

name file_stream

1F7815B5-

SomeData.xml

0x46696C6554

SELECTINSERTUPDATEDELETE

Copy/Past,Network,

Applications etc…

Page 21: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

21

FILESTREAM и FileTable как альтернатива комбинации СУБД + файл-сервер

Page 22: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

22

FileTable

• Хранить файлы в SQL Server ничуть не хуже, чем в файловой системе• На самом деле даже лучше, потому что при этом штатными

средствами на раз обеспечивается– Транзакционность операций– Резервное копирование– Сортировка и поиск по атрибутам, полнотекстовый и семантический по содержанию– Безопасность, разделение доступа, администрирование на основе политик, ...

• К сожалению, до последнего времени эти преимущества мало, что давали, потому что приложения привыкли работать с файлами при помощи Windows API– Чтобы открыть документ в Ворде, его придется выгрузить из SQL Server в файловую

систему. Хотя бы на время.– Чтобы посмотреть фильм в плеере – аналогично и т.д.

• FileTable – это способ засветить файлстримовский контент, хранящийся в SQLной базе, в виде файловой шары– \\<SQL-Server-Machine>\<InstanceShare>\<Database_Directory>\<FileTable_Directory>\– Для Windows-приложения FileTable выглядит как обычная папка общего доступа, и

оно может читать оттуда файлы, копировать туда новые, создавать директории и т.д.

– SQL Server перехватывает эти вызовы и интерпретирует их внутри себя в привычные реляционные операции

– Также над FileTable доступны прямые запросы, обновления и пр.операции ср-вами T-SQL

Page 23: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

23

FILETABLE - обзор функциональности

Page 24: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

24

Структура папок FileTable

• Инстанс– База данных 1

• Таблица 1• Таблица 2

– База данных 2

Page 25: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

Filetable DemoSQL Server 2012

Page 26: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

26

FileTable Columns

Page 27: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

27

Доступ к данным FileTable

Page 28: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

28

Администрирование FileTable

Page 29: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

29

Ограничения FileTable

Page 30: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

30

Сравнение FILESTREAM и таблиц FileTable

Компонент Файловый сервер и решение для базы данных

Решение FILESTREAM Решение FileTable

Одно решение для задач управления Отсутствует Да Да

Один набор служб: поиск, отчеты, запросы и т. д.

Нет Да Да

Интегрированная модель безопасности Нет Да Да

Обновление на месте для данных FILESTREAM Да Нет Да

Иерархия каталогов и файлов сохраняется в базе данных

Нет Нет Да

Совместимость с приложениями Windows

Да Нет Да

Реляционный доступ к атрибутам файлов Нет Нет Да

Page 31: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

Заключение

Page 32: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

Q&AВаши вопросы

Page 33: Алексей Князев a.knyazev@t-sql.ru http ://t-sql.ru

33

Ресурсы

• 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