
- •Классификация субд [5]
- •Функции субд
- •Централизованная архитектура
- •Технология с сетью и файловым сервером (архитектура «файл-сервер»)
- •Технология «клиент-сервер»
- •Трехзвенная (трехуровневая) архитектура
- •Реляционная модель данных
- •Методология idef1x
- •Определение отношения, домена, кортежа, реляционной базы данных, ключей
- •Связи между отношениями (таблицами)
- •Базовые теоретико-множественные операции реляционной алгебры
- •Специальные операции реляционной алгебры
- •Аномалии обновления
- •Первая Нормальная Форма
- •Определение функциональной зависимости
- •Функциональные зависимости отношений и математическое понятие функциональной зависимости
- •Вторая Нормальная Форма
- •Определение
- •3Нф (Третья Нормальная Форма)
- •Алгоритм нормализации (приведение к 3нф)
- •Реляционная модель данных: сравнение нормализованных и ненормализованных моделей.
- •16, Сравнение нормализованных и ненормализованных моделей
- •Null-значения
- •Потенциальные ключи
- •Целостность сущностей
- •Внешние ключи
- •Целостность внешних ключей
- •Замечания к правилам целостности сущностей и внешних ключей
- •Операции, которые могут нарушить ссылочную целостность
- •Для родительского отношения
- •Для дочернего отношения
- •20, Целостность реляционных данных: стратегии поддержания ссылочной целостности.
- •Стратегии поддержания ссылочной целостности
- •Операторы ddl (Data Definition Language) - операторы определения объектов базы данных
- •Create table – создать таблицу
- •Оператор check
- •Определение первичных и альтернативных ключей с помощью оператора alter
- •Операторы drop
- •Выборка данных
- •Сортировка результатов
- •Встроенные функции sql
- •Средства модификации данных языка sql
- •Вставка данных – insert
- •Изменение данных – update
- •Удаление данных – delete
- •Выборка данных
- •Представления
- •Применение представлений
- •Обновление представлений
- •Триггеры
- •Хранимые процедуры
- •Большая безопасность и меньший сетевой трафик.
- •Sql можно оптимизировать
- •Совместное использование кода:
- •Структура памяти эвм
- •Представление экземпляра логической записи
- •Организация обмена между оперативной и внешней памятью
- •Структуры хранения данных во внешней памяти эвм
- •Назначение и проверка полномочий, проверка подлинности
- •Средства защиты базы данных
- •Архитектура системы безопасности ms sql Server
- •34.Роли сервера
- •35, Права доступа
- •36, Необходимость в атомарных транзакциях
- •П , Параллельная обработка транзакций
- •Проблема потерянного обновления
- •Блокировка ресурсов
- •Блокировочная терминология
- •Сериализуемые транзакции
- •Взаимная блокировка
- •Оптимистическая и пессимистическая блокировки
- •Объявление характеристик блокировки
- •Свойства транзакций
- •Атомарность
- •Долговечность или устойчивость
- •Согласованность
- •Изолированность транзакции. Уровни изоляции
- •Типы курсоров
Сериализуемые транзакции
Когда две или более транзакции обрабатываются параллельно, их результаты, сохраняемые в базе данных, должны быть логически согласованы с результатами, которые получились бы, если бы данные транзакции обрабатывались произвольным последовательным способом. Такая схема обработки параллельных транзакций называется сериализуемой (serializable).
Сериализуемость может быть достигнута несколькими способами. Один из способов — обработка транзакций с использованием двухфазной блокировки (two-phase locking). При этой стратегии транзакциям позволяется налагать блокировки по мере необходимости, но как только первая блокировка снимается, данная транзакция уже не может наложить никаких других блокировок. Таким образом, транзакции имеют фазу нарастания (growing phase), на которой блокировки налагаются, и фазу сжатия (shrinking phase), на которой блокировки снимаются.
В ряде СУБД используется особая разновидность двухфазной блокировки. В этом случае блокировки налагаются на всем протяжении транзакции, но ни одна блокировка не освобождается, пока не будет выдана команда COMMIT (сохранение) или ROLLBACK (откат, возврат к предыдущему состоянию). Эта стратегия имеет более ограничительный характер, чем требуется для двухфазной блокировки, зато ее легче реализовать.
Вообще говоря, рамки транзакции должны соответствовать границам представления базы данных, которое она обрабатывает. В двухфазной стратегии строки каждого отношения в представлении блокируются по мере необходимости. Изменения производятся, но информация не записывается в базу данных, пока представление не будет полностью обработано. После этого изменения сохраняются в базе данных, и все блокировки снимаются.
Рассмотрим ввод заказа с помощью представления ЗАКАЗ–ПОКУПАТЕЛЬ, базирующегося на таблицах ПОКУПАТЕЛЬ, ПРОДАВЕЦ и ЗАКАЗ. Чтобы гарантировать, что база данных не пострадает от аномалий, вызванных параллельной обработкой, транзакция ввода заказа налагает блокировки на таблицы ПОКУПАТЕЛЬ, ПРОДАВЕЦ и ЗАКАЗ по мере необходимости, производит все необходимые изменения в базе данных, а затем снимает блокировки.
40, БЛОКИРОВКА РЕСУРСОВ: ВЗАИМНАЯ БЛОКИРОВКА.
Взаимная блокировка
Решая одну проблему, блокировка способна вызвать другую. Посмотрим, что может произойти, когда два пользователя хотят заказать две единицы товара. Предположим, что пользователь А хочет заказать бумагу, и если он сможет получить ее, то хочет заказать и карандаши. Теперь предположим, что пользователь В хочет заказать карандаши, а если удастся достать их, то он закажет еще и бумагу. Возможный порядок обработки показан на рис. 6.
Рис. 6. Взаимная блокировка
На этом рисунке пользователи А и В оказываются в ситуации, которая носит название взаимной блокировки (deadlock), или «смертельного объятия» (deadly embrace). Каждый из них ожидает освобождения ресурса, заблокированного другим пользователем. Есть два распространенных способа решения этой проблемы: не допускать возникновения взаимных блокировок либо позволять им возникать, а затем распутывать их.
Предотвратить возникновение взаимной блокировки можно несколькими способами. Первый из них – заставлять пользователей блокировать все требуемые ресурсы сразу. Если бы, например, пользователь А на рисунке с самого начала заблокировал и карандаши, и бумагу, взаимная блокировка не возникла бы. Второй способ предотвратить взаимную блокировку – потребовать от всех прикладных программ блокировать ресурсы в одном и том же порядке. Даже если не все приложения будут налагать блокировки таким образом, вероятность возникновения взаимной блокировки снизится хотя бы для тех приложений, которые используют данную стратегию. Эту философию можно распространить на организационные стандарты программирования следующим образом: «При обработке строк таблиц в связи родитель-потомок всегда блокируй сначала родителя, затем потомка». Это, по крайней мере, снизит вероятность взаимной блокировки, а может и вовсе исключить ее.
Почти в каждой СУБД имеются алгоритмы обнаружения взаимной блокировки. Когда происходит взаимная блокировка, обычное решение состоит в том, чтобы отменить одну из транзакций, тем самым удалив из базы данных произведенные ею изменения.
41,БЛОКИРОВКА РЕСУРСОВ: ОПТИМИСТИЧЕСКАЯ И ПЕССИМИСТИЧЕСКАЯ БЛОКИРОВКИ.