- •Лекция №17 Работа с blob и функции, определенные пользователем. Транзакции. Механизм транзакций
- •1 Работа с blob
- •Сложности, связанные с использованием неструктурированных данных
- •Хранение неструктурированных данных в sql Server 2008
- •Что такое filestream
- •Varbinary(max), хранящийся не в бд, а в файловой системе
- •Условия использования filestream
- •2 Функции, определенные пользователем (udf)
- •3 Транзакции. Механизм транзакций
- •Явные транзакции
- •Распределенные транзакции
- •Вложенные транзакции
Хранение неструктурированных данных в sql Server 2008
FILESTREAM: значение этого атрибута можно установить в столбце varbinary, чтобы данные были сохранены в файловой системе (таким образом используются преимущества и потоковой передачи, и этого способа хранения), но при этом данные доступны напрямую из базы данных, и управление данными осуществляется в контексте этой базы данных;
удаленное хранилище BLOB-данных Remote BLOB: программный интерфейс (API), который снижает сложность разработки приложений, использующих BLOB-данные из внешнего хранилища и реляционные данные из базы данных.
Кроме того, SQL Server 2008 продолжает поддерживать стандартные столбцы BLOB с типом данных varbinary.
Что такое filestream
Varbinary(max), хранящийся не в бд, а в файловой системе
Нет ограничения в 2 ГБ, только размером тома
Потоковый доступ (за счет стандартных интерфейсов Win32)
SQL-ный буферный пул не используется, NT system cache
Доступ к файловой системе на удаленной тачке – SMB
Файл-группа базы должна иметь атрибут FILESTREAM
Вместо файлов БД содержит каталоги файловой системы (контейнеры)
Контейнеры не могут быть вложенными
Учётная запись SQL Server должна иметь NTFS-права на доступ к контейнерам, раздача прав внутри SQL Server – обычным образом
Пока БД открыта, с контейнерами нельзя работать извне SQL Server
Интеграция SQL Server-ного движка с NTFS позволяет делать по ним вставку, обновление, запросы, поиск, backup стандартными SQL-ными операторами
При кластеризации – на общем диске
Условия использования filestream
В SQL Server большие двоичные объекты (BLOB) могут представлять собой либо стандартный тип varbinary(max), где данные хранятся в таблице базы данных, либо объекты FILESTREAM типа varbinary(max), где данные хранятся в файловой системе. Выбор в качестве хранилища базы данных или файловой системы определяется размером и назначением данных. Объекты FILESTREAM следует использовать в следующих случаях:
средний размер сохраняемых объектов превышает 1 МБ;
важен быстрый доступ для чтения;
в разрабатываемых приложениях для логики приложений используется средний уровень.
При работе с объектами меньшего размера сохранение больших двоичных объектов (BLOB) типа varbinary(max) в базе данных часто позволяет добиться лучшей производительности потоков.
Сравнение вариантов хранения BLOB-данных
Хранение неструктурированных данных в SQL Server 2012
FileTable интеграция БД и файл-сервера
Хранить файлы в SQL Server ничуть не хуже, чем в файловой системе
На самом деле даже лучше, потому что при этом штатными средствами на раз обеспечивается
Транзакционность операций
Резервное копирование
Сортировка и поиск по атрибутам, полнотекстовый и семантический по содержанию
Безопасность, разделение доступа, администрирование на основе политик, ...
FileTable – это способ засветить контент, хранящийся в SQLной базе \\<SQL-Server-Machine>\<InstanceShare>\<Database_Directory>\<FileTable_Directory>\
Для Windows-приложения FileTable выглядит как обычная папка общего доступа, и оно может читать оттуда файлы, копировать туда новые, создавать директории и т.д.
SQL Server перехватывает эти вызовы и интерпретирует их внутри себя в привычные реляционные операции
Также над FileTable доступны прямые запросы, обновления и прочие операции средствами T-SQL
Администрирование FileTable
Сравнение FILESTREAM и таблиц FileTable
