- •Основные функции субд:
- •По модели данных:
- •Иерархические (Иерархической базой данных является файловая система, состоящая из корневого каталога, в котором имеется иерархия подкаталогов и файлов).
- •Сетевые (Сетевые базы данных подобны иерархическим, за исключением того, что в них имеются указатели в обоих направлениях, которые соединяют родственную информацию).
- •По степени распределённости
- •Локальные субд (все части локальной субд размещаются на одном компьютере)
- •Распределённые субд (части субд могут размещаться на двух и более компьютерах).
- •Различные представления о данных в базах данных:
- •Ограничения не-Null Ограничение не-null просто говорит, что колонка не должна содержать значение null. Пример синтаксиса:
- •2. Определение структур базы данных (ddl)
- •3. Манипуляция данными (dml)
- •4. Отбор данных (dql)
- •5. Язык управления данными (dcl)
- •6. Команды администрирования данных
- •7. Команды управления транзакциями
- •14.Запись sql-операторов
- •15.Типы данных языка sql, определенные стандартом
- •16.Основные команды языка ddl
- •17.Основные команды языка dml
- •18.Оператор выбора select
- •19.Применение агрегатных функций и вложенных запросов в операторе выбора
- •20. Операторы манипулирования данными
- •21.Физическая организация бд: файлы, записи, блоки.
- •23.Организация файла бд в виде кучи. Эффективность таких файлов.
- •24.Хешированные файлы: бакет, каталог бакетов, дополнительный каталог бакетов, выбор хеш-функции. Операции над хешированными файлами.
- •25.Сравнение эффективности хешированных файлов и файлов, организованных в виде кучи. Причины снижения эффективности хешированных файлов.
- •26.Динамическое хеширование. Операции над динамически хешированными файлами.
- •27.Последовательная организация файлов. Операции добавления и удаления записей в последовательных файлах, блок переполнения.
- •28. Индексированные файлы: инициализация, поиск.
- •29. Индексированные файлы: операции вставки и удаления записей.
- •30.Разреженные и плотные индексы. Индексация по нескольким полям.
- •Составные индексы
- •31.Эффективность операций в индексированных файлах при различной организации поиска.
- •32.B-деревья: принципы построения, операция поиска.
- •33.В-деревья: операции добавления и удаления записей.
- •34.Эффективность организации файлов в виде в-дерева.
- •35.Технология кластеризации бд.
- •36.Технология сжатия информации в бд.
- •37.Основные шаги обработки запросов.
- •Можно транслировать в выражение
- •38.Статистика бд.
- •40.Алгоритмы выполнения селекции с одним условием сравнения: размер селекции, использование первичного индекса, использование вторичного индекса.
- •41.Размер комплексной селекции при конъюнкции и дизъюнкции условий.
- •43.Алгоритм внешней сортировки.
- •44.Размер операции соединения. Алгоритм соединения, основанный на двух вложенных циклах.
- •45.Алгоритмы выполнения соединения: поблочное соединение, усовершенствование алгоритма поблочного соединения, соединение по индексу.
- •46.Алгоритм соединения слиянием.
- •47.Алгоритмы выполнения операций с множествами, проекции, внешнего соединения.
- •48.Два подхода к вычислению выражений при обработке запросов.
- •50.Виды оптимизаторов: итеративный, основанный на стоимостях и эвристический.
- •51.Понятие транзакции. Свойства acid транзакций.
- •52.Аномалии параллельных транзакций: потерянное обновление, зависимость от нефиксированных результатов, несогласованная обработка.
- •53.Понятие плана параллельного выполнения транзакций. Последовательные, непоследовательные и неупорядоченные планы.
- •54.Конфликтное упорядочивание планов и упорядочивание планов по просмотру.
- •55.Блокировки как механизм управления параллельными транзакциями: понятие блокировки, хранение блокировок, виды блокировок.
- •56.Работа транзакций при использовании механизма блокировок. Предотвращение аномалий при использовании блокировок.
- •57.Понятие протокола. Двухфазный протокол.
- •58.Проблема каскадного отката в параллельных транзакциях. Строгий двухфазный протокол.
- •59.Взаимная блокировка параллельных транзакций.
- •60.Использование метода временных отметок для управления параллельными транзакциями.
- •61.Оптимистические технологии управления транзакциями.
- •63.Уровни изоляции параллельных транзакций.
- •64.Восстановление бд: возможные причины отказов, механизм резервного копирования, журнал транзакций, создание контрольных точек.
- •65.Методы восстановления бд: восстановление с резервной копии, метод «redo», метод теневых страниц.
- •66.Улучшенные модели транзакции: проблемы классических моделей транзакций, модель вложенных транзакций, модель хроник.
- •67.Технология raid. Уровни raid.
- •68.Oltp- технологии и хранилища данных. Хранилища данных.
- •Понятие хранилища данных.
- •Проблемы хранилищ данных.
- •Архитектура хранилища данных
- •Проектирование схемы бд для хранилища данных.
- •Olap-технологии.
66.Улучшенные модели транзакции: проблемы классических моделей транзакций, модель вложенных транзакций, модель хроник.
Все предыдущие методы управления параллельными транзакциями хорошо работают для транзакций, выполняющихся в течение нескольких минут.
Существуют и более сложные приложения работы с БД, в том числе средства разработки, например инженерные (CAD) или программные (CASE). Эти приложения могут включать длительные транзакции, например, продолжительностью несколько часов, дней, а возможно и месяцев. При этом возникают следующие проблемы:
1 Продолжительные транзакции более чувствительны к отказам. Было бы совершенно неприемлемо отменить выполнение подобной транзакции с потенциальной потерей очень большого объема выполненной работы. Следовательно, необходимо иметь средства для восстановления того состояния транзакции, которое она имела до возникновения отказа.
2 Продолжительные транзакции могут получать доступ к очень большому количеству элементов данных. Во избежании взаимного влияния транзакций эти элементы будут недоступны другим транзакциям. Но это не допустимо, если транзакция длится не один час.
3 Чем дольше время выполнения транзакции, тем больше вероятность возникновения взаимной блокировки.
Модель вложенных транзакций |
Автор: Administrator |
В этой модели транзакция рассматривается как набор связанных подзадач, называемых субтранзакциями. Каждая из подзадач в свою очередь может состоять из произвольного количества подзадач. Таким образом, полная транзакция представляет собой иерархию субтранзакций.
Только субтранзакции самого нижнего уровня могут выполнять операции в БД. Т1 Организовать путешествие Т2 Купить билеты (пусть до места назначения можно добраться только с пересадкой) Т3 Купить билеты до места пересадки Т4 Купить билеты до места назначения Т5 Забронировать место в выбранном клиентом отеле Т6 Нанять автомобиль /*Изобразить в виде дерева */ Завершение работы транзакций должно происходить в направлении снизу вверх. Следовательно, транзакции Т3 и Т4 должны закончить работу до завершения работы их родительской транзакции Т2, а Т2 должна завершиться прежде, чем Т1. Однако отмена транзакции на некотором уровне не оказывает влияния на связанные транзакции более высоких уровней. Вместо этого родительской транзакции разрешается выполнить свою собственную операцию восстановления нормальной работы одним из следующих способов: 1 Повторить выполнение транзакции. 2 Проигнорировать данный отказ. В этом случае субтранзакция полагается несущественной. В рассмотренном примере это может быть Т6, то есть без нее можно быть продолжено выполнение родительской транзакции. /*Это определено по смыслу операции: можно организовать путешествие и без автомобиля */ 3 Запустить альтернативную транзакцию, называемую возможной субтранзакцией. Например, если при выполнении Т5 нельзя забронировать место в отеле, выбранном клиентом, то можно забронировать место в отеле, где есть свободные места. /*то же по смыслу транзакции */ 4 Прекратить работу, при этом аналогичная процедура проводиться для родительской транзакции. Обновления, выполненные завершенными субтранзакциями промежуточных уровней, должны быть видны только их непосредственным родителям. /*Результаты Т3 доступны Т2, но недоступны Т1 и недоступны любой внешней по отношению к Т1 транзакции. */ Более того, завершение субтранзакции является условно зависимым от нормального завершения или отмены ее родительской транзакции. /*Если Т3 завершилась успешно, а Т2 – со сбоем, то результаты Т3 также не будут зафиксированы в БД*/ Для модели вложенных транзакций предложен следующий протокол. 1 Субтранзакции родительской транзакции выполняются так, как если бы они были независимыми транзакциями. 2 Субтранзакции разрешается устанавливать блокировку на элемент, если на него уже установлена блокировка родительской субтранзакции. 3 Когда субтранзакция завершает работу, ее блокировки наследует родительская транзакция. Достоинства модели вложенных транзакций. 1 Достижение параллельности обработки в рамках одной транзакции, а не только между независимыми транзакциями. 2 Возможность управления восстановлением в пределах транзакции, а не всей транзакцией, как единым целым. Механизм вложенных транзакций может быть эмулирован для плоских транзакций с использованием точек сохранения. Точкой сохранения называется определенная точка в плоской транзакции, представляющая некоторое частично согласованное состояние, которая может быть использована как точка промежуточного рестарта транзакции в случае возникновения проблем. Таким образом достигается одно из достоинств вложенных транзакций, заключающееся в предоставлении некоторой единицы восстановления, меньшей чем транзакция в целом. Если точки сохранения реализованы в СУБД, то при работе транзакции пользователь может установить точку сохранения, присвоив ей некоторый идентификатор. Теперь он может выполнить не только команду отмены транзакции целиком, но и отмены транзакции до определенной точки сохранения. |
Хроника – это последовательность плоских транзакций, которые могут чередоваться с прочими транзакциями.
СУБД гарантирует, что либо все входящие в хронику транзакции будут успешно завершены, либо будут запущены компенсирующие транзакции, необходимые для устранения достигнутых частичных результатов. В отличие от метода вложенных транзакций, допускающего произвольный уровень вложения, метод хроник разрешает наличие единственного уровня вложения. Более того, для каждой выделенной субтранзакции должна существовать соответствующая компенсирующая транзакция, которая будет семантически аннулировать результаты, достигаемые с помощью данной субтранзакции. /*Например, если субтранзакция update сотрудник set з\п=з\п*1,2 то должна быть компенсирующая update сотрудник set з\п=з\п\1.2. */
Таким образом, если имеется хроника из n субтранзакций T1, T2, …, Tn с соответствующим набором компенсирующих транзакцийC1, C2, …, Cn, то окончательный результат выполнения хроники будет определятся одной из следующих последовательностей субтранзакций.
1 T1, T2, …, Tn – если вся транзакция была успешно завершена
2 T1, T2, …, Ti, Ci-1, Ci-2, …, C1 – если выполнение транзакции Tiбыло прекращено.
По сравнению с обычными плоскими транзакциями, хроники нарушают требования к изолированности отдельных транзакций, открывая промежуточные результаты своего выполнения другим, выполняющимся параллельно транзакциям еще до завершения своей работы.