Реляционная файловая система от Microsoft. Новые возможности SQL Server 2012::Журнал СА 5.2012
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

Разбор полетов  

Ошибок опыт трудный

Как часто мы легко повторяем, что не надо бояться совершать ошибки, мол,

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6195
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6903
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4188
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 2989
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3795
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3805
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6299
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3152
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3446
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7263
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10628
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12352
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13982
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9110
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7064
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5375
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4604
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3414
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3145
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3392
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3013
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Реляционная файловая система от Microsoft. Новые возможности SQL Server 2012

Архив номеров / 2012 / Выпуск №5 (114) / Реляционная файловая система от Microsoft. Новые возможности SQL Server 2012

Рубрика: Базы данных /  Продукты и решения от Microsoft

Фёдор Самородов ФЁДОР САМОРОДОВ, преподаватель учебного центра «Специалист» при МГТУ им. Н.Э. Баумана

Реляционная файловая система
Новые возможности SQL Server 2012

В современных СУБД сложно придумать что-то принципиально новое. Но, с другой стороны, современные СУБД стали настолько функциональны, что, посмотрев на них под нетрадиционным углом, можно обнаружить неожиданные варианты применения их возможностей

О механизмах хранения

Какую бы файловую систему (ФС) вы ни использовали, ее главная функция – преобразование логических ссылок на данные в физические. Логическая единица, с которой удобно работать пользователю, – файл. Мы создаем, редактируем и удаляем файлы, не задумываясь о том, как именно они хранятся. Вопросы хранения – это задача ФС, она отслеживает соответствие между логическими единицами хранения (файлами) и физическими – секторами или кластерами.

Например, ФС типа FAT и NTFS преобразуют имена файлов в цепочки кластеров. Пользователь работает с файлом ReadMe.txt, а ФС помнит, что этот файл начинается на кластере №15, продолжается на секторе №132 и заканчивается на кластере №4. Если бы не было такого механизма абстрагирования от физической адресации, пользователю пришлось бы оперировать неудобными номерами секторов вместо удобных имен файлов.

Еще пример. Работая с БД, пользователь использует имена таблиц. А механизм хранения, встроенный в СУБД, преобразует обращение к таблицам в работу с дисковыми страницами. В СУБД SQL Server для этого используется механизм кучи (heap) или кластеризованный индекс, который решает ту же задачу, что и ФС. СУБД знает, что таблица Customers (логическая единица хранения) лежит в таком-то файле и начинается на странице с номером…

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

FileStream и FileTables

В предыдущей версии SQL Server появилась интересная возможность хранить строки таблиц напрямую в файлах – механизм хранения FileStream. То есть, с одной стороны, вы работаете с данными, как со строками таблиц, через СУБД, используя язык SQL со всеми его преимуществами (например, получая транзакционную целостность), а с другой, можете работать с этими же данными, как с файлами на диске, опять же получая преимущества такого доступа (в том числе низкую стоимость хранения).

Однако механизм FileStream в 2008-й версии нельзя назвать ФС, потому что при его использовании не решается задача простого и прозрачного преобразования одной системы адресации в другую. Но у вас есть строка в таблице, содержащая какие-то полезные данные. Как узнать имя файла, в котором эта же строка представлена на диске? Да, для приложения есть способ это сделать, но его нельзя назвать простым и прозрачным для пользователя.

В 2012-й версии SQL Server этот недостаток устранен. Над механизмом FileStream появилась интересная надстройка – файловые таблицы (FileTables). Эти таблицы, как и механизм FileStream, используют для хранения строк файлы, но при этом позволяют вам не только легко видеть имена этих файлов, но и полноценно ими управлять. Вы можете задавать произвольные имена файлов, каталогов, расширения, а также всевозможные файловые атрибуты.

Как это выглядит

Файловые таблицы имеют заранее определенную структуру и обвязку (индексы, ограничители). Каждая строка связана со своим файлом. Точнее, она этим файлом и является. Нетипизированный столбец file_stream – это содержимое файла в чистом виде. Поскольку это бинарный объект, хранить в нем можно что угодно и любого размера (лишь бы места на диске хватило). Столбец name и вычисляемый от него file_type – этоимя файла (вместе с расширением) и расширение файла.

Обратите внимание на первичный и внешний ключи. Это пара столбцов иерархического типа. Дело в том, что, помимо файлов, строки этой таблицы могут представлять собой каталоги (флаг is_directory). Как видите, структура таблицы специально спроектирована для того, чтобы точно отражать содержимое файлового каталога вместе со всеми вложенными файлами. Также имеются столбцы, соответствующие файловым атрибутам (флаги, дата и время модификации/доступа).

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

Например, можно просто добавить в таблицу строки таким образом:

INSERT
INTO MyDocs (name, file_stream)
VALUES ('Read me.txt', CAST ('My text' AS varbinary (MAX))),
    ('Default.html', CAST ('<h1>My header</h1>' ?
       AS varbinary (MAX)))

После чего эти файлы сразу видны в папке, заданной при настройке базы данных.

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

В предыдущей версии SQL Server можно было использовать сам принцип файлового хранения, но у пользователя не было такого прозрачного способа сопоставить строку с файлом. Разработчику приходилось писать приложение таким образом, чтобы оно сначала обращалось к базе данных и только после этого могло открыть файл. Кроме того, удаление файла с диска не вызывало автоматического удаления записи в таблице. Теперь у нас есть настоящая реляционная ФС. Соответствие между реляционными и файловыми единицами хранения поддерживается автоматически.

Как настроить файловый механизм хранения

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

Во-первых, поскольку эффект от использования файловых таблиц заметен снаружи SQL Server, администратор Windows должен разрешить использование файлового механизма хранения на уровне всего экземпляра. Это делается в диспетчере конфигурации в настройке службы SQL Server.

Как минимум необходимо разрешить FileStream при доступе через Transact-SQL. Также, очевидно, следует включить возможность файлового доступа, иначе вся затея будет лишена практического смысла. А последняя галочка позволит работать с файлами через общую папку с удаленной машины.

Во-вторых, администратор SQL Server выдает разрешение на использование FileStream на уровне всего экземпляра. Это можно сделать в интерфейсе SSMS в свойствах сервера либо с помощью Transact-SQL (в любом случае службу необходимо перезапустить):

EXECUTE sp_Configure filestream_access_level, 2
RECONFIGURE

В-третьих, настройки на уровне базы данных. Необходимо указать каталог на диске, в котором будут физически храниться строки файловых таблиц. Для этого нужно создать хотя бы одну файловую группу типа FileStream и хотя бы один файл в ней. На самом деле это будет даже не файл, а ссылка на папку (вместо физического имени файла указывается каталог). Теперь можно создавать таблицы с механизмом хранения FileStream в стиле SQL Server 2008, но для создания более удобных файловых таблиц необходимо задать еще имя каталога и разрешить доступ к данным со стороны файловой системы. Это похоже на те настройки, которые мы видели в диспетчере конфигурации, но они применяются не ко всему серверу, а к каждой базе данных индивидуально. Установить имя каталога можно в окне свойств базы данных в SSMS или через Transact-SQL:

ALTER DATABASE MyDatabase
SET FILESTREAM (
       NON_TRANSACTED_ACCESS = FULL,
       DIRECTORY_NAME = N'ИмяКаталогаБазы'
       )

Теперь можно создавать файловые таблицы. Поскольку их структура уже заранее определена, написать команду Transact-SQL будет проще:

CREATE TABLE MyTable
    AS FILETABLE
       WITH (
           FILETABLE_DIRECTORY = 'ИмяКаталогаТаблицы'
           )

Все, можно работать. Теперь строки этой таблицы будут полноценно доступны по такому адресу: \\ИмяСервера\ИмяОбщейПапки\ИмяКаталогаБазы\ИмяКаталогаТаблицы.

Замечание: при планировании файловых таблиц примите во внимание чисто техническое ограничение на работу с этими файлами – не работает отображение в память. То есть открыть локально эти файлы, к примеру, блокнотом не получится. Это ограничение касается только нового механизма – FileTable. Работать с FileStream-данными (в стиле SQL Server 2008) в режиме memory-mapped разрешено.

Для чего использовать файловые таблицы на практике

Разработчики современных приложений часто оказываются в ситуации, когда в базе данных приходится хранить документы довольно большого объема, но внутри самой базы эти документы никак не обрабатываются. Они лишь сохраняются в базе и затем извлекаются из нее для последующей обработки в приложении. Что делать, к примеру, с аудио- и видеоданными, с изображениями?

Можно хранить их, как и все остальные данные, в таблицах. Это удобно, так как мы получаем транзакционную целостность и другие преимущества, предоставляемые СУБД. Но стоимость хранения данных в таблицах заметно больше, чем расходы на хранение тех же данных в виде обычных файлов.

Или хранить такого рода данные в виде файлов на диске, а в базе хранить лишь ссылки на них (имена и пути). Все равно ведь мы не собирались обрабатывать эти данные внутри базы. Этот подход дешевле, но теряется автоматическая поддержка целостности. Например, администратору для выполнения резервного копирования теперь необходимо сохранить резервную копию не только базы данных, но и папок на диске.

Хорошим компромиссом будет использование файловых таблиц. Низкие накладные расходы при одновременной возможности использования SQL-транзакций. Кстати, хранение данных в режиме FileStream позволяет обойти встроенное ограничение SQL Server на размер данных в ячейке таблицы. Для обычных ячеек данных (image, text, varbinary) лимит хранения – 2 гигабайта. Если же вы используете файловое хранение, то размер данных в ячейке (он же размер файла) ограничен лишь размером тома.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru