
Ход выполнения
-
Такты времени
Т1
р1
р2
Т2
1
t1
S
-
tt1
2
t2
X
X
tt2
3
t3
X
X
ожидание
4
COMMIT
-
X
ожидание
5
X
X
tt3
6
X
X
tt4
7
X
X
tt5
8
-
-
COMMIT
Недостатком этого метода могут быть возникновения тупиковых ожиданий. Если бы в нашем примере транзакция Т1, отработав с объектом р1, начала бы работу с объектом р2, то она тоже перешла в ожидание, поскольку объект р2 захвачен ранее транзакцией Т2. Выход из тупиковой ситуации – это построение графа ожидания транзакции. Каждая транзакция является вершиной этого графа. Если транзакция I ожидает, пока закончится j, то получается ребро.
В этом случае применяется принудительный откат какой-либо транзакции. Выбор той транзакции, откат которой обойдется «дешевле» всего, определяется на основе сложной оценки, в которую входят число накопленных захватов, приоритет пользователя, «вес» времени выполнения.
Уровни изолированности пользователей.
При описанном методе сериализации (метод двухфазного протокола) достигается полная сериализация транзакций. Однако, бывают случаи, когда важны скорость выполнения транзакции, а не ее точность. Например, надо иметь самое общее представление о картине торгов. При этом не важен факт каждой отдельной сделки. Для смягчения требований в этот метод вводится понятие уровня изолированности пользователя.
Всего выделяют 4 уровня:
Самый высокий – полностью соответствует описанному методу.
Уровень подтвержденного чтения. Транзакция не имеет доступа к промежуточным и окончательным результатам других транзакций, но транзакция может увидеть строку, добавленную в БД другой транзакцией (проблема строк-призраков).
Тоже связан с подтверждением чтения. Транзакция не имеет доступа к промежуточным результатам других транзакций, но ей доступны окончательные данные, полученные в ходе выполнения других транзакций.
На этом уровне если транзакция пытается обновить строку, уже обновленную другой транзакцией, то она будет удалена во избежание проблемы пропавшей строки.
Уровень неподтвержденного (или «грязного») чтения. Текущей транзакции видны промежуточные и несогласованные данные и ей тоже доступны строки-призраки, но СУБД предотвращает пропавшие обновления.
+====================================================================
Журнализация БД.
Одним из основных требований к развитым БД является надежность хранения БД. Это требование предполагает возможность восстановления согласованного состояния БД после любого аппаратного или программного сбоя.
Следующие ситуации, при которых требуется восстановить состояние БД:
Индивидуальный откат транзакций. Например, ее завершение оператором ROLLBACK.
Восстановление после «мягкого» сбоя, т.е. после внезапной потери содержимого ОЗУ. Например, отключение напряжения в сети или неустранимый сбой в работе процессора.
Восстановление после «жесткого» сбоя, т.е. после поломки основного внешнего носителя.
Файл журнала.
Для выполнения восстановления необходима дополнительная информация. Она поддерживается в виде журнала изменений БД. Общей целью журнализации является обеспечение возможности восстановления БД после любого сбоя.
Общие принципы восстановления следующие:
Результаты зафиксированных транзакций сохраняются.
Результаты незафиксированных транзакций отсутствуют.
В файл журнала может помещаться следующая информация – записи о транзакциях и записи о контрольных точках.
Основой восстановления является избыточное хранение данных. Эти данные хранятся в журнале и представляют собой последовательности записей об изменении БД. При этом иногда для каждой транзакции поддерживается отдельный локальный журнал изменений БД, и, кроме этого, поддерживается общий журнал изменений БД. Этот вариант позволяет быстро выполнить индивидуальные откаты транзакций, но информация дублируется в локальных и общих журналах.
Второй вариант поддерживает только общий журнал изменений БД. Он применяется чаще всего.
Журнализация по второму варианту.
Для сведения к минимуму потерь времени на ведение журнала используются буферы процессора как более быстродействующие устройства внешней памяти. По мере наполнения буфера очередная страница «выталкивается» в файл журнала (во внешнюю память). В случае мягкого сбоя надо обязательно иметь некоторое согласованное состояние журнала и БД во внешней памяти для проведения процедуры восстановления. Поэтому существует специальный протокол журнализации WAL (Write Ahead Log) и состоит он в том, что при занесении во внешнюю память измененного объекта БД, перед этим нужно гарантированно вытолкнуть во внешнюю память журнала записи о его изменении. Дополнительное условие на выталкивание буферов накладывается требованием: каждая успешно завершенная транзакция должна быть зафиксирована во внешней памяти. Какой бы сбой не произошел, система должна восстановить БД таким образом, чтобы зафиксировать все результаты к моменту сбоя. Достаточным требованием для этого есть выталкивание при фиксации транзакций всех изменений, относящихся к этой транзакции, в файл журнала. Последняя запись в журнал о данной транзакции – запись о ее конце.
Индивидуальный откат транзакции.
Все записи о данной транзакции связываются в стек. Началом списка является запись о последнем изменении БД, произведенном данной транзакцией.
Порядок отката:
Выбирается очередная запись из списка данной транзакции.
Выполняется противоположные по списку операции (например, вставка вместо удаления). Тем самым восстанавливается предыдущее состояние объекта БД.
Обратные операции журнализируются.
При успешном завершении отката в журнал заносится запись о конце транзакции. С точки зрения механизма журнализации такая запись является фиксированной.
Восстановление после «мягкого» сбоя.
К числу проблем, возникающих при мягком сбое, относится тот факт, что одна логическая операция может изменить несколько физических блоков БД, и набор страниц внешней памяти после мягкого сбоя может оказаться несогласованным, т.е. часть страниц внешнего поля соответствует измененному состоянию объекта, а часть – нет. Поэтому применяются контрольные точки.
Контрольные точки.
Контрольная точка – момент синхронизации между БД и журналом.
Все буферы оперативной памяти принудительно записываются во вторичную память системы.
Контрольные точки организуются через установленный временной интервал и включают следующее:
Запись всех имеющихся в ОП записей журнала во вторичную память.
Запись всех модифицированных блоков в буферах БД во вторичную память.
Помещение в файл журнала записи контрольной точки, которая содержит идентификаторы всех транзакций, которые были активны в момент создания этой контрольной точки.
Восстановление после «жесткого» сбоя. Механизм резервного копирования.
Любая СУБД должна предоставлять механизм, позволяющий создавать резервные копии БД и ее журнала через установленные промежутки времени без необходимости останавливать систему.
Для восстановления после «жесткого» сбоя основным инструментом является журнал и архивная копия БД. Восстановление начинается с копирования БД из архивной копии. Затем для всех закончившихся транзакций операции выполняются повторно в прямом смысле. По журналу в прямом направлении выполняются все операции. Для не закончившихся к моменту сбоя транзакций применяется откат. Поскольку «жесткий» сбой не сопровождается утратой буферов ОП, можно восстановить БД до того уровня, когда возможно выполнение даже незакончившихся транзакций.
Восстановление после «жесткого» сбоя есть процедура длительная. Если при этом был утрачен и журнал изменений, то теряются все изменения, произведенные после момента сохранения резервной копии БД.
Администрирования БД.
Цель администрирования – это обеспечение надежного эффективного функционирования СУБД, адекватности содержания БД потребностям пользователей, отображение в БД актуального состояния предметной области.
Процедура администрирования.
Предполагается, что администратор БД выполняет следующие действия:
Консультирование аналитиков и программистов по особенностям текущей версии СУБД. Участие вместе с аналитиками в логическом проектировании БД. В том случае, если надо учитывать специфические особенности СУБД.
Ведение словаря-справочника.
Сбор и анализ статистики функционирования БД, ее настройка для эффективной обработки данных.
Управление представлением БД в среде хранения. Т.е. модификация параметров среды хранения, выбор наиболее эффективных методов доступа к данным.
Реорганизация БД. В частности, логическая реструктуризация - это модификация концептуальной схемы с последующим приведением БД в соответствие с вновь сформированной схемой.
Контроль целостности и восстановления БД
Поддержка логической целостности, непротиворечивости БД
Обеспечивается через объявление ограничений целостности моделей в схеме БД, проверку при каждом обновлении данных или связей между ними.
Для многих СУБД ограничения целостности поддерживаются только на уровне ввода данных в БД и ассоциируются с использованием экранных форм
Проблемы физической целостности БД, возникающие в связи с угрозой ее разрушения из-за сбоев и отказов АО и ПО. Основные средства восстановления – использование контрольных копий и журнализация изменений.
Подключение новых разработчиков и пользователей, приписывание им паролей, привилегий доступа и т.д.
Контроль роста СУБД, определение целесообразности перехода на другое оборудование.
Администратор БД – это:
1) управляющий данными, а не их хозяин;
2) системный программист определенного профиля, а также эксперт высшего уровня, принимающий решения по процедурам и регламенту работы;
3) лицо, принимающее окончательное решение в своей области, обладающее способностями к общению, совместному планированию и компромиссу.
Надежность и достоверность – это ключевые понятия в деятельности администратора БД.
=====================================================================
Системы баз знаний.
Они составляют основы экспертных систем. Системы баз знаний – это системы, которые имитируют человеческий интеллект. Они включают в себя экспертные системы, нейронные сети, системы гипермедиа, интеллектуальные обучающие системы и т.д. Самые распространенные – экспертные системы. Экспертные системы (ЭС) – это компьютерные программы, которые используют знания и методы рассуждения, обычно требующих знаний живых экспертов.
Базы знаний обычно относятся к системам искусственного интеллекта. Интеллект – это способность подходить к решению задачи с учетом имеющегося опыта (Кинг).
Человеческому мозгу свойственно:
Способность обучаться.
Находить аналогии.
Способность создавать новые понятия на основе известных фактов.
Обработка неоднозначных и противоречивых понятий.
Гибкость к решению задач.
Способность определять относительную важность различных составных частей задач.
В общем случае интеллект – это совокупность правил и способов их применения для достижения конкретных целей.
Искусственный интеллект (ИИ) – методика моделирования разумного поведения.
Мышление, решение задач, рассуждения – это пути развития человеческих знаний. Мышление подразумевает активную интеграцию новых знаний с существующими; это есть деятельность, направленная на решение задач. Решение задачи – это переход из начального состояния в желаемое (целевое состояние). Всего 4 типа рассуждений применяет человек при решении задач:
Рассуждение с привлечением здравого смысла (ИИ это не использует).
Рассуждение с привлечением аналогии(практически не используется ИИ).
Дедуктивное. В основе - логические цепочки, построенные на предпосылках. Вывод идет от общего к частному. Предпосылки – истинные утверждения и правила.
Индуктивное рассуждение (от частного к общему).
3-ий и 4-ый методы широко используются в системах ИИ.
Источники знаний:
Исследователи и эксперты данной области.
Книги, научные труды и руководства.
Компьютерные ресурсы.