- •1. Информация о дисциплине
- •1.1. Предисловие
- •Место дисциплины в учебном процессе
- •1.2. Содержание дисциплины и виды учебной работы Содержание дисциплины по гос
- •1.1. Субд – основа информационных систем (8 часов)
- •1.2. Современные архитектуры ис (4 часа)
- •1.2.1. Объем дисциплины и виды учебной работы
- •1.2.2. Перечень видов практических занятий и контроля:
- •2. Рабочие учебные материалы
- •2.1. Рабочая программа (объем дисциплины 140 часов)
- •Раздел 1. Назначение и основные компоненты системы баз данных (12 часов)
- •Раздел 2. Архитектура банка данных(20 часов)
- •2.1. Уровни представления баз данных (5 часов)
- •2.2. Категории пользователей банков данных (5 часов)
- •2.3. Концепции и этапы проектирования баз данных (10 часов)
- •Раздел 3. Модели и типы данных в бд (24 часа)
- •3.1. Представление концептуальной модели средствами субд (14 часов)
- •3.2. Типовые модели данных субд (10 часов)
- •Раздел 4. Базовые элементы реляционных бд (25 часов)
- •4.1. Проектирование реляционной базы данных (9 часов)
- •4.2. Нормализация отношений в бд (16 часов)
- •Раздел 5. Язык структурированных запросов sql (28 часов)
- •5.1. Язык манипулирования данными для реляционной модели (8 часов)
- •5.2. Реализация запросов в языке sql (20 часов)
- •Раздел 6. Использование баз данных (28 часов)
- •2.2. Тематические планы дисциплины
- •2.2.1. Тематический план дисциплины для студентов очной формы обучения
- •2.2.2. Тематический план дисциплины для студентов очно-заочной формы обучения
- •2.2.3. Тематический план дисциплины для студентов заочной формы обучения
- •2.3. Структурно-логическая схема дисциплины
- •2.4. Временной график изучения дисциплины
- •2.5. Практический блок Практические занятия (очная форма обучения)
- •Практические занятия (очно-заочная)
- •Практические занятия (заочная формы обучения)
- •Лабораторные работы (очная форма обучения)
- •Лабораторные работы (очно-заочная форма обучения)
- •Лабораторные работы (заочная форма обучения)
- •2.6. Балльно-рейтинговая система
- •3. Информационные ресурсы дисциплины
- •3.1. Библиографический список
- •3.2. Опорный конспект введение
- •Раздел 1. Назначение и основные компоненты системы баз данных
- •1.1. Субд – основа информационных систем
- •1.1.1. Эволюция развития систем управления данными
- •1.1.2. Локальная технология
- •1.1.3. Архитектура с сетью и файловым сервером
- •1.2. Современные архитектуры ис
- •1.2.1. Архитектура "клиент – сервер"
- •1.2.2. Трехзвенная архитектура "клиент – сервер"
- •1.2.3. Архитектура Intranet-приложений
- •Вопросы для самопроверки по теме 1.2
- •Раздел 2. Архитектура банка данных
- •2.1. Уровни представления баз данных
- •2.1.1. Основная терминология
- •2.1.2. Архитектура базы данных.
- •2.1.3. Процесс прохождения пользовательского запроса в субд
- •2.2. Категории пользователей банков данных
- •2.2.1. Классификация пользователей БнД
- •2.2.2. Основные функции группы администратора бд
- •2.3. Концепции и этапы проектирования баз данных
- •2.3.1. Жизненный цикл бд
- •2.3.2. Общая структура процесса проектирования бд
- •Раздел 3. Модели и типы данных в бд
- •3.1. Представление концептуальной модели средствами субд
- •3.1.1. Общие представления о моделях данных субд
- •3.1.2. Классификация моделей данных
- •3.2. Типовые модели данных субд
- •3.2.1. Иерархическая и сетевая модель данных
- •3.2.2. Реляционная и постреляционная модель данных
- •3.2.3. Многомерная модель данных
- •Раздел 4. Базовые элементы реляционных бд
- •4.1. Проектирование реляционной базы данных
- •4.1.1. Свойства и виды отношений
- •4.1.2. Реляционная алгебра
- •4.2. Нормализация отношений в бд
- •4.2.1. Понятие о нормальных формах
- •4.2.2. Формальные методы синтеза и декомпозиции нормальных форм
- •4.2.3. Проектирование с использованием метода сущность – связь
- •Раздел 5. Язык структурированных запросов sql
- •5.1. Язык манипулирования данными для реляционной модели
- •5.1.1. Назначение и история языка sql
- •5.1.2. Операторы языка sql
- •5.1.3. Модификация хранимых отношений в субд
- •5.2. Реализация запросов в языке sql
- •5.2.1. Примеры запросов
- •5.2.2. Агрегатные функции
- •5.2.3. Хранимые запросы
- •Области применения триггеров и хранимых процедур
- •Раздел 6. Использование бд
- •6.1. Программирование и управление транзакциями
- •6.1.1. Управление транзакциями в системах баз данных
- •6.1.2. Менеджеры транзакций
- •6.1.3. Параллельное выполнение транзакций
- •6.1.4. Методы сериализации транзакций.
- •6.1.5. Уровни изолированности пользователей.
- •6.2. Защита баз данных. Целостность и сохранность баз данных
- •6.2.1. Методы обеспечения безопасности
- •6.2.2. Программно-технический аспект информационной безопасности
- •6.2.3. Избирательное и мандатное управление доступом
- •6.3. Современные субд. Тенденции построения и использования баз данных
- •6.3.1. Объектная и реляционная технология
- •6.3.2. Объектно-реляционные субд
- •6.3.3. Критерии сравнения субд
- •Заключение
- •3.3 Глоссарий
- •3.4. Учебное пособие
- •3.5. Методические указания к выполнению лабораторных работ
- •3.5.1. Общие указания
- •3.6. Методические указания к выполнению практических занятий
- •3.6.1. Задания на практические занятия
- •3.6.2. Методические указания к выполнению практических заданий
- •4. Блок контроля освоения дисциплины
- •4.1. Общие указания
- •4.2. Задание на курсовой проект и методические указания к его выполнению
- •Тематика курсовых проектов
- •Рекомендуемые государственные стандарты
- •Пример оформления титульного листа
- •Задание на курсовой проект по дисциплине
- •4.3. Текущий контроль Тренировочные тесты Тест № 1 (по разделу 1)
- •8. Информационная система (ис) – это …
- •Тест №2 (по разделу 2)
- •Тест № 3 (по разделу 3)
- •8. При создании схемы таблицы бд следует описать:
- •Тест № 4 (по разделу 4)
- •Тест № 5 (по разделу 5)
- •Тест № 6 (по разделу 6)
- •3. Согласованность транзакции означает…
- •4. Изоляция транзакции означает…
- •5. Сохранность транзакции означает…
- •6. Транзакция продолжается до тех пор, пока не произойдет одно из следующих событий:
- •7. Оператор commit означает…
- •8. Оператор rollback означает…
- •Правильные ответы на тренировочные тесты
- •4.4. Итоговый контроль Вопросы для подготовки к экзамену
- •Приложение 1. Определение данных в sql.
- •Приложение 2. Журнализация изменений базы данных
- •Приложение 3. Система безопасности в субд
- •1. Информация о дисциплине 3
- •2. Рабочие учебные материалы 6
- •3. Информационные ресурсы дисциплины 23
- •4. Блок контроля освоения дисциплины 143
- •191186, Санкт-Петербург, ул. Миллионная, 5
6.1.2. Менеджеры транзакций
БД предполагает одновременную работу нескольких пользователей, поэтому СУБД должна не только корректно выполнить индивидуальные транзакции и восстанавливать согласованное состояние базы данных при сбоях, но и обеспечить корректную параллельную работу всех пользователей с общими данными (независимо от их организации: хешированные, индексированные файлы). Отметим, что физическая организация базы данных существенно влияет на скорость исполнения транзакций.
В любой СУБД существует подсистема, отвечающая за выполнение и обработку транзакций, управление параллельностью и выполнение восстановления системы (рис. 6.2).
Рис. 6.2. Подсистема обработки транзакций типичной СУБД.
Менеджер (диспетчер) транзакций осуществляет координацию работы транзакций, инециализируемых прикладными программами. Он взаимодействует с планировщиком (менеджер блокировок), отвечающим за реализацию выбранной стратегии управления параллельностью; второе название применимо в том случае, если выбран протокол управления на основе системы блокировок. Цель работы планировщика – достижение максимально возможного уровня параллельности, при условии исключения влияния параллельно выполняющихся транзакций друг на друга, поскольку это может послужить источником нарушения целостности, согласованности базы данных. Если в процессе выполнения транзакции происходит откат, то база данных может находиться в несогласованном состоянии. Задачей менеджера восстановления является предоставление гарантий того, что в подобном случае база данных будет автоматически восстановлена в то состояние, в котором она находилась на момент начала выполнения транзакции. Менеджер буферов отвечает за передачу данных основной памяти компьютера и вторичной дисковой памяти.
В зависимости от реализации подсистемы обработки транзакций, ресурс подлежащий диспетчеризации может быть установлен на уровне следующих объектов:
База данных,
Отдельный файл,
Отдельная страница (обычно это сектор (группа секторов) на физическом диске) файла,
Отдельная запись (строка таблицы),
Отдельное поле в записи.
6.1.3. Параллельное выполнение транзакций
Несмотря на то, что каждая транзакция должна обладать свойством изолированности и может сама по себе может выполняться корректно, их совместное исполнение способно приводить к неверным результатам, нарушающим целостность и согласованность БД. Средства СУБД позволяют изолировать пользователей друг от друга, однако в этом случае возникают проблемы с замедлением работы. Рассмотрим проблемы, возникающие при параллельной обработке модифицирующих транзакций; их принято подразделять на 4 класса (в качестве примера ресурса выбран объект - запись):
Проблемы пропавших (незафиксированных) изменений. Эта ситуация может возникнуть в том случае, когда две транзакции одновременно выполняют изменения в одной и той же записи. Например, два оператора работают на приеме заказов. Первый оператор (T1) принял заказ на 30 единиц товара, в то время когда на складе хранилось 40 единиц товара. Получив подтверждение на заказ от покупателя, оператором был выставлен счет на это количество товара и оформлена покупка (новое количество товара на складе будет 10). В это же время второй оператор (T2) принимает заказ на 20 единиц, принимая во внимание начальное их количество на складе – 40 штук, и также оформляет покупку. Таким образом, было продано 50 единиц, в то время как фактически их количество – 40, и на складе зафиксируется остаток не соответствующий действительности. Решение этой проблемы состоит в том, чтобы транзакции T2 запретить доступ к базе, пока транзакция T1 не завершится.
Проблемы промежуточных данных. Рассмотрим эту же ситуацию. T1 ведет переговоры с заказчиком и указывает в заказе 30 единиц товара, однако перед окончательным выставлением счета он намеревается уточнить некоторые характеристики товара. На диске уже зафиксированы изменения в остатках товара на складе, произведенные первым оператором (остаток – 10 ед. товара). В это время T2 работает над формированием собственного заказа на 20 ед. товара, и последние данные по остаткам товара не позволяют ему этот заказ сформировать; приложение T2 оканчивает работу. После уточнения характеристик покупаемого товара, первый заказчик отказывается от покупки 30 единиц товара, и приложение T1 выполняет откат транзакции, возвращая нас к исходному значению товара на складе в 40 единиц. Такая ситуация сложилась по той причине, что в процессе выполнения второй транзакции был открыт доступ к данным, которые сформировала первая транзакция.
Проблема несогласованных данных. Пусть, приступая к работе, оба оператора получают информацию о наличие на складе 40 ед. товара. T1 завершает переговоры со своим клиентом и продает ему 30 ед. товара и транзакция завершается оператором COMMIT. Состояние базы данных расценивается как непротиворечивое. Пока второй оператор согласовывал условия заказа, он получает новое состояние склада, которое уже успело измениться. База данных находится в непротиворечивом состоянии, однако второй оператор считает, что нарушена целостность выполнения его транзакции. Это состояние возникло по той причине, что транзакция T1 смогла изменить кортеж с данными, который уже был прочитан T2 .
Проблемы фантомных записей. Предположим, что необходимо подготовить два отчета за анализируемый период: стандартный и расширенный. В то время когда приложение печати начинает формировать первый отчет, оператор принимает еще один заказ, укладывающийся в указанный период. Это приводит к тому, что к моменту формирования расширенного отчета в базе данных появились новые данные. Полученные отчеты в рамках одной транзакции содержат противоречивые данные. Это вызвано тем, что, хотя база данных находилась в согласованном состоянии, приложения печати работали некорректно.
Сериализация транзакций.
Во избежание рассмотренных проблем в СУБД используется определенная процедура, обеспечивающая согласованность выполнения параллельных транзакций, т.е. изолированность транзакций. Эта процедура носит название сериализации транзакций. Для поддержки параллельной работы транзакции строится специальный план. План выполнения набора транзакций называется сериальным, если результат совместного выполнения транзакций эквивалентен результату некоторого последовательного выполнения этих же транзакций.
Сериализация транзакций - это механизм выполнения транзакций по некоторому сериальному плану (графику). Обеспечение такого механизма является функцией компонента СУБД, ответственного за управление транзакциями.
Сериализация опирается на следующие правила:
В процессе выполнения транзакции программа «видит» только согласованные состояния базы данных; пользователь никогда не может получить доступ к незафиксированным изменениям в данных, достигнутым в результате действия другой программы;
Если две транзакции T1 и T2 выполняются параллельно, то СУБД полагает, что результат будет такой же, как если бы: – транзакция T1 выполнялась бы первой, а за ней – выполнялась другая транзакция T2, т.е. последовательно.
Основная реализационная проблема состоит в выборе сериализации набора транзакций, который не слишком бы ограничивал их параллельность; наиболее простым может быть выбор последовательного выполнения транзакций.
Существующие практические методы сериализации основываются на учете этих конфликтов с использованием хранимого журнала транзакций (см. приложение 3 [qqq]).
