- •Курс лекций
- •Содержание
- •Понятие субд. Функции субд
- •2. Проектирование бд. Нормальные формы отношений 77
- •Понятие бд и субд
- •Данные.
- •Аппаратное обеспечение.
- •Программное обеспечение.
- •Пользователи.
- •Уровни абстракции в субд. Функции абстрактных данных
- •Представления
- •Внешний уровень – внешнее представление
- •Концептуальный уровень – концептуальное представление
- •Внутренний уровень – внутреннее представление
- •Функции субд
- •Экспертные системы и базы знаний
- •Литература:
- •Модели бд
- •Обзор ранних (дореляционных) субд
- •Системы, основанные на инвертированных списках
- •Структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Иерархическая модель
- •Иерархические структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Сетевая модель
- •Сетевые структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Основные достоинства и недостатки ранних субд
- •Литература:
- •Реляционная модель и ее характеристики. Целостность в реляционной модели
- •Представление информации в реляционных бд
- •Отношения. Свойства и виды отношений
- •Свойства отношений
- •Виды отношений
- •Целостность реляционных данных
- •Потенциальные и первичные ключи
- •Внешние ключи
- •Ссылочная целостность
- •Правила внешних ключей
- •Значения null и поддержка ссылочной целостности
- •Литература:
- •Реляционная алгебра
- •Понятие реляционной алгебры
- •Замкнутость в реляционной алгебре
- •Традиционные операции над множествами
- •Объединение
- •Пересечение
- •Вычитание
- •Произведение
- •Свойства основных операций реляционной алгебры
- •Специальные реляционные операции
- •Выборка
- •Проекция
- •Естественное соединение
- •Деление
- •Операция расширения
- •Операция подведения итогов
- •Операторы обновления
- •Реляционные сравнения
- •Литература:
- •Вопросы проектирования бд
- •Понятие проектирования бд
- •Функциональные зависимости
- •Тривиальные и нетривиальные зависимости
- •Замыкание множества зависимостей и правила вывода Армстронга
- •Неприводимое множество зависимостей
- •Нормальные формы – основные понятия
- •Декомпозиция без потерь и функциональные зависимости
- •Диаграммы функциональных зависимостей
- •Литература:
- •Проектирование бд. Нормальные формы отношений
- •Первая нормальная форма. Возможные недостатки отношения в 1нф
- •Вторая нормальная форма. Возможные недостатки отношения во 2нф
- •Третья нормальная форма. Возможные недостатки отношения в 3нф
- •Сохранение зависимости
- •Нормальная форма Бойса-Кодда
- •Литература:
- •Проектирование бд. Нормальные формы отношений (продолжение)
- •Многозначные зависимости
- •Четвертая нормальная форма
- •Зависимости соединения
- •Пятая нормальная форма
- •Зависимости соединения, подразумеваемой потенциальными ключами
- •Итоговая схема процедуры нормализации
- •Литература:
- •Проектирование бд методом сущность-связь. Er-диаграммы
- •Возникновение семантического моделирования
- •Основные понятия метода
- •Диаграммы er-экземпляров и er-типа
- •Связи типа 1:1 и необязательный класс принадлежности
- •Связи типа 1:1 и обязательный класс принадлежности
- •Связи типа 1:м вариант н-о
- •Связи типа м:м и вариант класса принадлежности о-н
- •Правила формирования отношений
- •Степень связи 1:1, класс принадлежности обеих сущностей обязательный
- •Степень связи 1:1, класс принадлежности одной сущности обязательный, а второй – необязательный
- •Степень связи 1:1, класс принадлежности обеих сущностей – необязательный
- •Степень связи между сущностями 1:м (или м:1), класс принадлежности м-связной сущности обязательный
- •Степень связи 1:м (м:1)и класс принадлежности м-связной сущности – необязательный
- •Степень связи м:м, независимо от класса принадлежности сущностей
- •Методология idef1 (самостоятельное изучение)
- •Литература:
- •Язык sql
- •История создания и развития sql
- •Основные понятия sql
- •Операторы
- •Типы данных в sql
- •Константы
- •Запросы на чтение данных. Оператор select
- •Предложение select
- •Предложение from
- •Отбор строк (предложение where)
- •Условия поиска
- •Сортировка результатов запроса (предложение order by).
- •Многотабличные запросы на чтение (объединения).
- •Запросы с использованием отношения предок/потомок.
- •Прочие объединения таблиц по равенству
- •Литература:
- •Язык sql (продолжение)
- •Объединения и стандарт sql2
- •Внутренние объединения в стандарте sql2
- •Внешние объединения в стандарте sql2
- •Перекрестные объединения и запросы на объединение в sql2
- •Многотабличные объединения в стандарте sql2
- •Итоговые запросы на чтение. Агрегатные функции
- •Агрегатные функции и значения null
- •Запросы с группировкой (предложение group by)
- •Несколько столбцов группировки
- •Ограничения на запросы с группировкой
- •Вложенные запросы
- •Условия поиска во вложенном запросе
- •Литература:
- •Внесение изменений в базу данных.
- •Добавление новых данных (оператор insert).
- •Удаление существующих данных (Оператор delete)
- •Обновление существующих данных (Оператор update)
- •Определение структуры данных в sql
- •Создание таблицы (оператор create table)
- •Удаление таблицы (оператор drop table)
- •Изменение определения таблицы (оператор alter table)
- •Определения доменов
- •Индексы (операторы create/drop index)
- •Понятие представления.
- •Преимущества представлений
- •Недостатки представлений
- •Представления в sql.
- •Обновление представлений и стандарт ansi/iso
- •Удаление представления (оператор drop view)
- •Системный каталог (самостоятельное изучение)
- •Понятие системный каталог
- •Системный каталог и стандарт ansi/iso
- •Содержимое системного каталога
- •Информационная схема в стандарте sql2
- •Литература:
- •Обеспечение безопасности бд
- •Общие положения
- •Методы обеспечения безопасности
- •Избирательное управление доступом
- •Обязательное управление доступом
- •Шифрование данных
- •Контрольный след выполняемых операций
- •Поддержка мер обеспечения безопасности в языке sql
- •Директивы grant и revoke
- •Представления и безопасность
- •Литература:
- •Физическая организация бд: структуры хранения и методы доступа
- •Доступ к базе данных
- •Кластеризация
- •Индексирование
- •Плотное и неплотное индексирование
- •Структуры типа б-дерева
- •Хеширование
- •Литература:
- •Оптимизация запросов
- •Пример оптимизации реляционного выражения
- •Обзор процесса оптимизации
- •Стадия 1. Преобразование запроса во внутреннюю форму
- •Стадия 2. Преобразование в каноническую форму
- •Стадия 3. Выбор потенциальных низкоуровневых процедур
- •Стадия 4. Генерация планов вычисления запроса и выбор плана с наименьшей стоимостью
- •Преобразование выражений
- •Выборки и проекции
- •Распределительный закон
- •Коммутативность и ассоциативность
- •Идемпотентность
- •Вычисляемые скалярные выражения
- •Условия
- •Семантические преобразования
- •Статистики базы данных
- •Литература:
- •Восстановление после сбоев
- •Транзакции
- •Понятие транзакции
- •Восстановление транзакции.
- •Свойства асид.
- •Алгоритм восстановления после сбоя системы
- •Восстановление после отказов системы
- •Параллелизм. Проблемы параллелизма
- •Проблема потери результатов обновления
- •Проблема незафиксированной зависимости
- •Проблема несовместимого анализа
- •Понятие блокировки
- •Решение проблем параллелизма
- •Проблема потери результатов обновления.
- •Проблема незафиксированной зависимости.
- •Проблема несовместимого анализа
- •Тупиковые ситуации
- •Способность к упорядочению
- •Уровни изоляции транзакции
- •Поддержка в языке sql
- •Литература:
- •Технологии субд
- •Распределенные базы данных
- •Предварительные замечания.
- •Принципы функционирования распределенной бд
- •Локальная автономия
- •Независимость от центрального узла
- •Непрерывное функционирование
- •Независимость от расположения
- •Независимость от фрагментации
- •Системы типа клиент/сервер
- •Серверы баз данных
- •Литература:
- •Современные постреляционные модели бд
- •Системы управления базами данных следующего поколения
- •Ориентация на расширенную реляционную модель
- •Абстрактные типы данных
- •Генерация систем баз данных, ориентированных на приложения
- •Поддержка исторической информации и темпоральных запросов
- •Объектно-ориентированные субд
- •Модель данных ообд
- •Идентификатор объекта
- •Новые типы данных
- •Оптимизация ядра субд
- •Язык субд и запросы
- •Транзакции в оосубд
- •Блокировки в оосубд
- •Ведение версий
- •Физические хранилища
- •Литература:
- •Regions
- •WorkPlan
- •Subjects
- •Teachers
- •Students
- •Приложение б.Описание структуры учебной базы данных.
Проблема несовместимого анализа
На Error: Reference source not found показаны транзакции A и B, которые выполняются для кортежей со счетами (табл. 9 .1 Типы данных в SQL.). При этом транзакция A суммирует балансы, транзакция B производит перевод суммы 10 со счета 3 на счет 1. Полученный в итоге транзакции A результат 110, очевидно, неверен, и если он будет записан в базе данных, то в ней может возникнуть проблема несовместимости. В таком случае говорят, что транзакция A встретилась с несовместимым состоянием и на его основе был выполнен несовместимый анализ. Обратите внимание на следующее различие между этим примером и предыдущим: здесь не идет речь о зависимости транзакции A от транзакции B, так как транзакция B выполнила все обновления до того, как транзакция A извлекла СЧЕТ 3.
табл. 15.6 Остатки на счетах до выполнения транзакций.
Счет |
СЧЕТ 1 |
СЧЕТ 2 |
СЧЕТ 3 |
Остаток |
40 |
50 |
30 |
Транзакция A |
Время |
Транзакция B |
Извлечение кортежа СЧЕТ 1: СУММА = 40 |
t1 |
– |
Извлечение кортежа СЧЕТ 1: СУММА = 90 |
t2 |
– |
– |
t3 |
Извлечение кортежа СЧЕТ 3: |
– |
t4 |
Обновление кортежа СЧЕТ 3: 30 ® 20 |
– |
t5 |
Извлечение кортежа СЧЕТ 1: |
– |
t6 |
Обновление кортежа СЧЕТ 1: 40 ® 50 |
– |
t7 |
Завершение выполнения транзакции |
Извлечение кортежа СЧЕТ 3: СУММА = 110 (а не 120) |
t8 |
– |
рис. 15.70. Транзакция A выполнила несовместимый анализ.
Понятие блокировки
Описанные выше проблемы могут быть разрешены с помощью методики управления параллельным выполнением процессов под названием блокировка. Ее основная идея очень проста: в случае, когда для выполнения некоторой транзакции необходимо, чтобы некоторый объект (обычно это кортеж базы данных) не изменялся непредсказуемо и без ведома этой транзакции (как это обычно бывает), такой объект блокируется. Таким образом, эффект блокировки состоит в том, чтобы "заблокировать доступ к этому объекту со стороны других транзакций", а значит, предотвратить непредсказуемое изменение этого объекта. Следовательно, первая транзакция в состоянии выполнить всю необходимую обработку с учетом того, что обрабатываемый объект остается в стабильном состоянии настолько долго, насколько это нужно.
Предположим, что в системе поддерживается два типа блокировок: блокировка без взаимного доступа (монопольная блокировка), называемая Х-блокировкой (X locks – exclusive locks), и блокировка с взаимным доступом, называемая S-блокировкой (S locks - Shared locks). Замечание. Х- и S-блокировки иногда называют блокировками записи и чтения соответственно. Предположим, что Х- и S-блокировки единственно возможные, хотя в коммерческих системах существуют блокировки других типов. Кроме того, допустим, что в кортежи являются единственным типом "блокируемого объекта", хотя опять же н в коммерческих системах могут блокироваться и другие объекты. Ниже показано функционирование механизма блокировок.
Если транзакция A блокирует кортеж р без возможности взаимного доступа (Х‑блокировка), то запрос другой транзакции B с блокировкой этого кортежа p будет отменен.
Если транзакция A блокирует кортеж р с возможностью взаимного доступа (S‑блокировка), то:
запрос со стороны некоторой транзакции B на Х‑блокировку кортежа будет отвергнут;
запрос со стороны некоторой транзакции B на S‑блокировку кортежа р будет принят (т.е. транзакция B также будет блокировать кортеж р с помощью S‑блокировки).
Эти правила можно наглядно представить в виде матрицы совместимости, показанной на Error: Reference source not found, и интерпретировать ее следующим образом. Рассмотрим некоторый кортеж р и предположим, что транзакция A блокирую кортеж р различными типами блокировки (это обозначено соответствующими символами S и X, а отсутствие блокировки — прочерком). Предположим также, что некоторая транзакция B запрашивает блокировку кортежа р, что обозначено в первом слева столбце матрицы на Error: Reference source not found (для полноты картины в таблице также приведен случай "отсутствия блокировки"). В других ячейках матрицы символ N обозначает конфликтную ситуацию (запрос со стороны транзакции B не может быть удовлетворен, и сама эта транзакция переходит в состояние ожидания), a Y – полную совместимость (запрос со стороны транзакции B удовлетворен). Очевидно, что эта матрица является симметричной.
|
X |
S |
– |
X |
N |
N |
Y |
S |
N |
Y |
Y |
– |
Y |
Y |
Y |
рис. 15.71. Матрица совместимости для Х- и S-блокировки.
Введем протокол доступа к данным, который на основе введения только что описанных Х- и S-блокировки позволяет избежать возникновения проблем параллелизма.
Транзакция, предназначенная для извлечения кортежа, прежде всего должна наложить S‑блокировку на этот кортеж.
Транзакция, предназначенная для обновления кортежа, прежде всего должна наложить Х–блокировку на этот кортеж. Иначе говоря, если, например, для последовательности действий типа извлечение/обновление для кортежа уже задана S-блокировка, то ее необходимо заменить Х‑блокировкой. Блокировки в транзакциях обычно задаются неявным образом: например, запрос на "извлечение кортежа" является неявным запросом с S-блокировкой, а запрос на "обновление кортежа" – неявным запросом с Х‑блокировкой соответствующего кортежа. При этом под термином "обновление" (как и ранее) подразумеваются помимо самих операций обновления также операции вставки и удаления.
Если запрашиваемая блокировка со стороны транзакции B отвергается из-за конфликта с некоторой другой блокировкой со стороны транзакции A, то транзакция B переходит в состояние ожидания. Причем транзакция B будет находиться в состоянии ожидания до тех пор, пока не будет снята блокировка, заданная транзакцией A. В системе обязательно должны быть предусмотрены способы устранения бесконечно долгого состояния ожидания транзакции B.
Х–блокировки сохраняются вплоть до конца выполнения транзакции (до операции "завершение выполнения" или "отмена выполнения"). S‑блокировки также обычно сохраняются вплоть до этого момента.