- •Базы данных: основные понятия и определения. Требования, предъявляемые к базам данных.
- •Выбор хранимых данных.
- •Реляционная модель данных.
- •Реляционная алгебра.
- •Методология проектирования баз данных. Основные задачи проектирования баз данных.
- •Основные этапы проектирования баз данных.
- •Концептуальное (инфологическое) проектирование бд.
- •Логическое (даталогическое) проектирование бд.
- •Принципы и средства структурного подхода к разработке по.
- •Методология структурного анализа и проектирования sadt.
- •Диаграммы потоков данных: внешние сущности, системы и подсистемы, процессы, хранилища данных, потоки данных. Нотация Гейна – Сарсона.
- •Сравнительный анализ sadt-моделей и диаграмм потоков данных.
- •Функциональные модели, используемые на стадии проектирования.
- •Методология моделирования idef3: составные элементы, объекты ссылок, перекрестки.
- •Подходы к моделированию в базах данных.
- •Анализ предметной области. Описание объектов и их свойств. Связи между элементами моделей данных. Описание сложных объектов.
- •Проблема целостности базы данных.
- •Даталогическое проектирование. Нотация Питера Чена. Нотация idef 1х.
- •Проектирование реляционных баз данных на основе принципов нормализации. Правила технической нормализации.
- •Алгоритм процесса нормализации схем отношений.
- •Нормализация. Функциональная зависимость. Первая, вторая, нормальные формы.
- •Нормализация. Функциональная зависимость. Третья нормальная форма.
- •Нормализация. Функциональная зависимость. Нормальная форма Бойса – Кодда.
- •Разработка реляционных баз данных на основе принципов нормализации.
- •Основные аксиомы Армстронга. Замыкание.
- •Нормальные формы высших порядков.
- •Методологии проектирования.
- •Инфологическое моделирование данных: модель «сущность-связь».
- •Принципы поддержки целостности в реляционной модели данных.
- •Моделирование данных. Метод Баркера.
- •Моделирование данных. Метод idef1x.
- •Case-средство для концептуального моделирования данных на стадии формирования требований к ис – Silverrun.
- •Нормализация. Функциональная зависимость. Первая, вторая, третья нормальные формы. Нормальная форма Бойса – Кодда.
- •Инструментальные средства моделирования. Проектирование баз данных с использованием са erWin Data Modeler (erWin).
- •Алгоритм перехода от er – модели к реляционной схеме данных.
- •Основные принципы объектно-ориентированного моделирования.
- •Сущность методологии объектно-ориентированного анализа и проектирования.
- •Язык объектного моделирования uml. Виды диаграмм uml. Последовательность построения диаграмм.
- •Модель прецедентов (вариантов использования, use-cases).
- •Моделирование статической структуры системы с помощью диаграммы классов: стереотипы классов.
- •Моделирование статической структуры системы с помощью диаграммы классов: механизм пакетов.
- •Моделирование статической структуры системы с помощью диаграммы классов: атрибуты.
- •Моделирование статической структуры системы с помощью диаграммы классов: основные и вспомогательные операции.
- •Моделирование статической структуры системы с помощью диаграммы классов: типы связей.
- •Инкапсуляция, наследование, полиморфизм.
- •Моделирование поведения системы.
- •Использование диаграммы последовательностей для упорядочивания сообщений во времени.
- •Использование диаграммы кооперации для описания структурной организации объектов.
- •Моделирование физических аспектов функционирования системы с помощью диаграмм развертывания.
- •Особенности построения физической модели базы данных.
- •Ограничения ссылочной целостности.
- •Моделирование процессов обработки данных.
- •Индексирование.
- •Методы совместного доступа к базам данных.
- •Транзакции и блокировки.
- •Типы параллелизма.
- •Вертикальный гибридный
- •Свойства транзакций. Способы завершения транзакций.
- •Проблемы параллельного выполнения транзакций.
- •Методы сериализации транзакций. Механизм блокировок. Типы конфликтов.
- •Если одна транзакция заблокировала данные, то остальные транзакции при обращении к данным обязаны ждать разблокировки
- •Взаимоблокировкой считается ситуация когда транзакции оказываются в режиме ожидания, длящемся бесконечно долго
- •Оптимистическое решение проблемы взаимоблокировок позволяет взаимоблокировке произойти, но затем восстанавливает систему откатывая одну из транзакций, участвующих во взаимоблокировке
- •Правила совместимости захватов. Проблема тупиковых ситуаций и её решение.
- •Уровни изолированности пользователей.
- •Гранулированные синхронизационные захваты.
- •Метод временных меток. Более старая транзакция откатывается при попытке доступа к данным, задействованным более молодой транзакцией
- •Предикатные синхронизационные захваты.
Транзакции и блокировки.
Транзакция - это логическая единица работы системы.
Блокировки необходимы для того, чтобы дать различным пользователям возможность одновременно работать с базой данных.
База данных может блокировать строчки с точки зрения выполнения операций чтения и записи. Все транзакции, работающие с какой-либо строчкой, выстраиваются в очередь. После выполнения транзакции блокировка снимается.
. К самым популярным видам блокировок относятся Shared и Exclusive lock. Для простоты можно считать, что Shared lock является блокировкой на запись. Она накладывается в случае выполнения какого-нибудь select'а, причем одна запись может быть вычитана несколькими транзакциями параллельно. Exclusive lock выставляется в том случае, если осуществляется update или delete некоторой строчки. При таком виде блокировки чтение этой строчки осуществить невозможно.
Для обеспечения изоляции может применяться механизм так называемых двухфазных блокировок.Алгоритм состоит из двух фаз (что следует из его названия): установка блокировки и ее снятие.
Работает это так: когда транзакция приходит с тем, чтобы изменить какую либо запись, она устанавливает блокировку на запись и ждет, пока все блокировки на запись и на чтение, установленные ранее, будут сняты. После этого, транзакция вносит свои изменения и убирает установленную ею блокировку. Если же транзакция пришла с тем, чтобы прочитать запись, она устанавливает блокировку на чтение и ждет, пока все блокировки на запись, установленные ранее, будут сняты. После этого транзакция вычитывает нужные ей данные и снимает установленную блокировку.
Эскалация блокировок - это процесс, при котором система управления базами данных (СУБД) изменяет уровень блокировки транзакции с более мелкого на более крупный, чтобы уменьшить нагрузку на систему и повысить параллелизм выполнения транзакций.
Например, если в системе есть много транзакций, каждая из которых блокирует отдельные строки данных, то это может привести к большой нагрузке на систему и замедлению выполнения транзакций. В этом случае СУБД может эскалировать блокировки, объединив несколько блокировок в одну более крупную блокировку на уровне страницы, таблицы или даже базы данных. Это позволяет уменьшить количество блокировок и увеличить параллелизм выполнения транзакций.
Однако эскалация блокировок может иметь и негативные последствия. Например, если блокировки эскалируются на более крупный уровень, то это может привести к блокировке большего количества данных, чем это необходимо, и замедлению выполнения транзакций. Поэтому эскалация блокировок должна применяться с учетом конкретных условий системы и оптимальных стратегий управления блокировками.
Deadlock (взаимная блокировка) - это проблема, которая возникает в многопользовательской системе, когда две или более транзакции блокируют ресурсы, необходимые для выполнения друг друга, и не могут продолжать выполнение. Таким образом, каждая транзакция ожидает, пока другая транзакция освободит заблокированные ресурсы, что приводит к блокировке и замедлению работы всей системы.
Например, если транзакция A блокирует ресурс R1 и пытается заблокировать ресурс R2, который заблокирован транзакцией B, а транзакция B блокирует ресурс R2 и пытается заблокировать ресурс R1, который заблокирован транзакцией A, то обе транзакции будут заблокированы и не смогут продолжать выполнение.
Решение проблемы взаимной блокировки может быть достаточно сложным, так как требует анализа и определения причин блокировки, а также принятия соответствующих мер для ее устранения. Для этого можно использовать различные методы и стратегии, такие как предотвращение блокировки, обнаружение и разблокировка, избыточность, периодическое прерывание и оптимизация запросов.
Процесс внесения изменений в БД состоит из последовательности действий:
•выдается оператор начала транзакции;
•выдается оператор изменения данных;
•СУБД анализирует оператор и устанавливает блокировки для его выполнения;
•в случае успешной блокировки оператор выполняется;
•процесс повторяется для всех следующих операторов транзакции;
• выполняется оператор фиксации транзакции.
