Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2012-текст для форматирования 3.doc
Скачиваний:
4
Добавлен:
17.11.2019
Размер:
484.35 Кб
Скачать

2.2 Модели реляционной базы данных и обработки транзакций

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

Файловую систему можно рассматривать как разновидность базы данных, к которой приложения и утилиты обращаются за информацией о файлах. Например, команда MS-DOS Dir или команда POSIX Is обращаются к соответствующим ФС для получения списка имен файлов и подкаталогов в данном каталоге. Обычно "запрос" к ФС требует подобрать имена файлов, удовлетворяющих некоторому критерию. Структурируя NTFS как базу данных, ее разработчики

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

Другая черта дизайна NTFS, также тесно связанная с темой баз данных, — это использование модели обработки транзакций для записи изменений тома. Обработка транзакций — это такой способ обновления базы данных, при котором сбои системы не нарушают корректность или целостность базы. Основной принцип обработки транзакций состоит в том, что имеются некоторые операции над базой данных, называемые транзакциями (transactions), которые выполняются по принципу "все или ничего". Отдельные обновления диска, составляющие транзакцию, должны выполняться атомарно (atomically); т. е. если транзакция начала выполняться, то все ее операции должны быть завершены. В том случае, когда исполнение транзакции прерывается из-за сбоя системы, та часть транзакции, которая уже была выполнена, должна быть отменена, т.е. должен быть выполнен откат (roll back). Операция отката возвращает базу данных в предыдущее целостное состояние, как если бы транзакция и не начинала исполняться.

Предположим, что клиент банка переводит $300 со сберегательного счета на чековый счет при помощи банкомата. Он задает параметры операции перевода, и программное обеспечение базы данных начинает обрабатывать запрос, вычитая $300 со сберегательного счета. Теперь допустим, что произошла авария системы из-за сбоя питания. Если бы не использовались принципы обработки транзакций и после включения компьютера база данных осталась бы в состоянии, непосредственно предшествовавшем сбою, то на сберегательном счете осталось бы на $300 меньше, чем было, но на чековом счете ничего не прибавилось бы. Очевидно, что такого рода сбои недопустимы для программного обеспечения, связанного с финансами.

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

NTFS использует модель обработки транзакций для восстановления ФС. Если программа инициировала операцию ввода-вывода, которая изменяет структуру ФС (меняет структуру каталогов, увеличивает размер файла, выделяет место для нового файла и т.д.), то NTFS рассматривает такую операцию как атомарную транзакцию. Гарантируется, что либо такая транзакция будет завершена, либо, в случае отказа системы во время ее выполнения, будет выполнен откат. Предположим, например, что пользователь создает файл и NTFS вставляет новое имя файла в свою структуру каталогов непосредственно перед аварией системы. Запись в каталоге существует, но пространство на диске для файла не выделено. Обработка создания файла как атомарной операции гарантирует, что NTFS (т. е. "база данных") сохраняет внутреннюю целостность. В данном примере NTFS откатит операцию создания файла, удалив имя файла из структуры каталогов.

NTFS отслеживает содержимое тома в реляционной базе данных — таблице, содержащей ряды записей и колонки атрибутов. Ряды главной файловой таблицы (master file table, MFT), как называется эта база данных, соответствуют отдель-

Рис. 2-3. Записи файлов и каталогов в главной файловой таблице.

ным файлам на диске, а колонки — атрибутам файлов. Каталог рассматривается как файл с несколько иным набором атрибутов. На рис. 2-3 изображена логическая структура MFT и различные атрибуты, которые может иметь файл или каталог.

Вместо того чтобы рассматривать файл как хранилище двоичных или текстовых данных, модель NTFS рассматривает его как набор атрибутов, один из которых — это данные, содержащиеся в файле. Структура реляционной базы данных позволяет легко расширять ФС. Если пользователь создает файл, то NTFS просто заполняет новый ряд в таблице. Если программа добавляет атрибут2 или второй поток данных, или если файлу присваивается альтернативное имя для MS-DOS (см. гл. 7), то NTFS вставляет в MFT новую колонку для данного файла, как показано на рис. 2-4.

Как и многие другие реляционные базы данных, NTFS может создавать индексы для атрибутов. В файловой системе индекс (index) — это набор файлов, выбранных по значению некоторого атрибута. Например, каталог NTFS — это индекс имен файлов, имеющих в качестве префикса заданный путь. Внутренне NTFS может создать индекс по любому атрибуту, который описан как индексируемый, но в настоящее время индексируются только имена файлов. NTFS сортирует индексы имен файлов при помощи эффективной структуры данных под названием Ь+ дерево, в которой имена упорядочиваются лексикографически, что позволяет осуществлять быстрый поиск по запросам типа dir str\*.

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

2 В настоящее время атрибуты, определяемые пользователем, в Windows NT не поддерживаются. Однако данная архитектура позволяет в будущем их ввести.

Рис. 2-А. Добавление атрибутов и потоков данных к записи MFT.

рассматривая их как файлы, NTFS создает иерархическую структуру внутри традиционной табличной структуры реляционной базы данных. Как показано на рис. 2-3 и 2-4, вместо атрибута данных запись для каталога содержит три атрибута, при помощи которых реализован индекс имен файлов каталога.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]