- •Глава 9 Физические модели баз данных
- •Файловые структуры, используемые для хранения информации в базах данных
- •Стратегия разрешения коллизий с областью переполнения
- •Организация стратегии свободного замещения
- •Индексные файлы
- •Файлы с плотным индексом, или индексно-прямые файлы
- •Файлы с неплотным индексом, или индексно-последовательные файлы
- •Организация индексов в виде в-tree (в-деревьев)
- •Моделирование отношений «один-ко-многим» на файловых структурах
- •Моделирование отношения 1:м с использованием однонаправленных указателей
- •Алгоритм нахождения нужных записей «подчиненного» файла
- •Алгоритм удаления записи из цепочки «подчиненного» файла
- •Инвертированные списки
- •Модели физической организации данных при бесфайловой организации
- •Структура хранения данных для ms sql 6.5
- •Структуры хранения данных в sql Server 7.0
- •Карты распределения блоков
- •Карты свободного пространства
- •Карты размещения
- •Страницы данных
- •Строки данных
- •Текстовые страницы
- •Страницы журнала транзакций
- •Архитектура разделяемой памяти
- •Глава 10 Распределенная обработка данных
- •Терминология
- •Модели «клиент—сервер» в технологии баз данных
- •Двухуровневые модели
- •Модель удаленного управления данными. Модель файлового сервера
- •Модель удаленного доступа к данным
- •Модель сервера баз данных
- •Модель сервера приложений
- •Модели серверов баз данных
- •Типы параллелизма
- •Глава 11 Модели транзакций
- •Свойства транзакций. Способы завершения транзакций
- •Журнал транзакций
- •Журнализация и буферизация
- •Индивидуальный откат транзакции
- •Восстановление после мягкого сбоя
- •Физическая согласованность базы данных
- •Восстановление после жесткого сбоя
- •Параллельное выполнение транзакций
- •Уровни изолированности пользователей
- •Гранулированные синхронизационные захваты
- •Предикатные синхронизационные захваты
- •Метод временных меток
- •Глава 12 Встроенный sql
- •Операторы, связанные с многострочными запросами
- •Оператор определения курсора
- •Оператор открытия курсора
- •Оператор чтения очередной строки курсора
- •Оператор закрытия курсора
- •Удаление и обновление данных с использованием курсора
- •Хранимые процедуры
- •Триггеры
- •Динамический sql
- •Глава 6. Проектирование реляционных бд на основе
- •Глава 7. Мифологическое моделирование . . .............. 121
- •Глава 8. Принципы поддержки целостности
- •Глава 9. Физические модели баз данных................. 162
Типы параллелизма
Рассматривают несколько путей распараллеливания запросов.
Горизонтальный параллелизм. Этот параллелизм возникает тогда, когда хранимая в БД информация распределяется по нескольким физическим устройствам хранения — нескольким дискам. При этом информация из одного отношения разбивается на части по горизонтали (см. рис. 10.13). Этот вид параллелизма иногда называют распараллеливанием или сегментацией данных. И параллельность здесь достигается путем выполнения одинаковых операций, например фильтрации, над разными физическими хранимыми данными. Эти операции могут выполняться параллельно разными процессами, они независимы. Результат выполнения целого запроса складывается из результатов выполнения отдельных операций.
Время выполнения такого запроса при соответствующем сегментировании данных существенно меньше, чем время выполнения этого же запроса традиционными способами одним процессом.
Вертикальный параллелизм. Этот параллелизм достигается конвейерным выполнением операций, составляющих запрос пользователя. Этот подход требует серьезного усложнения в модели выполнения реляционных операций ядром СУБД. Он предполагает, что ядро СУБД может произвести декомпозицию запроса, базируясь на его функциональных компонентах, и при этом ряд подзапросов может выполняться параллельно, с минимальной связью между отдельными шагами выполнения запроса.
Действительно, если мы рассмотрим, например, последовательность операций реляционной алгебры:
R5=R1 [ А.С] R6=R2 [A.B.D] R7 = R5[A > 128] R8 = R5[A]R6,
то операции первую и третью можно объединить и выполнить параллельно с операцией два, а затем выполнить над результатами последнюю четвертую операцию.
Общее время выполнения подобного запроса, конечно, будет существенно меньше, чем при традиционном способе выполнения последовательности из четырех операций (см. рис. 10.13).
И третий вид параллелизма является гибридом двух ранее рассмотренных (см. рис. 10.14).
Наиболее активно применяются все виды параллелизма в OLAP-приложениях, где эти методы позволяют существенно сократить время выполнения сложных запросов над очень большими объемами данных.
Глава 11 Модели транзакций
Транзакцией называется последовательность операций, производимых над базой данных и переводящих базу данных из одного непротиворечивого (согласованного) состояния в другое непротиворечивое (согласованное) состояние.
Транзакция рассматривается как некоторое неделимое действие над базой данных, осмысленное с точки зрения пользователя. В то же время это логическая единица работы системы. Рассмотрим несколько примеров. Что может быть названо транзакцией? Кем определяется, какая последовательность операций над базой данных составляет транзакцию? Конечно, однозначно именно разработчик определяет, какая последовательность операций составляет единое целое, то есть транзакцию. Разработчик приложений или хранимых процедур определяет это исходя из смысла обработки данных, именно семантика совокупности операций над базой данных, которая моделирует с точки зрения разработчика некоторую одну неразрывную работу, и составляет транзакцию. Допустим, выделим работу по вводу данных о поступивших книгах, новых книгах, которых не было раньше в библиотеке. Тогда эту операцию можно разбить на две последовательные: сначала ввод данных о книге — это новая строка в таблице BOOKS, а потом ввод данных обо всех экземплярах новой книги — это ввод набора новых строк в таблицу EXEMPLAR в количестве, равном количеству поступивших экземпляров книги. Если эта последовательность работ будет прервана, то наша база данных не будет соответствовать реальному объекту, поэтому желательно выполнять ее как единую работу над базой данных.
Следующий пример, который связан с принятием заказа в фирме на изготовление компьютера. Компьютер состоит из комплектующих, которые сразу резервируются за данным заказом в момент его формирования. Тогда транзакцией будет вся последовательность операций, включающая следующие операции:
- ввод нового заказа со всеми реквизитами заказчика;
- изменения состояния для всех выбранных комплектующих на складе на «занято» с привязкой их к определенному заказу;
- подсчет стоимости заказа с формированием платежного документа типа выставляемого счета к оплате;
- включение нового заказа в производство.
С точки зрения работника, это единая последовательность операций; если она будет прервана, то база данных потеряет свое целостное состояние.
Еще один пример, который весьма характерен для учебных заведений. При длительной болезни преподавателя или при его увольнении перед администрацией кафедры встает задача перераспределения всей нагрузки, которую ведет преподаватель, по другим преподавателям кафедры. Видов нагрузки может быть несколько: чтение лекций и проведение занятий по текущему расписанию, руководство квалификационными работами бакалавров, руководство дипломными проектами специалистов, руководство магистерскими диссертациями, индивидуальная научно-исследовательская работа со студентами. И для каждого вида нагрузки необходимо найти исполнителей и назначить им дополнительную нагрузку.