
- •Классификация субд [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, Необходимость в атомарных транзакциях
- •П , Параллельная обработка транзакций
- •Проблема потерянного обновления
- •Блокировка ресурсов
- •Блокировочная терминология
- •Сериализуемые транзакции
- •Взаимная блокировка
- •Оптимистическая и пессимистическая блокировки
- •Объявление характеристик блокировки
- •Свойства транзакций
- •Атомарность
- •Долговечность или устойчивость
- •Согласованность
- •Изолированность транзакции. Уровни изоляции
- •Типы курсоров
36, Необходимость в атомарных транзакциях
В большинстве приложений баз данных работа пользователей организована в форме транзакций (transactions), известных также как логические единицы работы (logical units of work, LUW). Транзакция - это последовательность действий с базой данных, в которой либо все действия выполняются успешно, либо не выполняется ни одно из них (в последнем случае база данных остается без изменений). Такая транзакция иногда называется атомарной (atomic), поскольку она выполняется как единое целое.
Рассмотрим пример действий с базой данных, которые могут потребоваться при регистрации нового заказа.
Изменить запись данного покупателя, увеличив сумму к оплате.
Изменить запись продавца, увеличив сумму комиссионных.
Вставить в базу данных запись о новом заказе.
Предположим, что на последнем шаге нас постигла неудача – например, из-за недостатка файлового пространства. Если бы выполнены были только первые два действия, но не третье, то возникло бы недоразумение. Покупателю был бы выставлен счет за заказ, который он не получал, а продавец получил бы комиссионные за товар, который он не отправлял покупателю. Ясно, что эти три действия должны выполняться как единое целое: либо все сразу, либо ни одного.
На рис. 1 и 2 приведено сравнение результатов этих действий в виде последовательности независимых шагов (рис. 1) и в виде атомарной транзакции (рис. 2). Обратите внимание, что когда терпит неудачу одно из действий, составляющих атомарную транзакцию, то изменения в базе данных не производятся. Также обратите внимание, что для указания рамок транзакции прикладная программа должна дать команды на начало транзакции (Start Transaction), сохранение транзакции (Commit Transaction) и откат транзакции (Rollback Transaction). Конкретная форма этих команд различается в разных СУБД.
Рис. 1. Последовательность в транзакциях – ошибки без использования транзакции
Рис. 2. Последовательность в транзакциях – атомарная транзакция предотвращает ошибки
П , Параллельная обработка транзакций
Если в базе данных в одно и то же время происходит обработка двух транзакций, то транзакции называются параллельными (concurrent transactions).
Хотя у пользователей может создаваться впечатление, что их транзакции обрабатываются одновременно, это не может быть так, ибо процессор машины, обрабатывающей базу данных, способен выполнять только одну инструкцию в каждый момент времени. Обычно транзакции выполняются попеременно, то есть операционная система переключает процессор между несколькими задачами, так что за заданный промежуток времени выполняется некоторая часть каждой из них. Это переключение между задачами происходит столь быстро, что два человека, сидящие бок о бок перед двумя компьютерами и работающие с одной и той же базой данных, могут подумать, что их транзакции выполняются одновременно; в реальности же они перемежаются.
На рис. 3 показаны две параллельные транзакции. Транзакция пользователя А считывает элемент 100, изменяет его и записывает обратно в базу данных. Транзакция пользователя В выполняет те же самые действия, но с элементом 200. Процессор обрабатывает транзакцию пользователя А, пока не произойдет прерывание ввода-вывода или какая-либо иная задержка пользователя А. Тогда процессор переключается на пользователя В и обрабатывает его транзакцию до прихода прерывания, после чего операционная система передает управление обратно транзакции первого пользователя. Пользователям обработка кажется одновременной, но на самом деле она попеременная, или параллельная.
Рис. 3. Пример параллельной обработки запросов 2-х пользователей
37, ПАРАЛЛЕЛЬНАЯ ОБРАБОТКА ДАННЫХ: ПРОБЛЕМА ПОТЕРЯННОГО ОБНОВЛЕНИЯ, ПРОБЛЕМА НЕСОГЛАСОВАННОГО ЧТЕНИЯ.