Слайд 2Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
СРС 2
Какие операторы SQL
используются для создания и удаления таблиц?
DDL
DQL
DML
DCL
_____ представляет собой именованную производную виртуальную таблицу, не существующую физически.
Таблица-источник
Запрос
Представление
Базовая таблица
Какой тип представления включает все строки, но лишь некоторые из столбцов таблицы-источника?
Соединенное
Подмножество столбцов
Групповое
Подмножество строк
Слайд 3Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
СРС 2
Какое условие целостности
данных требует, чтобы столбец содержал ненулевые значения?
Целостность сущности
Ссылочная целостность
Деловые правила
Необходимость данных
Для любого события, которое вызывает изменение содержимого таблицы, пользователь может указать связанное с ним действие, которое должна выполнить СУБД. Как называется это действие?
Журнал
Триггер
Целостность
Отношение
Слайд 4Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Обработка транзакций в базе
данных
Транзакция представляет собой последовательность одного или более операторов SQL, которые вместе образуют логическую элементарную операцию.
Для сохранения непротиворечивости базы данных должны быть выполнены все операторы, входящие в состав транзакции.
СУБД отвечает за обеспечение непротиворечивости базы данных. Это справедливо даже в случае аварийного завершения прикладной программы или отказа оборудования во время выполнения транзакции.
СУБД не должна допускать частичного выполнения транзакции при любых обстоятельствах.
Для поддержки непротиворечивости СУБД отменяет все изменения, сделанные незавершенной транзакцией.
Слайд 5Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Возврат транзакций
Обработка транзакций поддерживается
двумя операциями SQL:
Операция COMMIT (фиксация)
Операция ROLLBACK (откат)
Слайд 6Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Журнал транзакций
Для отмены изменений,
внесенных в базу данных, СУБД ведет журнал транзакций.
В журнале транзакций отслеживается все действия, выполненные транзакциями.
Когда пользователь выполняет оператор SQL, изменяющий базу данных, СУБД в этот момент делает запись в журнале транзакций.
Журнал транзакций отражает две копии каждой строки, на которую воздействовал оператор. В одной копии отражается строка до выполнения оператора, а в другой - измененная строка.
Если пользователь выполняет COMMIT, в журнал заносится завершение транзакции. Если пользователь выполняет ROLLBACK, СУБД ищет копии строк, записанные до внесения изменений.
Слайд 7Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Проблема совпадения во времени
В
многопользовательских системах обработка транзакций усложняется.
СУБД должна осуществлять восстановление после системных сбоев или ошибок, а также предотвращать взаимное влияние действий пользователей, чтобы они не мешали друг другу.
Существуют три проблемы, которые могут проявиться в многопользовательском окружении:
Проблема утери обновления
Проблема незафиксированной зависимости
Проблема противоречивости данных
Наиболее распространенным способом контроля совместного доступа к данным является механизм блокирования.
Слайд 8Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Блокировка
Для уверенности в том,
что конкретный объект базы данных не будет изменен непредсказуемым образом в условиях, когда возможность для этого существует, транзакция приобретает блокировку.
Результатом такой блокировки является запрет для всех других транзакций изменять объект базы данных.
Обрабатывать объект будет первая транзакция, и он будет оставаться стабильным до тех пор, пока транзакция этого требует.
Методика блокирования решает все три проблемы совпадения обращений во времени.
Блокировка может заставить транзакцию очень долго ждать, пока часть базы данных, доступ к которой необходим, заблокирована другими транзакциями.
Слайд 9Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Типы блокировок
Имеется два основных
типа блокировки:
Совместная: СУБД использует совместную блокировку, когда транзакции необходимо прочесть данные из базы данных. Другая транзакция, выполняемая в это же время, тоже может получить совместную блокировку на те же данные, которая разрешает чтение этих данных другим транзакциям.
Монопольная: СУБД использует монопольную блокировку, когда транзакции требуется обновить данные в базе данных. Когда транзакция приобретает монопольную блокировку на какие-либо данные, никакая другая транзакция не сможет получить ни совместной, ни монопольной блокировки тех же данных.
Слайд 10Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Взаимная блокировка
Вместе с блокировкой
может появиться и проблема взаимной блокировки.
Взаимная блокировка представляет собой ситуацию, когда две или более транзакций пребывают в одновременном состоянии ожидания, и каждая из них ждет, пока другая снимет блокировку, чтобы продолжить работу.
Для того, чтобы принять меры при появлении взаимной блокировки, СУБД периодически проверяет блокировки, удерживаемые различными транзакциями.
Обнаружив взаимную блокировку, СУБД выбирает одну из транзакций, как "жертву", и выполняет для нее откат. При этом снимается блокировка, удерживаемая транзакцией, и другая транзакция получает возможность продолжить работу.
Пострадавшая транзакция получает сообщение об ошибке, информирующее о снятии взаимной блокировки и об откате выполненных действий.
Если неприятности от взаимной блокировки появились при работе с SQL в интерактивном режиме, операторы SQL можно ввести заново.
Если взаимная блокировка произошла в прикладной программе, должна сработать предусмотренная возможность обработки такой ситуации.
Слайд 11Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Безопасность базы данных
Требования
безопасности базы данных многочисленны и многообразны.
Вот некоторые типичные примеры требований безопасности:
Данные в таблице должны быть доступны только определенным пользователям.
Только избранным пользователям следует разрешать обновление базы данных, остальным пользователям разрешается просмотр данных и работа с ними.
Для некоторых таблиц доступ должен быть ограничен несколькими столбцами.
Только избранным пользователям может быть разрешен доступ к таблицам с использованием прикладных программ.
Ответственность за соблюдение требований безопасности возлагается на СУБД.
Слайд 12Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Концепции схемы безопасности
Схема безопасности
СУБД основывается на трех концепциях:
Пользователи
Объекты базы данных
Привилегии
Слайд 13Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Пользователи
Каждому пользователю присваивается
идентификатор, определяющий пользователя в программном обеспечении СУБД.
Идентификатор пользователя определяет, будет ли оператор разрешен или отвергнут СУБД.
В большинстве СУБД вместе с идентификатором пользователя должен быть указан связанный с ним пароль. СУБД проверяет пароль, чтобы убедиться в полномочиях пользователя работать под указанным идентификатором.
В зависимости от ситуации:
Каждый пользователь получает отдельный идентификатор.
Идентификатор присваивается двум или более пользователей.
В больших производственных базах данных работают группы пользователей с одинаковыми интересами. В пределах каждой группы пользователи имеют идентичные потребности на доступ к данным.
Слайд 14Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Объекты базы данных
К
определенным объектам базы данных применяются ограничения по безопасности.
Такими объектами являются:
Таблицы
Представления
Каждая таблица или представление могут быть защищены индивидуально.
Доступ к таблице или представлению может быть разрешен для одних пользователей и запрещен для других.
Слайд 15Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Привилегии
Привилегиями называется набор
действий, которые пользователь может выполнять с объектами базы данных.
Для таблиц и представлений можно указать четыре привилегии:
Привилегия SELECT
Привилегия INSERT
Привилегия DELETE
Привилегия UPDATE
Владелец таблицы имеет все привилегии на эту таблицу.
Владелец может предоставить другим пользователям привилегии на доступ к этой таблице.
Владелец представления имеет только привилегию SELECT.
Чтобы пользоваться другими привилегиями, владелец представления должен получить привилегии на таблицы-источники этого представления.
Слайд 16Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Организация схемы безопасности
Схема
безопасности для базы данных может быть организована при помощи следующих операторов SQL:
GRANT (предоставление полномочий)
REVOKE (отмена полномочий)
Для того, чтобы выполнить любую операцию в базе данных, пользователь должен иметь соответствующие полномочия для этой операции.
Слайд 17Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Предоставление привилегий
С помощью
оператора GRANT Вы можете указать:
Конкретный перечень предоставляемых привилегий
Имя таблицы, к которой относятся привилегии
Идентификатор пользователя, которому предоставляются привилегии
Все привилегии могут быть предоставлены пользователю при помощи одного оператора:
GRANT ALL PRIVILEGES ON <имя таблицы> TO <пользователь>
Вместо того, чтобы предоставлять привилегии всем пользователям поодиночке, вы можете сделать это одним оператором:
GRANT <имя привилегии> ON <имя таблицы> TO PUBLIC
Ключевое слово PUBLIC используется для предоставления привилегий всем полномочным пользователям базы данных.
Привилегия может бать также предоставлена только для указанных столбцов таблицы или представления:
GRANT UPDATE(<имя столбца>) ON <имя таблицы> TO <пользователь>
Слайд 18Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Передача привилегий
Вы можете
предоставить привилегию другому пользователю и разрешить ему передавать привилегию остальным пользователям.
В SQL это осуществляется при помощи раздела WITH GRANT OPTION оператора GRANT:
GRANT <имя привилегии> ON <имя таблицы> TO <пользователь1> WITH GRANT OPTION
Слайд 19Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Отмена привилегий
Предоставленные привилегии
можно отменить.
Оператор REVOKE отбирает все или некоторые из предоставленных привилегий.
Точно так же, как все привилегии могут быть предоставлены одним оператором, так и отмена всех привилегий возможна при помощи одного оператора.
Соответственно, одним оператором можно отменить привилегию и для все пользователей.
Слайд 20Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Представления и безопасность
Представления
играют ключевую роль в безопасности.
Представления дают возможность точно контролировать, какие именно данные сделаны видимыми для пользователя.
Если в созданное представление включены лишь некоторые из столбцов, доступ пользователя к таблице ограничен только этими столбцами, определенными в представлении.
Слайд 21Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Выводы
На этом уроке Вы
узнали, что:
Транзакции представляют собой последовательность, состоящую из одного или нескольких операторов SQL, которые вместе образуют элементарную логическую операцию.
Для сохранения непротиворечивости базы данных должны быть выполнены все операторы, входящие в состав транзакции.
Для поддержания непротиворечивости СУБД отменяет все действия, выполненные незавершенной транзакцией.
Операции SQL, поддерживающие обработку транзакций:
Операция COMMIT
Операция ROLLBACK
Для отмены изменений, внесенных в базу данных, СУБД ведет журнал транзакций. Журнал транзакций отслеживает все действия, выполненные транзакциями.
Слайд 22Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Выводы (продолжение..)
В многопользовательских
системах обработка транзакций усложняется. Существуют три проблемы, которые могут появиться в многопользовательском окружении:
Проблема утери обновления
Проблема незафиксированной зависимости
Проблема противоречивости данных
Методика блокирования решает все три проблемы совпадения обращений во времени. Однако, она может заставить транзакцию очень долго ждать, пока часть базы данных, доступ к которой необходим, заблокирована другими транзакциями.
Взаимная блокировка представляет собой ситуацию, когда две или более транзакций пребывают в одновременном состоянии ожидания, и каждая из них ждет, пока другая снимет блокировку, чтобы продолжить работу.
Слайд 23Выполнение транзакций и безопасность
Урок 3B / Слайд из 25
Выводы (продолжение..)
Требования безопасности
базы данных многочисленны и многообразны. Вот некоторые типичные примеры требований безопасности:
Данные в таблице должны быть доступны только определенным пользователям.
Только избранным пользователям следует разрешать обновление базы данных, остальным пользователям разрешается просмотр данных и работа с ними.
Для некоторых таблиц доступ должен быть ограничен несколькими столбцами.
Только избранным пользователям может быть разрешен доступ к таблицам с использованием прикладных программ.
Схема безопасности СУБД основывается на трех концепциях:
Пользователи
Объекты базы данных
Привилегии
Объектами, к которым применяются ограничения по безопасности, являются:
Таблицы
Представления