
- •Введение в бд
- •Файловые системы
- •Системы с базами данных
- •Модели данных
- •Альтернативная терминология Терминология, используемая в реляционной модели, порой может привести к путанице, поскольку помимо предложенных двух наборов терминов существует еще один – третий.
- •Сетевая модель данных
- •Иерархическая модель данных
- •Вопросы:
- •Упражнения:
- •Реляционная модель.
- •Реляционная алгебра. Реляционное исчисление.
- •Реляционная модель
- •Реляционные языки
- •Реляционная алгебра
- •Унарные операции реляционной алгебры
- •Операции с множествами
- •Операции соединения
- •Деление
- •Реляционное исчисление
- •Реляционное исчисление кортежей
- •Реляционное исчисление доменов
- •Другие языки
- •Тема 3 Моделирование данных Модель «сущность-связь»
- •Элементы модели «сущность-связь»
- •Сущность
- •Атрибуты
- •Идентификаторы
- •Три типа бинарных связей
- •Диаграммы «сущность-связь»
- •Изображение атрибутов в диаграммах «сущность-связь»
- •Слабые сущности
- •Подтипы сущностей
- •Пример er-диаграммы
- •Диаграммы «сущность-связь» в стиле uml
- •Сущности и связи в uml
- •Представление слабых сущностей
- •Представление подтипов
- •Конструкции ооп, введенные языком uml
- •Семантическая объектная модель
- •Семантические объекты
- •Определение семантических объектов
- •Атрибуты
- •Кардинальное число атрибута
- •Экземпляры объектов
- •Парные атрибуты
- •Объектные идентификаторы
- •Домены атрибутов
- •Представления семантических объектов
- •Создание семантических объектных моделей данных
- •Пример: база данных администрации нтуу «кпи»
- •Спецификация объектов
- •Типы объектов
- •Простые объекты
- •Составные объекты
- •Гибридные объекты
- •Ассоциативные объекты
- •Объекты вида родитель/подтип
- •Объекты вида архетип/версия
- •Переход от семантической объектной модели к модели «сущность-связь»
- •Вопросы:
- •Упражнения:
- •Тема 4 Нормализация
- •Классы отношений
- •Нормальные формы от первой до пятой
- •Тема 5 Методология проектирования баз данных Введение в методологию проектирования баз данных
- •Методология концептуального проектирования базы данных
- •Методология логического проектирования реляционных баз данных
- •Суть состоит в том, что при устранении избыточности очень важно исследовать значение каждой из связей, существующих между сущностями.
- •Методология физического проектирования базы данных
- •Трехуровневая архитектура ansi-sparc
- •Система управления Базами Данных
- •1. Хранение, извлечение и обновление данных
- •2. Каталог доступный конечным пользователям
- •Поддержка транзакций
- •Сервисы управления параллельностью
- •Сервисы восстановления
- •6. Сервисы контроля доступа к данным
- •Поддержка обмена данными
- •8. Вспомогательные службы
- •Преимущества:
- •Недостатки:
- •Вопросы:
- •Упражнения:
- •История языка sql
- •Особая роль языка sql
- •Используемая терминология
- •Запись операторов sql
- •Манипулирование данными
- •Литералы
- •Простые запросы
- •Выборка строк (конструкция where)
- •Сортировка результатов (конструкция order by)
- •Использование агрегирующих функций языка sql
- •Группирование результатов (конструкция group by)
- •Ограничения на выполнение группирования (конструкция having)
- •Подзапросы
- •Ключевые слова any и all
- •Многотабличные запросы
- •Выполнение соединений
- •Внешние соединения
- •Ключевые слова exists и not exist
- •Комбинирование результирующих таблиц (операции union, intersect и except)
- •Изменение содержимого базы данных
- •Добавление новых данных в таблицу (оператор insert)
- •Модификация данных в базе (оператор update)
- •Удаление данных из базы (оператор delete)
- •Скалярные типы данных языка sql
- •Логические данные (тип boolean)
- •Символьные данные (тип character)
- •Битовые данные (тип bit)
- •Точные числовые данные (тип exact numeric)
- •Округленные числовые данные (тип approximate numeric)
- •Дата и время (тип datetime)
- •Интервальный тип данных interval
- •Скалярные операторы
- •Средства поддержки целостности данных
- •Обязательные данные
- •Ограничения для доменов
- •Целостность сущностей
- •Ссылочная целостность
- •Требования данного предприятия
- •Определение данных
- •Создание баз данных
- •Создание таблиц (оператор create table)
- •Модификация определения таблицы (оператор alter table)
- •Удаление таблиц (оператор drop table)
- •Создание индекса (оператор create index)
- •Удаление индекса (оператор drop index)
- •Представления
- •Создание представлений (оператор create view)
- •Удаление представлений (оператор drop view)
- •Замена представлений
- •Ограничения на использование представлений
- •Обновление данных в представлениях
- •Использование конструкции with check option
- •Преимущества и недостатки представлений
- •Преимущества
- •Недостатки
- •Материализация представлений
- •Использование транзакций
- •Немедленные и отложенные ограничения поддержки целостности данных
- •Управление доступом к данным
- •Идентификаторы пользователей и права владения
- •Привилегии
- •Предоставление привилегий другим пользователям (оператор grant)
- •Отмена предоставленных пользователям привилегий (оператор revoke)
- •Приложение
- •Тема 7.3 Хранимые процедуры и функции. Триггеры.
- •Создание хранимых процедур и функций
- •Простые формы выражений
- •Поддержка транзакций
- •Свойства транзакций
- •Архитектура базы данных
- •Управление параллельным доступом
- •Проблема потерянного обновления
- •Проблема зависимости от незафиксированных результатов (или "грязного" чтения)
- •Проблема анализа несогласованности
- •Упорядочиваемость и восстанавливаемость
- •Конфликтная упорядочиваемость
- •Упорядочиваемость по просмотру
- •Восстанавливаемость
- •Методы управления параллельным доступом
- •Методы блокировки
- •Двухфазная блокировка
- •Управление параллельным выполнением при использовании индексных структур
- •Защелки
- •Взаимоблокировка
- •Тайм-ауты
- •Предотвращение взаимоблокировок
- •Обнаружение взаимоблокировок
- •Частота выполнения операции обнаружения взаимоблокировок
- •Возобновление нормальной работы после обнаружения взаимоблокировки
- •Использование временных отметок
- •Правило записи Томаса
- •Сравнение методов
- •Упорядочение временных отметок в случае многих версий
- •Оптимистические методы упорядочения
- •Степень детализации блокируемых элементов данных
- •Иерархия степеней детализации
- •Блокировка с учетом нескольких степеней детализации
- •Восстановление базы данных
- •Необходимость восстановления
- •Транзакции и восстановление
- •Управление буферами базы данных
- •Функции восстановления
- •Механизм резервного копирования
- •Файл журнала
- •Создание контрольных точек
- •Методы восстановления
- •Метод восстановления с использованием отложенного обновления
- •Метод восстановления с использованием немедленного обновления
- •Метод теневого страничного обмена
- •Улучшенные модели транзакций
- •Модель вложенных транзакций
- •Эмуляция механизма вложенных транзакций с помощью точек сохранения
- •Хроники
- •Модель многоуровневых транзакций
- •Динамическая реструктуризация
- •Модели рабочих потоков
- •Общий обзор методов обработки запросов
- •Основные этапы обработки запросов
- •Динамическая и статическая оптимизация запросов
- •Декомпозиция запросов
- •Нормализация
- •Семантический анализ
- •Упрощение
- •Реструктуризация запросов
- •Эвристический подход к оптимизации запросов
- •Правила преобразования операций реляционной алгебры
- •Оценка стоимости операций реляционной алгебры
- •Статистические показатели базы данных
- •Вариант 6. Поиск по равенству значению кластеризующего (вторичного) индекса
- •Вариант 7. Поиск по равенству значению некластеризующего (вторичного) индекса
- •Составные предикаты
- •Конъюнктивная выборка без дизъюнкций
- •Выборки с дизъюнкциями
- •Конвейерная обработка данных
- •Тема 10
- •Основные типы угроз
- •Контрмеры – компьютерные средства контроля
- •Авторизация пользователей
- •Привилегии
- •Права владения и привилегии
- •Представления (подсхемы)
- •Резервное копирование и восстановление
- •Поддержка целостности
- •Шифрование
- •Raid (массив независимых дисковых накопителей с избыточностью)
- •Средства защиты субд Microsoft Access
- •Установка пароля
- •Защита на уровне пользователя
Управление буферами базы данных
Организация управления буферами базы данных играет важную роль в процессе восстановления, поэтому перед переходом к дальнейшему изложению кратко рассмотрим применяемые при этом методы. Как упоминалось в начале данной темы, ответственность за эффективное управление буферами базы данных, которые применяются для чтения и записи страницы во вторичную память, возложена на такой программный компонент, как диспетчер буферов. Эти методы должны предусматривать чтение страниц с диска в буфера до полного их заполнения, а затем применения той или иной стратегии замещения для определения того, какой буфер (буфера) необходимо принудительно записать на диск, чтобы освободить место для новых страниц, которые должны быть считаны с диска. В качестве примеров стратегии замещения можно указать алгоритмы с организацией последовательной очереди (First-In-First-Out – FIFO) и с вытеснением по давности использования (Least Recently Used – LRU). Кроме того, диспетчер буферов не должен считывать страницу с диска, если она уже находится в одном из буферов базы данных.
Один из возможных подходов предусматривает применение двух переменных (pinCount и dirty) в составе информации управления для каждого буфера базы данных. Этим переменным, соответствующим каждому буферу базы данных, первоначально присваивается значение 0. При получении запроса на чтение страницы с диска диспетчер буферов выполняет проверку для определения того, не находится ли уже эта страница в одном из буферов базы данных. В случае отрицательного ответа диспетчер буферов выполняет следующие действия.
1. Использует принятую стратегию замещения для выбора буфера, предназначенного для замещения (который в дальнейшем называется замещаемым буфером), и увеличивает значение его переменной pinCount (pin count – количество случаев закрепления). Теперь затребованная страница закреплена в буфере базы данных до тех пор, пока остается таковой, и не может быть снова записана на диск. Применяемый алгоритм замещения не разрешает выбрать для замещения буфер, который был закреплен.
2. Если переменной dirty для буфера замещения присвоено ненулевое значение, выполняется запись буфера на диск.
3. Страница считывается с диска в буфер замещения, и переменной dirty этого буфера снова присваивается значение нуль.
При поступлении повторного запроса к одной и той же странице соответствующее значение pinCount увеличивается на 1. После того как система сообщит диспетчеру буферов, что применение этой страницы закончено, соответствующее значение pinCount уменьшается на 1. Вместе с тем, система может сообщить диспетчеру буферов, что в содержимое страницы внесено изменение, поэтому переменной dirty присваивается ненулевое значение, т.е. страница отмечается как "грязная" (требующая записи на диск). После того как значение pinCount достигает нуля, страница становится незакрепленной и может быть записана на диск, если в нее внесены изменения (т.е. переменная dirty имеет ненулевое значение).
Ниже описаны правила, которые могут применяться с учетом необходимости восстановления базы данных при записи страниц на диск.
Правило конфискации позволяет диспетчеру буферов записывать буфер на диск прежде, чем транзакция выполнит фиксацию (буфер не закреплен).Иными словами, диспетчер буферов может "отнять" страницу, принадлежащую транзакции. Противоположное ему правило запрещает конфискацию страниц.
Правило принудительной записи гарантирует, что все страницы, модифицированные в ходе транзакции, будут немедленно записаны на диск после фиксации транзакции. Противоположное ему правило не требует принудительной записи страниц.
На практике проще всего может быть реализован подход, предусматривающий использование правила, запрещающего конфискацию страниц, и правила принудительной записи. Дело в том, что если применяется правило, запрещающее конфискацию страниц, то не нужно и выполнять откат транзакции, завершившейся аварийно, поскольку внесенные в ней изменения еще не были записаны на диск, а применение правила принудительной записи гарантирует, что при возникновении аварии системы не придется выполнять накат изменений, внесенных зафиксированной транзакцией, так как все изменения после фиксации транзакции немедленно записываются на диск. Правило, запрещающее конфискацию страниц, используется в протоколе отложенного восстановления результатов обновления.
С другой стороны, правило, допускающее конфискацию страниц, имеет определенное преимущество перед противоположным ему правилом в том, что позволяет избежать необходимости распределять огромный объем буферного пространства, которое может потребоваться для хранения всех копий страниц, обновляемых многочисленными параллельными транзакциями (к тому же при определенных обстоятельствах такая попытка выделить буфера для всех обновляемых страниц может оказаться практически неосуществимой). Кроме того, преимущество над противоположным ему правилом имеет и правило, не требующее принудительной записи, поскольку при его использовании страница с данными, зафиксированными в предыдущей транзакции, может оставаться в
буфере базы данных, поэтому ее не придется считывать в память, если она потребуется для следующей транзакции. По этим причинам в большинстве СУБД используются правила, допускающие конфискацию страниц и не требующие принудительной записи.